udaan.control.quadrotor.geometric_attitude module¶
Geometric attitude controller on SE(3) for quadrotor.
Taeyoung Lee, Melvin Leok, and N. Harris McClamroch, “Geometric Tracking Control of a Quadrotor UAV on SE(3)”, CDC 2010. Paper: http://www.math.ucsd.edu/~mleok/pdf/LeLeMc2010_quadrotor.pdf
- class udaan.control.quadrotor.geometric_attitude.GeometricAttitudeController[source]¶
Bases:
ControllerGeometric tracking control of a quadrotor UAV on SE(3).
- Control law (Lee, Leok, McClamroch 2010, Eq. 18-19):
- M = -kR·eR - kΩ·eΩ + Ω × J·Ω
J·(hat(Ω)·Rᵀ·Rd·Ωd - Rᵀ·Rd·dΩd)
- where:
eR = 0.5·vee(Rdᵀ·R - Rᵀ·Rd) (attitude error on so(3)) eΩ = Ω - Rᵀ·Rd·Ωd (angular velocity error) f = F · R·e3 (scalar thrust)
- compute(t, state, thrust_force, desired_att=None)[source]¶
Compute scalar thrust and torque vector.
- Parameters:
state (
tuple[SO3,TSO3]) – (R, Omega) — rotation matrix and body angular velocity.thrust_force (
ndarray[tuple[Any,...],dtype[floating]]) – desired thrust force vector in world frame.desired_att (
tuple[SO3,TSO3,ndarray[tuple[Any,...],dtype[floating]]] |None) – optional (Rd, Omegad, dOmegad) from differential flatness. When provided, overrides the attitude derived from thrust direction and adds feedforward terms.
- Return type:
- Returns:
(f, M) — scalar thrust and 3D torque vector.
- property inertia¶