Wednesday, October 12, 2016

Accelerometer and Gyroscope calibration: Bias, Non-othagonality and scale factor

One of the first entries in this blog dealt with calibrating an magnetometer. This post will be a continuation of that, only for the inertial sensors. The magnetometer calibration can be found here. Most AHRS use an accelerometer, gyroscope and a magnetometer. Gyroscopes and accelerometer require calibration as well which will be the subject of this post. Below I'll outline a process in which calibrates an accelerometer and gyroscope for scale factors errors, bias and non-orthogonality. The method can be preformed without any special tools. Source code can be found at the project repository here

Thursday, October 6, 2016

Raspberry Pi Speed Sign Detector: Classifiers and Neural Networks

This post will detail a progress update on a speed limit sign detection project. It will present the results of a lbp classifier and neural networking for the purpose of detecting US speed limit signs. Readers are encouraged to read part 1 before continuing with this post.

All code for this project can be found here

Sunday, July 24, 2016

Raspberry Pi Speed Sign Detector: Overview

In my introduction post I mentioned that this blog will be focused on the  process of designing a UAV. The majority of content on here will stick with that, but I thought it might be good to occasionally share some other projects I'm interested in. So in this post I'll introduce a speed sign detection algorithm using OpenCV on the Raspberry Pi 3. It will contain the current state of things and future plans. I'll upload the source code to a repository after I flatten out some bugs.


Wednesday, July 20, 2016

Sensor fusion and orientation estimation


In this post I'm going to share the results of fusing an accelerometer, gyroscope and magnetometer together in order to obtain a rotating body's attitude. It contains implementations of two non-linear Kalman Filters: the Extended Kalman Filter and the Unscented Kalman Filter. All code can be found at the project repository here under the navigation directory.

Sunday, March 6, 2016

Soft Iron and Hard Iron Magnetometer Calibration

Since the Pi will be using the magnetometer on the MPU9150, calibration becomes necessary. The first steps are handling soft iron and hard iron errors which will be the subject of this post. I've written 4 sections: Fitting an ellipsoid, Hard Iron Estimations, Soft Iron Estimations, Final Algorithm.  Lets begin!

Raspberry pi MPU9150 setup

We'll begin our journey by connecting the inertial sensors (accelerometer and gyroscope) and the compass (magnetometer) to the pi. With these sensors we'll be able to estimate 3 out of the 6 dimensions describing a quadcopter in flight. Those 3 being roll, pitch and yaw. Latitude, longitude and altitude will come later.

Introduction

Welcome!

The purpose of this blog is to document the development process of a quadrotor run by a raspberry pi model b+. I'll cover everything from sensor calibration and fusion to the flight algorithms themselves. Currently I have done enough to get a feel for the whole spectrum, however most of my time spent has been pertaining to the sensors.


Programing Laugauges:
The main programming language will be Python. I chose Python because it's easy to pick up and very popular. For testing I use Matlab as it's much easier for me to work the algorithms out on it first. Java will probably be used down the line as a ground station. Mainly because WorldWind is absolutely amazing. Lastly C++ may be used as well because I am familiar with openCV and I have a few ideas with it. All code will be hosted on my github:

Plans:
Content on here will probably take me a while to make. When I get to the meat of things I expect I'll get a substantial update one once a month, maybe once every other month. At the time of writing this I have finished calibration, AHRS fusion and have a little on the ground station. That leaves a flight controller and GPS fusion as the major milestones. There will no doubt be miscellaneous things I share in the mean time.

Audience:
I want for anyone interested in the subject of UAV design to be able to get something out of this blog. My plan is to make the blog as self contained as I can. There are a lot of wonderful online resources for this type of stuff, however it's not all in one location. My goal is to provide a resource that it's a single go to location detailing the build behind a quadcopter. I also am striving for good information, so I encourage anyone who spots errors to let me know.

Thanks for reading