Robot Pavlov - Utilisation de réseaux neuronaux virtuels
Date d'initialisation : Juin 2007
État actuel : Terminé
Sommaire
- Liste des sous-projets
- Description générale
- Photos
- Schéma et Circuit Imprimé
- Commentaires des visiteurs
Sous-projets
Titre | Date | État |
Base PC USB-XBee autoalimentée | Mai 2007 | Terminé |
Description générale
Caractéristiques générales
- Deux servomoteurs évidés de leur électronique pour le déplacement (30cm/s)
- Très compact (rentre dans un cube de 10cm de côté)
- Communication série sans fil avec un ordinateur
- Piloté par un AtMega32 à 16MHz, éventuellement secondé par un ordinateur distant pour les gros calculs via la liaison série sans fil
- Buzzer d'alerte
- Ecran LCD
- Retour analogique de l'état de la batterie
- Capteurs d'obstacles par InfraRouge
- Capteurs d'obstacles par contact
- Capteurs de présence de sol par InfraRouge
- Nombreux comportements possibles :
- Déambulation avec évitement d'obstacles
- Déambulation avec détection d'absence de sol (pour ne pas tomber dans les escliers)
- Téléopération depuis un ordinateur
- Coopération multi-robots par la liaison série sans fil
- Mise en place de réseaux de neurones avec autoapprentissage
- Peu cher au regard des possibilités offertes (environ 150€)
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 :
- Neurone formel
- Réseau de neurones
- Perceptron
- Rétropropagation du gradient
- Apprentissage non supervisé
- Éviter les obstacles avec un réseau de neurones
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 :
- Le premier, situé sous le robot, est le support de l'ensemble des capteurs du robot : une barrière de capteurs de contact (des boutons poussoirs de CI verticaux KSA), une barrière de capteurs infrarouges (IS471F), et des capteurs infrarouges au sol (CNY70) pour détecter le vide.
- Le second, situé en haut du robot, comporte le reste de l'électronique : le micro-contrôleur (AVR AtMega16 à 16MHz), l'électronique de puissance (pont en H intégré L293D), l'écran LCD (alphanumérique 2x16 caractères à pilotage parallèle utilisé en mode 4bits), le buzzer ainsi qu'un module Xbee, permettant une communication série sans fil vers un ordinateur (et éventuellement une reprogrammation sans fil en utilisant un bootloader) au moyen de la base PC USB-Xbee.
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

Zoom sur les différents capteurs du robot (capteurs IR au sol, capteurs IR d'obstacle, capteurs de contact)

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.
Schéma et Circuit Imprimé
Commentaires des visiteurs
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).