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

Could not find joint 'arm_joint_1' in 'hardware_interface::EffortJointInterface' for Youbot in Gazebo

asked 2021-10-05 08:37:55 -0600

LeeAClift gravatar image

updated 2021-10-26 09:11:39 -0600

lucasw gravatar image

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 ...
(more)
edit retag flag offensive close merge delete

Comments

I present the same problem with my own project, do you have an advance or a possible solution that you will not publish?

Arnolvalencia1 gravatar image Arnolvalencia1  ( 2021-10-08 11:44:11 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-10-13 05:11:35 -0600

LeeAClift gravatar image

So I was able to fix my problem. It seems that this problem (at least for me) was caused by errors in my URDF file, related to the transmission. By replacing the files I had with the ones provided by the MAS Group via GitHub (specifically Youbot_description & youbot_simulation) I have been able to simulation the robot in Gazebo with controllers to move the arm around via MoveIt!.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2021-10-05 08:37:55 -0600

Seen: 857 times

Last updated: Oct 13 '21