Develop standard, re-usable inexpensive solutions for IP-enabled always-on UAVs over cellular IP networks such as GPRS, 3G, 4G etc.
Primary goal: Telemetry over low cost cellular [achieved in testing]
Secondary goal: Bi-directional GCS/Telemetry over cellular IP [achieved in testing]
Tertiary goal: High speed IP for streaming IP video over cellular 3G/4G
STATUS: Bi-directional telemetry over cellular IP (UDP or TCP) is now working. It has been flown successfully while logging live telemetry to a GCS at home, several miles away [distance is really unlimited]. Currently working on improving code, more testing and broader hardware support.
Comments
Another look at "architecture":
Veikko,
While that is possible to put a mini-PC on the drone, you would be moving a TON of the computation and power usage from the ground to the drone. Flying a whole PC is not really necessary. All we need to fly is a minimal TCP/IP stack (and by minimal, I mean header based, C-structs) and a minimal cellular modem device.
Everything else, and I mean *everything* else, should happen either on the ground or in the cloud where power, weight and processing are not a constraint.
I should add that while I was writing my previous post and watching TV a lot of other posts where made so while I thought I was the first to mention linux PC mine seems a bit off. :)
Yes Andy, I saw that but it's your third goal while my main focus is live streaming. I'm not that interested in telemetry for now (actually I'm still waiting on my APM so just getting my quad airborne is my main goal right now).
There is an app that allows you to stream video directly and live to a website, but I can't for the life of me remember what it's called. It was used with success during the (first) riot in Egypt (boomla, doomla, or something). That might be a simple way to do llive streaming.
I've added an FAQ page and an Architecture Whiteboard page. See on the right of the group page here -->
Geir,
You are correct that the Arduino cannot keep up with most video streaming. However, the advantage of an IP based solution is that you can multiplex whatever you want on the IP stream, separately from the telemetry.
Ideally, a solution should be relatively generic, so you can use a Dronecell, or an Android phone or something else.
Streaming video over IP is one of the stated goals of this group (see the intro page above).
I'm working on a similar project but my goal is live IP streaming over 3g/4g. My path will be a bit different since I don't think they Arduino is a good platform for video-streaming. While using the APMv2 for the UAV operations, I'm thinking of adding a linux PC to the UAV to handle the 3G link and the video-stream. I'm thinking of CottonCandy right now, but that won't be available before winter (and it might be a bit out this group's price range) so I'm waiting for a Raspberry Pi now.
Since I'm completely clueless when it comes to Quads, I'm sure there will be several spectacular and expensive crashes on my blog for those who are interested in seeing me crash, burn and give up: http://rakrul.wordpress.com/
Veikko: We could send commands via the Telemetry port, as the Xbee does. The Pi would hook up to the Telemetry port with a bi-directional serial connection
Using the Raspberry Pi is a great idea. I'm not sure we need that much horsepower, but it will certainly be one of the options to consider.
To run a USB host we could also use an ATMega328p or AT32U based board, and use a USB 3G modem with that.
Again however, we would need to write some code to initialize the device from the APM. Not a problem, I can do the software side...
I'm good at software and data communications, but not hardware. Any one on the group more experienced with hardware, Arduino and electronics?
Step 1 is to get telemetry out of the APM and onto a serial line. For the time being I am using an Arduino UNO to read the TTL. If I can do that on the Arduino, then I can also do it on the PhoneDrone and use my Android as a bridge. Or, hook up the DroneCell and write code for it.
Unfortunately I am having some problems at this early stage. I have connected the TTL and I am able to read data at 57600, and I see MAVLINK data. However, it seems the parity bit is "set" on some of the data, as if the telemetry port is transmitting 7-E-1 instead of N-8-1. I'm confused - any ideas?
The goal is to not replace any of the existing software (Mission Planner, QGCS etc). They all support TCP/UDP transport, so we can use that.
It is a matter of taking the serial from the telemetry and transporting it over IP.
There are a number of possibilities for the transport, as many have already pointed out:
1) DroneCell
I am in contact with the manufacturer of DroneCell and they are shipping a unit to me. There is an AVR library for it, but that's about it. There's no instructions, no APM library to initialize the modem with AT commands, no wiring diagram etc.
There are also a bunch of other GSM/3G/EDGE modules from Telit and Sparkfun that could be used instead of the DroneCell, but very similar.
Expensive hardware, cheap monthly on T-mobile SIM cards (pay as you go).
2) USB GPRS or 3G modem - Cheap hardware, expensive monthly (at least $30-$60 a month for service). Again, no libraries, no documentation, no wiring diagrams, no plug and play exist for this solution
3) Smartphone as gateway - Jailbroken iPhone and Android phones can use the USB TTL, just like drone cell does. We can write software to bridge to IP. This capability has now been backported to Android 2.3.4 and therefore can run on many stock, cheap, unlocked Android phones. Again, no documentation or libraries to run this easily, nor diagrams and wiring.