Pular para o conteúdo principal

Crie uma Demonstração de Visão Surround com Quatro Câmeras Olho de Peixe no Jetson AGX Thor

Introdução

Esta demonstração executa um pipeline de visão surround com quatro câmeras olho de peixe no NVIDIA Jetson AGX Thor. Quatro câmeras ao redor do chassi são calibradas e fundidas em uma visão de cima (BEV) em tempo real. A ocupação indica o movimento do chassi, o YOLO-World localiza alvos de preensão e um VLM gera legendas da cena.

Layout BEV após a fusão:

  • Parte superior da imagem = frente do veículo
  • Centro da imagem = corpo do veículo
  • As câmeras apontam para frente, trás, esquerda e direita
nota

YOLO responde onde está o alvo. O VLM responde como é a cena. A ocupação é uma indicação 2D no solo, não um mapa de LiDAR.

Esta demonstração foi verificada no reComputer Robotics J601.

reComputer Robotics J601 Sensing SG3S-ISX031C-GMSL2F

Principais Recursos

  • Fusão na GPU com CUDA OpenCV
  • Calibração via web para intrínsecos, extrínsecos e emendas
  • Ocupação, YOLO-World e VLM em um único BEV compartilhado
  • Verificado em Jetson AGX Thor / reComputer Robotics J601

Pré-requisitos

Hardware

  • reComputer Robotics J601 (Jetson AGX Thor)
  • Quatro câmeras olho de peixe GMSL2 Sensing SG3S-ISX031C-GMSL2F
  • Um cabo Mini-Fakra 4 em 1 para que todas as quatro câmeras compartilhem uma única porta GMSL
  • Um monitor ou uma sessão de área de trabalho remota
  • Acesso à rede se você abrir a página de calibração a partir de outro computador

Opcional:

  • Um chassi móvel, se você quiser usar a ocupação para assistência de movimento
  • Um braço robótico, se você quiser usar as posições de alvo do YOLO para assistência de preensão

Software

  • JetPack com suporte a driver GMSL para o J601
  • OpenCV com CUDA habilitado para fusão em tempo real
  • Ambiente Python para a interface web de calibração
  • Dependências do YOLO-World e do modelo VLM opcional

Conexão de Hardware

Conecte quatro câmeras olho de peixe Sensing GMSL2 a uma porta Mini-Fakra GMSL no reComputer Robotics J601 antes da calibração. O J601 possui dois conectores Mini-Fakra (até oito câmeras GMSL2). Esta demonstração usa uma porta GMSL e um cabo Mini-Fakra 4 em 1.

  1. Alimente a placa J601 pela entrada DC XT30.
  2. Se estiver usando a placa de expansão GMSL, encaixe-a primeiro no conector de expansão de câmera.
  3. Conecte o cabo Mini-Fakra 4 em 1 em uma porta Mini-Fakra GMSL.
  4. Conecte as quatro câmeras olho de peixe Sensing às quatro pontas Fakra desse cabo.
  5. Monte as câmeras ao redor do chassi de forma que apontem para frente, trás, esquerda e direita.
  6. Opcionalmente conecte um monitor HDMI se quiser assistir à janela BEV ao vivo na placa.

Para inicialização do GMSL no J601, consulte Robotics J601 Hardware Interfaces Usage.

dica

Depois que as câmeras estiverem conectadas, confirme os nós /dev/video* e o mapeamento em config/camera_profile.json. Consulte Step 1. Check Camera Mapping.

Instalação e Configuração

Etapa 1. Clonar o Repositório

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

Etapa 2. Compilar o CUDA OpenCV

Antes de executar a demonstração de visão surround ao vivo, certifique-se de que o OpenCV com CUDA habilitado esteja disponível.

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())"

Se a configuração estiver correta, a contagem de dispositivos CUDA deve ser 1.

Etapa 3. Instalar Dependências da Calibração Web

A interface web de calibração depende de aiortc e pacotes Python relacionados.

./scripts/install_web_deps.sh
dica

No Ubuntu 24.04, não execute um simples pip3 install -r requirements.txt no Python do sistema. Este projeto mantém o ambiente de fusão separado do ambiente de modelos de percepção.

Etapa 4. Instalar Dependências de Percepção

Para habilitar a assistência de preensão com YOLO-World e o entendimento de cena com VLM, execute:

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

Isso prepara o ambiente de percepção e baixa os arquivos de modelo necessários.

Como Usar

Calibre primeiro as quatro câmeras e depois inicie a demonstração de visão surround ao vivo. Não execute ambos ao mesmo tempo; eles precisam de acesso exclusivo às câmeras.

Etapa 1. Verificar o Mapeamento das Câmeras

O mapeamento dos dispositivos de câmera é definido em:

config/camera_profile.json

Mapeamento típico no repositório:

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

Confirme esses nós de dispositivo antes da calibração. Depois que a demonstração estiver em execução, você pode conferir novamente cobrindo a câmera frontal: a parte superior da imagem BEV deve escurecer. Se frente e trás estiverem trocadas, altere o mapeamento de dispositivos no arquivo de configuração. Não edite os arquivos de resultado da calibração para isso.

Etapa 2. Abrir a Interface Web de Calibração

Inicie o serviço de calibração:

./calib.sh

Em seguida, abra a página de calibração no seu navegador:

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

A interface de calibração é usada para:

  • calibração intrínseca
  • alinhamento extrínseco
  • refinamento de emendas

Para o refinamento de emendas, siga o pareamento do repositório:

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

Coloque o tabuleiro de xadrez na região de sobreposição entre as duas visões de câmera. Quando ambas as visões detectarem o tabuleiro e mostrarem status pronto, o sistema poderá refinar aquela emenda.

Etapa 3. Executar a Demonstração

Após a conclusão da calibração, inicie a demonstração de visão surround:

./run.sh

Isso inicia o pipeline BEV ao vivo: fusão, ocupação, assistência de preensão com YOLO e legendagem de cena opcional com VLM.

Você também pode iniciar o lançador de percepção diretamente:

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

Modos Comuns

ObjetivoComando
Assistência ao movimento do chassi./scripts/run_perception.sh --vlm off --mode nav --range 2.5
Assistência de preensão com braço robótico./scripts/run_perception.sh --mode grasp --target bottle
Execução sem interface gráfica (headless)./scripts/run_perception.sh --no-window
Teste rápido offline/usr/bin/python3 -m perception.smoke_offline
  • --mode nav foca na ocupação ao redor do chassi
  • --mode grasp --target bottle faz o YOLO procurar um alvo de preensão
  • --vlm off ignora a legendagem de cena quando você só precisa de posicionamento ou detecção

Resultado da Demonstração e Controles

Quando a janela da demonstração estiver em execução, estes atalhos de teclado estarão disponíveis:

TeclaAção
ESC ou qSair
oExecutar YOLO-World uma vez para assistência de preensão
aDisparar uma legenda de VLM para entendimento da cena
sSalvar um quadro
mAlternar o mapa de ocupação

Durante a execução, a demonstração também pode gravar:

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

Esses arquivos são úteis para depuração, validação e integração posterior.

Convenção de Coordenadas

O projeto usa esta convenção de BEV:

ItemSignificado
Parte superior da imagemFrente do veículo
Origem de base_linkAproximadamente o centro do BEV
+XPara frente
+YEsquerda

O YOLO pode, portanto, relatar posições-alvo 2D aproximadas, como direção, distância à frente e deslocamento lateral, para auxiliar a preensão.

O resultado ainda é uma aproximação no plano do solo. Não é uma pose de preensão com 6 DoF e não deve ser tratada como verdade de base para manipulação precisa.

Observações e Limitações

  • Esta demonstração fornece assistência de percepção. Ela não envia comandos de controle para o chassi ou para o braço
  • O YOLO localiza alvos para auxiliar a preensão; ele não fecha o loop de preensão por conta própria
  • A saída do VLM é para entendimento de cena, não para coordenadas
  • A ocupação é uma indicação 2D no solo, não um mapa de SLAM com LiDAR
  • A fusão em tempo real é destinada ao Jetson AGX Thor com CUDA habilitado
  • O modo apenas CPU é útil para depuração, mas não é recomendado para implantação ao vivo

Recursos

Suporte técnico e discussão sobre o produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...