ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)

ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)

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

需求升级

  1. 根据上一章的需求一,进行升级。已知有两个节点,其中一个节点是Publisher,另外一个节点是Subscriber。Publisher发布的消息是 团队数据,包含了以下内容:
    ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第1张图片

  2. 根据需求类型,定义msg文件,其中student是上一章定义的消息类型,在同一个包中可以直接引用ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第2张图片

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
    )
    
  2. 编译项目

    cd 工作空间
    catkin_make
    

    遇到下面错误1:可以删除工作空间中的build和devel,然后再次catkin_makeROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第3张图片
    遇到下面错误2:ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第4张图片
    需要根据提示去generate_messages中添加,因为我在该msg文件中是用了geometry_msgs类型,所以需要进行添加

  3. 命令校验

    rosmsg show student_msgs/team
    

    ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第5张图片

编写代码

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

  2. 编写publisherROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第6张图片

  3. 编写subscriberROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第7张图片

  4. 运行两个文件查看结果
    ROS实操入门系列(七)ROS topic通讯之自定义复杂msg消息类型解决实际需求二(详解)_第8张图片

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

你可能感兴趣的:(ROS,深度学习,机器学习,数据挖掘,神经网络,自动驾驶)