ogochan
VR徘徊を動かすにあたって、PoCに使うハードウェアとフレームワークについて考えます。
まずはPoCなのでサクサクと出来ることを第一に考えます。
ハードウェア
現アプローチのVR徘徊は「台車に棒が立ってるもの」です。
ここで主要なハードウェアは
- 双眼カメラ
- 台車
- リモコン
- HMD
です。
双眼カメラ
双眼カメラについては、StereoPiを使います。
上のエントリではVer 1ですが、手元にはVer 2もあります。
どっちがどうということはないですが、とりあえずは新しい方を前提とします。
既に動かした経験があるので、悩むところはありません。
台車
台車についてはPoCではルンバを使います。
ルンバはシリアルポート経由で制御できるので、お手軽台車にすることが出来ます。作っても良いのですが、あまり悩みたくありませんのでこの方法をとります。
これも既に動かした経験があるので、悩みどころは少ないです。違いと言えば、当時はROS1でやっていたことでしょうか。
リモコン
手元のコンピュータ(Orange PiかデスクトップPC)にゲームコントローラをつないで使うことを考えます。
以前、潜水艇のステアリングにしたゲームコントローラがジャンク箱からいっぱい出て来ました。
HMD
近頃はいろいろあるようですが、普段このような仕事をしていないので手元に良いのがありません。
ちょうど上のStereoPiのエントリの時に使った「段ボールゴーグル」があるので、これで済ませることにします。
ソフトウェア
ここであまりエネルギーをかけることは本意ではありませんので、簡単にやってしまいたいところです。
ストリーミングのためのソフトウェアについては、StereoPiを試した時のものをそのまま使います。
台車コントロールが問題ですが、3つ方法があります。
- 書いてしまう
ゲームコントローラを操作するプログラムは散々書いたので、資産があります - ROS/ROS2を使う
前にルンバを動かした時はROSでやりましたし、ネットに情報がたくさんあります - ArduPilotを使う
しょせんリモコン台車ですから、いわゆる「ラジコン」でも十分ではないかと
見通しが楽で早く出来そうなのは、自分で書いてしまうことです。たいそうなことをするわけでもないですし情報も十分にあるので、そんなに手間がかかるとは思っていません。ゲームコントローラは結構厄介なこと(プロトコルが出鱈目です)があるのですが、それも経験済みですから。
とは言え、自分で書いてしまうと絶対に不良資産化します。動かして捨てると割り切れば不良資産になりませんが、なまじ成功してしまうと余分なことを考えてしまいます。どこかで捨てなければならないと思います。そうなるのであれば、最初から自作しない方が良いでしょう。
ROSは既に動かしていますし、ネット上にも「ルンバをROS/ROS2で動かす」みたいな情報は大量にあります。なので、悩み箇所は少ないのかなと思ったりします。ゲームコントローラについても、それ用のノードがあります。
ただ、将来に渡っても自律運転は考えていないので、「何もそこまで」という感じはあります。ROSと自動運転は直接は関係ないですけどね。
単なるリモコンだということであれば、ArduPilotを使うという手があります。後で自動運転したくなった時でも対応可能です。また、ROSのノードとすることもできます。そういった意味では一番良い選択のように思えます。
ところが、ArduPilotをルンバに適用した話はほぼありません。誰かやっていれも良さそうな気がするんですが、すぐには見つかりませんでした。すぐには見つからないということはそれだけ情報が少ないということでもあるので、ちょっと残念です。
ということでいろいろ考えて、特にArduPilotは深く探ってみたのですが、結局ROSを使うことにしました。追加で書くコードも少なそうですし、汎用性もありますから。
と、ここまで書いておいて、実は一気に卓袱台返しみたいな解決があります。それは
赤外線リモコンを使う
ということです。
元々ルンバには赤外線リモコンの機能がありますので、PoCとしてならこれでも良いかも知れません。まぁネット越しの遠隔操作が出来ないのは残念ですけど、「とりあえず」ならこれでも良いですね。
おわりに
とりあえず実現の方針は立ちました。
ここまでブレークダウンしてあれば、これは絵空事のプロジェクトじゃなくて実現の可能性の高いものだということがわかると思います。逆に新規性のある部分が少な過ぎてガッカリなのかも知れません。大丈夫です。PoC過ぎたら解決るべき問題は山積されると思います。
方針ができたので、次回からは具体的な作業に入ります。次回はROSをインストールする話です。