2018年6月6日水曜日

サーボモータハンチング対策

ポケモンGoBotシステムの問題点の一つはサーボモータへの負荷が大きすぎる点であった
以下はサーボに起きる問題とこの負荷を軽減する施策

スマホの揺らし台

サーボモータのハンチング

ハンチングとはサーボの停止角が定まらずに±1度の振動が発生する現象
経験則的にまとまった時間使い続けると発生する
Botシステムでは動作上は問題ないのだが、非常にうるさいし部品の摩耗も怖い

サーボモータの発熱

これはモータよりもシェル内の制御用ICの発熱
数時間単位の連続使用を行うとシェルよ溶けよ!と言わんばかりの高熱が発生
SG90ではこれでよくサーボが破損した

問題点の対策

長時間停止角を維持するようなシーケンスをやめればよい
ポケモンGoBotの例ではスイングする数秒のみアタッチして動作を行う
次にスイングするまでの数十秒間はデタッチしてフリーにしてしまう
この間は当然回転角維持のトルクは働かないのだが、それを許容する機構にすればいい

これでハンチングも発熱も解決
サーボモータを数時間連速動作させること自体がそもそも筋悪であった

追記:その他のハンチングについて

その後調べたハンチング関連の情報を追記する

・稼働後しばらくしてからハンチングが起きる理由
 →ギアの摩耗などが原因
  新品が一番精度がよく、摩耗により検知/制御精度が落ちる
  アタリが出て負荷が下がるのもハンチングの原因になり得る(後述)

・チューニングによる対策
 →ハンチングが起きるメカニズムは『オーバーラン』である

   目標角度まで回転→行き過ぎる→戻し方向に回転→行き過ぎる…

  制御パラメータのチューニングでオーバーラン対策となる(ゲイン調整)
  一番簡単な方法は回転速度を下げてしまうこと
  (簡易的な機構のサーボやその制御の場合は調整できない)

・回転軸への対策
 →オーバーラン対策として回転軸に摩擦や軽い負荷をかける対策
  ブレーキをかけてから実際に軸が停止するまでの制動距離(角)を短くする
  常に余計な力がかかるということなのでロスは増える
 

2018年6月4日月曜日

PS3版EOJレアカード相場観

それっぽい検索語で飛んでくる人がいるのでメモを残す

すべてPS3版終息直後あたりの情報なので注意
今は需給ともにほぼ0なので中古市場、中古相場自体が存在しない
(欲しい人は欲しいが、要らない人にとっては完全な紙屑)

未開封ブースター編

 Set.1 >>> Set.3 ≧ Set.2

Set.1ブースターは慢性的な供給不足であった
Set.2は作りすぎたため末期には投げ売り状態
Set.3はSet.2ほど値崩れはしなかったが同じく投げ売り組

ゲーム本体にSet.1ブースターが1パック封入されているのでこれが価格の上限として機能していた
(投げ売りの本体を買えば確実に1パック入手)
Set.1ブースターのBOXパッケージ

構築済デッキ編

Set.1(火) > Set.1(土) > Set.1(木、水) > Set.1(機巧) >>> その他

ブースター同様Set.1構築済デッキ自体がレア
使用頻度が高いUR『勇者』が封入されていたので実需もあった
デッキ間の価値の差は封入された『勇者』の性能によるもの
(ただし事実上プレイ不能である現在、カード性能にどれほど意味があるのかは謎)

機巧デッキのみ『勇者』の代わりに『龍』が封入されているため価値が低い

Set.2構築済はブースター同様作りすぎたため投げ売り
封入された『叛逆者』も実用度は低く不人気

Set.3構築済は存在せず
Set.1構築済みデッキ(5種)

シングルカード編:高額レア

・プロモカード(『炎将軍ラグ』除く)
 通常のカードの絵柄違い
 雑誌や店頭のキャンペーン、体験会で配布されたもの
 入手難易度による価値のブレが大きい

 以下の3枚は特に入手条件が厳しい
  ・『機巧の聖少女 ロミリ』(プロモ版)
  ・『裁かれた聖女 エディン』(プロモ版)
  ・『合機ディオスクリ』(プロモ版/海外版のみ)
 前2つは1万3000円くらいのフィギュアの購入特典
 (フィギュアは泥人形)
 ディオスクリは海外のみ実施されたプロモ企画の景品
 (日本語表記のカードは存在せず)
ロミリとエディンのプロモカード/SIEJP公式より(元画像3Dコードそのままなの酷くない?)
泥人形/こちらは本当に無価値なのでトラッシュしてよい
・Set.1勇者
 使用頻度が高く、構築済デッキの入手難易度が高かったため
 機巧の勇者のみブースターから排出

・Set.1叛逆者
 使用頻度が高く、ブースターの入手難易度が高かったため
 ファントムカード(背景のみ、カメラ越しにキャラクターが浮かぶ趣向)
 同じファントムカードのSet.2勇者と混同しやすいので注意

シングルカード編:準高額レア

・その他Set.1ブースター排出のURすべて
 ブースターの入手難易度が高かったため
 UR(ウルトラレア)は最上位レアであり、レアリティマークが金色
 ※『白のキュービック』『シオンダルの火祖神』はスターター収録なので注意

水の『勇者』と水の『叛逆者』絵柄の右下にあるのがレアリティマーク

シングルカード編:残念レア

・『炎将軍ラグ』(プロモカード)
 Set.2ブースターのBOX購入特典だったため配布数が異常に多い
 当時のダントツNo.1カスレア
 ブースター排出の通常絵柄ラグの方が(まだ)価値がある

・Set.2、Set.3のURすべて
 ブースター&構築済デッキが末期に投げ売られたため
 元が投げ売りなので剥いても投げ売りである
 むりやり順位をつけるならば
  Set.3UR ≧ Set.2UR(ブースター) > Set.2UR(構築済)
 (構築済は100%封入/ブースターのUR排出率を考えると流通枚数にかなり差がある)
 Set.1の使用頻度の高いRの方が価値があるかも

地味に値段がつくやつ

・Set.1のR以下カードすべて
 ブースター不足のため安く売っていれば欲しい
 Set.1カードは紙束化しない
 ただしスターター収録カードは死ぬほど出回っているので除外

オークションでのトラップ

・中古本体を買ったらレアが抜かれている
 『白のキュービック』『シオンダルの火祖神』が抜かれていることが多い
 
・売り手がSet.2と.1を勘違い
 パッケージが似通っているのでSet.2をSet.1として売ってしまう
 ブースター/構築済ともに価値が一桁違うので大損害

・海外版が混じる
 英字版がある
 機能上(3Dコード)は国内版と同じだがコレクション目的の場合は困ってしまう

・ファントムカードを勘違い
 同じ属性のファントムカードは非常に似通っているため勘違いしやすい
 Set.1ファントムカードとそれ以外では価値が一桁違うので大損害

以上
既に対戦サーバがクローズしているので実質プレイ不可能
ごく薄いコレクター需要しかないので転売商材には全くおすすめしない

Bot使用時におけるGOPlusの再接続自動化

ポケモンGoBotにおける最大の問題点はGoPlusが一時間で自動切断されることだった
一時間おきに手動で再接続する必要があり、Botとしてのパフォーマンスが大幅に低下する

ここではiOSのスイッチコントロール機能を用いて再接続の自動化を実現する

GoPlusの再接続の自動化

再接続の自動化には以下の3つの制御が必要になる
 1.GoPlusの切断を検知すること
 2.GoPlusのボタンを押すこと
 3.クライアント画面上のGoPlusボタンを押すこと

GoPlusの切断を検知する

GoPlusの振動モータ信号をマイコン等で監視することで切断を検知できる
(GoPlusが接続された状態でBOTが動作していた場合、定期的に振動するため)
モータ停止中はほぼ0V
モータ振動中は3V程度の電圧が印加される
100msec程度の周期でモータ信号をチェックし、一定時間の連続停止を切断と判定する

LED信号の監視の方が好ましいが、配線の引き出し難易度が高すぎて断念した

GoPlusのボタンを押す

リレーなどでボタンを押せばよい
配線の引き出しは自動化改造時を参照
ボタンの配線をGNDに落とせばボタンを押した状態と等価になる

プロトタイプ/ArduinoのXBeeシールドを流用

クライアント画面上のGoPlusボタンを押す

iOSのスイッチコントロールを使用する
外部スイッチとしてRN42をHIDキーボードモードで使用する
マイコンとRN42をシリアル接続し、マイコン側から打鍵情報をRN42に転送する

参考メモ1
参考メモ2

スイッチコントロールのレシピには以下2つの連続操作を登録
 ・速度警告ウィンドウのボタン位置をタップ
 ・GoPlusアイコンボタン位置をタップ

速度警告ウィンドウへの対策を入れる所がポイント
一度表示されると『私は運転者ではありません』ボタンを押すまで閉じないため
この状態でGoPlusアイコンボタン位置をタップしても無効

GoPlusアイコンに被るのでウィンドウを消す必要がある

結果と問題点

GoPlusを用いたBotの一時間の壁を突破することに成功した
問題は誤タップによる画面遷移に対応できないこと
速度警告ウィンドウへのタップでジムなどを誤タップしてしまう場合がある
この場合はジム画面から抜け出せなくなる


2018年6月3日日曜日

iOSスイッチコントコントロール:レシピの設定

レシピとは

スイッチコントロール機能の一つ
スイッチに対して特定の操作を割り当てることができる
スイッチをトリガに一連の画面操作を記録、再生することも可能(カスタムジェスチャ)
ここで扱うのはこのカスタムジェスチャのみ

レシピ(カスタムジェスチャ)の設定

ここではBluetooth接続の外部スイッチ(キーボード)を用いるものとする

1.スイッチの登録
 前回参照
 レシピを用いる場合『アクション』は無視されるので適当なものを選べばよい

2.レシピの設定
 設定→一般→アクセシビリティ→スイッチコントロール→レシピ→新規レシピを作成
 『名前』は適当に入力
 『スイッチを割り当てる』で登録したスイッチを選ぶ
 →『カスタムジェスチャ』を選択
  『新規ジェスチャ』画面が開くので登録したい画面操作を実施後、『保存』を選択
 ここまででレシピが登録される

 『レシピを起動』で登録したレシピを選択する

レシピの使用方法

1.スイッチコントロールをON
 設定→一般→アクセシビリティ→スイッチコントロール
 『スイッチコントロール』をON
 『スイッチは”○○○○”レシピを使用するように設定されています』
 と表示されたら成功(※○○○○はレシピに付けた名前)
 
2.スイッチの動作確認
 登録したスイッチのキーを押す
 登録したレシピ通りの画面操作が再生されれば成功
 レシピによる画面操作時にはタップ位置に丸いマーカーが表示される


TIPS

・動作がおかしくなったら『スイッチコントロール』を入れ直す
 →青いハイライトが頻発する場合など
  レシピが無効になってスイッチ側のアクションに切り替わっている

・『スイッチコントロール』のショートカットを有効にする
 →『スイッチコントロール』を頻繁にONOFFするため
  設定→一般→アクセシビリティ→ショートカット
  『スイッチコントロール』をチェック
 ホームボタンのトリプルクリックで『スイッチコントロール』をONOFFできる


2018年6月2日土曜日

iOSスイッチコントロール用外部スイッチの自作

iOSではアクセシビリティ向上機能として操作を外部スイッチに代替できる
この外部スイッチについての調査および自作の方法についてのメモ

外部スイッチとは

iOSのいう『外部スイッチ』とは外付け入力機器のこと
分かりやすいものでいえばBluetoothキーボードが該当する
その他Bluetoothコントローラ、カメラアダプタ経由有線キーボードなど
(※iOSとの相性次第なのですべての製品が保証されるわけではない)
有線カメラシャッターはダメであった

電子工作におけるBluetoothキーボード制御

実物をリレーで叩く、BT機能のあるマイコンでプロトコル再現などが考えられる
ここではBluetoothモジュールRN42のキーボードエミュレーション機能を用いる

BluetoothモジュールRN42

内部コマンドによる機能切り替えだけでHIDキーボードとして動作する
切り替え後は外部からはBluetoothキーボードとして認識される
キーボード打鍵はシリアル入力により実現できる
よってマイコンなどからiOSを間接的にコントロールすることが可能となる

画像は秋月より/ピッチが狭く使いづらいが結線するポートはわずか
切り替え方法:
 RN42へシリアル接続(有線、無線どちらでもよい/出荷状態は115200bps)
 コマンドモード遷移『$$$』後に『S~,6』コマンド入力で切り替え
 次回起動時からはキーボード扱いとなる

注意点:
 この機能はRN42のファームウェアバージョン依存
 古いものには機能が無い模様(コマンド入力時にエラーとなる)
 ファームアップも無理なので新しく買うこと

スイッチコントロールの設定

以下はiOS側の設定

1.キーボードとBluetooth接続を確立
 設定→Bluetooth→Bluetoothをオン
 デバイスの中からキーボードを選択してペアリング

2.スイッチの登録
 設定→一般→アクセシビリティ→スイッチコントロール→スイッチ
 新しいスイッチを追加→外部
 『外部スイッチをアクティベートしてください』という表示を確認
 ここでスイッチとして用いたいキーを押す
 『新しいスイッチ』ウィンドウが開くので適当なスイッチ名を入力し保存
 『アクション』ウィンドウが開くのでスイッチに対応するアクションを選択


ここまで
次回以降のメモでレシピを用いた実用的なスイッチ運用を行う