Difference between revisions of "ICub server laptop installation instructions"

From Wiki for iCub and Friends
Jump to: navigation, search
(Other configurations)
Line 69: Line 69:
  
 
== Other configurations ==
 
== Other configurations ==
 
+
=== IP forwarding and NAT ===
* '''Enable NAT''' and port forwarding so that the pc104 (and other machines on the network) have internet access (using wlan0 as external network interface)  
+
Enable NAT and port forwarding so that the pc104 (and other machines on the network) have internet access (using wlan0 as external network interface)  
 
Enable IP forwarding : edit the file /etc/sysctl.conf by modifying the below line as follows  
 
Enable IP forwarding : edit the file /etc/sysctl.conf by modifying the below line as follows  
 
  net.ipv4.ip_forward = 1
 
  net.ipv4.ip_forward = 1
Line 78: Line 78:
 
  iptables --append FORWARD --in-interface eth0 -j ACCEPT
 
  iptables --append FORWARD --in-interface eth0 -j ACCEPT
  
* '''Fix IP and Gateway'''
+
=== Fix IP and Gateway ===
 
Use the following configuration for the network
 
Use the following configuration for the network
 
  # The primary network interface
 
  # The primary network interface
Line 93: Line 93:
 
   dns-search icub.local
 
   dns-search icub.local
  
* '''Clock synchronization''':
+
=== Clock synchronization ===
 
Download the ntp package
 
Download the ntp package
 
   sudo apt-get install ntp
 
   sudo apt-get install ntp

Revision as of 14:55, 22 October 2014

These instructions only apply to YARP > 2.3.23 and iCub > 1.1.13 software versions

See ICub laptop installation instructions for old releases for older instructions

This page contains guidelines for installation of the iCub server so that it matches the requirements of the Linux on the pc104 (open call configuration).

We assume you have installed a working Debian or Ubuntu on the laptop. You can freely decide to install 32 bit or 64 bit, the code compiles on both architectures. Be aware that if you plan to share the repository with other machines, all machines need to have the same architecture (32 versus 64 bits, same versions of the libraries). A possibility would be to share the same code directory and different builds.

Prerequisite : basic system setup for a iCub machine

Please follow the instructions on page Generic iCub machine installation instructions, in order to prepare a generic machine for the iCub network. Then, follow the below steps to customize it as the iCub Laptop

NFS Server

The laptop hosts two directories and export them using nfs. Both of the are mounted by the other machines on the network, by the PC104 and by the laptop iteself :

  • /exports/code - this contains the robot software sources such as YARP, iCub Software.
  • /local/yarp - this contains the YARP configuration files, shared by all the machine in the network

For this to work you need:

  • install nfs server on the laptop:
 sudo apt-get install nfs-kernel-server nfs-common portmap
  • creates the directories that will be exported:
 mkdir -p /exports/code
 mkdir -p /exports/local_yarp

Set appropriate permissions to the icub user:

 sudo chown icub:icub -R /exports/code
 sudo chown icub:icub -R /exports/local_yarp
  • Now configure the nfs-kernel-server:

Add these lines to /etc/exports:

 /exports/code 10.0.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)
 /exports/code-pc104 10.0.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)

You might need to restart the nfs server.

 /etc/init.d/nfs-kernel-server restart 

Or just reboot the machine.

Configuration of the icub user

  • Install the ssh keys for password-less login, on the laptop:

Log in as icub and create an ssh key. Leave all choises to default just by pressing return button

 ssh-keygen -t rsa

give this key file to pc104

 ssh-copy-id -i /home/icub/.ssh/id_rsa.pub icub@pc104
  • Configure bashrc. Add these lines in /home/icub/.bashrc. Important: these instructions go before the line that states "[ -z "$PS1" ] && return":
 export ICUB_ROOT=/usr/local/src/robot/iCub
 export ICUB_DIR=$ICUB_ROOT/main/build
 export YARP_ROOT=/usr/local/src/robot/yarp
 export YARP_DIR=$YARP_ROOT/build
 export YARP_ROBOT_NAME=NAME_OF_YOUR_ROBOT (e.g. iCubAberystwyth01)
 export YARP_DATA_DIRS=$YARP_DIR/share/yarp:$ICUB_DIR/share/iCub
 export PATH=$PATH:$ICUB_DIR/bin:$YARP_DIR/bin
  • Configure your system to source bashrc in non-interactive sessions. There is no clear consensus on how to do this. A possibility is to add them to /etc/environment or /home/icub/.profile (see also the page Debugging_problems_with_yarprun)

Other configurations

IP forwarding and NAT

Enable NAT and port forwarding so that the pc104 (and other machines on the network) have internet access (using wlan0 as external network interface) Enable IP forwarding : edit the file /etc/sysctl.conf by modifying the below line as follows

net.ipv4.ip_forward = 1

Setup Network Address Translation : add the following file /etc/network/if-up.d/natting as follows

#!/bin/sh -e
iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Fix IP and Gateway

Use the following configuration for the network

# The primary network interface
 auto eth0
 allow-hotplug eth0
 iface eth0 inet static
  address 10.0.0.16
  netmask 255.255.255.0
  network 10.0.0.0
  broadcast 10.0.0.255
  gateway 10.0.0.1
  dns-nameservers 10.0.0.1 8.8.8.8
  dns-domain icub.local
  dns-search icub.local

Clock synchronization

Download the ntp package

 sudo apt-get install ntp

Your Laptop has to be the clock of the connection with the pc104 in case of no internet access so replace those lines from the file /etc/ntp.conf

 server 0.ubuntu.pool.ntp.org
 server 1.ubuntu.pool.ntp.org
 server 2.ubuntu.pool.ntp.org
 server 3.ubuntu.pool.ntp.org

or comment them by adding a # in front each lines and add those lines instead

 # the folllowing lines make the server a master server
 server          127.127.1.0 # local clock
 fudge           127.127.1.0 stratum 10
 broadcastdelay  0.008

The internal clock of the pc104 resets every time the pc104 is restarted. It is important you configure your local network so that the pc104 has the correct time. In general it is a good idea if all the machines on the iCub network have synchronized clock. This page explains how to do this: Clock synchronization.

  • If your network does not have a dns it is a good idea to add the pc104 to /etc/hosts by adding the line:
 10.0.0.104    pc104

(note that in the past the pc104 ip address was 10.0.0.2. This it has been recently changed)

Installation of the pc104

You have to use one of the Linux images we provide. This page contains some information about the Linux on the pc104, and important instructions for installing the startup scripts: The_Linux_on_the_pc104.

Code compilation

Now you can install YARP and the iCub software both on the laptop and on the pc104:

Software installation