Articulated Object Simulation as parent child relation

Typically: "How do I... ", "How can I... " questions
Post Reply
mert
Posts: 3
Joined: 04 Feb 2020, 09:53

Articulated Object Simulation as parent child relation

Post by mert » 04 Feb 2020, 12:55

Hi,

I need to simulate an articulated object. To make it more structured I divided my question in three parts. In the following paragraph I will explain what I am trying to simulate and the one after that I will try to explain what I thought as solution (I do not know if it is the best). The paragraph after I will raise some questions. Any feedback, suggestion or link to similar question or example scene is welcome.

I want to simulate a complex object made of some primitive shapes. Let's say a bunch of cylinders, and say 3 of them. I want these three cylinders to be able to move as a bunch ie. connected to one other object which can be root, let's say a cube. So if the cube moves, all cylinders move with it. But the cylinders should be able to swing during moving. The cylinders are not connected to each other, they are connected to the same root. I also want that the cylinders are detachable from the whole system of objects. So if a robot grasps the cube it should be able to move the cube and three cylinders together, while the cylinders may show some shaking like behavior. If the robot grasps a cylinder and pulls, it should be able to take the cylinder and maybe cause some minor movement in the object system. I hope this part is clear enough.

What I thought as a solution is that I have a cylinder which is connected to another link through a force sensor, which breaks under some force limitations. Then the link is connected to a cube through a spherical joint, so that the cylinders can swing in different directions. Copy this system and put three cubes in the exact same pose (position and orientation) so that it looks like one cube. I also want to put all three joints in exactly same position and orientation so they act as they are from the same root.

1)Now coming to my questions, first, does this system make sense? Or I am having some assumptions that may not be best.
2)How can I make visualization and physical behavior separate for the root. I want to cover all spherical joints and cubes as physical behavior, but I want all this system not to be visible (that is easy from common object properties and selecting visualization layers), But I also want the system of spherical objects and cubes to seem as one cube, which has no physical interaction but move with system. How can I make that.
3)How can I limit the motion of spherical joints to some area of the joint?

Best,
mert

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

Re: Articulated Object Simulation as parent child relation

Post by coppelia » 05 Feb 2020, 14:54

Hello Mert,

about your questions: I would do it in a similar way as you explained it. So, if I understand you correctly, there is a base object (e.g. cuboid) that has 3 cylinders attached on top of it. Those cylinders can swing relative to their base, and can even detach from the base of pulled strongly enough.

First, in order to be able to detach something, you do not necessarily need a force/torque sensor. But since the detachment is linked with a certain force/torque threshold, then you need the force/torque sensor.

Second, in order to allow for a swing, you could use a spherical joint. Spherical joints however do not allow for a spring/damper-like behaviour. So you'd have to use two revolute joints, with an auxiliary mass in-between.

The scene hierarch would look a bit like:

Code: Select all

baseCuboid --> forceSensor1 --> auxMass1 --> revoluteJoint1 --> auxMass2 --> revoluteJoint2 --> cylinder1
           --> forceSensor2 --> auxMass3 --> revoluteJoint3 --> auxMass4 --> revoluteJoint4 --> cylinder2
           --> forceSensor3 --> auxMass5 --> revoluteJoint5 --> auxMass6 --> revoluteJoint6 --> cylinder3
in above, the auxMasses and the cylinders need to be non-static. The auxMasses probably should not be respondable. The cylinder, yes. The revolute joints will have to be in force/torque mode, motor enabled, and control loop enabled with spring/damper mode.

Should the cylinders not collide with each other, adjust their local respondable masks.

You can hide some elements in layers that are not shown. You can also add some static, non respondable shapes on top of above shapes (baseCuboid, auxMasses and cylinders), for visual effects only.

Cheers

mert
Posts: 3
Joined: 04 Feb 2020, 09:53

Re: Articulated Object Simulation as parent child relation

Post by mert » 18 Feb 2020, 09:51

Thanks to Coppelia team for the answer.

I have two questions on my mind.

First one is about
First, in order to be able to detach something, you do not necessarily need a force/torque sensor
. How else can I do it?

Second, it may sound too basic but still I want to be sure what does auxMass in the scene hierarchy refer to? As far as I understand it refers to a primitive shape set as not respondible non-static. Is that true?

Best,
Mert

mert
Posts: 3
Joined: 04 Feb 2020, 09:53

Re: Articulated Object Simulation as parent child relation

Post by mert » 18 Feb 2020, 13:48

I prepared the architecture as you proposed (with revolute joints) and it seems to be working.

Thank you for the proposal.

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

Re: Articulated Object Simulation as parent child relation

Post by coppelia » 20 Feb 2020, 06:28

mert wrote:
18 Feb 2020, 09:51
...
First one is about
First, in order to be able to detach something, you do not necessarily need a force/torque sensor
. How else can I do it?
...
You can have a scene hierarchy like:

Code: Select all

shape1 --> joint --> shape2
If you delete the joint, or if you change the parent of shape2, you are effectively detaching it from the rest of the mechanism.

Cheers

Post Reply