/home/totofweb/homepage
Christophe Le Lann's Homepage v0.8
 

Robot Pavlov - Utilisation de réseaux neuronaux virtuels

Date d'initialisation : Juin 2007
Etat actuel : Terminé

Sommaire

Photo du projet

Sous-projets

Titre Date Etat
Base PC USB-XBee autoalimentée Mai 2007 Terminé

Haut de page

Description générale

Caractéristiques générales

Introduction

Voici là un robot bien compact, et pourtant si complet ! Il a été baptisé Pavlov en référence au célèbre scientifique Ivan Petrovitch Pavlov, dont les travaux sur le fonctionnement cérébral ont fait la renommée. Même si ce robot n'obéit pas réellement aux même règles comportementales que celles observées sur le chien du scientifique, ils ont tous deux un point commun : ils apprennent.

Comment un robot peut-il apprendre ? Tout simplement de la même manière que les organismes biologiques : en confiant la gestion de son comportement à un réseau de neurones. Si l'on ne peut bien évidemment pas implémenter de vrais neurones biologiques à l'intérieur d'un tel robot amateur, il est en revanche possible d'émuler leur comportement. En effet, même si le fonctionnement global du cerveau recèle encore de nombreux mystères, le comportement individuel des neurones biologiques est à ce jour plutôt bien compris. Chaque neurone réalise une fonction simple que l'on peut approcher avec des fonctions mathématiques simples.

Pour rester simple, les neurones seront organisés selon un réseau de type perceptron multicouches, et la méthode de la rétropropagation du gradient sera implémentée pour mettre en place un apprentissage non supervisé. Mais loin de moi l'idée de faire ici un cours sur les réseaux de neurones artificiels. Vous pourrez trouver de la documentation sur internet, et notamment sur Wikipedia :

Avant d'aller plus loin dans les détails de la programmation, laissez moi vous présenter la partie matérielle (mécanique et électronique) de ce petit robot.

Aspect mécanique

La partie mécanique est on ne peut plus sommaire. Elle a été réalisée par découpage au cutter de feuilles de plastique, selon le même procédé que celui décrit pour le robot Pidzy. Les divers éléments de la structure mécanique sont assemblés avec un pistolet à colle, ce qui permet de gagner en compacité même si ce n'est pas l'idéal s'il faut le démonter par la suite. A l'arrivée, cela permet tout de même d'obtenir un diamètre de seulement 10cm, pour une hauteur globale de 7cm (électronique incluse).

La motorisation est assurée par deux servomoteurs standards complètement évidés de leur électronique, et modifiés selon la technique classique pour obtenir une rotation continue.

Aspect électronique

L'électronique a été divisée en deux circuits imprimés :

En raison de la compacité du robot, il a été nécessaire d'utiliser des circuits imprimés double-couche à trous métallisés. Il est possible d'en faire faire pour un très bon prix chez Futurlec.

Pour ce qui est de l'alimentation, là encore la contrainte principale est l'encombrement et le poids. J'ai choisi d'utiliser une simple pile 9V (un pack d'accus NiCd est inenvisageable), mais il est aussi possible d'utiliser des batteries au Lithium (lithium-ion, voire lithium-polymère), qui ont l'avantage d'être très légères et très compactes.

Aspect informatique

Mais sur quoi l'apprentissage va-t-il se baser ? Le but est que ce robot puisse "apprendre" seul à se déplacer. Il faut pour cela lui inculquer quelques règles fondamentales et le laisser faire. Ces règles lui permettent d'évaluer la pertinence de son comportement, pour distinguer les actions efficaces des erreurs.

Par exemple, une règle peut être de sanctionner fortement le contact avec un obstacle alors que les capteurs à distance avaient déjà détecté cet obstacle. Une autre règle (pour éviter qu'il n'adopte l'adate "qui ne risque rien n'a rien") peut être de sanctionner faiblement l'inaction totale (obliger le robot à se déplacer continuellement).

Toutes ces règles permettront à l'algorithme superviseur d'attribuer une note au comportement du robot, jugeant de son efficacité. L'apprentissage va donc consister à trouver le comportement le plus optimisé, c'est-à-dire celui pour lequel la fonction d'erreur (définie comme la note maximale possible moins la note actuelle) est minimale.

Par manque de temps (à cause d'une participation en parallèle à la coupe de France de robotique), le développement du réseau de neurones est suspendu. Cela viendra probablement plus tard. En attendant, cette page contient déjà toutes les informations nécessaires pour réaliser un robot semblable et lui faire faire tout ce que vous voulez (déambulation avec évitement d'obstacles, détection d'absence de sol, utilisation du lcd, communication série sans fil, ...), ce qui en fait un très bon robot de développement.

Haut de page

Photos


Cliquez pour voir la photo en grand
arriere.jpg
Vue de l'arrière du robot.
Cliquez pour voir la photo en grand
barriere.jpg
Vue de la barrière de capteurs (IR et de contact) qui entoure le robot.
Cliquez pour voir la photo en grand
capteurs.jpg
Zoom sur les différents capteurs du robot (capteurs IR au sol, capteurs IR d'obstacle, capteurs de contact)
Cliquez pour voir la photo en grand
demarrage.jpg
Message de démarrage sur l'écran LCD.
Cliquez pour voir la photo en grand
dessous.jpg
Dessous du robot, contenant tous les capteurs.
Cliquez pour voir la photo en grand
dessus.jpg
Dessus du robot, contenant toute l'intelligence du robot ainsi que quelques périphériques (écran LCD, buzzer, liaison sans fil).
Cliquez pour voir la photo en grand
facade_avant.jpg
Base Usb-Xbee utilisée pour communiquer à distance avec le robot pavlov, et le reprogrammer à distance par un bootloader.
Cliquez pour voir la photo en grand
global.jpg
Vue globale du robot.
Cliquez pour voir la photo en grand
monitoring.jpg
Monitoring permanent de l'état des capteurs sur l'écran LCD.
Cliquez pour voir la photo en grand
roues.jpg
Nouvelles roues plus jolies avec un grip plus épais.
Cliquez pour voir la photo en grand
vue1.jpg
Vue globale du robot.
Cliquez pour voir la photo en grand
vue2.jpg
Vue globale du robot.

Haut de page

Schéma et Circuit Imprimé


Cliquez pour voir la photo en grand
Bas.brd
Typon de la carte du bas, contenant tous les capteurs.
Cliquez pour voir la photo en grand
Bas.sch
Schéma de la carte du bas, contenant tous les capteurs.
Cliquez pour voir la photo en grand
Haut.brd
Typon de la carte du haut, contenant le microcontrôleur et le LCD.
Cliquez pour voir la photo en grand
Haut.sch
Schéma de la carte du haut, contenant le microcontrôleur et le LCD.
Cliquez pour voir la photo en grand
schema bas.png
Schéma de la carte du bas, contenant tous les capteurs.
Cliquez pour voir la photo en grand
schema haut.png
Schéma de la carte du haut, contenant le microcontrôleur et le LCD.
Cliquez pour voir la photo en grand
typon bas.png
Typon de la carte du bas, contenant tous les capteurs.
Cliquez pour voir la photo en grand
typon haut.png
Typon de la carte du haut, contenant le microcontrôleur et le LCD.

Haut de page

Commentaires des visiteurs

Laisser un commentaire

Par pierre-luc le 12/04/2007

Une mécanique et électronique très propre. Bravo !

Si tu ne veux pas tout coder pour le réseau neuronal, je te recommande la librairie FANN. Comme je vois que tu as un module xbee... c'est certainement pour communiquer avec un ordinateur qui ne serait pas gêné par un tel calcul.

Haut de page

Par Georges le 23/04/2007

Très belle réalisation.

De plus je recommande les circuits Atmel et les modules XBEE.
Je suis curieux de voir la suite.

            Georges

Haut de page

Par Georges le 30/04/2007

Tres bien, je pense en construire un.
Domage qu'il n'y a pas un bouton ou deux sur la carte CPU pour pouvoir construire un start / stop.

Haut de page

Par Totofweb le 30/04/2007

Georges> Il n'y a malheureusement plus aucune entrée de libre sur le microcontrôleur pour ajouter le moindre bouton. Néanmoins, si vous avez réellement besoin de boutons, deux solutions s'offrent à vous : soit supprimer des fonctionnalités que vous jugez inutiles (capteurs de présence de sol, buzzer, ...), soit utiliser un circuit intégré de multiplexage. C'est justement pour que chacun puisse faire ses propres aménagements que je fournis toujours les fichiers source Eagle.

Haut de page

Par Vince le 18/06/2007

Très beau robot, simple mais efficace et ça me donne quelque idées pour mon 1er robot :-)

Haut de page

Par neoraptor le 26/07/2007

Tout d'abord félicitation pour tes nombreux projets et la qualité de ceux-ci.

Est-ce que tu pourrais fournir de la documentation sur les réseaux neuroneaux virtuels?

J'attends avec impatience la fin de ce projet.

Haut de page

Par Totofweb le 27/07/2007

Neoraptor> Comme il l'est dit, c'est parce que la mise en place des réseaux de neurones virtuels et de l'autoapprentissage n'est pas encore achevé que le code et toutes les explications ne sont pas encore parues. Pour information, j'ai pour le moment codé un réseau perceptron monocouche et ce qui est le gros de mon travail est la mise en place de l'autoapprentissage (j'essaie d'implémenter pour le moment la méthode de rétropropagation du gradient).

Haut de page

Par Leon le 09/08/2007

Ca c'est une belle réalisation, très propre, bien fini, et tout et tout. Pas facile de faire un robot aussi compact.
Bravo, donc!

Et on est impatient de le voir à l'oeuvre, surtout dans ses différentes phases d'apprentissage.

Sinon, les concours? Tu es admis? Ou ça?

Leon.

Haut de page

Par Totofweb le 09/08/2007

Leon> Les concours se sont très bien passés. Je suis admis à Supélec, qui était l'école que je désirais le plus, donc tout va bien de ce côté-là.
Pour le développement de l'IA de ce robot, il va y avoir un petit contretemps étant donné que l'on m'a proposé un travail d'été très intéressant dans une boîte d'électronique, qui malheureusement me monopolise de 7h à 23h... Mais promis, je me remet sur le développement de l'IA de Pavlov dès mon retour, début Septembre.

Haut de page

Par Lyra le 17/11/2007

Tout d'abord félicitations pour cette petite merveille.

J'aimerais savoir si toutes les IA utilisent un réseau de neurones pour apprendre ?

Merci d'avance et bonne chance pour la suite.

Haut de page

Par Totofweb le 18/11/2007

Lyra> Une "Intelligence Artificielle" est un terme un peu flouderrière lequel on peut mettre beaucoup de choses. Les réseaux de neurones ne sont la version artificielle de l'intelligence biologique, mais il existe d'autres types de systèmes, dont on est loin d'avoir fait le tour actuellement.

Haut de page

Laisser un commentaire


Pseudo
Mail (facultatif)
Votre message
erreur de génération du cryptogramme visuel. Veuillez recopier le cryptogramme visuel :

Haut de page