-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Use integral path distance for MPPI Critics #5495
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use integral path distance for MPPI Critics #5495
Conversation
|
@claude review the PR |
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
|
Tests probably still need fixing but let's start with functionality review first |
|
I'll review, but you got some test failures which makes me suspicious that there are functional problems with this approach if you're getting |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces integral path distance calculations for MPPI critics instead of relying on Euclidean distance calculations. The change aims to improve path following accuracy by using actual path length measurements from the robot's current position to the goal.
- Add
plan_lengthandplan_length_up_to_inversionfields to the Path model and calculate them in the path handler - Update all critics to use path distance instead of Euclidean distance for goal proximity checks
- Modify the optimizer interface to accept and pass through the calculated path lengths
Reviewed Changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| nav2_mppi_controller/include/nav2_mppi_controller/models/path.hpp | Add plan length fields to Path struct |
| nav2_mppi_controller/include/nav2_mppi_controller/tools/path_handler.hpp | Add methods for path length calculation and retrieval |
| nav2_mppi_controller/include/nav2_mppi_controller/optimizer.hpp | Update optimizer interface to accept plan lengths |
| nav2_mppi_controller/include/nav2_mppi_controller/tools/utils.hpp | Add utility function for getting critic goal path distance |
| nav2_mppi_controller/src/path_handler.cpp | Implement path length calculation logic |
| nav2_mppi_controller/src/optimizer.cpp | Update optimizer to use new plan length parameters |
| nav2_mppi_controller/src/controller.cpp | Pass calculated plan lengths to optimizer |
| nav2_mppi_controller/src/critics/*.cpp | Update critics to use path distance instead of Euclidean distance |
| nav2_mppi_controller/test/*.cpp | Update tests to work with new optimizer interface |
| nav2_mppi_controller/benchmark/optimizer_benchmark.cpp | Update benchmark to use new optimizer interface |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have
I honestly have no idea what I started typing here
nav2_mppi_controller/include/nav2_mppi_controller/tools/path_handler.hpp
Outdated
Show resolved
Hide resolved
nav2_mppi_controller/include/nav2_mppi_controller/tools/utils.hpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DCO sign off 😉 Otherwise LGTM if you don't have any concerns from your testing
| } | ||
|
|
||
| geometry_msgs::msg::Pose goal = utils::getCriticGoal(data, enforce_path_inversion_); | ||
| if (data.goal_checker != nullptr) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this one special to use the goal checker?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know, question right back at you; seems like it's been like this forever
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh this was just wrapped into the util function, got it. I thought you introduced this, not refactoring it
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
This reverts commit 8b21e89. Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
3f5786c to
614a26c
Compare
We haven't migrated to MPPI yet in production so the testing was limited to simulation. Would be great if OP @bektaskemal could also give it a test |
|
@bektaskemal please test and let us know how it goes! :-) |
* Implement integral distance for critics Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * . Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * more linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reset path length Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix sign Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix return value Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * Revert "fix return value" This reverts commit 8b21e89. Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * remove extra variable Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * add doxygen Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * rename getCriticGoalPathDistance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * delete withinPositionGoalTolerance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * use only one path distance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * cleanup Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reorder Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * format Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> --------- Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
|
@tonynajjar for my clarity, this implementation only works as intended, as long as the threshold to consider is smaller than the pruning distance and local costmap bounds, right? |
Not sure what you mean by that, because what is intended is that the critic is activated based on which one of |
|
Okay, thanks for the clarification. |
* Implement integral distance for critics Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * . Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * more linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reset path length Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix sign Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix return value Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * Revert "fix return value" This reverts commit 8b21e89. Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * remove extra variable Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * add doxygen Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * rename getCriticGoalPathDistance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * delete withinPositionGoalTolerance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * use only one path distance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * cleanup Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reorder Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * format Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> --------- Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
* Implement integral distance for critics Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * . Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * more linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reset path length Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix sign Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix return value Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * Revert "fix return value" This reverts commit 8b21e89. Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * remove extra variable Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * add doxygen Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * rename getCriticGoalPathDistance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * delete withinPositionGoalTolerance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * use only one path distance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * cleanup Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reorder Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * format Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> --------- Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> Signed-off-by: Abhishekh Reddy <helloarm@pm.me>
* Implement integral distance for critics Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * . Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * more linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reset path length Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix sign Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix return value Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * Revert "fix return value" This reverts commit 8b21e89. Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * remove extra variable Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * add doxygen Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * rename getCriticGoalPathDistance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * delete withinPositionGoalTolerance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * use only one path distance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * cleanup Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reorder Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * format Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> --------- Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
* Implement integral distance for critics Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * . Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * more linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reset path length Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix sign Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix return value Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * Revert "fix return value" This reverts commit 8b21e89. Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * remove extra variable Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * add doxygen Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * rename getCriticGoalPathDistance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * delete withinPositionGoalTolerance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * use only one path distance Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * cleanup Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * linting Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * reorder Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * format Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> * fix tests Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com> --------- Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Basic Info
Description of contribution in a few bullet points
plan_lengthandplan_length_up_to_inversionand have them computed in the path_handler and passed to the critics dataDescription of documentation updates required from your changes
Description of how this change was tested
Future work that may be required in bullet points
For Maintainers:
backport-*.