项目场景:
rf2o是我们常用的一个功能包,其功能主要就是在缺少轮式里程计的时候用雷达数据计算机器人的运动,模拟一个里程计的功能
问题描述
最近搞rf2o的过程中遇到了一个问题,它老是警告我,会一直输出
[ WARN] [xxxx.xxxx]: Waiting for laser_scans....
[ WARN] [xxxx.xxxx]: Waiting for laser_scans....
[ WARN] [xxxx.xxxx]: Waiting for laser_scans....
原因分析:
一开始我以为rf2o没有正常工作,但是只要设置对了,各种话题数据对上了是正常工作的,这里报错只是因为我们把频率调的太高了。以下是当时我们的rf2o配置
<launch>
<node pkg="rf2o_laser_odometry" type="rf2o_laser_odometry_node" name="rf2o_laser_odometry" >
<param name="laser_scan_topic" value="scan"/>
<param name="base_frame_id" value="base_footprint"/>
<param name="odom_topic" value="odom_rf2o" /> # topic where tu publish the odometry estimations
<param name="publish_tf" value="true" /> # wheter or not to publish the tf::transform (base->odom)
<param name="odom_frame_id" value="odom" />
<param name="freq" value="20.0"/>
<param name="verbose" value="true" />
</node>
</launch>
其中的频率,也就是<param name="freq" value="20.0"/> 太高了,而我的激光雷达数据频率不够高,所有在接受不到的时候会报错
解决方案:
只要把频率降下来就可以了,可以把频率的value 值调到10以内都可以
<param name="freq" value="10.0"/>
注意,出现这个警告其实他是正常运行的,可以使用命令监听一下数据
rostopic echo /rf2o_laser_odometry/odom
|