TdxCopter Team
Entry date: 26-Sep-2013
Final Submission: 01-Jul-2014
Simulating, programming and construction of a quadcopter with the control algorithm implemented on the Toradex module.

The main goal is to develop our own control algorithm. The Colibri module directly connects to the sensors and handles the motors. We hope to achieve a very stable system and superior flight characteristics due to direct control of the motors and using the powerful microcontroller Tegra 2 ARM Cortex A9.

Project details

  Simulating, Programming and Construction of an autonomous Quadcopter with Toradex components. 



We want to be part of this aerial revolution and build a quadcopter on our own. To understand as much of the technical capabilities of the system as possible, we will develop the control algorithm rather than using an off-the shelf controller. This presents a hard challenge, as we will need control theory far beyond our educational background.Quadcopters have gotten very popular in the past few years. They are used as toys, surveillance systems, for photography, rescue missions and even music choreographies [1]. The graph to the right shows the search queries for quadcopters on Google. We can infer that these flying machines will become even more important in the future and be readily available for all sorts of applications.

We hope we can achieve a very stable system and superior flight characteristics due to direct control of the motors and using the powerful microcontroller Tegra 2 ARM Cortex A9. We are eager to tackle any challenges that are waiting for us and looking forward to testing some interesting maneuvers and applications as soon as our TdxCopter is up in the air!

Project Goal

The goal of this project is to build a flying quadcopter with the Colibri T20 as control unit. We will use standard components from the RC-branch as well as sensors used in consumer electronics. To achieve this goal we defined a list of steps below that we will work on during the challenge.

Phase 1 Preparations
  • 1 axis control on the ground
  • Graphical user interface
Phase 2 Flying
  • Stable hovering above ground
  • Basic movement commands: starting, landing, fly from location A to location B
Phase 3 Applications
  • Scientific monitoring, visual surveillance. Project planned: Taking pictures of a lake, the Gräppelensee in Switzerland (Wiki Gräppelensee),  to determine the distribution of rare Nymphaeaceae species (Wiki Nuphar pumila).


System Overview

As a starting point we use the Talon V2 carbon frame [3] and self-designed mounting plates for the Colibri Module and electronics. The quadcopter consist of many different components. We tried to summarize the whole setup in the following graphics.

Fig. 2: Quadcopter Hardware Overview with sensors and equipment.

The core is depicted by the Colibri T20 module. It has connections to all surrounding components. It is mounted on the Iris carrier board which provides us with various interfaces for communication. Very roughly speaking, the Colibri needs to read data from all sensors every few milliseconds. Thereafter the readings need to be filtered and combined to estimate the position and attitude of the quadcopter. In a last step the motors need to be addressed to correct deviations in attitude and position from the desired setpoints. To get information to and from the quadcopter we established wireless connections with XBee and UDP which let us communicate through our graphical user interface on the PC. Last but not least we attached a camera to the frame for taking images and videos during flight. All details about the quadcopter are found in the update pages below together with lots of impressions of the problems we faced and our methodology.

Social Media

Feel free to visit our website, youtube channel and facebook page. If you have questions or feedback of any kind let us know in the comments below. You can also contact us by directly by email. We are enjoying the various kinds of feedback we get from the community and are always happy to discuss some technical problems with fellow students and hobbyists!

Website: www.tdxcopter.com

Email: Contact Team TdxCopter

YouTube: TdxCopter Channel

Google+: G+ page

Facebook: TdxCopter fb

We will post updates on our project frequently, so have a look from time to time!

DOWNLOAD SOURCE CODE HERE: http://www.tdxcopter.com/file-cabinet


[1] Music in Motion, http://www.idsc.ethz.ch/Research_DAndrea/Music_In_Motion_2, 22.09.2013.

[2] Gootle Trends, http://www.google.com/trends/explore?q=quadrotor#q=quadcopter&cmpt=q, 22.09.2013.

[3] Talon Qc Frame, http://www.hobbyking.com/hobbyking/store/__22397_ , 22.09.13.

[4] “Wer misst misst Mist”, freely translated: “Someone who measures measures nonsense”, reminding us that every measurement has errors to it.

[5] Triple-Axis Digital-Output Gyro ITG-3200, https://www.sparkfun.com/products/9801, 23.09.2013.


Updates Hide

TdxCopter Software Architecture
Update #10039  |  29 Sep 2013
A good code structure is vitally important for our project. We have to access different sensors, communicate through a GUI, interpolate data, calculate and set the motor speeds - everything simultaneously in real time.
Update #10041  |  07 Oct 2013
This week, we received the Colibri T20 module from Toradex. Of course we immediately unpacked it and set it up. We were able to connect to it with our Visual Studio 2008 environment and deploy a first program, so we are ready to go.
Update #10042  |  15 Oct 2013
This week we combined our first bits of code to a startup routine which reads parameters from a file and initializes sensors and motor controllers.
Update #10048  |  30 Oct 2013
Implemented UDP connection and played around with our first control loop. Check out the update video for more information!
Update #10060  |  26 Nov 2013
Updated GUI, added automated measurement Youtube Video!, played around with Kalman filter and MATLAB / Simulink models.
Update #10062  |  18 Dec 2013
Did a lot of work the past few days. Remote Control implementation, IR sensor, PWM problems, first hover testing and 2 new Youtube videos.
Update #10071  |  09 Jan 2014
Replaced the default PWM controller, added a combined gyro and acc sensor for better data merging and easier setup. The quadcopter is now lighter, has a lower point of gravity and flexible spacers were installed for additional damping.
Update #10077  |  01 Mar 2014
The one-axis setup was modeled in Simulink. This helped us understand why our system might be unstable and gave accurate predictions for reasonable controller gains.
Update #10080  |  11 Mar 2014
We’ve added an HDPM01 2-Axis compass as well as an PPM RC Receiver and wrote corresponding classes to access these devices. Our first hovering tests are described as well as our short circuit fail.
Update #10083  |  25 Mar 2014
Our first flight outside was successful! This update drescribes our first flying experiences and how the hardware responded, as well as a short overview what will come next.
Update #10089  |  30 Apr 2014
We designed our own PCB for the IMU and other devices and sensors, drilled our own carbon plates for our custom frame and build the quadcopter with new motors and new sensors. New testflight will follow soon!
Update #10101  |  07 Jun 2014
We've encountered harsh problems concerning the motor quality and speed-ordered new ones. Now we work on an anti-GPS jammer, some kind of insulation to get the Colibri from interfering with our ublox LEA H6 3DR gps.
Update #10104  |  24 Jun 2014
We've successfuly reached our final goal of taking pictures and videos in high resolution of the Gräppelesee in the Swiss Alps. Its an amazing place and we would like to share the experience with a short videoclip.
Update #10107  |  30 Jun 2014
It was a long journey to build a quadcopter from scratch and develop a stable flight algorithm. We are proud to present our final design of the TdxCopter with our custom made hardware, electronics and control software.

Comments Hide


Hi! how do you think to sync the data coming from accelerometer and gyro in order to process it in the data fusion algorithm?

TdxCopter Team

Our current approach is to sample the data at a higher rate than the control loop is running in order to use basic filters to get more accurate values. The gyro and acc. might not need direct synchronization since the acc. plays not a vital role in the short-term control of the quad. Nevertheless we need it to minimize the integration errors for better angle estimations.

TdxCopter Team

We will post an update on this matter when we start working on our IMU-algorithms, as we do not know yet which problems we will face.

PS: Your SEASTICK project is awesome!


Thanks, yours is very interesting too! i'm just asking because i already faced to this problem developing the IMU of the seastick. My idea is that to guess the angle you need to integrate the gyro, and even if you minimize the error, you will continuously integrate it... early or late it will diverge more and more . Take a look at extended Kalman Filter o DCM algorithm. bye, Flavio