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.
ROS proporciona soporte para el sensor Kinect. La "nube" de puntos recibidos por el sensor se puede visualizar visualmente en el programa rviz.
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:
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:
Seleccione el tema / cámara / profundidad_registrada / puntos para la nueva pantalla.
Después de eso, seleccione el valor "RGB8" para el campo Transformador de color.Ahora veremos una imagen similar:
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!