Skip to content

Centralize path handler logic in controller server#5446

Merged
SteveMacenski merged 113 commits intoros-navigation:mainfrom
mini-1235:feat/goal_checker
Dec 29, 2025
Merged

Centralize path handler logic in controller server#5446
SteveMacenski merged 113 commits intoros-navigation:mainfrom
mini-1235:feat/goal_checker

Conversation

@mini-1235
Copy link
Collaborator

@mini-1235 mini-1235 commented Aug 12, 2025

This PR continues the work in #4789
Fixes #4757
Fixes #4304

This is a continuation of work started by @ottojo in draft PR #4593

I'll quote their introduction and, expand a bit afterwards, and update any fields that have changed.

The controller server uses a configurable goal checker to determine if the robot has completed its current path as defined by the global plan. Current goal checkers compare the goal (end of path) pose and twist to the current robot state, but that is not sufficient in all cases.
In some use cases, the path will visit the goal multiple times, and the goal might coincide with the starting position. It is still desired that the robot follows the entire path, instead of immediately ending navigation once the goal pose is reached.
This PR adds a parameter to the GoalChecker interface to inform the goal checker of the current path, which enables building more sophisticated goal checkers that (for example) take progress along the path into account.
We already use such a goal checker internally, which just subscribes to the global plan via the appropriate ROS topic, but i think this here is the cleaner solution (and also avoids race conditions of checking against an old path in the goal checker...)
I don't have a nice testing setup and a goal checker using this interface yet (other than our own robot and the mentioned goal checker), which is why I mark this as draft for now.

I've cherry-picked @ottojo 's commit on top of the latest main branch, then added a new basic goal checker PathCompleteGoalChecker, which is a subclass of SimpleGoalChecker, but has an additional parameter (path_length_tolerance, default=1), and checks that the current path has <= path_length_tolerance waypoints before allowing the normal SimpleGoalChecker completion logic to take its course.

The result is a trivial extension of SimpleGoalChecker that should be immune to the current_pose = goal_pose short-circuit problem/bug. Rather than try to create an elaborate unit test that navigates a course, I stuck to first principles to ensure that the new plugin behaves the same as SimpleGoalChecker with <= path_length_tolerance waypoints, and that it does not complete with > path_length_tolerance waypoints.

Basic Info

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

Description of contribution in a few bullet points

  • Extend GoalChecker::isGoalReached interface with argument for current path
  • Add this argument to the in-tree goal checker implementations
  • Add a goal checker which checks for path-completion
  • [] Define a test-scenario with global plan that returns to start pose

Description of documentation updates required from your changes

  • Migration guide for out-of-tree goal checkers

Future work that may be required in bullet points

  • Implementing more sophisticated goal checkers

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

@mini-1235
Copy link
Collaborator Author

@SteveMacenski before I go too far, can you take a quick look to make sure I am on the right track? I have only pushed the changes in nav2_controller, graceful_controller and RPP

@mergify
Copy link
Contributor

mergify bot commented Aug 12, 2025

@mini-1235, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@mini-1235
Copy link
Collaborator Author

I have spent some time reading into MPPI's path handler, I can see there are some improvements like #3659, #3443. Also, there is a related PR for RPP in #4763, maybe we need to check if these changes are applicable to all controllers? If yes, I guess it will be easier to move them in Controller Server

I also noticed that the DWB/MPPI need the path from planner to find its goal, should we pass this plan via the setplan api or a new argument in computevelocitycommands?

@mamariomiamo
Copy link

Hi, sorry to jump in here but just sharing my two cents:
Alternatively, is it possible to modify the end_pose_ to be the end of the pruned and transformed global path from the path_handler_? This way we do not need to add the additional PathCompleteGoalChecker since we will no longer be using the end of the global path for isGoalReached check. As the robot progresses along the global path, the pruned and transformed global path will eventually cover until the end of the global path and thus we will still be using the actual navigation goal as the final isGoalReached check.

@mamariomiamo
Copy link

I have spent some time reading into MPPI's path handler, I can see there are some improvements like #3659, #3443. Also, there is a related PR for RPP in #4763, maybe we need to check if these changes are applicable to all controllers? If yes, I guess it will be easier to move them in Controller Server

I also noticed that the DWB/MPPI need the path from planner to find its goal, should we pass this plan via the setplan api or a new argument in computevelocitycommands?

I think path_handler implementation from MPPI is more comprehensive as it also considers path up to inversion point. This would also be helpful when user uses Hybrid A* with reeds-shepp as the global planner.

@mini-1235
Copy link
Collaborator Author

Hi, sorry to jump in here but just sharing my two cents: Alternatively, is it possible to modify the end_pose_ to be the end of the pruned and transformed global path from the path_handler_? This way we do not need to add the additional PathCompleteGoalChecker since we will no longer be using the end of the global path for isGoalReached check. As the robot progresses along the global path, the pruned and transformed global path will eventually cover until the end of the global path and thus we will still be using the actual navigation goal as the final isGoalReached check.

Thanks for sharing, I will try to implement this and compare with my current method

@mergify
Copy link
Contributor

mergify bot commented Aug 16, 2025

@mini-1235, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

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.

Sorry it took so long!

@SteveMacenski
Copy link
Member

SteveMacenski commented Aug 28, 2025

I think path_handler implementation from MPPI is more comprehensive as it also considers path up to inversion point.

I agree with this general sentiment. I think it would be nice to review all the path handlers and make sure the key features of all are being respected in the server's implementation.

There's a number of CI failures that should also be looked at, but I'm sure you know :-)

@mini-1235
Copy link
Collaborator Author

There's a number of CI failures that should also be looked at, but I'm sure you know :-)

Yes, I will continue this PR once #5496 and other future PRs targeting path handler are done

@mergify
Copy link
Contributor

mergify bot commented Sep 24, 2025

@mini-1235, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@mini-1235 mini-1235 changed the title Add path goal checker plugin Centralize path handler logic in controller server Sep 25, 2025
@mini-1235
Copy link
Collaborator Author

mini-1235 commented Sep 25, 2025

@SteveMacenski I think you can start reviewing this when you have time, in the following days I plan to:

  • Finish DWB (Some logics are not handled yet)
  • Test Graceful/MPPI/RPP/DWB on different platform (Ackermann, Differential) with different params
  • Handle dynamic params in controller server
  • Fix & Add unit tests

Things to debate:

  1. Alternatively, is it possible to modify the end_pose_ to be the end of the pruned and transformed global path from the path_handler_? This way we do not need to add the additional PathCompleteGoalChecker since we will no longer be using the end of the global path for isGoalReached check

I think this becomes problematic when enforce_path_inversion is set to true. In that case, the local goal ends up being the cusping point, and the robot may stop there once it satisfies the XY and yaw tolerances. Because of this, I believe we still need the global goal for the goal checker. But as @SteveMacenski suggested, we could add this directly into the simple goal checker, so by default the simple goal checker is checking both the global goal and local path length. Do you agree with this approach? @mamariomiamo

  1. This PR has moved the following parameters from the plugin level to controller level:
transform_tolerance
prune_distance
max_robot_pose_search_dist
enforce_path_inversion
inversion_xy_tolerance
inversion_yaw_tolerance

Previously, the transform tolerance in the controller server was obtained from costmap->getTransformTolerance. I think it makes more sense for the server and its plugins to share the same tolerance, so I moved this to the controller level.

  1. We have different pruned_plan_end for MPPI and RPP,
    //TODO: For RPP and graceful we don't have prune distance, maybe we need to support two kinds of pruned_plan_end here
    // by parameter?
    if (1){
    pruned_plan_end = nav2_util::geometry_utils::first_after_integrated_distance(
    closest_point, global_plan_up_to_inversion_.poses.end(), params_->prune_distance);
    }
    else{
    pruned_plan_end = std::find_if(
    closest_point, global_plan_up_to_inversion_.poses.end(),
    [&](const auto & global_plan_pose) {
    return euclidean_distance(global_plan_pose, robot_pose) > max_costmap_extent;
    });
    }

    I am not sure how do we want to handle this, since only MPPI & DWB has the prune_distance parameter. Maybe adding a new parameter here will work?

Before merging this, I also need to:

  • Update nav2 tutorial with the new controller server API
  • Update docs, including migration guide, writing a new controller plugin, configuration guides

@mergify
Copy link
Contributor

mergify bot commented Sep 25, 2025

@mini-1235, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@SteveMacenski
Copy link
Member

OK will do! This is admittedly alot so this next round is going to be more high level.

... the local goal ends up being the cusping point, and the robot may stop there once it satisfies the XY and yaw tolerances ... we could add this directly into the simple goal checker, so by default the simple goal checker is checking both the global goal and local path length

Ah ok. That makes sense for the goal checker, though probably not the other elements right? When enforcing inversions is off, its the same either way since we just prune to the prune distance / costmap bounds. When is it enabled, then we prune to that which we want from the control algorithm's perspective, but not the goal checker.

Previously, the transform tolerance in the controller server was obtained from costmap->getTransformTolerance. I think it makes more sense for the server and its plugins to share the same tolerance, so I moved this to the controller level.

Why not have it still acquire it from costmap2D, just stored and used at the controller server level? I suppose I prefer less parameters to more, but I'm OK either way.

We have different pruned_plan_end for MPPI and RPP,

Do both - first after the integrated distance, as long as that distance is within the costmap bounds.

@mini-1235
Copy link
Collaborator Author

Ah ok. That makes sense for the goal checker, though probably not the other elements right? When enforcing inversions is off, its the same either way since we just prune to the prune distance / costmap bounds. When is it enabled, then we prune to that which we want from the control algorithm's perspective, but not the goal checker.

Yes, when it is on, the distance to the local goal can become very small. That's why I think this local goal is not suitable to use in the goal checker

Why not have it still acquire it from costmap2D,

For the controller plugins as well?

Do both - first after the integrated distance, as long as that distance is within the costmap bounds.

Not sure if I understand this, can you elaborate?

@SteveMacenski
Copy link
Member

For the controller plugins as well?

Isn't that in effect what is done today?

Not sure if I understand this, can you elaborate?

Basically combine the two:

//TODO: For RPP and graceful we don't have prune distance, maybe we need to support two kinds of pruned_plan_end here
// by parameter?
if (1){
pruned_plan_end = nav2_util::geometry_utils::first_after_integrated_distance(
closest_point, global_plan_up_to_inversion_.poses.end(), params_->prune_distance);
}
else{
pruned_plan_end = std::find_if(
closest_point, global_plan_up_to_inversion_.poses.end(),
[&](const auto & global_plan_pose) {
return euclidean_distance(global_plan_pose, robot_pose) > max_costmap_extent;
});
}
. Find the first after the integrated distance. If its outside of the costmap bounds, then wind back until its within the costmap bounds. If its off the local costmap, then we cannot consider them for control since they're not validly known

@SteveMacenski
Copy link
Member

A good suggestion I received today: It would be great to make the path handler itself a plugin so that other users can replace this implementation if they see fit. A nice side effect is it makes us have to think a bit more about the API interfaces for it to make sure its generally good for a broad range of purposes and include all the information for the APIs other implementations may want that we have access to.

Another would be possibly changing the pruning distance to be proportional to time instead, to prune the distance set out by that time by the maximum velocity. That way it wasn't something that needed to be tuned for changing velocity limits.

Finally, maybe it would be good to provide feedback about the current idx of the path we're on to use in the BT Navigator for computing ETA, path length remaining, and so forth. That way we handle the issue of path looping using the wrong index globally

@mini-1235
Copy link
Collaborator Author

I will think about it and reply tomorrow

xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
path_length_tolerance: 1.0
PathHandler:
Copy link
Contributor

@tonynajjar tonynajjar Dec 17, 2025

Choose a reason for hiding this comment

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

@mini-1235 isn't max_robot_pose_search_dist missing?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I don't think we have this in the current config either, and in most cases I think costmap_size / 2 works well, so this isn't really something users need to tune. However, if you think it's necessary to add it here, I am happy to add it here and the docs PR

FollowPath:
plugin: "nav2_mppi_controller::MPPIController"
time_steps: 56
model_dt: 0.05
batch_size: 2000
ax_max: 3.0
ax_min: -3.0
ay_max: 3.0
ay_min: -3.0
az_max: 3.5
vx_std: 0.2
vy_std: 0.2
wz_std: 0.4
vx_max: 0.5
vx_min: -0.35
vy_max: 0.5
wz_max: 1.9
iteration_count: 1
prune_distance: 1.7
transform_tolerance: 0.1
temperature: 0.3
gamma: 0.015
motion_model: "DiffDrive"
visualize: true
publish_optimal_trajectory: true

Copy link
Contributor

Choose a reason for hiding this comment

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

No strong opinion, I just thought that we expose in the yaml file everything that is a configurable parameter. But if the philosophy is rather to expose parameters that are likely to be tuned then I also understand that

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@SteveMacenski what do you think?

Copy link
Member

Choose a reason for hiding this comment

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

I'd leave as-is. Half the costmap size is good for most users and if we set it here, then that would be out of date if a user changes the costmap size. I think its actually a better out of the box behavior by not including it for that reason. One less thing to tune.

@doisyg
Copy link
Contributor

doisyg commented Dec 18, 2025

Amazing work!

@tonynajjar
Copy link
Contributor

tonynajjar commented Dec 19, 2025

@mini-1235 I found a bug: Try setting a param e.g. ros2 param set /controller_server FollowPath.vx_max 0.5 while the follow_path action is running, you should get a deadlock -> the param will never be set

Removing that lock fixes it but I know that has its drawbacks - I leave it to you to find best of both worlds

@tonynajjar
Copy link
Contributor

I ran the PR against our tests suite

Please ignore that, something went wrong and I didn't test the right changes. I'll rectify and report back

Okay now I can say that aside from the deadlock issue, tests pass :)

@mini-1235
Copy link
Collaborator Author

@mini-1235 I found a bug: Try setting a param e.g. ros2 param set /controller_server FollowPath.vx_max 0.5 while the follow_path action is running, you should get a deadlock -> the param will never be set

Removing that lock fixes it but I know that has its drawbacks - I leave it to you to find best of both worlds

Thanks for reporting @tonynajjar, I didn't notice that the original implementation was using try_lock. Looking back at the history, I found this comment #2833 (comment). For this PR, I will follow the same approach (try_lock and return if it fails), at least until there's interest from others to change this behavior

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
@tonynajjar
Copy link
Contributor

tonynajjar commented Dec 19, 2025

@mini-1235 I just tried your latest commit quickly and I don't think they fix the deadlocks, did it work for you?

@mini-1235
Copy link
Collaborator Author

@mini-1235 I just tried your latest commit quickly and I don't think they fix the deadlocks, did it work for you?

Yes, FollowPath.vx_max should not be locked because it satisfies the condition here

https://github.com/mini-1235/navigation2/blob/7a7ae73dfd70b54e61f4e30b7938ee1701a5b26d/nav2_controller/src/parameter_handler.cpp#L188-L190

I also tried setting failure_tolerance when FollowPath is running, I see the warning log here

https://github.com/mini-1235/navigation2/blob/7a7ae73dfd70b54e61f4e30b7938ee1701a5b26d/nav2_controller/src/parameter_handler.cpp#L192-L197

@mini-1235
Copy link
Collaborator Author

One subtle issue I see is that the cli reports the parameter update as successful, even though it is actually rejected in our code. I am not sure if it makes sense to move the try_lock into validateParametersCallback so that the update is rejected when we are unable to lock, but that would make it hard for us to release the lock

@tonynajjar
Copy link
Contributor

@mini-1235 I just tried your latest commit quickly and I don't think they fix the deadlocks, did it work for you?

Well, I don't know what changed but now it also works for me 😄 (typical Friday night testing)

Any estimate on when this can be merged? We would then proceed to get #5746 in

@mini-1235
Copy link
Collaborator Author

Any estimate on when this can be merged? We would then proceed to get #5746 in

@SteveMacenski any comments on my last commit? Could you also retrigger the CI for me? I suspect this is just flaky tests and not related to the PR, since all tests pass before I pulled in the main branch. But if it fails again, I will take a look

@tonynajjar
Copy link
Contributor

Could you also retrigger the CI for me?

Maybe you can just push a dummy commit to re-trigger?

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
@mini-1235
Copy link
Collaborator Author

mini-1235 commented Dec 23, 2025

:( test is failing, I will check again tonight

edit: I can sometimes reproduce the failing test locally, this seems to be related to #3098 problem2, so I update the prune distance to 1.0

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
@SteveMacenski SteveMacenski merged commit f3406e2 into ros-navigation:main Dec 29, 2025
17 checks passed
@mini-1235
Copy link
Collaborator Author

Huge thanks to everybody involved in this PR! 🎉

@mini-1235 mini-1235 deleted the feat/goal_checker branch December 30, 2025 11:15
pele1410 pushed a commit to Metal-Shark-Sharktech/navigation2 that referenced this pull request Dec 30, 2025
* Add path goal checker plugin

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use local plan's last pose as end pose

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move path handler from plugin to controller level

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add exact path following in path handler and parameter handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move more parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rotation shim

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* RPP

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Graceful

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* MPPI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove goal from MPPI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update setPlan api

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix naming and doxygen

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove path complete goal checker

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert "Use local plan's last pose as end pose"

This reverts commit 145b2d9.

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add prune distance

Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add dynamic parameter

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert unrelated changes

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* DWB

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert "Remove goal from MPPI"

This reverts commit 5bc19f2da2649cd500ef11c374103f7de5a8116f.

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* New idea

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rename

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use new api

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Make path handler a controller server's plugin

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix dynamic parameters handling

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add mppi path handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add path length checking in position goal checker

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove controller frequency in dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix as suggested

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add api, fix dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add mppi logic in simple path handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Simplify test logic

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add output port in FollowPath

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Always return local plan in odom frame

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert tracking feedback output port

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Create post callback first

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add path length tolerance in dwb critic

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Format

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Activate dynamic parameters callback in Avtivate stage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests for dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Skip

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix as suggested

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update CI key for codecov

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Increase code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Increase code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move from controller_utils to path_utils

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update params and rviz

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update costmap update timeout

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Apply Tony's suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Feedback

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rename

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update rotation shim, path handler api, and constraint check

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Mark transformed global plan as const to prevent mutating it

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_util/include/nav2_util/path_utils.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move to cpp

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update nav2_util/src/path_utils.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix early termination bug

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Cleanup

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Check before logging

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use try lock in controller server

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Retrigger CI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Retrigger CI due to timeout

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update prune distance in keepout filter test

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

---------

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Christopher Thompson <cthompson@metalsharkboats.com>
Lotusymt pushed a commit to Lotusymt/navigation2 that referenced this pull request Jan 16, 2026
* Add path goal checker plugin

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use local plan's last pose as end pose

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move path handler from plugin to controller level

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add exact path following in path handler and parameter handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move more parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rotation shim

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* RPP

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Graceful

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* MPPI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove goal from MPPI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update setPlan api

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix naming and doxygen

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove path complete goal checker

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert "Use local plan's last pose as end pose"

This reverts commit 145b2d9.

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add prune distance

Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add dynamic parameter

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert unrelated changes

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* DWB

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert "Remove goal from MPPI"

This reverts commit 5bc19f2da2649cd500ef11c374103f7de5a8116f.

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* New idea

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rename

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use new api

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Make path handler a controller server's plugin

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix dynamic parameters handling

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add mppi path handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add path length checking in position goal checker

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove controller frequency in dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix as suggested

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add api, fix dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add mppi logic in simple path handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Simplify test logic

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add output port in FollowPath

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Always return local plan in odom frame

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert tracking feedback output port

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Create post callback first

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add path length tolerance in dwb critic

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Format

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Activate dynamic parameters callback in Avtivate stage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests for dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Skip

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix as suggested

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update CI key for codecov

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Increase code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Increase code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move from controller_utils to path_utils

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update params and rviz

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update costmap update timeout

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Apply Tony's suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Feedback

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rename

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update rotation shim, path handler api, and constraint check

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Mark transformed global plan as const to prevent mutating it

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_util/include/nav2_util/path_utils.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move to cpp

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update nav2_util/src/path_utils.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix early termination bug

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Cleanup

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Check before logging

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use try lock in controller server

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Retrigger CI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Retrigger CI due to timeout

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update prune distance in keepout filter test

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

---------

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Pana1v pushed a commit to Arnav-panjla/navigation2 that referenced this pull request Feb 21, 2026
* Add path goal checker plugin

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use local plan's last pose as end pose

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move path handler from plugin to controller level

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add exact path following in path handler and parameter handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move more parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rotation shim

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* RPP

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Graceful

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* MPPI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove goal from MPPI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update setPlan api

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix naming and doxygen

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove path complete goal checker

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert "Use local plan's last pose as end pose"

This reverts commit 145b2d9.

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add prune distance

Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add dynamic parameter

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert unrelated changes

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* DWB

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert "Remove goal from MPPI"

This reverts commit 5bc19f2da2649cd500ef11c374103f7de5a8116f.

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* New idea

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rename

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use new api

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Make path handler a controller server's plugin

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix dynamic parameters handling

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add mppi path handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add path length checking in position goal checker

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Remove controller frequency in dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix as suggested

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add api, fix dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add mppi logic in simple path handler

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Simplify test logic

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add output port in FollowPath

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Always return local plan in odom frame

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert tracking feedback output port

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Create post callback first

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Minor fix

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add path length tolerance in dwb critic

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Format

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Activate dynamic parameters callback in Avtivate stage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests for dynamic parameters

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Skip

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix as suggested

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update CI key for codecov

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Increase code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Linting

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Increase code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move from controller_utils to path_utils

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update params and rviz

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update costmap update timeout

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Apply Tony's suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Feedback

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Rename

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update rotation shim, path handler api, and constraint check

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Mark transformed global plan as const to prevent mutating it

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_util/include/nav2_util/path_utils.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/src/controller_server.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Update nav2_controller/plugins/feasible_path_handler.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Move to cpp

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Revert

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update nav2_util/src/path_utils.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix early termination bug

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Fix tests

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Add code coverage

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Apply suggestions

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Cleanup

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Check before logging

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Lint

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Use try lock in controller server

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Retrigger CI

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Retrigger CI due to timeout

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

* Update prune distance in keepout filter test

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>

---------

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: Maurice Alexander Purnawan <mauricepurnawan@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants