Stabilizer IMU / GPS Tracker and Image

by Siou

email: laurent (dot) siou (at) orange (dot) fr

Summary

Subject

The project is to create an electronic and mechanical design to:

1) Stabilize a camera mounted on a flying machine. Rotations of the three axes must be canceled.

2) Locking a ground target to shoot. The system will use 3D positioning calculations.

3) Locking a flying target for filming. The system will use image processing calculations.

The prototyping hardware is using an FPGA (Papillio board 250K) in which we implement an Arduino IDE (core AVR8). The mechanical part consists of three servo motors. The sensor part includes a gyroscope, an accelerometer, a magnetometer and GPS.

The aim is, among others, to practice writing VHDL with new hardware IP, IP reuse through an original project.

Principle

Ensemble IMU s.jpg

Specifications

  • Mechanics:

Weight: Servos and structure: 380g, Electronics: 180g, APN: 220g Batteries: 200g, Total: 980g

  • Electronics:

FPGA Xilink Spartan 3E FPGA 250k, Custom wing board, ITG3200, BMA180, HMC5883, SDCard 4Go, GPS mediatek

Project Status

  • 3-axis stabilization works in combination (orientation down)
  • Final electronic board fully tested.
  • Final mechanical configuration completed.
  • Flight tests started.

Steps done

  • Creation Papillio daughter card: Component selection, placement, final PCB layout.Manufacturing.

On going steps

Remaining steps

  • Design new mechanical system.
  • Debug small angle jumps.
  • Calculation for tracking.

References et sources

  • References:
    • Languages: VHDL, C++
    • Protocoles: I2C, SPI, NMEA, SRTM
    • Hardware: gyro, accelerometer, magnetometer, GPS, SDCard [[1]], Arduino [[2]], Papillio [[3]]
    • Maths: Kalman Filters [[4]], DCM Matrix[[5]], Rotation matrix [[6]], Quaternion and Euler angles [[7]], Quaternion and attitude control [[8]], IMU [[9]], map projections (GPS), digital filtering [[10]]
    • Software: Eagle [[11]], Blender [[12]]
    • Ressources: laser cutting[[13]], 3D printing, ...
  • Source code:
    • I2C on AVR8 (VHDL) based on I2C Master on Opencore [[14]]
    • IMU Based on 'Aeroquad: The Open Source Quadcopter' [[15]]

Photos/videos

  • Demo video with latest stabilization software

 

  • Very short video in the first test flight (St Hilaire, Isère, France)y

Video test during the first flight stabilization IMU fully automatic (no manipulation in flight). It can not be seen but there was a lot of movements on the 3 axes that day. Do not look at the image quality (low) but tracking and stabilization. Parasitic vibrations were reduced vy video editing to give an idea of the final result of stabilization.

We see that there are still adjustments to make for the 2nd flight including:

  • The full unit mounted on board:

Montage 1.jpg

  • Comparison of real-time GPS data (red), real-time NASA data (green) and ground level reference (blue) while traveling by car in poor condition to poor reception. Max differences are always less than the required accuracy (30m between two horizontal lines on the graph).

GPS Terrain comparison Meylan-LOG small.jpg

  • First test of GPS travel (car)

OpenStreet-GPS track small.jpg

  • Overview of relief (Grenoble region) from the NASA data (accuracy: 30m x 30m x 1m)

Grenoble-1s.jpg

  • Final version of the first box (top view)

Boitier final.jpg

  • First version of daughter board PCB (on top of Papillio board)

P1020952s.jpg
GPS, socket SDCard, BMA, buzzer, switch + connectorsDaughter board.jpg Daughter board b.jpg

  • Test video (first implementation):

  • Test video with a little bottle sitting on the top plate (it is not stuck!)

 

  • Various mechanical parts (printed) connection to the camera (modeled with Blender)

Pièce liaison souple.jpg Pièce liaison dure.jpg Pièce liaison 1.jpg Pièce liaison light.jpg