Skip to content

Conversation

@decwest
Copy link
Contributor

@decwest decwest commented Dec 14, 2025


Basic Info

Info Please fill out this column
Ticket(s) this addresses Successor of #5591 (due to signed-off issue)
Primary OS tested on Ubuntu 24.04 (ROS2 rolling)
Robotic platform tested on gazebo simulation of turtlebot3_waffle, real robot experiment using WHILL Model CR
Does this PR contain AI generated software? No
Was this PR description generated by AI software? No

Description of contribution in a few bullet points

  • Implement DWPP as an extension to the current RPP implementation

Description of documentation updates required from your changes

  • Added new parameter, so need to add that to default configs and documentation page

Added Parameters

  • max_linear_vel (rename of desired_linear_vel) (double): maximum linear velocity (m/s)
  • min_linear_vel (double): minimum linear velocity(m/s)
  • max_angular_vel (rename of desired_angular_vel) (double): maximum angular velocity (rad/s)
  • min_angular_vel (double): minimum angular velocity (rad/s)
  • max_linear_accel (double): maximum linear acceleration (m/s²)
  • max_linear_decel (double): maximum linear deceleration (m/s²)
  • max_angular_decel (double): maximum angular deceleration (m/rad²)
  • use_dynamic_window (bool): enable DWPP

Description of how this change was tested

Simulation video

DWPP_simulation.mp4

Future work that may be required in bullet points

  • Discussion and modification regarding the renaming of Regulated Pure Pursuit
  • Documentation update

For Maintainers:

  • Check that any new parameters added are updated in docs.nav2.org
  • Check that any significant change is added to the migration guide
  • Check that any new features OR changes to existing behaviors are reflected in the tuning guide
  • Check that any new functions have Doxygen added
  • Check that any new features have test coverage
  • Check that any new plugins is added to the plugins page
  • If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists
  • Should this be backported to current distributions? If so, tag with backport-*.
Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
@codecov
Copy link

codecov bot commented Dec 14, 2025

Codecov Report

❌ Patch coverage is 99.18699% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
..._pure_pursuit_controller/src/parameter_handler.cpp 97.77% 1 Missing ⚠️
Files with missing lines Coverage Δ
...ntroller/dynamic_window_pure_pursuit_functions.hpp 100.00% <100.00%> (ø)
...t_controller/regulated_pure_pursuit_controller.hpp 100.00% <ø> (ø)
...ntroller/src/regulated_pure_pursuit_controller.cpp 87.64% <100.00%> (+1.28%) ⬆️
..._pure_pursuit_controller/src/parameter_handler.cpp 92.92% <97.77%> (+1.57%) ⬆️

... and 28 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
Copy link
Member

@SteveMacenski SteveMacenski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mini-1235 please review in particular dynamic_window_pure_pursuit_functions.hpp and the reference paper. I think it would be both good for you to understand this later on for maintenance and for you to validate these as correctly implemented (and generally you find it useful).

I will do the same

Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
@decwest
Copy link
Contributor Author

decwest commented Dec 18, 2025

@mini-1235
Thank you in advance.
I have sent my paper to you by email.
I would appreciate it if you could take a look at it when you have time.

@mini-1235
Copy link
Collaborator

Thanks @decwest, I have received it. I will take a look at the PR shortly

Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Copy link
Collaborator

@mini-1235 mini-1235 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the detailed explanations! This PR looks good to me

@mini-1235
Copy link
Collaborator

@mergify
Copy link
Contributor

mergify bot commented Dec 30, 2025

This pull request is in conflict. Could you fix it @decwest?

Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Copy link
Member

@SteveMacenski SteveMacenski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise LGTM

Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
Signed-off-by: Decwest <fumiyaonishi1016@gmail.com>
@decwest decwest force-pushed the feature/implement_dwpp_v2 branch from 7f601fa to fc05330 Compare January 16, 2026 12:18
Copy link
Member

@SteveMacenski SteveMacenski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Last steps:

  1. I'd like you to put together a demo video / gif for this feature. This should be put into the migration guide and I think it would be nice to highlight this in an announcement to the community so something graphic is always nice
  2. Do some final testing to validate that the performance you expect is still happening after this refactor (like whatever you used to generate that gif in your README). Actually that gif itself might be nice to use for the graphic - just as a video and sped up a bit 🙃
@decwest
Copy link
Contributor Author

decwest commented Jan 17, 2026

@SteveMacenski
Got it, thanks! I have already run experiments using the refactored code for the paper, and I confirmed that it works correctly as part of the full Nav2 system and that DWPP still outperforms the conventional methods.

Here are the experiment videos:

Simulation results:
https://youtu.be/fIKk4Q_rvLM

Real-robot experiment results:
https://youtu.be/H6r3x1AhsjM

Regarding the GIF, I am thinking of using the DWPP result on Path C from the videos above, where the difference is especially clear. Which do you think would be better to use, the simulation video or the real-robot video?

@SteveMacenski
Copy link
Member

Path C from the videos above

Makes sense!

I'm going to merge this now just to meet your deadline, but please follow up with another docs PR including that video as a gif in the migration guide entry & embedding the actual youtube link into the configuration guide page (then I can also use that video to promote 😉 )

@SteveMacenski SteveMacenski merged commit ebd2bfb into ros-navigation:main Jan 20, 2026
19 checks passed
@decwest
Copy link
Contributor Author

decwest commented Jan 21, 2026

@SteveMacenski
Thank you so much for merging my contribution! I'm truly honored.
I submitted the paper, and it will also be available on arXiv in a few days.

I’ve also opened a PR for the docs: ros-navigation/docs.nav2.org#856
Changes include:

  • Migration Guide: Added a GIF.
  • Configuration Guide: Added YouTube links and citation info (I will update this once the arXiv link is available).
@decwest
Copy link
Contributor Author

decwest commented Jan 21, 2026

I have one more thing I'd like to discuss.
Is it possible to backport this feature to Kilted and Jazzy as well? I'd like to do so if permitted.

@SteveMacenski
Copy link
Member

This PR changes key configuration parameters / names so I don't think this can be backported into existing distributions unfortunately :(

@decwest
Copy link
Contributor Author

decwest commented Jan 22, 2026

That makes sense, I understand. Thank you for your consideration.

This controller also implements the Dynamic Window Pure Pursuit (DWPP) algorithm, developed by [Fumiya Ohnishi](https://www.linkedin.com/in/fumiya-ohnishi-23b124202).
Unlike the standard Pure Pursuit, DWPP enables the consideration of velocity and acceleration constraints when computing velocity commands.
An overview of the algorithm can be found here: [DWPP Algorithm*](https://github.com/Decwest/nav2_dynamic_window_pure_pursuit_controller/blob/main/algorithm.md).
*Fumiya Ohnishi, Masaki Takahashi, "Dynamic Window Pure Pursuit for Robot Path Tracking Considering Velocity and Acceleration Constraints", Proceedings of the 19th International Conference on Intelligent Autonomous Systems (IAS-19), Genoa, Italy, 2025.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to update this description to reflect the latest paper published on arXiv.
May I create a new pull request for this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure :-)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much!
I created a PR, I would appreciate it if you could take a look at it.

#5889

@decwest decwest mentioned this pull request Jan 23, 2026
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants