Usando a câmera Microsoft Kinect 360 no ROS Indigo

Boa tarde, querido habratchiteli!

Observações recentes e experiência pessoal mostraram que conectar uma câmera Microsoft Kinect Xbox 360 para uso no ROS Indigo no Ubuntu 14.04 geralmente causa problemas. Em particular, ao iniciar o pacote ROS do openni_launch, o dispositivo não pode ser detectado e um erro "Nenhum dispositivo conectado" é gerado. Neste artigo, descreverei meu método passo a passo de configurar o ambiente para usar o Microsoft Kinect do ROS Indigo. Quem está interessado, por favor, sob o corte!

Câmera Microsoft Kinect


Este sensor já foi escrito em detalhes no artigo . Em poucas palavras, o Microsoft Kinect é uma câmera 3D (RGB-D, vermelha, verde, azul e profundidade), baseada na tecnologia de luz estruturada, que permite obter um mapa de profundidade das superfícies dos objetos que caem no campo de visão da câmera. O mapa de profundidade pode ser transformado em uma "nuvem" tridimensional de pontos, na qual cada ponto tem as coordenadas exatas X, Y e Z no espaço e, em alguns casos, a cor no formato RGB. "Nuvens" de pontos são usadas na reconstrução de objetos, na construção de mapas de terreno em robótica de serviço, reconhecimento de objetos e muitas outras tarefas no campo da visão computacional em 3D.

imagem

O ROS fornece suporte para o sensor Kinect. A “nuvem” de pontos recebidos pelo sensor pode ser visualmente exibida no programa rviz.

imagem

O ROS possui pacotes especiais openni_launch e openni_camera para usar o sensor Kinect.

Instalação do driver para o Microsoft Kinect Sensor


Primeiro, você precisa instalar a biblioteca OpenNI, destinada a vários sensores RGB-D (Kinect, ASUS Xtion, PrimeSense).
Instale alguns pacotes adicionais que o OpenNI requer para instalar:

sudo apt-get install git build-essential python libusb-1.0-0-dev freeglut3-dev openjdk-7-jdk
sudo apt-get install doxygen graphviz mono-complete

Agora instale diretamente o OpenNI 1.5.4 a partir das fontes:

git clone https://github.com/OpenNI/OpenNI.git
cd OpenNI
git checkout Unstable-1.5.4.0
cd Platform/Linux/CreateRedist
chmod +x RedistMaker
./RedistMaker

Agora baixe a biblioteca avin-KinectSensor para o sensor Kinect aqui .

unzip avin2-SensorKinect-v0.93-5.1.2.1-0-g15f1975.zip 
cd avin2-SensorKinect-15f1975/Bin

Dependendo do tipo de sistema (32 ou 64 bits), selecione o instalador apropriado. Para um sistema de 32 bits, execute as seguintes etapas:

tar -xjf SensorKinect093-Bin-Linux-x86-v5.1.2.1.tar.bz2
cd Sensor-Bin-Linux-x86-v5.1.2.1

Para um sistema de 64 bits, faremos:

tar -xjf SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2
cd Sensor-Bin-Linux-x64-v5.1.2.1

Por fim, conclua a instalação:

sudo ./install.sh


Instale pacotes openni_ *


A última coisa que precisamos fazer - é a instalação de pacotes openni_launch e openni_camera , que permite receber e trabalhar com câmeras de dados OpenNI compatíveis com profundidade de ROS. A instalação desses pacotes é muito simples:

sudo apt-get install ros-indigo-openni-camera ros-indigo-openni-launch


Verificando a instalação do driver


Agora está tudo pronto! Verifique o sucesso da instalação. Funcione em diferentes terminais:

roscore
roslaunch openni_launch openni.launch depth_registration:=true
rosrun rviz rviz

Definir o argumento depth_registration: = true indica que queremos ativar o registro OpenNI e receber dados XYZRGB da câmera (profundidade e cor).

Primeiro, no rviz, expanda a seção Opções globais na coluna esquerda Monitores e defina o valor / camera_link para o campo Quadro fixo como na figura:

imagem

Assim, configuramos o sistema de coordenadas necessário para a exibição correta dos dados da câmera Kinect.
No rviz, criamos uma nova exibição. Para fazer isso, clique no botão Adicionar e selecione o tipo de exibição PointCloud2 como na figura:

imagem

Selecione o tópico / camera / depth_registered / points para a nova tela e

imagem

depois selecione o valor “RGB8” para o campo Color Transformer.
Agora vamos ver uma imagem semelhante:

imagem

Um valor de "RGB8" permite exibir uma "nuvem de pontos" colorida, onde cada ponto tem coordenadas X, Y, Z e cor RGB.

Quero chamar sua atenção para o fato de o Microsoft Kinect Xbox 360 funcionar apenas com USB 2.0. Conectar a câmera via USB 3.0 pode levar a um erro de detecção de dispositivo, sobre o qual falei no início deste artigo.

O portal oficial do ROS possui tutoriais sobre como trabalhar com dados da câmera RGB-D usando a Point Cloud Library . Esses tutoriais fornecem todas as informações necessárias para começar com nuvens de pontos.

Desejo-lhe boa sorte no uso de câmeras RGBD em ROS para resolver seus problemas de visão por computador!

Source: https://habr.com/ru/post/pt396291/


All Articles