【ROS工具学习】之topic_tools/throttle,改变节点发布频率

最近老师想做一个实验,机器人上搭在Hokuyo单线激光雷达,Velodyne16线激光雷达,Kinect2,Bumblebee xb3等传感器,这些传感器做一些实验,因为传感器较多所以采集的数据量非常大,需要在采集的时候降低topic的发布频率,玩过ROS的人都知道,可以直接通过修改源代码发布消息的部分来改变topic的发布频率,但是传感器太多,而且要去仔细研究其源代码,所以比较麻烦,今天发现一神器:topic_tools下面有一个throttle工具可以直接从外部改变topic的发布频率,网址在下面,简单易懂,自己去看吧:
http://wiki.ros.org/topic_tools/throttle

这个工具主要用来限制最大发布频率或者带宽的。

1.限制发布频率
其命令格式如下:

rosrun topic_tools throttle messages <intopic> <msgs_per_sec> [outtopic]

例如,如果我想要让激光雷达的topic发布频率降低至1HZ,则在终端中输入如下命令:

rosrun topic_tools throttle messages base_scan 1.0

可见前面的rosrun topic_tools throttle messages 是指我使用的是throttle 下面的messages模式,其中 intopic是指你想要改变频率的那个topic msgs_per_sec是指你想要它发布的频率,而outtopic是指改变发布频率后的topic的名称,可以省略,如果省略则自动在原来topic的名字上后缀throttle

2.限制每秒发布的字节数
命令格式:

rosrun topic_tools throttle bytes <intopic> <bytes_per_sec> <window> [outtopic]

例如,我想要让雷达的带宽占用降至1KBps,则命令为:

rosrun topic_tools throttle bytes base_scan 1024 1.0

不要问我那个window是生么意思,我也不知道,如果你懂得话,麻烦告诉我下,嘿嘿。

备注:1.所谓的改变topic发布频率并不是说改变之后原来的topic就没了,或者直接在原来的topic上更改,而是更改了之后throttle再把其更改后的topic发布出来,原来的topic仍然存在,例如:原来/base_scan发布的频率是40.0,更改后这个topic发布的频率仍然是40.0,只是使用throttle后会重新生成一个topic,/base_scan_throttle,这个节点的发布频率为1.0
2.这个工具还有一些很有意思的参数,例如,~lazy等于True的话,只有当你订阅到throttle发出来的消息,它才会工作,否则它不工作。
3.我的测试发现它的频率控制其实精度很低,例如我想让它10HZ频率发布,实际才能达到8HZ,不知道我使用是不是有什么问题,如果你知道的话就告诉我吧~

你可能感兴趣的:(ROS学习)