1 查到消息
命令行里输入 ros2 topic list
会显示组内所有消息,比如
本例我们需要发布这个消息: /charging_robot_system/TaskRequest
了解消息结构
我们需要知道这个消息有哪些参数,各是什么类型
- 因为这不是系统标准消息,所以首先要让系统知道它才能告诉我们,让系统知道的办法就是,找到定义这个消息所在的包目录下,运行
source install/setup.bash
- 让ros2告诉我们这个消息的信息,运行
ros2 topic info /charging_robot_system/TaskRequest
从上图输出可以看到,消息的类型(Type)是:charging_robot_system_msgs/msg/TaskRequest
那这种类型,内部有啥参数呢? - 使用查看接口类型命令
ros2 interface show charging_robot_system_msgs/msg/TaskRequest
输出里看得到,这种类型的消息结构,包含一个标准信息头,头里面有时间戳和frame_id,还有两个string类型的参数和一个uint8 的参数。
发布消息
发布消息的命令参阅Ros2 命令速查
ros2 topic pub -1 /charging_robot_system/TaskRequest charging_robot_system_msgs/msg/TaskRequest "{ header: { stamp: { sec : 0001, nanosec : 0021 }, frame_id: DummyCmd } , order_number : 2 , location : NearDoor }"
用{}嵌套的结构,设置参数,结构要与消息类型的结构一致。
运行如上。其中有个参数charge_time我们没设定,系统缺省用=0发布了。
时间戳咋办?
使用系统命令获取当前秒和纳秒,分别是:
sec=`date +%s`
sec=`date +%N`
可以分开写,也可写成一行,如下:
ros2 topic pub -1 /charging_robot_system/TaskRequest charging_robot_system_msgs/msg/TaskRequest "{ header: { stamp: { sec : `date +%s`, nanosec : `date +%N` }, frame_id: DummyTopic } , order_number : 001, location : somepose }"
运行了2次,结果如上图。
——————————
需要500关注,拜托点个关注,谢谢