ros2命令行发布消息的实例

参阅Ros2 命令速查

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关注,拜托点个关注,谢谢

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

code .

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

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

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

打赏作者

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

抵扣说明:

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

余额充值