Saltar al contenido principal

Crea una demo de vista envolvente con ojo de pez y cuatro cámaras en Jetson AGX Thor

Introducción

Esta demo ejecuta una canalización de vista envolvente con ojo de pez y cuatro cámaras en NVIDIA Jetson AGX Thor. Se calibran cuatro cámaras alrededor del chasis y se unen en una vista cenital (BEV) en tiempo real. La ocupación insinúa el movimiento del chasis, YOLO-World localiza objetivos de agarre y un VLM genera descripciones de la escena.

Distribución BEV después del cosido:

  • Parte superior de la imagen = parte delantera del vehículo
  • Centro de la imagen = carrocería del vehículo
  • Las cámaras miran hacia delante, atrás, izquierda y derecha
nota

YOLO responde dónde está el objetivo. El VLM responde cómo se ve la escena. La ocupación es una pista 2D en el suelo, no un mapa de LiDAR.

Esta demo está verificada en reComputer Robotics J601.

reComputer Robotics J601 Sensing SG3S-ISX031C-GMSL2F

Características clave

  • Cosido en GPU con CUDA OpenCV
  • Calibración web para intrínsecos, extrínsecos y uniones
  • Ocupación, YOLO-World y VLM sobre un mismo BEV compartido
  • Verificado en Jetson AGX Thor / reComputer Robotics J601

Requisitos previos

Hardware

  • reComputer Robotics J601 (Jetson AGX Thor)
  • Cuatro cámaras ojo de pez GMSL2 Sensing SG3S-ISX031C-GMSL2F
  • Un cable Mini-Fakra 4 en 1 para que las cuatro cámaras compartan un único puerto GMSL
  • Una pantalla o una sesión de escritorio remoto
  • Acceso a red si abres la página de calibración desde otro ordenador

Opcional:

  • Un chasis móvil, si quieres usar la ocupación para asistencia al movimiento
  • Un brazo robótico, si quieres usar las posiciones objetivo de YOLO para asistencia al agarre

Software

  • JetPack con soporte de controlador GMSL para J601
  • OpenCV con CUDA habilitado para cosido en tiempo real
  • Entorno de Python para la interfaz web de calibración
  • Dependencias de YOLO-World y del modelo VLM opcional

Conexión de hardware

Conecta cuatro cámaras ojo de pez Sensing GMSL2 a un puerto GMSL Mini-Fakra en reComputer Robotics J601 antes de la calibración. J601 tiene dos conectores Mini-Fakra (hasta ocho cámaras GMSL2). Esta demo usa un puerto GMSL y un cable Mini-Fakra 4 en 1.

  1. Alimenta la placa J601 a través de la entrada de CC XT30.
  2. Si estás usando la placa de expansión GMSL, colócala primero en el conector de expansión de cámara.
  3. Conecta el cable Mini-Fakra 4 en 1 a un puerto GMSL Mini-Fakra.
  4. Conecta las cuatro cámaras ojo de pez Sensing a los cuatro extremos Fakra de ese cable.
  5. Monta las cámaras alrededor del chasis de forma que miren hacia delante, atrás, izquierda y derecha.
  6. Opcionalmente conecta una pantalla HDMI si quieres ver la ventana BEV en vivo en la placa.

Para la puesta en marcha de GMSL en J601, consulta Uso de interfaces de hardware de Robotics J601.

tip

Después de conectar las cámaras, confirma los nodos /dev/video* y la asignación en config/camera_profile.json. Consulta Paso 1. Comprobar la asignación de cámaras.

Instalación y configuración

Paso 1. Clonar el repositorio

git clone https://github.com/xbs0325/j601-surround-demo.git
cd j601-surround-demo

Paso 2. Compilar CUDA OpenCV

Antes de ejecutar la demo de vista envolvente en vivo, asegúrate de que OpenCV con CUDA habilitado esté disponible.

cd ~/j601-surround-demo
./scripts/build_opencv_cuda.sh --jobs $(nproc)
source scripts/env_opencv_cuda.sh
python3 -c "import cv2; print(cv2.__version__, cv2.cuda.getCudaEnabledDeviceCount())"

Si la configuración es correcta, el recuento de dispositivos CUDA debería ser 1.

Paso 3. Instalar dependencias de la calibración web

La interfaz web de calibración depende de aiortc y paquetes relacionados de Python.

./scripts/install_web_deps.sh
tip

En Ubuntu 24.04, no ejecutes un simple pip3 install -r requirements.txt en el Python del sistema. Este proyecto mantiene separado el entorno de cosido del entorno de modelos de percepción.

Paso 4. Instalar dependencias de percepción

Para habilitar la asistencia de agarre con YOLO-World y la comprensión de escena con VLM, ejecuta:

./scripts/setup_perception_thor.sh
./scripts/download_perception_models.sh

Esto prepara el entorno de percepción y descarga los archivos de modelo necesarios.

Cómo usarlo

Calibra primero las cuatro cámaras y luego inicia la demo de vista envolvente en vivo. No ejecutes ambos al mismo tiempo; necesitan acceso exclusivo a las cámaras.

Paso 1. Comprobar la asignación de cámaras

La asignación de dispositivos de cámara se define en:

config/camera_profile.json

Asignación típica en el repositorio:

  • front: /dev/video0
  • back: /dev/video2
  • left: /dev/video3
  • right: /dev/video1

Confirma estos nodos de dispositivo antes de la calibración. Una vez que la demo esté en ejecución, puedes volver a comprobarlo cubriendo la cámara frontal: la parte superior de la imagen BEV debería oscurecerse. Si frontal y trasera están intercambiadas, cambia la asignación de dispositivos en el archivo de configuración. No edites los archivos de resultados de calibración para esto.

Paso 2. Abrir la interfaz web de calibración

Inicia el servicio de calibración:

./calib.sh

Luego abre la página de calibración en tu navegador:

http://<board-ip>:8787/

La interfaz de calibración se usa para:

  • calibración intrínseca
  • alineación extrínseca
  • refinamiento de uniones

Para el refinamiento de uniones, sigue el emparejamiento del repositorio:

  • front + left
  • front + right
  • back + left
  • back + right

Coloca el tablero de ajedrez en la zona de solapamiento entre las dos vistas de cámara. Cuando ambas vistas detecten el tablero y muestren estado listo, el sistema puede refinar esa unión.

Paso 3. Ejecutar la demo

Cuando la calibración esté completa, inicia la demo de vista envolvente:

./run.sh

Esto lanza la canalización BEV en vivo: cosido, ocupación, asistencia de agarre con YOLO y generación opcional de descripciones de escena con VLM.

También puedes iniciar directamente el lanzador de percepción:

./scripts/run_perception.sh --vlm off --mode nav --range 2.5
./scripts/run_perception.sh --mode grasp --target bottle

Modos comunes

ObjetivoComando
Asistencia al movimiento del chasis./scripts/run_perception.sh --vlm off --mode nav --range 2.5
Asistencia de agarre con brazo robótico./scripts/run_perception.sh --mode grasp --target bottle
Ejecución sin pantalla (headless)./scripts/run_perception.sh --no-window
Prueba rápida sin conexión/usr/bin/python3 -m perception.smoke_offline
  • --mode nav se centra en la ocupación alrededor del chasis
  • --mode grasp --target bottle pide a YOLO que busque un objetivo de agarre
  • --vlm off omite la generación de descripciones de escena cuando solo necesitas posicionamiento o detección

Resultado de la demo y controles

Cuando la ventana de la demo esté en ejecución, estarán disponibles estos atajos de teclado:

TeclaAcción
ESC o qSalir
oEjecutar YOLO-World una vez para asistencia de agarre
aDisparar una descripción VLM para comprensión de la escena
sGuardar un fotograma
mConmutar el mapa de ocupación

Durante la ejecución, la demo también puede escribir:

  • output/perception/preview.jpg
  • events.jsonl

Estos archivos son útiles para depuración, validación e integración posterior.

Convención de coordenadas

El proyecto usa esta convención BEV:

ElementoSignificado
Parte superior de la imagenParte delantera del vehículo
Origen de base_linkAproximadamente el centro del BEV
+XHacia delante
+YIzquierda

Por lo tanto, YOLO puede informar posiciones objetivo 2D aproximadas, como dirección, distancia hacia delante y desplazamiento lateral, para ayudar al agarre.

El resultado sigue siendo una aproximación en el plano del suelo. No es una pose de agarre de 6 GDL y no debe tratarse como verdad de referencia precisa para manipulación.

Notas y limitaciones

  • Esta demo proporciona asistencia de percepción. No envía comandos de control al chasis ni al brazo
  • YOLO localiza objetivos para ayudar al agarre; no cierra por sí mismo el bucle de agarre
  • La salida del VLM es para comprensión de la escena, no para coordenadas
  • La ocupación es una pista 2D en el suelo, no un mapa de SLAM con LiDAR
  • El cosido en tiempo real está pensado para Jetson AGX Thor con CUDA habilitado
  • El modo solo CPU es útil para depuración, pero no se recomienda para despliegue en vivo

Recursos

Soporte técnico y debate sobre el producto

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a distintas preferencias y necesidades.

Loading Comments...