This repository contains code that extends the streaming example provided by Bitcraze with
- an application-level UART protocol to exchange structured messages (and logging) between Crazyflie and GAP. GAP can also log to UART and Crazyflie can pass dynamic parameters to GAP;
- dynamic configurations for the most important camera parameters, like format, fps, exposure and cropping;
- streaming RAW images too, which works generally better than the default JPEG encoder, despite the higher bandwidth (> x15). For instance, it allows you to capture and stream 160 x 90 at about 60 fps;
- streaming over JTAG and named pipes, which is much slower (1/6) than WiFi but convenient for debugging and in case you don't have NINA packaged with a GAP.
- a client that accepts RAW images too and another that republishes the stream to ROS.
The repository is divided into 5 parts:
- [Video-stream] client (Python3),
- crazyflie: just the
aideck.c
driver and the autogenerated protocol to include in the firmware tree, - gap: the complete firmware for GAP8,
- nina: the complete firmware for NINA,
- protocol: a Python3 script to generate C-code using Jinjia templates.
Please refer to the related READMEs for documentation and follow the instruction to install the different toolchains, to build, and to run the software.
The Crazyflie code works the latest firmware, the GAP code with the latest GAP SDK (3.6), and the NINA code with ESP_IDF 3.3.1.
The name is an homage to the fantastic AI-DECK, to which we just add a sail to navigate better and faster to perilous sees of robotics and machine learning research.