wiki:Carologistics/LaptopSetupRobot
Last modified 3 years ago Last modified on 11/18/17 04:46:31

Carologistics Robotino Laptop Setup

For the Thinkpad X230 laptop that are put onto the Robotino certain setup steps are required.

Basis Setup

First the basis setup needs to be done. This can be read here

System Installation and Configuration

Frontend changes

First the touch-input needs to be configured. Fosudo chown robotino:robotino .bashrc .screenrc scripts/ .vimr this the following code needs to be added into "/etc/X11/xorg.conf.d/20-thinkpad.conf":

Section "InputClass"
    Identifier	"Trackpoint Wheel Emulation"
    MatchProduct	"TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device"
    MatchDevicePath	"/dev/input/event*"
    Option		"EmulateWheel"		"true"
    Option		"EmulateWheelButton"	"2"
    Option		"Emulate3Buttons"	"false"
    Option		"XAxisMapping"		"6 7"
    Option		"YAxisMapping"		"4 5"
EndSection

and then add the following to "/etc/X11/xorg.conf.d/50-synaptics.conf":

Section "InputClass"
        Identifier "touchpad"
        MatchProduct "SynPS/2 Synaptics TouchPad"
        Driver "synaptics"
        # fix touchpad resolution
        Option "VertResolution" "100"
        Option "HorizResolution" "65"
        # disable synaptics driver pointer acceleration
        Option "MinSpeed" "1"
        Option "MaxSpeed" "1"
        # tweak the X-server pointer acceleration
        Option "AccelerationProfile" "2"
        Option "AdaptiveDeceleration" "16"
        Option "ConstantDeceleration" "16"
        Option "VelocityScale" "32"
EndSection

System Services

Enable the SSH service by executing (as root):

sudo systemctl enable sshd.service

Setup the config-files

Copy the home-setup (.ssh, git,.bashrc,.screenrc,.gitconfig...) from a different robot

sudo rsync -avz robotino@robotino-laptop-1:/home/robotino/ /home/robotino/

Add the missing entries to the /etc/hosts (best to copy from a different robot) Here is an EXAMPLE from robotino-laptop-1

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# the robotino basis system
10.42.0.25 robotino-base

# lokale KVM zum bauen
192.168.122.128 robotino-vm-1

# refbox
172.26.108.100

# the robotino notebooks
172.26.108.91 robotino-laptop-1
172.26.108.92 robotino-laptop-2
172.26.108.93 robotino-laptop-3
172.26.108.94 robotino-laptop-4
172.26.108.95 robotino-laptop-5
172.26.108.96 robotino-laptop-6

# robotino bases
172.26.108.81 robotino-base-1
172.26.108.82 robotino-base-2
172.26.108.83 robotino-base-3
172.26.108.84 robotino-base-4
172.26.108.85 robotino-base-5
172.26.108.86 robotino-base-6

# the developer machines
172.26.108.106 nicolas-fedora
172.26.108.121 ip1-14.halifax.rwth-aachen.de
172.26.108.200 diannao_f20
172.26.108.201 diannao
172.26.108.202 bussard bussard.zlw-ima.rwth-aachen.de
172.26.108.206 johannes-laptop
172.26.108.207 wald
172.26.108.222 palomino.kbsg.rwth-aachen.de
172.26.108.240 tn-f20
172.26.108.242 tneumann
172.26.108.251 dschmidt

Add the repo for the laptop root directory to get the system-configs

sudo -s
eval "$(ssh-agent -s)"
ssh-add /home/robotino/.ssh/id_rsa
cd /
git init
git remote add origin git@git.fawkesrobotics.org:robotino-laptop-rootdir.git
git fetch
git checkout -t origin/master

Change owner of the following files

sudo chown robotino:robotino ~/.bashrc ~/.screenrc ~/scripts/ ~/.vim

Setup the programms

Now, after the configs are copied via the /-git-repo, the programms need to be installed and setup.

Firewall

You need to change from firewalld to iptables:

sudo systemctl disable firewalld
sudo systemctl stop firewalld

sudo yum install iptables-services
sudo touch /etc/sysconfig/iptables
sudo touch /etc/sysconfig/ip6tables
sudo systemctl start iptables
sudo systemctl start ip6tables
sudo systemctl enable iptables
sudo systemctl enable ip6tables

You need to open several ports for incomig connections in the firewall-config in /etc/sysconfig/iptables. First, allow Multicast DNS (mDNS). This enables automated service discovery to detect Fawkes instances on the local network. Next add the following custom ports:

  • 8088 / tcp: Webview web interface
  • 1910 / tcp: Fawkes network protocol, e.g. plugin loading, config listing, or blackboard access.
  • 2208 / tcp: Firestation network protocol, e.g. image transfer
  • 11311 / tcp: ROS communication
  • 3632 / tcp: DISTCC Server for the robotino base

This setup file is copied with the /-git-repo

Stabilize Ethernet Communication (only if used with Robotino v2)

The auto negotiation of Ethernet configuration parameters causes trouble between the laptop and the Robotino. Hence it must be disabled. To do so the file /etc/NetworkManager/dispatcher.d/01-disable-autoneg as an executable file is in the /-git-repo.

To run automatically on connecting a network cable do:

sudo systemctl enable NetworkManager-dispatcher.service
sudo systemctl start NetworkManager-dispatcher.service

Time syncronisation

For the time syncronisation between the laptop and robot-base we use chrony. To install this, do:

sudo yum install chrony
sudo systemctl enable chrony-wait.service
sudo systemctl start chrony-wait.service

The configuration file is already setup via the /-git-repo.

Network Setup

To provide network access to the robotino platform, the wired network settings of the lenovo notebook has to be configured to share its connection. For this the old GUI needs to be used, since the new version doesn't supply this feature.

nm-connection-editor

In the GUI of the "Network Settings" set:

  • em1->Edit...->IPv4 Setting->"Method" has to be set to "Shared to other computers"

Then change for auto-connect:

  • em1->Edit...->General->click "Automatically connect to this network when its availabe"

Specifying this method, (indicating that this connection will provide network access to other computers) the ethernet interface is assigned the IP= 10.42.0.1 and a DHCP and forwarding DNS server are started, and the interface is NAT-ed to the current default network connection (which is the wlan).

The internal Acces-Point of the robotino is not necessary anymore and has to be unplugged. The robotino-basis is directly connected to the lenovo-notebook.

  • Plug the cable coming from the mainboard directly into the RJ45 connector at the front of the robotino-basis).

The etc/network/interfaces of the robotino-base has to be configured as following:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
   address 10.42.0.25      # where 25 has to be replaced by the robotino-id
   netmask 255.255.255.0

From the lenovo notebook the robotino-basis can be accessed via the IP=10.42.0.25. Make sure this IP is mapped to the hostname robotino-base in /etc/hosts.

From the robotino-basis the lenovo notebook can be accessed via the IP=10.42.0.1

ROS network

ROS on a robot shoudl also talk via the LAN and not WLan, since ROS uses the "hostname" for communication, the /etc/hosts needs to be changed:
E.g. for robotino-laptop-2 the /etc/hosts needs to be changed to:

10.42.0.25    robotino-base-2

For the corresponding base (robotino-base-2) the /etc/hosts needs to be changed to:

10.42.0.1     robotino-laptop-2

Power Setup

To stop the laptop from suspending when its lid is closed, we have to modify /etc/systemd/logind.conf : Switch the value of HandleLidSwitch from suspend to ignore

HandleLidSwitch=ignore