Could not find joint 'arm_joint_1' in 'hardware_interface::EffortJointInterface' for Youbot in Gazebo
Hi Everyone,
I've been following this tutorial on MoveIt about integrating a working URDF into Gazebo and MoveIt.
I have been attempting to do this with a Kuka Youbot for quite a while now but to no avail. I followed the MoveIt setup, and I am able to get the YouBot planning in RViz, but whenever I run it in Gazebo, I get this error:
[INFO] [1633437053.271865, 0.559000]: Loading controller: youbot_hand_controller
[ERROR] [1633437053.309964908, 0.597000000]: Could not find joint 'gripper_finger_joint_l' in 'hardware_interface::PositionJointInterface'.
[ERROR] [1633437053.310036228, 0.597000000]: Failed to initialize the controller
[ERROR] [1633437053.310062332, 0.597000000]: Initializing controller 'youbot_hand_controller' failed
[ERROR] [1633437054.310560, 1.596000]: Failed to load youbot_hand_controller
Alongside this error for each joint:
[ERROR] [1633437052.986614137, 0.361000000]: No valid hardware interface element found in joint 'arm_joint_1'.
[ERROR] [1633437052.986623544, 0.361000000]: Failed to load joints for transmission 'arm_trans_1'.
Here is my launch file, it successfully spawns in my youbot, with an intel Realsense D435i mounted to the hand :
<launch>
<arg name="gui" default="true" />
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find youbot_gazebo)/worlds/empty_room.world"/>
<arg name="debug" value="false" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="headless" value="false"/>
</include>
<!-- spawn general model for the youbot -->
<arg name="youbot_model" default="$(find youbot_description)/robots/youbot.urdf.xacro" />
<param name="youbot_description" command="$(find xacro)/xacro $(arg youbot_model)" />
<!-- Add the Intel realsense to the UR5 End Effector -->
<param name="robot_description" command="$(find xacro)/xacro '$(find youbot_description)/urdf/youbot_arm/realsense.urdf.xacro' use_nominal_extrinsics:=true" />
<!-- push camera to gazebo -->
<node name="spawn_camera" pkg="gazebo_ros" type="spawn_model" args="-urdf -param robot_description -model youbot -x 0 -y 0 -z 0" respawn="false" output="screen" />
<include file="$(find youbot_moveit_config)/launch/ros_controllers.launch"/>
</launch>
The ros controller launch file is here:
<?xml version="1.0"?>
<launch>
<!-- Load joint controller configurations from YAML file to parameter server -->
<rosparam file="$(find youbot_moveit_config)/config/ros_controllers.yaml" command="load"/>
<!-- Load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" args="joint_state_controller youbot_hand_controller youbot_arm_controller"
/>
</launch>
And finally, here is my YAML file:
# MoveIt-specific simulation settings
moveit_sim_hw_interface:
joint_model_group: controllers_initial_group_
joint_model_group_pose: controllers_initial_pose_
# Settings for ros_control control loop
generic_hw_control_loop:
loop_hz: 300
cycle_time_error_threshold: 0.01
# Settings for ros_control hardware interface
hardware_interface:
joints:
- virtual_joint
- arm_joint_1
- arm_joint_2
- arm_joint_3
- arm_joint_4
- arm_joint_5
- gripper_finger_joint_l
- gripper_finger_joint_r
- wheel_joint_bl
- wheel_joint_br
- wheel_joint_fl
- wheel_joint_fr
sim_control_mode: 1 # 0: position, 1: velocity
# Publish all joint states
# Creates the /joint_states topic necessary in ROS
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
youbot_arm_controller:
type: effort_controllers/JointTrajectoryController
joints:
- arm_joint_1
- arm_joint_2
- arm_joint_3
- arm_joint_4
- arm_joint_5
gains:
arm_joint_1: { p: 12000, d: 50, i: 0.0, i_clamp: 10000 }
arm_joint_2: { p: 30000, d: 100, i: 0.02, i_clamp: 10000 }
arm_joint_3: { p: 18000, d: 50, i: 0.01, i_clamp: 1 }
arm_joint_4: { p: 7000, d: 50, i: 0.01, i_clamp: 1 ...
I present the same problem with my own project, do you have an advance or a possible solution that you will not publish?