Acrobatic 2D Quadrotor

Course Project of ROB-GY 6323, a Sequential Quadratic Programming (SQP) solver for a 2D quadrotor to perform flipping


Python NumPy SciPy Matplotlib QPSolvers


quadrotor

Quadrotor System Dynamics

quadrotor

\[\dot{x} = f(x, u) \left\{ \begin{aligned} \dot{p_x} &= v_x \\ m\dot{v}_x &= -(u_1 + u_2) \sin \theta \\ \dot{p_y} &= v_y\\ m\dot{v}_y &= (u_1 + u_2) \cos \theta - g \\ \dot{\theta} &= \omega \\ \dot{\omega} &= r(u_1 - u_2)/I \end{aligned} \right.\]

Description

  • Designed a Sequential Quadratic Programming (SQP) solver to allow a 2D quadrotor to perform flipping 3 times
  • For the task demonstrated above, this SQP solver is able to converge with only 17 iterations
  • This nonlinear system dynamics is linearized and discretized into the form suitable for SQP
  • A simple quadratic cost is used for SQP formulation
  • QP Subproblem of SQP
    • Equality Contraints are based on the initial state and the linearized & discretized system dynamics
    • Inequality Constraints are based on the limit on rotor thrust and the limit on quadrotor altitude