-1

激光雷达运行良好,我的意思是 LaserScan 在 Rviz 中看起来非常好,但是当尝试使用 GMapping 进行地图绘制时,地图正在绘制墙壁,但它也标记了墙壁和其他障碍物之外的自由空间。我已经调整了 maxRange 和 maxURange 参数,但没有任何效果。

4

1 回答 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 回答