The topics covered in this section include:
...
Code Block | ||||
---|---|---|---|---|
| ||||
<socket_parent_frame>/ground</socket_parent_frame>
<socket_child_frame>/bodyset/r_humerus</socket_child_frame>
|
Any XML element whose tag begins with socket_ is used to indicate the path to a component (ComponentPath) in the model that should be used to satisfy the socket. Models in OpenSim version 4.0 and greater are hierarchical: components can contain other components. For example, the BodySet component named 'bodyset' contains the Body component 'r_humerus'. We use forward slashes, similar to a file system path or web URL, to indicate the path to a component in the model's hierarchy. In the example above, we use absolute paths (starting with a slash), but relative paths (e.g., ../../some/other/component) also work.
...
Thus, to start our model, we need to define a set of rigid bodies that represent our system. In the <BodySet> section, we define this group of bodies, with the name, mass properties, and visible objects associated with each body. The figure below shows an example of the r_humerus body in the Arm26 model. Note the key tags, such as <mass>, <mass_center>, and <inertia> (and similarly named tags for inertia in other directions).
...
Code Block | ||||
---|---|---|---|---|
| ||||
<Body name="r_humerus"> <attached_geometry>...</attached_geometry> <WrapObjectSet>...</WrapObjectSet> <mass>1.8645719999999999</mass> <mass_center>0 -0.18049599999999999 0</mass_center> <inertia>0.01481 0.0045510000000000004 0.013193 0 0 0</inertia> </Body> |
Every model comes with a Ground body, which exists as a property of a Model, not in the BodySet.
Geometry
...