Connected VD® と連携する
このページでは、Connected VD® と連携してテストを実行する方法について説明します。
対応バージョンと環境変数設定
対応バージョンや環境変数の設定方法については、AUTOmeal について を参照してください。
事前準備
Connected VD® 側の設定
事前に Connected VD® アプリケーションで判定ができる状態まで環境構築・セットアップを行い、設定ファイル (.ini) を用意しておいてください。
セットアップの詳細については、Connected VD® のマニュアルを参照してください。
AUTOmeal 側の準備
- テストスクリプトを用意してください。スクリプトの作成方法は GUI からテストスクリプトを実行する を参照してください。
Python スクリプトで Connected VD® を実行する
Python スクリプトから Connected VD® の判定を実行する方法を説明します。
主な関数
| 関数 | 説明 |
|---|---|
start_vd_judge(config_file_path, input_media_path=None, output_path=None) |
Connected VD® の判定を開始します。 |
stop_vd_judge() |
Connected VD® の判定を停止します。 |
get_vd_log_list() |
判定結果のログリストを取得します。 |
start_vd_judge の引数
| 引数 | 説明 |
|---|---|
config_file_path |
Connected VD® の設定ファイル (.ini) のパス (必須)。絶対パスと相対パスの両方が使用可能です。相対パスは AUTOmeal のプロジェクトファイル (.amprj) からのパスになります。 |
input_media_path |
入力メディア (動画・画像) のパス。入力設定が「動画読込」または「画像読込」の場合に指定します。省略時は設定ファイルの設定に従います。 |
output_path |
判定結果 (録画ファイルなど) の出力先パス。省略時は設定ファイルの設定に従います。 |
Note
start_vd_judge は非同期で実行されます。戻り値のスレッドオブジェクトに対して thread.join(timeout_ms) を呼ぶことで終了を待機できます。
timeout_ms はミリ秒単位です。引数を省略した場合は無限待機になります。
get_vd_log_list の戻り値フィールド
| フィールド | 説明 |
|---|---|
label_name |
ラベル名 |
detect_time |
検知時間 (YYYYMMDD_HHMMSS 形式) |
detect_data |
検知データ |
detect_pattern |
検知パターン |
detect_info |
検知内容 |
error_level |
エラーレベル |
スクリプトの例 (カメラ読込・デスクトップ読込)
以下は、カメラ入力で Connected VD® を使用して LED の点灯を判定するスクリプトの例です。
import automeal as am
import datetime
# 期待するラベル名と、判定開始から検知までの制限時間 (秒)
EXPECTED_LABEL = "LED"
DETECT_LIMIT_SEC = 5
# 判定開始時刻を記録
start_time = datetime.datetime.now()
# Connected VD® の判定を開始
thread = am.start_vd_judge("Settings/vd_config.ini")
# テスト対象を操作する
# 例: LED を点灯させる
am.write_logic_rpigp10("Board1", 1, True)
am.sleep(3) # 少し待機
# Connected VD® の判定を停止
am.stop_vd_judge()
# 判定スレッドの終了を待機 (最大 5000ms = 5秒)
thread.join(5000)
# 判定結果を取得
log_list = am.get_vd_log_list()
# 期待ラベルが制限時間内に検知されたログを絞り込む
matched = []
for log in log_list:
detect_time = datetime.datetime.strptime(log.detect_time, "%Y%m%d_%H%M%S")
elapsed_sec = (detect_time - start_time).total_seconds()
print(
f"ラベル: {log.label_name}, "
f"検知時間: {log.detect_time}, "
f"開始からの経過: {elapsed_sec:.1f}秒",
flush=True
)
if log.label_name == EXPECTED_LABEL and elapsed_sec <= DETECT_LIMIT_SEC:
matched.append(log)
# 期待ラベルが制限時間内に 1 件以上検知されていることを確認
assert len(matched) > 0, (
f"ラベル '{EXPECTED_LABEL}' が {DETECT_LIMIT_SEC} 秒以内に検知されませんでした"
)
スクリプトの例 (動画読込・画像読込)
Connected VD® の設定ファイル (.ini) で入力設定を「動画読込」または「画像読込」に設定した上で、input_media_path にファイルパスを指定します。
動画・画像ファイルの終端で Connected VD® が自動的に終了するため、stop_vd_judge の呼び出しは不要です。
import automeal as am
# 動画ファイルを指定して Connected VD® の判定を開始
thread = am.start_vd_judge(
"Settings/vd_config.ini",
input_media_path="C:/videos/test.mp4"
)
# 判定が終わるまで無限待機
thread.join()
# 判定結果を取得
log_list = am.get_vd_log_list()
for log in log_list:
print(
f"ラベル: {log.label_name}, "
f"検知時間: {log.detect_time}, "
f"検知内容: {log.detect_info}",
flush=True
)
実行結果を確認する
Connected VD® の実行結果は [テストログ] ペインに出力されます。
Note
検知時間や検知パターンなどの詳細は、Connected VD® のマニュアルを参照してください。
検知時のログ
Connected VD® で検知されると、以下の形式で [テストログ] ペインに出力されます。
Connected VD検知:<番号>: ラベル名:<ラベル名>, 検知時間:<検知時間>, 検知データ:<検知データ>, 検知パターン:<パターン>, 検知内容:<内容>, エラーレベル:<エラーレベル>
例:
Connected VD検知:0: ラベル名:LED, 検知時間:20260331_154110, 検知データ:Result_Movie_Analysis_20260331_154109:0.72, 検知パターン:色変化検出, 検知内容:Red, エラーレベル:1
テスト終了後やレポート表示中、Connected VD® の検知ログの横にある再生ボタンを押下すると、検知動画の再生や、検知画像の確認ができます。
動画判定の場合は、Connected VD® の動画再生ツールが起動し、検知時間の動画を確認できます。
画像判定の場合は、検知内容に応じた画像が既定のビューアで表示されます。
録画ファイルの保存先
判定終了時、録画データが保存されます。保存先は以下の形式で [テストログ] ペインに出力されます。
Connected VD録画ファイルの保存先:<絶対パス>
例:
Connected VD録画ファイルの保存先:C:\Automeal\Videos\20260115_135945/Result_Movie_Analysis_20260115_135945.mp4
この録画ファイルを確認することで、判定時の映像を後から確認できます。