This includes the geometric controller in SE(3) we use in the Flight Dynamics and Control Lab, in different programming languages. We use two main versions of the controller:
- Geometric tracking control of a quadrotor UAV on SE(3).
- Geometric Controls of a Quadrotor with a Decoupled Yaw Control
The main difference between those two is that the second one decouples the yaw control in the attitude controller. This leads to better tracking performance, especially at the presence of large yaw angles, but at the expense of some additinal computations and slightly delayed yaw error convergence. Please check Geometric Controls of a Quadrotor with a Decoupled Yaw Control for more comparisons.
Variants of both the controllers have been used in various numerical and experimental research tasks. A summary of these can be found in Publications section.
The following controller/language combinations are available in this repository.
Language | Standard [1] | Decoupled-Yaw [2] |
---|---|---|
C++ | ✅ | ✅ |
Python | ✅ | ❌ |
Matlab | ✅ | ✅ |
Note:
- Documentation for the C++ is inside the
cpp
directory. - Unit testing has been implemented in C++ and Python (partial) versions of the controller.
- You can find the ROS package here (not currently being maintained).
If you use either of the controllers, please use the relevant citatations:
- Geometric tracking control of a quadrotor UAV on SE(3):
@INPROCEEDINGS{5717652, author={T. {Lee} and M. {Leok} and N. H. {McClamroch}}, booktitle={IEEE Conference on Decision and Control}, title={Geometric tracking control of a quadrotor UAV on SE(3)}, year={2010}, pages={5420-5425},}
- Geometric Controls of a Quadrotor with a Decoupled Yaw Control
@inproceedings{Gamagedara2019, title={Geometric controls of a quadrotor uav with decoupled yaw control}, author={Gamagedara, Kanishke and Bisheban, Mahdis and Kaufman, Evan and Lee, Taeyoung}, booktitle={2019 American Control Conference (ACC)}, pages={3285--3290}, year={2019}, organization={IEEE} }
A selected list of publications that use implementations of the above controllers with/without slight variations:
- Geometric controls of a quadrotor with a decoupled yaw control: paper
- Geometric adaptive control with neural networks for a quadrotor UAV in wind fields(wind rejection): paper, ArXiv link, video: 360 back-flip, hover flight, attitude flight
- Autonomous quadrotor 3D mapping and exploration using exact occupancy probabilities: video
- Autonomous flight of a quadrotor UAV with the states estimated by a delayed Kalman filter: video
- Laser guided landing on an inclined surface: paper, video
- PID Geometric control on SE(3): paper, ArXiv link
- Geometric control on SE(3): paper
- Geometric attitude control on SO(3): paper
- Model identification on SE(3): paper
- Model identification on SO(3): paper
- Attitude Control on SO(3) with constraints: paper, Code
- For a rigid dumbbell around an asteroid: code