Geckrobot : Simulations numériques de la patte

Cet article fait suite à la modélisation décrite précédemment.

Scilab est utilisé dans sa version 5.5.2.

Je vais présenter dans cet article l’implémentation dans Scilab (logiciel de calculs numérique) de la modélisation de la patte, ainsi que des résultats numériques obtenus afin de dimensionner notre patte.

1 Implémentation

L’implémentation dans Scilab des modèles cinématiques direct et inverse, ainsi que le modèle mécanique est réalisée sous forme de fonctions présentée ci-dessous.

1.1 Modèle cinématique direct

1.2 Modèle cinématique inverse

1.3 Modèle mécanique

1.4 Exemple

Testons d’abord le modèle cinématique direct pour :

  • X0 = 0 mm, Y0 = 0 mm, Z0 = 100 mm
  • Y1 = 30 mm, Y2 = 50 mm, Y3 = 80 mm
  • θ1 = 0°, θ2 = 0°, θ3 = -90°

Vérifions que le modèle cinématique inverse redonne les mêmes valeurs de θ1, θ2 et θ3.

Testons que dans un cas pour lequel il n’existe pas de solution (position trop éloignée pour la patte), la fonction retourne bien err = 1.

Testons aussi que le cas où θ3 = 0 est bien pris en compte.

Finalement, testons le modèle mécanique pour la même configuration, en considérant l’effort suivant :

  • Fx = 10 N, Fy = 20 N, Fz = 100 N (qu’on exprime aussi parfois abusivement 1 kg, 2 kg et 10 kg respectivement)

Ces résultats (grandeurs et signes) sont cohérents avec une approche “avec les doigts”.

2 Dimensionnement

Le dimensionnement consiste à définir les valeurs de nos constantes de calcul (X0, Y0, Z0, Y1, Y2 et Y3) ainsi que les couples (C1, C2 et C3) que doivent fournir les servomoteurs.

2.1 Cahier des charges

J’ai défini le cahier des charges suivant :

  • La course de la patte est de 100 mm sur l’axe x.
  • La course de la patte est de 50 mm sur l’axe y.
  • Le robot doit pouvoir évoluer sur une surface courbe, dont le rayon de courbure (qu’on écrira Rc) peut descendre à 200 mm (concave ou convexe).
  • Le robot pourra peser jusqu’à 7,5 kg, soit une charge de 1,5 kg par patte lorsqu’une des 6 pattes est levée.

2.2 Zone de travail

Ce pré-dimensionnement consiste à traduire la problématique depuis un rayon de courbure vers une course suivant l’axe z. Pour cela commençons par schématiser le problème.

Geckrobot: influence rayon courbureJe commence par faire l’hypothèse de départ, d’un empattement maximum (qu’on écrira emp) – écart maximum entre deux pattes en vis-à-vis – de 200 mm. Le schéma ci-dessus nous montre que la position des pattes doit être compensée en hauteur (qu’on écrira Zcomp)  lorsque la surface est courbée. Nous considérons la courbure constante sur la largeur de l’empattement.

Une simple application du théorème de Pythagore nous donne

Zcomp = Rc – √(Rc2 – (emp/2)2) = 26,8 mm.

Je vais arrondir pour la suite sa valeur à Zcomp = 30 mm. Nous pouvons maintenant définir la zone de travail – zone de l’espace dans laquelle une patte doit pouvoir travailler :

  • X ∈ [X0 – 50 mm, X0 + 50 mm] : course de 100 mm suivant x, centrée autour de X0 ;
  • Y ∈ [Y0, Y0 + 50 mm] : course de 50 mm suivant y, démarrant à partir de Y0 ;
  • Z ∈ [- 30 mm, 50 mm] : compensation sur z de ± 30 mm autour de la référence de l’axe z du robot, et un jeu de 20 mm supplémentaire pour permettre de “lever la patte” sans toucher le sol.

2.3 Étude paramétrique

Nous allons traiter le problème par le biais d’une étude paramétrique, nous allons donc tester un grand nombre de solutions en faisant varier la valeur des paramètres Z0, Y1, Y2 et Y3. Les paramètres X0 et Y0 n’influant pas sur les performances, ils seront définis pour l’étude : X0 = Y0 = 0. Leurs valeurs seront définies pour chaque patte individuellement lorsque nous nous intéresserons à la conception du robot dans son ensemble.

Nous allons mener cette étude de façon “brute”, nous évaluerons toutes les solutions afin que chaque paramètre soit étudiés avec un pas de 5 mm dans l’espace de recherche suivant :

  • Z0 ∈ [60 mm, 200 mm] : 60 mm est le minimum pour que les pièces mécaniques soient au dessus de la zone de travail, 200 mm permet de limiter la hauteur du robot ;
  • Y1 ∈ [30 mm, 80 mm] : 30 mm est le minimum pour l’entre-axe entre deux servomoteurs perpendiculaires, 80 mm permet de limiter la largeur du robot ;
  • Y2 ∈ [40 mm, 200 mm] : 40 mm est le minimum pour l’entre-axe entre deux servomoteurs parallèles, 200 mm permet de limiter l’encombrement du robot ;
  • Y3 ∈ [80 mm, 200 mm] : 80 mm est le minimum pour loger un système de ventouse en bout de patte, 200 mm permet de limiter l’encombrement du robot.

2.4 Problème contraint

Le problème ainsi posé demande d’évaluer 263175 solutions, dites solutions candidates. Nous avons vu dans le modélisation (section 3) qu’en fonction des valeurs de Z0, Y1, Y2 et Y3 il est possible ou non d’atteindre une coordonnée X, Y, Z. Dans le code proposé au paragraphe 1.2 de cet article, la variable de sortie err renseigne lorsque ce cas de figure se présente. Nous allons donc tester les solutions candidates et ne retenir que celles qui permettent d’atteindre tous les points de l’espace de travail, exploré avec un pas de 10 mm sur chacun des axes.

La routine suivante permet de déterminer toutes les solutions dites faisables, c’est à dire qui permettent d’explorer entièrement l’espace de travail.

Nous obtenons 157707 solutions faisables sur les 263175 solutions candidates, soit 60%.

2.5 Evaluation des solutions

Nous avons retiré toutes les solutions qui ne répondent pas au problème. Nous devons maintenant identifier un/des critère(s) de choix, appelés objectifs (ou fonction coût), pour retenir la meilleur d’entre elles. J’ai listé les objectifs suivants :

  • Minimiser le couple appliqué aux servomoteurs, car cela permet de réduire leur coût et leur encombrement.
  • Minimiser la plage angulaire de l’orientation du bout de la patte (donnée par θ2+θ3). En effet, la ventouse devra avoir 3 degrés de liberté en rotation afin de pouvoir garantir un contact correct sur la surface, d’autant plus lorsque celle-ci est courbée. En minimisant ces variations d’angles, nous réduisons alors les débattement angulaires nécessaires, et donc facilitons la future conception mécanique de cette rotule.

Les solutions faisables sont évaluées avec ces objectifs par la routine suivante.

Cette fois-ci l’évaluation ne se fait pas sur tout l’espace de travail, mais seulement sur la zone dans laquelle la patte peut être en contact avec le sol. En effet, lorsqu’on soulève la patte, aucun couple (autre que celui dû à son propre poids) n’est appliqué et la ventouse n’a pas besoin de s’adapter à une position particuliaire. Aussi, les calculs sont réalisés pour une force de 15 N (soit 1,5 kg) en bout de patte (en O4). Cette force est appliquée séparément sur chaque axe (x, y et z) pour simuler respectivement les situations suivantes :

  • robot vertical sur un mur
  • robot horizontal sur un mur
  • robot au plafond

La liste des solutions évaluée est donnée dans le fichier libre office calc.

2.6 Choix d’une solution

Pour faire un choix parmis toutes ces solutions, nous allons procéder méthodiquement en observant les résultats obtenus suite à l’évaluation.

Remarquez que le couple maximum C1 est identique pour toutes les solutions (750 N.mm soit 7,5 kg.cm). Ce résultat se retrouve dans la modélisation, en assemblant plusieurs équations (en passant par la variable intermédiaire A) on trouve que C1 ne dépend que de l’espace de travail. Nous observons aussi que la valeur de C2 est directement proportionnelle à la valeur de Z0, ce qui peut aussi se retrouver dans les équations, lorsqu’une force Fy est appliquée. La valeur de C2 varie de 1350 N.mm (soit 13,5 kg.cm) à 3450 N.mm (soit 34,5 kg.cm). La valeur de C3 ne présente pas de corrélation simple avec les paramètres, et sa valeur varie de 1152 N.mm (soit 11,5 kg.cm) à 3000 N.mm (soit 30 kg.cm).

Les servomoteurs avec lesquels j’ai commencé à travailler sont les HerkuleX DRS-0101 dont le couple de démarrage est de 12 kg.cm. Si cette valeur est suffisante pour C1, elle est insuffisante pour C2 et juste suffisante pour quelques cas pour C3. Heureusement son grand frère le DRS-0201 a le même design, se pilote de la même manière et propose un couple de démarrage de 24 kg.cm ; la contrepartie étant qu’il passe de 30€ à 100€ l’unité…

J’ai donc écrit la routine suivante qui, en fonction de critères de couples maximum pour C2 et C3, retourne la solution donnant la plus petite plage angulaire de l’orientation du bout de la patte.

Voici les résultats pour les 2 cas de figure :

  • C2 → DRS-0201 et C3 → DRS-0101 (optimSolution1)
Z0 (mm) Y1 (mm) Y2 (mm) Y3 (mm) Plage ang. (deg) C1 (N.mm) C2 (N.mm) C3 (N.mm)
130 80 120 80 55 750 2400 1200
  • C2 → DRS-0201 et C3 → DRS-0201 (optimSolution2)
Z0 (mm) Y1 (mm) Y2 (mm) Y3 (mm) Plage ang. (deg) C1 (N.mm) C2 (N.mm) C3 (N.mm)
130 75 100 165 37 750 2400 2380

Ces solutions sont détaillée dans le fichier libre office calc.

Télécharger tout le code utilisé dans cet article.

3 Conclusion

L’outil numérique nous a permis de traiter un problème pour lequel il n’existe pas de réponse évidente ou calculable directement. Je dois reconnaître qu’en écrivant cet article j’ai du faire preuve de plus de rigueure que lors de mes premiers essais et les résultats que j’obtiens ici sont très différents. La différence vient principalement du fait que je n’avais initialement pensé qu’à prendre en compte le cas du robot “au plafond” et homis celui du robot “sur un mur”.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *