#copper #real-time

app cu-rp-balancebot

This is a full robot example for the Copper project. It runs on the Raspberry Pi with the balance bot hat to balance a rod.

14 releases (7 breaking)

0.10.0 Oct 19, 2025
0.9.0 Aug 1, 2025
0.8.2 Jun 30, 2025
0.7.0 Mar 13, 2025
0.4.1 Nov 15, 2024

#435 in Robotics

Download history 20/week @ 2025-07-09 3/week @ 2025-07-16 128/week @ 2025-07-30 1/week @ 2025-08-06 142/week @ 2025-09-10 10/week @ 2025-09-17 15/week @ 2025-10-01 1/week @ 2025-10-08 104/week @ 2025-10-15 28/week @ 2025-10-22

148 downloads per month

Apache-2.0 and maybe GPL-3.0-only

3.5MB
3.5K SLoC

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

$ cd examples/cu_rp_balancebot
$ cargo run --release 

See the UI help for the navigation.

To debug the game engine side you can add a perf overlay with:

cargo run --release --features perf-ui

To run the resimulation

(you need at least a log in logs for example from a simulation run).

$ cd examples/cu_rp_balancebot
$ cargo run --bin balancebot_resim --release

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:

cargo build --target armv7-unknown-linux-musleabihf --release --no-default-features

Be sure you save your log string index:

cp -rv ../../target/armv7-unknown-linux-musleabihf/release/cu29_log_index .  # or anywhere you want

Deploy on the target:

scp ../../target/armv7-unknown-linux-musleabihf/release/balancebot copperconfig.ron copper7:copper/  # change to match your target

To export logs

$ cd examples/cu_rp_balancebot
$ cargo run --bin balancebot-logreader --release

Dependencies

~32–91MB
~1.5M SLoC