0
$\begingroup$

I am using DWA Planner on ROS Noetic for my navigation. It works perfectly. However, I want to change it's behavior. Instead of avoiding an obstacle, I want my robot to wait until the obstacle gets out of the path. How could I do that?

I tried things like disabling the VoxelLayer on global_costmap, setting only staticlayer on it, and messing around the distance_bias parameters on DWA. I tried putting path_distance on 100, 0, and it worked the same way. Setting the goal_distance to 0 only makes my robot rotate in place. Furthermore, I updated following parameters but no success:

  1. path: 100, goal: 20
  2. path: 100, goal: 0
  3. path: 100, goal: 100
  4. path: 0, goal: 100
  5. path: 0, goal: 0
  6. path: 0, goal: 20
  7. path: 32, goal: 100
$\endgroup$

1 Answer 1

0
$\begingroup$

If you have an active local planner, it will always avoid the object as long as it's in the local costmap. One hack could be to change your local costmap config to be empty and have no sensor input (not sure 100% if it would work). Your best bet is to only use a global path planner, and instead of a local planner that uses sampling, simply use one of the PID controllers that follows the global plan using PID control and no sampling. You probably would still need to monitor sensor data for dynamic obstacles that come up in the path, and stop the robot while that dynamic obstacle is detected, and resume motor commands when it leaves.

TLDR:

  • Take out local path planner
  • launch tracking_pid to follow global plan
  • have other code that checks for dynamic obstacles in path
  • use cmd_multiplex to use tracking_pid commands unless that^ code says otherwise
$\endgroup$
3
  • $\begingroup$ Hmm, thank you for your response. Perchance, do you know if there is anything like that already made? Or if someone teaches how to do that? Thanks in advance. $\endgroup$ Commented Oct 16, 2023 at 11:00
  • $\begingroup$ It's all just plugging into or removing from move_base. Google tracking_pid. It'll be easy to code something that just stops the robot if an obstacle is detected. $\endgroup$ Commented Oct 16, 2023 at 20:31
  • $\begingroup$ Got it. I will take a deeper look into it, thanks again, Chad! $\endgroup$ Commented Oct 17, 2023 at 12:49

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.