ROSとシミュレーターの連携が生み出す新たな可能性:ROSを使ってロスなくロボット開発(中編)(5/5 ページ)
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、「ROSの活用シーンとしてのシミュレーターとの連携」をテーマに、ロボット開発におけるシミュレーターの重要性や、ROSと連携可能なシミュレーターなどについて解説する。
Isaac Simの機能
次に、Isaac Simの機能を見てみよう。
3Dモデル
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を使って読み込みを試してみたところ、いずれも正しく読み込むことができた。
ROS Bridge
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を使ってロボットを操作できるようになる。
Kit Remoteの画面とjoint state publisher guiの画面,Kit Remoteの画面(左)を見ながら、joint state publisher gui(右)のスライダーを使ってロボットを操作できる(クリックで拡大)
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.
関連記事
- ≫連載「ROSを使ってロスなくロボット開発」バックナンバー
- ロボット開発プラットフォーム「ROS」はどのように進化してきたのか
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、ROSがオープンソースソフトウェアとしてどのように進化してきたのについて紹介する。 - ロボット開発で注目される「ROS」(Robot Operating System)とは何か
ロボットの話題を聞くことが増えたが、判断と制御、駆動を備えたロボットを作るのはかなり骨が折れる。その負担を軽減するフレームワークが「ROS」(Robot Operating System)だ。 - ロボットに使われる分散処理、なぜ「ROS」が好まれるのか
ロボットの制御には集中管理よりも分散処理の方が都合が良く、さまざまなものが登場しているが、その中で一番有名なのが「ROS(Robot Operating System)」である。ではなぜROSが有名なのか。 - ROSを使う手順、パッケージとシミュレータの活用
ロボット開発に有用とされるROSだが、習得には対応ロボットを入手した方が手っ取り早い。利用開始までの手順と、併用したいツールやデバッガも紹介する。 - Willow Garage出身デザイナーに学ぶ、サービスロボットのインタラクションデザイン(前編)
サービスロボットの機能による差別化が難しくなれば、次に浮上するのが人とロボットがどんな「関係性」を持てるかというインタラクションデザインだ。前編では、人とロボットの関係性「Human-Robot Interaction(HRI)」の重要性と、これまでの研究を振り返る。