Skip to main content

RaspberryPi for Robotics

info

The infamous, the inevitable, whatever your next project is if it does not involve Raspberry Pi you are missing out. We use Raspberry Pi as the central brain that runs the robot software and so by building INNOBOT you can learn how to use Raspberry Pi for Robotics application.

Raspberry Pi and Ubuntu Focal and Real-time (RT_PREEMPT) Kernel

Raspberry setup (odzkoušeno na RPi 4) - Ubuntu Server 20.04.05 LTS 64-bit

  1. Pomocí RPI Imager naisntalovat na SD kartu (ozkoušeno s 32GB) Ubuntu Server 20.04.05 LTS 64-bit: Raspberry Pi Generic (64-bit ARM) preinstalled server image

  2. Po zapsání Ubuntu na SD kartu editni soubor network-config a doplň WIFI-NAME a WIFI-PASSWORD

    • pro headless start (bez klávesnice a myši, jen pomocí ssh):
    version: 2
    ethernets:
    eth0:
    dhcp4: true
    optional: true
    wifis:
    wlan0:
    dhcp4: true
    optional: true
    access-points:
    "WIFI-NAME":
    password: "WIFI-PASSWORD"

  • po isntalaci UBUNTU, pokud je problém se síťovýcm připojením. Konfigurační soubor pro síťové adaptéry /etc/netplan/50-cloud-init.yaml

    network:
    ethernets:
    eth0:
    dhcp4: true
    optional: true
    version: 2
    wifis:
    wlan0:
    optional: true
    access-points:
    "WIFI-NAME":
    password: "WIFI-PASSWORD"
    dhcp4: true

  • v případě změny konfiguračního souboru aplikovat netplan příkazy. Wifi se zprovozní až po resratu. V GUI UBUNTU se nezobrazují sítě protože není instalovný GUI manager. Ubuntu server nemá standartně GUI,

    sudo netplan generate
    sudo netplan try
    sudo netplan apply
    sudo reboot
    ip a
  1. Vysuň SD kartu z PC a vlož do RPi:

  2. Připoj napíjecí kabel a nech inicializovat:

  3. cca po 2-3 minutách restartuj RPi (výtahni napájecí kabel a připoj zpátky):

    • RPi se nepodaří napoprvé při inicializace Ubuntu Server připojit na WiFi - proto nutný reset
  4. Najdi RPi na síti (z PC - Windows):

    6.1. naisnatlovat nmap

    6.2. Napiš příkaz nmap -sn 192.168.1.0/24

    6.3. Napiš si IP adresu

    • pokud nmap nenašel žádné zařízení potom se RPi nepodařilo připojit na k síti
    • zkus restartovat RPi (opakuj krok 5)
    • pokud stále nic tak potom byla pravděpodobně chyba ve jménu a heslu k WiFi - opakuj krok 2
  5. Připoj se k RPi pomocí ssh z PC - Powershell anebo PuTTy

    • default přihlašovací údaje pro Ubuntu Server jsou ubuntu/ubuntu
    • po prvním připojení se RPi je potřeba změnit heslo - propt je od RPi automaticky
    • po změně hesla tě Ubuntu odpojí - připoj se znovu přes ssh s novým heslem
  6. Update your system. After that you need to connect to the Internet and update your system

    sudo apt-get update 
    sudo apt-get upgrade
    sudo reboot
  7. Install Ubuntu Desktop

    sudo apt-get update && sudo apt-get upgrade && sudo apt-get install ubuntu-desktop
  8. install Midnight Commander (mc)

    sudo apt-get install mc
  9. Installation of recommended tools

    • Double Commander
      sudo apt install doublecmd-gtk

Real-time (RT_PREEMPT) Kernel

  1. Download ready-to-use RT Kernel deb packages from GitHub Build RT_PREEMPT kernel for Raspberry Pi 4, release for ubuntu: focal

    wget https://github.com/ros-realtime/linux-real-time-kernel-builder/releases/download/5.4.195-rt74-raspi-arm64-lttng/RPI4.RT.Kernel.deb.packages.zip
  2. Unzip RT Kernel deb packages

    unzip RPI4.RT.Kernel.deb.packages.zip
  3. System information before new kernel inmstalation

    uname -a
    Linux ubuntu 5.4.0-1042-raspi #46-Ubuntu SMP PREEMPT Fri Jul 30 00:35:40 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
  4. Install new kernel

    sudo dpkg -i linux-image-*.deb
    sudo reboot
  5. After reboot you should see a new RT kernel installed and real-time enabled

    uname -a
    Linux ubuntu 5.4.195-rt74-raspi #1 SMP PREEMPT_RT Thu Jul 28 06:58:49 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

    cat /sys/kernel/realtime
    1

Troubleshooting:

Pokud výpis z uname -v neobsahuje PREEMPT_RT, ale myslíš, že jsi vše udělal OK podle instrukcí, potom RPi ignorovalo nový kernel a je potřeba mu ho vnutit:

Je nutno upravit vmlinuz a initrd.img:

Zadej pojednom tyhle příkazy a doplň instalovanou verzi kernelu:

  • v /boot jsou soubory s názvy jako config-5.4.0-1053-raspi a config-5.3.162.rt68

    • 5.4.0-162-rt68 odpovídá <kernel-version-rt> v ln příkazech dole
    • 5.4.0-1053-raspi odpovídá <kernel-version> v ln příkazech dole
    • pokud máš novější kernel a v názvy jsou jiné tak v ln příkazech zadej svoji verzi

Nacpi RPi nový kernel silou:

sudo ln -s -f /boot/vmlinuz-<kernel-version-rt> /boot/vmlinuz
sudo ln -s -f /boot/vmlinuz-<kernel-version> /boot/vmlinuz.old
sudo ln -s -f /boot/initrd.img-<kernel-version-rt> /boot/initrd.img
sudo ln -s -f /boot/initrd.img-<kernel-version> /boot/initrd.img.old
cd /boot
sudo cp vmlinuz firmware/vmlinuz
sudo cp vmlinuz firmware/vmlinuz.bak
sudo cp initrd.img firmware/initrd.img
sudo cp initrd.img firmware/initrd.img.bak

sudo reboot

Připoj se zpět na RPi a vyzkoušej uname -v

Remote desktop connections

Popstupovat podle návodu Install Xrdp On Ubuntu 20, nespouštět firewall

  1. Jsou to tyto příkazy:
    sudo apt-get update -y
    sudo apt install xubuntu-desktop
    sudo apt install xrdp
    sudo systemctl status xrdp
    sudo adduser xrdp ssl-cert
    sudo systemctl restart xrdp
  2. Create a file called .xsession in the home folder
    echo -e  "startxfce4\n" >> ~/.xsession
    chmod +x ~/.xsession

Troubleshooting:

  • light-locker

    Po připojení ke vzdálené ploše :

    ProblemType: Crash
    Package: light-locker 1.8.0-1ubuntu1

    odinstalovat loght-locekr:

    sudo apt-get remove light-locker
    sudo systemctl restart xrdp
  • Log files

    xRDP writes some log files into your system. We would recommend you to have a look at these log files. These logs files might provide useful insight about the problem you are encountering.

    You should look at the following files:

    cat ~/.xsession-errors
    cat /var/log/xrdp.log
    cat /var/log/xrdp-sesman.log