¿Qué estás buscando?
Engine & platform

Simule robots con más realismo: Novedades en física para la versión beta de Unity 2021.2

ANTHONY YAKOVLEV / UNITY TECHNOLOGIESContributor
Aug 20, 2021|9 minutos
Simule robots con más realismo: Novedades en física para la versión beta de Unity 2021.2
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.

La versión beta de Unity 2021.2 contiene mejoras de usabilidad en las funciones físicas que permiten nuevos casos de uso al tiempo que proporcionan una creación más sencilla y una depuración más rápida en el campo de la robótica.

Mejoras en la articulación corporal

El componente ArticulationBody es el núcleo de nuestra simulación robótica porque permite simular cadenas cinemáticas con alta precisión, lo cual es esencial para manos robóticas, manipuladores, robótica móvil y mucho más. Hemos estado escuchando los comentarios de los usuarios y hemos realizado múltiples cambios para mejorar el rendimiento y la usabilidad.

Las propiedades del componente ArticulationBody se han reorganizado para una mejor legibilidad. Ahora, los parámetros relacionados con la masa están en un bloque visual, seguidos de los parámetros relacionados con los anclajes y luego con las unidades. Estos cambios se han incorporado a Unity 2021.1 y 2020.3.

Imagen que muestra el cuadro de diálogo del cuerpo de articulación con un fondo gris y texto blanco.

El editor ArticulationBody ahora utiliza las mismas herramientas de articulación que las articulaciones iterativas regulares. Esto garantiza una experiencia consistente en todo el editor. Además, también es posible editar visualmente los límites y anclajes de todas las articulaciones.

Gif del movimiento de la articulación prismática mostrado con una simulación de brazo robótico plateado y azul

Las herramientas de articulación admiten todos los tipos de articulación de ArticulationBody, porque se han ampliado para permitir la edición de la articulación prismática, que antes no estaba disponible. Consulte este hilo del foro para obtener más información o brindar comentarios.

Gif del modo de detección de colisiones demostrado con una simulación de brazo robótico azul y plateado

ArticulationBody tiene una nueva configuración que permite seleccionar el modo de detección de colisión. Se admiten todos los modos de detección de colisiones continuas, al igual que con Rigidbody. Esto se incorporó a las versiones 2021.1 y 2020.3 porque se consideró esencial para ciertos casos de uso. Por ejemplo, entrenar un modelo de aprendizaje automático para controlar a un personaje humanoide para que camine requirió habilitar la detección continua de colisiones en los pies, ya que de lo contrario nuestro modelo pudo aprender a usar el impulso de depenetración proveniente de los pies superpuestos al suelo para su beneficio: avanzó mucho más rápido de lo que lo hubiera hecho normalmente y también se descubrieron algunos patrones de vuelo.

Se han agregado variantes adicionales de ArticulationBody.AddForce para que coincidan con las de Rigidbody.AddForce. Aplicar fuerza, aceleración o impulso directamente. Esto facilita la migración de código preexistente de Rigidbody a ArticulationBody.

Mejoramos la claridad de la documentación al indicar explícitamente las condiciones límite y los casos especiales. En esta versión, tenemos una nueva página para el componente ArticulationBody .

Basándonos en los comentarios de los usuarios, también hemos incluido unidades de medida para todas las propiedades orientadas a C# del componente ArticulationBody en la documentación; consulte mass, por ejemplo.

Mejoras en el editor

Seguimos invirtiendo en hacer que los procesos relacionados con la física general sean más fáciles de usar y en brindar más flexibilidad para dar cabida a diversos patrones de uso. Creemos que hace posibles simulaciones más sofisticadas, impulsadas por la posibilidad de que los creadores ahora usen la funcionalidad adicional para comprender mejor su campo y así configurar la simulación para lograr resultados más precisos.

Dicho esto, el depurador de física ahora admite prefabricados correctamente, tanto en el modo de aislamiento como en el modo de contexto. Ahora permite utilizar el principio de diseño de divide y vencerás en mayor medida, al observar las propiedades de los prefabricados de forma aislada, mientras que el resto de la escena no se muestra.

Gif del sistema de detección de colisiones con simulación de objetos

Las capas físicas son una herramienta esencial para optimizar el rendimiento del sistema de detección de colisiones. Con frecuencia, y especialmente en escenas grandes con muchas capas, es mejor deshabilitar primero todas las colisiones y habilitar solo las necesarias después. Para habilitar este patrón de uso, se agregaron nuevos botones para alternar la detección de colisiones entre todas las capas en la configuración de física. Esto es útil en proyectos más grandes donde hay muchas capas, pero donde se pueden reducir las interacciones a un subconjunto más pequeño de combinaciones de capas para mejorar el rendimiento.

Matriz de las capas de colisión que se han agregado al generador de perfiles de física con un fondo gris y texto blanco

Se han agregado métricas adicionales al generador de perfiles de física. Ahora, hay más gráficos disponibles y el panel de texto muestra más datos sobre la simulación actual. Entre las nuevas incorporaciones se encuentran el número total de consultas de física, el número de cuerpos de articulación y el número de transformaciones sincronizadas en el último fotograma.

Cuadro de diálogo Módulos de perfilador que incluye métricas de un proyecto en particular

También se puede crear un módulo de perfilador personalizado, para incluir solo las métricas necesarias para un proyecto en particular.

Imagen del cuadro de diálogo detallado de Física que muestra la métrica de uso de memoria

Por último, el uso de memoria ahora también está disponible como métrica.

Consultas de física de cadenas fuera del hilo principal

Las consultas por lotes de física son una forma de mejorar el rendimiento de las consultas de física (como Raycasts, por ejemplo) al ejecutarlas en todos los núcleos disponibles, a diferencia de lo que hacemos normalmente, donde las ejecutamos todas exclusivamente en el hilo principal.

Lo ideal es que el código que depende de los resultados de una consulta por lotes sea en sí mismo un trabajo de C# para maximizar el aumento del rendimiento. Sin embargo, el principal problema que impedía que esto sucediera era el hecho de que el impacto del colisionador se informaba como un componente de Unity (RaycastHit.collider). Ninguno de los componentes de Unity está disponible fuera del hilo principal, por lo que esto limita bastante la adopción de consultas por lotes.

Para solucionar esto, ahora se expone el ID de instancia del colisionador que fue golpeado . Los identificadores de instancia se pueden usar libremente fuera del hilo principal, por lo que ya no debería haber problemas encadenar los trabajos de consulta.

Fricción del parche mejorada

El modo de fricción de parche es el modo de simulación de fricción predeterminado en Unity. Sin duda es un compromiso hacia un mayor rendimiento en lugar de la precisión de la simulación, pero todavía se puede ajustar para obtener resultados razonables dentro de un presupuesto computacional ajustado.

Ahora está disponible un nuevo modo de fricción de parche mejorado en la configuración de física. Aborda el problema de que cuando se genera más de un anclaje de fricción en un par de contactos, las fuerzas de fricción pueden ser hasta dos veces más fuertes que las predichas por los modelos analíticos.

Por ejemplo, en el siguiente gráfico, cubos con diferente fricción dinámica se deslizan sobre un plano. Los cubos rojos muestran las posiciones finales esperadas tal y como se predijo teóricamente. Los cubos azules utilizan una fricción de parche regular y parecen recorrer aproximadamente la mitad del camino hacia la meta. Los cubos verdes utilizan la nueva fricción de parche mejorada y se aproximan mucho más a los valores esperados.

Gif que muestra el modo de fricción de parche mejorado con cubos rojos, verdes y azules
Modificación de contacto

La nueva API de modificación de contactos ya está disponible y estamos recopilando comentarios en este hilo del foro. Permite personalizar la reacción del motor de física a los contactos. Para cualquier par de contactos, es posible cambiar los puntos de contacto, limitar los impulsos aplicados por el solucionador, ajustar las velocidades objetivo y más. Entre otros usos, permite hacer agujeros en cualquier colisionador, crear contactos pegajosos y varias cintas transportadoras impulsadas por la física. En el siguiente ejemplo, la esfera cae a través del plano porque ignora los puntos de contacto con ella (puede hacerse sensible al área). A la derecha, un cubo rebota en dos planos inclinados sin girar, porque la reacción al contacto se personalizó para excluir las rotaciones.

Gif que muestra la API de modificación de contactos con un círculo y un cubo
Dale vida a tus simulaciones

Estas mejoras garantizan que los usuarios generen resultados más realistas de sus simulaciones en Unity. Muchas de estas mejoras se realizaron en base a sugerencias o comentarios de nuestra comunidad y lo invitamos a unirse a la conversación. Para comenzar a utilizar la robótica en Unity, consulte algunos de nuestros ejemplos y demostraciones en Unity Robotics Hub.