1
$\begingroup$

I am fairly new to ROS and Gazebo. I have posted this question on the ROS/Gazebo forums, but they appear to be dead.

I am using ros-kinetic and gazebo7.3 on Ubuntu 16.04. I have been following this tutorial (Tutorial) 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 also get the same errors when using the same command on the completed project provided by the creators of the tutorial, Complete Project Github. 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 of the four 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 online, however, the solutions don’t seem to fix mine (I can't post any more links due to my reputation level).

(1). I already use the hardwareInterface tags

(2). I have already installed ros_control

If anyone has any ideas on how to fix these errors I would appreciate it.

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?

$\endgroup$
  • 1
    $\begingroup$ Why don't you ask ROS technical question at its own designated forum? $\endgroup$ – IsaacS Sep 10 '16 at 1:10
  • $\begingroup$ Looks like same problem as you answers.ros.org/question/186681/… $\endgroup$ – hammer Sep 10 '16 at 4:57
  • $\begingroup$ Hi, @IsaacS I did actually post on the ROS forum, though I didn't receive any responses, even after 2 weeks. $\endgroup$ – LukeT Sep 12 '16 at 7:54
  • $\begingroup$ @hammer , I did actually find that answer (and other similar) a little while ago, but I already use the transmission and hardwareInterface tags. I'll have another look to see if I have missed any. $\endgroup$ – LukeT Sep 12 '16 at 7:54
  • $\begingroup$ @hammer I have edited my original post. I remember now that I do have a joint tag which is not wrapped with the transmission tag. I then link the transmission in the next block (code added to original post). If I merge these so that there is just one joint tag wrapped by the transmission tags, then the original error disappears and I instead get another error (added to original post). I hope I haven't made my original post too long and confusing now. $\endgroup$ – LukeT Sep 12 '16 at 9:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.