first embedded machine to run uav flight control system

Topics: Developer Forum, User Forum
Jul 23, 2007 at 6:52 PM

I am starting my first embedded pc application, and found this group through gumstix. It seems like good stuff. My application is to build a flight control system/autopilot and downlink for my UAV (unmanned aerial vehicle).

After many years of system administration, I am a bit humbled by my lack of experience with embedded systems. I would like to build a system that has the following inputs:

  • throttle
  • aileron
  • elevator
  • rudder
  • autopilot disconnect (manual flight)

Other instrumentation:

  • solid state compass, 5V
  • 3-axis accelerometer, 5V
  • ultrasonic rangefinder, 5V

This all seems to be ok or at least par for the course. I have selected the following gumstix devices:

  • verdex 400MHz basix, cpu
  • goliathgps-vx, 3-axis accelerometer, gprs/gsm (downlink), gps
  • net-cf, storage and ip access
  • robostix, motor control and instrumentation interface, seems to do 5V A/D

I guess my first question is, are any of these not supported with the current CE 6.0 drivers? Can the onboard processor on the robostix be easily slaved to handle messages sent from the verdex (primary CPU? (act as a chauffer, it flies and keeps trying to fly. the main cpu handles the radio and sends messages to the robostix) I can write c#, but not to write a driver. The aerodynamics and flight control part do not concern me as much as hardware support (degrees and industrial experience). Comments are welcome.

Adam Bogan
Jul 24, 2007 at 4:10 PM

That is a heck of a project you have thought of. I was thinking sorta on the same line but instead of a airplane why not a helicopter. So after a little bit of research I have been sorta questioning my project.

The gumstix is cool and all but it has to talk to motors and sensors. The way I was going to have my helicopter was going to use a gumstix and a OOPIC. Communication between the two would be handled via I2C. The robostix has a I2C built on it but I am hoping the verdex and basix supports it also.

I am not for sure if Drumstix supports the I2C but the url above will see I2C with linux. So I was going to have the OOPIC handle the lower level stuff like hovering but when I want the helicopter to take of/land/locomotion the gumstix will tell the OOPIC it wants the land and the OOPIC takes care of lowering throttle waiting to land and power down the helicopter. Also the OOPIC will receive info from sensors so the gumstix can poll the OOPIC for status of any sensor.

Also GPS has been another challenge that has stunk. For a project of mine I wanted accuracy and well gps doesn't really offer like a cm/inch accuracy. The only solution I have found is using DGPS.

Well that is my current thoughts and would love to see where you run with this. Keep me posted :)
Jul 24, 2007 at 4:11 PM
Also forgot to mention for starters I am going to try to build a UMV RC nitro car and get comfortable with the hardware/software. Plus a RC Nitor car runs for about 100 bucks on ebay. A lot cheaper than a helicopter or a plane.
Jul 25, 2007 at 4:07 PM
I have a grant to manage the airplane part. The brain costs more than the airframe. Airplanes have fewer moving parts than helicopters, and more lift capacity. Since this is intended to be an instrumentation platform, that could be an issue.

Per your description and need to manage a non-supported bus. Would using something like a phidgets 8/8/8

be a better choice and run the we-dig bsp as the OS on the gumstix verdex basix. I do not know the relative horsepower of the embedded machines. Phidgets also support .net drivers natively, not a bad thing.

Since it was brought up would it be easier to run all of the connections that support it directly over usb? If other computers were needed on the plane, would it also be easier to run a small BT or RJ45 network within the aircraft rather than other kinds of busses? At least from a code support perspective? I am a bit out of my field, pardon some basic questions.

Straight Linux C scares me a bit, so I would like to stick with c# as my code platform.

Jul 25, 2007 at 6:28 PM
The phidgets would be super cool especially with the .Net API.

Now the USB, pardon my ignorance but what if you wanted 3 phidgets all talking to the gumstix. How would that work? Do you connect all the USB into a big USB hub and then to the gumstix? Daisy Chain?

Also BT I think would be a better choice.
1. No cabling / hub
2. Gumstix already powers the BT so why not use it
3. BT code is pretty simple once you get the hang of it
Jul 26, 2007 at 10:22 PM
Edited Jul 26, 2007 at 10:29 PM
To run the Phidgets control board you'd need a device that has USB Host hardware / drivers. Like for example the Gumstix Verdex series. Good news is that there is indeed a .NET Compact Framework API for Phidgets (along with the supporting P/Invoke native libraries).

Edit: Oops, maybe you're (Adam) already planning on using the Verdex board. Above you said "verdex 400MHz basix, cpu" which could be one of two mobo's listed At any rate the BSP for the Verdex PXA270-based board doesn't yet support USB host. Maybe you'll join me in lobbying for that support? ;-) Cool project at any rate. Good luck!

Jul 27, 2007 at 3:28 PM
Ok. Steely said that the gumstix verdex bsp does not support a usb host, yet.

Pardon my noob-ness, that means that essentially you cannot use usb-connected devices with gumstix hardware and the we-dig bsp?

I wanted to use the Verdex board to drive the goliathGPS-vx, . The goliath would be my downlink and add several other features in one component that otherwise would take several.

I really like the gumstix stuff, and thoguht adding some phidgets peripherals would be sweet. They have a motor controller and a bunch of cool a/d stuff, and sensors already kitted. However, I need to rethink my plan a bit if I cannot use USB, so that I can make sure that I have reuseable sensors, and motor control.

gumstix has a robostix, but that may have some complications as well to get the i2c bus working.

I appreciate any help, in case I am misunderstanding a bit. I am a gearhead not an electronics or a code guy.

Thanks for everyone's help,
Jul 27, 2007 at 8:10 PM

abogan wrote:
Pardon my noob-ness, that means that essentially you cannot use usb-connected devices with gumstix hardware and the we-dig bsp?
I appreciate any help, in case I am misunderstanding a bit. I am a gearhead not an electronics or a code guy.

I'm far from a gearhead or an electronics guy myself -- I just like to prototype cool software on embedded hardware. That's why these ready-made gumstix and phidgets components are so attractive. I think the combination of Verdex + GoliathGPS + the PhidgetServo USB device sounds perfect for what you're trying to do. But you'll of course need both hardware and driver support to be able to connect USB devices. Specifically, you need a USB host device.

The Verdex board has both USB host hardware and drivers, if you go with Linux. However to use Phidgets+CE with this board, you'll have to wait until the USB Host driver is ready (i.e. is included in the BSP). Let's wait and see what dvescovi has to say on the subject...
Aug 3, 2007 at 6:00 PM
So it seems the major sticking point for using WinCE with my planned hardware choice is the USB host implementation for the GPRS radio. That is a big piece, is it in the plan to be added to the BSP in the near future? I am not asking for anyone to anything, just want to know if my idea of a BSOD in mid-air is likely or do i have to sink to the level of penguin feathers?

Aug 15, 2007 at 4:17 AM
If you want to use the Gumstix with RC servos (e.g. car, plane, etc) consider using it with a Robostix board. That will give you a bunch of analog inputs and control of 6 servos. You can connect the gumstix and robostix using serial ports to keep things very simple (it works for me). USB host support is a ways off though.