Skip to content
Search

Copper-rs

lastmod 2024-12-05created 2024-12-051 edits

(For Copper, the web app toolkit for Go, see gocopper.)

Purpose-built, Rust-native software engine for robotics

A runtime engine for building robots, implemented in Rust

Features

  • A user-friendly runtime engine for building fast and reliable robots
    • A "robot engine" for robots, like a "game engine" for games
  • Easy: provides a high-level configuration system and a natural Rust API
  • Fast: uses Rust's zero-cost abstractions and a data-oriented approach to achieve sub-microsecond latency on commodity hardware and to avoid heap allocation at runtime
  • Reliable: leverages Rust's ownership, type system, and concurrency model to minimize bugs and guarantee thread safety
  • Production-oriented: aims to prevent late-stage infrastructure integration problems by producing a highly predictable runtime
  • Tested on Linux (x86_64, armv7, aarch64 & riskv64) and MacOS (arm64)

Technical overview

  • Copper is a data-oriented robot SDK that provides the following components:
  • Task Graph: configures the system topology as described in RON (Rusty Object Notation), specifying the tasks that communicate and setting the types of nodes and messages
  • Runtime Generator: determines the execution plan based on the graph's metadata. Preallocates a 'Copper List' to maximize sequential memory access at runtime
  • Zero-Copy Data Logging: records all messages between tasks without copying data, ensuring efficient logging
  • Fast Structured Logging: Intern and Index log strings at compile time, avoiding runtime string construction and ensuring high-speed text logging
  • When no real robot is available, a simulation environment built with Bevy (a Rust game engine) + Avian3d (a Rust physics engine) can be used

See also

Favorite site

author Zer0 sitemap