A tiny simulator for aerial robots. It is written in c++.
Function declerations are done in respective header files, and all are collected under include/.
Here I collect different control algorithms used in aerial robotics. See src/controls for the implementation.
- A PID controller for altitude control with its reference dynamics.
- An INDI controller for attitude rate control.
- A quaternion based tilt prioritizing attitude control.
- A PID conroller for horizontal position control with its reference dynamics.
- A full geometric control in SE3.
- Differential flatness functions for 1-1 mapping between states, trajectories and the inputs.
Here I collect sensor fusion algorithms. See src/fusion for the implementation.
Especially the SO3 definitions. See src/geometry for the implementation.
All parameters are defined here. See src/parameters for the implementation.
The rules of the physics that governs the motion of the robot are implemented here. See src/physics for the implementation.
Motion is sensed through sensors before used in control. Sensor models are defined here. See src/sensors for the immplementation.
- IMU
- Barometer
- GNSS receiver
- Onboard camera
- Radar
- Lidar
Various filtering methods are needed and hence implemented. See src/filters for the implementation.
./tinysim.sh
To run the code:
cmake .
make
./build/tinysim
make clean_files
This simulator generates a log.txt file. Under /analyze you will find a python script for reading and plotting the data in it. For example: