• 使用Message


    Message按照定义解释就是topic内容的数据类型, 也称之为topic的格式标准。

    1、结构与类型

    基本的msg包括boolint8int16int32int64(以及uint)floatfloat64stringtime
    durationheader、 可变长数组array[]、 固定长度数组array[C]

    2、操作命令

    3、常见message

    常见的message类型, 包括std_msgs, sensor_msgs, nav_msgs,geometry_msgs 。

    使用 msg

    创建一个 msg

    • 增加Num.msg文件

    $ roscd your_packagename
    $ mkdir msg
    $ echo "int64 num" > msg/Num.msg
    
    • 上面是最简单的例子——在.msg文件中只有一行数据。
    • 当然,你可以仿造上面的形式多增加几行以得到更为复杂的消息:
    string first_name
    string last_name
    uint8 age
    uint32 score
    
    • 接下来,还有关键的一步:我们要确保msg文件被转换成为C++,Python和其他语言的源代码:
    • 查看package.xml, 确保它包含一下两条语句,没有被注释掉,如果被注释了就取消注释:

    <build_depend>message_generation</build_depend>
    <exec_depend>message_runtime</exec_depend>

    或者

    <build_export_depend>message_generation</build_export_depend>
    <exec_depend>message_runtime</exec_depend>

    出错请看;https://blog.csdn.net/fancyop/article/details/79149402

    如果有其他依赖也要添加
    • 如果没有,添加进去。

    • 注意:在构建的时候,我们只需要"message_generation"。

    • 然而,在运行的时候,我们只需要"message_runtime"。

    • 在CMakeLists.txt文件中,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息了。

    • 你可以直接在COMPONENTS的列表里增加message_generation,就像这样:

    find_package(catkin REQUIRED COMPONENTS 
    roscpp
    rospy
    std_msgs
    message_generation)
    • 找到如下代码块:# add_message_files(
    #   FILES
    #   Message1.msg
    #   Message2.msg
    # )

    # generate_messages(
    #   DEPENDENCIES
    #   std_msgs
    # )

    • 在catkin_package函数中去掉#加入message_runtime依赖
    • catkin_package(
    • ...
    • CATKIN_DEPENDS message_runtime
    • ... ...)
    • 去掉注释符号#,用你的.msg文件替代Message*.msg,就像下边这样:
    add_message_files(
      FILES
      Num.msg
    )
    去掉注释符号#
    generate_messages(
       DEPENDENCIES
       std_msgs
     )

    使用以下命令进行编译:
    $ cd ~/catkin_ws/
    $ catkin_make

    使用 rosmsg验证是否编译成功

    • 以上就是你创建消息的所有步骤。

    • 下面通过rosmsg show命令,检查ROS是否能够识消息。

    • 使用方法:

    $ rosmsg show [message type]
    
    • 样例:
    $ rosmsg show beginner_tutorials/Num
    
    • 你将会看到:
    int64 num
    
    • 在上边的样例中,消息类型包含两部分: beginner_tutorials

      • 消息所在的package Num
      • 消息名Num.
    • 如果你忘记了消息所在的package,你也可以省略掉package名。

    • 输入:

    $ rosmsg show Num 
    
    • 你将会看到:
    [beginner_tutorials/Num]:
    int64 num
    
  • 相关阅读:
    幸福之路
    mysql8.0.25安装配置教程(windows 64位)
    解决git@gitee.com: Permission denied (publickey).
    python路径拼接os.path.join()函数的用法
    如何正确的看待Python里的GIL锁
    安装激活Golang
    Django的Orm操作数据库
    爬虫技术栈点
    Django
    Python/数据库/Django笔记
  • 原文地址:https://www.cnblogs.com/long5683/p/9941611.html
Copyright © 2020-2023  润新知