コンテンツにスキップ

Connected VD® と連携する

このページでは、Connected VD® と連携してテストを実行する方法について説明します。

対応バージョンと環境変数設定

対応バージョンや環境変数の設定方法については、AUTOmeal について を参照してください。

事前準備

Connected VD® 側の設定

事前に Connected VD® アプリケーションで判定ができる状態まで環境構築・セットアップを行い、設定ファイル (.ini) を用意しておいてください。
セットアップの詳細については、Connected VD® のマニュアルを参照してください。

AUTOmeal 側の準備

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

この録画ファイルを確認することで、判定時の映像を後から確認できます。