Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
848f2b0
Pre-Commit (#4915)
Nils-ChristianIseke Mar 24, 2025
d9cc4ba
Fix path comparison to avoid unnecessary updates (#5009)
Tacha-S Mar 24, 2025
46dbd07
nav2_rviz_plugins: Don't use non-existent slot (#5016)
wentasah Mar 25, 2025
d8dcb8d
* Parametrize collision checking in nav2_graceful_controller (#5006)
suchetanrs Mar 25, 2025
a904802
Update smac planner types (#4927)
InvincibleRMC Mar 25, 2025
b3ca86e
Declare_parameter_if_not_declared in docking navigator (#5023)
ajtudela Mar 26, 2025
7b40dc0
Fix naming of launch file
SteveMacenski Mar 27, 2025
6513b51
Fixed naming conventions of launch file
SteveMacenski Mar 27, 2025
b5adf61
navfn : fix performance issue (#4945)
Yancey2023 Mar 28, 2025
7123183
Configured mypy strict for nav2_smac_planner (#5022)
leander-dsouza Mar 28, 2025
a5ffa3f
Mypy nav2 common (#5031)
leander-dsouza Mar 31, 2025
4936318
Clear costmap if reset distance exceeds costmap bounds. (#5010)
leander-dsouza Mar 31, 2025
e90717d
Add near collision cost and warnings for misaligned parameter setting…
mini-1235 Apr 1, 2025
08268f9
Added pre-commit with ament ignores to the workflow. (#5029)
leander-dsouza Apr 1, 2025
61d993a
feat(nav2_rotation_shim_controller): add use_path_orientations (#5034)
bektaskemal Apr 2, 2025
77142be
Mypy nav2 bringup (#5040)
leander-dsouza Apr 2, 2025
d8d4473
Add service introspection (#4955)
mini-1235 Apr 2, 2025
e239e28
Mypy nav2_collision_monitor (#5043)
leander-dsouza Apr 2, 2025
e89c490
Mypy nav2 costmap 2d (#5044)
leander-dsouza Apr 2, 2025
e6cef39
Halt recovery action when main action succeeds to reset status (#5027)
SteveMacenski Apr 2, 2025
1762adc
Mypy opennav_docking (#5047)
leander-dsouza Apr 3, 2025
e713cc4
Remove unused code in BT utils (#5048)
ajtudela Apr 3, 2025
8626be5
Mypy nav2 lifecycle manager (#5051)
leander-dsouza Apr 3, 2025
c792d6b
fix initializing in drive on heading action node (#5053)
jplapp Apr 4, 2025
e5bb6cc
Mypy nav2 loopback sim (#5052)
leander-dsouza Apr 4, 2025
afe7175
Fix mppi bidirectional settings (#4954)
mini-1235 Apr 4, 2025
32437e0
Mypy nav2 map server (#5058)
leander-dsouza Apr 5, 2025
c3d41d6
Publishing a full time-series MPPI trajectory if desirable (#5057)
SteveMacenski Apr 5, 2025
4e8469e
Add double spin_some in some BT nodes (#5055)
ajtudela Apr 7, 2025
e63fecc
Remove duplicate test (#5062)
RasmusLar Apr 7, 2025
34a4b7c
Remove docking absolute topic namespaces (#5068)
SteveMacenski Apr 8, 2025
d518dd3
Mypy nav2 simple commander (#5059)
leander-dsouza Apr 9, 2025
b815d16
Make NavigateThroughPoses navigator report waypoint statuses informat…
zz990099 Apr 9, 2025
c673a4b
Enable Groot2 monitoring (#5065)
ajtudela Apr 10, 2025
3ec7c33
Fix incorrect world <-> map coordinates conversions (#5049)
DylanDeCoeyer-Quimesis Apr 10, 2025
def640f
[AMCL] 50% initialisation (and reset) speed improvement (#4941)
doisyg Apr 10, 2025
1a365e6
Add note to Asynchronous nodes (#5035)
adivardi Apr 11, 2025
c181750
[AMCL] Rebuild cspace map only when needed (#5076)
doisyg Apr 11, 2025
78b14cb
Consistency in Groot 2 (#5078)
ajtudela Apr 11, 2025
17a7984
Remove duplicate code (#5080)
mini-1235 Apr 11, 2025
6aab90e
Added waypointstatus to bt_utils (#5077)
ajtudela Apr 11, 2025
3e4f0cb
Lock costmap in getCostsCallback (#5075)
tonynajjar Apr 11, 2025
068ba98
Mypy nav2 system tests (#5083)
leander-dsouza Apr 12, 2025
20b6fe5
Configure the entire nav2 stack with mypy (#5084)
leander-dsouza Apr 14, 2025
aed5d97
Dynamic param patterns (#4971)
Nils-ChristianIseke Apr 15, 2025
5bb0346
[nav2_behavior_tree] Add force_use_current_pose to ComputePathToPoseA…
doisyg Apr 16, 2025
f8f1551
[CostmapTopicCollisionChecker] Alternative constructor with footprint…
doisyg Apr 16, 2025
fbd3084
Merged Fix navfn_planner from humble PR #5087 (#5092)
sandeepdutta Apr 17, 2025
5423eba
Docking backwards as plugin param (#5079)
ajtudela Apr 17, 2025
8d69483
Update map_io library to use Eigen method for faster map loading (#5071)
vickzk Apr 24, 2025
eda0a8f
Fix CI builds (#5104)
SteveMacenski Apr 24, 2025
4b9b711
Increase docking coverage && fix backward docking (#5097)
ajtudela Apr 25, 2025
bb6cf9d
Initialize dock backwards (#5114)
SteveMacenski Apr 28, 2025
004823e
Precompute yaw trigonometric values in smac planner (#5109)
mini-1235 Apr 28, 2025
b6a5387
Nav2 Route Server (#5056)
SteveMacenski Apr 28, 2025
f5543c3
Feat/smac planner include orientation flexibility (#4127)
stevedanomodolor Apr 29, 2025
07097d8
Support zero value for std_wz in mppi controller (#5110)
mini-1235 May 1, 2025
9754779
Update update_ci_image.yaml to include jazzy build (#5120)
SteveMacenski May 3, 2025
867d1c3
Update update_ci_image.yaml to add humble
SteveMacenski May 3, 2025
c6dae60
message_filters hpp headers have been backported (#5127)
Timple May 5, 2025
bce5122
Update PULL_REQUEST_TEMPLATE.md
SteveMacenski May 5, 2025
a291975
Bibtex formatting (#5126)
leander-dsouza May 5, 2025
6e58fbe
Make sure fixed curvature lookahead distance doesn't overshoot distan…
moooeeeep May 8, 2025
6a51f1a
removing the start navigation message in the paused state from rviz b…
padhupradheep May 9, 2025
5f34bc3
Added keepout filter for depot and warehouse maps (#5125)
leander-dsouza May 9, 2025
df92ffd
Fix lattice backward 180 deg issue (#5141)
slazarev8 May 10, 2025
a438883
[lifecycle_manager] expose service_timeout (#4838)
doisyg May 12, 2025
a61751a
Update simple_action_server.hpp for description (#5150)
SteveMacenski May 12, 2025
d362e74
reset motion model (#5149)
adivardi May 12, 2025
711817f
Show error if inflation radius is smaller than circumscribed radius (…
tonynajjar May 13, 2025
cecc8f0
Merge branch 'main' into humble_main
suchetanrs May 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
<!--
* I wrote unit tests that cover 90%+ of changes and extensively tested on my physical robot platform in production for 1 week
* I wrote unit tests and tested in simulation for 10 minutes
* Performed linting validation using pre-commit run --all or colcon test
-->

---
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/update_ci_image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ on:
push:
branches:
- main
- jazzy
- humble
paths:
- '**/package.xml'
- '**/*.repos'
Expand Down
167 changes: 84 additions & 83 deletions README.md

Large diffs are not rendered by default.

6 changes: 0 additions & 6 deletions nav2_amcl/include/nav2_amcl/amcl_node.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,7 @@
#include <utility>
#include <vector>

// For compatibility with Jazzy
#include "rclcpp/version.h"
#if RCLCPP_VERSION_GTE(29, 0, 0)
#include "message_filters/subscriber.hpp"
#else
#include "message_filters/subscriber.h"
#endif

#include "geometry_msgs/msg/pose_stamped.hpp"
#include "nav2_util/lifecycle_node.hpp"
Expand Down
9 changes: 3 additions & 6 deletions nav2_amcl/src/amcl_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1567,22 +1567,19 @@ AmclNode::initServices()
global_loc_srv_ = std::make_shared<nav2_util::ServiceServer<std_srvs::srv::Empty,
std::shared_ptr<nav2_util::LifecycleNode>>>(
"reinitialize_global_localization", shared_from_this(),
std::bind(
&AmclNode::globalLocalizationCallback, this, std::placeholders::_1,
std::bind(&AmclNode::globalLocalizationCallback, this, std::placeholders::_1,
std::placeholders::_2, std::placeholders::_3));

initial_guess_srv_ = std::make_shared<nav2_util::ServiceServer<nav2_msgs::srv::SetInitialPose,
std::shared_ptr<nav2_util::LifecycleNode>>>(
"set_initial_pose", shared_from_this(),
std::bind(
&AmclNode::initialPoseReceivedSrv, this, std::placeholders::_1, std::placeholders::_2,
std::bind(&AmclNode::initialPoseReceivedSrv, this, std::placeholders::_1, std::placeholders::_2,
std::placeholders::_3));

nomotion_update_srv_ = std::make_shared<nav2_util::ServiceServer<std_srvs::srv::Empty,
std::shared_ptr<nav2_util::LifecycleNode>>>(
"request_nomotion_update", shared_from_this(),
std::bind(
&AmclNode::nomotionUpdateCallback, this, std::placeholders::_1, std::placeholders::_2,
std::bind(&AmclNode::nomotionUpdateCallback, this, std::placeholders::_1, std::placeholders::_2,
std::placeholders::_3));
}

Expand Down
27 changes: 13 additions & 14 deletions nav2_amcl/src/map/map_cspace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,7 @@ void enqueue(

map->cells[map_index].occ_dist = distance * map->scale;

Q.emplace(
CellData{map, static_cast<unsigned int>(i), static_cast<unsigned int>(j),
Q.emplace(CellData{map, static_cast<unsigned int>(i), static_cast<unsigned int>(j),
static_cast<unsigned int>(src_i), static_cast<unsigned int>(src_j),
map->cells[map_index].occ_dist});

Expand Down Expand Up @@ -180,27 +179,27 @@ void map_update_cspace(map_t * map, double max_occ_dist)
CellData current_cell = Q.top();
if (current_cell.i_ > 0) {
enqueue(
map, current_cell.i_ - 1, current_cell.j_,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
map, current_cell.i_ - 1, current_cell.j_,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
}
if (current_cell.j_ > 0) {
enqueue(
map, current_cell.i_, current_cell.j_ - 1,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
map, current_cell.i_, current_cell.j_ - 1,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
}
if (static_cast<int>(current_cell.i_) < map->size_x - 1) {
enqueue(
map, current_cell.i_ + 1, current_cell.j_,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
map, current_cell.i_ + 1, current_cell.j_,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
}
if (static_cast<int>(current_cell.j_) < map->size_y - 1) {
enqueue(
map, current_cell.i_, current_cell.j_ + 1,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
map, current_cell.i_, current_cell.j_ + 1,
current_cell.src_i_, current_cell.src_j_,
Q, cdm, marked);
}

Q.pop();
Expand Down
30 changes: 30 additions & 0 deletions nav2_behavior_tree/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ list(APPEND plugin_libs nav2_transform_available_condition_bt_node)
add_library(nav2_goal_reached_condition_bt_node SHARED plugins/condition/goal_reached_condition.cpp)
list(APPEND plugin_libs nav2_goal_reached_condition_bt_node)

add_library(nav2_are_poses_near_condition_bt_node SHARED plugins/condition/are_poses_near_condition.cpp)
list(APPEND plugin_libs nav2_are_poses_near_condition_bt_node)

add_library(nav2_globally_updated_goal_condition_bt_node SHARED plugins/condition/globally_updated_goal_condition.cpp)
list(APPEND plugin_libs nav2_globally_updated_goal_condition_bt_node)

Expand Down Expand Up @@ -143,6 +146,9 @@ list(APPEND plugin_libs nav2_would_a_planner_recovery_help_condition_bt_node)
add_library(nav2_would_a_smoother_recovery_help_condition_bt_node SHARED plugins/condition/would_a_smoother_recovery_help_condition.cpp)
list(APPEND plugin_libs nav2_would_a_smoother_recovery_help_condition_bt_node)

add_library(nav2_would_a_route_recovery_help_condition_bt_node SHARED plugins/condition/would_a_route_recovery_help_condition.cpp)
list(APPEND plugin_libs nav2_would_a_route_recovery_help_condition_bt_node)

add_library(nav2_reinitialize_global_localization_service_bt_node SHARED plugins/action/reinitialize_global_localization_service.cpp)
list(APPEND plugin_libs nav2_reinitialize_global_localization_service_bt_node)

Expand All @@ -158,6 +164,9 @@ list(APPEND plugin_libs nav2_speed_controller_bt_node)
add_library(nav2_truncate_path_action_bt_node SHARED plugins/action/truncate_path_action.cpp)
list(APPEND plugin_libs nav2_truncate_path_action_bt_node)

add_library(nav2_concatenate_paths_action_bt_node SHARED plugins/action/concatenate_paths_action.cpp)
list(APPEND plugin_libs nav2_concatenate_paths_action_bt_node)

add_library(nav2_truncate_path_local_action_bt_node SHARED plugins/action/truncate_path_local_action.cpp)
list(APPEND plugin_libs nav2_truncate_path_local_action_bt_node)

Expand All @@ -182,9 +191,21 @@ list(APPEND plugin_libs nav2_remove_passed_goals_action_bt_node)
add_library(nav2_remove_in_collision_goals_action_bt_node SHARED plugins/action/remove_in_collision_goals_action.cpp)
list(APPEND plugin_libs nav2_remove_in_collision_goals_action_bt_node)

add_library(nav2_append_goal_pose_to_goals_action_bt_node SHARED plugins/action/append_goal_pose_to_goals_action.cpp)
list(APPEND plugin_libs nav2_append_goal_pose_to_goals_action_bt_node)

add_library(nav2_get_pose_from_path_action_bt_node SHARED plugins/action/get_pose_from_path_action.cpp)
list(APPEND plugin_libs nav2_get_pose_from_path_action_bt_node)

add_library(nav2_extract_route_nodes_as_goals_action_bt_node SHARED plugins/action/extract_route_nodes_as_goals_action.cpp)
list(APPEND plugin_libs nav2_extract_route_nodes_as_goals_action_bt_node)

add_library(nav2_get_next_few_goals_action_bt_node SHARED plugins/action/get_next_few_goals_action.cpp)
list(APPEND plugin_libs nav2_get_next_few_goals_action_bt_node)

add_library(nav2_get_current_pose_action_bt_node SHARED plugins/action/get_current_pose_action.cpp)
list(APPEND plugin_libs nav2_get_current_pose_action_bt_node)

add_library(nav2_pipeline_sequence_bt_node SHARED plugins/control/pipeline_sequence.cpp)
list(APPEND plugin_libs nav2_pipeline_sequence_bt_node)

Expand Down Expand Up @@ -212,6 +233,15 @@ list(APPEND plugin_libs nav2_progress_checker_selector_bt_node)
add_library(nav2_goal_updated_controller_bt_node SHARED plugins/decorator/goal_updated_controller.cpp)
list(APPEND plugin_libs nav2_goal_updated_controller_bt_node)

add_library(nav2_compute_and_track_route_cancel_bt_node SHARED plugins/action/compute_and_track_route_cancel_node.cpp)
list(APPEND plugin_libs nav2_compute_and_track_route_cancel_bt_node)

add_library(nav2_compute_and_track_route_bt_node SHARED plugins/action/compute_and_track_route_action.cpp)
list(APPEND plugin_libs nav2_compute_and_track_route_bt_node)

add_library(nav2_compute_route_bt_node SHARED plugins/action/compute_route_action.cpp)
list(APPEND plugin_libs nav2_compute_route_bt_node)

foreach(bt_plugin ${plugin_libs})
target_include_directories(${bt_plugin}
PRIVATE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class BtServiceNode : public BT::ActionNodeBase
service_name_ = service_new;
node_ = config().blackboard->template get<rclcpp::Node::SharedPtr>("node");
service_client_ = std::make_shared<nav2_util::ServiceClient<ServiceT>>(
service_name_, node_, true /*creates and spins an internal executor*/);
service_name_, node_, true /*creates and spins an internal executor*/);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Copyright (c) 2025 Open Navigation LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef NAV2_BEHAVIOR_TREE__PLUGINS__ACTION__APPEND_GOAL_POSE_TO_GOALS_ACTION_HPP_
#define NAV2_BEHAVIOR_TREE__PLUGINS__ACTION__APPEND_GOAL_POSE_TO_GOALS_ACTION_HPP_

#include <vector>
#include <memory>
#include <string>

#include "nav_msgs/msg/goals.hpp"
#include "nav2_msgs/msg/route.hpp"
#include "geometry_msgs/msg/pose_stamped.hpp"
#include "nav2_util/geometry_utils.hpp"
#include "nav2_util/robot_utils.hpp"
#include "behaviortree_cpp/action_node.h"

namespace nav2_behavior_tree
{

class AppendGoalPoseToGoals : public BT::ActionNodeBase
{
public:
AppendGoalPoseToGoals(
const std::string & xml_tag_name,
const BT::NodeConfiguration & conf);


static BT::PortsList providedPorts()
{
return {
BT::InputPort<geometry_msgs::msg::PoseStamped>("goal_pose", "Goal pose to append"),
BT::InputPort<nav_msgs::msg::Goals>("input_goals", "Input goals to append to"),
BT::OutputPort<nav_msgs::msg::Goals>("output_goals", "Output goals after appending")
};
}

private:
void halt() override {}
BT::NodeStatus tick() override;
};

} // namespace nav2_behavior_tree

#endif // NAV2_BEHAVIOR_TREE__PLUGINS__ACTION__APPEND_GOAL_POSE_TO_GOALS_ACTION_HPP_
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
// Copyright (c) 2025 Open Navigation LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef NAV2_BEHAVIOR_TREE__PLUGINS__ACTION__COMPUTE_AND_TRACK_ROUTE_ACTION_HPP_
#define NAV2_BEHAVIOR_TREE__PLUGINS__ACTION__COMPUTE_AND_TRACK_ROUTE_ACTION_HPP_

#include <string>
#include <memory>

#include "nav2_msgs/action/compute_and_track_route.hpp"
#include "nav2_behavior_tree/bt_action_node.hpp"

namespace nav2_behavior_tree
{

/**
* @brief A nav2_behavior_tree::BtActionNode class that wraps nav2_msgs::action::ComputeAndTrackRoute
*/
class ComputeAndTrackRouteAction : public BtActionNode<nav2_msgs::action::ComputeAndTrackRoute>
{
using Action = nav2_msgs::action::ComputeAndTrackRoute;
using ActionResult = Action::Result;

public:
/**
* @brief A constructor for nav2_behavior_tree::ComputeAndTrackRouteAction
* @param xml_tag_name Name for the XML tag for this node
* @param action_name Action name this node creates a client for
* @param conf BT node configuration
*/
ComputeAndTrackRouteAction(
const std::string & xml_tag_name,
const std::string & action_name,
const BT::NodeConfiguration & conf);

/**
* @brief Function to perform some user-defined operation on tick
*/
void on_tick() override;

/**
* @brief Function to perform some user-defined operation upon successful completion of the action
*/
BT::NodeStatus on_success() override;

/**
* @brief Function to perform some user-defined operation upon abortion of the action
*/
BT::NodeStatus on_aborted() override;

/**
* @brief Function to perform some user-defined operation upon cancellation of the action
*/
BT::NodeStatus on_cancelled() override;

/**
* @brief Function to perform some user-defined operation after a timeout
* waiting for a result that hasn't been received yet
* @param feedback shared_ptr to latest feedback message
*/
void on_wait_for_result(
std::shared_ptr<const Action::Feedback> feedback) override;

/**
* @brief Creates list of BT ports
* @return BT::PortsList Containing basic ports along with node-specific ports
*/
static BT::PortsList providedPorts()
{
return providedBasicPorts(
{
BT::InputPort<unsigned int>("start_id", "ID of the start node"),
BT::InputPort<unsigned int>("goal_id", "ID of the goal node"),
BT::InputPort<geometry_msgs::msg::PoseStamped>(
"start",
"Start pose of the path if overriding current robot pose and using poses over IDs"),
BT::InputPort<geometry_msgs::msg::PoseStamped>(
"goal", "Goal pose of the path if using poses over IDs"),
BT::InputPort<bool>(
"use_start", false,
"Whether to use the start pose or the robot's current pose"),
BT::InputPort<bool>(
"use_poses", false, "Whether to use poses or IDs for start and goal"),
BT::OutputPort<builtin_interfaces::msg::Duration>("execution_duration",
"Time taken to compute and track route"),
BT::OutputPort<ActionResult::_error_code_type>(
"error_code_id", "The compute route error code"),
BT::OutputPort<std::string>(
"error_msg", "The compute route error msg"),
});
}
};

} // namespace nav2_behavior_tree

#endif // NAV2_BEHAVIOR_TREE__PLUGINS__ACTION__COMPUTE_AND_TRACK_ROUTE_ACTION_HPP_
Loading
Loading