Skip to content

Fix compilation of nav2_smac_planner on Windows#5291

Merged
SteveMacenski merged 1 commit intoros-navigation:mainfrom
traversaro:fixwinsmac
Jun 23, 2025
Merged

Fix compilation of nav2_smac_planner on Windows#5291
SteveMacenski merged 1 commit intoros-navigation:mainfrom
traversaro:fixwinsmac

Conversation

@traversaro
Copy link
Contributor

@traversaro traversaro commented Jun 21, 2025

Basic Info

Info Please fill out this column
Ticket(s) this addresses None
Primary OS tested on Windows
Robotic platform tested on None, compilation fix.
Does this PR contain AI generated software? No.

Description of contribution in a few bullet points

navigation2 uses the CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS to build shared libraries on Windows, see #1704 for more details. However, CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS can't automatically export public static members, see https://www.kitware.com/create-dlls-on-windows-without-declspec-using-new-cmake-export-all-feature/ .

In case that public static members are needed, it is necessary to manually annotate them with visibility macros. This PR does that for the static members that are actually used in the code, in node_hybrid and node_lattice files.

Description of documentation updates required from your changes

None.

Description of how this change was tested

I compiled the package on Windows.

Future work that may be required in bullet points

None

For Maintainers:

  • Check that any new parameters added are updated in docs.nav2.org
  • Check that any significant change is added to the migration guide
  • Check that any new features OR changes to existing behaviors are reflected in the tuning guide
  • Check that any new functions have Doxygen added
  • Check that any new features have test coverage
  • Check that any new plugins is added to the plugins page
  • If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists
  • Should this be backported to current distributions? If so, tag with backport-*.

Signed-off-by: Silvio <silvio.traversaro@iit.it>
@codecov
Copy link

codecov bot commented Jun 21, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Files with missing lines Coverage Δ
..._planner/include/nav2_smac_planner/node_hybrid.hpp 95.65% <ø> (ø)
...planner/include/nav2_smac_planner/node_lattice.hpp 100.00% <ø> (ø)

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@SteveMacenski SteveMacenski merged commit 16d6e63 into ros-navigation:main Jun 23, 2025
15 checks passed
SakshayMahna pushed a commit to SakshayMahna/navigation2 that referenced this pull request Jul 6, 2025
Signed-off-by: Silvio <silvio.traversaro@iit.it>
Sushant-Chavan added a commit to Sushant-Chavan/navigation2 that referenced this pull request Aug 5, 2025
* Revert "Fix Ci from key signing (ros-navigation#5220)" (ros-navigation#5237)

* Revert "Fix Ci from key signing (ros-navigation#5220)"

This reverts the changes to the Dockerfile done in 1345c22.

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

* Update Cache Version

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

---------

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

* enable_groot_monitoring_ false (ros-navigation#5246)

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

* Updating readme table for kilted release (ros-navigation#5249)

* updating readme table for kilted release

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

* Updating table lint

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

---------

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

* Add min_distance_to_obstacle parameter to RPP (ros-navigation#4543)

* min_distance_to_obstacle

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

* suggestion to time base and combine

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

* typo

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

* use min_approach_linear_velocity

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

---------

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

* Fixing builds for message filters API change while retaining Jazzy, Kilted, and Rolling support (ros-navigation#5251)

* Update amcl_node.hpp

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

* Update amcl_node.cpp

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

* Working for Kilted, Jazzy

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

---------

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

* Change max_cost default to 254 (ros-navigation#5256)

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

* Route server corner smoothing (ros-navigation#5226)

* added edge length method

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

* Added corner arc class

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

* replaced double vectors with Coordinates, added methods to return start and end coordinates

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

* using Coordinates, fixed direction of tangents

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

* added corner arc in header, added logger in protected variable

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

* first pass of corner smoothing algorithm

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

* reassigning next edge to have a different start, if a corner occurs before it

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

* using unique pointer instead of raw pointers for new edges and nodes

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

* added smoothing parameter

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

* made angle of interpolation a parameter

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

* const for return methods, added flag for smoothing corners

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

* moved getEdgeLength() into the Directional Edge struct

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

* using float instead of double

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

* smoothing radius is float, couple methods moved to protected

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

* removed signed_angle_ as a member variable

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

* removed unnecessary member variables

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

* removed angle of interpolation and inferring it from path density and radius instead

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

* consolidated corner arc into one header function

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

* readded newline

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

* changed corner arc to corner smoothing

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

* replaced the use of edges with coordinates to generate smoothing arc, removed storage of nodes and edges

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

* linting

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

* fixing cpplint

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

* linting for headers

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

* cpplinting

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/include/nav2_route/corner_smoothing.hpp

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

* fixed divide by zeros and accessing empty route.edges

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

* uncrustify linting

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

* cpp linting

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

* path converter linting

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

* changed all doubles to floats

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

* added check for edges that are colinear to avoid divide by 0, fixed final edge interpolation

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

* linting

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

* Update nav2_route/include/nav2_route/corner_smoothing.hpp

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

* added doxygen for corner arc class

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

* added warning message if corner can't be smoothed

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

* added smooth_corners to the nav2 params file

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

* added smoothing flag and radius parameter to README.md'

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

* typo in README

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

* added testing for corner smoothing

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

* Update nav2_route/include/nav2_route/corner_smoothing.hpp

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

---------

Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Conserve curvature with LIMIT action (ros-navigation#5255)

* Conserve curvature with LIMIT action

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

* fix format

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

* fix test

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

---------

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

* Parametrizing obstacle layer tf filter tolerance (ros-navigation#5261)

Signed-off-by: Marco Bassa <marco.bassa@idealworks.com>

* Add namespace support for rviz costmap cost tool (ros-navigation#5268)

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

* Fix/smac planner orientation goals (ros-navigation#5235)

* cherry pick

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

* cherry pick 6a74ba6

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

* cherrpy pick

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

* include x11 forwarding

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

* kind of working version

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

* cleanup

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

* formatting

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

* minor format change

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

* change naming

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

* minor changes

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

* working with new changes

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

* Revert "Fix Ci from key signing (ros-navigation#5220)" (ros-navigation#5237)

* Revert "Fix Ci from key signing (ros-navigation#5220)"

This reverts the changes to the Dockerfile done in 1345c22.

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

* Update Cache Version

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

---------

Signed-off-by: Nils-Christian Iseke <nilsmailiseke@gmail.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>

* Revert back

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

* enable_groot_monitoring_ false (ros-navigation#5246)

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>

* Updating readme table for kilted release (ros-navigation#5249)

* updating readme table for kilted release

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

* Updating table lint

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

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>

* Add min_distance_to_obstacle parameter to RPP (ros-navigation#4543)

* min_distance_to_obstacle

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

* suggestion to time base and combine

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

* typo

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

* use min_approach_linear_velocity

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

---------

Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>

* Fixing builds for message filters API change while retaining Jazzy, Kilted, and Rolling support (ros-navigation#5251)

* Update amcl_node.hpp

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

* Update amcl_node.cpp

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

* Working for Kilted, Jazzy

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

---------

Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>

* Change max_cost default to 254 (ros-navigation#5256)

Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>

* linter

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

* remove const

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

* pass const pointer by value

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

* pass const pointer by value

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

* remove unused param

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

---------

Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>
Signed-off-by: Nils-Christian Iseke <nilsmailiseke@gmail.com>
Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Nils-Christian Iseke <48475933+Nils-ChristianIseke@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>

* Fix backport compiler warning (ros-navigation#5277)

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

* Fix ament mypy (ros-navigation#5280)

* Configured nav2_loopback_sim to be compliant with mypy.

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

* Configured nav2_simple_commander to be compliant with mypy.

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

* Configured nav2_system_tests to be compliant with mypy.

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

---------

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

* Publish zero velocitiy in case of goal failure (ros-navigation#5279)

Signed-off-by: haider8645 <haider_lodhi@hotmail.com>

* Update PULL_REQUEST_TEMPLATE.md

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

* Use fixed thresholds for Trinary yaml (ros-navigation#5278)

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

* Add missing include of algorithm in differential_motion_model.cpp (ros-navigation#5293)

Signed-off-by: Silvio Traversaro <silvio@traversaro.it>

* Remove unused unistd.h header from route_tool.cpp (ros-navigation#5292)

Signed-off-by: Silvio Traversaro <silvio@traversaro.it>

* Fix compilation of nav2_smac_planner on Windows (ros-navigation#5291)

Signed-off-by: Silvio <silvio.traversaro@iit.it>

* Large Nav2 Node, Utils, and Interface Refactor (ros-navigation#5288)

* initial unorganized prototype

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

* break out files and add doxygen

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

* Adding refactor for nav2_ros_common and new ROS interface factories

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

* fixing CI - not sure how that got through merge conflicts

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

* Lifecycle publisher a missing test

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

* system tests

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

* default

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

* activating publishers

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

* temp disable allow param qos overrides

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

* API update for new constructor option

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

* Supporting Jazzy and abstracting util

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

* Review round 1

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

* Adding Nav2 Publisher and Subscriber objects to later build upon

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

* Adding additional ::SharedPtr for readability

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

* fix bug

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

* fixing Jazzy support

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

* missed one last spot

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

* Adding migration instructions

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

* more context

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

* Adding migration context

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

* precommit

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

* adding missing dep

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

* Updating system tess

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

* more

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

---------

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

* Adding logging for matched events and dropped messages into pub/sub of new nav2_ros_common package. Also adding QoS overrides default ON (ros-navigation#5302)

* Adding logging for matched events and dropped messages

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

* toggle on

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

* apply for smac 2D

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

* Update interface_factories.hpp

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

---------

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

* Add LaunchConfigAsBool (Fixes ros-navigation#5233) (ros-navigation#5301)

* Add LaunchConfigAsBool (Fixes ros-navigation#5233)

Signed-off-by: nishalangovender <nishalan.govender@gmail.com>

* Fix Linting

Signed-off-by: nishalangovender <nishalan.govender@gmail.com>

* Fix ament_mypy and pre-commit

Signed-off-by: nishalangovender <nishalan.govender@gmail.com>

* Added Type Annotations

Signed-off-by: Nishalan Govender <nishalan.govender@gmail.com>

* mypy ignore

Signed-off-by: Nishalan Govender <nishalan.govender@gmail.com>

* launch.Substitution

Signed-off-by: Nishalan Govender <nishalan.govender@gmail.com>

* Update All Bools in nav2_bringup

Signed-off-by: Nishalan Govender <nishalan.govender@gmail.com>

---------

Signed-off-by: nishalangovender <nishalan.govender@gmail.com>
Signed-off-by: Nishalan Govender <nishalan.govender@gmail.com>

* Create claude.yml

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

* Update claude.yml

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

* Update claude.yml

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

* Update claude.yml for authorized users

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

* Update claude.yml

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

* Update claude.yml

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

* Adding clear costmap around pose service option (ros-navigation#5309)

* Adding clear costmap around pose impl

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

* Update nav2_msgs/srv/ClearCostmapAroundPose.srv

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

* Adding APIs for simple commander

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

* linting

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

* adding import

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

---------

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

* Fix compiler errors in nav2_map_server

* Fix compiler errors in nav2_costmap_2d

* Add support for enable_lifecycle_services parameter in LifecycleNode (ros-navigation#5307)

Expose the enable_communication_interface parameter from rclcpp_lifecycle::LifecycleNode
through nav2's LifecycleNode wrapper. This allows users to disable lifecycle communication
interfaces when manually managing node lifecycle transitions.

The parameter can be set via NodeOptions parameter overrides:
```cpp
rclcpp::NodeOptions options;
options.parameter_overrides({{"enable_lifecycle_services", false}});
```

Fixes ros-navigation#5305

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

---------

Signed-off-by: Nils-Christian Iseke <nilsmailiseke@gmail.com>
Signed-off-by: Guillaume Doisy <guillaume@dexory.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Tony Najjar <tony.najjar.1997@gmail.com>
Signed-off-by: Alexander Yuen <alex@polymathrobotics.com>
Signed-off-by: Marco Bassa <marco.bassa@idealworks.com>
Signed-off-by: Maurice-1235 <mauricepurnawan@gmail.com>
Signed-off-by: Stevedan Omodolor <stevedan.o.omodolor@gmail.com>
Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Signed-off-by: haider8645 <haider_lodhi@hotmail.com>
Signed-off-by: Adi Vardi <adi.vardi@enway.ai>
Signed-off-by: Silvio Traversaro <silvio@traversaro.it>
Signed-off-by: Silvio <silvio.traversaro@iit.it>
Signed-off-by: nishalangovender <nishalan.govender@gmail.com>
Signed-off-by: Nishalan Govender <nishalan.govender@gmail.com>
Co-authored-by: Nils-Christian Iseke <48475933+Nils-ChristianIseke@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: alexanderjyuen <103065090+alexanderjyuen@users.noreply.github.com>
Co-authored-by: Marco Bassa <101661130+MarcoMatteoBassa@users.noreply.github.com>
Co-authored-by: mini-1235 <mauricepurnawan@gmail.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>
Co-authored-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
Co-authored-by: Haider <haider_lodhi@hotmail.com>
Co-authored-by: Adi Vardi <57910756+adivardi@users.noreply.github.com>
Co-authored-by: Silvio Traversaro <silvio@traversaro.it>
Co-authored-by: Nishalan Govender <137301877+nishalangovender@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
@sebatztian
Copy link

There seems to be an issue with the global shared variable export on Linux (with kilted at least)
We have 2 instances of the SMAC Hybrid Plugin with different cost_penalty values.
Due to the EXPORT, some variables are shared between the 2 instances, leading to shared parameters. E.g. within motion_table:

// in node_hybrid.hpp
NAV2_SMAC_PLANNER_COMMON_EXPORT static HybridMotionTable motion_table;

The motion_model is initialized within the first call of createPlan(), and thus overwritten by the first createPlan() call of the second plugin.
The cost_penalty, for example, is set within initMotionModel as a variable of motion_model and therefore used by both planners.
We are unsure if this effect occurs for other variables as well.

// in smac_planner_hybrid.cpp
nav_msgs::msg::Path SmacPlannerHybrid::createPlan(...)
{
 ...
  _a_star->setCollisionChecker(&_collision_checker);
 ...
// in a_star.cpp
template<typename NodeT>
void AStarAlgorithm<NodeT>::setCollisionChecker(GridCollisionChecker * collision_checker)
{
  ...
  unsigned int x_size = _costmap->getSizeInCellsX();
  unsigned int y_size = _costmap->getSizeInCellsY();

  clearGraph();

  if (getSizeX() != x_size || getSizeY() != y_size) {
    _x_size = x_size;
    _y_size = y_size;
    NodeT::initMotionModel(_motion_model, _x_size, _y_size, _dim3_size, _search_info);
  }
  _expander->setCollisionChecker(_collision_checker);
}

I don't know what is specifically fixed by the EXPORT in Windows, but it creates unexpected behavior on Linux.

@traversaro
Copy link
Contributor Author

Hello @sebatztian, can you open a new issue explaining how to reproduce your problem? On Linux all symbols are exported by default, so I do not think it should make a difference to have or not to have NAV2_SMAC_PLANNER_COMMON_EXPORT, but perhaps I am missing somethings.

@mini-1235
Copy link
Collaborator

I think this is related to #5118

@sebatztian if you remove NAV2_SMAC_PLANNER_COMMON_EXPORT, does that work for you? From my understanding, the issue is caused by static variables being shared across all plugin instances

@sebatztian
Copy link

@mini-1235 @traversaro thank you for the quick reply. Yes, the issue you linked seems to be the same thing.

Sorry, then it is not related to NAV2_SMAC_PLANNER_COMMON_EXPORT, but the static variable itself, which I thought was instance specific.

I don't have a develop Nav2 Environment on the same machine, where I could recreate the problem, so it's not that easy, but judging from the date of the issue, this has to do with the static variable itself rather than the specific export.

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.

4 participants