Amazon Web Services ブログ

ミニチュア工場を使ったスマートファクトリーデモのアーキテクチャ

近年、工場にIoT技術を導入し、工場の情報のクラウドへの集約、クラウドの計算リソースを使った生産品質や生産効率の向上、クラウドを介したITシステムとの連携、といった事を実現するスマートファクトリー化の取り組みが活発になっています。

一方、工場の現場では、生産ラインをクラウドと連携させるにはどうすれば良いのかイメージが湧かない、まず何から始めれば良いのか、といった声も多く聞かれます。

AWSでは、工場におけるAWSサービスの活用事例として、ミニチュア工場を使ったスマートファクトリーのデモ環境を開発しました。ミニチュア工場は、加工・検査・仕分けのパートから構成される生産ラインの模型で、全体は1台のPLCで制御されています。加工パートでは工作機械の模型で模擬的な加工を行い、検査パートではラインを通過する製品を実際に撮影して機械学習モデルで良品/不良品の判定を行い、その結果に基づいて仕分けパートで不良品をラインから排除します。

Model factory

この記事では、スマートファクトリーデモの内容を以下の3つのユースケースに分けて、実際に動いている動画で説明すると共に、アーキテクチャを解説します。

※AWSの製造業に対する取り組み全般に関してはこちら

工場データの可視化・分析

スマートファクトリーにおけるデータ活用の最初のステップとなるのが、データの収集と可視化です。可視化には大きく分けて、「収集したデータのリアルタイムな可視化」と、「長期保存されたデータの集計や分析結果の可視化」の2種類があります。これらの可視化を行う事で、従来は工場内でしか得られなかった情報をデータレイクに集約して活用したり、総合設備効率を上げるために改善のサイクルを回す、といった取り組みに役立てる事ができます。

スマートファクトリーデモでは、ミニチュア工場の生産ラインにおける設備の状態や生産量、不良率といったデータをAWS IoT SiteWiseを使ってリアルタイムに可視化すると共に、Amazon QuickSightを使って、長期データに対する分析を行っています。

アーキテクチャ解説はこちら

ARを用いた生産ラインの可視化と異常検知

近年、製造業において、作業支援やセンサー情報の可視化にARの利用が進んでいます。人間が行う必要のある複雑かつステップ数が多い作業はミスが発生しやすく、作業環境によっては作業指示書などを見ることが難しい場合も少なくありません。

また、生産現場においては、例えばディスプレイを配置する場所がない、水などが飛び散る環境である、両手がふさがっている、作業用の手袋をしていてデバイスの操作が難しいなど、可視化されたデータを確認することが難しいケースがあります。スマートファクトリーデモでは、ARスマートグラスを使うことにより、音声操作で設備の状態や作業手順をハンズフリーで確認できます。さらに、生産ラインに何らかの異常があれば、ARスマートグラスを通して異常の内容や対処方法の通知を受ける事ができます。

スマートファクトリーデモで用いたARスマートグラスでは、小さなディスプレイが目の近くにあり、右下に小さく作業指示などの必要な情報を表示する事ができます。音声によるハンズフリー操作が可能で、カメラも内蔵しているため、作業結果の撮影やエキスパートによる遠隔支援といったユースケースにも対応できます。

アーキテクチャ解説はこちら

機械学習を用いた外観検査の自動化

工場では、製品の検査工程に「目視による不良箇所の有無の確認」があるケースがあります。近年のAI技術の進歩により、目視確認を機械学習による画像認識によって自動化する事で、生産効率の向上や、検査精度のバラつきの抑止といった取り組みが始まっています。しかし、機械学習に詳しい人材がいなかったり、実際に生産ラインに機械学習を導入する方法がわからない、といった声も多く聞かれます。

スマートファクトリーデモでは、ミニチュア工場の検査パートにおいて機械学習による外観検査を実施し、不良品を仕分けパートでラインから排除する仕組みを構築しています。機械学習モデルはAmazon SageMakerでAutoencoderをトレーニングする事で開発し、そのモデルをAWS IoT Greengrassにデプロイしてエッジコンピューターで推論を行っています。

アーキテクチャ解説はこちら

全体アーキテクチャ

スマートファクトリーデモの全体アーキテクチャは以下のようになっています。

Factory Demo Architecture

ミニチュア工場のフィールドネットワークにはAWS IoT Greengrassが接続され、PLCから生産ラインの情報を読み取ってクラウド側のAWS IoT SiteWiseにデータを送信します。また、接続されたカメラで検査パートを通過した製品を撮影し、機械学習による良品/不良品判定結果に基づいて仕分けパートを制御します。
AWS IoT SiteWiseでは、ミニチュア工場の情報を設備や生産ライン、工場全体といった階層構造でモデル化し、SiteWise Monitorというダッシュボードで稼働状況をリアルタイムで確認する事ができます。

また、データの長期的な保存や分析のため、AWS IoT SiteWiseからAWS IoT Coreを経由してAWS IoT Analyticsにデータを送信し、データの前処理を行った上で蓄積しています。そして、AWS IoT Analyticsに蓄積されたデータは、Amazon QuickSightで構築されたBIダッシュボードにより可視化され、統計情報や時系列データに基づく将来予測などの分析に使われます。

AWS IoT SiteWiseからAWS IoT Coreを経由したデータはAWS IoT Eventsにも連携され、探知器モデルによって設備の異常検知を行います。さらに、AWS IoT CoreからトリガーされるAWS Lambda関数により、AWS AppSyncを通してARスマートグラスにもデータが送信され、生産現場の作業者に設備の状態や異常の有無が可視化されます。

ここからは、各ユースケースそれぞれにおけるアーキテクチャの詳細について解説します。

工場データの可視化・分析

アーキテクチャ

可視化・分析のアーキテクチャはこのようになっています。

Visualization architecture

ミニチュア工場のフィールドネットワークにはAWS IoT Greengrassが接続され、生産ラインを構成するベルトコンベア等の設備の情報や、製品の通過を検知する光センサーの信号をPLCから受信しています。また、AWS IoT Greengrassにはカメラが接続されており、カメラ直下の光センサーの信号をトリガーとして製品を撮影し、機械学習によって良品か不良品かを判定する外観検査も行います。PLCから受信した情報は、生産ラインの設備をモデル化したアセットのアセットプロパティとして、AWS IoT GreengrassのStream Managerを介してAWS IoT SiteWiseに送信されます。

SiteWise Monitorによる生産ラインの可視化

AWS IoT SiteWiseでは、ミニチュア工場を構成するベルトコンベア、光センサーといった設備の情報をモデル化し、それらをまとめた生産ライン、生産ラインをまとめた工場全体、といった階層構造を持つモデルを定義しています。

ベルトコンベアは、ベルトが一定距離を進む毎に発生するパルス信号をカウントする事で時間当たりの移動量を計測できるようになっており、これを速度データとしてベルトコンベアのモデルを定義しています。ミニチュア工場には5つのベルトコンベアがあるため、このモデルを使用した5つのアセットを作成しています。

また、光センサーは、ベルトコンベアの特定の場所を製品が通過した際にパルスが発生するようになっており、これを製品の通過フラグとして光センサーのモデルを作成しています。1分間、5分間、1時間、1日それぞれの通過数をメトリクスとして定義し、定期時間毎の集計も行っています。また、光センサーは6箇所に設置されていますが、このうち良品が到達する地点と不良品が到達する地点で良品と不良品のカウントを行うようになっています。

SiteWise アセットの定義

このように作成したモデル・アセットを用いてダッシュボードを作成しています。ダッシュボードでは、各ベルトコンベアの稼働状況を一覧できるTimelineチャートを使い、ベルトコンベアの速度を色分けして表現する事で、ベルトコンベアが停止している時間帯を視認しやすくしています。

Conveyor speed chart

このチャートでは、加工パートに位置している「Converyor2」で加工中にベルトコンベアが一時停止している事、及び検査パートに位置する「Converyor4」で撮影中にベルトコンベアが一時停止している事がよくわかると思います。

5分、1時間あたりの生産数、不良数はKPIチャートで表しており、前の周期からの変量も確認できるようになっています。また、併せて5分あたりの生産数をBarチャートで表示しているため、これによって過去の生産数の推移も確認できます。Thresholdの設定により、予定生産数に満たない時間帯については赤色バーで色分けして表示しているため、生産状況の異常も一目で確認する事ができます。

Production chart

加工品の数、及び良品と不良品の数の推移は、Lineチャートで1分あたりの入力数(青)、良品数(オレンジ)、不良品数(緑)として表示しています。

Yield chart

QuickSightによるBIダッシュボードの作成

スマートファクトリーデモでは、工場のデータを長期的な観点でBI分析できるようにするため、受信したデータをAWS IoT Analyticsにエクスポートしています。これにより、履歴レポートを作成したり、データを詳細に分析する事ができるようになります。

AWS IoT SiteWiseでは、蓄積されたデータを外部にエクスポートする方法として、「MQTTを使ったエクスポート」と「Query APIを使った外部からの取得」をサポートしていますが、今回は前者のMQTTでAWS IoT Coreに送信し、ルールエンジンを用いてAWS IoT Analyticsに転送・蓄積しています。蓄積されるデータは下記のような形式となりますが、分析対象の値は assetIdpropertyId で判別する必要があるため、AWS IoT Analyticsのクエリによって分析対象のデータを抽出し、BI可視化を行う際に理解しやすい名前に置き換えています。

{
  "type": "PropertyValueUpdate",
  "payload": {
    "assetId": "String",
    "propertyId": "String",
    "values": [
      {
        "timestamp": {
          "timeInSeconds": Number,
          "offsetInNanos": Number
        },
        "quality": "String",
        "value": {
          "booleanValue": Boolean,
          "doubleValue": Number,
          "integerValue": Number,
          "stringValue": "String"
        }
      }
    ]
  }
}

(参考) Interacting with other AWS services
https://docs.thinkwithwp.com/iot-sitewise/latest/userguide/interact-with-other-services.html

また、AWS IoT SiteWiseでは、データをAmazon S3にエクスポートするためのAWS CloudFormationテンプレートも提供しています。このテンプレートでは、上記と同じくMQTTでAWS IoT Coreを経由し、ルールアクションでAmazon Kinesis Data Firehoseを使ってAmazon S3にデータを蓄積していく事に加え、アセットプロパティに設定した名前やエイリアス といったメタデータも、Lambda関数によって6時間毎に出力されます。このメタデータとアセットプロパティのデータを組み合わせる事で、AWS IoT SiteWiseで収集した情報の分析環境を簡単に構築する事ができます。詳細は下記のURLをご参照ください。

(参考) Amazon Simple Storage Service へのデータのエクスポート
https://docs.thinkwithwp.com/iot-sitewise/latest/userguide/export-to-s3.html

AWS IoT Analyticsに蓄積されたデータは、Amazon QuickSightで作成した分析ダッシュボードのデータソースとして使われます。ダッシュボードでは、生産数の推移や良品・不良品の割合、ML Insight(※)の機能を使った生産数の予測、といった項目がグラフとして可視化されます。

※ ML Insightの機能を利用するにはEnterprise Editionのご利用が必要です。
https://docs.thinkwithwp.com/ja_jp/quicksight/latest/user/making-data-driven-decisions-with-ml-in-quicksight.html

QuickSight dashboard

ARを用いた生産ラインの可視化と異常検知

ARスマートグラスアプリの画面構成

スマートファクトリーデモでは、ミニチュア工場の生産ラインにおける生産数と良品数および良品率、ベルトコンベアの速度といった設備の状態の値をARスマートグラスで1秒ごとにリアルタイム表示しています。また、ベルトコンベア上での製品の詰まりといった異常を検知した場合、異常の内容と対処方法を表示するモードに移行します。異常の解消を検知すると、再び通常モードに戻ります。

AR application

可視化アーキテクチャ

ARによる可視化のアーキテクチャはこのようになっています。

AR architecture

ARスマートグラスで動作するアプリは AWS AppSync を介してミニチュア工場と連携しており、リアルタイム表示するための最新データや、検知された異常の内容を受信します。

AWS IoT Greengrass から AWS IoT SiteWise のアセットプロパティとして送信されたミニチュア工場のデータは、AWS IoT SiteWiseのMQTTエクスポート機能によって AWS IoT Core にリアルタイムに通知されます。AWS IoT Core では、該当する通知に対してルールアクションが定義されており、AWS AppSync の mutation を実行する AWS Lambda 関数が実行され、ARスマートグラスにデータが送信されます。

異常検知アーキテクチャ

異常検知のアーキテクチャはこのようになっています。

Anomaly detection architectureAWS IoT SiteWise から AWS IoT Core に通知されたデータは AWS IoT Events にも送信され、探知器モデルによって異常検知を行います。異常が検知されると、AWS AppSync の mutation を実行する AWS Lambda 関数が実行され、ARスマートグラスに異常が通知されます。

また、異常が検知されるとミニチュア工場のベルトコンベアを緊急停止し、異常が解消されたら再始動する、という動作も実装しています。 AWS IoT Events の探知器モデルでは、異常状態への OnEnter と OnExit のイベントアクションとして AWS IoT Core へのメッセージ送信が登録されており、そのメッセージをトリガーとして、ベルトコンベアの停止または再始動コマンドをPLCに送信する AWS Lambda 関数がAWS IoT Greengrass 上で実行されます。

IoT Eventsによる異常検知とARスマートグラスへの通知

ベルトコンベア上での製品の詰まりはIoT Eventsを用いて検知しています。スマートファクトリーデモでは、加工パートにおける製品の詰まりを検知するようになっています。具体的には、加工パートの入口と出口に設置されている光センサーの検知結果をSiteWiseを経由してIoT Eventsに入力しており、入口の通過を検知した後、一定時間後に出口を通過しない場合に詰まりが発生していると判断するようになっています。
AWS IoT Eventsで作成してる探知モデルは下記のようになっています。

IoT Events Model

通常は入口の通過を待つwait_processing状態と出口の通過を待つwait_reflow状態を行き来していますが、一定時間経っても出口の通過を検知できない場合、timeout状態に遷移します。timeout状態に遷移すると、OnEnterのイベントアクションでAWS IoT Coreにメッセージを送信し、それを受けたAWS IoT GreengrassがPLCを制御して加工パート入口のベルトコンベアを停止します。同時に、AppSync経由でARスマートグラスへの通知も行うLambda関数もイベントアクションで実行します。

ARスマートグラスは、製品の詰まりイベントを受け取ると通知を表示します。通知を選択すると、画面に復旧手順を表示します。復旧作業が完了し、詰まりが解消されたことが検知されるとダッシュボードが再び正常に更新されます。

IoT Eventsによる復帰検知とラインの再稼働

詰まりが解消されると、加工パートの出口を製品が通過するため、探知器モデルはtimeout状態からwait_processing状態に遷移します。timeout状態から抜ける際のOnExitのイベントアクションでもAWS IoT Coreにメッセージを送信し、それを受けたAWS IoT GreengrassがPLCを制御して加工パート入口のベルトコンベアを再始動させます。

機械学習を用いた外観検査の自動化

アーキテクチャ

外観検査のアーキテクチャはこのようになっています。

Visual inspection architecture

ミニチュア工場の検査パートには製品を撮影するカメラが設置されており、その直下のベルトコンベア上には製品の通過を検知する光センサーがあります。光センサーが製品を検知すると、その信号を受けたPLCがベルトコンベアを停止し、同時にAWS IoT Greengrassにも信号を送信します。AWS IoT Greengrassでは、PLCからの信号を受信するLambda関数と、カメラで製品を撮影し、Amazon SageMakerで開発した機械学習モデルで良品・不良品の判定を行うLambda関数が動作しており、判定結果をPLCに送信しています。PLCは、判定結果を受信するとベルトコンベアを再始動し、不良品であれば仕分けパートでラインから排除します。

次に、機械学習モデルの開発方法について解説します。

機械学習モデルの作成

機械学習を使った外観検査では、機械学習モデルの開発手法にいくつかの選択肢がありますが、今回のデモではオートエンコーダ(自己符号化器: Autoencoder)を利用しました。具体的には、良品画像のみから学習したオートエンコーダを作成し、ベルトコンベアを流れる商品を撮影した画像を入力すると、良品の場合は正しく復元されますが、不良品の場合正しく復元できません。この復元画像と入力画像の差分をとり、一定の閾値を設定することで異常の判定を行っています。このような検出方法の性質上、検出対象(異常箇所)の画像上のサイズが小さい場合、正常・異常の判定が難しい場合があります。

Model architecture

学習用の良品画像は、ベルトコンベア上を流れるブロックを予め大量に撮影することで準備しました。カメラで撮影する部分は覆いを被せ、光の当たり方を一定にするようにはしていますが、ベルトコンベアを流れるブロックの位置や向きなどは一定にできないため、どのような状態で流れてきても正しく復元できるように、ブロックを変えながら複数のパターンで撮影しています。

また、大量に用意した画像から、学習に使用できる良品画像を選別する目的でAmazon SageMaker Ground Truthを利用しています。実際の工場でも、撮影した商品画像群から良品・不良品を選別するケースや、商品の傷などの不良内容を特定してラベル付けするケースもあり、そのようなケースでGround Truthの利用は有効となります。

良品画像が揃ったら、SageMakerを使ってモデルを作成していきます。今回はフレームワークとしてMXNetを使っています。

モデルの作成、および推論コード作成に参考にさせていただいた実装はこちらになります。

Model training

作成したモデルをS3に配置し、Greengrassに対してMLリソースとして設定しデプロイすることでGreengrassのPythonプログラム(Lambda関数)から利用できるようにしています。

まとめ

以上、3つのユースケースに分けて、ミニチュア工場を使ったスマートファクトリーデモのアーキテクチャについて解説しました。PLCとAWS IoT Greengrassをフィールドネットワークを介して連携させ、工場でAWSのクラウドサービスを活用するモデルケースとして参考にして頂ければ幸いです。

AWSでは、製造業のお客様に向けた取り組みにも注力しており、今回ご紹介したAWS IoT GreengrassやAWS IoT SiteWiseといったエッジIoTサービスを活用した様々なソリューションをご提案しています。下記のポータルサイトにて、各種資料やイベント・セミナーのご案内、お客様事例などをまとめておりますので、ぜひご参照ください。

【日本のお客様向け】AWS の製造業に対する取り組み

この記事はIoT Specialist SAの嶺、Prototyping SAの渡邉と嶋田が担当しました。