Limelight Lib Python
limelightlib-pythonは、Limelightデバイスとインターフェースする最も簡単な方法です。すべてのオペレーティングシステム(MacOS、Windows、Linux)およびアーキテクチャ(x86、ARM)で動作します。
- https://github.com/LimelightVision/limelightlib-python
- https://pypi.org/project/limelightlib-python/
インストール
pip install limelightlib-python
使用方法
import limelight
import limelightresults
import json
import time
discovered_limelights = limelight.discover_limelights(debug=True)
print("discovered limelights:", discovered_limelights)
if discovered_limelights:
limelight_address = discovered_limelights[0]
ll = limelight.Limelight(limelight_address)
results = ll.get_results()
status = ll.get_status()
print("-----")
print("targeting results:", results)
print("-----")
print("status:", status)
print("-----")
print("temp:", ll.get_temp())
print("-----")
print("name:", ll.get_name())
print("-----")
print("fps:", ll.get_fps())
print("-----")
print("hwreport:", ll.hw_report())
ll.enable_websocket()
# 現在のパイプライン設定を表示
print(ll.get_pipeline_atindex(0))
# 現在のパイプラインを更新して ディスクに書き込み
pipeline_update = {
'area_max': 98.7,
'area_min': 1.98778
}
ll.update_pipeline(json.dumps(pipeline_update),flush=1)
print(ll.get_pipeline_atindex(0))
# パイプライン1に切り替え
ll.pipeline_switch(1)
# カスタムユーザーデータを更新
ll.update_python_inputs([4.2,0.1,9.87])
try:
while True:
result = ll.get_latest_results()
parsed_result = limelightresults.parse_results(result)
if parsed_result is not None:
print("valid targets: ", parsed_result.validity, ", pipelineIndex: ", parsed_result.pipeline_id,", Targeting Latency: ", parsed_result.targeting_latency)
#for tag in parsed_result.fiducialResults:
# print(tag.robot_pose_target_space, tag.fiducial_id)
time.sleep(1) # 最大fpsにするには0に設定
except KeyboardInterrupt:
print("Program interrupted by user, shutting down.")
finally:
ll.disable_websocket()
メソッド
RESTベース
- get_results(): HTTP GETで最新の結果を取得します。
- capture_snapshot(snapname): 指定した名前でスナップショットをキャプチャします。
- upload_snapshot(snapname, image_path): 指定した名前と画像ファイルでスナップショットをアップロードします。
- snapshot_manifest(): HTTP GETでスナップショットマニフェストを取得します。
- delete_snapshots(): HTTP GETですべてのスナップショットを削除します。
- upload_neural_network(nn_type, file_path): 指定したタイプでニューラルネットワークファイルをアップロードします。
- hw_report(): HTTP GETでハードウェアレポートを取得します。
- cal_default(): HTTP GETでデフォルトのキャリブレーションデータを取得します。
- cal_file(): HTTP GETでファイルからキャリブレーションデータを取得し ます。
- cal_eeprom(): HTTP GETでEEPROMからキャリブレーションデータを取得します。
- cal_latest(): HTTP GETで最新のキャリブレーションデータを取得します。
- update_cal_eeprom(cal_data): HTTP POSTでEEPROMのキャリブレーションデータを更新します。
- update_cal_file(cal_data): HTTP POSTでファイルのキャリブレーションデータを更新します。
- delete_cal_latest(): HTTP DELETEで最新のキャリブレーションデータを削除します。
- delete_cal_eeprom(): HTTP DELETEでEEPROMからキャリブレーションデータを削除します。
- delete_cal_file(): HTTP DELETEでファイルからキャリブレーションデータを削除します。
WebSocketベース
- enable_websocket(): 別スレッドでWebSocket接続を初期化して開始します。
- disable_websocket(): WebSocket接続を閉じてスレッドを終了します。
- get_latest_results(): WebSocketから受信した最新の結果を返します。
パース
- limelightresults.parse_results(): 結果をパースしてGeneralResultオブジェクトを返します