Ce document permets de recenser l'ensemble des commandes utiles pour prendre en main le code informatique.
- 📦 Clonage du repo
- 🔨 Installation des différents outils
- Logiciels nécessaires [REQUIS]
- Formattage du code [FACULTATIF] [RECOMMANDE]
- gcc et g++ 6/7 pour compiler [FACULTATIF] [RECOMMANDE]
- L'IDE CLion [FACULTATIF] [RECOMMANDE]
- clang pour compiler [FACULTATIF]
- Lib Wiimote [FACULTATIF]
- Petrilab [FACULTATIF]
- 📁 Prise en main rapide du code
- 💥 Problèmes de compilation connus
- 🎨 Lancer l'IA en mode Debug sur le simu
- 🎯 Cross-Compilation pour Raspberry
git clone https://[email protected]/ClubRobotInsat/info.git
cd info
🚨 Etapes requises 🚨
L'installation est automatique à condition d'être sur un système Ubuntu.
Installation de tous les outils nécessaires au développement
scripts/install.sh tools
🔧 Etapes facultatives mais recommandées 🔧
Installation du hook, un script lancé à chaque commit pour formater le code comme il faut
scripts/install.sh format
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-6 g++-6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6
Si vous êtes sur Ubuntu 17.04 (ou plus récent) :
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sinon :
sudo add-apt-repository ppa:jonathonf/gcc-7.1
Puis :
sudo apt-get update
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
CLion est un IDE développé par JetBrains, qui est à la fois flexible, simple d'utilisation, multiplateforme et qui a la particularité d'utiliser nativement CMake, le système de build utilisé par notre code. Il est normalement payant, mais une version d'éducation (licence valide 1 an, renouvelable tant que l'on est étudiant) est disponible.
Pour commencer, aller sur cette page https://www.jetbrains.com/clion/download/
et télécharger l'IDE.
Pendant le téléchargement, aller sur la page https://www.jetbrains.com/shop/eform/students
pour demander une licence éducation.
Le mail à fournir est celui de l'INSA (@etud.insa-toulouse.fr) pour que JetBrains accepte de délivrer la licence. Va voir sur ta boîte mail, un message contenant un lien de confirmation à suivre est arrivé. Une fois que l'adresse mail est confirmée, un autre mail est envoyé et il permet de recevoir les infos de la licence, qui pourront alors être saisies dans CLion.
Une fois l'IDE installé, on choisit d'ouvrir un projet existant et il faut sélectionner le dossier info
résultat du clonage du Git.
Il reste à ce moment un peu de configuration à effectuer : dans le menu File -> Settings
, dérouler l'item Build, Execution, Deployment
et sélectionner CMake
. Il faut ensuite remplir certains champs :
- dans
CMake options
, mettre le texte-DDEBUG=on -DBITS=64
- dans
Generation path
, mettre le textebuild
- dans
Build options
, mettre le texte-j 4
(pour compiler avec 4 coeurs).
Pour pouvoir tester les IA via la laison série (RS232) en utilisant Clion (sans les droits root), il faut ajouter votre utilisateur au groupe ayant accès à la laison série (dialout) :
sudo usermod -a -G dialout NOM_UTILISATEUR
📝 Etapes facultatives 📝
Installation d'un autre compilateur par défaut
sudo apt-get install clang-3.8
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.8 100
Installation de la lib WiiC
nécessaire pour les démos à la wiimote
scripts/install.sh wii
Installation du logiciel d'édition de réseaux petri, qui permets de créer graphiquement des stratégies. Systèmes d'exploitation pris en charge actuellement :
- Ubuntu 14.04 Trusty
- Ubuntu 16.04 Xenial
- Ubuntu 17.04 Zesty
scripts/install.sh petri
- Aller dans Settings > Build, Execution, Deployment > CMake. Dans "CMake options", rajouter le paramètre
-DBITS=64
- Problème de clock skew ? Il suffit de lancer
find -exec touch \{\} \;
dans le dossierinfo
. Attention, cela peut être un petit peu long.
- Tout compiler (choisir la target
build all
) - Ouvrir un premier terminal dans le dossier
info
- Lancer le simu :
- méthode simple :
scripts/simu_launcher.sh green
- méthode personnalisée :
build/src/simulateur/Simulator --robot on --world on --load build/src/table_2018.json
- Ouvrir un deuxième terminal et lancer Petri :
petrilab
- Dans Petri, charger l'IA (IA2018.petri par exemple) située dans
/info/src/robot/Principal/petri
- Dans Petri encore, aller dans
Debug -> Create Host
, normalement tout est déjà configuré, vous n'avez qu'à cliquer sur Create host. Sinon, il faut aller chercher les binaires de l'IA :/info/build/src/robot/Principal/IAPrincipal
et indiquer comme argumentsLOCAL --color blue SIMU
Installation des logiciels nécessaires pour cross-compiler et copie des librairies précompilées pour ARM dans le dossier /usr/arm-linux-gnueabihf/lib
scripts/install.sh raspi
Un script build_arm.sh est fourni, il compile IAPrincipal
et IAWiimote
dans /info/build_arm
.
Il est possible de donner le nombre de coeurs à utiliser au script :
cd scripts
./build_arm.sh 8
Si il y a des problèmes de compilations, il faut commencer par supprimer le dossier /build_arm
.
Il faut commencer par ouvrir le gestionnaire de connections de ton ordinateur. Pour cela il faut cliquer sur l'icône "Network" dans ta barre des tâches et sélectionner "Edit Connections". Une fois dans ce menu, il est possible de définir une nouvelle connexion Ethernet qui sera partagée avec le Raspberry.
On clique donc sur "Add
" et on choisit "Ethernet
".
Une fois dans le menu de paramétrage de la connexion il faut modifier quelques champs :
- Connection name : A remplir pour différencier la connection des autres
- Onglet Ethernet :
Device
: Normalement il n'y en a que un à chosir. S'il y en a plusieurs, il faut tous les essayer jusqu'à ce que ça marche.
- Onglet IPv4 Settings :
Method
: Choisir "Shared to other computers"
Les autres champs peuvent être laissés tel quel.
Une fois la configuration terminée dans ton gestionnaire de connexion, active la configuration créée.
Ensuite, pour pouvoir se ssh sur le RaspberryPI il suffit de lancer le script :
scripts/ssh_into_rpi.sh
Le mot de passe de l'utilisateur robot est "robot".
Pour copier des fichiers il faut lancer un autre script, avec en argument le fichier à envoyer. Celui-ci se trouvera alors sur le bureau.
scripts/send_file_to_rpi.sh build/robot/Principal/IAPrincipal