Simulación con motores de videojuegos

Simulación con motores de videojuegos y ROS2

Introducción

Para realizar simulaciones en robótica tenemos diferentes entornos que podemos usar con ROS2, como Gazebo, Webots, CoppeliaSim, o Nvidia ISAAC Sim, siendo Gazebo el más usado con diferencia.

 

Todos ellos están diseñados específicamente para la simulación de robots, ofreciendo herramientas y características centradas en la física y dinámica de los mismos, la interacción con el entorno, la simulación de sensores y la ejecución de algoritmos de control.

 

En estos entornos podemos rápidamente crear un prototipo de nuestro robot y probarlo en un mundo virtual.

Simulación realizada con Open 3D Engine

Por qué usar motores de videojuegos?

Principalmente porque los entornos de simulación que hemos mencionado no tienen un buen desempeño en las siguientes áreas:

 

    • Simulaciones en grandes mundos interactivos.  
    • Renderizado con aspecto fotorrealista.
    • Generación datos sintéticos.
    • Simulaciones relacionadas con la conducción autónoma.

Los motores de videojuegos, a diferencia de los entorno de simulación clásicos, proporcionan herramientas muy sofisticadas para facilitar la creación de grandes mundos interactivos y permiten la simulación de grandes áreas, ofreciendo al mismo tiempo un acabado visual muy superior con renderizados que alcanzan el fotorrealismo. Y todo ello manteniendo un elevado rendimiento de las físicas y los sensores.

Por otro lado, cada vez es más frecuente realizar simulaciones donde el foco no se pone realmente en simular propiamente un robot sino en resolver una aplicación, con múltiples robots desplegados en amplios entornos. Y en estos casos los motores de juegos pueden ser muy adecuados para simulaciones donde lo que queremos estudiar es la percepción, el comportamiento integrado de robots o la productividad de una implementación específica de una flota de robots.

En cuanto a sus aplicaciones en la conducción autónoma de vehículos, los motores de videojuegos ya son usados en entornos de simulación específicos como CARLA y OSIM que están construidos sobre Unreal Engine y Unity respectivamente.

Qué motores de videojuegos podemos usar con ROS2?

A continuación vamos a ver los principales motores de videojuegos que podemos usar con ROS2.

Unity

Unity es uno de los motores más usados en videojuegos y proporciona soporte oficial de ROS2. Además dispone del paquete URDF Importer,  que permite importar un robot definido en formato URDF en una escena de Unity. La integración oficial permite el uso de publicadores, subscriptores y servicios, pero no acciones. 

 

Enlaces de interés:

También existen otras alternativas  como el paquete ros2-for-Unity desarrollado por la empresa RobotecAI. Es compatible con las versiones Galactic y Humble de ROS2 y al igual que la solución oficial actualmente no permite el uso de acciones.

Unreal Engine

Este es probablemente el motor más potente en el mercado actualmente y es empleado en el desarrollo de multitud de juegos AAA. Aunque no proporciona un soporte nativo podemos utilizarlo junto con ROS2 mediante el plugin rclUE creado por Rapyuta Robotics, que además cuenta con el paquete RapyutaSimulationPlugins que contiene elementos y herramientas que podemos usar en Unreal Engine.

 

Enlaces de interés:

Open 3D Engine

Open 3D Engine es un motor de juegos 3D gratuito, de diseño modular y código abierto desarrollado por Open 3D Foundation, una subsidiaria de Linux Foundation. La versión inicial del motor es una versión actualizada del motor de Amazon Lumberyard, y entre sus socios se encuentra Open Robotics, que es la principal mantenedora de ROS2.

 

Este motor tiene soporte nativo para ROS2, permitiendo usar publicadores y subscriptores, servicios y también acciones.  También pone a nuestra disposición varios tipos de sensores configurables y extensibles para poder usarlos en las simulaciones, como Lidar (3D y 2D), cámara (incluida la de profundidad), IMU, odometría, GNSS y de contacto.

 

Al igual que Unity, permite importar los robots que tengamos con formato URDF, SDFormat y XACRO.

 

Adicionalmente proporciona tres plantillas para simulaciones de robótica:

    • Proyecto ROS2.
    • Proyecto de almacén.
    • Proyecto de manipulación.

Enlaces de interés:

Comparte este artículo:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *