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

@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 <[email protected]>

* Add codespell workflow

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

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

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

* Configure isort

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

* add precommit

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

* Introducing some issues.

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

* Revert "Introducing some issues."

This reverts commit 5377b656361ef220dce6d6af36013060798f06de.

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

* Removing pre-commit workflow.

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

* Fix formatting error

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

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

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

* Change v31 to v32

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

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

This reverts commit 8a7ca3983a0b93ef5a94e9517e9598de96be2fe6.

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

* Rm submodule

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

* pre-commit run --all after merge

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

---------

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

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

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

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

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

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

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

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

* * Parametrize collision checking in nav2_graceful_controller (#5006)

* * Parametrize collision checking in nav2_graceful_controller

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

* * Fix linting errors

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

* * Address PR comments
* Add parameter to dynamic reconfigure

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

* * Add test for the use_collision_detection parameter

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

---------

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

* Update smac planner types (#4927)

* Update smac planner types

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

* Test ament_mypy

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

* Add packages

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

* Fix arg name

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

* Add **

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

* Specific package

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

* re-run ci

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

* re-run ci

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

---------

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

* Declare_parameter_if_not_declared in docking navigator (#5023)

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

* Fix naming of launch file

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

* Fixed naming conventions of launch file

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

* navfn : fix performance issue (#4945)

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

* Configured mypy strict for nav2_smac_planner (#5022)

* Configured mypy strict on nav2_smac_planner.

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

* Modify workflow to contain mypy configuration.

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

* Added dependency for type support

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

---------

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

* Mypy nav2 common (#5031)

* Configured mypy for nav2_common

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

* Added nav2_common to the workflow.

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

* Removed all instances of Any.

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

* Fixed unsafe fixes using ruff.

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

---------

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

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

* Migrate costmap bound check to clearArea for STVL override

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

* Added unbounded map to world function.

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

* Added test for mapToWorldNoBounds

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

---------

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

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

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

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

* Linting

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

* Add more information for warning

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

* Add test for coverage

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

* Throw controller exception instead of invalid argument

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

---------

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

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

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

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

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

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

* Update pull request template with a testing description section.

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

---------

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

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

* feat(nav2_rotation_shim_controller): add use_path_orientations

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

* Update nav2_rotation_shim_controller/src/nav2_rotation_shim_controller.cpp

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

---------

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

* Mypy nav2 bringup (#5040)

* Configured nav2_bringup to be compatible with mypy.

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

* Added nav2_bringup to the linting workflow.

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

---------

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

* Add service introspection (#4955)

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

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

* Add test for service server, fix repeat declaration

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

* Fix cpplint

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

* Add test for coverage

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

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

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

* Add typedef; Fix costmap cost tool and bt service

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

* Rebase; Add tests for coverage

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

* Fix costmap cost tool; Typedef

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

* Cleanup

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

* Add spin thread

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

* Add spin

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

* Change spin thread to internal executor

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

* Use rclcpp spin when no internal executor

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

* Update nav2_util/include/nav2_util/service_client.hpp

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

* Update nav2_util/include/nav2_util/service_client.hpp

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

* Update nav2_util/include/nav2_util/service_client.hpp

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

* Update nav2_util/include/nav2_util/service_client.hpp

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

* Refactor

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

* Update nav2_util/include/nav2_util/service_client.hpp

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

---------

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

* Mypy nav2_collision_monitor (#5043)

* Configured nav2_collision_monitor to use mypy strict.

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

* Added nav2_collision_monitor to the workflow.

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

---------

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

* Mypy nav2 costmap 2d (#5044)

* Configured mypy to run on the costmap_2d package.

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

* Added mypy_nav2_costmap_2d to the workflow.

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

---------

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

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

* Halt recovery action when main action succeeds to reset status

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

* Update nav2_behavior_tree/plugins/control/recovery_node.cpp

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

---------

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

* Mypy opennav_docking (#5047)

* Define attributes for nav2_msgs.

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

* Configured opennav_docking to use strict mypy.

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

* Added opennav_docking to the mypy linting workflow.

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

---------

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

* Remove unused code in BT utils (#5048)

* Clean set port

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

* Remove set

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

---------

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

* Mypy nav2 lifecycle manager (#5051)

* Configured nav2_lifecycle_manager to be compatible with mypy

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

* Added nav2_lifecycle_manager to the workflow.

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

---------

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

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

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

* Mypy nav2 loopback sim (#5052)

* Configured nav2_loopback_sim to be compatible with mypy.

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

* Added nav2_loopback_sim to the workflow.

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

* Separated packages from list for mypy workflow.

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

---------

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

* Fix mppi bidirectional settings (#4954)

* Add constraint; fix settings

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

* Add lower and upper bound

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

* Update tests

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

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

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

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

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

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

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

* Update nav2_mppi_controller/include/nav2_mppi_controller/motion_models.hpp

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

---------

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

* Mypy nav2 map server (#5058)

* Configured nav2_map_server to be mypy compliant.

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

* Added nav2_map_server to the mypy workflow.

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

---------

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

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

* Publishing a full MPPI trajectory if desirable

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

* only create publisher when needed

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

* adjust topics

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

* Moving for lint

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

* updating topics in tests

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

---------

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

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

* Add a double spin

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

* Add comment

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

* Move spin to constructor

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

---------

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

* Remove duplicate test (#5062)

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

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

* Remove docking absolute topic namespaces (#5068)

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

* Mypy nav2 simple commander (#5059)

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

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

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

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

* Added nav2_simple_commander to the linting workflow.

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

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

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

---------

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

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

* Add WaypointStatus message type & Remove MissedWaypoint message type

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

* Add waypoint_statuses records in RemoveInCollisionGoals/RemovePassedGoals actions

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

* Add validation tests

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

* Make NavigateThroughPoses navigator report waypoint statuses information

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

* Make WaypointFollower use WaypointStatus message type in action result

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

* Split MISSED status into SKIPPED & FAILED

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

* fix edge case handle in RemoveInCollision/RemovePassed BT actions

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

* Add validation test cases for RemoveInCollision&RemovePassed BT actions

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

* Update RemovePassedGoals/RemoveInCollisionGoals node in Groot XML

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

---------

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

* Enable Groot2 monitoring (#5065)

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

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

* Update to Groot2

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

* Added JSON conversions

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

* Fix rebase

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

* Update to nav_msgs::Goals

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

* Added nav_msgs to json utils

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

* Add register to types

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

* Fix null-dereference

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

* Added Json test

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

* Fix some tests

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

* Fix flake

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

* Update package dependency

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

* Minor fixes

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

* Fix test

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

* Rename groot_publisher_port parameter to groot_server_port

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

* Minor  fix in tst

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

* Added JSON for waypoint_status

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

---------

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

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

* Fix incorrect world <-> map coordinates conversions

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

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

* nav2_smac_planner: fix smoother test when path is in collision

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

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

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

---------

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

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

* index lookup and comparator optimisation

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

* lint

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

---------

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

* Add note to Asynchronous nodes (#5035)

* Add warning to some of the nodes

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

* remove unused includes

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

* Add warning to remaining nodes using isStatusActive to initialize

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

* Change to note & update phrsing

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

* replace reset by re-initialize

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

---------

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

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

* for LikelihoodFieldModel

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

* for LikelihoodFieldModelProb

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

* typo

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

* init max_occ_dist in map.c and remove unnecessary condition

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

---------

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

* Consistency in Groot 2 (#5078)

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

* Remove duplicate code (#5080)

* Remove duplicate code

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

* Add twist validation for controller server

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

---------

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

* Added waypointstatus to bt_utils (#5077)

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

* Lock costmap in getCostsCallback (#5075)

* Add IsStoppedBTNode

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

* add topic name + reformat

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

* fix comment

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

* fix abs

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

* remove log

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

* add getter functions for raw twist

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

* remove unused code

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

* use odomsmoother

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

* fix formatting

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

* update groot

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

* Add test

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

* reset at success

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

* FIX velocity_threshold_

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

* Fix stopped Node

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

* Add tests  to odometry_utils

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

* fix linting

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

* lock costmap

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

* improvement

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

* remove spacing

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

* remove unlock

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

---------

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

* Mypy nav2 system tests (#5083)

* Configured nodes of nav2_system_tests to be mypy compliant.

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

* Configured launch files of nav2_system_tests to be mypy compliant.

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

* Added nav2_system_tests to the linting workflow.

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

---------

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

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

* Configured tools to be mypy compliant.

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

* Added mypy as a pre-commit hook.

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

* Simplified workflow by including all packages with mypy.

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

---------

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

* Dynamic param patterns (#4971)

* redesign dynamic param patterns

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

* change cache version

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

* check that parameter of type double are  >=0.0

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

---------

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

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

* Add force_use_current_pose

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

* xml update

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

* rename to use_start

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

* lint

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

* descriptions

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

* simplify logic

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

---------

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

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

* [CostmapTopicCollisionChecker] Alternative constructor with footprint

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

* raw pointer

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

* suggestions from review

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

---------

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

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

* merged changes from humble for goal.header fix

* reverted back, error in merge

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

* reverted to navfn_planner.cpp to origin/main

* merged navfn_planner.cpp from humble

* fixed the merge

* Docking backwards as plugin param (#5079)

* Replace dock_backwards_ param with dock plugin function

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

* Deprecated dock_backwards warning

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

* Convert dockDirection from bool to enum

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

* Minor fixes

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

* Improve deprecated param handling

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

* Set default to forward

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

* Added tests

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

* Update nav2_docking/README.md

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

* Upper and others

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

* Revert declare_parameters_from_overrides

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

* Added throw on configure plugin

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

* Remove node_utils

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

---------

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

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

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

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

* Update pre-commit config changes

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

* Use Eigen approach instead of OpenCV

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

* Update pre-commit changes

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

* Update include header include order

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

* Remove intermediary alpha matrix

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

* Add comments for the code understanding

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

* Fix else braces rule issue

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

* Create and use alpha_matrix when applying mask

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

* Update pre-commit changes

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

* Take flip part out of if-else

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

* Update pre-commit changes

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

---------

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

* Fix CI builds (#5104)

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

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

* Add dock_database tests

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

* Add utils test

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

* Improve filter tests

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

* Added simple charging tests

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

* Improve comments

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

* Fix backward and redo main test

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

* Change test period to reduce test time

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

* Revert "Change test period to reduce test time"

This reverts commit ef1555ec43cb4849fd658c32377189cf414ff9b7.

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

* Delete print pose

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

---------

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

* Initialize dock backwards (#5114)

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

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

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

* Nav2 Route Server (#5056)

* skeleton of main server and visualization tools

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

* initial planner complete

* added path converter

* fix conversion util

* adding change graph service

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

* moved to src directory

* linting

* contextual error codes + default bringup

* adding rviz default views of rgaph

* adding missing exception file

* fix segfault that was previously optimized out

* whoops, removing duplicate plugin registration

* remove nanoflann TODO

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

* fix indexing bug for certain request types

* adding costmap scoring route plugin

* readme todo list updates

* readme details

* adding unit test coverage

* add dynamic cost adjustment by application systems

* adding in operations API

* minor fixes

* add compute and track route action def

* initial prototype compiling and basic interface working for tracking action

* updates to TODO list

* state management

* remove divide by zero potential error

* added in working mostly  demog

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

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

* conventions

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

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

* adding complete unit testing for collision monitor

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

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

* sharing common shared action server code in main server

* refactor, added goal intent extractor, updated necessary tests

* updating todo notes

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

* a little cleanup

* adding readme

* completing unit tests

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

* Nav2 route server parser (#3398)

* aws graph working

* graph parser first stage

* naming cleanup

* remove

* update graph file

* added fileExists to api

* moved filepath param

* vect to string

* parser cleanup

* debug log

* added tests for geojson graph parser

* added logging to parser

* cleanup

* catch exceptions in route service

* code review

* undo cmake

* added graph loader test

* undo cmake

* code review

* frame convesion support

* comments

* fix

* Parse edge and node metadata

* parse operations

* completed metadata parsing

* added recursion for parser

* code review

* undo cmake

* support vectors

* refactor tests

* fix

* general cleanup

* code review

* added timestamp

---------

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

* adding unit tests for complex handling of reentrant requests

* adding demos for python3 API

* adding conditions if graph is empty in routing request

* working MVP tracking demos working

* adding integration testing expanded TODO list before beta testers

* Example graph (#3438)

* added simple graph

* added metadata and operations to graph

* update

* add space

* added test for sample_graph

* added to readme

* testing system-wise, mostly working

* update remaining TODO list

* updates for pruning starting in rerouting

* adding a full roster of default plugins

* complete tested feature set

* adding configuration guide to readme

* adding plugins info

* testing collapse

* smaller titles

* adding becnhmarking script

* adding metrics to readme

* adding image for architecture

* resize

* resize

* adding design info

* new image

* turtlebot3 world graph (#3472)

* turtlebot3 world graph

* remove line

* add line back

* scripts for route (#3490)

* tmp push for moving computers

* Nav2 route server goal orientation scorer (#4866)

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

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

* added goal_orientation scorer

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

* added test for GoalOrientationScorer

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

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

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

* changed goal arguments to const ref

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

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

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

* linting on goal_orientation_scorer.hpp

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

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

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

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

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

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

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

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

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

---------

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

* minor updates

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

* fix a few bugs, clarify a few things

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

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

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

* CI turning over

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

* adding error_msg

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

* updated cmake style to be in line with repo

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

* Adding afew mores features from TODO list

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

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

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

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

* passing tf to route planner

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

* added null buffer to tests

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

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

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

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

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

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

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

* added start_pose_orientation_scorer to CMake

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

* added StartPoseOrientationScorer as and edge scroer

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

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

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

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

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

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

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

* adding start_pose_orientation_scorer.cpp

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

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

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

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

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

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

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

* removed unnecessary tf_buffer_ from edge_scorer

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

* added EdgeType enum class

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

* all edge scorer plugins changed to use EdgeType

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

* edge_scorer modified to use EdgeType enum class

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

* edge_cost_function base class modified to use EdgeType enum class

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

* modified tests for new scorer signature

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

* added method to classify edge type

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

* ament_cpplinting

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

* linting

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

* changed EdgeType to const ref

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

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

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

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

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

* fixed merge conflict in goal_orientation_scorer.hpp

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

* fixed merge conflict in edge_cost_function.hpp

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

* removed TODO from costmap_scorer.cpp

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

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

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

* added RouteData struct to types.hpp

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

* added start_pose to edge scorer hpp and cpp

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

* fixed type getStart return type in goal_intent_extractor.cpp

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

* added passing of start_pose down to scorer in route_planner

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

* added start pose to base edge cost function class

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

* underscore fix for goal_intent_extractor_

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

* changed signature of all edge cost functions to take start_pose

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

* populating RouteData and passing it into findRoute

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

* passing route_data down to getTraversalCost

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

* plugins modified to take in route_data, tests updated accordingly

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

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

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

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

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

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

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

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

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

* added INVALID_CRITIC_USE error code in route actions

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

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

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

* updated docstring for goal orientation scorer

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

* renamed Critic to EdgeScorer

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

* changed Critic to EdgeScorer in edge cost functions

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

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

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

* changed Critic to EdgeScorer in edge scorer tests

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

* changed INVALID_CRITIC_USE to IVALID_EDGE_SCORER_US in actions

* changed RouteData and route_data to RouteRequest and route_request respectively, added doxygen for RouteRequest struct

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

* added doxygen for EdgeType

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

---------

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

* updates

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

* better handle the route situation in the simple commander API

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

* completed TB4 migration

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

* route updates

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

* updating radme

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

* one last comment for the day

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

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

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

* updating error code locations

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

* test for route planner complete

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

* Update to use service server from nav2_utils for service introspection

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

* fix small error

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

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

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

* updates

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

* completed system tests

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

* reenable collision checking

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

* remove unnecssary logging

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

* linting

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

* Update package.xml

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

* closing test gap

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

* a few more lines

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

* changing permissions

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

* fix system test

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

* adding in additional coverage

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

* finalized test coverage

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

* adding file

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

* simple commander demo working

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

* python happiness

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

* precommit spelling happy

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

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

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

* spelling

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

* Update nav2_route/README.md

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

* Update route_planner.cpp

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

* fix mistake in merge conflict resolution

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

* type check fix

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

* lint

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

* linting

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

* more design ideas

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

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

* Added definitions for nav2_msgs actions and messages.

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

* Enabled example_route to be compatible with mypy.

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

* Added return definition for route_example_launch.py.

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

* Ported robot_navigator.py to be compliant with mypy.

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

---------

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

* Demo 1 completed

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

* second demo completed

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

* final linting

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

* adding route server for test to pass

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

* adding smoother server

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

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

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

* Route Tool Rviz Panel (#4775)

* added route tool skeleton code and gui

Signed-off-by: John Chrosniak <[email protected]>

* rviz2 panel can load route graph

Signed-off-by: John Chrosniak <[email protected]>

* can add nodes using route tool

Signed-off-by: John Chrosniak <[email protected]>

* added logic for creating edges

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* can edit edges

Signed-off-by: John Chrosniak <[email protected]>

* can delete nodes and edges

Signed-off-by: John Chrosniak <[email protected]>

* route graphs can be saved

Signed-off-by: John Chrosniak <[email protected]>

* fixed bug for loading in route graphs

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* fixed bug for deleting nodes

Signed-off-by: John Chrosniak <[email protected]>

* actually fixed node removal bug

Signed-off-by: John Chrosniak <[email protected]>

* publishing clicked point populates x and y fields

Signed-off-by: John Chrosniak <[email protected]>

* removed debugging log statements

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* bug fix

Signed-off-by: John Chrosniak <[email protected]>

* migrated route tool to rviz plugin

Signed-off-by: John Chrosniak <[email protected]>

* minor refactoring

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* Update README.md

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* documentation cleanup

Signed-off-by: John Chrosniak <[email protected]>

* changed copyright

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* moved copyright due to compiler error

Signed-off-by: John Chrosniak <[email protected]>

* revert removal of files

Signed-off-by: John Chrosniak <[email protected]>

* added gen ai comment

Signed-off-by: John Chrosniak <[email protected]>

* fixed rebasing issue

Signed-off-by: John Chrosniak <[email protected]>

* fix linting errors

Signed-off-by: John Chrosniak <[email protected]>

* added export for graph saver dependencies

Signed-off-by: John Chrosniak <[email protected]>

* added ui file to library

Signed-off-by: John Chrosniak <[email protected]>

* added nav2_route_core to link libaries

Signed-off-by: John Chrosniak <[email protected]>

* fixed cmake error

Signed-off-by: John Chrosniak <[email protected]>

* fixed build issues

Signed-off-by: John Chrosniak <[email protected]>

* uncrustified

Signed-off-by: John Chrosniak <[email protected]>

* cpplint

Signed-off-by: John Chrosniak <[email protected]>

* added unit tests and fixed bugs

Signed-off-by: John Chrosniak <[email protected]>

* increased test coverage

Signed-off-by: John Chrosniak <[email protected]>

* fixed linter errors

Signed-off-by: John Chrosniak <[email protected]>

* fixed pre-commit errors

Signed-off-by: John Chrosniak <[email protected]>

* fixed formatting error

Signed-off-by: John Chrosniak <[email protected]>

* double -> single quotes

Signed-off-by: John Chrosniak <[email protected]>

* added test for using default filepath

Signed-off-by: John Chrosniak <[email protected]>

* fixed license

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/include/nav2_route/graph_saver.hpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* linter fix

Signed-off-by: John Chrosniak <[email protected]>

---------

Signed-off-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* fixing linting

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

* Updating readme table

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

* lint

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

* adding multifloor

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

* adding BFS goal intent search

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

* fix bug

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

* adding unit tests for goal intent search

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

* fixing collision check

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

* Update nav2_simple_commander/nav2_simple_commander/robot_navigator.py

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

---------

Signed-off-by: Alexander Yuen <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>
Co-authored-by: Joshua Wallace <[email protected]>
Co-authored-by: alexanderjyuen <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>

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

* include functionality to allow multiple goal heading for smac planner

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

* include missing parameter inclusion

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

* increase test coverage

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

---------

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

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

* Support zero value for std_wz in mppi controller

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

* Update for better readability

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

---------

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

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

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

* Update update_ci_image.yaml to add humble

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

* message_filters hpp headers have been backported (#5127)

* message_filters hpp headers have been backported

Signed-off-by: Tim Clephas <[email protected]>

* fixup! message_filters hpp headers have been backported

Signed-off-by: Tim Clephas <[email protected]>

---------

Signed-off-by: Tim Clephas <[email protected]>

* Update PULL_REQUEST_TEMPLATE.md

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

* Bibtex formatting (#5126)

* Align citation text to be within the bullet points.

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

* Align formatting to match bibtex guide.

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

* Add justified spacing for readability.
Signed-off-by: Leander Stephen D'Souza <[email protected]>

---------

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

* Make sure fixed curvature lookahead distance doesn't overshoot distance to cusp (#5134)

Related issue: https://github.com/ros-navigation/navigation2/issues/5098

* removing the start navigation message in the paused state from rviz buttons (#5137)

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

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

* Added keepout region to warehouse map.

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

* Support keepout_map as a launch argument.

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

* Added a dictionary to switch between tb4 maps.

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

* Added dedicated launch file for map modifiers.

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

* Added support for depot keepout filter.

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

* Updated keepout masks for depot and warehouse.

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

* Renamed keepout filter launch arguments to keepout zones.

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

* Renamed keepout map launch argument to keepout mask

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

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

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

* Preserve duplication of nodes for keepout test.

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

* Removed padding from keepout zones from depot map.

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

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

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

* Added utility script to handle namespaces for keepout_filter.

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

* Used utility function to simplify namespace calls.

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

* Moved joinWithParentNamespace to the Layer object.

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

---------

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

* Fix lattice backward 180 deg issue (#5141)

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

* [lifecycle_manager] expose service_timeout (#4838)

* [lifecycle_manager] expose service_timeout

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

* restore original change_state, and detect non_default_timeout

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

* lint

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

* spell

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

* collapse change_state and remove non_default_timeout logic

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

* Update nav2_util/src/lifecycle_service_client.cpp

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

---------

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

* Update simple_action_server.hpp for description (#5150)

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

* reset motion model (#5149)

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

* Show error if inflation radius is smaller than circumscribed radius (#5148)

* Warn if inflation radius is smaller than circumscribed radius

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

* Update nav2_mppi_controller/src/critics/cost_critic.cpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>

* Update nav2_smac_planner/include/nav2_smac_planner/utils.hpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>

---------

Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Nils-ChristianIseke <[email protected]>
Signed-off-by: Tatsuro Sakaguchi <[email protected]>
Signed-off-by: Michal Sojka <[email protected]>
Signed-off-by: suchetanrs <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>
Signed-off-by: Alberto Tudela <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Yancey <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: mini-1235 <[email protected]>
Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Johannes Plapp <[email protected]>
Signed-off-by: Rasmus Larsson <[email protected]>
Signed-off-by: zz990099 <[email protected]>
Signed-off-by: Dylan De Coeyer <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Adi Vardi <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: Vignesh T <[email protected]>
Signed-off-by: Alexander Yuen <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>
Signed-off-by: stevedanomodolor <[email protected]>
Signed-off-by: Tim Clephas <[email protected]>
Signed-off-by: Pradheep <[email protected]>
Signed-off-by: selazarev <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Co-authored-by: Nils-Christian Iseke <[email protected]>
Co-authored-by: Tatsuro Sakaguchi <[email protected]>
Co-authored-by: Michal Sojka <[email protected]>
Co-authored-by: Michael Carlstrom <[email protected]>
Co-authored-by: Alberto Tudela <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: Yancey <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: mini-1235 <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Johannes Plapp <[email protected]>
Co-authored-by: RasmusLar <[email protected]>
Co-authored-by: zz99 <[email protected]>
Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Adi Vardi <[email protected]>
Co-authored-by: Tony Najjar <[email protected]>
Co-authored-by: Sandeep Dutta <[email protected]>
Co-authored-by: Vignesh T <[email protected]>
Co-authored-by: Joshua Wallace <[email protected]>
Co-authored-by: alexanderjyuen <[email protected]>
Co-authored-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>
Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]>
Co-authored-by: Tim Clephas <[email protected]>
Co-authored-by: moooeeeep <[email protected]>
Co-authored-by: Pradheep Krishna <[email protected]>
Co-authored-by: Semyon <[email protected]>
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 <[email protected]>

* adding unit tests for complex handling of reentrant requests

* adding demos for python3 API

* adding conditions if graph is empty in routing request

* working MVP tracking demos working

* adding integration testing expanded TODO list before beta testers

* Example graph (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 <[email protected]>

* added goal_orientation scorer

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

* added test for GoalOrientationScorer

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

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

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

* changed goal arguments to const ref

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

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

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

* linting on goal_orientation_scorer.hpp

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

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

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

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

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

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

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

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

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

---------

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

* minor updates

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

* fix a few bugs, clarify a few things

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

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

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

* CI turning over

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

* adding error_msg

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

* updated cmake style to be in line with repo

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

* Adding afew mores features from TODO list

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

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

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

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

* passing tf to route planner

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

* added null buffer to tests

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

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

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

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

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

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

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

* added start_pose_orientation_scorer to CMake

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

* added StartPoseOrientationScorer as and edge scroer

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

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

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

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

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

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

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

* adding start_pose_orientation_scorer.cpp

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

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

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

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

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

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

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

* removed unnecessary tf_buffer_ from edge_scorer

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

* added EdgeType enum class

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

* all edge scorer plugins changed to use EdgeType

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

* edge_scorer modified to use EdgeType enum class

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

* edge_cost_function base class modified to use EdgeType enum class

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

* modified tests for new scorer signature

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

* added method to classify edge type

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

* ament_cpplinting

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

* linting

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

* changed EdgeType to const ref

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

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

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

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

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

* fixed merge conflict in goal_orientation_scorer.hpp

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

* fixed merge conflict in edge_cost_function.hpp

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

* removed TODO from costmap_scorer.cpp

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

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

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

* added RouteData struct to types.hpp

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

* added start_pose to edge scorer hpp and cpp

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

* fixed type getStart return type in goal_intent_extractor.cpp

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

* added passing of start_pose down to scorer in route_planner

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

* added start pose to base edge cost function class

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

* underscore fix for goal_intent_extractor_

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

* changed signature of all edge cost functions to take start_pose

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

* populating RouteData and passing it into findRoute

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

* passing route_data down to getTraversalCost

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

* plugins modified to take in route_data, tests updated accordingly

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

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

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

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

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

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

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

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

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

* added INVALID_CRITIC_USE error code in route actions

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

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

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

* updated docstring for goal orientation scorer

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

* renamed Critic to EdgeScorer

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

* changed Critic to EdgeScorer in edge cost functions

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

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

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

* changed Critic to EdgeScorer in edge scorer tests

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

* changed INVALID_CRITIC_USE to IVALID_EDGE_SCORER_US in actions

* changed RouteData and route_data to RouteRequest and route_request respectively, added doxygen for RouteRequest struct

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

* added doxygen for EdgeType

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

---------

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

* updates

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

* better handle the route situation in the simple commander API

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

* completed TB4 migration

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

* route updates

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

* updating radme

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

* one last comment for the day

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

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

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

* updating error code locations

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

* test for route planner complete

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

* Update to use service server from nav2_utils for service introspection

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

* fix small error

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

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

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

* updates

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

* completed system tests

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

* reenable collision checking

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

* remove unnecssary logging

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

* linting

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

* Update package.xml

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

* closing test gap

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

* a few more lines

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

* changing permissions

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

* fix system test

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

* adding in additional coverage

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

* finalized test coverage

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

* adding file

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

* simple commander demo working

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

* python happiness

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

* precommit spelling happy

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

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

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

* spelling

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

* Update nav2_route/README.md

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

* Update route_planner.cpp

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

* fix mistake in merge conflict resolution

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

* type check fix

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

* lint

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

* linting

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

* more design ideas

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

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

* Added definitions for nav2_msgs actions and messages.

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

* Enabled example_route to be compatible with mypy.

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

* Added return definition for route_example_launch.py.

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

* Ported robot_navigator.py to be compliant with mypy.

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

---------

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

* Demo 1 completed

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

* second demo completed

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

* final linting

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

* adding route server for test to pass

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

* adding smoother server

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

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

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

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

* added route tool skeleton code and gui

Signed-off-by: John Chrosniak <[email protected]>

* rviz2 panel can load route graph

Signed-off-by: John Chrosniak <[email protected]>

* can add nodes using route tool

Signed-off-by: John Chrosniak <[email protected]>

* added logic for creating edges

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* can edit edges

Signed-off-by: John Chrosniak <[email protected]>

* can delete nodes and edges

Signed-off-by: John Chrosniak <[email protected]>

* route graphs can be saved

Signed-off-by: John Chrosniak <[email protected]>

* fixed bug for loading in route graphs

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* fixed bug for deleting nodes

Signed-off-by: John Chrosniak <[email protected]>

* actually fixed node removal bug

Signed-off-by: John Chrosniak <[email protected]>

* publishing clicked point populates x and y fields

Signed-off-by: John Chrosniak <[email protected]>

* removed debugging log statements

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* bug fix

Signed-off-by: John Chrosniak <[email protected]>

* migrated route tool to rviz plugin

Signed-off-by: John Chrosniak <[email protected]>

* minor refactoring

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

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

Signed-off-by: John Chrosniak <[email protected]>

* Update README.md

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* documentation cleanup

Signed-off-by: John Chrosniak <[email protected]>

* changed copyright

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* moved copyright due to compiler error

Signed-off-by: John Chrosniak <[email protected]>

* revert removal of files

Signed-off-by: John Chrosniak <[email protected]>

* added gen ai comment

Signed-off-by: John Chrosniak <[email protected]>

* fixed rebasing issue

Signed-off-by: John Chrosniak <[email protected]>

* fix linting errors

Signed-off-by: John Chrosniak <[email protected]>

* added export for graph saver dependencies

Signed-off-by: John Chrosniak <[email protected]>

* added ui file to library

Signed-off-by: John Chrosniak <[email protected]>

* added nav2_route_core to link libaries

Signed-off-by: John Chrosniak <[email protected]>

* fixed cmake error

Signed-off-by: John Chrosniak <[email protected]>

* fixed build issues

Signed-off-by: John Chrosniak <[email protected]>

* uncrustified

Signed-off-by: John Chrosniak <[email protected]>

* cpplint

Signed-off-by: John Chrosniak <[email protected]>

* added unit tests and fixed bugs

Signed-off-by: John Chrosniak <[email protected]>

* increased test coverage

Signed-off-by: John Chrosniak <[email protected]>

* fixed linter errors

Signed-off-by: John Chrosniak <[email protected]>

* fixed pre-commit errors

Signed-off-by: John Chrosniak <[email protected]>

* fixed formatting error

Signed-off-by: John Chrosniak <[email protected]>

* double -> single quotes

Signed-off-by: John Chrosniak <[email protected]>

* added test for using default filepath

Signed-off-by: John Chrosniak <[email protected]>

* fixed license

Signed-off-by: John Chrosniak <[email protected]>

* addressed comments

Signed-off-by: John Chrosniak <[email protected]>

* Update nav2_route/include/nav2_route/graph_saver.hpp

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

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

Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>

* linter fix

Signed-off-by: John Chrosniak <[email protected]>

---------

Signed-off-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>

* fixing linting

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

* Updating readme table

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

* lint

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

* adding multifloor

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

* adding BFS goal intent search

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

* fix bug

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

* adding unit tests for goal intent search

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

* fixing collision check

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

* Update nav2_simple_commander/nav2_simple_commander/robot_navigator.py

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

---------

Signed-off-by: Alexander Yuen <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: John Chrosniak <[email protected]>
Co-authored-by: Joshua Wallace <[email protected]>
Co-authored-by: alexanderjyuen <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: John Chrosniak <[email protected]>
Co-authored-by: Saikrishna Bairamoni <[email protected]>
Signed-off-by: Sakshay Mahna <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants