chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

GravityのHUSKYLENS PROを買ってみた

背景:子供向けプログラミング教室の教材を開発する必要あり
方針:来年度はAIプログラミングだ(by教室長)ということで、教材にAIを取り込む
取り組み:分かりやすくて使いやすそうなAIカメラ(HUSKYLENS)を購入。Afrel社からもLEGO+HUSKYLENSのキットが販売されているので、これが一番こなれているデバイスと判断

進捗:
HUSKYLENS PROを購入(価格は1.3万円)

ざっとHUSKYLENSを評価してみると、教材として使う事を考えて、安定して動作するのは色認識やTAG認識では?と理解。
認識できるTAGはAprilTagという仕様らしく、さらに、AprilTagにもいろいろ種類があるようで、学習できるのはTAG36H11というやつか?

apriltag-imgs/tag36h11 at master · AprilRobotics/apriltag-imgs · GitHub

TAGの認識性能を確認した結果、AprilTagを8.5cm x 8.5cmの大きさに印刷した場合、1m50cm離れた距離から認識可能、それ以上離れると安定して認識できない(普通の明るさの部屋、デバイスはHUSKYLENS PRO)。コートの大きさが2m四方だったら、TAGは15cmx15cmぐらいで印刷が必要ではないか。LEGOカーがゴールを探す場合、ゴールの上に設置されたTAGを探しながらその場で360回転して自分のゴールのTAGが出てきたらそっちに向かって走ると。一定距離まで近づくと、距離センサか、TAGサイズ(取れるのであれば)より、ゴールへの到着を判断して停止する。TAGは専用で設計されているだけあって、非常に安定して動作する。課題としてはカメラがTAGを認識することについて子供たちが面白いと思うかどうか。

次に色認識(Color Recognition)を少し試す。あたりまえだけど背景と対象物のコントラストが重要と思う。背景はモノトーンで、認識する対象は彩度が強い色が正確に認識できるようだ。だから、ボールは黄色とか赤が望ましい。

今回は色認識をゴルフボールで試したけど、ゴルフボールだとLEGOカーにとっては重すぎて、扱うボールとしてはピンポン玉か、幼児用の柔らかいスポンジ製ボールが良いと思う*1

今後の取り組みとしては、LEGO SPIKEとHUSKYLENSを接続して、TAGを見つけて走って近づくLEGOカー等を試作してみる。
あと作りたいのは、コース内であることを認識してそこから出ないアルゴリズム。ボール運びやサッカーゲーム等のアプリを組んだ場合、ゴールポスト?はTAGで見つけて、ボールは色認識で見つけるとして、決められたコース内だけを走行するようにしたい(普通のスポーツのような競技形式にしたいので)。
その場合は、ラインの判断を色判断等でやることになるのだろうか。HUSKYLENSのライントレースは縦方向の線に反応するようになっており、横方向の線の認識には使えない印象。コートの境界を色判断で行うのがいいのかどうか。TAGで埋め尽くすというもあるけど、それは大げさだし、なんか気持ち悪い。境界を色判断で実装するのが適切か実際に動かして試さないと分からない。

総じて、、AIカメラは本体にすべて機能が収められており調整項目はほとんどないレベルに仕上がっている。開発側は苦労が多いだろうけど、使う方は気楽で楽しい。どんなアプリに仕上げるか、デバイスを使う側の発想力が求められる。基本的にはAIカメラとLEGOを組み合わせることで人間に似た動作、人間を超える動作を実現したいと思う。


■参考URL

参考にさせていただいた記事
Huskylensを使った物体認識処理 | TomoSoft
Afrel社のLEGO+HUSKYLENSキット
SPIKEプライム×HuskyLensキット|ロボコン対応商品 (WRO , ETロボコン),WRO,セット|レゴ エデュケーション正規代理店 アフレルOnlineShop

非常に的確にまとめられた動画
HuskyLens - AI Machine Vision Sensor | DroneBot Workshop

GitHub - HuskyLens/HUSKYLENSPython
HuskyLens – An AI Camera / Vision Sensor for FTC Robot / AprilTag - DFRobot

2019年の自分の書き込み記事、この時K210が搭載されたボードを買って少し動かした。K210が出てから5年経っているのか。あまりアプリ例が出ていないような印象が・・
K210が搭載された評価ボード、Sipeed のMaixduinoを買った - chakokuのブログ(rev4)


今回のHUSKYLENSの記事をきっかけに知ったエンジニアの方
About Bill | DroneBot Workshop

HUSKYLENSArduino/HUSKYLENS Protocol.md at master · HuskyLens/HUSKYLENSArduino · GitHub


■追記
AIカメラを使うからAIプログラミングと言えるのか?AIをプログラムするのか、AIを活用したアプリケーションを作るのか。AIをプログラムするって数学が分かっていないと無理なのではないか。AIカメラを使っているからAIプログラムと言っていいのか。画像認識はもうAIではないのか?? 悩みは続く。
大事なことは。。演習を通して子供たちがワクワクすること。AIにおける開発の基本は、データの準備→学習→試作→テスト→課題抽出→再学習の繰り返しと思っており、子供たちがこれを学べればいいのではないか。AIって単に便利な道具と過信しないためにも。

■追記
CopilitにHUSKYLENSに停止線をどうやって学習させたらよいかを相談したら、Object Trackingの機能を使って停止線を学習させよと言ってきた。可能なんだろうか。単純な直線とせず、認識のしやすさを考えて、破線とか、連続する●や■にした方がいいのかも。そう考えると、マシンビジョン特有の作り込み方がありそうに思える。(気づき:object trackingは対象が一つだけなので、連続する●は多分うまく動かない。object classification?だっけかで●の形状を学習する方がいいのかも)
課題:HUSKYLENSの複数の機能は同時には使えず、一つだけらしい。だから、目的に応じて機能を切りなえながら使う必要あり

*1:本当のところは、LEGOカーによる自動ゴルフゲームを作ってみたい。LEGOカーがボール、コース、ピンを認識して、自分でゴルフボールを打つやつ。競技者はプログラミングするだけで、あとはLEGOカーがコース内で勝手にPLAYする。打数の一番少ない人が勝ち。これは子供よりも見学に来たオヤジ世代に受けるかも