Hacer un robot es el sueño de muchos. Una parte importante del robot son sus ojos y su percepción del mundo exterior. Muchos robots no solo tienen una cámara ordinaria, sino también algún tipo de sensores que ayudan a percibir mejor el mundo exterior y calcular la distancia a los objetos. Para este propósito, la cámara de profundidad en vivo Asus Xtion es muy adecuada. Puede proporcionar una imagen RGB regular, así como una imagen de profundidad. La imagen de profundidad es una imagen en la que en un píxel determinado se almacena la profundidad de un píxel determinado. En otras palabras, cada píxel es una medida de distancia.
Por ejemplo, esta información se puede utilizar para calcular la distancia a los objetos y planificar la ruta posterior del robot. El ejemplo de la imagen de profundidad se coloca arriba ( Por Jorma Palmén - Trabajo propio, CC BY-SA 4.0 ).
La cámara de profundidad Asus Xtion Live se utilizó en uno de mis proyectos. En el proyecto, la cámara de profundidad se conectó a una computadora de placa única Raspberry Pi 3 y, al usar la imagen de profundidad, escribí un código para detectar la caja, obtener la distancia hasta ella y sus dimensiones para realizar más acciones con ella. Pero antes de eso, trabajé duro para hacer los ajustes necesarios para obtener la imagen de profundidad. Este artículo proporcionará un tutorial detallado sobre cómo realizar estos ajustes.
La parte más difícil de la integración de la cámara de profundidad con Raspberry Pi fue la instalación del marco OpenNI (Open Natural Interaction). Este es un SDK de código abierto, que es ampliamente utilizado por los desarrolladores de aplicaciones de detección 3D. Los archivos binarios y la documentación del marco OpenNI están disponibles en línea, así como sus API de código abierto. Estas API son accesibles para cámaras de detección de profundidad y se conocen como herramientas poderosas que admiten no solo la visualización y visualización de imágenes de profundidad, sino que también tienen funciones integradas como reconocimiento de gestos con las manos, seguimiento del movimiento del cuerpo e incluso reconocimiento de voz y comandos de voz.
La instalación de OpenNI2 comenzó con la obtención de las dependencias esenciales que se requieren para la compilación de la documentación:
sudo apt-get install -y g++ python libusb-1.0-0-dev freeglut3-dev doxygen graphviz
Posteriormente, es necesario obtener el código fuente de GitHub:
git clone https://github.com/OpenNI/OpenNI2/archive/2.1-Beta.tar.gz
Luego fue necesario cambiar dos archivos.
Primero OpenNI2/ThirdParty/PSCommon/BuildSystem/Platform.Arm. Cambiando esta línea:
CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat- abi=softfp #-mcpu=cortex-a8
con lo siguiente:
CFLAGS += -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
El segundo archivo es OpenNI2/Redist/Redist.py:
compilation_cmd = "make -j" + calc_jobs_number() + " CFG=" + configuration + " PLATFORM=" + platform + " > " + outfile + " 2>&1"
Luego duplicó la siguiente línea, la comentó y cambió la línea copiada:
#compilation_cmd = "make -j" + calc_jobs_number() + " CFG=" + configuration + " PLATFORM=" + platform + " > " + outfile + " 2>&1" compilation_cmd = "make -j1" + " CFG=" + configuration + " PLATFORM=" + platform + " > " + outfile + " 2>&1"
Construyendo OpenNI2:
PLATFORM=Arm make
Cuando termine, ejecute:
cd Redist && python ReleaseVersion.py arm
Ahora tenemos un archivo tar del instalador de OpenNI2, se encuentra en
./Redist/Final/
Mueva el archivo a su carpeta de inicio
mv /Redist/Final/OpenNI-Linux-Arm-2.1.0.tar.bz2 ~
Extraiga el archivo e instale OpenNI2
tar -xvf OpenNI-Linux-Arm-2.1.0.tar.bz2 && cd OpenNI-2.1.0-arm && sudo sh install.sh
Haz un ejemplo:
cd Samples/SimpleRead && make
Comience el ejemplo:
cd ../Bin && ./SimpleRead
Salida del programa SimpleRead:
[00066738] 2768 [00100107] 2768 [00133477] 2768 [00166846] 2769 [00200215] 2769 [00233584] 2767 [00266954] 2767 ……
El programa MultipleStreamRead genera información RGB y de profundidad:
./MultipleStreamRead
Salida del programa MultipleStreamRead:
[00066738] 2768 [00100107] 2768 [00133477] 0x445620 [00166846] 2769 [00200215] 2769 [00212243] 0x053a46 [00233584] 2767 [00266954] 2767 [00275456] 0x272e30 [00233584] 2768 ……
El programa SimpleViewer nos brinda información de flujo de profundidad en el video:
Luego, instalé OpenCV para la visualización de imágenes de profundidad en gradiente y conveniencia de seguir trabajando. Ya hay muchos manuales de instalación para ello y no veo motivo para repetirlo.
Otras posibilidades están limitadas solo por su imaginación. Ya hay varios proyectos de código abierto que se realizan utilizando la cámara de profundidad. Aquí hay algunas ideas en las que puede comenzar o usarlas en sus proyectos: rastreador de cuerpo completo, rastreador de gestos de manos y cabeza, escáner 3D de mano, detector de peldaños e incluso detector de frecuencia cardíaca.
¡Te deseo mucha suerte en tu nuevo emprendimiento!