ROSとフォトリアルなシミュレーター「Isaac Sim」を連携させる:ROSを使ってロスなくロボット開発(後編)(3/4 ページ)
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、「ROSとシミュレーターの組み合わせ事例」をテーマに、ROSとフォトリアルなシミュレーター「Isaac Sim」の連携について具体的な手法を紹介する。
Isaac SimとROSの連携
それでは、いよいよIsaac SimとROSを連携していこう。
アームロボットには先ほどと同様にpandaを使用し、Isaac Sim上のアームロボットをROSのjoint_state_publisherから操作する方法を紹介する。
Isaac Simには「ROS Bridge」というモジュールがあり、これを起動するとIsaac Sim内の情報をトピックとして送受信できるようになる。つまり、従来のROSとGazeboの連携と同様の構成でROSとIsaac Simの連携を実現できるというわけだ。
なお、今回は以下の環境を使用する。単純化のため、Isaac SimとROSを同一のサーバPC上で動作させることとする。
- サーバPC:Ubuntu18.04.5、Isaac Sim 2020.2.2 Early Access(ROS Bridge)、Nucleus 2019.3A、ROS(ROS melodic)
- クライアント:Windows 10、Omniverse Kit Remote Client2020.2
ROSの設定と実行
先ほどIsaac SimをインストールしたサーバPCにROSをインストールしよう。
ROSの公式サイトの“Desktop-Full install”をインストールすれば必要なパッケージが含まれている。なお、ROS側にもIsaac Simと同じアームロボットのモデルが必要になるため、下記のa)もしくはb)の手順でpandaをインストールする。
a)aptの場合
任意のフォルダで下記コマンドを実行する。
$ sudo apt install ros-melodic-franka-ros
b)gitの場合
“catkin_ws/src”フォルダで下記コマンドを実行する。
$ git clone https://github.com/frankaemika/franka_ros.git
次に、インストールしたRVizを起動する。
「RViz」の実行
“franka_ros/franka_description/robots”フォルダで下記コマンドを実行する。
$ roslaunch urdf_tutorial display.launch model:=panda_arm_hand.urdf.xacro
これでRViz上にアームロボットのpandaが表示される(ロボットが表示されない場合は、RVizの「Display」にある「Fixed frame」をpanda_link0に変更する)。そして、以下の図中にある、「joint_state_publisher_gui」のスライドバーでアームロボットが操作できることを確認する。
Isaac Simの設定
Isaac Sim側でROSの機能を使うためにROS_Bridgeモジュールを起動する。
- ROS_Bridgeモジュールの起動
- ①Isaac Simのメニューから“Window>Extension Manager”を選択。「Extension Manager」が表示される
- ②Extension Managerの検索欄に“ros”と入力。「Found Extensions」に「omni.isaac.ros_bridge」が表示される
- ③omni.isaac.ros_bridgeにチェックを入力。画面上に変化はないが、ROS_Bridgeモジュールが読み込まれる
- ④「Extension Managerを閉じる
ROSとIsaac Simの連動設定
Isaac SimからJointStateトピックをsubscribeするためには、「ROS_JointState」オブジェクトとロボットモデルを連携する作業が必要である。
- コンテンツブラウザのContentで“localhost/Isaac/Samples/Isaac_SDK/Scenario/franka_table.usd”をダブルクリック。ビューポートにアームロボットのpandaが表示される
- メニューから “Window>Isaac>Relationship Editor”を選択。プロパティに「Relationship Editor」が表示される
- メニューから“Create>Isaac>ROS>Joint State”を選択。Stageに「ROS_JointState」オブジェクトが追加される(表示されない場合は、Stageで“JointState”を検索してみよう)
- StageでROS_JointStateを選択
- RelationShip Editorで「articulationPrim」に“/World/franka_alt_fingers”を設定。アームロボットのjoint情報がsubscribe対象に設定される
- プロパティのDetailsで“Other>jointStateSubTopic”を“/joint_command”から“/joint_states”に変更。“/joint_states”というトピックがsubscribeされる
※)ROS側からpublishされているトピック名にそろえる作業である
- ツールの「再生」をクリック。Isaac SimとRViz(ROS)のアームロボットの姿勢が同じになる
以上で、ROSとIsaac Simの連携が完了した。RVizのjoint_state_publisher_guiのスライドバーでRVizとIsaac Simのアームロボットが連動する。
RViz側に卓上のカラーブロックは表示されていないが、Isaac Sim側の衝突設定が有効化されているので、アームをうまく動かせばIsaac Sim上のカラーブロックを移動させることもできるだろう。また、これらのROS設定は“File>Save as”でUSDファイルとして保存できる。
Copyright © ITmedia, Inc. All Rights Reserved.