Amazon Web Services ブログ

AWS サービスを活用して、ロボティクスユースケースのソリューションを素早く実現する

この記事は Utilizing AWS Services to Quickly Build Solutions for Robotics Use Cases の日本語訳です。

はじめに

自律移動ロボット(AMR)は、物流や製造業など多くの産業で広く利用されています。しかし、自律型ロボットの開発・運用には様々な課題があります。自律型ロボットを開発するためには、さまざまな技術が必要であり、そのプロセスは複雑で時間がかかります。また、ロボットを効率的に開発・運用するためには、クラウドとの連携も必要です。しかし、多くのロボット開発者は、クラウドロボティクスの利点に精通していなかったり、スマートなロボットを素早く市場に投入するためのクラウド開発のノウハウが不足していたりします。

この記事を読むことで、自律型ロボットの開発と運用におけるよくある課題を AWS のサービスを用いて解決する方法を知ることができます。また、ユースケースを実現するためにどのサービスが必要なのか、どこからプロトタイプを開始すればよいのかを理解することができます。

自律型ロボットの開発・運用の課題

自律型ロボット開発の課題を、開発、テスト、運用の3つのフェーズに分けて考えてみましょう。

ロボットの開発には、さまざまな領域の専門知識が必要です。例えば、自律移動には人工知能(AI)や機械学習(ML)の技術が、アプリケーションとの統合にはクラウド接続が、遠隔監視・操作にはビデオストリーミングが必要です。

テスト段階では、ロボットがさまざまな状況や環境で正しく動作することを確認するために、繰り返し試行することが必要です。しかし、ロボットのハードウェアの数は限られていたり、実際の環境でのテストにはコストと時間がかかったりします。

また、運用開始後は、ロボットのエンジニアやオペレーターは、ロボットの健全性や状態など、ロボット群を監視・管理する必要があります。デバイス上にアプリケーションを展開し、ロボットを遠隔操作する仕組みも必要です。場合によっては、複数種類のロボットやシステム間での相互運用性も要求されます。

このような課題によって、自律型ロボットの開発には手間と時間がかかります。AWS は、このようなロボットアプリケーションの開発、テスト、運用を高速化するために利用できる様々なサービスを提供しています。これらのサービスを利用することで、プロトタイプを素早く構築し、大量のロボットを容易に本番運用することができます。ロボット開発においてこれらのサービスをどのように活用し、課題を解決していくかを紹介します。

ロボティクス向けの AWS サービス

ロボットとクラウド間の通信: AWS IoT Core

自律型ロボットは、様々な環境下で単独で動作することを想定されていますが、不測の事態にはオペレーターの助けが必要です。その際、以下のような機能が必要となります。例えば、オペレーターがクラウド経由でロボットを遠隔操作したり、開発者がロボットから収集したログを利用してトラブルシューティングを行ったりする機能です。これらの機能を開発するには、AWS IoT Core が活用できます。

AWS IoT Core は、コネクテッドデバイスがクラウドアプリケーションや他のデバイスと簡単かつ安全にやりとりするためのマネージドクラウドプラットフォームです。デバイスは、MQTT などの軽量プロトコルで接続し、クラウドや他のデバイスと通信することができます。デバイスから収集したメッセージは、データベース、ストレージ、分析、AI/ML サービスなど、他の AWS サービスにルーティングすることができます。

例えば、AWS IoT Core と他の AWS サービスを連携させ、ロボットからセンサーデータやログデータを収集し、データをデータレイクに保存して分析やトラブルシューティングを行ったり、ダッシュボードを作成してほぼリアルタイムに可視化したりすることができます。こちらの記事では、AWS IoT サービスによるデータ収集と可視化の主なパターンを紹介しています。例えば、記事中のパターン6は、ニアリアルタイムの可視化ユースケースに利用できます。

また、ウェブアプリやモバイルアプリを使ってロボットとやりとりしたい場合もあります。デバイスシャドウ機能を使うと、ロボットとクラウド間で状態を同期させることも可能です。これにより、ユーザーやアプリケーションはロボットの最新の状態を知ることができ、ロボットがオフラインのときでもコマンドを送信することができます。

図1. ロボットとアプリケーション間の通信にAWS IoT Coreを使用する

ソフトウェアのデプロイと実行: AWS IoT Greengrass

開発したアプリケーションを実際のロボット上で動作させるためには、ソフトウェアをデプロイし管理する仕組みが必要です。また、ロボットが出荷された後も、アプリケーションを改善しアップデートを展開し続ける必要があるかもしれません。しかし、アプリケーションソフトウェアの管理、複数のロボットへの一括デプロイ、ロボットの種類に応じたアプリケーションの設定変更などの仕組みを作るのは大変です。

AWS IoT Greengrass は、オープンソースの IoT エッジランタイムとクラウドサービスで、デバイスソフトウェアの構築、デプロイ、管理に役立ちます。開発したアプリケーションをクラウド上で管理し、特定のロボットや複数のロボットにアプリケーションをデプロイして実行することができます。アプリケーションは、一般的なプログラミング言語で開発したり、Docker コンテナ上で実行することができます。さまざまな種類のロボット群に対して、複数のソフトウェア構成を設定することができます。これらの機能により、ロボットで動作するアプリケーションのデプロイや管理のための仕組みを独自に開発する必要がなく、アプリケーションの開発に集中することができます。

また、AWS IoT Greengrass では、デバイス側の開発を効率化するために、AWS やコミュニティがあらかじめ提供するコンポーネントという仕組みが用意されています。例えば、Greengrass コンポーネントを利用することで、AWS IoT Core と通信したり、画像認識などのエッジでの機械学習による推論を行なったりする、Greengrass 上で動作するアプリケーションが容易に実装できます。また、ROS ベースのアプリケーションを Greengrass と Docker でデプロイし管理することも可能です。AWS IoT Greengrass を利用することで、ロボット上にアプリケーションを素早くデプロイして実行できるため、開発者はアプリケーション自体の開発に集中することができます。まずは AWS IoT Greengrass V2 Workshop から学び始めることができます。

図2. ロボットソフトウェアのデプロイと管理にAWS IoT Greengrassを使用する

エッジでの機械学習: Amazon SageMaker と Amazon SageMaker Edge

ロボットを自律的に動作させるためには、ロボットが環境を正しく認識する必要があります。例えば、障害物の検出と回避、人と物体の検出、マッピングなどのタスクが必要です。これらのタスクは、不安定なネットワーク接続、ネットワーク帯域幅、コストなどの理由から、しばしばエッジで実行される必要があります。これらのユースケースにおいては、お客様は機械学習(ML)モデルをトレーニングし、デプロイして、エッジで推論を行いたいと考えています。

図3. Amazon SageMaker と SageMaker Edge による ML モデルのワークフロー

ML モデル学習用の画像、rosbag、テレメトリなどの生データを収集するには、 AWS IoT Greengrass のストリームマネージャーを利用できます。ストリームマネージャーを使用すると、大量の IoT データを効率的かつ確実に AWS クラウドに転送することができます。ストリームマネージャーは接続が不安定な環境でも動作し、 Amazon S3 や  Amazon Kinesis Data Streams などの AWS サービスを設定してデータをエクスポートすることができます。

生データを収集した後、Amazon SageMaker を使用することで ML モデルを構築することができます。Amazon SageMaker は、フルマネージドなインフラ、ツール、ワークフローを使用して、あらゆるユースケースの ML モデルを構築、トレーニング、デプロイするためのサービスです。例えば、ロボットが収集した画像に Amazon SageMaker Ground Truth でアノテーションを行い、SageMaker で独自の ML モデルをトレーニングすることができます。

独自の ML モデルを構築したら、Amazon SageMaker Edge を利用して ML モデルを最適化し、エッジデバイスにデプロイすることができます。Amazon SageMaker Edge は、モデルを最適化、保護、およびエッジにデプロイし、エッジデバイスでの機械学習を可能にします。また、ロボット群で動作するこれらのモデルを監視することができます。クラウド上で ML モデルを最適化し、Amazon SageMaker Edge Manager で Greengrass コンポーネントとしてデプロイすることができます。モデルと SageMaker Edge Manager がロボットにデプロイされると、SageMaker 推論エンジンが起動し、ロボットアプリケーションはエッジで推論結果を使用することができます。

遠隔制御と監視: Amazon Kinesis Video Streams

AMR は、倉庫などの環境で資材を移動させる際に使用されます。カメラなどのセンサーを搭載し、人や障害物などを認識する事で、自律的に移動することができます。しかし、動けなくなった場合などには、カメラの映像を使ってロボットを遠隔で監視・操作することが必要です。また、解析やトラブルシューティングのために、映像をクラウドに保存したいケースもあります。しかし、大量の映像データをリアルタイムにストリーミングして収集するためのインフラを整備するのは困難です。

Amazon Kinesis Video Streams は、コネクテッドデバイスから AWS にメディアを安全にストリーミングし、ストレージ、分析、機械学習(ML)、再生、その他の処理を簡単に行えるようにするサービスです。Amazon Kinesis Video Streams は、数百万台規模のデバイスからストリーミングメディアを取り込むために必要なすべてのインフラを自動的にプロビジョニングし、弾力的にスケールします。ユーザーは、ロボットのカメラからビデオを収集し、リアルタイムの監視やオンデマンドのトラブルシューティングのために再生することができます。Amazon Kinesis Video Streams は、フルマネージドな機能として、WebRTC による超低遅延の双方向メディアストリーミングもサポートしており、遠隔操作のように1秒未満の遅延が必要なユースケースにも対応しています。

Amazon Kinesis Video Streams は、ロボットのカメラからクラウドにビデオを取り込んだり、WebRTC を使用してピアツーピア接続でストリーミングしたりできるデバイスのための SDK を提供しています。ユースケースに応じて、Amazon Kinesis Video Streams Producer SDK または WebRTC SDK のいずれかを使用することができます。例えば、オンデマンド再生や分析のためにビデオをクラウドに収集・保存する必要がある場合は、Producer SDK を使用する必要があります。一方、遠隔操作や双方向のメディアストリーミングのために1秒未満の遅延でリアルタイム再生が必要な場合は、WebRTC SDK を使用します。これらの SDK を使うと、セキュアなメディアストリーミングが簡単にできます。

Amazon Kinesis Video Streams Producer SDK やビデオ再生やビデオ解析を試したい場合は、Amazon Kinesis Video Streams Workshop で学ぶことができます。Amazon Kinesis Video Stream WebRTC を利用する方法を学びたい場合は、Amazon Kinesis Video Streams WebRTC Workshop もあります。

図4. 遠隔監視・制御に Amazon Kinesis Video Streams を利用する

ロボットアプリケーション向けのシミュレーション: AWS RoboMaker

自律型ロボットアプリケーションを開発する際、様々な環境下でアプリケーションが期待通りに動作することを検証することは難しい場合があります。開発段階では、ロボットハードウェアの数が限られていることが多く、様々なテスト環境を用意することが困難です。そのため、ロボットアプリケーションのテストには、シミュレーション環境が用いられることがよくあります。

AWS RoboMaker は、インフラのプロビジョニングや管理なしに、簡単にシミュレーションワールドを作成し、シミュレーションジョブを実行することができるフルマネージドサービスです。一般的なシミュレーションアプリケーションや ROS ベースのシミュレーションアプリケーションを Docker 上で実行することができます。クラウド上でのシミュレーションを実行中に、ブラウザから GUI アプリケーションやターミナルにアクセスし、シミュレーションの状況を確認することができます。

シミュレーション環境の構築には、コストと時間がかかり、3D モデリングのスキルも必要です。しかし、RoboMaker WorldForge を使えば、パラメータを指定するだけで、いくつもの 3D 仮想環境を構築することができます。また、RoboMaker では複数のシミュレーションを同時に並行して実行したり、API を使ってシミュレーションの開始や停止を行うことができます。これらの機能により、開発したアプリケーションを様々なシミュレーション環境に対して自動的かつ同時にテストしたり、ロボットアプリケーションの CI/CD 環境を簡単に構築したりすることができます。RoboMaker のシミュレーションの例は、Preparing ROS application and simulation containers for AWS RoboMaker にそって試すことができます。

図5. AWS RoboMaker上でのシミュレーションの実行

異種ロボットのシームレスな連携: AWS IoT RoboRunner

自律型ロボットを活用してマテリアルハンドリングなどの作業を行う場合、複数の異なる種類のロボットを連携させることが必要な場合があります。しかし、複数の種類のロボットを連携させる場合、異なるロボットフリート管理システムや作業管理システムと統合して作業をオーケストレーションするアプリケーションを開発するのは、非常に複雑な作業になってしまいます。

AWS IoT RoboRunner は、複数のロボットを単一のシステムビューから管理するためのインフラを提供します。AWS IoT RoboRunner は、複数種類のロボットフリート管理システムからデータを一元化したリポジトリに収集し、ロボット、システムの状態、タスクのデータを標準化されたフォーマットで提供します。これにより、自律型ロボットを連携させるためのソフトウェアの開発が容易になります。

図6. AWS IoT RoboRunnerを用いた複数種類のロボットの連携

まとめ

この記事では、ロボットアプリケーションの開発・テスト・運用におけるよくある課題と、そのユースケースに活用できる AWS サービスを紹介しました。ロボットアプリケーションの開発範囲は多岐にわたるため、ユースケースに応じて複数の AWS サービスを連携させることで、開発を加速させることができます。また、これらのサービスを利用することで、多数のロボットフリートを簡単に管理・運用することができます。まずは IoT ワークショップでサービスを試すところから始めてみましょう。

著者について

三平 悠磨

アマゾン ウェブ サービス ジャパン合同会社
シニア IoT スペシャリスト ソリューションアーキテクト

ソフトウェアエンジニアとしてロボット開発を経験。AWS ではお客様の IoT/Robotics ソリューションの構築を支援しています。