Robots humanoïdes 2013 groupe I : Différence entre versions
(→Présentation du projet :) |
|||
(28 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | <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>'''== | =='''<span style="color:blue">Présentation du projet :</span>'''== | ||
− | [[Image: | + | [[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 | + | 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> | ||
− | == '''Cahier des charges :''' == | + | =='''<span style="color:blue">Cahier des charges :</span>'''== |
− | Lors de ce projet, la programmation des NAO se | + | [[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> | ||
− | Nous allons devoir employer ces deux types de | + | Nous allons devoir employer ces deux types de programmations afin de développer les fonctions suivantes. |
<blockquote> | <blockquote> | ||
- Repérer un objet dans une pièce<br> | - 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> | - Utiliser le signal de synchronisation de l'autre projet "NAO" <br> | ||
- Soulever l’objet <br> | - Soulever l’objet <br> | ||
− | - Déplacer | + | - 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> | ||
− | == '''Avancement du projet''' == | + | =='''<span style="color:blue">Avancement du projet :</span>'''== |
'''Semaine 1''' <br> | '''Semaine 1''' <br> | ||
Ligne 63 : | Ligne 71 : | ||
- Aller vers l’objet <br> | - Aller vers l’objet <br> | ||
- S’arrêter <br> | - S’arrêter <br> | ||
− | - Se mettre accroupi et prendre l’objet dans | + | - Se mettre accroupi et prendre l’objet dans ses mains <br> |
- Se relever <br> | - Se relever <br> | ||
- Marcher <br> </blockquote> | - Marcher <br> </blockquote> | ||
Ligne 85 : | Ligne 93 : | ||
'''Semaines 4 et 5''' <br> | '''Semaines 4 et 5''' <br> | ||
− | Nous avons | + | 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> | Recherche de cible : <br> | ||
− | Nous utilisons à présent des « | + | 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> | 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> | <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 | + | 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> | 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. | + | 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> | <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), | + | 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> | Les Nao sont face à la boite : <br> | ||
− | <blockquote> | + | <blockquote> -au premier claquement ils s’accroupissent, <br> |
-au second ils tendent leurs mains sous la boite, <br> | -au second ils tendent leurs mains sous la boite, <br> | ||
-au troisième ils se relèvent, <br> | -au troisième ils se relèvent, <br> | ||
Ligne 106 : | Ligne 114 : | ||
Problèmes rencontrés: <br> | Problèmes rencontrés: <br> | ||
− | Lors de la semaine 4 nous avons eu | + | <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 | + | -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> | + | -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> | Objectifs pour la semaine 6: <br> | ||
− | <blockquote> -Résoudre le problème de la collision entre le Nao et l'objet <br> | + | <blockquote> |
+ | -Résoudre le problème de la collision entre le Nao et l'objet <br> | ||
-Assembler tous les programmes <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> | Objectifs pour la semaine 7: <br> | ||
− | <blockquote> -Résoudre le problème de la collision entre le Nao et l'objet <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
Présentation du projet :
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 :
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
- Déplacer l'objet jusqu’à un point donné
- Placer les deux NAO de chaque coté de l’objet
- Utiliser le signal de synchronisation de l'autre projet "NAO"
- Soulever l’objet
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
-Vérification du bon fonctionnement des capteurs (avec Monitor)
-Découverte des librairies
-Découverte des blocs sous Choregraphe et réalisations de mouvements simples à l'aide de ces blocs (déplacement,position...)
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
- Marcher
- S’arrêter
- Se mettre accroupi et prendre l’objet dans ses mains
- Se relever
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 :
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 dernier ils effectuent leur déplacement.
-au troisième ils se relèvent,
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
-Améliorer la stabilité de la boite lors des déplacements
-Assembler tous les programmes
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