From PaparazziUAV
Jump to navigation Jump to search

The main application for small UAVs is video. There are various means to take pictures from the aircraft and transfer them to the ground.

Analog Video

The easiest and most practical way is to transfer video in an analog way either as NTSC or PAL signal. The picture is taken by a camera, put to an analog signal and sent through an FM modulated transmitter.


Affordable CCD cameras tend to be better in dynamic range and noise than same price CMOS cameras. On the other side CMOS ones do need less energy and they are more likely to run with 5V.

Small digital handheld cameras do have a much better optical system and sensor than stand alone cameras. There are ongoing efforts to reduce size and weight to be able to implement them.

Recommended cameras

A good selection of miniature cameras can be found at If you´re looking for Panasonic KX-xxx cameras find them here: RangeVideo.

Mini Color CMOS Camera with Pinhole Lens
TV Lines: 380
Lux: 1.5 at F1.2
Shutter: 1/50-1/63000
Power: 7-12V DC, 25mA (bypass regulator for 5V use)
Dim: 12mm x 12mm x 14mm
Weight: 3.3g (w/o cable)
Camera position for upright pictures (crystal up). The blank copper is ground, blue is signal and red is 7V supply.
Solder the red cable to the other side of the capacitor connected to ground for 5V supply.
  • Simple, lightweight camera with good performance

Panasonic KX-141 (a.k.a. Pacific Corp. PC-2005) CCD

Pacific Corp. PC-2005 CCD
5V supply, signal is yellow

Pan/tilt mechanism

For help in building a pan/tilt camera mechanism see our pan/tilt camera page. Code for driving such as system is in /sw/airborne/cam.c


There are various FM transmitters available at 10mW, 50mW, 200mW or even more. Keep them as far away from the GPS receiver/antenna as possible as they might cause severe interference. For the competitions mostly 50mW or 200mW transmitters have been used.

Standard 2.4GHz Wi-Fi antennas can be used as lightweight dipole antennas by breaking the plastic case and removing everything except the coaxial cable and the counter balance soldered to the shield.


The most important thing about the receiver is a good antenna (we used a 2.4GHz Yagi (532-4474 from RS components) at some competitions, also some patch antennas). The analog receiver modules itself do not seem to differ very much.


CRT television sets seem to have the best picture. It blurs out the pixels that the human eye can see and the eye is very good at adapting to it. We used them whenever transport was not an issue. If not possible, small TFT video screens intended for car entertainment were used.

Digital Display

Pollin USB R1 video receiver/digitizer

There is a TFT screen in the ground station, so why not use it? For that the picture does need to be digitized and feed into the laptop. In the early days we used a Plextor M402U to digitize and MPEG4 compress the analog video. It was then recorded or decompressed and displayed on screen. The drawback on this nice box is the delay you get through compressing/decompressing plus the size and the need for an external video receiver and power supply. A lot easier to use is the Pollin USB-R1 which includes an analog video receiver and an USB (High Speed) digitizer. It does not need any external component or power supply.

Plextor M402U

This box not really recommended any more. With a recent kernel and driver patches from the Paparazzi cvs it should be possible to get it to run.

Pollin USB R1

The Pollin USB-R1 requires no additional software drivers since the release of Ubuntu 10.04 (Lucid Lynx). It now works out of the box.

Watching Video

Watch video with (maybe adjust the NORM to PAL or whatever your cameras standard is):

mplayer tv:// -tv driver=v4l2:width=320:height=240:norm=NTSC:input=0:device=/dev/video0:noaudio

LinuxTv (old driver)

shell> hg clone
shell> cd v4l-dvb
shell> make
shell> sudo make install
shell> mplayer tv:// -tv driver=v4l2:width=320:height=240:norm=PAL:input=1:device=/dev/video0:noaudio -vo x11

Linux Kernel 2.18 (old driver)

Some work is needed to get it to run with Linux as it needs a recent and patched version of the em28xx driver (this will get easier as the patches are integrated to v4l). You need some version control system as well as the kernel headers and video encoders, do as root:

aptitude install mercurial linux-headers-$(uname -r) libxvidcore4 libxvidcore-dev mplayer

Get the video4linux drivers using the (v4l) special version control system, as user:

hg clone

Copy over the two changed files "em28xx-cards.c" and "em28xx.h" from sw/in_progress/videolizer/v4l-dvb-experimental/ to the v4l-dvb-kernel/linux/drivers/media/video/em28xx/ folder. Then build v4l-dvb as user:

cd v4l-dvb-kernel

And install as root (you have to do this each time you update the kernel):

make install

Add the follwing to /etc/modprobe.d/emb28xx (as the Pollin USB-R1 does not have an EEPROM for auto detect.)

options em28xx card=62

Linux Kernel 2.26 (old driver)

The changes to the emb28xx driver have now been integrated upstream. To build the driver, follow the instructions on the emb28xx driver website.

Add the follwing to /etc/modprobe.d/emb28xx (as the Pollin USB-R1 does not have an EEPROM for auto detect.)

options em28xx card=76

Using separate Frame Grabber and Video Receiver

This solution provides maximum possible range, video quality and flexiblity due to modularity. Though it requires more hardware than the integrated Pollin USB R1 solution.

Frame Grabber

A frame grabber takes the output of any video receiver and streams it into Linux.

AVerMedia DVD EZMaker USB 2.0 Gold

The AVerMedia DVD EZMaker USB 2.0 Gold works well and comes with a Linux driver.

The Easycap DC60+ (with Empia chip) works well and is less expensive but not as compact as the Pollin unit.

The video stream can be directly integrated into the GCS as described in Video Plugin.

Video Receiver

Yellowjacket Pro Video Receiver 2.4GHz

This diversity receiver provides high range and video quality. Especially when connected to high gain patch antennas.


The USB video converters can be used to do live streams over the internet as seen at 24C3. We used spook to receive the video data from the USB converter, compress it with MPEG4 and send it using the rtsp protocol. Spook needs some patches to work with the Pollin converter. Build it from Paparazzi cvs:

cd sw/in_progress/videolizer/spook

All encoders should be enabled. Then build it:


and start it

./spook -c spook.conf.usbraw

Watch video through vlc from it

vlc rtsp://localhost:7070/webcam

Note: a first time spook user must choose the correct video camera output format i.e. NTSC or PAL, for instance. Navigate to ~paparazzi3/sw/in_progress/videolizer/spook/spook.conf.usbraw/input VL42/InputType PAL; The CVS default is set as PAL.

Somehow the standard Debian 4.0 (etch) mplayer does not support rtsp:// video. The mplayer seems to work. It can be installed adding to /etc/apt/sources.list:

deb etch main

and install with

aptitude install -t stable mplayer

Forward USB Streaming Video over a Mobile TCP/IP Link to a Remote Windows Viewer

If one has installed a fully functional USB video streaming payload, as outlined above, and wishes to share the output with associates beyond the perimeter of the local gcs TFT, implement the following.

Modem Hardware

Vodafone mobile data card

Mobile modem choice is up to the user and ability to configure the interface to an ISP. The model described here and utilised for now is a Vodafone/Huawei E800 HSDPA 3G mobile data card. Compatible with Express Card laptops.

Modem Linux Drivers

Startup splash

Download the appropriate vodafone-mobile-connect-card-driver-for-linux for your Linux OS release at Forge Vodafone Betavine. The Unbuntu Gutsy Gibbon & Hardy Heron version used by me can be loaded here: Right click link, choose 'save link as' to your home folder. Check the permissions tab to allow the downloaded file to run as an executable. Run file. Follow the instructions in the README.

Warning - the user is advised to install the data card in the express card slot prior to booting and turn off the wifi radio before intialising the software found in the /Applications/Internet drop down menus. Furthermore, the later procedure should be instituted before starting spook.

The local gcs server should be ready now to transmit video as well as other data once a connection to the ISP is established. Confirm this by getting the IP address, as user:


Remote Client Connection Configuration

VLC Media Player

Windows client users will have to download VLC Media Player to view JPEG/HTTP video as defined in ~paparazzi3/sw/in_progress/videolizer/spook/spook.conf.dist

PuTTY basic SSH configuration

To faciltate a secure SSH TCP forward port connection from the host to the Windows client install PuTTY here: PuTTY Download page. Insert the gcs host Mobile IP address obtained from the remote operator via a preferred form of communication .ie. chat, email the box labelled 'Host Name (or IP address)'. Confirm Port 22 is chosen and the connection type is SSH. Expand SSH category in left panel and click 'tunnels'. See next box.

PuTTY SSH port forwarding

Tick both port forwarding options. Set Source port to '80' and destination to 'localhost:7070/webcam'. Click 'Add' and then 'Open'. See next box.

PuTTY terminal logged in

The information contained within this terminal is self explanatory after a successful login.

VLC http network stream configuration

Open VLC, click 'file', select 'open network stream' and then 'HTTP/HTTPS/FTP/MMS'. Enter 'localhost:80/webcam' in the URL box and select 'Open'. See next box.

VLC Streaming jpeg/http window

Hopefully, whatever the on board camera is viewing is faithfully reproduced in the window. Unfortunately, the 'Print Screen' function fails to capture the live video output.

Digital Video

A fast digital telemetry link would be needed to send usable digital video. There are serial bus cameras that could be hooked up to the autopilot and the image data be sent through telemetry.

A full integration of a Caspa FS camera on a Lisa/L board is currently under development.

On-Screen Display (OSD)

There are some situations where on-board data needs to be overlayed on the video stream. Examples include:

  • Alternative display of on-board data without a telemetry link and GCS;
  • In Australia, 2.4GHz analogue video links with OSD are considered as "telemetry transmitters" allowing 1000mW EIRP emission without a licence; or
  • Sending a callsign when operating under an amateur licence.

A number of OSD devices exist.

IVY to Mavlink to UDP to UART

 $ mavlink-ivy-interface
 $ stty -F /dev/ttyUSB1 57600
 $ nc -l -u 14550 > /dev/ttyUSB1

MinimOSD / ground side

Atmega 328P with MAX7456.
MinimOSD Google Code page
YouTube example Video
Note: MinimOSD has been discontinued and was replaced by AliceOSD

Ground Station set up

 git clone git://
 cd mavlink-ivy-interface/
 sudo apt-get install cmake