デジタルツインを実現するCAEの真価

ROS 2を用いたロボットの実機とシミュレーションによるデジタルツイン連動の実践ROSの進化とデジタルツインの可能性(後編)(1/5 ページ)

ロボットプラットフォームとして知られる「ROS」の需要が高まり続けている。本稿では前後編に分けて、ROSの進化とデジタルツインの可能性について考察する。後編では、ROSのデジタルツイン活用の事例として、ROS 2を実装したロボットの実機とシミュレーションの連動について紹介する

» 2024年01月22日 07時00分 公開
[富士ソフトMONOist]

 ロボットプラットフォームとして知られる「ROS」の需要が高まり続けている。本稿では前後編に分けて、ROSの進化とデジタルツインの可能性について考察する。前編では、ROSの最新動向とデジタルツインへの対応状況について紹介した。

 今回の後編では、ROSのデジタルツイン活用の事例として、ROS 2を実装したロボットの実機とシミュレーションの連動について紹介する。

1.はじめに

 前編でも触れた通り、デジタルツインは現実のセンサーや物理的な要素をデジタルデータとして仮想空間に再現する技術である。これは単に実空間を再現するだけでなく、シミュレーションを通じてリアルタイムでフィードバックすることで、現実環境のシステム開発や保守が効率することができる。

 今回紹介するデジタルツイン活用の事例は、富士ソフトで検証を行ったシミュレーション上の自律移動ロボット(Turtlebot3)と実機のロボットの動きを同期させ、シミュレーション側のセンサーによって実機のロボットの停止や進行の動作を行うものである(図1)。

図1 図1 今回紹介するデジタルツイン活用事例のイメージ[クリックで拡大]

 このデジタルツインによって、実機側に障害物などを準備しなくても、シミュレーション側でセンサーによる挙動プログラムの検証が可能になるといったメリットがある。

 実際に、NVIDIAの「Omniverse Isaac Sim(以下、Isaac Sim)」を使ったデジタルツインの環境を構築して、ロボットの実機とシミュレーションの連動を見ていこう。今回使用するIsaac Simは、前回連載「ROSを使ってロスなくロボット開発」でも使用した。当時はROS 1のみの対応だったが、アップデートによって現在は正式にROS 2に対応している。

2.シミュレーターとなるIsaac Simの環境構築

 まずはIsaac Simをインストールして、シミュレーション環境を構築していこう。

2.1 Isaac Simのインストール

 構築に当たり、筆者がIsaac Simを使用したハードウェア環境の構成は下記の通りだ。

ユニット スペック
CPU Core i9-10900X
GPU Quadro RTX8000
RAM 64GB

 では早速Isaac Simをインストールしよう。今回は以下の環境を使用する(図2)。

  • PC:Ubuntu 20.04.5 LTS,
  • ROS 2 Foxy
  • Python 3.8.10
  • Isaac Sim 2022.2.1※1)
  • Nucleus 2022.4.2

※1)執筆時点でのIsaac Simの最新バージョンは2023.1.1だが、今回の環境では動作が重いため2022.2.1を使用した。

図2 図2 Isaac Simの環境

 なお、Isaac Simの動作環境やインストール方法についてはNVIDIAの公式ドキュメントを参照していただきたい。

 さらに、Isaac SimでROS 2通信を行うために、以下のWebサイトを参照してPCへのROS 2インストールおよびIsaac SimのROS2 Bridge機能を使用するための前準備を行っておく。

⇒ROS & ROS 2 Installation(6.2. Enabling the ROS / ROS 2 Bridge Extensionまで)

2.2 シミュレーション側で動作する自律移動ロボットの設定

 シミュレーション側、つまりIsaac Sim上で動作する自律移動ロボットを設定する必要がある。ここでは、Turtlebot3のURDF(Unified Robotics Description Format)をIsaac Sim内にインポートし、ROS 2のトピックによってTurtlebot3を動かすまでを解説する※2)

※2)URDF Import:Turtlebot

2.2.1 Isaac Sim上のTurtlebot3の準備

 まずはインポートするTurtlebot3のURDFを、ROBOTISの公式Gitからダウンロードする(リスト1)。

$ git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
リスト1 Turtlebot3のURDFをダウンロードするコマンド

 Isaac Simを起動するターミナルでROSの環境変数設定を行う(リスト2)。

$ unset LD_LIBRARY_PATH
$ export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml
リスト2 ROSの環境変数設定

 Isaac Simの起動後、以下の手順でURDFをUSDに変換し、ロボットを設置する。

(1)Isaac Utils>Workflows>URDF Importerを選択する(図3)。

図3 図3 URDF Importerを選択する

(2)URDF Importerで図4のように設定し、Isaac Sim上にTurtlebot3を生成する。

図4 図4 Isaac Sim上にTurtlebot3を生成する
  • a)「Fix Base Link」:チェックを外す(ロボットを固定化させない)
  • b)「Joint Drive Type」:「Velocity」に変更する(速度パラメータで動作させる)
  • c)Input File」:先ほどダウンロードしたTurtlebot3のURDFを選択する。選択するファイル名は“turtlebot3/turtlebot3_description/urdf/turtlebot3_burger.urdf”
  • d)「Output Directory」:URDFの変換後のUSDファイルを保存する場所を選択する
  • e)最後に「IMPORT」ボタンを押下する

(3)“Create>Physics>Ground Plane“を選択し、シミュレーション環境の床を生成する(図5)。

図5 図5 シミュレーション環境の床を生成する

 ここまでの操作でIsaac Sim上にTurtlebot3が準備できた。ここでいったん、作成したUSDファイルを保存しよう(図6)。

図6 図6 Isaac Sim上に設定したTurtlebot3[クリックで拡大]
       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.