コマンドとリファレンス
最終更新
参照用の資料です。頭から読むものではありません。
3 つのツールと、どれを使うか
初めての人が最も混同する点です。Microduck には 3 つのコマンドラインツールがあり、動く場所も解決する問題も異なります。
| ツール | 動く場所 | 使う場面 |
|---|---|---|
robotctl |
ロボット上 | 日常のすべて。診断、設定、走行、更新。リリースに同梱されています。 |
duckctl |
手元の PC | ロボットにネットワークが無い、あるいは ssh を使いたくないとき。Bluetooth LE 経由。 |
scripts/dev-push.sh |
手元の PC | ロボットのコードを変更し、CI を待たずに入れたいとき。 |
判断は 3 つのルールで済みます。
- ssh で入れる →
robotctl。 - ロボットが一度も wifi に繋がったことがない →
duckctlしかありません。wifi connectは無線経由で、それ自体はネットワークを必要としません。この鶏と卵の唯一の出口です。 duckctlをロボットに入れないでください。 リリースの何もこれに依存していません。
権限のルール
- 読み取り専用のコマンドに権限は不要です。
- ロボットの状態を変える操作にはすべて
sudoが必要です(あるいはconfigdの--allow-user/--allow-group、updater.tomlのallow_uids/allow_gids)。
必ず走らせる 3 手順
症状が何であれ、まずこの 3 つです。
robotctl version # 動いているコードは想定どおりか
robotctl health # 異常はあるか、理由は何か
robotctl monitor # 要求値と適用値、そしてクランプされた理由
version が最初なのは、更新後に古いコードのまま動いているデーモンが、いま直したはずの修正が効いていない状態とまったく同じに見えるからです。
開発ボードではもう 1 つあります。robotctl health の units ブロックが、各デーモンがどのリリースから起動したかを列挙し、インストール済みと食い違えば名指しで警告します。
さらに詳しい資料 (中国語)
- robotctl コマンドリファレンス
- duckctl — ネットワークの無いロボットに届く
- システムアーキテクチャ — 7 つのデーモンの分担
- 用語対照
このセクション
- Microduck 公式資料の入口
Pollen Robotics のリポジトリ、ドキュメント、製品ページ、メディア素材を、それぞれが解決する問題ごとにまとめたもの。
- robotctl version
各デーモンの実行中バージョンとインストール済みバージョンを比較し、食い違えば警告する。
- sim2real とは、そしてなぜ最も難しいのか
シミュレーションで学習したポリシーを実機へ移すこと。シミュレーションでうまく歩き実機で転ぶのは、通常の結果です。
- 用語対照
Microduck の文脈で特定の意味を持つ英語用語と、このプロジェクトでの意味。
- BAM アクチュエータモデル
Rhoban のサーボ物理モデル。サーボを理想トルク源として扱うことが、sim2real 失敗の最も一般的な原因です。
- robotctl health
ハードとソフトを 1 つのレポートにまとめ、不健全なら非ゼロで終了する。
- robotctl コマンドリファレンス
robotctl の全コマンドを用途別にまとめたもの。権限のルール付き。
- Microduck のシステム構成
7 つのデーモンがそれぞれ何を持ち、なぜその境界で分かれているか、そしてどう通信するか。
- robotctl monitor
要求された値と実際に適用された値をリアルタイムで並べ、食い違う理由を示す。
- ドメインランダム化
学習時に物理パラメータをランダム化し、現実の分布に対して頑健にする手法。観測ノイズを足すのとは別物です。
- duckctl — ネットワークも ssh も無しでロボットに届く
Bluetooth 経由でロボットを見つけ、wifi に繋ぎ、コンソールを開き、更新を入れる。一度もネットワークに繋がったことがなくても。
- sudo robotctl configure
robotd.toml の対話エディタ。保存前にデーモン自身のローダーで検証される。
- バックラッシュと、エンコーダがどちら側にあるか
歯車の遊び。Microduck はサーボごとに ±1° をモデル化しており、要点はエンコーダがそれを通して読むことです。
- 61 次元の観測契約
すべてのポリシーが同一の観測形式を共有し、それが歩行・復帰・技のホットスワップを可能にしています。
- sudo robotctl robot init
関節に通電し、約 2 秒かけてホームポーズへ移行する。
- ローカルでビルドしてボードに入れる
CI を待たずに、クローンから直接クロスコンパイル・署名して ssh 経由で 1 分ほどで導入する。
- deadman — 停止ボタンが無い理由
新しい指令が一定時間届かなければ速度をゼロにする仕組み。パッドのプロセスが落ちたときロボットを止めているのはこれです。
- sudo robotctl robot relax
関節の電源を切る。支えがなければロボットは崩れ落ちる。
- 開発ボード早見表
開発ボードでしか意味のないコマンドと、修正が「入っているのに効かない」ように見える再起動の罠。
- golden — 起動時リカバリの最終防衛線
常に安定版に保たれるフォールバックのリリース。ブランチビルドが golden になることはありません。
- robotctl pad status
パッドの接続状態と padd ドライバの状態を別々の行で報告する。
- sudo robotctl pad pair
ペアリングモードのパッドを探してボンドする。パッド 1 台につき一度だけ。
- ヘルスゲートと自動ロールバック
更新のたびに健全性を確認し、通らなければ自動で戻す。自分のビルドを入れてもボードが文鎮にならない理由です。
- sudo robotctl pad forget
パッドのボンドのうち、ロボット側の半分だけを削除する。
- コントロールプレーンとデータプレーン
すべてのデーモンが 1 つの JSON-RPC 契約を共有しますが、センサーのストリームはそこを通りません。
- robotctl quack
ロボットを鳴かせる。2 台のアヒルを見分ける最も確実な方法。
- 投影重力 — ロボットはどうやって転んだと知るか
状態ストリーム上で唯一の IMU 量。直立時はおよそ [0, 0, -1] で、転倒判定はここから導かれます。
- robotctl chorale
複数のアヒルが四声で合唱する。既定でオフ、そしてオフのときは不可視。
- ポリシーのホットスワップ
歩行・復帰・技のポリシーを実行中に切り替える。再起動も停止も不要です。
- robotctl net status
現在の SSID、電波強度、アドレスを報告する。
- 音声バンク — 個体ごとに鳴き声が違う
音声バンクは SoC のシリアルから生成されるため、鳴き声でどの個体に繋がっているか分かります。
- robotctl net scan
ロボットに周囲の無線ネットワークをスキャンさせる。
- sudo robotctl net connect
ロボットを無線ネットワークに参加させる。
- sudo robotctl net forget
保存済みの無線ネットワークを削除する。
- robotctl system info
ロボットの名前、シリアル、稼働時間を報告する。
- robotctl system pin
この個体のペアリング PIN を表示する。
- sudo robotctl system set-name
ロボットを改名する。そして改名が必須になる状況。
- sudo robotctl system set-pin
6 桁のペアリング PIN を設定する。
- sudo robotctl system reboot
ロボットを再起動する。そして「とりあえず再起動」の多くにはもっと的確な手がある。
- robotctl update status
インストール済みバージョン、利用可能な更新、更新システムの状態を報告する。
- robotctl update check
新しいリリースがあるか問い合わせる。インストールはしない。
- sudo robotctl update apply
更新をインストールする。すべて署名検証・ヘルスゲート・巻き戻し可能。
- sudo robotctl update rollback
意図的に 1 つ前のバージョンへ戻す。
- robotctl update log
更新履歴を表示する。ロボットが自分で巻き戻した記録も含む。
- robotctl update show
特定の更新で何が起きたかを表示する。
- robotctl update watch
進行中の更新を段階ごとに追う。
- sudo robotctl update select
ダウンロード済みのバージョンへ、再ダウンロードなしで切り替える。
- sudo robotctl update pin
特定のバージョンに固定する、あるいは固定を解除する。
- sudo robotctl update reset-to-golden
起動時リカバリのフォールバックである golden に戻す。