Code destiné à être sur la plateforme Jetson d'NVIDIA.
NE PAS TOUCHER AUX PINS GPIO LORSQUE LE JETSON EST EN MARCHE. CELA FAIT COURT-CIRCUITER LE DEV BOARD!
Devine qui a découvert ça (hint: il a aussi un problème avec les batteries)...
- Setup du Jetson
- Entrainement du réseau de neurone
Pour installer le système d'exploitation sur le Jetson, il faut télécharger l'installateur du Jetpack 3.2.
https://developer.nvidia.com/embedded/dlc/jetpack-l4t-3_2
Ensuite, il faut que suivre les étapes de l'installateur.
Pour un temps d'installation optimal, nous recommandons de connecter le Jetson par ethernet à un routeur ayant un accès internet. L'ordinateur d'installation devra être connecté à ce même routeur en wifi ou par ethernet si possible.
Pour des raisons de sécurité apparentes il est impératif de changer les mots de passe par défaut du Jetson.
Le mot de passe par défaut du compte nvidia est nvidia
sudo passwd nvidia
sudo passwd ubuntuROS ne pourra pas être installé si les paquets ne sont pas mis à jour.
sudo apt update
sudo apt upgrade
sudo rebootIl est normal d'avoir certaines erreurs de signature de source apt pour les repos locaux. Simplement les ignorer!
Pour overclocker le Jetson au démarage, créer le fichier /etc/rc.local et y ajouter:
(sleep 60 && /home/nvidia/jetson_clocks.sh) &Ensuite, éxécuter les commandes suivantes:
sudo /etc/init.d/rc.local startPuisque l'espace disque est limité sur le Jetson, il est falcultatif mais pertinent de supprimer certains éléments supperflus comme certains logiciels inutiles:
- Thunderbird
- Suite LibreOffice
- Transmission
sudo apt remove chromium-browser thunderbird libreoffice-* transmission-*
sudo apt autoremoveAfin de faire fonctionner le TX* avec elikos_jetson, les programmes suivant doivent être installés
- ROS
- LibRealSense
- darknet_ros
Suivre les instructions sur le site de ROS
Nous voulons aussi utiliser les Catkin Command Line Tools:
sudo apt install python-catkin-toolsÀ noter: Nous voulons installer la version ros-kinetic-desktop
Le Jetson aura une architecture à double workspace
~/jetson_ws- Contiendra les différentes nodes conçues par Élikos qui seront exécutés sur le Jetson
~/jetson_lib_ws.- Contiendra les pilotes et autres librairies requises au bon fonctionnement des nodes de
~/jetson_ws.
- Contiendra les pilotes et autres librairies requises au bon fonctionnement des nodes de
Le paquet ros-kinetic-librealsense est incompatible avec le Jetson.
Pour y remédier, nous devons compiler une version spécifique de librealsense et de realsense-camera.
Premièrement, installer librealsense sur le système:
github.com/jetsonhacks a déjà fait un script pour automatiser l'installation
cd ~
git clone https://github.com/jetsonhacks/installLibrealsenseTX2.git
cd installLibrealsenseTX2
chmod +x installLibrealsense.sh
./installLibrealsense.shEnsuite, installer librealsense dans la workspace ROS
L'installation de librealsense se fera dans ~/jetson_lib_ws.
cd ~/jetson_lib_ws/src
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense
git checkout v1.12.1
wget https://raw.githubusercontent.com/jetsonhacks/installLibrealsenseTX1/master/patches/uvc-v4l2.patch
patch -p1 -i uvc-v4l2.patch
# Patch appliquée pour la reconnaissance du module uvc du kernelPuis cloner realsense-camera:
cd ~/jetson_lib_ws/src
git clone https://github.com/intel-ros/realsense.git
cd realsense
git checkout 1.8.0
cd ../..
sudo rosdep -y install --from-paths src --ignore-src --rosdistro kineticPuis build le tout:
catkin_make -DCMAKE_BUILD_TYPE=ReleaseInstallons maintenant le code qui sera éxécuté sur le Jetson.
cd ~
mkdir -p jetson_ws/src
cd jetson_ws/src
git clone --recurse-submodules [email protected]:elikos/elikos_jetson.git
cd ..
catkin buildPour éviter une prise de panique soudaine lors du démarage du Jetson, nous allons ajouter les workspaces au .bashrc pour une inclusion automatique:
Ajouter les lignes suivantes au ~/.bashrc:
source ~/jetson_lib_ws/devel/setup.bash
source ~/jetson_ws/devel/setup.bashPuis faire la commande:
source ~/.bashrcPour que le réseau de neurone fonctionne, il faut d'abord l'entrainer avec les images à détecter
Darknet peut être cloné directement à partir du repo GitHub.
git clone https://github.com/pjreddie/darknet.git
cd darknetPour une raison mystérieuse, cette dernière version de Darknet peut être incompatible avec certaines cartes grahique. Pour régler ce problème, il est possible d'utiliser la version d'AlexeyAB. Cette version ne doit pas être utilisé sur le Jetson.
git clone https://github.com/AlexeyAB/darknet
cd darknetAvant de compiler darknet, il faut télécharger et installer CUDA 8. https://developer.nvidia.com/cuda-80-ga2-download-archive
Il faut ensuite modifier le Makefile pour activer Cuda en modifiant le flag GPU=1 (et OPENCV=1 si désiré et installé).
makeAfin de créer le dataset, il est possible d'utiliser l'utilitaire d'AlexayAB.
git clone https://github.com/AlexeyAB/Yolo_markSuivre les étapes décrites sur la page github de Yolo_mark https://github.com/AlexeyAB/Yolo_mark.
Pour entrainer le dataset produit par Yolo_mark, copier le dossier x64 dans le dossier darknet. Ensuite, télécharger les weights d'entrainement du site de darknet dans le dossier darknet/x64/Release. Finalement, exécuter la commande suivante.
./darknet detector train x64/Release/data/obj.data x64/Release/yolo-obj.cfg x64/Release/darknet19_448.conv.23À chaque 100 itérations, darknet sauvegarde les résultats dans le dossier darknet/backup.
Note: Il est possible de diminuer le paramètre batch et augmenter le paramètre subdivisions dans le fichier yolo-obj.cfg si il n'y a pas assez de mémoire graphique.
