Implantar Depth Anything V3 no Jetson AGX Orin

Introdução
Depth Anything V3 é um modelo de estimação de profundidade monocular de última geração que revoluciona a percepção 3D ao gerar mapas de profundidade de alta qualidade a partir de imagens RGB únicas. Diferente dos métodos tradicionais de estimação de profundidade, que exigem hardware especializado ou múltiplas entradas de câmeras, o Depth Anything V3 aproveita técnicas avançadas de deep learning para prever informações de profundidade precisas usando apenas imagens 2D padrão. Isso o torna particularmente valioso para aplicações de Edge AI, em que restrições de hardware e eficiência computacional são considerações críticas. Este wiki irá guiá-lo na implantação do Depth Anything V3 no Jetson AGX Orin com integração ROS2 para aplicações robóticas em tempo real.

Pré-requisitos
- reComputer Mini J501 Carrier Board (Jetson AGX Orin) com JetPack 6.2
- Câmera USB
- Ambiente ROS2 Humble instalado

Destaques Técnicos
-
Estimação de Profundidade Monocular de Alta Qualidade: Depth Anything V3 gera mapas de profundidade precisos a partir de imagens RGB únicas, sem exigir sensores de profundidade especializados ou configurações de câmeras estéreo.
-
Otimizado para Implantação em Borda: O modelo é projetado especificamente para inferência eficiente em dispositivos de borda como o Jetson AGX Orin, com otimização TensorRT para desempenho máximo.
-
Processamento em Tempo Real: Capaz de processar imagens de alta resolução em tempo real, tornando-o adequado para navegação autônoma, desvio de obstáculos e tarefas de manipulação robótica.
-
Integração com ROS2: Fornece suporte nativo ao ROS2 Humble com publicação de mapas de profundidade e nuvens de pontos, permitindo integração transparente em sistemas robóticos.
-
Suporte Flexível de Entrada: Funciona com várias fontes de entrada, incluindo câmeras USB, tópicos de imagem ROS e fluxos de vídeo pré-gravados.
Configuração do Ambiente
Passo 1. Instalar Dependências
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
libopencv-dev \
python3-pip \
python3-colcon-common-extensions \
v4l-utils
Passo 2. Instalar Dependências Python
pip3 install numpy opencv-python
Passo 3. Configurar Variáveis de Ambiente do CUDA
# Add CUDA environment variables to .bashrc
echo '
# CUDA Environment
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export CUDACXX=$CUDA_HOME/bin/nvcc
' >> ~/.bashrc
# Reload shell configuration
source ~/.bashrc
# Verify CUDA installation
nvcc --version

Passo 4. Instalar Pacote ROS2 da Câmera USB
# Install USB camera driver for ROS2
sudo apt install -y ros-humble-usb-cam
# Install additional ROS2 dependencies
sudo apt install -y ros-humble-cv-bridge
sudo apt install -y ros-humble-image-transport
sudo apt install -y ros-humble-image-geometry
sudo apt install -y ros-humble-cv-bridge ros-humble-image-transport ros-humble-rviz2
Passo 5. Configurar Ambiente ROS2 do Depth Anything V3
# Clone the repository
git clone https://github.com/zibochen6/ros2-depth-anything-v3-trt.git
# Navigate to the project directory
cd ros2-depth-anything-v3-trt
Passo 6. Compilar o Pacote ROS2
# Build the depth_anything_v3 package with Release configuration
colcon build --packages-select depth_anything_v3 --cmake-args -DCMAKE_BUILD_TYPE=Release
# Source the workspace
source install/setup.bash
Passo 7. Gerar Engines TensorRT
Antes de gerar o arquivo de engine, você precisa baixar antecipadamente o modelo .onnx do Depth Anything V3 e colocá-lo no diretório ros2-depth-anything-v3-trt/onnx.
# Make the engine generation script executable
chmod +x generate_engines.sh
# Generate TensorRT engines from ONNX models
./generate_engines.sh onnx
Por favor, seja paciente enquanto o arquivo .engine está sendo gerado. Quando a conversão for concluída, dois arquivos serão criados no diretório onnx, conforme mostrado a seguir.

Executando Estimação de Profundidade
Câmera para Estimação de Profundidade
Passo 1. Conectar Câmera USB
Conecte sua câmera USB ao dispositivo Jetson AGX Orin. Verifique se a câmera foi detectada:
# Check if USB camera is detected
ls /dev/video*
Saída Esperada:
/dev/video0 /dev/video1
Passo 2. Calibração da câmera
O pacote v4l2_camera atua como uma ponte entre a API Linux Video4Linux2 (V4L2) e os tópicos ROS 2, publicando mensagens de imagem e informações da câmera que podem ser facilmente usadas em pipelines de calibração.
Instalar Pacote de Calibração de Câmera:
# Install Camera Calibration Package
sudo apt install ros-humble-camera-calibration
# v4l2_camera is the official ROS2 maintained node that can directly publish USB camera images
sudo apt install ros-${ROS_DISTRO}-v4l2-camera
iniciar nó da câmera:
# Launch camera node
ros2 run v4l2_camera v4l2_camera_node \
--ros-args \
-p image_size:=[640,480] \
-p pixel_format:=YUYV
Os tópicos publicados por padrão são:
/image_raw- Imagem bruta da câmera/camera- Informações da câmera

Execute a calibração da câmera:
# In another terminal
ros2 run camera_calibration cameracalibrator \
--size 8x6 \
--square 0.025 \
--fisheye-recompute-extrinsicsts \
--fisheye-fix-skew \
--ros-args --remap image:=/image_raw --remap camera:=/v4l2_camera
--size 8x6refere-se ao número de cantos internos (8×6 = 48 cantos para uma grade 9×7)--square 0.025refere-se ao tamanho do quadrado em metros (25mm)- Mova a câmera para capturar imagens de diferentes ângulos até que o botão
CALIBRATEacenda

Após a calibração bem-sucedida, você obterá parâmetros da câmera no terminal semelhantes a:

Você pode consultar este wiki para calibração da câmera.
Escreva os parâmetros calibrados no arquivo camera_info_example.yaml
Passo 3. Iniciar Nó de Câmera USB
Salve os parâmetros de calibração no arquivo camera_info_example.yaml para corrigir a distorção olho de peixe da câmera GMSL. Em seguida, execute o seguinte comando para estimação de profundidade em tempo real:
#Start the script for camera depth estimation
CAMERA_INFO_FILE=camera_info_example.yaml ENABLE_UNDISTORTION=1 ./run_camera_depth.sh
Vídeo para Estimação de Profundidade
Passo 1. Preparar Arquivo de Vídeo
Prepare um arquivo de vídeo para estimação de profundidade.
Passo 2. Iniciar Nó de Estimação de Profundidade em Vídeo
#Start the script for video depth estimation
./run_video_depth.sh

Referências
- Repositório Depth Anything V3 no GitHub
- Repositório ROS2 Depth Anything V3 TRT
- Documentação do TensorRT
- Documentação do ROS2 Humble
Suporte Técnico & Discussão sobre Produtos
Obrigado por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes formas de suporte e 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.