Discover Learn Reference Get OpenPLX Search Contact

Track System

The track system is defined using Vehicles.TrackSystem.Base.
It consists of:

The tracks component combines link_description and link_count to define the full track. link_description defines one repeated link, while link_count defines how many such links are created. You may also assign tracks.material to define the contact material for the generated links. If materials are defined on geometries in the link nodes, tracks.material overrides them.

All track wheels connected through mates and have their rotation axis along the same axis. The track wheels should prefarablly operate in the same plane.


Minimal Complete Example

This example is a tracked vehicle with a single track system connected to a chassis.

The track system is connected to the chassis through three connectors, one for each of the three track wheels. The track system is defined in the Vehiceles.TrackSystem.Base component and the connections are defined in the Vehiceles.TrackSystem.Connections.Base component with the ThreeWheels trait.

TrackedVehicle is Physics3D.System:
    chassis is Physics3D.Bodies.RigidBody:
        kinematics.local_transform.position: Math.Vec3.from_xyz(0,1,0)
        inertia.mass: 1
        inertia.tensor: Physics3D.Bodies.Inertia.symmetric_tensor(Math.Vec3.from_xyz(1,1,1),0,0,0)

    track_material is Physics.Geometries.Material

    sprocket is Vehicles.TrackSystem.Components.TrackWheels.Sprocket with Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalShape, Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalVisual:
        radius: 0.15
        width: 0.5

    idler is Vehicles.TrackSystem.Components.TrackWheels.Idler with Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalShape:
        radius: 0.15
        width: 0.5

    road_wheel is Vehicles.TrackSystem.Components.TrackWheels.RoadWheel with Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalShape:
        radius: 0.15
        width: 0.5

    sprocket_connector is Physics3D.Interactions.StructuralPlanarConnector:
        x: 2.1
        y: 1.1
        redirected_parent: chassis

    idler_connector is Physics3D.Interactions.StructuralPlanarConnector:
        x: -1.1
        y: 1.1
        redirected_parent: chassis

    road_wheel_connector is Physics3D.Interactions.StructuralPlanarConnector:
        x: -1.1
        y: -1.1
        redirected_parent: chassis

    properties is Vehicles.TrackSystem.Properties:
        flexibility becomes Vehicles.TrackSystem.Interactions.Flexibility.LinearElasticTrackFlexibility:
            tensile.stiffness: 1e8
            bending_lateral.stiffness: 50
        damping becomes Vehicles.TrackSystem.Interactions.Dissipation.TrackAttenuationDissipation:
            tensile.value: 1.5

    track_system is Vehicles.TrackSystem.Base:
        tracks.link_count: 100
        tracks.material: track_material
        tracks.link_description.width: 1.0
        tracks.link_description.height: 0.05
        properties: properties
        track_wheels:  [sprocket,
                        idler,
                        road_wheel]

    tracks_connection is Vehicles.TrackSystem.Connections.Base with Vehicles.TrackSystem.Connections.Traits.ThreeWheels:
        track_system : track_system
        connectors: [sprocket_connector,
                     idler_connector,
                     road_wheel_connector]

Add a contact material to the tracked vehicle via the standard contact materials in OpenPLX, but extend the friction model with the Vehicles.TrackSystem.SurfaceContact.Traits.TrackFriction.

dry_constant_normal_friction is Physics.Interactions.Dissipation.DryConstantNormalForceFriction with Vehicles.TrackSystem.SurfaceContact.Traits.TrackFriction:
    normal_force: 1000
    coefficient: 0.5
    secondary_coefficient: 0.1

Tracks Component

Tracks are defined using: Vehicles.TrackSystem.Components.Tracks.Base with the required parameters:

link_description defines one link instance, including the geometry and dimensions used for each link. link_count defines how many times that link description is repeated along the full track. If material is set on the tracks component, it is used for the generated track links and overrides materials defined on geometries in the link nodes.


Defines the links of the tracks of a track system. Note that this link description also specifies the track width and height.

Example:

In the example below, the links are boxes via the LinkDescription.Box, and the visual geometry is added with the box visual trait.

Link is TrackSystem.Components.Tracks.LinkDescription.Box:
    with TrackSystem.Components.Tracks.Traits.BoxVisual
    width: 0.2
    height: 0.05

The variation of the links is defined as a box variation, which allows for cyclic variations in the width and height of the links.

Link is TrackSystem.Components.Tracks.LinkDescription.Box:
    with TrackSystem.Components.Tracks.Traits.BoxVisual
    width: 0.2
    height: 0.05
    variation becomes TrackSystem.Components.Tracks.LinkVariation.Box:
        height_variation becomes Math.Distributions.Cyclic.DiscretePulse:
            period: 5
            amplitude: 0.1
        width_variation becomes Math.Distributions.Cyclic.DiscretePulse:
            period: 5
            amplitude: 0.05

CylindricalVisual (Rendering)

Defines cylindrical rendering geometry for track wheels. Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalVisual

Both physical and visual traits can be combined:

with Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalShape, Vehicles.TrackSystem.Components.TrackWheels.Traits.CylindricalVisual

Optional Track Properties

Mechanical behavior can be added:

properties becomes Vehicles.TrackSystem.Properties:
    flexibility becomes
        Vehicles.TrackSystem.Interactions.Flexibility.LinearElasticTrackFlexibility:
            tensile.stiffness: 1e8
            bending_lateral.stiffness: 50
            bending_vertical.stiffness: 1e7

    damping becomes
        Vehicles.TrackSystem.Interactions.Dissipation.TrackAttenuationDissipation:
            tensile.value: 1.5
OpenPLX is a work in progress. This draft version will evolve with user feedback and experience. We welcome your input and collaboration.
X