Skip to content
Nicolai Ommer edited this page Apr 23, 2018 · 7 revisions

Requirements and Installation

Operating System

SSL-Vision is a Linux application. We do not plan to support any other operating system in the future. The reference distribution is Ubuntu in the latest LTS version. The application will probably run on any other up to date Linux distribution without problems. For the reference distribution, we made sure that all software dependencies are part of the distribution and have a compatible version, thus no downloads from additional sources will be needed.

Software Requirements

The following tools and libraries are required to get and compile SSL-Vision:

  • git
  • g++
  • QT >= 4.3 with opengl and networking support
  • cmake
  • Eigen3
  • Google protocol buffers (protoc)
  • OpenGL
  • GLU
  • libdc1394 Version >= 2.0
  • libjpeg
  • libpng
  • (optional) OpenCV

To get all these packages in Ubuntu, run the InstallPackagesUbuntu.sh install script. To get all these packages in Arch, run the InstallPackagesArch.sh install script.

Hardware Requirements

SSL-Vision has been developed and tested on x86-compatible computers. Any more or less up to date machine should run the application smoothly. Since the application is multi-threaded, having multiple CPU cores is an advantage.

The system currently supports 1394B / FireWire 800 as well as 1394A / FireWire 400, Video4Linux, Matrix-Vision BlueFox2 (USB) and Gigabit Ethernet cameras (using flycap).

Firewire Camera Recommended Hardware

In theory, all FireWire cameras should work with SSL-Vision. Here is a list of all cameras we actually use for testing and thus know how they perform:

Camera Resolution Frame rate Image encoding
AVT Stingray F046C * 780x580 60Hz YUV422
AVT Marlin F046C 780x580 36Hz YUV422
AVT Guppy F036C 780x480 59Hz Raw8

* recommended model

We recommend using a PCIx dual-OHCI FireWire 800 card like the following: http://www.alliedvisiontec.com/us/products/accessories/firewire-accessories/view/pci-express-dual-ohci-4-ports-1394b.html

Matrix-Vision BlueFox Recommended Hardware

Camera: mvBlueFOX-MLC200wC (with S-Mount, M12 thread with 0.5mm pitch)
https://www.matrix-vision.com/USB2.0-single-board-camera-mvbluefox-mlc.html

Matching S-Mount Lenses:
FoV 62°: https://www.lensation.de/product/BT6020V2/
FoV 100°: https://www.lensation.de/product/BT3620C/
FoV 140°: https://www.lensation.de/product/BT2520C/

A lock ring is required to fix the lenses to a certain position.
Lock Ring: https://www.lensation.de/product/lrm12v2/

With an example setup of one camera at 2.5m height an area of 3.4x2.2m can be covered with a 100° FoV lens. The distortion of the 140° lens is quite large and should be avoided if possible.

Illumination of 1000lux is perfect. It allows shutter times of 5ms. On the above mentioned area this can be achieved with four flourescent tubes (T8, 1200mm, 36W). Cold white color tubes are recommended. Less illumination can be tolerated when shutter times are increased.

Alternatively a version with housing can be used. Note that the default mount for this camera is a C-Mount (lenses listed above are S-Mount). Please request S-Mount version from Matrix-Vision to use recommended lenses.
https://www.matrix-vision.com/USB2.0-industrial-camera-mvbluefox.html

GigE Camera Recommended Hardware

In theory, all GigE cameras should work with SSL-Vision. Here is a list of all cameras we actually use for testing and thus know how they perform:

Camera Resolution Frame rate Image encoding
Point Grey (FLIR) Grasshopper 3 (GSC-PGE-23S6C) 960x600 60Hz YUV422

Synchronizing clocks between multiple ssl-vision computers

If ssl-vision is running on multiple computers (which is required for the quad-sized field in Division A), the time must be synchronized between all instances.

For time synchronization, the recommended way is to setup an NTP server on one instance and configure this server on all other instances. On Ubuntu 16.04, this can be achieved with Chrony:

  1. Install chrony: sudo apt install chrony
  2. Edit /etc/chrony/chrony.conf:

On the NTP-server:

# allow serving time even if unsynchronized
local stratum 10
# allow connections
allow 0/0

On the NTP-clients:

# set server (set IP to the NTP-server IP)
server 192.168.0.42
  1. Restart chrony: sudo systemctl restart chrony

Getting and Compiling SSL-Vision

You can check out the most recent version from the repository using git:

git clone https://github.com/RoboCup-SSL/ssl-vision.git

After having checked out the code, the code can be built by executing:

make

Starting the Applications

Depending on the configuration of your OS, you might need to ensure that you have full access to the FireWire devices /dev/fw*. This might require logging in as root.

To run the application as non-root user in Ubuntu-based distributions, you should add your non-root user to the "disk" and "video" groups, and then logout/login to reflect these changes.

After a successful compilation process, the ./bin directory will contain three binaries:

  • vision - The SSL-Vision application
  • client - A simple sample client
  • graphicalClient - A graphical sample client

You have to run those executables from the project root folder, e.g. bin/vision

Clone this wiki locally