ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

controller_manager and controller library on different machines

asked 2020-12-11 19:04:40 -0600

I have a 2-machine ROS setup.

M1 is connected to the robot, and runs the node that starts controller_manager (franka_control_node from franka_control).

I developed a new controller on M2. For example, something copied from franka_example_controllers.

Is it possible that the controller_manager running on M1 can run the controller from M2?

Currently I get the error Failed to load <controller_name>. Running rosservice call /controller_manager/list_controller_types does not show the new controller.

Everything works if I move the controller code to M1 and build it there.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2020-12-12 03:32:10 -0600

RobertWilbrandt gravatar image

This is not possible. When a controller_manager loads a controller, it will use pluginlib to load the requested controller (which is simply a correctly exported library) into its own process. This pluginlib lookup will (naturally) only be able to look for this library on its current system. This is why you won't be able to get around moving/copying your controller over to M2.

More generally, it often helps to remind oneself that ros_control looks like a whole bunch of components working together, but at the end of the day they will all run in one node/process through dynamic library loading. My workflow in similar situations mostly consisted of developing a controller on M1 (including small tests in simulation), and then just moving it over using scp/git or similar.

edit flag offensive delete link more

Comments

That makes sense, thank you!

samarth.robo gravatar image samarth.robo  ( 2020-12-14 13:48:47 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2020-12-11 19:04:40 -0600

Seen: 194 times

Last updated: Dec 12 '20