Robust dynamic obstacle avoidance, path planning.
I'm testing autonomous navigation on a Robotnik Summit X mobile robot.
Currently, the navigation stack is tuned well enough to incorporate smooth movements through narrow passages. Dynamic obstacle avoidance when the robot is navigating works fairly well too.
When a a dynamic obstacle(ex: a person) walks in front of it when its navigating, then the robot plans a new path and traverses the newly planned path around the obstacle if there is enough space for it to move (i.e. dynamic path planning).
The catch is when the space is narrow but still nearly wide enough for the robot to fit, it either starts executing a recovery behavior(which I have enabled), or stops without computing a path new path.
Global planner: NavfnROS
Local planner: Trajectory Planner.
I have tried different combinations of goal tolerance parameters for the local planner, but it turns out to be futile. Are there any other attributes of the global/local planner at play that might influence the outcome to not only plan a path in narrow region but also make the robot move in the region after avoiding the obstacle?
Robot: Differential drive
OS: Ubuntu 14.04 LTS
ROS: Indigo.
Thank you.
For reference.
move _base parameters
# Planner selection
base_global_planner: "navfn/NavfnROS"
base_local_planner: "base_local_planner/TrajectoryPlannerROS"
# Recovery behaviors are defined in robot folders
# Oscillation
oscillation_timeout: 10.0
oscillation_distance: 0.5
# Global planner
planner_frequency: 0.0
planner_patience: 5.0
NavfnROS:
allow_unknown: true # TODO: investigate this
default_tolerance: 0.0
# do not restrict planner
planner_window_x: 0.0
planner_window_y: 0.0
# debug
visualize_potential: false
# Local planner
controller_frequency: 25.0
controller_patience: 15.0
TrajectoryPlannerROS:
# base vel/accel profile is in robot folders
# tolerances (defaults)
yaw_goal_tolerance: 0.4
xy_goal_tolerance: 0.7
latch_xy_goal_tolerance: false
# forward simulation
sim_time: 3.0
sim_granularity: 0.06
angular_sim_granularity: 0.06
vx_samples: 20
vtheta_samples: 40
# scoring (defaults)
meter_scoring: true
pdist_scale: 8.0
gdist_scale: 12.0
occdist_scale: 0.1
heading_lookahead: 0.325
heading_scoring_timestep: 0.8
heading_scoring: true
dwa: false
# other
oscillation_reset_dist: 0.05
# debug
publish_cost_grid_pc: false
base local planner parameters:
# Robot Configuration Parameters
acc_lim_x: 2.5
acc_lim_y: 2.5
acc_lim_theta: 3.2
max_vel_x: 0.3
min_vel_x: 0.025
max_vel_theta: 0.3
min_vel_theta: -1.0
min_in_place_rotational_vel: 0.1
escape_vel: -0.1
holonomic_robot: false
y_vels: [-0.3, -0.1, 0.1, 0.3]
# Goal Tolerance Parameters
yaw_goal_tolerance: 0.4 #default: 0.05
xy_goal_tolerance: 0.7 #default: 0.1
latch_xy_goal_tolerance: false
# Forward Simulation Parameters
sim_time: 3.0
sim_granularity: 0.06
angular_sim_granularity: 0.06
vx_samples: 30
vtheta_samples: 40
#Trajectory Scoring Parameters
meter_scoring: true
pdist_scale: 1.0 # default: 0.6
gdist_scale: 0.01 # default: 0.8
occdist_scale: 0.01 # default: 0.01
heading_lookahead: 0.325 # default 0.325
heading_scoring: false
heading_scoring_timestep: 0.1 # default: 0.1
dwa: false # default: false
publish_cost_grid_pc: false
global_frame_id: odom
# Oscillation Prevention Parameters
oscillation_reset_dist: 0.05
#Global Plan Parameters
prune_plan: true
Asked by spiritninja on 2019-04-22 05:54:02 UTC
Comments