AI の対戦相手としてビジョンアプリと「じゃんけん」をする

ロボットによる「じゃんけん」 - Part 2/3

シミュレーションされたコンピューター対戦相手としてのビジョンアプリ

ロボットに「じゃんけん」をさせるには、どうするのか?ロボット好きのブロガーである Sebastian Trella 氏は、この疑問に答える決定的な一歩を踏み出しました。カメラについては IDS NXT を使用しました。これはインテリジェントなカメラを含む完全なシステムです。このシステムはトレーニング画像の取り込みやラベリングから、ネットワークのトレーニング、評価用アプリの作成、実際のアプリの実行まで、ワークフロー全体をカバーしています。前回のPart 1 では、AI ベースの画像処理を使用した動作認識を実現し、ニューラルネットワークのトレーニングを実施しています。認識したジェスチャーのその後の処理は、特別に作成されたビジョンアプリによって実行されます。

分析された画像データのさらなる処理

このアプリはプロジェクトの第2段階を形成するもので、一般的に言えば、プレーヤーがシミュレーションされたコンピューター相手と対戦できるようにすることを目的としています。トレーニング済みの AI をベースとし、その結果を活用します。その過程で、AIを対戦相手に据えて、あらかじめ定義された3つの手の動きのうち1つをランダムに 「出力」させ、プレーヤーのそれと比較します。そして、AI は勝敗または引き分けを判定します。ビジョンアプリはコンピューター画面上の相手とのインターフェースとなり、カメラは相手の動作を撮影するインターフェースとなります。

アプリはクラウドベースの AI Vision Studio IDS lighthouse で作成され、ニューラルネットワークでトレーニングされています。ブロックベースエディターは、無料のグラフィカルプログラミング環境 Scratch に似ており、何より Sebastian Trella 氏にとって使いやすいものでした。「LEGO® MINDSTORMS® の Scratch/Blockly やさまざまなロボット製品でビジョンアプリプログラミングに慣れていたので、使い方はすぐに習得できました。プログラミングインターフェースは事実上同一で、必要な考え方はわかっていました。IDS NXTカメラでAIがサポートするビジョンアプリを開発しようが、ロボットのモーションシーケンスを開発しようが、プログラミングはまったく同じように機能するからです。」

カメラ上で直接「微調整」

しかし、Trella 氏は画像上でテキストを表示するのは初めてでした。「これまでプログラミングしてきたロボットは、コンソール経由で出力を提供するものだけでした。ビジョンアプリの出力を直接カメラ画像に統合するのは、私にとって新しいアプローチでした」 彼はビジョンアプリをクラウド内とカメラそのものの両方で編集できる能力に、特に感銘を受けました。さらに最終的には、デバイス上で開発する利便性とカメラハードウェアの性能の高さにも驚きを覚えました。「プログラムコードへの小さな変更をカメラ上で直接テストでき、クラウド内ですべてを再コンパイルする必要はありません。プログラミング環境は非常にスムーズに機能し、安定しています」 それでも、組み込みデバイス上でのエラーのデバッグには、改善の余地があると見ています。具体的には、カメラで調整を行った後、組み込みデバイスとクラウドシステムを同期する場合です。

Trella 氏は、カメラの Web サイトインターフェース上に、彼の言うところの「すばらしい」利点を発見しました。それは Swagger UI で、サンプルを含めた REST 統合インターフェースの文書化とテストのためのオープンソースツールのコレクションです。これによって彼の作業は簡易化されました。この点に関して、彼は IDS NXT システムの今後の開発に対し、いくつかの提案をしています。「サードパーティのロボットシステムとの通信のために切り替え可能なモジュールを用意すると、ロボットアームがビジョンアプリプログラミング環境から直接「共同プログラム」できるので、良いと思います。これにより、ロボットとカメラとの配線が不要になり、開発がシンプルになります。それ以外にも、プログラミング環境から直接画像ファイルをインポートする機能を望みます。これまで、インポートできるのは FTP 経由のみでした。例えば私のアプリの場合は、勝者にトロフィーの画像を表示します」

次のステップは?

「ビジョンアプリの構築は面白く、このような興味深いハードウェアで『遊ぶ』すばらしい機会をいただいたことに感謝しています」と Sebastian Trella 氏は言います。次のステップは、ビジョンアプリとロボットアームの通信のためのオプションを検討し、試してみることです。バーチャルコンピューター対戦では、カメラ画像として画面に動作を表示するだけではなく、ロボットアームで実際に動かしてみせます。このステップは、完成された「じゃんけん」への最終ステップでもあります。ロボットに生命が吹き込まれます。

つづく...

インストールに関する情報はマニュアルをご覧ください (登録済みユーザーのみ)。