Expand description
Reference-free racing MPPI with a motor-level rotor-mixing quadrotor.
This deepens crate::racing_mppi_quadrotor one more level: instead of
commanding body rates directly, the control input is the four rotor thrusts.
A rotor-mixing map turns them into a collective thrust and body torques, the
body angular velocity becomes a state driven by those torques (with light
aerodynamic rate damping), and every rotor saturates at a maximum thrust.
That saturation is the point: a rotor cannot supply maximum collective lift and a large differential torque at the same time, so demanding an aggressive attitude change steals thrust authority. A thrust-limited drone therefore saturates its rotors more often and is genuinely less agile — a trade-off the body-rate model (which commands rates for free) cannot express.
MotorQuadStatecarries position, velocity, a unit-quaternion attitude, and the body angular velocity.MotorQuadParamsintegrates the rotor-mixing rotational dynamics (control-affine, with the inertia folded into roll/pitch/yaw gains and a rate-damping term) and the rigid-body translational dynamics.MotorMppiControllersamples per-rotor thrust perturbations around a hover nominal and scores the resulting positions with the reference-free gate-progress objective fromcrate::racing_mppi_3d.simulate_motor_racereportsMotorRacingLapReport, which adds a rotor saturation fraction to the lap-progress and attitude metrics.
Structs§
- Motor
Command - Four rotor thrust commands
[f0, f1, f2, f3]in mass-normalized accel units. - Motor
Mppi Config - Configuration for the motor-level racing MPPI controller.
- Motor
Mppi Controller - Deterministic, seeded motor-level MPPI controller for gate racing.
- Motor
Mppi Plan - Result of one
plancall. - Motor
Quad Params - Motor-level quadrotor parameters and actuation limits.
- Motor
Quad State - State of the motor-level quadrotor.
- Motor
Racing LapReport - Lap-progress, attitude, and motor-saturation metrics.
Functions§
- simulate_
motor_ race - Drive the motor-level racing MPPI controller around a lap and report metrics.