はじめに
連載の第3回に引き続き、Raspberry Piで動作する小型ロボット「GoPiGo」を使って、遠隔見守りロボットを作っていきます。
前回は、自宅などのローカルエリアネットワーク内で、GoPiGoのスマホを使った遠隔操作を行いました。今回は、間にクラウドを挟むことで、インターネット越しにGoPiGoを操作できるようにしたいと思います。
今回のゴール
今回、作成するネットワークのイメージを、連載の第1回で示した図を基に示します。今回の作業で、最初に示した機能のうち、スマホに通知を送る以外の機能が使えるようになります。
前回、作成したネットワークは、1つのローカルエリアネットワークの中で完結していました。今回はクラウドを挟むことで、外出先など、どこにいても遠隔操作できるようにします。
なお、今回はクラウド環境としてAmazon Web Serviceを利用します。アカウントをお持ちでない方は、アカウント登録をお願いします。今回の内容は無料利用枠でも十分実現可能です。
ROSのネットワーク
連載の第2回でも解説しましたが、ROSはNodeと呼ばれる実行プログラム同士で、通信を行います。この通信はP2P通信と呼ばれ、ROSネットワークの場合、NodeとNodeが直接接続して通信を行っています。
このP2P通信は、直接アクセス可能なIPアドレスさえ分かっていれば、異なるネットワークに接続するPCでもROSネットワークを構成できます。
例えば、図2のような、プライベートIPアドレスが振られたローカルネットワーク上であれば、片方からもう片方へPingを打てば、問題なく到達していることを確認できます。
しかし、グローバルな環境からプライベートIPアドレスに対してPingを打っても、基本的には届くことはありません。これは、ROSのネットワークにおいても同様です。
このような性質を持つROSネットワークを、インターネットを経由して構成する方法として、今回の環境であれば以下のような方法が考えられます。
- GoPiGoをサーバーとしてインターネットに公開する
- クラウド経由でプライベートネットワークを構成し、Node間を接続する
1つ目の方法では、カメラなどが接続されたロボットをインターネットに公開することになります。しかし、これはIPアドレスが知られた場合などに、誰かに盗み見られる可能性があります。
よって、今回は2つ目の方法を選択します。具体的にはクラウド上にVirtual Private Network(以下、VPN)サーバーを立て、そこにクライアントとして、GoPiGoとスマホを接続します。
この方法の利点は、ネットワーク接続のセキュリティを担保することができる点、各クライアントに固定のIPを割り振ることができるため、ROSネットワークの運用や拡張をしやすいという点です。
2つ目の方法をもとに、今回構成するネットワークのイメージを図3に示します。
図3のIPアドレスは、VPNネットワーク中で割り当てるプライベートIPアドレスです。それぞれに固定のプライベートIPアドレスを割り当てることで、特定のURLにアクセスすると、遠隔操作できる環境を作ります。
では、実際の作業に入りましょう。まずはVPNサーバーの構築です。