Étendre les capacités de Nao grâce au Cloud
L’auteur: | Damien Lefebvre |
Technologies utilisées: | Python, Nao, Azure |
Niveau de difficulté: | 100 |
Introduction
Cet article explique comment permettre à Nao de communiquer avec un service hébergé sur Windows Azure, grâce à un module écrit en python.
Avant de commencer, je vais vous présenter Nao :
Nao est un robot humanoïde programmable mesurant 58 cm, il a été conçu par la société française Aldebaran en 2006 et mis à disposition au MIC. Il possède une série de capteurs tels que des sonars, des caméras hautes définition, des microphones, des détecteurs de collisions et de chutes. Il est constitué aussi de moteurs lui servant d’articulations.
Utiliser Azure pour améliorer et contrôler Nao.
J’ai principalement utilisé Azure pour deux raisons :
- Augmenter sa puissance de calcul
- Donner la possibilité de le contrôler à distance.
En effet, le robot Nao est limité par ses composants et son processeur ne lui permet pas de réaliser de gros traitements par lui-même. Le connecter à un service Azure permet alors de décentraliser les traitements, de la même manière que si l’on venait greffer un deuxième processeur sans limite sur Nao.
Ensuite, un service Azure permet de communiquer avec Nao sans devoir passer par le réseau local. Il est alors possible de le contrôler depuis n’importe où pour peu que l’on ait accès à internet.
Procédé mis en place
La réalisation d’un module Python est nécessaire afin de connecter un robot humanoïde Nao avec Windows Azure.
Pour pouvoir réaliser des calculs sur Windows Azure, il a fallu que j’utilise les services web de Azure avec le protocole SOAP (Simple Object Access Protocol). Ce protocole permet l’échange d’informations au format XML avec un client distant.
Passons maintenant à l’explication du module :
Tout d’abord, pour la création du module nous allons avoir besoin de SUDS. Il s’agit d’une librairie python permettant de consommer des services web.
La méthode que nous allons décrire est une méthode permettant au robot Nao de communiquer avec un service web Azure afin de récupérer un entier.
import client #~On charge la bibliothèque client URL = 'http://yourService.cloudapp.net/Service1.svc?wsdl'#~On met l’url du service web en mémoire _server = client.Client(URL) #~On crée un client pour le serveur try: if _server is None: #~On test l’existence du serveur et on renvoie un message d’erreur s’il n’existe pas exit(msg="Error can't connect to :%s" % URL) else: msg = _server.service.GetMove()#~on récupère l’entier du service web et on le place dans msg self.log(msg) #~on met le contenu de msg dans les log self.msg(str(msg)) #~on cast msg en string et on le met sur la sortie except: #~S’il y a une erreur on renvoie le message suivant self.msg("il doit y avoir une exception") pass
Comme on peut le constater, contacter un service web reste une chose très simple, même en python. Le service web utilisé ici est un service déployé sur le Cloud via Windows Azure, mais il est également possible d’utiliser un service web local ou déployé sur un autre type de serveur.
Si l’on reprend le code ci-dessus pour le décortiquer un petit peu, on peut noter 3 lignes importantes.
Premièrement, l’import des librairies nécessaires pour la communication avec le service web se fait via le mot clé import:
import client
Ensuite, pour pouvoir accéder au service web, on fait appel à la librairie en utilisant l’url de découverte du service.
_server = client.Client(URL)
Et pour finir on peut faire appel aux méthodes définies par le service.
msg = _server.service.GetMove()
Le retour de la méthode GetMove est placé directement dans une variable, pour l’utiliser plus tard dans le module.
C’est tout ce qu’il faut pour réaliser un module python pour Nao!
À propos de l’auteur
Je m’appelle Damien Lefebvre, je suis stagiaire au Microsoft Innovation Center de Mons, et j’ai réalisé un projet mêlant le robot humanoïde Nao, la caméra Kinect ainsi que Windows Azure. Je suis passionné de jeux vidéo à tel point que j’en ai réalisés avec quelques amis sur Windows Phone ! |
/DamienLefebvre@Lefebvre_Damien |
1 commentaire
Quelques articles publiés par nos stagiaires | Stage IT · 07/09/2012 à 1:58
[…] Étendre les capacités de Nao grâce au cloud […]
Les commentaires sont fermés.