ros2命令行发布消息的实例

参阅Ros2 命令速查

1 查到消息

命令行里输入 ros2 topic list
会显示组内所有消息,比如
ros2命令行发布消息的实例_第1张图片
本例我们需要发布这个消息: /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
    ros2命令行发布消息的实例_第2张图片
    输出里看得到,这种类型的消息结构,包含一个标准信息头,头里面有时间戳和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 }"  

用{}嵌套的结构,设置参数,结构要与消息类型的结构一致。
ros2命令行发布消息的实例_第3张图片
运行如上。其中有个参数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 }"  

ros2命令行发布消息的实例_第4张图片
运行了2次,结果如上图。
——————————
需要500关注,拜托点个关注,谢谢

你可能感兴趣的:(速查备忘,ROS2,bash,机器人)