• ros自定义消息


    ros自定义消息可以根据自身项目需求定义和封装想要的数据类型和数据结构。具体可以参考维基百科关于ros自定义消息部分

    这里我只是记录自定义消息的要点部分:

    1.首先要在工作空间下功能包中创建一个msg的文件夹用于存放消息文件。创建过程可以通过手动创建,也可以通过以下命令创建

    mkdir msg

    2.在msg文件中添加消息文件,并在其中添加自定义消息类型。这里给出样例:

    object.msg

    package.msg  package.msg主要是对其他的消息进行了整合,在代码中更好的实现封装。

    3.接下来修改包的package.xml文件,在下图所示位置添加"message_generation","message_runtime"对msg的转为C++代码。

    这里需要注意的是按照维基百科中添加:

    <build_depend>message_generation</build_depend>
      <run_depend>message_runtime</run_depend>

    的时候会报错,后来改为:

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

    就可以了。

    4.修改Cmakelists.txt文件

    (1)修改find_packag.

      添加对message_generation的依赖,这样就可以生成消息了。 你可以直接在COMPONENTS的列表里增加message_generation。

    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      message_generation
    )

    (2)修改 add_message_files

     添加你在msg文件夹中定义的所有的msg文件。

    add_message_files(
      FILES
      Locate.msg
      Object.msg
      Package.msg
      Path.msg
    )

    (3)在 add_message_files后面添加generate_messages()

    add_message_files(
      FILES
      Locate.msg
      Object.msg
      Package.msg
      Path.msg
    )
    generate_messages()

    以上部分已经完成了对ROS自定义消息。

    4.测试

    通过一下命令可以测试自定义消息是否成功

    rosmsg show predict/Object 

    其中predict是包名(cmakelists.txt文件中工程的名字),Object是消息文件名称。结果:

    如果能出现以上结果,表示自定义消息成功了。

    5.出错原因

    (1)只要按照上面的配置方法自定义消息应该是没有问题了,要注意的是一定要对package.xml,Cmakeliststxt进行正确修改。

    (2)还要注意一定要写对包名和消息文件名称,不然就会出现如下错误。

    (3)还有一种可能会出现如上错误,就是工作空间路径没有配置正确。只要重新导入ros路径到.bashrc 文件中就可以了

  • 相关阅读:
    Java面向对象(继承、抽象类)
    Java面向对象(类、封装)
    Java基础语法(Eclipse)
    JavaScript new对象的四个过程
    原生js实现深复制
    es6 实现双链表
    快速排序
    跨域问题
    pm2 使用
    js冒泡排序
  • 原文地址:https://www.cnblogs.com/fuhang/p/9938657.html
Copyright © 2020-2023  润新知