AWS IoT Fleetwise で vision system data の収集と変換を行うデモをやってみた #AWSreInvent
こんにちは、CX 事業本部 Delivery 部の若槻です。
AWS IoT FleetWise で、 vision system data(ビジョンシステムデータ)がプレビュー機能として発表されました。
AWS IoT FleetWise は、車両のセンサーなどから取得した IoT データをネットワーク経由で収集することに特化したマネージドサービスです。そして、今回発表された vision system data により、車両に搭載されたカメラや LiDER により撮影された画像やビデオなどの非構造化データの収集や変換を簡単に行うことが可能となります。ちなみにまだドキュメントは無いようです。
DevelopersIO ブログの速報記事は下記となります。
さて、実際に試してみようにも少し敷居が高そうなこの新機能ですが、それを見越してか vision system data の収集から変換までを行える丁寧なデモが公開されていました。せっかくなので、このデモを試してみたいと思います。
デモを試してみた
このデモでは EC2 インスタンスで立てた Jupyter Notebook サーバーに SSH で接続し、デモページのコマンドをノートブックで実行していきます。
デモの環境構成とプロセスは下記の図が分かりやすいです。車両をデモンストレーションするサーバー上で ROS 2 によるデータ生成を行い、また IoT FleetWise 側で ROS に則った Signal Catalog および Decoder manifest の定義を行います。
ここで ROS 2 とは、Robot Operating System の最新バージョンのことで、ロボットアプリケーションに使用されるフィールドが今回のデモでも使用されます。
以降、デモで試した大まかな実施結果を示していきます。
FWE のプロビジョニングと開始
IoT FleetWise は、車両内の Linux ベースのハードウェア上で実行される「Reference Implementation for AWS IoT FleetWise」(FWE) と呼ばれるオープンソース ソフトウェアと、車両のモデル化や、取得するデータをスキーまで定義するクラウドリソースを管理できる IoT FleetWise クラウドの 2 つのコンポーネントで構成されています。
車両にプロビジョニングされた FWE はセンサー類からのデータを収集し、クラウドに送信します。FWE のプレビルドのバイナリの最新リリースは下記の GitHub リポジトリからダウンロードできます。
そして Jupyter Notebook を実行中の EC2 インスタンス上で、車両のデモンストレーションも行うために FWE をプロビジョニングして開始します。
IoT FleetWise のリソースの作成
Signal Catalog は、車両シグナルを表す階層化されたスキーマ仕様で、Vehicle Signal Specification (VSS) に基づいています。Signal Catalog は、車両のモデル化に使用されます。
Decoder manifest は、車両ネットワーク(CAN: Controller Area Network など)からのバイナリデータを人間が読めるように変換するためのデコード命令です。
今回作成される Signal Catalog には Vehicle.Cameras.Front.Image
というフロントカメラを表すシグナルが含まれています。
Vehcle(車両)は、Vehcle model(車両モデル)が適用されて作成されます。同じ Vehcle model からシグナルが標準化された複数の Vehcle を作成することができます。
Campaign(キャンペーン)は、車両データの収集のされ方を定義します。
今回作成された Campaign は、適用開始から 10000 ミリ秒間に以下の 4 つのシグナルのデータを収集します。
- Vehicle.Cameras.Front.Image
- Vehicle.Speed
- Vehicle.Airbag.CollisionIntensity
- Vehicle.Acceleration
上記は Time-based のコレクションスキーマとなります。一方で、ブレーキ圧が 8000 を超えた時など一定条件時にのみデータを収集するコレクションスキーマは Condition-based となります。今回は時間ベースで連続的に車載映像を収集するようになっています。
またこの Campaign の収集データの送信先は S3 バケットとなっています。FleetWise では送信されたデータの格納先として Amazon Timestream と Amazon S3 をサポートしていますが、今回の ROS 2 のような非構造化データの場合は S3 を選択します。
データの収集
Campaign が Vehcle にプロビジョニングされると、FWE は車両からデータを収集し、クラウドに送信します。
プロビジョニングからしばらく待つと、収集されたデータは S3 バケットの以下の 3 つのフォルダに格納されます。
raw-data/
:FWE によって直接アップロードされ、Edge から収集後にほぼリアルタイムで利用可能になります。processed-data/
:FW パイプラインによってデコードされたデータが格納されます。unstructured-data/
:データから抽出されたバイナリフィールドデータがファイルとして格納されます。
processed-data/
フォルダからダウンロードしたデータを、ヘルパースクリプトで次のように視覚化することができます。10000 ミリ秒間のデモ車両からの収集データがプロットされたグラフを生成できています。
また unsctructured-data/
フォルダからダウンロードしたデータは、次のようにフロントカメラで撮影された ROS 2 データが jpg 形式に変換され、利用可能となっていました。
おわりに
AWS IoT Fleetwise で vision system data の収集と変換を行うデモをやってみました。
コネクティッドカーで収集できるデータの活用においては、ブレーキやトルクなどから取得できる数値などの構造化データだけでなく、カメラや LiDAR などから取得できる画像やビデオなどの非構造化データも組み合わせることによってより高度な活用が可能となります。それらの異なるタイプのデータの収集を変換まで含めて一つのマネージドサービスで行えるようになるというのは、かなり嬉しいアップデートだったのではないでしょうか。
参考
以上