This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

Error-State LQR Formulation for Quadrotor UAV Trajectory Tracking

Micah Reich
Carnegie Mellon University
[email protected]
Abstract

This article presents an error-state Linear Quadratic Regulator (LQR) formulation for robust trajectory tracking in quadrotor Unmanned Aerial Vehicles (UAVs). The proposed approach leverages error-state dynamics and employs exponential coordinates to represent orientation errors, enabling a linearized system representation for real-time control. The control strategy integrates an LQR-based full-state feedback controller for trajectory tracking, combined with a cascaded bodyrate controller to handle actuator dynamics. Detailed derivations of the error-state dynamics, the linearization process, and the controller design are provided, highlighting the applicability of the method for precise and stable quadrotor control in dynamic environments.

1   Introduction

The control of quadrotor Unmanned Aerial Vehicles (UAVs) presents unique challenges due to their nonlinear dynamics, underactuation, and the need for precise trajectory tracking in dynamic environments. Traditional control techniques often struggle to handle these challenges efficiently while maintaining computational tractability for real-time applications. To address these issues, this work outlines an error-state Linear Quadratic Regulator (LQR) approach, leveraging the compact and singularity-free representation of orientation errors using exponential coordinates.

Exponential coordinates provide a robust way to represent orientation errors without the singularities inherent in other parameterizations such as Euler angles. By formulating the controller in terms of error-state dynamics, this approach avoids the complexity of directly controlling the nonlinear dynamics, focusing instead on minimizing deviations from a nominal trajectory. This is achieved by driving the error-state—which includes position, velocity, and orientation errors—toward zero.

The proposed controller uses an LQR formulation, a well-established concept in classical control theory for linear systems, to minimize a quadratic cost function balancing state deviations and control effort. Although the quadrotor dynamics are nonlinear, the error-state dynamics can be re-linearized about the current tracking error at a sufficiently high frequency, allowing the LQR controller to operate effectively in real time. This iterative re-linearization ensures that the controller remains responsive to changes in the tracking error while maintaining computational efficiency.

2   Definitions and system dynamics

2.1   State and control definition table

The state of the quadrotor UAV is defined as follows, inspired by [1, 4]:

Name True Nominal Error Composition
Full state 𝒙t\bm{x}_{t} 𝒙\bm{x} δ𝒙\delta\bm{x} 𝒙t=𝒙δ𝒙\bm{x}_{t}=\bm{x}\oplus\delta\bm{x}
Position 𝒑t\bm{p}_{t} 𝒑\bm{p} δ𝒑\delta\bm{p} 𝒑t=𝒑+δ𝒑\bm{p}_{t}=\bm{p}+\delta\bm{p}
Velocity 𝒗t\bm{v}_{t} 𝒗\bm{v} δ𝒗\delta\bm{v} 𝒗t=𝒗+δ𝒗\bm{v}_{t}=\bm{v}+\delta\bm{v}
Orientation 𝒒t\bm{q}_{t} 𝒒\bm{q} δ𝒒\delta\bm{q} 𝒒t=𝒒δ𝒒\bm{q}_{t}=\bm{q}\otimes\delta\bm{q}
Rotation Matrix 𝑹t\bm{R}_{t} 𝑹\bm{R} δ𝑹\delta\bm{R} 𝑹t=𝑹δ𝑹\bm{R}_{t}=\bm{R}\,\delta\bm{R}
Exponential Vector δ𝜽\delta\bm{\theta} δ𝑹=exp([δ𝜽]×)\delta\bm{R}=\exp\left([\delta\bm{\theta}]_{\times}\right)

The full state of the quadrotor UAV includes the position and velocity of the center of mass, expressed in the inertial frame, as well as the orientation represented as a unit quaternion:

𝒙=(𝒑𝒒𝒗)T3×S3×3.\bm{x}=\begin{pmatrix}\bm{p}&\bm{q}&\bm{v}\end{pmatrix}^{T}\in\mathbb{R}^{3}\times S^{3}\times\mathbb{R}^{3}.

The error-state contains the δ\delta-values for these quantities, with the important distinction that the orientation error component is represented in exponential coordinates:

δ𝜽3,δ𝒙=(δ𝒑δ𝜽δ𝒗)T9.\delta\bm{\theta}\in\mathbb{R}^{3},\quad\delta\bm{x}=\begin{pmatrix}\delta\bm{p}&\delta\bm{\theta}&\delta\bm{v}\end{pmatrix}^{T}\in\mathbb{R}^{9}.

The nominal state of the quadrotor UAV may be derived from trajectory optimization processes or the differential flatness property of quadrotor dynamics [3].

The control of the quadrotor UAV is defined as follows:

Magnitude True Nominal Error Composition
Full control 𝒖t\bm{u}_{t} 𝒖\bm{u} δ𝒖\delta\bm{u} 𝒖t=𝒖δ𝒖\bm{u}_{t}=\bm{u}\oplus\delta\bm{u}
Collective Thrust ctc_{t} cc δc\delta c ct=c+δcc_{t}=c+\delta c
Angular Velocity 𝝎t\bm{\omega}_{t} 𝝎\bm{\omega} δ𝝎\delta\bm{\omega} 𝝎t=(δ𝑹)T𝝎+δ𝝎\bm{\omega}_{t}=(\delta\bm{R})^{T}\bm{\omega}+\delta\bm{\omega}

The full control of the quadrotor UAV contains the collective thrust and desired angular velocity expressed in the current body frame, 𝒖=(c𝝎)T4\bm{u}=\begin{pmatrix}c&\bm{\omega}\end{pmatrix}^{T}\in\mathbb{R}^{4}. The error-state contains the δ\delta-values for these quantities, taking care to ensure that the angular velocity error is represented in the current body frame (with the nominal angular velocity represented in the nominal frame’s coordinates), with δ𝒖=(δcδ𝝎)T4\delta\bm{u}=\begin{pmatrix}\delta c&\delta\bm{\omega}\end{pmatrix}^{T}\in\mathbb{R}^{4}.

2.2   The true-state kinematics and dynamics

The true-state kinematics and dynamics follow from the single rigid-body assumption and lumped-mass model of the quadrotor UAV, with thrust acting along the body zz-axis and gravity acting along the world z-z axis.

𝒑˙t=𝒗t\dot{\bm{p}}_{t}=\bm{v}_{t} (1)
𝒗˙t=𝒈+1m𝑹t(00ct)\dot{\bm{v}}_{t}=\bm{g}+\frac{1}{m}\bm{R}_{t}\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix} (2)
𝒒˙t=12𝒒t(0𝝎t)\dot{\bm{q}}_{t}=\frac{1}{2}\bm{q}_{t}\otimes\begin{pmatrix}0\\ \bm{\omega}_{t}\end{pmatrix} (3)

2.3   The nominal-state kinematics and dynamics

The nominal-state kinematics and dynamics are identical to those of the true state, with appropriate substitutions:

𝒑˙=𝒗\dot{\bm{p}}=\bm{v} (4)
𝒗˙=𝒈+1m𝑹(00c)\dot{\bm{v}}=\bm{g}+\frac{1}{m}\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix} (5)
𝒒˙=12𝒒(0𝝎)\dot{\bm{q}}=\frac{1}{2}\bm{q}\otimes\begin{pmatrix}0\\ \bm{\omega}\end{pmatrix} (6)

2.4   The error-state kinematics and dynamics

We now derive the time derivatives of the error-state δ𝒙˙\dot{\delta\bm{x}} for each component. Throughout this derivation, we assume the error-state is small, ignore second-order terms, and employ small-angle approximations. First, for the position error:

𝒑t\displaystyle\bm{p}_{t} =𝒑+δ𝒑,\displaystyle=\bm{p}+\delta\bm{p},
δ𝒑\displaystyle\delta\bm{p} =𝒑t𝒑,\displaystyle=\bm{p}_{t}-\bm{p},
δ𝒑˙\displaystyle\dot{\delta\bm{p}} =𝒑t˙𝒑˙,\displaystyle=\dot{\bm{p}_{t}}-\dot{\bm{p}},
=𝒗t𝒗,\displaystyle=\bm{v}_{t}-\bm{v},
=δ𝒗.\displaystyle=\delta\bm{v}.

We next solve for δ𝒗˙\dot{\delta\bm{v}}, using the approximation 𝑹t=𝑹(I+[δ𝜽]×)+O(δ𝜽2)\bm{R}_{t}=\bm{R}(I+[\delta\bm{\theta}]_{\times})+O(\left\lVert\delta\bm{\theta}\right\lVert^{2}):

𝒗t\displaystyle\bm{v}_{t} =𝒗+δ𝒗\displaystyle=\bm{v}+\delta\bm{v}
δ𝒗\displaystyle\delta\bm{v} =𝒗t𝒗\displaystyle=\bm{v}_{t}-\bm{v}
δ𝒗˙\displaystyle\dot{\delta\bm{v}} =𝒗t˙𝒗˙\displaystyle=\dot{\bm{v}_{t}}-\dot{\bm{v}}
=𝒈+1m𝑹t(00ct)(𝒈+1m𝑹(00c))\displaystyle=\bm{g}+\frac{1}{m}\bm{R}_{t}\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}-\left(\bm{g}+\frac{1}{m}\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix}\right)
=1m𝑹t(00ct)1m𝑹(00c)\displaystyle=\frac{1}{m}\bm{R}_{t}\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}-\frac{1}{m}\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix}
=1m(𝑹δ𝑹(00ct)𝑹(00c))\displaystyle=\frac{1}{m}\left(\bm{R}\,\delta\bm{R}\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}-\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix}\right)
1m(𝑹(I+[δ𝜽]×)(00ct)𝑹(00c))\displaystyle\approx\frac{1}{m}\left(\bm{R}(I+[\delta\bm{\theta}]_{\times})\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}-\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix}\right) (Small angle approximation of δ𝑹\delta\bm{R})
=1m((𝑹+𝑹[δ𝜽]×)(00ct)𝑹(00c))\displaystyle=\frac{1}{m}\left((\bm{R}+\bm{R}[\delta\bm{\theta}]_{\times})\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}-\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix}\right)
=1m(𝑹(00ct)𝑹(00c)+𝑹[δ𝜽]×(00ct))\displaystyle=\frac{1}{m}\left(\bm{R}\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}-\bm{R}\begin{pmatrix}0\\ 0\\ c\end{pmatrix}+\bm{R}[\delta\bm{\theta}]_{\times}\begin{pmatrix}0\\ 0\\ c_{t}\end{pmatrix}\right)
=1m𝑹((00δc)+[δ𝜽]×(00c+δc))\displaystyle=\frac{1}{m}\bm{R}\left(\begin{pmatrix}0\\ 0\\ \delta c\end{pmatrix}+[\delta\bm{\theta}]_{\times}\begin{pmatrix}0\\ 0\\ c+\delta c\end{pmatrix}\right)

Lastly, we solve for δ𝜽˙\dot{\delta\bm{\theta}}. We note that the angular velocity of a rigid body expressed in the body frame and the exponential coordinates for the body frame orientation are related by:

𝜽˙\displaystyle\dot{\bm{\theta}} =Jr1(𝜽)𝝎withJr1(𝜽)=I+12[𝜽]×+(1𝜽21+cos𝜽2𝜽sin𝜽)[𝜽]×2\displaystyle=J_{r}^{-1}(\bm{\theta})\bm{\omega}\quad\mathrm{with}\quad J_{r}^{-1}(\bm{\theta})=I+\frac{1}{2}[\bm{\theta}]_{\times}+\left(\frac{1}{\left\lVert\bm{\theta}\right\lVert^{2}}-\frac{1+\cos\left\lVert\bm{\theta}\right\lVert}{2\left\lVert\bm{\theta}\right\lVert\sin\left\lVert\bm{\theta}\right\lVert}\right)[\bm{\theta}]_{\times}^{2}

where Jr1(𝜽)J_{r}^{-1}(\bm{\theta}) is the inverse of the right Jacobian of SO(3)SO(3) [5]. Using this fact, we may write:

δ𝜽˙\displaystyle\dot{\delta\bm{\theta}} =Jr1(δ𝜽)δ𝝎\displaystyle=J_{r}^{-1}(\delta\bm{\theta})\delta\bm{\omega}
(I+12[δ𝜽]×)δ𝝎\displaystyle\approx(I+\frac{1}{2}[\delta\bm{\theta}]_{\times})\delta\bm{\omega} (Small angle approximation of Jr1(δ𝜽)J_{r}^{-1}(\delta\bm{\theta}))

3   Linearization of the error-state dynamics

3.1   Approximate linearization derivation

For a nonlinear function f:nx×nunxf:\mathbb{R}^{n_{x}}\times\mathbb{R}^{n_{u}}\to\mathbb{R}^{n_{x}}, the first-order Taylor approximation of f(𝒙,𝒖)f(\bm{x},\bm{u}) about some point (𝒙¯,𝒖¯)(\bm{\bar{x}},\bm{\bar{u}}) is written as:

f(𝒙,𝒖)\displaystyle f(\bm{x},\bm{u}) f(𝒙¯,𝒖¯)+f𝒙|𝒙¯,𝒖¯(𝒙𝒙¯)+f𝒖|𝒙¯,𝒖¯(𝒖𝒖¯)\displaystyle\approx f(\bm{\bar{x}},\bm{\bar{u}})+\frac{\partial f}{\partial\bm{x}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}(\bm{x}-\bm{\bar{x}})+\frac{\partial f}{\partial\bm{u}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}(\bm{u}-\bm{\bar{u}})
=(f(𝒙¯,𝒖¯)f𝒙|𝒙¯,𝒖¯𝒙¯f𝒖|𝒙¯,𝒖¯𝒖¯)+f𝒙|𝒙¯,𝒖¯𝒙+f𝒖|𝒙¯,𝒖¯𝒖\displaystyle=\left(f(\bm{\bar{x}},\bm{\bar{u}})-\frac{\partial f}{\partial\bm{x}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\bm{\bar{x}}-\frac{\partial f}{\partial\bm{u}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\bm{\bar{u}}\right)+\frac{\partial f}{\partial\bm{x}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\bm{x}+\frac{\partial f}{\partial\bm{u}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\bm{u}

Notice that the expression:

f(𝒙¯,𝒖¯)f𝒙|𝒙¯,𝒖¯𝒙¯f𝒖|𝒙¯,𝒖¯𝒖¯f(\bm{\bar{x}},\bm{\bar{u}})-\frac{\partial f}{\partial\bm{x}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\bm{\bar{x}}-\frac{\partial f}{\partial\bm{u}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\bm{\bar{u}}

is nothing but the first-order Taylor approximation of ff about (𝒙¯,𝒖¯)(\bm{\bar{x}},\bm{\bar{u}}) evaluated at the point (𝟎,𝟎)(\bm{0},\bm{0}), which we can take to be near-zero for ff with f(𝟎,𝟎)=𝟎f(\bm{0},\bm{0})=\bm{0} and a linearization point (𝒙¯,𝒖¯)(\bm{\bar{x}},\bm{\bar{u}}) sufficiently close to 0.

Thus, for f(𝟎,𝟎)=𝟎f(\bm{0},\bm{0})=\bm{0} and (𝒙¯,𝒖¯)(\bm{\bar{x}},\bm{\bar{u}}) sufficiently close to 0, we may approximate f(𝒙,𝒖)f(\bm{x},\bm{u}) as:

f(𝒙,𝒖)A𝒙+B𝒖whereAnx×nx,Bnx×nuf(\bm{x},\bm{u})\approx A\bm{x}+B\bm{u}\quad\textrm{where}\quad A\in\mathbb{R}^{n_{x}\times n_{x}},\,\,B\in\mathbb{R}^{n_{x}\times n_{u}}

with:

A=f𝒙|𝒙¯,𝒖¯andB=f𝒖|𝒙¯,𝒖¯A=\frac{\partial f}{\partial\bm{x}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}\quad\textrm{and}\quad B=\frac{\partial f}{\partial\bm{u}}\Bigg{|}_{\bar{\bm{x}},\bar{\bm{u}}}

For our purposes, we will write δ𝒙˙=f(δ𝒙,δ𝒖)\dot{\delta\bm{x}}=f(\delta\bm{x},\delta\bm{u}) and write the linearized system as:

δ𝒙˙fδ𝒙|δ𝒙¯,δ𝒖¯δ𝒙+fδ𝒖|δ𝒙¯,δ𝒖¯δ𝒖\dot{\delta\bm{x}}\approx\frac{\partial f}{\partial\delta\bm{x}}\Bigg{|}_{\overline{\delta\bm{x}},\overline{\delta\bm{u}}}\delta\bm{x}+\frac{\partial f}{\partial\delta\bm{u}}\Bigg{|}_{\overline{\delta\bm{x}},\overline{\delta\bm{u}}}\delta\bm{u}

where δ𝒙¯\overline{\delta\bm{x}} is the current error state and δ𝒖¯\overline{\delta\bm{u}} is the current error control.

3.2   Jacobians of error-state dynamics

We write out the relevant Jacobians to construct the AA and BB matrices of the linearized error-state dynamics. These matrices take the form:

fδ𝒙=(00δ𝒑˙/δ𝒗0δ𝜽˙/δ𝜽00δ𝒗˙/δ𝜽0)fδ𝒖=(000δ𝜽˙/δ𝝎δ𝒗˙/δc0)\frac{\partial f}{\partial\delta\bm{x}}=\begin{pmatrix}0&0&\partial\dot{\delta\bm{p}}/\partial\delta\bm{v}\\ 0&\partial\dot{\delta\bm{\theta}}/\partial\delta\bm{\theta}&0\\ 0&\partial\dot{\delta\bm{v}}/\partial\delta\bm{\theta}&0\end{pmatrix}\quad\frac{\partial f}{\partial\delta\bm{u}}=\begin{pmatrix}0&0\\ 0&\partial\dot{\delta\bm{\theta}}/\partial\delta\bm{\omega}\\ \partial\dot{\delta\bm{v}}/\partial\delta c&0\end{pmatrix}

From the above expressions for the error-state dynamics, we take derivatives and arrive at:

δ𝒑˙δ𝒗\displaystyle\frac{\partial\dot{\delta\bm{p}}}{\partial\delta\bm{v}} =I3×3\displaystyle=I\in\mathbb{R}^{3\times 3}
δ𝜽˙δ𝜽\displaystyle\frac{\partial\dot{\delta\bm{\theta}}}{\partial\delta\bm{\theta}} =12[δ𝝎]×3×3\displaystyle=-\frac{1}{2}[\delta\bm{\omega}]_{\times}\in\mathbb{R}^{3\times 3}
δ𝒗˙δ𝜽\displaystyle\frac{\partial\dot{\delta\bm{v}}}{\partial\delta\bm{\theta}} =1m𝑹[(00c+δc)]×3×3\displaystyle=-\frac{1}{m}\bm{R}\left[\begin{pmatrix}0\\ 0\\ c+\delta c\end{pmatrix}\right]_{\times}\in\mathbb{R}^{3\times 3}
δ𝜽˙δ𝝎\displaystyle\frac{\partial\dot{\delta\bm{\theta}}}{\partial\delta\bm{\omega}} =I+12[δ𝜽]×3×3\displaystyle=I+\frac{1}{2}[\delta\bm{\theta}]_{\times}\in\mathbb{R}^{3\times 3}
δ𝒗˙δc\displaystyle\frac{\partial\dot{\delta\bm{v}}}{\partial\delta c} =1m𝑹(I+[δ𝜽]×)(001)3×1\displaystyle=\frac{1}{m}\bm{R}\left(I+[\delta\bm{\theta}]_{\times}\right)\begin{pmatrix}0\\ 0\\ 1\end{pmatrix}\in\mathbb{R}^{3\times 1}

4   Error-state LQR controller

4.1   LQR controller formulation

We design an LQR controller to drive the error state to zero, where these quantities are defined in section 2.1. The LQR full-state feedback gain matrix 𝑲\bm{K} is obtained by minimizing the inifinite-horizon cost function J(δ𝒙,δ𝒖)J(\delta\bm{x},\delta\bm{u}):

J(δ𝒙,δ𝒖)=0(δ𝒙TQδ𝒙+δ𝒖TRδ𝒖)𝑑tJ(\delta\bm{x},\delta\bm{u})=\int_{0}^{\infty}(\delta\bm{x}^{T}Q\delta\bm{x}+\delta\bm{u}^{T}R\delta\bm{u})dt

for Q,R0Q,R\succ 0. The cost function is minimized by the control policy δ𝒖=𝑲δ𝒙\delta\bm{u}=-\bm{K}\delta\bm{x}. where 𝑲\bm{K} is given by:

𝑲\displaystyle\bm{K} =R1BTP\displaystyle=R^{-1}B^{T}P

with PP being the solution to the continuous-time Algebraic Riccati Equation. The full control at time tt is then given by:

𝒖t=𝒖𝑲δ𝒙\bm{u}_{t}=\bm{u}-\bm{K}\delta\bm{x}

As a practical implementation consideration, one must ensure that the AA matrix of the linearized error-state system is stable, i.e. (λi)<0\Re(\lambda_{i})<0 for all eigenvalues λi\lambda_{i} in the spectrum of AA. A small amount of regularization may be added to AA to ensure the ARE has a solution.

Refer to caption
Figure 1: Tracking performance of the error-state LQR controller on a lemniscate trajectory while tracking yaw angles. The tracking error at the beginning of the trajectory is due to the fact that the UAV begins with a flat initial orientation q0=(1,0,0,0)Tq_{0}=(1,0,0,0)^{T}.

4.2   Bodyrate controller formulation

Using the principle of time-scale separation, the LQR controller uses the desired angular velocity as a virtual control input to the system, similar to [2]. In reality, the control inputs are the collective thrust and the body torque.111Often, the inputs are considered to be the four motor speeds, but we will consider the collective thrust and body torque for simplicity. The mapping between motor speeds and collective wrench is usually written as 𝑭=G𝛀2\bm{F}=G\bm{\Omega}^{2} where 𝛀2\bm{\Omega}^{2} is the vector of squared motor angular velocities.

In a cascaded fashion, we use a simple bodyrate P-controller with feedback linearization to track the desired angular velocities produced by the LQR controller. The bodyrate controller is given by:

𝝉=J(Kp(𝝎𝝎t))+𝝎t×J𝝎t\bm{\tau}=J(K_{p}(\bm{\omega}-\bm{\omega}_{t}))+\bm{\omega}_{t}\times J\bm{\omega}_{t}

where JJ is the inertia tensor of the quadrotor UAV and Kp=diag(Kp,1,Kp,2,Kp,3)K_{p}=\operatorname{diag}(K_{p,1},K_{p,2},K_{p,3}) is the proportional gain matrix.

References

  • [1] Michael Farrell, James Jackson, Jerel Nielsen, Craig Bidstrup, and Tim McLain. Error-state lqr control of a multirotor uav. In 2019 International Conference on Unmanned Aircraft Systems (ICUAS), pages 704–711, 2019.
  • [2] Philipp Foehn and Davide Scaramuzza. Onboard state dependent lqr for agile quadrotors. In 2018 IEEE International Conference on Robotics and Automation (ICRA), pages 6566–6572, 2018.
  • [3] Daniel Mellinger and Vijay Kumar. Minimum snap trajectory generation and control for quadrotors. In 2011 IEEE International Conference on Robotics and Automation, pages 2520–2525, 2011.
  • [4] Joan Solà. Quaternion kinematics for the error-state kalman filter, 2017.
  • [5] Joan Solà, Jeremie Deray, and Dinesh Atchuthan. A micro lie theory for state estimation in robotics, 2021.