◯Pixy2送信機
IoTBaseモジュール(ESP32をつかった当社のオリジナルベース基板)に、Pixy2をシールドとして接続したものです。
この送信機は、Pixy2のブロックデータ(オブジェクト座標)をJSON書式で送信するだけのものです。
◯アニメーション表示用画面
いろいろ盛りすぎて、少々わかりにくいですが、下記の機能があります
- アニメーション(黄色の丸が左右に動く)を表示する
- 往復(2秒)で1回とし、アニメーション回数を表示するこれが元の回数となる。
- Pixy2送信機からの座標データを受信する
- 受信した座標から角度(往復位置)を計算し表示する※
- 270度位置を検知したら、1動作として回数を表示する※この回数と先のアニメーション回数と一致すれば、Pixy2が「加工数送信の"目"」にできることになります。
※座標データから動作回数を得る部分はエッジ側(Pixy2送信機)で行うべきですが、諸事情でPC側で処理させています。
◯M5Stack受信機
マルチキャストのテストも兼ねて、オブジェクト位置をグラフィック表示(PixyMon※の代用)させているだけです。
※PixyMonとは
Pixyに付属するもので、カメラの動画映像とオブジェクトと認識したデータをグラフィックでオーバーレイ表示させるソフトウェア。Pixyの設定する場合にも使う。
○カウントプログラムの内容
- オブジェクトの中心点のみを扱います
- 最初の1往復をサンプリングして、移動軸を取得しています。
- 移動軸は、斜めでも対応します。カメラがきちんと水平に設置できていなくてもOKです
- この移動軸を基準にして、それ以降、送られてくるオブジェクトの位置(角度)を決めています。画面上のアニメーションは毎回正確な座標ですが、Pixyは映像からオブジェクトを認識しているので、正確な座標ではなく、多少ぶれます。その補正も必要になります。
○動画
(2018/10/08リンク先を誤っていえたので修正)
○テストの結果
動画をみて頂ければわかると思いますが、基本的な動作確認としては成功しました。
かなりPixyの特性に配慮した状況をつくったことが大きいと思います。
- ストロークを大きくとるために方向を変えましたプレス機の場合、上下の動きになりますが、テストのアニメ―ションでは、黄色の丸を左右に動かしています。
- 認識させやすい状況にしてあります。灰色の背景に、黄色のオブジェクト
- オブジェクトは1つだけ
○レビュー
今回のようなケースに使用した場合のPixy2についてレビューしてみたいと思います。
- 予想以上に追従性が良い60フレーム/secは、ダテではなさそうです。
- 生の座標データはそのままでは使えない座標データ(正確にはオブジェクトのブロックデータ)は、こちらの欲しくないオブジェクトまで、データとして送られてきてしまうので、そういうデータを排除するアルゴリズムを考える必要があります。また、座標データはぶれる(サイズが位置が変動する)ので、そういう誤差を排除するアルゴリズムを考える必要があります。
今回の「イメージ式角度計」が実用になるかと問われると、やはり無理だと言わざるをえません。静止画にしろ動画にしろ画像というのは、かなりあやふやなものです。
今回のPixyは色でオブジェジェクトを判別しますが、その色というのが、さらに、あやふやなものです。色は部屋の光源(朝日、夕日、照明)はもとより、オブジェジェクトの形状や表面状態にも影響されます。
Pixyのデモ動画では、カラーボールが使われていますが、その理由は良く分かります。球というのは、向きが変わっても色見がかわらないからです。板状だと光源との角度で、反射率が変わってしまうので、色が大きく変化してしまいます。やはり画像からオブジェクトを認識させるのは、デジタル処理だけでは限界があるように思います。AIを使うと確度をかなり上げらえると思いますが、現時点では高値の花です。
現時点としては、イメージ処理の未熟な点を踏まえつつ、活用方法を探るというのが、最善策なように思います。
以上