【AWS】RoboMaker を試してみる

この記事は株式会社ナレッジコミュニケーションが運営する[Amazon AI by ナレコム Advent Calendar 2018](https://qiita.com/advent-calendar/2018/knowcom-amazonai)の15日目の記事になります。

#AWS RoboMakerとは
2018年11月25日〜11月30日にかけて、AWSのカンファレンスイベントである、[AWS re:Invent](https://reinvent.awsevents.com/)がラスベガスで開催されました。その中の1つの目玉として発表されたのがAWS Robomakerです。

AWS Robomakerの説明を公式サイトから引用すると、
>AWS RoboMaker is a service that makes it easy to develop, test, and deploy intelligent robotics applications at scale. RoboMaker extends the most widely used open-source robotics software framework, Robot Operating System (ROS), with connectivity to cloud services. This includes AWS machine learning services, monitoring services, and analytics services that enable a robot to stream data, navigate, communicate, comprehend, and learn. RoboMaker provides a robotics development environment for application development, a robotics simulation service to accelerate application testing, and a robotics fleet management service for remote application deployment, update, and management.

となっています。

AWS RoboMakerを使うことで、インテリジェントなロボットアプリケーションの開発、テスト、デプロイと管理をクラウド上の開発環境で行えるとの事です。世界で広く使用されているオープンソースのロボット用のソフトウェアプラットフォームであるRobot Operating System（ROS）をAWSの各クラウドサービスへ接続することにより、より大規模かつ簡単に開発が行えるようになります。
また、クラウドサービスにはAmazon LexやPollyなどといった、AWSの提供する機械学習サービス、モニタリングサービス、分析サービスが含まれているため、これらを用いることでロボットの監視・移動・意思疎通・学習などを可能にします。

#試してみる
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/robomaker/latest/dg/getting-started.html)または、[こちら](https://aws.amazon.com/jp/blogs/news/aws-robomaker-develop-test-deploy-and-manage-intelligent-robotics-apps/)を参考にしながら進めていきます。

**サービスを開く**
![11.png](https://qiita-image-store.s3.amazonaws.com/0/299455/736ba2dc-f46a-3887-28b7-90b3b9e6c97b.png)
東京リージョンは近日対応予定との事で、今回はバージニア北部で試しています。12/15時点ではバージニア北部の他にオレゴンとアイルランドリージョンが対応しています。
![22.png](https://qiita-image-store.s3.amazonaws.com/0/299455/114baf9d-30c7-2361-214e-6d0a04b175af.png)
サービスを開くと、このような画面が現れます。画面左下にあるSample applicationsを開きます。
![33.png](https://qiita-image-store.s3.amazonaws.com/0/299455/af8d6f73-21a3-2d23-6d28-a64602533332.png)
![44.png](https://qiita-image-store.s3.amazonaws.com/0/299455/0931d648-ca1d-1ae3-495a-38a39453807d.png)
4つのサンプルアプリケーションが表示されます。
**Hello World**
- 空のシミュレーション環境にあるロボットを含む基本プロジェクトテンプレート。
**Robbot Monitoring**
- Amazon CloudWatchとAmazon CloudWatchを利用して、シミュレートされた書店内のロボットの監視を行う。
**Navigation and person recognition**
- KinesisやPollyを利用した、ロボットナビゲーション、ビデオストリーミング、顔認識、テキスト読み上げについて学ぶ。
**Voice commands**
- Amazon Lexを利用して、シミュレートされた書店内で自然言語のテキストと音声でロボットに指示を行う。

ここでは、Hello Worldを選択して、Launch simulation jobを押します。
![55.png](https://qiita-image-store.s3.amazonaws.com/0/299455/c667a6d7-15da-5dc2-e20b-ceb21955c414.png)
赤枠内のStatusがrunningになったのを確認後、画面下に行くと、Simulation toolsが表示されます。
![55.png](https://qiita-image-store.s3.amazonaws.com/0/299455/ebd496a6-7953-b984-cb04-6c9f5fb1882b.png)
**Gazebo**
- ROSによって動作するロボットのための3Dモデルバーチャルシミュレータ
**rqt**
- ROS用GUI開発のためのフレームワーク
**rviz**
- ROSにおける3D可視化ツール
**Terminal**
- ターミナル

![55.png](https://qiita-image-store.s3.amazonaws.com/0/299455/dc7af321-82ee-cc4c-27a1-fc7c7bd2ede0.png)

それぞれ開くと、このようなシミュレート画面が表示されます。
左上に表示されているロボットがGazeboです。

最後に、アプリケーションを引き続き使用しない場合は、アプリケーションおよび実行環境を削除します。
AWS RobomakerはAWS上の様々なサービスと連携して動作するため、アプリケーション以外の削除も必要になります。

- RoboMaker上でのアプリケーション削除
- S3のバケットを削除
- CloudFormationのスタックを削除
- IAMロールの削除
- Cloud9の環境を削除

以上が、Hello World サンプルの実行でした。

#(補足)Cloud9上での環境構築

実際の開発を行う際はDevelopment environmentsからCloud9上で環境構築を行います。
AWS上のサービスから「AWS RoboMaker」にアクセスします。

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3239393435352f37333662613264632d663436612d333838372d323862372d3930623362396536633937622e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/299455/9d20e19c-b592-f305-0505-27052784ca14.png)

アクセスすると以下のような画面が表示されるので、Development environments → Create simulation jobをクリックします。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/299455/e27d0f51-7ca7-66e3-337f-3a9591bb2891.png)

開発環境の設定画面が出るので、任意の名前・インスタンス・VPC・Subsetsを指定します。インスタンスはデフォルトでm4.largeが設定されているので、それ以外のものを設定します。IAM roleは固定されており、変更ができないようになっています。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/299455/4831084e-c42f-29b4-2b65-e966edaf4d8d.png)

設定後、CreateでCloud9上で開発環境が構築されます。
右上のOpen environmentでCloud9が開かれます。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/299455/6d46d40c-8d37-f542-d2bb-d677808a56cc.png)

このような画面になります。

![2.png](https://qiita-image-store.s3.amazonaws.com/0/299455/d6a79c21-1987-3026-aad0-a831fb1fe10f.png)
上記の画面からサンプルの実行および、GitHubリポジトリからファイルをインポートする事でも実行が可能です。

AWS Roboticsからは以下がサンプルとして公開されています。

[aws-robomaker-sample-application-objecttracker](https://github.com/aws-robotics/aws-robomaker-sample-application-objecttracker)
[aws-robomaker-sample-application-voiceinteraction](https://github.com/aws-robotics/aws-robomaker-sample-application-voiceinteraction)
[aws-robomaker-sample-application-cloudwatch](https://github.com/aws-robotics/aws-robomaker-sample-application-cloudwatch)
[aws-robomaker-sample-application-helloworld](https://github.com/aws-robotics/aws-robomaker-sample-application-helloworld)
[aws-robomaker-sample-application-persondetection](https://github.com/aws-robotics/aws-robomaker-sample-application-persondetection)
[aws-robomaker-sample-application-deepracer](https://github.com/aws-robotics/aws-robomaker-sample-application-deepracer)

#まとめ
クラウド上で簡単にROSベースのロボットアプリケーションの開発が行える、RoboMakerの紹介でした。実際に開発するとなると、それなりの知識が必要になり、またシミュレーションの動作も安定しているとは言えないので、これから伸びていくサービスだと思います。
サンプルだけの実行であれば、数分で完了します。AWSアカウントをお持ちの方はぜひ試してみてください。
#参考
AWS RoboMaker
https://aws.amazon.com/jp/robomaker/
ROS公式ドキュメント
http://wiki.ros.org/