zoukankan      html  css  js  c++  java
  • ROS自定义数据类型

    1.简介

    自定义数据包可以在使用数据的功能包内进行创建,也可以单独创建一个功能包来专门进行自定义数据类型.

    1.步骤:

    1.创建一个功能包
    进入工作空间catkin_ws/src

    catkin_create_pkg test_msgs actionlib std_msgs message_generation actionlib_msgs
    cd ../
    catkin_make
    

    2.创建自定义数据

    • 话题类型:
      在功能包下新建一个msg的文件夹,创建testmsg.msg文件
    bool mode
    float64 angle
    
    • 服务类型:
      在功能包下新建一个srv的文件夹,创建testsrv.srv文件
    #请求
    int64 a
    int32 b
    ---
    #应答
    int64 sum
    
    • 动作类型:
      在功能包下新建一个action文件夹,创建testaction.action文件
    #定义目标信息
    uint32 dish_id
    ---
    #定义结果信息
    uint16 total
    ---
    #定义周期反馈信息
    float32 feed_msg
    

    3.修改CMakeLists.txt

    cmake_minimum_required(VERSION 2.8.3)
    project(test_msgs)
    
    find_package(catkin REQUIRED COMPONENTS
      actionlib
      message_generation
      std_msgs
      actionlib_msgs
    )
    
    add_action_files(
        DIRECTORY action
        FILES
        testaction.action
    )
    add_message_files(
        DIRECTORY msg
        FILES
        testmsg.msg
    )
    add_service_files(
        DIRECTORY srv
        FILES
        testsrv.srv
    )
    
    generate_messages(
        DEPENDENCIES
        std_msgs
        actionlib_msgs
    )
    
    catkin_package()
    

    4.修改package.xml文件

    <?xml version="1.0"?>
    <package format="2">
      <name>test_msgs</name>
      <version>0.0.0</version>
      <description>The test_msgs package</description>
      <maintainer email="penuel@todo.todo">penuel</maintainer>
      <license>TODO</license>
    
      <buildtool_depend>catkin</buildtool_depend>
    
      <build_depend>actionlib</build_depend>
      <build_depend>message_generation</build_depend>
      <build_depend>std_msgs</build_depend>
      <build_depend>actionlib_msgs</build_depend>
    
      <build_export_depend>actionlib</build_export_depend>
      <build_export_depend>std_msgs</build_export_depend>
      <build_export_depend>message_generation</build_export_depend>
      <build_export_depend>actionlib_msgs</build_export_depend>
    
      <exec_depend>actionlib</exec_depend>
      <exec_depend>std_msgs</exec_depend>
      <exec_depend>message_runtime</exec_depend>
      <exec_depend>actionlib_msgs</exec_depend>
    
      <export>
      </export>
    </package>
    

    5.最后进行编译 catkin_make

    2.使用自定义的数据

    • 话题使用:
      1.发布话题:
    #include "ros/ros.h"
    #include "test_msgs/testmsg.h"
    int main(int argc, char** argv)
    {
        ros::init(argc,argv,"testmsg_node");
        ros::NodeHandle nh;
        ros::Publisher pub1 = nh.advertise<test_msgs::testmsg>("/test_msgs_pub",1000);
        ros::Rate loop_rate(10);
        test_msgs::testmsg test_pub;
        while( ros::ok() )
        {
            test_pub.angle = 50;
            test_pub.mode = 10;
            pub.publish(test_pub);
            ros::spinOnce();
            loop_rate.sleep();
    
        }
        return 0;
    }
    

    CMakeLists.txt:

    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      test_msgs
    )
    

    package.xml:

     <buildtool_depend>catkin</buildtool_depend>
      <build_depend>roscpp</build_depend>
      <build_depend>rospy</build_depend>
      <build_depend>std_msgs</build_depend>
      <build_depend>test_msgs</build_depend>
      <build_export_depend>roscpp</build_export_depend>
      <build_export_depend>rospy</build_export_depend>
      <build_export_depend>std_msgs</build_export_depend>
      <build_export_depend>test_msgs</build_export_depend>
      <exec_depend>roscpp</exec_depend>
      <exec_depend>rospy</exec_depend>
      <exec_depend>std_msgs</exec_depend>
      <exec_depend>test_msgs</exec_depend>
    
  • 相关阅读:
    mysql自定义函数多表更新:update_order_relation()
    mysql自定义函数初始化数据:init_data()
    关于tomcat启动错误:At least one JAR was scanned for TLDs yet contained no TLDs
    intellij debug模式提示 Method breakpoints may dramatically slow down debugging
    Linux开机启动流程详细步骤是什么?
    chkconfig 添加脚本开机自启动
    优化SSH配置(一键完成增加若干参数)
    linux目录整理
    linux命令整理
    buffer和cache有什么区别?
  • 原文地址:https://www.cnblogs.com/penuel/p/13169992.html
Copyright © 2011-2022 走看看