ニュース

【GTC Japan 2018】NVIDIA 矢戸氏、ロボティクス用のフレームワーク「ISAAC」(アイザック)解説

「Jetson AGX Xavier」でロボット開発を加速

2018年9月13日~14日 開催

ISAACで使う、ロボット開発に使われる組み込み向け「Jetson AGX Xavier」開発キット。中央のSoCが「Xavier(エグゼビア)」

 NVIDIAは9月13日~14日に開催した技術カンファレンス「GTC Japan 2018」において、ロボティクス用のフレームワークである「ISAAC(アイザック)」について詳しく解説する「ISAAC Platform Deep Dive」と題する講演を行なった。

 ロボットは自律動作マシンと呼ばれ、産業用や物流向け、ドローンなど多彩な形態がある。また、さまざまなタスクをこなすためにそれぞれ形状が異なる。この形態の多様さが開発者の悩みとなっている。

NVIDIA テクニカルプロダクト マーケティングマネージャー 矢戸知得氏

 NVIDIAからは組み込み用開発キットの「Jetson」が提供されていて、これが利用されるケースが多い。1つのフレームワークだけで解決することは難しく、この解決に使われるのがNVIDIAがISAACと呼ぶプラットフォームとなる。ISAACは開発(ISAAC SDK)、学習、シミュレーション(ISAAC SIM)、デプロイのツールで構成されている。学習やシミュレーションはクラウドでも実行でき、デプロイはデスクトップで作成したものをクロスコンパイルし、そのままJetson Xavierに展開できる。ここで起きるCUDAのバージョン問題などをNVIDIA側で検証し解決している。

 このSDKとシミュレートを使う例として、リアルタイムでレンダリングされて動きまわるシミュレーション画像に対し、ロボットのカメラ視点で「Sight」と呼ぶビジュアライザーにISAAC SDKを利用し、さまざまな情報画面を同時表示する様子をデモンストレーションで披露した。

さまざまな形態をした自律動作マシン。これが開発の問題点でもある
ISAACの構成
実際のデモ。右画面がUnrealエンジンのシミュレーター

 ISAACはツールボックスと考えるとよいとのこと。さまざまな要素の集合。土台にCUDA、TensorRT、Jetpack、Ubuntuといったプラットフォーム要素があり、これに対してISAACフレームワークでMessege Passing、Configration、Task Scheduling、Distribute Computingなどをサポートする。その上でスタックとして、ビジュアライザーの「Sight」、ナビゲーション(現在は屋内のみ。今後屋外も対応予定)と、この後で解説する「GEMS」で動作などを作ることのできるパーセプション、機器との接続に必須のドライバーとAPIがある。これを自由に組み合わせて自分のアプリを作るという構成になる。

ISAACはツールボックスと考えるとよいと矢戸氏

 この主要ツール以外として、シミュレーターのISAAC SIMには、2次元ベースの「Flatsim」、流体を含む物理シミュレーションができる「Flex/PhysX」が含まれる。また、外部のフレームワークもサポートし、ディープラーニングで使われる「Tensorflow」やその表現のための「ONIX」、ロボット開発で使われる「ROS」とブリッジを介して対応可能となっている。

 オープンソース中心のロボット開発の現場では、フレームワークのメンテナンスをはじめさまざまな問題に直面しがち。ISAACではNVIDIAが動作検証し、品質を確保しているので問題がおきにくく解決が早い。また、シミュレーターを持っていることも重要と考えているとのこと。開発サイクルを加速することが可能となり、さまざまなデバッグ手段も用意されている。

 実際にフードデリバリーロボットの「Carter(カーター)」をエンジニアエクササイズとして作り、ISAACを使いながら機能や問題点を検証、確認作業をしている。検証はNVIDIA本社のエンデバー内で行なわれていたが、この規模のスペースで問題が起きなければ他への応用もできるだろう。

GTC Japan 2018会場内で展示されたフードデリバリーロボット「Carter(カーター)」
Carterの背面。セグウェイをベースにしている。中段にトレイを置く台がある
Jetson AGX Xavier開発者キットが組み込まれている
Jetson AGX Xavierの基板

 ここからは、パーセプションのさまざまなライブラリを集めた「GEMS(宝石の意味。輝く貴重な宝石が集まるイメージなのだろう)」についての解説に移った。このGEMSのライブラリではGPUを有効に使って多くの恩恵を受けている。例えば、GPUで加速されたLiDARによる位置測定や、GPSによるマッピングの初期位置の測定では、CPUのみでは1分以上かかったところが、GPUの利用で3秒程度に短縮できるといったようなことがある。

 ほかにも、視差で奥行き判定する従来方法とは異なるディープラーニングを使ったステレオ深度推定、ビジュアルオドメトリー、人間の骨格情報を写真から取り出す機能、ジェスチャーの認識、顔検出と認識、唇の動きの検知、視線の追従、自動音声認識があり、オブジェクトディテクションのライブラリは自前のタスクをこなしたデータを読み込んで障害物検知などに利用できる。

用意される「GEMS」の数々

 ビジュアライザーであるSightのデモでは、全体マップと共に、LiDARからの情報など複数ビジュアルのウィンドウを配置して、それぞれが同期して動く様子がデモで紹介された。これまではログから後ほどビジュアルデータを作成して確認するという手順が必要だったが、すべてのウィンドウがリアルタイムで同期して反映されている。

 ロボット開発では多次元性要素を持つ変数を扱うが、人が理解するにはビジュアル化する必要がある。問題に気付くには、リアルタイムに情報を把握することが重要と考えているとのこと。

 すべてWebブラウザ上で動作する。JavaScriptで動作し、WebGLを使って汎用性を高めていて、各種形状のロボットに自分でカスタムしやすくしているとのこと。Xavier上でWebサーバーが起動し、そこにアクセスすることで確認する。

ビジュアライザー「Sight」のデモ。複数のビジュアル情報がリアルタイムに同期する
Sightのウィンドウペインは自由に情報を配置できる

 開発サイクルをいかに速くするかの解決法は、シミュレーターの活用を考えているとのこと。ディープラーニングでは、さらにシミュレーターの活用が重要となる。この理念のもとでISAACは作られている。

 そのいくつかについてデモで紹介された。デモのリアルなシミュレーション画面は、NVIDIA TITAN Xpを使っているとのこと。1世代前のPascalベースのGPUでも十分シミュレートできている。もちろん、同時描画する画面が増えれば負荷は高くなる。

写真のようにリアルなシミュレーション画面。Unreal Engine 4を使ってリアルタイムで描画されている
出現する突発的な障害物に対応する動きのデモ
2Dマップによる表示
コンテンツ生成は作業のボトルネックとなる。ISAAC内でリアルなアセットが各種提供されている
さまざまな条件でアセットを配備。ピッキング用の箱を移動した場面
Flexを使った物理シミュレーション例
シミュレーターをたくさん作って強化学習ができる。ハイパーリアルタイムシミュレーション
ハイパーリアルタイムのシミュレーションは、インスタンスを使ったアルゴリズムの確認にも活用できる