Skip to content

Conversation

zz990099
Copy link
Contributor

@zz990099 zz990099 commented Mar 19, 2025


Basic Info

Info Please fill out this column
Ticket(s) this addresses #4846
Primary OS tested on Ubuntu
Robotic platform tested on gazebo simulation
Does this PR contain AI generated software? No

Description of contribution in a few bullet points

Description of documentation updates required from your changes

  • A parameter called waypoint_statuses_blackboard_id in NavigateThroughPoses should be added in documentation.
  • I will submit a PR to docs.nav2.org if this PR could been merged.

Description of how this change was tested

  • I test these codes in gazebo simulation with some modifications in nav2_rviz_plugins(which is not included in this PR).
  • Test results validate proper code execution.

Future work that may be required in bullet points

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

@zz990099 zz990099 changed the title [enhancement] Make NavigateThroughPoses navigator report waypoint statuses information. (fix #4846) Make NavigateThroughPoses navigator report waypoint statuses information. (fix #4846) Mar 19, 2025
@zz990099 zz990099 force-pushed the main branch 2 times, most recently from 3d26f30 to f2755f6 Compare March 19, 2025 10:09
Copy link

codecov bot commented Mar 19, 2025

Codecov Report

Attention: Patch coverage is 94.44444% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
nav2_waypoint_follower/src/waypoint_follower.cpp 57.14% 3 Missing ⚠️
Files with missing lines Coverage Δ
...lugins/action/remove_in_collision_goals_action.hpp 100.00% <100.00%> (ø)
...tree/plugins/action/remove_passed_goals_action.hpp 100.00% <100.00%> (ø)
...lugins/action/remove_in_collision_goals_action.cpp 90.47% <100.00%> (+3.37%) ⬆️
...tree/plugins/action/remove_passed_goals_action.cpp 100.00% <100.00%> (ø)
...bt_navigator/navigators/navigate_through_poses.hpp 100.00% <ø> (ø)
...avigator/src/navigators/navigate_through_poses.cpp 87.50% <100.00%> (+2.13%) ⬆️
nav2_util/include/nav2_util/geometry_utils.hpp 95.45% <100.00%> (+0.71%) ⬆️
...clude/nav2_waypoint_follower/waypoint_follower.hpp 100.00% <ø> (ø)
nav2_waypoint_follower/src/waypoint_follower.cpp 82.23% <57.14%> (-0.27%) ⬇️

... and 2 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.

I'm not sure this work for the RemoveInCollision considering it overrides the goals variable with a pruned list rather than maintaining it. When it removes from goals the side of waypoint_statuses and goals no longer match. If this is called repeatedly and different ones are removed, the i that you're setting to SKIPPED would no longer map to the actual waypoint.

I think what we might want to do is actually to update the way that the goal and goals are stored in the blackboard from geometry_msgs/PoseStamped and nav_msgs/Goals (respectively) to being a struct containing those values, the current goal, and the waypoint statuses. Then the BT nodes would modify metadata on these to skip or mark as completed.

This is a bit more complicated than we initially discussed, however! That would also mess with the logic attached to Goal(s)Updated and would need to be based on the goal/goals part of the messages so that the metadata updates don't trigger it.

Edit: Or, perhaps an easier way that might be possible is to find the matching goal's PoseStamped rather than index so even though the indexing is changing the PoseStamped is not. That seems actually alot less effort for the same effect. You'd just want to find the next goal that matches the PoseStamped that is not already skipped/completed. That way looping waypoint sets that have the same location multiple times work properly. You can find the iterator of the first non-completed and non-skipped waypoint, then use https://en.cppreference.com/w/cpp/algorithm/find_first_of to find the next that matches a pose stamped after those skipped waypoints to match which ID it should be long to!


Some food for thought: We also have this https://github.com/ros-navigation/navigation2/blob/f2755f66ba550332aa603485ccba267c8a33236a/nav2_msgs/msg/MissedWaypoint.msg message as well. I'm curious if we can combine this message and the one you made or make a new one that combines the use cases for the waypoint follower and this navigate through poses application!

@zz990099
Copy link
Contributor Author

Thank you for your patient guidance and thorough review! My apologies—I overlooked the possibility of RemoveInCollision being called multiple times in the initial implementation. After carefully reviewing your feedback and revisiting the code, I’d like to discuss a few considerations:

  1. ​Impact of goal/goals Type Refactoring:
    Taking NavigateThroughPoses as an example, changing the type of goals in the blackboard would indeed affect the port implementations of multiple BTAction nodes (ComputePathThroughPoses/GoalUpdated...) and potentially the logic of NavigateToPose.

  2. PoseStamped Matching Approach:
    Your proposed solution—matching indices based on the PoseStamped value of the current goal with find_first_of method—is practical! I will prioritize implementing this and test it thoroughly to ensure indexing stability across repeated RemoveInCollision calls.

  3. ​Combining MissedWaypoint and WaypointStatus:
    Perhaps we could integrate the MissedWaypoint concept into the WaypointStatus message by adding fields like:
    waypoint_status (e.g., MISSED, SKIPPED, ACTIVE, COMPLETED)
    goal_index
    error_code
    error_msg
    goal
    This would allow WaypointFollower to directly use WaypointStatus messages to mark the failed points.

Thank you again for your thoughtful review and suggestions! Please let me know if these directions align with your expectations.

@SteveMacenski
Copy link
Member

No worries, that's what code reviews are for! I didn't realize that was going to be the case either before looking at the code itself 😉

  1. Agreed, I think maybe we should not do this, even though it might be the 'cleanest' solution, due to the massive breaking change it would cause people. Also (2) is not actually that bad of a solution overall. It involves some similar elements of looking over the vector to find the goals, but this one would also impact how the ComputePathThroughPoses looks as the goals parameter which would be problematic for other users with highly customized use-cases of it.

  2. Sounds good! I think having a couple of utility functions to do the lookups would be nice so that they can be reused in both BT nodes and other user custom nodes (and easily unit testable).

  3. Agreed!

@zz990099
Copy link
Contributor Author

Hello @SteveMacenski !,

I’ve implemented most of the changes as discussed, but I’m encountering an edge case issue with how RemovePassedGoals handles empty goals. Currently, RemovePassedGoals skips returning empty goals to avoid triggering exceptions in ComputePathThroughPoses(as per link). However, this prevents the last waypoint's status in waypoint_statuses from being updated properly.

Here are potential fixes I’ve considered:

  1. Allow empty goals in ComputePathThroughPoses: Return success instead of throwing an error. While simple, this might introduce unintended side effects for other modules and test cases.

  2. Add edge-case handling within RemovePassedGoals: This could clutter the existing logic and introduce maintenance overhead.

  3. ​Update goalCompleted in ComputeThroughPoses: Handle the last waypoint’s status here. Though straightforward, this may decentralize the waypoint_statuses management logic.

I’d appreciate your guidance on which approach aligns best with the project’s design goals. Happy to refine any of these paths ​or any suggestions you might have! :)

@SteveMacenski
Copy link
Member

SteveMacenski commented Mar 25, 2025

Add edge-case handling within RemovePassedGoals: This could clutter the existing logic and introduce maintenance overhead.

What do you have in mind?

​Update goalCompleted in ComputeThroughPoses: Handle the last waypoint’s status here. Though straightforward, this may decentralize the waypoint_statuses management logic.

I think this is a pretty good option. In the migration / docs updates we'll do for this PR, lets make sure to highlight where this is managed (Navigator to initialize; goal complete for goal. removed / passed goals for state updates on completion or failure) & that users can add more BT nodes that modify it for their applications at their set blackboard ID. Its very understandable that users might have custom BT nodes that may choose to skip or retry waypoints, so its perfectly fine for others to have this updated for their custom nodes and applications.

This is all probably good to explicitly document regardless. Maybe even thow a note about the unique nature of goal / goals / path IDs as well

@zz990099
Copy link
Contributor Author

zz990099 commented Mar 26, 2025

Add edge-case handling within RemovePassedGoals: This could clutter the existing logic and introduce maintenance overhead.

To prevent empty goals output while ensuring all waypoint statuses are properly recorded, ​perhaps we could modify the code in RemovePassedGoals as follows:

  // get the `waypoint_statuses` vector
  std::string waypoint_statuses_id;
  getInput("waypoint_statuses_id", waypoint_statuses_id);
  std::vector<nav2_msgs::msg::WaypointStatus> waypoint_statuses;
  waypoint_statuses = config().blackboard->get<decltype(waypoint_statuses)>(waypoint_statuses_id);

  double dist_to_goal;
  while (goal_poses.goals.size() > 0) {
    dist_to_goal = euclidean_distance(goal_poses.goals[0].pose, current_pose.pose);

    if (dist_to_goal > viapoint_achieved_radius_) {
      break;
    }

    // mark waypoint statuses before the goal is erased from goals
    auto cur_waypoint_index =
      find_goal_in_waypoint_statuses(waypoint_statuses, goal_poses.goals[0]);
    if (cur_waypoint_index != -1) {
      waypoint_statuses[cur_waypoint_index].waypoint_status =
        nav2_msgs::msg::WaypointStatus::COMPLETED;
    }
    
    // prevent from removing the last goal
    if (goal_poses.goals.size() == 1) break;

    goal_poses.goals.erase(goal_poses.goals.begin());
  }

  setOutput("output_goals", goal_poses);
  // set `waypoint_statuses` output
  config().blackboard->set<decltype(waypoint_statuses)>(waypoint_statuses_id, waypoint_statuses);

This should ensure goals are never empty and consistently track all waypoint statuses.
However, if we need to throw an exception when find_goal_in_waypoint_statuses fails to find a suitable result, additional logic may need to be added to this part.

Update goalCompleted in ComputeThroughPoses: Handle the last waypoint’s status here. Though straightforward, this may decentralize the waypoint_statuses management logic.

While modifying the code, I noticed that this approach ensures the waypoint_statuses in the result meet expectations, ​but it does not update the waypoint_statuses in the feedback, leading to inconsistencies between the two. This mismatch might introduce potential hidden issues in user's application.

@zz990099 zz990099 force-pushed the main branch 5 times, most recently from 7aea0fc to b8f6971 Compare March 26, 2025 12:52
@zz990099
Copy link
Contributor Author

Hi! @SteveMacenski

I've completed the code revisions. Could you please review the changes when you have a moment?

Regarding the WaypointFollower component (currently uncommitted), I'm considering :

  1. Keep returning missed_waypoints in the result via FollowWaypoint.action, or
  2. Align with NavigateThroughPoses by returning a full status collection of all waypoints?

@zz990099 zz990099 force-pushed the main branch 3 times, most recently from 0a8bc48 to 318e04f Compare March 27, 2025 03:51
@zz990099 zz990099 requested a review from SteveMacenski March 27, 2025 05:58
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.

Nice work! A few things to resolve and I think this is close to merge!

@SteveMacenski
Copy link
Member

SteveMacenski commented Mar 27, 2025

However, if we need to throw an exception when find_goal_in_waypoint_statuses fails to find a suitable result, additional logic may need to be added to this part.

If we fail, we should use another one of the callbacks (like the on completion callback) that knows that it failed to populate the remaining waypoints as SKIPPED / MISSED, I think. We catch exceptions and return a BT Status of Failure that you can check and if so, any pending goals should be set to skipped / missed.

This is a subtle point and may be worth some automated and/or manual test coverage to make sure the feedback/returns are properly populated in success, nominal failure conditions (not related to this), and failure conditions related to this.

While modifying the code, I noticed that this approach ensures the waypoint_statuses in the result meet expectations, ​but it does not update the waypoint_statuses in the feedback, leading to inconsistencies between the two. This mismatch might introduce potential hidden issues in user's application.

Can you expand on these?

Keep returning missed_waypoints in the result via FollowWaypoint.action, or Align with NavigateThroughPoses by returning a full status collection of all waypoints?

I think keeping it the same as today would be good. The WaypointStatus is a stand-alone waypoint status that we can use with the NavThroughPoses to describe all, or only populate the few failures that exist. In NavigateThroughPoses, we include all, but I think for WPF's missed_waypoints field, it makes sense to only include the failures

@tonynajjar
Copy link
Contributor

tonynajjar commented Mar 28, 2025

Nice to see this PR and thank you for the good work @zz990099 . I implemented something similar (but not as generic) in my fork, I'll try to find the time (maybe weekend) to go over the differences and give my 2 cents

@zz990099
Copy link
Contributor Author

Thank you so much for your kind words, @tonynajjar ! 🙌 I truly appreciate you taking the time to review this PR and share your perspective. Looking forward to your thoughts whenever it’s convenient for you.

@tonynajjar
Copy link
Contributor

​Impact of goal/goals Type Refactoring:
Taking NavigateThroughPoses as an example, changing the type of goals in the blackboard would indeed affect the port implementations of multiple BTAction nodes (ComputePathThroughPoses/GoalUpdated...) and potentially the logic of NavigateToPose.

This is actually what I went for in my fork; I created a new Waypoint msg that contains a PoseStamped and a status. But yes like mentioned, that's a breaking change and needed to change multiple things. I think on the long-run this would probably be the "cleaner" way but I'm not against, even probably prefer, having a proof of concept that is not breaking, like implemented in this PR.

uint8 PENDING = 0
uint8 VISITED = 1
uint8 SKIPPED = 2
uint8 FAILED = 3

These are the statuses I came up with. We match on PENDING. I have COMPLETED instead of VISITED; I don't have a strong preference or really any argument for or against either.
I have SKIPPED and FAILED which are combined in this PR into MISSED: I think it would be useful to make a differentiation between waypoints we missed "on purpose" (SKIPPED) and those we missed because of some kind of error. E.g. I have RemoveGoalsInCollision mark waypoints as SKIPPED whereas the navigator could mark a waypoint as FAILED if the BT fails or ComputePathThroughPoses could mark it as FAILED if it fails to generate a plan

Otherwise design looks good!

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!

Copy link
Contributor

mergify bot commented Apr 5, 2025

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

@zz990099
Copy link
Contributor Author

zz990099 commented Apr 5, 2025

Hi!

I’ve submitted the PR for the documentation updates. ros-navigation/docs.nav2.org#669

I think our migration guide also needs to mention that NavigateThroughPoses navigator now has this waypoint statuses struct in the feedback/result. Also mention how it is managed and what its role is (notifying users about the status of each goal set in the request)

I’m not entirely clear on where to make these changes. Could you kindly point me to the specific sections of the documentation that need adjustments? Thank you for your guidance!

@zz990099 zz990099 requested a review from SteveMacenski April 6, 2025 13:08
@SteveMacenski SteveMacenski mentioned this pull request Apr 8, 2025
7 tasks
@SteveMacenski
Copy link
Member

SteveMacenski commented Apr 8, 2025

I followed up on that point in the docs PR!

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.

Just a few small changes for the docs PR and happy to merge the pair!

@SteveMacenski SteveMacenski merged commit b815d16 into ros-navigation:main Apr 9, 2025
13 checks passed
@SteveMacenski
Copy link
Member

SteveMacenski commented Apr 9, 2025

Thanks for this! This is a really wonderful new feature! Let me know if you're interested in contributing to another feature!

SteveMacenski added a commit that referenced this pull request Apr 28, 2025
* Pre-Commit (#4915)

* Add pre-commit

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Add codespell workflow

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Codespell write_changes=false. As otherwise CI does not fail.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Configure isort

Signed-off-by: Nils-ChristianIseke <[email protected]>

* add precommit

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Introducing some issues.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Revert "Introducing some issues."

This reverts commit 5377b65.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Removing pre-commit workflow.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Fix formatting error

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Merge remote-tracking branch 'origin/main' into precommit

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Change v31 to v32

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Revert "Merge remote-tracking branch 'origin/main' into precommit"

This reverts commit 8a7ca39.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Rm submodule

Signed-off-by: Nils-ChristianIseke <[email protected]>

* pre-commit run --all after merge

Signed-off-by: Nils-ChristianIseke <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Fix path comparison to avoid unnecessary updates (#5009)

Signed-off-by: Tatsuro Sakaguchi <[email protected]>

* nav2_rviz_plugins: Don't use non-existent slot (#5016)

The definition of the slot was removed in commit
e6f500e ("nav2_rviz_plugins: Remove slots without
implementation (#4974)", 2025-03-10), because it had no
implementation. But we forgot to remove the reference to this slot,
because the compiler cannot detect it.

We remove the reference now. Without this, rviz shows warnings like:

    QObject::connect: No such slot nav2_rviz_plugins::CostmapCostTool::updateAutoDeactivate()
    QObject::connect:  (sender name:   'Single click')

Signed-off-by: Michal Sojka <[email protected]>

* * Parametrize collision checking in nav2_graceful_controller (#5006)

* * Parametrize collision checking in nav2_graceful_controller

Signed-off-by: suchetanrs <[email protected]>

* * Fix linting errors

Signed-off-by: suchetanrs <[email protected]>

* * Address PR comments
* Add parameter to dynamic reconfigure

Signed-off-by: suchetanrs <[email protected]>

* * Add test for the use_collision_detection parameter

Signed-off-by: suchetanrs <[email protected]>

---------

Signed-off-by: suchetanrs <[email protected]>

* Update smac planner types (#4927)

* Update smac planner types

Signed-off-by: Michael Carlstrom <[email protected]>

* Test ament_mypy

Signed-off-by: Michael Carlstrom <[email protected]>

* Add packages

Signed-off-by: Michael Carlstrom <[email protected]>

* Fix arg name

Signed-off-by: Michael Carlstrom <[email protected]>

* Add **

Signed-off-by: Michael Carlstrom <[email protected]>

* Specific package

Signed-off-by: Michael Carlstrom <[email protected]>

* re-run ci

Signed-off-by: Michael Carlstrom <[email protected]>

* re-run ci

Signed-off-by: Michael Carlstrom <[email protected]>

---------

Signed-off-by: Michael Carlstrom <[email protected]>

* Declare_parameter_if_not_declared in docking navigator (#5023)

Signed-off-by: Alberto Tudela <[email protected]>

* Fix naming of launch file

Signed-off-by: Steve Macenski <[email protected]>

* Fixed naming conventions of launch file

Signed-off-by: Steve Macenski <[email protected]>

* navfn : fix performance issue (#4945)

Signed-off-by: Yancey <[email protected]>

* Configured mypy strict for nav2_smac_planner (#5022)

* Configured mypy strict on nav2_smac_planner.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Modify workflow to contain mypy configuration.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added dependency for type support

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Mypy nav2 common (#5031)

* Configured mypy for nav2_common

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_common to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Removed all instances of Any.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Fixed unsafe fixes using ruff.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Clear costmap if reset distance exceeds costmap bounds. (#5010)

* Migrate costmap bound check to clearArea for STVL override

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added unbounded map to world function.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added test for mapToWorldNoBounds

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Add near collision cost and warnings for misaligned parameter settings in MPPI critics (#4996)

* Add warning when settings not aligned; Add tunable option for near collision

Signed-off-by: mini-1235 <[email protected]>

* Linting

Signed-off-by: mini-1235 <[email protected]>

* Add more information for warning

Signed-off-by: mini-1235 <[email protected]>

* Add test for coverage

Signed-off-by: mini-1235 <[email protected]>

* Throw controller exception instead of invalid argument

Signed-off-by: mini-1235 <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>

* Added pre-commit with ament ignores to the workflow. (#5029)

* Added pre-commit with ament ignores to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Removed codespell from workflow and enabled write changes in pre-commit.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Update pull request template with a testing description section.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* feat(nav2_rotation_shim_controller): add use_path_orientations (#5034)

* feat(nav2_rotation_shim_controller): add use_path_orientations

Signed-off-by: Kemal Bektas <[email protected]>

* Update nav2_rotation_shim_controller/src/nav2_rotation_shim_controller.cpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Mypy nav2 bringup (#5040)

* Configured nav2_bringup to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_bringup to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Add service introspection (#4955)

* Add service introspection for client and server side, more tests to go

Signed-off-by: mini-1235 <[email protected]>

* Add test for service server, fix repeat declaration

Signed-off-by: mini-1235 <[email protected]>

* Fix cpplint

Signed-off-by: mini-1235 <[email protected]>

* Add test for coverage

Signed-off-by: mini-1235 <[email protected]>

* Declare and set the parameter in service client and server class

Signed-off-by: mini-1235 <[email protected]>

* Add typedef; Fix costmap cost tool and bt service

Signed-off-by: mini-1235 <[email protected]>

* Rebase; Add tests for coverage

Signed-off-by: mini-1235 <[email protected]>

* Fix costmap cost tool; Typedef

Signed-off-by: mini-1235 <[email protected]>

* Cleanup

Signed-off-by: mini-1235 <[email protected]>

* Add spin thread

Signed-off-by: mini-1235 <[email protected]>

* Add spin

Signed-off-by: mini-1235 <[email protected]>

* Change spin thread to internal executor

Signed-off-by: mini-1235 <[email protected]>

* Use rclcpp spin when no internal executor

Signed-off-by: mini-1235 <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Refactor

Signed-off-by: mini-1235 <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Mypy nav2_collision_monitor (#5043)

* Configured nav2_collision_monitor to use mypy strict.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_collision_monitor to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Mypy nav2 costmap 2d (#5044)

* Configured mypy to run on the costmap_2d package.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added mypy_nav2_costmap_2d to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Halt recovery action when main action succeeds to reset status (#5027)

* Halt recovery action when main action succeeds to reset status

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_behavior_tree/plugins/control/recovery_node.cpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* Mypy opennav_docking (#5047)

* Define attributes for nav2_msgs.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Configured opennav_docking to use strict mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added opennav_docking to the mypy linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Remove unused code in BT utils (#5048)

* Clean set port

Signed-off-by: Alberto Tudela <[email protected]>

* Remove set

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Mypy nav2 lifecycle manager (#5051)

* Configured nav2_lifecycle_manager to be compatible with mypy

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_lifecycle_manager to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* fix initializing in drive on heading action node (#5053)

Signed-off-by: Johannes Plapp <[email protected]>

* Mypy nav2 loopback sim (#5052)

* Configured nav2_loopback_sim to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_loopback_sim to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Separated packages from list for mypy workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Fix mppi bidirectional settings (#4954)

* Add constraint; fix settings

Signed-off-by: mini-1235 <[email protected]>

* Add lower and upper bound

Signed-off-by: mini-1235 <[email protected]>

* Update tests

Signed-off-by: mini-1235 <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Mypy nav2 map server (#5058)

* Configured nav2_map_server to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_map_server to the mypy workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Publishing a full time-series MPPI trajectory if desirable (#5057)

* Publishing a full MPPI trajectory if desirable

Signed-off-by: Steve Macenski <[email protected]>

* only create publisher when needed

Signed-off-by: Steve Macenski <[email protected]>

* adjust topics

Signed-off-by: Steve Macenski <[email protected]>

* Moving for lint

Signed-off-by: Steve Macenski <[email protected]>

* updating topics in tests

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* Add double spin_some in some BT nodes (#5055)

* Add a double spin

Signed-off-by: Alberto Tudela <[email protected]>

* Add comment

Signed-off-by: Alberto Tudela <[email protected]>

* Move spin to constructor

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Remove duplicate test (#5062)

There remained a duplicate test of test_system_launch after Groot
monitoring was removed

Signed-off-by: Rasmus Larsson <[email protected]>

* Remove docking absolute topic namespaces (#5068)

Signed-off-by: Steve Macenski <[email protected]>

* Mypy nav2 simple commander (#5059)

* Added most nav2_simple_commander files that can be trivially converted to be mypy compatible.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Modified edge cases and types for robot_navigator to pass mypy checks.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_simple_commander to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added logs and ignored type errors due to spins w/o timeout.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Make NavigateThroughPoses navigator report waypoint statuses information. (fix #4846) (#4994)

* Add WaypointStatus message type & Remove MissedWaypoint message type

Signed-off-by: zz990099 <[email protected]>

* Add waypoint_statuses records in RemoveInCollisionGoals/RemovePassedGoals actions

Signed-off-by: zz990099 <[email protected]>

* Add validation tests

Signed-off-by: zz990099 <[email protected]>

* Make NavigateThroughPoses navigator report waypoint statuses information

Signed-off-by: zz990099 <[email protected]>

* Make WaypointFollower use WaypointStatus message type in action result

Signed-off-by: zz990099 <[email protected]>

* Split MISSED status into SKIPPED & FAILED

Signed-off-by: zz990099 <[email protected]>

* fix edge case handle in RemoveInCollision/RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Add validation test cases for RemoveInCollision&RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Update RemovePassedGoals/RemoveInCollisionGoals node in Groot XML

Signed-off-by: zz990099 <[email protected]>

---------

Signed-off-by: zz990099 <[email protected]>

* Enable Groot2 monitoring (#5065)

* Revert removing live groot monitoring from Nav2 (#2696)

Signed-off-by: Alberto Tudela <[email protected]>

* Update to Groot2

Signed-off-by: Alberto Tudela <[email protected]>

* Added JSON conversions

Signed-off-by: Alberto Tudela <[email protected]>

* Fix rebase

Signed-off-by: Alberto Tudela <[email protected]>

* Update to nav_msgs::Goals

Signed-off-by: Alberto Tudela <[email protected]>

* Added nav_msgs to json utils

Signed-off-by: Alberto Tudela <[email protected]>

* Add register to types

Signed-off-by: Alberto Tudela <[email protected]>

* Fix null-dereference

Signed-off-by: Alberto Tudela <[email protected]>

* Added Json test

Signed-off-by: Alberto Tudela <[email protected]>

* Fix some tests

Signed-off-by: Alberto Tudela <[email protected]>

* Fix flake

Signed-off-by: Alberto Tudela <[email protected]>

* Update package dependency

Signed-off-by: Alberto Tudela <[email protected]>

* Minor fixes

Signed-off-by: Alberto Tudela <[email protected]>

* Fix test

Signed-off-by: Alberto Tudela <[email protected]>

* Rename groot_publisher_port parameter to groot_server_port

Signed-off-by: Alberto Tudela <[email protected]>

* Minor  fix in tst

Signed-off-by: Alberto Tudela <[email protected]>

* Added JSON for waypoint_status

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Fix incorrect world <-> map coordinates conversions (#5049)

* Fix incorrect world <-> map coordinates conversions

The conversion between world and map continuous (!) coordinates do not
require a +/-0.5. This offset is only required when converting discrete
map cell indexes to the coordinates of its center.

Signed-off-by: Dylan De Coeyer <[email protected]>

* nav2_smac_planner: fix smoother test when path is in collision

The added pose was indeed invalid, but the it was ignored by the
smoother, since considered as a cusp.

Instead, let's make the end of the plan invalid as it won't be ignored.
Also, let's duplicate the last pose to make the orientation estimation
fail, rather than adding a new arbitrary pose.

Signed-off-by: Dylan De Coeyer <[email protected]>

---------

Signed-off-by: Dylan De Coeyer <[email protected]>

* [AMCL] 50% initialisation (and reset) speed improvement  (#4941)

* index lookup and comparator optimisation

Signed-off-by: Guillaume Doisy <[email protected]>

* lint

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* Add note to Asynchronous nodes (#5035)

* Add warning to some of the nodes

Signed-off-by: Adi Vardi <[email protected]>

* remove unused includes

Signed-off-by: Adi Vardi <[email protected]>

* Add warning to remaining nodes using isStatusActive to initialize

Signed-off-by: Adi Vardi <[email protected]>

* Change to note & update phrsing

Signed-off-by: Adi Vardi <[email protected]>

* replace reset by re-initialize

Signed-off-by: Adi Vardi <[email protected]>

---------

Signed-off-by: Adi Vardi <[email protected]>

* [AMCL] Rebuild cspace map only when needed (#5076)

* for LikelihoodFieldModel

Signed-off-by: Guillaume Doisy <[email protected]>

* for LikelihoodFieldModelProb

Signed-off-by: Guillaume Doisy <[email protected]>

* typo

Signed-off-by: Guillaume Doisy <[email protected]>

* init max_occ_dist in map.c and remove unnecessary condition

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* Consistency in Groot 2 (#5078)

Signed-off-by: Alberto Tudela <[email protected]>

* Remove duplicate code (#5080)

* Remove duplicate code

Signed-off-by: mini-1235 <[email protected]>

* Add twist validation for controller server

Signed-off-by: mini-1235 <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>

* Added waypointstatus to bt_utils (#5077)

Signed-off-by: Alberto Tudela <[email protected]>

* Lock costmap in getCostsCallback (#5075)

* Add IsStoppedBTNode

Signed-off-by: Tony Najjar <[email protected]>

* add topic name + reformat

Signed-off-by: Tony Najjar <[email protected]>

* fix comment

Signed-off-by: Tony Najjar <[email protected]>

* fix abs

Signed-off-by: Tony Najjar <[email protected]>

* remove log

Signed-off-by: Tony Najjar <[email protected]>

* add getter functions for raw twist

Signed-off-by: Tony Najjar <[email protected]>

* remove unused code

Signed-off-by: Tony Najjar <[email protected]>

* use odomsmoother

Signed-off-by: Tony Najjar <[email protected]>

* fix formatting

Signed-off-by: Tony Najjar <[email protected]>

* update groot

Signed-off-by: Tony Najjar <[email protected]>

* Add test

Signed-off-by: Tony Najjar <[email protected]>

* reset at success

Signed-off-by: Tony Najjar <[email protected]>

* FIX velocity_threshold_

Signed-off-by: Tony Najjar <[email protected]>

* Fix stopped Node

Signed-off-by: Tony Najjar <[email protected]>

* Add tests  to odometry_utils

Signed-off-by: Tony Najjar <[email protected]>

* fix linting

Signed-off-by: Tony Najjar <[email protected]>

* lock costmap

Signed-off-by: Tony Najjar <[email protected]>

* improvement

Signed-off-by: Tony Najjar <[email protected]>

* remove spacing

Signed-off-by: Tony Najjar <[email protected]>

* remove unlock

Signed-off-by: Tony Najjar <[email protected]>

---------

Signed-off-by: Tony Najjar <[email protected]>

* Mypy nav2 system tests (#5083)

* Configured nodes of nav2_system_tests to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Configured launch files of nav2_system_tests to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_system_tests to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Configure the entire nav2 stack with mypy (#5084)

* Configured tools to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added mypy as a pre-commit hook.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Simplified workflow by including all packages with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Dynamic param patterns (#4971)

* redesign dynamic param patterns

Signed-off-by: Nils-ChristianIseke <[email protected]>

* change cache version

Signed-off-by: Nils-ChristianIseke <[email protected]>

* check that parameter of type double are  >=0.0

Signed-off-by: Nils-ChristianIseke <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>

* [nav2_behavior_tree] Add force_use_current_pose to ComputePathToPoseAction (#4925)

* Add force_use_current_pose

Signed-off-by: Guillaume Doisy <[email protected]>

* xml update

Signed-off-by: Guillaume Doisy <[email protected]>

* rename to use_start

Signed-off-by: Guillaume Doisy <[email protected]>

* lint

Signed-off-by: Guillaume Doisy <[email protected]>

* descriptions

Signed-off-by: Guillaume Doisy <[email protected]>

* simplify logic

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* [CostmapTopicCollisionChecker] Alternative constructor with footprint string (#4926)

* [CostmapTopicCollisionChecker] Alternative constructor with footprint

Signed-off-by: Guillaume Doisy <[email protected]>

* raw pointer

Signed-off-by: Guillaume Doisy <[email protected]>

* suggestions from review

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* Merged Fix navfn_planner from humble PR #5087 (#5092)

* merged changes from humble for goal.header fix

* reverted back, error in merge

* ported goal.header fix in navfn_planner.cpp from humble

* reverted to navfn_planner.cpp to origin/main

* merged navfn_planner.cpp from humble

* fixed the merge

* Docking backwards as plugin param (#5079)

* Replace dock_backwards_ param with dock plugin function

Signed-off-by: Alberto Tudela <[email protected]>

* Deprecated dock_backwards warning

Signed-off-by: Alberto Tudela <[email protected]>

* Convert dockDirection from bool to enum

Signed-off-by: Alberto Tudela <[email protected]>

* Minor fixes

Signed-off-by: Alberto Tudela <[email protected]>

* Improve deprecated param handling

Signed-off-by: Alberto Tudela <[email protected]>

* Set default to forward

Signed-off-by: Alberto Tudela <[email protected]>

* Added tests

Signed-off-by: Alberto Tudela <[email protected]>

* Update nav2_docking/README.md

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Alberto Tudela <[email protected]>

* Upper and others

Signed-off-by: Alberto Tudela <[email protected]>

* Revert declare_parameters_from_overrides

Signed-off-by: Alberto Tudela <[email protected]>

* Added throw on configure plugin

Signed-off-by: Alberto Tudela <[email protected]>

* Remove node_utils

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Update map_io library to use Eigen method for faster map loading (#5071)

* Update map_io library to use opencv method for faster map loading

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit config changes

Signed-off-by: Vignesh T <[email protected]>

* Use Eigen approach instead of OpenCV

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit changes

Signed-off-by: Vignesh T <[email protected]>

* Update include header include order

Signed-off-by: Vignesh T <[email protected]>

* Remove intermediary alpha matrix

Signed-off-by: Vignesh T <[email protected]>

* Add comments for the code understanding

Signed-off-by: Vignesh T <[email protected]>

* Fix else braces rule issue

Signed-off-by: Vignesh T <[email protected]>

* Create and use alpha_matrix when applying mask

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit changes

Signed-off-by: Vignesh T <[email protected]>

* Take flip part out of if-else

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit changes

Signed-off-by: Vignesh T <[email protected]>

---------

Signed-off-by: Vignesh T <[email protected]>

* Fix CI builds (#5104)

Signed-off-by: Steve Macenski <[email protected]>

* Increase docking coverage && fix backward docking (#5097)

* Add dock_database tests

Signed-off-by: Alberto Tudela <[email protected]>

* Add utils test

Signed-off-by: Alberto Tudela <[email protected]>

* Improve filter tests

Signed-off-by: Alberto Tudela <[email protected]>

* Added simple charging tests

Signed-off-by: Alberto Tudela <[email protected]>

* Improve comments

Signed-off-by: Alberto Tudela <[email protected]>

* Fix backward and redo main test

Signed-off-by: Alberto Tudela <[email protected]>

* Change test period to reduce test time

Signed-off-by: Alberto Tudela <[email protected]>

* Revert "Change test period to reduce test time"

This reverts commit ef1555e.

Signed-off-by: Alberto Tudela <[email protected]>

* Delete print pose

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Run ament_uncrustify to remove linting issues

Signed-off-by: coderwyvern <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>
Signed-off-by: Tatsuro Sakaguchi <[email protected]>
Signed-off-by: Michal Sojka <[email protected]>
Signed-off-by: suchetanrs <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>
Signed-off-by: Alberto Tudela <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Yancey <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Johannes Plapp <[email protected]>
Signed-off-by: Rasmus Larsson <[email protected]>
Signed-off-by: zz990099 <[email protected]>
Signed-off-by: Dylan De Coeyer <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Adi Vardi <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: Vignesh T <[email protected]>
Signed-off-by: coderwyvern <[email protected]>
Co-authored-by: Nils-Christian Iseke <[email protected]>
Co-authored-by: Tatsuro Sakaguchi <[email protected]>
Co-authored-by: Michal Sojka <[email protected]>
Co-authored-by: suchetanrs <[email protected]>
Co-authored-by: Michael Carlstrom <[email protected]>
Co-authored-by: Alberto Tudela <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: Yancey <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: mini-1235 <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Johannes Plapp <[email protected]>
Co-authored-by: RasmusLar <[email protected]>
Co-authored-by: zz99 <[email protected]>
Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Adi Vardi <[email protected]>
Co-authored-by: Tony Najjar <[email protected]>
Co-authored-by: Sandeep Dutta <[email protected]>
Co-authored-by: Vignesh T <[email protected]>
stevedanomodolor pushed a commit to stevedanomodolor/navigation2 that referenced this pull request Apr 29, 2025
…ion. (fix ros-navigation#4846) (ros-navigation#4994)

* Add WaypointStatus message type & Remove MissedWaypoint message type

Signed-off-by: zz990099 <[email protected]>

* Add waypoint_statuses records in RemoveInCollisionGoals/RemovePassedGoals actions

Signed-off-by: zz990099 <[email protected]>

* Add validation tests

Signed-off-by: zz990099 <[email protected]>

* Make NavigateThroughPoses navigator report waypoint statuses information

Signed-off-by: zz990099 <[email protected]>

* Make WaypointFollower use WaypointStatus message type in action result

Signed-off-by: zz990099 <[email protected]>

* Split MISSED status into SKIPPED & FAILED

Signed-off-by: zz990099 <[email protected]>

* fix edge case handle in RemoveInCollision/RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Add validation test cases for RemoveInCollision&RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Update RemovePassedGoals/RemoveInCollisionGoals node in Groot XML

Signed-off-by: zz990099 <[email protected]>

---------

Signed-off-by: zz990099 <[email protected]>
Signed-off-by: stevedanomodolor <[email protected]>
SteveMacenski added a commit that referenced this pull request May 13, 2025
* Pre-Commit (#4915)

* Add pre-commit

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Add codespell workflow

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Codespell write_changes=false. As otherwise CI does not fail.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Configure isort

Signed-off-by: Nils-ChristianIseke <[email protected]>

* add precommit

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Introducing some issues.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Revert "Introducing some issues."

This reverts commit 5377b656361ef220dce6d6af36013060798f06de.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Removing pre-commit workflow.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Fix formatting error

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Merge remote-tracking branch 'origin/main' into precommit

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Change v31 to v32

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Revert "Merge remote-tracking branch 'origin/main' into precommit"

This reverts commit 8a7ca3983a0b93ef5a94e9517e9598de96be2fe6.

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Rm submodule

Signed-off-by: Nils-ChristianIseke <[email protected]>

* pre-commit run --all after merge

Signed-off-by: Nils-ChristianIseke <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>

* Fix path comparison to avoid unnecessary updates (#5009)

Signed-off-by: Tatsuro Sakaguchi <[email protected]>

* nav2_rviz_plugins: Don't use non-existent slot (#5016)

The definition of the slot was removed in commit
e6f500e5 ("nav2_rviz_plugins: Remove slots without
implementation (#4974)", 2025-03-10), because it had no
implementation. But we forgot to remove the reference to this slot,
because the compiler cannot detect it.

We remove the reference now. Without this, rviz shows warnings like:

    QObject::connect: No such slot nav2_rviz_plugins::CostmapCostTool::updateAutoDeactivate()
    QObject::connect:  (sender name:   'Single click')

Signed-off-by: Michal Sojka <[email protected]>

* * Parametrize collision checking in nav2_graceful_controller (#5006)

* * Parametrize collision checking in nav2_graceful_controller

Signed-off-by: suchetanrs <[email protected]>

* * Fix linting errors

Signed-off-by: suchetanrs <[email protected]>

* * Address PR comments
* Add parameter to dynamic reconfigure

Signed-off-by: suchetanrs <[email protected]>

* * Add test for the use_collision_detection parameter

Signed-off-by: suchetanrs <[email protected]>

---------

Signed-off-by: suchetanrs <[email protected]>

* Update smac planner types (#4927)

* Update smac planner types

Signed-off-by: Michael Carlstrom <[email protected]>

* Test ament_mypy

Signed-off-by: Michael Carlstrom <[email protected]>

* Add packages

Signed-off-by: Michael Carlstrom <[email protected]>

* Fix arg name

Signed-off-by: Michael Carlstrom <[email protected]>

* Add **

Signed-off-by: Michael Carlstrom <[email protected]>

* Specific package

Signed-off-by: Michael Carlstrom <[email protected]>

* re-run ci

Signed-off-by: Michael Carlstrom <[email protected]>

* re-run ci

Signed-off-by: Michael Carlstrom <[email protected]>

---------

Signed-off-by: Michael Carlstrom <[email protected]>

* Declare_parameter_if_not_declared in docking navigator (#5023)

Signed-off-by: Alberto Tudela <[email protected]>

* Fix naming of launch file

Signed-off-by: Steve Macenski <[email protected]>

* Fixed naming conventions of launch file

Signed-off-by: Steve Macenski <[email protected]>

* navfn : fix performance issue (#4945)

Signed-off-by: Yancey <[email protected]>

* Configured mypy strict for nav2_smac_planner (#5022)

* Configured mypy strict on nav2_smac_planner.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Modify workflow to contain mypy configuration.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added dependency for type support

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Mypy nav2 common (#5031)

* Configured mypy for nav2_common

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_common to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Removed all instances of Any.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Fixed unsafe fixes using ruff.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Clear costmap if reset distance exceeds costmap bounds. (#5010)

* Migrate costmap bound check to clearArea for STVL override

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added unbounded map to world function.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added test for mapToWorldNoBounds

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Add near collision cost and warnings for misaligned parameter settings in MPPI critics (#4996)

* Add warning when settings not aligned; Add tunable option for near collision

Signed-off-by: mini-1235 <[email protected]>

* Linting

Signed-off-by: mini-1235 <[email protected]>

* Add more information for warning

Signed-off-by: mini-1235 <[email protected]>

* Add test for coverage

Signed-off-by: mini-1235 <[email protected]>

* Throw controller exception instead of invalid argument

Signed-off-by: mini-1235 <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>

* Added pre-commit with ament ignores to the workflow. (#5029)

* Added pre-commit with ament ignores to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Removed codespell from workflow and enabled write changes in pre-commit.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Update pull request template with a testing description section.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* feat(nav2_rotation_shim_controller): add use_path_orientations (#5034)

* feat(nav2_rotation_shim_controller): add use_path_orientations

Signed-off-by: Kemal Bektas <[email protected]>

* Update nav2_rotation_shim_controller/src/nav2_rotation_shim_controller.cpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Mypy nav2 bringup (#5040)

* Configured nav2_bringup to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_bringup to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Add service introspection (#4955)

* Add service introspection for client and server side, more tests to go

Signed-off-by: mini-1235 <[email protected]>

* Add test for service server, fix repeat declaration

Signed-off-by: mini-1235 <[email protected]>

* Fix cpplint

Signed-off-by: mini-1235 <[email protected]>

* Add test for coverage

Signed-off-by: mini-1235 <[email protected]>

* Declare and set the parameter in service client and server class

Signed-off-by: mini-1235 <[email protected]>

* Add typedef; Fix costmap cost tool and bt service

Signed-off-by: mini-1235 <[email protected]>

* Rebase; Add tests for coverage

Signed-off-by: mini-1235 <[email protected]>

* Fix costmap cost tool; Typedef

Signed-off-by: mini-1235 <[email protected]>

* Cleanup

Signed-off-by: mini-1235 <[email protected]>

* Add spin thread

Signed-off-by: mini-1235 <[email protected]>

* Add spin

Signed-off-by: mini-1235 <[email protected]>

* Change spin thread to internal executor

Signed-off-by: mini-1235 <[email protected]>

* Use rclcpp spin when no internal executor

Signed-off-by: mini-1235 <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Refactor

Signed-off-by: mini-1235 <[email protected]>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Mypy nav2_collision_monitor (#5043)

* Configured nav2_collision_monitor to use mypy strict.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_collision_monitor to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Mypy nav2 costmap 2d (#5044)

* Configured mypy to run on the costmap_2d package.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added mypy_nav2_costmap_2d to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Halt recovery action when main action succeeds to reset status (#5027)

* Halt recovery action when main action succeeds to reset status

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_behavior_tree/plugins/control/recovery_node.cpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* Mypy opennav_docking (#5047)

* Define attributes for nav2_msgs.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Configured opennav_docking to use strict mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added opennav_docking to the mypy linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Remove unused code in BT utils (#5048)

* Clean set port

Signed-off-by: Alberto Tudela <[email protected]>

* Remove set

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Mypy nav2 lifecycle manager (#5051)

* Configured nav2_lifecycle_manager to be compatible with mypy

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_lifecycle_manager to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* fix initializing in drive on heading action node (#5053)

Signed-off-by: Johannes Plapp <[email protected]>

* Mypy nav2 loopback sim (#5052)

* Configured nav2_loopback_sim to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_loopback_sim to the workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Separated packages from list for mypy workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Fix mppi bidirectional settings (#4954)

* Add constraint; fix settings

Signed-off-by: mini-1235 <[email protected]>

* Add lower and upper bound

Signed-off-by: mini-1235 <[email protected]>

* Update tests

Signed-off-by: mini-1235 <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Mypy nav2 map server (#5058)

* Configured nav2_map_server to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_map_server to the mypy workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Publishing a full time-series MPPI trajectory if desirable (#5057)

* Publishing a full MPPI trajectory if desirable

Signed-off-by: Steve Macenski <[email protected]>

* only create publisher when needed

Signed-off-by: Steve Macenski <[email protected]>

* adjust topics

Signed-off-by: Steve Macenski <[email protected]>

* Moving for lint

Signed-off-by: Steve Macenski <[email protected]>

* updating topics in tests

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* Add double spin_some in some BT nodes (#5055)

* Add a double spin

Signed-off-by: Alberto Tudela <[email protected]>

* Add comment

Signed-off-by: Alberto Tudela <[email protected]>

* Move spin to constructor

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Remove duplicate test (#5062)

There remained a duplicate test of test_system_launch after Groot
monitoring was removed

Signed-off-by: Rasmus Larsson <[email protected]>

* Remove docking absolute topic namespaces (#5068)

Signed-off-by: Steve Macenski <[email protected]>

* Mypy nav2 simple commander (#5059)

* Added most nav2_simple_commander files that can be trivially converted to be mypy compatible.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Modified edge cases and types for robot_navigator to pass mypy checks.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_simple_commander to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added logs and ignored type errors due to spins w/o timeout.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Make NavigateThroughPoses navigator report waypoint statuses information. (fix #4846) (#4994)

* Add WaypointStatus message type & Remove MissedWaypoint message type

Signed-off-by: zz990099 <[email protected]>

* Add waypoint_statuses records in RemoveInCollisionGoals/RemovePassedGoals actions

Signed-off-by: zz990099 <[email protected]>

* Add validation tests

Signed-off-by: zz990099 <[email protected]>

* Make NavigateThroughPoses navigator report waypoint statuses information

Signed-off-by: zz990099 <[email protected]>

* Make WaypointFollower use WaypointStatus message type in action result

Signed-off-by: zz990099 <[email protected]>

* Split MISSED status into SKIPPED & FAILED

Signed-off-by: zz990099 <[email protected]>

* fix edge case handle in RemoveInCollision/RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Add validation test cases for RemoveInCollision&RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Update RemovePassedGoals/RemoveInCollisionGoals node in Groot XML

Signed-off-by: zz990099 <[email protected]>

---------

Signed-off-by: zz990099 <[email protected]>

* Enable Groot2 monitoring (#5065)

* Revert removing live groot monitoring from Nav2 (#2696)

Signed-off-by: Alberto Tudela <[email protected]>

* Update to Groot2

Signed-off-by: Alberto Tudela <[email protected]>

* Added JSON conversions

Signed-off-by: Alberto Tudela <[email protected]>

* Fix rebase

Signed-off-by: Alberto Tudela <[email protected]>

* Update to nav_msgs::Goals

Signed-off-by: Alberto Tudela <[email protected]>

* Added nav_msgs to json utils

Signed-off-by: Alberto Tudela <[email protected]>

* Add register to types

Signed-off-by: Alberto Tudela <[email protected]>

* Fix null-dereference

Signed-off-by: Alberto Tudela <[email protected]>

* Added Json test

Signed-off-by: Alberto Tudela <[email protected]>

* Fix some tests

Signed-off-by: Alberto Tudela <[email protected]>

* Fix flake

Signed-off-by: Alberto Tudela <[email protected]>

* Update package dependency

Signed-off-by: Alberto Tudela <[email protected]>

* Minor fixes

Signed-off-by: Alberto Tudela <[email protected]>

* Fix test

Signed-off-by: Alberto Tudela <[email protected]>

* Rename groot_publisher_port parameter to groot_server_port

Signed-off-by: Alberto Tudela <[email protected]>

* Minor  fix in tst

Signed-off-by: Alberto Tudela <[email protected]>

* Added JSON for waypoint_status

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Fix incorrect world <-> map coordinates conversions (#5049)

* Fix incorrect world <-> map coordinates conversions

The conversion between world and map continuous (!) coordinates do not
require a +/-0.5. This offset is only required when converting discrete
map cell indexes to the coordinates of its center.

Signed-off-by: Dylan De Coeyer <[email protected]>

* nav2_smac_planner: fix smoother test when path is in collision

The added pose was indeed invalid, but the it was ignored by the
smoother, since considered as a cusp.

Instead, let's make the end of the plan invalid as it won't be ignored.
Also, let's duplicate the last pose to make the orientation estimation
fail, rather than adding a new arbitrary pose.

Signed-off-by: Dylan De Coeyer <[email protected]>

---------

Signed-off-by: Dylan De Coeyer <[email protected]>

* [AMCL] 50% initialisation (and reset) speed improvement  (#4941)

* index lookup and comparator optimisation

Signed-off-by: Guillaume Doisy <[email protected]>

* lint

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* Add note to Asynchronous nodes (#5035)

* Add warning to some of the nodes

Signed-off-by: Adi Vardi <[email protected]>

* remove unused includes

Signed-off-by: Adi Vardi <[email protected]>

* Add warning to remaining nodes using isStatusActive to initialize

Signed-off-by: Adi Vardi <[email protected]>

* Change to note & update phrsing

Signed-off-by: Adi Vardi <[email protected]>

* replace reset by re-initialize

Signed-off-by: Adi Vardi <[email protected]>

---------

Signed-off-by: Adi Vardi <[email protected]>

* [AMCL] Rebuild cspace map only when needed (#5076)

* for LikelihoodFieldModel

Signed-off-by: Guillaume Doisy <[email protected]>

* for LikelihoodFieldModelProb

Signed-off-by: Guillaume Doisy <[email protected]>

* typo

Signed-off-by: Guillaume Doisy <[email protected]>

* init max_occ_dist in map.c and remove unnecessary condition

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* Consistency in Groot 2 (#5078)

Signed-off-by: Alberto Tudela <[email protected]>

* Remove duplicate code (#5080)

* Remove duplicate code

Signed-off-by: mini-1235 <[email protected]>

* Add twist validation for controller server

Signed-off-by: mini-1235 <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>

* Added waypointstatus to bt_utils (#5077)

Signed-off-by: Alberto Tudela <[email protected]>

* Lock costmap in getCostsCallback (#5075)

* Add IsStoppedBTNode

Signed-off-by: Tony Najjar <[email protected]>

* add topic name + reformat

Signed-off-by: Tony Najjar <[email protected]>

* fix comment

Signed-off-by: Tony Najjar <[email protected]>

* fix abs

Signed-off-by: Tony Najjar <[email protected]>

* remove log

Signed-off-by: Tony Najjar <[email protected]>

* add getter functions for raw twist

Signed-off-by: Tony Najjar <[email protected]>

* remove unused code

Signed-off-by: Tony Najjar <[email protected]>

* use odomsmoother

Signed-off-by: Tony Najjar <[email protected]>

* fix formatting

Signed-off-by: Tony Najjar <[email protected]>

* update groot

Signed-off-by: Tony Najjar <[email protected]>

* Add test

Signed-off-by: Tony Najjar <[email protected]>

* reset at success

Signed-off-by: Tony Najjar <[email protected]>

* FIX velocity_threshold_

Signed-off-by: Tony Najjar <[email protected]>

* Fix stopped Node

Signed-off-by: Tony Najjar <[email protected]>

* Add tests  to odometry_utils

Signed-off-by: Tony Najjar <[email protected]>

* fix linting

Signed-off-by: Tony Najjar <[email protected]>

* lock costmap

Signed-off-by: Tony Najjar <[email protected]>

* improvement

Signed-off-by: Tony Najjar <[email protected]>

* remove spacing

Signed-off-by: Tony Najjar <[email protected]>

* remove unlock

Signed-off-by: Tony Najjar <[email protected]>

---------

Signed-off-by: Tony Najjar <[email protected]>

* Mypy nav2 system tests (#5083)

* Configured nodes of nav2_system_tests to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Configured launch files of nav2_system_tests to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added nav2_system_tests to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Configure the entire nav2 stack with mypy (#5084)

* Configured tools to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added mypy as a pre-commit hook.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Simplified workflow by including all packages with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Dynamic param patterns (#4971)

* redesign dynamic param patterns

Signed-off-by: Nils-ChristianIseke <[email protected]>

* change cache version

Signed-off-by: Nils-ChristianIseke <[email protected]>

* check that parameter of type double are  >=0.0

Signed-off-by: Nils-ChristianIseke <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>

* [nav2_behavior_tree] Add force_use_current_pose to ComputePathToPoseAction (#4925)

* Add force_use_current_pose

Signed-off-by: Guillaume Doisy <[email protected]>

* xml update

Signed-off-by: Guillaume Doisy <[email protected]>

* rename to use_start

Signed-off-by: Guillaume Doisy <[email protected]>

* lint

Signed-off-by: Guillaume Doisy <[email protected]>

* descriptions

Signed-off-by: Guillaume Doisy <[email protected]>

* simplify logic

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* [CostmapTopicCollisionChecker] Alternative constructor with footprint string (#4926)

* [CostmapTopicCollisionChecker] Alternative constructor with footprint

Signed-off-by: Guillaume Doisy <[email protected]>

* raw pointer

Signed-off-by: Guillaume Doisy <[email protected]>

* suggestions from review

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* Merged Fix navfn_planner from humble PR #5087 (#5092)

* merged changes from humble for goal.header fix

* reverted back, error in merge

* ported goal.header fix in navfn_planner.cpp from humble

* reverted to navfn_planner.cpp to origin/main

* merged navfn_planner.cpp from humble

* fixed the merge

* Docking backwards as plugin param (#5079)

* Replace dock_backwards_ param with dock plugin function

Signed-off-by: Alberto Tudela <[email protected]>

* Deprecated dock_backwards warning

Signed-off-by: Alberto Tudela <[email protected]>

* Convert dockDirection from bool to enum

Signed-off-by: Alberto Tudela <[email protected]>

* Minor fixes

Signed-off-by: Alberto Tudela <[email protected]>

* Improve deprecated param handling

Signed-off-by: Alberto Tudela <[email protected]>

* Set default to forward

Signed-off-by: Alberto Tudela <[email protected]>

* Added tests

Signed-off-by: Alberto Tudela <[email protected]>

* Update nav2_docking/README.md

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Alberto Tudela <[email protected]>

* Upper and others

Signed-off-by: Alberto Tudela <[email protected]>

* Revert declare_parameters_from_overrides

Signed-off-by: Alberto Tudela <[email protected]>

* Added throw on configure plugin

Signed-off-by: Alberto Tudela <[email protected]>

* Remove node_utils

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Update map_io library to use Eigen method for faster map loading (#5071)

* Update map_io library to use opencv method for faster map loading

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit config changes

Signed-off-by: Vignesh T <[email protected]>

* Use Eigen approach instead of OpenCV

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit changes

Signed-off-by: Vignesh T <[email protected]>

* Update include header include order

Signed-off-by: Vignesh T <[email protected]>

* Remove intermediary alpha matrix

Signed-off-by: Vignesh T <[email protected]>

* Add comments for the code understanding

Signed-off-by: Vignesh T <[email protected]>

* Fix else braces rule issue

Signed-off-by: Vignesh T <[email protected]>

* Create and use alpha_matrix when applying mask

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit changes

Signed-off-by: Vignesh T <[email protected]>

* Take flip part out of if-else

Signed-off-by: Vignesh T <[email protected]>

* Update pre-commit changes

Signed-off-by: Vignesh T <[email protected]>

---------

Signed-off-by: Vignesh T <[email protected]>

* Fix CI builds (#5104)

Signed-off-by: Steve Macenski <[email protected]>

* Increase docking coverage && fix backward docking (#5097)

* Add dock_database tests

Signed-off-by: Alberto Tudela <[email protected]>

* Add utils test

Signed-off-by: Alberto Tudela <[email protected]>

* Improve filter tests

Signed-off-by: Alberto Tudela <[email protected]>

* Added simple charging tests

Signed-off-by: Alberto Tudela <[email protected]>

* Improve comments

Signed-off-by: Alberto Tudela <[email protected]>

* Fix backward and redo main test

Signed-off-by: Alberto Tudela <[email protected]>

* Change test period to reduce test time

Signed-off-by: Alberto Tudela <[email protected]>

* Revert "Change test period to reduce test time"

This reverts commit ef1555ec43cb4849fd658c32377189cf414ff9b7.

Signed-off-by: Alberto Tudela <[email protected]>

* Delete print pose

Signed-off-by: Alberto Tudela <[email protected]>

---------

Signed-off-by: Alberto Tudela <[email protected]>

* Initialize dock backwards (#5114)

Signed-off-by: Steve Macenski <[email protected]>

* Precompute yaw trigonometric values in smac planner (#5109)

Signed-off-by: mini-1235 <[email protected]>

* Nav2 Route Server (#5056)

* skeleton of main server and visualization tools

* adding complete Kd-tree search for initial and goal node iDs for search

* initial planner complete

* added path converter

* fix conversion util

* adding change graph service

* added edge scoring to the search + pluginlib definitions + a plugin example instance

* moved to src directory

* linting

* contextual error codes + default bringup

* adding rviz default views of rgaph

* adding missing exception file

* fix segfault that was previously optimized out

* whoops, removing duplicate plugin registration

* remove nanoflann TODO

* adding 2 more edge plugins, use of closed edges in the API design, and added service to modify a set of closed edges being tracked

* fix indexing bug for certain request types

* adding costmap scoring route plugin

* readme todo list updates

* readme details

* adding unit test coverage

* add dynamic cost adjustment by application systems

* adding in operations API

* minor fixes

* add compute and track route action def

* initial prototype compiling and basic interface working for tracking action

* updates to TODO list

* state management

* remove divide by zero potential error

* added in working mostly  demog

* adding rerouting service and a bunch of new tests for operations

* adding new trigger event plugin + base class for service calls + test coverage to complete operations manager

* conventions

* adding initial (maybe working?) collision checker + added blocked ID propogation from operations to allow for rerouting with info from operations

* adding in 3 new algorithms: Time Scorer, Time Marker, and Semantic Scorer

* adding complete unit testing for collision monitor

* adding tests for the planner on a fully connected 4x4 graph

* adding rereouting with starting point to use for the initial condition when along route

* sharing common shared action server code in main server

* refactor, added goal intent extractor, updated necessary tests

* updating todo notes

* adding tests and functionoing goal intent extractor and pruning cost updates

* a little cleanup

* adding readme

* completing unit tests

* large reorg of information around the rerouting state information and output formats for practical use

* Nav2 route server parser (#3398)

* aws graph working

* graph parser first stage

* naming cleanup

* remove

* update graph file

* added fileExists to api

* moved filepath param

* vect to string

* parser cleanup

* debug log

* added tests for geojson graph parser

* added logging to parser

* cleanup

* catch exceptions in route service

* code review

* undo cmake

* added graph loader test

* undo cmake

* code review

* frame convesion support

* comments

* fix

* Parse edge and node metadata

* parse operations

* completed metadata parsing

* added recursion for parser

* code review

* undo cmake

* support vectors

* refactor tests

* fix

* general cleanup

* code review

* added timestamp

---------

Co-authored-by: Steve Macenski <[email protected]>

* adding unit tests for complex handling of reentrant requests

* adding demos for python3 API

* adding conditions if graph is empty in routing request

* working MVP tracking demos working

* adding integration testing expanded TODO list before beta testers

* Example graph (#3438)

* added simple graph

* added metadata and operations to graph

* update

* add space

* added test for sample_graph

* added to readme

* testing system-wise, mostly working

* update remaining TODO list

* updates for pruning starting in rerouting

* adding a full roster of default plugins

* complete tested feature set

* adding configuration guide to readme

* adding plugins info

* testing collapse

* smaller titles

* adding becnhmarking script

* adding metrics to readme

* adding image for architecture

* resize

* resize

* adding design info

* new image

* turtlebot3 world graph (#3472)

* turtlebot3 world graph

* remove line

* add line back

* scripts for route (#3490)

* tmp push for moving computers

* Nav2 route server goal orientation scorer (#4866)

* added goal pose and bool to check for last edge for all scorers

Signed-off-by: Alexander Yuen <[email protected]>

* added goal_orientation scorer

Signed-off-by: Alexander Yuen <[email protected]>

* added test for GoalOrientationScorer

Signed-off-by: Alexander Yuen <[email protected]>

* changed goal pose to a const ref, and moved score to end as implicit return

Signed-off-by: Alexander Yuen <[email protected]>

* changed goal arguments to const ref

Signed-off-by: Alexander Yuen <[email protected]>

* using const ref for goal pose, rearranged total_score to match header

Signed-off-by: Alexander Yuen <[email protected]>

* linting on goal_orientation_scorer.hpp

Signed-off-by: Alexander Yuen <[email protected]>

* using M_PI as default threshold, fixed angle wrapping by using angles library, no longer modifying cost

Signed-off-by: Alexander Yuen <[email protected]>

* changed arguments to use const refs, changed argument order in score function to matach header

Signed-off-by: Alexander Yuen <[email protected]>

* changed calling of score to match argument sequence, changed GoalOrientaitonScorer to test the opposite direction and check the return value

Signed-off-by: Alexander Yuen <[email protected]>

* switched cost edge pairs to imply return of cost, default orientation as M_PI / 2.0

Signed-off-by: Alexander Yuen <[email protected]>

---------

Signed-off-by: Alexander Yuen <[email protected]>

* minor updates

Signed-off-by: Steve Macenski <[email protected]>

* fix a few bugs, clarify a few things

Signed-off-by: Steve Macenski <[email protected]>

* more validation and inline comments to help readers understand complex interactions

Signed-off-by: Steve Macenski <[email protected]>

* CI turning over

Signed-off-by: Steve Macenski <[email protected]>

* adding error_msg

Signed-off-by: Steve Macenski <[email protected]>

* updated cmake style to be in line with repo

Signed-off-by: Steve Macenski <[email protected]>

* Adding afew mores features from TODO list

Signed-off-by: Steve Macenski <[email protected]>

* Nav2 route server start pose orientation scorer (#4950)

* adding flag to identify start node, passing tf_buffer to edge scorer

Signed-off-by: Alexander Yuen <[email protected]>

* passing tf to route planner

Signed-off-by: Alexander Yuen <[email protected]>

* added null buffer to tests

Signed-off-by: Alexander Yuen <[email protected]>

* added null buffer to planner configure in performance bench marking test

Signed-off-by: Alexander Yuen <[email protected]>

* changed arguments of all old edge scorers to also take tf_buffer

Signed-off-by: Alexander Yuen <[email protected]>

* changed configure to take tf_buffer, added bool to identify start_edge in score method for all existing edge scorers

Signed-off-by: Alexander Yuen <[email protected]>

* added start_pose_orientation_scorer to CMake

Signed-off-by: Alexander Yuen <[email protected]>

* added StartPoseOrientationScorer as and edge scroer

Signed-off-by: Alexander Yuen <[email protected]>

* added tf_buffer to constructor, added start edge bool on score method, added tf_buffer as a protected variable

Signed-off-by: Alexander Yuen <[email protected]>

* added tf_buffer to configure method, added start_id_ member variable, added isStart method to identify initial node for route_planner.hpp

Signed-off-by: Alexander Yuen <[email protected]>

* modified all configures to take a tf_buffer, modified all score functions to take a start edge bool, added test for start_pose_orientation_scorer

Signed-off-by: Alexander Yuen <[email protected]>

* adding start_pose_orientation_scorer.cpp

Signed-off-by: Alexander Yuen <[email protected]>

* edge scorer modified to take in tf_buffer and pass it to scorer plugins, bool for start edge also passed down to plugins

Signed-off-by: Alexander Yuen <[email protected]>

* removed redundant parameter declarations, changed robot frame to base frame, year bump

Signed-off-by: Alexander Yuen <[email protected]>

* changed robot frame to base frame, year bump on copy right

Signed-off-by: Alexander Yuen <[email protected]>

* removed unnecessary tf_buffer_ from edge_scorer

Signed-off-by: Alexander Yuen <[email protected]>

* added EdgeType enum class

Signed-off-by: Alexander Yuen <[email protected]>

* all edge scorer plugins changed to use EdgeType

Signed-off-by: Alexander Yuen <[email protected]>

* edge_scorer modified to use EdgeType enum class

Signed-off-by: Alexander Yuen <[email protected]>

* edge_cost_function base class modified to use EdgeType enum class

Signed-off-by: Alexander Yuen <[email protected]>

* modified tests for new scorer signature

Signed-off-by: Alexander Yuen <[email protected]>

* added method to classify edge type

Signed-off-by: Alexander Yuen <[email protected]>

* ament_cpplinting

Signed-off-by: Alexander Yuen <[email protected]>

* linting

Signed-off-by: Alexander Yuen <[email protected]>

* changed EdgeType to const ref

Signed-off-by: Alexander Yuen <[email protected]>

* added option to score orientations instead of outright rejecting start poses

Signed-off-by: Alexander Yuen <[email protected]>

* updated docstrings to have better description for goal pose and start pose orientation goal checker

Signed-off-by: Alexander Yuen <[email protected]>

* fixed merge conflict in goal_orientation_scorer.hpp

Signed-off-by: Alexander Yuen <[email protected]>

* fixed merge conflict in edge_cost_function.hpp

Signed-off-by: Alexander Yuen <[email protected]>

* removed TODO from costmap_scorer.cpp

Signed-off-by: Alexander Yuen <[email protected]>

* added getStart method to goal_intent_extract and start pose argument for findRoute

Signed-off-by: Alexander Yuen <[email protected]>

* added RouteData struct to types.hpp

Signed-off-by: Alexander Yuen <[email protected]>

* added start_pose to edge scorer hpp and cpp

Signed-off-by: Alexander Yuen <[email protected]>

* fixed type getStart return type in goal_intent_extractor.cpp

Signed-off-by: Alexander Yuen <[email protected]>

* added passing of start_pose down to scorer in route_planner

Signed-off-by: Alexander Yuen <[email protected]>

* added start pose to base edge cost function class

Signed-off-by: Alexander Yuen <[email protected]>

* underscore fix for goal_intent_extractor_

Signed-off-by: Alexander Yuen <[email protected]>

* changed signature of all edge cost functions to take start_pose

Signed-off-by: Alexander Yuen <[email protected]>

* populating RouteData and passing it into findRoute

Signed-off-by: Alexander Yuen <[email protected]>

* passing route_data down to getTraversalCost

Signed-off-by: Alexander Yuen <[email protected]>

* plugins modified to take in route_data, tests updated accordingly

Signed-off-by: Alexander Yuen <[email protected]>

* using route data for goal_orientation_scorer and start_pose_orientation_scorer, modified tests accordingly

Signed-off-by: Alexander Yuen <[email protected]>

* removed route frame, robot frame, and getRobotPose from start_pose_orientation_scorer

Signed-off-by: Alexander Yuen <[email protected]>

* removed used of stat_pose and goal_pose as it is replaced with route data

Signed-off-by: Alexander Yuen <[email protected]>

* added InvalidCriticUse exception to nav2_core, goal_orientation_scorer and start_pose_orientation_scorer throws this exception if route_data.use_poses is false, route_server catches this exception, added exception test in the edge scorer tester

Signed-off-by: Alexander Yuen <[email protected]>

* added INVALID_CRITIC_USE error code in route actions

Signed-off-by: Alexander Yuen <[email protected]>

* added orientation weighting for cost as an option instead of out right rejection

Signed-off-by: Alexander Yuen <[email protected]>

* updated docstring for goal orientation scorer

Signed-off-by: Alexander Yuen <[email protected]>

* renamed Critic to EdgeScorer

Signed-off-by: Alexander Yuen <[email protected]>

* changed Critic to EdgeScorer in edge cost functions

Signed-off-by: Alexander Yuen <[email protected]>

* changed Critic to EdgeScorer, storing exception message in error msg

Signed-off-by: Alexander Yuen <[email protected]>

* changed Critic to EdgeScorer in edge scorer tests

Signed-off-by: Alexander Yuen <[email protected]>

* changed INVALID_CRITIC_USE to IVALID_EDGE_SCORER_US in actions

* changed RouteData and route_data to RouteRequest and route_request respectively, added doxygen for RouteRequest struct

Signed-off-by: Alexander Yuen <[email protected]>

* added doxygen for EdgeType

Signed-off-by: Alexander Yuen <[email protected]>

---------

Signed-off-by: Alexander Yuen <[email protected]>

* updates

Signed-off-by: Steve Macenski <[email protected]>

* better handle the route situation in the simple commander API

Signed-off-by: Steve Macenski <[email protected]>

* completed TB4 migration

Signed-off-by: Steve Macenski <[email protected]>

* route updates

Signed-off-by: Steve Macenski <[email protected]>

* updating radme

Signed-off-by: Steve Macenski <[email protected]>

* one last comment for the day

Signed-off-by: Steve Macenski <[email protected]>

* adding in BT ndoes, tests, and graphs for bringup

Signed-off-by: Steve Macenski <[email protected]>

* updating error code locations

Signed-off-by: Steve Macenski <[email protected]>

* test for route planner complete

Signed-off-by: Steve Macenski <[email protected]>

* Update to use service server from nav2_utils for service introspection

Signed-off-by: Steve Macenski <[email protected]>

* fix small error

Signed-off-by: Steve Macenski <[email protected]>

* adding in additional smoke tests, prototype working of tracking test to be continued

Signed-off-by: Steve Macenski <[email protected]>

* updates

Signed-off-by: Steve Macenski <[email protected]>

* completed system tests

Signed-off-by: Steve Macenski <[email protected]>

* reenable collision checking

Signed-off-by: Steve Macenski <[email protected]>

* remove unnecssary logging

Signed-off-by: Steve Macenski <[email protected]>

* linting

Signed-off-by: Steve Macenski <[email protected]>

* Update package.xml

Signed-off-by: Steve Macenski <[email protected]>

* closing test gap

Signed-off-by: Steve Macenski <[email protected]>

* a few more lines

Signed-off-by: Steve Macenski <[email protected]>

* changing permissions

Signed-off-by: Steve Macenski <[email protected]>

* fix system test

Signed-off-by: Steve Macenski <[email protected]>

* adding in additional coverage

Signed-off-by: Steve Macenski <[email protected]>

* finalized test coverage

Signed-off-by: Steve Macenski <[email protected]>

* adding file

Signed-off-by: Steve Macenski <[email protected]>

* simple commander demo working

Signed-off-by: Steve Macenski <[email protected]>

* python happiness

Signed-off-by: Steve Macenski <[email protected]>

* precommit spelling happy

Signed-off-by: Steve Macenski <[email protected]>

* wtf pprecommit, why didn't you mention this before

Signed-off-by: Steve Macenski <[email protected]>

* spelling

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_route/README.md

Signed-off-by: Steve Macenski <[email protected]>

* Update route_planner.cpp

Signed-off-by: Steve Macenski <[email protected]>

* fix mistake in merge conflict resolution

Signed-off-by: Steve Macenski <[email protected]>

* type check fix

Signed-off-by: Steve Macenski <[email protected]>

* lint

Signed-off-by: Steve Macenski <[email protected]>

* linting

Signed-off-by: Steve Macenski <[email protected]>

* more design ideas

Signed-off-by: Steve Macenski <[email protected]>

* Configuring nav2_route_server branch to be mypy compliant (#5081)

* Added definitions for nav2_msgs actions and messages.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Enabled example_route to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added return definition for route_example_launch.py.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Ported robot_navigator.py to be compliant with mypy.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Demo 1 completed

Signed-off-by: Steve Macenski <[email protected]>

* second demo completed

Signed-off-by: Steve Macenski <[email protected]>

* final linting

Signed-off-by: Steve Macenski <[email protected]>

* adding route server for test to pass

Signed-off-by: Steve Macenski <[email protected]>

* adding smoother server

Signed-off-by: Steve Macenski <[email protected]>

* Configured nav2_system_tests to be mypy compliant. (#5085)

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Route Tool Rviz Panel (#4775)

* added route tool skeleton code and gui

Signed-off-by: John Chrosniak <[email protected]>

* rviz2 panel can load route graph

Signed-off-by: John Chrosniak <[email protected]>

* can add nodes using route tool

Signed-off-by: John Chrosniak <[email protected]>

* added logic for creating edges

Signed-off-by: John Chrosniak <[email protected]>

* graph nodes can be edited, existing edges will still connect if a node is moved

Signed-off-by: John Chrosniak <[email protected]>

* can edit edges

Signed-off-by: John Chrosniak <[email protected]>

* can delete nodes and edges

Signed-off-by: John Chrosniak <[email protected]>

* route graphs can be saved

Signed-off-by: John Chrosniak <[email protected]>

* fixed bug for loading in route graphs

Signed-off-by: John Chrosniak <[email protected]>

* added dynamic text to UI, created launch file and rviz configuration

Signed-off-by: John Chrosniak <[email protected]>

* fixed bug for deleting nodes

Signed-off-by: John Chrosniak <[email protected]>

* actually fixed node removal bug

Signed-off-by: John Chrosniak <[email protected]>

* publishing clicked point populates x and y fields

Signed-off-by: John Chrosniak <[email protected]>

* removed debugging log statements

Signed-off-by: John Chrosniak <[email protected]>

* added check to make sure node/edges exist before editing

Signed-off-by: John Chrosniak <[email protected]>

* bug fix

Signed-off-by: John Chrosniak <[email protected]>

* migrated route tool to rviz plugin

Signed-off-by: John Chrosniak <[email protected]>

* minor refactoring

Signed-off-by: John Chrosniak <[email protected]>

* added metadata and operations to graph saver so nothing should be erased

Signed-off-by: John Chrosniak <[email protected]>

* edited set route service to clear current route before setting new

Signed-off-by: John Chrosniak <[email protected]>

* Update README.md

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* documentation cleanup

Signed-off-by: John Chrosniak <[email protected]>

* changed copyright

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* moved copyright due to compiler error

Signed-off-by: John Chrosniak <[email protected]>

* revert removal of files

Signed-off-by: John Chrosniak <[email protected]>

* added gen ai comment

Signed-off-by: John Chrosniak <[email protected]>

* fixed rebasing issue

Signed-off-by: John Chrosniak <[email protected]>

* fix linting errors

Signed-off-by: John Chrosniak <[email protected]>

* added export for graph saver dependencies

Signed-off-by: John Chrosniak <[email protected]>

* added ui file to library

Signed-off-by: John Chrosniak <[email protected]>

* added nav2_route_core to link libaries

Signed-off-by: John Chrosniak <[email protected]>

* fixed cmake error

Signed-off-by: John Chrosniak <[email protected]>

* fixed build issues

Signed-off-by: John Chrosniak <[email protected]>

* uncrustified

Signed-off-by: John Chrosniak <[email protected]>

* cpplint

Signed-off-by: John Chrosniak <[email protected]>

* added unit tests and fixed bugs

Signed-off-by: John Chrosniak <[email protected]>

* increased test coverage

Signed-off-by: John Chrosniak <[email protected]>

* fixed linter errors

Signed-off-by: John Chrosniak <[email protected]>

* fixed pre-commit errors

Signed-off-by: John Chrosniak <[email protected]>

* fixed formatting error

Signed-off-by: John Chrosniak <[email protected]>

* double -> single quotes

Signed-off-by: John Chrosniak <[email protected]>

* added test for using default filepath

Signed-off-by: John Chrosniak <[email protected]>

* fixed license

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/include/nav2_route/graph_saver.hpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* linter fix

Signed-off-by: John Chrosniak <[email protected]>

---------

Signed-off-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* fixing linting

Signed-off-by: Steve Macenski <[email protected]>

* Updating readme table

Signed-off-by: Steve Macenski <[email protected]>

* lint

Signed-off-by: Steve Macenski <[email protected]>

* adding multifloor

Signed-off-by: Steve Macenski <[email protected]>

* adding BFS goal intent search

Signed-off-by: Steve Macenski <[email protected]>

* fix bug

Signed-off-by: Steve Macenski <[email protected]>

* adding unit tests for goal intent search

Signed-off-by: Steve Macenski <[email protected]>

* fixing collision check

Signed-off-by: Steve Macenski <[email protected]>

* Update nav2_simple_commander/nav2_simple_commander/robot_navigator.py

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Alexander Yuen <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>
Co-authored-by: Joshua Wallace <[email protected]>
Co-authored-by: alexanderjyuen <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>

* Feat/smac planner include orientation flexibility (#4127)

* include functionality to allow multiple goal heading for smac planner

Signed-off-by: stevedanomodolor <[email protected]>

* include missing parameter inclusion

Signed-off-by: stevedanomodolor <[email protected]>

* increase test coverage

Signed-off-by: stevedanomodolor <[email protected]>

---------

Signed-off-by: stevedanomodolor <[email protected]>

* Support zero value for std_wz in mppi controller (#5110)

* Support zero value for std_wz in mppi controller

Signed-off-by: mini-1235 <[email protected]>

* Update for better readability

Signed-off-by: mini-1235 <[email protected]>

---------

Signed-off-by: mini-1235 <[email protected]>

* Update update_ci_image.yaml to include jazzy build (#5120)

Signed-off-by: Steve Macenski <[email protected]>

* Update update_ci_image.yaml to add humble

Signed-off-by: Steve Macenski <[email protected]>

* message_filters hpp headers have been backported (#5127)

* message_filters hpp headers have been backported

Signed-off-by: Tim Clephas <[email protected]>

* fixup! message_filters hpp headers have been backported

Signed-off-by: Tim Clephas <[email protected]>

---------

Signed-off-by: Tim Clephas <[email protected]>

* Update PULL_REQUEST_TEMPLATE.md

Signed-off-by: Steve Macenski <[email protected]>

* Bibtex formatting (#5126)

* Align citation text to be within the bullet points.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Align formatting to match bibtex guide.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Add justified spacing for readability.
Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Make sure fixed curvature lookahead distance doesn't overshoot distance to cusp (#5134)

Related issue: https://github.com/ros-navigation/navigation2/issues/5098

* removing the start navigation message in the paused state from rviz buttons (#5137)

Signed-off-by: Pradheep <[email protected]>

* Added keepout filter for depot and warehouse maps (#5125)

* Added keepout region to warehouse map.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Support keepout_map as a launch argument.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added a dictionary to switch between tb4 maps.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added dedicated launch file for map modifiers.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added support for depot keepout filter.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Updated keepout masks for depot and warehouse.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Renamed keepout filter launch arguments to keepout zones.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Renamed keepout map launch argument to keepout mask

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Renamed map_modifier.launch.py to keepout_zone_launch.py.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Preserve duplication of nodes for keepout test.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Removed padding from keepout zones from depot map.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added keepout zone at the centre of the warehouse map.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Added utility script to handle namespaces for keepout_filter.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Used utility function to simplify namespace calls.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Moved joinWithParentNamespace to the Layer object.

Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

Signed-off-by: Leander Stephen D'Souza <[email protected]>

* Fix lattice backward 180 deg issue (#5141)

Signed-off-by: selazarev <[email protected]>

* [lifecycle_manager] expose service_timeout (#4838)

* [lifecycle_manager] expose service_timeout

Signed-off-by: Guillaume Doisy <[email protected]>

* restore original change_state, and detect non_default_timeout

Signed-off-by: Guillaume Doisy <[email protected]>

* lint

Signed-off-by: Guillaume Doisy <[email protected]>

* spell

Signed-off-by: Guillaume Doisy <[email protected]>

* collapse change_state and remove non_default_timeout logic

Signed-off-by: Guillaume Doisy <[email protected]>

* Update nav2_util/src/lifecycle_service_client.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* Update simple_action_server.hpp for description (#5150)

Signed-off-by: Steve Macenski <[email protected]>

* reset motion model (#5149)

Signed-off-by: Adi Vardi <[email protected]>

* Show error if inflation radius is smaller than circumscribed radius (#5148)

* Warn if inflation radius is smaller than circumscribed radius

Signed-off-by: Tony Najjar <[email protected]>

* Update nav2_mppi_controller/src/critics/cost_critic.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>

* Update nav2_smac_planner/include/nav2_smac_planner/utils.hpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>

---------

Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>
Signed-off-by: Tatsuro Sakaguchi <[email protected]>
Signed-off-by: Michal Sojka <[email protected]>
Signed-off-by: suchetanrs <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>
Signed-off-by: Alberto Tudela <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Yancey <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Johannes Plapp <[email protected]>
Signed-off-by: Rasmus Larsson <[email protected]>
Signed-off-by: zz990099 <[email protected]>
Signed-off-by: Dylan De Coeyer <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Adi Vardi <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: Vignesh T <[email protected]>
Signed-off-by: Alexander Yuen <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>
Signed-off-by: stevedanomodolor <[email protected]>
Signed-off-by: Tim Clephas <[email protected]>
Signed-off-by: Pradheep <[email protected]>
Signed-off-by: selazarev <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Co-authored-by: Nils-Christian Iseke <[email protected]>
Co-authored-by: Tatsuro Sakaguchi <[email protected]>
Co-authored-by: Michal Sojka <[email protected]>
Co-authored-by: Michael Carlstrom <[email protected]>
Co-authored-by: Alberto Tudela <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: Yancey <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: mini-1235 <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Johannes Plapp <[email protected]>
Co-authored-by: RasmusLar <[email protected]>
Co-authored-by: zz99 <[email protected]>
Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Adi Vardi <[email protected]>
Co-authored-by: Tony Najjar <[email protected]>
Co-authored-by: Sandeep Dutta <[email protected]>
Co-authored-by: Vignesh T <[email protected]>
Co-authored-by: Joshua Wallace <[email protected]>
Co-authored-by: alexanderjyuen <[email protected]>
Co-authored-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>
Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]>
Co-authored-by: Tim Clephas <[email protected]>
Co-authored-by: moooeeeep <[email protected]>
Co-authored-by: Pradheep Krishna <[email protected]>
Co-authored-by: Semyon <[email protected]>
@tonynajjar
Copy link
Contributor

tonynajjar commented May 28, 2025

Hey guys, I started porting my custom version of this feature to this version and I think I'm only missing one last piece of the puzzle: the ability to pause and resume without losing the waypoint statuses and therefore continuing from the next PENDING pose

Here is roughly how I have it implemented:

  • The navigator client (some kind of mission manager) is responsible for keeping track of the status of all the waypoints by subscribing to the feedback of the navigator.
  • My NavigateThroughPoses goal sends WaypointStatus[] instead of nav_msgs/Goals so that we can pass the statuses
  • The navigator's internal waypoint_statuses is initialized with the ones provided from the client and only the goals that are PENDING are set on the blackboard

Do you see this as a generally useful feature? Am I missing an already existing way to pause and resume without losing the state?

@SteveMacenski
Copy link
Member

SteveMacenski commented May 28, 2025

I definitely see the value. There's been a related discussion in #5070 (comment) that you might be interested in (and possibly helping bring to fruition?).

How is the pause / resume implemented - as an outside action (i.e. something cancels, stores info, and resubmits) or internal (i.e. BT has a pause variable that it waits on before continuing)? It sounds like external. What was the rationale against having it be internal in the behavior tree so that all the information stays hot?

Some other thoughts for a hybrid approach:

  • We could have a "ResumeNavigateThroughPoses" and "ResumeNavigateToPose" (with complimentary "Pause" ones) so that we have different semantically meaningful APIs for Start/Cancel/Pause/Resume that each have their contextual information. No need to change the main Action APIs, just have new ones that have that information. I think sharper messages are good to have rather than trying to cram everything into one.
  • The Pause can return the state and the Resume can send it back.
  • Or, the Pause can store that in the navigator itself and the Resume can load it back up in a new tree, so that the application doesn't have to care (but can still return it anyway in case they care or want to persist between reboots. If Resume is given values, it uses those instead of its internally stored one).
  • Or, the Pause can simply stop ticking the tree to cold store it and the Resume can continue the ticking loop (TBD: some nodes may care about timing or have progress checking, that would need to be considered. Maybe we just halt the tree but keep its blackboard active to resume in a fresh new-tick state? That's essentially what your current implementation and the other ideas above do anyway by resume being a re-goal-submission)

What to open a new ticket to discuss?

@tonynajjar
Copy link
Contributor

tonynajjar commented May 30, 2025

It sounds like external. What was the rationale against having it be internal in the behavior tree so that all the information stays hot?

Yes it's external - just historical reasons, I never really thought about the tradeoffs

What to open a new ticket to discuss?

I created the issue: #5213

(and possibly helping bring to fruition?).

I'm not sure I can get the time for it right now since we have a working version.

SakshayMahna pushed a commit to SakshayMahna/navigation2 that referenced this pull request Jun 8, 2025
…ion. (fix ros-navigation#4846) (ros-navigation#4994)

* Add WaypointStatus message type & Remove MissedWaypoint message type

Signed-off-by: zz990099 <[email protected]>

* Add waypoint_statuses records in RemoveInCollisionGoals/RemovePassedGoals actions

Signed-off-by: zz990099 <[email protected]>

* Add validation tests

Signed-off-by: zz990099 <[email protected]>

* Make NavigateThroughPoses navigator report waypoint statuses information

Signed-off-by: zz990099 <[email protected]>

* Make WaypointFollower use WaypointStatus message type in action result

Signed-off-by: zz990099 <[email protected]>

* Split MISSED status into SKIPPED & FAILED

Signed-off-by: zz990099 <[email protected]>

* fix edge case handle in RemoveInCollision/RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Add validation test cases for RemoveInCollision&RemovePassed BT actions

Signed-off-by: zz990099 <[email protected]>

* Update RemovePassedGoals/RemoveInCollisionGoals node in Groot XML

Signed-off-by: zz990099 <[email protected]>

---------

Signed-off-by: zz990099 <[email protected]>
Signed-off-by: Sakshay Mahna <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants