Utilice cuerpos articulados para crear fácilmente prototipos de diseños industriales con movimientos y comportamientos realistas.

ANTHONY YAKOVLEV / UNITY TECHNOLOGIESContributor
May 20, 2020|8 minutos
Utilice cuerpos articulados para crear fácilmente prototipos de diseños industriales con movimientos y comportamientos realistas.
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

En Unity 2020.1, ahora en beta, tendremos un nuevo componente de Física: ArticulationBody. Las articulaciones facilitan más que nunca la simulación de brazos robóticos y cadenas cinemáticas con una física y un movimiento realistas. Junto con otras mejoras de PhysX 4.1, Unity es más capaz que nunca de simular para aplicaciones industriales.

Unity 2020.1: mejora de la física

Con Unity 2019.3 actualizamos nuestra biblioteca de física de PhysX 3.4 a PhysX 4.0. Ahora, la beta de Unity 2020.1 lleva a los usuarios un paso adelante con una actualización a PhysX 4.1. Aunque las versiones anteriores de esa biblioteca ofrecían un rendimiento excelente para una amplia variedad de tipos de juegos, modelar la realidad para aplicaciones que no fueran de juego era más difícil de conseguir. Modelar cadenas cinemáticas, como las de un muñeco de trapo, un brazo robótico o un mecanismo con varias bisagras simultáneas, daría como resultado un movimiento tartamudo y poco realista. Estas juntas no sólo tendrían un aspecto peculiar, sino que sería imposible utilizarlas para simular un dispositivo real, lo que obstaculizaría los esfuerzos para modelar o crear prototipos de diseños industriales.

Uno de los principales responsables de estas deficiencias en el mundo real era la selección de los componentes de unión que conectaban entre sí los cuerpos rígidos. Estas articulaciones, junto con un solucionador de física optimizado para el rendimiento del juego por encima de la fidelidad, dieron como resultado una cinemática que no conseguía simular de forma realista.

Obtenga más información sobre las mejoras generales que aporta PhysX 4.1 aquí.

Modelización del movimiento mediante articulaciones

Ciertas aplicaciones requieren restringir el movimiento de algunos cuerpos rígidos con respecto a otros. Para visualizarlo, imagine que conecta los huesos del esqueleto de una muñeca de trapo, un brazo robótico con múltiples articulaciones o una puerta que gira sobre su bisagra. Esto ha sido posible tradicionalmente por medio de los componentes de articulación como el FixedJoint o el ConfigurableJoint que conectan dos objetos Rigidbody entre sí.

Entre bastidores, cada articulación se descompondrá en unas cuantas restricciones primitivas, como una restricción lineal para mantener los cuerpos a una distancia determinada o una restricción angular para mantener los cuerpos orientados de una forma específica en torno a un eje concreto. Esas mismas restricciones se utilizan para evitar que los cuerpos se superpongan manteniendo la misma distancia entre ellos. Todas las restricciones combinadas se introducirán en un solucionador iterativo que tiene como objetivo converger en un conjunto de impulsos para aplicar a cada uno de los pares de objetos conectados en el espacio del mundo que los posicionará para satisfacer todas las restricciones, si es posible.

Problemas con el uso de las juntas antiguas

El primer problema es el gran número de factores conflictivos que pueden crear problemas de convergencia para el solucionador. El número de iteraciones, las masas relativas de los cuerpos conectados y la complejidad total del conjunto de las restricciones de una escena pueden crear un escenario irresoluble. En casos como éste, se utiliza la solución parcial, por lo que algunas restricciones quedan sin satisfacer.

El segundo problema es que la magnitud del impulso aplicado depende del error conjunto, un valor que muestra hasta qué punto se incumple una restricción en un momento dado. Debido a este comportamiento de compensación de errores, siempre habrá al menos algún efecto elástico, exactamente como si los cuerpos estuvieran conectados por un conjunto de muelles amortiguados, especialmente cuando las articulaciones están encadenadas.

Incorporación de las articulaciones a Unity: una forma mejor de modelar movimientos realistas

Nuestra solución al problema cinemático anterior es el nuevo concepto de articulación: un conjunto de cuerpos organizados en un árbol lógico, donde una relación padre-hijo expresa la idea de movimiento mutuamente restringido. Siempre hay un único cuerpo raíz y no puede haber bucles. Utilizamos la jerarquía de transformación de Unity para expresar las articulaciones.

Ahora, los usuarios pueden modelar fácilmente un robot existente, como el Universal Robots UR3e que se muestra a continuación, y simular una tarea que refleje con mayor precisión cómo sería ese movimiento en el mundo real. Esto permite a los especialistas en robótica visualizar una determinada secuencia de movimientos, probar nuevos códigos o incluso validar nuevos diseños en un entorno sintético.

Las articulaciones ayudan a los robóticos y a otros desarrolladores industriales de dos formas principales: se mueven de forma más similar a sus homólogos del mundo real y pueden construirse más rápidamente que el antiguo RigidBody+Joint, lo que ahorra tiempo de desarrollo.

Prevemos que uno de los principales casos de uso de las articulaciones será el campo de la robótica. Los brazos robóticos suelen tener seis o más articulaciones conectadas en serie, lo que significa que pequeños errores en la pose relativa de cada articulación pueden tener un efecto potencialmente grande en la pose del efector final; los errores se propagan por la cadena cinemática, lo que crea movimientos poco realistas y una posición del efector final que se ha desviado del objetivo.

La simulación puede ayudar a los especialistas en robótica a acelerar su tiempo de desarrollo modelando virtualmente muchos escenarios de despliegue y pruebas unitarias, para luego ejecutarlas a escala en lugar de intentar ejecutar esas mismas suites de pruebas en un robot real en tiempo real. Esperamos que el componente ArticulationBody, así como las mejoras introducidas en PhysX, puedan ayudar a los especialistas en robótica a utilizar Unity para sus tareas de simulación.

La cantidad de grados de libertad en una determinada relación padre-hijo depende del tipo de articulación utilizado. Actualmente, apoyamos:

  • Fijo: tiene cero grados de libertad y se utiliza para bloquear los cuerpos entre sí.
  • Prismático: tiene un grado de libertad, que es un desplazamiento lineal a lo largo de un eje particular en relación con el padre
  • Revoluta: tiene un grado de libertad, un análogo rotacional de la Prismática
  • Esférica: tiene hasta tres grados de libertad y es una rótula que sólo permite rotaciones relativas pero no movimiento lineal.

Para aumentar aún más el realismo de estas articulaciones, se utiliza un nuevo solucionador basado en el algoritmo de Featherstone. Esta técnica calcula los efectos de las fuerzas aplicadas a una estructura de articulaciones, enlaces y cuerpos sólidos utilizando coordenadas reducidas, es decir, un espacio en el que cada cuerpo tiene tantas coordenadas relativas a su padre como grados de libertad. Antes utilizábamos las coordenadas máximas, más eficaces en casos de uso general, pero sacrificábamos la exactitud y la precisión para conseguir ese rendimiento.

Dinámica de avance y articulación

La dinámica de avance y las articulaciones en un espacio de coordenadas reducido ayudan a satisfacer los elevados requisitos de precisión y exactitud que necesitan los brazos robóticos. Junto con otras mejoras aportadas por PhysX 4.1, como el solucionador TGS, las articulaciones hacen posible por primera vez en Unity simulaciones fiables de brazos robóticos. Modelar un robot utilizando el solucionador iterativo de articulaciones requería un ajuste preciso y atajos que seguirían sin ajustarse al movimiento de un robot real.

Utilizamos el algoritmo de dinámica hacia delante para simular articulaciones en el espacio de coordenadas reducido (es decir, un espacio en el que cada cuerpo tiene tantas coordenadas relativas a su padre como grados de libertad). Se escala linealmente con la cantidad total de grados de libertad en una articulación, y puede ser más rápido que utilizar el solucionador iterativo tradicional que se escala con el número de restricciones en lugar de calcular un resultado más preciso.

ArticulationBody- El nuevo componente físico de Unity

Para soportar articulaciones en Unity, hemos añadido un nuevo componente: el ArticulationBody. Haciendo una analogía con la física normal, ArticulationBody es como Rigidbody y ConfigurableJoint en un solo componente. En una articulación, todos los cuerpos excepto el raíz tienen una articulación que los conecta a su padre, por eso no se separaron en componentes individuales.

Imagen

La forma de los cuerpos se describe utilizando el componente Collider normal, al igual que con Rigidbodies.

Una vez creados, los cuerpos de una articulación no pueden moverse mediante el componente Transformar, porque puede romper los límites establecidos por las coordenadas espaciales reducidas. La única excepción es el cuerpo raíz, que puede ser movido usando la función ArticulationBody.TeleportRoot. ArticulationBody no responderá a los cambios en el componente Transform por diseño.

Dicho esto, hay varias formas posibles de interactuar con una articulación. En primer lugar, se pueden aplicar fuerzas y pares a cada cuerpo de una articulación. En segundo lugar, cada articulación tiene un accionamiento lineal por cada grado de libertad que puede controlarse fijando objetivos lineales y angulares. Por último, es posible modificar directamente las posturas de los cuerpos en el espacio de coordenadas reducido.

Comparar la articulación con la articulación fija o configurable

Una ventaja particular de las articulaciones es que la calidad de la simulación no depende directamente de la relación de masas de los cuerpos conectados. Con cuerpos rígidos y articulaciones fijas, la simulación empezaba a parecer poco realista con relaciones de masas superiores a 10:1 entre los cuerpos conectados. En el siguiente ejemplo, sin embargo, se puede ver que una rejilla dimensional de cuerpos articulados conectados con articulaciones fijas todavía se puede simular con precisión, incluso con las esferas rojas siendo 1000 veces más pesadas que las negras.

La simulación puede ayudar a los especialistas en robótica a acelerar su tiempo de desarrollo modelando virtualmente muchos escenarios de despliegue y pruebas unitarias, para luego ejecutarlas a escala en lugar de intentar ejecutar esas mismas suites de pruebas en un robot real en tiempo real. Esperamos que el componente ArticulationBody, así como las mejoras introducidas en PhysX, puedan ayudar a los especialistas en robótica a utilizar Unity para sus tareas de simulación.

¿Quiere probarlo usted mismo?

Para ver cómo puede construirse un brazo robótico de enlace en serie con articulaciones, consulte nuestro proyecto de demostración de robótica.

Descarga Unity 2020.1, ahora en beta, para probar a usar ArticulationBody.