FR 2978844 A1 20130208 FR 1157171 A 20110804 ROBOT A ARTICULATIONS DE RIGIDITE VARIABLE ET METHODE DE CALCUL DE LADITE RIGIDITE OPTIMISEE La présente invention appartient au domaine des robots articulés pouvant se déplacer sur une surface. Plus précisément, elle s'applique au contrôle de la rigidité des articulations dudit robot, celle-ci constituant à la fois un facteur important de l'ergonomie d'interaction avec le robot et un facteur limitant de la durée et de la fiabilité de son utilisation. Un exemple de robot articulé est un robot humanoïde, c'est-à-dire possédant certains attributs de l'apparence et des fonctionnalités de l'homme: une tête, un tronc, deux bras, deux mains, deux jambes, deux pieds...Au-delà de l'apparence, les fonctions qu'un robot humanoïde est capable de remplir vont dépendre de sa capacité à effectuer des mouvements, à parler et à « raisonner ». Des robots humanoïdes sont capables de marcher, de faire des gestes, avec les membres ou avec la tête. La complexité des gestes qu'ils sont capables d'effectuer augmente sans cesse. Des robots de ce type tel que NAOTM, développé et commercialisé par la demanderesse, peuvent posséder des dizaines d'articulations dont les mouvements sont actionnés par des moteurs électriques. La logique de contrôle-commande desdits moteurs détermine à la fois la rigidité des articulations et la consommation électrique (et donc l'évolution de la température) du robot. Elle est ainsi un des éléments déterminants pour la sécurité du robot (impact sur la stabilité), la durée possible de son utilisation (arrêt obligatoire à partir d'une température limite) et l'expérience ressentie par un utilisateur dans son interaction avec le robot, une trop grande rigidité des chaînes articulaires écartant le robot d'un idéal type humanoïde. Une problématique de même type est également présente pour d'autres types de robots non humanoïdes, tels que des robots animaux ou plus généralement des robots comprenant des chaînes articulées. La logique de contrôle-commande peut utiliser des consignes de position de l'articulation (généralement en angle), de vitesse de l'articulation (dérivée de l'angle) et/ou de couple. Ces logiques sont pilotées par des capteurs et peuvent ou pas comprendre des boucles de contreréaction permettant de guider la convergence vers la consigne. Le contrôle-commande utilisant une consigne de couple ou de courant est le plus coûteux et le moins répandu. En effet, il est dans ce cas nécessaire d'utiliser un capteur précis de valeur de courant, ce qui sera coûteux, notamment dans le cas où le nombre d'articulations est très élevé. Les robots à chaîne articulée peuvent avoir une base fixe, comme par exemple les bras articulés industriels, notamment pour réaliser des tâches de montage. Il s'agit alors d'objets dont le prix de revient unitaire peut atteindre quelques dizaines ou centaines de milliers d'euros et dont le nombre d'articulations reste faible. Dans ce cas, une logique de contrôle-commande 1 o par le couple peut être adaptée dans la mesure où le prix de revient unitaire n'est pas la considération principale. Dans le cas des robots à chaîne articulée à base mobile, c'est-à-dire non fixée au sol, catégorie à laquelle appartiennent les robots humanoïdes, le 15 nombre d'articulations étant plus élevé et la contrainte de prix de revient très importante, on utilise généralement une logique de contrôle-commande des articulations par la position et/ou la vitesse angulaire qui est beaucoup moins coûteuse pour un niveau donné de précision. Cependant cette logique de contrôle-commande a plusieurs inconvénients importants, notamment le fait 20 que, si un obstacle vient empêcher le moteur d'atteindre la contrainte définie par une position cible, le moteur continuera à vouloir atteindre la position, inatteignable en réalité, et va donc pour ce faire consommer de l'électricité et élever la température de l'articulation et de l'ensemble jusqu'à provoquer la mise au repos du robot pour éviter sa détérioration. Ce problème est d'autant 25 plus gênant qu'il suffit d'un simple défaut d'horizontalité des pieds du robot dans une station debout pour déclencher le phénomène de surchauffe. Pour faire face à ce type de problèmes, il est connu de versions antérieures de NAOTM de définir un paramètre de rigidité pour chaque articulation qui 30 permet de limiter le couple appliqué à celle-ci à un niveau sensiblement inférieur aux limites physiques définies par le constructeur, de manière à réduire les occurrences de mise en sécurité. Cependant, cette solution ne permet pas d'éviter la surconsommation d'énergie, notamment lorsque une des chaînes du robot rencontre un obstacle sur sa course. En effet, une 35 limitation uniforme, nécessairement fixée à un niveau relativement élevé pour éviter des arrêts trop fréquents, ne va pas permettre une interruption précoce de la consommation des articulations en cause. Il est également connu, notamment de la demande de brevet US2008/258670, de calculer une valeur de couple à appliquer à une articulation et de la convertir en consigne de vitesse angulaire. Cependant, il n'est pas tenu compte dans cette réalisation des forces de réaction aux points de contacts du robot avec son environnement, lesdites forces étant l'origine principale des applications de couples trop élevés qui génèrent des 1 o surchauffes. La présente invention résout ce problème en procurant des moyens pour faire varier le rigidité des articulations des chaînes du robot en fonction des forces appliquées audit robot aux points de contact avec son environnement. 15 A cet effet, l'invention divulgue un robot doté de capacités de déplacement sur au moins une chaîne articulée comprenant au moins un capteur de contact de l'extrémité de ladite chaîne avec la surface de déplacement, ladite chaîne comprenant au moins une articulation, ladite articulation commandée 20 par un moteur électrique contrôlé par une consigne en position et/ou vitesse et par des moyens de limitation du courant et/ou du couple appliqué audit moteur, ledit robot étant caractérisé en ce que lesdits moyens de limitation sont contrôlés en fonction du couple appliqué à ladite au moins une articulation. 25 Avantageusement, ledit couple appliqué à ladite au moins une articulation est calculé comme étant solution d'une équation modélisant l'équilibre dynamique du robot entre, d'une part, la somme de la différence des forces 30 inertielles dues à l'accélération angulaire de l'articulation et de l'accélération de la gravité et de l'effet des forces de Coriolis et centrifuge et, d'autre part, la somme du couple et des forces de contact, de friction et de perturbation, lesdits couple et force étant appliqués à ladite articulation. Avantageusement, une partie au moins des effets des forces inertielles dues à l'accélération angulaire de l'articulation, des forces de Coriolis et centrifuge et des forces de friction est modélisée par un offset. Avantageusement, ledit offset varie selon la posture du robot. Avantageusement, l'effet de l'accélération de la gravité est calculé à partir d'une matrice de coefficients d'inertie dépendant de la configuration du robot et appliquée aux angles articulaires et du vecteur gravité déterminé par 1 o combinaison de mesures d'une centrale inertielle du robot. Avantageusement, pour le calcul du vecteur gravité on opère en outre une levée de doute par détermination de l'orientation dans l'espace d'une chaîne centrale du robot par résolution de la position d'effecteurs solidaires de ladite 15 chaîne. Avantageusement, les points d'application des forces de contact prises en compte dans le modèle d'équilibre dynamique du robot sont déterminés par génération d'une première liste d'effecteurs satisfaisant un critère choisi dans 20 un groupe de critères comprenant une liste d'états on/off de capteurs de contact positionnés sur lesdits effecteurs, une liste de seuils de distance minimale par rapport au plan virtuel du sol desdits effecteurs et toute combinaison desdits listes, lesdits critères étant substantiellement déterminés par la morphologie du robot. 25 Avantageusement, les effecteurs de la première liste sont filtrés en une deuxième liste par comparaison de la posture actuelle du robot à des postures types stockées dans les données de configuration du robot, lesdites postures types déterminant une liste type d'effecteurs, ladite deuxième liste 30 comprenant seulement les effecteurs de la liste correspondant à la posture type retenue comme la plus proche de la posture actuelle du robot selon un critère de similarité, si elle existe, et seulement ceux-ci. Avantageusement, les forces de contact aux points d'application sont 35 déterminées par recherche d'une solution sensiblement optimale à l'équation d'équilibre entre la somme desdites forces de contact et le poids du robot. et de la composante verticale des forces de perturbation. Avantageusement, les forces de perturbation sont négligées. L'invention divulgue également un procédé de limitation du couple et/ou du courant appliqué à un moteur électrique de commande d'une articulation d'un robot doté de capacités de déplacement sur au moins une chaîne articulée comprenant au moins un capteur de contact de l'extrémité de ladite chaîne 1 o avec la surface de déplacement, ladite chaîne comprenant au moins une articulation, ledit moteur électrique étant contrôlé par une consigne en position et/ou vitesse, ledit procédé étant caractérisé en ce que ladite limitation s'opère par détermination d'une valeur de couple calculée qui est appliquée à ladite articulation. 15 L'invention divulgue enfin un programme d'ordinateur comprenant des instructions de code de programme permettant l'exécution du procédé selon la revendication 10 lorsque le programme est exécuté sur un ordinateur, ledit programme étant adapté pour permettre une limitation du couple et/ou du 20 courant appliqué à un moteur électrique de commande d'une articulation d'un robot, ledit robot étant doté de capacités de déplacement sur au moins une chaîne articulée comprenant au moins un capteur de contact de l'extrémité de ladite chaîne avec la surface de déplacement, ladite chaîne comprenant au moins une articulation, ledit moteur électrique contrôlé par une consigne 25 en position et/ou vitesse, ledit programme comprenant un module de limitation du couple et/ou du courant appliqué audit moteur, ledit programme étant caractérisé en ce que ledit module de limitation est apte à exécuter ladite limitation en fonction du couple appliqué à ladite au moins une articulation. 30 La solution de l'invention permet de réduire de manière très significative la surconsommation d'énergie et la surchauffe. Dans les réalisations mises en oeuvre, on atteint presque une division par deux de l'élévation de température due à un fonctionnement des moteurs d'articulation à un couple 35 trop élevé. Pour des articulations particulièrement sollicitées, telles que la cheville, la durée de fonctionnement avant mise en sécurité peut être multipliée par quatre. La consommation d'énergie et la durée de vie totales du robot sont donc 5 grandement améliorées. En outre, les algorithmes utilisés sont par ailleurs peu gourmands en ressources de calcul (moins de 3% sur un processeur de type GeodeTM de la société AMD (32 bits, 500 MHz). Enfin, l'introduction d'un paramétrage de la rigidité des articulations, qui reste débrayable, permet de s'adapter aux préférences des utilisateurs et d'introduire des variantes selon les types de posture du robot, ce qui permet d'enrichir les expériences d'interaction des utilisateurs avec les robots. 15 L'invention sera mieux comprise et ses différentes caractéristiques et avantages ressortiront de la description qui suit de plusieurs exemples de réalisation et de ses figures annexées dont : - La figure 1 illustre un robot symbolisé par des chaînes articulées ; 20 - La figure 2 illustre le principe général du contrôle-commande d'un moteur d'articulation d'un robot selon l'art antérieur ; - La figure 3 illustre un organigramme général des traitements de contrôle-commande d'un moteur d'articulation d'un robot selon un mode de réalisation de l'invention; 25 - Les figures 4a et 4b représentent l'évolution au cours du temps des températures des articulations de la jambe droite d'un robot, respectivement selon l'art antérieur et selon un mode de réalisation de l'invention; - Les figures 5a et 5b représentent l'évolution au cours du temps des 30 températures des articulations de la jambe gauche d'un robot, respectivement selon l'art antérieur et selon un mode de réalisation de l'invention; - La figure 6 est un organigramme de certaines étapes des traitements de contrôle-commande d'un moteur d'articulation d'un robot selon un 35 mode de réalisation de l'invention ; 10 - La figure 7 est une première vue de détail d'une étape de l'organigramme de la figure 6 ; - Les figures 8a à 8f représentent un robot dans trois postures, avec détermination des points de contact selon un mode de réalisation de l'invention ; - La figure 9 est une deuxième vue de détail d'une étape de l'organigramme de la figure 6 ; - La figure 10 est un schéma d'une architecture physique et fonctionnelle permettant la mise en oeuvre de l'invention dans 1 o plusieurs de ses modes de réalisation. La figure 1 illustre un robot symbolisé par des chaînes articulées. Le robot 100 de l'exemple illustré comporte cinq chaînes articulées, une chaîne 110 correspondant à la jambe droite, composée de plusieurs 15 segments (cuisse, jambe, pied). Le robot est apte à se déplacer sur une surface 120. Il comprend au moins une articulation 140, dans cet exemple la cheville. Un robot tel que NAOTM déjà cité comporte 25 articulations, cet exemple de réalisation n'étant en aucune manière limitatif. Le robot comportera en règle générale des capteurs de contact 130 du pied 20 avec la surface 120. Ces capteurs peuvent par exemple être des FSR (Capteurs de pression au sol). Ces FSR sont particulièrement utiles à la mise en oeuvre de la présente invention. Ils sont destinés dans ce cadre à détecter le contact de chacun des pieds avec le sol ou toute autre surface de progression du robot. On peut utiliser dans ce but, par exemple, des capteurs 25 de marque FlexiForceTM de la société TekscanTM qui sont constitués par un ruban à au moins deux couches en matériau flexible piézo-résistif. La résistance électrique du ruban diminue en fonction de la force de pression verticale appliquée à la surface sur laquelle est disposé le ruban. La mesure du courant permet de déterminer la force de pression après calibration. 30 Plusieurs capteurs, par exemple quatre, sont avantageusement prévus sur la sole de chaque pied. La figure 2 illustre le principe général du contrôle-commande d'un moteur d'articulation d'un robot selon l'art antérieur. Un robot tel que NAOTM comprend environ deux douzaines de cartes électroniques de commande de capteurs et d'actionneurs qui pilotent les articulations. Une articulation a normalement au moins deux degrés de liberté et donc deux moteurs 210. Chaque moteur est piloté en angle par la variable de contrôle q. L'articulation comporte également plusieurs capteurs de position, 220, notamment des MRE (Magnetic Rotary Encoder). La carte électronique de contrôle 230 comporte un microcontrôleur du commerce. Ce peut être par exemple un DSPICTM de la société Microchip. C'est un MCU 16 bits couplé à un DSP. Ce MCU a un cycle d'asservissement en boucle d'une 1 o ms. La carte 240 exécute les fonctions de haut niveau qui permettent au robot d'accomplir les missions qui lui sont assignées. Le processeur de la carte peut être un processeur x86 du commerce. On choisira de manière privilégiée un processeur à basse consommation tel que le GeodeTM de la 15 société AMD (32 bits, 500 MHz). La carte comporte également un ensemble de mémoires RAM et flash. Cette carte gère également les communications du robot avec l'extérieur (serveur de comportements, autres robots...), normalement sur une couche de transmission WiFi, WiMax, éventuellement sur une réseau public de communications mobiles de données avec des 20 protocoles standards éventuellement encapsulés dans un VPN. Le processeur est normalement piloté par un OS standard ce qui permet d'utiliser les langages de haut niveau usuels (C, C++, Python, ...) ou les langages spécifiques de l'intelligence artificielle comme URBI (langage de programmation spécialisé dans la robotique) pour la programmation des 25 fonctions de haut niveau. Traditionnellement un moteur électrique peut être commandé par une consigne donnée en angle ou position, q, en vitesse angulaire, et/ou en couple, z, la commande en couple étant le plus souvent remplacée par une commande en courant. En effet, on a la relation canonique : z = kcI , I étant 30 l'intensité d'alimentation du moteur en courant électrique, k, étant une constante, au moins dans certaines plages de fonctionnement. Il est beaucoup plus facile de mesurer un courant que de mesurer un couple, les capteurs de couple étant très sensibles à des dérives. Cependant, même le pilotage en courant est peu répandu dans les robots ayant un grand nombre 35 de moteurs. En effet, le pilotage en courant nécessite des cycles d'asservissement en boucle très rapide (de l'ordre de dix microsecondes) et un capteur de courant apte à déterminer le sens dudit courant, incompatibles avec des cartes électroniques de contrôle à bas coût. Un inconvénient de cette approche est qu'une consigne en position qui ne peut s'exécuter en raison d'un obstacle non détecté va produire un couple appliqué au moteur très élevé, donc un courant élevé, d'où un échauffement très significatif et une surconsommation électrique, voire une rupture du moteur et/ou de l'articulation. Ces inconvénients réduisent de manière 1 o importante la durée de fonctionnement possible d'un robot. Pour surmonter cet inconvénient, on peut introduire des mesures de limitation du couple appliqué à l'articulation. Ces mesures peuvent être mécaniques (par exemple des roues à engrenages débrayables) ou logiciels, en introduisant dans le circuit de commande du moteur un coefficient de 15 rigidité qui joue le rôle d'un embrayage et qui peut prendre une valeur comprise entre 0.0 et 1.0. Lorsque ce coefficient de rigidité est égal à 1, le moteur est en mesure de développer le couple maximum autorisé. Celui-ci peut avantageusement être fixé à une valeur sensiblement inférieure à la valeur indiquée par le fournisseur pour éviter la surchauffe. Par exemple, 20 dans le cas de NAO où les moteurs des articulations développent un couple maximal de l'ordre de 5 à 6 Nm, le couple autorisé à rigidité maximale est de 3,2 Nm. Lorsque ce coefficient est égal à zéro, le moteur est débrayé et l'articulation est en débattement libre. En conséquence, le robot tombe...La procédure de mise en sécurité prévoit que tous les coefficients de rigidité, ou 25 certains d'entre eux seulement, passent de 1 à 0 lorsque la température locale ou totale dépasse une valeur de seuil. Le robot n'est alors plus utilisable. La figure 3 illustre un organigramme général des traitements de contrôle-30 commande d'un moteur d'articulation d'un robot selon un mode de réalisation de l'invention. Selon le principe de l'invention, il s'agit de calculer une valeur des couples à appliquer à chaque articulation pour faire ensuite varier le coefficient de rigidité desdites articulations de manière à assurer un équilibre du robot. Un module, 310, calcule les couples articulaires à partir d'un modèle descriptif de la dynamique du robot qui sera détaillé plus loin dans la description en relation avec les figures 6 et 7. Il est alimenté d'une part par des données permanentes de configuration du robot, 330 et, d'autre part, par des données instantanées issues d'une centrale inertielle, 340, de capteurs articulaires, 350, et de capteurs de contact ou procédés de mesures de distance au sol, 360. Les valeurs de couple sont ensuite fournies à un module, 320, de calcul des coefficients de rigidité articulaires. Les données de configurations du robot, 330, sont constituées pour l'essentiel, pour mettre en oeuvre la présente invention, par une matrice M d'inertie de tous les corps du robot dans leur repère propre. Les corps du robot sont ses différents constituants physiques : la tête, le cou, le torse (chaîne centrale), les bras, avant-bras et mains (chaînes latérales supérieures), les cuisses, jambes et pieds (chaînes latérales inférieures). Chacun des corps a une matrice de masse m de dimension (6,6) dans laquelle est renseigné la masse du corps et ses moments d'inertie. Les moments d'inertie étant des invariants, la matrice M peut être calculée par avance, à l'initialisation du robot en fonction de la configuration du robot. Une des particularités de NAO est en effet d'autoriser un changement des constituants physiques du robot, les données de configuration étant calculées à chaque initialisation. Ainsi, on a un ensemble de matrices M, chaque matrice est stockée dans un module ALMotion (voir plus loin dans la description les commentaires en 25 liaison avec la figure 10). Une matrice M a la forme suivante : M racine 06,6 06,6 06,6 06,6 Mndll M= 06,6 06,6 M1 avec Mi = miI3 033,3 03,3 On a posé : - mi = masse du corps i ; - = matrice d'inertie du corps i exprimée à son centre de masse et dans 30 le repère propre du corps ; 13 = matrice identité 3x3 13 =1 0 0 0 1 0 0 0 1 Dans le cas d'un bras de robot ayant une base fixe, le corps racine est généralement fixé au sol. Dans le cas d'un robot à base volante (non fixée au sol), le corps racine n'est pas fixé. Il est libre et il est déterminé par le système. La centrale inertielle, 340, est généralement constituée d'un gyromètre et d'un accéléromètre. Elle fournit ses mesures au module 310. Les capteurs articulaires, 350, sont généralement des MRE, comme indiqué 1 o ci-dessus. Ils fournissent au module 310 les valeurs d'angles articulaires. Les capteurs de contact, 360, permettent de déterminer les positions de points caractéristiques, dénommés généralement effecteurs, par rapport à un référentiel donné, le référentiel terrestre ou la surface de déplacement (le sol par exemple). Les FSR implantés sous les soles des pieds sont des 15 capteurs de contact. On peut imaginer implanter des FSR, ou des capteurs de contact d'un autre type, sur d'autres parties des chaînes articulées du robot, par exemple les fesses, les coudes, le dos... Les capteurs physiques de contact sont cependant d'une fiabilité relative. On peut parvenir au même résultat (déterminer s'il y a contact avec la surface du sol), en connaissant 20 toutes les valeurs d'angles articulaires et la position et l'orientation du corps racine dans l'espace. La position et l'orientation du corps racine dans l'espace sont déterminées par les FSR et la centrale inertielle. A partir des valeurs d'angles articulaires et de la position et de l'orientation du corps racine dans l'espace, il est possible de calculer par géométrie directe la 25 position de tous les corps du robot dans l'espace. Le module 320 est configuré pour calculer les coefficients de rigidité de chacune des articulations. Les couples de chacune des articulations sont fournis en entrée du module 320. Le module effectue la division du couple de 30 chacune des articulations par le couple maximal pour en déduire les valeurs des coefficients de rigidité à appliquer à chacune des articulations. Selon les effets qui sont pris en compte dans le modèle de description dynamique du robot qui détermine les sorties du module 310, on peut prévoir dans le module 320 de rajouter un offset au coefficient de rigidité. Cet offset peut être une constante, un ensemble de valeurs dépendant de types de postures ou contextes d'emploi du robot, lesdites valeurs pouvant être tabulées, ou une variable pour laquelle on définit une loi d'évolution. Les figures 4a et 4b représentent l'évolution au cours du temps des températures des articulations de la jambe droite d'un robot, respectivement selon l'art antérieur et selon un mode de réalisation de l'invention. Les expériences ont été conduites avec des robots physiquement identiques, la seule différence entre les expériences retracées respectivement par la figure 4a et par la figure 4b étant que la configuration du robot ne comprend pas dans le premier cas les moyens de mise en oeuvre de l'invention, alors que, dans le deuxième cas, il les comprend. Dans les deux cas, le robot a été placé dans une position debout 15 d'initialisation (Poselnit). Sur chacune des figures 4a et 4b sont représentée l'évolution de la température de chacun des moteurs articulaires de la chaîne articulaire inférieure droite, sans et avec mise en oeuvre de l'invention : - Les courbes RHipRollTemp représentent les évolutions de la température 20 de l'articulation de roll de la hanche droite ; - Les courbes RHipPitchTemp représentent les évolutions de la température de l'articulation de pitch de la hanche droite ; - Les courbes RKneePitchTemp représentent les évolutions de la température de l'articulation de pitch du genou droit ; 25 - Les courbes RAnkleRollTemp représentent les évolutions de la température de l'articulation de roll de la cheville droite ; - Les courbes RAnklePitchTemp représentent les évolutions de la température de l'articulation de pitch de la cheville droite. 30 On note particulièrement la différence très significative des températures en fin d'expérience (15 minutes environ) sur l'articulation de pitch de la hanche droite, qui atteint 60°C dans le premier cas et 42°C dans le deuxième cas. L'augmentation globale de température de la jambe droite est de 50°C dans le premier cas et de 28°C dans le deuxième cas. 35 Les figures 5a et 5b représentent l'évolution au cours du temps des températures des articulations de la jambe gauche d'un robot, respectivement selon l'art antérieur et selon un mode de réalisation de l'invention. Les conditions de l'expérience sont identiques à celle retracée par les figures 4a et 4b. Les résultats concernant la jambe gauche sont encore plus avantageux, notamment en ce qui concerne l'articulation de pitch de la cheville, dont la température atteint 80°C dans le premier cas et 48°C dans le deuxième cas, l'augmentation globale de température de la jambe gauche 1 o étant de 109°C dans le premier cas et de 42°C dans le deuxième cas. L'atteinte d'une température de 80°C, atteinte dans les conditions de l'expérience en moins d'un quart d'heure, entrainant normalement la mise en sécurité du robot, la durée de fonctionnement du robot est donc très sensiblement allongée par la mise en oeuvre de l'invention (d'un facteur 15 d'environ 4). La figure 6 est un organigramme de certaines étapes des traitements de contrôle-commande d'un moteur d'articulation d'un robot selon un mode de réalisation de l'invention. 20 Pour calculer les couples articulaires, on applique l'équation qui décrit l'évolution dynamique du robot, à laquelle on applique le cas échéant certaines hypothèses simplificatrices, en fonction des capteurs et de la capacité de calcul dont on dispose. En appliquant les principes généraux de la mécanique de corps rigidement 25 liés entre eux en interaction avec leur environnement, un homme du métier de roboticien peut déterminer une équation complète du modèle dynamique d'un robot en se reportant notamment à l'ouvrage classique : «A Mathematical Introduction to Robotics Manipulation », MURRAY, Richard M., LI Zexiang et SASTRY, S . Shankar, CRC Press, 1994 . 30 On écrira par exemple : M(q)(T -G)+N(q,q)T = Lz+C`(q)W Dans la suite de la description, q est le vecteur constitué par les angles articulaires. q désigne la vitesse articulaire (dérivé en fonction du temps des 35 angles articulaires q). La vitesse cartésienne du corps racine est noté Vracine et est de dimension 6. Les trois premières composantes sont la vitesse de translation du corps racine suivant les 3 axes (x, y, z). Les trois dernières composantes sont les vitesses de rotation suivant les 3 axes (x, y, z). On appelle coordonnées généralisées T le vecteur constitué de Vracine et C(q) désigne la matrice de transformation entre l'espace des vitesses articulaires et l'espace des vitesses cartésiennes ; elle est communément appelé Jacobienne cinématique. Le premier terme du côté gauche de l'équation traduit l'effet des moments d'inertie des corps constituant les chaînes articulées. Dans ce terme : - i i : la matrice symétrique d'inertie en coordonnées généralisées. Elle se calcule à partir de la matrice M ainsi que de C(q) , = C(q)`MC(q) . Cette 15 matrice dépend de la configuration articulaire du robot (q) ; elle doit être mise à jour chaque fois qu'une ou plusieurs articulations se déplacent. N1 est une matrice carrée de dimension dim(M) = (6 + 6 x nddl, 6 + 6 x nad, )où est nddl est le nombre de degrés de liberté du robot. Dans le cas de NAO il existe 23 ddl, la dimension de la matrice M sera de (6 +6 x 23)2, soit 20.736 20 valeurs. ; - G est l'accélération de la pesanteur exprimée en coordonnées généralisées. Le deuxième terme du membre de gauche de l'équation traduit l'effet des 25 forces de Coriolis et centrifuges que subit le système. N(q,q) est la matrice associée à ces effets. Le premier terme du membre de droite de l'équation traduit l'effet des couples articulaires : 30 - z est le vecteur des couples articulaires, de dimension dim(r )=(nad,, 1) ; z est la somme du couple d'actionnement et du couple de friction articulaire ; - L est la matrice permettant d'exprimer z en coordonnées généralisées. - W est la matrice des torseurs d'efforts appliqués sur chacun des corps 35 constituant le robot exprimés dans leurs repères propres ; on décompose en général W en Wcontact qui est le torseur d'effort lié aux contacts des corps avec l'environnement extérieur et Wperturbatzon qui est le torseur d'effort lié à des perturbations extérieures. Dans un mode de réalisation, on simplifie le modèle en ne calculant pas à ce stade les accélérations propres (T) et forces de Coriolis et centrifuges (N(q, q) ), ainsi que les couples des friction articulaire et des perturbations externes (YY perturbattion) . Ces effets et sont pris en compte, comme expliqué plus loin, par un offset. Le modèle dynamique simplifié s'écrit donc : - M (q)G = LZ + Ct (q)Wcontact L'organigramme de la figure 6 décrit les étapes de calcul mises en oeuvre pour résoudre cette équation, sans que ce découpage doive être considéré 15 comme limitatif, d'autres procédures étant tout à fait possibles. Ces étapes de calcul sont reproduites à un temps de cycle de 20 ms. Dans une étape 610, on calcule un plan virtuel du sol à partir des mesures de la centrale inertielle. Ledit plan virtuel est déterminé comme étant le plan normal au vecteur gravité. Selon le degré de fiabilité des mesures de la 20 centrale, on peut avantageusement croiser ces mesures avec une détermination de l'orientation du torse par repérage des corps inférieurs en contact ou pas avec le sol. Dans une étape 620, on met à jour le vecteur q grâce au module ALMemory où sont mis à jour les angles des capteurs articulaires. A l'aide des matrices 25 M on peut ainsi calculer 1(q). Dans une étape 630, on calcule l'accélération gravitationnelle orientée par rapport au plan virtuel du sol. Dans une étape 640, on combine les sorties des étape 620 et 630 pour calculer le terme -M(q)G. 30 Dans une étape 650, on calcule la liste des points de contacts pris en compte pour le calcul des forces, ladite étape étant détaillée plus loin dans la description en relation avec la figure 7 et illustrée par les exemples des figures 8a à 8f. Dans une étape 660, on calcule les forces de contact, Wcontact , ladite étape 35 étant détaillée plus loin dans la description en relation avec la figure 9. Dans une étape 670, on calcule C`(q), transposée de la matrice de transformation entre l'espace des vitesses articulaires et l'espace des vitesses cartésiennes. Dans une étape 680, on effectue le produit de la matrice en sortie de l'étape 5 670 avec le vecteur en sortie de l'étape 660. En additionnant les sorties des étapes 640 et 680, on obtient en sortie de l'étape 690 le vecteur des couples articulaires que l'on recherchait. On peut ensuite fournir ce vecteur en entrée au module 320 de calcul des coefficients de rigidité, ledit module ajoutant éventuellement un offset tenant 10 compte notamment des simplifications du modèle dynamique du robot qui auront été faites. En particulier, si l'on ne tient compte ni des accélérations propres, ni des forces de Coriolis, ni des forces de centrifuge ni des couples de friction articulaire, on a pu déterminer expérimentalement qu'un offset de 0,25 donnait de bons résultats pour un robot en posture debout, sans autre 15 interaction avec son environnement. Lorsqu'aucun pied du robot ne repose sur le sol, on peut choisir un offset plus faible, par exemple 0,1, ce qui déliera les articulations du robot et lui donnera une attitude plus souple. La figure 7 est une première vue de détail d'une étape de l'organigramme de 20 la figure 6. Elle détaille les sous-étapes de l'étape 650 de détermination des points de contact. Dans le fichier de configuration du robot, on définit une liste de points caractéristiques candidats à être des points de contact. Dans le cas d'un 25 robot humanoïde tel que NAO, on choisira par exemple, sans que cette liste soit limitative ou qu'il soit nécessaire de retenir tous ces points de contact, les deux pieds, les deux fesses, le dos, la tête et l'ensemble main/avantbras/coude. Ces données de configuration déterminent la liste des effecteurs pour 30 lesquels on va calculer au cours d'une étape 710 les distances verticales au plan virtuel du sol déterminé en sortie de l'étape 610. On détermine alors au cours d'une étape 720 le point de contact le plus proche du sol. On a défini dans le fichier de configuration du robot un seuil de détection et on détermine au cours d'une étape 730 les autres effecteurs qui se situent dans le voisinage du sol dans la limite du seuil de détection. Les figures 8a à 8f représentent un robot dans trois postures, avec détermination des points de contact selon un mode de réalisation de l'invention. Les figures 8a, 8c et 8e représentent trois postures différentes du robot : - Sur la figure 8a, le robot est dans une des postures assis possibles; 1 o Sur la figure 8c, le robot est dans une des postures debout possibles ; - Sur la figure 8e, le robot est dans une posture dite « gorille ». Les points de contact candidats correspondant à ces postures sont représentés respectivement sur les figures 8b, 8d et 8f. 15 Les notations des points de contact sont les suivantes : - RElbowRoll Both, articulation de roll du coude droit ; - LElbowRollBoth, articulation de roll du coude gauche ; - RFootFR, pied droit, capteur avant droit ; - RFootFL, pied droit, capteur avant gauche ; 20 - RFootRR, pied droit, capteur arrière droit ; - RFootRL, pied droit, capteur arrière gauche. La figure 9 est une deuxième vue de détail d'une étape de l'organigramme de la figure 6. 25 L'objectif de cette étape est de calculer les efforts de contact s'appliquant sur NAO. Dans cette étape, le robot est modélisé par une masse ponctuelle en interaction avec son environnement par des points de contact. Tous les contacts sont coplanaires. De plus, pour simplifier les calculs, on se place 30 dans le cas statique. Il s'agit de résoudre les équations suivantes : - somme des forces s'appliquant sur le robot (ici son centre de masse dans le cas statique) s'annule, soit : 1 fti = m.g - somme des moments s'annule au centre de masse. A partir de trois points de contact coplanaires, il y a un hyperstatisme des efforts de contact. En effet, il y a une infinité d'e valeurs d'efforts de contact qui sont solutions du problème ci-dessus, notamment en raison du fait que : les efforts tangentiels des forces de contact peuvent se compenser en respectant les deux équations.. Pour trouver une solution préférée, on cherche à minimiser les efforts de contact calculés et on considère que les forces de contact tangentielles sont nulles. Pour chaque contact, on ne considère que la composante de force normale 1 o au plan. On note f(T) = L(i)z le vecteur force du contact i de NAO sur son environnement avec f (i) la norme de la force de contact suivant l'axe z . Soit le système à résoudre : 1 1 1 .fi mg (x~ - xG) (x2 -xG ) (xn -xG ) f2 15 (Yi -xc) (Yi -xG) (Yn -xc) 0 0 / n Que l'on peut écrire sous la forme simplifiée : AY=B Expression dans laquelle : 20 - B est un vecteur somme des composantes verticales des forces extérieures (hors contact) ; - Y est le vecteur recherché des composantes verticales des forces appliquées aux points de contact sélectionnés en sortie de l'étape 650 ; - A est une matrice dont les coefficients sont les coordonnées des points 25 de contact par rapport au centre de masse. Les notations sont les suivantes : - (xi, yti) sont les coordonnées des points de contact sélectionnés ; - (xG, yG) sont les coordonnées du centre de masse ; 30 - f est la norme de la force normale appliquée au point de contact i qui est recherchée. Au cours d'une étape 910, on détermine les forces extérieures (hors contact) que le robot doit équilibrer.. Au cours d'une étape 920, on calcule les coefficients de la matrice A. Pour cela, il convient de projeter le centre de masse du robot dans le plan virtuel 5 du sol déterminé lors de l'étape 610. Il s'agit ensuite de déterminer au cours d'une étape 930 une solution Y de l'équation AY =B. Si le nombre de contacts n est égal à trois, il s'agit d'inverser la matrice A. Sous condition que son déterminant soit non nul, il existe une solution 1 o unique. Dès que n est supérieur à 3, une infinité de solutions est possible. Il s'agit donc de sélectionner un algorithme de détermination d'une solution optimale sous contrainte que l'équation AY = B soit satisfaite. On peut par exemple utiliser un algorithme de résolution quadratique 15 consistant à recherche les valeurs de Y (et donc de fi) pour lesquelles la fonction miny = 2 A.Y -B O Q + 2 Y R est minimisée sous condition que Y >0. Q et R représentent des poids d'optimisation. Le but de cette opération consiste à minimiser la norme de AY-B avec le poids Q et à minimiser la 20 norme Y avec le poids R. La figure 10 est un schéma d'une architecture physique et fonctionnelle permettant la mise en oeuvre de l'invention dans plusieurs de ses modes de réalisation. Un robot tel que NAO est avantageusement doté de logiciels de haut niveau 25 permettant le pilotage des fonctions du robot dans un mode de réalisation de l'invention. Une architecture logicielle de ce type, dénommée NAOQI, a été divulguée notamment dans la demande de brevet WO2009/124955 publiée le 15/10/2009. Elle comporte les fonctions de base de gestion des communications entre un robot et un PC ou un site distant et d'échange de 30 logiciels qui fournissent l'infrastructure logicielle nécessaire à la mise en oeuvre de la présente invention. NAOQI est un framework optimisé pour les applications robotiques ; il supporte plusieurs langages, notamment C++, Python et Urbi. Dans le cadre de la présente invention, sont particulièrement utiles les 35 modules de NAOQI suivants : - le module ALMemory, 1010, gère une mémoire partagée entre les différents modules de NAOQI, et reçoit en particulier les éléments de configuration qui sont chargés à l'initialisation ; - le module DCM, 1020, gère les communications avec le robot physique (moteurs, capteurs) ; - le module ALMotion, 1030, gère les mouvements du robot ; le code permettant l'exécution des algorithmes pour mettre en oeuvre l'invention est implanté pour l'essentiel dans ce module. 1 o Ces trois modules sont avantageusement codés en C++. La figure indique également les flots de données entre modules : - le module ALMotion 1030 récupère auprès du module ALMemory 1010 les données capteurs (centrale inertielle, FSR, angles articulaires...) ; 15 - il effectue les étapes de calcul des coefficients de rigidité des articulations et en communique les résultats au module DCM 1020 ; - ce module passe au module ALMemory 1010 les valeurs de contrainte des angles articulaires qui résultent de l'application de 20 ces coefficients.(en même temps que les valeurs des autres capteurs) Les exemples décrits ci-dessus sont donnés à titre d'illustration de modes de réalisation de l'invention. Ils ne limitent en aucune manière le champ de 25 l'invention qui est défini par les revendications qui suivent. REVENDICATIONS1. Robot (100) doté de capacités de déplacement sur au moins une chaîne articulée (110) comprenant au moins un capteur (130) de contact de l'extrémité de ladite chaîne avec la surface de déplacement (120), ladite chaîne comprenant au moins une articulation (140), ladite articulation commandée par un moteur électrique (210) contrôlé par une consigne en position et/ou vitesse et par des moyens de limitation du courant et/ou du 1 o couple appliqué audit moteur, ledit robot étant caractérisé en ce que lesdits moyens de limitation sont contrôlés en fonction du couple appliqué à ladite au moins une articulation (140). 2. Robot selon la revendication 1, caractérisé en ce que ledit couple 15 appliqué à ladite au moins une articulation est calculé comme étant solution d'une équation modélisant l'équilibre dynamique du robot entre, d'une part, la somme de la différence des forces inertielles dues à l'accélération angulaire de l'articulation et de l'accélération de la gravité et de l'effet des forces de Coriolis et centrifuge et, d'autre part, la somme du couple et des forces de 20 contact, de friction et de perturbation, lesdits couple et force étant appliqués à ladite articulation. 3. Robot selon la revendication 1, caractérisé en ce qu'une partie au moins des effets des forces inertielles dues à l'accélération angulaire de 25 l'articulation, des forces de Coriolis et centrifuge et des forces de friction est modélisée par un offset. 4. Robot selon la revendication 1, caractérisé en ce que ledit offset varie selon la posture du robot. 30 5. Robot selon l'une des revendications 1 à 4, caractérisé en ce que l'effet de l'accélération de la gravité est calculé à partir d'une matrice de coefficients d'inertie dépendant de la configuration du robot et appliquée aux angles articulaires et du vecteur gravité déterminé par combinaison de 35 mesures d'une centrale inertielle du robot. 6. Robot selon la revendication 5, caractérisé en ce que pour le calcul du vecteur gravité on opère en outre une levée de doute par détermination de l'orientation dans l'espace d'une chaîne centrale du robot par résolution de la position d'effecteurs solidaires de ladite chaîne. 7. Robot selon l'une des revendications 5 à 6, caractérisé en ce que les points d'application des forces de contact prises en compte dans le modèle d'équilibre dynamique du robot sont déterminés par génération d'une première liste d'effecteurs satisfaisant un critère choisi dans un groupe de 1 o critères comprenant une liste d'états on/off de capteurs de contact positionnés sur lesdits effecteurs, une liste de seuils de distance minimale par rapport au plan virtuel du sol desdits effecteurs et toute combinaison desdits listes, lesdits critères étant substantiellement déterminés par la morphologie du robot. 15 8. Robot selon la revendication 7, caractérisé en ce que les effecteurs de la première liste sont filtrés en une deuxième liste par comparaison de la posture actuelle du robot à des postures types stockées dans les données de configuration du robot, lesdites postures types déterminant une liste type 20 d'effecteurs, ladite deuxième liste comprenant seulement les effecteurs de la liste correspondant à la posture type retenue comme la plus proche de la posture actuelle du robot selon un critère de similarité, si elle existe, et seulement ceux-ci. 25 9. Robot selon l'une des revendications 5 à 8, caractérisé en ce que les forces de contact aux points d'application sont déterminées par recherche d'une solution sensiblement optimale à l'équation d'équilibre entre la somme desdites forces de contact et le poids du robot. et de la composante verticale des forces de perturbation. 30 10. Robot selon la revendication 9, caractérisé en ce que les forces de perturbation sont négligées. 11. Procédé de limitation du couple et/ou du courant appliqué à un moteur 35 électrique de commande d'une articulation d'un robot doté de capacités dedéplacement sur au moins une chaîne articulée comprenant au moins un capteur de contact de l'extrémité de ladite chaîne avec la surface de déplacement, ladite chaîne comprenant au moins une articulation, ledit moteur électrique étant contrôlé par une consigne en position et/ou vitesse, ledit procédé étant caractérisé en ce que ladite limitation s'opère par détermination d'une valeur de couple calculée qui est appliquée à ladite articulation. 12. Programme d'ordinateur comprenant des instructions de code de programme permettant l'exécution du procédé selon la revendication 10 lorsque le programme est exécuté sur un ordinateur, ledit programme étant adapté pour permettre une limitation du couple et/ou du courant appliqué à un moteur électrique de commande d'une articulation d'un robot, ledit robot étant doté de capacités de déplacement sur au moins une chaîne articulée comprenant au moins un capteur de contact de l'extrémité de ladite chaîne avec la surface de déplacement, ladite chaîne comprenant au moins une articulation, ledit moteur électrique contrôlé par une consigne en position et/ou vitesse, ledit programme comprenant un module de limitation du couple et/ou du courant appliqué audit moteur, ledit programme étant caractérisé en ce que ledit module de limitation est apte à exécuter ladite limitation en fonction du couple appliqué à ladite au moins une articulation.