疲れたので電子工作しますスマートフォン用の表示で見るもう疲れたので電子工作しますくたびれ候この広告は、90日以上更新していないブログに表示しています。2019-06-16スマホ操作ロボット~実動作確認~3DCADによるメカ設計に続き、スマホ操作ロボットの制作を行いました。メカ設計からパズドラをプレイするプログラム作成まで一通りを自作し、動作確認まで一通り完了いたしましたので、報告いたします。感想とまとめ実際の動作スマホ操作ロボットをつくったので、試しにパズドラをプレイさせてみました。2019パズドラのドロップをカメラ画像から認識し、ルート解析結果に従ってアクチュエータ制御を行ってドロップ操作してます。メカ設計Fusion360で設計を行いました。動作機構はコチラの動画を参考にさせていただきました。www.youtube.comざっくり書くと、ラックアンドピニオン動作のために2個のステッピングモーター、タップ用の直動動作のためにソレノイドを取り付けています。金属部品は全てボール盤で穴あけ加工、タップ切り、仕上げまで行っています。詳細は以前の記事で書いてます。今回加工時にタップを何本か折ってしまったのですが、ボール盤のチャックにタップを固定して、手で回しながらクレ556をいれつつ作業するととてもきれいに仕上がりました。仕上げには水やすり(240→400→600→1000→1500の順に使用)、ピカール剤を使いました。タップ部分にはソレノイドの先端にタッチペンの先を付けていたのですが、認識してくれませんでした。そこで、100均の吸振素材にアルミホイルを巻き付けたものを取り付け、更にクリップ付きのジャンパ線をソレノイドの鉄心に取り付けたところ、うまくいきました。シャフト、シャフトホルダ、スライドユニットはAmazonの激安品を使ってますが、動作させるだけなら問題なさそうです。今は少し振動が大きいですが、この辺の部品をもっと高価なものに変えたらよりスムーズに動くような気がします。以前の記事でステッピングモーターの駆動回路を紹介しましたが、これをもう一軸増やしてます。ソレノイドに関しては、5Vレギュレータから電源を供給し、ステッピングモータと同様にトランジスタ(2SD1415)で駆動してます。以前の記事では回転角度で制御してましたが、今回はパルス数(各層への電流の切り替え回数で制御してます。ステッピングモーターがある任意の位置にいるときを0パルス位置(原点位置)として、そこから何パルス動作させたかによって位置を相対的に制御しています。タップ時にはソレノイドの機械的な遅れがあるため、ソレノイドに電圧印加後少しスリープ待ちさせて位置決めしてます。画像処理あらかじめ各色ドロップがどれくらいのRGB値を持つのかを記録しておき、これを用いたしきい値判定により、ドロップ色の認識を行っています(実際はキャリブレーション用のプログラム・画像を用意して、自動でしきい値用のRGB値をcsvファイルに取得・記録するようにしてます)。パズドラ特有の問題として、ドロップの背景まで含めてしまうとキャリブレーションがうまくいかないため、ドロップの中心からある一定の幅の画素だけしか認識に使わないようにしています。ルート解析Pythonなので想像よりもかなり楽に実装できました(逆に思いもよらないバグもありましたが、、、)。解析アルゴリズムとしてはビームサーチというのを実装してみました。リファクタリングはかなりしましたが、ラズパイの限界なのか計算速度が遅く、現状演算に数秒~十数秒かかってしまってます。コンボ数ではなく消えるドロップ数を評価値にしてるため、コンボは少し少な目になってしまってます。言葉で説明するのがめんどくさいので、実装アルゴリズムの超概要を図で示します。同一の盤面状況を無駄に繰り返さないよう、ゾブリストハッシュで取り除いてます。具体的なアルゴリズムは、1オフラインでハッシュ値を用意する。ハッシュ値の種類としては、あるマスにあるドロップ色があった場合のハッシュ値(つまり30マス×6色=300通りのハッシュ)と、操作位置に対応するハッシュ値を用意する(30マス=30通り)。2ある盤面状況のハッシュ値は、全マスのドロップ色に対応する30個のハッシュ値と現在操作位置に対応するハッシュ値、計31個のハッシュ値をXORすることで得られる3ある盤面からある操作によって盤面が変化したときのハッシュ値は、移動先・移動元の2つのマスについて移動前後に存在するドロップ色のハッシュ値(計4個)を元の盤面ハッシュにXORし、さらに移動前後の操作位置のハッシュ値(計2個)をXORすることで得られる。感想とまとめ想像してたよりすんなり動いてくれました。確実に動くので作ってて楽しいです。10:30スマホ操作ロボット~実動作確認~Tweet広告を非表示にする関連記事2019-08-25ディープラーニングを用いて約1.8万円の低コスト筋電義手を作りました前回掲載したディープラーニングを応用した筋電義手の記事を予...2019-07-19ラズパイでディープラーニングと筋電位センサを用いた筋電義手(プロトタイプ)作りました最近、以前から興味のあった筋電位センサを触っています。...2019-04-21スマホ操作ロボット~3Dモデルでのメカ設計とX軸の動作確認~ラズパイによるステッピングモータの動作確認が上手くいったた...2019-03-11AIドアマンブラッシュアップ(電池ボックス(秋月のBH-441A150)&サーボモータ(SG-501...以前の制御基板に続き、AIドアマンのブラッシュアップを行いま...2019-03-10ラズベリーパイから秋月のユニポーラステッピングモータ(ST-42BYG020)を動かす最近ラズベリーパイを始めました。月別アーカイブはてなブログをはじめよう!mou-tsukaretaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。