robot_description not found on parameter server while launching the controller.
Hello everyone, I have one own created controller for one crane arm. Here you can find the necessary information from controller yaml file,
hardware_interface:
joints:
- neck_L_j1
- arm_j1_j2
- arm_j2_j3
sim_control_mode: 1 # 0: position, 1: velocity
# Publish all joint states -----------------------------------
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 500
crane_left_eff_pos_controller:
type: effort_controllers/JointGroupPositionController
joints:
- neck_L_j1
- arm_j1_j2
- arm_j2_j3
neck_L_j1:
pid: {p: 3000.0, i: 1.0, d: 0.01}
arm_j1_j2:
pid: {p: 3000.0, i: 1.0, d: 0.01}
arm_j2_j3:
pid: {p: 3500.0, i: 1.0, d: 0.01}
I have created the controller launch file which contains the following information.
<?xml version="1.0"?>
<launch>
<group ns="/robot1">
<rosparam file="$(find crane_arm_controller_robot1)/config/crane_arm_controller.yaml" command="load" />
<arg name="controllers" default="joint_state_controller crane_left_eff_pos_controller" />
<!-- Loads the controllers -->
<node name="leftArm_controller_spawner" pkg="controller_manager" type="spawner"
output="screen" args="$(arg controllers)"/>
</group>
</launch>
I have same namespace into urdf file as well while loading the plugin.
<gazebo>
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<robotNamespace>/robot1</robotNamespace>
</plugin>
</gazebo>
Now whenever I launch the module, I have robot_description
param loaded as /robot1/robot_description
so controller should be able to find it but that is not the case with me. it gives the following error.
[ERROR] [1646509768.321224385]: Could not find parameter robot_description on parameter server
[ERROR] [1646509768.321700089]: Failed to parse urdf file
[ERROR] [1646509768.321938019]: Failed to initialize the controller
[ERROR] [1646509768.322140682]: Initializing controller 'crane_left_eff_pos_controller' failed
[ERROR] [1646509769.337931]: Failed to load crane_left_eff_pos_controller
Now here comes the best part, Everything runs smoothy when I have robot_description
param loaded as /robot_description
. On top of that if I do not use effort_controllers/JointGroupPositionController
and use effort_controllers/JointPositionController
for individual joints, the controller identify the robot_description
loaded into namespace /robot1/robot_description
Please let me know if you know some way to solve this. If you want more information on the issue, please let me know.
Thank you.