Robot stuck inexplicably
Hello,
I'm experiencing weird behaviour with a real robot running move_base. My setup consists of two Intel D435i cameras for obstacle avoidance and one Intel T265 camera for odometry, running on Ubuntu 20.04 Focal with ROS Noetic.
I can currently map an area using RTABMap, save the database of the map and launch RTABMap's localization mode.
Next thing I do is launch move_base. It all goes as expected, no errors nor warnings and most trajectories get executed succesfully.
Except sometimes, the robot gets stuck/stays indecisive inexplicably. It happens when I send a new goal and the robot is stationary, close to an obstacle but with enough space to operate (close in the sense that the obstacle is within the 4m x 4m local costmap). The weird thing is, if the local costmap gets updated with a new obstacle (me getting close to it for example), the robot reacts immediately and starts executing the planned path as it should.
I have tried playing with the acceleration values of the base_local_planner and update and planning frequencies but with no luck.
Has anyone experienced this behaviour? Or have some tips? Thanks for your time.
Here are my configuration files.
costmap_common_params.yaml:
robot_base_frame: base_link
transform tolerance: 0.3 #def 0.2
robot_radius: 0.6
obstacle_layer:
enabled: true
voxel_decay: 10 #seconds if linear, e^n if exponential
decay_model: 0 #0=linear, 1=exponential, -1=persistent
voxel_size: 0.05 #meters
track_unknown_space: true #default space is unknown
observation_persistence: 0.0 #seconds
max_obstacle_height: 1.2 #meters
unknown_threshold: 24 #nums voxels
mark_threshold: 2 #num voxels
update_footprint_enabled: true
combination_method: 1 #1=max, 0=override
obstacle_range: 2.5 #meters
origin_z: 0.0 #meters
publish_voxel_map: true #default off
transform_tolerance: 0.3 #seconds
mapping_mode: false #default off, saves map not for navigation
map_save_duration: 60 #default 60s, how often to autosave
observation_sources: pcl_mark pcl_clear_1 pcl_clear_2
pcl_mark:
data_type: PointCloud2
topic: /local_grid_obstacle
marking: true
clearing: false
min_obstacle_height: 0.0 #default 0, meters
max_obstacle_height: 1.1 #defaule 3, meters
expected_update_rate: 2.5 #default 0, if not updating at this rate at least, remove from buffer
observation_persistence: 0.0 #default 0, use all measurements taken during now-value, 0=latest
inf_is_valid: false #default false, for laser scans
clear_after_reading: true #default false, clear the buffer after the layer gets readings from it
filter: "passthrough" #default passthrough, apply "voxel", "passthrough", or no filter to sensor data, recommended to have at one filter on TRY NO FILTER SINCE INPUT ALREADY FILTERED
voxel_min_points: 0 #default 0, minimum points per voxel for voxel filter
pcl_clear_1:
enabled: true #default true, can be toggled on/off with associated service call
data_type: PointCloud2
topic: /d4351/depth/color/points
marking: false
clearing: true
min_z: -100.0 #default 0, meters
max_z: 100.0 #default 10, meters
vertical_fov_angle: 1.14 #default 0.7, radians 65.5 deg
horizontal_fov_angle: 1.59 #default 1.04, radians 91.2 deg
decay_acceleration: 1. #default 0, 1/s^2. If laser scanner MUST be 0
model_type: 0 #default 0 (depth camera). Use 1 for 3D
pcl_clear_2:
enabled: true #default true, can ...