ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)
需求升级
CMakeLists文件配置
编写代码
https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。
需求升级
根据上一章的需求一,进行升级。已知有两个节点,其中一个节点是Publisher,另外一个节点是Subscriber。Publisher发布的消息是 团队数据,包含了以下内容:

根据需求类型,定义msg文件,其中student是上一章定义的消息类型,在同一个包中可以直接引用

CMakeLists文件配置

  1. package.xml在上一章中已经添加配置,不需要再次配置

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rosmsg
  rospy
  message_generation
  geometry_msgs
)
 add_message_files(
   FILES
   student.msg
   team.msg
 )
 generate_messages(
   DEPENDENCIES
   std_msgs  # Or other packages containing msgs
   geometry_msgs
 )
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES student_msgs
  CATKIN_DEPENDS roscpp rosmsg rospy message_runtime
#  DEPENDS system_lib
)

编译项目

cd 工作空间
catkin_make

遇到下面错误1:可以删除工作空间中的build和devel,然后再次catkin_make

遇到下面错误2:

  1. 需要根据提示去generate_messages中添加,因为我在该msg文件中是用了geometry_msgs类型,所以需要进行添加

  2. 命令校验

    rosmsg show student_msgs/team




    编写代码

    1. 这一步很重要!!!退出clion, 在运行clion的窗口进入到工作空间目录执行 source devel/setup.bash, 需要重新把环境加载,不然写代码时找不到刚才写的消息类

    2. 编写publisher

运行两个文件查看结果

https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。