ICubBrain
iCubBrain is a cluster of 2 machines used by VisLab to run stable demos (the other cluster, Cortex, is used for development).
Old information can be consulted at iCubBrain server configuration/Archive.
Specifications
We purchased iCubBrain from Tetragon in June 2009. The box includes a SC808T-980 1U chassis (1U Twin size) with two twin X7DWT serverboards. Each of the two boards hosts an Intel Xeon 8-core processor (8 x E5405 @ 2.00 GHz). Each machine is an independent computer, having two hard disk drive drawers and its own power and reset buttons.
Memory: 4GB for each machine (sudo dmidecode --type 17
to see RAM speed and type).
For full system specifications, go here (PDF) or on the entry on tsunami.pt
Current setup
machine | location | operating system | notes |
---|---|---|---|
icubbrain1 | left half of chassis | Ubuntu 10.04 LTS 64bit | administrator account: vislab; demo account: icub |
icubbrain2 | right half of chassis | Ubuntu 10.04 LTS 64bit | administrator account: vislab; demo account: icub |
Operating system installation
Next, we will explain how we configured the left part of the server, called icubbrain1. The settings for icubbrain2 will be just about the same (unless otherwise noted, see above table), with the last octet of the IP address being 42 instead of 41.
Boot
We booted the Ubuntu Server CD from an external USB CD drive. Press the 'Del' key if you need to access the BIOS boot order.
We then had to manually confirm the usage of a 'cdrom' module within the installation (following all the default selections).
Network interface
icubbrain1 has two Gbit interfaces. First we plugged an Ethernet cable into the first one (which turns on the "1" led in the chassis front). Then, when Ubuntu asked us to choose between eth0 and eth1, we picked up eth0.
Partitions
We chose the 'Guided - use entire disk' option, which yielded the following:
size | mountpoint | filesystem |
---|---|---|
133GB | / | ext3 |
5GB | swap |
Operations after first boot
- choose Main server (rather than Portugal server, which is not always reliable) as the software repository. We do this by removing all the "pt." strings from /etc/apt/sources.list with the following command:
sudo sed -i 's/pt.//g' sources.list
sudo apt-get update
;sudo apt-get upgrade
- add icub user if not done already:
sudo adduser icub
followed bysudo usermod -aG admin icub
to give it sudo privileges
Other operations performed
Network configuration
- manually configured the internet connection (
/etc/network/interfaces
):
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.10.1.41 netmask 255.255.255.0 network 10.10.1.0 broadcast 10.10.1.255 gateway 10.10.1.254
- optionally, we can customize the
/etc/hosts
file like we did on Chico3; this would allow us to quickly access other machines, as in:ping cortex1
. Alternatively, we can do nothing and just useping cortex1.visnet
(i.e., attach the.visnet
part after a machine name, see VisLab network for details).
Additional packages and environment variables
- Install some required packages:
sudo apt-get install gcc g++ make subversion ssh libace-dev libgsl0-dev libncurses5-dev gfortran
- YARP and iCub require CMake version >= 2.6:
cmake cmake-curses-gui
- Create a file called ~/.bash_env (used by both interactive and non-interactive sessions, such as commands launched via
yarprun
from another machine) like this one:
export YARP_ROOT=/home/icub/yarp2 export YARP_DIR=$YARP_ROOT/build export ICUB_ROOT=/home/icub/iCub export ICUB_DIR=$ICUB_ROOT/main/build export PATH=$PATH:$YARP_DIR/bin:$ICUB_DIR/bin export ICUB_ROBOTNAME=iCubLisboa01 export IPOPT_DIR=/home/icub/Ipopt-3.10.0 source $YARP_ROOT/scripts/yarp_completion
- Then, before the following line of /etc/bash.bashrc
[ -z "$PS1" ] && return
add this:
# per-user environment variables (non-interactive and interactive mode) source $HOME/.bash_env
Subversion
We have set the following parameter in /etc/subversion/config
:
store-passwords = no
This implies that SVN will ask you for your password every time you do a commit. (Don't worry about changing your personal ~/.subversion/config
file: the parameter is not actually set there, so the global /etc
setting is used.)
Additional software
OpenCV
sudo apt-get install libcv-dev libhighgui-dev libcvaux-dev
YARP and iCub
Follow the instructions on the RobotCub software article. For compilation, do not use sudo make install
but simply make
(we have configured the PATH variable to find the latest compiled binaries, and we do not want two copies of the same thing on the system).
- Custom yarp2 configuration
CMAKE_BUILD_TYPE Release CREATE_LIB_MATH
- Custom iCub configuration: first compile IPOPT according to the official RobotCub wiki guide (http://eris.liralab.it/wiki/Installing_IPOPT), then proceed to configuring the actual iCub repository:
CMAKE_BUILD_TYPE Release ENABLE_icubmod_cartesiancontrollerclient ON ENABLE_icubmod_gazecontrollerclient ON
- iCub compilation
make make install_applications
- Final configuration
yarp namespace /icub