Comment apprendre à robot bipède à marcher ? Vous êtes-vous déjà posé la question ? Le problème est plus épineux qu’il n’y parait. En effet, selon ses mensurations et le poids de ces différents éléments, il doit adopter une approche différente pour équilibrer son centre de gravité. Si le terrain n’est pas plat, c’est encore pire. Et si en plus il doit porter une charge et subir des contraintes extérieures… bref, ne comptez pas utiliser sur un robot une séquence d’animation de type Motion Capture, cela ne fonctionnera pas.
Une autre approche consiste à lui demander d’apprendre à marcher tout seul. Cela peut paraître idiot, mais savez-vous qu’il y a de très nombreux domaines où les machines se sont programmées seules ? Prenons l’exemple du sonar dans un sous-marin. Au début, les meilleures “oreilles” étaient humaines quand il s’agissait de distinguer si un écho était renvoyé par un récif ou une mine. Maintenant, ce sont des machines qui sont les plus performantes. Mais si vous collez un informaticien devant le code de la machine, il sera en lire l’alphabet, mais probablement jamais le sens. Ces machines se sont programmées d’elles-mêmes à partir d’une série de fonctions heuristiques, d’algorithmes génétiques, de logique floue ou de réseaux neuronaux. Et probablement un peu de tout mélangé avec des “modèles mathématiques”. Tout comme les meilleurs traders du monde (Predictive Company).
Dans le cadre des algorithmes génétiques, en quoi cela consiste ? Si nous prenons l’exemple de la marche, j’aurais tendance à fournir plusieurs modèles de marche à la machine avec des animations type motion capture. Ensuite, je vais attribuer à l’ensemble des tendons simulés, des jointures, des os, des coefficients (vitesse, force, contraintes, etc.). Et je vais générer une première génération de 1000 robots avec des coefficients tirés au hasard et un ou plus mixages de modèles d’animation. Je vais les laisser marcher et mesurer le nombre de mètres effectués… bon c’est trop simpliste, mesurons des éléments comme la capacité à poser le pied le plus loin ou à rester en équilibre le plus longtemps, etc. A la fin, j’attribue une note et je choisis les 100 meilleurs. Je tire au hasard un millier de fois des couples et je fais un mixage des éléments (interpolation linéaire, cubique, etc. tout type de mixage, là aussi au hasard, mais en gardant une trace). J’obtiens 1000 nouveaux robots, la génération 2. Et je recommence jusqu’à ce qu’un robot finisse par marcher convenablement…
Bon, j’ai beaucoup simplifié, mais le principe est là. Et je crois que c’est le procédé utilisé par les chercheurs Thomas Geijtenbeek, Michiel van de Panne et Frank van der Stappen dans leur publication Flexible Muscle-Based Locomotion for Bipedal Creatures présentée lors du SIGGRAPH Asia 2013.
Le modèle utilisé pour les créatures se compose d’une hiérarchie des corps rigides, qui sont actionnés en utilisant un modèle musculaire dynamique [Travaux de Geyer et Herr 2010]. Les contraintes biomécaniques incorporées dans ce modèle simule les propriétés physiologiques des fibres musculaires et les tendons (dynamique de contraction), et le processus électro-chimique qui conduit à des changements dans l’état d’activation (dynamique d’activation).
Les tests ont été réalisés via ODE (Open Dynamic Engine) un moteur de physique open-source. Pour ceux que cela intéresse, je leur laisse lire l’étude, ce n’est pas absolument novateur, mais c’est assez bien illustré grâce aux tests effectués. Après, je n’ai pas réussi à choper le code source des expérimentations — si quelqu’un y arrive, je lui en serais reconnaissant.
Voici la vidéo de leurs expériences:
L’optimisation automatique permet de faire en sorte que les personnages adaptent leur mode de déplacement en fonction de la vitesse ciblée, mais aussi selon les contraintes externes (pente du terrain, projectiles qui bombardent le personnage).
C’est du virtuel, oui, mais on l’apprentissage réalisé en environnement virtuel peut profiter aux robots réels moyennant une adaptation. Inutile de construire des milliards de robots pour trouver la marche optimale, une simulation suffit. Et ce qui est vrai pour la marche, l’est également dans de très nombreux domaines.
C’est certainement de la trop lourde artillerie pour le jeu vidéo, mais pourquoi pas ? Pour ma part, le domaine m’intéresse beaucoup et je comptais déjà utiliser une approche similaire pour mon projet “Lost Colonies” qui est n’est pas vraiment un jeu, pas vraiment une simulation… mais une sorte de serious game sur fond de colonisation spatiale par les robots.
Voici la présentation d’une autre approche, similaire dans la forme :