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 board 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:
bitbake omap3-console-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)
saveenv
restart

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:
#!/usr/bin/python
import serial
import sys
import struct
if len(sys.argv) !=3:
print "Usage: UAVser.py <seria lport> <baud>
ser = serial.Serial (sys.argv[1], sys.argv[2], timeout=None)
try:
while True:
sys.stdout.write(ser.read())
sys.stdout.flush()
finally:
ser.Close()
print "Closed"

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.
E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • Theoretically yes you could. I have not used the ArduPilot in a long time so can not be more specific than that. I have moved on to my own AP platform from what I liked about a few different autopilots on the market last year and designed to be used for security audits.

  • Can you connect a gumstix and ArduPilot and send the ArduPilot a simple command and when the ArduPilot receives the command, it can push the command to the gumstix starting whatever the command tells it to?

  • Admin
    Good work Jeremy and every one. I have been out of Ether world for a week or two max but looks like ages with all these new exciting developments. ))
  • Right on thanks a ton Pete, I will finish working things out and start a post on the mailing list with my results and as best of a how to as I can about it for you. Thanks for taking the first steps on getting this going I am really excited !!!
  • Developer
    Jeremy, OK, I don't see to attach a file from the LInux / Firefox interface to Ning. So I'll make a post in the uav-devboard file upload area. The file is called pete_test.piklab. It is the complete configuration of my Piklab for compiling up (successfully) MatrixPilot2_5_0 from the branch directory of the repository. You will have to edit some of the lines to point at where you have put your MPLAB C30 binary libraries. If you delete the XML for the source files, then you can then use the same file for your self. When you start Piklab, you will simply need to "Add Files to Project", to add back in your own files.

    I selected the ICD2 and used an Olimex compatible ICD2 programmer to program my UDB3. There was an issue. At 4.5V (they have an onboard regulated supply to 4.5V), Piklab did not program the UDB3 correctly. And in fact, on returning to Windows, the board was still "stuck" and could not be programmed. But with Bill's help, I applied 5V directly to the VCC pin on the edge of the board (close to the serial TX and RX) and then did a program erase under Windows. That recovered the Pic to a working condition. I then returned to LInux, and experiemented with using Piklab again, but this time forcing the onboard voltage to be 5V rather than 4.5 V .... with the same technique that I used under Windows. Piklab then programmed the board correctly. Since then, I have read the dspic programming specification, and strictly speaking you need 5V for a bulk erase. So I think we, as a project, have been operating slightly outside the spec when we program at 4.5V. I have now purchased a pickkit 2, and hope to experiment with that under Piklab and 4.5V. It may work, which will be easier.

    Look forward to your compile recipe.
    So you have two parts to jump now. A successful compile and link. And then a successful programing of the dspic.

    I hope that all helps. Best wishes, Pete
  • Pete can you post on here or on the mailing list the recipe, I have gotten it to compile for me :) Though had to jump through a few different hoops than the page you linked discussed. I took thourough notes on it all and can do a how to once I get the recipe, with proper direct links and everything.
  • Lets start a new post and I will start working on it today. A quick glance at the link you posted makes it appear to be a standard type setup and should be easily worked through. Start the new thread and post the stuff you have now and even if you dont want to do more on it I will get it going for sure!
  • Developer
    An update on compiling for the PIC under Linux. I've checked the MD5sum the .hex file compiled under Windows with MPLAB and then under Linux and they do differ. The *.o all differ because it would seem that initially MPLAB embeds information in the *.o about the origin of the source file (full path names). So I think there is some careful analysis to be done.

    I created a new user on my Linux system with the intention of re-creating the entire procedure that I had used to get my version working, in a new account. However, Microchip have put in a few more barriers to success. The original version 3_22 evaluation binaries are not available via their archive. So unless you already have them, you would not be able to re-produce my own Linux compile environment. (They are required to link in some of their proprietary libraries. e.g. standard C library (yes they have their own proprietary one), and maths libraries for matrix manipulation). So then I switched to the 3_24 version, but that is failing on the required patches that have to be applied to fix up some other things that Microchip have done with the newer source version.

    If anyone want to follow this all through and give it a try for themselves, then a good link with instructions is :-
    http://www.electricrock.co.nz/blog/microchip-c30/
    If you get the compiler to compile, then please come back to me, and I'll post the Picklab recipe that I use (An xml file).

    If we take this discussion further, then I suggest we start a fresh post / topic somewhere with the relevant heading.
  • The pixhawk can be used for fixed wing it just seems more tailored to the copter setups everyone is doing. It just a personal preference and after trying basically everyone that exists out there. I just think since there are so many open source AP's there should be a more open source GCS solution that can be tailored to your needs, similar to what the OpenPilot GCS is like where you can even design your own widgets to add in interfaces of your own imagination for what ever needs you personally have. Building more a solid backbone then having an easier way to expand for personal needs. I think that way more people could focus on one GCS solution for the basis for all AP's then have say like UDB and Ardu pre made plugins, ones like your config and waypoint settings everything for each AP becomes a plugin to the backbone system and then you can still add your own plugins or widgets on top of all that, as well as making GCS option for all major OS's. If anyone else agrees on that one and would like to help work on something like that I am very willing and have some beginnings already.

    Man I wish I could get hours in the air that would be some serious fun for me.
  • Thanks Jeremy.

    An extra 190mA is not bad at all. This might be fitted to a glider where flight times could be hours.
    I have separate Rx and motor batteries. The Rx battery is 2s 1600mah.

    Your comment on the GCS is interesting. I was heading towards using pixhawk GCS because of the MavLink protocol and control. It is a pity it is not fixed wing and cross platform compatible.

    Regards Matt
This reply was deleted.