Quadruped robot - articulation body - joints too weak.,Robot controlled by articulation bodies - joints too weak to move

Hey,

We’re trying to train a quadruped to walk in unity using the ml-agents library. The quadruped is a body with an articulation body as root node which is connected to shoulder nodes which are connected to upper legs and then lower legs. Each part is a child of the previous part. As seen in the image


The goal is to have a force-controlled robot that learns to walk with reinforcement learning. However, when we import the model into unity the lower legs are too weak and cannot hold up the weight of the robot. When the robot is suspended in mid-air all the joints work normally but once it hits the floor the legs cannot maintain their position and fold due to the weight.

The only way to increase the strength of the lower legs is to turn up the speed (move the legs more in every update). However, doing so makes the joints seem stronger but they still get weak when they get close to their target and are only able to hold up the robot because they are constantly trying to move and act like a spring in the way that the more it has to be moved the stronger the force applied is but when the distance to the target gets closer the joints get too weak. One another way to make the joints strong enough was to scale the model up 10 times but at this scale, gravity doesn’t behave normally and the robot behaves like it is made out of styrofoam as it is really “floaty”.

This issue is independent of the model we have tried different quadruped designs created in different ways and formats. from Solidworks urdf’s to blender fbx’s but we always have the same issue. We also tried porting over the inertia tensor values over from Solidworks to improve the dynamics instead of unity calculating it and it did have an effect on the strength but it still wasn’t strong enough.
194255-mehulrobotgif4.gif

We have been trying to resolve this issue for a while now and is limiting our efforts in using unity for simulation and training robots. Please let me know if any of you have an insight into what might be causing this issue and if there is a fix for this. If this is indeed a limitation of using articulation bodies is there another solution that would be more suited for this problem?

Thanks for taking the time to read and answer this question.

You can add force manually. Are u using motor force of joint?

we are using articulation bodies to set up a revolute joint and the xdrive to move the joint.