ROSとフォトリアルなシミュレーター「Isaac Sim」を連携させるROSを使ってロスなくロボット開発(後編)(3/4 ページ)

» 2021年03月24日 10時00分 公開
[富士ソフトMONOist]

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
Isaac SimとROSの連携を行うシステムの構成 Isaac SimとROSの連携を行うシステムの構成(クリックで拡大)

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」のスライドバーでアームロボットが操作できることを確認する。

RViz上のpandaとjoint_state_publisher_gui RViz上のpandaと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を閉じる
Extension Managerの画面構成 Extension Managerの画面構成(クリックで拡大)

ROSとIsaac Simの連動設定

 Isaac SimからJointStateトピックをsubscribeするためには、「ROS_JointState」オブジェクトとロボットモデルを連携する作業が必要である。

  • コンテンツブラウザのContentで“localhost/Isaac/Samples/Isaac_SDK/Scenario/franka_table.usd”をダブルクリック。ビューポートにアームロボットのpandaが表示される
ビューポートにアームロボットのpandaが表示される ビューポートにアームロボットのpandaが表示される(クリックで拡大)
ROS_JointStateを選択し、アームロボットのパスを指定 ROS_JointStateを選択し、アームロボットのパスを指定(クリックで拡大)
  • メニューから “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)のアームロボットの姿勢が同じになる
Isaac SimとRVizのアームロボットが連動 Isaac SimとRVizのアームロボットが連動(クリックで拡大)

 以上で、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.