
Integración de Isaac Sim con ROS 2
En este blog, analizamos cómo NVIDIA Isaac Sim usa ROS 2 para crear una plataforma perfecta para diseñar y probar sistemas robóticos. Al integrar el versátil marco de ROS 2 con las herramientas avanzadas de Isaac Sim, los desarrolladores pueden probar algoritmos como la navegación, la percepción y la manipulación. Los investigadores realizan estas pruebas en entornos virtuales realistas. Esta combinación cierra la brecha entre la creación de prototipos virtuales y la implementación en el mundo real. Acelera el desarrollo de soluciones robóticas innovadoras y confiables.
Introducción a ROS
ROS (Robot Operating System) es un kit de desarrollo de software de código abierto para aplicaciones robóticas. Lo es no un sistema operativo, pero una plataforma de software estándar para desarrolladores de todos los sectores que los llevará desde la investigación y la creación de prototipos hasta la implementación y la producción.
La mayoría de los robots se componen de tres componentes:
- Actuadores: componentes responsables del movimiento.
- Sensores: dispositivos que recopilan datos del entorno.
- Sistema de control: sistemas que toman decisiones en función de la entrada de los sensores y los resultados deseados.
ROS ayuda a construir estos tres componentes y a conectarlos entre sí mediante temas y mensajes, que puede grabarse con fines de depuración y enviarse con fines de teleoperación.
ROS funciona potencialmente con cualquier componente que tenga una interfaz de software y se puede ejecutar en un contenedor Docker. El paquete Python para ROS es rospy, que se puede instalar mediante pip install roslibpy.
Conceptos ROS
Nodos ROS
Los nodos son procesos individuales que realizan cálculos.
En ROS, cada nodo es responsable de una tarea específica. Estas tareas incluyen el procesamiento de datos de los sensores, los algoritmos de control o el manejo de la interfaz de usuario. Los nodos pueden comunicarse entre sí a través de mensajes, lo que permite una arquitectura modular y distribuida.
Temas ROS
Los nodos pueden publicar y suscribirse a mensajes en buses con nombre denominados temas. Proporcionan una forma de intercambiar información de forma desacoplada.
Un nodo que quiere enviar información publica en un tema. Otros nodos que desean recibir la información se suscriben al mismo tema. Esto permite la comunicación de muchos a muchos.
Mensajes ROS
Los nodos utilizan los mensajes como estructuras de datos para comunicarse. Pueden contener varios tipos de datos, como números enteros, flotantes, cadenas y matrices.
Los mensajes se definen con un formato específico, a menudo en archivos.msg, que especifican los tipos y los nombres de los campos. Cuando los nodos envían y reciben mensajes, utilizan estas estructuras predefinidas.
Estructura de mensajes
Las estructuras de mensajes ROS desempeñan un papel clave en la forma en que los nodos intercambian datos dentro del sistema operativo del robot.
Ejemplo: Una carretilla elevadora con una cámara adjunta para la detección de palés
Nodos
- Nodo de cámara: Este nodo interactúa con la cámara montada en la carretilla elevadora y captura imágenes.
- Nodo de detección de palés: Este nodo se suscribe al tema de imágenes de la cámara, procesa las imágenes entrantes para identificar los palés y puede publicar los resultados (por ejemplo, la ubicación de los palés) en otro tema.
- Nodo de control: Este nodo recibe información de detección de palés y toma decisiones sobre los movimientos de la carretilla elevadora, como navegar para recoger palés.
- Nodo de interfaz de usuario: Este nodo proporciona una interfaz gráfica para que los operadores supervisen las actividades de la carretilla elevadora, mostrando la alimentación de la cámara y los palés detectados.
Temas
- /cámara/imagen: En este tema, el nodo de cámara publica imágenes sin procesar capturadas desde la cámara de la carretilla elevadora.
- /detectado/palets: En este tema, el nodo de detección de palés publica los resultados de su análisis, como la ubicación y las dimensiones de los palés detectados.
- /montacargas/control: Este tema permite al nodo de control recibir comandos basados en la detección de palés y enviar instrucciones de movimiento a la carretilla elevadora.
- /ui/status: El nodo de interfaz de usuario utiliza este tema para recibir actualizaciones, como «Se ha detectado un palé» o «Se está trasladando a un palé».
Mensajes
- Mensaje de imagen: El formato del mensaje para /camera/image puede definirse utilizando el tipo de mensaje ROS estándar, como Sensor_msgs/image, que contiene campos como:
- width (int): ancho de la imagen.
- height (int): altura de la imagen.
- datos (matriz de bytes): los datos de píxeles de la imagen.
- Mensaje de detección de palés: Para /detected/pallets, puede definir un tipo de mensaje personalizado (por ejemplo, my_package/palletDetection.msg) que incluya:
- pallet_id (string): un identificador único para cada palé detectado.
- position (Geometry_MSGS/Pose): la posición del palé en el sistema de coordenadas de la cámara.
- dimensiones (flotante [3]): ancho, largo y alto del palé detectado.
- confianza (flotante): la puntuación de confianza de la detección.
Un ejemplo de mensaje podría ser:
# RobotStatus.msg
float64 x # Posición X actual del robot
float64 y # Posición Y actual del robot
float64 z # Posición Z actual del robot (p. ej., altitud)
batería float32 # Nivel de batería (0.0 a 100.0)
estado de la cadena # Estado operativo (p. ej., «inactivo», «en movimiento», «cargando»)
Un nodo responsable de supervisar el estado del robot rellenaría una instancia de este mensaje (pondría x, y, z, etc. en el mensaje) y lo publicaría en /robot/status. Otros nodos, como un sistema de monitorización, podrían suscribirse a este tema. Recibirían actualizaciones periódicas sobre la posición del robot, el nivel de la batería y el estado operativo.
Flujo de datos
En esta sección se destaca cómo los nodos del sistema funcionan en conjunto para la detección de palés y el funcionamiento de montacargas. El proceso comienza con la captura de imágenes y la detección de palés. A continuación, calcula las rutas óptimas y proporciona información en tiempo real a los operadores. Este flujo de trabajo garantiza una gestión del almacén eficiente y precisa.
- Captura de imágenes:
- El nodo de cámara captura imágenes del almacén o área de almacenamiento y las publica en el tema /camera/image a intervalos regulares.
- Detección de palés:
- El nodo de detección de palés se suscribe a /camera/image, procesa las imágenes mediante algoritmos de visión artificial (por ejemplo, modelos de aprendizaje automático entrenados para reconocer palés) e identifica los palés a la vista.
- Cuando se detectan palets, el nodo crea un mensaje con sus detalles (ubicación, dimensiones) y lo publica en el tema /detected/pallets.
- Control de montacargas:
- El nodo de control se suscribe a /detected/pallets para recibir actualizaciones en tiempo real sobre la ubicación de los palés.
- Basándose en la información de palés detectada, calcula la trayectoria óptima de la carretilla elevadora para acercarse a los palés y envía comandos de movimiento (como «avanzar», «girar a la izquierda») al tema /forklift/control.
- Interfaz de usuario:
- El nodo de interfaz de usuario se suscribe a /camera/image y /detected/pallets, y muestra la imagen de la cámara en una pantalla junto con recuadros delimitadores superpuestos alrededor de los palés detectados y los detalles pertinentes (por ejemplo, los identificadores de los palés).
- También se suscribe a /ui/status para enviar comentarios al operador sobre el estado actual de la carretilla elevadora, como «Palé detectado» o «Navegando hasta el palé».
Integración ROS2 de Isaac Sim
Isaac Sim puede conectarse a ROS2 a través de la extensión de puente ROS2. El sistema eliminará la compatibilidad con ROS1 en una versión futura porque está obsoleta. Las distribuciones recomendadas son ROS2 Humble.
La extensión ROS2 Bridge permite a los usuarios publicar y suscribirse a varios rostopics y rosservices que normalmente se necesitan para la simulación robótica. Sin embargo, la imagen de Docker de Isaac Sim no incluye la extensión ROS2 preinstalada, por lo que debemos crear una imagen personalizada con Isaac Sim y ROS2 instalados.
El primer paso es crear un dockerfile y poner lo siguiente en él:
DESDE nvcr.io/nvidia/isaac-sim:4.2.0
# Defina la interfaz de Debian como no interactiva
ENV DEBIAN_FRONTEND=No interactivo
# Preconfigurar la zona horaria
ENV TZ=América/Nueva_York
# Instalar las dependencias necesarias
EJECUTE apt-get update && apt-get install -y\
tzdata de la versión lsb de curl gnupg2
# Agregue la clave GPG y el repositorio ROS 2
EJECUTE curl -Ssl https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -\
&& echo «deb http://packages.ros.org/ros2/ubuntu $ (lsb_release -cs) main» > /etc/apt/sources.list.d/ros2-latest.list
# Instalar la versión de escritorio de ROS 2 Humble
EJECUTE apt-get update && apt-get install -y ros-humble-desktop
# Instalar el paquete teleop_twist_keyboard
EJECUTE apt-get update && apt-get install -y ros-humble-teleop-twist-keyboard
# Instalar el editor de texto
EJECUTE apt-get update && apt-get install -y nano
# Configurar el entorno ROS 2
SHELL [» /bin/bash», «-c"]
EJECUTE echo «source /opt/ros/humble/setup.bash" >> /root/.bashrc
# Establecer las variables de entorno necesarias
ENTORNO ROS_VERSION=2
ENTORNO ROS_PYTHON_VERSION=3
ENV ROS_DISTRO=humilde
# Reiniciar la interfaz de Debian
ENV DEBIAN_FRONTEND=Diálogo
# Establecer el punto de entrada predeterminado
PUNTO DE ENTRADA [» /bin/bash "]
Este Dockerfile crea una imagen Docker personalizada al combinar NVIDIA Isaac Sim con ROS 2 Humble, añadiendo herramientas esenciales para la simulación y el desarrollo robóticos. A continuación encontrará una explicación detallada de cada sección y su propósito:
- Imagen base: La imagen parte de nvcr.io/nvidia/isaac-sim:4.2.0, que proporciona el entorno necesario para ejecutar Isaac Sim, una potente herramienta de simulación para robótica.
- Modo no interactivo: Al configurar la interfaz de Debian como no interactiva, el proceso de compilación de Docker evita las solicitudes durante la instalación de paquetes, lo que garantiza una automatización fluida.
- Configuración de zona horaria: La zona horaria se establece en America/New_York para alinear la hora del sistema con una región específica, lo que resulta útil para depurar los registros y garantizar marcas de tiempo precisas.
- Instalación de dependencias básicas: Se instalan herramientas esenciales como curl, gnupg2, lsb-release y tzdata para permitir la administración de repositorios, las descargas seguras y la configuración del sistema, que son requisitos previos para instalar ROS 2 y otros paquetes.
- Agregar el repositorio ROS 2: El repositorio oficial de ROS 2 se agrega al sistema junto con su clave GPG, lo que permite la instalación segura y autenticada de los paquetes de ROS 2.
- Instalación de ROS 2 Humble: El paquete de escritorio ROS 2 Humble se instala para proporcionar el marco, las herramientas y las bibliotecas necesarias para desarrollar y ejecutar aplicaciones robóticas.
- Instalación de teleop_twist_keyboard: Este paquete se añade para permitir el control del robot mediante la entrada del teclado, que es una forma cómoda de probar y depurar el movimiento del robot sin necesidad de hardware adicional.
- Instalación de un editor de texto: Nano, un editor de texto ligero, está instalado para permitir a los usuarios editar rápidamente los archivos de configuración o los scripts dentro del contenedor, lo que resulta útil para realizar cambios sobre la marcha durante el desarrollo.
- Configuración del entorno ROS 2: El contenedor está configurado para obtener automáticamente el script de configuración del entorno ROS 2 (setup.bash) al iniciar el shell, lo que garantiza que los comandos y herramientas de ROS 2 estén siempre disponibles sin necesidad de un abastecimiento manual.
- Configuración de variables de entorno: Las variables de entorno clave, como la versión ROS, la compatibilidad con Python y la distribución ROS, se definen para configurar correctamente las herramientas y bibliotecas de ROS 2.
- Restablecer la interfaz de Debian: La interfaz de Debian se restablece al cuadro de diálogo para permitir el comportamiento interactivo normal si se necesitan instalaciones o configuraciones manuales de paquetes después de crear el contenedor.
- Punto de entrada predeterminado: El sistema establece el punto de entrada en /bin/bash, lo que permite a los usuarios interactuar con el contenedor mediante un entorno de shell conocido cuando se inicia.
Creación de la imagen de Docker
Para crear la imagen de Docker con el Dockerfile, ejecuta el siguiente comando en la terminal:
docker build -t isaac-with-ros2:v1.0.
Este comando crea la imagen y le asigna el nombre isaac-with-ros2 con la etiqueta de versión v1.0. El. indica que el contexto de compilación de Docker es el directorio actual, donde se encuentra el Dockerfile. Los usuarios ahora pueden usar esta imagen para ejecutar Isaac Sim con ROS 2 y herramientas adicionales configuradas para el desarrollo robótico.
El siguiente comando se usa para ejecutar el contenedor Docker creado a partir de la imagen isaac-with-ros2:v1.0 y acceder al shell Bash del contenedor. El comando garantiza que el contenedor utilice los recursos de GPU del host. También acepta el contrato de licencia de usuario final (EULA) de Isaac Sim de NVIDIA y las condiciones de privacidad. Además, monta directorios específicos del host al contenedor para almacenar datos, registrar y almacenar datos de forma persistente.
También usa la opción —network=host para habilitar la conectividad de red entre el host y el contenedor.
docker run --name isaac-sim --entrypoint bash -it --gpus all -e «ACCEPT_EULA=Y» -e «PRIVACY_CONSENT=Y» --rm --network=host\
-v ~/docker/isaac-sim/cache/kit: /isaac-sim/kit/cache:rw\
-v ~/docker/isaac-sim/cache/ov: /root/.cache/ov:rw\
-v ~/docker/isaac-sim/cache/pip: /root/.cache/pip:rw\
-v ~/docker/isaac-sim/cache/glcache: /root/.cache/nvidia/glcache:rw\
-v ~/docker/isaac-sim/cache/computecache: /root/.nv/computecache:rw\
-v ~/docker/isaac-sim/logs: /root/.nvidia-omniverse/logs:rw\
-v ~/docker/isaac-sim/data: /root/.local/share/ov/data:rw\
-v ~/docker/isaac-sim/documentos: /root/documents:rw\
Isaac-con-ros2:v1.0
Una vez dentro del shell Bash del contenedor Docker, puedes iniciar la aplicación Isaac Sim en modo headless ejecutando uno de los dos comandos, según el método de conexión deseado a la interfaz de Isaac Sim. Para conectarte mediante el Cliente de streaming NVIDIA Omniverse, ejecute el siguiente comando (https://docs.omniverse.nvidia.com/streaming-client/latest/user-manual.html):
. /runheadless.native.sh
Como alternativa, si quieres conectarte a la interfaz de Isaac Sim a través de un navegador web (por ejemplo, Google Chrome) mediante WebRTC, ejecuta el siguiente comando:
. /runheadless.webrtc.sh
Para la conexión WebRTC, después de ejecutar el comando, abra el navegador y navegue hasta la siguiente URL:
http://127.0.0.1:8211/streaming/webrtc-demo/? servidor=127.0.0.1
Para demostrar la conexión y la funcionalidad entre Isaac Sim y ROS 2 mediante Action Graph, se ejecutarán dos ejemplos. El primer ejemplo implica el control de un robot de accionamiento diferencial mediante nodos ROS 2. Los comandos del teclado controlan el movimiento del robot, lo que demuestra cómo Isaac Sim se integra con ROS 2 para responder a las entradas en tiempo real. El segundo ejemplo consiste en controlar una carretilla elevadora en el entorno de una fábrica. A diferencia del primer ejemplo, la carretilla elevadora funciona con cuatro ruedas, lo que hace que el control de la dirección sea más complejo. Este escenario destaca la versatilidad y la capacidad de Isaac Sim y ROS 2 para gestionar diferentes tipos de sistemas robóticos y arquitecturas de control en entornos simulados.
Control de un robot diferencial
Para empezar, navegue hasta Activos de Isaac dentro de Isaac Sim. En la barra de búsqueda, escribe «Tutorial de turtlebot» y haz doble clic en él para cargar la escena. Esto abrirá un entorno preconfigurado con una habitación y, dentro de él, encontrarás un robot de accionamiento diferencial llamado TurtleBot3_Hamburguesa. Esta configuración sirve como punto de partida para demostrar la interacción y el control de un robot diferencial utilizando nodos ROS 2.

Tras cargar la escena, crearemos los nodos necesarios para establecer la comunicación entre Isaac Sim y ROS 2. Para ello, vaya a «Crear» menú y, a continuación, seleccione «Secuencias de comandos visuales»y, por último, haga clic en «Gráfico de acción». Esto le permitirá crear la lógica y las conexiones necesarias para que la simulación interactúe sin problemas con ROS2.

En el Gráfico de acción pestaña, debe buscar y arrastrar los siguientes nodos al espacio de trabajo:
- Marque al reproducir: Este nodo activa acciones en cada marca de simulación durante la reproducción, lo que garantiza que el gráfico se ejecute de forma continua mientras se ejecuta la simulación.
- Contexto ROS2: Establece la conexión con el ecosistema ROS 2, lo que permite a Isaac Sim comunicarse con los nodos ROS 2.
- ROS2 Suscríbete a Twist: Se suscribe a los mensajes ROS 2 Twist, que se utilizan para transmitir comandos de velocidad (lineales y angulares) para el movimiento del robot.
- Escalar hacia/desde unidades de escenario: Convierte la escala de datos de velocidad entre ROS 2 y el sistema de unidades de Isaac Sim para garantizar la compatibilidad.
- Break 3 vectores (x2): divide un vector 3D en sus componentes individuales (X, Y y Z), lo que permite procesar los componentes de velocidad por separado.
- Símbolo constante (x2): Define identificadores o identificadores fijos para controlar aspectos específicos de la simulación o el robot.
- Controlador diferencial: Simula la lógica de control de un robot de accionamiento diferencial al mapear las velocidades lineales y angulares con las velocidades de rueda apropiadas.
- Crear matriz: combina varios valores en un formato de matriz, que se suele utilizar para enviar un conjunto estructurado de comandos a otro nodo.
- Controlador de articulación: Envía los comandos de control finales a las articulaciones o ruedas del robot, lo que permite el movimiento dentro de la simulación.
Después de agregar todos los nodos, conéctelos como se muestra en el diagrama proporcionado. Estas conexiones definen el flujo de datos y la lógica necesarios para Isaac Sim. Permiten a Isaac Sim interpretar y ejecutar los comandos recibidos de ROS 2. Esto controla eficazmente el robot en la simulación.

Debe asegurarse de que el «Símbolo constante» los nodos se configuran con los nombres de las ruedas del robot. Un nodo debe configurarse en «articulación_rueda_izquierda» y el otro para «Wheel_right_joint». Estos valores se pueden encontrar haciendo clic en el Prim de la TurtleBot3_Hamburguesa en el escenario, y luego navegando por su jerarquía para localizar las juntas de las ruedas del robot. Este paso es crucial para asignar correctamente los comandos de control a las ruedas del robot, tal y como se muestra en la imagen adjunta.

Además, es necesario configurar el «Crear matriz» nodo añadiendo otra entrada en su configuración. Esto le permitirá conectar ambos «Símbolo constante» nodos a sus entradas. Además, el «Controlador de articulación» el nodo también debe estar configurado. En su configuración, asigne el Target Prim, que especifica el robot que se controlará. El Target Prim debe configurarse en la ruta correspondiente a TurtleBot3_Hamburguesa

Asegúrese de que el nodo «Controlador diferencial» esté configurado con los siguientes parámetros en sus ajustes de entrada:

Con todo configurado, ahora puede hacer clic «Jugar» para iniciar la escena. El siguiente paso es abrir una nueva terminal y acceder al mismo contenedor Docker mediante el siguiente comando: docker exec -it isaac-sim bash
Una vez dentro del shell Bash del contenedor, ejecuta el siguiente comando para verificar que se pueda acceder a los nodos ROS 2: lista de temas de ros2
Este comando enumera todos los temas activos de ROS 2 disponibles en el entorno actual. Debería ver el siguiente resultado:
/cmd_vel
/parameter_events
/rosout
- /cmd_vel: Este es el tema donde se publican los comandos de velocidad (lineal y angular). Controla el movimiento del robot, específicamente del TurtleBot3_burger en este caso.
- /parameter_events: Este tema proporciona información sobre los cambios de parámetros en los nodos ROS 2, como las actualizaciones de los valores de configuración.
- /rosout: Este es un tema de registro que recopila los mensajes de salida de todos los nodos ROS 2 activos, lo que resulta útil para la depuración y la supervisión.
Uso de teleop_twist_keyboard para controlar el robot
El teleop_twist_keyboard El comando es un nodo ROS 2 que permite controlar un robot publicando comandos de velocidad basados en las entradas del teclado. Este nodo lee las pulsaciones de teclas del teclado y las envía al robot en forma de mensajes Twist o TwistStamped a través del tema /cmd_vel. Es una forma intuitiva de controlar manualmente el robot, lo que la hace ideal para probar y depurar la funcionalidad de movimiento en una simulación.
Para lanzar el nodo, utilice el siguiente comando:
ros2 ejecuta teleop_twist_keyboard teleop_twist_keyboard
Este nodo funciona mejor con una distribución de teclado estadounidense. A continuación se explican los controles y la función de cada tecla:
Controles de teclado para movimiento
Comandos de movimiento básicos
El robot puede moverse en 8 direcciones y detenerse, según las siguientes teclas:
- i: Avanza.
- j: Gire a la izquierda mientras avanza o retrocede.
- l: Gire a la derecha mientras avanza o retrocede.
- u: Avanzar y ligeramente a la izquierda.
- o: Muévete hacia adelante y ligeramente a la derecha.
- m: Muévete hacia atrás y ligeramente hacia la izquierda.
- ,: Muévete hacia atrás.
- .: Muévete hacia atrás y ligeramente hacia la derecha.
- k: Detenga el robot.
Ajuste de velocidad
Para ajustar la velocidad del robot de forma dinámica:
- q/z: Aumente o disminuya las velocidades lineales y angulares en un 10%.
- w/x: Aumentar/disminuir solo la velocidad lineal en un 10%.
- e/c: Aumentar/disminuir solo la velocidad angular en un 10%.
Control de una carretilla elevadora de cuatro ruedas con dirección Ackermann
Ahora, procedamos con un segundo ejemplo, en el que controlaremos un robot con cuatro ruedas en lugar de dos, como en el ejemplo anterior de robot diferencial. En este caso, ya no será posible utilizar el Controlador diferencial nodo. En su lugar, utilizaremos un nodo llamado Controlador Ackermann. Este nodo controla los vehículos que utilizan la geometría de dirección de Ackermann, que se ve comúnmente en automóviles y montacargas. Calcula los ángulos de dirección y las velocidades de las ruedas adecuados para lograr un movimiento suave y preciso basándose en las entradas de velocidad lineal y angular.
Para este ejemplo, navegue hasta Activos de Isaac sección y busca una escena llamada almacén_con_montacargas. Haz doble clic en él para cargar la escena. La dirección y el movimiento de la carretilla elevadora requieren una lógica más compleja que la de un robot de tracción diferencial de dos ruedas, lo que demuestra la versatilidad de Isaac Sim a la hora de manejar diferentes sistemas robóticos.

Con la escena cargada, desactivaremos la carretilla elevadora ubicada en el centro del almacén para dejar espacio para otra carretilla elevadora que importaremos. Esto garantiza que haya suficiente espacio en el entorno para trabajar con la nueva carretilla elevadora y evitar cualquier interferencia con el modelo existente durante la simulación.

Para importar la carretilla elevadora que controlaremos, vuelva a Activos de Isaac y busca carretilla elevadora_c. Arrastre y suelte este activo en el entorno del almacén y colóquelo en la ubicación deseada dentro del depósito.

Con la escena lista, crea una nueva Gráfico de acción e importe los siguientes nodos:
Marque al reproducir, Nodo de odometría Isaac Compute, ROS2 Suscríbete a Twist, Escalar hacia/desde unidades de escenario, dos Break 3-Vector, Controlador Ackermann, dos Crear matriz, y dos Controlador de articulación.
Explicación de los nodos clave:
- Nodo de odometría Isaac Compute:
Este nodo calcula la odometría del robot en función de sus movimientos en la simulación. Calcula la posición y la orientación del robot en el mundo a lo largo del tiempo. Esta información se puede utilizar para la navegación, la cartografía y otras tareas del ROS 2. Por lo general, estos datos se publican sobre temas como/odom, proporcionando información a los nodos ROS 2 sobre el estado actual del robot. - Controlador Ackermann:
Este nodo gestiona la lógica de control de los vehículos con la geometría de dirección de Ackermann, como automóviles o montacargas. Traduce las entradas de velocidad lineal y angular en ángulos de dirección y velocidades de rueda adecuados, lo que garantiza un movimiento suave y preciso. El nodo tiene en cuenta las restricciones físicas del vehículo, como el radio de giro, para simular movimientos realistas. Esto es particularmente importante para los robots con mecanismos de dirección más complejos que los sistemas de transmisión diferencial simples.

- Asegúrese de que el Nodo de odometría Isaac Compute está configurado con el correcto Chasis Prim camino.

- También debe configurar los parámetros del Controlador Ackermann nodo como se muestra en la imagen proporcionada.

Por último, debe configurar el Controlador de articulación nodos configurando el Nombres de las articulaciones para las ruedas responsables de la dirección y las ruedas responsables de la tracción. Asigne los nombres de junta apropiados a cada grupo de ruedas en función de la estructura de la carretilla elevadora.


- Con el Gráfico de acción totalmente configurado, el último paso es hacer clic Juega para iniciar la escena. Una vez ejecutada la simulación, siga los pasos descritos en el Uso
teleop_twist_keyboardpara controlar el robot sección. Esto le permitirá utilizar los comandos del teclado para enviar datos de velocidad a la carretilla elevadora. Puede controlar su movimiento y dirección dentro de la simulación del almacén. Esto demuestra la exitosa integración de Isaac Sim con ROS 2. Permite controlar un robot de cuatro ruedas con un mecanismo de dirección más complejo.
Conclusión
Este blog ofrece una descripción general completa de los conceptos de ROS, los flujos de trabajo y su integración con NVIDIA Isaac Sim. Juntos, mejoran las aplicaciones robóticas. Al combinar el diseño modular de ROS con las capacidades avanzadas de simulación de Isaac Sim, los desarrolladores pueden crear y probar sistemas robóticos de manera más eficaz. Estas herramientas permiten la optimización de varios flujos de trabajo, ya sea para un sistema de montacargas o para tareas industriales más complejas. Allanan el camino para la innovación y la eficiencia en el desarrollo de la robótica.





