重力補償の設定
結果: は自分の腕に一致するモデルを使用し、制御が終了したときに何が起こるかを理解します。検証済みのキャリブレーションと コントローラー ファイル が必要です。
モデルの一致を確認してください
ホストは、 の測定位置 から力を計算し、それをサーボに送信します。ファームウェアにはアームのジオメトリが含まれていません。エンコーダ数の増加に伴い、積極的な取り組みが行われます。モデルは物理的な関節の方向を考慮する必要があります。
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 。