Description: This platform was inspired by the realization that almost all the hardware you need for a functioning UAV is contained in the high-end cellphone in your pocket: GPS, camera, two-way long-distance wireless data communications, onboard computing and storage. Why do the tricky hardware integration when some cellphone maker has done it better themselves? By using a Windows Mobile phone, a UAV becomes a software, not a hardware, project. (You can see the phone strapped to the bottom of the plane in the image above; the sensor to the rear of it is for the FMA co-pilot.)
Features: Control the UAV (dynamic waypoints, camera commands, "come home", etc) by text message! Plane can return GPS-tagged imagery in real time by MMS (also stores it onboard for later downloading). Phone steers the rudder along GPS waypoint path, circling on command, and controls the throttle to maintain altitude. Separate FMA co-pilot stabilizer on the ailerons and elevator keeps the plane flying level.
- Airframe: Hobbico SuperStar (49" wingspan, $109). [If you want much better performance, you can upgrade it to a brushless motor and a LiPo battery]
- Autopilot: HP iPaq 6515 Window Mobile smartphone (GPS, 1.2 megapixel camera, discontinued but widely available for less than $200 on eBay.)
- Stabilization: FMA Direct FS8 Co-Pilot (infrared sensors, $115)
- Interface: Rentron serial-to-servo board ($77)
- iPaq to serial cable ($20)
- Custom software: VB.net code running on Windows Mobile, using HP's GPS, Cameraphone and text message libraries. It's still a work in progress, but you can download a beta version that shows basic functionality, here. (Copy the CAB file to your iPaq and run it from the file manager to install the program. It requres the Rentron board and serial cable listed above to do anything useful.). The VB source code is here, so you can modify it for your own needs, including adapting it for Windows Mobile 5 and 6 and other GPS-enabled WM phones. Documentation coming soon.
Comments
Just to be clear, we don't use the phone as the whole autopilot. It only does navigation (GPS->VB code->serial port->servo driver board->rudder), photography and communications. A stand-alone FMA co-pilot unit does stabilization (ailerons and elevator). Only the second of those requires real-time operations, and we've offloaded that to dedicated hardware.
The only other autopilot function I might trust the phone for would be very coarse altitude hold using GPS.
Even if there were a good way to connect IMU sensors to the phone, I don't think I'd trust it to handle that function. It's best to use dedicated hardware for that, and let phones do the things they're best at (communications, etc)
How do you overcome the inherent lack of realtime functionality in VB.net. Correct me if I am wrong but when the .NET virtual machine decides to do garbage collection it stops all other threads (this is a limitation of virtual machines) for a non-deterministic period of time while unused memory is freed. It is true that garbage collection is usually short but things can happen quickly while flying. What happens if the vm decides to do garbage collection just as the UAV is beginning to land, takeoff, or preform a critical maneuver? As the programmer do you have control over when the garbage collection routines are called?
Another thing to consider are the realtime characteristics of the Windows Mobile operating system. Does Microsoft provide any type of realtime guarantees with regards to the timing constraints of applications. Is there anything to prevent another task from interrupting your I/O routines and ruining the timing of serial communications?
From my understanding of your implementation most of the sensors are already present on the phone and handled internally for you but are there any provisions for capturing time critical events? In that case many of my of the issues I have outlined above will have little impact of the performance of your aircraft but either way they are things too keep in mind.
Thanks,
Neal.
Any good web resources on learning VB.net/cellphone programming? Just ordered my Ipaq off ebay =)
Windows Mobile 6 SDKs for Touch Screen and non-Touch Screen devices
ActiveSync 4.5
.NET Compact Framework 2.0 Service Pack 2
As for the manual, I'm afraid that's a ways down the line. Too many other projects right now!
You need the Windows Mobile Dev Kit (it's a free DVD):
http://msdn2.microsoft.com/en-us/windowsmobile/bb264329.aspx
http://www.parallax.com/tabid/441/Default.aspx
Download, BASIC Stamp Windows Editor version 2.4 (~5.9 MB)
I have got most of the basic stamp autopilot working now, still yet to put it into a plane though.
Btw, any ETA on the instruction manual? =) Using a cellphone for wireless communication, GPS navigation, and telemetry sounds pretty cool
also do you have any UAV's capable of autonomous landing/takeoff?
Thanks
I guess my main question on the software was on the PID settings in servo setup and what was the meaningof those values. Thanks Chris.