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: