加工機稼働監視システム-Webカメラ編


概要

前回に引き続き、加工機稼働監視システムにつきまして
今回はWEBカメラとRaspberry Piを用いた検出をご紹介いたします。

光センサによる検出は下記記事をご確認ください。

 https://www.synthemec.co.jp/lab_webdir/7.html

内容

1. 構成および使用部品
2. Node-redの設定
3. 画像処理プログラムの設計
4. 結果・感想

1. 構成および使用部品

今回のシステムの構成は下記のとおりです。(図1)

WEBカメラをRaspberry PiのUSBポートに直接接続し、
画像処理を行った結果をUDP通信でサーバPCに送信しております。

また、前回と同様に場内コンセント(AC100V)から電源を取り設置場所付近まで配線、
ACアダプタ(2A出力)で変換を行ってRaspberry Piと接続しております。

WEBカメラ:CMS-V43BK 1個
  → 広角150° 100万画素CMOS 解像度(最大)1280×720
Raspberry Pi:RASPBERRYPI4-MODEL-B/4GB 1個

Node.js:version 14.17.1
Node-red:version 1.3.4
SQLite:version 3.35.5
DB Browser for SQLite:version 3.12.2.0

図1. 構成イメージ図

図1. 構成イメージ図

2. Node-redの設定

Node-redとはNode.js上の実行環境に構築されるフローベースドプログラミングツールです。
プログラム内で使用されるノードは自作可能かつ他者が作成したノードをダウンロードして使用することも可能です。
また、多様な通信形態でのデータの送受信やそのデータをブラウザ表示することも容易にできます。
Raspberry Pi 4にも標準でインストールされているため、今回はNode-redを中心にシステムを構築いたしました。

作成したフローは下記の通りです。(図2)

  【フロー概要】
 1. タイムスタンプを使用して10秒間隔でプログラムを実行
 2. 撮像用のPythonプログラムを呼び出してその結果を取得
 3. 取得したデータをUDP通信でサーバPCへ送信(Wi-Fiを使用)

図2. Node-red編集画面

図2. Node-red編集画面(Raspberry Pi)

3. 画像処理プログラムの設計

画像処理のプログラムはPython IDEで作成いたしました。
また、画像処理はOpenCVを使用して行っております。

作成したプログラムは下記の通りです。

  【プログラム概要】
 1. ライブラリのインポート
 2. 使用するカメラの選択、処理範囲設定
   - 以下ループ-
 3. フレーム取得(撮像)
 4. 結果格納デバイスの初期化(0を格納)
 5. 設定した処理範囲内をHSV形式(*1)に変換
 6. 色の範囲を指定
 7. 検出範囲が任意の面積を超えた場合は結果に1を格納
 8. 各色表示灯の結果から加工機の状態を判別
 9. 各色表示灯の状態、加工機の状態をJSON形式に変換しUDP通信を用いてサーバPCに送信

(*1) Hue(色相)、Saturation(彩度)、Value(明度)の三要素で表される色空間

4. 結果・感想

今回使用したカメラは広角のタイプで解像度もさほど高いものではなかったため
近距離(約2m)にあるシグナルタワーは問題なく検出しておりますが、
離れた場所にあるシグナルタワーの状態を検出することはできませんでした。

しかしながら物理的な構成としては非常にシンプルで
センサとは異なり検出対象から離れた場所に設置できること、カメラ1台で複数の監視を行えることなどを考慮すると
対象物とカメラの位置関係や使用するカメラのスペックによってはこちらの方法でもよいと思いました。

次回は、サーバPCの方のシステムについてご紹介いたします。