Segmentação 3D com RealSense

Visão geral do dispositivo
RealSense D405

A câmera de profundidade RealSense D405 é uma câmera estéreo de curto alcance projetada para tarefas de visão computacional em close-up com precisão submilimétrica. Seu alcance operacional ideal é de 7 cm a 50 cm. Ela possui sensores de obturador global de alta resolução e utiliza um processador de sinal de imagem (ISP) para gerar dados RGB alinhados sem exigir um sensor RGB dedicado. Esta câmera compacta é otimizada para robótica de precisão, imagens médicas e cenários de inspeção automatizada.
RealSense D435i

A câmera de profundidade RealSense D435i é uma câmera estéreo que combina percepção de profundidade e rastreamento de movimento, projetada para aplicações de robótica, reconstrução 3D, SLAM e percepção automatizada. Ela utiliza tecnologia de profundidade estéreo ativa e oferece um amplo campo de visão, sensores de profundidade com obturador global, imagem em cores RGB e uma IMU integrada, permitindo saída sincronizada de dados de profundidade, cor e movimento. Esta câmera compacta é adequada para tarefas de visão computacional de curto a médio alcance, como desvio de obstáculos para robôs móveis, modelagem espacial, planejamento de trajetória e percepção do ambiente em tempo real.
Introdução
Esta demonstração é baseada em segmentação com OpenCV e usa uma câmera de profundidade para reconstrução de nuvem de pontos e detecção de objetos-alvo na nuvem de pontos reconstruída. Ela gera as seguintes informações:
- Categoria do objeto
- Coordenadas XYZ do centro do objeto
- Dimensões da caixa delimitadora
- Ângulo de guinada (yaw) da caixa delimitadora
Ela também oferece suporte à visualização por meio do Open3D. Esta solução é adequada para tarefas de percepção robótica, como preensão em mesa, localização de objetos e filtragem de poses de preensão candidatas, e pode fornecer informações geométricas 3D estáveis para o planejamento de preensão de braços robóticos e operações subsequentes.
Pré-requisitos
- RealSense D435i ou RealSense D405
Início rápido
1. Obter o código do projeto
Primeiro, clone o projeto localmente e entre no diretório do projeto:
git clone [email protected]:Miscanthus40076/TabletopSeg3D.git
cd TabletopSeg3D
Observação: Todos os comandos de instalação e execução abaixo são executados a partir do diretório raiz do projeto
TabletopSeg3Dpor padrão.
2. Ambiente virtual Python
Recomenda-se usar um ambiente virtual Python dedicado. A versão sugerida é Python 3.11.
Crie um ambiente com conda:
conda create -n tabletopseg3d python=3.11
conda activate tabletopseg3d
Crie um ambiente com venv:
python3.11 -m venv .venv
source .venv/bin/activate
3. Dependências do sistema
Antes de executar este projeto, seu sistema deve ter o Intel RealSense SDK / librealsense instalado para oferecer suporte à aquisição de dados e acesso ao driver da câmera de profundidade.
Observações:
- Se você só quiser ler o código, escrever documentação ou realizar análise estática, pode ignorar esta dependência por enquanto.
- Se você quiser conectar uma câmera de profundidade e realmente executar esta demonstração, esta dependência deve ser instalada com antecedência.
4. Instalar dependências Python
Este projeto fornece dois caminhos de instalação recomendados:
- Instalação padrão em CPU
- Instalação com aceleração por GPU
Você pode escolher a opção apropriada com base no seu hardware.
4.1 Instalação padrão em CPU
Execute o seguinte comando para instalar as dependências do projeto:
python -m pip install -r requirements.txt
4.2 Aceleração por GPU
Se o seu dispositivo tiver uma GPU NVIDIA e um ambiente CUDA configurado corretamente, você pode usar o caminho de instalação com GPU para melhorar o desempenho de inferência da segmentação YOLO.
Antes de continuar, certifique-se de que seu sistema atenda aos seguintes requisitos:
- O driver da GPU NVIDIA está instalado
- Um runtime CUDA compatível com o driver está instalado
- Você planeja instalar versões GPU de
torchetorchvisionque correspondam à sua versão do CUDA
Instale as versões GPU de torch e torchvision que correspondam à sua versão do CUDA:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cuXXX
Onde:
- Substitua
cuXXXpela tag real da versão do CUDA - Exemplos comuns incluem
cu121ecu124
5. Executar
5.1 Obter o número de série do dispositivo
python scripts/realtime_open3d_scene.py --list-devices
5.2 Iniciar o modo de visualização
Substitua o número de série pelo número de série real do seu dispositivo:
python scripts/realtime_open3d_scene.py \
--serial 419522072950 \
--device cpu \
--show-labels
5.3 Executar sem GUI
Se você não precisar da interface gráfica do Open3D e quiser obter diretamente resultados de detecção estruturados para cada quadro, pode executar em modo headless:
python scripts/realtime_open3d_scene.py \
--serial 419522072950 \
--device cpu \
--frames 10 \
--no-display
Neste modo, o programa gera dados JSON quadro a quadro, incluindo principalmente:
- Categoria do alvo
- Coordenadas 3D do centro do alvo
- Dimensões da caixa delimitadora do alvo
- Ângulo de guinada (yaw) da caixa delimitadora do alvo
5.4 Parâmetros recomendados para a D405
Para câmeras de profundidade de curto alcance, como a D405, geralmente é recomendável estreitar a faixa de profundidade válida para obter resultados de nuvem de pontos mais estáveis.
python scripts/realtime_open3d_scene.py \
--serial 409122273421 \
--device cpu \
--min-depth 0.02 \
--max-depth 0.50