ros2_control icon indicating copy to clipboard operation
ros2_control copied to clipboard

Compatibility with ROS 2 Components

Open jcarpinelli-bdai opened this issue 6 months ago • 6 comments

Summary

Can we use rclcpp_components, and Components more generally, to more effectively separate manager node / managed node semantics in the ControllerManager class?

Issue

When using the ControllerManager class in a new process (not the project-provided ros2_control_node process), renaming the controller manager might cause every underlying controller to have its private member variable node to change its name to the name of the controller manager. This is a known issue, and is described in the ros2_control documentation.

Composition

In ROS 2, Node Composition seems to be the general solution to the issue described above. Components can be renamed independently of the component manager.

Question

Does composition (in the ROS 2 sense of the word) offer any benefits over the existing design of the controller manager, and the controller interface? Instead of inheriting a std::shared_ptr<rclcpp_lifecycle::LifecycleNode> in the controller interface, could controllers act as Node components? Could the controller manager be a component manager? Thank you for reading!

[!WARNING]

I am not a ROS 2 expert, so my understanding could definitely be incorrect. Please let me know if I'm misunderstanding ros2_control, or ROS 2 features more broadly.

jcarpinelli-bdai avatar Aug 21 '24 20:08 jcarpinelli-bdai