Skip to content

Commit 0c958dc

Browse files
Use private parameter for parent namespace
Signed-off-by: Luca Della Vedova <lucadv@intrinsic.ai>
1 parent 745af36 commit 0c958dc

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

‎nav2_costmap_2d/src/costmap_2d_ros.cpp‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ Costmap2DROS::Costmap2DROS(const rclcpp::NodeOptions & options)
7070
"nav2_costmap_2d::ObstacleLayer",
7171
"nav2_costmap_2d::InflationLayer"}
7272
{
73-
declare_parameter("map_topic", rclcpp::ParameterValue(std::string("map")));
7473
is_lifecycle_follower_ = false;
74+
declare_parameter("__parent_namespace", std::string(get_namespace()));
7575
init();
7676
}
7777

@@ -99,9 +99,7 @@ Costmap2DROS::Costmap2DROS(
9999
"nav2_costmap_2d::ObstacleLayer",
100100
"nav2_costmap_2d::InflationLayer"}
101101
{
102-
declare_parameter(
103-
"map_topic", rclcpp::ParameterValue(
104-
(parent_namespace_ == "/" ? "/" : parent_namespace_ + "/") + std::string("map")));
102+
declare_parameter("__parent_namespace", parent_namespace);
105103
init();
106104
}
107105

@@ -114,6 +112,7 @@ void Costmap2DROS::init()
114112
declare_parameter("footprint_padding", rclcpp::ParameterValue(0.01f));
115113
declare_parameter("footprint", rclcpp::ParameterValue(std::string("[]")));
116114
declare_parameter("global_frame", rclcpp::ParameterValue(std::string("map")));
115+
declare_parameter("map_topic", rclcpp::ParameterValue(std::string("map")));
117116
declare_parameter("height", rclcpp::ParameterValue(5));
118117
declare_parameter("width", rclcpp::ParameterValue(5));
119118
declare_parameter("lethal_cost_threshold", rclcpp::ParameterValue(100));

‎nav2_costmap_2d/src/costmap_layer.cpp‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,12 @@ std::string CostmapLayer::joinWithParentNamespace(const std::string & topic)
273273
}
274274

275275
if (topic[0] != '/') {
276-
std::string node_namespace = node->get_namespace();
277-
std::string parent_namespace = node_namespace.substr(0, node_namespace.rfind("/"));
278-
return parent_namespace + "/" + topic;
276+
auto parent_param = node->get_parameter("__parent_namespace");
277+
if (parent_param.get_type() != rclcpp::ParameterType::PARAMETER_STRING) {
278+
throw std::runtime_error{"__parent_namespace parameter not found or wrong type"};
279+
}
280+
auto parent_ns = parent_param.as_string();
281+
return (parent_ns == "/" ? "/" : parent_ns + "/") + topic;
279282
}
280283

281284
return topic;

0 commit comments

Comments
 (0)