This repository contains the hardware files, firmware and other documentation for the audio deck of the Crazyflie drone.
This repository is part of the experimental framework described in the paper:
F. Dümbgen, A. Hoffet, M. Kolundžija, A. Scholefield, and M. Vetterli, "Blind as a bat: audible
echolocation on small robots", IEEE Robotics and Automation Letters (Early Access), 2022.
The framework includes all components listed below. The components are kept modular so that researchers may focus only on what's relevant to them. For instance, to recreate the audio extension deck and perform more research on audio-based navigation on drones, only repository 2. is necessary; to run the audio-based algorithms in ROS but for a different robot, only repository 1. is enough as a starting point.
- ROS processing pipeline for processing audio for tasks such as obstacle detection and sound source localization.
- Audio deck firmware (this repository), which also includes the PCB files for reproducing the audio deck.
- Public datasets, for audio-based localization on the e-puck2 robot and the Crazyflie drone.
- Crazyflie firmware (fork from official vendor firmware), with an added audio deck driver.
- Gtsam extension for performing factor-graph inference using the echolocation measurements.
firmware/
: Firmware to run on the audio shield, which extracts and transmits microphone data to the Crazyflie PCB.hardware/
: KiCad PCB design files for audio shield.python/
: Helper functions to generate hard-coded sweeps etc.flight_control/
: Simple scripts to fly the Crazyflie drone for testing.doc/
: Some documentation and helpers.
The driver of the audio deck, running on the Crazyflie, is available in this fork of the official firmware.
In alphabetical order:
- Isaac Bernardino Dinis
- Frederike Dümbgen
- Adrien Hoffet
All material in this repo is provided with the MIT license.
Parameters to set in crazyflie-lib-python/examples/write_ow.py
:
mems[0].vid = 0xBC
mems[0].pid = 0xFF
board_name_id = OWElement.element_mapping[1]
board_rev_id = OWElement.element_mapping[2]
mems[0].elements[board_name_id] = 'Audio Shield'
mems[0].elements[board_rev_id] = 'V2'
Please refer to the below publications for more information.
[1] RA-L paper (main reference)
F. Dümbgen, A. Hoffet, M. Kolundžija, A. Scholefield, and M. Vetterli, "Blind as a bat: audible
echolocation on small robots", IEEE Robotics and Automation Letters (Early Access), 2022.
[2] Ph.D. dissertation (including additional methods and experimental analysis):
F. Dümbgen, "Blind as a bat: spatial perception without sight", Ph.D. disseration,
École Polytechnique Fédérale de Lausanne, 2021.