BalanceBot: this is a full Copper demo robot
with:
- a physical robot implementation
- a simulation implementation
- a resimulation demoing the deterministic replay
- a log export
To run the simulation
See the UI help for the navigation.
To run the simulation with the monitor embedded in Bevy
This keeps the Bevy sim on the left and the live Copper monitor on the right.
To run the simulation in the browser
This serves the Bevy sim and the live Copper monitor through Trunk. The first run downloads the scene assets into assets/ so the browser can load them from the same origin.
The browser path now uses the same asset filenames as the native sim: balancebot.glb, skybox.ktx2, and diffuse_map.ktx2.
To build a static browser bundle
This writes a relocatable static Trunk bundle into dist/balancebot/ with hashed asset filenames.
To run the resimulation
(you need at least a log in logs for example from a simulation run).
It will recreate the logs from only the inputs of the previous run in logs/balancebot_resim*.copper.
To run on the real robot
You will need to cross compile for Arm:
Be sure you save your log string index:
Deploy on the target:
To export logs
Justfile commands
just bevy— run the split-view Bevy sim withcu_bevymon.just web— serve the split-view wasm demo with Trunk.just web-dist— build a deployable static wasm bundle intodist/balancebot/.just balancebot-dump-text-logs— extract human-readable logs fromlogs/balance.copperinto../../target/debug/cu29_log_index/strings.bin.just balancebot-fsck— integrity check oflogs/balance.copper.just balancebot-set-pwm-permissions— fix PWM sysfs permissions on the target (requires appropriate privileges).just dag-logstats— generate logstats and open an annotated DAG SVG for the currentcopperconfig.ron.