Why are my joints moving / stretching under force?
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.
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>
<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"/>
</joint>
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.
Asked by froohoo on 2019-04-10 18:41:42 UTC
Comments
The struts ought to be fixed or ommited. The model behaves as expected according to your URDF description.
Asked by kumpakri on 2019-04-11 11:12:45 UTC
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!
Asked by froohoo on 2019-04-11 14:24:48 UTC
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.
Asked by chapulina on 2019-04-12 10:03:25 UTC
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.
Asked by froohoo on 2019-04-12 10:21:48 UTC