IndividualWheelMotors is BeachBuggy.Assets.Base:
    drivetrain is BeachBuggy.Assets.Components.IndividualWheelMotors:
        # This drivetrain model applies a motion at each wheel joint. To get more
        # realistic behaviour a limit on the allowed maximum torque (effort) at each wheel.
        max_effort:  20e3   # Nm
        min_effort: -20e3   # Nm

        front_left_hub_motor:
            connectors: [front_left_wheel.rim.fl_hub_wheel_c_connector, front_suspension.fl_hub.fl_hub_wheel_c_connector]
        front_right_hub_motor:
            connectors: [front_right_wheel.rim.fr_hub_wheel_c_connector, front_suspension.fr_hub.fr_hub_wheel_c_connector]
        rear_left_hub_motor:
            connectors: [rear_suspension.bl_tarm.bl_tarm_wheel_c_connector, rear_left_wheel.rim.bl_tarm_wheel_c_connector]
        rear_right_hub_motor:
            connectors: [rear_suspension.br_tarm.br_tarm_wheel_c_connector, rear_right_wheel.rim.br_tarm_wheel_c_connector]

    signal_interface:
        drivetrain_wheel_vel_front_left_input is Physics.Signals.Input:  drivetrain.front_left_hub_motor.target_angular_velocity_input
        drivetrain_wheel_vel_front_right_input is Physics.Signals.Input: drivetrain.front_right_hub_motor.target_angular_velocity_input
        drivetrain_wheel_vel_rear_left_input is Physics.Signals.Input:  drivetrain.rear_left_hub_motor.target_angular_velocity_input
        drivetrain_wheel_vel_rear_right_input is Physics.Signals.Input: drivetrain.rear_right_hub_motor.target_angular_velocity_input
