Why are my joints moving / stretching under force?

asked 2019-04-10 18:41:42 -0500

froohoo gravatar image

updated 2019-04-16 01:09:09 -0500

I could use some help/advice. I can not figure out why these joints are deflecting/stretching from the chassis in the y direction under load. I understand that there is a force being applied to cause them to do this, but I don't understand why the joint is not constraining them, since z is set as the axis of rotation.

image description

image description

They are currently configured as revolute as shown below:

<joint name="front_left_steer_bearing" type="revolute">
    <origin xyz="0.09 0.057 -.079" rpy="0 0 0"/>
    <child link="front_left_strut"/>
    <parent link="chassis"/>
    <axis xyz="0 0 1" rpy="0 0 0"/>
    <limit effort="20" velocity="1.0" lower="-0.3" upper="0.3"/>

<joint name="front_left_wheel_bearing" type="continuous">
    <origin xyz="0 .0175 0.01" rpy="0 0 0"/>
    <child link="front_left_wheel"/>
    <parent link="front_left_strut"/>
    <axis xyz="0 1 0" rpy="0 0 0"/>
    <limit effort="100" velocity="100"/>

Gazebo is version 7.0.0

The struts (white boxes) are attached to the chassis, and the wheels are in turn attached to the struts. I assumed that by only allowing the struts to rotate around the z axis, x and y would be fixed (relative to the chassis). Clearly this was a bad assumption.

Any insight into where my understanding is breaking down would be much appreciated. Thanks!

EDIT So in trying to troubleshoot, it looks like the joints are in general springy. They not only translate in the y direction, but in the x and z directions as well. If I change them to fixed, they are rock solid but as revolute's they are like limp noodles. image description

edit retag flag offensive close merge delete


The struts ought to be fixed or ommited. The model behaves as expected according to your URDF description.

kumpakri gravatar imagekumpakri ( 2019-04-11 11:12:45 -0500 )edit

Thank you for replying to my question! I appreciate it. So if I understand you correctly, specifying the degree of freedom for a joint does not guarantee that the joint is not free to move in other directions as well? How would you approach 'fixing' the strut? Thanks again for any help!

froohoo gravatar imagefroohoo ( 2019-04-11 14:24:48 -0500 )edit

A revolute joint constrains all DOF but one, so there's something else going on there. Could you update the question with a screenshot of the joint visualization? It looks like there's an axis pointing up that is steering the wheels away from the chassis.

chapulina gravatar imagechapulina ( 2019-04-12 10:03:25 -0500 )edit

Thanks chapulina! Appreciate you taking a look at it. I updated the original post. If that isn't the view you were looking for, please let me know and I will upload another.

I have partially prevented the issue from occurring. Steady state offset was causing the wheels to be slightly splayed and introducing the lateral forces. Adding an error integrator to the PID helped with that, but the behavior of the joints moving away from the chassis can still be reproduced.

froohoo gravatar imagefroohoo ( 2019-04-12 10:21:48 -0500 )edit