本文へ移動

運動制御の仕組み

確認済み 2026-11-01

宛先コマンドは固定モーター出力を直接設定しません。 Extension モードでは、ホストがターゲットと制限を提供します。各サーボは軌道を計画し、動きを測定し、出力を計算します。このページではそれらの関係について説明します。実際のシーケンスについては、 チューニングガイド を使用してください。

拡張モードの仕組み

ホストターゲット、サーボモーションプランニング、位置フィードバック

ホスト は、サーボに接続されているコンピューターまたはコントローラーです。 ターゲット : 目的地と速度制限を送信します。加速と補償の設定は、モーター電源を有効にする前に構成されます。各サーボは次のようになります。

  1. 目的地に向かってスムーズな移動を計画します。
  2. 位置を測定し、速度を推定します。
  3. 計画した動きに追従するようにモーター出力を調整します。
  4. 移動終了時に目的地を保持します。

現時点での計画された位置と速度は、 参照 と呼ばれます。コントローラは測定された動きと比較するため、基準位置と実際の位置が異なる場合があります。

このドキュメント全体で使用されるいくつかの用語:

期間 意味
エンコーダーカウント 位置測定ユニットと、公称 4096 は 1 回転あたりのカウント
モーター出力指令 符号付きモーター出力コマンド: その符号は方向を設定し、そのサイズは出力強度を設定します。
制御ゲイン コントローラーの反応の強さを決定する設定
フィードフォワード 位置や速度のエラーを待つのではなく、予想される需要から計算される追加のモーター出力
フィードバック サーボから返される測定値とステータス
レジスター 数字で識別される設定または読み取り値
セッション 拡張制御の 1 つの期間。ホストによって提供される番号によって識別されます。

モーター出力指令は、モーターへの電気出力を制御するために使用される単位である PWM 単位で表されます。この拡張により、どちらの方向でも最大 1000 までの出力制限が可能になります。これらの値は、トルクや電流を直接測定したものではありません。

S字カーブ動作

S字カーブ動作の概念図

YouTube で見る · MP4

加速とブレーキをより緩やかにします。曲線は時間の経過に伴う加速を示しています。概念図であり、測定されたハードウェア データではありません。

S字カーブは加速度を徐々に増減させます。突然フル加速やブレーキをかけるのではなく、サーボは動作の各部分に緩やかに出入りします。これにより、機械的な衝撃や振動を軽減できます。

休息から休息への完全な動きには次の段階があります。

段階 何が起こるか
1 徐々に加速が増していく
2 サーボは一定の速度で加速します
3 加速度は徐々にゼロに減少します
4 サーボは一定の速度で動きます
5 徐々にブレーキが強くなる
6 サーボは一定の速度でブレーキをかけます
7 サーボ停止に伴い徐々にブレーキが弱くなる

要求された速度または加速度に達するのに十分な距離がない場合、短い移動はステージをスキップします。加速時と減速時に同じ加速制限が適用されます。

ramp_time_ms 設定は、加速がゼロから限界まで上昇するまでにかかる時間を制御します。ランプが長いほど変化は緩やかになりますが、一般に加速または停止するためにより多くの時間と距離が必要になります。

ジャーク は加速度の変化率を意味します。このプランナーはジャークを制限し、加速度が滑らかに変化します。ジャーク自体は、ステージ間で突然変化する可能性があります。そのおおよその大きさは次のとおりです。

jerk = 1000 × acceleration / ramp_time_ms    [counts/s³]

移動中の目的地変更

新しいターゲットは、その位置、速度、加速度を維持しながら、現在計画されている動作を継続します。同じ宛先を再度送信しても、移動は再開されません。移動中は要求された速度制限を維持してください。計画された動きが停止すると、次の動きに向けて変更される可能性があります。加速とランプ時間は設定に属しており、変更するにはモーターの電源をオフにし、セッションを解除する必要があります。

保存された従来のポジション制限外の宛先は、最も近い制限 に調整された です。要求された速度も、設定された制限に制限されます。サーボは、すべての動きに対して設定された加速度を使用します。ゼロ速度または設定された加速度は無効です。

計画された動き全体が位置制限内に収まらなければなりません。したがって、サーボがその範囲内で停止するには速すぎる限界にすでに近づいている場合は、目的地自体が許可されている場合でも、新しいターゲットは拒否される可能性があります。

到着すると、モーターの電源がオンになった状態で、サーボが自動的に目的地を保持します。測定された位置には、摩擦、負荷、出力制限、チューニングなどにより多少の誤差が生じる場合があります。押し続けると位置誤差が修正されます。モーター出力が固定値で固定されることはありません。

各サーボは独自の動きを計画します。複数のターゲットを一緒に送信しても、すべてのサーボが同時に到着することは保証されません。

共有ポジション制限

レガシー制御と拡張制御は同じ位置制限レジスタを使用します。 9 – 10 には最小値が含まれ、 11 – 12 には最大値が含まれます。それぞれは、サーボの構成された方向と位置の補正を含む、補正されたエンコーダー カウントの符号なし 16 ビット値です。個別の拡張位置制限設定はありません。

キャリブレーションにより、エンコーダーのカウントが物理的な位置に割り当てられます。 キャリブレーション ツール は、キャプチャされた基準ポーズを 2048 として読み取り、移動限界を測定します。このカウントは自動的に 0 度の関節角度になるわけではなく、測定された移動の中点がキャプチャされた基準値に置き換わることはありません。重力モデルとビジュアライゼーションには、一致するカウントと角度のマッピングが必要です。

ファームウェアは制御開始時にこれらのレジスタを読み込みます。制限を有効にすると、最小値は最大値を下回る必要があり、最大値は 32767 以下である必要があり、測定された位置は範囲内にある必要があります。そうしないと、モーターが動かずに起動に失敗します。プランナーは、ブレーキを含む動作全体を、読み取った範囲内に保ちます。

最小値と最大値が等しいと移動制限 が無効になり、従来の動作と一致します。 Extension コマンドは、サポートされている位置範囲 (32767 ~ 32767 カウント) 内に留まります。

いずれかの制限への書き込みが受け入れられると、アクティブな拡張セッションが終了し、RAM 内でのみ適用される書き込みを含め、モーターの電源がオフになります。変更された値を使用するために新しいセッションを準備します。通常のレガシー設定の永続性は引き続き適用されます。

PID コントローラー

pid制御の概念図

YouTube で見る · MP4

サーボによる位置誤差の補正方法を調整します。灰色の曲線は振動を示しています。白い曲線は、より減衰した応答を示しています。破線がターゲットです。概念図であり、測定されたハードウェア データではありません。

PID コントローラーは、計画された動きに従うようにモーター出力を調整します。その 3 つの設定には異なる役割があります。

設定 何をするのか 主なトレードオフ
P — 位置補正 モーターを計画された位置に向かって引っ張ります。エラーが大きくなると、より多くの修正が行われます P を高くすると誤差は減少しますが、発振が発生する可能性もあります
I — 累積補正 エラーが続く場合は追加の修正を蓄積します 永続的なエラーを減らすことができますが、オーバーシュートや整定時間が長くなる可能性があります
D — 速度補正 計画速度と測定速度の差に応答します。保持中に動きに抵抗する ダンピングを改善できますが、ノイズの多い速度読み取り値に対する過剰な応答により、出力が不均一になる可能性があります。

計算は次のとおりです。

position error = planned position − measured position
speed error = planned speed − filtered measured speed

motor output = Kp × position error
             + Kd × speed error
             + accumulated I correction
             + gravity compensation
             + velocity feedforward

結果は、設定された最大出力に制限されます。モーターを保護すると、さらに減少する可能性があります。フィードバックは要求された出力と適用された出力の両方を報告するため、ホストはモーターがいつ制限されているかを確認できます。

測定された速度は、最近の位置読み取り値と調整可能なフィルターを使用して平滑化されます。 velocity_filter_q8 設定を大きくすると、変更に対する応答が速くなりますが、除去される測定ノイズは少なくなります。

過剰な累積補正の防止

I の貢献には独自の制限があります。また、コントローラーは、モーター出力がすでに制限されている方向にコントローラーが構築され続けるのを防ぎます。これは一般に アンチワインドアップ と呼ばれます。モーターがその制限から回復するのを助けるために、さらに減少する可能性があります。 Ki をゼロに設定すると、I 補正が無効になり、クリアされます。

サーボが少なくとも 50 ミリ秒間ほぼ静止しており、位置誤差が 1 エンコーダ カウント以内にある場合、I の累積は停止します。 P、D、および両方の形式のフィードフォワードはアクティブのままです。モーター出力をオフにすると、I 補正は解除されます。

速度フィードフォワード

速度フィードフォワードの概念図

YouTube で見る · MP4

サーボ内部で計算された計画速度に基づいてモーター出力を加算します。どちらの曲線も時間の経過とともに左から右に進みます。概念図であり、測定されたハードウェア データではありません。

速度フィードフォワードは、追跡エラーが発生する前に、移動に必要とされる出力の一部を供給します。計画速度からサーボ 内で が計算されます。

velocity feedforward = velocity gain × planned speed

各方向に 1 つのゲインがあり、結果の出力には制限があります。どちらのゲインも負ではありません。移動方向によって出力符号が決まります。その出力制限は、メイン モーターの出力制限を超えてはなりません。

サーボは自身の計画速度を知っているため、補正は加速と制動に自動的に追従し、計画された動作が停止するとゼロになります。ホストはその設定のみを提供します。連続的な速度フィードフォワード値を送信する必要はありません。

この機能は、モーターの電源がオフでセッションが解除されている間に、 0xA0 の他の設定と一緒に構成します。無効にするには、両方のゲインとその出力制限をゼロに設定します。

重力補正

重力補償の概念図

YouTube で見る · MP4

ホストが寄与を計算し、サーボがそれを適用します。下向きの矢印は重量を表します。上向きの矢印はサポートを表します。概念図であり、測定されたハードウェア データではありません。

重力補償は、アームの重量とその荷重を支えるのに必要な出力を提供します。これは、モーターが静止しているとき、つまり速度フィードフォワードがゼロのときでも役立ちます。

ホストは重力補償 を計算し、符号付き出力値を各サーボに送信します。計算には、ジョイント角度、アーム寸法、リンク重量、ペイロードを使用できます。ホストは推定負荷をサーボの出力単位に変換する必要があります。ファームウェアには腕のモデルは含まれていません。

方向が重要です。エンコーダー数の増加に伴い、正の拡張出力が続きます。アームのジョイント角度の規則は反対方向に実行される可能性があるため、ホストの変換ではそれを考慮する必要があります。

各重力更新には、必要な出力値が含まれます。 スルー レート (補償が変化する速度 (1 秒あたりの出力単位)) は、メイン設定の一部であり、セッション全体を通じて固定されます。

サーボは要求された値に向かって補償を徐々に変更し、それをコントローラーの出力に追加します。すべての寄与は合わせて、設定された出力制限とモーター保護の影響を受け続けます。

重力更新が到着しなくなった場合、サーボは設定されたスルー レートで最後に要求された補正に向けて続行し、その値を維持します。 有効期限タイマーはありません。ホストは、腕のポーズや負荷が変化したときに補正を更新する必要があります。トルクイネーブルレジスタ 40 をゼロに設定すると、補償がクリアされ、モーター出力がオフになります。

説明をチューニングに当てはめる

短い移動が要求された速度に達しない場合は、制限速度を上げても速くならない可能性があります。出力の飽和状態が長引く場合は、ゲインを高めるだけでなく、負荷、軌道、許容されるモーター出力指令を確認する必要があります。エンコーダはその基準に従っているが、ツールが物理的な点を見逃している場合は、キャリブレーション、ジオメトリ、機構をチェックしてください。

の計画および測定された動作 と、 の位置精度と再現性 を区別します。上記の 4 つの制御図とアニメーションは、測定されたサーボ プロットではなく概念的なものです。


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