¿Qué estás buscando?
Engine & platform

Avance en la autonomía de su robot con ROS 2 y Unity

DEVIN MILLER / UNITY TECHNOLOGIESContributor
Aug 13, 2021|10 minutos
Avance en la autonomía de su robot con ROS 2 y Unity
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.

Unity se complace en anunciar nuestro apoyo oficial a ROS 2, cuyo sólido marco, junto con la simulación, permitirá innumerables nuevos casos de uso.

El Sistema Operativo para Robots (ROS) es un popular marco para el desarrollo de aplicaciones robóticas que comenzó en 2007. Aunque originalmente se diseñó para acelerar la investigación robótica, pronto encontró una amplia adopción en la robótica industrial y comercial. ROS 2 se basa en el marco fiable de ROS, al tiempo que mejora la compatibilidad con aplicaciones modernas como sistemas multirobot, sistemas en tiempo real y entornos de producción. Unity amplía su apoyo oficial al ecosistema ROS a ROS 2.

La robótica moderna está cambiando su enfoque hacia la "autonomía", el estudio y desarrollo de algoritmos capaces de tomar decisiones en ausencia de reglas estrictas definidas por un desarrollador humano, y la simulación apoya esta transición al permitir una mayor flexibilidad y una experimentación más rápida que las pruebas en el mundo real. Hemos desarrollado un ejemplo, Robotics-Nav2-SLAM, para demostrar cómo empezar a simular la localización y mapeo simultáneos (SLAM) y la navegación para una robótica móvil autónoma (AMR) con Unity y ROS 2.

ROS 2 impulsa la robótica moderna

Aunque ROS sigue siendo un marco excelente para la creación de prototipos robóticos, está llegando al final de su vida útil y le faltan algunas funciones necesarias para ir más allá de la creación de prototipos y pasar a la producción e implantación a gran escala de un sistema robótico. La hoja de ruta técnica de ROS 2 fue establecida y es mantenida por un comité de veteranos de la industria con principios explícitos definidos para garantizar que ROS 2 sea un marco adecuado para los usuarios finales de robótica. ROS 2 admite más sistemas operativos y protocolos de comunicación y está diseñado para ser más distribuido que ROS.

La simulación impulsa la autonomía

Muchos de los nuevos casos de uso de ROS 2 se centran en la autonomía. Introducir la autonomía significa que las decisiones que toma un robot y los resultados de esas decisiones no son perfectamente predecibles utilizando sólo una máquina de estados y una colección de fórmulas matemáticas, como puede ocurrir en muchos casos de uso de la robótica industrial. En comparación con los robots industriales, el entorno operativo de un robot autónomo es exponencialmente mayor. Las permutaciones de entradas que encuentra superan con creces lo que puede reproducirse en un entorno de laboratorio controlado. Para validar por completo que un robot autónomo se comporta como uno espera, puede hacerlo en el robot, en su propia dimensión de bolsillo personal donde el tiempo no tiene sentido y la realidad es todo y nada al mismo tiempo, o necesita lo siguiente mejor: una simulación adecuadamente robusta.

Si se espera que un robot detecte un entorno, una simulación debe ser capaz de modelar con precisión esos sensores sin hacer concesiones con respecto a la precisión de la topología y la física simuladas del entorno. Si hay otros agentes en ese entorno, es decir, personas u otros robots, entonces la simulación debe ser capaz de modelar el comportamiento del agente, manteniendo al mismo tiempo la precisión de su simulación de sensores, la representación de la topología y el modelado de la física. Para que un robot se enfrente a todos los escenarios posibles, esta simulación debe realizarse muchas, muchas, muchas veces. Todo esto viene a decir que la simulación al servicio de la robótica autónoma requiere cuatro cosas que no suele exigir la robótica industrial: flexibilidad, extensibilidad, escalabilidad y fidelidad, todo ello sin sacrificar el rendimiento. Unity se encuentra en la intersección de todos estos requisitos, y por eso estamos incorporando más funciones a nuestra plataforma para apoyar el desarrollo de robots autónomos.

Con los paquetes de Unity's Robotics, tendrás acceso a las interfaces que ya hemos construido para facilitar la comunicación con ROS o ROS 2. Podrás importar configuraciones de robots existentes directamente desde archivos URDF con nuestro Importador URDF, y podrás empezar a ejercitar tu robot con el pipeline de renderizado de alta calidad y eficiencia de Unity y una simulación de física de alto rendimiento y precisión. A través de la Tienda de Activos de Unity, tienes acceso a una gran variedad de entornos y accesorios adicionales prefabricados que te ayudarán a modelar el entorno y la tarea específicos de tu robot. Con unos pocos clics, la simulación que monte puede construirse y desplegarse en cualquier sistema operativo convencional, ya sea Windows 10, Mac OS o Linux. Mediante secuencias de comandos C#, secuencias de comandos visuales Bolt o cualquiera de los numerosos kits de herramientas de secuencias de comandos y utilidades disponibles en la Tienda de Activos, puede seguir personalizando la funcionalidad de su simulación concreta para adaptarla a su caso de uso específico.

Compatibilidad con ROS 2 con un solo clic

Trasladar tu proyecto Unity a ROS 2 es sencillo. En el paquete ROS-TCP-Connector, hemos añadido un menú desplegable que permite alternar el paquete entre la integración de ROS y ROS 2. Al cambiar el protocolo, Unity automáticamente recompilará el paquete contra las definiciones de mensaje y el protocolo de serialización que usted ha seleccionado. Para probarlo, simplemente haga este cambio en su propio proyecto, o baje nuestro repositorio de ejemplo, Robotics-Nav2-SLAM, que contiene los componentes necesarios para permitir el uso de Unity como fuente simulada de información de sensores y odometría para el tutorial Nav2 Navigating while Mapping.

configuración de ros2

Este proyecto de ejemplo demuestra cómo utilizar Unity para simular un sistema de navegación que se ejecuta en ROS 2. El concepto de navegación es sencillo y no cambia mucho en el contexto de la robótica autónoma. El objetivo de los algoritmos de navegación es encontrar un camino desde donde uno está hasta donde quiere estar. Sin embargo, para llegar de donde uno está a donde va, primero hay que hacer SLAM: localización y mapeo simultáneos. SLAM describe una colección de algoritmos creados para responder a la pregunta: "¿Dónde estoy, ahora mismo, y dónde he estado?". Los humanos realizamos SLAM constantemente como parte intrínseca de la cadena de procesamiento entre nuestros sentidos y nuestro cerebro. Para los robots autónomos, realizar un SLAM preciso sigue siendo un reto en la mayoría de los entornos del mundo real. Lo que necesita exactamente un robot móvil autónomo para saber en todo momento dónde se encuentra en relación con todos los lugares en los que ha estado, sigue siendo un campo de investigación activa. La única forma de responder realmente a esta pregunta para un caso de uso determinado es probar muchas cosas diferentes (sensores, algoritmos, etc.) y ver qué es lo que funciona.

En nuestro ejemplo, encontrarás un entorno de almacén simple, un modelo totalmente articulado de un robot móvil Turtlebot 3 con LIDAR simulado y controladores de motor, y un Dockerfile utilizado para construir una imagen que contiene todas las dependencias de ROS 2 necesarias para ejercitar las pilas Nav2 y slam_toolbox contra nuestra simulación. Los pasos de los tutoriales de Nav2 te proporcionarán un contexto útil si nunca antes has utilizado ROS 2 o trabajado con algoritmos SLAM. Para ver cómo funciona este ejemplo en Unity, todas las instrucciones para empezar y poner en marcha el proyecto están en nuestro repositorio.

A la izquierda: Visualización RViz de mensajes ROS 2 generados en y enviados por Unity. Bien: TurtleBot 3 realizando SLAM y navegación autónoma en Unity.
Empiece hoy mismo

Se anima a los roboticistas nuevos en Unity y a los desarrolladores de Unity nuevos en robótica a que prueben nuestra integración ROS 2 y realicen navegación autónoma con Robotics-Nav2-SLAM. Este es sólo un pequeño ejemplo de lo que puedes construir integrando nuestras herramientas de robótica y los muchos otros potentes paquetes disponibles en Unity. Paralelamente, el equipo de Unity Robotics sigue creando y lanzando funciones que apoyan explícitamente los casos de uso habituales de la robótica, haciendo hincapié en la escalabilidad y la extensibilidad.

Unity también organizará un taller en ROSCon este año que amplía el Nav2-SLAM-Example para dar soporte a múltiples robots con roles especializados que trabajan juntos para llevar a cabo una tarea específica.