Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Context and Namespace Handling for Multi-Robot Sim #92

Merged
merged 14 commits into from
Mar 28, 2023
Merged
Prev Previous commit
Next Next commit
re-establishing controllerManagerNodeName prefix
  • Loading branch information
badr.moutalib committed Nov 29, 2022
commit a0bdc451aa2fe4c3423a3afe76843a806277ac4e
13 changes: 11 additions & 2 deletions ign_ros2_control/src/ign_ros2_control_plugin.cpp
Original file line number Diff line number Diff line change
@@ -296,11 +296,20 @@ void IgnitionROS2ControlPlugin::Configure(
argv.push_back(reinterpret_cast<const char *>(arg.data()));
}

// Get controller manager node name
std::string controllerManagerNodeName{"controller_manager"};
std::string controllerManagerPrefixNodeName =
_sdf->Get<std::string>("controller_manager_prefix_node_name");
if (!controllerManagerPrefixNodeName.empty()) {
controllerManagerNodeName = controllerManagerPrefixNodeName + "_" + controllerManagerNodeName;
}

auto sdfPtr = const_cast<sdf::Element *>(_sdf.get());

if (sdfPtr->HasElement("ros")) {
sdf::ElementPtr sdfRos = sdfPtr->GetElement("ros");

// Set namespace if tag is present
// Set namespace if tag is present
if (sdfRos->HasElement("namespace")) {
std::string ns = sdfRos->GetElement("namespace")->Get<std::string>();
// prevent exception: namespace must be absolute, it must lead with a '/'
@@ -421,7 +430,7 @@ void IgnitionROS2ControlPlugin::Configure(
new controller_manager::ControllerManager(
std::move(resource_manager_),
this->dataPtr->executor_,
"controller_manager",
controllerManagerNodeName,
this->dataPtr->robot_namespace_));
this->dataPtr->executor_->add_node(this->dataPtr->controller_manager_);