本文へ移動

Extension レジスターの構成

確認済み 2026-11-01

プロトコル v9.0 のブロック リファレンス。オフセットは各ブロックの先頭から始まります。これらは別個のレガシー レジスタ アドレスではありません。各完全なブロックを正確な長さで読み取ります。 パケット フォーマット および の起動順序 を個別に参照してください。

拡張レジスタブロック

オフセット は、ブロック内でゼロからカウントされるフィールドの開始バイトです。以下のオフセットは 10 進数です。セレクターは 16 進表記 ( 0x... ) を使用します。すべての書き込みには 0x91 命令が使用されます。読み取りでは、正確なバイト数を持つ 0x90 を使用します。

セレクター ブロック アクセス バイト
0x90 能力 読む 8
0xA0 構成 読み取り/書き込み 24
0xB8 コントローラーの選択とセッションのセットアップ 書く 3
0xC1 運用上のフィードバック 読む 32
0xC2 チューニングフィードバック 読む 54

機能 — 0x90

オフセット 種類 価値・意味
0–3 4 バイト ASCII ARMC
4 u8 メジャーバージョン: 9
5 u8 マイナーバージョン: 0
6 u8 予約済み: 0
7 u8 通常のコントローラー更新間隔: 1 ms

プロトコルのバージョンは、使用可能なブロックとその正確な長さを定義します。以下に説明するように、選択とセッションのセットアップは 1 つの書き込み専用ブロックを共有します。

構成 — 0xA0

オフセット 種類 フィールド 単位/有効範囲
0 u16 kp_q8 ゲイン × 256 ; 0 – 65535
2 u16 kd_q8 ゲイン × 256 ; 0 – 65535
4 u16 ki_q8 ゲイン × 256 ; 0 – 65535
6 u16 integral_limit モーター出力指令; 0 – effort_limit
8 u16 effort_limit モーター出力指令; 1 – 1000
10 u16 velocity_limit カウント/秒。 1 – 65535
12 u16 acceleration_limit カウント/s²; 1 – 30000
14 u8 velocity_filter_q8 速度フィルターの応答。 1 – 255、高いほどより速く応答します
15 u8 ramp_time_ms 加速ランプ; 1 – 255 ミリ秒
16 u16 velocity_ff.positive_gain_q8 出力/(カウント/秒) × 256 ; 0 – 65535
18 u16 velocity_ff.negative_gain_q8 出力/(カウント/秒) × 256 ; 0 – 65535
20 u16 velocity_ff.effort_limit モーター出力指令; 0 –メイン effort_limit
22 u16 gravity_slew 報酬の変更、モーター出力指令単位/秒。 1 – 10000

ゲインは、目的の値に 256 を乗算して送信されます。その単位は、P の場合は出力/カウント、D の場合は出力/(カウント/秒)、I の場合は出力/(カウント・秒) です。たとえば、P = 4.5 では、エラーのカウントごとに 4.5 の出力単位が生成され、1152 として送信されます。

サーボには というアクティブな構成 が 1 つあります。これを書き込むには、モーターの電源をオフにし、セッションを解除する必要があります。書き込みごとに、フィードフォワード設定を含む構成全体が置き換えられます。無効な設定では、何も変更せずに書き込み全体が拒否されます。 0xA0 を読み取って、受け入れられた設定を確認します。

速度フィードフォワードゲインは負ではありません。フィードフォワード出力制限をゼロにするには、両方のゲインがゼロである必要があります。同じフィードフォワード出力制限が両方向に適用され、メイン出力制限を超えてはなりません。

リセット後、モーター電源を有効にする前にサーボを設定します。保存された設定と代替調整値をホスト上に保持します。アームを支え、モーターの電源をオフにして、実行間でゲインを変更します。

選択とセッションのセットアップ — 0xB8

オフセット 種類 意味
0 u8 モード: 0 レガシー、1 拡張
1 u16 セッション: 従来の場合は 0、拡張の場合は 1–65535

正確なペイロード長は、セッションがリトルエンディアン順であり、 3 バイト です。たとえば、セッション 0x1234 の拡張モードは 01 34 12 です。レガシーモードは 00 00 00 です。無効な組み合わせは、状態を変更せずに書き込み全体を拒否します。どちらのモードでもモーターの電源をオフにし、以前のセッション設定を置き換える必要があります。選択だけでは制御が開始されず、保持位置も取得されません。

レガシー トルク イネーブル レジスタ 40 は、 1 に書き込まれると、準備された拡張セッションを開始します。これには、利用可能なモーター出力、有効な構成、読み取り値が 2 ミリ秒以内で初期化されたセンサー、シャットダウンを必要とする障害がないこと、および使用可能な保存された従来の位置制限が必要です。有効な場合、測定された位置はこれらの制限内にある必要があります。これらのチェックは有効化時に行われるため、セットアップと有効化の間の移動や障害が考慮されます。

トルクオフにより、走行制御と未使用セットアップの両方が解除されます。センサーの故障、保護のシャットダウン、位置制限またはエンコーダーオフセットの変更、キャリブレーションおよび永続設定の保存も、セッションセットアップを無効にします。フィードバックを読んで、実際に制御が開始されたかどうかを確認します。個別の ARM コマンドはありません。以前の 0xBA セレクターと以前の 1 バイト選択ペイロードは拒否されます。

運用フィードバック — 0xC1

オフセット 種類 フィールド / ユニット
0 u32 測定時間、起動からのミリ秒。 4294967295 の後にゼロに戻ります
4 u16 測定番号; 65535 の後にゼロに戻ります
6 u16 セッション
8 u16 受け入れられたターゲット配列
10 u16 受け入れられた重力シーケンス
12 u16 フラグ、以下
14 i32 測定位置、Q8 カウント
18 i32 フィルタリングされた測定速度、Q8 カウント/秒
22 i16 適用された出力。エンコーダー数の増加に伴い正の値が続きます
24 i16 ベースラインに対する電流センサーの読み取り値。アンペアではありません
26 u8 供給電圧、0.1 V 単位
27 u8 検証済み温度、°C
28 u8 従来のサーボ障害/ステータス フラグ
29 u8 予約済み: ゼロ
30 u16 読み取り時の測定経過時間、ミリ秒。最大報告値 65535
フラグビット 設定時の意味
0 サンプルは新鮮で、現在のアーム制御状態に使用可能です
1 コントローラーがアクティブ
2 予約済み: ゼロ
3 モーター出力制限
4 アームドライブ有効
5 トルク有効化によりセッションが開始されました
6 予約済み: ゼロ
7 出力準備完了
8 重力コマンドを受信しました
9 予約済み: ゼロ
10 検証済みの温度が利用可能
11 予約済み: ゼロ
12 モーションターゲットがアクティブです
13 予約済み: ゼロ
14 アームコントローラーを選択しました
15 予約済み: ゼロ

各フラグは 1 ビットです。ビット 0 の値は 1 、ビット 1 の値は 2 、ビット 2 の値は 4 などです。複数のフラグを一度に設定できます。ビット 12 がクリアされているアクティブなコントローラーは、宛先を保持しています。モーション ビットがクリアされているだけでは、モーターに電力が供給されていること、または準備が整っていることを意味するものではありません。

フィードバックは記録された測定値を説明します。ホストがサーボを読み取る前にサーボの状態が変化した場合、一部のフィールドに以前の状態が記述される場合があります。ビット 0 は、測定が 2 ミリ秒を超えた場合、コントローラーが選択されていない、作動状態、駆動中、または準備完了状態になっていない場合、またはそのセッション/シーケンス番号が一致しなくなった場合にクリアされます。ビット 0 、経過時間、セッション、および受け入れられたシーケンスを一緒にチェックします。

位置とヘルスの測定値は、レガシー モードおよびモーター電源オフでも利用できます。使用できない制御フィールドはゼロです。サンプル シーケンスは、ホストが測定値を読み取るたびではなく、測定値が取得されるときに進みます。同じミリ秒のタイムスタンプを共有するサンプルを区別します。予期しない大きな温度変化は、ここに表示される前に複数の測定値にわたってチェックされます。以下の保護制限を参照してください。

チューニングフィードバック — 0xC2

バイト 0 – 31 のレイアウトは、まさに 0xC1 です。残りのバイトは次のとおりです。

オフセット 種類 フィールド / ユニット
32 i32 基準位置、Q8 カウント
36 i32 基準速度、Q8 カウント/秒
40 i16 設定された制限の後、モーター保護の前に要求された出力
42 i16 P貢献、モーター出力指令
44 i16 D 貢献、モーター出力指令
46 i16 全面的な貢献、モーター出力指令
48 i16 現在適用されている重力補正、モーター出力指令
50 i16 ローカル速度フィードフォワード、エフォート
52 u16 累積された追加のコントローラー遅延 (ミリ秒)。最大 65535

コントローラーの更新に通常の 1 ミリ秒 ( elapsed_ms − 1 ) を超える時間がかかる場合は、遅延カウンターによって追加時間が追加されます。失われたメッセージはカウントされません。報告される P および D の寄与は ± 32767 に制限されているため、表示された値を加算しても完全な内部計算が再現されない可能性があります。

サーボは、要求された場合にのみフィードバックを送信します。通常のモニタリングには 0xC1 を使用し、チューニングに追加の値が必要な場合には 0xC2 を使用します。 0xC2 の読み取りにはすでに 0xC1 のすべてが含まれているため、両方を読み取ると不必要にトラフィックが追加されます。個別の読み取りでは、異なる瞬間を参照できます。タイムスタンプとサンプル番号を比較します。

解釈ルール

effort は符号付き PWM 出力指令であり、アンペア単位の電流や実測トルクではありません。currentAdcDelta は電流センサーの相対読取値で、実際の電流を得るには別途変換が必要です。Q8 の位置と速度では単位が異なります。256 で割ると固定小数点のスケールは除かれますが、カウントが角度に変換されるわけではありません。関節角度には物理的な対応付けが必要です。

Extension 温度フィードバック チェックにより、孤立したジャンプが抑制されます。モーター温度保護では依然として生の測定値が使用されます。C1/C2 にジャンプがないことは、保護に影響を与えないことを証明するものではありません。


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