- 빠르고 안정적인 로봇을 제작하기 위한 사용자 친화적인 런타임 엔진
- 게임을 위한 "게임 엔진"처럼 로봇을 위한 "로봇 엔진"
- 쉬움: 고수준의 Configuration 시스템과 내추럴 Rust API 제공
- 빠름: Rust의 Zero-Cost 추상화와 데이터 지향 접근 방식을 사용해 상용 하드웨어에서 마이크로초 미만의 지연 시간을 달성 및 실행 중 힙 할당을 회피
- 신뢰성: Rust의 소유권, 유형 시스템, 동시성 모델을 활용하여 버그를 최소화하고 스레드 안전을 보장
- 제품 지향적: 매우 예측 가능한 런타임을 생성하여 후기 단계의 인프라 통합 문제를 방지하는 것을 목표로 함
- Linux (x86_64, armv7, aarch64 & riskv64) 와 MacOS (arm64) 에서 테스트 됨
기술 오버뷰
- Copper는 다음과 같은 컴포넌트들을 제공하는 Data-oriented 로봇 SDK임:
- Task Graph: RON(Rusty Object Notation)에 설명된 대로 시스템의 토폴로지를 구성하여 통신하는 작업을 지정하고 노드 및 메시지의 유형을 설정
- Runtime Generator: 그래프의 메타데이터를 기반으로 실행 계획을 결정. 실행 중 순차적 메모리 액세스를 최대화하기 위해 'Copper List'를 사전 할당
- Zero-Copy Data Logging: 데이터 복사 없이 작업 간의 모든 메시지를 기록하여 효율적인 로깅을 보장
- Fast Structured Logging: Intern과 Index는 컴파일 시에 문자열을 로깅하여 런타임 문자열 구성을 피하고 고속 텍스트 로깅을 보장
- 실제 로봇이 없는 경우 Bevy(Rust 게임엔진) + Avian3d(Rust 물리엔진) 으로 개발된 시뮬레이션 환경 이용 가능