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

Revision history [back]

click to hide/show revision 1
initial version

This appears to be a cross-post of ros-controls/ros_control#383.

In any case:

It sounds like there weren't any controllers found, though the (rqt_)controller_manager says something different.

No, it doesn't.

You're confusing the ros_control controllers with whatever MoveIt calls "a controller".

MoveIt is printing that error message.

According to this post you have to configure two controllers.yaml-files: one for moveit, one for ROS. Can somebody confirm this? Doesn't sound like a clean solution.

I'm not sure how having two files is not "a clean solution", but: there is no need for two separate files, but you will need two sets of parameters: one for your hw interfaces (those of the Panda and the UR) and one for MoveIt. Those also typically live in separate namespaces, so having two files makes sense.

I tried to make it in this way, but it didn't work either. It fixes the error that no controller_list was specified, but the other error is still there. After a few tests, I even recognized that the first type of solution (moveit_controllers.yaml file) has no effect and can even be left out. So right now I'm trying it just with the ros_controllers.yaml file. This lets me see the controllers in the rqt Controller Manager and I'm able to control the joints trough the Joint Trajectory Controller of rqt. But whenever I send a move() command from MoveIt, I still get the error message with the empty list of available controllers.

Again: ros_control controllers != MoveIt controllers.

To gain some more insight into what is going on, I would suggest to configure ROS logging such that it includes the name of the node and of the logger when printing log messages. Refer to Console Output Formatting for more information, but this is how I'd configure things (add it to your .bashrc fi):

export ROSCONSOLE_FORMAT='[${severity}] [${time}] [${node}] [${logger}]: ${message}'

Running your setup again should show you that MoveIt is complaining.

This appears to be a cross-post of ros-controls/ros_control#383.

In any case:

It sounds like there weren't any controllers found, though the (rqt_)controller_manager says something different.

No, it doesn't.

You're confusing the ros_control controllers with whatever MoveIt calls "a controller".

MoveIt is printing that error message.

According to this post you have to configure two controllers.yaml-files: one for moveit, one for ROS. Can somebody confirm this? Doesn't sound like a clean solution.

I'm not sure how having two files is not "a clean solution", but: there is no need for two separate files, but you will need two sets of parameters: one for your hw interfaces (those of the Panda and the UR) and one for MoveIt. Those also typically live in separate namespaces, so having two files makes sense.

I tried to make it in this way, but it didn't work either. It fixes the error that no controller_list was specified, but the other error is still there. After a few tests, I even recognized that the first type of solution (moveit_controllers.yaml file) has no effect and can even be left out. So right now I'm trying it just with the ros_controllers.yaml file. This lets me see the controllers in the rqt Controller Manager and I'm able to control the joints trough the Joint Trajectory Controller of rqt. But whenever I send a move() command from MoveIt, I still get the error message with the empty list of available controllers.

Again: ros_control controllers != MoveIt controllers.

To gain some more insight into what is going on, I would suggest to configure ROS logging such that it includes the name of the node and of the logger when printing log messages. Refer to Console Output Formatting for more information, but this is how I'd configure things (add it to your .bashrc fi):

export ROSCONSOLE_FORMAT='[${severity}] [${time}] [${node}] [${logger}]: ${message}'

Running your setup again should show you that MoveIt is complaining.

You may take a look at the Low Level Controllers page on the MoveIt tutorials site. Comparing the "yaml configuration" shown there as an example and the one you show in your question immediately shows that yours is missing the top-level controller_list key. That is what MoveIt is complaining about.

Probably unrelated, but you'll also want to avoid using capitals everywhere (so no UR5_controller, but ur5_controller).

I would suggest to first get one robot working correctly with the ros_control configuration: single robot in your urdf, single robot set of parameters, launch files, etc. If/when you have that working, start extending it.