vrpn_cient_ros发送频率无法调整提供解决思路

最近写了节点来订阅ros_client_ros,但是发现在launch文件修改update_frequency不起作用,然而我又需要通过串口给下位机发送数据,频率一快,串口直接堵死了。怎么调都frequency都没用,对于我这种ros新手很无奈呀,只有下位机开发经验的我,第一反映是在订阅节点搞个定时器,这样就可以规律的发送数据了,但是具体了解到rostopic的通信后,望而却步,还好无意中看到了这位兄台的博文ROS改变发布者频率豁然开朗,官方参考请看这里,咋们先用roswiki上的talker和listener实验测试一番:
1、roscore 启动ros;
2、rosrun topic_tools throttle messages command 10.0
这里的command是我的话题,后面的数字10是我需要改变的频率;
3,运行talker节点,然后rostopic list
/command
/command_throttle
/rosout
/rosout_agg
发现多了一个command_throttle的topic,echo一下/command和/command_throttle
vrpn_cient_ros发送频率无法调整提供解决思路_第1张图片
可以发现左图为连续的发送 右图为不间断的发送,更直观点咋们利用rostopic hz命令获取topic的频率,如下图所示,左图为command_throttle的发布频率,右边为command的发布频率
vrpn_cient_ros发送频率无法调整提供解决思路_第2张图片
4、我们将talker的发送频率改为ros::Rate loop_rate(100);在roboware studio里添加一个cpp文件-listenner2.cpp,复制listenner的内容,将订阅的command主题换成/command_throttle,用roboware studio的好处是自动帮你添加依赖,在回调函数里添加个变量,每次进入回调函数里,变量加1,然后在打印出来,最后点击小石头编译一下。
5、最后我们运行listener以及listener2,验证发布频率(看进入多少次回调函数),如下图所示:
vrpn_cient_ros发送频率无法调整提供解决思路_第3张图片
左图为listenner2,右图为listenner,其中real_count为进入回调函数的次数,发现左图大概是右图的1/10,验证成功!
6、但是发现,每次重新启动,/command_throttle主题便会消失,需要重新敲入rosrun topic_tools throttle messages command 10.0

你可能感兴趣的:(ros)