Introduction à la robotique anthropomorphiste
Ce qu’il nous faut appréhender de la robotique
Nous défendons ici l’idée qu’une intelligence embarquée dans un robot doit posséder des caractéristiques spécifiques à sa condition d’intelligence incarnée, particulièrement s’il s’agit d’un artefact humanoïde ou plus ou moins proche d’un animal.
C’est pourquoi les exemples que nous vous proposons d’étudier sont toujours transposables à ce contexte.
Typiquement, le hello world du deep learning, à savoir le traitement de MNIST, se situe dans cet esprit. Non seulement l’étude que nous en avons effectuée permet d’implémenter un réseau neuronal crédible et moderne via TensorFlow, mais elle exhibe de surcroît une IA capable de "comprendre" que ce qu’elle voit, un misérable tableau de pixels, possède en fait une signification, à savoir représente un chiffre.
Dans un contexte futuriste, on comprend bien qu’un humanoïde allant au marché aurait à décoder les prix au kilo des légumes qui lui sont proposés, ou que la même IA, non dotée d’un GPS, pourrait trouver un avantage à lire les numéros des maisons dans une rue pour pouvoir retrouver son chemin et livrer ses légumes…
Il n’est donc...
Mais qui sont ces robots ?
1. Le contexte
Depuis les années 1970, on trouve de nombreuses expérimentations de robot humanoïdes. En dehors de toute considération d’acceptation sociale ou de syndrome psychologique du genre "se prendre pour le créateur", il existe une rationalité forte à vouloir aborder le robot au travers de ses formes humanoïdes :
-
Pour nous être utile, un robot doit pouvoir s’intégrer à notre environnement et manipuler nos objets (dans les usines automatisées, les bras des robots fixes ressemblent étrangement à des bras… humains).
-
Il est plus facile de spécifier un robot humanoïde qu’un autre, car nous possédons une référence bien identifiée, nous-mêmes !
-
Nous considérons souvent l’être humain comme relativement évolué, alors tant qu’à faire, autant le copier !
-
Nous disposons de nombreuses informations sur les cinématiques humaines, la mécanique de nos articulations, ce que nous captons au travers de nos sens… Ces informations sont même parfois déjà numérisées.
Évidemment, là où le bât blesse c’est que l’humain s’avère le fruit d’une longue évolution.
On pourrait penser qu’il est indispensable de mettre au point des formes simples de robots avant d’évoluer avec rigueur vers un schéma de robot sophistiqué. Un tel robot serait le fruit d’un processus rationnel basé sur des protocoles d’expérimentation bien construits. Certains suivent d’ailleurs ce chemin avec brio, mais sont loin du but.
Nous ne doutons pas qu’un jour tout cela fera l’objet d’un refactoring d’ensemble, de la mise au point d’une théorie généralisée et englobante, un peu comme l’a effectué le groupe Bourbaki pour les mathématiques du siècle dernier. Mais nous en sommes aujourd’hui réduits à une forme d’alchimie coupable : c’est-à-dire au croisement empirique de démarches top-down (partir de l’humain), bottom-up (assembler des composants de base existants) au gré des pulsions et des intuitions des bricoleurs que nous sommes.
Un garde-fou...
Notions basiques : DOF, Actuator, Effector, DOM
1. Le vocabulaire
Les notions suivantes sont très importantes pour décrire synthétiquement comment se déplacent les composants d’un robot :
1. Les actuators (actionneurs) sont les composants qui peuvent générer un mouvement (principalement des moteurs).
2. Les effectors (effecteurs) sont des organes ou des systèmes terminaux des robots (typiquement au bout de leurs bras) permettant à ceux-ci d’exécuter des fonctions diverses autres que ses déplacements.
3. Les DOF (pour Degree of Freedom) représentent les degrés de liberté des composants du robot, typiquement au niveau des liens entre ses composants. Il faut imaginer ces degrés de liberté en termes de rotation, mais aussi de translation (pensez à une glissière) qui peuvent s’effectuer dans les 3 dimensions.
Bras robotique simpliste avec 2 DOF
Il existe de nombreux types d’effectors, parmi eux :
-
les sensors (capteurs), comme les capteurs anti-collision (pensez aux moustaches du chat !),
-
ou des grippers pour saisir des objets (la main d’un robot humanoïde).
Tout cela ne se complique donc vraiment que lorsque le robot se met en mouvement !
2. La cinématique
Pour prévoir la position du robot et de ses composants, on effectue ce que l’on nomme le calcul de la cinématique avant du robot (forward kinematic).
Les équations géométriques physiques appliquées à l’état initial qui permettront de déterminer les mouvements du robot peuvent être nombreuses et diverses, mais leur agencement est relativement naturel.
À l’inverse, quand on veut que le robot arrive dans une position donnée, ce qui est souvent le cas (quand on pose le pied sur une marche d’escalier, quand on veut attraper un objet…), on doit alors calculer une cinématique...
Interfaces avec le robot
1. Vers une interface directe avec le robot
Un type d’interface nous fascine, ce sont les interfaces directes avec cerveau (BCI pour Brain Computer Interface ou BMI pour Brain Machine Interface).
Dans ces interfaces, l’idée est de capter les traces des processus physiologiques induits par l’homme, de séparer la partie involontaire du signal, de le débruiter, puis de rapprocher ce signal à une ontologie de signaux interprétables par la machine.
On comprend alors que nos techniques habituelles vont pouvoir s’appliquer :
1. preprocessing des données,
2. utilisation d’un modèle issu de l’apprentissage automatique,
3. interface avec un système de contrôle/feedback.
Nous sommes donc en terrain connu. Mais il faudra de plus prendre en compte l’analyse de signaux dont l’amplitude variable est naturellement décroissante après une impulsion, et étudier sérieusement l’analyse des corrélations entre les fréquences émises par l’opérateur humain et les fréquences labellisées dans la machine.
L’analyse des spectrogrammes, dont nous étudierons le code Python au chapitre Simuler les attributs de l’intelligence en étudiant les signaux sonores, sera ici d’un grand secours : il nous suffira de spécifier les attributs des spectrogrammes de l’opérateur humain correspondant à des consignes valides pour le robot.
Dans ce contexte, le taux de transfert de l’information...
Des données pour s’entraîner
En dehors des données ouvertes que vous pouvez collecter pour entraîner vos modèles, comme les MNIST ou les données citées en début d’ouvrage et en particulier les données comportant des images labellisées, il existe une autre source de données bien utile, les simulateurs qui permettent d’acquérir des données cinématiques sur le mouvement des robots.
Pour acquérir ces données sur les robots, les simulateurs suivants peuvent s’avérer très utiles :
-
V-REP, qui est disponible en version Éducation (http://www.coppeliarobotics.com/)
-
Webots, qui est open source (licence Apache 2.0) (https://cyberbotics.com/)
Évidemment, ces simulateurs sont aussi très utiles pour visualiser comment vos robots se comportent dans une situation donnée gérée par l’IA dont vous les aurez dotés !
On peut également utiliser la capture automatique de poses à partir d’un modèle TensorFlow adapté, comme celui disponible ici dans les exemples proposés par l’équipe TensorFlow : https://github.com/tensorflow/tfjs-models/tree/master/posenet
Posenet permet d’identifier sur des images les positions de diverses parties du corps.
Couplé à un repérage temporel des images, cela permet d’analyser...
Bibliographie du chapitre
Bansal, Somil, Varun Tolani, Saurabh Gupta, Jitendra Malik, and Claire Tomlin. 2019. "Combining Optimal Control and Learning for Visual Navigation in Novel Environments." CoRR abs/1903.02531. http://arxiv.org/abs/1903.02531.
Maakaroun, Salim. n.d. "Modélisation et simulation dynamique d’un véhicule urbain innovant en utilisant le formalisme de la robotique." https://tel.archives-ouvertes.fr/tel-00664283.
Thompson, David E, Lucia R Quitadamo, Luca Mainardi, Khalil ur Rehman Laghari, Shangkai Gao, Pieter-Jan Kindermans, John D Simeral, et al. 2014. "Performance Measurement for Braincomputer or Brainmachine Interfaces: A Tutorial." Journal of Neural Engineering 11 (3): 035001. https://doi.org/10.1088/1741-2560/11/3/035001.