Copterix: the project

Context

We are engineer students at Télécom ParisTech, French engineering school in the field of Telecommunications. We decided to specialize in embedded systems, and that is why we are currently attending the ROSE course.

On this course, we are supposed to lead a whole embedded system project from scratch. It began the 21st of February 2011, and ended with a final demonstration the 29th of April 2011. We chose the copter project, for the challenges it presented to us: IMU, Kalman filter, PID, and so on.

We received an Oktokopter base bought at Mikrokopter, with 8 motors and a board by which we can control the motors in I2C.

Goals

We were supposed to make this copter able to remain stable, according to pitch, roll, yaw and altitude. Then we should control it using a Radio Frequency remote control. To obtain this, we had to implement some algorithms allowing the copter to remain stable, after choosing the electronics which would run these software algorithms.

Our copter, on a table

Hardware & Software

We had to design our own PCB, integrating an IMU composed of a STM32 microprocessor, 3-axis magnetometers, accelerometers and gyroscopes. Then we routed it and sent it to production. We also bought a Gumstix board, allowing us to use an Ubuntu system and nice features like Wifi.

For the software, we started with a Linux kernel & Ubuntu that we installed on the Gumstix, and FreeRTOS for the STM32.

We developed all additional necessary software:

  • PCB I2C drivers
  • PCB SPI drivers
  • PCB UART RF driver
  • PCB-Gumstix UART communications
  • a Kalman Filter running on Gumstix
  • a PID control loop running on Gumstix

With the amount of computing power we have thanks to the Gumstix, we are still able to add some software on the copter. For example, we could add software running Lucas & Kanade algorithm, to track lateral movement and to cancel out them.