Reachy

Le Reachy possède quatre principaux blocs de fonctionnalités : le contrôleur général permettant d'orchestrer toutes les actions que le robot effectue et dans quel ordre (détection de squelette, lancement du jeu, navigation etc), le jeu de tictactoe, la détection de squelette par PoseNet ainsi qu'une API permettant de contrôler le robot de l'extérieur.

Contrôleur général

Le contrôleur général permet d'orchestrer les actions de Reachy il est appelé lorsque l'on effectue une requête POST sur le point de terminaison /play de l'API ci-dessous ou lorsqu'on effectue la commande python3 reachy.py depuis le dossier reachy_mobile_reachy.

Le contrôleur prend en paramètres 3 booléens (posenet, navigation et tictactoe) qui détermine si on veut activer ou non les fonctionnalités correspondantes. Si navigation est activée, un thread est lancé permettant de se déplacer de point en point sur la carte. Si posenet est activé alors le tictactoe ne sera lancé que si le robot détecte un squelette levant la main.

Ce fichier permet de définir le comportement général du robot, mais les interactions avec les utilisateurs (sons, mouvements de la tête, mouvements des antennes) sont disséminées dans les différents blocs.

API

L'API permet de contrôler le robot à distance, elle se lance automatiquement au démarrage du robot ou via un terminal depuis le répertoire reachy_mobile_reachy/API : python3 run_api.py

Il suffit ensuite de se rendre en <IP_ROBOT>:8000 pour accéder à l'API.

Le front de l'API est défini dans le dossier API/templates et se base principalement sur de l'html en utilisant bootstrap.

Le back de l'API est défini dans API/api.py et est constitué d'une API Flask dont les points de terminaisons sont ci-dessous.

index

  • Méthode : GET
  • Route : /
  • Données : Aucune
  • Résumé : Retourne la page d'accueil du site

error_404

  • Méthode : GET
  • Route : /error_404
  • Données : Aucune
  • Résumé : Retourne la page d'erreur 404

error_500

  • Méthode : GET
  • Route : /error_500
  • Données : Aucune
  • Résumé : Retourne la page d'erreur 500

reachy

  • Méthode : GET
  • Route : /reachy
  • Données : Aucune
  • Résumé : Retourne la page du reachy

ezwheel

  • Méthode : GET
  • Route : /ezwheel
  • Données : Aucune
  • Résumé : Retourne la page du ezwheel

reachy_on

  • Méthode : POST
  • Route : /reachy/on
  • Données : Aucune
  • Résumé : Rend rigide le bras droit du robot

reachy_off

  • Méthode : POST
  • Route : /reachy/off
  • Données : Aucune
  • Résumé : Rend mou le bras droit du robot

play

  • Méthode : POST
  • Route : /reachy/play
  • Données : {"posenet":bool, "tictactoe":bool, "navigation":bool}
  • Résumé : Lance le programme général avec les différentes fonctionnalités

stop

  • Méthode : POST
  • Route : /reachy/stop
  • Données : Aucune
  • Résumé : Arrête le programme général

head_on

  • Méthode : POST
  • Route : /reachy/head/on
  • Données : Aucune
  • Résumé : Rend rigide la tête du robot

head_off

  • Méthode : POST
  • Route : /reachy/head/off
  • Données : Aucune
  • Résumé : Rend mou la tête du robot

head_lookat

  • Méthode : POST
  • Route : /reachy/head/lookat
  • Données : {"x":float, "y":float, "z":float, "duration":float}
  • Résumé : Fait regarder la tête du robot vers un point

head_happy

  • Méthode : POST
  • Route : /reachy/head/happy
  • Données : Aucune
  • Résumé : Rend le robot heureux

head_sad

  • Méthode : POST
  • Route : /reachy/head/sad
  • Données : Aucune
  • Résumé : Rend le robot triste

camera_left

  • Méthode : GET
  • Route : /reachy/camera/left
  • Données : Aucune
  • Résumé : Retourne l'image de la caméra gauche

camera_right

  • Méthode : GET
  • Route : /reachy/camera/right
  • Données : Aucune
  • Résumé : Retourne l'image de la caméra droite

camera_left_autofocus

  • Méthode : POST
  • Route : /reachy/camera/left/autofocus
  • Données : Aucune
  • Résumé : La caméra gauche fait l'autofocus

camera_right_autofocus

  • Méthode : POST
  • Route : /reachy/camera/right/autofocus
  • Données : Aucune
  • Résumé : La caméra droite fait l'autofocus

detection

  • Méthode : POST
  • Route : /reachy/detection
  • Données : Aucune
  • Résumé : Renvoie la liste des images analysées par le réseau de neuronne du TicTacToe

detection_get

  • Méthode : GET
  • Route : /reachy/detection/
  • Données : Aucune
  • Résumé : Renvoie l'image analysée par le réseau de neuronne du TicTacToe en fonction de son nom

ezwheel_goal

  • Méthode : POST
  • Route : /ezwheel/goal
  • Données : {"x":float, "y":float, "theta":float}
  • Résumé : Envoie un ordre de navigation vers un point

ezwheeel_status

  • Méthode : GET
  • Route : /ezwheel/status
  • Données : Aucune
  • Résumé : Retourne l'état de la navigation

ezwheel_cancel

  • Méthode : POST
  • Route : /ezwheel/cancel
  • Données : Aucune
  • Résumé : Annule l'ordre de navigation