Unity を検索

Made with Unity:ロボットのデジタルツインの制作とトレーニング

2021年10月11日 カテゴリ: テクノロジー | 8 分 で読めます
kitchen digital twin with a robot on a dining table
kitchen digital twin with a robot on a dining table
取り上げているトピック
シェア

Made with Unity: AI シリーズでは、Unity の人工知能関連製品を使って、クリエイターが様々な目的をもって制作した Unity プロジェクトを紹介しています。今回は、OpenCV Spatial AI Competition に最近提出された作品の事例をご紹介します。このコンペティションに提出された数多くの印象的な事例を通して、Unity を使ったロボット工学、コンピュータービジョン、強化学習、および拡張現実を目にすることができます。

Unity は世界最高水準のリアルタイム 3D エンジンを搭載しています。これまでに開発したエンジンやツールはゲーム開発者をサポートするものでしたが、AI@Unity グループでは、機械学習、コンピュータービジョン、ロボット工学などの分野のツールを開発し、ゲーム以外のアプリケーション、特に人工知能やリアルタイム 3D 環境に依存するアプリケーションの開発を可能にしています。

Gerard Espona 氏と Kauda チームが OpenCV Spatial AI Competition に提出した論文における複数の事例で Unity の AI ツールとパッケージが多く利用されています。コンピュータービジョンモデルの学習には、Unity の Perception Package を、機械学習モデルの学習には ML-Agents ツールキットを使用し、ロボットアームの sim2real デモンストレーションを行いました。私たちは、Gerard にインタビューを行い、彼がこのプロジェクトを作ったきっかけを聞きました。この記事の続きの部分で、彼がどのようにしてこのプロジェクトを Unity と現実の世界で実現したかをご紹介します。

OpenCV プロジェクト

Made with unity logo with updated cube

Kauda チームの名前の由来

Kauda チームは、Giovanni Lerda 氏と私(Gerard Espona)で構成されています。名前の由来は、Giovanni が制作したフリーでオープンソースの 3D プリント可能なデスクトップサイズの 5 軸ロボットアーム「Kauda 」です。これは誰でも作れる素晴らしいデスクトップ型ロボットアームで、これがあったので今回のプロジェクトではリモートで共同作業を行うことができました。

Robotic arm

どのようにして Unity で Kauda のデジタルツインを実現したのか

私たちは Kauda Studio を開発しました。これは Kauda のデジタルツインを動かす Unity アプリケーションです。インバースキネマティクス(IK)制御、実物の Kauda との USB/Bluetooth 接続、複数の OpenCV OAK-D カメラをサポートできるなど、完全に機能する Kauda の正確なシミュレーションを提供します。

OAK-D とはどのようなカメラで、Unity ではどのように使われたのか

OAK-D カメラは、2 台のステレオ深度カメラと 4K カラーカメラをオンボード処理(Intel MyriadX VPU 搭載)で組み合わせ、さまざまな機能を自動処理します。コンテストの一環として、OAK デバイス用の Unity プラグインを作成しましたが、デジタルツインも Unity で用意したいと考えていました。OAK-D の Unity デジタルツインは、合成データ収集に使用できる正確なシミュレーションを備えたバーチャル 3D カメラを提供しました。また、バーチャルな画像を実機のパイプラインに投入することも可能です。Unity Perception パッケージを使用して、バーチャル OAK-D カメラでカスタムのアイテムをトレーニングするための合成データを収集することができました。

Grey background with 3D models of equipment
OAK-D カメラの Unity モデル

Unity でデジタルツインを持つことの重要性とは

デジタルツインがあったから、Kauda の機能を追加することができました。また、Unity の拡張現実(AR)機能を使って、現実の世界でバーチャルロボットと対話することもできます。これにはたとえば、ロボットの現物がなくても、ロボットのメンテナンスの方法を学ぶといった応用が考えられます。また、ロボットをバーチャル空間で正確に表現することで、コードを使わずに一連のタスクをプログラミングすることができます。

このデジタルツインによって、強化学習(RL)のトレーニングを行うことができました。RL は時間のかかるプロセスであり、非常に単純な例だけにとどまらないシミュレーションが必要となります。Kauda を Unity 内に再現し、ML-Agents ツールキットを使って制御のための RL トレーニングを行いました。

また、Unity でロボットを再現し、カメラを使って人間がロボットエリア内のどこにいるかを計測することで、人間と機械の連携や安全対策のテストを始めました。これは、エラーが発生すると人間に危害を与える可能性のある大型ロボットを想定したものです。シミュレーション環境では、人間を危険にさらすことなく、これらのシナリオを試すことができます。

今回のプロジェクトでは、ML-Agents ツールキットをどのように使ったのか

私たちは、RL がロボット工学のための強力なフレームワークであると信じており、Unity ML-Agents は、私たちのデジタルツインが複雑なタスクを学習して実行することを可能にする素晴らしいツールキットです。コンテストの期間が限られていたため、RL のシンプルな「タッチ」タスクを実装し、得られたモデルを変換して OAK-D デバイス上で推論を実行することを目標としました。ML-Agents を用いて、検出された 3 次元物体に動的に触れるための最適な経路を IK 制御により学習しました。

Unity ML agents training on digital twins

そのために、私たちはまず空間的な Tiny-YOLO(You Only Look Once)を使った 3D 物体検出器を実装しました。RL モデル(PPO; Proximal Policy Optimization)では、検出結果と IK 制御点の位置を入力観測値として使用します。出力アクションとしては、IK 制御点の 3 軸の移動量があります。報酬システムは、各ステップで小さなペナルティを課し、ロボットが物体に触れたときに大きな報酬(1.0)を与えるというものでした。トレーニングを高速化するために、複数のエージェントが同時に学習することを利用して、実空間での Tiny-YOLO と同じ出力を持つバーチャル空間での Tiny-YOLO を開発しました。

モデルが学習されると、OpenVino ツールキットを使って OpenVino IR および Myriad Blob 形式に変換し、OAK-D デバイスにモデルをロードして推論を実行しました。最終的なパイプラインは、RL モデルを持つ空間的な Tiny-YOLO です。私たちの Unity プラグインにより、Unity 内で ML-Agents と OAK-D エージェントを使った推論を並列させて比較することができました。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

ML-Agents を使ったトレーニングと、ホストと OAK-D の推論の比較

合成データは今回のプロジェクトにどのように役立ったか

私たちのパイプラインの最初のステージは、3D 物体検出器です。これは、AI ベースのコンピュータービジョンやロボットのタスクでは、非常に一般的な出発点です。今回のケースでは、事前にトレーニングされた Tiny-YOLO v3 モデルを使い、さらに Unity Perception パッケージを活用することで、カスタムカテゴリをトレーニングすることができました。これにより、3D モデルの大規模な合成データセットの生成と、真の正解となるバウンディングボックスの自動ラベリングをものの数分で行うことができました。通常、収集とラベリングのプロセスは、人間の手作業で行われており、非常に時間がかかります。さまざまな回転、ライティングの状態、テクスチャのバリエーションなど、豊富なランダム化オプションを備えたリッチなデータセットを生成できるようになったことは、大きな前進です。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

Perception パッケージによる合成データの生成と統合

苦労した点はあったか

バーチャル空間と現実空間のアイテムを同期させるためのタイミングが、少しおかしくなることがありました。これは将来的に ROS を使うことで解決できると考えており、今回 Unity が公式に ROS をサポートしたことは喜ばしいことです。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

sim2real を用いた最終版のソリューション

さらに知りたい人のために

Gerard は、今回の開発過程を記録した動画の完全なプレイリストを公開しています。その中には、OpenCV を使ったウェビナーコンテストへの最終提出に使われた動画など、特筆すべき動画もあります。彼はまた、他の人がプロジェクトを始められるように、OAK-D Unity プラグインを Github で公開しています。

私たちのツールを使って、このようなプロジェクトが実現するのを楽しみにしています。Unity を使ったプロジェクトに AI を導入したいと考えている方のために、多くのサンプルやチュートリアルをご用意しています。Unity Perception パッケージでは、Unity で合成データを簡単に収集することができます。Unity Robotics Hub には、ROS の統合やロボットシミュレーションを始めるためのチュートリアルやパッケージが用意されています。また、ML-Agents ツールキットには、強化学習を簡単に始めることができる環境が多数用意されています。

2021年10月11日 カテゴリ: テクノロジー | 8 分 で読めます
取り上げているトピック