Skip to content

LCAV/crazyflie-audio

Repository files navigation

Audio processing for Crazyflie drone

This repository contains the hardware files, firmware and other documentation for the audio deck of the Crazyflie drone.

Overview

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.

  1. ROS processing pipeline for processing audio for tasks such as obstacle detection and sound source localization.
  2. Audio deck firmware (this repository), which also includes the PCB files for reproducing the audio deck.
  3. Public datasets, for audio-based localization on the e-puck2 robot and the Crazyflie drone.
  4. Crazyflie firmware (fork from official vendor firmware), with an added audio deck driver.
  5. Gtsam extension for performing factor-graph inference using the echolocation measurements.

Contents

  • 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.

Audio deck driver

The driver of the audio deck, running on the Crazyflie, is available in this fork of the official firmware.

Contributors

In alphabetical order:

  • Isaac Bernardino Dinis
  • Frederike Dümbgen
  • Adrien Hoffet

License

All material in this repo is provided with the MIT license.

EEPROM

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'

References

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.