産業用異常検出


この記事は、GitHub* に公開されている「Industrial Anomaly Detection」の日本語参考訳です。


詳細
ターゲット OS: Ubuntu* 16.04 LTS
作業時間: 3 時間

はじめに

工場では、既存の PLC を使用して機器を制御しており、ヒューマン・マシン・インターフェイス (HMI)、データの取り込み、およびコンピューター・ビジョン・アプリケーションに複数の異なるデバイスを使用することがあります。このリファレンス実装は、これらすべてのワークロードを 1 つのシステムで独立して実行できることを示します。ホストシステム上の Kernel-based Virtual Machine (KVM) は、複数の仮想マシン (VM) またはゲストを実行します。object flaw detector (英語) アプリケーションと motor defect detector (英語) アプリケーションは、されぞれ仮想マシン上に配備されます。データの視覚化は、アプリケーションとは別の仮想マシン上の Grafana* で行います。 ワークロード統合の概要は、記事「産業用 IoT のワークロードの統合」 (英語) を参照してください。

要件

ハードウェア

IEI* Tank AIoT 開発者キット (英語)

ソフトウェア

  • Ubuntu* 16.04
  • InfluxDB* v1.7.1
  • Grafana* v5.3.2

仕組み

このアプリケーションでは、KVM はホストマシン上に 3 つの VM を作成します。それぞれの仮想マシンには、オペレーティング・システムとして Ubuntu* 16.04 が搭載されています。1 つ目のマシン (OFD) は、オブジェクトの欠陥検出アプリケーションを実行します。オブジェクトの欠陥検出アプリケーションは、コンベヤーベルト上を移動するオブジェクトの異常を検出し、このデータをローカルの InfluxDB* に格納します。2 つ目のマシン (MDD) は、モーターの欠陥検出アプリケーションをホストし、検出したデータをローカルの InfluxDB* に格納します。データの視覚化は、OFD と MDD の InfluxDB* からのデータを使用して、3 つ目の仮想マシン (HMI) 上の Grafana* で行われます。

archDiagram

セットアップ

仮想マシンの作成

  1. 次のコマンドを使用して、BIOS で仮想化が有効に設定されていることを確認します。

    kvm-ok

    上記のコマンドが次のメッセージを出力した場合、仮想化は有効に設定されています。

    INFO: /dev/kvm exists
    KVM acceleration can be used

    次のメッセージを出力した場合は、BIOS で仮想化を有効に設定する必要があります。

    INFO: KVM (vmx) is disabled by your BIOS
    HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
    and then hard poweroff/poweron your system
  2. 必要なパッケージをインストールします。

    sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder virt-manager bridge-utils
  3. libvirtd グループにユーザー名を追加します。

    sudo adduser `id -un` libvirtd
  4. システムを再起動して、ユーザーを libvirtd ユーザーグループの有効なメンバーにします。

  5. ゲスト OS が Ubuntu* 16.04 の仮想マシンを作成するには、Ubuntu* 16.04 LTS (英語) から 64 ビット PC 用のデスクトップ・イメージをダウンロードします。

  6. ストレージプール用のディレクトリーを作成します。

    mkdir $HOME/kvm-pool

    HOME ディレクトリーに kvm-pool という名前のディレクトリーが作成されます。

  7. virt-manager を開きます。

    virt-manager
  8. オブジェクトの欠陥検出アプリケーション用の仮想マシン (OFD) を作成するには、次の操作を行います。

    • [File] > [New Virtual Machine] を選択します。新しいダイアログウィンドウが開きます。

      WC1

    • [Local Install Media] を選択して、[Forward] ボタンをクリックします。

      WC2

    • [Locate your install media][Use ISO image] を選択して、[Browse] ボタンをクリックします。[Choose Storage Volume] ウィンドウが開きます。

    • ウィンドウの下部にある [Browse Local] ボタンをクリックして、以前のステップでダウンロードした Ubuntu* ISO イメージを参照します。[Forward] ボタンをクリックします。

      WC3

    • 次のウィンドウで、[Memory(RAM)]1024 MiB に設定し、[CPUs]1 に設定して、[Forward] ボタンをクリックします。場合によっては、サンプルコードのコンパイル時に VM のメモリー (RAM) を一時的に 4096 MiB に増やし、コンパイル後 1024 MiB に戻す必要があるかもしれません。

      WC4

    • [Select or create custom storage] を選択して、[Manage...] をクリックします。

      WC5

    • [Choose Storage Volume] ウィンドウの左下にある緑色の + ボタンをクリックして、[Add a new Storage pool] ウィンドウを開きます。

    • [dir: Filesystem Directory] タイプを選択して、ストレージプール名を kvm-pool にします。[Forward] ボタンをクリックします。

      WC6

    • [Browse] ボタンをクリックして、ステップ 6 で作成した kvm-pool ディレクトリーを参照して、ターゲットパスに指定します。

      WC7

    • [Finish] をクリックします。再度、[Choose Storage Volume] ウィンドウが開きます。作成した新しいストレージプール kvm-pool が左パネルに表示されます。

    • OFD 用のストレージボリュームを作成するには、左パネルから kvm-pool を選択します。右パネルの [Volumes] の横にある緑色の + ボタンをクリックします。[Add a Storage Volume] ウィンドウが開きます。

    • ストレージボリューム名を OFD にし、最大容量を 20 GB に設定して、[Finish] ボタンをクリックします。

      WC8

    • [Choose Storage Volume]kvm-pool ストレージプールから OFD.qcow2 ストレージボリュームを選択して、[Choose Volume] ボタンをクリックします。

    • [New VM] ウィンドウで、[Forward] ボタンをクリックします。

      WC9

    • 次のウィンドウで、仮想マシン名を OFD とし、[Finish] ボタンをクリックします。新しい仮想マシンが起動します。

      WC10

    • 仮想マシンの作成手順の最後のステップでは、Ubuntu* をインストールします。次のリンクに掲載されている手順に従って、Ubuntu* をインストールします。
      https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop#2 (英語)

      WC11

  9. 同様に、モーターの欠陥検出 (MDD) アプリケーションとヒューマン・マシン・インターフェイス (HMI) アプリケーション用の 2 つの VM を作成します。以前のステップで作成した kvm-pool に、MDD と HMI 用のストレージボリュームを作成します。

  10. 仮想マシンを起動するには、仮想マシン・マネージャーからマシンを選択して、トップメニューにある緑色の [Play] アイコンをクリックします。マシン名をダブルクリックして VM ウィンドウを開きます。

    WC12

仮想マシンでアプリケーションを実行する

  • OFD マシン用に、GitHub* リポジトリー (英語) から OFD アプリケーションのソースコードを取得します。

  • README の手順に従って、オブジェクトの欠陥検出アプリケーションを実行します。Grafana* をインストールして、Grafana* でデータを視覚化するダッシュボードを作成するステップはスキップします。

  • MDD マシン用に、GitHub* リポジトリー (英語) からモーターの欠陥検出アプリケーションのソースコードを取得します。

  • README の手順に従って、モーターの欠陥検出アプリケーションを実行して、Bearing Data Set をテストします。Grafana* をインストールして、Grafana* でデータを視覚化するダッシュボードを作成するステップはスキップします。

  • 3 つ目の HMI マシンでは、Grafana* をインストールします。

     wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.3.2_amd64.deb
    sudo apt-get install -y adduser libfontconfig
    sudo dpkg -i grafana_5.3.2_amd64.deb
  • HMI マシンでは、次の手順に従って、OFD アプリケーションと MDD アプリケーションのデータを Grafana* 上で視覚化します。

    • GitHub* リポジトリー (英語) から HMI の workload-consolidation リポジトリーをダウンロードします。

    • Grafana* サーバーを実行します。

       sudo /bin/systemctl start grafana-server
    • ブラウザーを開いて、http://localhost:3000 に移動します。

    • ユーザー admin およびパスワード admin でログインします。

    • 左パネルにある [Configuration] アイコンをクリックします。

    • [+ Add data source] ボタンをクリックして、次のように設定します。

      OFD からのデータソースを追加します。

      • Name: obj_flaw_database
      • Type: InfluxDB
      • URL: http://<OFD_machine_ip_address>:8086
      • Database: obj_flaw_database
      • [Save and Test] をクリックします。

      下部の [Back] ボタンをクリックして、[Add data source] をクリックします。
      MDD からのデータセット "1st_test" のデータソースを追加します。

      • Name: Predictions_testset1
      • Type: InfluxDB
      • URL: http://<MDD_machine_ip_address>:8086
      • Database: Predictions_testset1
      • [Save and Test] をクリックします。

      下部の [Back] ボタンをクリックして、[Add data source] をクリックします。
      MDD からのデータセット "2nd_test" のデータソースを追加します。

      • Name: Predictions_testset2
      • Type: InfluxDB
      • URL: http://<MDD_machine_ip_address>:8086
      • Database: Predictions_testset2
      • [Save and Test] をクリックします。
    • ブラウザーの左側の + アイコンをクリックして、[Import] を選択します。

    • [Upload.json File] ボタンをクリックします。

    • workload-consolidation ディレクトリーにある "motor_1_and_product_flaw_detector.json" ファイルを参照して選択します。

    • 名前を "motor_1_and_product_flaw_detector" にします。

    • [Options][obj_flaw_database] フィールドで "obj_flaw_database" データソースを選択し、[Predictions_testset1] フィールドで "Predictions_testset1" データソースを選択します。

      Grafana2

    • [Import] をクリックして、オブジェクトの欠陥検出結果と MDD アプリケーションの "1st_test" データセットの結果を視覚化するダッシュボードを作成します。

    • 同様に、workload-consolidation ディレクトリーにある "motor_2_and_product_flaw_detector.json" をインポートして、名前を "motor_2_and_product_flaw_detector" にします。[Options][obj_flaw_database] フィールドで "obj_flaw_database" データソースを選択し、[Predictions_testset2] フィールドで "Predictions_testset2" データソースを選択します。

    • オブジェクトの欠陥検出結果と MDD アプリケーションの "2nd_test" データセットの結果を視覚化するダッシュボードが作成されます。

  • MDD マシン上でモーターの欠陥検出アプリケーションを実行し、OFD マシン上でオブジェクトの欠陥検出アプリケーションを実行します。3 つ目の HMI マシンでは、以前のステップで作成したダッシュボードに、2 つのアプリケーションからのデータを視覚化したものが表示されます。

    Grafana3

注:

  1. オブジェクトの欠陥検出結果と MDD アプリケーションの "1st_test" データセットの結果は、"motor_1_and_product_flaw_detector" という名前のダッシュボードに表示されます。
  2. オブジェクトの欠陥検出結果と MDD アプリケーションの "2nd_test" データセットの結果は、"motor_2_and_product_flaw_detector" という名前のダッシュボードに表示されます。