BusyBox is a physical 3D-printable device for benchmarking affordance generalization in robot foundation models.
It features
- Modular design with 6 interchangeable modules (buttons, switches, sliders, wires, knob, and display)
- Open-source CAD files and bill of materials for easy reproduction
- Optional electronics and Raspberry Pi instrumentation for automated state logging
- Reconfigurable setups enabling systematic evaluation of generalization
- A language-annotated dataset of 1000+ demonstration trajectories oof BusyBox affordances
Please check out our website for more details.
For fully building a instrumented BusyBox capable of state logging, see the BOM.
First print the BusyBox following Printing Instructions with details on files to print and any details on print settings.
TODO: add instructions on how to assemble electronics with pictures
Instructions for flashing the Arduino Nano's firmware: Flashing Firmware
See Data Collection for details on our data collection methodology.
The robots/aloha/ directory contains a complete data recording pipeline for collecting teleoperated demonstrations using the Aloha bimanual robot.
- Aloha robot hardware (leader + follower arms) set up and calibrated
- USB foot pedal for episode control
- (Optional) Instrumented BusyBox with MQTT bridge for state logging
pip install -r requirements.txt
python robots/aloha/record_busybox_episodes.py| Pedal | Action |
|---|---|
| Left | Start recording |
| Middle | Stop and save episode / Refresh task prompt |
| Right | Pause/resume teleop / Reject recording |
Edit robots/aloha/utils/config.py to set:
dataset_dir— where episodes are savedcamera_names— which cameras to recordusing_instrumented_busybox— enable MQTT state logging
Each episode is saved as an HDF5 file with:
/observations/qpos— joint positions (14,) per timestep/observations/qvel— joint velocities (14,)/observations/effort— joint torques (14,)/observations/images/{cam_name}— JPEG-compressed camera frames/action— leader arm joint commands (14,)/observations/timestamp,/action_timestamp— timing data
| Script | Purpose |
|---|---|
scripts/count_episodes_collected_today.py |
Count episodes recorded in the current session |
scripts/busybox_calibration.py |
BusyBox sensor calibration |
scripts/visualize_hdf5.ipynb |
Visualize recorded episode data |
robots/aloha/eval_rollouts.py |
Evaluate policy rollouts |
For instrumented BusyBox setups, the devices/pi_sw/ directory contains the MQTT bridge that runs on the Raspberry Pi:
# On the Raspberry Pi
pip install pyserial paho-mqtt
python devices/pi_sw/mqtt_bridge.py --broker-host <MQTT_BROKER_IP>See Flashing Firmware: Installing MQTT on the Pi for setup details.
