Search Unity

  1. Unity Asset Manager is now available in public beta. Try it out now and join the conversation here in the forums.
    Dismiss Notice

Bug Force controlled quadruped, Lower joints are too weak with articulation bodies.

Discussion in 'Robotics' started by hmusr09, Mar 21, 2022.

  1. hmusr09

    hmusr09

    Joined:
    Jun 28, 2021
    Posts:
    3
    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
    imageedit_1_4686907012.png
    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. We are using articulation bodies to set a revolute joint and the xdrive to move it.
    MehulRobotGIF4.gif
    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.