RTABMap/obstacles_detection 3D LiDAR Optimization

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

RTABMap/obstacles_detection 3D LiDAR Optimization

itsabouttime
Greetings, I am currently running ROS Melodic on Ubuntu 18.04. I have a simulated turtlebot3 with the goal of unknown environment exploration in 3D. My setup has one depth camera on the front and one on the back of the robot with a velodyne 3D LiDAR with 360 degrees of view. Currently, RTABMap maps very well and I am quite pleased with my setup. Additionally, obstacles_detection normally does an excellent job of distinguishing between objects and ground in 2D and 3D environments. Occasionally however, obstacles_detection gets confused near doorways and tight corridors, thinking that the path is blocked. leading to inefficient path planning. Attached is an image of this occurring. How should I optimize my setup so that this is less likely to occur? Thanks! Obstacles_detection nodelet code:
<group ns="/velodyne_points">
  <node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" />
  <!-- Run a VoxelGrid filter to clean NaNs and downsample the data -->
  <node pkg="nodelet" type="nodelet" name="voxel_grid" args="load pcl/VoxelGrid pcl_manager" output="screen">
    <remap from="~input" to="/velodyne_points" />
    <rosparam>
      filter_field_name: z
      filter_limit_min: -1000 # -1000 is abs min
      filter_limit_max: 1000 # 1000 is abs max
      filter_limit_negative: False
      leaf_size: 0.05
    </rosparam>
  </node>
  <node pkg="nodelet" type="nodelet" name="obstacles_detection" args="standalone rtabmap_ros/obstacles_detection">
          <remap from="cloud" to="/velodyne_points/voxel_grid/output"/>
          <remap from="obstacles" to="planner_cloud"/>
          <param name="frame_id" type="string" value="base_footprint"/>
          <param name="map_frame_id" type="string" value="map"/>
          <param name="wait_for_transform" type="bool" value="true"/>
          <param name="min_cluster_size" type="int" value="20"/>
          <param name="max_obstacles_height" type="double" value="0.0"/>
  </node>
</group>
Local_costmap_config.yaml:
local_costmap:
  global_frame: odom
  robot_base_frame: base_footprint
  update_frequency: 2.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 4.0
  height: 4.0
  resolution: 0.025
  origin_x: -2.0
  origin_y: -2.0

  observation_sources: velodyne_cloud_sensor1

velodyne_cloud_sensor1: {
    sensor_frame: base_footprint,
    data_type: PointCloud2,
    topic: /velodyne_points/planner_cloud, #changed from openni_points

    expected_update_rate: 0.5,
    marking: true,
    clearing: true,
    min_obstacle_height: -99999.0,
    max_obstacle_height: 99999.0}  #we use 99999.0 normally
Navigation error:
Reply | Threaded
Open this post in threaded view
|

Re: RTABMap/obstacles_detection 3D LiDAR Optimization

matlabbe
Administrator
Hi,

As you are moving a 2d plane, you could set min_obstacle_height to 0.05 for example, or increase leaf_size.

cheers,
Mathieu