Robot stuck inexplicably

asked 2021-04-08 07:13:41 -0500

manusdlc gravatar image

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 ...
(more)
edit retag flag offensive close merge delete