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
  2. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  3. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice

What is the best practice to simulate Robotiq85 movement in Unity?

Discussion in 'Robotics' started by RobotFlow, Aug 3, 2021.

  1. RobotFlow

    RobotFlow

    Joined:
    Aug 11, 2020
    Posts:
    26
    Hi,

    When I load the robotiq85 gripper (which is one of the most widely used gripper in research and industry) into the unity 2021.1 with urdf-importer.

    The importing is ok, but since current articulation body supports only tree-structured, yet the robotiq85 has a closed loop in its structure. Thus the loop will be broken during simulation.

    It looks like this:
    upload_2021-8-3_23-30-5.png

    Gazebo support mimic joint to support this as shown in this post, Pybullet can create additional constraint between the inner knuckle and outer knuckle as shown in this post at L188-L199. So I wonder what would be the best practice for such gripper?

    Thanks!
     
  2. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,815
    Maybe you should try something like that
    upload_2021-8-3_19-50-38.png

    So basically you make sure, IK fixed points are not moving, in respect to gripper base.
    But you move attraction point, with joints constraints in mind.
     
    adamgolden likes this.
  3. yant

    yant

    Unity Technologies

    Joined:
    Jul 24, 2013
    Posts:
    597
    I'd try to have the loop "arms" disconnect at some point, and link them with two FixedJoints through an intermediate Rigidbody (because in the current Unity one can't connect ArticulationBodies with a Joint directly).
     
  4. RobotFlow

    RobotFlow

    Joined:
    Aug 11, 2020
    Posts:
    26
    Hi, could you please elaborate on this?
    For the "IK fixed points", I try to change the joint type to "fixed".
    But I don't quite understand how to set the "attraction point" and how to make it move, so the parallel links will follow the movement accordingly.

    Thanks!
     
  5. RobotFlow

    RobotFlow

    Joined:
    Aug 11, 2020
    Posts:
    26
    Thanks for your advice, I try this approach as follows:
    1. I create a sphere, set it to a RigidBody
    2. create 2 fixed joint, and set "Connected Articulation Body" to each part accordingly.

    Then, I move the sphere:,
    1. to the link point of the two links (the sphere collide with the gripper)
    2. near the link point of the two links (quite like the attraction point mentioned by Antypodish above)

    In both cases, I find it cannot stop the two links to be collapsed due to gravity.

    Besides, I also create the empty GameObject to replace the sphere, also not working.

    I wonder if I misunderstand something? Maybe I misunderstand the "connected articulation body"? does it create a joint towards the end of the link (w.r.t the parent link), or the start of the link? Or something else?

    Thanks!
     
  6. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,815
    For the gripper mechanics, you can disregard gravity.
    Only matter for held object itself.

    You can fix the base of the IK links.
    To keep End Effector (EE) in the position. you need apply constraints movements of other joints, so they do not pull EE, when you move them.

    I am not fully convinced, that unity joints will provided solutions to what you need, if you use them on its own.
    The goal is, to be able move and control middle joints, ensuring base and EE are in static "motion". Basically not move.
    It would be worth to look into other IK solutions.
    Out of the box solution may be BioIK. Really nice tool to work for robotic applications. It is paid asset and available on asset store.
    You could also consider fastIK implementation. There are solvers on the net and github. I suggest check for them. For these, you will most likely use kinematic type of motion.