copper-project/copper-rs
Copper is an operating system for robots - build, run, and replay your entire robot deterministically.
Copper ランタイム & SDK – Rustベースのロボットタスクエンジン
何であるか – Copperは、ロボットの制御論理を静的タスクグラフ(人間が読みやすいRON形式で記述)として記述できるRustライブラリおよびランタイムです。このグラフは、デスクトップLinuxマシンからバーメタルマイコンまで、あらゆる環境で実行可能な高度に最適化されたゼロアロケーションの実行エンジンにコンパイルされます。ロボットが動作している間、Copperはすべてのメッセージ、タイムスタンプ、状態を単一の**.copperログ**に記録し、後で決定論的に再実行してデバッグや分析が可能になります。
なぜ重要か – ロボットソフトウェアは、レイテンシのスパイク、非決定論的な挙動、シミュレーション、Linux、組み込みターゲット間でのコード移行の難しさに悩まされることがよくあります。Copperは以下の点でこれらの課題を解決します:
- 静的、コンパイル時ワイヤリング – 全ての制御パイプラインがコンパイル時に把握されるため、Rustコンパイラがオーバーヘッドを排除できます。
- リアルタイム最優先の実行 – ホットパスは一切アロケートせず、データ指向設計となっており、タイトな制御ループに不可欠です。
- 決定論的な再実行 – すべての実行が正確に再現可能で、デバッグがはるかに簡単になります。
- クロスプラットフォーム – 同じコードベースがLinux/macOS、シングルボードコンピュータ(例:Raspberry Pi)、オンチップマイコン(STM32など)で動作します。
- 相互運用性 – Zenohを介してROS 2と通信でき、高レベルのツール用にPythonバインディングも提供します。
主要コンポーネント
| コンポーネント | 役割 |
|---|---|
copperconfig.ron |
タスクグラフ(ソース、タスク、シンク)の宣言的記述。 |
#[copper_runtime] マクロ |
コンパイル時にグラフをワイヤリングする具体的なランタイムを生成。 |
cu29 クレート(crates.io上) |
グラフを実行し、ログを記録し、再実行APIを提供するコアランタイムライブラリ。 |
cargo-cunew テンプレートツール |
新しいCopperプロジェクトをスキャフォールディング(src/main.rs、src/tasks.rs、justfileなどを生成)。 |
just ヘルパー |
グラフの可視化、生成されたスケジュールの確認、ログの再実行を行うためのコマンド。 |
| テレメトリサポート | UDP経由でリアルタイムタスクデータを地上局にストリーミングし、ローカルで決定論的なツインを再構築可能。 |
一般的なワークフロー
- 宣言 –
copperconfig.ronファイルを記述し、ノード(ソース、処理タスク、シンク)とその接続をリストアップ。 - 生成 –
#[copper_runtime]属性を適用;Cargoが専用の実行エンジンをビルド。 - 実行 – ターゲットハードウェア上で実行;実行エンジンはゼロアロケーションでメッセージを処理。
- 記録 – すべての活動が
*.copperログに保存される。 - 検査 – 提供されたツールまたはRust APIを使用してログを再実行、データをエクスポート、タイミングを可視化。
導入方法 – ステーブル版Rustツールチェインをインストール後、以下の手順を実行:
cargo install cargo-cunew
cargo cunew hello_copper # スターター・プロジェクトを作成
cd hello_copper
cargo run # 例を実行し、ログを生成
生成されたプロジェクトには、シンプルなソース→タスク→シンクのパイプライン、justfile(just graph、just sched、just replayなどのショートカットを含む)、およびオプションのバーメタルスキャフォールディングが含まれます。
実行可能な環境 – READMEにはLinux、macOS、Raspberry PiなどのSBC、およびバーメタルマイコン(例:STM32H7)のサポートが記載されています。同じバイナリはWebAssemblyにコンパイル可能で、ブラウザデモ用(BalanceBotやFlight-Controllerデモを参照)。
コミュニティとリソース –
- 本とドキュメント – 完全なCopper本、docs.rs上のAPIドキュメント、ランタイム概要。
- 例 – 実行可能なロボットデモのコレクション(バランスボット、クアッドコプター飛行制御など)。
- 拡張 – コーデック、ZEDカメラ、ViTFly推論クレートは同じワークスペース内に存在。
- サポート – Discord、GitHub Discussions、貢献ガイドライン。
結論 – Copperは、決定論的かつリアルタイムなロボット制御を実現するプロダクショングレードのRustファーストフレームワークであり、シミュレーション、Linux、組み込み環境を橋渡ししながら、組み込みのログ記録と再実行機能を備えています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト