Skip to content

Compatibility with ROS 2 Components #1704

Open
@jcarpinelli-bdai

Description

@jcarpinelli-bdai

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions