実機でだけ現れる追従誤差は、制御器の調整不足だけでなく、制約の表現方法にも原因があります。
結論:制約は一つの上限値にまとめない
ロボットの軌道がシミュレーションでは追従できるのに、実機では誤差が増えたり停止したりする場合、アクチュエーターの非理想特性を層ごとに分けて扱う必要があります。基本となる流れは、指令値、量子化、出力制限、伝達機構、実機状態を分離してモデル化し、シミュレーターと低レベル制御器の両方に同じ制約を適用することです。
上位計画には、位置だけでなく速度、加速度、ジャーク、動力学から得られるトルク制約を入れます。さらに、量子化による誤差やバックラッシュの不確実性は、安全余裕、方向反転の回避、またはロバストな可到達集合として反映します。
問いが重要な理由
幾何学的に正しい経路でも、時間の割り当てが速すぎれば、必要なトルクや加速度が実機の能力を超えます。また、指令値を細かく変化させても、通信や制御テーブルの分解能を下回れば、実際の出力は変化しません。減速機などにバックラッシュがあれば、方向を反転した直後の指令が出力軸の運動に直結しないこともあります。
これらを低レベル制御だけで吸収すると、上位計画が「実行できない軌道」を生成し続けます。制約を計画層まで伝えることで、軌道生成の段階で実行可能性を判定できます。
前提となる用語
飽和は、入力または出力が上限・下限に達し、それ以上増えない状態です。制御入力のクリップ、アクチュエーター内部で生成できる力・トルクの制限、関節へ実際に伝達される力・トルクの制限は、同じものではありません。
量子化は、連続値を有限の刻みで表現する処理です。指令値側とセンサー側を分け、量子化幅、丸めまたは切り捨て、ゼロ次ホールド、サンプリングや遅延を確認します。
バックラッシュは、伝達機構の遊びによって入力と出力の関係が方向依存になる現象です。単純な加法ノイズではなく、入力方向、相対変位、接触状態を持つヒステリシスやプレイ演算子として扱うのが適切です。
内部の仕組み:制約を層に分解する
第一に、コントローラーが生成した指令を量子化します。指令単位が粗い場合、微小な補正は同じ離散値に丸められます。第二に、速度リミッターや電流リミッター、入力範囲の制限を適用します。第三に、アクチュエーターが生成できる力・トルクを制限します。最後に、減速機などの伝達機構を通して関節へ出力される力・トルクを計算します。
この分離が必要なのは、入力をクリップしても、実際の出力トルクが同じ割合で制限されるとは限らないためです。MuJoCoのアクチュエーター機構でも、制御入力、生成力、関節へ伝達される力が別の段階として扱われています。一方、標準的なロボット制御インターフェースでは、位置・速度・加速度・ジャーク・努力量などは扱えても、量子化幅やバックラッシュ状態まで標準化されているとは限りません。伝達機構とハードウェア固有の非線形性は、追加のモデルとして実装します。
計画側では、経路上の位置を時間パラメータ化し、速度・加速度と動力学的なトルク制約を同時に評価します。時間スケーリングを遅くすれば、必要トルクが下がる場合がありますが、速度依存の限界や制御遅延があるため、単純に低速化すれば十分とは限りません。
flowchart LR P["上位計画"] -->|"位置・速度・加速度・ジャーク・トルク制約を適用"| T["時間パラメータ化された軌道"] T --> C["低レベル制御器"] C --> Q["指令値量子化"] Q --> R["速度・入力範囲の制限"] R --> E["電流・努力量の制限"] E --> A["アクチュエーターの生成力・トルク制限"] A --> B["バックラッシュ・伝達機構モデル"] B --> J["関節出力"] J --> M["実機状態"] M --> S["センサー量子化・サンプリング・遅延"] S --> C M --> I["実機同定・検証"] I -.->|"制約値と不確実性を更新"| P I -.->|"層ごとのモデルを更新"| Q
計画に反映する選択肢
| 対象 | 推奨するモデル | 上位計画への反映 |
|---|---|---|
| 連続トルク限界 | 通常運転で継続可能な値 | 基本の動力学制約として使用 |
| 短時間ピーク限界 | 時間や条件付きの上限 | 短い区間に限定し、連続値と分離 |
| 指令値量子化 | 指令単位、丸め、保持 | 微小な指令変化を実行可能とみなさない |
| センサー量子化 | 観測値の刻みと更新周期 | 状態推定の不確実性や余裕に反映 |
| バックラッシュ | プレイ演算子、ヒステリシス、伝達機構モデル | 方向反転回避、余裕、ロバスト計画 |
| 温度・電圧・速度依存 | 条件ごとの限界値 | 運転状態に応じて保守的な制約を選択 |
制約値は、定格値、連続許容値、短時間ピーク値を区別します。メーカーが示す最大トルクや最大電流は瞬間的なピーク値の場合があり、計画にそのまま使うと連続運転で余裕を失う可能性があります。通常の計画には、同定誤差と制御遅延を含む保守的な連続許容値を使い、ピーク値は時間や条件を限定して扱います。
バックラッシュをどう扱うか
バックラッシュに対する方法は一つではありません。方向反転の多い軌道を避ける、反転区間に余裕を設ける、低レベル制御で補償する、といった設計があります。位置決め精度や接触タスクへの影響が大きく、幅を把握できる場合は、バックラッシュ幅を不確実性集合としてロバスト計画に組み込む方法も選べます。
対称なデッドゾーンで十分か、方向依存のヒステリシスが必要か、弾性や摩擦も組み合わせるかは、対象となる伝達機構と要求精度で判断します。バックラッシュを単純なノイズとして加えるだけでは、方向反転時の履歴を表せません。
同定と実機検証
まず低速の正逆掃引で、方向反転時の遅れと遊びの幅を調べます。次に複数速度で加減速を行い、指令値、実測位置、電流、トルクを同時に記録します。これにより、飽和点、量子化幅、バックラッシュ幅、方向反転時の遅れを別々に推定します。
メーカー仕様を参照する場合も、モーター側エンコーダー、出力軸の位置表現、通信上の指令単位を区別します。仕様上の分解能を、そのまま関節空間での有効分解能とみなせるとは限りません。温度、電圧、速度による限界変動や、電流からトルクへの変換係数も機種とファームウェアに依存します。
実機検証では、計画器とアクチュエーター実装で制御周期、サンプリング、量子化、遅延の条件をそろえます。計画軌道を再生するだけでなく、制約境界付近の追従誤差と飽和している時間も評価します。これらが一致しなければ、シミュレーターだけを調整するのではなく、どの層の制約が異なるかを切り分けます。
採用判断の基準
単純な位置移動で方向反転が少なく、要求精度も粗い場合は、連続トルク・速度・加速度制約に量子化余裕を加える構成から始められます。高速軌道や負荷変動がある場合は、ピーク値と連続値を分離し、動力学制約を時間パラメータ化へ組み込みます。
接触、精密位置決め、頻繁な反転がある場合は、バックラッシュを明示的にモデル化する価値が高まります。実測データが不足している間は、単一の推定値ではなく、幅を持つ保守的な制約として扱う方が安全です。標準インターフェースの上限項目だけで足りない場合は、ハードウェア固有モデルをシミュレーター、制御器、計画器の間で共有します。
まとめ
アクチュエーター制約のモデル化では、入力、量子化、出力飽和、伝達機構、観測を一つに混ぜないことが出発点です。軌道計画には速度・加速度・ジャーク・トルク制約を同時に適用し、連続許容値とピーク値を分けます。量子化は指令とセンサーを分離し、バックラッシュは履歴を持つ非線形として表現します。
実機同定で得た制約を同じ周期・遅延条件で各層に反映すれば、上位計画が実機の能力を超える問題を早い段階で検出できます。
参考情報
- MuJoCo Documentation: Computation - Actuators
- ros2_control Documentation: Joint Limits
- A New Approach to Time-Optimal Path Parameterization Based on Reachability Analysis
- Controlling Mechanical Systems with Backlash
- DYNAMIXEL XH430-W350 Product Manual and Control Table
- DYNAMIXEL X-Series e-Manual: Operating Limits and Control Table
計画器と実機が同じ制約を見ているかを確認することが、Sim-to-Realの差を縮める出発点になります。
AI利用に関する注記
本サイトの記事は、複数のAIエージェントによる調査・執筆・レビューを経て公開しています。正確性と品質の向上に努めていますが、内容については必ず一次情報をご確認ください。