Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros gpio_caterpillar

Repository Summary

Description Copper is a user friendly and deterministic runtime for building production-ready robots.
Checkout URI https://github.com/copper-project/copper-rs.git
VCS Type git
VCS Version master
Last Updated 2025-10-22
Dev Status UNKNOWN
Released UNRELEASED
Tags rust robotics ros
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gpio_caterpillar 0.0.0

README

     Copper Runtime & SDK

copper GitHub last commit dependency status License Discord

🤖&nbsp&nbsp&nbsp&nbsp Copper is to robots what a game engine is to games - build, run, and replay your entire robot deterministically.

Why Copper

🦀 Rust-first – ergonomic, safe, no C++ bindings

⚡ Sub-microsecond latency – zero-alloc, data-oriented runtime

⏱️ Deterministic replay – every run, bit-for-bit identical

🧠 Interoperable with ROS2 – bridges via Zenoh opening the path for a progressive migration.

🪶 Runs anywhere – from Linux servers to bare-metal RP2350

📦 Built to ship – one stack from simulation to production Copper can be deployed on:

Linux x86_64
armv7
aarch64
riscv64
macOS arm64
Windows x86_64
Android arm64
But can ALSO run baremetal on microcontrollers. Here it is on our reference platform based on the RP2350, see [Copper baremetal development](https://github.com/copper-project/copper-rs/wiki/Baremetal-Development) if you are interested to deploy Copper as an actual Operating System. graph ### Technical Overview Copper is a deterministic and data-oriented Robot SDK with these key components: * **Task Graph**: graph Configures the system's topology, specifies inter-task communication paths, and sets types for nodes and messages. The Task Graph is generated in [RON](https://github.com/ron-rs/ron), * **Runtime Generator**: Creates an execution plan based on the Task Graph's metadata. It preallocates a "Copper List" to maximize sequential memory access during execution. * **Zero-Copy Data Logging**: Records all messages between tasks without copying data, ensuring efficient logging and perfect determinism. * **Fast Structured Logging**: Interns and indexes logging strings at compile time, avoiding runtime string construction and ensuring high-speed textual logging. ### Blazing Fast Our latency numbers are expressed in **nanoseconds (ns)** on commodity hardware. ### You don't have a real robot yet? Try it in our minimalistic sim environment! [![Copper in virtual action](https://img.youtube.com/vi/kC6sGRZUxLE/maxresdefault.jpg)](https://youtu.be/kC6sGRZUxLE) Here is a Copper-based robot in action in a Bevy simulation environment! The realistic sim is created using [Bevy](https://crates.io/crates/bevy) (A Rust Game Engine) and [Avian3d](https://crates.io/crates/avian3d) (Physics Engine in Rust). On your mac or linux machine (x86-64 or Arm) just run ... ```bash $ cargo install cu-rp-balancebot $ balancebot-sim ``` ... to try it locally. File truncated at 100 lines [see the full file](https://github.com/copper-project/copper-rs/tree/master/README.md)

CONTRIBUTING

Contributing to Copper-rs

First off, thank you for considering contributing to Copper-rs! We welcome contributions from everyone. This document provides guidelines for contributing to the project.

Getting Started

Prerequisites

  • Rust: Ensure you have a recent stable Rust toolchain installed. You can install it using rustup.
    curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs) | sh
    
  • cargo-nextest: For running tests efficiently.
    cargo install cargo-nextest
    
  • Platform-Specific Dependencies: Depending on your operating system and the features you intend to work with, you might need additional dependencies. Refer to the Continuous Integration Setup section below for details extracted from our CI workflow. For Ubuntu 22.04, please checkout our Dockerfile.

Building the Project

To build the project, navigate to the root directory and run:

cargo build --workspace

For a release build, use:

cargo build --release --workspace

Running Tests

We use cargo-nextest for running tests. To run all unit tests:

cargo nextest run --workspace --all-targets

To run tests including specific features (matching the CI ‘debug’ mode non-CUDA features):

cargo nextest run --workspace --all-targets --features macro_debug,mock,perf-ui,image,kornia,python,gst,faer,nalgebra,glam,debug_pane,bincode

Contribution Workflow

  1. Fork the Repository: Create your own fork of the copper-rs repository on GitHub.

  2. Clone Your Fork: Clone your forked repository to your local machine.

    git clone https://github.com/YOUR_USERNAME/copper-rs.git
    cd copper-rs
    
  1. Create a Branch: Create a new branch for your changes. Choose a descriptive branch name. ex: yang/chore/beta_clippy , gbin/feat/soa , gbin/fix/balancebot_sim .
    git checkout -b user/feat/description
    
  1. Make Changes: Implement your feature or fix the bug. Write clear and concise code.

  2. Run Checks: Before committing, ensure your code adheres to the project’s standards:
    • Formatting: cargo fmt --all -- --check
    • Clippy Lints: cargo clippy --workspace --all-targets -- --deny warnings
    • Tests: cargo nextest run --workspace --all-targets (run with relevant features if applicable)
    • Typos: Ensure you run a spell checker. We use typos --config .config/_typos.toml .
  3. Commit and push Changes: Commit your changes with clear and descriptive commit messages. (Consider using Conventional Commits)
    git add .
    git commit -m "feat: new feature"
    git push user/feat/description
    
  1. Create a Pull Request: Open a pull request (PR) from your branch to the master branch of the main copper-rs repository. Provide a clear description of your changes in the PR.

Dependency Management

We keep our dependencies minimal and up-to-date.

We use

``` to identify and remove unused dependencies. Before submitting a PR, please run:

1. Install 
```cargo-machete
cargo install cargo-machete

  1. Run cargo-machete to find unused dependencies:
cargo machete --with-metadata

  1. Handling False Positives

cargo-machete is not perfect. If it incorrectly flags a necessary dependency (e.g., required by a feature flag or build script), add it to the ignored list in the relevant Cargo.toml file:

```toml [package.metadata.cargo-machete]

Explain why the dependency is needed despite not being directly used in code.

e.g. “Required for X feature” or “Used in build.rs”

File truncated at 100 lines see the full file

# Contributing to Copper-rs First off, thank you for considering contributing to Copper-rs! We welcome contributions from everyone. This document provides guidelines for contributing to the project. ## Getting Started ### Prerequisites * **Rust:** Ensure you have a recent stable Rust toolchain installed. You can install it using [rustup](https://rustup.rs/). ```bash curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs) | sh ``` * **cargo-nextest:** For running tests efficiently. ```bash cargo install cargo-nextest ``` * **Platform-Specific Dependencies:** Depending on your operating system and the features you intend to work with, you might need additional dependencies. Refer to the [Continuous Integration Setup](#continuous-integration-ci) section below for details extracted from our CI workflow. For Ubuntu 22.04, please checkout our [Dockerfile](support/docker/Dockerfile). ### Building the Project To build the project, navigate to the root directory and run: ```bash cargo build --workspace ``` For a release build, use: ```bash cargo build --release --workspace ``` ### Running Tests We use cargo-nextest for running tests. To run all unit tests: ```bash cargo nextest run --workspace --all-targets ``` To run tests including specific features (matching the CI 'debug' mode non-CUDA features): ```bash cargo nextest run --workspace --all-targets --features macro_debug,mock,perf-ui,image,kornia,python,gst,faer,nalgebra,glam,debug_pane,bincode ``` ## Contribution Workflow 1. **Fork the Repository**: Create your own fork of the copper-rs repository on GitHub. 2. **Clone Your Fork**: Clone your forked repository to your local machine. ```bash git clone https://github.com/YOUR_USERNAME/copper-rs.git cd copper-rs ``` 3. **Create a Branch**: Create a new branch for your changes. Choose a descriptive branch name. ex: ```yang/chore/beta_clippy ```, ```gbin/feat/soa ```, ```gbin/fix/balancebot_sim ```. ```bash git checkout -b user/feat/description ``` 4. **Make Changes**: Implement your feature or fix the bug. Write clear and concise code. 5. **Run Checks**: Before committing, ensure your code adheres to the project's standards: - **Formatting**: ```cargo fmt --all -- --check ``` - **Clippy Lints**: ```cargo clippy --workspace --all-targets -- --deny warnings ``` - **Tests**: ```cargo nextest run --workspace --all-targets ``` (run with relevant features if applicable) - **Typos**: Ensure you run a spell checker. We use ```typos --config .config/_typos.toml ```. 6. **Commit and push Changes**: Commit your changes with clear and descriptive commit messages. (Consider using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)) ```bash git add . git commit -m "feat: new feature" git push user/feat/description ``` 7. **Create a Pull Request**: Open a pull request (PR) from your branch to the master branch of the main copper-rs repository. Provide a clear description of your changes in the PR. ## Dependency Management We keep our dependencies minimal and up-to-date. We use ```cargo-machete ``` to identify and remove unused dependencies. Before submitting a PR, please run: 1. Install ```cargo-machete ``` ```bash cargo install cargo-machete ``` 2. Run ```cargo-machete ``` to find unused dependencies: ```bash cargo machete --with-metadata ``` 3. Handling False Positives ```cargo-machete ``` is not perfect. If it incorrectly flags a necessary dependency (e.g., required by a feature flag or build script), add it to the ignored list in the relevant Cargo.toml file: ```toml [package.metadata.cargo-machete] # Explain *why* the dependency is needed despite not being directly used in code. # e.g. "Required for X feature" or "Used in build.rs" File truncated at 100 lines [see the full file](https://github.com/copper-project/copper-rs/tree/master/CONTRIBUTING.md)
Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros
Repo symbol

copper-rs repository

rust robotics ros