ROS example

ROS example including some advanced topics and my tricks about ROS development.

ROS example

ROS是一个功能很强大的工具,ros_example这个仓库包含了ROS的一些常用功能的使用demo,还有一些进阶功能的使用demo,便于快速进行ROS开发。除此之外,还包括一些ROS工具的介绍便于进行ROS工程的调试,enjoy it!

Adcanced

1. roscpp Timer(定时器)

创建定时器:

回调函数用法

参考:https://www.ncnynl.com/archives/201702/1296.html

Tricks

  1. 减少topic带宽的方式

    • 没有订阅时不发布

      if (topic_name.getNumSubscribers() < 1) return;
      
  2. rviz显示点(位置,frontier等等)

    可以使用点云pcl::PointXYZI的来表示一个点,另外intensity可以表示想给的颜色,在rviz中的intensity显示模式可以自己的进行颜色的映射。

Convenient ROS packages

  1. 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