0
$\begingroup$

Rosanswers logo

I have a robot defined in a URDF file that I want to use in gazebo with ros-control.

The robot has multiple non-fixed joints, but I only want to control the wheels. The other non-fixed joints should move freely according to the movement of the wheels. For the wheels I need to write a transmission like so:

<transmission name="${prefix}_wheel_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <actuator name="${prefix}_wheel_motor">
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
    <joint name="${prefix}_wheel_joint">
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
    </joint>
</transmission>

My question is, how do I write a transmission for the other non-fixed joints so that their state is published by the JointStateController? I tried the following:

<transmission name="${prefix}_something_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <actuator name="${prefix}_something_motor">
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
    <joint name="${prefix}_something_joint">
        <hardwareInterface>hardware_interface/JointStateInterface</hardwareInterface>
    </joint>
</transmission>

But it results in the error No matching hardware interface found for 'hardware_interface/JointStateInterface' while loading interfaces for something_joint.


Originally posted by tirafesi on ROS Answers with karma: 5 on 2021-03-01

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

But it results in the error No matching hardware interface found for 'hardware_interface/JointStateInterface' while loading interfaces for something_joint.

that's because hardware_interface/JointStateInterface is not a valid value for the hardwareInterface element.

It should be one of

  • hardware_interface/PositionJointInterface
  • hardware_interface/VelocityJointInterface or
  • hardware_interface/EffortJointInterface

Documentation is not very clear on this, I admit.

(would be a great opportunity to contribute)


Originally posted by gvdhoorn with karma: 86574 on 2021-03-01

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by tirafesi on 2021-03-01:
I see. So what should I do regarding the non-fixed joints that i do NOT want to control? Use PositionJointInterface? But if I use that, then it complaints about missing PID coefficients - which are useless to me since I don't want to control the joint. Should I just set those to random values in order to fix the error message?

Comment by gvdhoorn on 2021-03-01:
I don't know right now.

That would also seem to be a different question.

I merely explained why you get that error.

I recommend you post your follow-up issues as a separate question, and accept the answer to this one.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.