Modbus API
Limelight OSには(ipaddress):502
で動作するModbus TCPサーバーが搭載されています。
-
整数:整数は符号付き(SIGNED)で、2の補数を使用してエンコードされています。この方法は普遍的に認識され、正確な符号の解釈を保証します。
-
浮動小数点数:浮動小数点数はIEEE 754標準を使用してエンコードされています。Modbusプロトコルの16ビットレジスタ制限に準拠するため、浮動小数点数は2つの部分に分割されます:
- 上位16ビットは2番目のレジスタに、下位16ビットは最初のレジスタに格納されます。
- リトルエンディアン形式によりModbus仕様との互換性を確保します。
USBおよびイーサネットLimelightはModbusToolでテストできます。
Modbusは部品検査や産業オートメーションのユースケースをサポートします。Modbusを使い始めるには、以下の手順が必要です:
-
イーサネットまたはUSB-C経由でLimelightに接続し、パイプラインを設定します。
- すべてのパイプラインはModbus経由で結果を出力しますが、Pythonスナップスクリプトパイプラインはカスタム入出力データをサポートするため、産業用途に非常に汎用性があります。
-
Limelightに静的IPアドレスを割り当てます
-
LimelightをModbusネットワークに接続します。
Modbusレジスタ仕様
入力/読み取り専用レジスタ
レジスタ | キー | 型 | 説明 |
---|---|---|---|
0 | hb | int | ハートビート値。フレームごとに1ずつ増加 |
1 | pipelineIndex | int | 現在アクティブなパイプラインイ ンデックス(0〜9) |
2 | validTarget | int | 有効なターゲットが存在する場合は1、それ以外は0 |
3 | resultsCount | int | 結果の総数。すべてのフィデューシャル検出、ニューラル検出などを含む |
4 | ID | int | ID/チーム番号 |
5 | modbusMode | int | Modbusサーバー出力モード |
6 | cpuTemp | int | CPU温度(摂氏) |
7 | cpuUsage | int | CPU使用率(パーセント) |
8 | ramUsage | int | RAM使用率(パーセント) |
9 | currentFPS | int | 現在のフレームレート(FPS) |
10 | captureLatency | int | キャプチャレイテンシー(ミリ秒) |
11 | targetLatency | int | 処理レイテンシー(ミリ秒) |
12-15 | 予約済み | int |
出力モードが0に設定されている場合:
レジスタ | キー | 型 | 説明 |
---|---|---|---|
16,17 | tx | float32 | ターゲットへの水平角度オフセット(度) |
18,19 | ty | float32 | ターゲットへの垂直角度オフセット(度) |
20,21 | txnc | float32 | ターゲットへの水平角度オフセット(主要ピクセルに対する相対値、度) |
22,23 | tync | float32 | ターゲットへの垂直角度オフセット(主要ピクセルに対する相対値、度) |
24,25 | ta | float32 (0-1) | 画像サイズに対するターゲットの面積の割合 |
26 | fiducialID | int | 現在のAprilTag ID |
27 | classifierClass | int | 現在の分類器パイプライン出力のクラスインデックス。分類器結果がない場合は-1 |
28 | detectorClass | int | 現在の検出器パイプライン出力のクラスインデックス。検出器結果がない場合は-1 |
29 | 予約済み | int | |
30,31 | python[0] | float32 | カスタムPython出力配列[0] |
32,33 | python[1] | float32 | カスタムPython出力配列[1] |
34,35 | python[2] | float32 | カスタムPython出力配列[2] |
36,37 | python[3] | float32 | カスタムPython出力配列[3] |
38,39 | python[4] | float32 | カスタムPython出力配列[4] |
40,41 | python[5] | float32 | カスタムPython出力配列[5] |
42,43 | python[6] | float32 | カスタムPython出力配列[6] |
44,45 | python[7] | float32 | カスタムPython出力配列[7] |
保持/書き込み専用レジスタ
レジスタ | キー | 型 | 説明 |
---|---|---|---|
0 | unlocked | int | パイプラインのロックを解除します。パイプライン切り替えとカスタム入力データを有効にするには1に設定します |
1 | pipeIndex | int | "unlocked"が1に設定されている場合、パイプラインインデックスを設定します |
2 | outputMode | int | 出力モードを設定します。0 - 標準、1 - 生ターゲット(開発中) |
3 | 予約済み | int | |
4 | 予約済み | int | |
5 | 予約済み | int | |
6 | 予約済み | int | |
7 | 予約済み | int | |
8 | pythonInput[0] | int | カスタムPython入力配列[0] |
9 | pythonInput[1] | int | カスタムPython入力配列[1] |
10 | pythonInput[2] | int | カスタムPython入力配列[2] |
11 | pythonInput[3] | int | カスタムPython入力配列[3] |
12 | pythonInput[4] | int | カスタムPython入力配列[4] |
13 | pythonInput[5] | int | カスタムPython入力配列[5] |
14 | pythonInput[6] | int | カスタムPython入力配列[6] |
15 | pythonInput[7] | int | カスタムPython入力配列[7] |
16,17 | pythonInput[8] | float32 | カスタムPython入力配列[8] |
18,19 | pythonInput[9] | float32 | カスタムPython入力配列[9] |
20,21 | pythonInput[10] | float32 | カスタムPython入力配列[10] |
22,23 | pythonInput[11] | float32 | カスタムPython入力配列[11] |
24,25 | pythonInput[12] | float32 | カスタムPython入力配列[12] |
26,27 | pythonInput[13] | float32 | カスタムPython入力配列[13] |
28,29 | pythonInput[14] | float32 | カスタムPython入力配列[14] |
30,31 | pythonInput[15] | float32 | カスタムPython入力配列[15] |