Home | Tutorials | Wiki | Issues
Ask Your Question
0

URDF Error No valid hardware interface element found in joint

asked 2016-08-24 08:48:42 -0500

LukeT gravatar image

updated 2016-10-11 02:31:22 -0500

Dear all,

I am fairly new to ROS and Gazebo.

I am using ros-kinetic and gazebo7.3 on Ubuntu 16.04. I have been following this tutorial (http://www.generationrobots.com/blog/...) and have adapted it slightly for my own vehicle (4 wheels instead of 2, skid drive plugin instead of diff drive).

I receive errors when running roslaunch on my own project, and I get the same errors when using the same command on the project provided at the above link. I assume that means that I am missing something in ros or Gazebo.

Running:

roslaunch jaguar4x4_gazebo jaguar4x4_world.launch

gives the following errors (repeated for each joint and trans):

[ERROR] [1472045218.311147687, 0.142000000]: No valid hardware interface element found in joint 'left_back_wheel_hinge'.

[ERROR] [1472045218.311359894, 0.142000000]: Failed to load joints for transmission 'left_back_trans'.

Also:

[ERROR] [1472045218.646822285, 0.365000000]: Exception thrown while initializing controller leftfrontWheel_effort_controller. Could not find resource 'left_front_wheel_hinge' in 'hardware_interface::EffortJointInterface'. [ERROR] [WallTime: 1472045219.647578] [1.363000] Failed to load leftfrontWheel_effort_controller [INFO] [WallTime: 1472045219.647938] [1.363000] Loading controller: leftbackwheel_effort_controller [ERROR] [WallTime: 1472045220.651591] [2.366000] Failed to load leftbackwheel_effort_controller

This error is repeated for each of the 4 wheels.

I have seen similar error messages posted on this site, the solutions don’t seem to fix mine.

(1). http://answers.gazebosim.org/question...

I already use the hardwareInterface tags

(2). I have already installed ros_control

EDIT -------------------------------------------------------------------

I think maybe there is an issue with the way that I have created my joints and the use of the hardwareInterface tags.

In my macros.xacro file I create my joints and link the transmission separately (I repeat this twice for the front and back wheels):

   <joint name="${lr}_front_wheel_hinge" type="continuous">
      <parent link="chassis"/>
      <child link="${lr}_front_wheel"/>
      <origin xyz="${+wheelPos-chassisLength+2*wheelRadius} ${tY*wheelWidth/2+tY*chassisWidth/2} ${wheelRadius}" rpy="0 0 0" />
      <axis xyz="0 1 0" rpy="0 0 0" />
      <limit effort="100" velocity="100"/>
      <joint_properties damping="0.0" friction="0.0"/>
    </joint>
  <transmission name="${lr}_front_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="${lr}_front_wheel_hinge" /> 
    <actuator name="${lr}_front_Motor"> 
      <hardwareInterface>EffortJointInterface</hardwareInterface>
      <mechanicalReduction>10</mechanicalReduction>
    </actuator> 
  </transmission>

Doing it this way gives the errors mentioned above, but my model in Gazebo appears.

If I try to merge both of these blocks so that there is just one joint tag wrapped by the transmission tags then I get the following error and my model does not appear in Gazebo:

[ERROR] [1473672367.041892175]: Failed to find root link: Two root links found: [footprint] and [left_back_wheel]

I don't understand why I get this error because I have a joint between my chassis base link and the world in my Jaguar4x4.xacro file :

 <link name="footprint" /> 

 <joint name="base_joint" type="fixed">
   <parent link="footprint"/>
   <child link="chassis"/>
 </joint>

I now get a number of errors when trying to combine the joint and transmission blocks, so I imagine that this is not the best way to go?

Edit 2 -------------------------------------------------------------------------

Here is my jaguar4x4_control/config/jaguar4x4_control.yaml file ... (more)

edit retag flag offensive close merge delete

Comments

Try <transmission name="${lr}_front_trans"> <type>transmission_interface/SimpleTransmission</type> <joint name="${lr}_front_wheel_hinge"> <hardwareinterface>EffortJointInterface</hardwareinterface> /> <actuator name="${lr}_front_Motor"> <hardwareinterface>EffortJointInterface</hardwareinterface> <mechanicalreduction>10</mechanicalreduction> </actuator> </transmission> Could you give the config file for your gazebo ros controller?

GuillaumeB gravatar imageGuillaumeB ( 2016-09-29 06:02:21 -0500 )edit

@GuillaumeB sorry for the slow response. I tried the code but I get the same errors. I have attached my config file

LukeT gravatar imageLukeT ( 2016-10-11 05:23:10 -0500 )edit

Your config file seems correct. have you : <gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotnamespace>/robot_gazebo</robotnamespace> </plugin> </gazebo> in your urdf? you really need to specify the hardwareinterface twice in the <transmission>. One time for the <joint> and one time for the <actuator>

GuillaumeB gravatar imageGuillaumeB ( 2016-10-14 04:32:16 -0500 )edit

@GuillaumeB I do have that code in my URDF. I tried adding the additional hardwareInterface but that didn't work. I really thought it had worked but it was just another model that was still appearing in my gazebo. I still get the controller spawner warning and an error stating that a process had died

LukeT gravatar imageLukeT ( 2016-10-24 06:27:58 -0500 )edit

I have now created a new model using a single .world file. (I followed this tutorial mostly http://machineawakening.blogspot.co.uk/2015/05/controlling-differential-drive-robot-in.html). I can use the turtlesim teleop key node and I can use twist commands. I just now need to work out how to publish twist command via scripts and process images etc. Do you think it is worth me giving up on the URDF one do you see any future issues with this single file approach?

LukeT gravatar imageLukeT ( 2016-10-24 06:37:59 -0500 )edit

Using only one file is not 'modular' but if you just need something to work as soon as possible use this. If you are still interrested in using your URDF and gazebo_ros_controller please see -> http://www.generationrobots.com/blog/en/2015/02/robotic-simulation-scenarios-with-gazebo-and-ros/ I found that it was a pretty complete tutorial

GuillaumeB gravatar imageGuillaumeB ( 2016-10-24 11:18:14 -0500 )edit

@GuillaumeB Thanks for the help, that was actually the tutorial I used. However, as I mentioned in the original post I couldn't actually run the code supplied by that tutorial, I received the same errors as the one that I have on my own code. It'd be good if I could get the URDF working eventually, but I think for now it is probably best to make some progress so I will use the single file for now. Thanks again for the help.

LukeT gravatar imageLukeT ( 2016-10-25 04:16:26 -0500 )edit

Were there any solutions for this problem? I recently got the same kind of error and cannot figure out what the problem is: [link text](http://answers.gazebosim.org/question/18186/libgazebo_ros_control-in-ros-indigo-is-throwing-exception-for-joint_position_controllers-bug-dec-2017/)

juan gravatar imagejuan ( 2018-01-01 20:17:35 -0500 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2018-01-01 20:17:25 -0500

juan gravatar image

Were there any solutions for this problem? I recently got the same kind of error and cannot figure out what the problem is: link text

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

2 followers

Stats

Asked: 2016-08-24 08:48:42 -0500

Seen: 1,773 times

Last updated: Jan 01