-1

Lidar is working well, by which I mean that LaserScan looks very good in Rviz, but when trying to map with GMapping, the map is drawing walls, but it's also marking free space beyond the walls and other obstacles. I have tweaked the maxRange and maxURange parameters with no effect.

veggiebenz
  • 389
  • 5
  • 12

1 Answers1

1

Solved -- found LaserScanRangeFilter package, which can change output of the LaserScan. Leaving the default values for lower_replacement_value and upper_replacement_value did not help (-inf), but changing to NaN made everything look great!

Here's my 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

Here's my 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>
veggiebenz
  • 389
  • 5
  • 12