Linking Bodies by Parent-Child Relationships

Overview

When multiple body items are arranged in a parent-child relationship on the item tree, the positions of those bodies can be linked with each other. For example, if a luggage model is placed as a child item of a mobile robot model, the luggage moves together with the robot when the robot is moved. This can be utilized in situations where multiple bodies are arranged in combination, such as a tool attached to the end of a manipulator or an object placed on a cart. Concrete examples of these are introduced in Examples: Combinations of a Robot and Objects.

This mechanism is useful not only for combinations of robots and objects but also for constructing environment models. By placing small environment objects modeled as separate bodies as child items on a large environment object, and grouping many models hierarchically in this way, you can efficiently edit the positional relationships of a large-scale environment model. A concrete example is introduced in Example: Hierarchical Construction of Environment Models.

How the bodies are linked is selected with the “Parent body linkage” property of the child body item from the following three modes.

Mode

Behavior

Unlinked

No linkage is performed. The parent-child relationship functions only as the organization of the items.

Coordinated

The child body follows the movement of the parent body (one-way linkage). This is the default mode.

Attached

The child body is fixed to a link of the parent body, and they are linked bidirectionally as one.

Also, the link of the parent body that serves as the reference of the linkage is specified with the “Parent link” property. When nothing is specified, the root link of the parent body is the reference.

The settings of these properties are stored in the project.

Coordinated Mode

Since the “Parent body linkage” property is set to “Coordinated” by default, the linkage in this mode is enabled just by placing a body item as a child item of another body item.

In this mode, the relative positional relationship between the parent link and the child body at the time of the placement as a child item is memorized. After that, when the parent body moves, the child body also moves so that the memorized relative positional relationship is maintained. Not only the movement of the parent body but any motion that changes the position of the parent link is subject to the linkage. For example, if the end link of a manipulator is specified in the “Parent link” property, the child body follows the end of the manipulator even when the end moves by moving the joints of the manipulator.

This linkage is one-way from the parent to the child, and it is still possible to move the child body by itself. When the child body is moved, the relative positional relationship after the movement is newly memorized, and that relationship is maintained thereafter.

Example: Hierarchical Construction of Environment Models

As an example of utilizing the coordinated mode, let us consider the construction of an environment model. Suppose that tables and a shelf are placed in a room model, and objects such as boxes and a tray are placed on the tables. Assuming that each of them is modeled as a separate body, they are arranged hierarchically on the item tree as follows.

[ ] - World
[/]   + Room
[/]     + Table1
[/]       + Box1
[/]       + Box2
[/]     + Table2
[/]       + Tray
[/]     + Shelf

Here, Table1, Table2 (tables), and Shelf (a shelf) are placed as child items of Room (a room), and Box1 and Box2 (boxes) are placed as child items of Table1, and Tray (a tray) as a child item of Table2.

With this hierarchical arrangement, when a model on which objects are placed is moved, the objects on it also move together. For example, when Table1 is moved, Box1 and Box2 on it also move together while maintaining their positional relationships with the table. If you want to change the layout of the entire room, moving Room moves all the models under it together. On the other hand, it is still possible to move individual objects by themselves to fine-tune the arrangement.

Even for a large-scale environment model consisting of many environment objects, grouping them in this way allows you to efficiently edit the positional relationships, combining the rough arrangement in units of groups and the fine arrangement of individual objects.

Note that even when the parent-child relationships form a deep hierarchy as in this example, all the body items under the world item are the targets of simulations.

Attached Mode

When the “Parent body linkage” property is set to “Attached”, the child body is fixed to the parent link and is treated like a composite body integrated with the parent body. The child follows the movement of the parent as in the coordinated mode, but the following points are different.

  • The position of the child body is managed as a relative position (offset) from the parent link, and the display and editing of the position on the location view and the like are also done as the relative position from the parent link. The fixing position can be adjusted by editing the relative position.

  • When the child body is dragged on the scene view, the operation is performed through the kinematics of the parent body instead of moving the child body by itself. For example, when a tool model is attached to the end link of a manipulator, dragging the tool moves the arm of the manipulator by inverse kinematics.

Note

When the model of the child body has an attachment device (AttachmentDevice) and the model of the parent body has a holder device (HolderDevice), the fixing position is automatically determined in the attached mode so that the positions of the two devices coincide.

Note

The linkage described on this page is intended for the arrangement of models and kinematics operations on the GUI. Note that in dynamics simulations, this parent-child linkage does not automatically couple the bodies.

Examples: Combinations of a Robot and Objects

The examples of combining a robot and objects mentioned in the overview are introduced here.

Objects Placed on a Cart (Coordinated Mode)

This is an example of placing luggage models (Luggage1 and Luggage2) on a cart-type robot model (Cart). The luggage items are placed as child items of the cart as follows.

[ ] - World
[/]   + Cart
[/]     + Luggage1
[/]     + Luggage2

The “Parent body linkage” property can be left at the default “Coordinated”, and the “Parent link” property can also be left unspecified (the root link of the cart is the reference). In this state, when the cart is moved, the luggage also moves together while maintaining the positional relationships in which they are placed. It is also possible to move the luggage by itself to adjust how it is loaded.

A Tool Attached to the End of a Manipulator (Attached Mode)

This is an example of attaching a tool model (Tool) to the end of a manipulator model (here, PA10 of the Sample Models). The tool item is placed as a child item of the manipulator as follows.

[ ] - World
[/]   + PA10
[/]     + Tool

Then, specify the end link (“J7” for PA10) in the “Parent link” property of Tool, and set the “Parent body linkage” property to “Attached”. The tool is then fixed to the end link, and when the end of the manipulator moves and rotates by moving the joints of the manipulator, the tool also moves accordingly. The attachment position can be adjusted by editing the relative position from the end link. Also, when the tool is dragged on the scene view, the arm of the manipulator moves by inverse kinematics.

Note that if you only want the tool to follow the movement of the end, you can also leave the “Parent body linkage” property at “Coordinated” with the end link specified in the “Parent link” property. In this case, the tool can be moved by itself to adjust its position.