WebRTC Native Client Momo で FPVラジコンを堪能
またしてもTwitterですごいものを見つけました!
次回リリースに入れられるかな?
専用カメラ利用時の Raspberry Pi Zero からの Momo の WebRTC 配信が常用解像度 720p 30fps になりました!
遅延もちょっと縮んだきがする! pic.twitter.com/tNQFHajF9k— tnoho (@tnoho) January 25, 2020
なんじゃこりゃー!全然遅延がないじゃないですか。。。
WebRTC Native Client Momoというものらしいです。
以前、ラズパイZeroでMJPEG-Streamerを用いたFPV(First Person View)ラジコンを作ってみたのですが
映像転送の遅延でリアルタイムには程遠いものでした。。
ここではWebRTC Native Client Momoを用いて再びFPVラジコンを作製してみましたので報告いたします。
目次
MJPEG-Streamer vs Momo
まずはMomoの低遅延具合を全身で体感するべくMJPEG-Streamerと比較してみました。
MJPEG-Streamer
設定・使用方法はブログ参照ください。
MJPEG-Streamer#ラズパイ #raspizero pic.twitter.com/IHqYWWS6oS
— HomeMadeGarbage (@H0meMadeGarbage) January 26, 2020
Momo
ラズパイでの設定・使用方法は以下を参照ください。
・Raspberry Pi (Raspbian) で Momo を使ってみる
やばい
Momo#ラズパイ #raspizero pic.twitter.com/dRnAdbICxm— HomeMadeGarbage (@H0meMadeGarbage) January 26, 2020
めちゃくちゃはやい!
やばい!
FPVラジコンの作製
Momoのリアルタイム性を体感できたので早速 FPVラジコンのリベンジです!
システム概要
Momoによる配信映像を観ながらゲームパッドでショベルカーをコントロールします。
ゲームパッドの入力はOSC(OpenSound Control)通信でPCからラズパイに送信し、ラズパイカメラによる映像はMomoでPCブラウザに転送されます。
ショベルカー構成
ショベルカーラジコンには左右のタイヤ用とアーム用の3つのDCモータが内蔵されていました。コントローラの配線を切ってモータドライバDRV8835を介してラズパイに接続しました。
部品
- Raspberry Pi Zero WH
- ラズパイカメラ
-
デュアルモータードライバDRV8835
- モバイルバッテリ
- 広角レンズ
視野角向上のために、広角レンズを装着しています。
動作
早速動作をみてください。
Momo WebRTC で ラジコン
これは凄い!#ラズパイ #raspberrypi #raspizero pic.twitter.com/UW20s3WG4r— HomeMadeGarbage (@H0meMadeGarbage) January 28, 2020
すごい!ラズパイZeroでFPVラジコンができてしまいました!
ちょっとタイヤが5V(モバイルバッテリの電圧)入力だと動画のように早すぎるので、
以後はPWM入力して速度低減しました。
PC側
ブラウザ(chrome)
ゲームパッドF310をつないでブラウザでMomoからの映像を確認します。
http://[ラズパイのIP]:8080/html/test.html で監視できます。
TouchDesigner
ゲームパッドの検出、OSC送信のためにTouchDesignerを使用しました。
ジョイスティックの十字キーとLRトリガを検出してラズパイにOSC送信します。
ポートは10000としました。
参考
Raspberry Pi Zero W側
Momo
ラズパイカメラの映像をMomoのテストモードで送信します。
参考
Node-RED
PCからのOSC信号をUDPノード(ポート10000)でうけて、OSC信号受信のために以下のノードを追加し挿入しました。
node-red-contrib-osc
十字キーでタイヤのモータを制御して前後進、左右旋回します。
モータにはPWM入力(デューティ30%)してスピードを抑えています。
ゲームパッドのLRトリガでショベルカーのアームを上下します。
おわりに
WebRTC Native Client Momoを用いてFPVラジコンが実現できました!
いつかはもっと遠隔で屋外で試してみたいですね。