# Revision history [back]

### 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?