Add NavigateToPose and NavigateThroughPoses RViz panels for manual goal sending#5774
Add NavigateToPose and NavigateThroughPoses RViz panels for manual goal sending#5774SteveMacenski merged 21 commits intoros-navigation:mainfrom
Conversation
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
|
Please explain what is wrong with the current Nav2 panel that allows for Navigate Through / To Pose(s) and Waypoint Following already. If there's some minor missing feature(s), why not add those to the existing panel? Those panels also have other features built in like feedback display and lifecycle states. I'm not quite understanding the need for more panels with alot of overlap in capability. |
|
I appreciate the current Nav2 panel, and you might be right, integrating these features into the original panel could be the best approach. In my experience using the navigation stack, I’ve found two key features missing:
I submitted this PR because this tool has been part of my workflow for a long time, and I thought the community might find it useful. That said, I am definitely open to merging this logic into the existing Nav2 Panel if you find it useful. |
|
I think those all sound good, but I'd like to include it into the default panel if possible, especially the BT XML selection since it would be dual purpose for navigate to pose / through poses and include all the great feedback and status updates that we have setup in the Nav2 main panel. I think that edit field could be easy to add to the panel between the feedback and the Pause/Reset/etc buttons. The coordinates i think could be added at the bottom. Right now, we have a "Tools for WP Following" box. I think we could make that into a tab and have another tab(s) for Nav2Pose / NavThroughPoses which can set the coordinates. That would be compact, available, and binned as a "tool" like the current waypoint following tools that are similar analogs |
|
Sounds like a good solution to me. I will work on a first version of it and update this PR. |
|
Also mind Ci, it looks like there's a small issue |
…tures in Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
|
@claude review this PR |
|
Claude finished @SteveMacenski's task —— View job PR Review: NavigateToPose and NavigateThroughPoses RViz Panel IntegrationI've thoroughly analyzed this PR and can provide the following comprehensive review. Note: I'm reviewing based on the PR description, screenshots, and discussion since I can only access the main branch code, not the PR branch changes. Overall Assessment✅ Excellent evolution from the original proposal - The integration into the main Nav2 panel rather than standalone panels addresses @SteveMacenski's feedback perfectly and provides a much better user experience. Positive Aspects🎯 Architecture & Design
🔧 Functionality
Areas Requiring Attention🚨 Critical Issues
|
|
Oh man, you did a great job, this is cool! Check out the Claude output, but don't take it too seriously if you don't agree with what it says. I mostly asked it to check since the state machine here is complex - so between that and you looking over it again, please verify that you've cleaned up all the resources appropriately. I'm taking a look too, but this is error prone in reviews. The only specific request I have is to change the ordering of the tabs to put Navigate To Pose first, then Nav Through Poses, then WP following. It looks like its last from your screen shots. Make sure to update |
…llowing Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
… navigation is finished Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
…ateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
mini-1235
left a comment
There was a problem hiding this comment.
@preverte Thanks for the contribution. I have a couple of questions:
-
In the NavigateThroughPoses tab, I saw the instruction "click & drag or manual", can you clarify how "click & drag" works?
-
Previously, I was able to "Load WPs" and then directly start Nav Through Poses. But with the new changes, I believe this is no longer possible, yes?
|
@mini-1235, thanks for the review. Regarding "click and drag," I am referring to the standard Nav2 Goal button. If this is ambiguous, we can update the label to clarify. When the Waypoint / Nav Through Poses Mode button is clicked, both the NavigateThroughPoses and WP-Following tabs are enabled. Currently, clicking LoadWPs in the WP-Following tab allows you to load a YAML file with a list of goals and start the navigation. However, this action does not populate the pose list in the NavigateThroughPoses tab. Consequently, you cannot navigate through those points using Start Nav Through Poses. This means the inputs for these two modes are currently aislated. Since both modes essentially operate on a list of poses—differing only in the navigation action type—I propose unifying them. I suggest creating a single tab for pose management that includes:
With this structure, any pose added via Nav2 Pose, Add Pose or Load WP would populate this shared list, making it easy to modify and save them. Furthermore, the user could easily choose to execute the path using either NavigateThroughPoses or WP-Following, as both modes would share the same data source. Check this picture as an illustration of the proposed organization:
I believe this modification compacts the multiple-pose navigation tools available Rviz and simplifies the UI, easing even more the user's experience with it. @SteveMacenski , @mini-1235 what do you think about it? Do you find worth it implementing this? |
…s share same list of poses for navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
|
I haven't pushed any changes yet, as I wanted you to confirm if you like the proposal first. However, here is a demo of NavigateThroughPoses. It shows the workflow of creating a pose with the Nav2 Goal button, adding another via manual Add Pose, loading a list from a YAML file, and finally deleting one of them. This demonstrates how all editing modes work together in this update for the new UI layout. update.mp4Just like NavigateThroughPoses, the Waypoint Following action can be executed using the very same list of poses with no additional preparation steps needed. |
I think we can remove that line
I agree, loading poses from a yaml file is something I use frequently when testing Navigate Through Poses |
…g and enabled when not Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
…to what is done as NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
|
Please find uploaded the updated version of the nav2_rviz_plugins package, featuring the discussed UI layout that merges the NavigateThroughPoses and Waypoint Following tools into a single tab. The attached video demonstrates the workflow with this new layout: adding a pose via the Nav2 Goal button, appending additional poses from a YAML file, and executing navigation using both NavigateThroughPoses and Waypoint Following. update_v2.mp4 |
|
Going to wait for Maurice to review again, but wanted to say those videos are gold. You should include an entry to the migration guide and use that video to showcase your work! https://docs.nav2.org/migration/Kilted.html |
mini-1235
left a comment
There was a problem hiding this comment.
Small nitpick, but otherwise LGTM. Thanks a lot for this addition!
Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
|
@mini-1235 you're absolutely right! I pushed a new commit fixing this and updating a few more labels to maintain consistency throughout the UI. |
|
Question: Do we need to do and so on for the add pose and remove pose button? |
…led as rest of buttons Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
…ng navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
|
My bad, Add Pose and Remove Pose were being handled differently from the rest of the buttons for no reason. They were being enabled/disabled directly in each of the state functions instead of using I took the opportunity to correct it, so now buttons are configured consistently. I also removed some redundant text configuration for buttons that never change their labels across states. Also, I fixed a minor bug where the Start NavigateToPose button was still enabled while navigating. |
mini-1235
left a comment
There was a problem hiding this comment.
I am a bit confused while reviewing the code.
You removed these lines:
idle_->assignProperty(save_waypoints_button_, "text", "Save WPs");
idle_->assignProperty(load_waypoints_button_, "text", "Load WPs");
but similar pattern for other buttons (e.g. pause_waypoint_button_, navigation_mode_button_) were kept, can you explain why?
|
In contrast, buttons like While we could explicitly set the text for every button in every state, I optimized this to reduce code complexity and the total number of lines. |
mini-1235
left a comment
There was a problem hiding this comment.
Ok, thanks for the explanation. LGTM
|
Just waiting on the docs PR fix :-) Thanks for this @preverte |
…al sending (ros-navigation#5774) * Created NavigateToPose panel for Rviz Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Created NavigateThroughPoses panel for Rviz Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Formatted files for ament_cpplint and ament_uncristify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Deleted NavigateToPose and NavigateThroughPoses panels to migrate features in Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Initial commit for migrated features into Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateThroughPoses tab migrates to edit tab for accumulated poses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateToPose enabled in non-accumulation mode Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Refactored for cpplint and uncrustify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Original NavToPose and NavThroughPoses use BehaviorTree XML input Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Reordered tool tabs: NavigateToPose, NavigateThroughPoses and WP - Following Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Clearing input NavigateToPose and NavigateThroughPoses from tabs once navigation is finished Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor formatting for ament_ccplint and ament_uncrustify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateToPose input is cleared when switching modes, just like NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fused NavigateThroughPoses and WP-Following tabs into once; Both modes share same list of poses for navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed bug so that Add and Remove buttons are disabled while navigating and enabled when not Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * When finishing WP Following navigation, exit accumulation, similarly to what is done as NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor whitespacing fix for ament_cpplint tests Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor correction in buttons and tabs labels for consistency Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed enabling/disabling of add and remove buttons; they are now handled as rest of buttons Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed bug for which Start NavigateToPose button was enabled even during navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> --------- Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> Signed-off-by: Christopher Thompson <cthompson@metalsharkboats.com>
…al sending (ros-navigation#5774) * Created NavigateToPose panel for Rviz Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Created NavigateThroughPoses panel for Rviz Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Formatted files for ament_cpplint and ament_uncristify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Deleted NavigateToPose and NavigateThroughPoses panels to migrate features in Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Initial commit for migrated features into Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateThroughPoses tab migrates to edit tab for accumulated poses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateToPose enabled in non-accumulation mode Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Refactored for cpplint and uncrustify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Original NavToPose and NavThroughPoses use BehaviorTree XML input Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Reordered tool tabs: NavigateToPose, NavigateThroughPoses and WP - Following Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Clearing input NavigateToPose and NavigateThroughPoses from tabs once navigation is finished Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor formatting for ament_ccplint and ament_uncrustify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateToPose input is cleared when switching modes, just like NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fused NavigateThroughPoses and WP-Following tabs into once; Both modes share same list of poses for navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed bug so that Add and Remove buttons are disabled while navigating and enabled when not Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * When finishing WP Following navigation, exit accumulation, similarly to what is done as NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor whitespacing fix for ament_cpplint tests Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor correction in buttons and tabs labels for consistency Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed enabling/disabling of add and remove buttons; they are now handled as rest of buttons Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed bug for which Start NavigateToPose button was enabled even during navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> --------- Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>
…al sending (ros-navigation#5774) * Created NavigateToPose panel for Rviz Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Created NavigateThroughPoses panel for Rviz Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Formatted files for ament_cpplint and ament_uncristify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Deleted NavigateToPose and NavigateThroughPoses panels to migrate features in Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Initial commit for migrated features into Nav2 Panel Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateThroughPoses tab migrates to edit tab for accumulated poses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateToPose enabled in non-accumulation mode Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Refactored for cpplint and uncrustify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Original NavToPose and NavThroughPoses use BehaviorTree XML input Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Reordered tool tabs: NavigateToPose, NavigateThroughPoses and WP - Following Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Clearing input NavigateToPose and NavigateThroughPoses from tabs once navigation is finished Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor formatting for ament_ccplint and ament_uncrustify checks Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * NavigateToPose input is cleared when switching modes, just like NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fused NavigateThroughPoses and WP-Following tabs into once; Both modes share same list of poses for navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed bug so that Add and Remove buttons are disabled while navigating and enabled when not Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * When finishing WP Following navigation, exit accumulation, similarly to what is done as NavigateThroughPoses Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor whitespacing fix for ament_cpplint tests Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Minor correction in buttons and tabs labels for consistency Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed enabling/disabling of add and remove buttons; they are now handled as rest of buttons Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> * Fixed bug for which Start NavigateToPose button was enabled even during navigation Signed-off-by: Pau Reverté <pau.reverte@eurecat.org> --------- Signed-off-by: Pau Reverté <pau.reverte@eurecat.org>




Basic Info
Description of contribution in a few bullet points
Description 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-*.