0
$\begingroup$

Rosanswers logo

Hi!

Reading through some notes and material around nav2 I found a couple of mentions to a navigation setup often referred to as “reactive navigation”, which takes out continuous re-planning from the stack and replaces it for a single plan at the beginning of the navigation that connects the poses to navigate through with minimum cost lines; when there’s no static map those may as well be just straight lines.

I’m currently working on a robot that ought to work in large outdoors suburban-like environments navigating through sidewalks of different widths: some of them may barely fit the robot but are not usually populated with obstacles, while others are very wide but are very frequently populated with people moving around the robot.

I tried to set up this “reactive navigation” style on a simulated world with no static map using the DWB controller and an 8x8m local costmap, however, despite lowering the scale of the path-related critics and raising the obstacle-related, I struggled a lot to to make the robot go around even static objects that were in the way marked by the initial “straight line plan”. These obstacles would have been easily dodged by a navigation system using continuous replanning, as they would have been marked in the global costmap and the path for the controller to follow would have accounted for them. However it is not possible to mark them in a “static layer” beforehand because even though they may be static to the robot, they may be there just temporarily (ex: a parked car slightly blocking the sidewalk).

Has anyone had experience with this setup of the navigation stack? How did you set up your critics? Are there any guidelines for tuning the DWB controller for achieving a good balance between obstacle avoidance and path following? I expect the controller to dodge obstacles of all sizes, from a football ball to a full golf-car parked on the sidewalk or a big group of people the robot cannot go through, meaning it would have to be able to go pretty far away from the “straight line path”.

Do you think this setup would be more suited for dynamic outdoors environments instead of having continuous replanning at a relatively high frequency on a limited window around the robot while having the controller tuned more for path following? What would be the advantages of each approach?


Originally posted by Pepis on ROS Answers with karma: 130 on 2023-05-18

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

This is definitely a tuning thing and unfortunately there's no substitution for good tuning in a critic based system. Between DWB and MPPI, there's definitely the behavior you want possible but its going to take some time to tune the system for what you want if it doesn't do what you want out of the box. As much as I try my hardest to make things work well out of the box, the local trajectory planners are a unique instance that when you want something different than what I pre-tuned for you, its going to be a few days of tuning and building that intuition for yourself to get things in a good spot for the behavior you desire. No other advanced trajectory planning technique with dynamic behavior is going to be much, if at all, easier.

There are some other somewhat hacky solutions (depending on your view point) that could be played to make it easier, but I don't want to digress too much in this ticket. But I'll leave the point that just because you have a global plan, doesn't mean you could also have a local-global plan for the local-local planner to track for handling large but static deviations. Small and dynamic deviations the local planner should be able to be tuned to handle (probably also large / static too. The choice of one vs the other cannot really be made without trying both to see what behavioral trade-off is best for your application)


Originally posted by stevemacenski with karma: 8272 on 2023-05-18

This answer was ACCEPTED on the original site

Post score: 2


Original comments

Comment by Pepis on 2023-05-19:
Thanks for your answer steve!

its going to be a few days of tuning and building that intuition for yourself to get things in a good spot for the behavior you desire

Is there any good sequence of steps that could make tuning faster / easier for tuning the DWB controller especially for this type of reactive behavior? Ex: tune A critic first until you reach behavior B, then tune critic C...

But I'll leave the point that just because you have a global plan, doesn't mean you could also have a local-global plan for the local-local planner to track for handling large but static deviations

Could you elaborate on this? what in the the global-global plan would be the input to the local-global plan?

The choice of one vs the other cannot really be made without trying both to see what behavioral trade-off is best for your application

Are there any advantages of leaving global planning out at all and relying only on the controller?

Thanks in advance for your help!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.