Vue globale du projet

En étant à la racine du dossier, je t'invite à exécuter ces deux commandes :

$ find src -type f | wc -l
678

$ find src -type f | xargs wc -l
186823 total

Il y a actuellement 678 fichiers source pour presque 200.000 lignes de code ; je te l'accorde c'est beaucoup.

Bien sûr, tous ces fichiers sont structurés et ce petit schéma peut te donner une idée des merveilles que tu peux trouver dans le dossier src/ :

Arborescence du projet de manière graphique

Bien entendu, ce fichier est à mettre à jour en fonction des nouvelles fonctionnalités apportées, et si tu veux y participer il faut utiliser le logiciel dia.

sudo apt-get install dia

Comme tu peux t'en apercevoir, il y a trois parties principales :

  • commun - Tu peux y retrouver plein d'outils qui facilitent la programmation (manipulation d'unités physiques, constantes, manipulation de la communication, ...). Ce dossier est hyper important, mais je te conseille dans un premier temps d'utiliser les outils pour travailler sur le reste avant de te plonger dans ces librairies (certaines notions sont un peu compliquées et tout ce code n'est pas forcément directement lié à la robotique).
  • simulateur/ - Ce dossier regroupe l'ensemble des fichiers nécessaires pour mettre au point un simulateur graphique qui nous permet de tester la stratégie du robot avant de l'avoir en vrai, mécaniquement parlant. Si tu veux en savoir plus sur l'architecture du simulateur, elle est détaillée ici.
  • robot/ - Il y a toute la stratégie, les interfaces de manipulation des actionneurs, ... Si tu te demandes pourquoi il y a un dossier Principal/, c'est parce qu'historiquement le petit et le gros robot étaient définis informatiquement dans le dossier robot/, et leur stratégie était bien sûr différents. Il ne reste actuellement que les vestiges du gros robot, car en 2016 on a essayé une autre technologie (Lego Mindstorms) pour le petit robot.

Présentation des abstraction informatiques autour du robot

En informatique, il y a de nombreuses couches d'abstraction qui séparent les cartes électroniques de l'IA du match. Je te propose un petit aperçu de ces couches, des explications supplémentaires et spécifiques à chaque couche te seront apportées en suivant.

Couches d'abstraction Explications brèves Localisation
Petrilab Interface graphique pour créer les stratégies src/robot/Principal/petri/
IAPrincipale IAWiiMote IATests IATestLidar ... Exécution de la stratégie / tests haut niveau src/robot/Principal/IA/
Stratégie MecaManager Couleur, repère, temps, tirette ; fonctions haut niveau Strategie.h MecaManager.h
RobotPrincipal (public RobotCommun) Assignation des cartes pour 2018
src/robot/Principal/librobot/Robot.h
RobotCommun (virtual) Com', adversaire, déplacements, cartes src/robot/Commun/Robot.h
Déplacement Servos Moteurs
Évitement
... Interfaces bloquantes src/robot/Commun/
Cartes électroniques Communication par trames src/robot/Cartes/