Skip to content

Conversation

@SteveMacenski
Copy link
Member

@SteveMacenski SteveMacenski commented Apr 4, 2025

Closing #2229 and introducing route navigation graph planning to Nav2

TODOs

  • Completed system tests for computation and tracking
  • > 90% test coverage
  • Completed readme docs
  • Cover a few missed easy test coverage gaps -- WOOT 99%
  • Test with all plugins
  • Test simple navigator new route demos, update for new map
  • Get all the linters happy again
  • Configuration, Migration Documentation, concepts, plugins, simple commander API Nav2 route server docs (P1) docs.nav2.org#670
  • BT nodes config guide Adding BT node docs for route server docs.nav2.org#671
  • Merge conflict
  • Integrating Leidos PRs: docs & graph saver rviz
  • Ideas to document (but not demo) in readme.
  • Demo: Route -> Smoother -> Controller for direct route following. First/last Mile to graph if needed.
  • Demo: 3 Stage planning BT: Route -> Global planner to node(s) in the future with compute path to pose // compute path through poses -> trajectory planning
  • Set ticket with future improvements list (see below) Nav2 Route Server Improvements #5082
  • BT XML, Nodes into docs created for demos New Route Server Demo BT Node Docs docs.nav2.org#677
  • Contact beta testers to get feedback
  • BFS nearest neighbors
  • unit testing of BFS to make sure it works properly
  • Functional tesing BFS to make sure it works properly

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
@josephduchesne
Copy link

This is really cool, and I'm actually in the middle of trying to implement a similar system for my current workplace. The key difference is that we're doing per-row coverage of a field, and the route is far less dynamic, since the robot needs to load itself for the specific tour based on what the covered edges require (based on the robot's capcity, battery levels etc.) As a result, most of the nominal route planning work has to be done up-front.

I did have one question thought: How would you use this to plan a circuit that started and ended in the same location?

That seems like a fairly common use case for delivery bots, in addition to coverage based bots like the one I'm working on. As far as I can tell it won't do well if I just ask for a tour of N nodes, ending back at the start. Would a delivery bot that has 3 packages to deliver have to seperately plan a traversal home->A, A->B, B->C, C->home? Our use cases seems to be a variant of that, but since we mostly just traverse one edge at a time as a sub-task, we'd only really use this to get to/from a particular end of a row in the field.

Another question: Are the node edges directional, or can they have their directionality locked? In our use case, our robot can't turn around on some edges (too narrow), but it can go forwards or backwards at any time. Right now I'm constraining that by running a custom controller on those edges, and collision aware off the shelf controllers/planners should work (since collision detection should prevent turning as well). We're just being extra cautious since we don't want a planner/controller to get too adventerous in our customer's fields!

I'll be keeping an eye on this and either migrating my work towards re-using the paradigms you've developed, or offering some input/code to expand the functionality towards handling our use case better if it doesn't align with the current implementation, but is otherwise compatible. This plus the Fields2Cover integration are very adjacent to what we're doing, which means we might see some more ROS2+Nav2 farming bots complimenting ours soon!

The fundamentals seem like what we need, but at least for the time being I think I'll end up just generating the tour and using nav-through-poses.

The sementic replanning on failure is super uesful though, and may alone be worth the complexity of migrating ROS versions (Jazzy->Rolling/Kilted), although the timing is quite poor for us. Our product hits the fields in just a few short weeks (and there's no delaying planting!), and while everything is nicely containerized on our end we'll likely be too slammed with troubleshooting to try this out in May.

@DanyResasco
Copy link

@josephduchesne in types.hpp , the edges are defined on line 133, so I assume the direction depends on how the graph is designed using the tool.

@SteveMacenski
What I don’t understand are the node operations. They seem disconnected from RouteOperations, and I don’t see how they’re being used. I can see the OperationTrigger, but there’s nothing that clearly shows how to define or call a function related to the operation.

@SteveMacenski
Copy link
Member Author

How would you use this to plan a circuit that started and ended in the same location?

You can just give planning requests for home->A, A->B, B->..., ...->home individually. You cannot (at this moment) describe home->home through these nodes A,B,C, so that wouldn't be possible anyway to promise you hit A,B,C through a home->home request. With that said, I've anticipated this need and filed a ticket #5082 which describes this as a possible improvement to add in a requirement to go through a certain edge / node in a request. That could be implemented at the planner level or even doing something similar to ComputePathThroughPoses where we concatenate planning requests on top of each other automatically as part of the request so that you don't have to call the server N times.

Are the node edges directional, or can they have their directionality locked?

All edges are directional. None are bidirectional unless you setup 2x directional nodes making the transition between the two nodes have both options. I didn't include a bidirectional option internally knowing that many times the cost of traversal one way or the other are not the same, and automatically annotating areas with bidirectionality isn't difficult.

@SteveMacenski
Copy link
Member Author

What I don’t understand are the node operations. They seem disconnected from RouteOperations, and I don’t see how they’re being used. I can see the OperationTrigger, but there’s nothing that clearly shows how to define or call a function related to the operation.

They are related concepts. The operations in the node/edge metadata in the graph are behaviors or semantics that the node / edge themselves are requesting to be performed (think: change max speed, turn on lights, open a door). The operation plugins are the things that take those requests and do the appropriate thing that matches the node/edge metadata. On top of that, operation plugins can also choose nodes/edges that they select to operate on that are not annotated in the node/edge (think: collision checking). That is what the query API is indicating: whether this behavior operation is triggered based on a node, edge, or on general query.

I think this is all pretty well described with examples in the readme, but if you look over that in detail but still have questions or something isn't clear, please let me know and I'll work to make things more clear.

@DanyResasco
Copy link

basically, I defined the service name as part of the operations.metadata.service_name , inside the plugin loader (geoJson...) the metadata are saved as a map <string,any> in the Node and triggered based on the enum defined in Operation.

In the case of the open_door, I create a class OpenDoor that inherits RouteOperationClient and listens to the same service_name defined in the Node. I imagine this class should be a plugin or a separate node?
Can you please point out which line of the code this service is called? I don't see where the triggers of the operation metadata are called.

@SteveMacenski
Copy link
Member Author

@josephduchesne
Copy link

I know it's mentioned in #5082 somewhat, but I do feel like it's worth addressing here as well, since changing this post-release would be a fairly breaking change.

Edges being a line is a major restriction that doesn't really make sense to me in the context of the existing Nav2 system. We have "navigate to pose" and "navigate through poses", but no "navigate along exactly two poses".

Wouldn't it be easier to just aim for the following at the outset?

uint16 edgeid
geometry_msgs/Point[] points

This way the existing code could mostly work as is (edge.points = {start,end};)

It is possible to break the nodegraph up into a bunch of single/dual in/out nodes along a curved edge, but that seems like a poor semantic representation of space. In my prior job, I learned slowly that nothing is truly straight in the built environment, and now that I'm doing agricultural bots straight is an even more fanciful idea.

@SteveMacenski
Copy link
Member Author

SteveMacenski commented Apr 23, 2025

That has been noted in the 'future improvements' ticket, actually :-)

#5082

I think there's some effort that's going to go into that, so I think its OK to release it without that. My intention won't be to immediately backport into Jazzy/Humble to give it some 'soaking' time in Rolling before doing so. There's time then before this would be backported that we need to be concerned by API stability. The interfaces are the least of the complexity (i.e. representing them in the files, populating them into files, handling them when generating the paths instead of the straight-lines).

Also, I think I'd probably leave the start/end alone and add an additional field to the message instead that would contain a pre-defined path, if provided. I do wonder though if the Edge message is really needing that path info though. I'm guessing if you want a dense path like that you're using the path field in the action result, not the route field giving the sparse node/edges. Would you prefer to use the sparse route but contain that path info over using the dense path output (assuming both contained that pre-defined path info)?

Any interest in contributing that feature?

@josephduchesne
Copy link

The use case I'm working on is driving between corn rows in a field. The robot drives 0.5 - 2km "straight" between the rows with extremely tight clearance (lots of different layers policing that tolerence), then in between traversing corn rows it generally has moderate (wider navigation paths) to loose tolerence (around the base station), and corresponding vastly different controller/planner/monitoring configurations in nav2.

In reality though, nothing is ever straight so there are waypoints that can be anywhere from 100m apart to 0.5m apart depending on how much of a mess the planter + terrain made of it. Sometimes they swerved around a telephone pole in the middle of the field for example, and that caused all manner of corner cases throughout the otherwise orderly grid.

I'm most likely going to create something akin to ExtractRouteNodesAsGoals, but instead ExtractRouteEdgesAsGoals. Your proposal of having an alternate representation that makes nav_msgs::msg::Goals attachabe might work, althought it's making me think that it might be easier to have a metadata attachment system for edges that can attach multiple scalar and spatial representaitons of each edge. For example, how much the traversal of the edge would mow the lawn for a lawnmower, clean the floor for a floor scrubber, tend the crop for a pesticide sprayer etc.

Similarly, I'm going to need to attach a whole host of conditions to edges, since one somewhat clunky approach would be to just traverse each edge as a single actionserver call (NavigateThroughPoses), since that allows for easy configuration of that edge's specific needs. Your future work task list mentions several things that we've either actively worked on, or are in the middle of implementing. I might be able to align some of our proprietary solutions with the new route server and get approval to contribute them back, although timelines on that might be several months out given our busy season is now.

My half-baked solution to transition smoothing the plan 1-and-a-bit edges at a time, getting the Goals arrays for say edge AB and BC, truncating and interpolating backwards from B in both directions, then using a specialzied planner to compute the transition around B with a radius, and appending that transition to the truncated AB. Once the robot has reached the transition point just into BC, it can compute BC to CD in the same way. This does muddle the constraints on transitions, and I may end up treating transitions as their own seperate entities depending on what works best in practice.

@DanyResasco
Copy link

DanyResasco commented Apr 25, 2025

Hi @SteveMacenski thanks for the explanation, i found where the operation is called.
I have problem with the controller. I modified the example in simple navigator to navigate between differents nodes in the graph and Im encountering a problem when I need to reach a point that is behind the robot and the closet point is outisde the local map, (line 95 of path_handle.cpp). I know my states are in the map since I'm using the coordinates in graph yaml file. Sems is missing a check if the closest point is in map otherwise find one that is in the map.

I removed that line and I can go to A->B B->A and vicerversa. With that line I can only do A->B and B->A but not back again (pic for reference)

State machine transitioning 'GoTo':'reached'-->'GoToPallet'
[stateMachine]: Executing GoTo State [23.8495, 9.21667391304348, 1.0]
[stateMachine]: ******** ROBOT Pose: 12.366315523155066 3.990893347779546
[stateMachine]: Computing and tracking route...
[route_server]: Computing and tracking route to goal.
[route_server]: Route found with 5 nodes and 4 edges
[stateMachine]: ******** ROBOT Pose: 12.366315523155066 3.990893347779546
[stateMachine]: Executing path...
[controller_server]: Received a goal, begin computing control effort.
[controller_server]:************************* Outisde costmap Points (12.593684 , 1.196261) and in map are (0 , 0)
[controller_server]: Resulting plan has 0 poses in it.

Im this pic im trying to reach nodes 21 but the closest point is outisde the map and the local plan fails.
Screenshot from 2025-04-25 11-02-27

@SteveMacenski
Copy link
Member Author

In reality though, nothing is ever straight

True, I have another user of this work that has their nodes throughout the field, not just the start/end of the aisles. That way changes over the length can be accounted for. For example:

image

I'm most likely going to create something akin to ExtractRouteNodesAsGoals, but instead ExtractRouteEdgesAsGoals.

Sounds reasonable! I just don't love duplicating data in the messages too much such that the Path contains the path with the in-line defined edge paths as well as the Route containing the same information. Though, it is broken up into the edge-specific parts of the final path, so that is worth something. Maybe instead it could be the idx of the Path that this edge contains so we don't transmit redundant information over the wire.

it might be easier to have a metadata attachment system for edges

That already exists :-) See the readme on the metadata for nodes and edges in the graph files!

Your future work task list mentions several things that we've either actively worked on, or are in the middle of implementing.

It might be worth having us set up a call to chat about these items and the best path forward to integrate them. It is not currently in my plan to implement any of the future work projects at the moment. I look at these as areas for community contribution to extend the capability, based on some organizations that need those capabilities. It sounds like you're in a good position to fill that gap :-)

Then using a specialzied planner to compute the transition around B with a radius, and appending that transition to the truncated AB.

There's actually work going on to add in a smoother for the edges that the server will publish out automatically in the Path field using splines! @alexanderjyuen can you chime in? The splines are also in a utility function so you could apply that on edges in the BT using the utility in a new BT node rather than using the Path, I suppose (also a good BT node to add into Nav2's library 😉 ).

@alexanderjyuen
Copy link
Contributor

@josephduchesne I am actually working on transition curves sharp corners in a route graph. Right now path_converter has a densify method that linearly interpolates node to node. What I am hoping to do instead is lineally interpolate between two edges when the angle between two edges is sufficiently small (as in they are colinear) and when the angle is large enough, stitch a spline that is jerk continuous at the transitions between the two edges and in the spline itself.

I am still in the preliminary stages of implementing this right now, but we have been able to do this on a relatively large number of nodes on the path. Here is an example image, where Red is the graph edges, and green is the smoothing splines:

image

right now the spline geometry is controlled by the tolerance to the node that we are deviating from. One limitation I do see in the current implementation is that we are not putting limits on kinematics (ie restricting the geometry based on minimum curvature). This is something I'm presently exploring in my own work presently, but I am open to any suggestions as to what the broader nav2_route user base would like to see

@SteveMacenski
Copy link
Member Author

@alexanderjyuen why not do this on all non-colinear edges (of sufficient length that a transition curve can exist)?

@alexanderjyuen
Copy link
Contributor

@SteveMacenski no reason to not do that, if we have guard rails and warnings informing the user the inability to make a transition curve exist due to very densely packed points, then no reason we can't do this on every edge to edge transition that is not colinear.

@SteveMacenski
Copy link
Member Author

SteveMacenski commented Apr 28, 2025

@alexanderjyuen @josephduchesne can we take up this conversation in #5082 or on the Nav2 Slack? I'm planning on merge this today so I want this to be captured somewhere else for 'next steps'

@SteveMacenski SteveMacenski merged commit b6a5387 into main Apr 28, 2025
13 checks passed
@SteveMacenski SteveMacenski deleted the nav2_route_server branch April 28, 2025 23:03
@DanyResasco
Copy link

Hi @SteveMacenski, I still think there is a problem with how the prune function is considered.
This is the graph, from 13 I want to reach 20

Screenshot from 2025-04-29 09-53-00

This is what happened. The edge 13->14 is being pruned because

 [route_server]:  dot_prod > EPSILON: true
 [route_server]:  hypotf(vpx, vpy) = 0.229176
 [route_server]:  [Close enough to edge.](utils::distance(closest_pt_on_edge, start_) <= max_dist_from_edge_) : 1
 [route_server]: Aftr pruned_route.start_node 14

Screenshot from 2025-04-29 09-52-46

I think we should consider how far the next node is (in fact once I pass this to the local planner, it fails because the first node is outside the map

Points (12.593684 , 1.196261) Outside costmap 
[controller_server]: Resulting plan has 0 poses in it.

).
Or how much progress we made on the edge, in my case, progress. = 0.082875.

  float edge_length = hypotf(vrx, vry);
  float progress = hypotf(closest_pt_on_edge.x - first->coords.x,
                        closest_pt_on_edge.y - first->coords.y) / edge_length;
  [route_server]: Route found with 5 nodes and 4 edges

In this case I get the correct path.

Screenshot from 2025-04-29 09-51-45

Let me know what you think, maybe I'm using it wrong, or the nodes should be a specific distance.

@SteveMacenski
Copy link
Member Author

The edge 13->14 is being pruned

That is expected since we're along the edge and we wouldn't want to the robot to back up a few centimeters just to go back forward. I built that feature to prune edges that the robot is already navigating along. Sometime that can be a little bit, or alot.

Maybe you want to increase min_prune_dist_from_start so that its larger than 10cm so we don't prune the start if we're still close by to it (like in this example). Maybe increase that to half a meter or so?

@DanyResasco
Copy link

Hi, I'm not trying to prevent backing up, i'm trying to make sure the robot has a valid nearby path segment to follow (13→14). especially when it still needs to turn to align itself and start moving along it. In the second image I sent, that is not a valid global plan.

@SteveMacenski
Copy link
Member Author

SteveMacenski commented Apr 29, 2025

It is not designed to be a complete global path from the robot's start pose to the goal, its the route segment that the robot should follow in order to navigate to the goal along the route. Please look at that parameter I suggested 😄 You can set that to not prune the start when you're in a set proximity to the start node in the route, which would solve your problem.

In general, I would tune that value to be something like ~3x your goal tolerance value so that if you're only doing on-graph navigation, you never need to connect with freespace planning along requests.

Note that we have examples in the BT package that show that you can easily compute a starting path from the robot's actual start pose to the start of the route both in the behavior tree XML as well as in the C++/python3 API if there's a large discrepancy. This is good when you're navigating on- and off-graph to get back onto the graph when you've left it to obtain some freespace pose.

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

* Add pre-commit

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Add codespell workflow

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

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

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Configure isort

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* add precommit

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Introducing some issues.

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Revert "Introducing some issues."

This reverts commit 5377b656361ef220dce6d6af36013060798f06de.

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Removing pre-commit workflow.

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Fix formatting error

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

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

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Change v31 to v32

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

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

This reverts commit 8a7ca3983a0b93ef5a94e9517e9598de96be2fe6.

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* Rm submodule

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* pre-commit run --all after merge

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

---------

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

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

Signed-off-by: Tatsuro Sakaguchi <tatsuro.sakaguchi@g.softbank.co.jp>

* 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 <michal.sojka@cvut.cz>

* * Parametrize collision checking in nav2_graceful_controller (#5006)

* * Parametrize collision checking in nav2_graceful_controller

Signed-off-by: suchetanrs <suchetan.saravanan@gmail.com>

* * Fix linting errors

Signed-off-by: suchetanrs <suchetan.saravanan@gmail.com>

* * Address PR comments
* Add parameter to dynamic reconfigure

Signed-off-by: suchetanrs <suchetan.saravanan@gmail.com>

* * Add test for the use_collision_detection parameter

Signed-off-by: suchetanrs <suchetan.saravanan@gmail.com>

---------

Signed-off-by: suchetanrs <suchetan.saravanan@gmail.com>

* Update smac planner types (#4927)

* Update smac planner types

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* Test ament_mypy

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* Add packages

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* Fix arg name

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* Add **

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* Specific package

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* re-run ci

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* re-run ci

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

---------

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>

* Declare_parameter_if_not_declared in docking navigator (#5023)

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix naming of launch file

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Fixed naming conventions of launch file

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* navfn : fix performance issue (#4945)

Signed-off-by: Yancey <135342560+Yancey2023@users.noreply.github.com>

* Configured mypy strict for nav2_smac_planner (#5022)

* Configured mypy strict on nav2_smac_planner.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Modify workflow to contain mypy configuration.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added dependency for type support

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Mypy nav2 common (#5031)

* Configured mypy for nav2_common

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_common to the workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Removed all instances of Any.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Fixed unsafe fixes using ruff.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* 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 <leanderdsouza1234@gmail.com>

* Added unbounded map to world function.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added test for mapToWorldNoBounds

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* 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 <mauricepurnawan@gmail.com>

* Linting

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

* Add more information for warning

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

* Add test for coverage

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

* Throw controller exception instead of invalid argument

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

---------

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

* 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 <leanderdsouza1234@gmail.com>

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

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Update pull request template with a testing description section.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

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

* feat(nav2_rotation_shim_controller): add use_path_orientations

Signed-off-by: Kemal Bektas <kemal.bektas@node-robotics.com>

* Update nav2_rotation_shim_controller/src/nav2_rotation_shim_controller.cpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Mypy nav2 bringup (#5040)

* Configured nav2_bringup to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_bringup to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Add service introspection (#4955)

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

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

* Add test for service server, fix repeat declaration

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

* Fix cpplint

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

* Add test for coverage

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

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

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

* Add typedef; Fix costmap cost tool and bt service

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

* Rebase; Add tests for coverage

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

* Fix costmap cost tool; Typedef

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

* Cleanup

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

* Add spin thread

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

* Add spin

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

* Change spin thread to internal executor

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

* Use rclcpp spin when no internal executor

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

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Refactor

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

* Update nav2_util/include/nav2_util/service_client.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Mypy nav2_collision_monitor (#5043)

* Configured nav2_collision_monitor to use mypy strict.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_collision_monitor to the workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Mypy nav2 costmap 2d (#5044)

* Configured mypy to run on the costmap_2d package.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added mypy_nav2_costmap_2d to the workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* 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 <stevenmacenski@gmail.com>

* Update nav2_behavior_tree/plugins/control/recovery_node.cpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Mypy opennav_docking (#5047)

* Define attributes for nav2_msgs.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Configured opennav_docking to use strict mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added opennav_docking to the mypy linting workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Remove unused code in BT utils (#5048)

* Clean set port

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Remove set

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Mypy nav2 lifecycle manager (#5051)

* Configured nav2_lifecycle_manager to be compatible with mypy

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_lifecycle_manager to the workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

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

Signed-off-by: Johannes Plapp <johannes.plapp@logivations.com>

* Mypy nav2 loopback sim (#5052)

* Configured nav2_loopback_sim to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_loopback_sim to the workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Separated packages from list for mypy workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Fix mppi bidirectional settings (#4954)

* Add constraint; fix settings

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

* Add lower and upper bound

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

* Update tests

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

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Mypy nav2 map server (#5058)

* Configured nav2_map_server to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_map_server to the mypy workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

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

* Publishing a full MPPI trajectory if desirable

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* only create publisher when needed

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adjust topics

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Moving for lint

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updating topics in tests

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

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

* Add a double spin

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Add comment

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Move spin to constructor

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Remove duplicate test (#5062)

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

Signed-off-by: Rasmus Larsson <rasmus.larsson@accenture.com>

* Remove docking absolute topic namespaces (#5068)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <leanderdsouza1234@gmail.com>

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

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_simple_commander to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

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

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

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

* Add WaypointStatus message type & Remove MissedWaypoint message type

Signed-off-by: zz990099 <771647586@qq.com>

* Add waypoint_statuses records in RemoveInCollisionGoals/RemovePassedGoals actions

Signed-off-by: zz990099 <771647586@qq.com>

* Add validation tests

Signed-off-by: zz990099 <771647586@qq.com>

* Make NavigateThroughPoses navigator report waypoint statuses information

Signed-off-by: zz990099 <771647586@qq.com>

* Make WaypointFollower use WaypointStatus message type in action result

Signed-off-by: zz990099 <771647586@qq.com>

* Split MISSED status into SKIPPED & FAILED

Signed-off-by: zz990099 <771647586@qq.com>

* fix edge case handle in RemoveInCollision/RemovePassed BT actions

Signed-off-by: zz990099 <771647586@qq.com>

* Add validation test cases for RemoveInCollision&RemovePassed BT actions

Signed-off-by: zz990099 <771647586@qq.com>

* Update RemovePassedGoals/RemoveInCollisionGoals node in Groot XML

Signed-off-by: zz990099 <771647586@qq.com>

---------

Signed-off-by: zz990099 <771647586@qq.com>

* Enable Groot2 monitoring (#5065)

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

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Update to Groot2

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added JSON conversions

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix rebase

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Update to nav_msgs::Goals

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added nav_msgs to json utils

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Add register to types

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix null-dereference

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added Json test

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix some tests

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix flake

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Update package dependency

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Minor fixes

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix test

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Rename groot_publisher_port parameter to groot_server_port

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Minor  fix in tst

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added JSON for waypoint_status

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* 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 <dylan.decoeyer@quimesis.be>

* 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 <dylan.decoeyer@quimesis.be>

---------

Signed-off-by: Dylan De Coeyer <dylan.decoeyer@quimesis.be>

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

* index lookup and comparator optimisation

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* lint

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

---------

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* Add note to Asynchronous nodes (#5035)

* Add warning to some of the nodes

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

* remove unused includes

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

* Add warning to remaining nodes using isStatusActive to initialize

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

* Change to note & update phrsing

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

* replace reset by re-initialize

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

---------

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

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

* for LikelihoodFieldModel

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* for LikelihoodFieldModelProb

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* typo

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* init max_occ_dist in map.c and remove unnecessary condition

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

---------

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* Consistency in Groot 2 (#5078)

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Remove duplicate code (#5080)

* Remove duplicate code

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

* Add twist validation for controller server

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

---------

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

* Added waypointstatus to bt_utils (#5077)

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Lock costmap in getCostsCallback (#5075)

* Add IsStoppedBTNode

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* add topic name + reformat

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* fix comment

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* fix abs

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* remove log

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* add getter functions for raw twist

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* remove unused code

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* use odomsmoother

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* fix formatting

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* update groot

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* Add test

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* reset at success

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* FIX velocity_threshold_

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* Fix stopped Node

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* Add tests  to odometry_utils

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* fix linting

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* lock costmap

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* improvement

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* remove spacing

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* remove unlock

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

---------

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>

* Mypy nav2 system tests (#5083)

* Configured nodes of nav2_system_tests to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Configured launch files of nav2_system_tests to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added nav2_system_tests to the linting workflow.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

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

* Configured tools to be mypy compliant.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added mypy as a pre-commit hook.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Simplified workflow by including all packages with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Dynamic param patterns (#4971)

* redesign dynamic param patterns

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* change cache version

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

* check that parameter of type double are  >=0.0

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

---------

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>

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

* Add force_use_current_pose

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* xml update

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* rename to use_start

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* lint

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* descriptions

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* simplify logic

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

---------

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

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

* [CostmapTopicCollisionChecker] Alternative constructor with footprint

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* raw pointer

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* suggestions from review

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

---------

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <ajtudela@gmail.com>

* Deprecated dock_backwards warning

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Convert dockDirection from bool to enum

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Minor fixes

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Improve deprecated param handling

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Set default to forward

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added tests

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Update nav2_docking/README.md

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Upper and others

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Revert declare_parameters_from_overrides

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added throw on configure plugin

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Remove node_utils

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <vignesh.t@kabam.ai>

* Update pre-commit config changes

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Use Eigen approach instead of OpenCV

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Update pre-commit changes

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Update include header include order

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Remove intermediary alpha matrix

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Add comments for the code understanding

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Fix else braces rule issue

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Create and use alpha_matrix when applying mask

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Update pre-commit changes

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Take flip part out of if-else

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Update pre-commit changes

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

---------

Signed-off-by: Vignesh T <vignesh.t@kabam.ai>

* Fix CI builds (#5104)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

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

* Add dock_database tests

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Add utils test

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Improve filter tests

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Added simple charging tests

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Improve comments

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Fix backward and redo main test

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Change test period to reduce test time

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Revert "Change test period to reduce test time"

This reverts commit ef1555ec43cb4849fd658c32377189cf414ff9b7.

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Delete print pose

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

---------

Signed-off-by: Alberto Tudela <ajtudela@gmail.com>

* Initialize dock backwards (#5114)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

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

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

* 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 <stevenmacenski@gmail.com>

* 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 <alex@polymathrobotics.com>

* added goal_orientation scorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added test for GoalOrientationScorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed goal arguments to const ref

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* linting on goal_orientation_scorer.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* minor updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix a few bugs, clarify a few things

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

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

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* CI turning over

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding error_msg

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updated cmake style to be in line with repo

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Adding afew mores features from TODO list

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <alex@polymathrobotics.com>

* passing tf to route planner

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added null buffer to tests

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* added start_pose_orientation_scorer to CMake

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added StartPoseOrientationScorer as and edge scroer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* adding start_pose_orientation_scorer.cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* removed unnecessary tf_buffer_ from edge_scorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added EdgeType enum class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* all edge scorer plugins changed to use EdgeType

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* edge_scorer modified to use EdgeType enum class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* edge_cost_function base class modified to use EdgeType enum class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* modified tests for new scorer signature

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added method to classify edge type

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* ament_cpplinting

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* linting

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed EdgeType to const ref

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* fixed merge conflict in goal_orientation_scorer.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* fixed merge conflict in edge_cost_function.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* removed TODO from costmap_scorer.cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added RouteData struct to types.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added start_pose to edge scorer hpp and cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* fixed type getStart return type in goal_intent_extractor.cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added passing of start_pose down to scorer in route_planner

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added start pose to base edge cost function class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* underscore fix for goal_intent_extractor_

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed signature of all edge cost functions to take start_pose

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* populating RouteData and passing it into findRoute

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* passing route_data down to getTraversalCost

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* plugins modified to take in route_data, tests updated accordingly

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* added INVALID_CRITIC_USE error code in route actions

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added orientation weighting for cost as an option instead of out right rejection

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* updated docstring for goal orientation scorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* renamed Critic to EdgeScorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed Critic to EdgeScorer in edge cost functions

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed Critic to EdgeScorer, storing exception message in error msg

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed Critic to EdgeScorer in edge scorer tests

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* added doxygen for EdgeType

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* better handle the route situation in the simple commander API

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* completed TB4 migration

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* route updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updating radme

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* one last comment for the day

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding in BT ndoes, tests, and graphs for bringup

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updating error code locations

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* test for route planner complete

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update to use service server from nav2_utils for service introspection

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix small error

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding in additional smoke tests, prototype working of tracking test to be continued

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* completed system tests

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* reenable collision checking

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* remove unnecssary logging

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update package.xml

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* closing test gap

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* a few more lines

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* changing permissions

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix system test

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding in additional coverage

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* finalized test coverage

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding file

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* simple commander demo working

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* python happiness

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* precommit spelling happy

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* wtf pprecommit, why didn't you mention this before

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* spelling

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_route/README.md

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update route_planner.cpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix mistake in merge conflict resolution

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* type check fix

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* lint

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* more design ideas

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <leanderdsouza1234@gmail.com>

* Enabled example_route to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added return definition for route_example_launch.py.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Ported robot_navigator.py to be compliant with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Demo 1 completed

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* second demo completed

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* final linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding route server for test to pass

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding smoother server

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Configured nav2_system_tests to be mypy compliant. (#5085)

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Route Tool Rviz Panel (#4775)

* added route tool skeleton code and gui

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* rviz2 panel can load route graph

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* can add nodes using route tool

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added logic for creating edges

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* graph nodes can be edited, existing edges will still connect if a node is moved

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* can edit edges

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* can delete nodes and edges

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* route graphs can be saved

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed bug for loading in route graphs

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added dynamic text to UI, created launch file and rviz configuration

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed bug for deleting nodes

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* actually fixed node removal bug

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* publishing clicked point populates x and y fields

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* removed debugging log statements

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added check to make sure node/edges exist before editing

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* bug fix

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* migrated route tool to rviz plugin

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* minor refactoring

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added metadata and operations to graph saver so nothing should be erased

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* edited set route service to clear current route before setting new

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update README.md

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* addressed comments

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* documentation cleanup

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* changed copyright

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* addressed comments

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* moved copyright due to compiler error

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* revert removal of files

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added gen ai comment

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed rebasing issue

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fix linting errors

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added export for graph saver dependencies

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added ui file to library

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added nav2_route_core to link libaries

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed cmake error

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed build issues

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* uncrustified

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* cpplint

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added unit tests and fixed bugs

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* increased test coverage

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed linter errors

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed pre-commit errors

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed formatting error

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* double -> single quotes

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added test for using default filepath

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed license

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* addressed comments

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/include/nav2_route/graph_saver.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* linter fix

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

---------

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* fixing linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Updating readme table

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* lint

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding multifloor

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding BFS goal intent search

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix bug

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding unit tests for goal intent search

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fixing collision check

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_simple_commander/nav2_simple_commander/robot_navigator.py

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>
Co-authored-by: alexanderjyuen <103065090+alexanderjyuen@users.noreply.github.com>
Co-authored-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Co-authored-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com>

* Feat/smac planner include orientation flexibility (#4127)

* include functionality to allow multiple goal heading for smac planner

Signed-off-by: stevedanomodolor <stevedan.o.omodolor@gmail.com>

* include missing parameter inclusion

Signed-off-by: stevedanomodolor <stevedan.o.omodolor@gmail.com>

* increase test coverage

Signed-off-by: stevedanomodolor <stevedan.o.omodolor@gmail.com>

---------

Signed-off-by: stevedanomodolor <stevedan.o.omodolor@gmail.com>

* Support zero value for std_wz in mppi controller (#5110)

* Support zero value for std_wz in mppi controller

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

* Update for better readability

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

---------

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

* Update update_ci_image.yaml to include jazzy build (#5120)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update update_ci_image.yaml to add humble

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* message_filters hpp headers have been backported (#5127)

* message_filters hpp headers have been backported

Signed-off-by: Tim Clephas <tim.clephas@nobleo.nl>

* fixup! message_filters hpp headers have been backported

Signed-off-by: Tim Clephas <tim.clephas@nobleo.nl>

---------

Signed-off-by: Tim Clephas <tim.clephas@nobleo.nl>

* Update PULL_REQUEST_TEMPLATE.md

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Bibtex formatting (#5126)

* Align citation text to be within the bullet points.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Align formatting to match bibtex guide.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Add justified spacing for readability.
Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* 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 <padhupradheep@gmail.com>

* Added keepout filter for depot and warehouse maps (#5125)

* Added keepout region to warehouse map.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Support keepout_map as a launch argument.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added a dictionary to switch between tb4 maps.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added dedicated launch file for map modifiers.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added support for depot keepout filter.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Updated keepout masks for depot and warehouse.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Renamed keepout filter launch arguments to keepout zones.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Renamed keepout map launch argument to keepout mask

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Renamed map_modifier.launch.py to keepout_zone_launch.py.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Preserve duplication of nodes for keepout test.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Removed padding from keepout zones from depot map.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added keepout zone at the centre of the warehouse map.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added utility script to handle namespaces for keepout_filter.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Used utility function to simplify namespace calls.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Moved joinWithParentNamespace to the Layer object.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Fix lattice backward 180 deg issue (#5141)

Signed-off-by: selazarev <slazarev8@gmail.com>

* [lifecycle_manager] expose service_timeout (#4838)

* [lifecycle_manager] expose service_timeout

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* restore original change_state, and detect non_default_timeout

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* lint

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* spell

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* collapse change_state and remove non_default_timeout logic

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>

* Update nav2_util/src/lifecycle_service_client.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Guillaume Doisy <doisyg@users.noreply.github.com>

---------

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Signed-off-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Update simple_action_server.hpp for description (#5150)

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* reset motion model (#5149)

Signed-off-by: Adi Vardi <adi.vardi@enway.ai>

* 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 <tony.najjar.1997@gmail.com>

* Update nav2_mppi_controller/src/critics/cost_critic.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Tony Najjar <t03578624@gmail.com>

* Update nav2_smac_planner/include/nav2_smac_planner/utils.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Tony Najjar <t03578624@gmail.com>

---------

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Tony Najjar <t03578624@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Nils-ChristianIseke <nilsmailiseke@gmail.com>
Signed-off-by: Tatsuro Sakaguchi <tatsuro.sakaguchi@g.softbank.co.jp>
Signed-off-by: Michal Sojka <michal.sojka@cvut.cz>
Signed-off-by: suchetanrs <suchetan.saravanan@gmail.com>
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
Signed-off-by: Alberto Tudela <ajtudela@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Yancey <135342560+Yancey2023@users.noreply.github.com>
Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Signed-off-by: Johannes Plapp <johannes.plapp@logivations.com>
Signed-off-by: Rasmus Larsson <rasmus.larsson@accenture.com>
Signed-off-by: zz990099 <771647586@qq.com>
Signed-off-by: Dylan De Coeyer <dylan.decoeyer@quimesis.be>
Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Signed-off-by: Adi Vardi <adi.vardi@enway.ai>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Vignesh T <vignesh.t@kabam.ai>
Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>
Signed-off-by: stevedanomodolor <stevedan.o.omodolor@gmail.com>
Signed-off-by: Tim Clephas <tim.clephas@nobleo.nl>
Signed-off-by: Pradheep <padhupradheep@gmail.com>
Signed-off-by: selazarev <slazarev8@gmail.com>
Signed-off-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Signed-off-by: Tony Najjar <t03578624@gmail.com>
Co-authored-by: Nils-Christian Iseke <48475933+Nils-ChristianIseke@users.noreply.github.com>
Co-authored-by: Tatsuro Sakaguchi <tatsuro.sakaguchi@g.softbank.co.jp>
Co-authored-by: Michal Sojka <michal.sojka@cvut.cz>
Co-authored-by: Michael Carlstrom <rmc@carlstrom.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Yancey <135342560+Yancey2023@users.noreply.github.com>
Co-authored-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Co-authored-by: mini-1235 <mauricepurnawan@gmail.com>
Co-authored-by: Kemal Bektas <34746077+bektaskemal@users.noreply.github.com>
Co-authored-by: Kemal Bektas <kemal.bektas@node-robotics.com>
Co-authored-by: Johannes Plapp <johannes.plapp@logivations.com>
Co-authored-by: RasmusLar <101558931+RasmusLar@users.noreply.github.com>
Co-authored-by: zz99 <86543200+zz990099@users.noreply.github.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Adi Vardi <57910756+adivardi@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Sandeep Dutta <quark01@gmail.com>
Co-authored-by: Vignesh T <vignesh.t@kabam.ai>
Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>
Co-authored-by: alexanderjyuen <103065090+alexanderjyuen@users.noreply.github.com>
Co-authored-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>
Co-authored-by: Tim Clephas <tim.clephas@nobleo.nl>
Co-authored-by: moooeeeep <moooeeeep@users.noreply.github.com>
Co-authored-by: Pradheep Krishna <padhupradheep@gmail.com>
Co-authored-by: Semyon <slazarev8@gmail.com>
SakshayMahna pushed a commit to SakshayMahna/navigation2 that referenced this pull request Jun 8, 2025
* 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 (ros-navigation#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 <stevenmacenski@gmail.com>

* 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 (ros-navigation#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 (ros-navigation#3472)

* turtlebot3 world graph

* remove line

* add line back

* scripts for route (ros-navigation#3490)

* tmp push for moving computers

* Nav2 route server goal orientation scorer (ros-navigation#4866)

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added goal_orientation scorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added test for GoalOrientationScorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed goal arguments to const ref

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* linting on goal_orientation_scorer.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* minor updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix a few bugs, clarify a few things

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

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

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* CI turning over

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding error_msg

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updated cmake style to be in line with repo

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Adding afew mores features from TODO list

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

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

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* passing tf to route planner

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added null buffer to tests

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* added start_pose_orientation_scorer to CMake

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added StartPoseOrientationScorer as and edge scroer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* adding start_pose_orientation_scorer.cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* removed unnecessary tf_buffer_ from edge_scorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added EdgeType enum class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* all edge scorer plugins changed to use EdgeType

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* edge_scorer modified to use EdgeType enum class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* edge_cost_function base class modified to use EdgeType enum class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* modified tests for new scorer signature

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added method to classify edge type

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* ament_cpplinting

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* linting

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed EdgeType to const ref

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* fixed merge conflict in goal_orientation_scorer.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* fixed merge conflict in edge_cost_function.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* removed TODO from costmap_scorer.cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added RouteData struct to types.hpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added start_pose to edge scorer hpp and cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* fixed type getStart return type in goal_intent_extractor.cpp

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added passing of start_pose down to scorer in route_planner

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added start pose to base edge cost function class

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* underscore fix for goal_intent_extractor_

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed signature of all edge cost functions to take start_pose

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* populating RouteData and passing it into findRoute

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* passing route_data down to getTraversalCost

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* plugins modified to take in route_data, tests updated accordingly

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

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

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* added INVALID_CRITIC_USE error code in route actions

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* added orientation weighting for cost as an option instead of out right rejection

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* updated docstring for goal orientation scorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* renamed Critic to EdgeScorer

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed Critic to EdgeScorer in edge cost functions

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed Critic to EdgeScorer, storing exception message in error msg

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* changed Critic to EdgeScorer in edge scorer tests

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* 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 <alex@polymathrobotics.com>

* added doxygen for EdgeType

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>

* updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* better handle the route situation in the simple commander API

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* completed TB4 migration

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* route updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updating radme

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* one last comment for the day

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding in BT ndoes, tests, and graphs for bringup

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updating error code locations

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* test for route planner complete

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update to use service server from nav2_utils for service introspection

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix small error

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding in additional smoke tests, prototype working of tracking test to be continued

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* updates

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* completed system tests

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* reenable collision checking

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* remove unnecssary logging

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update package.xml

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* closing test gap

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* a few more lines

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* changing permissions

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix system test

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding in additional coverage

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* finalized test coverage

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding file

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* simple commander demo working

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* python happiness

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* precommit spelling happy

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* wtf pprecommit, why didn't you mention this before

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* spelling

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_route/README.md

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update route_planner.cpp

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix mistake in merge conflict resolution

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* type check fix

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* lint

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* more design ideas

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Configuring nav2_route_server branch to be mypy compliant (ros-navigation#5081)

* Added definitions for nav2_msgs actions and messages.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Enabled example_route to be compatible with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Added return definition for route_example_launch.py.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Ported robot_navigator.py to be compliant with mypy.

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

---------

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Demo 1 completed

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* second demo completed

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* final linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding route server for test to pass

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding smoother server

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Configured nav2_system_tests to be mypy compliant. (ros-navigation#5085)

Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>

* Route Tool Rviz Panel (ros-navigation#4775)

* added route tool skeleton code and gui

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* rviz2 panel can load route graph

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* can add nodes using route tool

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added logic for creating edges

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* graph nodes can be edited, existing edges will still connect if a node is moved

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* can edit edges

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* can delete nodes and edges

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* route graphs can be saved

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed bug for loading in route graphs

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added dynamic text to UI, created launch file and rviz configuration

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed bug for deleting nodes

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* actually fixed node removal bug

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* publishing clicked point populates x and y fields

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* removed debugging log statements

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added check to make sure node/edges exist before editing

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* bug fix

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* migrated route tool to rviz plugin

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* minor refactoring

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added metadata and operations to graph saver so nothing should be erased

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* edited set route service to clear current route before setting new

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update README.md

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* addressed comments

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* documentation cleanup

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* changed copyright

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* addressed comments

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* moved copyright due to compiler error

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* revert removal of files

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added gen ai comment

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed rebasing issue

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fix linting errors

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added export for graph saver dependencies

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added ui file to library

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added nav2_route_core to link libaries

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed cmake error

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed build issues

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* uncrustified

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* cpplint

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added unit tests and fixed bugs

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* increased test coverage

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed linter errors

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed pre-commit errors

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed formatting error

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* double -> single quotes

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* added test for using default filepath

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* fixed license

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* addressed comments

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/include/nav2_route/graph_saver.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* Update nav2_route/src/plugins/graph_file_savers/geojson_graph_file_saver.cpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

* linter fix

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>

---------

Signed-off-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* fixing linting

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Updating readme table

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* lint

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding multifloor

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding BFS goal intent search

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fix bug

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* adding unit tests for goal intent search

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* fixing collision check

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

* Update nav2_simple_commander/nav2_simple_commander/robot_navigator.py

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Signed-off-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>
Co-authored-by: alexanderjyuen <103065090+alexanderjyuen@users.noreply.github.com>
Co-authored-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Co-authored-by: John Chrosniak <chrosniakj@gmail.com>
Co-authored-by: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com>
Signed-off-by: Sakshay Mahna <sakshum19@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

Development

Successfully merging this pull request may close these issues.

8 participants