Tutorials
With a total of 14 students on our team (and a need for heavy training) we decided to create a series of tutorials covering the essential steps in the creation of a computer vision MAV. The tutorials cover electronics, mechanical hardware as well as the single board computers and Linux. The original goal was just to train team members, but we quickly realized that this information might be helpful to others as well.
This series of tutorials assumes no prior knowledge and explains every step very detailed.
Team Tutorials
- For team members: Please also note the Internal Team Tutorials.
OMAP35x and Embedded Linux Tutorials
The OMAP35x allows for the first time to do onboard vision processing, which allowed PIXHAWK to win the EMAV 2009 competition. We created these tutorials while we setup the BeagleBoard and Gumstix Overo Linux development systems for our computer vision platform. These guides are organized step-by-step, from aquiring the Computer-on-Module (COM) and necessary peripherals (e.g. USB wifi sticks, machine vision cameras, etc.) to Gumstix Overo Linux kernel reconfiguration and USB networking.
We will extend these tutorials in the future, several new tutorials are already created internally.
Getting Started
This introduction provides a list of matching (and tested) peripherals as well as information how to efficiently connect the peripherals.
Important for BeagleBoard users might be also the guide how to create an IDC10 to DB9 adapter yourself.
Getting Started with OMAP35x SBCs
Serial Connection
Many embedded devices still communicate over the serial connection like 40 years ago. As most modern computers lack a hardware serial port, USB adapters provide the serial interface. This tutorial shows in detailed steps how to open a serial connection to an embedded device on Windows (Vista, XP), Linux and Mac OS X.
Open a Serial Terminal Connection
Setup an Ubuntu VirtualBox VM in Windows/MacOs
If a dedicated Linux development PC is not possible or not desirable, a virtual machine offers the flexibility to run Linux on a Windows XP/Vista or Mac Os X host. Because USB connections can be forwarded transparently, USB device support is no problem and allows to use USB card readers and USB serial dongles the same way as on a real Linux computer. This guide explains step-by-step how to setup the open source VirtualBox VM software.
Ubuntu on the VirtualBox Virtual Machine (VM)
Partition and Format a bootable SD/SDHC card
This guide shows how to partition / format a SD/SDHC card correctly for the BeagleBoard and Gumstix Overo OMAP SBCs. The card is configured (as in other OMAP35x SD/SDHC guides) with a FAT16 boot and an EXT3 Linux partition.
Copy the Embedded Linux system on a bootable SD/SDHC card
This guide includes the instructions how to copy the Embedded Linux system onto the previously copied micro SD card. The instructions cover both the precompiled binaries available for BeagleBoard and Overo as well as custom build OE images.
Copy Linux filesystem on bootable SD card
BeagleBoard special: Replace Bootloader
Some BeagleBoards are delivered with a slightly outdated version of the TI X-loader, preventing them to boot from EXT3 SD/SDHC partitions. The bootloader can be flashed with a recent X-loader version solving this issue. This guide shows in detailed steps how to do this.
Enable SD boot / replace X-Loader on BeagleBoard
OpenEmbedded and Bitbake Installation Tutorial
OpenEmbedded is a collection of recipes (like makefiles), suitable for embedded devices. BitBake is a tool to generate packages out of this source collection. Together they form a cross-compilation system, somehow related to the way Gentoo_Linux works.
Following this tutorial will give you an OpenEmbedded Linux with Point Grey Firefly / Chameleon OpenCV support out-of-the-box, you can just run opencv-cvcap 0 and you'll have the camera image.
This installation allows to use the same code base for BeagleBoard and Gumstix Overo.
How to install OpenEmbedded and Bitbake
Quick command reference for OpenEmbedded
While many parts of this tutorial collection need only to be done once or a few times, there are some commands which have to be used on a daily basis. However some of them include quite long path names. As an intermediate step before using a shell script, we have collected the most frequent commands which can be directly used by copy-and-paste.
Quick Command Reference for OE
Custom Packages and Custom Images in OpenEmbedded
Most users of single board computers will want to use their custom software in addition to the standard OpenEmbedded configuration. This guide shows how to integrate custom BitBake packages (called recipes) into OpenEmbedded without modifying the original distribution. It also shows how to define custom images, which allow to create OpenEmbedded installations really optimized to a specific task.
Create custom OpenEmbedded packages
Use DSPLink in OpenEmbedded
The heavy computational load of many computer vision algorithms cannot be handled by current embedded CPUs alone. In order to run at real time speed levels, some expensive algorithms have to be accelerated with the DSP present in the OMAP3530 SoC. This guide shows how to install the toolchain for TI's DSPLink, as well as creating an OpenEmbedded image containing DSPLink and a sanity check application.
OMAP35x DSPLink and OpenEmbedded Tutorial
DSPLink Toolchain for Windows and Linux
There is a mind-boggling variety of possibilities on compiling DSPLink-aware GPP/DSP code. The following tutorial intends to provide the reader with clarity and structure. The following tutorial is separated into two main sections: Setting up the toolchain and Compiling each of which is subdivided further into Windows Host, Ubuntu Linux Host and Ångström Linux Host.
OMAP3 DSP Toolchain
DSPLink Memory Map
When using the DSP, part of the onboard RAM is dedicated to the DSP. Therefore, an important step to be taken in the setup of DSPLink is to properly configure the memory mapping.
This tutorial gives insight and instructions on the way DSPLink must be adapted in order to accept a user-defined memory map.
DSPLink Memory Map Tutorial
Gumstix Overo USB OTG Networking
: Work in progress. USB networking is very convenient to connect the SBC to the host development computer. However an even more important use is to connect multiple SBCs together. We are using USB OTG to build an onboard 480 MBit network on our MAV. This allows to easily use multiple SBCs for parallel processing. Connecting two SBCs is as easy as connecting an USB OTG (mini-A to mini-B) cable, for more than two a high-speed USB 2.0 hub is necessary.
USB CDC Ethernet on OMAP35x platforms
Machine Vision Cameras
How to secure M12/S-Mount lenses with Teflon tape
Usually the standard M12 lenses do not fit perfectly into the lens mount. Securing it with adhesive tape is not durable and might induce a lens offset from the center, because the lens can still move in its mount. We present a different approach with teflon tape commonly used for sealing pipes. The lens is tighly fixed, but can still be moved when sufficient force is applied.
How to secure M12/S-Mount lenses with Teflon tape
Getting started with OpenCV video capturing
A short tutorial to capture video with OpenCV HighGUI from the PT Grey Firefly.
OpenCV Tutorial on OMAP
There are some additional tricks to get OpenCV and the Point Grey cameras working reliably on OMAP. This page outlines the steps required to obtain a working setup.
Embedded Computer Vision on OMAP with OpenCV
Electronics
How to configure the XBee Radio Modules for MAVs
This tutorial explains how to configure the XBee 2.4GHz radio modules with the X-CTU configuration utitily from Digi.
How to configure the XBee radio modules
How to obtain the PPM sum signal from a 2.4 GHz RC receiver
The standard approach to interface the manual (backup) remote control to a MAV is through the PPM sum signal. This signal is however not present in usual 2.4 GHz receivers. There is however a method to get it out of the receiver by a simple modification.
Receiver PPM Sum Signal Tutorial
RC Frequency Guide for MAV Competitions
RC Radio frequencies regulations are often very different even between neighboring countries. We have therefore set up a short radio frequency tutorial to help us (and others) to navigate through the different regulations. We carefully select our equipment to be usable worldwide and would like to provide our information base to other teams as well.
Frequency Guide



