ROS example including some advanced topics and my tricks about ROS development.
ROS是一个功能很强大的工具,ros_example这个仓库包含了ROS的一些常用功能的使用demo,还有一些进阶功能的使用demo,便于快速进行ROS开发。除此之外,还包括一些ROS工具的介绍便于进行ROS工程的调试,enjoy it!
创建定时器:
一般用法:
ros::Timer ros::NodeHandle::createTimer(ros::Duration period, <callback>, bool oneshot = false);
回调函数用法
用法:
void callback(const ros::TimerEvent&);// ros::TimerEvent结构体作为参数传入,它提供时间的相关信息,对于调试和配置非常有用
参考:https://www.ncnynl.com/archives/201702/1296.html
减少topic带宽的方式
没有订阅时不发布
if (topic_name.getNumSubscribers() < 1) return;
rviz显示点(位置,frontier等等)
可以使用点云pcl::PointXYZI的来表示一个点,另外intensity可以表示想给的颜色,在rviz中的intensity显示模式可以自己的进行颜色的映射。
topic_tools
topic_tools/throttle可以用来方便地限制话题的发布
限制频率到指定频率
rosrun topic_tools throttle messages <intopic> <msgs_per_sec> [outtopic]
前面的rosrun topic_tools throttle messages 是指使用的是throttle下面的messages模式,其中 intopic是指你想要改变频率的那个topic msgs_per_sec是指你想要它发布的频率,而outtopic是指改变发布频率后的topic的名称,可以省略,如果省略则自动在原来topic的名字上后缀throttle
限制字节
rosrun topic_tools throttle bytes <intopic> <bytes_per_sec> <window> [outtopic]
除了上面的限制方法,还可以添加lazy参数,来减少不必要的消息发布.
topic_tools除了throttle这个node之外,还有一些其他的节点提供了其他功能,参考http://wiki.ros.org/topic_tools