【Poke-Controller】画像認識自動化の導入おぼえがき【中級者向け】

みなさまこんにちは。ますたーです。

今回は「画像認識」を使ったポケモンの自動化を導入したので、その方法のおぼえがきです。また、その一環でBDSPのパルキア色違い自動厳選をプログラムしてみました。

まさにArduino Leonardo自動化勢必見!?な記事ですので、ぜひともご参考ください。

 

※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。

 

概要

画像認識を使ったSwitch操作の自動化ができる「Poke-Controller」と呼ばれるソフトウェアの導入に成功し、自分でプログラムも書けたので、そのおぼえがき記事です。

要するに、普段は「Switch+Arduino Leonardo」というシンプルな構成で自動化している人が、追加で用意すべきハードウェア(FTDIとキャプチャボード)とソフトウェア(Poke-Controllerとか色々)を準備・導入してみたよ、という記事です*1

また、せっかくなのでPoke-Controllerを使ってパルキアの色リセ厳選を自動化してみました(成功しました)ので、そのプログラムも公開します。

f:id:tangential_star:20220327125009g:plain

パルキア色厳選の自動化に成功。画像認識により「色違い判定」を含めた自動化が可能に

もくじです。

この記事は中級者向けです。導入にかかわるサポートはできませんし、本記事で紹介するリンク先への迷惑行為もご遠慮ください。とは言え、セットアップ方法を重視で書いているので、もくじでおおよその流れは理解できると思います。

なお、すでにPoke-Controller導入済みで「Poke-Controller用のパルキア/アルセウスの自動色厳選のプログラムだけ欲しい」という方は→5-1まで読み飛ばす

 

【必読】注意事項とお願い事項

本記事は「中級者向け」です。初心者・初級者にはおすすめしません。

内容の難しさも然ることながら、利用環境によって、ハード・ソフト共に相性などもあるため、使用機材・環境構築・導入のサポートは一切できません。すべて自己責任でお願いします

本記事で紹介する「Poke-Controller」およびその導入に関わる各種パッケージは、先人(有志の方々)による開発・工夫・配布などを前提として紹介をしています。導入を試される皆様においては、くれぐれも先人へのリスペクトを持ってお試しください。また、紹介リンク先を含め、迷惑行為はくれぐれも謹んでください*2

特に、ご自身の環境や構成に起因することも多いため、十分な検証を経ず、あるいはその恐れがある状態での「うまく動かなかった」「導入できなかった」などの異議・申し立て・クレームその他これらに類するものは一切を固くお断り申し上げます。

なお、本記事で扱う「Poke-Controller」とは、特に断りのない場合、本家のものではなく、本家にキーボード入力操作などの追加改修を施したもの(=Poke-Controller MODIFIED)を指します。理由はシンプルで、筆者が導入したPoke-ControllerがMODIFIEDだったからです。あしからずご了承ください。

 

0.本記事のゴール:本ブログの自動化環境に、画像認識を追加する

まず、本ブログでは【Arduino自動化01】Arduino開発環境の導入で紹介の通り、最もシンプルな構成(Switch本体+Arduino Leonardo)での自動化を主に紹介しています。

本記事では、この自動化環境をベースに、差分として画像認識を使った自動化を実現するための環境構築・導入を行います。

したがって、【Arduino自動化01】Arduino開発環境の導入に記載の環境構築は済んでおり、一通り理解している前提で書いておりますので、予めご了承ください*3

f:id:tangential_star:20220327182154p:plain

「画像認識」を使うには、新たにキャプチャボードとシリアル変換器が必要だ

 

1.ハードウェアの準備(シリアル変換器・キャプチャボードの準備)

まずはハードウェアの準備です。すでに持っている方は「2.ソフトウェアの準備」まで読み飛ばしOK。

基本的には、下記を準備すればOKです。また、重ねてのご案内になりますが、Nintendo Switch Liteは映像出力ができないため、画像認識は使えません。ご注意ください。

  • Nintendo Switchおよび純正のドック、充電コード・HDMIケーブル
  • Arduino Leonardo
  • Windows PC
  • 【NEW】シリアル変換器*4(FT232RL)
  • 【NEW】キャプチャボード*5HDMIメス-USBオス)
  • 配線用ケーブル類
    • Arduino Leonardo・ドック接続用(USB Aオス-USB microBオス)
    • 【NEW】シリアル変換器・PC接続用(USB Aオス-USB miniBオス*6
    • 【NEW】シリアル変換器・Arduino Leonardo接続用(ジャンパーケーブル3本*7

基本的には、【Arduino自動化 番外編3】筆者の使用機材一覧【紹介記事】 で紹介している機材群に、追加で【NEW】と記載のあるものが必要となります。

無いものは適宜Amazonなどで購入してください。

Amazonで「シリアル変換器FT232RL」を検索
Amazonで「ジャンパーケーブル オス-メス」を検索
Amazonで「USB外付けキャプチャボード」を検索

まずは、下図(接続配線図)を見て「手元に揃っているかどうか」を確認してください(Arduino Leonardoとシリアル変換器のつなげ方は、手順3-5で解説します)。

※参考までに、筆者が実際に利用したシリアル変換器とキャプチャボードは、本ページ下部に購入リンクとしてまとめておきます

f:id:tangential_star:20220327211419p:plain

ハードウェアの接続配線イメージ。基本構成に加え、シリアル変換器・キャプチャボードが必要だ

f:id:tangential_star:20220402013033j:plain

追加で「シリアル変換器(FT232RL)」と「キャプチャボード」を購入した


2.ソフトウェアの準備(Poke-Controllerの導入)

さて、ここからが本題です。順番に沿って説明していきますが、すでに導入が終わっている箇所については読み飛ばしOKです*8。なお、本ブログで紹介している内容はすべて2022/03/28現在の情報に基づきます。リンク切れ・URL変更・バージョン変更などがあっても責任は取れません。

基本的には、Poke-Controllerの導入手順を説明したサイト「Poke-Controller Guide」に沿った流れとなりますので、こちらを読んで理解できる方は、以下、あまり参考にならないかもしれません*9

2-0.Arduino IDEのインストール・boards.txtの書き換え(大前提)

こちらは大前提となります。まだ実施していない方は、下記を読んで導入を済ませておいてください。

【Arduino自動化01】Arduino開発環境の導入

 

2-1.Nintendo Switch Controllライブラリの導入

まずは、Arduino IDEに「Nintendo Switch Controll」と呼ばれるライブラリを追加する作業が必要となります。手順について詳しくは、下記が参考になるかと思います*10

【Arduino自動化 番外編2】NintendoSwitchControllライブラリの導入と、自動化できる作業の一覧【ポケモン剣盾自動化】 

f:id:tangential_star:20220327224802p:plain

まずは「Nintendo Switch Controll」ライブラリをArduino IDEにインストールしよう
(筆者はドキュメント直下のArduinoフォルダ内librariiesにインストールする派です)

 

2-2.Nintendo Switch Controllライブラリのソースコードの置換

本手順は飛ばしてもOK(のはず)ですが、今後の追加アップデートや使いたい機能によっては必要になる場合がありますので紹介します。この手順を通して、ライブラリの提供する基本的な機能はそのままに、JoyStick周りの関数が扱いやすくなるラッパー関数が増えるため、開発をする場合においても重宝する機能が多いと思います。

こちゃてす氏の提供する下記Google Drive「編集に必要なもの」フォルダから「auto_command_util.h」「auto_command_util.cpp」の2つをダウンロードして、先程の手順で追加したNintendo Switch Controllライブラリのソースコードを置き換えてください。

※一応、2022/3/31現在、最新版は下記DLにアップされていますが、リンクの保証はありません
 https://drive.google.com/drive/folders/1ymuSmnixnPogPdNOXMNogCxgyJZI5xcn

f:id:tangential_star:20220327224930p:plain

Nintendo Switch Controll」ライブラリのcpp, hファイルを置換しよう
上書きするのが怖い人は、いつでも戻せるように適当にリネームして残してもOKだ

 

2-3.Poke-Controller導入用バッチファイル一式をダウンロード

さて、Poke-Controllerの本体のDLに必要なファイルの準備に移ります。

続いて、ろっこく氏が提供している「Poke-Controller導入用バッチファイル」をダウンロードしてきます。

※一応、2022/3/28現在、最新版ZIP(v05)は下記DLにアップされていますが、リンクの保証はありません
https://drive.google.com/file/d/1thRyBez8GxsJUCaw73s-fmvhBTUtIpk2/view

詳細・最新版は同氏のツイフィールまたは下記ツイートをご覧ください

 

ダウンロードしたZIPは、右クリック→プロパティから「セキュリティ」の項目を「許可する」にチェックを入れてください(もちろん自己責任でお願いします)。その後、Cドライブ直下など「日本語が含まれない」パスに展開してください。

f:id:tangential_star:20220328002613p:plain

DLしたZIPファイルのプロパティのセキュリティで「許可する」をチェックしておく(自己責任)

f:id:tangential_star:20220328095203p:plain

Cドライブ直下など、Path名に日本語が含まれない場所に展開する

2-4.展開した「_Setting」フォルダのPath周りを指定

この手順はオプションです。

デフォルトの設定ではCドライブ直下の「C:\PokeCon」にPoke-Controllerがインストールされます。これを変えたい人は変更してください。特にこだわりがなければ、そのままで良いと思います。

「_Settings」フォルダの中にはインストール先の指定ができるテキストファイルがある

なお、本ブログ記事では触れませんが、もし、MODIFIEDではなく、本家のPoke-Controllerをインストールする場合には、Pythonのインストールバージョンを変更する必要がありますので、同フォルダ内の「PythonVer.txt」の記述を「3.7」から「3.6」に変更しておいてください。

 

2-5.導入用バッチ「1_MakePokeConEnv.bat」を管理者権限で実行

まずは、Poke-Controllerの動作環境であるPythonをインストールします。そのためには、CUIから呼び出せるGITのインストールが必要です。

ここで、先程展開した「BatsForPokeCon_v05」*11フォルダ直下の「PokeController」フォルダの中に「1_MakePokeConEnv.bat」がありますのでこれを右クリック→管理者権限で実行してください。必ず、自己責任での実行をお願いします。

1つ目のバッチファイルを起動すると、GITとPythonのインストールが始まるぞ

なお、バッチファイルの中身を確認*12すればわかりますが、32ビットOSには対応しておりません。新しいWindowsパソコンを購入してください。

また、v05現在のバッチファイルでは、実行後、「Poke-Controller-Modifiedの環境構築が完了しました」と案内が出てきますが、この時点では本体のインストールは一切行われておりません。あくまでも必要なライブラリなどのインストールが完了した、という意味ですので、お間違いの無いようお願いします。

 

2-6.導入用バッチ「2-2_ClonePokeConModified.bat」を管理者権限で実行

続いて、同フォルダの「2-2_ClonePokeConModified.bat」を起動します。こちらも右クリック→管理者権限で起動をします(もちろん、自己責任でお願いします)。

なお、似たような名前の「2-1_ClonePokeCon.bat」は本家のPoke-Controllerインストールに使うためのものなので、MODIFIEDをインストールする今回は、無視でOKです。

2つ目のバッチファイルを起動すると、いよいよPoke-Controllerがインストールされる

無事に完了すると、「Poke-Controller-Modifiedの環境構築が完了しました」と案内が出てきます。これにて、デフォルトだとCドライブ直下に「PokeCon」というフォルダが出来上がり、本体ファイルもインストールされているはずです。お疲れさまでした。

なお、展開したフォルダ「BatsForPokeCon_v05」は、消さないでください。また、Poke-Controllerを、インストールしたフォルダから直接起動することはできません。詳細は後述しますが、起動には起動用のバッチ「3-2_ExecutePokeConModified.bat」を使います*13ので、とりあえず動作確認を先にしたい場合は当該バッチを起動してください(こちらは管理者権限は不要です)。

 

3.準備・配線・各種セットアップ

さて、ここまでの手順で、必要機材の調達ならびにソフトウェアのインストール作業が完了しました。お疲れさまでした。ここからは、実際にPoke-Controllerを使えるように、環境をセットアップしていきます。

3-1.Arduino Leonardo用プログラム一式をダウンロード

まずは、Poke-ControllerからのコマンドをFTDI経由で操作するために、シリアルに入ってきた情報をSwitch操作コマンドに変換するためのプログラムを書き込みます。

ここでは、ろっこく氏が提供している「LeonardoでPoke-Controllerを動かすプログラム」をダウンロードしてきます。

 

※一応、2022/12/25現在、最新版ZIP(v04)は下記DLにアップされていますが、リンクの保証はありません
https://cdn.discordapp.com/attachments/947422105383882752/1056239930348675145/Poke-ControllerForLeonardo.zip

 

3-2.キーボード対応用ライブラリ「HID-Project.h」をインストール

DLしてきたZIPを展開したフォルダを、ドキュメント直下Arduinoフォルダに格納します。展開したファイルのうち「Poke-ControllerForLeonardo.ino」をArduino IDEで開きます。

そして、ライブラリ「HID-Project.h」を追加します。

ライブラリの追加方法は、「スケッチ」→「ライブラリのインクルード」→「ライブラリを管理」から「HID-Project」で検索すれば出てきます。

f:id:tangential_star:20220331233423p:plain

Poke-Controller操作用のLeonardoのフォルダをDLして展開しよう。
 「Readme.txt」の確認も、もちろん忘れずに!

f:id:tangential_star:20220331232553p:plain

「スケッチ」→「ライブラリのインクルード」→「ライブラリを管理」からHID-Project.hを入れよう

f:id:tangential_star:20220331233629p:plain

2022/3/31現在、HID-Project.hの最新版は2.8.2だぞ


3-3.HIDライブラリに追記して日本語キーレイアウトに対応させる

先にインストールしたライブラリ「HID-Project.h」には、デフォルトでは日本語レイアウトに対応していないため、手動で追加をする必要があります。

このあたりは、ソースコードの冒頭記載のURLにあるQiitaの記事(Arduino HID-Projectを日本語キーボードに対応する - Qiita)で追加方法が説明されていますので、それに倣います。

具体的にはインストールしたHID-Projectライブラリフォルダの中に「ImprovedKeylayoutsJP.h」を手動て作って追加します。追加するヘッダファイルの中身は長いので上記qiita記事からコピペしてください。

f:id:tangential_star:20220331235724p:plain

KeyboardLayoutsフォルダ内に右クリックで「ImprovedKeylayoutsJP.h」を作成する

また、同フォルダの「ImprovedKeylayouts.h」も修正(追記)が必要です。

具体的には条件分岐のマクロで「#include "ImprovedKeylayoutsJP.h"」を書く必要があります。「#pragma message」はお好みですが、コンパイル時にちゃんと読み込まれたことがわかりやすくなるので入れておきましょう*14

f:id:tangential_star:20220402141444p:plain

忘れずに「ImprovedKeylayouts.h」の末尾にLAYOUT_JAPANESEのマクロif文を追記する

3-4.コンパイルして、ArduinoLeonardoに書き込む

上記の手順で、ようやく「Poke-ControllerForLeonardo.ino」がコンパイルできるようになったので、これでコンパイルします。

なお、色々と沢山warningやmessageが出ますが*15、結局は「ボードへの書き込みが完了しました。」となっていればOKです。

f:id:tangential_star:20220402130456p:plain

Warningが出ても、環境が整っていればコンパイルは正常に終了する

3-5.Arduino LeonardoをPCから抜いて、シリアル変換器と配線

さて、おまたせしました。ここまでで、全ての準備作業が終了しました。お疲れ様でした。あとは、機材をつなぎ合わせるだけでOKです。

まずは、シリアル変換器(FT232RL)とArduino Leonardoを接続します。接続するには、それぞれのTX・RXおよびGNDを接続するのですが、TXをRX、RXをTXという風に、これらは交互につなぎ合わせる必要があります*16

よくわからない人は、純正のArduino Leonardoであれば、RXは0、TXは1に割り当てられているので、難しいことは考えずにシリアル変換器のTXを0に、RXを1に、GNDはGNDにそれぞれ接続すればOKということです。

シリアル変換器とArduino Leonardoを接続しよう。ジャンパーケーブル3本が必要だ

3-6.PCとシリアル変換器、Arduino LeonardoとSwitchドックを配線

前節でシリアル変換器とArduino Leonardoの接続ができたので、あとは冒頭に掲載した画像の通りつなぎ合わせるだけです。具体的には、Arduino LeonardoとSwitchドックを接続し、シリアル変換器はPCと接続します。

そして、SwitchのドックとキャプチャボードをHDMIケーブルで接続し、キャプチャボードをPCに接続します。これで配線類は終了です。お疲れさまでした。

f:id:tangential_star:20220327211419p:plain

(再掲)Poke-Controllerを使うための配線イメージ図

 

4.Poke-Controllerの起動

さて、ここまでの準備・配線、お疲れ様でした。

ここからは本番、Poke-Controllerの起動などです。

4-1.デバイスマネージャーでシリアル変換器のポート番号を確認

まずはPoke-Controllerの起動…と言いたいところですが、その前にシリアル変換器のCOMポート番号の確認をしておくとスムーズです。このCOM番号は、Poke-Controllerで最も重要と言っても過言ではありません*17

配線が完了している状態でデバイスマネージャーを開くと、「ポート(COMとLPT)」にシリアル変換器が認識されていますので、その番号を確認し、手元に控えておきましょう。

f:id:tangential_star:20220401223621p:plain

FT232RLをPCに挿している状態でデバイスマネージャーを起動してCOM番号を確認

4-2.Poke-Controller起動バッチ「3-2_ExecutePokeConModified.bat」を実行

おまたせしました。Poke-Controllerの起動です。Poke-ControllerはPythonで起動するため、ここもバッチで起動します。PokeControllerフォルダ直下の「3-2_ExecutePokeConModified.bat」を起動してください。こちらは管理者権限は不要です。コマンドプロンプトが起動して、Poke-Controllerが起動します。

なお、次回以降もこのバッチファイルを使って起動しますが、このバッチはディレクトリの「_Settings」フォルダを参照するため、バッチだけを移動すると正常に動作しなくなります。おすすめは、このバッチファイルへのショートカットを作成し、そのショートカットを任意の場所に配置することでしょうか。

4-3.Poke-Controllerの設定を修正

正常に起動したら、まず、キャプチャボードが認識されているかを確認します。「Camera Name」からご自身のキャプチャボードを選択してください*18。なお、

他にも、FPSを「45」、解像度を「1280x720」、Show Realtimeのチェックを入れるなどいろいろ調整をいただくことがありますが、一番大事なのは「COM Port」の設定です。

先程手元に控えたシリアル変換器のCOMポート番号を入力し「Reload Port」を押してください。正常に動作していれば、右のテキストエリアに「COM Port ●● connected successfully」と表示されます。

これによって、様々な操作がPoke-Controller経由で実行できるようになるので、左下の「Controller」からボタン操作を行ったり、右下の「Python Command」から自動化を進めたりなどで動作確認を行ってください。

f:id:tangential_star:20220401224627p:plain

起動したら色々と調整する。COMポートは修正してReloadを忘れずに。
※画面は2022/3/31現在最新版の「v3.0.2.6.2 Modified」です

f:id:tangential_star:20220401230406p:plain

Use Keyboardにチェックを入れればA,B,X,Y,R,Lなどが入力できる。Use LStick Mouseならマウス操作で移動もできる
※画面は2022/3/31現在最新版の「v3.0.2.6.2 Modified」です

 

5.新しい自動化プログラムの導入【BDSPパルキア自動色厳選】

ここまででPoke-Controllerの導入は完了しています。おめでとうございます。

ここからは、筆者が実際にPoke-Controllerで実装してみた「BDSPのパルキア自動色違い厳選」のソースコード導入を例に解説していきます。というかすでに導入できている人はこちらがメインか。

なお、新たなプログラムの、具体的な導入方法は下記サイトが非常に参考になります(というか最初からこのサイトだけでわかる人は大丈夫なのです)。

pokecontroller.info

 

5-1.新しいプログラムを準備(用意)

さて、ここまでで自動化環境はすでに整っていますが、新たなプログラムを導入することで画像認識自動化の真価が問われます。新しいプログラムの導入方法は新規プログラムの導入(釣り厳選)である程度理解している前提で書きますのであしからず。とは言え、本記事で伝えたいことは「プログラム追加は意外と簡単」だということです。

 

まずは、下記から筆者の書いたプログラムをダウンロードしてください(注:筆者はPythonのプログラムは超絶初心者です。自己責任でお願いします)。一応、本記事では「パルキア」の自動色厳選のソースコードを例に、導入方法を説明します(ので、シャイニングパール版で、しかもまだパルキアを捕まえていないROM想定ですね)。

5-1-1.BDSPパルキア自動色厳選のプログラム一式(筆者作成)

説明文書などは入っていません。

殿堂入り後「やりのはしら」でパルキアの手前でセーブして使ってください。漢字・ひらがな両方に対応しています(タブンネ)。

下記Boxにアップロードしたので、ダウンロードしてZIP展開の上お使いください。

app.box.com

f:id:tangential_star:20220402005851p:plain

1歩進むとパルキアと戦闘になる場所でセーブの上、お使いください
5-1-2.BDSPアルセウス自動色厳選のプログラム一式(筆者作成)

説明文書などは入っていません。

「はじまりのま」で1歩進んだらアルセウスとの戦闘に入る手前(階段の最上段1歩手前)でセーブして使ってください。漢字・ひらがな両方に対応しています(タブンネ)。

下記Boxにアップロードしたので、ダウンロードしてZIP展開の上お使いください。

app.box.com

f:id:tangential_star:20220402105343p:plain

1歩進むとアルセウスと戦闘になる場所でセーブの上、お使いください

 

5-2.プログラム(.py)のファイルを所定のフォルダに格納

まず、Poke-Controllerのをインストールしたフォルダ直下のSerialControllerフォルダの中から、Commands→PythonCommands→ImageProcessingOnlyと階層を深め、この中に、自身でプログラムしたPythonプログラムを格納します。

※もちろん、本記事でDLしたPythonプログラムでもOKです。

デフォルトだと、下記のようなPathになるかと思います。

C:\PokeCon\Poke-Controller-Modified\SerialController\Commands\PythonCommands\ImageProcessingOnly

f:id:tangential_star:20220402002432p:plain

まずはPythonのプログラムを所定のフォルダに入れよう

 

5-3.テンプレートマッチング(画像認識)用の画像を所定のフォルダに格納

続いて、Poke-Controllerのをインストールしたフォルダ直下のSerialControllerフォルダの中にある「Template」フォルダに、テンプレートマッチング(画像認識)で使う画像ファイルを格納します。

デフォルトだと、下記のようなPathでしょうか。

C:\PokeCon\Poke-Controller-Modified\SerialController\Template

f:id:tangential_star:20220402002839p:plain

テンプレートマッチング用の画像はTemplateフォルダに入れればOKだ

 

なお、画像認識に使うテンプレート画像は、Poke-Controller実行時にキャプチャボードから読み取っている映像と同じ解像度で作成しておくと、認識精度が良くなるそうです。したがって、推奨の「1280x720」でPoke-Controllerを実行する場合は、テンプレートマッチング(画像認識)で利用する画像の解像度も同一のものから作成しないといけません。自作する場合は注意しましょう。

5-4.Poke-ControllerでPython Commandを再読み込み(Reload)

さて、プログラムを入れて右下の「Reload」を押すと、Python Commandの中に、先程追加した自動化内容が追加されています。

f:id:tangential_star:20220402004305p:plain

フォルダに追加してReloadすると、プルダウンに導入したプログラムが追加されるぞ

5-5.右下の「Start」を押すと自動化開始

プログラムの追加が無事に完了していれば、あとは右下の「Start」をクリックするだけで自動的にプログラムが実行されます。

これで、画像認識を含めたプログラムの追加と実行のデモ説明は終わりです。お疲れ様でした。

f:id:tangential_star:20220402010753g:plain

右下の「Start」を押すことで選択した自動化プログラムの実行が始まる

 

あとがき

はい、2022年も4月になりました。年度改め、「2022年度」になりましたね。

今回は、ポケモン自動化界隈で最近流行っている「Poke-Controller」の導入方法を解説しました。Poke-Controllerを使えば「画面」の状況に応じた自動化ができるので、単純なコマンド自動化から比して、格段にできることが増えますね。、

今回は、筆者のプログラミング練習も兼ねて、BDSPのパルキアの色厳選自動化をPoke-Controllerで実装もしてみましたが、意外と手軽(これから開発する方は、本家のPoke-ControllerのリファレンスPythonコマンド_作成How_toをご覧ください)に基本的な自動化はできそうでした。何より、コンソールがあるのでデバッグ作業が楽なんですよね。

 

 

今回のブログ記事は、2022年3月20日に私が「Poke-Controller」の導入に成功したこともあり、忘れないうちに導入方法をメモしておこうと考え、文字通り「忘備録」としてまとめた次第です。

本ブログはいままで、どちらかと言えば「シンプルでベーシックな自動化」すなわち「Arduino LeonardoとSwitchだけの構成で実現」したプログラムについて紹介をするのが主だったのですが、この記事で、「画像認識」にもチャレンジ&ステップアップできる人が一人でも増えれば光栄です(役に立ったよ!という方は是非拡散してください←)。

 

ただし、Poke-Controllerを使うということはすなわち、Nintendo Switch Lite」での自動化が置き去りになるということですし、「PCが起動していないと自動化ができない」という別の課題も抱えることになるため、これから本ブログでメインとして取り扱うかは一考の余地があります。

一方で、「実装者」としての感触でいうと、自動化の自由度と幅が大きく広がるため、様々な自動化にチャレンジすることを念頭に置くと、メインとして取り扱うべきなのかな?とも感じます。

なので、これからも本ブログはマイペースに、自分が面白いと感じたものをメインとしつつ、どちらか片方をメインとして据えることはせず、のんびりと更新していければなと考えます。

ともかく、これからも自動化界隈がますます発展することを願いつつ、なによりもポケモンユーザーがたくさん増えていくことを祈り、本記事を結ばせていただきます(本ブログの応援もお願いします!)。

 

引き続き本ブログをよろしくお願いいたします。

ではではc⌒っ.ω.)っ

 

【Appendix】筆者が使っているシリアル変換器とキャプチャボード

さて、おまけ(Appendix)として、筆者が実際にうまくPoke-Controllerで自動化できたハードウェアの組み合わせを紹介します。

最初にも書いていますが、本記事は中級者向けです。ハードウェアには相性ほかの問題がありますので、こちらの機材での動作を保証するものではありませんが、筆者は実際にこの構成で動かせたよ、という観点でご覧いただければと思います。

 

今回Poke-Controller導入にあたって追加で必要になった機材

商品名 画像 Amazonリンク

備考(筆者コメント)

KeeYees FTDI FT232RL 2個入り

https://amzn.to/3J1SwWN

筆者が使用しているシリアル変換器。なんとケーブル付きで2個入り。1個壊れても安心だ。(2021/1/7筆者購入;購入時金額1,080円)

HDMI キャプチャーボード

https://www.amazon.co.jp/dp/B08R5PYX9R

格安HDMIキャプチャボード。個体差や相性の問題があるため、自己責任での購入をお願いしたい。(2021/11/14購入;購入時金額1,699円)

※その他の使用機材は【Arduino自動化 番外編3】筆者の使用機材一覧【紹介記事】をご覧ください
※お使いのArduinoボードによって、ジャンパーケーブルが別途必要となります。

 

--

導入記事:【Arduino自動化01】Arduino開発環境の導入

ポケモン剣盾の記事:ポケモン剣盾Arduino自動化 カテゴリーの記事一覧

ポケモンBDSPの記事:ダイパリメイクArduino自動化 カテゴリーの記事一覧

レジェンズアルセウスの記事:レジェンズアルセウスArduino自動化 カテゴリーの記事一覧

YouTubeチャンネル:ますたーの忘備録 - YouTube 

---

*1:世の中には、Poke-Controllerの導入方法をまとめた記事は数多くありますので、本ブログの記事は普段「Arduino Leonardo(いわゆるATMega32U4系列)」を利用している人向けに、情報を再整理したものとなります

*2:本記事は、有志の方々が簡便にしている導入手順を紹介し、健全な自動化コミュニティの発展・形成を目的にしております。迷惑行為が起こる場合、本記事については公開し続けられなくなりますのでご協力をお願いします

*3:Arduino IDEのインストールと、ライブラリの追加、VID・PIDの書き換えなどが、難なくできる人向けの記事です

*4:いわゆるFTDIと呼ばれるものです。今回はArduino LeonardoとUSBの変換に使うため、FT232を積んだ変換モジュールが必要になるようです

*5:キャプチャボードは、少なくとも1280x720ネイティブでの入出力・30Hz/45Hz/60Hzに対応したものが必要です。値段が高いからと言ってうまくいく保証はありません。個体差・相性の影響が大きいため、機材選定を含め自己責任でお願いします

*6:使用するシリアル変換器の仕様に基づきます。多くの場合USB-miniBだと思いますが、必ず確認の上お買い求めください

*7:通常、シリアル変換器はピンヘッダが付きますので、ピンソケットが付いているArduino Leonardoと接続する場合、「オス-メス」のジャンパーケーブルが必要となります

*8:今後、アップデートがあるかもしれませんし、基本的には自己責任でお願いします

*9:2022/4/1現在、本記事はLeonardo利用者にとっての補完記事としての側面が強いかもしれません

*10:まさか本ブログでこのライブラリを紹介していたことが活きるとはおもいませんでした

*11:バッチ「BatsForPokeCon_v05」の05部分はバージョンです。DLしたものに適宜読み替えてください。以降も同様です。

*12:右クリックで「編集」を押すとメモ帳で開かれると思います

*13:もちろん、バッチを使わずともPoke-Controllerを起動しようと思えば起動できますが、GUIPythonで起動しているようなので、いつものexeファイルを開くノリでは無いことを含み起きください

*14:当然、#pragma messageを使うと、コンパイル時にWarningと同じ色で文字が出てくるので、焦らないようにしましょう

*15:追加したHID-Project.hに#pragma messageが含まれているためコンパイル時にメッセージが表示されます。これは正常な動作です

*16:理屈で考えればわかりますが、TXはTransportつまり送信、RXはReceiveつまり受信なので「それぞれの送信を相手の受信につなぐ」と理解すれば、TXとRXを交互にする理由がわかりやすいですね

*17:Poke-ControllerはこのCOM番号にコマンドを送信するため、この番号が誤っていると自動化どころか操作が一切できません

*18:Poke-Controllerで「キャプチャボード」を正常に認識していても、FPSや解像度の設定、相性などによって映像が映らないことがあります。その際は別のキャプチャボードやHDMIケーブル、設定などをお試しください。もちろん自己責任でお願いします