激光雷达运行良好,我的意思是 LaserScan 在 Rviz 中看起来非常好,但是当尝试使用 GMapping 进行地图绘制时,地图正在绘制墙壁,但它也标记了墙壁和其他障碍物之外的自由空间。我已经调整了 maxRange 和 maxURange 参数,但没有任何效果。
问问题
1012 次
1 回答
1
已解决 - 找到LaserScanRangeFilter包,它可以更改 LaserScan 的输出。保留 lower_replacement_value 和 upper_replacement_value 的默认值并没有帮助 (-inf),但更改为 NaN 让一切看起来都很棒!
这是我的laser_filter.yaml:
scan_filter_chain:
- name: range
type: LaserScanRangeFilter
params:
use_message_range_limits: true
lower_threshold: 0.3
upper_threshold: 16.0
lower_replacement_value: NaN
upper_replacement_value: NaN
这是我的lidar.launch:
<launch>
<arg name="use_gazebo" default="false" />
<node name="ydlidar_node" pkg="ydlidar" type="ydlidar_node" output="screen" unless="$(arg use_gazebo)">
<param name="port" type="string" value="/dev/ydlidar"/>
<param name="baudrate" type="int" value="230400"/>
<param name="frame_id" type="string" value="laser_frame"/>
<param name="angle_fixed" type="bool" value="true"/>
<param name="low_exposure" type="bool" value="false"/>
<param name="heartbeat" type="bool" value="false"/>
<param name="resolution_fixed" type="bool" value="true"/>
<param name="angle_min" type="double" value="-180" />
<param name="angle_max" type="double" value="180" />
<param name="range_min" type="double" value="0.08" />
<param name="range_max" type="double" value="16.0" />
<param name="ignore_array" type="string" value="" />
<param name="samp_rate" type="int" value="9"/>
<param name="frequency" type="double" value="7"/>
</node>
<include file="$(find gmrover)/launch/laser_filter.launch" unless="$(arg use_gazebo)" />
</launch>
于 2018-09-14T19:03:51.020 回答