PixHawk,ArduPilotを遠隔操作する
みなさん、こんにちは。
田尻です。
今回は備忘録も兼ねてArduPilotを遠隔操作する方法について記述します。
具体的な技術については各で調べていただいきたいところですが、基本方針を記していきたいと思います。
沖縄県から岩手県にあるArduRoverを遠隔操作してみた結果
ArduRoverをインストールしたPixhawk2.4.8を沖縄から操作してみました。
結果としては割と低遅延で操作することができました。
もちろん、MissionPlannerが使用できるので遠隔地からWayPointの設定や自律移動中のモニタリングもできます。
映像転送についてはJetsonにmjpg-streamerまたはffmpegをインストールして使用していましたが、遅延が結構ありました。
ラズパイでmjpg-streamerを使うとそこまで遅延はなかったのでビデオエンコーダ系の問題だと思います。
遠隔操作の基本方針
これまでPixahwkのテレメトリは付属のアンテナ(技適がついてないので使用不可)や、Xbee、イームスのテレメトリアンテナを使うのが定石でした。しかし、mission plannerの接続時のパラメータ取得が遅かったり、waypointの読み書きが遅かったり、頻繁に接続が切れてしまったりということがありました。特にRTKを使う際なんかは、常に補正情報をロボットに送り続けないといけないので安定した通信が必要になります。
そこで今回、スマホ等で使われているキャリア回線をしようして遠隔地から安定的に通信できないものかと考えて、今回のシステム構成に至りました。
システム構成
PixHawk自体にはLANに繋ぐ機能はありません。
そこで、PixHawkにUbuntuの入ったコンピュータを接続します。
このコンピューターにはsimカードがさせるLTE対応USBドングルを指しておきます。
そうすることでキャリア回線が使用可能になります。スマホのテザリングとかでも良いです。
今回はコンピュータとしてラズパイを使用するのですが、ラズパイとPixhawkはUSBシリアルでmavlink通信を行います。
オープンソースでシリアルのmavlinkのデータをUDP/TCPに変換して送受信ができるmavlink-routerというソフトがあるので、それをラズパイに入れておきます。
ラズパイがインターネットに繋がればPixHawkのデータをインターネット経由で送受信することが可能になりますので、遠隔地に置いてあるmission plannerがインストールされているwindowsPCと通信することが可能になります。
ラズパイにwebカメラを接続することで、遠隔でカメラ映像を見ることもできます。
windowsPCにLogicoolなどのゲームパッドをUSB接続することで、プロポがなくてもロボットを操作することができるようになります。
ここでIPアドレスの問題が発生するのですが、例えばロボットにグローバル固定IPが振られていればいいのですがその場合固定IPのsimカードを買わないといけないので手間です。
そこで今回はVPN接続を使用して同一ネットワーク上で繋がっているような振る舞いで通信できるようにします。
VPNソフトはsofteathrVPNを使用します。
用意するもの
ハードウェア
・PixHawk (2.4.8とかCubeOrangeとか)および付属品
・ロボット本体
・Ubuntuインストール済みコンピュータ(ラズパイ等も可)
・USB-A to microUSB-B ケーブル
・LTE対応USBドングル or テザリング可能なスマホ
・キャリア回線SIMカード(筆者はIIJを使用)
・window入りPC
・ゲームパッド
・USBカメラ
・VPN用サーバ(自宅に設置する場合のみ必要、レンタルVPSをVPNサーバにする場合や無料使用可能なVPNサーバを使用する場合は不要)
ソフトウェア
ubuntuコンピュータ用
・mavlink-router (シリアルのmavlinkデータをudp/tcpに変換するソフト)
・mjpg-streamer (カメラ映像飛ばすソフト)
・SoftEther VPN client(VPN接続するためのソフト)
windowsコンピュータ
・mission planner (ArduPilotを動かすためのソフト)
・SoftEther VPN clientまたはSoftEther VPN sever(VPN接続するためのソフト)
・teraterm(ssh等でラズパイに接続して操作できるように)
VPN用サーバ(mission plannerを入れたPCと兼用可能だと思う)
SoftEther VPN sever(VPN接続するためのソフト)
ソフトウェアのインストール
↑のヒントをもとに自分で頑張って調べてみてください。
VPNサーバについては筆者はさくらVPS(月1000円くらい)を契約して、そのサーバにSoftEatherVPN Serverをインストールして使用しています。
ただ、固定IPがなくてもダイナミックDNS機能がSoftEtherVPNにはあるので、自宅のwindowsPCをそのままVPN Severにできたと思います。
(https://ja.softether.org/4-docs/2-howto/6.VPN_Server_Behind_NAT_or_Firewall/1.Dynamic_DNS_and_NAT_Traversal)
なので、mission plannerをインストールしたwindowsPCにSoftEtherVPN Severを入れて使用することも可能かと思います。(未検証)