趣味TECHオンライン | 趣味のモノづくりを応援するオンラインメディア

趣味のモノづくりを応援するオンラインメディア

スマホ操作ロボットを作ったのでパズドラさせてみた


f:id:tokyo_ff:20190701213046j:plain

スマホを操作するロボットを作成し、パズドラを自動でプレイさせてみました。

 

<投稿者:たいおつこう @taiotsukou>

余暇の時間にモノづくりを楽しんでいる会社員です。マイコンや3Dプリント・プリント基板などを利用して活動しています。

twitter.com

mou-tsukareta.hatenablog.com

mou-tsukareta.hatenablog.com

 

つくったものの概要

スマートフォンを自動的に操作(タップ・スライド)してくれるロボットを作成しました。以下の動画では、大人気パズルゲーム『パズル&ドラゴンズ』のゲーム画面をUSBカメラで認識し、自動的にプレイさせています。

 

あなたはなぜパズドラにハマったのか? ソーシャルゲームの作り手が明かす舞台裏

あなたはなぜパズドラにハマったのか? ソーシャルゲームの作り手が明かす舞台裏

 
パズドラ タッチペンセット

パズドラ タッチペンセット

 

 

システムの概要を下図に示します。

f:id:tokyo_ff:20190701213236j:plain

 

制作動機

f:id:tokyo_ff:20190701213347j:plain

メカ、エレキ、ソフト設計をまんべんなく楽しめる制作物として、以前からスマートフォンを自動で操作するロボットを作りたいと考えていました。また、いままではPICシリーズのようなワンチップマイコンしか扱ったことがありませんでしたが、高性能で手軽に扱えるボード型のものも何か触れてみたいと思い、Raspberry Piの勉強も兼ねて制作を行いました。Pythonも使ったことがなかったので、いい勉強になりました。

ラズパイマガジン 2019年6月号 (日経BPパソコンベストムック)

ラズパイマガジン 2019年6月号 (日経BPパソコンベストムック)

 

 

メカ設計

動作機構はさかじゅん様のコチラの動画を参考にさせていただきました。

www.youtube.com

スマホの位置を制御するために2つのステッピングモーターによるラックアンドピニオン機構を用い、画面をタップするためにソレノイドによる直動機構を用いています。

 

設計はFusion360で行いました。

f:id:tokyo_ff:20190701213640j:plain

 

自分で3Dモデリング・加工(穴あけ、タップ切り)を行ったのは以下の画像の部品です。

f:id:tokyo_ff:20190701213652j:plain

 

金属部品はMISUMIのHPでサイズを指定して購入し、自宅の卓上ボール盤とタップツールを用いて穴あけ・タップ切りを行いました。

f:id:tokyo_ff:20190701213706j:plain

 

ソレノイド固定用の治具は3Dプリントで作成しました。

f:id:tokyo_ff:20190701213722j:plain

f:id:tokyo_ff:20190701213730j:plain

 

市販の部品は以下になります。なお、X-Y軸用のステッピングモーター(秋月のST-42BYG020)とタッチ動作用の直動ソレノイド(ZHO-0420S-05A4)は3Dモデルが存在しないため、自分でモデリングを行いました。

f:id:tokyo_ff:20190701213752j:plain

akizukidenshi.com

akizukidenshi.com

 

上下の板は市販のスライドレールによって接続しています。

f:id:tokyo_ff:20190701213805j:plain

 

スライドレールは自分でモデリングするのが難しいので、モノタロウやMISUMIからモデルを入手できる商品を使うのがいいと思います。

www.monotaro.com

 

ラックとピニオンギアに関しても、市販のものを使います。今回は3Dモデルを入手できるものを使っています。

www.monotaro.com

www.monotaro.com

 

リニアブッシュとシャフトホルダに関しては、ある程度デザイン・寸法が共通化しているため、Amazonの廉価品を購入したあとに、相当する3Dモデルを探して使用しました。

f:id:tokyo_ff:20190701213958j:plain

 

また、スマートフォンのタップ操作に関して、ソレノイドの先端にタッチペンの先を付ければうまくいくと思っていたのですが、うまく認識してくれませんでした。そこで、100均の吸振素材にアルミホイルを巻き付けたものをソレノイドの先端に取り付け、更にICクリップをソレノイドの鉄心に取り付けたところ、うまく認識されました。

f:id:tokyo_ff:20190701214018j:plain

 

エレキ設計

今回はブレッドボードで済ませました。

f:id:tokyo_ff:20190701214044j:plain

 

ステッピングモーターとソレノイドを駆動するためのトランジスタには2SD1415を用い、ベース抵抗は3.3kΩとしています(写真にはタクトスイッチも写っていますが、実際は使っていません)。

f:id:tokyo_ff:20190701214131j:plain

akizukidenshi.com

 

ソフト設計(動作・位置制御)

今回使うステッピングモーターはユニポーラタイプであり、電流を流す端子を切り替える毎(1パルス)に少しづつ回転します。また、駆動方式は下図のタイミングチャートに示すような1-2相方式となるようにプログラムを実装しました。

f:id:tokyo_ff:20190701214210j:plain

実際の位置制御に関しては、ステッピングモーターのある任意の位置を基準位置として、そこから何パルス動作させたかによって位置を相対的に制御しています。また、ソレノイドには機械的な遅れがあるため、タップ動作時はソレノイドに電圧印加後に少しスリープ待ちをさせることで、確実にタップ動作を行うようにしました。

 

ソフト設計(画像処理)

パズドラは3つ以上の同じ色のドロップを並べることでドロップを消していくゲームです。よって、プレイを自動化するにはカメラ画像からドロップの色を識別する必要があります。そこで、あらかじめ各色ドロップがどれくらいのRGB値を持つのかを記録しておき、これを用いたしきい値判定により、ドロップ色の認識を行っています。

f:id:tokyo_ff:20190701214251j:plain

 

ソフト設計(パズルのルート解析)

解析アルゴリズムにはビームサーチを採用しました。評価値は消えるドロップ数としています。ビームサーチの概要は下図のような感じになります。

f:id:tokyo_ff:20190701214312j:plain

また、過去に評価済みの盤面状況はゾブリストハッシュで取り除いてます。具体的には、盤面評価時に盤面のハッシュ値をリストに追加していき、ある盤面のハッシュ値がリストに既に存在する場合は、盤面評価を行わずにスルーしています。

 

最後に

今回はスマホ操作ロボットを作成し、ゲームを自動的にプレイさせてみました。今後もさらなる改良を目指していきたいと考えていますが、特に筋電位や視線による操作など、手足が不自由な人でもスマホを物理的に操作できるような仕組みを作っていきたいと考えています。

 

 

<投稿者:たいおつこう @taiotsukou>

余暇の時間にモノづくりを楽しんでいる会社員です。マイコンや3Dプリント・プリント基板などを利用して活動しています。

twitter.com

mou-tsukareta.hatenablog.com

mou-tsukareta.hatenablog.com