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