0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows PC + SikuliX / ChatGPT Vision を活用したPC自動操作

Last updated at Posted at 2025-01-10

はじめに

Raspberry Pi 5 を使って、別端末を遠隔操作する手法を別記事で紹介しましたが、

  • もし余っているWindows PCがあれば、Raspberry Pi 5 を使わなくても同等の構成が組めます。
  • Windows上で、HDMIキャプチャ・画像解析・AI処理、を担当し、操作指示を Raspberry Pi Zero 2 W へ gRPC+protobuf で送ることで、別端末を自動操作する仕組みを構築できます。

Raspberry Pi Zero 2 W によるHIDエミュレーションの詳しい設定、マウスのキャリブレーションAPI、ChatGPTのプロンプトの書き方、などは別記事を参照いただき、本記事では、Windows側のSikuliX活用や構成全体の流れをメインに解説します。


できること&構成のポイント

  1. HDMIキャプチャで別端末の画面をWindows PCへ取り込む。
  2. SikuliX / Python (OpenCV) / ChatGPT Visionを使い、「ボタンをクリック」「テキスト入力」などの操作指示を作成。
  3. Raspberry Pi Zero 2 WがUSB HID(キーボード/マウス)として別端末に接続され、実際の入力を送る。
  4. HDMIキャプチャデバイスのパススルー機能を使えば、モニターにも同時出力して、手動操作やデバッグが容易。

Windows PCを使うメリットとして、豊富なツール・高い処理能力を活かせる点が挙げられます。SikuliXやOpenCVのセットアップも簡単で、Pi Zero単体で画像解析するより高速かつ拡張性が高いです。


全体構成イメージ

  1. 別端末
    • Raspberry Pi Zero 2 W がUSB接続され、キーボード/マウスを仮想的にエミュレート
    • HDMI出力をキャプチャデバイスへ
  2. HDMIキャプチャデバイス
    • Windows PCにUSB接続して映像を取り込み
    • パススルー出力端子からモニターへも映像を同時出力
  3. Windows PC
    • キャプチャした映像をSikuliX / OpenCV / ChatGPT Visionで解析
    • 得られた操作指示(クリック座標、入力文字列など)をPi Zero 2 Wへ送信
  4. Raspberry Pi Zero 2 W
    • HIDエミュレーション(マウス&キーボード)部分は別記事で詳細解説

1. WindowsでのHDMIキャプチャ

1-1. キャプチャデバイスとソフト

  • 一般的なUSB接続HDMIキャプチャボード(UVC対応)をWindowsに挿す
  • ドライバをインストールすれば、OBS Studioや専用ビューワソフトで画面を確認可能
  • そのプレビュー画面をSikuliXが監視したり、OpenCVでフレーム取得し分析できる

1-2. パススルー出力とモニター

  • HDMIキャプチャデバイスによってはパススルー端子を備え、入力された映像をそのままモニターへ出力可能
  • これにより、別端末の画面をリアルタイムでモニターで見ながら、Windows PCには解析用の映像を送れる
  • 手動操作やデバッグ時には大変便利

1-3. 遅延と解像度

  • 一般的に数フレーム(16~100ms程度)の遅延が発生
  • 1080p@60fps等の高解像度で負荷が大きい場合は、OBSやデバイス設定で解像度/フレームレートを調整する

2. SikuliX / Python(OpenCV) / ChatGPT Vision の活用

2-1. SikuliX

  • 画像パターン検索が強力
    • たとえばfind("login_button.png")でボタン画像を検出し、click()で仮想クリック
  • OCR(Tesseractベース)の機能も搭載
  • WindowsにJavaランタイムを導入し、sikulixide-2.x.x.jarを実行するだけで利用可能
  • Pythonモードに切り替えれば、Pythonに近い文法でスクリプトが書ける

2-2. Python + OpenCV で前処理

  • ノイズが多い映像や特殊な解析が必要な場合、OpenCVを活用
  • 例: ノイズ除去、閾値処理、輪郭検出などで、SikuliXのマッチング精度を向上
  • ChatGPT Visionへの送信用の画像を加工してOCR精度を上げる、などの使い方もある

2-3. ChatGPT Vision

  • 高度なOCRやエラー文の理解に効果的
  • 画面上に複雑な文章や多言語UIがあっても、自然言語で解析し、要約や座標情報を返す
  • Windows上でPythonスクリプトを走らせて、HTTPリクエストで画像 + プロンプトを送信
  • 応答をSikuliXスクリプトと連携し、操作フローを柔軟に分岐

3. Raspberry Pi Zero 2 W への操作指示

3-1. ネットワーク通信の実装

  • Windows PCがクライアントとして「クリックしてください」「文字を入力してください」などをPi Zero 2 Wへ送る
  • Pi Zero 2 Wはサーバー(HTTP, gRPC, etc.)として待ち受け、USB HID経由で別端末に入力をエミュレート
  • HIDエミュレーションの具体的設定(ガジェットモードの有効化など)は別記事を参照

3-2. 操作フロー例

  1. WindowsのSikuliXがキャプチャ映像から「login_button.png」を見つける
  2. POST /click (x, y 座標)をPi Zeroへ送信
  3. Pi ZeroがUSB経由で別端末にマウス操作を実行

4. 実装サンプル(概念)

4-1. SikuliXスクリプト(Windows側)

# sikuli_main.py (Pythonモード)
from sikuli import *
import requests

API_URL = "http://raspberrypi-zero2w.local:5000"  # Pi Zeroのサーバー

def click_on_image(img):
    m = find(img)
    center = m.getTarget()
    x, y = center.x, center.y
    # Pi Zeroへクリック指示
    requests.post(f"{API_URL}/click", json={"x": x, "y": y})

# ログイン例
click_on_image("login_button.png")
type("username")
type(Key.TAB)
type("password")
click_on_image("submit_button.png")
  • find("login_button.png") が画面内でボタン画像を検索
  • click_on_image() 関数でPi Zeroへ座標を送信し、USBマウス操作を代行

4-2. Pi Zero 2 W側 (別記事参照)

  • FlaskやgRPCサーバーを起動し、/clickなどのAPIで操作指示を受け取り
  • pyusb等でUSB HIDに反映し、別端末にマウス/キーボード入力する

5. メリット & デメリット

5-1. メリット

  1. SikuliXでの手軽な画像検索・操作
    • GUI自動化が数行で実装可能
  2. Windows環境の高い処理能力
    • OpenCVやChatGPT Visionを組み合わせても処理が軽い
  3. Pi Zero 2 WでUSB HID
    • Windowsだけでは難しいUSBガジェットモードをPi Zeroが担当
  4. 余っているWindowsマシン活用
    • 新たに高性能なRaspberry Piを買わなくてもOK
  5. パススルー出力でモニターにも映像
    • 手元で別端末の画面を直接見ながらデバッグできる

5-2. デメリット

  1. ネットワーク通信の実装が必要
    • Windows→Pi Zero間でHTTP/gRPCなど最低限の通信部分を自作
  2. 遅延
    • HDMIキャプチャのフレーム遅れ + ネットワーク越しの指示 + USB HID適用、と多段遅延
  3. セットアップ・検証手間
    • Java環境やキャプチャドライバ、Pi ZeroでのHID設定など、初回の導入に時間がかかる

6. よくある質問(FAQ)

Q1. HIDエミュレーションの詳細はどうやるの?
A1. 別記事を参照してください。Raspberry Pi Zero 2 WでUSBマウス/キーボードをガジェットモードで有効化し、Pythonスクリプト等で入力イベントを送る方法が一般的です。

Q2. Windows PCだけでUSB HIDデバイス化できない?
A2. 基本的にWindowsはUSBホストとして動作するため、デバイス(ガジェットモード)側になるのは難しいです。よってPi Zeroのほうが現実的です。

Q3. HDMIキャプチャによる遅延はどのくらい?
A3. 製品によりますが1~数フレーム(16~100ms程度)。リアルタイム性が必要な操作には注意が必要です。

Q4. SikuliXだけでOCRも可能?
A4. はい、簡易OCRを内蔵しています。精度が足りない場合はOpenCV+TesseractやChatGPT Vision APIを検討してください。

Q5. MacやLinuxでも似た構成は可能?
A5. はい。HDMIキャプチャができれば同じアイデアで実装可能です。ここではWindows PCが余っているという想定です。

Q6. スマートフォンやタブレットを操作したい場合は?
A6. USBホスト/デバイスの対応や解像度の扱いなどで複雑になります。PCや機器向けの構成が一番スムーズです。

Q7. マウスのキャリブレーション方法やgRPCのAPI定義、ChatGPT Vision APIのプロンプト例は?
A7. これらも別記事で詳しく解説しています。座標の補正計算やメッセージ定義、自然言語プロンプトの書き方などを確認してください。


7. まとめ

  • Raspberry Pi Zero 2 W (HID) + Windows PC (SikuliX / OpenCV / ChatGPT Vision) の組み合わせで、

    1. 別端末の画面をHDMIキャプチャ(パススルーでモニターにも出力)
    2. Windowsで画像パターン検索/AI解析
    3. Pi Zeroが仮想マウス/キーボードで別端末に操作入力
      という分散構成が実現できます。
  • Windows PCを使うことで、SikuliXの簡単操作・OpenCVの高度解析・ChatGPT VisionのAI処理を軽快に回せるのが大きな利点です。

  • HIDエミュレーションに必要なUSBガジェットモードは、Pi Zero 2 Wが担当するため、Windowsでは難しいUSBデバイス化問題を回避できます。

余っているWindowsマシンのパワーを活かし、Pi ZeroをHIDエミュレーターとして組み合わせることで、多彩なUI自動化や遠隔操作が可能になります。ぜひお試しください!


参考リンク


以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?