Robots humanoïdes 2013 groupe I : Différence entre versions

De Wiki d'activités IMA
 
(42 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== '''Présentation du projet :''' ==
+
<include nopre noesc src="/home/pedago/pimasc/include/video-RobotsHumanoides2013-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 +
=='''<span style="color:blue">Présentation du projet :</span>'''==
  
 +
[[Image:NAO_2.jpg|upright=2 |thumb|alt = NAO|droite|NAO]]<br>
 +
L’objectif de ce projet est de faire coopérer deux NAO afin qu’ils réalisent de façon synchrone une action. On souhaite leur faire réaliser une procédure qu'ils ne pourraient faire seuls (objet trop grand ou trop lourd).<br>
 +
Les NAO ne pouvant pas soulever une charge trop importante, nous avons décidé de leur faire porter une boite en carton de grande taille (environ celle d'un NAO).
 +
Pour cela, à l'aide du logiciel Choregraphe nous allons écrire un programme qui permettra aux deux NAO de repérer la boite, de se déplacer jusqu'à celle-ci, de se positionner de chaques côtés de celle ci, puis enfin de se synchroniser (par l'intermédiaire du réseau). Une fois les deux NAO en phase, ils soulèveront la boite et la déposeront à un endroit donné.
 +
<br><br><br><br><br><br>
  
L’objectif de ce projet est de faire coopérer deux NAO afin qu’ils réalisent de façon synchrone une action.
+
=='''<span style="color:blue">Cahier des charges :</span>'''==
Pour cela nous allons élaborer un programme qui permettra aux deux NAO de se synchroniser, afin de réaliser une action qu'ils ne pourraient réaliser seul (exemple : soulever un objet trop grand ou trop lourd).
 
  
 +
[[Image:Exemple_Choregraphe.png|upright=2 |thumb|alt = Logicel Chorégraphe|droite|Logicel Chorégraphe]]<br>
 +
Lors de ce projet, la programmation des NAO se fera à l'aide du logiciel Chorégraphe, développé par Aldebaran.<br>
 +
Grâce à ce logiciel nous pouvons choisir de programmer de façon graphique (à l'aide des boxs créées par Aldebaran), ou de programmer en Python.<br>
  
== '''Cahier des charges :''' ==
+
Nous allons devoir employer ces deux types de programmations afin de développer les fonctions suivantes. 
 +
<blockquote>
 +
        - Repérer un objet dans une pièce<br>
 +
- Placer les deux NAO de chaque coté de l’objet<br>
 +
- Utiliser le signal de synchronisation de l'autre projet "NAO" <br>
 +
- Soulever l’objet <br>
 +
- Déplacer l'objet jusqu’à un point donné <br> </blockquote>
  
 +
Pour permettre de créer certaines de ces fonctions nous devrons développer nos propres blocs en python. Afin d'enrichir et de faciliter l'utilisation des NAO, pour de futurs travaux pratiques ou projets, nous développerons un complément de la  bibliothèque déjà existante. <br>
 +
<br><br>
  
Voici les principales fonctions que nous devrons créer : <br>
+
=='''<span style="color:blue">Avancement du projet :</span>'''==
<blockquote> -Repérer un objet <br>
 
-Se placer correctement par rapport à l’objet et à l’opposé du deuxième NAO <br>
 
-Attendre la synchronisation avec le deuxième NAO <br>
 
-Réaliser le travail collaboratif pour soulever l’objet <br>
 
-Déplacer le l'objet jusqu’à un point donné <br> </blockquote>
 
 
 
Afin de le programmer nous utiliserons le logiciel Chorégraphe fournit avec le NAO. <br>
 
Ce logiciel permet de réaliser une programmation graphique à l’aide de blocs, notre projet consiste alors à réaliser nos propres blocs codés en C++ et les intégrer dans la bibliothèque. <br>
 
 
 
 
 
== '''Avancement du projet''' ==
 
  
 
'''Semaine 1''' <br>
 
'''Semaine 1''' <br>
Ligne 35 : Ligne 42 :
 
  -Pas de bloc pour les opérations logique (AND,OR,IF....) <br> </blockquote>  
 
  -Pas de bloc pour les opérations logique (AND,OR,IF....) <br> </blockquote>  
  
Objectif pour la semaine 2: <br>
+
Objectifs pour la semaine 2: <br>
  
 
<blockquote> -Régler les problèmes d'équilibre du NAO <br>
 
<blockquote> -Régler les problèmes d'équilibre du NAO <br>
 
-Réaliser des timelines afin de créer des mouvements pour que le NAO attrape un objet <br>
 
-Réaliser des timelines afin de créer des mouvements pour que le NAO attrape un objet <br>
-Faire marcher le NAO avec un objet dans les mains <br>
+
-Faire marcher le NAO avec un objet dans les mains <br> </blockquote>
 +
 
 +
 
 +
'''Semaine 2''' <br>
 +
Lors de cette deuxième semaine , nous avons réalisé les objectifs fixés lors de la première semaine <br>
 +
Le NAO est maintenant capable de: <br>
 +
<blockquote> -Se baisser pour prendre un objet <br>
 +
-Se relever sans perdre l'équilibre <br>
 +
-Marcher avec l'objet dans les mains <br> </blockquote>
 +
 
 +
Problème rencontré: <br>
 +
<blockquote> -Le NAO ne peut pas prendre un objet en le serrant entre ses deux mains. En effet s'il n'atteint pas la position finale alors il s'arrête </blockquote>
 +
 
 +
Objectifs pour la semaine 3: <br>
 +
<blockquote>-Détecter un objet dans la pièce <br>
 +
-Récupérer les coordonnées de l'objet pour que le NAO puisse aller le chercher <br>
 +
-Réaliser la synchronisation des deux NAO à l'aide de Chorégraphe <br></blockquote>
 +
 
 +
 
 +
'''Semaine 3''' <br>
 +
 
 +
Lors de cette troisième semaine, nous avons réalisé une partie des objectifs fixés la semaine précédente. Nous sommes capables de faire avec le Nao le scénario suivant :<br>
 +
<blockquote>- Reconnaissance de l’objet devant lui <br>
 +
- Aller vers l’objet <br>
 +
- S’arrêter <br>
 +
- Se mettre accroupi et prendre l’objet dans ses mains <br>
 +
- Se relever <br>
 +
- Marcher <br> </blockquote>
 +
 
 +
Il y a cependant quelques imprécisions. Au niveau de la reconnaissance, il faut que la couleur soit unie et suffisamment différente du milieu ambiant. Le passage de la position debout à marcher n’est pas fluide (« crispation » du Nao)<br>
 +
 
 +
 
 +
Problèmes rencontrés:<br>
 +
<blockquote> 1 ) La détection d’une boite est trop aléatoire, elle est mal reconnue par le Nao.<br>
 +
2 ) Le déplacement du Nao n’est pas fluide <br> </blockquote>
 +
 
 +
Solution envisagée:<br>
 +
<blockquote> - Nous avons décidé d'utiliser des marques spéciales pour le Nao appelées NaoMark <br> </blockquote>
 +
 
 +
Objectifs pour la semaine 4:
 +
<blockquote> -Repérer un objet ou une marque qui ne soit pas face au Nao <br>
 +
-Se diriger vers l’objet précédemment repéré <br>
 +
-Synchroniser deux Nao sur chorégraphe. <br></blockquote>
 +
 
 +
 
 +
'''Semaines 4 et 5''' <br>
 +
 
 +
Nous avons réalisé deux taches importantes durant ces deux semaines. D’un coté la recherche et le déplacement vers une cible, de l’autre la synchronisation et l'amélioration durant les phases de prise et de déplacement avec un objet. L’objet avec lequel nous faisons nos tests est une boite en polystyrène (50x30x15 cm). <br> 
 +
 
 +
 
 +
Recherche de cible : <br>
 +
Nous utilisons à présent des « NaoMark ». [[Image:NaoMark_119.jpg|right|thumb|200px|''NaoMak N° 119'']]<br> Ces cibles sont facilement reconnaissables par le Nao. Chaque marque est interprétée par le Nao comme un nombre ce qui permet de les différencier. Le Nao peut ainsi savoir de quel coté de la boite il se trouve et connaitre les dimensions de celle-ci.<br>
 +
La recherche de NaoMark passe par deux étapes :<br>
 +
<blockquote>1) Il se met debout et sa tête balaye l’espace de gauche à droite (il couvre ainsi 50% de la pièce) à la recherche de NaoMark.<br>
 +
2) Une fois la marque détectée, il pivote sur lui même en direction de la marque,puis se dirige vers elle. <br></blockquote>
 +
 
 +
Synchronisation : <br>
 +
On souhaite synchroniser les Nao afin qu’ils prennent la boite en même temps pour ne pas la faire tomber de son support. Une fois synchronisés  ils se déplaceront à la même vitesse d’abord sur le coté pour ne pas heurter le support, puis ils avanceront vers l'avant ou l'arrière (en fonction du NAO. Enfin ils se placeront devant un autre support afin d'y déposer la boite. <br>
 +
<blockquote> -Création d'un menu pour sélectionner les actions que le Nao doit effectuer (facilité de gestion) </blockquote>
 +
 
 +
En attendant une synchronisation informatique (envoi d’un message par le réseau),les Nao sont synchronisés par un pic sonore (claquement de mains). <br>
 +
Les Nao sont face à la boite : <br>
 +
<blockquote> -au premier claquement ils s’accroupissent, <br>
 +
-au second ils tendent leurs mains sous la boite, <br>
 +
-au troisième ils se relèvent, <br>
 +
-au dernier ils effectuent leur déplacement. <br> </blockquote>
 +
 
 +
Problèmes rencontrés: <br>
 +
<blockquote>-Lors de la semaine 4 nous avons eu à faire à un gros problème logiciel avec l'un des NAO. Ce problème nous a considérablement ralenti pendant 3 séances (mauvais fonctionnement du NAO).<br>
 +
-Lorsque le Nao doit se dirige ver la NaoMark qui se trouve sur l'objet qu'il doit déplacer, il ne s'arrête pas devant l'objet mais continu d'avancer jusqu'à atteindre la NaoMark. Ce qui pose un problème car il vient se heurter à la boite en équilibre sur le support. <br>
 +
-La synchronisation des Nao fonctionne, mais les mouvements saccadés leur font perdre la boite. De plus ils ne se déplacent pas de la même façon (ils n’avancent ou ne reculent pas droit et pas sur les mêmes distances). <br></blockquote>
 +
 
 +
Objectifs pour la semaine 6: <br>
 +
<blockquote>
 +
        -Résoudre le problème de la collision entre le Nao et l'objet <br>
 +
-Assembler tous les programmes <br>
 +
-Améliorer la stabilité de la boite lors des déplacements  <br> </blockquote>
 +
 
 +
 
 +
'''Semaine 6''' <br>
 +
A ce stade d'avancement du projet nous avons réalisé plusieurs sous-programme permettant aux NAO d'effectuer les différentes actions définies dans le cahier des charges. Nous avons alors décidé d'assembler toutes ces sous-programme pour avoir un ensemble fonctionnel.
 +
Les problèmes liés au déplacement encore très (voir trop) aléatoire et aux collisions entre les NAO et la boite sont toujours présents.
 +
 
 +
Au vu du fonctionnement de notre programme nous pensons avoir atteint les limites des blocs du logiciel Choregraphe. En effet dès qu'il s'agit de créer des programmes plus conséquents l’ensemble devient très vite illisible et les conditions imposées rarement respectées (temps entre deux mouvements, déplacement position et angle). Nous avons décidés de réaliser nos propres blocs en utilisant des blocs "Script" dans lesquels il est nécessaire de programmer un python.<br>
 +
 
 +
Objectifs pour la semaine 7: <br>
 +
<blockquote>
 +
          -Résoudre le problème de la collision entre le Nao et l'objet <br>
 +
          -Réaliser la dépose de la boite sur un second socle
 +
          -Gérer les problèmes de déplacements(marche avant, arrière et sur les cotés)
 +
</blockquote>
 +
 
 +
'''Semaines 7 et 8''' <br>
 +
Durant ces deux semaines nous avons appris a faire bouger chaque articulation du NAO à l'aide de la classe ALmotion.
 +
Ceci nous a permis de régler chaque articulation ainsi que la vitesse pour accéder à une position donnée.
 +
 
 +
Objectifs pour la semaine 9: <br>
 +
<blockquote>
 +
          -Résoudre les problèmes de collisions entre le Nao et l'objet <br>
 +
</blockquote>
 +
 
 +
'''Semaine 9''' <br>
 +
Durant cette semaine la gestion des collisions a été réalisée grâce à un script python, permettant d'accéder directement aux valeurs des sonars du NAO et ainsi de régler la distance d'arrêt.
 +
 
 +
Le projet est donc fonctionnel, cependant certains problèmes n'ont pas pu être réglés car l'accès à bas niveau ne nous est pas permis par Aldebaran. Ainsi les problèmes de déplacement sont toujours présents.
 +
 
 +
Il nous reste maintenant à tourner la vidéo de présentation du projet.
 +
 
 +
'''Rapport de projet''' <br>
 +
[[Fichier:Rapport Appercé Tixier.pdf]]

Version actuelle datée du 3 juin 2014 à 14:46


Vidéo HD


Présentation du projet :

NAO

L’objectif de ce projet est de faire coopérer deux NAO afin qu’ils réalisent de façon synchrone une action. On souhaite leur faire réaliser une procédure qu'ils ne pourraient faire seuls (objet trop grand ou trop lourd).
Les NAO ne pouvant pas soulever une charge trop importante, nous avons décidé de leur faire porter une boite en carton de grande taille (environ celle d'un NAO). Pour cela, à l'aide du logiciel Choregraphe nous allons écrire un programme qui permettra aux deux NAO de repérer la boite, de se déplacer jusqu'à celle-ci, de se positionner de chaques côtés de celle ci, puis enfin de se synchroniser (par l'intermédiaire du réseau). Une fois les deux NAO en phase, ils soulèveront la boite et la déposeront à un endroit donné.





Cahier des charges :

Logicel Chorégraphe

Lors de ce projet, la programmation des NAO se fera à l'aide du logiciel Chorégraphe, développé par Aldebaran.
Grâce à ce logiciel nous pouvons choisir de programmer de façon graphique (à l'aide des boxs créées par Aldebaran), ou de programmer en Python.

Nous allons devoir employer ces deux types de programmations afin de développer les fonctions suivantes.

- Repérer un objet dans une pièce
- Placer les deux NAO de chaque coté de l’objet
- Utiliser le signal de synchronisation de l'autre projet "NAO"
- Soulever l’objet

- Déplacer l'objet jusqu’à un point donné

Pour permettre de créer certaines de ces fonctions nous devrons développer nos propres blocs en python. Afin d'enrichir et de faciliter l'utilisation des NAO, pour de futurs travaux pratiques ou projets, nous développerons un complément de la bibliothèque déjà existante.


Avancement du projet :

Semaine 1
Lors de cette première semaine, nous avons effectué des recherches sur le NAO afin d'effectuer les premiers réglages et de mieux comprendre son fonctionnement:

-Mise à jour des NAO

-Installation et découverte des logiciels Monitor et Choregraphe
-Découverte des librairies
-Découverte des blocs sous Choregraphe et réalisations de mouvements simples à l'aide de ces blocs (déplacement,position...)

-Vérification du bon fonctionnement des capteurs (avec Monitor)

Problèmes rencontrés:

-Problème d'équilibre du NAO
-Pas de bloc pour les opérations logique (AND,OR,IF....)

Objectifs pour la semaine 2:

-Régler les problèmes d'équilibre du NAO

-Réaliser des timelines afin de créer des mouvements pour que le NAO attrape un objet

-Faire marcher le NAO avec un objet dans les mains


Semaine 2
Lors de cette deuxième semaine , nous avons réalisé les objectifs fixés lors de la première semaine
Le NAO est maintenant capable de:

-Se baisser pour prendre un objet

-Se relever sans perdre l'équilibre

-Marcher avec l'objet dans les mains

Problème rencontré:

-Le NAO ne peut pas prendre un objet en le serrant entre ses deux mains. En effet s'il n'atteint pas la position finale alors il s'arrête

Objectifs pour la semaine 3:

-Détecter un objet dans la pièce

-Récupérer les coordonnées de l'objet pour que le NAO puisse aller le chercher

-Réaliser la synchronisation des deux NAO à l'aide de Chorégraphe


Semaine 3

Lors de cette troisième semaine, nous avons réalisé une partie des objectifs fixés la semaine précédente. Nous sommes capables de faire avec le Nao le scénario suivant :

- Reconnaissance de l’objet devant lui

- Aller vers l’objet
- S’arrêter
- Se mettre accroupi et prendre l’objet dans ses mains
- Se relever

- Marcher

Il y a cependant quelques imprécisions. Au niveau de la reconnaissance, il faut que la couleur soit unie et suffisamment différente du milieu ambiant. Le passage de la position debout à marcher n’est pas fluide (« crispation » du Nao)


Problèmes rencontrés:

1 ) La détection d’une boite est trop aléatoire, elle est mal reconnue par le Nao.
2 ) Le déplacement du Nao n’est pas fluide

Solution envisagée:

- Nous avons décidé d'utiliser des marques spéciales pour le Nao appelées NaoMark

Objectifs pour la semaine 4:

-Repérer un objet ou une marque qui ne soit pas face au Nao

-Se diriger vers l’objet précédemment repéré

-Synchroniser deux Nao sur chorégraphe.


Semaines 4 et 5

Nous avons réalisé deux taches importantes durant ces deux semaines. D’un coté la recherche et le déplacement vers une cible, de l’autre la synchronisation et l'amélioration durant les phases de prise et de déplacement avec un objet. L’objet avec lequel nous faisons nos tests est une boite en polystyrène (50x30x15 cm).


Recherche de cible :

Nous utilisons à présent des « NaoMark ».
NaoMak N° 119

Ces cibles sont facilement reconnaissables par le Nao. Chaque marque est interprétée par le Nao comme un nombre ce qui permet de les différencier. Le Nao peut ainsi savoir de quel coté de la boite il se trouve et connaitre les dimensions de celle-ci.

La recherche de NaoMark passe par deux étapes :

1) Il se met debout et sa tête balaye l’espace de gauche à droite (il couvre ainsi 50% de la pièce) à la recherche de NaoMark.
2) Une fois la marque détectée, il pivote sur lui même en direction de la marque,puis se dirige vers elle.

Synchronisation :
On souhaite synchroniser les Nao afin qu’ils prennent la boite en même temps pour ne pas la faire tomber de son support. Une fois synchronisés ils se déplaceront à la même vitesse d’abord sur le coté pour ne pas heurter le support, puis ils avanceront vers l'avant ou l'arrière (en fonction du NAO. Enfin ils se placeront devant un autre support afin d'y déposer la boite.

-Création d'un menu pour sélectionner les actions que le Nao doit effectuer (facilité de gestion)

En attendant une synchronisation informatique (envoi d’un message par le réseau),les Nao sont synchronisés par un pic sonore (claquement de mains).
Les Nao sont face à la boite :

-au premier claquement ils s’accroupissent,

-au second ils tendent leurs mains sous la boite,
-au troisième ils se relèvent,

-au dernier ils effectuent leur déplacement.

Problèmes rencontrés:

-Lors de la semaine 4 nous avons eu à faire à un gros problème logiciel avec l'un des NAO. Ce problème nous a considérablement ralenti pendant 3 séances (mauvais fonctionnement du NAO).

-Lorsque le Nao doit se dirige ver la NaoMark qui se trouve sur l'objet qu'il doit déplacer, il ne s'arrête pas devant l'objet mais continu d'avancer jusqu'à atteindre la NaoMark. Ce qui pose un problème car il vient se heurter à la boite en équilibre sur le support.

-La synchronisation des Nao fonctionne, mais les mouvements saccadés leur font perdre la boite. De plus ils ne se déplacent pas de la même façon (ils n’avancent ou ne reculent pas droit et pas sur les mêmes distances).

Objectifs pour la semaine 6:

-Résoudre le problème de la collision entre le Nao et l'objet
-Assembler tous les programmes

-Améliorer la stabilité de la boite lors des déplacements


Semaine 6
A ce stade d'avancement du projet nous avons réalisé plusieurs sous-programme permettant aux NAO d'effectuer les différentes actions définies dans le cahier des charges. Nous avons alors décidé d'assembler toutes ces sous-programme pour avoir un ensemble fonctionnel. Les problèmes liés au déplacement encore très (voir trop) aléatoire et aux collisions entre les NAO et la boite sont toujours présents.

Au vu du fonctionnement de notre programme nous pensons avoir atteint les limites des blocs du logiciel Choregraphe. En effet dès qu'il s'agit de créer des programmes plus conséquents l’ensemble devient très vite illisible et les conditions imposées rarement respectées (temps entre deux mouvements, déplacement position et angle). Nous avons décidés de réaliser nos propres blocs en utilisant des blocs "Script" dans lesquels il est nécessaire de programmer un python.

Objectifs pour la semaine 7:

-Résoudre le problème de la collision entre le Nao et l'objet
-Réaliser la dépose de la boite sur un second socle -Gérer les problèmes de déplacements(marche avant, arrière et sur les cotés)

Semaines 7 et 8
Durant ces deux semaines nous avons appris a faire bouger chaque articulation du NAO à l'aide de la classe ALmotion. Ceci nous a permis de régler chaque articulation ainsi que la vitesse pour accéder à une position donnée.

Objectifs pour la semaine 9:

-Résoudre les problèmes de collisions entre le Nao et l'objet

Semaine 9
Durant cette semaine la gestion des collisions a été réalisée grâce à un script python, permettant d'accéder directement aux valeurs des sonars du NAO et ainsi de régler la distance d'arrêt.

Le projet est donc fonctionnel, cependant certains problèmes n'ont pas pu être réglés car l'accès à bas niveau ne nous est pas permis par Aldebaran. Ainsi les problèmes de déplacement sont toujours présents.

Il nous reste maintenant à tourner la vidéo de présentation du projet.

Rapport de projet
Fichier:Rapport Appercé Tixier.pdf