Skip to content

Commit a9fcc5b

Browse files
Large Nav2 Node, Utils, and Interface Refactor (#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]>
1 parent 16d6e63 commit a9fcc5b

File tree

641 files changed

+5421
-4508
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

641 files changed

+5421
-4508
lines changed

.circleci/config.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ _commands:
3333
- restore_cache:
3434
name: Restore Cache << parameters.key >>
3535
keys:
36-
- "<< parameters.key >>-v35\
36+
- "<< parameters.key >>-v36\
3737
-{{ arch }}\
3838
-{{ .Branch }}\
3939
-{{ .Environment.CIRCLE_PR_NUMBER }}\
4040
-{{ checksum \"<< parameters.workspace >>/lockfile.txt\" }}"
41-
- "<< parameters.key >>-v35\
41+
- "<< parameters.key >>-v36\
4242
-{{ arch }}\
4343
-main\
4444
-<no value>\
@@ -58,7 +58,7 @@ _commands:
5858
steps:
5959
- save_cache:
6060
name: Save Cache << parameters.key >>
61-
key: "<< parameters.key >>-v35\
61+
key: "<< parameters.key >>-v36\
6262
-{{ arch }}\
6363
-{{ .Branch }}\
6464
-{{ .Environment.CIRCLE_PR_NUMBER }}\

nav2_amcl/CMakeLists.txt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ find_package(std_srvs REQUIRED)
1717
find_package(tf2 REQUIRED)
1818
find_package(tf2_geometry_msgs REQUIRED)
1919
find_package(tf2_ros REQUIRED)
20+
find_package(nav2_ros_common REQUIRED)
2021

2122
nav2_package()
2223

@@ -38,7 +39,8 @@ add_library(pf_lib SHARED
3839
target_include_directories(pf_lib
3940
PUBLIC
4041
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
41-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
42+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
43+
"$<BUILD_INTERFACE:${nav2_ros_common_INCLUDE_DIRS}>")
4244
if(HAVE_DRAND48)
4345
target_compile_definitions(pf_lib PRIVATE "HAVE_DRAND48")
4446
endif()
@@ -52,7 +54,8 @@ add_library(map_lib SHARED
5254
target_include_directories(map_lib
5355
PUBLIC
5456
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
55-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
57+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
58+
"$<BUILD_INTERFACE:${nav2_ros_common_INCLUDE_DIRS}>")
5659

5760
add_library(motions_lib SHARED
5861
src/motion_model/omni_motion_model.cpp
@@ -61,7 +64,8 @@ add_library(motions_lib SHARED
6164
target_include_directories(motions_lib
6265
PUBLIC
6366
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
64-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
67+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
68+
"$<BUILD_INTERFACE:${nav2_ros_common_INCLUDE_DIRS}>")
6569
target_link_libraries(motions_lib PUBLIC
6670
pf_lib
6771
pluginlib::pluginlib
@@ -77,7 +81,8 @@ add_library(sensors_lib SHARED
7781
target_include_directories(sensors_lib
7882
PUBLIC
7983
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
80-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
84+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
85+
"$<BUILD_INTERFACE:${nav2_ros_common_INCLUDE_DIRS}>")
8186
target_link_libraries(sensors_lib PUBLIC
8287
pf_lib
8388
map_lib
@@ -96,7 +101,8 @@ endif()
96101
target_include_directories(${library_name}
97102
PUBLIC
98103
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
99-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
104+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
105+
"$<BUILD_INTERFACE:${nav2_ros_common_INCLUDE_DIRS}>")
100106
target_link_libraries(${library_name} PUBLIC
101107
${geometry_msgs_TARGETS}
102108
message_filters::message_filters
@@ -123,7 +129,8 @@ add_executable(${executable_name}
123129
target_include_directories(${executable_name}
124130
PUBLIC
125131
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
126-
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
132+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
133+
"$<BUILD_INTERFACE:${nav2_ros_common_INCLUDE_DIRS}>")
127134
target_link_libraries(${executable_name} PRIVATE
128135
${library_name}
129136
)
@@ -169,6 +176,7 @@ ament_export_dependencies(
169176
std_srvs
170177
tf2
171178
tf2_ros
179+
nav2_ros_common
172180
)
173181
ament_export_targets(${library_name})
174182
pluginlib_export_plugin_description_file(nav2_amcl plugins.xml)

nav2_amcl/include/nav2_amcl/amcl_node.hpp

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include "rclcpp/version.h"
3333

3434
#include "geometry_msgs/msg/pose_stamped.hpp"
35-
#include "nav2_util/lifecycle_node.hpp"
35+
#include "nav2_ros_common/lifecycle_node.hpp"
3636
#include "nav2_amcl/motion_model/motion_model.hpp"
3737
#include "nav2_amcl/sensors/laser/laser.hpp"
3838
#include "nav2_msgs/msg/particle.hpp"
@@ -42,7 +42,7 @@
4242
#include "pluginlib/class_loader.hpp"
4343
#include "rclcpp/node_options.hpp"
4444
#include "sensor_msgs/msg/laser_scan.hpp"
45-
#include "nav2_util/service_server.hpp"
45+
#include "nav2_ros_common/service_server.hpp"
4646
#include "std_srvs/srv/empty.hpp"
4747
#include "tf2_ros/message_filter.h"
4848
#include "tf2_ros/transform_broadcaster.h"
@@ -56,7 +56,7 @@ namespace nav2_amcl
5656
* @class AmclNode
5757
* @brief ROS wrapper for AMCL
5858
*/
59-
class AmclNode : public nav2_util::LifecycleNode
59+
class AmclNode : public nav2::LifecycleNode
6060
{
6161
public:
6262
/*
@@ -73,23 +73,23 @@ class AmclNode : public nav2_util::LifecycleNode
7373
/*
7474
* @brief Lifecycle configure
7575
*/
76-
nav2_util::CallbackReturn on_configure(const rclcpp_lifecycle::State & state) override;
76+
nav2::CallbackReturn on_configure(const rclcpp_lifecycle::State & state) override;
7777
/*
7878
* @brief Lifecycle activate
7979
*/
80-
nav2_util::CallbackReturn on_activate(const rclcpp_lifecycle::State & state) override;
80+
nav2::CallbackReturn on_activate(const rclcpp_lifecycle::State & state) override;
8181
/*
8282
* @brief Lifecycle deactivate
8383
*/
84-
nav2_util::CallbackReturn on_deactivate(const rclcpp_lifecycle::State & state) override;
84+
nav2::CallbackReturn on_deactivate(const rclcpp_lifecycle::State & state) override;
8585
/*
8686
* @brief Lifecycle cleanup
8787
*/
88-
nav2_util::CallbackReturn on_cleanup(const rclcpp_lifecycle::State & state) override;
88+
nav2::CallbackReturn on_cleanup(const rclcpp_lifecycle::State & state) override;
8989
/*
9090
* @brief Lifecycle shutdown
9191
*/
92-
nav2_util::CallbackReturn on_shutdown(const rclcpp_lifecycle::State & state) override;
92+
nav2::CallbackReturn on_shutdown(const rclcpp_lifecycle::State & state) override;
9393

9494
/**
9595
* @brief Callback executed when a parameter change is detected
@@ -109,7 +109,7 @@ class AmclNode : public nav2_util::LifecycleNode
109109
// in order to isolate TF timer used in message filter.
110110
rclcpp::CallbackGroup::SharedPtr callback_group_;
111111
rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_;
112-
std::unique_ptr<nav2_util::NodeThread> executor_thread_;
112+
std::unique_ptr<nav2::NodeThread> executor_thread_;
113113

114114
// Pose hypothesis
115115
typedef struct
@@ -149,7 +149,7 @@ class AmclNode : public nav2_util::LifecycleNode
149149
std::atomic<bool> first_map_received_{false};
150150
amcl_hyp_t * initial_pose_hyp_;
151151
std::recursive_mutex mutex_;
152-
rclcpp::Subscription<nav_msgs::msg::OccupancyGrid>::ConstSharedPtr map_sub_;
152+
nav2::Subscription<nav_msgs::msg::OccupancyGrid>::ConstSharedPtr map_sub_;
153153
#if NEW_UNIFORM_SAMPLING
154154
struct Point2D { int32_t x; int32_t y; };
155155
static std::vector<Point2D> free_space_indices;
@@ -180,6 +180,7 @@ class AmclNode : public nav2_util::LifecycleNode
180180
std::unique_ptr<message_filters::Subscriber<sensor_msgs::msg::LaserScan,
181181
rclcpp_lifecycle::LifecycleNode>> laser_scan_sub_;
182182
#endif
183+
183184
std::unique_ptr<tf2_ros::MessageFilter<sensor_msgs::msg::LaserScan>> laser_scan_filter_;
184185
message_filters::Connection laser_scan_connection_;
185186

@@ -188,11 +189,11 @@ class AmclNode : public nav2_util::LifecycleNode
188189
* @brief Initialize pub subs of AMCL
189190
*/
190191
void initPubSub();
191-
rclcpp::Subscription<geometry_msgs::msg::PoseWithCovarianceStamped>::ConstSharedPtr
192+
nav2::Subscription<geometry_msgs::msg::PoseWithCovarianceStamped>::ConstSharedPtr
192193
initial_pose_sub_;
193-
rclcpp_lifecycle::LifecyclePublisher<geometry_msgs::msg::PoseWithCovarianceStamped>::SharedPtr
194+
nav2::Publisher<geometry_msgs::msg::PoseWithCovarianceStamped>::SharedPtr
194195
pose_pub_;
195-
rclcpp_lifecycle::LifecyclePublisher<nav2_msgs::msg::ParticleCloud>::SharedPtr
196+
nav2::Publisher<nav2_msgs::msg::ParticleCloud>::SharedPtr
196197
particle_cloud_pub_;
197198
/*
198199
* @brief Handle with an initial pose estimate is received
@@ -208,8 +209,7 @@ class AmclNode : public nav2_util::LifecycleNode
208209
* @brief Initialize state services
209210
*/
210211
void initServices();
211-
nav2_util::ServiceServer<std_srvs::srv::Empty,
212-
std::shared_ptr<nav2_util::LifecycleNode>>::SharedPtr global_loc_srv_;
212+
nav2::ServiceServer<std_srvs::srv::Empty>::SharedPtr global_loc_srv_;
213213
/*
214214
* @brief Service callback for a global relocalization request
215215
*/
@@ -219,8 +219,7 @@ class AmclNode : public nav2_util::LifecycleNode
219219
std::shared_ptr<std_srvs::srv::Empty::Response> response);
220220

221221
// service server for providing an initial pose guess
222-
nav2_util::ServiceServer<nav2_msgs::srv::SetInitialPose,
223-
std::shared_ptr<nav2_util::LifecycleNode>>::SharedPtr initial_guess_srv_;
222+
nav2::ServiceServer<nav2_msgs::srv::SetInitialPose>::SharedPtr initial_guess_srv_;
224223
/*
225224
* @brief Service callback for an initial pose guess request
226225
*/
@@ -230,8 +229,7 @@ class AmclNode : public nav2_util::LifecycleNode
230229
std::shared_ptr<nav2_msgs::srv::SetInitialPose::Response> response);
231230

232231
// Let amcl update samples without requiring motion
233-
nav2_util::ServiceServer<std_srvs::srv::Empty,
234-
std::shared_ptr<nav2_util::LifecycleNode>>::SharedPtr nomotion_update_srv_;
232+
nav2::ServiceServer<std_srvs::srv::Empty>::SharedPtr nomotion_update_srv_;
235233
/*
236234
* @brief Request an AMCL update even though the robot hasn't moved
237235
*/

nav2_amcl/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
<depend>tf2</depend>
3939
<depend>tf2_geometry_msgs</depend>
4040
<depend>tf2_ros</depend>
41+
<depend>nav2_ros_common</depend>
4142

4243
<test_depend>ament_lint_common</test_depend>
4344
<test_depend>ament_lint_auto</test_depend>

0 commit comments

Comments
 (0)