Utiliser des corps articulés pour prototyper facilement des conceptions industrielles avec des mouvements et des comportements réalistes

ANTHONY YAKOVLEV / UNITY TECHNOLOGIESContributor
May 20, 2020|8 Min
Utiliser des corps articulés pour prototyper facilement des conceptions industrielles avec des mouvements et des comportements réalistes
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Dans Unity 2020.1, actuellement en version bêta, nous disposerons d'un nouveau composant physique : ArticulationBody. Les articulations facilitent plus que jamais la simulation de bras robotiques et de chaînes cinématiques avec une physique et des mouvements réalistes. Avec les autres améliorations apportées par PhysX 4.1, Unity est plus que jamais capable de simuler des applications industrielles.

Unity 2020.1 : pour une meilleure physique

Avec Unity 2019.3, nous avons mis à niveau notre bibliothèque physique de PhysX 3.4 à PhysX 4.0. Aujourd'hui, la version bêta d'Unity 2020.1 permet aux utilisateurs de faire un pas en avant avec une mise à jour vers PhysX 4.1. Alors que les versions précédentes de cette bibliothèque offraient d'excellentes performances pour une grande variété de types de jeux, la modélisation de la réalité pour les applications autres que les jeux était plus difficile à réaliser. La modélisation de chaînes cinématiques, comme celles d'une poupée de chiffon, d'un bras robotisé ou d'un mécanisme comportant plusieurs charnières simultanées, entraînerait des mouvements bégayants et irréalistes. Non seulement ces articulations auraient un aspect particulier, mais elles seraient également impossibles à utiliser pour simuler un dispositif réel, ce qui entraverait les efforts de modélisation ou de prototypage de conceptions industrielles.

L'un des principaux responsables de ces lacunes dans le monde réel était la sélection des composants d'articulation qui reliaient les corps rigides entre eux. Ces articulations, associées à un solveur physique optimisé pour les performances du jeu plutôt que pour la fidélité, ont donné lieu à une cinématique qui n'a pas réussi à simuler de manière réaliste.

Pour en savoir plus sur les améliorations globales apportées par PhysX 4.1, cliquez ici.

Modélisation du mouvement à l'aide d'articulations

Certaines applications nécessitent de contraindre le mouvement de certains corps rigides les uns par rapport aux autres. Pour visualiser cela, imaginez que vous connectez les os du squelette d'une poupée de chiffon, un bras robotisé à plusieurs articulations, ou que vous faites tourner une porte sur sa charnière. Cela est traditionnellement possible grâce aux composants d'articulation tels que le FixedJoint ou le ConfigurableJoint qui relient deux objets Rigidbody entre eux.

Dans les coulisses, chaque articulation sera décomposée en quelques contraintes primitives, telles qu'une contrainte linéaire pour maintenir les corps à une certaine distance ou une contrainte angulaire pour maintenir les corps orientés d'une manière spécifique autour d'un axe particulier. Ces mêmes contraintes sont utilisées pour éviter que les corps ne se chevauchent en maintenant la même distance entre eux. Toutes les contraintes combinées seront introduites dans un solveur itératif qui vise à converger vers un ensemble d'impulsions à appliquer à chacune des paires d'objets connectés dans l'espace mondial, afin de les positionner de manière à satisfaire toutes les contraintes, dans la mesure du possible.

Problèmes liés à l'utilisation des anciens joints

Le premier problème est le nombre même de facteurs conflictuels qui peuvent créer des problèmes de convergence pour le solveur. Le nombre d'itérations, les masses relatives des corps connectés et la complexité totale de l'ensemble des contraintes d'une scène peuvent créer un scénario insoluble. Dans ce cas, la solution partielle est utilisée, de sorte que certaines contraintes ne sont pas satisfaites.

Le deuxième problème est que l'ampleur de l'impulsion appliquée dépend de l'erreur commune - une valeur qui indique à quel point une contrainte est violée à un moment donné. En raison de ce comportement de compensation des erreurs, il y aura toujours au moins un certain effet de ressort, exactement comme si les corps étaient reliés par un ensemble de ressorts amortis, en particulier lorsque les articulations sont enchaînées les unes aux autres.

Les articulations dans Unity - une meilleure façon de modéliser des mouvements réalistes

Notre solution au problème cinématique ci-dessus est le nouveau concept d'articulation: un ensemble de corps organisés dans un arbre logique, où une relation parent-enfant exprime l'idée d'un mouvement mutuellement contraint. Il y a toujours un seul corps racine et il ne peut y avoir de boucles. Nous utilisons la hiérarchie de transformation d ' Unity pour exprimer les articulations.

Désormais, les utilisateurs peuvent facilement modéliser un robot existant, comme l'Universal Robots UR3e ci-dessous, et simuler une tâche qui reflète plus précisément ce que serait le mouvement dans le monde réel. Les roboticiens peuvent ainsi visualiser une séquence de mouvements particulière, tester un nouveau code ou même valider de nouvelles conceptions dans un environnement synthétique.

Les articulations aident les roboticiens et autres développeurs industriels de deux manières principales : elles se déplacent d'une manière plus similaire à leurs homologues du monde réel et elles peuvent être construites plus rapidement que l'ancien corps rigide + articulation, ce qui permet d'économiser du temps de développement.

Nous prévoyons que l'un des principaux cas d'utilisation des articulations se situera dans le domaine de la robotique. Les bras robotiques comportent souvent six articulations ou plus reliées en série, ce qui signifie que de petites erreurs dans la position relative de chaque articulation peuvent avoir un effet potentiellement important sur la position de l'effecteur final ; les erreurs se propagent le long de la chaîne cinématique, ce qui crée des mouvements irréalistes et une position de l'effecteur final qui s'est éloignée de l'objectif.

La simulation peut aider les roboticiens à accélérer leur temps de développement en modélisant virtuellement de nombreux scénarios de déploiement et tests unitaires, puis en les exécutant à grande échelle plutôt que d'essayer d'exécuter ces mêmes suites de tests sur un vrai robot en temps réel. Nous espérons que le composant ArticulationBody, ainsi que les améliorations apportées à PhysX, pourront aider les roboticiens à utiliser Unity pour leurs efforts de simulation.

Le nombre de degrés de liberté dans une relation parent-enfant donnée dépend du type d'articulation utilisé. Actuellement, nous soutenons :

  • Fixe: a zéro degré de liberté et est utilisé pour bloquer les corps l'un par rapport à l'autre.
  • Prismatique: possède un degré de liberté, qui est un décalage linéaire le long d'un axe particulier par rapport au parent.
  • Révolutionnaire: possède un seul degré de liberté, un analogue rotatif du prismatique.
  • Sphérique: possède jusqu'à trois degrés de liberté et est une articulation à rotule qui ne permet que des rotations relatives, mais pas de mouvement linéaire.

Afin d'accroître encore le réalisme de ces articulations, un nouveau solveur basé sur l'algorithme de Featherstone est utilisé. Cette technique permet de calculer les effets des forces appliquées à une structure d'articulations, de liens et de corps solides en utilisant des coordonnées réduites, c'est-à-dire un espace où chaque corps a autant de coordonnées par rapport à son parent qu'il y a de degrés de liberté. Auparavant, nous nous appuyions sur les coordonnées maximales qui étaient plus performantes pour les cas d'utilisation généraux, mais nous devions sacrifier l'exactitude et la précision pour obtenir ces performances.

Dynamique et articulation de l'avant

La dynamique vers l'avant et les articulations dans un espace de coordonnées réduit permettent de répondre aux exigences élevées de précision et d'exactitude auxquelles sont soumis les bras robotiques. Avec d'autres améliorations apportées par PhysX 4.1, comme le solveur TGS, les articulations permettent pour la première fois de réaliser des simulations fiables de bras robotiques dans Unity. La modélisation d'un robot à l'aide du solveur itératif d'articulations a nécessité des réglages précis et des raccourcis qui n'ont pas permis de reproduire les mouvements d'un robot réel.

Nous utilisons l'algorithme de dynamique avancée pour simuler les articulations dans l'espace de coordonnées réduit (c'est-à-dire un espace où chaque corps a autant de coordonnées par rapport à son parent qu'il y a de degrés de liberté). Il s'adapte linéairement à la quantité totale de degrés de liberté dans une articulation et peut être plus rapide que le solveur itératif traditionnel qui s'adapte au nombre de contraintes tout en calculant un résultat plus précis.

ArticulationBody- Le nouveau composant physique dans Unity

Pour prendre en charge les articulations dans Unity, nous avons ajouté un nouveau composant : l'ArticulationBody. Par analogie avec la physique classique, ArticulationBody est comme Rigidbody et ConfigurableJoint en un seul composant. Dans une articulation, tous les corps, à l'exception du corps racine, ont une articulation qui les relie à leur parent, c'est pourquoi ils n'ont pas été séparés en composants individuels.

Image

La forme des corps est décrite à l'aide du composant Collider, comme pour les corps rigides.

Une fois créés, les corps d'une articulation ne peuvent pas être déplacés à l'aide du composant Transform, car il peut briser les limites fixées par les coordonnées de l'espace réduit. La seule exception est le corps racine, qui peut être déplacé à l'aide de la fonction ArticulationBody.TeleportRoot. ArticulationBody ne répondra pas aux changements dans le composant Transform de par sa conception.

Cela dit, il existe plusieurs façons d'interagir avec une articulation. Premièrement, des forces et des couples peuvent être appliqués à chaque corps dans une articulation. Deuxièmement, chaque articulation dispose d'un entraînement linéaire pour chaque degré de liberté qui peut être contrôlé en fixant des objectifs linéaires et angulaires. Enfin, il est possible de modifier directement les poses des corps dans l'espace de coordonnées réduit.

Comparaison de l'articulation avec l'articulation fixe ou configurable

Un avantage particulier des articulations est que la qualité de la simulation ne dépend pas directement du rapport de masse des corps connectés. Avec des corps rigides et des articulations fixes, la simulation a commencé à paraître irréaliste avec des rapports de masse supérieurs à 10:1 entre les corps connectés. Dans l'exemple suivant, cependant, vous pouvez voir qu'une grille dimensionnelle de corps articulés reliés par des articulations fixes peut encore être simulée avec précision, même si les sphères rouges sont 1000 fois plus lourdes que les sphères noires.

La simulation peut aider les roboticiens à accélérer leur temps de développement en modélisant virtuellement de nombreux scénarios de déploiement et tests unitaires, puis en les exécutant à grande échelle plutôt que d'essayer d'exécuter ces mêmes suites de tests sur un vrai robot en temps réel. Nous espérons que le composant ArticulationBody, ainsi que les améliorations apportées à PhysX, pourront aider les roboticiens à utiliser Unity pour leurs efforts de simulation.

Vous voulez l'essayer vous-même ?

Pour voir comment un bras robotique à liaison série peut être construit avec des articulations, consultez notre projet de démonstration de robotique.

Téléchargez Unity 2020.1, actuellement en version bêta, pour vous essayer à l'utilisation d'ArticulationBody.