■仕組みとか使用感とか

以降はメモなので興味がある人以外は

見なくていいです!!!!



----------------------------------------------------------------------
「フィットネスバイクのインターネットを作る!」を実装してみた上での、メモみたいなもの


・使用できるフィットネスバイク
ALINCOの「ながらバイク4518」で動作確認したと書いてありますが、
仕組み上、おそらく「メーターコード」が付属しているバイク(ディスプレイ付き、みたいなモデル)であれば
ほぼ動くのではないかと思います。(On/Offを検知するだけなので)

ちなみに自分が使ったのはもっと安い
IGNIO FB‐002LX」を使いましたが、もっと安いのでも使えそうです。


・用意するもの
HiLetgo Nanoは1個でいいんですけど、3個セットでしか売ってないので
ありがたく予備にしておきましょう。
付属のピンヘッダをはんだ付けするか、直接ケーブルをはんだ付けする必要があるので
いずれにせよ、はんだ付けは必要です。
(どうしてもはんだ付けを避けるのであれば、少し高くなりますが装着済みモデルを探しましょう)


・データストレージの準備 (Firebase Cloud Firestore)
そもそもFirebaseってなんやねんという感じでしたが、モバイルやWebアプリ向けの
いろいろ基盤(雑)で、DBとか認証機能とか使えるようです。(ここなど
今回はDBのFirestoreを利用します。

古いhtmlしか知らないなので、どうやってWebサイトを動的にしてる(バイクを漕ぐとストリートビューが動く)の
だろうと疑問に。

内容を見ると、バイクを漕いで距離情報をバイクからAndroidアプリ経由でFirestoreに
順次送信すると、Webアプリ側ではDBをリスニングしていて、データがアップデートされるとWebアプリが検知し
処理が流れる(Google Map側の処理)・・・を繰り返しているみたい?
へえー。

ちなみにFirebaseはSparkプランという無料プランがあるので、費用がかかりません。


・ストリートビューAPIの準備 (Google Map API)
こいつはGoogleのクラウドサービスGoogle Cloud Platform(GCP)から有効にしてやる必要があるので、
申し込んどきましょう。クレジットカード必須です。
ただ後述しますが、こちらも費用はかからないレベルです。


・Webアプリの表示
GoogleマップをPCで表示させるため、ブラウザからWebアプリを動かしますが
Webサーバが必要だな、、、

自前で建てるのも最近はイマイチかと思いますので、どうせGCPを使っているなら
ついでにGoogleのAppEngineも使ってみようかと。

ありがたいことにAppEngineは無料枠(Fインスタンスなら1日28インスタンス時間)があるので、
何人もWebアプリを動かすような負荷をかけなければ、Webサーバも無料枠内で収まります。


・姿勢推定機能の導入
困った、、姿勢推定の部分はソースコードが無い、、、
ので、自分で追加しました。
Posenetのサンプルコードが公開されているので、Webカメラを使ったデモからいろいろと参考にしてます。


・誤差について
ストリートビューの移動距離(移動距離が不定な上、距離情報とかないし)とバイクを完璧に連動させるのは
無理なので、誤差が出るのはしょうがないです。

都会を走ってみましたが、Androidアプリ上で表示されている「バイクを漕いだ距離」より、
「ストリートビューで実際に動いた距離」は2割程度少なくなるような感じになります。
この辺はやりたければアプリ上で補正すればいいかと思います。


・クラウド関連の費用について
・Firebaseはさっきの通り無料プランがあるので無料。
(GCP側に自動でプロジェクトが作られる。ただ、そのプロジェクトに請求先アカウントを登録してはいけない。
負荷が増えると、勝手に無料プランからアップグレードしてしまい、費用が発生してしまう
ケースがあるらしい。)

・AppEngineもほとんど負荷かけない(自分しか使わない)ため、無料枠に収まる。

・Google Map APIは月200ドルの無料枠があるものの、超えると費用がかかる。
ストリートビューを移動したり、マップを移動するときにMap APIを呼び出すが、
毎日60分間漕いでいたため結構な回数になるんじゃないかとビクビクしていた。

が、結果としては「Dynamic Street View」「Dynamic Maps」の使用量は共に30回程度だった。
どうやらカウントされるのは、Mapインスタンスを作成したときのみで、移動は特にカウントされないっぽい。
(Webページを読み込んだときのみ発生)

共に30回程度だと使用料は100円にも満たないので、毎月200ドル分無料の範囲内であった。
(ただ念のためAPIの1日の上限設定はしておいた方がいい)

というわけで、結果としてクラウド関連費用はかからないので、ランニングコストは0円!!

2か月毎日60分漕いでますが、動作良好です。


----------------------------------------------------------------------
「FF11 ランニング」のメモ

FF11を動かすためには、(親切な猫による検閲)を使う必要があるのだろう
という結論に至ったので、PosenetのPython移植版を探す。

あった!!神よ!!!

ただ移植のためか、java版より重い、、、精度もちょっと劣るかも、、、、
CPUバージョンだと数FPSしか出ないので、GPUバージョンで動かしています。
使ってるGPUはGeforce GTX 2070 superなので、スムーズです。

Windowsで動かしているので、Dockerの方が楽そうでしたが、なぜか動かなかった
(パスの問題っぽい、、、)ので、Anacondaを使った仮想環境にしました。

バイクの時と同じようにWebカメラの動画からリアルタイムで姿勢推定をPosenetで行い、
取得できた体の各ポイントの情報から、たぶんどのようなポーズを取っているかなーを判定し
条件に合えば(親切な猫による検閲)の入力として、(親切な猫による検閲)を動かし
FF11内でキャラが走っているわけです。

----------------------------------------------------------------------
「FF11 リアルマウント」のメモ

バイクとPCを繋ぐわけですが、こんどはArudino Pro Microを使って、人間キーボードと化しているだけです。
ただもちろん前出の通り(親切な猫による検閲)の入力として使っているのと、
姿勢推定で、手信号で方向を変えられるようにしてあります。

----------------------------------------------------------------------


といわけで実験おわり!!!