ROSとフォトリアルなシミュレーター「Isaac Sim」を連携させる:ROSを使ってロスなくロボット開発(後編)(2/4 ページ)
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、「ROSとシミュレーターの組み合わせ事例」をテーマに、ROSとフォトリアルなシミュレーター「Isaac Sim」の連携について具体的な手法を紹介する。
シミュレーターの機能と操作
Isaac SimとROSを連携する前に、Isaac Sim単体の機能を見ておこう。
Isaac Simには「Joint Monkey」というロボットシミュレーションのサンプルが標準で付属している。これはアームロボットの各関節を順番に動かすだけの簡易なものだが、操作が簡単で応用範囲も広いのでIsaac Simを理解するためにはちょうどよいだろう。
ここではJoint Monkeyの基本動作や可動範囲の変更、ロボットモデルの変更方法を説明する。
Joint Monkeyの基本動作
Joint Monkeyは、Stageの“/panda”の階層からモデルを取得し、関節のツリー構造を配列として保持する。そしてロボットの関節の根元から先端までを、各関節の可動範囲を考慮しながら順番に動かすという構成になっている。
では早速Joint Monkeyを動かしてみよう。
- メニューから“Isaac Robotics>Dynamic Control>Joint Monkey”を選択。コンテンツブラウザにJoint Monkeyのパネルが表示される
- Joint Monkeyのパネルで「Load Robot」をクリック。ビューポートに独FRANKA EMIMA社のアームロボット「panda」が表示される
- Joint Monkeyのパネルで「Move Joints」をクリック。アームロボットの関節が順番に動作する
- ツールの「停止」ボタンをクリック。動作が停止する
可動範囲の変更
ロボットの関節の可動範囲を変更してみよう。
Stageには形状モデル、マテリアル、joint(関節)、通信モジュールなどが階層構造で表示される。jointもオブジェクトとして選択できるので、プロパティのDetailsで関節の動作範囲を変更できる仕組みだ。
- Stageの「Search」に“joint”と入力。関節オブジェクトの一覧が表示される
- 検索結果一覧から“/panda/panda_link1/panda_joint2”を選択。アームロボットの関節の可動範囲が表示される。Move Jointでアームロボットを動作させ、関節の振れ幅を確認する
- “/panda/panda_link1/panda_joint2”を選択したまま、プロパティのDetailsで可動範囲の設定をlowerLimit=-0.2、upperLimit=0.2に変更する。アームロボットの関節の可動範囲が変更される
- Joint MonkeyのパネルでMove Jointsをクリック。アームロボットの関節の振れ幅が小さくなっていることを確認する
- Search欄の“joint”を削除
ロボットモデルの変更
Joint_Monkeyではロボットのモデルを変更することができる。
Joint_MonkeyはMove JointをクリックしたときにStageから“panda”という名称のオブジェクトを取得する仕組みになっている。そのため、別のロボットを“panda”という名前に変更すれば動作する。
- コンテンツブラウザのContentで“localhost/Isaac/Robots/UR10/ur10.usd”をダブルクリック。ビューポートに「UR10ロボット」が表示される
- Stageで“ur10(defaultPrim)”をダブルクリックし名称を“panda”に変更。“panda(defaultPrim)”と表示される
- Joint monkeyでMove Jointsをクリック。ロボットの関節が順番に動作することを確認する
ROSでは、“ロボットを取りあえず動かしてみる”ための「urdf_tutorial」というパッケージが提供されていて、任意のアームロボットをスライドバーで操作できる。このようなパッケージはIsaac Simでは提供していないが、この“panda”を書き換える手法を使用すれば、ロボットの3Dモデルの簡単な動作確認が可能だろう。
またIsaac Simでは、「URDF importer」を使うことでURDFのロボットモデルを読み込むことができる。ROSのアセット資産が活用できるのは大きな利点だろう。当社でこのツールを使用して複数メーカーのアームロボットを読み込んでみたところ、3社5種のモデルを動作させることができた。
サンプル
メニューのIsaac Roboticsにはさまざまなサンプルが用意されている。
このサンプルの実ファイルは、Isaac SimをインストールしたサーバPCの“/_build/linux-x86_64/release/exts/”に格納されている。プログラムはPythonで書かれているので、興味があればサンプルを読んでみるとよいだろう。
なお、Joint Monkeyのプログラムは次の場所に保存されている。
/_build/linux-x86_64/release/exts/omni.isaac.dynamic_control/omni/isaac/dynamic_control/scripts/samples/joint_monkey.py
Copyright © ITmedia, Inc. All Rights Reserved.