Unity を検索

シミュレーションを利用した重機の安全な自動化

2021年12月20日 カテゴリ: Industry | 13 分 で読めます
Real machine on the left, digital twin on the right
Real machine on the left, digital twin on the right
シェア

Is this article helpful for you?

Thank you for your feedback!

Unity のリアルタイム 3D 開発プラットフォームを機械学習に利用することで、エンジニアは複雑な自律型マシンを安全に設計、開発、テストすることができます。Algoryx 社(Unity 公認ソリューションパートナー)の Daniel Lindmark 氏が寄稿してくださった記事をお読みください。

産業分野では自動化が至る所に見られます。工場の床には、反復作業を精密かつ自動で行うロボットアームが入った安全ケージが置かれています。大規模な倉庫では、あらかじめ決められたコースをロボットが走行し、荷物を取ったり運んだりしています。地下の鉱山では、大型のホイールローダーがあらかじめプログラムされた軌道に沿って、人間のオペレーターがいなくても作業を行うことができます。 

しかし、多くの産業ではまだ人間の操作や労働力に頼っています。そのような現場とは通常、非常に非構造的で変化に富んだ環境であり、また逆説的ではありますが、建設、樹木伐採、採掘など、人が働く上で最も危険な環境で人の手に頼らなければならないということでもあります。

 

computer simulated crane picking up dirt
自動化された作業と自動化されていない作業:工場内の単純な組織化された環境と、地下鉱山の複雑な環境との比較

正確な物理演算の重要性

Algoryx 社は、重機システム全体の物理シミュレーションについて、10 年以上の経験を持っています。Algoryx 社の主力製品である AGX Dynamics は、マルチボディおよびマルチドメインダイナミクスの数値シミュレーションのための SDK です。

産業分野における実際の問題の解決を支援することを目的として、Algoryx 社は理想化されたモデルを扱うだけにとどまらず、物理学の基本原理に従うと同時に、現実世界の複雑なモデリングを可能にする数値手法を開発しました。たとえば、ジョイントの隙間やクリアランス、弾塑性はり、ジョイントの制約、破断するジョイント、区分線形モデルなどを扱うことが可能です。

これらはすべて現実に遭遇する一般的な現象であり、適切なレベルでモデル化されていなければ、シミュレーションは現実の問題を解決することができません。AGX Dynamics に搭載されている変分時間ステッパーは、このような理想化されていないモデルにおける衝撃などの不連続な(あるいは平滑でない)物理的事象を、リアルタイムあるいはより高速にシミュレーションすることを可能にします。これは、各時間ステップで条件を幾何学的かつ大域的に解決することで達成され、結果として無限に長いシミュレーション時間にわたって安定した物理演算を行うことができます。大規模な疎な系を機械精度で解くことができる Algoryx 社の高速ダイレクトソルバーと組み合わせることで、質量比の大きい「硬い」系を特別な処理をせずにシミュレーションすることができます。

機械のダイナミクスは、エンジンの種類、ギアボックス、差動装置、油圧、タイヤ、トラック、およびケーブルやワイヤーのような変形可能な物体など、多くの機械部品に依存しており、機械は環境と相互作用できなければなりません。船は水に浮かばなければならないし、ホイールローダーは土の上を走り、また土を積み込めなければなりません。これらの部品はすべて同じフレームワークを使ってモデル化されており、統一的な緊密に対応のとれたシミュレーションを実現しています。このモデルと数値手法の組み合わせは、最新の科学文献に基づいています。

産業分野のパートナーは、専門的なトレーニングシミュレーターやエンジニアリングツールの用途における AGX Dynamics の性能と精度を信頼しています。トレーニングシミュレーターでは、人間のオペレーターが機械を安全かつ効率的に制御する方法を学びます。オペレーターのスキルは目と筋肉の協調性で測られることが多いですが、モデルの忠実度が高いので、そのスキルは現実世界でも活用しやすいものになっています。

一方、エンジニアリングツールでは、環境と相互作用する機械のダイナミクスを詳細に解析する必要があります。たとえば、ジョイントにかかる実際の力や、電動ドライブトレインのエネルギー消費量を測定する場合などです。現実の世界でも同じ動作が観察されるという確信を持って、早期に設計を決定に導くことができるシミュレーションは、顧客にとって非常に大きな価値があります。今回、AGX Dynamics と Unity の統合により、強力な Unity エディターを使って機械や環境のモデルを設定し、AGX Dynamics を使ってシミュレーションすることが可能になりました。

Crane picking up a box
ワイヤー
robotic arm fixing a car door
ケーブルおよびケーブルの損傷
Granular
粒子
Terrain
地形
Drivetrain, tires and tracks
ドライブトレイン、タイヤ、トラック
Hydrodynamics and wind
流体力学と風

シミュレーションを現実世界にうまく移行させる

こうした車両の作業の自動化は、工場で同じピックアンドプレースの動作を繰り返すロボットを自動化することよりもはるかに難しいことです。環境の変化が問題をより複雑にし、タスクのダイナミクスも変化します。高度に熟練したオペレーターは車両と相互作用する物体のダイナミクスを利用することで、経験の浅いオペレーターよりもパフォーマンスを大幅に向上させることができます

何を測定するのか、それをどのように車両の制御に関連付けるのか、あるいは自動化された判断を行うのか、解決するのは難しいことでした。人間のオペレーターは、視覚、聴覚、車両の反力など、さまざまな感覚をもとに、直感的に判断することが多いです。この直感は、オペレーターがトレーニングシミュレーターと実機を使って、同じようでいて異なる状況を経験する何千時間ものトレーニングによって培われます。トレーニングシミュレーターで積んだ経験を実際の機械の操作に反映させるためには、正確な物理演算が必要です。

Physical training simulator, images courtesy of Oryx Simulations
物理的な挙動を再現したトレーニングシミュレーター(画像提供:Oryx Simulations 社)

近年、強化学習は、古典的なソリューションでは解くことのできないこのような高度な環境を解くための手段として期待されています。強化学習を使えば、エンジニアは自動化問題のすべての部分を個別に解決してから、その部分を接続する必要はありません。

解決すべき課題を定義し、それを解決するためにどのような行動や観測が可能かを定義し、エージェントに環境を探索させ、どのように解決すべきかを「理解」させることが可能です。理論的には簡単に聞こえますが、実際には、1 つの課題を解決するために必要な探索やトレーニングの量は大変なものであり、それを実機で行うことは危険でありコストもかかります。

解決策は何でしょうか。代わりにシミュレーションをすることです。シミュレーションで機械にダメージを与えることはありませんし、シミュレーションは実時間よりも速く実行でき、大きな追加コストなしに複数のシミュレーションを並行して行うことができます。しかし、人間のオペレーターと同じように、学習した経験をシミュレーションから実物の機械に役立てるためには、正確な物理演算が必要です。モデルが間違っていれば、エージェントが学習した解決策が現実の世界では通用しないかもしれません。

A sample of elements that constitute reinforcement learning
強化学習を構成する要素の一例

Unity エンジンと Unity Machine Learning Agents(ML-Agents) を使用すると、1 つまたは複数のエージェントが存在する環境を簡単にモデル化できます。Unity SystemGraph を使用して、エージェントが周囲を観察するために使用するさまざまな視覚センサーのシミュレーションを行うことができます。

はじめ、エージェントは課題を解決するために取るべき行動の流れを知りませんが、前回の状態・行動の遷移に依存する報酬をエージェントに与えることで、ML-Agents の強化学習アルゴリズムは、報酬を最大化する方針を見つけ、最終的にエージェントを課題を解決できる状態に導きます。これに AGX Dynamics for Unity の高速で正確な物理演算を組み合わせることで、非常に複雑な問題を賢く自律的に解決する重機のモデリングとトレーニングを、シミュレーションのみで行うことができます。

 

林業の自動化:丸太把持の制御

ウメオ大学の Jennifer Andersson 氏は、Algoryx 社と共同で、強化学習を用いて林業用クレーンのマニピュレーターが丸太を掴む動作を自動化する方法を研究しました。経験豊富な人間のオペレーターは、林業機械の劣駆動クレーンを操作して、樹木との衝突を避けながら整地されていない地面の上を動いて、複数の丸太をうまく掴むことができます。そのためには、直感に反した形で複数のアクチュエーターの調整を行う必要があり、オペレーターにとっては精神的にも肉体的にも疲れる大変な作業となります。 

Unity と ML-Agents で作成した環境で強化学習を行い、AGX Dynamics for Unity でシミュレーションを行った結果、林業用のフォワーダーに搭載されたクレーンの 6 つのジョイントを個別に制御して、1 本の丸太を把持するようにエージェントが学習されました。最適な制御方針では 97% の確率で丸太の把持に成功し、戦略やサイクルタイムも経験豊富な人間の操作に匹敵するものとなりました。たとえばこのエージェントは、把持の際に劣駆動の把持爪の振りを利用することができます。これはサイクルタイムを短縮する技術ですが、習得するのは困難です。 

また、報酬関数にエネルギー最適化の目標を設定して学習したエージェントは、目標を設定せずに学習したエージェントと比較して、消費エネルギーが大幅に減少することが分かりました。より詳しく知りたい方は、国際会議 International Conference on Intelligent Robots and Systems(IROS)2021 で発表された研究論文動画および PDF)をご参照ください。

実世界とバーチャルの林業用丸太の把持を並べて比較した結果(IROS 2021 より)

地下鉱山の岩石ずり積み出し軌道車の自動化

また、Algoryx 社は、世界有数のトンネル掘削・鉱山機械メーカーである Epiroc 社と提携し、同社の地下鉱山用大型ホイールローダー「ST-18」への積み込みを自動化しました。この車両はバケットに 18 トンの発破ずりを積むことができ、世界の多くの地下鉱山でノンストップで稼働しています。地下の坑道を前進させる際には、坑道の端を爆破するので、岩石の破片(ずり)が大量に発生し、次の爆破までに取り除かなければなりません。

シミュレーションでは、エージェントは、奥行き画像を使って積み込み位置を計画することと、その後の多くの積み込みサイクルでバケットを効率的に満たすように車両を制御することの両方を学習しました。エージェントがスロットル、ステアリング、バケットのリフト・チルトを制御することで、プランニング、バケットへの積み込み、衝突や車輪のスリップの回避を実現しました。報酬関数にエネルギー消費のペナルティを含めることで、平均して最大容量の 75% を満たすような学習が行われ、最良の結果を得ることができました。詳細については、Machines 誌に掲載された研究論文(英語)をご覧ください。

AGX Dynamics for Unity は、エンジニアが複雑な自律型マシンを安全に設計、開発、テストすることを可能にします。ここまで、Algoryx 社が機械学習のために Unity プラットフォームを使用した数多くの事例のうち 2 つをご紹介しました。Unity の技術があれば、シミュレーションを出発点に、ここで紹介した以外にも自動化が困難な種類のタスクを解決して、世界をより良くすることができます。

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

トレーニングを経て、課題を解決できるようになった車両

AGX Dynamics for Unity は、エンジニアが複雑な自律型マシンを安全に設計、開発、テストすることを可能にします。ここまで、Algoryx が機械学習のために Unity プラットフォームを使用した数多くの事例のうち 2 つをご紹介しました。Unity の技術があれば、シミュレーションを出発点に、ここで紹介した以外にも自動化が困難な種類のタスクを解決して、世界をより良くすることができます。

詳細を見る

産業分野における皆さんのシナリオのためにシミュレーションを行う可能性に関心がおありですか。こちらのページで、Algoryx がどのようにしてバーチャルプロトタイピング、トレーニングシミュレーター、およびデジタルツインを実現するのか、ご確認ください。

または Algoryx 社に直接、皆さんの機械の自律化に関する計画についてご相談ください。

2021年12月20日 カテゴリ: Industry | 13 分 で読めます

Is this article helpful for you?

Thank you for your feedback!