COMB is an open-source, modular robotic platform for experimental access to honey bee colonies. Hardware Files have been made publicly available at Zenodo Repository
License: MIT
- Modular: swap subsystems without rewiring the whole rig.
- Open: C/C++ firmware and MATLAB tools included.
- Reproducible: documented build and flashing steps.
- Extensible: add sensors, actuators, and UI modules as needed.
COMB-main/
├─ Controller_Code/ # Firmware for different robot modules
│ ├─ DanceRobot/ # Waggle dance robot (simulates bee dances)
│ ├─ ScannerRobot/ # Scanner robot (maps and inspects comb structures)
│ ├─ WingFlapperSanDiego/ # Wing flapper robot (PCB wing actuators for local signaling)
│ └─ README.md
│
├─ Encoder_Code/
│ └─ virtual_motor_encoder_teensy/ # Teensy sketch emulating motor encoder signals
│
├─ Keypad_Design_Code/
│ ├─ Keypad/ # Keypad firmware and build files
│ └─ Readme.md
│
├─ Dance_Model_Matlab/ # MATLAB models and tools
│ ├─ dance_model.m
│ └─ write_dance_model_to_cpp_variable.m
│
├─ LICENSE
└─ README.md
- Controller firmware for multiple robot types (dance, scanner, wing-flapper).
- Virtual encoder utility to simulate quadrature signals using a Teensy board.
- Keypad firmware for modular user input.
- MATLAB scripts to define and export dance models to C++.
- Fully open-source under MIT License.
- MCUs: ESP-IDF supported boards (for controller code), Teensy (for encoder utility), Arduino-compatible boards (for keypad).
- Toolchains:
- ESP-IDF for controller code.
- Arduino IDE or PlatformIO for Teensy and keypad.
- MATLAB (R2020a+) for model scripts.
git clone https://github.com/praked/COMB
cd COMB
- DanceRobot / ScannerRobot / WingFlapperSanDiego
- Use ESP-IDF:
idf.py set-target esp32
idf.py build
idf.py -p <PORT> flash-
Virtual encoder (Teensy)
- Open Encoder_Code/virtual_motor_encoder_teensy.ino in Arduino IDE, select your Teensy board, and upload.
-
Keypad firmware
- Open Keypad_Design_Code/Keypad in Arduino IDE, set pin mapping, and upload.
cd('Dance_Model_Matlab');
addpath(genpath(pwd));
dance_model
write_dance_model_to_cpp_variable- Adjust pin mappings and constants in commands.h, gpio.h, and main firmware files.
- Virtual encoder ticks per revolution must match controller firmware expectations.
- Ensure all modules share common ground and correct voltage rails.