从零搭建ros间的通信,各功能包、节点之间的通信

文章讲述了如何在ROS环境中创建自定义消息类型GlobalPathPlanningInterface.msg,包括消息字段定义,更新CMakeLists.txt和package.xml文件。然后,创建了一个名为planning的功能包,使用Python编写发布者节点global_path_planning.py,向全局路径规划数据话题发布消息。整个过程强调了ROS中消息生成、依赖管理和Python节点的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建消息类型

catkin_create_pkg car_interfaces roscpp rospy std_msgs message_generation message_runtime

书写自定义的msg:
比如我写一个GlobalPathPlanningInterface.msg:

float64  timestamp  #时间戳
float32[]  startpoint   #起点位置,先经后纬
float32[]   endpoint    #终点位置,先经后纬
float32[]   routedata   #路径集合(所有途径点的集合)
float32  process_time    # 进程处理时间

接着再处理编译文件CMakeLists.txt:

add_message_files(
  FILES
  GlobalPathPlanningInterface.msg
  # Message2.msg
)


generate_messages(
  DEPENDENCIES
  std_msgs  
)


catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES car_interfaces
  CATKIN_DEPENDS message_generation message_runtime roscpp rospy std_msgs
#  DEPENDS system_lib
)

修改package.xml文件:
添加上:

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

这样就定义好了。
rosmsg show msg包/msg类型
请添加图片描述

新建一个功能包

catkin_create_pkg planning roscpp rospy std_msgs
catkin_make # 编译一次即可
接着就能直接新建py写了,比cpp简单太多了。

global_path_planning.py文件:

#!/usr/bin/env python3
#coding=utf-8

import rospy
from car_interfaces.msg import GlobalPathPlanningInterface


if __name__ == "__main__":
    rospy.init_node("chao_node")  # 节点名称
    rospy.logwarn("我的枪去而复返")

    pub = rospy.Publisher("global_path_planning_data", GlobalPathPlanningInterface, queue_size = 10) # 话题名称

    rate = rospy.Rate(10)

    while not rospy.is_shutdown():
        rospy.loginfo("我要开始刷屏了")  #发一次显示一个,不是实际的消息,只是一个info
        msg = GlobalPathPlanningInterface()
        msg.timestamp = 2.7
        msg.startoint = [1.0, 2.0, 3.0]
        msg.endpoint = []
        msg.routedata = []
        msg.process_time = 3.1
        
        pub.publish(msg)
        rate.sleep()

注意
(这样的话其实也可以直接再创建的时候添加,就不用改这两个文件了)

catkin_create_pkg self_start roscpp rospy std_msgs car_interfaces

如果没有动car_interfaces,那就添加就好了
修改CMakeLists.txt:
find_package:
增加car_interfaces

修改package.xml:
<build_depend>car_interfaces</build_depend>
<exec_depend>car_interfaces</exec_depend>
测试效果还可以
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云千载尽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值