本文へ移動

重力補償の設定

確認済み 2026-11-01

結果: は自分の腕に一致するモデルを使用し、制御が終了したときに何が起こるかを理解します。検証済みのキャリブレーションと コントローラー ファイル が必要です。

モデルの一致を確認してください

ホストは、 の測定位置 から力を計算し、それをサーボに送信します。ファームウェアにはアームのジオメトリが含まれていません。エンコーダ数の増加に伴い、積極的な取り組みが行われます。モデルは物理的な関節の方向を考慮する必要があります。

2 つのモデルは、空のグリッパーを備えた直立アームを示しています。

host/arm-control/models/のファイル 腕
arm-upright-empty.json SO-102
so101-upright-empty.json SO-101

どちらも M2 ~ M4 の結合項と、M1、M5、M6 の明示的なゼロ エフォートを定義します。付属の 6 モーター アーム セットアップでは、各モーターのプロファイルを持つ ID 1 ~ 6 を使用します。それらのキャリブレーションは、特定のエンコーダ オフセット、ユニット解像度、および反転フラグをバインドします。 preflight は、制御 を開始する前に、これらの値をモーター と比較します。

アーム名または2048の参照値が不十分です。別のアームのオフセットをモーターにコピーしたり、チェックに合格するために encoderCalibration のみを変更したりしないでください。異なるキャリブレーション、取り付け、形状、ペイロードには、適合または適合したモデルとハードウェアの検証が必要です。

検証済みモデルを接続する

tools/poses/controller.local.json の場合、この フィールドを既存の JSON オブジェクト に追加します。この行は完全な構成ではありません。

"gravityModel": "../../host/arm-control/models/arm-upright-empty.json"

このパスでは、SO-102 モデルが選択されます。 SO-101 ファイルは so101-upright-empty.json です。そのステータスでは、意図したアームとモーション パスの検証が明示的に必要です。独自のモデルの相対パスを使用し、JSON フィールド間のカンマを保持します。

各プロファイルの gravitySlewEffortPerS は、重力の作用の変化の速さを制限します。 effortLimit はモーターの総出力を制限します。 gravityModel がない場合、ツールはモデルなしで実行され、セッションを再利用するときに保持された重力がクリアされます。ゼロ以外のスルー設定だけでは補償は有効になりません。

引っ越し前にチェック

録画で通常のプレビューを実行します。

macOS / Linux
npm run replay -- tools/poses/controller.local.json POSES.json
Windows PowerShell
npm.cmd run replay -- tools/poses/controller.local.json POSES.json

キャリブレーションの不一致、入力の欠落、または過剰な計算量については調査が必要です。モデルまたはモーターの制限を超える結果は、黙ってクリップされるのではなく拒否されます。負荷を見直しずに、エラーを抑制するためだけに制限値を上げないでください。

--run を使用すると、コントローラーは最初のモーション ターゲットの前に重力を計算、送信、確認します。サポートされているメカニズムで、いくつかのポーズと荷重で方向と動作を確認します。 1 つのポーズが成功しただけでは、ワークスペース全体が検証されるわけではありません。

制御中および終了後

フィードバックと重力は 1 つのリーダーを共有し、ほぼ 50 ミリ秒ごとに更新されます。ホストの鮮度チェックと期限チェックでは、ホストがリアルタイム システムになるわけではありません。

正常に完了すると、最終的な補正がサーボに残ります。 ポーズやペイロードの変更に適応しなくなりました。 メッセージが欠落している場合も重力はクリアされません。ファームウェアは、設定されたスルー レートで最後のリクエストに近づき、それを保持します。トルクオフでクリアします。 が最初の楽章を終了する を参照してください。

モデルの作成

制御されるすべてのモーターには、ゼロ補償エントリを含む明示的なモデルが必要です。結合項によって使用されるすべての入力は、制御および測定される必要があります。用語では coefficient × sin(angle) または coefficient × cos(angle) を使用します ( angle = offsetRad + sum(counts[id] × weights[id]) )。角度はラジアン、係数は PWM モーター出力指令単位です。定数項には重みがありません。

ログベースのフィッティングと独立した検証は、 チューニング プロセス に属します。当てはめられた係数は測定された物理的なトルクではなく、検証されたモデルを自動的に構成するものではありません。


ドキュメント ホーム · ソース リビジョン: a995f77 。 Extension 9.0 。