Robots humanoïdes 2013 groupe II

De Wiki de Projets IMA

Projet de Coopération Nao N2N: Partie Communication/Réseau

Présentation du projet

Le projet global a pour but de réaliser une coopération entre deux robots NAO; cette coopération nécessite la synchronisation des deux humanoïdes à l’aide d’un serveur de données. Les NAO doivent donc utiliser des données communes pour se synchroniser, par exemple: déplacement d’un carton “volumineux” à deux. Ceci induit que les NAO vont devoir synchroniser leurs positions, ainsi que leurs déplacements, afin de pouvoir réaliser correctement l’action.

Cahier des charges

- Communication entre deux robots NAO à l’aide d’un serveur de données, afin de pouvoir réaliser une coopération synchronisée entre ceux-ci.

> Pour cela, nous allons donc utiliser une mémoire partagée afin de communiquer les différents états possibles dans lesquels seront les NAO (attente, prêt, etc.), ainsi que les positions des NAO afin d’effectuer une bonne synchronisation lors des mouvements.

- Communication entre les NAO et le routeur réalisée par WiFi: réception et envoi de données entre les NAO et le routeur.

> Programmation en C++ (a priori) dans les NAO.

Étapes importantes (prévisionnel)

  1. Étude approfondie de la communication NAO vers PC et PC vers NAO;
  2. Création d'une zone de mémoire partagée;
  3. Détermination des échanges à effectuer pour accomplir la tâche définie auparavant.

Avancement du projet

Semaine 1

Lors de cette première semaine, nous avons effectué des recherches sur le NAO afin de mieux comprendre son fonctionnement:

> prise de connaissance des bibliothèques spécifiques au NAO, ainsi que des variables qui sont indispensables à son bon fonctionnement;
> prise en main des logiciels utiles et nécessaires à la programmation sur PC du NAO;
> réalisation de tests avec le NAO: programmes en C++ de base pour contrôler le NAO (nous avons réussi à faire parler le NAO à l'aide d'un PC lié par câble ethernet au routeur et une connexion Wifi établie entre le routeur et le NAO).

Objectifs pour la semaine 2: écrire des programmes de test qui agissent sur les actionneurs et qui récupèrent des données du NAO.

Semaine 2

Nous avons essayé de compiler plusieurs autres programmes proposés par Aldebaran:

> problèmes liés à la compilation en début de semaine, désormais réglés;
> tests en compilation simple qui agissent sur les actionneurs du NAO (sa tête, par exemple);
> problèmes de cross-compilation: impossibilité de tester des programmes qui nécessitent d'être dans le NAO.

Objectifs pour la semaine 3: réaliser une cross-compilation afin d'agir sur les actionneurs, suivant les actions réalisées sur les capteurs du NAO et récupérer des données du NAO.


Semaine 3

Après des réapparitions de problèmes liés à la compilation, nous avons décidés d'enquêter sur notre compilateur (qibuild) distribué par Aldebaran. Il est apparu que ce compilateur n'était pas à jour et ne convenait pas à notre version du Nao. Il nous empêché notamment d'utiliser les commandes de déploiement du programme directement dans le nao (deploy...). Désormais : Utilisation de qibuild2.

Nous avons alors repris le travail précédent (compilation et test des exemples) avec ce nouveau compilateur légèrement différent mais plus fonctionnel. Ensuite nous avons créé notre architecture de travail afin de commencer à créer nos propres programmes en s'inspirant des exemples testés auparavant.

-Premier test avec qibuild2 : récupérer les données de la centrale inertielle du Nao.

>Dans un premier temps, en lançant le programme à partir du pc : Succès de la récupération des valeurs sur le terminal en temps réel.
>Dans un deuxième temps, le but était d'écrire ces valeurs dans un fichier .txt afin d'en garder une trace. Nous avons pu implémenter l’exécutable de ce code directement dans le Nao grâce aux nouvelles commandes de qibuild2.

Nous avons alors utilisé la cross-compilation, c'est-à-dire compiler un code afin de créer un exécutable compréhensible par différentes plate-formes (ici le Nao et le PC). Ensuite, l'exécution du binaire peut se faire simplement en passant par ssh dans le Nao. Après lancement, on récupère ainsi un fichier .txt des valeurs de la centrale inertielle le temps de l'exécution du programme.