# Copper - Rust로 구현한 로봇 제작용 런타임 엔진

> Clean Markdown view of GeekNews topic #18108. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18108](https://news.hada.io/topic?id=18108)
- GeekNews Markdown: [https://news.hada.io/topic/18108.md](https://news.hada.io/topic/18108.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-12-05T10:03:01+09:00
- Updated: 2024-12-05T10:03:01+09:00
- Original source: [github.com/copper-project](https://github.com/copper-project/copper-rs)
- Points: 7
- Comments: 0

## Summary

Copper는 Rust로 구현된 로봇 제작용 런타임 엔진으로, 사용자 친화적이며 빠르고 안정적인 로봇 개발을 지원합니다. 이 엔진은 Rust의 Zero-Cost 추상화와 데이터 지향 접근 방식을 활용하여 마이크로초 미만의 지연 시간을 달성하고, 버그를 최소화하며 스레드 안전성을 보장합니다. 또한, Copper는 Task Graph, Runtime Generator, Zero-Copy Data Logging 등의 컴포넌트를 제공하며, Bevy와 Avian3d를 활용한 시뮬레이션 환경도 지원합니다.

## Topic Body

- 빠르고 안정적인 로봇을 제작하기 위한 사용자 친화적인 런타임 엔진  
  - 게임을 위한 "게임 엔진"처럼 로봇을 위한 "로봇 엔진"  
- 쉬움: 고수준의 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 물리엔진) 으로 개발된 시뮬레이션 환경 이용 가능

## Comments



_No public comments on this page._
