- Tons of hard drive space
- The logger can take 100GB/hour easily, depending on the number of variables and video streams.
- 4 GB RAM (8 GB when more than one video stream is captured)
- 2.5GHz or faster Intel i7 or Xeon E3, E5 or E7
- 1 + n cores, where n is the number of video streams
- (optional) BlackMagic Decklink Mini Recorder capture cards
- https://www.blackmagicdesign.com/products/decklink
- The other Decklink capture cards might work, but are not tested yet.
- Disable secure boot (Or follow instructions during the Ubuntu installation to enable third party drivers)
- Install Ubuntu 20.04 64 bit (Server is recommended, no need for a GUI)
- Make sure to install OpenSSH server
- Install IHMC Java Decklink dependencies and Java 8.
sudo apt-get install libavformat58 libavcodec58 libswscale5 libboost-thread1.67.1 openjdk-8-jre
- (If logging video streams with capture card) Install BlackMagic software
- Get "Desktop Video 12.1" for Linux from https://www.blackmagicdesign.com/support/family/capture-and-playback.
- You do not need the SDK, just the plain Desktop Video product. The registration has a "Download only" link in the bottom left to bypass.
- Untar Desktop video:
tar xzvf Blackmagic_Desktop_Video_Linux_12.1.tar.gz - Install debian packages:
sudo dpkg -i Blackmagic_Desktop_Video_Linux_12.1/deb/x86_64/desktopvideo_12.1a9_amd64.deb - Possible run
sudo apt --fix-broken installto install missing dependencies.
- Get "Desktop Video 12.1" for Linux from https://www.blackmagicdesign.com/support/family/capture-and-playback.
- (If logging video streams with capture card) Update Blackmagic firmware for each Decklink card (first card is 0, second 1, etc).
BlackmagicFirmwareUpdater update [Decklink card]
- Reboot the computer
- clone ihmc-robot-data-logger
cd ihmc-robot-data-loggergradle deploy
This will show a deploy GUI which allows installation and setup of a logger on a remote computer.
Note: The logger gets unstable after a few days. To avoid issues, there is a hack in the deploy application to restart the logger at midnight. This makes sure there is a working logger every morning.
If you would like to log to a network volume, ~/robotLogs can be a symbolic link to a mount point. The IHMC convention is to create a RobotLogs/incoming directory on the network storage volume, auto-mount this volume using the OS's fstab, and then symlinking the "incoming" directory to be the ~/robotLogs directory
If you would like to log somewhere other than ~/robotLogs, you can change the directory using the "-d" command line flag when you launch the logger
When installed using the gradle deploy an systemd script is automatically setup to start the logger on boot. Optionally, a script to restart the logger at midnight is added to cron.
The easiest way is to use the configuration application from gradle deploy. If you want to manually do the setup, follow these steps.
Create a new file ~/.ihmc/CameraSettings.yaml. A basic setup looks like this
---
cameras:
- type: CAPTURE_CARD
camera_id: 1
name: User-Friendly-Name
identifier: 1
- type: NETWORK_STREAM
camera_id: 2
name: Another-User-Friendly-Name
identifier: /stream_topic
This adds two cameras to the logger, a capture card and a stream. The following fields are needed for each camera:
- type: CAPTURE_CARD for Decklink capture cards or NETWORK_STREAM for streaming over DDS/RTPS
- camera_id: An unique id from 0 to 127 to refer to the camera in the static hosts section
- name: A user friendly name used to name the file
- identifier: For CAPTURE_CARD, this is the numeric id of the decklink device, for NETWORK_STREAM this is the DDS topic name
If the logger cannot auto-discover a host, you can add a static host to ~/.ihmc/ControllerHosts.yaml. Adding static hosts allows adding a camera to the robot logs.
The file is formatted in YAML format. You can easily add more host/port stanzas. For example, to add 10.0.0.10:8008 and 10.0.0.11:8008 as static hosts, put the following in ~/.ihmc/ControllerHosts.yaml:
---
disableAutoDiscovery: false
hosts:
- hostname: "10.0.0.10"
port: 8008
- hostname: "10.0.0.11"
port: 8008
cameras: [1, 2]
This adds the host 10.0.0.10 without cameras and the host 10.0.0.11 with two cameras with camera_id 1 and 2.
Alternatively, you can start SCSVisualizer from ihmc-robot-data-visualizer and add hosts using the GUI. After you close the visualizer, the hosts you added will be saved ~/.ihmc/ControllerHosts.yaml. You can copy that file to the logger if it is on a different computer.