ミニチュア工場を使って外観検査の自動化とデジタルツインによる工場状態の可視化をしてみる

2023-07-03
デベロッパーのためのクラウド活用方法

Author : 渡邉 聡

こんにちは。ソリューションアーキテクトの渡邉です。2023 年 4 月に 4 年ぶりにオンサイトでの開催となった AWS Summit Tokyo に参加された方も多くいらっしゃるかと思います。私は AWS EXPO の Manufacturing / IoT ブースでミニチュアファクトリーの展示をおこなっていたのですが、おかげさまで多くの方に来場いただき、デモを見ていただいたりお話をすることが出来ました。この記事では、現地へ参加できなかった人や、ゆっくりと見る時間が取れなかった皆様に、あらためてデモの詳細についてご紹介したいと思います。

このデモは、工場 DX を進める上でよくあるユースケースのうち、製品の外観検査の自動化と、工場状態の可視化にフォーカスしたものとなっており、記事の中でデモでの AWS サービスの活用ポイントをご紹介したいと思います。

デモではクラウド機能を工場側に拡張させ、機械学習推論をエッジ側で動作させることで、自動化した外観検査を実現する様子をご覧いただけるようになっています。また、工場装置のデータをクラウド側に収集しデジタルツインに投影することでミニチュア工場の状態をリモートでニアリアルタイムにわかりやすく可視化し、異常箇所の特定を容易にする様子もご覧いただけるようにもなっています。

デモで使用している装置やソフトウェアも実際の製造現場で使用されているものと同等なものを使用しているため、製造現場への導入イメージも持っていだだきやすいものとなっています。

このデモの前身は 2021 年に公開させていただいた ブログ のデモ装置となります。その後、製造関連の AWS サービスも多くリリースさせていただいてきており、旧来のデモで作り込んでいた部分も新たにリリースされてきたサービスに置き換えることで、より簡単に工場ワークロードの課題を解決できるようになったり、新しい手法によるデータ活用も試みています。

外観検査の自動化とデジタルツイン - デモアーキテクチャ

まずは、デモ動画をご用意したので早速ご覧ください。

画像をクリックすると動画を再生します。
(English caption available by clicking YouTube icon)

ご注意

本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。

*ハンズオン記事およびソースコードにおける免責事項 »


エッジ AI サービスによる外観検査の自動化

これまで主に人の目によって行われてきている外観検査を機械学習などを使った機械的な検査装置に置き換えることで外観検査の省力化への期待は勿論、人間の目による判定では判定基準が曖昧になりやすく誤った判定をしてしまう可能性があるところを長時間にわたる安定した判定を継続できるという点でも期待されています。

2021 年にご紹介したデモは、Amazon SageMaker を用い Autoencoder (自己符号化器) という手法で、大量の良品画像から学習した機械学習モデルに対して推論画像を読み込ませ、そこから推論 (復元) した画像と元画像の差分を見て異常を判定するというものになっていました。また、推論はエッジ側で動作させることで、短いタクトでの検査を実現し、クラウドとの接続に関係なく推論実行できるというものにもなっていました。ただし、これを実現するには機械学習に関する深い知識もさることながら、検査画像の撮影環境を常に一定になるように整え、学習用の画像も大量のバリエーションを準備したりと検査精度を上げるためには多くの調整を必要としました。

今回の新しいデモでは、外観検査に特化した AI サービスである Amazon Lookout for Vision を用い、旧来のデモをアップデートしています。Lookout for Vision を用いることで深い機械学習の知識がなくとも機械学習モデルを簡単に作成でき、高度な画像判定を実現できます。旧来デモの作成タイミングでも Lookout for Vision はサービス提供されていましたが、そのタイミングではエッジでの検査をサポートしていなかったため、上記のように独自の機械学習推論の仕組みを適用していました。その後 2021 年 12 月に Lookout for Vision でもエッジでの推論をサポートし、さらには 2022 年の 8 月には画像の分類とセグメンテーションをサポートする機能もリリースされ機能強化されてきています。これらアップデートにより製品製造の現場への適用がより進めやすくなってきており、デモの機械学習推論部分も Lookout for Vision でアップデートすることとしました。

今回のデモでは、良品と 2 種類の不良品を準備しました。学習に使用した画像は、良品 25 枚、不良品 23 枚と少ない画像登録からスタートし、推論結果の Confidence (信頼度) が一定を下回った画像を用いて再学習を行うことでモデルの精度を高めていくものとしています。これらのサイクルを簡単に実現できるように推論時に Confidence が一定を下回った画像を Amazon S3 にアップロードし Lookout for Vision に自動で登録されるような仕組みもデモでは実装しています。しかし、不良のパターンが単純なものだったためか、実際のデモ装置ではこの辺りのサイクルを回すまでもなく精度の高いモデルが出来上がってしまいました。

Lookout for Vision でのラベリング (Normal)
(画像をクリックすると拡大します)

Lookout for Vision でのラベリング (Anomaly)
(画像をクリックすると拡大します)

Lookout for Vision で作成した機械学習モデルを用いてエッジでの機械学習推論を行う場合、デバイスソフトウェアのデプロイ、管理を実現する AWS IoT Greengrass を用います。カメラで撮影を行った画像を用いて推論を行うにはこの AWS IoT Greengrass 上で動作するコンポーネントの実装が一部必要になってきます。今回のデモでは以前 builders.flash 内の記事 ( AWS でアクセサリー検査装置をつくってみよう ) でご紹介したエッジ推論プログラムを拡張し適用しています。実際にどのようなコードで実現しているかは、記事の中で具体的なソースコードと利用方法をご覧いただけますので是非ご参照ください。

今回のデモでは、先の builders.flash の構成と同じく、NVIDIA Jetson AGX Xavier をエッジデバイスとして使用しています。今回のデモの推論は 1 推論あたりおおよそ 200 ms から 300 ms ほどで推論できています。また、エッジでの推論となっていますので、旧来のデモと同じようにクラウドとの接続に関係なく推論し続けることができる環境となっています。

Lookout for Vision では クラウド推論の場合は AWS コンソールで異常検出の状態を確認できますが、エッジ推論を使った場合、コンソールで異常検出の状態を確認できません。そこで、デモではエッジでの推論状態を独自にクラウド送信することで推論状況の可視化を実現しています。実現している方法については次項をご覧ください。


工場状態の可視化

工場装置の状態と外観検査の推論結果は製造設備データの収集、蓄積、可視化を実現する AWS IoT SiteWise に送信し、Amazon Managed Grafana を用いてダッシュボードを作成しています。工場装置をコントロールしている PLC の状態は、株式会社たけびしのデバイスエクスプローラ OPC サーバーを用いて産業用プロトコルの OPC-UA を使った収集を行っています。AWS IoT SiteWise のコンポーネントを AWS IoT Greengrass にデプロイすることで、 OPC-UA データを簡単にクラウド側に収集することができます。エッジ装置での外観検査の結果も AWS IoT Greengrass の持つStream Manager 機能を用いて AWS IoT SiteWise にデータを収集するようにしています。

OPC-UA データソースからのデータ収集では、AWS IoT SiteWise の設定で対象ノードの範囲や、サブスクライブ (値の変化があった場合のみデータ取得) もしくはポーリング (定期的にデータ取得) のいずれかの取得方法を柔軟に設定できるようになっています。今回のデモの PLC では、装置の稼働状態を示す値のほか、良品数のカウントなど状態の変化が定期的ではないデータも扱っています。Grafana のグラフ表現方法や定期的なメトリクス演算の有無などデータの活用方法に合わせてデータの取得方法を細かく設定しています。

デモのダッシュボードでは、この PLC データを活用してミニチュア工場の設備総合効率 (OEE) も確認できるようになっています。 OEE の算出には、PLC から取得できる良品の生産数、ベルトコンベアの稼働状況などの情報と、良品生産にかかる時間などの AWS IoT SiteWise 内の属性値として定義した値を用いて、稼働率、性能、品質の値をメトリクス計算し、これらを掛け合わせることで OEE を算出しています。

AWS IoT SiteWise メトリクス定義
(画像をクリックすると拡大します)

AWS IoT SiteWise 属性値の設定
(画像をクリックすると拡大します)

Lookout for Vision での外観検査の結果についても AWS IoT Greengrass の持つ Stream Manager を使ったクラウドへのデータエクスポート機能 を用いて AWS IoT SiteWise に検査結果を送信しています。検査結果として送っているデータは、Lookout for Vision のエッジコンポーネントでの推論から得られる、検査結果 (正常・異常) 、Confidence に加え、プログラム中で計測している推論時間と、S3 にアップロードした検査画像の URI を AWS IoT SiteWise に送っています。

このようにして AWS IoT SiteWise に送信したデータを Amazon Managed Grafana を用いて可視化しています。AWS IoT SiteWise で収集した時系列データの可視化は AWS IoT SiteWise の持つ SiteWise Monitor ダッシュボードでも可視化ダッシュボードを作成できますが、今回のデモでは後述する デジタルツイン の 3D ビューも合わせて表示したかったため Amazon Managed Grafana を用いることにしました。また、Amazon Managed Grafana では様々なプラグインが用意されているため、これらを用いてデータをよりわかりやすい形でモニタすることが可能となります。

ただし、Amazon Managed Grafana では自由に任意のプラグインを導入することができないため注意が必要です。今回のデモのダッシュボードでも、Amazon S3 にアップロードされた不良画像を確認できるようにしていますがこういったことを簡単に実現できるパネルプラグインは Amazon Managed Grafana では現状用意されていません。

そこで今回のデモダッシュボードでは、S3 にある画像の URI を入力として Base64 エンコードしたデータで返すことのできる API を AWS Lambda を用いて作成し、その API に対して Amazon Managed Grafana で使用できる JSON データソース機能を用いて接続し、取得したデータを Text パネル (HTML 埋め込みが可能) に埋め込むことで実現しています。

Text パネルの設定
(画像をクリックすると拡大します)

Amazon Managed Grafana によるデモダッシュボード
(画像をクリックすると拡大します)


AWS IoT TwinMaker によるデジタルツインの構築

デジタルツインの定義はベンダーやお客様によって大きく異なりますが、AWS IoT TwinMaker は、現実世界のシステムをモデル化し、取り込んだデータを仮想空間上に投影することで、現実世界のシステムの状況の理解を助けるデジタルツインの作成を支援するサービスとなっています。今回は AWS IoT TwinMaker を使ってダッシュボードにデジタルツインを表示しデモ装置の状態をより分かりやすくなるようにしています。

AWS IoT TwinMaker によるデジタルツインの構築にあたって、最初に 3D モデルを作成する必要があります。AWS IoT TwinMaker では glTF (Graphics Language Transmission Format) 形式の 3D アセットをサポートしており、今回はこの形式の 3D アセットをオープンソースの統合型 3DCG 制作ソフトウェアである blender を使用して作成しました。私自身趣味で 3D プリンターを用いて物作りなどもしていたりするためこの手のソフトウェアを使っての作業は慣れていたというのもあるのですが、デモ装置自体がいくつかのブロック形状の組み合わせというのもあり、日曜大工作業で 1 日で作り上げることができています。

blender による 3D アセットの作成
(画像をクリックすると拡大します)

作成した 3D モデルを blender のエクスポート機能を使ってglTF 2.0 形式で出力し AWS IoT TwinMaker リソースとしてアップロードしています。アップロードした 3D モデルを AWS IoT TwinMaker のシーン開発機能に取り込むことでデータと 3D モデルの紐付けを行いながら視覚表現の開発することができます。

AWS IoT TwinMaker でのシーン開発
(画像をクリックすると拡大します)

AWS IoT TwinMaker に 3D モデルを取り込むと、blender での作成時に各オブジェクトをコレクション分けした状態がそのまま取り込まれるため、個別のオブジェクト選択も容易になります。AWS IoT TwinMaker を使ったデジタルツインには、入力した装置のデータに基づき、3D モデルに対してアイコンを使って状態を表示したり、装置のデータに基づいて 3D モデルの色を変えたり、モーションインジケーター を用いて対象オブジェクトの動作状態を分かりやすく表現できるようにもなっています。

今回のデモでは、ベルトコンベアとグリッパーアームの動作状況をモーションインジケーターで表現し、製品の配給レーンと、不良品の排出レーンの状況を対象の 3D モデルの色を変えることで表現しています。また、現在アクティブではない装置については、3D ビューには表示しないようにも設定しています。

このように収集した装置データに合わせて 3D モデルの状態を変化させることが AWS IoT TwinMaker を用いることで簡単に実現できます。また、今回のデモには適用していませんが、オブジェクトに 注釈をつけてデータをオーバーレイ することができるアップデートも出ています。これらを組み合わせることで、設備のモニタリングがより効率化され設備状況の可視化が容易になります。

今回デモを作成していく上で、AWS IoT TwinMaker のシーンを Amazon Managed Grafana 上に適用する場合に注意点がありました。それは、ダッシュボードに自動リフレッシュを適用している場合の TwinMaker Scene Viewer の動作となります。自動リフレッシュが設定されていて、グラフのタイムレンジが長く設定されている場合、ダッシュボードのリフレッシュのたびに指定期間の時系列データを取得してタイムレンジの頭からデジタルツインの動作を毎回再現しようとします。デジタルツイン上に適用しているデータによってはこの仕様によって同じ期間のデータが何度も再生されることで違和感が出てきます。

この挙動を回避するためには、TwinMaker Scene Viewer のパネルだけ、Query optionsRelative time で取得するデータ期間を短く (1m など) することで、同じ期間のデータを繰り返し再生される状況を回避できるようになり違和感なく表示できるようになります。

TwinMaker Viewの設定 (Query options で Relative time を設定)
(画像をクリックすると拡大します)

2023 年 4 月現在の サービス提供リージョン の状況に合わせ、今回のデモ環境はオレゴンリージョンで作成しました。接続するサービスによっては、AWS IoT TwinMaker だけリージョンを分けるという構成も検討できる場合もありますので、既になんらかのデータを集めていてデジタルツインも追加したいという場合は是非 AWS IoT TwinMaker をお試しください !


デモ装置作成に関する情報

AWS Summit Tokyo のデモ展示の際も多くのお客様に興味を持っていただき、色々ご質問をいただきました。その中で、実際にこのデモと同じものを作成し、自社の工場をシミュレートし適用を進めていきたいといった話や、ソリューション開発していくにあたって同じようなデモを作りたいという話も多くいただきました。

このデモの工場装置部分はドイツのフィッシャーテクニックのトレーニングキットを使用しています。日本では販売代理店経由で購入できます。具体的に、今回のデモでは Conveyor Belt 24VVacuum Gripper Robot 24VSorting Line With Color Detection 24V を加工して使用しています。これらのキットはすべてデータシートが公開されているので、これらを参照し、三菱電機の PLC FX5UC に独自に書いたラダープログラムを適用して装置全体をコントロールしています。ラダープログラムは初心者ではあったのですが、試行錯誤の上なんとか思うように装置全体を動かせるようになりました。物理的なものをプログラムで動かすのはとても楽しいですね。

また、工場装置以外の物理装置もすべて自作しています。例えば手動外観検査用のボタンボックスは箱とボタンを秋葉原で購入してきてドリルで穴あけをして作成しました。配給レーンはレゴブロックで組み立てていますし、製品として流すブロックも良いものが見つからず最終的には木材を切って色を塗って作りました。

自作したボタンボックス

レゴブロックで作成した配給レーン

実は今回のデモ装置を作るのにかかった工数のほとんどがここまでの物理的な装置の作成でした。PLC のラダープログラムもそうですが、物理的な機器の配置や配線が最も大変だったかもしれません。試行錯誤もあったので明確な工数は出せませんが、物理的な装置の作成でおおよそトータルで 1 週間ほどかかっているかなと思います。

一方でエッジ装置のプログラミングやダッシュボードの作成は、既存のリソースを使っている部分もありますが、こちらは機械学習モデルの作成と合わせても 1 日で終わっています。慣れている作業だから早いと言われれはそれまでですが、物理的な作業は試行錯誤するにも壊して作ってでそれだけで時間がとられる一方でクラウドや IT 部分はスピーディーに試行錯誤できるというところも今回のデモ作成で実感しました。

作成中の装置 - 配線がスパゲッティ状態


さいごに

デモとして AWS サービスの活用どころを皆様にお見せできたという達成感はもちろんですが、こうして装置全体を作ってみると、工場データの収集方法への工夫やサービスの使い方など改めて多くの気付きがあり、とても有意義なデモ作成でした。

AWS Summit Tokyo の会場に足を運んでくださりフィードバックくださった皆さまありがとうございました。


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます


筆者プロフィール

渡邉 聡
アマゾン ウェブ サービス ジャパン合同会社
デジタルトランスフォーメーション本部 プロトタイピングソリューションアーキテクト

趣味は DIY で棚や机の作成から、料理から手芸まで興味のあるものは何でも作ってみます。最近は電子工作と 3D プリンターによるものづくりにはまっています。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する