PaPeRo i をScratch3.0で制御する-その5-顔認証

PaPeRo i をScratch3.0で制御する-その4-ひらがな対応の続きです。今回は顔認証ができる様にしました。パペロの基本機能とは異なり、顔認証はそのための契約を行った上でパペロ自体、サブグループ、ユーザー、顔写真などを登録・設定しないと使えない機能ですのでその点はご留意ください。

ライブラリ初期化

 顔認証を行うためにはその前に顔認証ライブラリの初期化を行う必要があります。その様な煩雑な手順は明示的にやらなくても済むようにしたいところでしたが、Scratch3.0拡張機能の初期化処理に顔認証ライブラリ初期化を含めてしまうと古いバージョンのアドオンシナリオで正常に動作しませんし、顔認証の実行直前に顔認証ライブラリ初期化を行うのは、非同期イベント(顔認証ライブラリ初期化終了)をとらえて次の処理を行う必要があり、Scratchの拡張機能として実装するのは難しそうです。
 そこで、今回は素直に顔認証ライブラリ初期化のブロックを追加することにしました。顔認証ライブラリ初期化終了イベントを待って顔認証を行う様にブロックプログラムを作る必要が、厳密にはありますが、顔認証のためにはその前に写真を撮影する必要があり時間がかかるので、単にブロックプログラムの最初に顔認証ライブラリ初期化を置くだけで実質問題は起きないと思われます。
 現状ブロック数が多くなってしまっているため、新規ブロックではなく既存の「音声認識開始」などの選択式ブロックの一つの選択肢として追加しました。

顔認証

 PaPeRo iの顔認証のパラメータとしてはサブグループID、顔認識閾値、画像ファイル名があり、本来であれば新規ブロックを作って追加すべきなのですが、ブロック数が多くなってしまっているため、今回は既存の「音声認識開始」などの選択式ブロックの一つの選択肢として追加し、一つあるパラメータではサブグループIDを指定することとし、顔認証閾値は”authThresholdLow”、ファイル名は撮影ブロックの省略時のファイル名/tmp/picture.jpg固定としました。

イベントとイベント値

 イベントとして「顔認証結果が返されたとき」を、その時のイベント値として「顔認証結果返値」「顔認証結果ユーザー名」「顔認証結果ユーザーID」を追加しました。顔認証が成功すると「顔認証結果返値」が0となり、「顔認証結果ユーザー名」「顔認証結果ユーザーID」に第一候補のユーザー名・ユーザーIDが設定されます。認証のスコアやマッチした顔画像のインデックス、また第一候補以外の結果やユーザー定義文字列1~3を参照する機能は省略しました。

動作確認

 IBM Cloudのアプリを更新しましたのでお試しください。これで加速度センサー以外のほぼすべての基本機能がScratchから使える様になりました。