Ask Your Question
1

Is it feasible to use two local planner in Move_base? [closed]

asked 2014-09-01 06:16:33 -0600

scopus gravatar image

updated 2014-09-01 06:21:23 -0600

Hi,all, I want to combine the functionality of collision avoidance of DWAPlanner and the functionality of multi-robot collision avoidance of collovid. Both of them are local planner and with different collision avoidance functionality.
I have tried to add them in a base_local_planner.yaml as follows and run it in a turtlebot:

controller_frequency: 10
use_obstacles: false # was true

CollvoidLocalPlanner:

  holo_robot: false
  wheel_base: 0.25

  max_neighbors: 10
  neighbor_dist: 1.0

  max_vel_x: 0.8 # was 0.5
  max_vel_th: 1.0 # was 1.5
  min_vel_x: 0.01 # was 0.1
  min_vel_th: 0.2
  min_vel_y: 0.01 #was 0.0
  max_vel_y: 0.1 # was 0.0
  min_vel_th_inplace: 0.05 # was 0.5
  acc_lim_x: 1.0 #was 5.0
  acc_lim_y: 0.2 #was 5.0
  acc_lim_th: 0.5 #was 5.2

  max_vel_with_obstacles: 0.5

  footprint_radius: 0.18 #was 0.17
  inscribed_radius: 0.2  
  yaw_goal_tolerance: 0.5
  xy_goal_tolerance: 0.10 
  latch_xy_goal_tolerance: true
  ignore_goal_yaw: false
  global_frame: /map

  time_horizon: 5.0
  time_horizon_obst: 5.0 #was 10.0
  time_to_holo:  0.4
  min_error_holo: 0.02
  max_error_holo: 0.10
  delete_observations: false #was true
  threshold_last_seen: 0.5 #was 0.5
  trunc_time: 1.0
  left_pref: -0.05

  eps: 0.1

  publish_positions_frequency: 5.0
  publish_me_frequency: 5.0

  type_vo: 0 #HRVO = 0, RVO = 1, VO = 2

  orca: true #orca or VO
  convex: false #footprint or radius
  clearpath: true #clearpath or sampling 
  num_samples: 100 #num samples
  use_truncation: true #truncate vos

TrajectoryPlannerROS:
  max_vel_x: 0.50
  min_vel_x: 0.10
  max_rotational_vel: 1.5
  min_in_place_rotational_vel: 1.0
  acc_lim_th: 0.75
  acc_lim_x: 0.50
  acc_lim_y: 0.50

  holonomic_robot: false
  yaw_goal_tolerance: 0.3
  xy_goal_tolerance: 0.15
  goal_distance_bias: 0.5
  path_distance_bias: 0.5 #was 0.9996
  sim_time: 1.5
  heading_lookahead: 0.325
  oscillation_reset_dist: 0.05

  vx_samples: 6
  vtheta_samples: 20
  dwa: true


DWAPlannerROS:
  acc_lim_th: 5.0
  acc_lim_x: 1.0
  acc_lim_y: 0.0
  max_trans_vel: 0.50
  min_trans_vel: 0.0
  max_vel_x: 0.30
  min_vel_x: 0.0
  max_vel_y: 0.0
  min_vel_y: 0.0
  max_rot_vel: 1.0
  min_rot_vel: 0.2
  # These are guessed tolerance values. Yaw tolerance should be about
  # 45 degree and xy tolerance within a foot.
  yaw_goal_tolerance: 0.2  # radians
  xy_goal_tolerance: 0.2  # meters We increase the stop_time_buffer
  # because we have a pretty high latency on the controller. A small
  # stop_time_buffer would cause the robot to crash into obstacles
  # more often.
  stop_time_buffer: 0.8
  # Lower the path_distance_bias to make the robot not follow the path
  # too strictly and avoid spinning in place when gmapping causes
  # jumsp in the robot's pose.
  path_distance_bias: 10.0
  vx_samples: 10
  vy_samples: 1
  occdist_scale: 0.02

However, the turtlebot robot couldn't avoid static obstacles as the default functionality in the package "turtlebot_navigation“。 Does any one encounter similar problem before. Thank you!

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by scopus
close date 2014-09-03 21:27:46.640823

2 Answers

Sort by » oldest newest most voted
0

answered 2014-09-02 04:49:31 -0600

jorge gravatar image

Interesting issue. Yes, afaik you cannot use two local planners within the move_base node, as David said. So thinking about alternatives, one can be to make your own move_base node and instantiate two different controllers, the classical obstacle avoidance one, and the CollvoidLocalPlanner. The problem is how to decide to which one you give the control... Well, probably you can find solutions, but...

But I think a much better approach would be to reuse part of the code on collovid to populate a costmap layer as implemented on social_navigation_layers. Take a look at this answer for details. And the author is already here in the first answer! ^_^

edit flag offensive delete link more

Comments

Thank you very much ! It is helpful!

scopus gravatar imagescopus ( 2014-09-02 06:55:57 -0600 )edit
1

answered 2014-09-01 10:20:43 -0600

David Lu gravatar image

The key parameter you're missing in this configuration is base_local_planner. ( http://wiki.ros.org/move_base#Parameters )

You can only choose one local planner at the moment. Otherwise, it would be unclear what to do when the two planners had conflicting commands.

edit flag offensive delete link more

Comments

I am sorry, I can not get your meaning. Since if is not feasible to use two local_planner at the same time, I abandon it. But Please tell me what kinds of parameters I am missing above. Thank you!

scopus gravatar imagescopus ( 2014-09-03 07:25:25 -0600 )edit

The base_local_planner parameter is the one that chooses which local planner to use. You don't specify that in the parameters listed.

David Lu gravatar imageDavid Lu ( 2014-09-03 09:53:13 -0600 )edit

Thank you!

scopus gravatar imagescopus ( 2014-09-03 21:27:19 -0600 )edit

Question Tools

3 followers

Stats

Asked: 2014-09-01 06:16:33 -0600

Seen: 584 times

Last updated: Sep 02 '14