effort_controllers cannot recognize robot_description

asked 2021-11-04 09:32:55 -0500

Gates gravatar image

updated 2021-11-04 09:36:39 -0500

This is a kind of repetitive of this issue. I am experiencing a similar issue in noetic and I am not sure if it is a bug or I am missing something.

I have a robot in a namespace. I can control the robot if I define the transmission as <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface> and in my controller yaml file:

joint_1_x_position_controller:
type: position_controllers/JointPositionController
joint: joint_1_x

However, when I send position commands, the robot overshoots the desired goal command like this. I would like to define some PID parameters in my controller but for that it looks like that I need effort_controllers/JointPositionController as far as I understand.

When I change the transmission to hardware_interface/EffortJointInterface and the controller as:

joint_1_x_position_controller:
type: effort_controllers/JointPositionController
joint: joint_1_x
pid: {p: 100.0, i: 0.01, d: 10.0}

Then the robot_description is not found. I load the robot_description parameter in another name and I want my controller to use it. I am a bit confused why the first way works and the second one does not...

Any help is appreciated. Thanks!


Edit: Error message:

[ERROR] [1636034371.838055722, 10.836000000]: Initializing controller 'joint_1_x_position_controller' failed
[ERROR] [1636034372.967876975, 11.951000000]: Could not find parameter robot_description on parameter server
[ERROR] [1636034372.968057978, 11.951000000]: Failed to parse urdf file
[ERROR] [1636034372.968184454, 11.951000000]: Failed to initialize the controller
edit retag flag offensive close merge delete

Comments

Hi @Gates for your consideration. I’ve seen error before with this question https://answers.ros.org/question/3369...

osilva gravatar image osilva  ( 2021-11-04 19:04:59 -0500 )edit

Hi, thanks for the comment. Unfortunately, this is not a solution to my problem because I've already loaded robot description to the parameter server. The issue is that my robit description name is different than robot_description (because I have multiple robots). I need a way to tell my controller spawner to look for a description which is named different than robot_description.

Gates gravatar image Gates  ( 2021-11-05 01:11:41 -0500 )edit

Thank you for the clarification.

osilva gravatar image osilva  ( 2021-11-05 05:14:05 -0500 )edit

@gvdhoorn could you kindly review this question. Not sure how to help here.

osilva gravatar image osilva  ( 2021-11-05 06:50:42 -0500 )edit

Addition: Apparently I can add PID parameters to position_controllers as well. I didn't know that before I ask this question. So, my problem is solved in another method; I am able to control my custom joints as I want now.

But I am still curious about the issue with effort_controllers. Therefore I am not closing the topic so that someone else can inform us about it.

Gates gravatar image Gates  ( 2021-11-06 08:48:06 -0500 )edit

That’s good news @Gates.

osilva gravatar image osilva  ( 2021-11-06 09:01:18 -0500 )edit