Here's an update on the USAV project I started some months back. This post is mostly about the architecture and features of the current version as well as a video of a static test.
The USAV is a UAV with an integration to some of the social networks like twitter and Google talk. It is also an android powered guidance system currently implemented in a standard 450 flame wheel quad copter.
So it's been a while since the last post about the USAV - although slowly, things has progressed mostly on the software side although the quad itself has been upgraded with a new frame and the KK2.0 from Hobby King (and downgraded again - longer story).
Denmark is a cold and wet kind of place especially during winter and is certainly not ideal for anything that's electric, (a bit) fragile and is preferred to be operated outside. So my last flight with the USAV was in September where the craft suffered a near death experience (one engine and IOIO board did experience the real thing). From then till now, I've spent my time on rebuilding and adding features to the software.....oh, and I also became a father :)
Today I would like to give some insight in the project as well as a little video of how you interact with the craft.
As mentioned, the brains of the craft is implemented on the on-board Android based cell phone. The software is written as a java based app. The main building stones of the app is as shown above.
As you can see, the typical smart phones features such as internet connection, GPS, compass, accelerometers and camera are all being utilized giving the "brain" a lot of interesting possibilities during flight.
The system allows you to manually control flight by chatting with the craft during flight, as well as set a route through waypoints and let the auto pilot, in turn, guide the craft to the individual waypoints. Each waypoint can have some extra characteristic, such as;
follow (A special type of way-point that moves ie. another smartphone broadcasting it's GPS coordinates)
Way-points can be created either by specifying GPS-coordinates or by address. A return point is automatically added to the flight manifest to ensure that the craft returns to the starting point.
The auto pilot part is as of now very simple - utilizing the GPS and compass to determine where the craft is in relation to the current waypoint, and executing commands to get closer.
Sometimes, when you develop software, you tend to model the real world as much as possible. Sometimes this makes perfect sense, but in the terms of the auto pilot, I choose a different approach.
A real world pilot is very specialized in his knowledge of the craft has is piloting, i.e. an aircraft pilot may not now how to pilot a helicopter or in principle a car for that matter.
This software pilot is created (like many other auto pilots) so that it doesn't know any specifics about the craft it pilots and can therefore be used with all kinds of crafts (cars, boats, planes and helicopters). The autopilot relies on a stack of modules that can translate the pilots direction commands to something specific for the particular craft as shown below.
The clever thing about this being that new crafts and control boards can be implemented quickly through java interfaces.
Current features highlight
Okay so where are we right now in all this - to put it short, I have a lot of code and very few flying hours (minutes actually), so there are a lot of untested features. So far tests has been mostly focused about communicating with the craft and doing some basic maneuvers. Since I am new to the wonderful drone world, this has been a slow and very google/diydrone driven development cycle and I'm sure there are a lot of obstacles yet to be solved.
A selection of the current features I have implemented are;
* Speech Synthesis feedback
* Way-points are added using gtalk
* Street address to GPS coordinates
* Range safety (abort mission if flight path becomes too long)
* Timer safety (mission abort after xx seconds)
* Auto return to starting point
* Soft throttle (changes throttle gradually - saves on props and motors)
* Calculate distance traveled / remaining in real time
* Auto land using accelerometers
* Logging of flight data
* Kind of accurate altitude calculation using GPS
* A large set of gtalk commands
* Twitter integration (text and camera pictures)
Using gTalk, these are the current commands implemented
Below is a video demonstrating some basic features in a static test. A bit dull I'm afraid, but at least you'll get an idea on how you interface with the USAV.
When the weather allows I will take the craft for a flight and will surely need your advice on tuning the controller for the most stable and efficient flight.Currently i'm using xcopter firmware 1.1 - Should I change to KapteinKuk 4.7?