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

[behavior_tree] Add generate_nav2_tree_nodes_xml #4073

Merged

Conversation

facontidavide
Copy link
Contributor

@facontidavide facontidavide commented Jan 26, 2024

Basic Info

Info Please fill out this column
Ticket(s) this addresses -
Primary OS tested on Ubuntu 22.04
Robotic platform tested on Not applicable
Does this PR contain AI generated software? No

Description of contribution in a few bullet points

Currently the file nav2_tree_nodes.xml is updated by hand by the user. This is tedious and error-prone (current version is also outdated); furthermore, this is not what BT.CPP allows this step to be automated.

This PR introduces a tiny utility (meant to be used by the developers) to auto-generate that file.

In more details:

  • Make the list of plugins available to the c++ code, using the cmake command configure_file.
  • Use this feature to simplify one of the tests.
  • Add generate_nav2_tree_nodes_xml

Description of documentation updates required from your changes

To be discussed. Where do you want me to add this documentation?


Future work that may be required in bullet points

This PR is not adding he modifications to nav2_tree_nodes.xml

This will be done in the a future PR

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 features OR changes to existing behaviors are reflected in the tuning guide
  • Check that any new functions have Doxygen added
  • Check that any new features have test coverage
  • Check that any new plugins is added to the plugins page
  • If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists

Signed-off-by: Davide Faconti <[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.

@@ -0,0 +1,47 @@
// Copyright (c) 2024 Davide Faconti
Copy link
Member

@SteveMacenski SteveMacenski Jan 26, 2024

Choose a reason for hiding this comment

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

I assume this is automatically executed on build? The quick look at configure_file doesn't make me think i does, but I assume it does or else this workflow would add extra steps

I think this filename is misleading, its not generating the XML but just storing the index of default Nav2-included BT nodes. How about generate_nav2_node_list.cpp?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think this filename is misleading, its not generating the XML

it is literally creating an XML with std::ofstream ... but I can change the name, of course.

I assume this is automatically executed on build?

No, it is not. The developer modifying a BT Node should run it and overwrite the previous XML with the new one.

But right now it is even worse, because we are asking to write the XML by hand and there is no guaranty of consistency (as a demonstration, right now it is WRONG in the main branch)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

this workflow would add extra steps

That step ("double check if nav2_tree_node.xml is still valid") is there, but people just forget to do it.
This approach lowers the effort.

Maybe I can find a way to run it automatically, I don't know...

Copy link
Member

@SteveMacenski SteveMacenski Jan 26, 2024

Choose a reason for hiding this comment

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

No, it is not. The developer modifying a BT Node should run it and overwrite the previous XML with the new one.

Oh, then this should be removed. You cannot expect the CI system or users to run some script just to get their systems working or unit tests compiling. This doesn't work for CI nor a reasonable developer workflow.

If this was autogenerated, then I love it! But it has to be executed somewhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sorry, there is a misunderstanding from my side and maybe I answered something wrong
CI, user code and unit test will work just fine!!!
The file that is autogenerated is plugin_list.hpp. That is everything you need.

What I am talking about is the file nav2_tree_node.xml , that only Groot2 requires.

Copy link
Member

@SteveMacenski SteveMacenski Jan 26, 2024

Choose a reason for hiding this comment

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

Oh ok. So this does generate the index that the plugins_list needs for the BT test + BT navigator. Cool then this works.

Now you got confused by this utility's name 😉 Rename suggestion to generate_nav2_node_list.cpp FTW

@facontidavide
Copy link
Contributor Author

facontidavide commented Jan 26, 2024

To put in perspective, I think you might want to have a look at the autogenerated file
nav2_tree_nodes.zip

@SteveMacenski
Copy link
Member

SteveMacenski commented Jan 26, 2024

But is this not the one groot wants? If not, then I don't really care how similar they are (just a purely pragmatist's standpoint)

@facontidavide
Copy link
Contributor Author

yes, it is the file needed by Groot. This will always be correct, unlike the one that people edit by hand

@SteveMacenski
Copy link
Member

SteveMacenski commented Jan 26, 2024

Got it. Perhaps in a follow up PR, there is a way to have the source file update when compiled as well or as a CI job? Not required, but would round it off.

I was thinking also potentially having a nav2_behavior_tree unit test that checks the source version and the recently compiled version and fails the test if they don't match. That way there's something that pops up in CI if they're out of sync. That sounds comparatively easier since CI has the source + compiled versions available and executed in the workspace root

"No" is fine too. Just making the test / BT Navigator list update automatically is still an improvement

@facontidavide
Copy link
Contributor Author

I was thinking also potentially having a nav2_behavior_tree unit test that checks the source version and the recently compiled version and fails the test if they don't match.

It is a good idea and should be quite easy to implement. I will see if I can add it to this PR

@SteveMacenski
Copy link
Member

Any update :-)

@facontidavide
Copy link
Contributor Author

facontidavide commented Feb 16, 2024

You tell me :)

The idea of adding verification to CI is nice, but with your permission, I prefer to keep it for a future PR.

What do you think is missing, to merge this one?
Do you want me to also add the generated XML in this PR (kind of make sense, right?)

@SteveMacenski
Copy link
Member

I will see if I can add it to this PR

I was waiting on this. Yes, it can be a follow up PR.

Do you want me to also add the generated XML in this PR (kind of make sense, right?)

Yes, but also update the BT Navigator's default BT plugins to use this like you do for the unit test.

Will this all work when we distribute as binaries? I haven't used configure_file with templates like this before, so I'm seeing how configure_file populates BT_PLUGIN_LIST with plugin_libs -- but how is plugin_libs set when this is executed on a build to contain all of the BT plugins? I'm not quite sure how this works even for local source builds, please explain.

@facontidavide
Copy link
Contributor Author

facontidavide commented Feb 16, 2024

Will this all work when we distribute as binaries? I haven't used configure_file with templates like this before,

yes, it will, the string with the list of plugins is compiled into the code.

Cmake will generate a header file and this header file is used when compiling the binary.

@SteveMacenski
Copy link
Member

yes, it will, the string with the list of plugins is compiled into the code.

Please point to me where. I believe you, I just need to maintain this so I need to understand what's going on. I don't see where its compiled as part of these changes. Where does that string plugins_list come from? Is that something we set in Nav2 or BT.CPP is doing? Will this cover all BT plugins compiled in a workspace or only for this package? How would a user add in their own to this?

@facontidavide
Copy link
Contributor Author

Let me explain 😄

So, CMAKE is aware of the list of plugins... because it is the one responsible for compiling them!

Also, conveniently, we have a list of plugins names in the variable ${plugin_libs}

https://github.com/ros-planning/navigation2/blob/main/nav2_behavior_tree/CMakeLists.txt#L219

We want to avoid repeating ourselves, by copying this string from CMake to C++ at compilation.

A potential solution could be to pass it as a definition with target_compile_definitions.

Another solution is the one presented here.
configure_file is a command that allows us to autogenerate files, using a template file.

In this case, we want to autogenerate a header file, containing an harcoded string that should be exactly the same as ${plugin_libs} in CMakeLists.txt.

Our template file contain this code:

namespace nav2::details 
{
  const char* BT_PLUGIN_LIST = "@plugin_libs@";
}

@plugin_libs@ will be substituted by the content of ${plugin_libs}

This is the code generated by CMake:
plugins_list.zip

Now, we can include this file as a regular header file!

Every time a new plugin is added to CMakeLists.txt (and the variable ${plugin_libs}), the string nav2::details::BT_PLUGIN_LIST will be updated auto-magically !!!

This is more maintanable than the code in master, where people should remember to update those lists in multiple places.

Since all this happens before compilation (header generation) and later at compilation time, there is no problem with distributing only the binaries.

I hope I helped you understand.
Simple tutorial here: https://cliutils.gitlab.io/modern-cmake/chapters/basics/comms.html

@SteveMacenski
Copy link
Member

SteveMacenski commented Feb 17, 2024

Thank you, sorry to make you spell it out - I was thinking you were fully setting up these library paths, not leveraging what we already have setup in Nav2. I scoured your changes so many times looking for something subtle I missed I assumed something must be going on in the BT.CPP side that required your knowledge 😆

This is sensible for defaults, but a real pain in the butt for users that need to add in their own BT.CPP nodes. So I suggest the following action:

  • We continue to have the parameter for BT nodes to add https://github.com/ros-planning/navigation2/blob/main/nav2_bt_navigator/src/bt_navigator.cpp#L129
  • But now, we use your utility boost::split(plugin_libs, nav2::details::BT_PLUGIN_LIST, boost::is_any_of(";")); to append into it all of Nav2's nodes
  • Then, we can also change the plugin_lib_names default type to an empty vector of strings
  • Then, we can tell users that this variable is only for user customized BT nodes and that all Nav2 nodes come for free when using the Nav2 BT navigator

You have some linting issues: https://app.circleci.com/pipelines/github/ros-planning/navigation2/10851/workflows/b171820c-fed3-4296-b3c9-4eb591fb4b0d/jobs/34087/tests.

Fix linting + add that widget into the BT Navigator and we can merge!

If you also pull in main, those test failures should disappear.

@facontidavide
Copy link
Contributor Author

Correct.

This is not mutually exclusive with user's plugins, as you said. I can change the name of the variable to a more verbose BT_BUILTIN_PLUGIN_LIST

@SteveMacenski
Copy link
Member

Sure, a new name would work, but please do the additional changes so that this is a complete solution.

@facontidavide
Copy link
Contributor Author

Check the latest commit. I believe this is what you suggested

Copy link
Contributor

mergify bot commented Feb 19, 2024

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

@SteveMacenski
Copy link
Member

SteveMacenski commented Feb 19, 2024

A ton of tests are failing: https://app.circleci.com/pipelines/github/ros-planning/navigation2/11003/workflows/a78174e2-dd8f-4547-b3b9-dc7f1b9843aa/jobs/34506/tests

I suspect it has to do with plugin_lib_names: [], because there are no entries, it probably can't decide what the type is to meet the static typing of parameters requirements.

TODO STEVE

  • Migration guide about change
  • Configuration guide parameter update description

@facontidavide
Copy link
Contributor Author

damn! let me investigate

Copy link

codecov bot commented Feb 20, 2024

Codecov Report

Attention: 11 lines in your changes are missing coverage. Please review.

Comparison is base (c59e0f3) 90.30% compared to head (a6325e5) 90.22%.
Report is 1 commits behind head on main.

Files Patch % Lines
...behavior_tree/src/generate_nav2_tree_nodes_xml.cpp 0.00% 11 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4073      +/-   ##
==========================================
- Coverage   90.30%   90.22%   -0.09%     
==========================================
  Files         431      432       +1     
  Lines       19394    19406      +12     
==========================================
- Hits        17514    17509       -5     
- Misses       1880     1897      +17     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@SteveMacenski
Copy link
Member

I updated the docs, that fix and we can merge

Signed-off-by: Davide Faconti <[email protected]>
@SteveMacenski SteveMacenski merged commit 8458c8a into ros-navigation:main Feb 20, 2024
11 of 13 checks passed
ajtudela pushed a commit to grupo-avispa/navigation2 that referenced this pull request Mar 7, 2024
* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
stevedanomodolor pushed a commit to stevedanomodolor/navigation2 that referenced this pull request Mar 25, 2024
* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
Signed-off-by: stevedan <[email protected]>
stevedanomodolor added a commit to stevedanomodolor/navigation2 that referenced this pull request Mar 25, 2024
Signed-off-by: stevedan <[email protected]>

New MPPI Cost Critic (Contrib: Brice Renaudeau) (ros-navigation#4090)

* Share code

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

* Update inflation_cost_critic.hpp

- copyright
- ifndef

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

* fix lint cpp

- extra space

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

* Fix Smac Planner confined collision checker  (ros-navigation#4055)

* Update collision_checker.cpp

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

* Fix tests

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

* Update test_a_star.cpp

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

---------

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

* Prevent analytic expansions from shortcutting Smac Planner feasible paths (ros-navigation#3962)

* a potential solution to smac shortcutting

* costmap reoslution

* some fixes

* completed prototype

* some fixes for collision detection and performance

* completing shortcutting fix

* updating tests

* adding readme

---------

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

* change pointer free order in amcl to avoid use-after-free bug mentioned in ros-navigation#4068 (ros-navigation#4070)

Signed-off-by: GoesM <[email protected]>
Co-authored-by: GoesM <[email protected]>
Signed-off-by: Brice <[email protected]>

* [Smac Planner] Massive Improvement of Behavior for SE2 Footprint Checking (ie non-circular robots) In Confined Settings (ros-navigation#4067)

* prototype to test SE2 footprint H improvements

* some fixes

* fixed

* invert logic

* Working final prototype to be tested

* complete unit test conversions

* Update inflation_layer.hpp

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

---------

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

* Adding new Smac paper to readme

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

* Update README.md

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

* [behavior_tree] don't repeat yourself in "blackboard->set" (ros-navigation#4074)

* don't repeat yourself: templates in tests

Signed-off-by: Davide Faconti <[email protected]>

* misse change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
Signed-off-by: Brice <[email protected]>

* Allow path end pose deviation revive (ros-navigation#4065)

* Support stitching paths in compute path to poses

* Update nav2_planner/src/planner_server.cpp

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

* Rename parameter to allow_path_through_poses_goal_deviation

* Fix description

* restore nav2_params

* missing whitespace

* lint fix

* removed parameter

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

* Update planner_server.hpp

* Update planner_server.cpp

---------

Signed-off-by: gg <[email protected]>
Co-authored-by: pepisg <[email protected]>
Co-authored-by: Pedro Alejandro González <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Signed-off-by: Brice <[email protected]>

* Updated code to use getInflationLayer() method (ros-navigation#4076)

* updated code to use getInflationLayer method

Signed-off-by: Jose Faria <[email protected]>

* Fix linting

Signed-off-by: Jose Faria <[email protected]>

---------

Signed-off-by: Jose Faria <[email protected]>
Signed-off-by: Brice <[email protected]>

* 1594 twist stamped publisher (ros-navigation#4077)

* Add TwistStamped to controller_server via TwistPublisher util

* Add a new util class for publishing either Twist or TwistStamped
* Add a new parameter for selecting to stamp the twist data
* Consume TwistPublisher in nav2_controller

Signed-off-by: Ryan Friedman <[email protected]>

* Fix small issues

* Unused variable
* Incorrect doxygen

Signed-off-by: Ryan Friedman <[email protected]>

* Remove stored node and assert

Signed-off-by: Ryan Friedman <[email protected]>

* Add tests for node

* Facing timeout even though it does the same thing as velocity smoother test

Signed-off-by: Ryan Friedman <[email protected]>

* Add missing spin call to solve timeout

Signed-off-by: Ryan Friedman <[email protected]>

* Fix copyright (me instead of intel)

Signed-off-by: Ryan Friedman <[email protected]>

* Add full test coverage with subscriber

Signed-off-by: Ryan Friedman <[email protected]>

* Remove unused rclcpp fixture

* Can't use it due to needing to join the pub thread after rclcpp shuts down

Signed-off-by: Ryan Friedman <[email protected]>

* Use TwistStamped in nav2_behaviors

Signed-off-by: Ryan Friedman <[email protected]>

* Use TwistStamped in collision monitor node

Signed-off-by: Ryan Friedman <[email protected]>

* Add TwistStamped readme updates to velocity smoother

Signed-off-by: Ryan Friedman <[email protected]>

* Add TwistSubscriber implementation

Signed-off-by: Ryan Friedman <[email protected]>

* Fix syntax errors

Signed-off-by: Ryan Friedman <[email protected]>

* Use TwistSubscriber in test_velocity_smoother

Signed-off-by: Ryan Friedman <[email protected]>

* Use TwistSubscriber in assisted_teleop

Signed-off-by: Ryan Friedman <[email protected]>

* Use TwistSubscriber in collision monitor node

Signed-off-by: Ryan Friedman <[email protected]>

* Use TwistSubscriber in velocity smoother

Signed-off-by: Ryan Friedman <[email protected]>

* Remove unused code

Signed-off-by: Ryan Friedman <[email protected]>

* add timestamp and frame_id to TwistStamped message

* Add missing utility include

Signed-off-by: Ryan Friedman <[email protected]>

* Document TwistPublisher and TwistSubscriber usage

Signed-off-by: Ryan Friedman <[email protected]>

* Use pass-by-reference

* Instead of std::move(std::unique_ptr<TwistStamped>)

Signed-off-by: Ryan Friedman <[email protected]>

* Finish twist subscriber tests

Signed-off-by: Ryan Friedman <[email protected]>

* Add other constructor and docs

Signed-off-by: Ryan Friedman <[email protected]>

* Fix linter issues

Signed-off-by: Ryan Friedman <[email protected]>

* Manually fix paren alignment

Signed-off-by: Ryan Friedman <[email protected]>

* Remove GSoC reference

Signed-off-by: Ryan Friedman <[email protected]>

* Document twist bool param in README

Signed-off-by: Ryan Friedman <[email protected]>

* Handle twistPublisher in collision monitor

* Implement behavior in the stamped callback
* Unstamped callback calls the stamped callback
* Switch to unique pointer for publisher

Signed-off-by: Ryan Friedman <[email protected]>

* Convert to using TwistStamped interally

* Use incoming twistStamped timestamp if available
* Convert all internal representations to use TwistStamped

Signed-off-by: Ryan Friedman <[email protected]>

* Remove nav2_util usage instructions

Signed-off-by: Ryan Friedman <[email protected]>

* Remove unused Twist only subscriber

Signed-off-by: Ryan Friedman <[email protected]>

* More linter fixes

Signed-off-by: Ryan Friedman <[email protected]>

* Prefer working with unique_ptr for cmd_vel

* This makes it easier to switch to std::move instead of dereference on
  publish

Signed-off-by: Ryan Friedman <[email protected]>

* Completing twist stamped migration

* shared to unique ptr

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

* twist add stamps and properly propogated

* nav2_util: fix for compiling with clang

- Resolve error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move]

Signed-off-by: Rhys Mainwaring <[email protected]>

---------

Signed-off-by: Ryan Friedman <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Rhys Mainwaring <[email protected]>
Co-authored-by: pedro-fuoco <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: Rhys Mainwaring <[email protected]>
Signed-off-by: Brice <[email protected]>

* Change costmap_queue to shared library (ros-navigation#4072)

Signed-off-by: cybaol <[email protected]>
Signed-off-by: Brice <[email protected]>

* fix include of hpp

Signed-off-by: Brice Renaudeau <[email protected]>

* inflation cost optmiizations and cleanu

* rename, add defaults, and docs

* smoke test addition

* lintg

* normalize weight

* update readme

* increment cache

* Update cost_critic.hpp

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

* Update cost_critic.cpp

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

---------

Signed-off-by: Brice <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: GoesM <[email protected]>
Signed-off-by: Davide Faconti <[email protected]>
Signed-off-by: gg <[email protected]>
Signed-off-by: Jose Faria <[email protected]>
Signed-off-by: Ryan Friedman <[email protected]>
Signed-off-by: Rhys Mainwaring <[email protected]>
Signed-off-by: cybaol <[email protected]>
Signed-off-by: Brice Renaudeau <[email protected]>
Co-authored-by: BriceRenaudeau <[email protected]>
Co-authored-by: GoesM <[email protected]>
Co-authored-by: GoesM <[email protected]>
Co-authored-by: Davide Faconti <[email protected]>
Co-authored-by: Joshua Wallace <[email protected]>
Co-authored-by: pepisg <[email protected]>
Co-authored-by: Pedro Alejandro González <[email protected]>
Co-authored-by: jncfa <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: pedro-fuoco <[email protected]>
Co-authored-by: Rhys Mainwaring <[email protected]>
Co-authored-by: Kino <[email protected]>

[behavior_tree] support both ports and blackboard (ros-navigation#4060)

* check result of blackboard->get and use halTree

Signed-off-by: Davide Faconti <[email protected]>

* remove unused header

Signed-off-by: Davide Faconti <[email protected]>

* BT: add port inputs when missing and use getInputPortOrBlackboard

Signed-off-by: Davide Faconti <[email protected]>

* add description

Signed-off-by: Davide Faconti <[email protected]>

* change return value of getInputPortOrBlackboard

Signed-off-by: Davide Faconti <[email protected]>

* updated tree XML

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>

Use ament_export_targets for all targets (ros-navigation#4112)

* Matches new internal ALIAS targets
* Use ALIAS targets for all internal linkage
* Remove unnecessary calls to ament_target_dependencies in test code
* Export includes in proper folders for overlays in colcon

Signed-off-by: Ryan Friedman <[email protected]>

adding new Friends of Nav2 Sponsors!

Update README.md (ros-navigation#4114)

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

CI green P3 (ros-navigation#4117)

Refactors `possible_inscribed_cost` to `possible_circumscribed_cost` in collision checker for smac_planner and mppi_controller (ros-navigation#4113). (ros-navigation#4118)

* Utilizes circumscribed radius to assess potential collision points on the robot.
* Ensures safety when the robot's center is outside the circumscribed radius, eliminating additional checks and optimizing CPU usage.
Signed-off-by: Alan Xue <[email protected]>

Added cast to float to getClosestAngularBin return for behavior consistency (ros-navigation#4123)

* Added cast to float to getClosestAngularBin return for behavior consistency.

Signed-off-by: Hunter Song <[email protected]>

* Revised test name

Signed-off-by: Hunter Song <[email protected]>

---------

Signed-off-by: Hunter Song <[email protected]>

Adding context to MPPI readme

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

[behavior_tree] Add generate_nav2_tree_nodes_xml (ros-navigation#4073)

* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>

Fix compilation with clang (ros-navigation#4131)

Signed-off-by: Ramon Wijnands <[email protected]>

code improvement based on feedback. Name changes and minor code improvement

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

Fix goal handle was not freed correctly (ros-navigation#4137)

* Fix goal handle was not freed correctly

* Update nav2_util/include/nav2_util/simple_action_server.hpp

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

---------

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

Adding Nvidia as Gold Sponsor! (ros-navigation#4144)

Prevent a possible segmentation fault (ros-navigation#4141) (ros-navigation#4147)

* Prevent a possible segmentation fault

Signed-off-by: Joni Pöllänen <[email protected]>

* Cleanup

Signed-off-by: Joni Pöllänen <[email protected]>

---------

Signed-off-by: Joni Pöllänen <[email protected]>

Updating stereolabs logo (ros-navigation#4158)

Update README.md

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

behavior_tree: migration to BT.CPP 4.5.x (ros-navigation#4128)

* behavior_tree: migration to BT.CPP 4.5.x

Signed-off-by: Davide Faconti <[email protected]>

* fix formatting

Signed-off-by: Davide Faconti <[email protected]>

* fix lint warning

Signed-off-by: Davide Faconti <[email protected]>

* remove setStatus(BT::NodeStatus::IDLE)

Signed-off-by: Davide Faconti <[email protected]>

* handle SKIPPED state

Signed-off-by: Davide Faconti <[email protected]>

* fix SequenceStar

Signed-off-by: Davide Faconti <[email protected]>

* add tests

Signed-off-by: Davide Faconti <[email protected]>

* fix

Signed-off-by: Davide Faconti <[email protected]>

* fix unit tests

Signed-off-by: Davide Faconti <[email protected]>

* add emitWakeUpSignal()

Signed-off-by: Davide Faconti <[email protected]>

* fit test

Signed-off-by: Davide Faconti <[email protected]>

* fix

Signed-off-by: Davide Faconti <[email protected]>

* remove SequenceStar

Signed-off-by: Davide Faconti <[email protected]>

* remove SequenceStar

Signed-off-by: Davide Faconti <[email protected]>

* keep resetStatus() in action_node

Signed-off-by: Davide Faconti <[email protected]>

* add suggestions from peer reviewer

Signed-off-by: Davide Faconti <[email protected]>

* fix compilation

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>

bug fix (ros-navigation#4160)

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

Stop planner if the goal is cancelled (ros-navigation#4148)

* Add support for stopping planners when the action is cancelled

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

* Support cancel in Smac planner

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

* Support cancel in Theta* planner

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

* Support cancel in Navfn planner

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

* Update nav2_system_tests to use cancel checker

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

* Add terminal_checking_interval parameter

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

* Handle timeout and cancel check on the same branch and default to 5000 iterations

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

* Add system tests for cancel

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

---------

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

Improvement on the wat the distance heuristic is calculated

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

Fix BT.CPP import (ros-navigation#4165)

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

Update default recommendation from Obstacles to Cost critic in MPPI (ros-navigation#4170)

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

nav2_controller: add loop rate log (ros-navigation#4171)

* update smac_planner README

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

* added current controller loop rate logging

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

* linting

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

* uncrustify lint

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

* Update nav2_controller/src/controller_server.cpp

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

* Update nav2_controller/src/controller_server.cpp

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

* Update nav2_controller/src/controller_server.cpp

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

---------

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

improvement based on feedback

Signed-off-by: stevedan <[email protected]>
enricosutera pushed a commit to enricosutera/navigation2 that referenced this pull request May 19, 2024
* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
Signed-off-by: enricosutera <[email protected]>
Marc-Morcos pushed a commit to Marc-Morcos/navigation2 that referenced this pull request Jul 4, 2024
* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
Marc-Morcos pushed a commit to Marc-Morcos/navigation2 that referenced this pull request Jul 4, 2024
* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
savalena pushed a commit to savalena/navigation2 that referenced this pull request Jul 5, 2024
* Add generate_nav2_tree_nodes_xml

Signed-off-by: Davide Faconti <[email protected]>

* behavior_tree: removed list of plugins from yaml

Signed-off-by: Davide Faconti <[email protected]>

* check result of get_parameter(plugin_lib_names)

Signed-off-by: Davide Faconti <[email protected]>

* fix previous commit (uncrustify)

Signed-off-by: Davide Faconti <[email protected]>

* revert change

Signed-off-by: Davide Faconti <[email protected]>

---------

Signed-off-by: Davide Faconti <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants