In this experiment, I only consider the image capture and display stages, not the wireless transmission stage involved in an FPV system. Why not? Because I fried my 5.4Ghz transmitter so I'm waiting for a new one!!!
OK, so the experiment is pretty straight forward:
- A display (TV or monitor) shows "in real time" what a camera sees
- I drop a ping-pong ball in front of the camera
- At the same time, I film the actual physical event AND what the display shows with another camera
- Then by watching the recorded video, I can spot the exact time when the ball bounces against the floor in real-life. Then I can do the same thing a few milliseconds later when the display shows the event. The difference in these two times gives me the latency of the entire image-capture-and-display system
The camera I use for filming the whole scene is a Go Pro Hero 3 set to its minimum resolution: WVGA 848x480 and maximum frame rate: 240 frames per second. This rate is huge, each frame of the video represents only about 4 milliseconds! This sounds great in theory in terms of precision but in practice things are not that clear when it comes to measuring the exact time of the "second" bounce on the TV/monitor. Indeed, due to the nature of image sensors and LCD screens, images of a rapid event look blurry. This can be seen on the following sample footage (resampled at 25 fps so it appears slow-mowy):
Here are the parts I've combined in the tests:
And here are the combinations I've tried and the corresponding results. Once again, these are pretty "crude" latencies, but they allow comparison of various pieces of equipment.
Setup | Average latency in ms |
---|---|
Sony CCD + LCD TV | 37 |
GoPro Hero 3 + LCD TV | 54 |
Sony CCD + EasyCap + PC + Monitor | 120 |
GoPro Hero 3 + EasyCap + PC + Monitor | 143 |
Sony CCD + EasyCap + PC + Oculus Rift | 123 |
GoPro Hero 3 + EasyCap + PC + Oculus Rift | 131 |
Sony PS3 Eye (640x480 75Hz) + PC + Monitor | 160 |
Sony PS3 Eye (320x240 187Hz) + PC + Monitor | 58 |
Pi Camera (default HD) + Raspberry Pi + LCD TV | 98 |
Pi Camera (160x120) + Raspberry Pi + LCD TV | 90 |
In conclusion:
- You can't beat a traditional "analog" RC FPV system as it's latency is around 40 ms. Note again that we're not counting the wireless transmission here, just the image capture and display.
- Adding a PC between the camera and the display (USB capture + rendering) adds 80 to 100 ms... In total we get about 150 ms. That's 3 to 4 times the latency of an RC system!
- The webcams I've tried (i.e cameras that provide the computer with digital images directly) don't do very well either. Decreasing the resolution can help though. That's the case for the PS3 Eye at 320x240.