Uso de la cámara Microsoft Kinect 360 en ROS Indigo

Buenas tardes, querido habratchiteli!

Observaciones recientes y experiencia personal han demostrado que conectar una cámara Microsoft Kinect Xbox 360 para usar en ROS Indigo desde Ubuntu 14.04 a menudo causa problemas. En particular, al iniciar el paquete openni_launch ROS, el dispositivo no se puede detectar y se genera un error "No hay dispositivo conectado". En este artículo, describiré mi método paso a paso para configurar el entorno para usar Microsoft Kinect de ROS Indigo. ¿Quién está interesado, por favor, debajo del corte!

Cámara Microsoft Kinect


Este sensor ya estaba escrito en detalle en el artículo . En pocas palabras, Microsoft Kinect es una cámara 3D (RGB-D, es decir, roja, verde, azul y profundidad), basada en tecnología de luz estructurada, que le permite obtener un mapa de profundidad de las superficies de los objetos que caen en el campo de visión de la cámara. El mapa de profundidad se puede transformar en una "nube" tridimensional de puntos, en el que cada punto tiene las coordenadas exactas X, Y y Z en el espacio y, en algunos casos, el color en formato RGB. Las "nubes" de puntos se utilizan en la reconstrucción de objetos, la construcción de mapas de terreno en robótica de servicio, reconocimiento de objetos y muchas otras tareas en el campo de la visión por computadora en 3D.

imagen

ROS proporciona soporte para el sensor Kinect. La "nube" de puntos recibidos por el sensor se puede visualizar visualmente en el programa rviz.

imagen

ROS tiene paquetes especiales openni_launch y openni_camera para usar el sensor Kinect.

Instalación del controlador para el sensor Kinect de Microsoft


Primero debe instalar la biblioteca OpenNI, destinada a varios sensores RGB-D (Kinect, ASUS Xtion, PrimeSense).
Instale algunos paquetes adicionales que OpenNI requiere 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

Ahora instale directamente OpenNI 1.5.4 desde las fuentes:

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

Ahora descargue la biblioteca avin-KinectSensor para el sensor Kinect desde aquí .

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

Dependiendo del tipo de sistema (32 o 64 bits), seleccione el instalador apropiado. Para un sistema de 32 bits, realice los siguientes pasos:

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

Para un sistema de 64 bits, haremos:

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

Finalmente, complete la instalación:

sudo ./install.sh


Instalar paquetes openni_ *


Lo último que debemos hacer es instalar los paquetes openni_launch y openni_camera , que le permiten recibir y trabajar con datos de cámaras de profundidad compatibles con OpenNI en ROS. Instalar estos paquetes es muy simple:

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


Verificación de la instalación del controlador


¡Ahora todo está listo! Verifique el éxito de la instalación. Ejecutar en diferentes terminales:

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

Establecer el argumento depth_registration: = true indica que queremos habilitar el registro OpenNI y recibir datos XYZRGB de la cámara (profundidad y color).

Primero, en rviz, expanda la sección Opciones globales en la columna de pantallas izquierda y establezca el valor / camera_link para el campo Marco fijo como en la imagen:

imagen

Por lo tanto, configuramos el sistema de coordenadas necesario para la visualización correcta de los datos de la cámara Kinect.
En rviz creamos una nueva pantalla. Para hacer esto, haga clic en el botón Agregar y seleccione el tipo de pantalla PointCloud2 como en la imagen:

imagen

Seleccione el tema / cámara / profundidad_registrada / puntos para la nueva pantalla.

imagen

Después de eso, seleccione el valor "RGB8" para el campo Transformador de color.
Ahora veremos una imagen similar:

imagen

Un valor de "RGB8" le permite mostrar una "nube de puntos" de color, donde cada punto tiene coordenadas X, Y, Z y color RGB.

Quiero llamar su atención sobre el hecho de que Microsoft Kinect Xbox 360 solo funciona con USB 2.0. Conectar la cámara a través de USB 3.0 puede provocar un error de detección del dispositivo, del que hablé al principio del artículo.

El portal oficial de ROS tiene tutoriales sobre cómo trabajar con datos de cámara RGB-D utilizando la biblioteca de nubes de puntos . Estos tutoriales proporcionan toda la información que necesita para comenzar con las nubes de puntos.

¡Le deseo buena suerte al usar cámaras RGBD en ROS para resolver sus problemas de visión por computadora!

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


All Articles