|
|
(89 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| We installed Ubuntu 8.04 LTS Desktop ('Hardy Heron') '''64 bit''' on the black 17" Tsunami laptop, dubbed '''chico3'''. For systems specifications click [http://www.tsunami.pt/catalogue/index.php?action=detailfo&rec=374&backLink=%2Fcatalogue%2Findex.php%3Faction%3Dsearchfo%26cat_id%3D94 here].
| | The black 17" Tsunami laptop, dubbed '''chico3''', was used as an interface to control to the iCub robot and to launch demos during 2009-2014. '''Go to the [[iCub laptop]] page for information on the new Toshiba laptop.''' |
|
| |
|
| == Operating system installation ==
| | Older information can be consulted at [[Chico3/Archive]]. |
|
| |
|
| We chose to go for Ubuntu 8.04 because it is proven to be stable and working well with the latest versions of ACE, YARP and OpenCV (as of May 2009).
| | = Specifications = |
|
| |
|
| === Partitions ===
| | * processor: Intel Core 2 Duo (2 x [http://ark.intel.com/products/35568/Intel-Core2-Duo-Processor-P8600-(3M-Cache-2_40-GHz-1066-MHz-FSB) P8600] @ 2.40 GHz) |
| | | * memory: 3GB |
| We chose the 'Guided - use entire disk' option, which yielded the following:
| | * graphics card: Nvidia GeForce 9600M GT with 512MB of memory |
| | | * network card: RTL8168c/8111c, gigabit (1000baseT-FD) |
| {| border="1"
| |
| |+ Hard disk partitioning
| |
| ! size !! mountpoint !! filesystem
| |
| |-
| |
| |287GB || / || ext3
| |
| |-
| |
| |8GB || || swap
| |
| |-
| |
| |}
| |
| | |
| === Ubuntu installation parameters ===
| |
| | |
| * machine name: chico3 | |
| * user name: icub
| |
| | |
| === Operations after first boot ===
| |
| | |
| Operations performed after the standard installation:
| |
| | |
| * choose Main server (rather than Portugal server, which is incomplete) as the software repository. You can do this in System -> Administration -> Synaptic Package Manager -> Settings -> Repositories -> Download from: Main server
| |
| * system update
| |
| * enabled nvidia proprietary drivers (necessary to obtain a decent screen resolution)
| |
| * removed the package network-manager-gnome
| |
| | |
| == Other operations performed ==
| |
| | |
| === Network ===
| |
| | |
| * manually configured the internet connection (/etc/network/interfaces):
| |
| auto lo
| |
| iface lo inet loopback
| |
|
| |
| auto eth0
| |
| iface eth0 inet static
| |
| address 10.10.1.53 ''<-- this used to be venus' IP; not anymore''
| |
| netmask 255.255.255.0
| |
| network 10.10.1.0
| |
| broadcast 10.10.1.255
| |
| gateway 10.10.1.254
| |
| | |
| * added the following lines to /etc/hosts, to enable running commands like: ping cortex1.
| |
| 10.10.1.50 pc104
| |
| 10.10.1.51 icubsrv
| |
| 10.10.1.52 chico2
| |
| 10.10.1.53 chico3
| |
| 10.10.1.1 cortex1
| |
| 10.10.1.2 cortex2
| |
| 10.10.1.3 cortex3
| |
| 10.10.1.4 cortex4
| |
| 10.10.1.5 cortex5
| |
| 10.10.1.41 icubbrain1
| |
| 10.10.1.42 icubbrain2
| |
| | |
| * TODO: disable wifi (wlan0 and wmaster000 interfaces), for security and power consumption reasons
| |
| | |
| === Additional packages and environment variables ===
| |
| | |
| * Install some required packages:
| |
| sudo apt-get install gcc g++ make cmake cvs subversion ssh libace-dev libgsl0-dev ''<-- pretty much the absolute minimum we need''
| |
| sudo apt-get install libncurses5-dev libgtk2.0-dev libgtkmm-2.4-dev libglademm-2.4-dev python-tk libqt3-mt-dev ''<-- for graphical stuff''
| |
| | |
| * Create a file called ~/.bash_env (used by non-interactive sessions, namely commands launched via yarprun from another machine) containing these lines:
| |
| export ICUB_DIR=/home/icub/iCub
| |
| export ICUB_ROOT=$ICUB_DIR
| |
| export YARP_DIR=/home/icub/YARP/yarp2
| |
| export YARP_ROOT=$YARP_DIR
| |
| export PATH=$PATH:$ICUB_DIR/bin
| |
| export PATH=$PATH:$YARP_DIR/bin
| |
| export ICUB_ROBOTNAME=iCubLisboa01
| |
| | |
| * Copy all that stuff at the bottom of ~/.bashrc, too (this step could be redundant, provided that we always source .bash_env - TO CHECK):
| |
| cat ~/.bash_env >> ~/.bashrc
| |
| | |
| * 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
| |
| | |
| * In order to have multi-screen external monitor support for beamers,
| |
| apt-get install nvidia-settings
| |
| sudo nvidia-settings
| |
| In the 'X Server Display Configuration' menu, select the 'Separate X screen' configuration. Then, edit <code>/etc/X11/xorg.conf</code> (make a backup first) by doing the following under Section 'ServerLayout': switch the <code>Screen 0</code> with the <code>Screen 1</code> strings.
| |
| Restart the xserver and enter nvidia-settings again, you will get some errors in the terminal because of the manual change, furthermore you will now see the correct screen numbering. To resolve the error in the configuration press "save X configuration file". Restart xserver, everything should be ok.
| |
| | |
| == Additional RobotCub software ==
| |
| | |
| === OpenCV ===
| |
| | |
| Ubuntu prepackaged version 1.0.0-4:
| |
| sudo apt-get install libcv1 libcvaux1 libcvaux-dev libcv-dev libhighgui1 libhighgui-dev opencv-doc python-opencv
| |
| | |
| === iCub: downloading the repository ===
| |
| | |
| In /home/icub, do:
| |
| cvs -d vislab@cvs.robotcub.org:/cvsroot/robotcub co iCub
| |
| | |
| For now, don't compile iCub but start installing YARP instead. ''(This is the most general approach which always works. However, since this machine does not have special iCub hardware to be found by YARP, like in the case of the PC104, then in this case we could've probably compiled straight ahead.)''
| |
| | |
| === YARP ===
| |
| | |
| * Type this from the homedir (/home/icub):
| |
| mkdir ~/YARP
| |
| cd ~/YARP
| |
| cvs -d:pserver:anonymous@yarp0.cvs.sourceforge.net:/cvsroot/yarp0 login
| |
| cvs -z3 -d:pserver:anonymous@yarp0.cvs.sourceforge.net:/cvsroot/yarp0 co -P yarp2
| |
| cd yarp2
| |
| | |
| * (SKIP THIS POINT, AS THIS MACHINE IS NOT ATTACHED TO dragonfly esdMotionControl headcalibrator xsensmtx) Enter yarp2/conf and do:
| |
| cp ExternalModules.cmake.template ExternalModules.cmake
| |
| then write the following lines in ExternalModules.cmake:
| |
| SET(EXTERNAL_MODULES icub)
| |
| SET(icub_DIR "/home/icub/iCub/src/modules")
| |
| | |
| * Proceed with the configuration and compilation: | |
| ccmake .
| |
| Click 'c' when CMake starts, then enable:
| |
| COMPILE_NEW_YARPVIEW ''<-- right?''
| |
| CREATE_DEVICE_LIBRARY_MODULES
| |
| CREATE_GUIS
| |
| CREATE_LIB_MATH
| |
| Click 'c' again, then choose
| |
| ENABLE_yarpmod_opencv_grabber
| |
| Click 'c' a couple of times more, until nothing happens when you do it. Now hit 'g': generate and quit.
| |
| make
| |
| make test
| |
| sudo make install
| |
| | |
| === iCub: compiling and installing ===
| |
| | |
| * Off we go: | |
| cd /home/icub/iCub
| |
| ccmake .
| |
| c ''<-- whenever necessary''
| |
| | |
| * Enable these modules:
| |
| BUILD_IN_ROOT
| |
| CREATE_GUIS_GTK
| |
| CREATE_GUIS_GTKMM
| |
| CREATE_GUIS_QT
| |
| | |
| * And finally:
| |
| g
| |
| make
| |
| sudo make install
| |
| | |
| == More VisLab-specific configuration ==
| |
| | |
| === Passwordless connection to other machines ===
| |
| | |
| * set up passwordless log-in to the Cortex computers:
| |
| #generate the public and private keys on this computer. enter empty strings when prompted for various answers.
| |
| ssh-keygen
| |
| #the cortex computers (ip addresses 10.10.1.1 to 10.10.1.5) share the same disk, so you need to do the set up only once.
| |
| | |
| #copy the public key you just generated to cortex1, on the user account you want to use there (e.g. icub).
| |
| scp /home/icub/.ssh/id_rsa.pub icub@10.10.1.1: ''<-- be sure to write the semicolon ":" at the end''
| |
| #log in as 'icub' to cortex1
| |
| ssh 10.10.1.1
| |
| #add the public key to the authorized ones
| |
| cat id_rsa.pub >> ~/.ssh/authorized_keys
| |
| #remove the id_rsa.pub file and log out from cortex1.
| |
| rm id_rsa.pub
| |
| exit
| |
| exit
| |
| #log in again to each cortex computer, to check that the process worked and they don't prompt for a password.
| |
| | |
| * set up passwordless log-in to pc104
| |
| | |
| pc104 boots from a read-only medium, so you cannot modify permanently its authorized_keys file.
| |
| pc104, though, mounts a part of icubsrv's hard-disk and then runs some scripts from there (see the [[pc104]] page for reference).
| |
| #copy the usual public key to the icubsrv (laptop)
| |
| scp id_rsa.pub icub@10.10.1.51:
| |
| #ssh to icubsrv
| |
| ssh icub@10.10.1.51
| |
| #add the key to the authorized ones
| |
| cat id_rsa.pub >> /exports/code-pc104/pc104/hooks/keys/authorized_keys
| |
| #rm the id_rsa.pub file
| |
| rm id_rsa.pub
| |
| | |
| ==== PC104 authentication caveat ====
| |
| | |
| For pc104 it might be necessary to add a [http://www.securityfocus.com/infocus/1806 StrictHostKeyChecking=no] option argument to ssh (because there are different incompatible keys depending on the pc104 hardware setup, i.e., with or without pen):
| |
| gnome-terminal --window-with-profile=pc104 -e "ssh -o StrictHostKeyChecking=no icub@10.10.1.50 -X"
| |
| | |
| === Customization of GNOME ===
| |
| | |
| We used the same [[Chico2 desktop machine configuration#Customization_of_GNOME_panel|buttons that we put on Chico2]]. We copied the files by typing this on chico'''2''':
| |
| scp ~/Pictures/* chico3:/home/icub/Pictures
| |
| and then we manually added the buttons one by one on the top toolbar of chico3.
| |
| | |
| === Adding a new terminal button ===
| |
| | |
| Example for the button to open the gnome-terminal on cortex1:
| |
| * right click on the panel and select "add to panel" | |
| * select "custom application launcher"
| |
| * click on the icon and select the directory where your icons are, typically ~/Pictures/
| |
| * click on open, then select the picture for this particular button
| |
| * write this in the "command" field:
| |
| gnome-terminal --window-with-profile=cortex -e "ssh icub@10.10.1.1 -X"
| |
| * set the name to something like: ssh icub@cortex1
| |
| | |
| Note about gnome-terminal profiles: the profile we have specified specified (--window-with-profile='''cortex''') does not exist by default, we need to create it. These profiles are used to give terminals on different machines different colors (e.g., all terminals running in a cortex computer will be blue, terminals local to chico2 will be white, etc.). To create the "cortex" profile do this:
| |
| * open a terminal on, say, cortex1
| |
| * click on File, select "new profile" and name it "cortex", then choose the colors
| |
| * cortex windows usually are blue background with white text, while pc104 windows are yellow with black text.
| |
| | |
| === Nautilus buttons ===
| |
| | |
| For the buttons that start the file manager Nautilus on pc104 and on cortex (once again, all cortex computers share the same disk, so you need only one button for them) you should use these lines of code:
| |
| nautilus sftp://icub@10.10.1.50/home/icub/
| |
| nautilus sftp://icub@10.10.1.1/home/icub
| |
| | |
| After you are done browsing a remote machine disk with Nautilus, don't forget to unmount the volume (right-click the relevant icon on the desktop).
| |
| | |
| === Desktop background ===
| |
| | |
| Last but not least, you can change the default Ubuntu desktop background to something fancier:
| |
| [[Image:chico3_background.png|thumb|left]]
| |
| | |
| [[Category:Vislab]]
| |