Skip to content

Commit 362d4b1

Browse files
committed
all publishers as unique ptrs
Signed-off-by: Steve Macenski <[email protected]>
1 parent 2e757ab commit 362d4b1

File tree

12 files changed

+105
-99
lines changed

12 files changed

+105
-99
lines changed

nav2_docking/opennav_docking/src/simple_charging_dock.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,15 @@ geometry_msgs::msg::PoseStamped SimpleChargingDock::getStagingPose(
163163
staging_pose.pose.orientation = tf2::toMsg(orientation);
164164

165165
// Publish staging pose for debugging purposes
166-
staging_pose_pub_->publish(staging_pose);
166+
staging_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(staging_pose));
167167
return staging_pose;
168168
}
169169

170170
bool SimpleChargingDock::getRefinedPose(geometry_msgs::msg::PoseStamped & pose, std::string /*id*/)
171171
{
172172
// If using not detection, set the dock pose to the static fixed-frame version
173173
if (!use_external_detection_pose_) {
174-
dock_pose_pub_->publish(pose);
174+
dock_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(pose));
175175
dock_pose_ = pose;
176176
return true;
177177
}
@@ -207,7 +207,7 @@ bool SimpleChargingDock::getRefinedPose(geometry_msgs::msg::PoseStamped & pose,
207207

208208
// Filter the detected pose
209209
detected = filter_->update(detected);
210-
filtered_dock_pose_pub_->publish(detected);
210+
filtered_dock_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(detected));
211211

212212
// Rotate the just the orientation, then remove roll/pitch
213213
geometry_msgs::msg::PoseStamped just_orientation;
@@ -231,7 +231,7 @@ bool SimpleChargingDock::getRefinedPose(geometry_msgs::msg::PoseStamped & pose,
231231
dock_pose_.pose.position.z = 0.0;
232232

233233
// Publish & return dock pose for debugging purposes
234-
dock_pose_pub_->publish(dock_pose_);
234+
dock_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(dock_pose_));
235235
pose = dock_pose_;
236236
return true;
237237
}

nav2_docking/opennav_docking/src/simple_non_charging_dock.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,15 @@ geometry_msgs::msg::PoseStamped SimpleNonChargingDock::getStagingPose(
144144
staging_pose.pose.orientation = tf2::toMsg(orientation);
145145

146146
// Publish staging pose for debugging purposes
147-
staging_pose_pub_->publish(staging_pose);
147+
staging_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(staging_pose));
148148
return staging_pose;
149149
}
150150

151151
bool SimpleNonChargingDock::getRefinedPose(geometry_msgs::msg::PoseStamped & pose, std::string)
152152
{
153153
// If using not detection, set the dock pose to the static fixed-frame version
154154
if (!use_external_detection_pose_) {
155-
dock_pose_pub_->publish(pose);
155+
dock_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(pose));
156156
dock_pose_ = pose;
157157
return true;
158158
}
@@ -188,7 +188,7 @@ bool SimpleNonChargingDock::getRefinedPose(geometry_msgs::msg::PoseStamped & pos
188188

189189
// Filter the detected pose
190190
detected = filter_->update(detected);
191-
filtered_dock_pose_pub_->publish(detected);
191+
filtered_dock_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(detected));
192192

193193
// Rotate the just the orientation, then remove roll/pitch
194194
geometry_msgs::msg::PoseStamped just_orientation;
@@ -212,7 +212,7 @@ bool SimpleNonChargingDock::getRefinedPose(geometry_msgs::msg::PoseStamped & pos
212212
dock_pose_.pose.position.z = 0.0;
213213

214214
// Publish & return dock pose for debugging purposes
215-
dock_pose_pub_->publish(dock_pose_);
215+
dock_pose_pub_->publish(std::make_unique<geometry_msgs::msg::PoseStamped>(dock_pose_));
216216
pose = dock_pose_;
217217
return true;
218218
}

nav2_graceful_controller/include/nav2_graceful_controller/utils.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace nav2_graceful_controller
2828
* @param motion_target Motion target in PoseStamped format
2929
* @return geometry_msgs::msg::PointStamped Motion target in PointStamped format
3030
*/
31-
geometry_msgs::msg::PointStamped createMotionTargetMsg(
31+
std::unique_ptr<geometry_msgs::msg::PointStamped> createMotionTargetMsg(
3232
const geometry_msgs::msg::PoseStamped & motion_target);
3333

3434
/**
@@ -39,7 +39,7 @@ geometry_msgs::msg::PointStamped createMotionTargetMsg(
3939
* @param slowdown_radius Radius of the slowdown circle
4040
* @return visualization_msgs::msg::Marker Slowdown marker
4141
*/
42-
visualization_msgs::msg::Marker createSlowdownMarker(
42+
std::unique_ptr<visualization_msgs::msg::Marker> createSlowdownMarker(
4343
const geometry_msgs::msg::PoseStamped & motion_target, const double & slowdown_radius);
4444

4545
} // namespace nav2_graceful_controller

nav2_graceful_controller/src/graceful_controller.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,12 +233,10 @@ geometry_msgs::msg::TwistStamped GracefulController::computeVelocityCommands(
233233
if (simulateTrajectory(target_pose, costmap_transform, local_plan, cmd_vel, reversing)) {
234234
// Successfully simulated to target_pose - compute velocity at this moment
235235
// Publish the selected target_pose
236-
auto motion_target_point = nav2_graceful_controller::createMotionTargetMsg(target_pose);
237-
motion_target_pub_->publish(motion_target_point);
236+
motion_target_pub_->publish(nav2_graceful_controller::createMotionTargetMsg(target_pose));
238237
// Publish marker for slowdown radius around motion target for debugging / visualization
239-
auto slowdown_marker = nav2_graceful_controller::createSlowdownMarker(
240-
target_pose, params_->slowdown_radius);
241-
slowdown_pub_->publish(slowdown_marker);
238+
slowdown_pub_->publish(nav2_graceful_controller::createSlowdownMarker(
239+
target_pose, params_->slowdown_radius));
242240
// Publish the local plan
243241
local_plan.header = transformed_plan.header;
244242
local_plan_pub_->publish(local_plan);

nav2_graceful_controller/src/utils.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,34 @@
1717
namespace nav2_graceful_controller
1818
{
1919

20-
geometry_msgs::msg::PointStamped createMotionTargetMsg(
20+
std::unique_ptr<geometry_msgs::msg::PointStamped> createMotionTargetMsg(
2121
const geometry_msgs::msg::PoseStamped & motion_target)
2222
{
23-
geometry_msgs::msg::PointStamped motion_target_point;
24-
motion_target_point.header = motion_target.header;
25-
motion_target_point.point = motion_target.pose.position;
26-
motion_target_point.point.z = 0.01;
23+
auto motion_target_point = std::make_unique<geometry_msgs::msg::PointStamped>();
24+
motion_target_point->header = motion_target.header;
25+
motion_target_point->point = motion_target.pose.position;
26+
motion_target_point->point.z = 0.01;
2727
return motion_target_point;
2828
}
2929

30-
visualization_msgs::msg::Marker createSlowdownMarker(
30+
std::unique_ptr<visualization_msgs::msg::Marker> createSlowdownMarker(
3131
const geometry_msgs::msg::PoseStamped & motion_target, const double & slowdown_radius)
3232
{
33-
visualization_msgs::msg::Marker slowdown_marker;
34-
slowdown_marker.header = motion_target.header;
35-
slowdown_marker.ns = "slowdown";
36-
slowdown_marker.id = 0;
37-
slowdown_marker.type = visualization_msgs::msg::Marker::SPHERE;
38-
slowdown_marker.action = visualization_msgs::msg::Marker::ADD;
39-
slowdown_marker.pose = motion_target.pose;
40-
slowdown_marker.pose.position.z = 0.01;
41-
slowdown_marker.scale.x = slowdown_radius * 2.0;
42-
slowdown_marker.scale.y = slowdown_radius * 2.0;
43-
slowdown_marker.scale.z = 0.02;
44-
slowdown_marker.color.a = 0.2;
45-
slowdown_marker.color.r = 0.0;
46-
slowdown_marker.color.g = 1.0;
47-
slowdown_marker.color.b = 0.0;
33+
auto slowdown_marker = std::make_unique<visualization_msgs::msg::Marker>();
34+
slowdown_marker->header = motion_target.header;
35+
slowdown_marker->ns = "slowdown";
36+
slowdown_marker->id = 0;
37+
slowdown_marker->type = visualization_msgs::msg::Marker::SPHERE;
38+
slowdown_marker->action = visualization_msgs::msg::Marker::ADD;
39+
slowdown_marker->pose = motion_target.pose;
40+
slowdown_marker->pose.position.z = 0.01;
41+
slowdown_marker->scale.x = slowdown_radius * 2.0;
42+
slowdown_marker->scale.y = slowdown_radius * 2.0;
43+
slowdown_marker->scale.z = 0.02;
44+
slowdown_marker->color.a = 0.2;
45+
slowdown_marker->color.r = 0.0;
46+
slowdown_marker->color.g = 1.0;
47+
slowdown_marker->color.b = 0.0;
4848
return slowdown_marker;
4949
}
5050

nav2_graceful_controller/test/test_graceful_controller.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ class GMControllerFixture : public nav2_graceful_controller::GracefulController
5959

6060
nav_msgs::msg::Path getPlan() {return path_handler_->getPlan();}
6161

62-
geometry_msgs::msg::PointStamped createMotionTargetMsg(
62+
std::unique_ptr<geometry_msgs::msg::PointStamped> createMotionTargetMsg(
6363
const geometry_msgs::msg::PoseStamped & motion_target)
6464
{
6565
return nav2_graceful_controller::createMotionTargetMsg(motion_target);
6666
}
6767

68-
visualization_msgs::msg::Marker createSlowdownMarker(
68+
std::unique_ptr<visualization_msgs::msg::Marker> createSlowdownMarker(
6969
const geometry_msgs::msg::PoseStamped & motion_target)
7070
{
7171
return nav2_graceful_controller::createSlowdownMarker(
@@ -367,10 +367,10 @@ TEST(GracefulControllerTest, createMotionTargetMsg) {
367367
auto motion_target_msg = controller->createMotionTargetMsg(motion_target);
368368

369369
// Check results
370-
EXPECT_EQ(motion_target_msg.header.frame_id, "map");
371-
EXPECT_EQ(motion_target_msg.point.x, 1.0);
372-
EXPECT_EQ(motion_target_msg.point.y, 2.0);
373-
EXPECT_EQ(motion_target_msg.point.z, 0.01);
370+
EXPECT_EQ(motion_target_msg->header.frame_id, "map");
371+
EXPECT_EQ(motion_target_msg->point.x, 1.0);
372+
EXPECT_EQ(motion_target_msg->point.y, 2.0);
373+
EXPECT_EQ(motion_target_msg->point.z, 0.01);
374374
}
375375

376376
TEST(GracefulControllerTest, createSlowdownMsg) {
@@ -405,24 +405,24 @@ TEST(GracefulControllerTest, createSlowdownMsg) {
405405
auto slowdown_msg = controller->createSlowdownMarker(motion_target);
406406

407407
// Check results
408-
EXPECT_EQ(slowdown_msg.header.frame_id, "map");
409-
EXPECT_EQ(slowdown_msg.ns, "slowdown");
410-
EXPECT_EQ(slowdown_msg.id, 0);
411-
EXPECT_EQ(slowdown_msg.type, visualization_msgs::msg::Marker::SPHERE);
412-
EXPECT_EQ(slowdown_msg.action, visualization_msgs::msg::Marker::ADD);
413-
EXPECT_EQ(slowdown_msg.pose.position.x, 1.0);
414-
EXPECT_EQ(slowdown_msg.pose.position.y, 2.0);
415-
EXPECT_EQ(slowdown_msg.pose.position.z, 0.01);
416-
EXPECT_EQ(slowdown_msg.pose.orientation.x, 0.0);
417-
EXPECT_EQ(slowdown_msg.pose.orientation.y, 0.0);
418-
EXPECT_EQ(slowdown_msg.pose.orientation.z, 0.0);
419-
EXPECT_EQ(slowdown_msg.pose.orientation.w, 1.0);
420-
EXPECT_EQ(slowdown_msg.scale.x, 0.4);
421-
EXPECT_EQ(slowdown_msg.scale.y, 0.4);
422-
EXPECT_EQ(slowdown_msg.scale.z, 0.02);
423-
EXPECT_EQ(slowdown_msg.color.r, 0.0);
424-
EXPECT_EQ(slowdown_msg.color.g, 1.0);
425-
EXPECT_EQ(slowdown_msg.color.b, 0.0);
408+
EXPECT_EQ(slowdown_msg->header.frame_id, "map");
409+
EXPECT_EQ(slowdown_msg->ns, "slowdown");
410+
EXPECT_EQ(slowdown_msg->id, 0);
411+
EXPECT_EQ(slowdown_msg->type, visualization_msgs::msg::Marker::SPHERE);
412+
EXPECT_EQ(slowdown_msg->action, visualization_msgs::msg::Marker::ADD);
413+
EXPECT_EQ(slowdown_msg->pose.position.x, 1.0);
414+
EXPECT_EQ(slowdown_msg->pose.position.y, 2.0);
415+
EXPECT_EQ(slowdown_msg->pose.position.z, 0.01);
416+
EXPECT_EQ(slowdown_msg->pose.orientation.x, 0.0);
417+
EXPECT_EQ(slowdown_msg->pose.orientation.y, 0.0);
418+
EXPECT_EQ(slowdown_msg->pose.orientation.z, 0.0);
419+
EXPECT_EQ(slowdown_msg->pose.orientation.w, 1.0);
420+
EXPECT_EQ(slowdown_msg->scale.x, 0.4);
421+
EXPECT_EQ(slowdown_msg->scale.y, 0.4);
422+
EXPECT_EQ(slowdown_msg->scale.z, 0.02);
423+
EXPECT_EQ(slowdown_msg->color.r, 0.0);
424+
EXPECT_EQ(slowdown_msg->color.g, 1.0);
425+
EXPECT_EQ(slowdown_msg->color.b, 0.0);
426426
}
427427

428428
TEST(GracefulControllerTest, rotateToTarget) {

nav2_regulated_pure_pursuit_controller/src/collision_checker.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ bool CollisionChecker::isCollisionImminent(
6262
}
6363

6464
// visualization messages
65-
nav_msgs::msg::Path arc_pts_msg;
66-
arc_pts_msg.header.frame_id = costmap_ros_->getGlobalFrameID();
67-
arc_pts_msg.header.stamp = robot_pose.header.stamp;
65+
auto arc_pts_msg = std::make_unique<nav_msgs::msg::Path>();
66+
arc_pts_msg->header.frame_id = costmap_ros_->getGlobalFrameID();
67+
arc_pts_msg->header.stamp = robot_pose.header.stamp;
6868
geometry_msgs::msg::PoseStamped pose_msg;
69-
pose_msg.header.frame_id = arc_pts_msg.header.frame_id;
70-
pose_msg.header.stamp = arc_pts_msg.header.stamp;
69+
pose_msg.header.frame_id = arc_pts_msg->header.frame_id;
70+
pose_msg.header.stamp = arc_pts_msg->header.stamp;
7171

7272
double projection_time = 0.0;
7373
if (fabs(linear_vel) < 0.01 && fabs(angular_vel) > 0.01) {
@@ -110,16 +110,16 @@ bool CollisionChecker::isCollisionImminent(
110110
pose_msg.pose.position.x = curr_pose.x;
111111
pose_msg.pose.position.y = curr_pose.y;
112112
pose_msg.pose.position.z = 0.01;
113-
arc_pts_msg.poses.push_back(pose_msg);
113+
arc_pts_msg->poses.push_back(pose_msg);
114114

115115
// check for collision at the projected pose
116116
if (inCollision(curr_pose.x, curr_pose.y, curr_pose.theta)) {
117-
carrot_arc_pub_->publish(arc_pts_msg);
117+
carrot_arc_pub_->publish(std::move(arc_pts_msg));
118118
return true;
119119
}
120120
}
121121

122-
carrot_arc_pub_->publish(arc_pts_msg);
122+
carrot_arc_pub_->publish(std::move(arc_pts_msg));
123123

124124
return false;
125125
}

nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ geometry_msgs::msg::TwistStamped RegulatedPurePursuitController::computeVelocity
183183
// Transform path to robot base frame
184184
auto transformed_plan = path_handler_->transformGlobalPlan(
185185
pose, params_->max_robot_pose_search_dist, params_->interpolate_curvature_after_goal);
186-
global_path_pub_->publish(transformed_plan);
186+
auto plan_msg = std::make_unique<nav_msgs::msg::Path>(transformed_plan);
187+
global_path_pub_->publish(std::move(plan_msg));
187188

188189
// Find look ahead distance and point on path and publish
189190
double lookahead_dist = getLookAheadDistance(speed);
@@ -276,9 +277,9 @@ geometry_msgs::msg::TwistStamped RegulatedPurePursuitController::computeVelocity
276277
}
277278

278279
// Publish whether we are rotating to goal heading
279-
std_msgs::msg::Bool is_rotating_to_heading_msg;
280-
is_rotating_to_heading_msg.data = is_rotating_to_heading_;
281-
is_rotating_to_heading_pub_->publish(is_rotating_to_heading_msg);
280+
auto is_rotating_to_heading_msg = std::make_unique<std_msgs::msg::Bool>();
281+
is_rotating_to_heading_msg->data = is_rotating_to_heading_;
282+
is_rotating_to_heading_pub_->publish(std::move(is_rotating_to_heading_msg));
282283

283284
// populate and return message
284285
geometry_msgs::msg::TwistStamped cmd_vel;

nav2_smac_planner/src/smac_planner_2d.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,8 @@ nav_msgs::msg::Path SmacPlanner2D::createPlan(
271271

272272
// Publish raw path for debug
273273
if (_raw_plan_publisher->get_subscription_count() > 0) {
274-
_raw_plan_publisher->publish(plan);
274+
auto msg = std::make_unique<nav_msgs::msg::Path>(plan);
275+
_raw_plan_publisher->publish(std::move(msg));
275276
}
276277

277278
return plan;
@@ -306,7 +307,8 @@ nav_msgs::msg::Path SmacPlanner2D::createPlan(
306307

307308
// Publish raw path for debug
308309
if (_raw_plan_publisher->get_subscription_count() > 0) {
309-
_raw_plan_publisher->publish(plan);
310+
auto msg = std::make_unique<nav_msgs::msg::Path>(plan);
311+
_raw_plan_publisher->publish(std::move(msg));
310312
}
311313

312314
// Find how much time we have left to do smoothing

nav2_smac_planner/src/smac_planner_hybrid.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,8 @@ nav_msgs::msg::Path SmacPlannerHybrid::createPlan(
424424

425425
// Publish raw path for debug
426426
if (_raw_plan_publisher->get_subscription_count() > 0) {
427-
_raw_plan_publisher->publish(plan);
427+
auto msg = std::make_unique<nav_msgs::msg::Path>(plan);
428+
_raw_plan_publisher->publish(std::move(msg));
428429
}
429430

430431
return plan;
@@ -444,17 +445,17 @@ nav_msgs::msg::Path SmacPlannerHybrid::createPlan(
444445
_tolerance / static_cast<float>(costmap->getResolution()), cancel_checker, expansions.get()))
445446
{
446447
if (_debug_visualizations) {
447-
geometry_msgs::msg::PoseArray msg;
448+
auto msg = std::make_unique<geometry_msgs::msg::PoseArray>();
448449
geometry_msgs::msg::Pose msg_pose;
449-
msg.header.stamp = _clock->now();
450-
msg.header.frame_id = _global_frame;
450+
msg->header.stamp = _clock->now();
451+
msg->header.frame_id = _global_frame;
451452
for (auto & e : *expansions) {
452453
msg_pose.position.x = std::get<0>(e);
453454
msg_pose.position.y = std::get<1>(e);
454455
msg_pose.orientation = getWorldOrientation(std::get<2>(e));
455-
msg.poses.push_back(msg_pose);
456+
msg->poses.push_back(msg_pose);
456457
}
457-
_expansions_publisher->publish(msg);
458+
_expansions_publisher->publish(std::move(msg));
458459
}
459460

460461
// Note: If the start is blocked only one iteration will occur before failure
@@ -479,22 +480,23 @@ nav_msgs::msg::Path SmacPlannerHybrid::createPlan(
479480

480481
// Publish raw path for debug
481482
if (_raw_plan_publisher->get_subscription_count() > 0) {
482-
_raw_plan_publisher->publish(plan);
483+
auto msg = std::make_unique<nav_msgs::msg::Path>(plan);
484+
_raw_plan_publisher->publish(std::move(msg));
483485
}
484486

485487
if (_debug_visualizations) {
486488
// Publish expansions for debug
487-
geometry_msgs::msg::PoseArray msg;
489+
auto msg = std::make_unique<geometry_msgs::msg::PoseArray>();
488490
geometry_msgs::msg::Pose msg_pose;
489-
msg.header.stamp = _clock->now();
490-
msg.header.frame_id = _global_frame;
491+
msg->header.stamp = _clock->now();
492+
msg->header.frame_id = _global_frame;
491493
for (auto & e : *expansions) {
492494
msg_pose.position.x = std::get<0>(e);
493495
msg_pose.position.y = std::get<1>(e);
494496
msg_pose.orientation = getWorldOrientation(std::get<2>(e));
495-
msg.poses.push_back(msg_pose);
497+
msg->poses.push_back(msg_pose);
496498
}
497-
_expansions_publisher->publish(msg);
499+
_expansions_publisher->publish(std::move(msg));
498500

499501
// plot footprint path planned for debug
500502
if (_planned_footprints_publisher->get_subscription_count() > 0) {

0 commit comments

Comments
 (0)