Haut niveau

De Wiki INTech
Aller à : navigation, rechercher

Description

Le haut niveau, aussi appelé HL (High Level), est la couche supérieure du robot. Il s'agit du soft qui va ordonner des actions au bas niveau pour effectuer les actions nécessaires au match.
A ce jour, le HL est codé en Java 8.
Le dépôt git est accessible à cette adresse : github.com/TechTheLunatic/highlevel-techthelunatic

Tutoriels

- Apprendre le Java (bases de programmation nécessaires) : Fichier:HowToJAVA.pdf

- Réaliser son premier script : Fichier:RealiserUnScript.pdf

Préliminaires pour faire fonctionner le robot avec son PC

Tout d'abord, votre machine doit être sous Linux, une variante de Debian est plus simple à gérer, mais rien ne vous empêche d'utiliser une autre distribution.
Vous devez avant tout installer Java sur votre machine et Intellij-IDEA pour faire vos tests. La méthode dépend de votre distribution (suffisament largement pour que je vous laisse la main). Vous devez aussi installer RXTX, la librairie Série de Java, le paquet s'appelle librxtx-java sur Ubuntu.
Avant tout test, vous devez executer "sudo chmod 777 /dev/ttyUSB0" pour permettre à Intellij de communiquer sur le port série.

Pour le problème de lock sur ArchLinux : Vous devez faire un chmod -r 777 sur /var/lock et /var/lock/*

Packages

Voici un petit résumé de chacun des packages du haut-niveau

Container

Ce package contient le système de container qui permet la génération d'objets et leur sauvegarde, afin de généraliser dans tout le code leur instanciation et de permettre des singletons propres. Ce système est la raison pour laquelle la plupart des constructeurs sont en private.

Debug

Outils graphiques de debug pour les balises ultrasons. (DEPRECATED)

Enums

Contient les différentes énumérations du robot, je ne vous apprends pas l'utilité des énumérations !

Exceptions

Idem mais pour les exceptions.

Graphics

Package contenant tout le code de l'interface graphique utilisée dans certains tests.

Hook

Contient le système de hooks, permettant de lancer des ordres aux au bas-niveau pendant un déplacement du robot.

Pathfinder

Contient le pathfinding du robot, lui permettant de trouver un chemin pour se déplacer vers un point en évitant les obstacles.

Robot

Contient le code de Locomotion et le SerialWrapper, ces deux systèmes implémentent les fonction de pilotage du robot. Elles gèrent les ordres à envoyer au bas niveau (en appelant le TheadSerial), la détection d'ennemis et le déclenchement des hooks.

Scripts

Contient les scripts du robot, enchaînements d'action atomiques afin d'exécuter les actions du match.

SmartMath

Package contenant les objets et méthodes mathématiques utiles dans tout le reste du code.

Strategie

Contient l'IA du robot.

Table

Contient la classe Table contenant son état en cours de match et d'autres informations utiles. Ce package possède aussi le système de gestion d'obstacles.

Tests

Contient tous les tests JUnit testant toutes les fonctionnalités du robot.

Thread

Contient tous les threads du robot, du vital ThreadSerial, à l'inutile ThreadBalises.

Utils

Contient des objets utilitaires comme le Log ou la Config.

Avancé

Voici des pistes d'amélioration pour le robot d'INTech :

- Trajectoires courbes

- Filtrage statistique

- Analyse d'images et classification