Skip to content
This repository has been archived by the owner on Nov 12, 2020. It is now read-only.

eirbot/eirbot2020-1A

Repository files navigation

EIRBOT 2020-1A : Equipe EIRBOAT

alt text


Résultat de l'équipe à l'édition d'octobre 2020 : 24 ième / 51

Ceci est le dépôt de l'équipe de 1A de l'association de robotique Eirbot. La description de l'avancement des différents projets est disponible via la descrition de nos projets. Le projet se divise en plusieures catégories allant du plus bas au plus au niveau (en terme de raprochement avec le côté physique).

Membres

Ce projet est réalisé par les différents membres de Eirbot en première année :

  • Alberty Maxime (SEE)
  • Barrais Marius
  • Camberlin Erwann (Matmeca)
  • Delpeuch Sébastien (Informatique)
  • Mangin Lucas
  • Moroy Liam
  • Neveu Emile
  • Pouget Filipe
  • Poupon Julien
  • Savary Clément (SEE)
  • Vaquori Yohann
  • Vidal Martin

Installation

Le projet est construit avec Cmake, il suffit donc de cloner le projet puis

cd eirbot2020-1A/code/
cd build/
cmake .. 

Éxecution

Depuis le dossier build/

Pour compiler le projet il suffit de faire make project en ayant un compilateur de C++.

Plusieurs méthodes permettent d'exécuter le projet.

En local un ./project suffit, si la nucléo est branchée via le port USB une simulation de communication est enclenchée (la nucléo renvoie toujours vrai à chaque demande). Cela peut demander de faire la commande en super utilisateur ou changer le chemin d'accès au port USB (ligne 110 de ce code).

Pour mettre le projet sur la rasp et donc le robot il faut être connecté au même wifi que la raspeberry puis faire un make final.

En plus de l'exécution des tests sont effectués sur les codes, ils peuvent être compilés en faisant make test puis ./test. A partir de ce moment des tests sur tous les modules implémentés sont exécutés, le coverage actuel est de 87%

Finalement un make doc permet d'afficher la documentation de nos codes. Elle est de plus disponible sur notre page web

Description du projet

Mécanique

La mécanique du projet se base sur une architecture octogonale structuré par des profilés avec la notion d'étage.

robot

Alimentation

Un autre étape cruciale de notre robot est la distribution de l'énergie dans ce dernier. Pour ce faire nous passons via une carte d'alimentation, so rôle est de distribuer aux différentes instances l'énergie nécessaire pour fonctionner. résultat alimentation

Actionneur

Pour réaliser les différentes actions nous avons besoins de différents actionneurs.

Tout d'abord des actionneurs simples utiles pour activer le phare et les manches à air, ils sont au nombre de deux pour gérer facilement chaque côté de la table.

Ensuite un actionneur représentant le pavillon et permettant de lever le drapeau.

Puissance

Une fois que nous pouvons alimenter tous les composants de notre robot nous devons encore permettre un contrôle de la puissance fournie au moteur, pour cela nous créons deux cartes possédant un pont en H, cela nous permet de délivrer la puissance nécessaire à nos moteurs pour nos robots.

Asservissement

L'idée maintenant que nous avons une mécanique propre, nos différents modules aliméntés et que nous pouvons contrôler précsiement nos moteurs est de créer un asservissement. Le but de l'asservissement est de récupérer les informations des encodeurs et de permettre au robot d'atteindre une certainne position tout en gérant l'angle, la puissance des moteurs etc.

Stratégie

Maintenant que nous avons un asservissement nous devons réaliser les choix pour notre stratégie.

La stratégie se décompose en deux parties. Une partie sur la nucléo contenant les actions "matérielles" à faire (par exemple tourner le servomoteur de l'actionneur pour la phare). Et une partie de stratégie plus abstraite sur raspeberry.

La partie abstraite a plusieurs rôles

  • Elle contrôle le déroulement de la partie (initialisation, ordre des actions, demandes de déplacements ...)
  • Elle gère la communication avec la balise lisant la boussole et le phare
  • Elle est la seule à connaître la disposition de la table (disposition des obstacles, place des ecocups initialement)
  • Elle est capable de calculer une trajectoire entre les obstacles (via un algorithme de pathfinding l'A*)
  • Elle est capable de définir dans quel sens il faut ramasser les ecocups (probleme du voyageur de commerce, algorithme des colonies de fourmis)

Les codes sont disponibles ici.

Protocole de communication

Comme dit précédemment nous avons séparé la partie d'implémentation du contrôle physique (sur la nucléo) et la partie d'implémentation de la stratégie (sur la rasp). Cela implique donc une communication entre les deux cartes. L'idée est d'utiliser un protocole de communication du type maitre esclave. Par exemple lorsque la rasp a trouvé la trajectoire demandé, elle fournit au fur et à mesure les coordonnées qu'elle souhaite atteindre à la nucléo. Cette dernière via l'asservissement déplace le robot à la position souhaitée, elle a un certains temps pour le faire. Si elle arrive à la position demandée elle renvoie "OK", si elle n'y arrive pas automatiquement le protocole renvoie "TIMEOUT". Si les GP2, reliés à la nucléo détectent un robot ennemi pendant le déplacement, la nucléo stoppe le robot et renvoie "DETECTION" à la rasp. Cette dernière prendra alors les mesures nécessaires pour éviter le robot. C'est ainsi que se déroule la communication entre la rasp et la nucleo.

Phare

En marge du robot nous devons réaliser l'expérience. L'objectif du phare est de se déployer pendant le match pour permettre d'atteindre une certainne hauteur. Cela est réalisé par un bras robotique imprimé en PLA. Ce dernier possède un design comme suit. phare