メインコンテンツまでスキップ

Modbus API

Limelight OSは(ipaddress):502でModbus TCPサーバーを実行しています

  • 整数: 整数は符号付きで、2の補数を使用してエンコードされます。この方法は普遍的に認識され、正しい符号の解釈を保証します。

  • 浮動小数点数: 浮動小数点数はIEEE 754標準を使用してエンコードされます。Modbusプロトコルの16ビットレジスタ制限に準拠するため、浮動小数点数は2つの部分に分割されます:

    • 上位16ビットは2番目のレジスタに、下位16ビットは最初のレジスタに格納されます。
    • リトルエンディアン形式によりModbus仕様との互換性を確保します。

USBおよびEthernet LimelightはModbusToolでテストできます

Modbusは部品検査と産業用オートメーションのユースケースをサポートします。Modbusを使い始めるには、以下の手順が必要です:

  1. EthernetまたはUSB-C経由でLimelightに接続し、パイプラインを設定します。

    • すべてのパイプラインがModbus経由で結果を出力しますが、Pythonスナップスクリプトパイプラインはカスタム入出力データをサポートするため、産業用途に非常に versatileです。
  2. Limelightに静的IPアドレスを割り当てます

  3. LimelightをModbusネットワークに接続します。

Modbusレジスタ仕様

入力/読み取り専用レジスタ

レジスタキー説明
0hbintハートビート値。フレームごとに1増加
1pipelineIndexint現在アクティブなパイプラインインデックス (0 .. 9)
2validTargetint有効なターゲットが存在する場合は1、それ以外は0
3resultsCountint総結果数。すべてのフィデューシャル検出、ニューラル検出などを含む
4IDintID / チーム番号
5modbusModeintModbusサーバー出力モード
6cpuTempintCPU温度(摂氏)
7cpuUsageintCPU使用率(パーセント)
8ramUsageintRAM使用率(パーセント)
9currentFPSint現在のフレームレート
10captureLatencyintキャプチャレイテンシー(ミリ秒)
11targetLatencyint処理レイテンシー(ミリ秒)
12-15予約済みint

出力モードが0の場合:

レジスタキー説明
16,17txfloat32ターゲットへの水平角度オフセット(度)
18,19tyfloat32ターゲットへの垂直角度オフセット(度)
20,21txncfloat32ターゲットへの水平角度オフセット(主要ピクセルに対する相対値、度)
22,23tyncfloat32ターゲットへの垂直角度オフセット(主要ピクセルに対する相対値、度)
24,25tafloat32 (0-1)画像サイズに対するターゲットの面積の割合
26fiducialIDint現在のAprilTag ID
27classifierClassint現在の分類器パイプライン出力のクラスインデックス。分類器結果がない場合は-1
28detectorClassint現在の検出器パイプライン出力のクラスインデックス。検出器結果がない場合は-1
29予約済みint
30,31python[0]float32カスタムPython出力配列[0]
32,33python[1]float32カスタムPython出力配列[1]
34,35python[2]float32カスタムPython出力配列[2]
36,37python[3]float32カスタムPython出力配列[3]
38,39python[4]float32カスタムPython出力配列[4]
40,41python[5]float32カスタムPython出力配列[5]
42,43python[6]float32カスタムPython出力配列[6]
44,45python[7]float32カスタムPython出力配列[7]

保持/書き込み専用レジスタ

レジスタキー説明
0unlockedintパイプラインのロックを解除。パイプライン切り替えとカスタム入力データを有効にするには1に設定
1pipeIndexint"unlocked"が1に設定されている場合、パイプラインインデックスを設定
2outputModeint出力モードを設定。0 - 標準、1 - rawtargets (開発中)
3予約済みint
4予約済みint
5予約済みint
6予約済みint
7予約済みint
8pythonInput[0]intカスタムPython入力配列[0]
9pythonInput[1]intカスタムPython入力配列[1]
10pythonInput[2]intカスタムPython入力配列[2]
11pythonInput[3]intカスタムPython入力配列[3]
12pythonInput[4]intカスタムPython入力配列[4]
13pythonInput[5]intカスタムPython入力配列[5]
14pythonInput[6]intカスタムPython入力配列[6]
15pythonInput[7]intカスタムPython入力配列[7]
16,17pythonInput[8]float32カスタムPython入力配列[8]
18,19pythonInput[9]float32カスタムPython入力配列[9]
20,21pythonInput[10]float32カスタムPython入力配列[10]
22,23pythonInput[11]float32カスタムPython入力配列[11]
24,25pythonInput[12]float32カスタムPython入力配列[12]
26,27pythonInput[13]float32カスタムPython入力配列[13]
28,29pythonInput[14]float32カスタムPython入力配列[14]
30,31pythonInput[15]float32カスタムPython入力配列[15]