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. O ROS fornece suporte para o sensor Kinect. A “nuvem” de pontos recebidos pelo sensor pode ser visualmente exibida no programa rviz.
O ROS fornece suporte para o sensor Kinect. A “nuvem” de pontos recebidos pelo sensor pode ser visualmente exibida no programa rviz. O ROS possui pacotes especiais openni_launch e openni_camera para usar o sensor Kinect.
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: 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:
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: Selecione o tópico / camera / depth_registered / points para a nova tela e
Selecione o tópico / camera / depth_registered / points para a nova tela e depois selecione o valor “RGB8” para o campo Color Transformer.Agora vamos ver uma imagem semelhante:
depois selecione o valor “RGB8” para o campo Color Transformer.Agora vamos ver uma imagem semelhante: 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!
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!