前言
有些小伙伴刚进入公司可能需要使用公司自己小车的模型去进行一些算法验证或者其他方面的一些工作。而我们经常会git clone网上已经做好gazebo世界以及其他方面部署的小车,然后将其模型换成我们自己模型,就能运用他们的很多功能了。
问题
但是刚接触ROS的小伙伴可能会碰见将加载的URDF什么的换成我们自己小车的URDF,小车模型是出来了,全局路径也可以跑,但是激光雷达扫描到前方障碍物但是局部路径规划没有生成,无法进行避障。
解决方案
这种情况经常是因为没有更换激光雷达的一些配置,导致的避障实效。我们打开costmap_common_params.yaml会发现有一行关于激光雷达的配置,当然这是我的雷达配置,你们需要更换成你们自己的激光雷达。
scan: {sensor_frame: pavo2_laser, data_type: LaserScan, topic: pavo2_scan, marking: true, clearing: true}
这里的sensor_frame就是你雷达的名字,topic就是这个激光雷达的话题名,可以去小车模型的URDF文件中找到,在URDF里面我们可以找到雷达相关的配置,我的是这样的
<gazebo reference="pavo2_laser">
<sensor type="ray" name="ray_scan1">
<pose>0 0 0 0 0 0</pose>
<visualize>false</visualize>
<update_rate>50</update_rate>
<ray>
<scan>
<horizontal>
<!-- <samples>1042</samples> -->
<samples>1042</samples>
<!-- <resolution>1</resolution> -->
<min_angle>-2.443460953</min_angle>
<max_angle>2.443460953</max_angle>
</horizontal>
</scan>
<range>
<min>0.50</min>
<max>50.0</max>
<resolution> 0.01</resolution>
</range>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.01</stddev>
</noise>
</ray>
<plugin name="scan1_plugin" filename="libgazebo_ros_laser.so">
<topicName>pavo2_scan</topicName>
<frameName>pavo2_laser</frameName>
</plugin>
</sensor>
</gazebo>
这里代码下面有个frameName就是我们雷达的名字,即填在sensor_frame里面的内容,还有一个参数叫topicName就是我们填在costmap_common_params.yaml里面那个topic的内容。data_type一般都是LaserScan,当然我们也可以在终端使用rostopic type验证一下
后面marking和clearing一般都是设置成true的没啥问题,具体含义可以看一下ros wiki的说明,主要意思就是通过传感器数据对障碍物信息进行实时更新(标记或清除)。
翻译:
结语
对模型进行迁移时,一定要注意参数配置名称是否的更换成我们自己模型的一些名称,否则会出现很多很多功能失效或者其他千奇百怪的问题。希望这篇帖子可以解决大家小车无法避障的问题。