ESP32とLegoを使ってお手軽にFPVラジコンを作ってみる　その１．構想とメカ製作

#FPVへの憧れ!
今回はFPVラジコンを作ろうと思いますが、いろいろ初挑戦があるので分割投稿にします。
第一回は全体の構想とボディ製作部分をご紹介します。

ちなみにFPVとはFirst Person View（一人称視点）の略で、FPVラジコンとは自分が対象に乗っているような視点で操作する事を指しています。


#1.長めの前置き
あらためましてFPVラジコンって面白そうですよね。クワッド/マルチコプター（いわゆるドローン）だと結構有名になってきて、FPVレースとかのかなり刺激的な動画もたくさん投稿されています。下の動画みたいなFPVには本当にあこがれます。

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Smooth sailing across the frozen shores of Sweden 🇸🇪with Menga FPV <a href="https://twitter.com/hashtag/FPVFeature?src=hash&amp;ref_src=twsrc%5Etfw">#FPVFeature</a><a href="https://twitter.com/hashtag/sendit?src=hash&amp;ref_src=twsrc%5Etfw">#sendit</a> <a href="https://t.co/dXdAVsxfJT">pic.twitter.com/dXdAVsxfJT</a></p>&mdash; Drone Racing League (@DroneRaceLeague) <a href="https://twitter.com/DroneRaceLeague/status/1230844668457312256?ref_src=twsrc%5Etfw">February 21, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

FPVを行うためには、通常の操縦システムの他に、画像取得ようのカメラ、送信用トランスミッター、受信装置、表示装置が必要です。専用のトランスミッターやゴーグルもたくさん販売されていて、少し前にはこんないかついのが話題になってました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/f457e10e-2fe4-b0a8-ab0e-fa46c7ab285d.png)
かっこいい。。。。ですね。

###最終的にやりたいこと
端的に言うとFPVでロボットの操縦をしたい！
![spot_oculus.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/1a0ff157-fd29-d5d5-e0f4-02b9f9736213.png)
上のイメージはspot mini + oculurs questです。
ロボット視点で、3D視界を得て周りをぐりぐり見渡しながら操縦するのって楽しそうじゃないですか？

実は似たような事をされている方は既にいらっしゃって、格安在庫セールで話題になった2足歩行ロボットをoculus questからマスタースレーブ操縦してたりします。このロボットで海外から日本のカンファレンスにリモート登壇してたりするので未来ですね。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">念願のＶＲマスタースレイブが完成しました!!<a href="https://twitter.com/hashtag/%E3%83%97%E3%83%AA%E3%83%A1%E3%82%A4%E3%83%89AI%E3%83%8F%E3%83%83%E3%82%AF?src=hash&amp;ref_src=twsrc%5Etfw">#プリメイドAIハック</a> <a href="https://t.co/P2fmqYv5Tv">pic.twitter.com/P2fmqYv5Tv</a></p>&mdash; GOROman (@GOROman) <a href="https://twitter.com/GOROman/status/1151046658354032640?ref_src=twsrc%5Etfw">July 16, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

しかし、いきなりこんなことするにはハード、ソフトの両面でスキル不足なので出来そうなものから形にしたいと思います。
実は以前にも[4本足ロボット製作](https://worklifeunbalance.blogspot.com/2019/07/blog-post_23.html)に手をつけたものの技術不足のためペンディングとなっていたりもしますしね。。。

###案①
まずは一番簡単なこの案を実装します。

・ロボットは難しいので4輪メカナムローバーで移動体を製作する。
・4輪メカナムローバーも本気で作ると難しいので、LEGOでつくる。（technic互換は安い！、工作不要）
・画像の送受信はESP32cam + PC（or スマホ）で行う。（html使えば簡単）
・制御はESP32devkit + ゲームパッドで行う。（joy controllerのライブラリをどこかでみかけた）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/53538f81-af78-3b37-5f4e-53eb0b8c9a9a.png)
この案は、実装がかなり簡単なことが最大のメリットです。
一方で、ESP32が2台搭載されていて冗長となる点、画像はWifi圏内なら受像できますが、コントローラーがbluetoothなのでこちらが実質上の制御圏となる点がデメリットとなります。

###案②
次の案は、ESP32を2台ともWi-Fiにつなぎ、画像をPCに表示させると同時にPCに接続したコントローラーの制御情報を制御用ESP32に送信すると言う方法です。うまく作れば出来そうな気はします。自信は無いけど。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/bb456ca3-b633-b061-80a2-d5b885218ebc.png)
ESP32の2個使いは解消できませんが、Wi-Fi圏内でさえあれば制御が届くので、目視圏外でも活動出来てFPVらしさが倍増すること間違いなし。
上手くすれば、LAN外からも制御できるはずなので、外出先から自宅内のパトロールをすることだって出来るはず！
PCをスマホに置き換えることもできそうです。

###案③
最後の案は、ESP32camにローバーの制御もすべて任してしまって１ボードで完結させる案です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/b20558ba-6492-ad4b-3ddd-e87038a56761.png)
多分のこれもイケます。しかし動画撮影及び送信は結構負荷が重くローバー制御も任せるのは少し不安、且つESP32camはi2c用のデフォルトピンが使用済み（多分ソフトi2cで代用は可能）です。
まずは簡単な方法で実装してから徐々に改良にすすみたいと思います。

#2.事前調査と部材
###Lego Technic
最近は家庭用3Dプリンターはもとより、webで注文できる3Dプリント、CNC、板金などさまざまなサービスが充実しているので趣味の工作環境が飛躍的に向上しています。
とはいえ、3Dでデータ作るのも面倒だし、さくっと形を作るフォーマットとしてLego Technicシリーズがとても便利です。
[Lego Mindstormシリーズなら](https://education.lego.com/ja-jp/product/mindstorms-ev3)制御用のマイコンや開発ツールと、車輪や歯車、サーボモーター、センサー類に加えロボットや車両が組み立てられる構造部材がキットになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/f920c133-61db-a40f-bd17-1b07534c1f1e.png)
Legoの素晴らしいところは、汎用部品を使って様々な形をくみ上げられる事で、特にTechnicシリーズの部品は専用のピンを使う事でモーターの反力にも十分耐えられる剛性も得られます。

一方Legoの弱点はその価格でしょう。純正品はとても高価で、mindstormならアマゾンで5万円くらいします。また、ここでは詳しくは述べませんが、電子部品関連やソフト開発ツールも独自仕様のため高価な割に使い勝手が悪いという問題もあります。

そこで今回使用しているのはLego Technic互換パーツです。
不要になる電子部品は抜きでさまざまな構造部材、歯車、車輪などが単品もしくは格安セットで購入出来ます。今回初めて購入したセットは、中国通販の[Aliexpless](https://ja.aliexpress.com/item/32892146778.html?spm=a2g0s.9042311.0.0.27424c4dWHC9kD)で2,336円で購入しています。精度に不安が有りましたが、少なくとも今回製作したローバー用途としては十分でした。
この互換品はいわゆる海賊版では無く合法とのこと。純正品にこだわりが無ければ十分選択肢となるのではないでしょうか。

###ギークサーボ
今回はLego Technicを使用していますので、併せて使用する部品もLego互換だと工作の手間を省けます。よって、車輪とカメラを動かすモーターにはLegoと直結可能なギークサーボを使用しました。
車輪用の[360°タイプのサーボ](https://ja.aliexpress.com/item/4000415851906.html?spm=a2g0s.9042311.0.0.27424c4dptqnlv)が4個で2,074円、カメラ用の[270°タイプのサーボ](https://ja.aliexpress.com/item/32975464061.html?spm=a2g0s.9042311.0.0.27424c4dptqnlv)が4個で1,827円でした。

###メカナムホイール
今回の工作はメカナムホイールに惚れたから始まったと言っても過言ではありません。縦にも横にも走れる変態マシンが簡単に作れますよ！
もちろん[Lego対応のホイール](https://ja.aliexpress.com/item/4000164280199.html?spm=a2g0s.9042311.0.0.27424c4dlp5dx3)　4,072円を使用していますので取付けは差し込むだけ。

実は、サーボとメカナムホイールは結構割高です。
もともとは安いメカナムラジコンカーを購入して制御を乗っ取ってカメラ付ければ出来るんじゃね？と思い、3000円！くらいの激安ラジコンを注文してたんですが、配送中になぜかショップに返送されてしまい届かなかったので興味の出てきたtechnic互換品に乗り換えました。
多少工作が必要ですが、格安ラジコン改造も有りですね。

###ESP32cam と ESP32 devkit C
動画送信用のESP32camとローバー制御用の[ESP32 devkit C](https://ja.aliexpress.com/item/4000103411061.html?spm=a2g0s.9042311.0.0.27424c4dOEin0J)を使用しています。
電源に適当な電池ボックスやusb以外の電源供給をしたい場合は[ESP32 devkit v1](https://ja.aliexpress.com/item/32827838651.html?spm=a2g0s.9042311.0.0.27424c4dO0X8nX)をお勧めします。本来私もv1を使用するつもりでしたが手持ち在庫が無かったのでdevkit Cにしています。
v1とCの最も大きな違いは電源供給です。v1にはvin端子があり、usb以外からの電源供給が可能ですが、Cはmicro USB端子からしか供給できません。

画像撮影及び送信には[ESP32cam](https://ja.aliexpress.com/item/32992663411.html?spm=a2g0s.9042311.0.0.27424c4dYunhm4)を使用しています。これ一つで簡単に画像送信出来ますが、USB端子がついておらず、プログラムの書き込みや動作確認のためにも[CP2102](https://ja.aliexpress.com/item/32390863227.html?spm=a2g0s.9042311.0.0.27424c4dJB91fY)の様なUSBコネクタが必要です。

ところで！！
ESP32camはとても簡単に動画送信出来る便利なボードですが、残念ながら技適を取得していません。無許可で使用すると違法になりますので、使用するときには「技適未取得機器を用いた実験等の特例の届出」を最寄りの管轄役所に届けなければなりません。
届出制なので、申請さえすれば落とされることは無い様です。有効期間は半年との事。
[こちらのページ](https://www.tele.soumu.go.jp/j/sys/others/exp-sp-tools/index.htm)から簡単に届出方法が確認可能です。いまは紙媒体のでの申請が必要ですが、入力支援ツールがあるので届出書の作成は簡単です。将来的にはオンライン申請が可能になる様です。

#3.そしてメカ製作
メカ部分の製作は適当です。
適当に作っても形になりますので適当に説明すると次の通りです。
##構造概略
![meca構造.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496179/85069d54-06f0-ea7c-5193-88186977a76d.png)

おおよその構造は写真の通り。
ホイール駆動用のサーボを第一層に配置し、バッテリー、制御ボードを積み重ねています。第四層の運転席には何かしら人形やぬいぐるみが載せられます。
工夫しているのは、バッテリーを載せるトレイを作り、写真奥側からスライドさせて出し入れできる様にしている点です。写真中の赤いピン２本を外せば取り外しが出来ます。
また、FPV用のESP32-CAMは視野が狭いので、tiltとpan機能は必須です。panはメカナムの超信地旋回で代用できますので、tiltのみ実装しています。可動域は-30°~90°くらいあれば十分です。

左の小さいのはM5StickCとRoverCでほぼ同じメカを作ったものですが、別途紹介します。

#4.次回以降の予定
予定は未定ではありますが、次回以降はPCA9685 + ESP32で行うサーボ制御、ESP32 + DUALSHOCK3 を使ったローバー操縦方法、ESP32camを使った動画送信の説明を順次行います。