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

Robot Pavlov - Utilisation de réseaux neuronaux virtuels

Date d'initialisation : Juin 2007
État actuel : Terminé

Sommaire

Robot Pavlov - Utilisation de réseaux neuronaux virtuels

Sous-projets

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

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 du 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. À 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'adage "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 de la rétropropagation du gradient 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 pour débuter la robotique.

Photos


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

Schéma et Circuit Imprimé


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

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.

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

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.

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.

Par Vince le 18/06/2007

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

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.

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).

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.

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.

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.

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.

Par FreD le 21/06/2009

Je m’appelle Frédéric Nys et je suis un étudient de l’InRaCi.
Je tenais à te remercier car j’ai réalisé ton robot comme projet de fin de 6ème afin de devenir un Technicien en électronique.
Je suis maintenant un technicien en électronique et le jury m’a accordé le prix du jury.
J’ai aussi intégré le club robotique de l’InRaCi.
On aura peut-être la chance de se voir à une coupe de robotique.
Encore un grand merci, FreD.

Par Murex le 04/07/2010

Ça m intéresse beaucoups d'avoir des montages robotique comme ça .je suis dipolomier de l'electonique et maintenance

Laisser un commentaire

Merci de ne poster ici que des questions ou commentaires concernant réellement le projet présenté sur cette page. Si vous recherchez de l'aide pour réaliser vos propres projets, merci de vous tourner vers des forums appropriés tel que celui de Planète-Sciences (où je suis très présent).


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