次に、Isaac Simの機能を見てみよう。
ROSでは3Dモデル形式としてURDFが用いられている。形状データには、*.sdfや*.daeを用いる。
これに対しIsaac Simでは、3Dモデル形式としてUSD(Universal Scene Description)を用いる。USDは、CGアニメの草分けである米ピクサー(Pixar)が開発したもので、3Dオブジェクトの記述から3Dモデルのシーン記述までを行うプログラム群だ。「iPhone」や「Macintosh」では、標準の3Dモデル形式として採用されているので、コーディングなしで3D表示を行える。
USDのファイル拡張子*.usdには、バイナリ形式の*.usda、テキスト形式の*.usdc、iOSやmacOS向けの圧縮ファイル形式の*.usdzなどのバリエーションが存在している。ファイル操作についてはusdlibというライブラリが提供され、ファイル閲覧や階層表示、オブジェクト編集などをコマンドラインから行うことができる。
日本ではまだなじみの薄い形式だが、ピクサーがCGアニメの制作を続ける限りはサポートが得られると期待してよいのではないだろうか。
Isaac Simには、URDF importerというロボットモデル読み込みモジュールが用意されている。URDF importerを用いると、アームロボットの関節情報を含んだ形で読み込むことができる。複数メーカーのロボットのURDFを使って読み込みを試してみたところ、いずれも正しく読み込むことができた。
Isaac Simは、3Dモデルのシーン内のオブジェクトの情報をROSトピックとしてpublish/subscribeする「ROS bridge」という機能が備わっている。
ROSには、ロボットの関節に関する動作指示を行う「joint state publisher」について、スライドバーで設定できるGUIベースのツール「joint state publisher gui」がある。このツールからpublishされたjoint_statesトピックをROS側でsubscribeする際にROS bridgeを経由することで、RVizやGazeboと同様にIsaac Simを使ってロボットを操作できるようになる。
Isaac Sim内のROSノードはPythonで記述できる。標準でもjoint_states、カメラ画像、LiDARなどのノードが用意されているので簡単に試してみることができる。
ここまで見てきたように、Isaac SimにはROSと連携するためのさまざまな機能が備えられている。ROSメッセージの種類はまだ限られているが※)、シミュレーターとしての使用感を試してみることはできるだろう。
※)現時点でリリースされているIsaac SimではROS1のみに対応しており、将来的にROS2への対応が予定されている。
実用的なアプリケーションを作成するにはPythonコードの記述が必要だが、Isaac SimのGUI設定でもROS機能の大部分を操作することができるようになっている。興味を持たれた方はNVIDIAのROS Bridgeに関するドキュメントを参照してほしい。
今回は、実機としてのロボットを操作するために用いられるROSと連携できるシミュレーターについて紹介した。次回の後編では、ROSとシミュレーターの組み合わせで何ができるのかについて事例を交えながら紹介する。
富士ソフト AI・ロボット開発 R&Dチーム
富士ソフトでAI・ロボット開発の調査研究を主務として、最新技術の調査・社内外へのセミナー等に対応し、AI・ロボット開発の最新技術の習得および普及のため活動している。
Copyright © ITmedia, Inc. All Rights Reserved.