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

Modbus API

Limelight OSには、(ipaddress):502で動作するModbus TCPサーバーが搭載されています。

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

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

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

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

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

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

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

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

Modbusレジスタ仕様

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

レジスタキータイプ説明
0hbintハートビート値。フレームごとに1ずつ増加
1pipelineIndexint現在アクティブなパイプラインインデックス(0 .. 9)
2validTargetint有効なターゲットが存在する場合は1、そうでない場合は0
3resultsCountint総結果数。すべてのフィデューシャル検出、ニューラル検出などを含む
4IDintID / チーム番号
5modbusModeintModbusサーバー出力モード
6cpuTempintCPU温度(摂氏)
7cpuUsageintCPU使用率(パーセント)
8ramUsageintRAM使用率(パーセント)
9currentFPSint現在のフレームレート(FPS)
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 - 生ターゲット(開発中)
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]