Moving a chain of objects

Typically: "How do I... ", "How can I... " questions
Post Reply
jamesp

Moving a chain of objects

Post by jamesp »

Hi,

I have an object (A) which is the child of a gripper's attach point.
The object A has a dynamically enabled child passive joint, to attach another object (B).
When I move the gripper, object A moves as it should, but object B doesn't move even if the movement is orthogonal to the joint's DOF.

Is there a way to enable such a behavior, where the joint can allow passive movement of object B as object A moves?

Thanks!

coppelia
Site Admin
Posts: 10364
Joined: 14 Dec 2012, 00:25

Re: Moving a chain of objects

Post by coppelia »

Hello,

can you post a minimalistic scene that illustrates your problem? Not sure I understood exactly...

Cheers

jamesp

Re: Moving a chain of objects

Post by jamesp »

Hi, thanks for the fast reply!

I've uploaded two short videos to
https://www.dropbox.com/s/1yo4g1evtsxv9 ... f.mp4?dl=0
https://www.dropbox.com/s/6daqjwha3yl75 ... n.mp4?dl=0

"Base" is the red object in the scene.
When I disable dynamics in the "Rigid Body Dynamic Properties" dialog (_off.mp4), it moves along with the gripper/fastener. When dynamics are enabled (_on.mp4), it doesn't move.

I would like the Base to be dynamically enabled, because the joints attaching it to the object in the gripper should allow it to behave like a threaded connection rather than a rigid weld.

Any suggestions are welcome!

coppelia
Site Admin
Posts: 10364
Joined: 14 Dec 2012, 00:25

Re: Moving a chain of objects

Post by coppelia »

This really depends how you have built the scene hierarchy.

If you have your object:

redBase --> revoluteJoint --> nut

and you want your gripper to rigidly attach to the nut, then you have a problem because you ideally want to attach nut to a force sensor, itself attached to the gripper. So you will have to use a loop-closure construct:

redBase --> revoluteJoint --> nut --> dummyA

and your gripper:

Gripper --> forceSensor --> dummyB

DummyA and dummyB need to be linked together via the dynamics, overlap constraint. When this happens, the physics engine tried to have dummyA and dummyB perfectly overlap, thus creating a connection.

Have a look at the demo model Robots/non-mobile/uarm.ttm: it uses exactly this mechanism to rigidly connect to objects it grabs: the dummy-dummy connection is however already created, and the code will dynamically position make dummyA child of the object to grab.

Cheers

jamesp

Re: Moving a chain of objects

Post by jamesp »

Hi,

Sorry for being unclear, it is difficult for me to make a useful MWE scene. The heirarchy goes:

robot -> gripper -> force sensor -> nut -> prismatic joint -> revolute joint -> red base

Basically, I want the base to behave like it is attached to the nut via a passive screw joint.
I will try use dummies to connect the revolute joint and red base, but from your reply I am unsure about how this would help since the setup above seems to work when the base's dynamics are disabled.
Also, since the creation of the above nut -> ... -> base heirarchy is triggered in a script, ideally I would not have to complicate that connection any further. But is it possible to constrain the dummies via API?

Thanks again!

coppelia
Site Admin
Posts: 10364
Joined: 14 Dec 2012, 00:25

Re: Moving a chain of objects

Post by coppelia »

Have a look at this page, the section about dynamically enabled joints or force sensors. There it is explained how to create a loop closure (which is what you want to do).
You can also get inspiration from this scene, that also illustrates a dynamic loop closure.

Cheers

Post Reply