# A lunar cruiser with a motor on each wheel, which needs a signal for every motor to control it
CruiserSixMotors is CruiserBase:
    with Traits.FrontWheelSteering

    # Set up the steering type, here we use rack and pinion
    front_steering becomes Vehicles.Steering.Kinematic.RackAndPinion

    front_left_wheel becomes Components.WheelSystem with Traits.WheelMotor
    front_right_wheel becomes Components.WheelSystem with Traits.WheelMotor
    rear_left_wheel becomes Components.WheelSystem with Traits.WheelMotor
    rear_right_wheel becomes Components.WheelSystem with Traits.WheelMotor
    mid_left_wheel becomes Components.WheelSystem with Traits.WheelMotor
    mid_right_wheel becomes Components.WheelSystem with Traits.WheelMotor

    signal_interface:
        front_left_vel_input is Physics.Signals.Input: front_left_wheel.motor.target_angular_velocity_input
        front_right_vel_input is Physics.Signals.Input: front_right_wheel.motor.target_angular_velocity_input
        rear_left_vel_input is Physics.Signals.Input: rear_left_wheel.motor.target_angular_velocity_input
        rear_right_vel_input is Physics.Signals.Input: rear_right_wheel.motor.target_angular_velocity_input
        mid_left_vel_input is Physics.Signals.Input: mid_left_wheel.motor.target_angular_velocity_input
        mid_right_vel_input is Physics.Signals.Input: mid_right_wheel.motor.target_angular_velocity_input
