I’m not going to be able to work on this project for awhile, so I thought I would post about it, partially so that I don’t forget the details myself : )
For those of you who don’t know, I’m currently working on a UAV based on a Multiplex EasyStar and an Arduino Diecimila. My main goal currently is to simply get it to fly from waypoint to waypoint, but in the distant future my goal is to extent flight time as long as possible. I’ve been working on the project for the past couple months, and it’s my first foray into both RC and serious microprocessor programming. Currently, the navigation algorithm is extremely simple, and relies entirely on GPS – if it’s too low, go up, if it’s not on the right heading turn the rudder until it is. No accelerometers, no gyros. I know I’ll eventually have to add some sort of method for the plane to know its own orientation when I start doing serious flying, but for now I’m just trying to get all of the hardware collected and the basic software written.
The navigation and GPS processing algorithms I wrote from scratch, using trigonometry and such. I believe that they’ll only work in the Western hemisphere, but I’m really not sure. I find the absolute heading to one point from another by calculating latitude and longitude components of the distance (over the curve of the Earth) from the one point to the other, then treating those distances as legs of a flat 2-d triangle. I can then find the angle from absolute North to the destination point. It’s probably almost too precise, but it’s the way that makes the most sense to me, and the processor seems to be able to handle it well. I’ve pretty happy with the results of car-based tests of the autopilot…the update rate of the entire system is about 3 Hz, which I think is fine for a slow, stable glider.
The aircraft has never actually flown under autopilot control, but everything has been tested on the ground and seems to work. So, when I next get a chance to work on it, my first priority will be to clean up the rat’s nest of wires on the protoshield...then install something to keep it stable in the air and start testing. It’s probably going to be on hold until December, when the semester is finished, but I think I will have enough time then to get it working in the air.
Pictures and code for those who are interested follow...cheers!
Haha it looks terrible...but prototypes never look clean. You can just barely see an Arduino Protoshield underneath...