Skip to content

microsoft/BusyBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BusyBox: Benchmarking Affordance Generalization

BusyBox is a physical 3D-printable device for benchmarking affordance generalization in robot foundation models.

busybox_assembled

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.

BusyBox assembly instructions

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.

Electronic Assembly:

TODO: add instructions on how to assemble electronics with pictures

Firmware Flashing:

Instructions for flashing the Arduino Nano's firmware: Flashing Firmware

Data Collection

See Data Collection for details on our data collection methodology.

Recording Episodes with Aloha

The robots/aloha/ directory contains a complete data recording pipeline for collecting teleoperated demonstrations using the Aloha bimanual robot.

Prerequisites

  • 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

Quick Start

pip install -r requirements.txt
python robots/aloha/record_busybox_episodes.py

Foot Pedal Controls

Pedal Action
Left Start recording
Middle Stop and save episode / Refresh task prompt
Right Pause/resume teleop / Reject recording

Configuration

Edit robots/aloha/utils/config.py to set:

  • dataset_dir — where episodes are saved
  • camera_names — which cameras to record
  • using_instrumented_busybox — enable MQTT state logging

Episode Data Format (HDF5)

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

Utility Scripts

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

Raspberry Pi MQTT Bridge

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.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors