次にROS 2と通信を行うための設定を行う。
Isaac Sim側でROSの機能を使うためにROS2 Bridgeモジュールを起動する。
(1)Isaac Simのメニューから“Window>Extension Manager”を選択する。「Extension Manager」が表示される(図7)。
(2)Extension Managerの検索欄に“ros”と入力する。ROS関連のExtensionが表示されるので、「ROS BRIDGE」をoffにし、「ROS2 BRIDGE」をonにする(図8)。
(3)「ROS2 BRIDGE」はステージ読み込み処理時に有効になるため、保存したTurtlebot3のUSDファイルを“File>Open”で再度読み込む必要がある。
次にIsaac SimとROS 2を連携していこう。ここでは「Omni Graph」というツールを使用する。
前回連載記事の後編『ROSとフォトリアルなシミュレーター「Isaac Sim」を連携させる』のROS連携では、ROS通信設定は単オブジェクトを呼び出してパラメータを設定した。現在のバージョンでは、ノード同士をつなげるビジュアルスクリプトであるOmni Graphがライブラリの1つの機能として搭載されている。
(1)“Window>Visual Scripting>Action Graph”を選択する(図9)。
(2)Isaac Sim下部に作成される「Action Graph」タブで「New Action Graph」を選択する(図10)。
(3)左側に「Nodes」(ノード一覧)、右側に「Action Graph」(Graph一覧)が表示される。ノード一覧の上にある検索欄からノード名を検索し、左から右側へドラッグ&ドロップすることで設置できる(図11)。
図12のように11個のノードを用意し、それぞれのボタンをドラッグしてつなげる。
各ノードの解説と設定値は以下の通り。
左メニューの「Play」ボタンを押下するとIsaac Simのシミュレーションが開始され、ROS 2トピックを受信する状態となる。
ターミナルでリスト3のように“ros2 topic list”と入力すると、トピック一覧として“/cmd_vel”が表示されることが確認できる。
$ ros2 topic list /cmd_vel /parameter_events /rosout
また、別のターミナルでリスト4のように入力すると、Turtlebot3が動く(図17)。
$ source /opt/ros/foxy/setup.bash $ ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
Turtlebot3を停止させるにはリスト5のコマンドを使用する。
$ ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
Copyright © ITmedia, Inc. All Rights Reserved.