Discover Learn Reference Get OpenPLX Search Contact

MachineModeling

The MachineModeling bundle provides a common foundation for modeling heavy machines such as excavators, bulldozers, wheel loaders and forestry machinery.

It defines reusable concepts like Components, Connections, Actuators, and Bearings, which together form the building blocks of machine models.


Core Concepts

A machine is composed of Components that are assembled using Connections.

This approach allows models to scale from simple mechanical parts to complete machines while reusing the same abstractions.


Components and Connections

Both Components and Connections can vary in complexity.

Examples

For actuator variants that require specific attachment behavior, matching connections are provided. For example:

These connections ensure the actuator is attached correctly to the mechanical system.


Naming Convention

Types are organized so their purpose is clear from the namespace alone.

Example: - A linear cylinder actuator is located at: Actuators.Linear.Cylinder

Base Types

When multiple implementations exist within the same namespace, a common base type named Base is required.

Example: Actuators.Linear.Base

Required attributes:

min_length is Real
stroke_length is Real
source is Physics.Interactions.Interaction

Traits

Traits are used to share common attribute definitions between multiple models.

Guidelines

Example: Bearings Trait

Namespace:

Connections.Pivot.Traits
trait Bearings:
    hinge.enabled: false
    bearing_collision_group is Simulation.CollisionGroup:
        systems: [from_bearings, to_bearings]

    disable_bearings is Simulation.DisableCollisionPair:
        group1: bearing_collision_group
        group2: bearing_collision_group

    from_bearings is MachineModeling.Bearings.Pair reference
    to_bearings   is MachineModeling.Bearings.Pair reference

This trait is reused by: - Connections.Pivot.Bearings - Connections.Pivot.AxleBearings


Main Categories

The following categories are automatically inserted into the physics graph when defined in an owning model. Each instance has a local transform relative to its owner.

Category Examples of Child Types
Components Actuators, excavator arms, links
Connections Component-specific connections
Actuators Linear and rotary actuators (motors, cylinders)
Bearings Connectors for compliant mechanical connections

Components

Component Types

Primitive Components

Type Description
Axle Rotating axle component
Link Link in a linked system, includes bearings for attachment
ArmSegment Part of a crane or excavator arm

Composite Components

Type Description
Actuator Composite actuator model
CraneArm Internal structure of a crane arm
ExcavatorArm Internal structure of an excavator arm
LinkedSystem Chain or linkage of connected components

Connections

The bundle includes a set of generic connections. For example, pivot connections are located in the Connections.Pivot namespace.

Component-Specific Connections

For clarity and reuse, component-specific connections should be placed in the component’s namespace.

Example:

Actuators.Linear.Cylinder
Actuators.Linear.Connections.Cylinder

Pivot Connections

Pivot connections allow rotation about a single axis.

Bearings apply forces at physical contact points rather than constraining motion with moments, enabling more accurate simulation.


Bearings

Most heavy machinery uses axle-bearing connections for pivoting joints. Bearing models capture this behavior and enable realistic load transfer and force computation.


Actuators

Linear Actuators

Type Description
DistanceMotor Velocity motor between two components
Cylinder Two-body actuator with hinge connections
CylinderBearings Cylinder prepared for bearing connections
CylinderAxleBearings Cylinder prepared for axle-bearing connections

Actuation Source

Cylinders do not define their actuation source directly.

Instead, one of the following traits must be applied: - Actuators.Linear.Traits.ForceMotor - Actuators.Linear.Traits.VelocityMotor

These traits provide the required actuation behavior and can be applied to any cylinder variant.


OpenPLX is a work in progress. This draft version will evolve with user feedback and experience. We welcome your input and collaboration.
X