TL;DR
- かなり柔軟な開発環境
- Cloud 9ベースの自由度の高いセキュアな開発環境構築が可能
- 便利なRoboMaker Cloud Extensions
- 個人的に便利そうだと思うのがkinesis video streamsへの画像トピックの配信
- Greengrassと連携したデプロイが非常に便利
※ 基本的には、 RoboMaker開発者ガイドに書かれている内容です
※ Simulationやカスタマイズ性については言及できていません
RoboMakerとは...
AWSのre:invent2018でリリース発表のあったロボット用ソフト(ROSベースのシステム)の開発・リリースなどのワークフローを楽にするためのサービスです.
開発環境構築やデプロイなどを任せるWebエンジニアにとってはセキュリティ, デプロイ等がすごく気になるところです.
開発環境構築について
開発環境自体の中身は, DockerベースのAWSのマネージドIDE(統合開発環境)である Cloud9 である.
m4.largeという少し小さなインスタンスから, m4.16xlargeと大きなインスタンスが選べる. ただし, p3やg3といったGPUサーバーは選べません. (Cloud9でもGPUサーバーは選べない)
ROSベースのアプリケーションは基本的にエッジで動くという要件を考えると, 消費電力が大きなGPUをエッジ側で使うという選択肢は可能性が薄いため利用用途としても必要に迫られてないのかもしれません.
Cloud9が利用できるということで、一部コマンドを除いて apt-get
を含め様々なコマンドが発行できるようになっています.
つまり, 次のような自動運転ソフトウェアを頑張れば動かすことも可能.(Robomakerはcolconを用いたビルド前提)
https://github.com/CPFL/Autoware/wiki/Source-Build
「普通のインスタンスと変わらないの? 結局何が便利なの?」
という話だが, 基盤に求められる要件と実際に環境を利用するエンジニアのスキルセットのズレから生まれるプロジェクトのボトルネックを減らすことに意味があります.
AWS SageMakerと似たようなコンセプトだと考えられます.
基盤構築に強くない機械学習リサーチャーやデータサイエンティストが簡単にJupyterNotebookがセキュアに立ち上げられるSageMakerのように, ロボット屋さんがWeb屋さんの力を借りずに自身でセキュアな環境を構築して色々試せる ということが魅力の1つとなります.
セキュリティについて
Cloud9を用いるので, VPCとサブネットを選択することで簡単にセキュアな環境構築できます.
基盤エンジニアが簡単な準備をし, ルールを敷くことで, ロボット屋さんも安心して開発ができるようになります.
あとは、権限管理などは他サービスと同様IAMで細かくActionやResourceを管理できる.
コストについて
基盤構築をしっかりしてスポットインスタンスを積極的に利用するという手もありますが, よっぽどの大きなチームでないと実現不可能です.
Cloud9にはハイバネーション機能が付いており, インスタンスを放置しておくと勝手に停止してくれ, 監視などの基盤管理便利ツールを作り込まなくてもコスト面でもある程度安全に使えます.
RoboMaker Cloud Extensions
次のサービスと連携できるが....
- Amazon Kinesis & Amazon Rekognition
- Amazon Lex
- Amazon Polly
- Amazon CloudWatch Logs
- Amazon CloudWatch Metrics
気になったのが, Amazon Kinesisの拡張.
画像をROS Topicに配信したあとにROSBAGデータにして, そのファイル形式で再生するのは若干手間だったり, メディアの保存形式とはベストと言い難く, もっと簡単に見たいという気持ちになることがよくあります.
そんな時に拡張を用いて簡単に画像のROS TopicのメッセージをKinesis Video Streamsに配信, 簡単に動画配信と組み合わせた振り返りツールが作れることになります.
Web屋さんはROSのAPIを深く理解する必要がなくなるし, Robot屋さんもライブ配信技術について不得手でも大丈夫で, スモールチームでスピード感を持って開発していく状況においては良い選択肢となりそうです.
料金体系
拡張自体は無料(Apache Software License 2.0)で使え, 使用したKinesis Video Streamsなど連携するマネージドサービス利用料金だけで利用可能となっており導入しやすい印象です.
デプロイについて
AWS IoT Greengrassとの連携ができ, バージョン管理やアプリケーションのダウンロードやエッジ端末のローリングアップデートが容易に管理できます.
またRoboMaker専用のGreengrass設定APIがあり, 起動方法の設定などもROSではお馴染みlaunchファイルを指定するだけで済んだり, 簡単な設定項目でデプロイ準備ができます.
ただし, 一部パッケージの差分更新のような機能がないため必要以上のダウンタイムが発生するなどといった課題はあります.
おわりに
Web畑出身でROSを触り始めた会社員エンジニアにとっては, 非常にありがたいツールが豊富に揃っていました.
AdventCalendarに合わせてもう少しトライしようとしましたが、簡単なドキュメントサマリになってしまいましたので, もっと触りつつSimulationの話などカスタマイズ性についても言及した記事に加筆修正しようと思います.