Jetson NanoでFPVラジコンを作る(1)
いきさつ
Jetson Nanoを購入した1年以上前からJetRacerを作ってみたいと思っていた。
ただ、なんとなくボディなしの基板剥き出しで走行するよりも、例えばここでやっているように可能な限りラジコンとしての原型を留めた形で作りたいと自分で勝手にハードルを上げてしまい、長い間二の足を踏んでしまっていた。
3月になってふとAmazonでラジコンを検索してみたところ、
1/12 XBシリーズ No.49 XB ランチボックス 2.4GHz プロポ付き 塗装済み完成品 57749
- 発売日: 2012/04/07
- メディア: おもちゃ&ホビー
というのが2万円を切る値段で在庫があったので、思い切って購入してみた。
最終的にはJetRacerのように自動運転を目指してはいるが、細切れにしか時間が取れないというのと、盲目的に手順に従うのも面白くないので何回かに分けてステップを踏みながら作っていきたいと思う。
この記事の内容
いきなり最初から脱線している気もするが、自動運転に行く前にまずはJetson Nano経由で制御するカメラ付きラジコンを作ろうと思う。
というのは、少しラジコンを触ったところ操作がかなり難しく、特に車が自分自身と同じ方向を向いていないときにプロポのステアリングをどちらに切って良いのかパッとわからなかったのである。
そのため、ラジコン内にカメラを接続したJetson Nanoを設置して無線で映像を取得し、これを見ることでもう少し普通の車を運転するように簡単に運転できるのではないかというのが仮説である。一般には、このように一人称視点での遠隔操縦をFPV(First Person View)というらしい。
Jetson Nanoのセットアップ
記事執筆時点ではJetpackは4.5.1。 イメージをmicroSDにEtcher経由で焼いてJetsonのSDカードスロットに挿入する。
今回は特にGUIを使用したいわけではないので、CLIを使用することにする。JetsonのMicro USBポートとMacを接続してJetsonに電源を投入する*1。
Macの場合、以下のようにcu経由でシリアルポートにアクセスできる(ファイル名のusbmodem以降の数字は可変なので要確認)。
cu -l /dev/tty.usbmodem14219190686243 -s 115200
初回接続がシリアルポートだった場合、EULAの確認や各種環境(タイムゾーンやネットワーク)を設定するためのウィザードが実行される。
なお、Micro USBケーブルを接続すると上記のシリアル接続とは別にSSHでも接続できる。
ssh ユーザ名@192.168.55.1
自分の環境だとシリアルポートで接続するとどうも調子が悪いので、SSHを使用することにしている*2。
momoのセットアップ
Jetson Nanoに接続したカメラの映像をリアルタイムに確認する方法はいくつか考えられるが、今回は低遅延で有名な時雨堂のmomoというWebRTCクライアントを使用することにした。
Jetson Nanoは公式にサポートされているので、githubからバイナリをダウンロードすることができる。
テスト用にmomoを起動するには、Jetson NanoにUSB Webカメラを接続して以下のコマンドを実行する。
./momo --no-audio-device test
Webカメラとして、今回は手持ちのロジクール C920nを使用した*3。
ロジクール ウェブカメラ C920n ブラック フルHD 1080P ウェブカム ストリーミング 自動フォーカス ステレオマイク 国内正規品 2年間メーカー保証 ブラック
- 発売日: 2019/04/25
- メディア: Personal Computers
この状態で、Jetson Nanoとネットワーク接続されている別の端末のブラウザから
http://Jetson NanoのIPアドレス:8080/html/test.html
にアクセスすると、カメラの映像を見ることができる。
実際にやってみたところ、Wi-Fiアクセスポイント経由で接続しているのにかなり小さい遅延(おそらく500ms以下)で映像を確認することができた。
本記事ではここまで。次回はJetson Nanoをラジコン に取り付けようと思う。
追記 : 次回記事