Skip to content

Conversation

@SteveMacenski
Copy link
Member

@SteveMacenski SteveMacenski commented Jun 19, 2025

Closing #4888

This PR does a very large refactor of Nav2, its utilities, their structure, and how we interface with the ROS network. Note that if you want to do a review, focus on the nav2_ros_common package, the other changes are simply using the new API updates that this creates. That is what should be scrutinized, though I'm happy to have as much of a review as possible from anyone interested :-)

The aim of this work was to be able to expose:

  • Action, Action Client, Service, and Clients' introspection for all such interfaces removing the boilerplate code for all instances in the application code
  • Allow for QoS overrides of all publishers and subscribers by a standard parameter, removing the boilerplate code in the application code
  • Audit and correct existing QoS profiles and configuration mistakes. Ensure that this cannot happen again by controlling globally the use of QoS in all instances
  • Simplify interfaces for Nav2 developers and removing the need to specify extra information when using 'standard' topics and providing semantically meaningful QoS profiles to developers (i.e. StandardTopicQoS for reliable, volitile, queue size 10 topics, and LatchedTopicQoS for transient local queue size 1 topics, and SensorDataQoS for best effort, queue size 10 topics)
  • Allow pub/sub to more easily expose things like matched callbacks, dropped message callback, etc for system debugging
  • Clean up the code so that all main nav2 utilities can be addressed as MyObject<T>::SharedPtr rather than std::shared_ptr<MyObject<T>> for easier reading of users

In doing so, enough wrappers of ROS 2 interfaces justified the creation of a new nav2_ros_common package containing our specialized node and the various interface wrappers for the Actions, Services, Topics, etc and breaking it out of nav2_util. The new nav2::LifecycleNode also has factories for services, topics, etc using the same style API as ROS 2, but now returning Nav2 specific instances with our added utilities.

  • create_client --> nav2::ServiceClient with introspection configuration
  • create_service --> nav2::ServiceServer with introspection configuration
  • create_publisher --> rclcpp_lifecycle::LifecyclePublisher with QoS override parameterization
  • create_subscriber --> rclcpp::Subscriber with QoS override parameterization
  • create_action_server --> nav2::SimpleActionServer with introspection configuration
  • create_action_client --> rclcpp_action::Client with introspection configuration

So, in code using the Nav2 nodes, it will no longer return in some cases the rclcpp interface object but the new nav2 ones, requiring some migration of custom planners, controllers, behavior tree nodes, etc to use these interfaces. We do this globally to ensure that all ROS interfaces go through our factories in order to set the QoS defaults, QoS parameter overridability, and introspection status -- in addition to future possible modifications that are able to be applied to all ROS interfaces. For example, adding ros2_tracing tracepoints on key network events, new feature settings, etc.

Future work:


General information

  • nav2_util::LifecycleNode is now nav2::LifecycleNode
  • The Service Client, Service Server, and Simple Action Server were also moved to the nav2:: namespace, but they should not be accessed directly. Use the create_* factories from the nav2::LifecycleNode
  • There are now nav2::qos profiles for QoS to be used in the codebase for homologation and later easier changing: nav2::qos::StandardTopicQoS nav2::qos::LatchedTopicQoS and nav2::qos::SensorDataQoS.
  • The APIs for create_* are very similar to the default ones, but slightly different to move the QoS profile specification below required information. When this is not specified the StandardTopicQoS is used (reliable, queue size 10). Only override this if you want another QoS type -- this is supposed to help make sure that things keep compatible and consistent. Avoid use of `SystemDefaultsQoS.

Plugin Migration

All plugins now use nav2::LifecycleNode instead of rclcpp_lifecycle::LifecycleNode or nav2_util::LifecycleNode. All must be updated to use this new API from planners and controllers to behavior tree nodes. Similarly, calls to the create_* factories will now point to the Nav2 objects, where applicable. See above for what those look like and below for a migration from the existing code usage to the new version in order to make use of the new features and API.

Service Client Migration Example

We no longer need to create the object manually, nor should we as it bypasses the lifecycle node factories that set introspection and possibly other future features. We can use the node now to do this instead of passing in a node and we don't need to specify the node type anymore as a template.

// If using rclcpp::Client<T> from previous create_client factor
main_client_ = node->create_client<SrvT>(main_srv_name_, rclcpp::SystemDefaultsQoS(), callback_group_); 

// If using nav2_util::ServiceClient<T> manually
main_client_ =
  std::make_shared<nav2_util::ServiceClient<SrvT>>(
  main_srv_name_,
  node,
  false /* Does not create and spin an internal executor*/);

To:

main_client_ = node->create_client<SrvT>(main_srv_name_, false  /* Does not create and spin an internal executor*/);

Service Server Migration Example

We need to include the rmw_request_id_t header now, so we have 3 placeholders

// If using previous create_service factory
  service_ = node->create_service<std_srvs::srv::Trigger>(
    std::string(node->get_name()) + "/" + getName() + "/reroute",
    std::bind(
      &ReroutingService::serviceCb, this,
      std::placeholders::_1, std::placeholders::_2));

// If using nav2_util::ServiceServer<T> manually
  service_ = std::make_shared<nav2_util::ServiceServer<std_srvs::srv::Trigger,
      std::shared_ptr<rclcpp_lifecycle::LifecycleNode>>>(
    std::string(node->get_name()) + "/" + getName() + "/reroute",
    node,
    std::bind(
      &ReroutingService::serviceCb, this,
      std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));

To

  service_ = node->create_service<std_srvs::srv::Trigger>(
    std::string(node->get_name()) + "/" + getName() + "/reroute",
    std::bind(&ReroutingService::serviceCb, this,
        std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));

Action Server Migration

We can use the factory now from the node and the node is not required as an argument.

  compute_and_track_route_server_ = std::make_shared<ComputeAndTrackRouteServer>(
    node, "compute_and_track_route",
    std::bind(&RouteServer::computeAndTrackRoute, this),
    nullptr, std::chrono::milliseconds(500), true);

To

  compute_and_track_route_server_ = create_action_server<ComputeAndTrackRoute>(
    "compute_and_track_route",
    std::bind(&RouteServer::computeAndTrackRoute, this),
    nullptr, std::chrono::milliseconds(500), true);

Action Client Migration

We can use the node now and not need to specify all the nasty interfaces. We do that internally for you to clean up application code

  nav_to_pose_client_ = rclcpp_action::create_client<ClientT>(
    get_node_base_interface(),
    get_node_graph_interface(),
    get_node_logging_interface(),
    get_node_waitables_interface(),
    "navigate_to_pose", callback_group_);

To

  nav_to_pose_client_ = create_action_client<ClientT>(
    "navigate_to_pose", callback_group_);

Publisher Subscriber Migration

To migrate, the order of the arguments in the Subscription must change since the QoS profile is now optional. It is now (topic, callback, QoS) whereas QoS defaults to the StandardTopicQoS, which is the same as rclcpp::QoS for the moment.

Publishers that explicitly specify a QoS profile do not require changes, though if the constructor using depth is used, it must now specify a policy explicitly. Both are now nav2::Publisher and nav2::Subscription objects that today just typedef the rclcpp and rclcpp_lifecycle versions. In the future, more features will be added here like lifecycle support for the subscriptions, so its highly recommended as part of this migration to migrate the rclcpp:: to nav2:: as well so those updates are already easily available.

  plan_publisher_ = create_publisher<nav_msgs::msg::Path>("plan", 1);
  plan_publisher_ = create_publisher<nav_msgs::msg::Path>("plan", rclcpp::QoS());

  data_sub_ = node->create_subscription<sensor_msgs::msg::Range>(
    source_topic, range_qos,
    std::bind(&Range::dataCallback, this, std::placeholders::_1));

To

  plan_publisher_ = create_publisher<nav_msgs::msg::Path>("plan");  // No QoS is required if using the StandardTopicQoS, else it can be provided

  data_sub_ = node->create_subscription<sensor_msgs::msg::Range>(
    source_topic,
    std::bind(&Range::dataCallback, this, std::placeholders::_1));  // QoS can be ommitted if using StandardTopicQoS, else it can be provided last

@SteveMacenski SteveMacenski requested a review from Copilot June 19, 2025 01:14
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR refactors Nav2 and Opennav Docking packages to replace nav2_util and raw rclcpp_lifecycle::LifecycleNode usage with the new nav2_ros_common APIs, unifying QoS defaults and simplifying ROS interface creation.

  • Replace all includes and types from nav2_util/rclcpp_lifecycle to nav2_ros_common and nav2::LifecycleNode
  • Migrate service, action, publisher, and subscriber factories to create_* methods and async_call for services
  • Update CMakeLists and package.xml to add nav2_ros_common dependency and include directories

Reviewed Changes

Copilot reviewed 300 out of 620 changed files in this pull request and generated no comments.

Show a summary per file
File Description
nav2_dwb_controller/dwb_core/trajectory_critic.hpp Updated include and node pointer type to nav2::LifecycleNode
nav2_dwb_controller/dwb_core/publisher.hpp Switched lifecycle callbacks and node type to nav2 namespace
nav2_dwb_controller/dwb_core/dwb_local_planner.hpp Replaced node weak ptr type
nav2_dwb_controller/dwb_core/CMakeLists.txt Added nav2_ros_common dependency and include dirs
nav2_docking/opennav_docking_core/.../*.hpp/.cpp/.xml/.CMakeLists.txt Updated all docking core plugins to use nav2_ros_common APIs
nav2_docking/opennav_docking_bt/... Updated BT test fixtures and CMake to nav2::LifecycleNode
nav2_docking/opennav_docking/... Refactored server, utils, tests to new node and factory APIs
nav2_costmap_2d/... Migrated costmap layers, filters, subscribers, publishers
nav2_costmap_2d/test/... Converted all unit/integration tests to use nav2::LifecycleNode
nav2_costmap_2d/CMakeLists.txt & package.xml Added nav2_ros_common dependency and include dirs
Comments suppressed due to low confidence (1)

nav2_costmap_2d/include/nav2_costmap_2d/costmap_subscriber.hpp:39

  • The non-templated constructor for CostmapSubscriber(const nav2::LifecycleNode::WeakPtr&, const std::string&) is declared but its implementation was removed from the .cpp file. Either provide a definition or remove the declaration to avoid linker errors.
  CostmapSubscriber(

@SteveMacenski
Copy link
Member Author

SteveMacenski commented Jun 19, 2025

I re-reviewed the first ~250 files and going to step away for the day due to brain mush. Will pick back up tomorrow. I expect linting problems to cleanup but otherwise I think this should be ready minus my review comments to come.

@SteveMacenski SteveMacenski force-pushed the 4888 branch 2 times, most recently from 588d4e7 to 1e1f939 Compare June 20, 2025 04:11
Signed-off-by: Steve Macenski <[email protected]>
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@ros-navigation ros-navigation deleted a comment from mergify bot Jun 20, 2025
@@ -83,20 +94,27 @@ class ServiceClient
*/
typename ResponseType::SharedPtr invoke(
typename RequestType::SharedPtr & request,
const std::chrono::nanoseconds timeout = std::chrono::nanoseconds(-1))
const std::chrono::nanoseconds timeout = std::chrono::nanoseconds(-1),
const std::chrono::nanoseconds wait_for_service_timeout = std::chrono::seconds(10))
Copy link
Contributor

@MarcoMatteoBassa MarcoMatteoBassa Jun 20, 2025

Choose a reason for hiding this comment

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

I would default this to wait forever, or at least a bigger duration, to reduce the chance of errors in systems with a long boot-up times or other kind of delays.

Copy link
Member Author

@SteveMacenski SteveMacenski Jun 20, 2025

Choose a reason for hiding this comment

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

Service clients shouldn't be invoking on startup - that's kind of the point on the lifecycle node. By the time this could be triggered, the node would need to be activated and ready to process data. I think this is reasonable to leave as-is?

Signed-off-by: Steve Macenski <[email protected]>
@SteveMacenski
Copy link
Member Author

SteveMacenski commented Jun 21, 2025

FYI @MarcoMatteoBassa ros2/rclcpp#2876 this is what is causing the smac planner deadlock tests. When options.qos_overriding_options is non-empty for the publishers (also possibly subscribers?), then if ever reinitialized within a dynamic parameter callback it deadlocks.

Signed-off-by: Steve Macenski <[email protected]>
@codecov
Copy link

codecov bot commented Jun 21, 2025

Codecov Report

Attention: Patch coverage is 98.00000% with 10 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
nav2_amcl/src/amcl_node.cpp 97.14% 3 Missing ⚠️
nav2_costmap_2d/src/costmap_2d_markers.cpp 0.00% 2 Missing ⚠️
...av2_docking/opennav_docking/src/docking_server.cpp 91.66% 2 Missing ⚠️
nav2_bt_navigator/src/bt_navigator.cpp 80.00% 1 Missing ⚠️
...2_collision_monitor/src/collision_monitor_node.cpp 95.00% 1 Missing ⚠️
nav2_costmap_2d/plugins/static_layer.cpp 80.00% 1 Missing ⚠️
Files with missing lines Coverage Δ
...nclude/nav2_behavior_tree/behavior_tree_engine.hpp 100.00% <ø> (ø)
...tree/include/nav2_behavior_tree/bt_action_node.hpp 81.67% <100.00%> (+2.29%) ⬆️
...ee/include/nav2_behavior_tree/bt_action_server.hpp 83.33% <ø> (ø)
...clude/nav2_behavior_tree/bt_action_server_impl.hpp 89.77% <100.00%> (+0.17%) ⬆️
...clude/nav2_behavior_tree/bt_cancel_action_node.hpp 80.00% <100.00%> (ø)
...ree/include/nav2_behavior_tree/bt_service_node.hpp 84.05% <100.00%> (-0.23%) ⬇️
...avior_tree/include/nav2_behavior_tree/bt_utils.hpp 97.48% <ø> (ø)
...lugins/action/append_goal_pose_to_goals_action.hpp 100.00% <ø> (ø)
...ior_tree/plugins/action/assisted_teleop_action.hpp 100.00% <ø> (ø)
...ree/plugins/action/assisted_teleop_cancel_node.hpp 100.00% <ø> (ø)
... and 155 more

... and 65 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 marked this pull request as ready for review June 23, 2025 02:13
@MarcoMatteoBassa
Copy link
Contributor

FYI @MarcoMatteoBassa ros2/rclcpp#2876 this is what is causing the smac planner deadlock tests. When options.qos_overriding_options is non-empty for the publishers (also possibly subscribers?), then if ever reinitialized within a dynamic parameter callback it deadlocks.

That is unfortunate :(

@SteveMacenski
Copy link
Member Author

SteveMacenski commented Jun 23, 2025

I actually filed a similar ticket awhile back and it seemed like it was resolved for subscribers. I'm also seeing that the tests don't fail anymore where the odom subscription (the subscriber that triggered the bug report) are failing, so it looks like subscriptions are working now. It seems to just be publishers.

Your original PR wanted the Subscriptions to be overridable, so that is still doable at this point in this PR as long as it wasn't for the planner server / smac planner. That is the only one I'm seeing a deadlock failure for in dynamic parameter updates. I could work around it by changing the API of the costmap publisher so it does not get reconstructed in the dynamic parameter callback, but I'd rather fix the core ROS 2 issue instead of just patching Nav2 above it.

Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
@SteveMacenski
Copy link
Member Author

Migration docs: ros-navigation/docs.nav2.org#712

Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
@SteveMacenski SteveMacenski merged commit a9fcc5b into main Jun 24, 2025
15 checks passed
@SteveMacenski SteveMacenski deleted the 4888 branch June 24, 2025 01:41
SakshayMahna pushed a commit to SakshayMahna/navigation2 that referenced this pull request Jul 6, 2025
* initial unorganized prototype

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

* break out files and add doxygen

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

* Adding refactor for nav2_ros_common and new ROS interface factories

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

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

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

* Lifecycle publisher a missing test

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

* system tests

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

* default

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

* activating publishers

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

* temp disable allow param qos overrides

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

* API update for new constructor option

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

* Supporting Jazzy and abstracting util

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

* Review round 1

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

* Adding Nav2 Publisher and Subscriber objects to later build upon

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

* Adding additional ::SharedPtr for readability

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

* fix bug

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

* fixing Jazzy support

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

* missed one last spot

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

* Adding migration instructions

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

* more context

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

* Adding migration context

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

* precommit

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

* adding missing dep

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

* Updating system tess

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

* more

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

---------

Signed-off-by: Steve Macenski <[email protected]>
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 <[email protected]>

* Update Cache Version

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

---------

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

* enable_groot_monitoring_ false (ros-navigation#5246)

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

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

* updating readme table for kilted release

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

* Updating table lint

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

---------

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

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

* min_distance_to_obstacle

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

* suggestion to time base and combine

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

* typo

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

* use min_approach_linear_velocity

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

---------

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

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

* Update amcl_node.cpp

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

* Working for Kilted, Jazzy

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

---------

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

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

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

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

* added edge length method

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

* Added corner arc class

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

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

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

* using Coordinates, fixed direction of tangents

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

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

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

* first pass of corner smoothing algorithm

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

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

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

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

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

* added smoothing parameter

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

* made angle of interpolation a parameter

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

* const for return methods, added flag for smoothing corners

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

* moved getEdgeLength() into the Directional Edge struct

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

* using float instead of double

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

* smoothing radius is float, couple methods moved to protected

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

* removed signed_angle_ as a member variable

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

* removed unnecessary member variables

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

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

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

* consolidated corner arc into one header function

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

* readded newline

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

* changed corner arc to corner smoothing

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

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

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

* linting

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

* fixing cpplint

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

* linting for headers

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

* cpplinting

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/src/path_converter.cpp

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

* Update nav2_route/include/nav2_route/corner_smoothing.hpp

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

* fixed divide by zeros and accessing empty route.edges

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

* uncrustify linting

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

* cpp linting

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

* path converter linting

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

* changed all doubles to floats

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

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

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

* linting

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

* Update nav2_route/include/nav2_route/corner_smoothing.hpp

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

* added doxygen for corner arc class

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

* added warning message if corner can't be smoothed

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

* added smooth_corners to the nav2 params file

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

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

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

* typo in README

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

* added testing for corner smoothing

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

* Update nav2_route/include/nav2_route/corner_smoothing.hpp

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

---------

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

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

* Conserve curvature with LIMIT action

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

* fix format

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

* fix test

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

---------

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

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

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

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

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

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

* cherry pick

Signed-off-by: Stevedan Omodolor <[email protected]>

* cherry pick 6a74ba6

Signed-off-by: Stevedan Omodolor <[email protected]>

* cherrpy pick

Signed-off-by: Stevedan Omodolor <[email protected]>

* include x11 forwarding

Signed-off-by: Stevedan Omodolor <[email protected]>

* kind of working version

Signed-off-by: Stevedan Omodolor <[email protected]>

* cleanup

Signed-off-by: Stevedan Omodolor <[email protected]>

* formatting

Signed-off-by: Stevedan Omodolor <[email protected]>

* minor format change

Signed-off-by: Stevedan Omodolor <[email protected]>

* change naming

Signed-off-by: Stevedan Omodolor <[email protected]>

* minor changes

Signed-off-by: Stevedan Omodolor <[email protected]>

* working with new changes

Signed-off-by: Stevedan Omodolor <[email protected]>

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

* Update Cache Version

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

---------

Signed-off-by: Nils-Christian Iseke <[email protected]>
Signed-off-by: Stevedan Omodolor <[email protected]>

* Revert back

Signed-off-by: Stevedan Omodolor <[email protected]>

* enable_groot_monitoring_ false (ros-navigation#5246)

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

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

* updating readme table for kilted release

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

* Updating table lint

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

---------

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

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

* min_distance_to_obstacle

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

* suggestion to time base and combine

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

* typo

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

* use min_approach_linear_velocity

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

---------

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

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

* Update amcl_node.cpp

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

* Working for Kilted, Jazzy

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

* Update amcl_node.cpp

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

---------

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

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

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

* linter

Signed-off-by: Stevedan Omodolor <[email protected]>

* remove const

Signed-off-by: Stevedan Omodolor <[email protected]>

* pass const pointer by value

Signed-off-by: Stevedan Omodolor <[email protected]>

* pass const pointer by value

Signed-off-by: Stevedan Omodolor <[email protected]>

* remove unused param

Signed-off-by: Stevedan Omodolor <[email protected]>

---------

Signed-off-by: Stevedan Omodolor <[email protected]>
Signed-off-by: Nils-Christian Iseke <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: Nils-Christian Iseke <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Tony Najjar <[email protected]>

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

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

* Fix ament mypy (ros-navigation#5280)

* Configured nav2_loopback_sim to be compliant with mypy.

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

* Configured nav2_simple_commander to be compliant with mypy.

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

* Configured nav2_system_tests to be compliant with mypy.

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

---------

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

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

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

* Update PULL_REQUEST_TEMPLATE.md

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

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

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

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

Signed-off-by: Silvio Traversaro <[email protected]>

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

Signed-off-by: Silvio Traversaro <[email protected]>

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

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

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

* initial unorganized prototype

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

* break out files and add doxygen

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

* Adding refactor for nav2_ros_common and new ROS interface factories

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

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

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

* Lifecycle publisher a missing test

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

* system tests

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

* default

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

* activating publishers

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

* temp disable allow param qos overrides

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

* API update for new constructor option

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

* Supporting Jazzy and abstracting util

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

* Review round 1

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

* Adding Nav2 Publisher and Subscriber objects to later build upon

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

* Adding additional ::SharedPtr for readability

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

* fix bug

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

* fixing Jazzy support

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

* missed one last spot

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

* Adding migration instructions

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

* more context

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

* Adding migration context

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

* precommit

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

* adding missing dep

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

* Updating system tess

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

* more

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

---------

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

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

* toggle on

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

* apply for smac 2D

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

* Update interface_factories.hpp

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

---------

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

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

* Add LaunchConfigAsBool (Fixes ros-navigation#5233)

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

* Fix Linting

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

* Fix ament_mypy and pre-commit

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

* Added Type Annotations

Signed-off-by: Nishalan Govender <[email protected]>

* mypy ignore

Signed-off-by: Nishalan Govender <[email protected]>

* launch.Substitution

Signed-off-by: Nishalan Govender <[email protected]>

* Update All Bools in nav2_bringup

Signed-off-by: Nishalan Govender <[email protected]>

---------

Signed-off-by: nishalangovender <[email protected]>
Signed-off-by: Nishalan Govender <[email protected]>

* Create claude.yml

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

* Update claude.yml

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

* Update claude.yml

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

* Update claude.yml for authorized users

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

* Update claude.yml

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

* Update claude.yml

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

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

* Adding clear costmap around pose impl

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

* Update nav2_msgs/srv/ClearCostmapAroundPose.srv

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

* Adding APIs for simple commander

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

* linting

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

* adding import

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

---------

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

* 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 <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: Alexander Yuen <[email protected]>
Signed-off-by: Marco Bassa <[email protected]>
Signed-off-by: Maurice-1235 <[email protected]>
Signed-off-by: Stevedan Omodolor <[email protected]>
Signed-off-by: Leander Stephen D'Souza <[email protected]>
Signed-off-by: haider8645 <[email protected]>
Signed-off-by: Adi Vardi <[email protected]>
Signed-off-by: Silvio Traversaro <[email protected]>
Signed-off-by: Silvio <[email protected]>
Signed-off-by: nishalangovender <[email protected]>
Signed-off-by: Nishalan Govender <[email protected]>
Co-authored-by: Nils-Christian Iseke <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Steve Macenski <[email protected]>
Co-authored-by: Tony Najjar <[email protected]>
Co-authored-by: alexanderjyuen <[email protected]>
Co-authored-by: Marco Bassa <[email protected]>
Co-authored-by: mini-1235 <[email protected]>
Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]>
Co-authored-by: Leander Stephen D'Souza <[email protected]>
Co-authored-by: Haider <[email protected]>
Co-authored-by: Adi Vardi <[email protected]>
Co-authored-by: Silvio Traversaro <[email protected]>
Co-authored-by: Nishalan Govender <[email protected]>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants