• 使用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
    
  • 相关阅读:
    docker 安装mysql
    Java web项目搭建系列之二 Jetty下运行项目
    Java web项目搭建系列之一 Eclipse中新建Maven项目
    Maven 添加其他Maven组件配置问题
    C# 中定义扩展方法
    Oracle 函数
    【Webservice】2 counts of IllegalAnnotationExceptions Two classes have the same XML type name
    Linux精简版系统安装网络配置问题解决
    Rsync 故障排查整理
    Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
  • 原文地址:https://www.cnblogs.com/long5683/p/9941611.html
Copyright © 2020-2023  润新知