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

  • Developer
    Oh, and for time comparisons I am getting

    1080p
    H.264
    15fps
    Less than 0.4s lag via 900Mhz
    Pi camera in
    To
    Pi HDMI out
    Via Wifi 900MHz

    Please all grab some Pi's and test some configurations out.
    If anyone can figure it out, using a HD cam on a beaglebone black would also be of great interest at the transmitting end.
  • Developer
    I was thinking that there should be a way of bringing the MavLink in through the Pi's UART then running a small program to make it available on the tcp. No extra hardware....
  • I am thinking along the same lines as Christiaan. I have a couple of 900 loco's that are just sitting around.  I will try to determine how heavy it will be if I strip the chassis and set it up to use some of IBcrazy's 900 mhz circular polarized (has an external rp-sma).  Bit big for a quad but might work well on a plane.

  • I have bought my Raspberry Pi with the camera (rev 1.3) and I have successfully streamed via UDP and RTSP (very slow) and what I wanted to say is, I wish there was more blogs like this, thank you Phillip. Now it is just to find an effective WiFi solution that is light enough (baby steps). Does anyone know of a tutorial on how to connect the APM's telemetry (not USB) to the Raspberry Pi so I can have link over TCP?

  • Developer

    @Tommy: Most live sources will timestamp by default, and elements will keep the timestamp unless sync=off. Just use gst-inspect on your elements to see what parameters are available. And in my experience using VLC as the receiver is not ideal for low latency, and has problems when trying to receive without using buffers. gstreamer->gstreamer and latency=0 parameter for no buffering, results in less then 100ms latency on a local network (depending on the camera and capture card latency off course).

  • @John Arne: Do you have any idea of how to timestamp frames? :) I use Gstreamer 1.0 to send and VLC for Windows to recieve.

  • Developer

    Some generic hints for low latency streaming under difficult conditions with signal loss aka FPV.

    1. Use UDP, the stream will get data loss regardless and UDP is much more efficient then TCP

    2. Timestamp frames so that you can use latency and drop-on-latency parameters to make the system drop late frames instead of trying to catch up all the time when there is not enough bandwidth because of degraded signal strength.

  • I also use RTP/UDP at my Pi. And i use H.264 hardware compression.

  • @Justin. You will never regret buying the 2 Raspi's, even if this project doesn't turn out to work well enough for FPV (I am confident it will work though).

    Here is a list of 20 other projects you can use your Pi with: http://gearburn.com/2013/10/20-cool-ideas-for-your-raspberry-pi/

    (sorry for being a little off-topic)

  • Developer
    @bebe, will give that a try and report back soon :)
This reply was deleted.