Discover Learn Reference Get OpenPLXSearch Contact

Vehicles/DumpTruck/Connections/AFrame/Dual.openplx

Dual

Dual is DumpTruck.Connections.Base:
    .doc: """
    A dual A Frame connection.
    A front one with only a pivoting connection to the chassis,
    a rear one that also has linear suspension to the chassis.

    Two equalizer bars and two linear spring dampers
    between the left and right connections of the rear A frame to the chassis.
    """

    chassis_frame becomes MachineModeling.Components.Primitive.Base with DumpTruck.Interfaces.Chassis.DualAFrame reference

    front_a_frame is MachineModeling.Components.Primitive.Base with Vehicles.DumpTruck.Interfaces.Chassis.AFrame reference
    rear_a_frame is MachineModeling.Components.Primitive.Base with Vehicles.DumpTruck.Interfaces.Chassis.AFrame reference

    left_equalizer is MachineModeling.Components.Primitive.Base
    right_equalizer is MachineModeling.Components.Primitive.Base

    # Connectors on the left and right equalizer beams
    left_equalizer_pivot_connector is Physics3D.Interactions.MateConnector
    left_equalizer_rear_connector is Physics3D.Interactions.MateConnector
    right_equalizer_pivot_connector is Physics3D.Interactions.MateConnector
    right_equalizer_rear_connector is Physics3D.Interactions.MateConnector

    left_axle_connector_1 is Physics3D.Interactions.MateConnector
    right_axle_connector_1 is Physics3D.Interactions.MateConnector
    left_axle_connector_2 is Physics3D.Interactions.MateConnector
    right_axle_connector_2 is Physics3D.Interactions.MateConnector

    # Shared suspension parameters for both rear suspension cylinders.
    min_length is Real
    stroke_length is Real
    rod_diameter is Real
    barrel_diameter is Real

    left_equalizer_connection is MachineModeling.Connections.Pivot.Hinge:
        from: chassis_frame.rear_left_a_frame_connector
        to: left_equalizer_pivot_connector
        hinge:
            initial_angle: 0
            flexibility becomes Physics3D.Interactions.Flexibility.LinearElasticHingeFlexibility:
                default_stiffness: 1e16

    right_equalizer_connection is MachineModeling.Connections.Pivot.Hinge:
        from: chassis_frame.rear_right_a_frame_connector
        to: right_equalizer_pivot_connector
        hinge:
            initial_angle: 0
            flexibility becomes Physics3D.Interactions.Flexibility.LinearElasticHingeFlexibility:
                default_stiffness: 1e16

    front_center_connection is MachineModeling.Connections.Pivot.Hinge:
        from: chassis_frame.front_center_a_frame_connector
        to: front_a_frame.center_a_frame_connector
        hinge.initial_angle: 0
        hinge.flexibility becomes Physics3D.Interactions.Flexibility.LinearElasticHingeFlexibility:
            default_stiffness: 1e16

    rear_center_connection is MachineModeling.Connections.Pivot.Hinge:
        from: chassis_frame.rear_center_a_frame_connector
        to: rear_a_frame.center_a_frame_connector
        hinge.flexibility becomes Physics3D.Interactions.Flexibility.LinearElasticHingeFlexibility:
            default_stiffness: 1e16

    left_suspension is MachineModeling.Actuators.Linear.Connections.Cylinder:
        from: rear_a_frame.left_a_frame_connector
        to: left_equalizer_rear_connector
        actuator:
            source becomes Physics3D.Interactions.LinearSpring:
                connectors: left_suspension.actuator.cylindrical.connectors
            min_length: min_length
            stroke_length: stroke_length
            rod.body.diameter: rod_diameter
            barrel.body.diameter: barrel_diameter

    right_suspension is MachineModeling.Actuators.Linear.Connections.Cylinder:
        from: rear_a_frame.right_a_frame_connector
        to: right_equalizer_rear_connector
        actuator:
            source becomes Physics3D.Interactions.LinearSpring:
                connectors: right_suspension.actuator.cylindrical.connectors
            min_length: min_length
            stroke_length: stroke_length
            rod.body.diameter: rod_diameter
            barrel.body.diameter: barrel_diameter

    # Disable unwanted collisions
    group_a_frame_and_chassis is Simulation.CollisionGroup:
        bodies: [front_a_frame.body, rear_a_frame.body, left_equalizer.body, right_equalizer.body]
    group_suspension is Simulation.CollisionGroup:
        systems: [left_suspension, right_suspension]

    disable_a_frame_and_chassis is Simulation.DisableCollisionPair:
        group1: group_a_frame_and_chassis
        group2: group_suspension

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