- Home /
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.
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.
Answer by pastersteli · Mar 21 at 10:28 PM
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.
is your goal that get joint the target position or do u need to simulate a motor for joint? May be damping too high?
the goal is to get the joint to the target position and stay there. I don't understand why the joint is not strong enough to hold the robot upright. I played around with the stiffness and damping values but they don't seem to change much after a certain point. I saw that while increasing the stiffness the damping needs to be increased too and vice versa so they stay relative to each other.
Your answer
Follow this Question
Related Questions
Write custom Joint with solver iterations 0 Answers
Unity DOTS Physics constraint linear and angular x,y,z 0 Answers
Applying proper drag and center of mass for a vehicle 1 Answer
Is it possible to use ArticulationJoints in Unity? 1 Answer
ConfigurableJoint Target Position/Rotation Problems? 1 Answer