Fichier PDF

Partage, hébergement, conversion et archivage facile de documents au format PDF

Partager un fichier Mes fichiers Convertir un fichier Boite à outils PDF Recherche PDF Aide Contact



Projet .pdf



Nom original: Projet.pdf

Ce document au format PDF 1.4 a été généré par TeX / pdfTeX-1.40.10, et a été envoyé sur fichier-pdf.fr le 28/05/2012 à 17:27, depuis l'adresse IP 86.72.x.x. La présente page de téléchargement du fichier a été vue 1909 fois.
Taille du document: 10.5 Mo (49 pages).
Confidentialité: fichier public




Télécharger le fichier (PDF)









Aperçu du document


Table des mati`
eres
Introduction

4

1 Intelligence artificielle, robotique comportementale, robotique humano¨ıde
1.1 De l’intelligence artificielle `
a la robotique comportementale . . . . . . . . . . .
1.1.1 Notions d’intelligence artificielle . . . . . . . . . . . . . . . . . . . . . .
1.1.2 Intelligence faible : intelligence artificielle classique . . . . . . . . . . . .
1.1.2.1 Architecture classique de la robotique . . . . . . . . . . . . . .
1.1.2.2 L’application d’une telle architecture . . . . . . . . . . . . . .
1.1.3 L’apparition de nouvelles id´ees . . . . . . . . . . . . . . . . . . . . . . .
1.1.3.1 Brooks et l’architecture `a subsomption . . . . . . . . . . . . .
1.1.3.2 Pattie Maes et l’architecture `a s´election d’actions . . . . . . .
1.1.4 Les syst`emes multi-agents . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Robotique comportementale . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Neurones Artificiels . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1.1 Sch´ema neuronal type : utilisation du perceptron monocouche
1.2.1.2 Perceptron multi couches . . . . . . . . . . . . . . . . . . . . .
1.2.1.3 Apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1.3.1 Descente du gradient . . . . . . . . . . . . . . . . . .
1.2.1.3.2 R`egle de Widrow-Hoff . . . . . . . . . . . . . . . . . .
1.2.1.3.3 R´etropropagation . . . . . . . . . . . . . . . . . . . .
1.2.2 Programmes ´evolutifs . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.1 Codage des donn´ees . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.2 Evaluation de la population . . . . . . . . . . . . . . . . . . . .
1.2.2.3 S´election . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.4 Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.5 Remplacement des individus . . . . . . . . . . . . . . . . . . .
1.2.2.6 Comparaison avec le crit`ere d’arrˆet . . . . . . . . . . . . . . .
1.3 Robotique humano¨ıde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Les enjeux de la robotique humano¨ıde . . . . . . . . . . . . . . . . . . .
1.3.2 Les difficult´es m´ecatroniques . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2.1 Le d´eplacement par la marche . . . . . . . . . . . . . . . . . .
1.3.2.2 Les muscles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2.3 Le visage et les capteurs . . . . . . . . . . . . . . . . . . . . . .
1.3.2.3.1 Le capteur `a ultrasons . . . . . . . . . . . . . . . . . .
1.3.2.3.2 Le capteur `a infrarouges . . . . . . . . . . . . . . . .
1.3.2.3.3 Les cam´eras . . . . . . . . . . . . . . . . . . . . . . .
1.3.2.3.4 Les visages . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3 La relation homme-machine . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3.1 Une peur aliment´ee par les arts du XX`eme si`ecle . . . . . . . .
1.3.3.2 Le simulacre de l’Homme . . . . . . . . . . . . . . . . . . . . .
1.3.3.3 La simulation des ´emotions . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

5
5
5
5
5
6
6
7
7
8
9
9
10
10
11
11
11
12
12
12
13
13
13
14
14
14
14
14
15
16
17
17
17
18
18
18
18
19
19

2 M´
ecanismes de fabrication
2.1 Pr´esentation et conceptualisation . . . . . . . . . .
2.2 Montage ´electronique . . . . . . . . . . . . . . . . .
2.2.1 Electronique analogique . . . . . . . . . . .
2.2.2 Electronique num´erique : entr´ees et sorties .
2.2.2.1 Donn´ees en entr´ee . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

20
20
20
20
22
22

2

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

CPBx

2.3

Robotique humano¨ıde, robotique comportementale

2.2.2.2 Donn´ees en sortie . . . . . . . . . . . . .
2.2.2.3 Alimentation . . . . . . . . . . . . . . . .
Programmation du robot . . . . . . . . . . . . . . . . . .
2.3.1 Approche de l’algorithme . . . . . . . . . . . . . .
2.3.2 Algorithme et pseudo-code . . . . . . . . . . . . .
2.3.3 Codage du microcontrˆ
oleur . . . . . . . . . . . . .
2.3.3.1 Les PORTs . . . . . . . . . . . . . . . . .
2.3.3.2 Les registres TRIS . . . . . . . . . . . . .
2.3.3.3 Algorithmique propre au microcontrˆoleur
2.3.3.4 Contrˆ
ole de l’´ecran LCD . . . . . . . . .
2.3.4 Connexion au PIC . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

23
23
23
23
24
25
25
25
25
26
26

Conclusion

27

Annexes

29

Notions de programmation : le langage C

29

Notions d’´
electronique

34

Glossaire

36


ef´
erences
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sitographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39
39
39

Documents en annexe
Blocs composant le PIC, version d´etaill´ee . . . . . . . . .
Adresses des modules : carte de la m´emoire . . . . . . . .
Ports du PIC16 . . . . . . . . . . . . . . . . . . . . . . . .
Connexion du PIC16 aux autres composants ´electroniques
Algorithme complet . . . . . . . . . . . . . . . . . . . . .

41
41
42
43
44
45

Remerciements

Lefevre Yoan, Rozenbaum Chlo´e

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

49

3

11 mai 2012

Introduction
Depuis toujours, l’homme a cherch´e `
a animer les objets, que ce soit par les mythes (mythe du g´eant de
ˆ
bronze Talos en -2000 ou du golem au Moyen-Age),
par ses repr´esentations du monde, par les arts (sculptures
anim´ees en Egypte en -1000) ainsi que par les automates.
En 1923, Karel Capek invente le mot ”robot” dans sa pi`ece de th´eˆatre R.U.R. (Rossum’s Universal
Robots). Dans la langue tch`eque, ”robota” signifie travail forc´e.
Mais le d´ebut de la robotique ne date vraiment que de f´evrier 1946, lorsque le premier ordinateur est
cr´e´e `
a l’universit´e de Pennsylvanie. Il est appel´e ENIAC (Electronic Numerical Integrator and Computer) et
n´ecessite un local de 140m2 , p`ese 30 tonnes, comprend 18 000 tubes `a vide et plusieurs centaines de cˆables,
dont le d´eplacement est n´ecessaire pour modifier les op´erations. Cela marque le d´ebut de la programmation,
et donc de la commande automatis´ee d’une machine. Aujourd’hui, un robot peut ˆetre d´efini comme ´etant une
machine dot´ee d’une m´emoire et d’un programme capable de se substituer `a l’homme pour effectuer certains
travaux. Ainsi il agit physiquement sur son environnement pour y ex´ecuter des tˆaches et doit savoir s’adapter
pour mener `
a bien sa mission.
Au milieu du XX`eme si`ecle, une premi`ere g´en´eration de robot naquit. Celle-ci ´etait proche des automates.
Les robots avaient une fonction propre assign´ee, programm´ee, et enti`erement ind´ependante de l’environnement, telle que d´ecouper une pi`ece de m´etal, la souder... Et en 1961, le premier robot industriel brevet´e,
Unimate, un gros bras articul´e, est cr´e´e par George C.Devol.
En 1950, apparait une nouvelle g´en´eration de robots, avec les tortues Elmer et Elsie de Grey Walter.
Ce sont des petits robots mobiles autonomes, capables de se guider grˆace `a leurs capteurs de lumi`ere et de
contact. Il s’agit donc de robots capables de capter leur environnement visuellement et tactilement, et de
modifier son comportement en cons´equence.
Le seul obstacle est que ces robots fonctionnent uniquement grˆace `a des algorithmes pr´eprogramm´es, ils
sont incapables de pr´evoir, de concevoir des actions par eux-mˆemes. Des chercheurs comme John McCarthy ou
Marvin Lee Minsky recherch`erent donc des solutions. Leur objectif est de doter ces syst`emes d’une intelligence
leur permettant d’effectuer des tˆ
aches par eux-mˆemes, et de leur propre initiative. Ce serait la condition
n´ecessaire et suffisante pour int´egrer des robots parmi nous, `a notre image par leur physique, mais ´egalement
leurs capacit´es cognitives. La solution `
a cet handicap serait l’intelligence artificielle forte : une mani`ere de
simuler l’intelligence humaine, l’instinct et la capacit´e d’apprentissage, et ainsi de permettre aux robots
d’acqu´erir de nouveaux mouvements, de nouveaux comportements, en totale autonomie. C’est l’apparition
d’une troisi`eme g´en´eration de robots.
D`es les ann´ees 70, la reproduction de la marche, de la physiologie humaine se d´eveloppent. Les robots
Wabot (1973) et les robots de la marque Honda (1986) sont les pr´ecurseurs de cette nouvelle robotique
humano¨ıde. De plus, dans les ann´ees 90, suite `a de r´eels progr`es scientifiques dans la compr´ehension de
la nature humaine et animale, les recherches commencent `a s’inspirer de la nature du corps et du cerveau
(animal ou humain) afin de reproduire les capacit´es d’action et de compr´ehension naturelles que les esp`eces
ont r´eussi `
a acqu´erir depuis des milliers d’ann´ees. Ces ´etudes sont aujourd’hui au centre de la recherche sur
la robotique, et c’est donc ce `
a quoi nous nous sommes int´eress´es.
Pour cela, nous avons choisi de diviser notre travail en deux parties. Une premi`ere sera consacr´ee `
a la
th´eorie concernant l’intelligence artificielle et l’impl´ementation de la capacit´e d’apprentissage, ainsi qu’`
a la
robotique humano¨ıde. Puis, dans un autre temps, nous nous int´eresserons `a l’un des ´el´ements fondamentaux
dans la robotique aujourd’hui : les capteurs. Pour cela, nous expliquerons la conception d’un syst`eme capable
de d´etecter la pr´esence ou non d’une source lumi`ere ponctuelle (diode) et de compter combien il en a aper¸cu.
4

Chapitre 1

Intelligence artificielle, robotique
comportementale, robotique
humano¨ıde
1.1
1.1.1

De l’intelligence artificielle `
a la robotique comportementale
Notions d’intelligence artificielle

Le terme d’intelligence artificielle (IA) a ´et´e invent´e par John McCarthy en 1955. Elle fut d´efinie un
peu plus tard par Marvin Lee Minsky (autre pionnier de l’IA) comme : ”la construction de programmes
informatiques qui s’adonnent `
a des tˆ
aches qui sont, pour l’instant, accomplies de fa¸con plus satisfaisante
par des ˆetres humains car elles demandent des processus mentaux de haut niveau tels que : l’apprentissage
perceptuel, l’organisation de la m´emoire et le raisonnement critiqu´e”. L’IA est donc principalement inspir´ee
de l’intelligence cognitive c’est `
a dire de la manipulation de donn´ees dans un syst`eme central de traitement
de l’information.
Mais alors, comment peut-on affirmer qu’une machine fasse preuve d’intelligence ? En 1950, Alan Turing
invente un test permettant de r´epondre `
a cette question. Il comprend deux ´etapes. Pendant la premi`ere, un
op´erateur correspond, `
a travers une machine, avec un homme et une femme. Il doit reconnaˆıtre lequel des
deux est la femme. Pendant la seconde partie, il correspond alors avec une machine et un ˆetre humain et
doit trouver qui est la machine. S’il n’y parvient pas, c’est que la machine a su tromper son correspondant
et pr´etendre qu’elle est humaine.
On distingue ´egalement l’intelligence forte et faible. L’intelligence forte a pour but de permettre `a des
machines d’´eprouver des sentiments et une v´eritable conscience (ou capacit´e `a comprendre et `a savoir que
l’on existe). On parle aussi de cognition artificielle. Elle est encore inaccessible aujourd’hui mais reste un
des objectifs principal des chercheurs. L’intelligence faible concerne les programmes visant `a simuler une
intelligence artificielle selon des r`egles bien sp´ecifiques, et ne disposant donc pas d’une v´eritable capacit´e `
a
r´efl´echir et `
a comprendre. Le seul but ici est de produire un syst`eme autonome. Ce syst`eme est alors mal
adapt´e dans un environnement r´eel, non connu au d´epart. Nous traiterons de l’intelligence faible dans une
premi`ere partie, afin de permettre une comparaison. En effet, la robotique comportementale est un exemple
mˆeme du d´eveloppement de l’intelligence forte de nos jours. On ne prendra ´egalement en compte ici que des
cas o`
u le robot poss`ede une certaine autonomie d´ecisionnelle, afin d’´etudier pleinement son comportement
intelligent, adapt´e `
a son milieu.

1.1.2

Intelligence faible : intelligence artificielle classique

1.1.2.1

Architecture classique de la robotique

Dans l’intelligence artificielle classique, le robot doit ˆetre capable de prendre en compte n’importe quelle
situation pour agir de la mani`ere que lui dicte son programme. Ainsi, grˆace `a ses capteurs, il re¸coit des
informations externes. Celles-ci lui permettent de cr´eer une repr´esentation interne de son environnement. Ses
algorithmes vont alors ˆetre activ´es selon la situation reconnue pour planifier des tˆaches et agir en cons´equence.
Cependant, un tel syst`eme a plusieurs inconv´enients. Il ex´ecute les processus les uns apr`es les autres. Cela
prend du temps. De plus, la panne ou le dysfonctionnement d’un seul de ces processus entraˆıne l’arrˆet complet
du fonctionnement du robot. Ce syst`eme est aussi bas´e sur une connaissance parfaite de l’environnement.
En effet, la reconnaissance du monde ext´erieur, sa mod´elisation dans “l’esprit” du robot, repose sur une
5

CPBx

Robotique humano¨ıde, robotique comportementale

Figure 1.1 – Syst`eme de contrˆole `a d´ecoupage vertical : architecture classique
reconnaissance de symboles pr´e-connus. Inculquer au robot une repr´esentation compl`ete et valable en toutes
circonstances est alors impossible.
1.1.2.2

L’application d’une telle architecture

De 1984 `
a 1990, Lenat et Guha tentent d’apprendre `a leur robot Cyc des notions qui sont pour nous
naturelles, afin qu’il puisse communiquer oralement avec les humains. ”Cyc devait ´elaborer son sens commun
en organisant des connaissances de tout ordre”, donn´ees sous forme de propositions telles que :
“Les m`eres sont plus ˆ
ag´ees que leurs enfants. Pour manger, il faut ˆetre r´eveill´e. Quand les gens meurent, ils
restent morts. Tout arbre est une plante. Quand le pr´esident Lincoln ´etait `a Washington, son pied gauche y
´etait aussi. Son nom et sa date de naissance n’ont pas chang´e au cours de sa vie.”
Mais pour analyser ces donn´ees, l’ordinateur doit savoir comment distinguer une m`ere d’un enfant, qu’est
ce que manger, dormir, ˆetre mort, un arbre, une plante, les diff´erences avec les hommes... Il a donc besoin
d’´enorm´ement de notions pr´ealables pour diff´erencier ce qui nous paraˆıt pourtant ´evident. Cette quantit´e
de pr´e-requis est une premi`ere difficult´e. Pour ceci, l’homme a donc r´ealis´e une repr´esentation formalis´ee de
l’univers. Il a organis´e, tri´e les informations concernant une entit´e et l’a d´efinie clairement comme un ensemble
de propri´et´es, fonctions, r`egles, liens. Les exp´eriences avec Cyc n’aboutirent pas, probablement parce que sa
repr´esentation du monde ext´erieur n’´etait pas bas´ee sur des donn´ees issues de capteurs (`a l’instar de tout ˆetre
biologique, humain ou non) mais uniquement sur les propositions qui lui ´etaient donn´ees. Il ne put donc pas
lier les informations re¸cues `
a l’aide de sa propre exp´erience, afin de comprendre pleinement son environnement
physique et social.

1.1.3

L’apparition de nouvelles id´
ees

Le robot est en constante interaction grˆace `a son syst`eme sensoriel (capteurs de toutes sortes), `a son
syst`eme de traitement de l’information et a` son syst`eme moteur. Pour Roodney Brooks (1990) ou John
Dewey(1994), le bon fonctionnement du robot dans le monde r´eel r´eside dans l’association des trois pour
cr´eer une machine dynamique et efficace. Pour Dewey plus pr´ecis´ement, le syst`eme sensoriel est ind´ependant
du syst`eme moteur. C’est l’ensemble qui d´etermine la perception que le robot a de l’environnement, et non
pas les capteurs seuls. En effet, le d´eplacement, par exemple, contribue directement `a la perception du milieu.
Cette th´eorie est confirm´ee par de nombreux exemples. Il y a en outre l’exp´erience sur les chatons de
Held et Hein en 1964. Pendant 10 semaines, des chatons sont ´elev´es dans le noir. Ils sont s´epar´es en deux
groupes. Le premier peut se d´eplacer librement. Le deuxi`eme est r´eparti dans des nacelles que le premier
groupe tracte, et n’exp´erimentent pas le d´eplacement par eux-mˆemes. Ainsi, les deux groupes d´ecouvrent
visuellement leur milieu. Cependant, le deuxi`eme n’a aucune notion de la profondeur : lˆach´e dans le milieu,
il ne parvient pas `
a ´eviter les obstacles. Le robot Famez (par Marinus Maris) associe ´egalement sa vision `
a
son d´eplacement pour ´evaluer la distance le s´eparant d’un obstacle et la trajectoire `a suivre pour l’´eviter. Il
ne peut juger de la distance uniquement avec sa vision puisque “lorsqu’il s’approche d’un obstacle, il tourne
a gauche ou a droite : il utilise aussi son d´eplacement. Si la distance s´eparant le robot de l’obstacle continue
`
de diminuer, il inverse son choix. “(Des moutons et des robots, Pierre Arnaud) Et cela se r´ep`ete jusqu’`
a ce
que l’obstacle s’´eloigne. De nouvelles approches sont propos´ees pour r´epondre au probl`eme, souvent inspir´ees
de la biologie. Celles-ci sont bas´ees sur deux grands principes. Le robot ne doit pas avoir de repr´esentation
pr´ed´efinie interne du monde ext´erieur. De plus, la prise de d´ecision doit se faire dans des modules s´epar´es et
non pas dans un seul “organe” qui serait incapable de g´erer toutes les informations, de mani`ere appropri´ee
aux multiples situations.
Lefevre Yoan, Rozenbaum Chlo´e

6

11 mai 2012

CPBx

1.1.3.1

Robotique humano¨ıde, robotique comportementale

Brooks et l’architecture `
a subsomption

En 1990, Roodney Brooks propose une nouvelle approche de la robotique. Celle-ci est bas´ee sur un couplage
direct des capteurs avec les r´ecepteurs-moteurs, inspir´ee de la r´epartition c´er´ebrale de zones de traitement.
Le robot doit, `
a l’aide de ses capteurs, se fabriquer lui mˆeme une repr´esentation physique du monde. Cela lui
permet ensuite de reconnaˆıtre les lieux qu’il a d´ej`a visit´es. Cette approche se justifie car le robot n’a pas la
mˆeme perception que nous du monde r´eel. Ainsi, lui imposer des symboles qui ne repr´esentent pas la mˆeme
chose pour lui n’a pas de sens. Le robot vit ´egalement dans un monde dynamique et doit donc s’adapter
a l’impr´evisible. Le r´esultat final d´epend des donn´ees de chaque module. Mais ces r´eponses peuvent ˆetre
`
ind´ependantes, contradictoires ou compl´ementaires. Afin d’assurer le bon fonctionnement d’un robot, il est
donc n´ecessaire d’instaurer une coordination `a chaque nœud du r´eseau.

Figure 1.2 – Exemple de syst`eme de contrˆ
ole de l’architecture `a subsomption (Des moutons et des robots,
Pierre Arnaud)
La coordination se fait ainsi : au niveau de certains noeuds, il peut ˆetre programm´e un inhibiteur ou un
suppresseur, effectu´e par une fonction sup´erieure sur une fonction inf´erieure, de sorte qu’un comportement
plus complexe prenne le pas sur un comportement moindre avec qui il interf`ere. Cette modification est alors
fix´ee dans la dur´ee, afin de ne pas perdre trop de donn´ees qui pourraient ˆetre utiles par la suite. On est alors
souvent amen´e `
a lier les couches entre elles afin qu’elles “espionnent” les r´eponses g´en´er´ees par les couches
inf´erieures, et d’agir ensuite correctement (les fonctions complexes d´ependant aussi parfois des plus simples).
Cette architecture pr´esente donc aussi de nombreux d´efauts. La priorit´e fixe des comportements rend
complexe la modification apr`es coup de l’ordre d’interaction. Il en est de mˆeme pour l’impl´ementation de
nouveaux comportements, puisqu’ils doivent s’adapter `a l’architecture d´ej`a en place. Les couches de bas
niveaux sont tr`es difficilement modifiables car elles sont `a la base des autres couches. De plus, deux comportements s’opposant, `
a un quelconque niveau, ne peuvent avoir lieu simultan´ement.
Exemples : Allen (Brooks, 1985), Tom et Jerry (Connell, 1987), Genghis (Brooks, 1989), Squirt (Flynn,
1989), Toto (Mataric, 1990), Cog (Brooks, 1998, robot humanoide)...
1.1.3.2

Pattie Maes et l’architecture `
a s´
election d’actions

En 1989, Pattie Maes propose un nouveau mod`ele d’architecture pour les robots. Celui-ci est bas´e sur
une s´election dynamique des comportements. Les modules sup´erieurs ne contrˆolent plus d´efinitivement les
modules inf´erieurs. C’est le syst`eme du robot qui va d´ecider lui-mˆeme quel module favoriser en fonction des
actions qu’il permet : action `
a buts simultan´es, action pertinente dans le contexte, action contribuant `
a la

ache en cours, action interf´erant peu avec les autres, action r´eactive, rapide et efficace. Le comportement du
robot d´epend alors de l’environnement, de la situation, et de son ´etat.
Chaque module comprend une liste de conditions pour ˆetre activ´e, une liste d’ajouts de comportements,
une liste de d´el´etions de comportements, un seuil d’activation. De plus, chaque comportement a ses propres
comportements pr´ed´ecesseurs, successeurs et conflictuels. Selon les situations, les liens d´ecrits ci-dessus vont
ˆetre activ´es et inactiv´es. Lorsque l’activation d’un module atteint son seuil, il enclenche son comportement
´equivalent.

Lefevre Yoan, Rozenbaum Chlo´e

7

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Figure 1.3 – Syst`eme de contrˆole de l’architecture `a s´election d’actions
Ce mode de fonctionnement a ainsi de nombreux avantages sur le pr´ec´edent. Il permet surtout d’ajouter un
nouveau comportement/module avec beaucoup plus de facilit´e, puisqu’il suffit simplement de d´ecrire ses liens
avec les pr´eexistants. Cependant, il n´ecessite une repr´esentation bool´eenne du monde r´eel, ce qui n’est pas
naturellement le cas. On peut alors imaginer un syst`eme identique, mais avec une r´epartition progressive de
l’activation, en fonction de la pertinence du comportement. De plus, la d´etermination des seuils d’activation
est ´egalement un probl`eme. Il ne peut ˆetre d´ecid´e comme ´egal pour toutes les situations. Dans des cas o`
u
il y a plusieurs buts distincts, on peut ´egalement observer un comportement oscillant de la part du robot,
plusieurs modules ´etant activ´es mais celui-ci ne choisissant pas entre l’un ou l’autre (exemple : obstacle en
face, aller `
a droite ou `
a gauche ?). Il existe de nombreuses autres architectures, mais nous ne les d´etaillerons
pas ici, puisque ce n’est pas le sujet principal de ce projet.
Afin d’appliquer de telles architectures, il faut cependant concevoir des modules capables d’ˆetre `a la fois
ind´ependants et prenant tout de mˆeme en compte les donn´ees des autres modules. Parmi de tels syst`emes on
peut citer les syst`emes multi-agents.

1.1.4

Les syst`
emes multi-agents

L’utilisation de syst`emes multi-agents (SMA) est appropri´ee car repose non plus sur un syst`eme centralis´e,
mais sur une association de modules coop´erant entre eux. Elle permet au robot de r´eagir plus vite et de fa¸con
plus adapt´ee `
a l’environnement. Chaque module d´eveloppe sa propre repr´esentation du monde.
Si une tˆ
ache ou un objectif est assign´e au SMA, il peut choisir par lui mˆeme d’ˆetre actif afin de r´epondre au
besoin. Une situation sera qualifi´ee de ”positive” ou ”n´egative” selon si elle contribue `a atteindre l’objectif de
d´epart ou non. La prise de d´ecision d´ependra ensuite de la perception partielle que l’agent a du monde. Face
a une situation complexe, l’agent ne peut pas tout traiter seul, il doit s’associer `a d’autres agents. Il pourra
`
agir directement ou choisir d’influencer d’autres agents afin qu’eux agissent. La capacit´e `a homog´en´eiser son
action avec celles des autres agents est pr´esente, il est alors dit social. ”Un SMA est donc une collection de
points de vue locaux diff´erents - voire conflictuels – qui ´etablissent un ou plusieurs r´eseaux de relations entre
les agents”.(Syst`emes Multi-Agents, Observatoire fran¸cais des techniques avanc´ees, ARGO 29) Finalement,
la principale caract´eristique d’un SMA est de prendre en compte chaque perception locale et d’y r´epondre en
adaptant le syst`eme. Il est donc difficile de lui d´efinir une fonction propre, `a partir des sp´ecifications connues
de chaque module. Le SMA a une capacit´e d’auto-organisation fournie par la multiplicit´e des ´echanges interagents, qui le rend peu pr´evisible et adaptatif aux situations. Il est alors dit auto-adaptatif s’il est capable
de changer son comportement dans le but de r´ealiser la tˆache qu’on lui a donn´ee, de r´epondre au dynamisme
de l’environnement, ou d’am´eliorer ses performances.
Les SMA ont ´egalement besoin d’un mod`ele cognitif afin que leurs modules soient li´es. Le mod`ele BDI
(Beliefs,Desires,Intention) est le mod`ele le plus utilis´e, qui est apparent´e `a l’architecture en couches pr´esent´ee
pr´ec´edemment.

Lefevre Yoan, Rozenbaum Chlo´e

8

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

– Les croyances sont d´efinies comme tout ce que l’agent sait (ou croit savoir) sur la situation. Il a donc
aussi une fonction de r´evision de ses croyances afin de les mettre `a jour.
– Les d´esirs, bas´es sur les croyances, sont les buts ainsi que les opportunit´es que l’agent s’est fix´e.
– Les intentions sont les chemins que l’agent a s´electionn´e comme ´etant possibles et efficaces afin d’atteindre ses d´esirs.
Il a donc la capacit´e de mettre `
a jour ses intentions en fonction de l’´evolution des croyances et des d´esirs.
Il peut alors choisir de les communiquer aux autres agents et agir ainsi. Soit E un ´etat de l’environnement.
Soit A un module qui per¸coit cet ´etat. A va communiquer cette croyance `a un module B, avec qui il est en
interaction : ”Je crois sinc`erement, et je t’informe que E”. B d´eduit alors que A croit sinc`erement que E
et que A a voulu l’avertir. B peut alors choisir de croire E et en fonction, d’adapter ses intentions et ses
d´esirs. Cependant, une telle organisation comporte des d´efauts. Un module ne sait pas forc´ement comment
r´ealiser une intention. Il croit toujours qu’une intention qu’il a ´elabor´ee est possible, et va donc la retenter si
elle ´echoue. Un agent ne croit pas non plus qu’il peut rater son intention. Enfin, il ne s’attend pas aux effets
secondaires que peut avoir son action, men´ee par son intention. Il y a donc de nombreuses difficult´es dans
l’´elaboration de SMA.
”Le but g´en´eral des SMA est d’´etudier les comportements individuels des agents et le comportement global
du syst`eme” dans des situations donn´ees. Ils sont principalement utilis´es lors de probl`emes de perception puis
de planification et de d´ecision, lors de comportements collectifs n´ecessitant une coop´eration, ou lorsqu’il
s’agit pour le syst`eme de connaˆıtre son ´etat et d’agir en fonction, sur son environnement ou sur lui-mˆeme.
Leur utilisation est donc pertinente, par exemple, lors d’apprentissage dans une communaut´e, ou bien lors
d’associations n´ecessaires comme lors de la ROBOTCUP, mais aussi lors de l’apprentissage du langage par
les robots, qu’il s’agisse de communiquer avec des hommes ou d’autres machines intelligentes. De plus, la
collaboration de robots entre-eux, pour entreprendre une tˆache, a de nombreux atouts. Les robots sont plus
simples et donc moins chers, et le syst`eme complet est plus robuste si il y a dysfonctionnement d’un robot.

A partir des ann´ees 70, des scientifiques tels que Dreyfus (cf What computers can’t do) commencent `
a
entrevoir les limites de la robotique classique. Pour les programmeurs, le premier obstacle est de concevoir des
algorithmes adapt´es pour chaque situation et environnement. Pour cela, ils doivent parfaitement connaˆıtre
les conditions dans lesquelles sera test´e le robot. Ils lui fourniront ensuite une repr´esentation du monde r´eel
sous forme de symboles. A l’aide de ceux-ci, le robot pourra identifier les ´el´ements de son environnement et
r´eagir en cons´equence. Cependant, une telle intelligence artificielle n’est pas applicable en libert´e, ne serait-ce
que dans une rue.
Les humains ainsi que les autres animaux ont un fonctionnement diff´erent. La plupart sont incapables
de faire le lien entre une situation et une autre et de raisonner uniquement par logique afin de trouver le
comportement appropri´e. Bien plus souvent, ils comparent le pr´esent aux exp´eriences pass´ees. De plus, leurs
´emotions et leurs sentiments les guident dans le choix des buts et des heuristiques utilis´ees pour les atteindre.
Depuis plusieurs ann´ees, la robotique essaye d’imiter cet apprentissage ´evolutif.

1.2
1.2.1

Robotique comportementale
Neurones Artificiels

En 1896, il est ´etabli par J.M. Baldwin un effet, qu’il nomme de son nom, et d´efinit comme : ”la capacit´e
d’adaptation au cours de la vie d’un nouveau comportement ou d’un trait morphologique peut influencer
l’´evolution g´en´etique jusqu’`
a ce que cette nouvelle aptitude devienne inn´ee, cod´ee dans le g´enome”. Ainsi,
en 1911, E. Thorndike ´enonce une loi qu’il nommera ”Loi de l’effet” : la fr´equence d’´emission de certains
comportements augmente quand leur ´emission a ´et´e suivie de cons´equences favorables dans le pass´e. Cette loi
d´ecrit ce que l’on a appel´e plus tard l’apprentissage par renforcement, qui est pr´esent chez la quasi-totalit´e des
esp`eces animales. Quand un comportement a l’effet escompt´e, il est alors retenu et sa fr´equence d’utilisation
augment´ee. Une telle organisation est possible grˆace `a l’utilisation de r´eseaux de neurones.
En 1943, W. Culloch et W.Pitts pr´esentent un mod`ele de neurones artificiels inspir´e des neurones biologiques. Ils sont organis´es en couches et reli´es entre eux par des liaisons imitant les synapses. A chaque
instant, un neurone est actif si son excitation d´epasse un certain seuil. Sinon, il reste inactif. Chaque synapse
transmet une excitation au neurone suivant si le pr´ec´edent est actif.
Il existe aujourd’hui deux types de neurones : les sensoriels qui sont connect´es aux capteurs du robot et
les neurones moteurs, connect´es aux ex´ecuteurs du robot. Mais le sch´ema d’organisation d’un r´eseau neuronal
est le mˆeme dans les deux cas.

Lefevre Yoan, Rozenbaum Chlo´e

9

11 mai 2012

CPBx

1.2.1.1

Robotique humano¨ıde, robotique comportementale

Sch´
ema neuronal type : utilisation du perceptron monocouche

Chaque neurone et une entit´e bool´eenne qui est d´efinie par :
– ses entr´ees xi (i = 1...n)
– sa sortie o = 1 si f (x) ≥ Θ, 0 sinon
– son seuil Θ
– ses param`etres de pond´eration wi
– sa fonction de seuil (ou d’activation)

Figure 1.4 – Sch´ema type d’un neurone
La fonction de seuillage est ´egale `
a 1 si :
n
X

wi ∗ xi ≥ Θ

(1.1)

i=1

Avec wi poids de l’entr´ee i, xi , valeur re¸cue par l’entr´ee i. Les diff´erentes fonctions de seuillage utilis´ees sont
la fonction sigmoide, la fonction tangente hyperbolique et la fonction de Heaviside.
Il faut alors plusieurs notions pour s’apercevoir qu’un tel mod`ele a des limites. Soit S un ensemble dans
Rn ∗ {0, 1}. On dit que S est lin´eairement s´eparable s’il existe un hyperplan H de Rn tel que S est s´eparable en
sous-ensembles S0 et S1 . L’´equation d’un hyperplan dans un espace de dimension n, est a1 x1 + ... + an xn =
b. On remarque alors que cette ´equation est de la mˆeme forme que w1 x1 + w2 x2 + ... + wn xn = Θ. Un
perceptron lin´eaire est donc un hyperplan et doit diviser l’espace deux sous-espaces. Mais toute fonction de
Rn ∗{0, 1} n’est pas ainsi lin´eairement s´eparable. Prenons en exemple la fonction XOR, il n’est pas possible
de s´eparer lin´eairement l’ensemble {[0, 0], [1, 1]} de l’ensemble {[0, 1], [1, 0]}. Cela se prouve tr`es facilement
graphiquement.

Figure 1.5 – Fonction XOR
Pour r´esoudre des probl`emes non lin´eairement s´eparables, il faut alors utiliser des mod`eles `a plusieurs
couches de neurones. Mais un nouvel obstacle apparait : comment relier les diff´erentes couches entre elles ?
1.2.1.2

Perceptron multi couches

Un r´eseau de neurones multicouches est d´efini ainsi :
– Les cellules sont r´eparties dans des couches C0 , C1 , ..., Cq
– La premi`ere couche C0 est la r´etine compos´ee des cellules d’entr´ee qui correspondent aux n variables
d’entr´ee
– Les couches C1 , ..., Cq−1 sont les couches cach´ees
– La couche Cq est compos´ee de la (ou les) cellule(s) de d´ecision
Lefevre Yoan, Rozenbaum Chlo´e

10

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

– Les entr´ees d’une cellule d’une couche Ci sont toutes les cellules de la couche Ci−1 et aucune autre
cellule.

Figure 1.6 – Organisation d’un r´eseau multicouches
Il faut ensuite d´efinir le nombre de couches cach´ees et le nombre de neurones par couches cach´ees. Cependant, cela est encore un sujet de recherche. De plus, il faut par la suite cr´eer un algorithme permettant, `
a
partir du r´eseau neuronal de base, de d´eterminer les valeurs des poids synaptiques adapt´es.
1.2.1.3

Apprentissage

1.2.1.3.1 Descente du gradient
Soit E l’erreur d’un r´eseau et m le nombre de neurones. On a alors :
m

E=

1X
(omattendu –omrenvoye )2
2 i=1

(1.2)

On a alors E = 0 si et seulement si toutes les valeurs retourn´ees sont les valeurs attendues. On va donc
chercher `
a minimiser E. Pour cela, on utilise la m´ethode du gradient. Elle consiste `a construire une suite (u)
qui doit s’approcher du minimum. On la d´efinit ainsi :
∀n > 0, un+1 = un + ∆(un )avec∆(un ) = − f (un )

(1.3)

o`
u est un param`etre choisi et f la fonction de seuil. La valeur de u0 est quelconque. Il faut seulement que
soit entre 0 et 1 et qu’il ne soit ni trop petit (afin d’assurer une convergence vers un minimum) ni trop
grand (afin d’´eviter un nombre d’it´erations trop ´elev´e). Pour cette raison, on a pour habitude de diminuer
la valeur de en fonction du nombre d’it´erations. On peut alors d´emontrer la d´emarche math´ematique, mais
nous pr´ef´erons admettre que l’on trouve :
w(i,t+1) − w(i,t) =

n
X

(oattendu –orenvoye ) ∗ xi

(1.4)

i=1

Avec pour le neurone j, t + 1 ´etant l’´etat apr`es l’apprentissage, t l’´etat avant. Cependant, cette m´ethode peut
converger tr`es lentement, et chaque ´etape n´ecessite le calcul sur tout l’ensemble concern´e par l’apprentissage.
1.2.1.3.2 R`
egle de Widrow-Hoff
Cette m´ethode d’apprentissage est une variante de la premi`ere. On consid`ere que pour ´eviter une erreur,
il suffirait de ne modifier les poids des liaisons pr´ec´edentes uniquement si les valeurs d’entr´ee correspondantes
sont diff´erentes des valeurs attendues :
– Si la liaison est active alors qu’elle devrait ˆetre passive alors on diminue les poids correspondant aux
cellules actives pr´ec´edentes.
– Si elle est passive alors qu’elle devrait ˆetre active alors on augmente les poids correspondant aux cellules
actives pr´ec´edentes.
C’est la r`egle de Widrow-Hoff. Cet apprentissage peut ´egalement ˆetre appliqu´e au cas o`
u il n’y a qu’une seule
couche de neurones. Elle s’exprime ainsi math´ematiquement :
wi,j(t+1) = wi,j(t) + × (oattendu –orenvoye ) ∗ xi
Lefevre Yoan, Rozenbaum Chlo´e

11

(1.5)
11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Pour le neurone consid´er´e, wi ´etant chaque poids associ´e `a la valeur d’entr´ee xi , t + 1 ´etant l’´etat apr`es
l’apprentissage, t l’´etat avant et un param`etre fix´e entre 0 et 1. Avec cette m´ethode d’apprentissage,
on modifie les poids en fonction des erreurs locales et non de l’erreur globale. Il est donc possible que la
diminution de l’erreur en un point soit compens´ee par une augmentation de l’erreur pour les autres points.
Mais l’ensemble des modifications locales finira bien par converger vers une solution globale. La convergence
est, en g´en´eral, plus rapide que par la m´ethode du gradient. Il est ´egalement fr´equent de faire diminuer la
valeur de en fonction du nombre d’it´erations.
L’avantage de ces algorithmes est que, mˆeme si l’´echantillon d’entr´ee n’est pas lin´eairement s´eparable, il
va converger vers une solution qui va r´eduire l’erreur au maximum. Ils sont, par cons´equent, r´esistants aux
bruits.
1.2.1.3.3 R´
etropropagation
La r´etropropagation consiste `
a transf´erer en arri`ere l’erreur commise par un neurone `a ses synapses et
aux neurones qui y sont reli´es, en corrigeant les erreurs selon l’importance des ´el´ements qui ont particip´e `
a la
r´ealisation de ces erreurs. Les poids synaptiques qui contribuent `a engendrer une erreur importante se verront
modifi´es de mani`ere plus significative que les poids qui ont engendr´e une erreur moindre. Le principe est alors
simple. Dans un premier temps, on effectue l’´etude normale afin d’obtenir une valeur de sortie correspondante
aux entr´ees et aux poids initiaux. On compare alors la sortie calcul´ee `a la sortie attendue. On va modifier les
poids de fa¸con `
a ce que l’erreur soit minimis´ee `a la prochaine it´eration. Afin que le syst`eme global soit touch´e
par ces modifications, on propage l’erreur vers les couches pr´ec´edentes jusqu’`a arriver `a la r´etine, en modifiant
bien les pond´erations. On r´ep`ete ce m´ecanisme jusqu’`a obtenir une erreur de sortie qui peut ˆetre consid´er´ee
comme n´egligeable. Consid´erons un seul passage (puisque tous suivront le mˆeme mod`ele) et trois neurones
i, j et k appartenant `
a trois couches cons´ecutives. Pour la rectification de la couche de sortie, l’algorithme
est celui pr´esent´e pr´ec´edemment. La difficult´e apparait lorsqu’il s’agit de propager les modifications. Pour
faire cela, il faut calculer pour chaque neurone interm´ediaire une nouvelle erreur pond´er´ee par sa fonction de
transfert. On obtient ainsi :
n
X
ej = f 0 (tj )
w(jk) ∗ ek
(1.6)
k=1

avec f fonction de seuil, tj valeur de sortie avant seuillage, w(jk) poids correspondant `a la liaison avec le
neurone suivant k, ek erreur du neurone suivant. On obtient donc la formule de correction : ∆W(ij) = ej ∗ xi .
Cette m´ethode appliqu´ee uniquement aux r´eseaux multicouches est donc une extension de la r`egle de
Widrow-Hoff puisque l’on tend `
a corriger l’erreur globale par l’ensemble des erreurs locales. Mais malgr´e
une certaine lenteur, cet algorithme fonctionne tr`es bien, et est celui qui est le plus couramment utilis´e lors
d’utilisation de r´eseaux de neurones. Mais d’autres techniques d’apprentissage se sont inspir´ees de l’´evolution
naturelle, et principalement des ´evolutions g´en´etiques, et sont ´egalement beaucoup utilis´ees de nos jours.

1.2.2

Programmes ´
evolutifs

Depuis les ann´ees 90, la robotique a commenc´e `a s’inspirer de la th´eorie de l’´evolution des esp`eces, mise
en ´evidence par Charles Darwin en 1938, mais accept´ee qu’un demi-si`ecle plus tard. L’´evolution d´esigne la
transformation des g´enomes et donc des morphologies des esp`eces au cours des g´en´erations. Ainsi, un enfant
h´erite son patrimoine g´en´etique de sa m`ere et de son p`ere `a parts ´egales. Cependant, l’enfant ne sera pas
un m´elange parfait des parents puisque des mutations au niveau des g`enes peuvent se produire. Certaines
sont favorables, d’autres non. Parmi plusieurs descendants, seuls les individus les mieux adapt´es pourront
survivre et avoir une descendance. Afin de reproduire ce comportement naturel, on a cr´e´e la programmation
´evolutionnaire, s’appuyant sur des algorithmes dits g´en´etiques.
Lors de la phase d’apprentissage, le robot, ayant un but, re¸coit une liste al´eatoire de comportements qui
pourraient mener `
a ce but. L’ensemble des comportements envisageables est appel´e population. La population
P , de taille constante, sera mise `
a jour `
a chaque it´eration, et les processus suivants r´ep´et´es. On d´efinit
´egalement un crit`ere de correspondance que l’on appellera ”fitness”.
1.2.2.1

Codage des donn´
ees

Afin de permettre l’application des algorithmes, il est n´ecessaire d’effectuer un codage des informations :
on repr´esente toutes les caract´eristiques d’une solution par un ensemble de g`enes, c’est-`a-dire un chromosome,
sous un certain codage qu’on assemble pour obtenir une chaˆıne de caract`eres qui est sp´ecifique `a une solution.
Le plus souvent, c’est le codage binaire qui est utilis´e. Un g`ene est repr´esent´e par un entier long (32bits).
Les chromosomes sont alors repr´esent´es par des tableaux de g`enes et chaque individu, par un tableau de
chromosomes. Afin de diff´erencier deux g`enes, on utilise alors g´en´eralement la distance de Hamming. Celle-ci

Lefevre Yoan, Rozenbaum Chlo´e

12

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

consiste `
a compter combien de bits diff`erent entre les deux comportements. Cependant, deux ´el´ements voisins
selon ce crit`ere ne codent pas forc´ement pour deux comportements proches. Il faut donc adopter une nouvelle
r`egle qui est appel´ee ”le codage de Gray”. Ainsi, un g`ene codant pour un comportement C et un codant pour
un comportement C + 1, qui sont donc voisins ne diff`erent que d’un bit. C’est une telle organisation qui va
aussi permettre d’effectuer des modifications g´en´etiques efficaces.
1.2.2.2

Evaluation de la population

A chaque it´eration, le programme ´evalue la population grˆace au fitness. Le comportement est ´evalu´e selon
des crit`eres pr´e´etablis pour le probl`eme `
a r´esoudre. La notation peut alors ˆetre tr`es pr´ecise ou ne juger que
le comportement global du robot. Cela permettra d’obtenir des r´esultats originaux, parfois plus adapt´es que
ceux qui aurait ´et´e attendus.
1.2.2.3


election

La s´election a pour but d’assurer la convergence vers une solution optimale, tout en gardant une certaine
diversit´e dans la population. En effet, la population a tendance `a devenir homog`ene. Cela diminue donc les
risques de convergence pr´ematur´ee vers une solution locale, donc non globale et assure une r´eponse plus rapide
en cas de changement de l’environnement, pendant l’apprentissage. Les comportements les plus efficaces sont
s´electionn´es selon une probabilit´e. La population obtenue sera not´ee P 0 . Il existe diff´erentes fa¸cons de d´efinir
cette probabilit´e :
– La roulette : chaque individu a une probabilit´e d’ˆetre s´electionn´e proportionnelle `a sa performance,
donc plus les individus sont adapt´es au probl`eme, plus leur chance de l’ˆetre augmente.
– La s´election par rang : chaque individu a une probabilit´e d’ˆetre s´electionn´e proportionnelle `a son rang
dans la population, une fois tri´ee par performance
– La s´election par tournoi : des groupes d’individus sont form´es (taille au choix du programmeur). On
va alors s´electionner celui qui a les meilleures performances. On effectue autant de tournois qu’il faut
d’individus dans la population P’.
– L’´elitisme : Les individus choisis sont les individus les plus performants. Il n’y a pas de probabilit´e `
a
prendre en compte ici. Mais cette m´ethode a tendance `a amener vers une convergence pr´ematur´ee tr`es
rapidement.
Certains individus choisis resteront intacts et seront directement pr´esents dans la g´en´eration suivante. Les
autres seront modifi´es par deux op´erateurs : la mutation et le croisement. Ils ne sont pas toujours utilis´es
simultan´ement, certains algorithmes n’en utilisent qu’un.
1.2.2.4

Modification

Les nouveaux individus sont des copies d’individus parents s´electionn´es en fonction de leurs performances.
Deux types d’op´erateurs leurs sont appliqu´es, avec des probabilit´es et propri´et´es variables selon les algorithmes. Ces probabilit´es ne sont d’ailleurs pas toujours fix´ees `a l’avance. L’op´erateur peut alors ˆetre aveugle
et effectuer une modification al´eatoire `
a partir des parents. Il peut ˆetre heuristique (ou hybride) et s´electionner
les propri´et´es les plus efficaces des parents comme ´etant `a conserver. Il peut ´egalement ˆetre respectueux (ou
pur) et transmettre toutes les caract´eristiques communes des deux parents.
– Croisements : ´echange de g`enes entre plusieurs individus. Cet op´erateur permet d’explorer les comportements interm´ediaires aux diff´erents parents.
– Mutations : modifie l´eg`erement l’individu de fa¸con al´eatoire, explorant ainsi l’espace de recherche dans
la zone voisine de l’individu de d´epart.

Figure 1.7 – Op´erateurs de modification

Lefevre Yoan, Rozenbaum Chlo´e

13

11 mai 2012

CPBx

1.2.2.5

Robotique humano¨ıde, robotique comportementale

Remplacement des individus

Il est alors possible d’effectuer une autre ´etape de s´election parmi les g`enes obtenus apr`es modifications.
Par la suite, il faut r´eins´erer la population P ” obtenue dans la population P . Pour cela, on peut remplacer
toute la population P par la population P 0 et multiplier celle-ci jusqu’`a obtenir la taille de P . Cette m´ethode
est cependant d´econseill´ee afin de permettre de garder une diversit´e. On peut donc choisir une portion de
la population P que l’on remplacera, et garder le reste intact. En 1980, De Jong proposa de remplacer les
parents les plus proches des enfants afin de maintenir la diversit´e. Un algorithme est dit ´elitiste s’il garantit
la survie du meilleur individu de la population d’une g´en´eration `a la suivante. On consid`ere en g´en´eral, que
cette condition est importante.
1.2.2.6

Comparaison avec le crit`
ere d’arrˆ
et

L’arrˆet peut ˆetre d´ecid´e manuellement par un intervenant ext´erieur. Dans tout autre cas, il est n´ecessaire
de programmer un crit`ere d’arrˆet au syst`eme. Une possibilit´e peut ˆetre l’´epuisement de la diversit´e. Il faut
cependant faire attention `
a ce que ce ne soit pas issu d’une convergence pr´ematur´ee. Autrement, il faut soit
fixer un nombre de g´en´erations au pr´ealable, soit fixer une fonction permettant d’estimer si une g´en´eration
est suffisamment satisfaisante ou non.
Ces deux derni`eres m´ethodes peuvent ˆetre utilis´ees par un syst`eme sans intervention humaine, permettant
ainsi un auto-d´eveloppement et une auto-adaptation au monde ext´erieur dynamique. Celles-ci sont d’autant
plus pertinentes qu’elles permettent d’obtenir une solution approch´ee, optimale, dans des situations o`
u il
ne serait pas possible d’en trouver une exacte. Malgr´e le fait qu’elles n´ecessitent une phase d’apprentissage,
elles permettent d’´eviter des centaines de lignes de programmation puisque le robot apprend par lui-mˆeme
et n’a pas `
a tout envisager. De telles m´ethodes pr´esentent d´ej`a de nombreuses applications, mais le domaine
principal les utilisant est la robotique animale et la robotique humanoide.

1.3

Robotique humano¨ıde

Nous allons nous int´eresser `
a pr´esent au domaine de la robotique humanoide. Par d´efinition, il s’agit de
concevoir un robot qui pourrait ressembler a` l’Homme, de par sa morphologie, ses mouvements... L’objectif
´etant de pouvoir le faire interagir avec l’Homme, au quotidien, de mani`ere intuitive. Dans cette partie, nous
allons porter un int´erˆet sur les objectifs ainsi que les obstacles au domaine de la robotique humanoide. En
revanche, la partie sur l’intelligence artificielle, bien qu’´etroitement li´ee `a ce domaine, ne sera abord´ee ici que
de mani`ere br`eve (ayant ´et´e abord´ee dans les parties 1.1 et 1.2).

1.3.1

Les enjeux de la robotique humano¨ıde

La robotique humanoide fait intervenir de nombreuses disciplines scientifiques en tout genre. En effet, elle
r´eunit des connaissances en m´ecanique, ´electronique, informatique, mais ´egalement en neuroscience ou encore
en cognitique.
Ses nombreuses disciplines ont pour objectif commun de pouvoir cr´eer une interaction homme/machine des
plus naturelle possible. Cela implique donc que l’Homme puisse communiquer avec la machine avec la mˆeme
facilit´e et les mˆemes outils de communication qu’il utiliserait avec un autre humain. L’aspect humanoide se
r´epercute, en plus de la communication Homme/machine, dans l’apparence physique. En effet ce type de
robot a pour but de ressembler `
a un humain, bip`ede, poss´edant des bras, un buste et une tˆete.
L’objectif est donc de r´eussir `
a r´ealiser un robot suffisamment ind´ependant, mobile, et dou´e d’intelligence
artificielle, de sorte `
a l’int´egrer dans la vie quotidienne de l’homme et ce `a divers niveaux (robot personnel
au domicile, robot infirmier, robot pompier. . . ). Pour cela, de nombreux domaines sont `a prendre en compte,
avec les obstacles qu’ils comportent. Nous avons d´ej`a vu les divers outils utilis´es pour l’intelligence artificielle,
et de ce fait, nous allons `
a pr´esent recenser les obstacles de l’ordre de la conception du robot, sur certains
points pr´ecis reli´es `
a l’anatomie de l’Homme.
Dans un second temps, nous nous int´eresserons aux difficult´es envisageables dans l’interaction de l’Homme
avec l’Homme-robot, un simulacre parfois d´esagr´eable.

1.3.2

Les difficult´
es m´
ecatroniques

Dans le domaine de la m´ecatronique, on peut noter trois obstacles importants. Pour chacun d’entre eux,
nous allons expliquer quelles sont les difficult´es et parler des progr`es effectu´es `a ce jour.

Lefevre Yoan, Rozenbaum Chlo´e

14

11 mai 2012

CPBx

1.3.2.1

Robotique humano¨ıde, robotique comportementale

Le d´
eplacement par la marche

Celui-ci est extrˆemement compliqu´e `
a mettre en œuvre. En effet, l’Homme, `a chaque pas qu’il effectue
pour se d´eplacer, modifie ´egalement son centre de gravit´e. Par exemple, on estime qu’un enfant arrive `
a
marcher sans aucune difficult´e vers l’ˆ
age de sept ans. Les ´etapes d’apprentissage de la marche pour un enfant
restent encore a` ce jour difficiles `
a expliquer pour de nombreux scientifiques. De ce fait, il est tr`es complexe
de proc´eder par analogie pour la marche et le d´eplacement d’un robot.
Il existe deux types de marches pour un robot : l’une est dite dynamique (elle correspond `a l’allure de la
marche moyenne d’un humain) et l’autre est dite quasi-statique (il s’agit d’un d´eplacement plutˆot lent).
Dans les deux cas, un d´eplacement direct entraine une variation du centre de gravit´e trop importante. On
peut le voir sur les sch´emas ci-dessous.

Figure 1.8 – Sch´ematisation de la marche bip`ede quasi-statique
Dans la premi`ere partie, le robot est statique, son centre de gravit´e (mat´erialis´e par un point rouge) est
situ´e entre les deux pieds. Dans la seconde partie, on d´eplace un pied, et le centre de gravit´e a tendance `
a
suivre le mouvement. Ainsi, plus la vitesse est accrue, plus la stabilisation du centre de gravit´e est d´elicate.
Pour y rem´edier, il existe diff´erentes possibilit´es comme amener le centre de gravit´e le plus proche des
pieds. De la sorte, l’inclinaison du reste du corps lors du d´eplacement limitera les variations du centre de
gravit´e.
Une autre solution lors d’un d´eplacement quasi-statique est de d´eplacer le centre de gravit´e sur le pied
en contact avec le sol. Ainsi le robot poss`ede une meilleure stabilisation `a chaque mouvement. Cela implique
aussi cependant de faire des d´eplacements lents.

Figure 1.9 – Solution au probl`eme de la marche bip`ede quasi-statique
A ce jour, c’est `
a Boston Dynamics, que revient l’exploit d’avoir r´ealis´e PETMAN, un robot capable de
marcher `
a l’allure d’un Homme, de pouvoir se repositionner dans sa course s’il subit des turbulences (comme
une pouss´ee lat´erale par exemple), mais aussi de pouvoir monter des escaliers, s’agenouiller...
De plus, le syst`eme interne du robot peut modifier sa propre temp´erature comme le ferait un humain.
Ainsi, il peut transpirer pour r´eguler sa temp´erature si ses capteurs indiquent que sa temp´erature interne est
trop importante. Il faut noter que Boston Dynamics a con¸cu ce robot pour pouvoir tester des ´equipements
(vˆetements, gilets pare-balles...) pour l’Arm´ee, afin d’estimer les efforts physiques et les sensations de chaleur
avec ces ´equipements.

Lefevre Yoan, Rozenbaum Chlo´e

15

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Figure 1.10 – Le robot Petman
1.3.2.2

Les muscles

Il s’agit d’´el´ements tr`es compliqu´es `
a mettre en forme, par leurs modulations constantes (tensions/extensions)
qui demandent beaucoup de pr´ecision et par leur ´elasticit´e particuli`ere. Une m´ethode se distingue. Celle-ci
consiste en la r´ealisation de muscle artificiel pneumatique. Celui-ci fonctionne grˆace `a un ensemble de fibres tress´ees inextensibles, mont´ees en un r´eseau de pantographes (figure 1.11), recouvrant une gaine en
caoutchouc.

Figure 1.11 – R´eseau pantographe - Repr´esentation d’un muscle pneumatique - Muscle pneumatique
Ainsi, lorsque l’on augmente la pression interne du muscle, la gaine en caoutchouc se rapproche du
maillage, exer¸cant une force radiale. Les fibres ´etant inextensibles, et subissant une force radiale, le maillage
va se resserrer, en faisant augmenter le volume du muscle artificiel ainsi qu’en r´eduisant sa taille : on obtient
alors une contraction musculaire.

Figure 1.12 – Bras avec muscles artificiels
Il existe aussi une nouvelle technologie bas´ee sur des paquets de nanotubes de carbone qui a ´et´e con¸cue par
les chercheurs de l’Universit´e de Texas (Dallas, Etats-Unis). L’ensemble de ses paquets est appel´e a´erogel, un
Lefevre Yoan, Rozenbaum Chlo´e

16

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

nouveau mat´eriau tr`es l´eger et tr`es r´esistant. Lorsque l’a´erogel est soumis `a un courant ´electrique de plusieurs
centaines de volts, les charges ´electriques se r´epartissent dans les nanotubes, les faisant se repousser entre eux.
Ainsi, les nanotubes peuvent croˆıtre dans le sens de la largeur et d´ecroˆıtre une vitesse 4000 fois plus grande
que celle d’un muscle normal. De plus, ces nanotubes peuvent fonctionner `a des temp´eratures extrˆemes allant
de -200◦ C `
a plus de 1600◦ C (conditions en laboratoire non d´epass´ees) et les chercheurs se demandent si cela
correspond ou non aux limites des nanotubes.
1.3.2.3

Le visage et les capteurs

Le visage et ses capteurs d´efinissent une partie tr`es importante de l’homme-robot.
Les capteurs, permettent aux robots (de mani`ere g´en´erale) d’obtenir des informations sur l’environnement
dans lequel il ´evolue. Sans ces informations, il ne pourrait pas travailler. En effet, comme nous l’avons vu dans
la partie 1.1 sur l’intelligence artificielle, les informations des capteurs sensoriels sont trait´ees et exploit´ees
comme des donn´ees, afin de faire agir le robot dans son environnement. On peut noter diff´erents capteurs
plutˆ
ot communs dans le domaine de la robotique pour pr´elever des informations sur l’environnement d’un
robot :
1.3.2.3.1 Le capteur `
a ultrasons
Le principe est de d´eterminer des distances grˆace aux ultrasons. Ce proc´ed´e est assez simple `a comprendre.
Un ´emetteur `
a ultrason envoie des ondes sonores de plus de 20kHz. Au mˆeme moment, on d´eclenche l’horloge
interne du microcontrˆ
oleur qui lui est associ´ee. L’onde sonore va se r´epercuter sur un objet, et se r´efl´echir, et
repartir vers le robot. Un r´ecepteur `
a ultrason d´etecte alors le ph´enom`ene et l’horloge s’arrˆete ayant obtenu
un temps entre ´emission-r´eception valant ∆T . Ainsi il est possible de d´eterminer la distance entre le robot
et l’objet grˆ
ace `
a la formule suivante :
V × ∆T
(1.7)
D=
2

Figure 1.13 – Capteur `a ultrasons

1.3.2.3.2 Le capteur `
a infrarouges
Le capteur `
a infrarouges fonctionne de mani`ere similaire aux capteurs `a ultrasons. Un ´emetteur `a infrarouge ´emet en direction de l’objet, le rayon se r´efl´echit et est capt´e par la rang´ee de r´ecepteurs. C’est
a partir de l’angle Θ mesur´e que l’on peut d´eterminer la distance parcourue. En revanche, les ultrasons
`

Figure 1.14 – Capteur `a infrarouges
Lefevre Yoan, Rozenbaum Chlo´e

17

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

´etant des ondes sonores, elles se propagent dans tout l’espace de mani`ere sph´erique, et par cons´equent, leur
pr´ecision est variable (r´eflexion sur plusieurs objets avant d’atteindre le r´ecepteur par exemple). A contrario,
les infrarouges sont plus pr´ecis car leur espace physique d’occupation repr´esente un cˆone d’angle Ω = 5◦ .
Cependant il est important de noter qu’ils sont tr`es pratiques pour des distances inf´erieures au m`etre, alors
que les ultrasons peuvent ˆetre efficaces jusqu’`a plusieurs m`etres.
1.3.2.3.3 Les cam´
eras
Il n’y a pas vraiment de type `
a privil´egier plus que d’autres concernant les cam´eras. En revanche, ce qu’il
faut retenir, c’est que les cam´eras permettent d’obtenir une image pr´ecise de l’environnement du robot. Elle
est cependant difficile `
a traiter pour que celui-ci, de mani`ere autonome, puisse en tirer des informations.
1.3.2.3.4 Les visages
Dans la robotique humanoide, ce sont des ´el´ements tr`es importants. En effet, le visage synth´etique,
mod´elis´e sur celui de l’Homme, est l’´el´ement qui va permettre la facilit´e d’interaction entre l’homme et le
robot. En effet l’Homme est alors confront´e `
a un crit`ere visuel qu’il a d´ej`a en m´emoire et qu’il peut reconnaitre.
Cela lui est alors beaucoup plus simple pour envisager un dialogue par exemple, cela devient plus intuitif.
Cependant, il est plutˆ
ot difficile de les r´ealiser, d’un point de vue mat´eriel dans un premier temps (peau en
silicone, yeux, mais aussi l’´electronique n´ecessaire `a faire bouger les l`evres, les yeux, les paupi`eres. . . ), mais
´egalement au niveau de l’expression. En effet, l’objectif est de pouvoir obtenir un visage similaire `a celui de
l’humain, pouvant alors exprimer la peur, la joie, la tristesse. . .
A ce jour, le visage le plus expressif est attribu´e `a Hanson Robotics qui depuis 2006 a r´ealis´e des robots
aux expressions les plus r´eelles, capables de tenir une conversation. . . Ci-dessous, trois photos repr´esentant
Philip K. Dick, un ´ecrivain de science-fiction. Au centre, une photo de Phillip K. Dick de son vivant, entour´ee
de deux photos de son robot humanoide con¸cu par Hanson Robotics.

Figure 1.15 – Phillip K.Dick, humain et robot

1.3.3

La relation homme-machine

L’interaction entre l’Homme et l’Homme-robot est extrˆemement complexe et de ce fait, mˆeme si les
avanc´ees technologiques nous permettent d’obtenir des robots humanoides tr`es efficaces, il n’est pas dit que
l’Homme les accepte pour autant. Ceci peut s’expliquer par divers points que nous allons aborder ici.
1.3.3.1

Une peur aliment´
ee par les arts du XX`
eme si`
ecle

Les romans sur la robotique-humanoide apparaissent essentiellement au cours du XX`eme si`ecle, avec les
romans d’Isaac Asimov par exemple. Mais ce qu’il faut retenir, c’est que dans tous les romans, ou adaptations
cin´ematographiques, le robot humanoide endosse souvent un rˆole li´e `a la destruction, `a la peur, et mˆeme `
a
l’extermination. Cette id´ee s’est install´ee dans les esprits au XX`eme si`ecle alors que pour l’´epoque, l’id´ee
d’obtenir un tel type de machine n’´etait presque pas envisageable au regard des progr`es informatiques. De ce
fait, il existe une peur naturelle des robots d´evelopp´ee par l’Homme, qui est entr´ee dans la culture populaire.

Lefevre Yoan, Rozenbaum Chlo´e

18

11 mai 2012

CPBx

1.3.3.2

Robotique humano¨ıde, robotique comportementale

Le simulacre de l’Homme

Cela correspond `
a un point beaucoup plus difficile `a concevoir. Il rejoint par exemple les questions sur le
clonage : peut-on cr´eer une copie de l’Homme ? On peut voir `a cela deux explications, une premi`ere de l’ordre
de la morale religieuse, qui d´ecoule de l’interdiction de ”fabriquer” la vie, au sein de la manipulation. Et une
seconde qui se r´efugie dans la peur de la copie en elle-mˆeme. En effet, jusqu’`a quel stade la copie pourra-t-elle
ˆetre diff´erenci´ee de l’originale, et surtout est-ce qu’elle ne viendra pas le remplacer. Au stade actuel de la
robotique, cela n’est pas un probl`eme. En revanche, l’id´ee a souvent ´et´e mise en avant dans divers films et
romans du XX`eme si`ecle.
1.3.3.3

La simulation des ´
emotions

Pour la premi`ere fois, l’Homme se trouve confront´e `a des visages, et des ´emotions artificielles. Lors des
premi`eres d´emonstrations des visages de Hanson Robotics, un sentiment de malaise s’est vivement fait ressentir. Cela s’est traduit par le fait que l’Homme, bien qu’il soit confront´e `a un visage humain, un code qu’il
connait et qu’il a assimil´e, n’est pas en mesure de ressentir les expressions du visages de la machine. Lorsque
le robot sourit, il s’agit l`
a d’un algorithme de sourire, et non d’un sentiment de joie ou de gaiet´e ´eprouv´e par
le robot.

Ainsi, depuis une vingtaine d’ann´ees, les chercheurs ont r´eussi `a concevoir des mod`eles ´electroniques, informatiques et cognitifs suffisamment exploitables pour cr´eer des robots, que l’on peut r´eellement, aujourd’hui,
qualifier d’intelligents. A ce jour, l’un des robots les plus avanc´es dans l’interaction avec l’homme est Nao,
d´evelopp´e par Aldebaran Robotics. Ce robot de 58cm peut se d´eplacer, se relever (en cas de chute), tenir une
discussion, raconter une histoire ainsi que beaucoup d’autres actions qu’il apprend au fur et `a mesure de ses
exp´erimentations. D´ej`
a mis `
a l’essai dans certains domiciles ainsi qu’au sein d’universit´es (d´epartement GEII
de l’IUT de Tarbes), il poss`ede l’avantage de pouvoir ˆetre programm´e par ses utilisateurs facilement, et donc
am´elior´e constamment.
Nous avons donc d´ecouvert de nombreuses notions th´eoriques sur l’intelligence artificielle et son application sur les robots humanoides. Afin de compl´eter notre ´etude, nous avons d´ecid´e de traiter une partie
exp´erimentale. Pour cela, nous d´etaillerons maintenant le processus de fabrication d’un petit robot, dont
l’objectif est de traiter une information, d´etect´ee `a partir d’un capteur, de pouvoir en d´eduire l’´etat de
l’environnement, et d’afficher le r´esultat obtenu.

Lefevre Yoan, Rozenbaum Chlo´e

19

11 mai 2012

Chapitre 2


ecanismes de fabrication
2.1

Pr´
esentation et conceptualisation

Notre int´erˆet s’´etant port´e jusqu’`
a pr´esent sur l’aspect de intelligence artificielle de la robotique, nous
avons pu voir l’importance des capteurs pour relever des informations sur l’environnement afin de permettre
au robot de les traiter par la suite, et d’agir en cons´equence. Nous allons maintenant nous int´eresser aux
capteurs sensoriels, sous la forme d’une manipulation. Notre objectif ´etait de pouvoir r´ealiser un syst`eme
capable de d´etecter des diodes ´electroluminescentes allum´ees, et de les compter. Pour se faire, il faut r´esonner
suivant le sch´ema suivant :

Figure 2.1 – Organisation de l’action du robot
S’il y a une situation particuli`ere dans l’environnement ext´erieur au robot, cette information est capt´ee par
un syst`eme ´electronique analogique. Ce dernier est reli´e `a un microcontrˆoleur : un appareil qui sert de base
de donn´ees algorithmiques. En effet, dans le microcontrˆoleur, il est possible d’int´egrer une base d’algorithmes
s’appliquant en fonction des informations rapport´ees par le syst`eme analogique. Cela lui permet ensuite de
donner diff´erents ordres au syst`eme, qui `
a son tour interagira avec l’environnement ext´erieur. Dans notre cas,
avec la d´etection de diodes, on aurait :

Figure 2.2 – D´etection et comptage de diode : les diff´erentes ´etapes

2.2

Montage ´
electronique

2.2.1

Electronique analogique

Le circuit ´electronique r´epondant `
a la d´etection d’une diode est constitu´e de la mani`ere suivante :

20

CPBx

Robotique humano¨ıde, robotique comportementale

Figure 2.3 – Circuit ´electronique
Trois ´el´ements importants le constituent :
– Le premier est une photor´esistance : le principe de ce dipˆole est de faire varier sa r´esistance au sein du
circuit en fonction de la quantit´e de lumi`ere qu’il per¸coit sur son capteur. Il s’agira donc d’un premier
´el´ement analogique qui va nous permettre de d´etecter la pr´esence d’une diode.
– Le second est un comparateur de tension LM311P : son rˆole est simple mais primordial. Il va comparer
les deux tensions In+ et In− qui lui sont mises en entr´ee `a sa borne positive et `a sa borne n´egative.
En g´en´eral, si In+ > In− , le comparateur est en ´etat passant.
Cependant ici, il s’agit d’un comparateur de type ”inverseur”, ce qui signifie qu’il est en ´etat passant
lorsque In− > In+ et en ´etat bloqu´e lorsque In+ > In−. En utilisant la m´ethode de ”diviseur de
tension” on obtient alors :
In− = Ue ∗

600
35
≈ 2V
etIn+ = Ue ∗
600 + RP hotoresistance
35 + 46, 7

(2.1)

La sortie du comparateur est constitu´ee d’un transistor bipolaire fonctionnant comme un interrupteur :
il est constitu´e d’une base, d’un ´emetteur et d’un r´ecepteur. . Sch´ematiquement lorsque la tension `
a la
base du transistor est positive alors celui-ci est passant. De plus, de part sa constitution, un transistor
poss`ede une tension seuil (fonctionnant comme un faible g´en´erateur coupl´e `a une r´esistance).

Figure 2.4 – Etat passant d’un transistor
Dans notre cas, la base est aliment´ee directement par le g´en´erateur (4, 5V ). Si le comparateur est en
´etat bloqu´e, la tension en B est nulle. Si il est en ´etat passant, on obtient cette tension en B. Le courant
en B est alors plus important qu’en C, et le courant passe en E. Comme US =Ue , on obtient alors
l’´equation :
Lefevre Yoan, Rozenbaum Chlo´e

21

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Us = Uc − UEC

(2.2)

Exp´erimentalement, on a UEC = 1, 9V , donc pour tout ´etat passant (ie. diode d´etect´ee) on aura
US = 4, 5 − 1, 9 = 2, 6V
– Le dernier ´el´ement important est donc la r´esistance permettant d’obtenir US . En effet, nous avons vu
que seules les valeurs 0V ou 2, 6V ne pouvaient ˆetre prises par US . Il s’agit donc de l’information qui
sera transmise au microcontrˆ
oleur afin de d´eterminer s’il y a ou non la pr´esence d’une diode allum´ee.

2.2.2

Electronique num´
erique : entr´
ees et sorties

Dans cette partie, nous allons nous int´eresser `a l’utilisation de la carte F1 Evaluation Platform de chez
Microchip. Cette carte contient un PIC 16LF1937 qui va servir de ”cerveau” `a notre syst`eme. En effet, il
permet de stocker et de faire fonctionner des algorithmes. Puis il dirige les r´esultats obtenus par les algorithmes
vers ses sorties.
Pour notre manipulation, comme nous l’avons vu dans la partie analogique, l’entr´ee correspond `a la tension
aux bornes de notre r´esistance de sortie. Concernant la sortie, la carte F1 Evaluation Platform poss`ede un
´ecran 3.5-Digits LCD. La notion 3.5-Digits signifie qu’il peut afficher 3 chiffres de 0 `a 9, et un quatri`eme
valant 0 ou 1. Il peut donc afficher des nombres de 0 `a 1999. Cet ´ecran est le seul ´el´ement branch´e en sortie. Il
permettra d’afficher le nombre de diodes d´etect´ees. Mais comment se traduisent ´electroniquement les entr´ees
et sorties sur le PIC16 ?
2.2.2.1

Donn´
ees en entr´
ee

En comparant les diff´erentes entr´ees et sorties du PIC16 dans la ”datasheet” de notre carte, nous avons
pu d´eterminer quels ports ´etaient accessibles en guise d’entr´ees, et lesquels serviraient de sorties.

Figure 2.5 – Connexion au BLDC
Comme on peut le voir sur le tableau ci-dessous, le port RE0 n’est pas reli´e `a un ´el´ement particulier. En
effet, les ports RC0 et RD1, par exemple, sont respectivement reli´es `a un cristal pi´ezo´electrique et `a une LED.
On constate alors que le port RE0 correspond au P IN 3 du connecteur BLDC de notre carte (voir figure
suivante). On prendra donc le port RE0 comme entr´ee, soit le P IN 2 du connecteur BLDC.

Figure 2.6 – Pins utilis´es en entr´ee

Lefevre Yoan, Rozenbaum Chlo´e

22

11 mai 2012

CPBx

2.2.2.2

Robotique humano¨ıde, robotique comportementale

Donn´
ees en sortie

Concernant l’´ecran 3.5-Digits LCD, on peut observer sur la ”datasheet” qu’il existe des ports coupl´es :
– (RA0,RD3) d´efinit les ´el´ements 1A/1B/1C/1D/1E/1F/1G
– (RA5,RC5) d´efinit les ´el´ements 2A/2B/2C/2D/2E/2F/2G
– (RA4,RA7) d´efinit les ´el´ements 3A/3B/3C/3D/3E/3F/3G

Figure 2.7 – Pins utilis´es en sortie
Aucun branchement n’est `
a effectuer. En effet, comme l’´ecran est int´egr´e directement `a la carte F1 Evaluation Platform, tout est d´ej`
a connect´e. Nous expliquerons dans la partie programmation `a quoi correspondent
les ´el´ements 1A, 1B... et comment programmer leur allumage.
Cependant, l’utilisation d’un microcontrˆ
oleur n´ecessite une source d’alimentation, qui n’est pas pr´evue
lors de l’achat du microcontrˆ
oleur. Il est donc n´ecessaire d’´etudier les besoins des diff´erents composants.
2.2.2.3

Alimentation

Les composants ´electroniques connect´es sur la carte F1 Evaluation Platform n´ecessitent une alimentation.
En effet, il faut, par exemple, alimenter la PIN6 de 3,3V. Il faut ´egalement positionner deux masses sur les
PIN14 et PIN13. Ces ports d’alimentation serviront `a alimenter l’int´egralit´e de la carte (le PIC16, l’´ecran
LCD. . . ). Il suffit pour cela de brancher le potentiel sup´erieur de la r´esistance de sortie (i.e le point E) au
PIN1, ainsi que la masse associ´ee `
a la r´esistance `a l’une des masses des PIN14 ou PIN13, puis d’ajouter une
alimentation 3,3V (borne positive `
a la PIN 6 et borne n´egative `a la PIN14 ou PIN13)

Figure 2.8 – Branchement de la carte pour l’alimentation

Une fois la carte, et le microcontrˆ
oleur correctement aliment´es et connect´es aux autres composants, nous
pouvons nous int´eresser `
a la programmation du robot.

2.3
2.3.1

Programmation du robot
Approche de l’algorithme

Notre but est donc de permettre au robot de d´etecter des diodes allum´ees et de les compter. Pour cela,
nous avons choisi d’utiliser un microcontrˆ
oleur car il permet d’impl´ementer facilement un algorithme pour
organiser le syst`eme. Mais avant de pouvoir ´ecrire tout algorithme, il faut ´etudier la d´emarche `a suivre pour
r´esoudre le probl`eme. Il s’agit donc maintenant de coder la mise en forme d’une telle proc´edure.

Lefevre Yoan, Rozenbaum Chlo´e

23

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Figure 2.9 – Organisation et repr´esentation du probl`eme

2.3.2

Algorithme et pseudo-code

Afin de compter les diodes, nous utiliserons l’algorithme suivant :
Algorithme 1 : ComptageDesDiodes
Entr´
ees : U avec U une tension
Sorties : Rien

ebut
C ←− 0
K ←− 0
Af f icher(C)
tant que 1 faire
si U=0 alors
si K=1 alors
K←−0
sinon
si K=0 alors
K ←− 1
C ←− C + 1
Af f icher(C)
fin
C repr´esente le nombre de diodes compt´ees et Af f ichage(x), la fonction permettant d’afficher C sur
l’´ecran LCD. Il s’agit en fait de rep´erer `
a quel moment le PIC re¸coit une tension positive sur son port RE0 .
Lors du passage de U = 0 `
a U = 1, il faut incr´ementer le compteur et d´efinir l’´etat ”vue de la diode”. Il
faut ainsi faire attention `
a prendre en compte le temps o`
u U = 1 et U est constant. Cette caract´eristique est
n´ecessaire pour ´eviter que le robot ne compte la diode plusieurs fois, pendant le temps o`
u il la voit. C’est
pour cela que nous utilisons une variable K qui va varier en fonction de U .
Ainsi, au d´ebut du parcours, aucune diode n’a ´et´e compt´ee, et aucune diode n’est en vue. On initialise
donc K et C `
a 0. Ensuite :
– si le robot ne voit aucune diode, rien ne change
– si le robot voit une diode, le compteur C est incr´ement´e, et K passe `a 1 pour signifier l’´etat ”vue de la
diode”
Par la suite :
– si le robot voit une diode, mais qu’il est d´ej`a en ´etat ”vue de la diode”, rien ne se passe

Lefevre Yoan, Rozenbaum Chlo´e

24

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

– si le robot ne voit plus de diode, et qu’`a l’instant d’avant, il ´etait en ´etat ”vue de diode”, C passe `
a0
afin d’y mettre fin
La boucle ”Tant que vrai” permet de r´ep´eter ce sch´ema ind´efiniment, pour que le robot compte bien toutes
les diodes du circuit. Cela permet ´egalement de remettre le compteur `a 0 lors d’un red´emarrage du robot.

2.3.3

Codage du microcontrˆ
oleur

Afin de permettre une meilleure compr´ehension du codage ci-dessous, une pr´esentation du microcontrˆoleur
PIC 16LF1937 et du langage C, ainsi que l’algorithme complet sont joints en annexe.
2.3.3.1

Les PORTs

Les pattes du PIC, connectables `
a d’autres composants ´electroniques sont appel´es ports. Notre microcontrˆ
oleur poss`ede 5 ports (PORTA `
a PORTE). Chacun poss`ede 8 bits, sauf le PORTE qui n’en poss`ede que
quatre. Chaque bit correspond alors `
a une patte du PIC qui est appel´ee broche. Ils sont alors num´erot´es : le
PORT X poss`ede les broches RX1, RX2, ..., RX7. Pour envoyer du courant `a une broche q, il suffit alors de
donner au bit num´ero q la valeur 1.
Par exemple, si les trois premi`eres broches du PORTX sont actives, on aura PORTX = 0b00000111, avec
b pour binaire. Si le compte avait ´et´e fait en hexad´ecimal (base 16), il y aurait eu un x `a la place du b. On
peut remarquer que la num´erotation se fait de droite `a gauche.
2.3.3.2

Les registres TRIS

Chaque port du microcontrˆ
oleur peut ˆetre d´efini comme une sortie ou une entr´ee. Il est important de
les configurer au d´ebut de l’algorithme afin de les utiliser par la suite correctement. Pour cela, on utilise le
registre TRIS, sachant qu’un registre est associ´e `a chaque PORT. Il faut donc d´efinir les adresses des ports
pour pouvoir associer les registres. Cela est possible en lisant la ”datasheet” :

Figure 2.10 – Adresses des ports
A chaque port est alors associ´e un bit que l’on va consid´erer comme entr´ee en lui donnant la valeur 0 et
comme sortie en lui donnant la valeur 1. Ainsi, un port X dont les trois premiers bits sont des entr´ees est
d´efini par TRISX = 0b11111000.
2.3.3.3

Algorithmique propre au microcontrˆ
oleur

Afin de permettre l’´echange de donn´ees entre le microcontrˆoleur et le reste du circuit, il est n´ecessaire
d’utiliser certaines fonctions, et de mettre en place ou de manipuler certaines variables. Nous allons d´etailler
les plus importantes.
– Avant toute chose, il est n´ecessaire de d´efinir les ports `a partir de leur adresse (zone m´emoire correspondante). Pour ce faire, on utilise la fonction #byteport X = 0xAdresse. Avec x pour hexad´ecimale,
l’adresse ´etant celle d´efinie dans le tableau pr´ec´edent, et X le nom du port. Il faut donc effectuer cette
directive pour tous les ports.
– Pour acc´eder directement `
a une broche, les variables PIN XQ sont d´ej`a d´efinies, X repr´esentant le port
et Q le num´ero de la broche dans ce port.
Il existe plusieurs fonctions pr´e-programm´ees que nous allons utiliser, permettant de manipuler les donn´ees
re¸cues en entr´ee, et les donn´ees envoy´ees en sortie.
– output low() prend en entr´ee une broche, et d´esactive le signal envoy´e dans cette broche : il passe `
a 0.
– output high() prend en entr´ee une broche, et active le signal envoy´e dans cette broche : il passe `a 1.
u n=0 ou 1. Si n = 0, le
– A ces deux fonctions, on peut substituer la fonction output bit(P IN XQ, n) o`
signal est d´esactiv´e. Si n = 1, le signal est activ´e.
– input(P IN XQ) prend en entr´ee une broche, et re¸coit 0 si elle est activ´ee, 1 sinon.
– set tris x (0bnnnnnnnn), n pouvant prendre la valeur 0 ou 1, permet d’initialiser le PORTX comme
entr´ee ou sortie.

Lefevre Yoan, Rozenbaum Chlo´e

25

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Il y a ´egalement de nombreuses fonctions permettant de manipuler l’horloge int´egr´ee au microcontrˆoleur,
mais nous n’en aurons pas besoin. Nous ne les d´etaillerons donc pas ici.
2.3.3.4

Contrˆ
ole de l’´
ecran LCD

L’´ecran LCD que nous avons permet d’afficher de nombreuses informations telles qu’une unit´e de temp´erature,
de tension, d’intensit´e etc. Cependant, pour notre manipulation, nous ne nous int´eresserons qu’`a l’affichage
de nombres entiers. L’´ecran a la possibilit´e d’afficher des nombres de 0 `a 1999. Pour cela, admettons qu’il
est compos´e de quatres cases, num´erot´ees de droite `a gauche. On peut alors d´ecomposer tous les chiffres en
7 segments, allum´es ou ´eteints, formant un 8. Ainsi, les ´el´ements 1A/1B/1C/1D/1E/1F/1G d´efinissent les
segments `
a activer pour afficher un chiffre ou une lettre pour la position 1. Pour r´esumer, on a donc :

Figure 2.11 – D´ecomposition pour l’affichage sur l’´ecran LCD
Afin de manipuler les diff´erents segments, nous utiliserons les fonctions d´efinies dans la partie pr´ec´edente.

2.3.4

Connexion au PIC

Une fois notre algorithme ´ecrit, nous avons pu le compiler grˆace au logiciel MPLAB, fourni par Microchip.
Nous avons obtenu un fichier .hex, prˆet `
a ˆetre ins´er´e sur le PIC16.
Pour cela, nous avons utilis´e un programmateur, et plus pr´ecisement, le PicKit 3 de Microchip. Celui-ci
est reli´e `
a l’ordinateur grace `
a un cable USB et directement au PIC via six PINs :
– Le port Reset/MCLR qui permet de maintenir la m´emoire du PIC allum´ee le temps de chargement du
programme
– Le port VDD qui permet l’alimentation
– Le port VSS qui est la masse
– Le PGD qui envoie le programme dans la m´emore du PIC
– Le PGC qui envoie un signal d’horloge
– Le port LVP, qui permet une programmation `a faible tension.

Figure 2.12 – Notre petit robot, branch´e `a son PicKit

Lefevre Yoan, Rozenbaum Chlo´e

26

11 mai 2012

Conclusion
Les oeuvres cin´ematographiques, les romans nous permettent depuis plusieurs ann´ees d’obtenir une id´ee,
une image, de ce `
a quoi pourrait ressembler une cohabitation entre l’Homme, l’Homme-Robot et le robot
dans l’avenir. Peu `
a peu, grˆ
ace `
a des innovations dans les domaines des math´ematiques, de l’informatique,
de l’´electronique, ou de la m´ecanique, nous r´ealisons ce que nous imaginions il y a vingt ou trente ans. La
marche bip`ede fluide et stable, mais ´egalement la capacit´e `a dialoguer, `a reconnaitre des interlocuteurs, `
a
s’adapter `
a un environnement sont maintenant maˆıtris´ees ou presque. Ces avanc´ees technologiques ont permis
l’aboutissement d’une l’intelligence artificielle tr`es ´evolu´ee, mais aussi de syst`emes complexes et complets,
de petites tailles, permettant de concevoir toutes sortes de robots, et de machines performantes devenus
indispensables dans notre vie de tous les jours.
Cependant, la vitesse incroyable `
a laquelle naissent ces ´evolutions peut amener `a se poser des questions
sur la robotique. En effet, des probl`emes li´es `a l’´ethique commencent `a ´emerger. Un des domaines les plus
sensibles est l’utilisation de robots autonomes militaires. Il s’agirait en effet de lui laisser la possibilit´e de
choisir son comportement dans des situations qu’un humain jugerait `a l’aide de son bon sens, de sa morale, et
parfois de ses sentiments. Cette difficult´e peut en fait ˆetre g´en´eralis´ee `a toute situation o`
u est mise en cause
la responsabilit´e d’un robot face `
a un incident avec un humain.
Des questions d’ordre philosophique prennent ´egalement forme, comme l’´eventualit´e de cr´eer un jour un
robot dot´e de conscience et les r´epercussions que cela pourrait entrainer. Pourrait-on alors lui faire confiance ? Comment garderait-on un certain pouvoir sur ces robots ? Parmi les plus c´el`ebres et incontournables
personnalit´es `
a avoir aborder ce sujet, on peut citer Isaac Asimov. Ses romans mettent en jeux des mondes
o`
u les robots seraient capables de vivre, au quotidien, en cohabitation avec les humains. En 1942, dans sa
nouvelle ”Cercle vicieux”, il imagine trois lois, implant´ees aux robots d`es leur construction, auxquelles ils
seraient forc´es d’ob´eir :
1. Un robot ne peut porter atteinte `
a un ˆetre humain, ni, restant passif, permettre qu’un ˆetre humain soit
expos´e au danger.
2. Un robot doit ob´eir aux ordres que lui donne un ˆetre humain, sauf si cela entre en conflit avec la
premi`ere loi.
3. Un robot doit prot´eger son existence tant que cela n’entre pas en conflit avec la premi`ere ou la deuxi`eme
loi.
Mais ces lois ne pourraient s’appliquer dans notre monde, n’´etant d´ej`a pas respect´ees. Il faudrait alors cr´eer
un nouveau syst`eme, profitable `
a tous, qui permettrait aux hommes et aux robots de vivre ensemble, tout
en sachant pr´eserver la sup´eriorit´e de l’homme, du cr´eateur, sur sa machine.
Au cours de ce travail, nous avons essay´e de d´ecouvrir et d’expliquer la conception de robots humano¨ıdes
ayant des capacit´es ´evolutives. Cela nous a permis de mieux comprendre les outils mis en oeuvre, mais
´egalement de d´ecouvrir l’application concr`ete d’un langage de programmation (le C), sur des composants
´electroniques (microcontrˆ
oleur), utilis´e dans un environnement r´eel (d´etection de lumi`ere). Mais les connaissances que nous avons abord´ees ici ne repr´esentent qu’une faible proportion, qu’une description de ce que
l’on est capable de faire, et de ce que l’on envisage pour les ann´ees `a venir. Nous pourrions alors d´efinir ce
projet comme une partielle introduction au monde complexe et tr`es vari´e qu’est la robotique. Les progr`es
effectu´es jusqu’`
a pr´esent sont tr`es loin d’assouvir la curiosit´e des chercheurs, qui savent qu’il existe encore de
nombreuses th´eories inexploit´ees.

27

Annexes

28

Notions de programmation : le
langage C
Afin d’´ecrire un programme en C, il est n´ecessaire d’avoir un ´editeur de texte permettant d’´ecrire le code,
puis un compileur. Celui-ci transforme le texte en executable. Pour cela, nous utiliserons l’´editeur de texte
linux Emacs puis le compileur CCX5.

Les variables
Une variable est une valeur qui peut changer pendant le d´eroulement du programme, de l’algorithme. Une
variable doit ˆetre d´efinie par son type, son nom. Parfois une valeur lui est donn´ee d`es la d´eclaration afin de
l’initiliser.
1. Une variable peut avoir plusieurs types. Parmi les principaux, nous citerons :
– int : de -2 147 483 648 `
a 2 147 483 647
– float : de -3.4 x 10 puissance 38 `
a 3.4 x 10 puissance 38
– double : de -1.7 x 10 puissance 308 a` 1.7 x 10 puissance 308
– char : de -128 `
a 127, mais que nous utiliserons le plus souvent lorsqu’il s’agit d’utiliser des mots, et
donc des lettres
2. Pour nommer la variable, il faut uniquement utiliser des chiffres et des lettres sans accent. Tout autre
caract`ere ainsi que les espaces est interdit, `a l’exception de ” ” . De plus, le nom de la variable doit
commencer par une lettre. Les majuscules sont accept´ees, mais un caract`ere en minuscule est consid´er´e
diff´erent du mˆeme caract`ere en majuscule.
3. La valeur de la variable peut ˆetre indiqu´ee lors de la d´eclaration ou bien plus tard. Les valeurs possibles
d´ependent uniquement du type de la variable.
Voici un exemple de d´eclaration de variables :

Si on choisit d’affecter une valeur `
a notre variable plus tard, on aura une instruction de ce type :

”=” est l’op´erateur d’affectation en C. Il permet, comme son nom l’indique, d’affecter une valeur `a une
variable. De plus, chaque instruction doit ˆetre suivie par un point virgule. Il est ´egalement possible de d´efinir
des constantes. Pour cela, dans la d´eclaration de la variable, on pr´ec´edera le type de ”const”. Il faut cependant
initialiser directement la valeur de la constante lors de sa d´eclaration.
De plus, une variable est utilisable uniquement dans la fonction o`
u elle est d´eclar´ee. On parle de variable
locale. Il est possible de cr´eer une variable utilisable dans tout un fichier : une variable statique. Lors de la
d´eclaration de la variable, on ajoute alors ”static” au d´ebut. De mˆeme, il est possible de cr´eer une variable
globale, utilisable dans tous les fichiers du projet. Sa d´eclaration sera pr´ec´ed´ee de ”extern”.

Les fonctions
Afin d’effectuer les op´erations n´ecessaires sur les variables, il est n´ecessaire d’utiliser des fonctions. Chaque
programme est constitu´e d’une fonction principale ”main”. Il est ´egalement possible de cr´eer des fonctions
auxiliaires pour travailler dans la fonction principale. Lors de longs programmes, une telle organisation est
pr´ef´erable afin de rendre plus clair le code.
29

CPBx

Robotique humano¨ıde, robotique comportementale

A l’instar des variables, chaque fonction doit ˆetre d´efinie. Ce processus ressemble d’ailleurs beaucoup :
1. Il faut d´efinir le type de la fonction. Celui-ci correspond au type de la variable qui sera renvoy´ee en
sortie. Si aucune valeur n’est renvoy´ee, le type de la fonction sera ”void”.
2. Il faut ensuite nommer la fonction. Les r`egles sont les mˆemes que pour nommer une variable.
3. Il faut apr`es d´efinir le (ou les) param`etre(s) de la fonction. Ils seront not´es entre parenth`eses, directement
apr`es le nom (sans espace). Il faut alors indiquer le type de la variable en entr´ee, puis son nom. Si il
y a plusieurs param`etres, ils seront s´epar´es par une virgule. Si la fonction ne prend rien en entr´ee, on
notera encore une fois ”void”.
4. Finalement, les instructions de la fonction seront plac´ees directement apr`es la d´eclaration, entre crochets.
Comme la compilation du programme s’effectue dans l’ordre, il est n´ecessaire de d´efinir toute fonction
auxiliaire, utilis´ee dans la fonction main, avant cette derni`ere. En outre, il existe de nombreuses fonctions
pr´eprogramm´ees. Il y a par exemple :
– La fonction printf a pour but d’afficher le texte qu’elle prend en entr´ee. Son utilisation est de la forme :

Il est ´egalement possible de lui faire afficher une variable. Cette utilisation est pratique puisque la valeur
renvoy´ee changera en fonction de la variable. L’instruction sera alors ainsi :

En effet, si on veut afficher la variable, il faut afficher un %d `a l’emplacement si elle est de type int, un
%s si elle est de type char, et %f si elle est de type double. De plus, il faut mettre le nom de la variable
en entr´ee de la fonction.
– La fonction scanf a pour but de demander `a l’utilisateur de rentrer une valeur, et de la stocker dans
une variable. Elle s’utilise ainsi :

De la mˆeme fa¸con que pr´ec´edemment, on utilisera un %d pour une variable de type int et un %s pour
un type char. Cependant, pour une variable double, on utilise %lf . Nous d´efinirons dans la partie sur
les pointeurs pourquoi il est n´ecessaire d’ins´erer un & avant le nom de la variable.
– La fonction return prend en entr´ee un nombre ou une variable et le retourne. Cela permettra, si on
utilise la fonction `
a l’int´erieur d’une autre fonction, de r´ecup´erer la valeur retourn´ee.

Les boucles et les conditions
Les conditions
Nous avons vu pr´ec´edemment que le ”=” est l’op´erateur d’affectation. Il faut donc d´efinir l’op´erateur
d’´egalit´e, ainsi que les autres comparateurs math´ematiques usuels.

Figure 2.13 – Symboles math´ematiques en C, Tableau extrait du ”Site du z´ero”
Lefevre Yoan, Rozenbaum Chlo´e

30

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Il est alors facile de poser des conditions. Celles-ci seront de la forme ”Si telle condition est v´erifi´ee, alors
faire cela”. En langage C, on a donc :

Il est ´egalement possible d’envisager le cas o`
u cette condition n’est pas vraie et de l’inclure dans les
instructions. Cela est possible de deux fa¸cons :

Dans le premier cas, on donne des instructions dans le cas o`
u la condition n’est pas v´erifi´ee. Dans le
deuxi`eme cas, on envisage alors d’autre situations possibles, on impl´emente une nouvelle condition. Il est
´egalement possible de poser plusieurs conditions `a la fois, l’une ou l’autre, ou par la n´egation d’un ´etat. Cela
peut ˆetre cod´e `
a l’aide des liens logiques suivants :

Figure 2.14 – Liens logiques en C, Tableau extrait du ”Site du z´ero”

Les boucles
Le but des boucles est de r´ep´eter plusieurs fois certaines instructions, sans avoir `a les r´e´ecrire. Les conditions sont alors tr`es utilis´ees afin de permettre que la boucle ne soit pas infinie. Il existe trois types de boucles
en C.
– La boucle while est bas´ee par une condition. Tant que celle-ci est vraie, les instructions se r´ep`etent.

– La boucle do...while effectue une instruction puis la r´ep`ete tant que la condition est vraie.

– La boucle f or utilise une variale compteur. Elle va faire ´evoluer cette variable jusqu’`a ce que la condition
ne soit plus r´ep´et´ee, et `
a chaque it´eration, les instructions seront effectu´ees. Dans la premi`ere instruction

prise en entr´ee de la fonction, la variable compteur est initialis´ee. Dans la deuxi`eme, la condition indique
Lefevre Yoan, Rozenbaum Chlo´e

31

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

si la boucle doit se r´epeter ou non. La troisi`eme indique l’op´eration de modification de la variable `
a
effectuer a` chaque tour de la boucle

Les directives de pr´
eprocesseur : les includes
Nous ne d´etaillerons dans cette partie qu’un seul type de directive de pr´eprocesseur : les includes. Il
en existe d’autres, mais il n’est pas n´ecessaire de les connaitre afin de comprendre notre algorithme. Nous
citerons quand mˆeme leurs noms : les defines, les macros et les conditions se situant dans le pr´eprocesseur.
Toutes ces directives de pr´eprocesseur sont en fait des instructions n’appartenant `a aucune fonction, qui
vont ˆetre plac´ees tout au d´ebut du fichier. Elle seront lues par le compilateur avant tout autre ´el´ement. Parmi
celles-ci, on peut citer les includes, qui sont fondamentales.
Ces directives permettent l’utilisation de fonctions pr´eprogramm´ees telles que printf, scanf et d’autres. Il
en existe beaucoup, pour la plupart regroup´ees par th´ematique de travail. Les deux quasiment indispensables
que nous utiliserons sont :

La d´eclaration d’une directive de pr´eprocesseur se pr´ec`ede toujours par ”#”. De plus, le nom de la
biblioth`eque `
a inclure est entour´ee par ”<” et ”>”. Il est ´egalement important de noter que les noms des
biblioth`eques se finissent par ”.h” Nous l’expliquerons par la suite.

La programmation modulaire
Lors de l’utilisation d’une fonction auxiliaire, il est possible de ne la d´efinir qu’`a la fin du programme.
Pour cela, il faut tout de mˆeme y faire un appel en d´ebut de fichier. Pour cela, il suffit d’´ecrire la premi`ere
ligne de d´efinition de la fonction, suivie d’un point virgule. On appelle une telle d´eclaration le prototype d’une
fonction. Il ne faut tout de mˆeme pas oublier de d´efinir la fonction `a la fin du programme, de la mani`ere
d´efinie pr´ec´edemment. La seule fonction qui ne n´ecessite pas de prototype est la fonction main.
Lors de r´eels programmes de plusieurs centaines de lignes, il n’est cependant pas d’usage d’avoir toutes les
fonctions dans un mˆeme fichier. Cela permet d’organiser un projet, et d’ameliorer la clart´e des algorithmes.
Chaque fichier en C est sauvegard´e avec une extension .c. Ces fichiers sont appel´es les fichiers sources. Ils
contiennent les fonctions. Il est alors possible de cr´eer des fichiers de mˆeme nom mais avec une extensions
.h. Ils sont appel´es les headers. Ils contiennent les prototypes des fonctions. Ainsi, pour utiliser la fonction
correspondante dans la fonction main, il suffit d’inclure le headers de la mˆeme fa¸con qu’une autre directive
de pr´eprocesseur. La syntaxe est presque la mˆeme. Soit par exemple, une fonction puissance que l’on veut
pouvoir utiliser. On aura alors :

Les pointeurs
Lorsque l’on envoit une variable `
a une fonction, afin que celle-ci s’applique, une copie de la variable est
r´ealis´ee. Ainsi, lorsque la fonction aura finie de s’´executer, la valeur de la variable n’aura pas ´et´e modifi´ee,
il n’est donc pas possible de la r´ecup´erer sans un return puis une affectation. Il n’est cependant possible de
retourner qu’une seule valeur avec un return. Cela pose donc un r´eel probl`eme.
Chaque variable qui est utilis´ee est stock´ee quelque part dans la m´emoire. On peut alors d´efinir son
adresse. A chaque adresse, il est possible de stocker un seul nombre. On parle d’allocation de m´emoire. Afin
de modifier la variable, il est donc possible de changer sa valeur, directement en passant par son adresse. Si
l’ont veut les afficher, on peut alors utiliser un printf avec :
– variable : affiche la valeur de la variable.
– &variable : affiche l’adresse de la variable. Par ailleurs,pour afficher une adresse, on utilise %p.

Lefevre Yoan, Rozenbaum Chlo´e

32

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Mais une telle utilisation n’est pas pratique. En effet, les adresses seraient donc stock´ees dans d’autres variables, ce qui utiliserait encore de la m´emoire. Sur un gros programme, cela peut avoir de r´eelles r´epercussions
sur la vitesse d’ex´ecution. Afin de faciliter l’utilisation des adresses, on va donc cr´eer des pointeurs vers les
adresses. Pour cela, on rajoute seulement le symbole * devant le nom du pointeur, pour signifier que c’en est
un.
A la diff´erence des autres types de variable, afin d’initialiser sa valeur, un pointeur ne re¸coit pas 0 mais
N U LL.

Si on veut lui donner directement la valeur de l’adresse de la variable, on lui fait simplement recevoir
&variable. De plus, le type sp´ecifi´e ne sera pas un type ”pointeur” mais le type de la variable dont il indique
l’adresse. Pour afficher la valeur du pointeur et de la variable associ´ee, on peut donc utiliser un printf avec :
– pointeur : affiche la valeur du pointeur (donc l’adresse de la variable)
– ∗pointeur : affiche la valeur de la variable associ´ee

Pour modifier la valeur d’une variable dans une fonction, il suffit donc de mettre en entr´ee ”&variable ou
bien pointeur (pas de *) en ayant bien indiqu´e que ce pointeur est li´e `a la variable, au pr´ealable.

Lefevre Yoan, Rozenbaum Chlo´e

33

11 mai 2012

Notions d’´
electronique
Divers symboles

Potentiel
Grandeur d´efinissant l’´etat ´electrique d’un point de l’espace.

Tension
Diff´erence de potentiel : UAB = VA –VB

34

CPBx

Robotique humano¨ıde, robotique comportementale

Pont diviseur de tension
M´ecanisme permettant de choisir une tension sp´ecifique entre deux potentiels, grˆace `a deux r´esistances.

On cherche `
a d´eterminer UBC . Pour cela il faut utiliser deux r´esistances RAB et RBC mais ´egalement que
le ”circuit ´electrique” ne consomme pas beaucoup de courant. On obtient alors la relation suivante :


AC
I = (RABU+R
UAC = I × (RAB + RBC )
BC )

(2.3)
UBC = I × RBC
UBC = I × RBC
Soit
UBC =

Lefevre Yoan, Rozenbaum Chlo´e

RBC × UAC
(RAB + RBC )

35

(2.4)

11 mai 2012

Glossaire
A
analogique
On emploie le terme ”analogique” pour caract´eriser une discipline o`
u les grandeurs utilis´ees sont `a l’image du signal `
a traiter. Ici, on parle d’´electronique analogique car les syst`emes op´erent sur des grandeurs
(tension, courant, charge) `
a variation continue. Cela diff`ere de l’´electronique num´erique dans laquelle
ces derni`eres sont quantifi´ees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .[20]
autonomie d´
ecisionnelle
Libert´e de choisir ses actions en fonction de la perception de l’environnement. Seuls les robots con¸cus
ainsi sont capables de cr´eer leur propre fa¸con d’agir et ne sont pas pr´evisibles. Le robot n’est pas dirig´e
par une puissance externe. Ainsi, l’action effectu´ee d´epend uniquement de la perception du robot et de
sa capacit´e `
a analyser la situation et `
a choisir la bonne marche `a suivre . . . . . . . . . . . . . . . . . . . . . . . . . . . [5]

B
BLDC
Brushless DC motors , correspond `
a des moteurs ´electriques de type synchrone (qui absorbe du courant
dont la fr´equence va d´eterminer la vitesse de rotation du moteur). Ces moteurs fonctionnent en courant
continu et ont pour particularit´e de ne pas poss´eder de collecteur tournant. . . . . . . . . . . . . . . . . . . . . . . [22]
bool´
een
Qui peut prendre deux valeurs oppos´ees : vrai ou faux, oui ou non, dans le cas d’un algorithme : 1 ou
0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [8, 10]
bruit
D´esigne toute information inutile, non d´esir´ee, voire parasite, se superposant aux signaux utiles . . [12]

C
chromosome
El´ement microscopique constitu´e de mol´ecules d’ADN. Le chromosome est l’´el´ement porteur de l’information g´en´etique et donc des g`enes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [12]

D
datasheet
Fiche technique r´esumant les performances et autres caract´eristiques techniques (plus souvent ´electriques/
´electroniques) d’un produit quelconque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [22, 23, 25]

F
fonction de Heaviside
Egalement appel´ee fonction ´echelon. Du nom de Oliver Heaviside, est une fonction H prenant la valeur
0 pour tous les r´eels strictement n´egatifs et la valeur 1 partout ailleurs : . . . . . . . . . . . . . . . . . . . . . . . . . [10]

36

CPBx

Robotique humano¨ıde, robotique comportementale

Figure 2.15 – Fonction de Heaviside

Figure 2.16 – Fonction sigmo¨ıde
fonction sigmoide
D´efinie telle que ∀x, f (x) = 1+e1−x . On a cependant l’habitude de la g´en´eraliser `a toute fonction de la
forme : f (x) = 1+e1−λx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [10]
fonction tangente hyperbolique
D´efinie par :
ex −e−x
th(x) = sh(x)
ch(x) = ex +e−x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [10]

Figure 2.17 – Fonction tangente hyperbolique

fonction XOR
La fonction OU exclusif, souvent appel´ee XOR (eXclusive OR), est un op´erateur bool´een qui peut avoir
la valeur VRAI (1) ou FAUX (0), et prend en entr´ee n op´erateurs bool´eens. Il renvoi alors vrai si toutes
ses entr´ees sont ´egales, et faux autrement. Par exemple dans R2 ∩{0, 1} : A = 0 et B = 0 ⇒ XOR = 0 ;
A = 1 et B = 0 ⇒ XOR = 1 ; A = 0 et B = 1 ⇒ XOR = 1 ; A = 1 et B = 1 ⇒ XOR = 0 . . . . . . . [10]

G

enome
Ensemble du mat´eriel g´en´etique d’un individu ou d’une esp`ece . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [9, 12]

Lefevre Yoan, Rozenbaum Chlo´e

37

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

H
heuristique
Une heuristique est un algorithme qui fournit rapidement une solution r´ealisable, pour un probl`eme
d’optimisation et qui est donc le contraire d’un algorithme exact qui trouve une solution parfaite pour un
probl`eme donn´e. G´en´eralement une heuristique est con¸cue pour un probl`eme particulier, en s’appuyant
sur sa structure propre. On parle de m´etaheuristique pour les m´ethodes approximatives g´en´erales, pouvant s’appliquer `
a diff´erents probl`emes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [9]
humanoide
Terme signifiant ”de forme humaine”, principalement constitu´e de deux bras, deux jambes et d’une
tˆete. Il s’agit l`
a un crit`ere principalement morphologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [7, 14, 18, 19]

M

ecatronique
Domaine d’´etude combinant la m´ecanique, l’´electronique et l’informatique afin de concevoir des syst`emes
automatiques puissants et de permettre le contrˆole de syst`emes complexes . . . . . . . . . . . . . . . . . . . . . . . [14]
microcontrˆ
oleur
Circuit int´egr´e qui rassemble les ´el´ements essentiels d’un ordinateur : processeur, m´emoires (m´emoire
morte pour le programme, m´emoire vive pour les donn´ees), unit´es p´eriph´eriques et interfaces d’entr´eessorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [20, 22, 23, 25, 26]

N
neurone
Cellule du syst`eme nerveux sp´ecialis´ee dans la communication et le traitement d’informations . . . . . [9]

P
perceptron
Mod`ele tr`es simple de r´eseau de neurones avec algorithme d’apprentissage cr´e´e par Frank Rosenblatt
en 1958 au Cornell Aeronautical Laboratory. Le perceptron ob´eit `a la r`ege de Hebb : ”lorsque deux
neurones sont excit´es conjointement, il se cr´ee ou renforce un lien les unissant” . . . . . . . . . . . . . . . . . . [10]
photor´
esistance
Composant ´electronique dont la r´esistivit´e varie en fonction de la quantit´e de lumi`ere incidente. Sa
r´esistivit´e est `
a son minimum quand la luminosit´e qu’elle re¸coit est forte, et est `a son maximum dans
l’obscurit´e totale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [21]
PIN
PIN en anglais, Port ou broche en fran¸cais, correspond `a un branchement (entr´ee ou sortie) d’un composant. Ils sont tr`es g´en´eralement not´es pour ´eviter toute confusion. . . . . . . . . . . . . . . . . . . [22, 23, 25, 26]

S
synapse
Zone de contact entre deux neurones ou entre un neurone et une autre cellule (cellules musculaires,
r´ecepteurs sensoriels...) permettant `
a des signaux ´electriques ou chimiques de circuler . . . . . . . . . . . . . [9]

T
transistor
Semi-conducteur `
a trois ´electrodes actives, qui permet de contrˆoler un courant (ou une tension) sur
une des ´electrodes de sorties grˆ
ace `
a une ´electrode d’entr´ee. Il peut ˆetre utilis´e comme interrupteur,
amplificateur de signal ou pour stabiliser une tension, moduler un signal.. . . . . . . . . . . . . . . . . . . . . . . . .[21]

Lefevre Yoan, Rozenbaum Chlo´e

38

11 mai 2012


ef´
erences
Bibliographie
Introduction, pr´
esentation du sujet
– Science et Vie (hors s´erie) : La Robotique, 2005
– Les Robots, Une histoire de la robotique, Chantal Leguay, Imho, 2005
– Robots Extraordinaires, Cyril Fi´evet, Philippe Bultez Adams, FYP Editions, 2006
De l’intelligence artificielle `
a la robotique comportementale
– Des moutons et des robots - Architecture de contrˆ
ole r´eactive et d´eplacements collectifs de robots, Pierre
Arnaud, Presses Polytechniques et Universitaires Romandes, 2000
Les syst`
emes multi-agents
– Syst`emes Multi-Agents, Observatoire Fran¸cais des Techniques Avanc´ees, Editions Tec et Doc, 2004
Neurones artificiels
– Apprentissage autonome et ´evolution artificielle, sous la direction de Claude Lattaud, Extraction des
connaissances et apprentissage, Hermes Science, 2001
Programmes ´
evolutifs
– Machine Learning, Tom M.Mitchell, WCB McGraw-Hill, 1997
Robotique humano¨ıde
– Robo Sapiens, Peter Menzel et Faith D’Aluisio, Editions AUTREMENT, 2001
Montage ´
electronique
– Petits Robots Mobiles, Fr´ed´eric Giamarchi, ETSF, 2006
– Construisons nos Robots Mobiles, Fr´ed´eric Giamarchi, ETSF, 2007
Programmation du robot
– Introduction `
a la programmation imp´erative, Aymeric Vincent, 2011-2012

Sitographie
Introduction, pr´
esentation du sujet
– http ://www.robotblog.fr/robots-humanoides/acroban-le-robot-humanoide-qui-evolue-et-apprend-commeun-enfant-3135
– http ://www.aldebaran-robotics.com/en/Home/welcome.html ?language=en-GB
De l’intelligence artificielle `
a la robotique comportementale
– http ://www.larecherche.fr/content/recherche/article ?id=12055
– http ://www.automatesintelligents.com/echanges/2002/avr/brooks.html
– http ://www.heartlandrobotics.com/
– http ://tpelyceeledouxintelligence.e-monsite.com/pages/content/une-intelligence-artificielle/vers-une-intelligenceartificielle-forte.html
– http ://www.automatesintelligents.com/echanges/2008/jui/dossieria.html
– http ://ia-tpe.over-blog.com/article-l-ia-forte-ou-approche-ascendante-67996351.html
39

CPBx

Robotique humano¨ıde, robotique comportementale

Neurones artificiels
– http ://william.arrouy.free.fr/neural/neu3.html
– http ://thebrain.mcgill.ca/flash/capsules/pdf articles/reseau neurones.pdf
– http ://www-inrev.univ-paris8.fr/extras/Michel-Bret/cours/bret/cours/rn/rn5.htm
Programmes ´
evolutifs
– http ://julien.chauveau.online.fr/m2reccid/MA4/assets/Genetique 1.pdf
– http ://khayyam.developpez.com/articles/algo/genetic/
– http ://aeromav.free.fr/MAV02/Contributions/S2 A DONCIEUX.PDF
– http ://perso.eleves.bretagne.ens-cachan.fr/∼bpill920/publications/ : TIPE 2009
– http ://deptinfo.unice.fr/twiki/pub/Linfo/PlanningDesSoutenances20032004/Radet-Souquet.pdf Non
accessible par l’adresse directement. Taper Radet-Souquet dans Google : premier lien.

Robotique humano¨ıde
– http ://www.bostondynamics.com/robot petman.html
– http ://www.unicaen.fr/services/puc/ecrire/preprints/preprint0102007.pdf
– http ://eprint.insa-toulouse.fr/archive/00000205/01/diazzagal.pdf
– http ://www.vincentabry.com/hanson-robotics-un-androide-qui-derange-19
– http ://www2.cnrs.fr/sites/communique/fichier/dp hrp 2 v couv.pdf
– http ://www-igm.univ-mlv.fr/∼dr/XPOSE2002/robotique/chapitres/Marche.htm
– http ://www.robotblog.fr/robots-humanoides/un-bras-robotique-muni-de-muscles-artificiels-483
– http ://www.pourlascience.fr/ewb pages/a/actualite-des-muscles-artificiels-a-nanotubes-20978.php
– http ://sed.inrialpes.fr/stages/stages99/rapportMeharzi.pdf
– http ://www.ac-grenoble.fr/college/henri.corbet/file/Technologie/4ieme/Confort Domotique/CI 6/webprof/res/Comp
Montage ´
electronique
– http ://www.microchip.com/stellent/idcplg ?IdcService=SS GET PAGE&nodeId=1406&dDocName=en549010
– http ://ww1.microchip.com/downloads/en/DeviceDoc/41401A.pdf
Programmation du robot
– http ://www.siteduzero.com/
– http ://www.technologuepro.com/microcontroleur/Programmation PIC Ccompiler.htm
– http ://www.noxyben.fr/Electronique/PIC/Programmation des PIC en C part2.pdf
– ftp ://ftp.discip.crdp.ac-caen.fr/discip/crgelec/
– http ://www.ac-limoges.fr/sti ge/IMG/pdf/Theme - Station meteo PIC - 2006 - Presentation Langage C.pdf
– http ://www.microchip.com/

Lefevre Yoan, Rozenbaum Chlo´e

40

11 mai 2012

Documents en annexe
Blocs composant le PIC, version d´
etaill´
ee

41

CPBx

Robotique humano¨ıde, robotique comportementale

Adresses des modules : carte de la m´
emoire

Lefevre Yoan, Rozenbaum Chlo´e

42

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Ports du PIC16

Lefevre Yoan, Rozenbaum Chlo´e

43

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Connexion du PIC16 aux autres composants ´
electroniques

Lefevre Yoan, Rozenbaum Chlo´e

44

11 mai 2012

CPBx

Robotique humano¨ıde, robotique comportementale

Algorithme Complet

Lefevre Yoan, Rozenbaum Chlo´e

45

11 mai 2012

CPBx

Lefevre Yoan, Rozenbaum Chlo´e

Robotique humano¨ıde, robotique comportementale

46

11 mai 2012

CPBx

Lefevre Yoan, Rozenbaum Chlo´e

Robotique humano¨ıde, robotique comportementale

47

11 mai 2012

CPBx

Lefevre Yoan, Rozenbaum Chlo´e

Robotique humano¨ıde, robotique comportementale

48

11 mai 2012

Remerciements

A M.DUCHON pour les orientations qu’il nous a propos´ees.
A Mme. ESCOLIN pour les multiples informations qu’elle nous a sugg´er´ees.
A M.LY, chercheur au LaBRI et `a l’INRIA pour sa disponibilit´e et ses conseils.
A Guillaume LEFEVRE ainsi qu’`a Jean-Jacques FAVRE pour leur aide
concernant la fabrication du capteur.
A Virgile LANDEIRO DOS REIS pour son aide sur la partie algorithmique.
˜ et au club EIRBOT (club de robotique de l’ENSEIRB) pour nous avoir
A Diego DE UNA
guid´es, initialement, dans la conception du robot.

49


Documents similaires


Fichier PDF projet
Fichier PDF etat de l art
Fichier PDF sources
Fichier PDF partie 1
Fichier PDF diapo revue presse
Fichier PDF pdf soutenance bras robot


Sur le même sujet..