effort_controllers cannot recognize robot_description
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
Hi @Gates for your consideration. I’ve seen error before with this question https://answers.ros.org/question/3369...
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.
Thank you for the clarification.
@gvdhoorn could you kindly review this question. Not sure how to help here.
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.That’s good news @Gates.