Towards Stabilizing a Drone Carrying a Chessboard Pattern
Andrey Leshenko, Shir Amir and Eli Tarnarutsky
In this project we prepared the base technology needed to stabilize a drone carrying a chessboard pattern
using two external RGB cameras.
Detailed documentation is available here:
- Serial RC: https://github.com/andrey-leshenko/serial_rc/blob/master/docs/guide.md
- Chess 6DOF: https://github.com/andrey-leshenko/chess_6dof/blob/master/docs/guide.md
Serial RC (On Linux)
Before our project, the solution developed in our lab for controlling drones from computers worked as follows:
- A program on the computer uses the Windows API to send commands to an Arduino through a serial connection.
- The program on the Arduino generates a corresponding PPM signal,
which it sends to the RC controller through an analog connection.
- The RC remote (which was modified by lab members) sends the commands to the drone.
The problems with this setup were that it is Windows-API-dependent, meaning it only works on Windows.
In addition, this setup cannot be easily tested.
Our solution was creating an API for controlling the drone from Linux. Also, we developed a X11 based graphical control program that can be used to fly the drone manually. This graphical remote helped us verify that our setup was working.
Demo and Code
Github Link: https://github.com/andrey-leshenko/serial_rc
Realtime Chessboard Tracking
Keeping in mind that our final goal is stabilizing a drone, we need to know its position and rotation in realtime.
In order to do so, we attached a chessboard pattern to the drone and wrote a code for tracking a chessboard in real-time using two cameras and triangulation.
The position and rotation of the chessboard are calculated in each step. The rotation is found using the Kabsch SVD method.
The image processing is done using the OpenCV image processing library, and the output is visualized using the cv::Viz module.
Demo and Code
Github Link: https://github.com/andrey-leshenko/chess_6dof