◯Pixy2送信機
IoTBaseモジュール(ESP32をつかった当社のオリジナルベース基板)に、Pixy2をシールドとして接続したものです。
この送信機は、Pixy2のブロックデータ(オブジェクト座標)をJSON書式で送信するだけのものです。

◯アニメーション表示用画面
いろいろ盛りすぎて、少々わかりにくいですが、下記の機能があります
  1. アニメーション(黄色の丸が左右に動く)を表示する
  2. 往復(2秒)で1回とし、アニメーション回数を表示する
    これが元の回数となる。
  3. Pixy2送信機からの座標データを受信する
  4. 受信した座標から角度(往復位置)を計算し表示する※
  5. 270度位置を検知したら、1動作として回数を表示する※
    この回数と先のアニメーション回数と一致すれば、Pixy2が「加工数送信の"目"」にできることになります。

※座標データから動作回数を得る部分はエッジ側(Pixy2送信機)で行うべきですが、諸事情でPC側で処理させています。

◯M5Stack受信機
マルチキャストのテストも兼ねて、オブジェクト位置をグラフィック表示(PixyMon※の代用)させているだけです。

※PixyMonとは
Pixyに付属するもので、カメラの動画映像とオブジェクトと認識したデータをグラフィックでオーバーレイ表示させるソフトウェア。Pixyの設定する場合にも使う。

○カウントプログラムの内容
  • オブジェクトの中心点のみを扱います
  • 最初の1往復をサンプリングして、移動軸を取得しています。
  • 移動軸は、斜めでも対応します。
    カメラがきちんと水平に設置できていなくてもOKです
  • この移動軸を基準にして、それ以降、送られてくるオブジェクトの位置(角度)を決めています。
    画面上のアニメーションは毎回正確な座標ですが、Pixyは映像からオブジェクトを認識しているので、正確な座標ではなく、多少ぶれます。その補正も必要になります。

○動画
(2018/10/08リンク先を誤っていえたので修正)

○テストの結果
動画をみて頂ければわかると思いますが、基本的な動作確認としては成功しました
かなりPixyの特性に配慮した状況をつくったことが大きいと思います。
  • ストロークを大きくとるために方向を変えました
    プレス機の場合、上下の動きになりますが、テストのアニメ―ションでは、黄色の丸を左右に動かしています。
  • 認識させやすい状況にしてあります。
    灰色の背景に、黄色のオブジェクト
  • オブジェクトは1つだけ

○レビュー
今回のようなケースに使用した場合のPixy2についてレビューしてみたいと思います。
  • 予想以上に追従性が良い
    60フレーム/secは、ダテではなさそうです。
  • 生の座標データはそのままでは使えない
    座標データ(正確にはオブジェクトのブロックデータ)は、こちらの欲しくないオブジェクトまで、データとして送られてきてしまうので、そういうデータを排除するアルゴリズムを考える必要があります。
    また、座標データはぶれる(サイズが位置が変動する)ので、そういう誤差を排除するアルゴリズムを考える必要があります。

今回の「イメージ式角度計」が実用になるかと問われると、やはり無理だと言わざるをえません。静止画にしろ動画にしろ画像というのは、かなりあやふやなものです。
今回のPixyは色でオブジェジェクトを判別しますが、その色というのが、さらに、あやふやなものです。色は部屋の光源(朝日、夕日、照明)はもとより、オブジェジェクトの形状や表面状態にも影響されます。
Pixyのデモ動画では、カラーボールが使われていますが、その理由は良く分かります。球というのは、向きが変わっても色見がかわらないからです。板状だと光源との角度で、反射率が変わってしまうので、色が大きく変化してしまいます。やはり画像からオブジェクトを認識させるのは、デジタル処理だけでは限界があるように思います。AIを使うと確度をかなり上げらえると思いますが、現時点では高値の花です。

現時点としては、イメージ処理の未熟な点を踏まえつつ、活用方法を探るというのが、最善策なように思います。
以上