Generic iCub environment machines
This page contains instructions on how to prepare a machine to work in the iCub Subnet environment. This basic setup is useful as a starting point for preparing any machine in the iCub ecosystem.
Operating System
You can choose both a Debian or Ubuntu Linux, the currently suggested OS is Ubuntu 22.04 (Jammy Jellyfish).
User account
Users and Passwords
The default user account is
Username : icub
Password : icub
If you want to change the default password simply execute (this works only if you are using persistence)
passwd icub
root login
As in any Ubuntu installation, the root user has no password, this means that the direct login (i.e. ssh root@icub-head) is disabled, but you can always do
sudo su -
Add the icub user to the sudoers group, as follows
sudo usermod -aG sudo icub
Required and useful Packages
Please install the following packages (names are correct for Ubuntu 20.04, please check the corresponding package in your distribution):
nfs-common python-tk libopencv-dev ntpdate ssh cmake-curses-gui
Also install (optional, but very useful) the following packages:
vim iperf
Debian Software repository
for Debian systems
this step is required only for a Debian machine.
Enable the non-free and contrib sources, by editing the file /etc/apt/sources.list
Network configuration
You have two options:
- Static IP address (this option is mandatory if there is no DHCP in your subnet - like in the case of the iCub Console Server - or if your machine is the DHCP server - this is the case of the iCub Dedicated Server )
- Dynamic DHCP IP address
Configuration methods
Usually, if you have a Desktop installed on your machine it's better to use the default desktop network tool (e.g., in Ubuntu 22.04 the tool is Network Manager) or its CLI nmtui
, which is very powerful and easy to use even when connected via ssh
.
Otherwise, you can configure the network interfaces using the command line configuration files (eg. in Ubuntu 22.04 you have to deal with NETPLAN )
the HOSTS file
Please check that the file /etc/hosts
looks as follows:
127.0.0.1 localhost
127.0.1.1 MACHINE_HOSTNAME.icub.local MACHINE_HOSTNAME
where MACHINE_HOSTNAME is the hostname of your machine, which should match the file /etc/hostname
NTP configuration
in case of iCub server
Skip this step in case of iCub Console Server or iCub Dedicated Server
You should configure this machine as an NTP client and then configure the NTP service to point to icub-srv
as an NTP server.
You can use several different packages to install an NTP client, but we recommend using systemd-timesyncd
and removing the package ntp
, if present.
To configure timesyncd
the only thing needed is to edit the file /etc/systemd/timesyncd.conf
by adding the line NTP=10.0.0.1
or your current NTP server IP address.
Not mandatory but recommended, add also in the same file the line FallbackNTP=ntp.ubuntu.com
this will be our backup NTP server.
Finally, restart timesyncd
service
sudo systemctl restart systemd-timesyncd
iCub user environment variables
in case of iCub dedicated server
Skip this step in case of iCub Dedicated Server
see User Environment chapter
Customize the system
What now you need to do is to customize the installation with your hardware and environment (see User Environment chapter)
Special computers
In the case of special machines (such as the CUDA workstation or icub laptop) you must follow further steps in order to complete the installation: