Search Unity

Question Unexpected behavior with Revolute joint type in Articulation Body

Discussion in 'Physics' started by yangcookie_, Feb 6, 2021.

  1. yangcookie_

    yangcookie_

    Joined:
    Sep 27, 2019
    Posts:
    10
    Hi,
    I've changed physics components and parameters for robotics simulation in my project.
    - Solver type: PGS -> TGS
    - and now trying to switch to Articulation Body from Rigid Body + Joint.

    Here's really strange thing with parameters(?) in Articulation Body with Revolute type.

    Screenshot from 2021-02-06 14-05-52.png

    As you can see above screenshot, I set the target velocity on X Drive properties.

    For more information, here are hierarchy and relationship.
    Car(Gameobject + articulation body as a root body) mass 0.00001
    -- Left Wheel (Gameobject + articulation body with revolute) mass 1.5
    -- Right Wheel (Gameobject + articulation body as a root body) mass 1.5
    -- Body (Gameobject + articulation body as a root body) mass 80


    Here is the problem.
    The Car Object completely stuck in where object started when I set only "Target velocity".
    (I mean even it never try to start to move the object. seems )
    (Of course, I didn't check 'immovable' option in articulation body.)

    I tried to find a "force" field in somewhere to make it move for body but I couldn't.




    So I was putting any value on field. (I know it doesn't make sense)
    And then I observed the consequence of value change setting values on 'Target Velocity'.

    1. The values on "Stiffness" makes wheel spring like pendulum. (-> it is NOT what I intend.)
    2. The values on "damping" now finally makes it move the object.



    Is "damping" on X drive properties meaning "force"?

    as far as I know, damping is ... literally "DAMP" .. make it slow down.. reduce force of something... isn't it?

    Anyone can explain these kind of situation?
    (Articulation Body with target velocity value on revolute never moves unless give a value on 'damping')

    Or is it bug?

    I just want to add torque on joint like Motor component in HingeJoint.
     
    Last edited: Feb 6, 2021
  2. AlTheSlacker

    AlTheSlacker

    Joined:
    Jun 12, 2017
    Posts:
    326
    The first thing I notice about this is that your car mass is very small. I can also see that there are significant changes in mass ratios between your articulation bodies. The performance of the articulations is dependent upon the inertia tensors of the bodies they connect, the inertia tensor can either be set via script or is calculated based on mass and the collider volume. This makes for the situation where you can change your joint characteristics by either varying your mass or collider volume.

    Either try to choose masses that are more similar and with colliders of significant size, or set the inertia tensor by script (this will have many implications for the physics solver).