Armatures are the MORSE way to simulate kinematic chains made of a combination of revolute joints (hinge) and prismatic joints (slider).
They are based on Blender’s armatures. You may want to read some background information about them before creating our own rig: How armatures work?, Armature documentation.
Note
To make the vocabulary clear: Kinematic chains are what Blender calls armatures. Armatures are made of bones. The pose of a bone is stored as the bone’s pose channel. A bone is both a joint and the rigid segment attached to it. We often use the term joint (in the documentation and in MORSE code) either for a bone or its channel.
Warning
Currently, armatures in MORSE have one notable constraint: each of the joints of the armature must have at most one Degree of Freedom (DoF). If you need to model a linkage with two or more degrees of freedom, add one joint per DoF.
Since joints in Blender’s armatures can not have a zero-length, it is currently not possible to represent two DoF with the same origin.
Please refer to issue 382 to learn more about this problem and possible workarounds.
Besides, the Blender armature need some special configuration, detailed below.
The following procedure should help you to create Blender armatures suitable for simulation. It assumes you already have a correct mesh for your system (one independent Blender object for each rigid body).
As example, we will walkthrough the creation of an armature for the left arm of Nao.
Note
You do not need to keep the IK targets or manually create IK targets for each of the kinematic chains since they can conveniently be added in your Builder script. See the documentation of the Armature actuator for details.
If objects are intended to get connected to your armature (typically, an arm grasping something), you need to mark all Blender objects belonging to your model as internal and to mark one object as the end effector (the slot where other objects will be appended).
Use game properties (as shown in the screenshot above) to mark these properties.
Note
This step is not mandatory if your armature is not intended to support objects appending.