Developer

FPV setup with raspberry Pi

3689553118?profile=original

After much chasing, and testing, I have found this to be an efficient way of getting low latency high quality HD video out of an Aircraft. The latency is around 0.4 seconds at worst which would be OK for an FPV with an APM doing the hard work.

I will continue to search for methods to drop the latency down further, but this is a lot better than the 6-12 seconds I was getting on my first attempts.

Any comment (with useful instructions) would be appreciated.

For the wireless link, I am using two UBIQUITY ROCKET M 900 with Australian ACMA approved firmware, at the base station, I am using a tracking (yet to built the tracker...) 1.5 meter long X and Y polarised Yagi, and on the plane, two RF Design flexible strip antennas, placed at right angles to each other.

but how you do that bit is up to you.....

the critical bit is getting the Raspberry Pi's to chat to each other.

I have tried to make this as user friendly as possible... good luck.

 

Setting up IP video for Raspberry Pi 1080p video (FPV)

 

You will need 2 B model Raspberry Pi's and 1 Pi Camera. (Element 14, or RS components)

Preparing your Raspberry Pi for first boot…

 

Follow the instructions at http://www.raspberrypi.org/wp-content/uploads/2012/04/quick-start-guide-v2_1.pdf

Install the prepared SD card in the Pi and boot.

Setting up your Pi

Connect the Pi to your router with a network cable.

On Start-up it will resize the FAT partition and present you with a menu.

Set your language, and keyboard layout.

Select Raspbian… then click install.

After this has extracted (will take a while….) it will reboot into the configuration screen (again will take a while for this first boot.)

The important things to change here are

  1. Enable the camera
  2. In advance options…..
    1. Set the host name (camera, for the camera end, receiver, for the viewing end)
    2. Memory split, set the memory for the GPU to 256
    3. Enable SSH ( will come in handy later, as you may need to talk to the Pi in the air.....

Then finish and reboot.

First login

Username: pi

Password: raspberry

Setting up the required programs for video streaming

 

Install the dependencies by running the following in a terminal:

sudo apt-get install mplayer netcat

cd /opt/vc/src/hello_pi

make –C libs/ilclient

make –C libs/vgfont

cd /opt/vc/src/hello_pi/hello_video

make

cd ~

Now repeat this for the other Pi….

 

Streaming…

First set up the receiver….

Ensure the receiver is connected to your network and run

ifconfig

after you press enter, you can find your ip Address.  Note this down.

Then run the following.

mkfifo buffer

nc -p 5001 -l > buffer | /opt/vc/src/hello_pi/hello_video/hello_video.bin buffer

the Pi will now wait for the feed.

On the Camera Pi

Ensure camera is connected to the Pi

Ensure Pi is connected to the network (you can confirm this with ifconfig)

(see instructions at http://www.raspberrypi.org/camera for how to connect the camera)

 

 

In the following command, replace the ip address with the one you just noted down.

raspivid -t 0 -fps 15 -o - | nc 192.168.1.85 5001

if all goes well you should be streaming 1080P video at 15fps with less than 0.5seconds of delay..

now add your wireless bridge between the two, and away you go J

This information has come from the Raspberry Pi foundation website, and other sources, tested and proven by myself..

E-mail me when people leave their comments –

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

Join diydrones

Comments

  • The H.264 / hd fpv has been discussed previsously here as well http://diydrones.com/profiles/blog/show?id=705844%3ABlogPost%3A1246466

  • Good point, Justin. Maybe some frame tweaking can make this better.

    http://pastie.org/pastes/6638573

  • It is a function of how H.264 works, nothing to do with the raspi.  If the sotware is set up to have a constant frame rate (as opposed to constant bit rate) you should be able to see a change in your data rate on your computer when things start to move in the image as you stream the data.

    If you research the basics of video compression/h.264 you can get more details, I could not quickly find a document that explains it simply.

  • Hi @Justin,

    I did not know that. Can you tell me if you found the RPi camera datasheet and/ or tell me the source of that information (about static image/ compression)?

    Thanks

  • Yes, the 920 has H.264. I still use the hw encoder in the Rpi to encode to the right resolution and datarate. I got 300ms latency, more or less.

  • Moderator

    @Philip,

    sure that was my question ... but i see that 920 stream directly in h.264 by gstreamer so you don't have latency to compress the frame ... the raspberry pi is only a router of packet ... and front end interface :)

    If you use pi cam instead the RPI use RPI hardware encoder .. the result is the same about latency but the approach is totally different :) I doing a lot of test with neuron about this kind of approach neuron don't have inside an h.264 encoder i used archlinux as os in my test ... RPI use Debian instead ... right ? 

    Best

    Roberto 

  • To those that are doing bench testing, make sure to point the camera at something that causes most of the image to be constantly changing.  The compression works by only sending areas of the image that have changed, so a totally static image becomes very fast to transmit, whereas the whole image is much slower.  There is another discussion about this very fact somewhere here on diydrones.  I saw point it at something constantly moving because when you fly fpv essentially your whole image will always be changing as you fly around.

  • Developer
    The trick is finding a method of transporting the Data without much overhead...
  • Developer
    The advantage of the picamera is speed. It is directly connected to the GPU via the CSI bus, which means that the compression to H.264 is almost immediate, and practically NO load on the CPU. Whereas the Ethernet connection is USB based on the Pi, so if you use a USB cam, it is not as efficient, as the USB becomes a data choke point, and you don't get thefull advantage of the GPU. So in theory we should get far better speed and quality with the Pi Camera than a USB camera.
  • Pi in the Sky

This reply was deleted.