ROS2 之 自定义消息

8490阅读 0评论2020-06-17 iibull
分类:其他平台

包目录下建立目录
mkdir  pkg/{msg,srv,action}
在对应目录下制定 .msg  .srv  .action文件的消息格式.

数据类型的定义参考


点击(此处)折叠或打开

  1. ## 修改 CMakeLists.txt

  2. find_package(rosidl_default_generators REQUIRED)

  3. rosidl_generate_interfaces(${PROJECT_NAME}
  4.   "msg/Num.msg"
  5.   "srv/AddThreeInts.srv"
  6.  )
  7. ament_export_dependencies(rosidl_default_runtime)

还有一种写法, 就是CMakefile设置变量
set(msg_files "msg/AddressBook.msg" )
rosidl_generate_interfaces(${PROJECT_NAME} ${msg_files} )

点击(此处)折叠或打开  package.xml

  1. <build_depend>rosidl_default_generators</build_depend>

  2. <exec_depend>rosidl_default_runtime</exec_depend>

  3. <member_of_group>rosidl_interface_packages</member_of_group>

点击(此处)折叠或打开

  1. 编译
  2. colcon build --packages-select tutorial_interfaces
  3. . install/setup.bash

  4. ros2 interface show tutorial_interfaces/msg/Num
  5. ros2 interface show tutorial_interfaces/srv/AddThreeInts

点击(此处)折叠或打开

  1. 被引用的方法
  2. 代码
  3. #include "tutorial_interfaces/msg/num.hpp" // CHANGE

  4. CMakeLists.txt:
  5. find_package(tutorial_interfaces REQUIRED) # CHANGE
  6. ament_target_dependencies(talker rclcpp tutorial_interfaces) # CHANGE
  7. ament_target_dependencies(listener rclcpp tutorial_interfaces) # CHANGE

  8. package.xml
  9. <depend>tutorial_interfaces</depend> --CPP
  10. <exec_depend>tutorial_interfaces</exec_depend> -- python

  11. ------------------------------------------------
  12. Srv文件加入
  13. 代码
  14. #include "tutorial_interfaces/srv/add_three_ints.hpp" // CHANGE
  15. from tutorial_interfaces.srv import AddThreeInts # CHANGE

  16. CMakeLists.txt修改
  17. find_package(tutorial_interfaces REQUIRED) # CHANGE
  18. ament_target_dependencies(server
  19.   rclcpp tutorial_interfaces) #CHANGE

  20. package.xml 修改
  21. <depend>tutorial_interfaces</depend> -- CPP
  22. <exec_depend>tutorial_interfaces</exec_depend> -- python
----------------------------------------------------------------------------------------------------------------------

点击(此处)折叠或打开

  1. .action 文件的编译

  2. 修改 CMakeLists.txt
  3. find_package(rosidl_default_generators REQUIRED)

  4. rosidl_generate_interfaces(${PROJECT_NAME}
  5.   "action/Fibonacci.action"
  6. )

  7. 修改 package.xml
  8. <buildtool_depend>rosidl_default_generators</buildtool_depend>

  9. <depend>action_msgs</depend>

  10. <member_of_group>rosidl_interface_packages</member_of_group>


  11. 编译后查询是否ok, 例如
  12. ros2 interface show action_tutorials/action/Fibonacci
使用 action 




上一篇:ROS2 之 编码 service
下一篇:ROS2 之 使用 parameters