MIC

Étendre les capacités de Nao grâce au Cloud

Publié par admin le

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
Print Friendly, PDF & Email
Catégories : Développeurs

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.