🛠 Boîte de vision RTSP : caméra MIPI, accélération NPU RKNN et VPU
Objetivos
Construir una caja de visión sobre la NPU de 1 TOPS INT8 del RK3568 (framework RKNN, soporte para TensorFlow/TF-Lite/PyTorch/Caffe/ONNX) y la VPU (decodificación 4Kp60 H.265/H.264/VP9, codificación 1080p60): cámara en el conector MIPI CSI de 2 carriles, inferencia sobre fotograma, difusión RTSP. Radxa documenta cada componente: secciones oficiales de RTSP, OpenCV y AI/RKNN en docs.radxa.com (app-development).
Hardware
- Radxa ROCK 3B bajo Radxa OS (la NPU RKNN requiere el kernel del fabricante; el soporte NPU mainline sigue siendo parcial — > NO VERIFICADO: lista exacta de carencias en mainline)
- Cámara MIPI CSI de 2 carriles compatible (cinta plana hacia el conector CSI de la placa)
- Refrigeración recomendada (carga sostenida de VPU+NPU), SSD/eMMC para los vídeos
Código completo
# 1. Activer la caméra (Radxa OS) : rsetup -> Camera overlay, reboot, puis :
ls /dev/video* ; v4l2-ctl --list-devices # chercher la pipeline mipi-csi
# 2. Chaîne d'acquisition (gstreamer, décodage/encodage matériel) :
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-good
gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,width=1280,height=720 ! \
videoconvert ! autovideosink # aperçu live depuis la CSI
# 3. Inférence RKNN : installer la toolchain rknn-toolkit2 (hôte x86) pour
# convertir le modèle ONNX -> .rknn, puis runtime rknnlite sur la carte :
sudo pip3 install rknn-toolkit-lite2 # wheel selon la doc AI Radxa
python3 detect.py --model model.rknn --cam 0 # script du tuto AI officiel
# 4. Diffusion RTSP (encodage 1080p60 matériel) :
sudo apt install v4l2loopback-dkms
# gst-launch-1.0 ... ! mpph264enc ! rtspclientsink location=rtsp://... (voir tuto RTSP)
Verificación esperada
v4l2-ctl --list-devices lista el pipeline CSI; gst-launch muestra el flujo de la cámara; el script RKNN muestra cajas/etiquetas y latencia por fotograma (la NPU de 1 TOPS mantiene el tiempo real con modelos ligeros tipo YOLO cuantificados en INT8); un cliente VLC reproduce el flujo RTSP. cat /sys/class/devfreq/*npu*/load (o rknn top) muestra la NPU activa.
Errores frecuentes
- Probar RKNN bajo una imagen mainline/Armbian propia: la NPU depende del kernel del fabricante — los blobs libmali/RKNN y panfrost no se mezclan (problema documentado en imágenes autoconstruidas).
- Cinta plana CSI mal insertada o contactos invertidos: ningún /dev/video del pipeline.
- Confundir decodificación y codificación: la VPU decodifica en 4Kp60 y codifica en 1080p60 (la ficha de marketing de radxa.com que invierte ambos es un error tipográfico).
- Conversión de un modelo no admitido por RKNN: pasar por el convertidor ONNX y cuantificar en INT8 en un PC x86, no en la placa.
- Sobrecalentamiento con carga sostenida de VPU+NPU: añadir disipador/ventilador antes de concluir que hay un limitación por software.
Otros tutoriales para esta placa
- Faire clignoter une LED via le GPIO avec libgpiod
- Lire un bouton poussoir en Python avec python3-libgpiod
- Premier réseau : Ethernet double gigabit, Wi-Fi optionnel et SSH
- Installer et booter le système sur un SSD NVMe (M.2 M-Key)
- Interroger un capteur I2C sur le connecteur 40 broches
- Surveiller température et fréquence CPU, piloter le ventilateur PWM
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash