The gumstix overo is literally the size of a stick of gum.
This will show BASIC functionality of how to get the UAV DevBoard and the ArduPilot working. The rest is up to your imagination and the recipes you come up with and the add ons you want as well. I am sure there may be cleaner and better ways to interface the two but this was the easiest for me to be able to get the functions on board the plane i needed.
I will be showing you the ways I was able to use my gumstix overo fire and summit expansion boar
d with my AP's. Tested with both the UDB V2 and ardupilot with v2 shield and xyz sensors
First and foremost you will want to make sure you have properly built and setup
your build environment for the gumstix overo. You will also want to make sure you have setup your user.collection section properly and copy over the entire linux folder from the OpenEmbedded recipe selections. This way once you setup the kernel config your defconfig file will always stay the way you set it up. I will only discuss changes I made that pertain to getting the AP and the overo setup. A tip on everything from here on out is to make sure your build environment is setup and WORKING properly. This was not simple for me and took a long time to fine tune, and the build chain breaks all the time. Also my other tip is once you have a version of the branch your on you like make sure you make a branch from that config in case your next git pull breaks something. Which trust me happens way more than you want.
Once you have that all done and setup you will first want to just build a basic image:
By doing this you build everything you will need and the kernel will get built. Grab a drink or go do something else it will take a long time even with a fast internet connection the first time.
There are many kernels to chose from depending on what you want to do with your setup and to set the preferred kernel version in your overo.conf file you will want to add this line to the file:
PREFERRED_PROVIDER_linux_omap3 = "2.6.32"
Now if you want to choose a different kernel make sure you change accordingly.
Once you have built the kernel you will want to go in and customize it. The way you want to do that is through bitbake:
bitbake -c menuconfig linux_omap3_2.6.32 * I am currently running the psp kernel
Technically you do not need to reconfigure the kernel but I went in and added all i2c debugging and options that there were so as to make sure my kernel had anything it would need while working on this. I would recommend you do the same as well just so you can make sure as you go and add things on you have any functionality you need. Or say if you know future needs you want to add in you might as well set them up now so you have less chance of reconfiguring the kernel again later, other things to keep in mind are if you want to use a USB camera you will need to make sure you configure the kernel to use that as well (this is a not difficult process and if needed can post the way to get the camera and drivers and modules if your camera can work in linux should be fine). I also made sure to setup iptables properly. Also you might want to do any security configurations at this time as well. I will not go into any of that as its way out of the scope for here.
Honestly there is a ton of different things for the kernel to keep in mind and this only BRIEFLY touches what you should do. And as this is going to be long as it is, I am trying to keep this slim in case there is not really much interest.
Now you will want to take your image you made and install it either on the nand
or sd card
. The first time you boot your image it can take anywhere from 10 to at the longest its taken for me was 75 min for the first boot, this is first boot only. For the sd card use at least a 8gb and if you want more room for HD space you can use a thumb drive your size of choice. 60 GB for me :)
Now if you want to change an the clock you will need to get into uboot you will want to reboot your system now and once it reboots hit enter in the 5 seconds you have. Now enter the following commands:
printenv ( This will show you your current environment variables you can take note for safety sake)
setnenv (Your new boot args or so on)
For both applications you will need a SparkFun logic level converter
. Was the cheapest and most recommended to me for this. You need this because the header on the overo is 1.8v
I also chose to run an XBee and this setup to transmit my telemetry info back, basically a failsafe telemetry. So to do this I made basically a y harness. So that way you can connect the overo and XBee together.
Now for connecting it:
From the summit board 40 pin
header take pins 9 rx and pin 10 tx and put those on to the logic level converter on their corresponding pins on the LV side. Now you will want to run pin 26 your 1.8v and 25 ground to the LV side of the converter. Now from the HV side of the converter board you will want to run a power and ground to it, I just ran a Y cable from what would go to the XBee and hook up your power and ground to the HV side and connect the TX of your AP to the RX pin on the HV side of the converter. Bingo thats it.
There are a bunch of great pins you can access on there, I am using the serial port for the AP as well as using the i2c interface.
Now from your overo a simple connection to read the stream is as follows:
if len(sys.argv) !=3:
print "Usage: UAVser.py <seria lport> <baud>
ser = serial.Serial (sys.argv, sys.argv, timeout=None)
This is nothing more than a test program to make sure you can get the serial stream on your overo.
If there is enough interest I can post more information, programs and maybe other tutorials with what I have done with adding a full blown computer on board with our AP's. Though basically everything I have written are either bash scripts or C, python and perl programs and none are anything to fancy, most of what I do on board is just using existing linux programs. I log everything to a single file and that goes into a database on the overo. Then my on board programs read the data from there and fills it in appropriately to the programs, while also keeping an entire running log. I have one program that collects the info from the AP and sends it back on a dedicated wifi link to be displayed on the GS laptop. I am running a basic USB webcam running a program I wrote that uses ffmpeg for now to stream the video and I also have it place some of the telemetry stream on top as a dirty OSD type setup. The video and OSD are nothing fancy and were just because I had a camera laying around and got frustrated with some other stuff one night and got it to work "good enough" for now. I also have a 4-port powered USB hub and 2 ALFA USB wifi adapters on top of the on board wifi on the overo, as well as the on board bluetooth and a USB bluetooth adapter. Currently the CPU usage on my overo with the video and if I have everything running which is 35 separate scripts or programs wifi related and 10 bluetooth related, and the on board wifi and bluetooth both running, sqlite making its DB I have only hit a max of 67% cpu usage with the chipset running 720mhz. There are more functionalities I have added as well but most would be of no interest to people here.
You can also hook up both AP's by means of i2c but its more complex to configure and you need to add code to the AP your using if you want to get the fully functionality out of the connection and the time and hassle to do so. I have run both AP's connected in both manners (serial port & i2c). Though I am have more time with the UAV Dev Board V2 than my Ardu setup in both configurations. Also if they are wanted I can post pictures of the connections Thanks to:Everyone here on the site who listened to my ramblings and helped me with my problems, Chris and Morli especially! A big thanks to Bill P. for making the DevBoard and Jordi for the Ardu :)
a huge special thanks goes out to my son!
Sorry for the bad pics, I dont have a good camera at this time to take pictures. I will also post more configuration pictures in a reply in a few days when the camera shows up.