Integración de Microsoft Kinect con Raspberry Pi para Detección Humana en Tiempo Real en Robot Sonbi
A. Objetivo
Nuestro objetivo era embeber una pila software completa en la Raspberry Pi del robot Sonbi, conectar un Microsoft Kinect y permitir que el robot salude a personas agitando sus brazos al detectar un humano frente al sensor.
B. Sistema Hardware
- Raspberry Pi con almacenamiento flash 8 GB
- Controlador servo Pololu Maestro 24‑canales
- Microsoft Kinect (cámara RGB, sensor profundidad, emisor IR, array multi‑mic, acelerómetro)
- Fuente ATX 500 W
- Protoboards, cableado y componentes mecánicos
Especificaciones Raspberry Pi
- Procesador ARM1176JZF‑S 700 MHz
- 512 MB SDRAM
- Entrada MicroUSB 5 V
- Ethernet, HDMI y dos puertos USB para periféricos
- Corre Raspbian OS – amplio soporte comunidad
Pololu Maestro 24
- 24 canales servo independientes
- Tasa pulso hasta 333 Hz
- Memoria script hasta 8 KB
- Hasta 1,5 A por canal
- Entrada USB o header potencia
- Scriptable vía API nativa o firmware personalizado
Conectar Raspberry Pi a Pololu
- Cableado serie TTL simple: potencia, ground, Tx‑Rx, Rx‑Tx
- Libera la consola serie por defecto de la Pi editando
/etc/inittaby/boot/cmdline.txt - Consulta este tutorial para instrucciones detalladas
Características Microsoft Kinect
- Cámara RGB (resolución 1280×960) para imagen color
- Emisor IR y sensor profundidad para mapeo 3‑D distancia
- Array 4‑mic para captura audio y localización fuente sonido
- Acelerómetro 3‑ejes (±2 G) para detección orientación
- Rango inclinación vertical: 27°
- 30 fps tasa de frames
C. Integración Kinect con Raspberry Pi
Como los drivers nativos de Kinect son solo Windows, instalar las librerías requeridas en una Raspberry Pi Linux lleva tiempo pero es esencial. Los pasos siguientes describen el proceso.
1. Instalar Drivers Kinect
- Elige entre Libfreenect (driver user‑space) o OpenNI (framework alto nivel). Instalamos ambos para máxima flexibilidad.
- Libfreenect soporta imágenes RGB/profundidad, control motor, acelerómetro y LED; soporte audio experimental.
- OpenNI provee SDK multiplataforma para profundidad, audio y tracking esquelético.
2. Compilar Libfreenect
sudo apt-get install git-core cmake pkg-config build-essential libusb-1.0-0-dev
git clone https://github.com/OpenKinect/libfreenect
cd libfreenect
mkdir build
cd build
cmake -L ..
make
# opcional: cmake --build .
3. Compilar OpenNI
sudo apt-get install g++ python libusb-1.0-0-dev freeglut3-dev
cd Platform/Linux/CreateRedist
./RedistMaker
sudo ./install.sh
# opcional: make mono_wrapper && make mono_samples
D. Pila Software y Runtime
El robot arranca script bootscript_sonbi.sh que lanza módulo detección facial:
python facedetect.py --cascade=face.xml 0
Descarga archivo cascade Haar pre‑entrenado aquí: face.xml. El script transmite feed RGB del Kinect, detecta caras en tiempo real y señala al ejecutable Sonbi para activar servomotores de brazos en saludo amistoso.
E. Resumen de Acciones
Cuando se detecta humano, Kinect captura imagen con profundidad, algoritmo confirma cara y Pololu Maestro comanda servos de brazos del robot Sonbi para realizar saludo. Esta integración demuestra factibilidad de usar hardware de consumo para robótica interactiva.
Proceso de manufactura
- Integración MQTT fluida: sensores NodeMCU DHT22 con Raspberry Pi 3 B+ como broker
- Perfilado preciso de temperatura en Raspberry Pi con Python, SQLite y LabVIEW
- Registro y gráficas de eventos de termostato 24 V con optoacoplador y Raspberry Pi
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Monitorización meteorológica remota con Raspberry Pi 3 y PubNub
- Integración de TI SensorTag con Blynk vía Node‑RED en Raspberry Pi Zero
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Sensor de ocupación para baño con Raspberry Pi: alertas por voz y SMS mediante Twilio
- Control de sensores y actuadores con Raspberry Pi: acelerómetro, servo y streaming de datos
- Capturar comandos de mando IR en Raspberry Pi sin LIRC: enfoque Python UART