Tutorial – Come configurare la NVIDIA JETSON TK1

Un Tutorial fantastico scritto da Walter Lucetti, che spiega passo passo come configurare la scheda NVIDIA JETSON TK1.

La guida è pensata per un utilizzo della scheda come sistema principale di un Robot, ma è valida per qualsiasi altro utilizzo, e riporta diversi consigli utili per molte situazioni.

“The Grinch” kernel custom per abilitare il WiFi e altre funzionalità

La Jetson TK1 viene rilasciata dagli NVidia Labs con una versione di Ubuntu Linux ottimizzata per il processore Tegra: Linux for Tegra (L4T).
La versione corrente di L4T è la v21.2.1. Il sistema include i driver per il Tegra TK1, ma il kernel non supporta il WiFi.
Per ottenere il supporto per il Wifi abbiamo quindi bisogno di compilare i driver per la periferica installata oppure possiamo installare un kernel personalizzato chiamato “The Grinch” realizzato da Santyago Jarzebski.

Le istruzioni per installare questo kernel personalizzato sono disponibini nel NVidia Developer Forum. Dal momento che tali istruzioni sono aggiornate molto spesso e scritte bene (informazioni in lingua inglese), le informazioni non saranno replicate in questa pagina, ma potete reperirle direttamente alla pagina del forum.
Dovete tenere presente che, con l’installazione di “The Grinch” il contenuto della memoria flash della vostra Jetson TK1 sarà perso, è quindi consigliabile eseguire un backup di tutto il contenuto su un supporto removibile, come ad esempio una chiavetta USB.


Installazione CUDA Toolkit e OpenCV

Dopo l’installazione del kernel personalizzato, potete procedere con l’installazione dell’ultima versione dei CUDA Toolkit e delle OpenCV Library:

Installazione CUDA Toolkit

  1. Download del pacchetto Debian per il CUDA toolkit apposito per L4T (es. CUDA 6.5 Toolkit for L4T Rel 21.2) dal sito ufficiale
  2. Installare il package: $ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
  3. Aggiornare il repository: $ sudo apt-get update
  4. Installare il toolkit: $ sudo apt-get install cuda-toolkit-6-5
  5. Aggiungere l’utente al gruppo video: $ sudo usermod -a -G video <username>
  6. Aggiungere i path relativi a CUDA al tuo .bashrc:
    echo "# Add CUDA bin & library paths:" >> ~/.bashrc echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH" >> ~/.bashrc source ~/.bashrc
  7. Verificare l’installazione: $ nvcc -V

Per testare le capacità di CUDA potete compilare gli esempi, tenete comunque presente che il processo di compilazione richiede molto tempo:

  1. Posizionarsi nella cartella degli esempi: $ cd /usr/local/cuda/samples
  2. Compilare: $ sudo make -j4
  3. Dopo la compilazione potete trovare gli esempi nella cartella: /usr/local/cuda/samples/bin/armv7l/linux/release/gnueabihf

Installazione OpenCV4Tegra

  1. Download del pacchetto Debian OpenCV4Tegra (es. OpenCV4Tegra for L4T 21.x) dal sito ufficiale
  2. Installazione del pacchetto: $ sudo dpkg -i libopencv4tegra-repo_l4t-<version>_<architecture>.deb
  3. Aggiornamento del repository: $ sudo apt-get update
  4. Installazione della libreria library: $ sudo apt-get install libopencv4tegra libopencv4tegra-dev

Tweaks

Qualche miglioramento per rendere la Jetson TK1 più usabile.

Aggiunta di Universe e Multiverse packages repository

Aprite un nuovo terminale (Ctrl+Alt+t) e digitate i seguenti comandi:

$ sudo apt-add-repository universe
$ sudo apt-add-repository multiverse
$ sudo apt-get update

Cambiare l’hostname del sistema

Come impostazione di default l’hostname di “Linux for Tegra” è “tegra-ubuntu”, ma sicuramente vorrete chiamare il vostro Robot con il suo nome anche sulla rete.

  1. Cambiare hostname $ sudo gedit /etc/hostname
  2. Sostituire “tegra-ubuntu” con “MyRobotName
  3. Salvare e uscire
  4. Modificare gli host: $ sudo gedit /etc/hosts
  5. Sostituire ogni “tegra-ubuntu” with “MyRobotName
  6. Salvare e uscire

Attivare il completamento della Bash

Aprire un nuovo terminale (Ctrl+Alt+t) e digitare il seguente comando:

$ sudo apt-get install bash-completion command-not-found
$ exit

Ora effettuare un Logout e di nuovo Login.

Shutdown tramite il bottone Power

Per spegnere la scheda utilizzando il pulsante “Power”, senza dover confermare l’operazione a video, eseguire i seguenti passi:

  1. Installare dconf-tools: $ sudo apt-get install dconf-tools
  2. Avviare dconf: $ dconf-editor
  3. Navigare tra le voci di configurazione fino a trovare: org.gnome.settings-daemon.plugins.power, ed impostare come azione di default del button-power quella di:shutdown
Power Button option in dconf-tools
Power Button option in dconf-tools

Disabilitare il LockScreen a tempo

Per disabilitare la funzionalità di “LockScreen” dopo un certo numero di minuti, eseguire i seguenti passi:

  1. Cliccare sulla voce “System Settings” nella barra laterale di Unity
  2. Selezionare la voce “Brightness & Lock”
  3. Impostare “Lock” a OFF
  4. Deselezionare il check della voce “Require my password when waking from suspend”

Browser internet

Il browser predefinito installato sul sistema è “Firefox”, potete comunque installare il vostro Browser preferito, nei test effettuati abbiamo riscontrato diversi blocchi utilizzando Chromium.

CPU performance

L’utilizzo della CPU su un Robot, che tra le altre cose deve occuparsi di Visione Artificiale, richiede elevate prestazioni, di conseguenza la scheda è stata configurata per avere il massimo delle performance all’avvio. Questa non è l’impostazione di default, quindi per avere questa configurazione è necessario eseguire i seguenti comandi:

  1. Aprire un nuovo terminale (Ctrl+Alt+t)
  2. Editare il file rc.local: $ sudo gedit /etc/rc.local
  3. Aggiungere il testo seguente prima della riga “exit 0”: echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable echo 1 > /sys/devices/system/cpu/cpu0/online echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online echo 1 > /sys/devices/system/cpu/cpu3/online echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  4. Salvare e uscire
  5. Installare il tool CPU frequencies: $ sudo apt-get install cpufrequtils
  6. Configurare la frequenza della CPU:
    1. Modificare le impostazioni di default: $ sudo gedit /etc/default/cpufrequtils
    2. Aggiungendo le se seguenti linee di testo: ENABLE=”true” GOVERNOR=”performance” MAX_SPEED=0 MIN_SPEED=0
    3. Salvare e uscire
  7. Riavviare il servizio: $ sudo /etc/init.d/cpufrequtils restart

Abilitare la connessione Desktop remoto

Può essere utile collegarsi alla scheda da remoto utilizzando l’interfaccia grafica. Ubuntu 14.04 fornisce di default un tool per il Remote Desktop chiamato “vino“. Può essere attivato nel modo seguente:

  1. Aprire la ricerca di Unity (Alt+F2)
  2. Digitare: Desktop sharing
  3. Cliccare sull’icona “Desktop Sharing
  4. Selezionare la voce “Allow other users to view your desktop
  5. Selezionare la voce “Allow other users to control your desktop
  6. Deselezionare la voce “You must confirm each access to this machine
  7. [optionale] Selezionare la voce “Require the user to enter this password:
  8. Selezionare la voce “Automatically configure UPnP router to open and forward ports

Ora potete connettervi da un computer remoto usando: vncviewer <Jetson IP o hostname>

Esecuzione di script all’avvio

Il modo più semplice per eseguire degli script con i permessi di root all’avvio del sistema, è aggiungere i comandi da eseguire nel file /etc/rc.local, il quale può essere editato con gedit o nano o vi.

Disabilitare l’autosospensione della USB

Come impostazione di default Linux for Tegra è configurato in modalità di risparmio energetico, questo fa si che le porte USB vengono spente quando non sono utilizzate. Questo può causare problemi con le periferiche USB. Per disabilitare l’autosospensione delle USB si può usare il comando:

$ sudo echo -1 > /sys/module/usbcore/parameters/autosuspend

Per evitare di inserire manualmente questo comando ad ogni avvio del sistema, il comando può essere inserito nel file di esecuzione degli script:

  1. Editare il file rc.local: $ sudo gedit /etc/rc.local
  2. Aggiungere il contenuto seguente alla fine del file: # Disable USB auto-suspend, since it disconnects some devices such as webcams on Jetson TK1. echo -1 > /sys/module/usbcore/parameters/autosuspend
  3. Salvare e uscire
  4. Riavviare il sistema: $ sudo reboot

Installazione di ROS (Robot Operating System)

L’installazione di ROS sulla Jetson TK1 è molto semplice, la guida per installare i pacchetti base è disponibile nel sito wiki di ROS. Seguire la guida passo passo, ricordandosi allo step 2.5 di installare solo il pacchetto “ros-indigo-ros-base“.


Questo articolo è una traduzione e adattamento, a cura di Roberto D’Amico, dell’originale articolo redatto in Inglese da Walter Lucetti.

Leave a Reply