Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

HardwareInterface problem with Gazebo and ros_control

Hello! I am trying to simulate a full custom robot with Gazebo and MoveIt but I am running into one problem: gazebo cannot find the proper hardware interface for the joints in the URDF file.

I need to control two arms (UR10) so similarly to what's done in the package universal_robot I define a controller for each joint type position_controllers/JointTrajectoryController. My URDF file uses UR10's original URDF file which defines the transmission elements as "PositionJointInterface":

    <transmission name="${prefix}shoulder_pan_trans">
  <type>transmission_interface/SimpleTransmission</type>
  <joint name="${prefix}shoulder_pan_joint">
    <hardwareInterface>PositionJointInterface</hardwareInterface>
  </joint>
  <actuator name="${prefix}shoulder_pan_motor">
    <mechanicalReduction>1</mechanicalReduction>
  </actuator>
</transmission>

And yet when I try to run gazebo and spawn the controllers I get this error:

[ERROR] [1445527289.044457090, 0.821000000]: Could not find joint 'leftshoulder_pan_joint' in 'hardware_interface::PositionJointInterface'.
[ERROR] [1445527289.044594098, 0.821000000]: Failed to initialize the controller

I have been digging around trying to find the problem and I noticed that after my URDF was converted with xacro PositionJointInterfaces turned into EffortJointInterfaces:

  <transmission name="leftshoulder_pan_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="leftshoulder_pan_joint">
  <hardwareInterface>EffortJointInterface</hardwareInterface>
</joint>
<actuator name="leftshoulder_pan_motor">
  <mechanicalReduction>1</mechanicalReduction>
</actuator>

</transmission>

Can somebody explain what is going on?

HardwareInterface problem with Gazebo and ros_control

Hello! I am trying to simulate a full custom robot with Gazebo and MoveIt but I am running into one problem: gazebo cannot find the proper hardware interface for the joints in the URDF file.

I need to control two arms (UR10) so similarly to what's done in the package universal_robot I define a controller for each joint type position_controllers/JointTrajectoryController. My URDF file uses UR10's original URDF file which defines the transmission elements as "PositionJointInterface":

    <transmission name="${prefix}shoulder_pan_trans">
  <type>transmission_interface/SimpleTransmission</type>
  <joint name="${prefix}shoulder_pan_joint">
    <hardwareInterface>PositionJointInterface</hardwareInterface>
  </joint>
  <actuator name="${prefix}shoulder_pan_motor">
    <mechanicalReduction>1</mechanicalReduction>
  </actuator>
</transmission>

And yet when I try to run gazebo and spawn the controllers I get this error:

[ERROR] [1445527289.044457090, 0.821000000]: Could not find joint 'leftshoulder_pan_joint' in 'hardware_interface::PositionJointInterface'.
[ERROR] [1445527289.044594098, 0.821000000]: Failed to initialize the controller

I have been digging around trying to find the problem and I noticed that after my URDF was converted with xacro PositionJointInterfaces turned into EffortJointInterfaces:

  <transmission name="leftshoulder_pan_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="leftshoulder_pan_joint">
  <hardwareInterface>EffortJointInterface</hardwareInterface>
</joint>
<actuator name="leftshoulder_pan_motor">
  <mechanicalReduction>1</mechanicalReduction>
</actuator>
  </transmission>

</transmission>

Can somebody explain what is going on?