ros中的消息格式

上篇ros发布者和订阅者的写法提到了ros的消息格式,数据要在ros中传输,就要保证ros能够辨别出这种数据。个人把ros消息格式类比成java中的类,有ros自动定义的格式,也可以自定义消息格式,比如说,上篇用到的std_msg格式,就是由c++的基本数据类型封装而成,其data属性就是String类型的 。
数据在ros框架进行传递,之前说过,只要指明数据的起点和终点还有数据类型,这里说的就是这个数据类型,下面我从三个方面来说一下数据类型。

  1. ros自带消息格式的查看
    在编写话题订阅者和发布者时,难免要将ros的消息格式转换成为c++的基本数据类型,然后才能进行数据处理。比如说对相机的数据进行处理的时候,必须要知道相机数据由哪些基本数据组成,才能进行下一步的转换和处理。
    可以通过查看ros api来确定这些数据
    ros api地址:http://wiki.ros.org/APIs
    也可以通过命令
    rostopic type + 话题名 确定消息类型
    然后通过命令
    rosmsg show + 消息类型 查看基本数据组成
  2. 自定义消息格式
    这个可以在创客智造上查看详细的教程,网址:https://www.ncnynl.com/archives/201702/1290.html
    步骤:
  3. 新建功能包,在包下新建msg路径,在msg下新建一个.msg文件
  4. 编辑msg文件
    添加如下内容:
    string first_name
    string last_name
    uint8 age
    uint32 score
    有一点编程基础的都能看出来新建的消息类型包括string类型的first_name
    ,last_name 和uint8类型的age还有uint32类型的score
  5. package.xml文件的配置
    确保package.xml文件里包含下面两行
    message_generation
    message_runtime
    其中message_generation是构建时环境,message_runtime是运行时环境
  6. cmakelist.txt文件的配置
    在find_packag里添加message_generation,将构建时环境添加到cmakelist里
    添加如下内容
    add_message_files(
    FILES
    文件名.msg

    编译工程:catkin_make

此时消息格式已经成功生成,运行命令rosmsg show +包名 +消息名 就可以看到自定义的消息类型

  1. 使用自定义的消息格式
    自定义的消息格式生成后就写进了本机的ros系统,需要使用的话就像std_msg一样,在头文件中引入即可
  1. rosmsg常用命令

rosmsg show Show message description

rosmsg list List all messages

rosmsg md5 Display message md5sum

rosmsg package List messages in a package

rosmsg packages List packages that contain messages

你可能感兴趣的:(ros,机器人)