-
Notifications
You must be signed in to change notification settings - Fork 112
requirements
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.
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.
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), Gigabit Ethernet (using flycap) and FLIR USB3 (using Spinnaker SDK) cameras.
Till 2018, AVT Stingray F046C firewire cameras have been used at official RoboCup tournaments. Since 2019, new USB 3 FLIR Blackfly S (BFS-U3-51S5C-C) cameras are used.
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
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
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 |
Camera: FLIR Blackfly S (BFS-U3-51S5C-C)
Lense: Kowa KOW-LM5JCM
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:
- Install chrony:
sudo apt install chrony
- 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 (IP/host of the NTP-server)
server ssl-vision-a
-
Restart chrony:
sudo systemctl restart chrony
-
Verify that client is connected with the server:
chronyc sources
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ssl-vision-a 1 10 377 984 -395us[ -734us] +/- 1761us
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
NOTE: Please refer to README.md#Supported-Cameras to use USB cameras.
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