ROS 2を用いたロボットの実機とシミュレーションによるデジタルツイン連動の実践:ROSの進化とデジタルツインの可能性(後編)(1/5 ページ)
ロボットプラットフォームとして知られる「ROS」の需要が高まり続けている。本稿では前後編に分けて、ROSの進化とデジタルツインの可能性について考察する。後編では、ROSのデジタルツイン活用の事例として、ROS 2を実装したロボットの実機とシミュレーションの連動について紹介する
ロボットプラットフォームとして知られる「ROS」の需要が高まり続けている。本稿では前後編に分けて、ROSの進化とデジタルツインの可能性について考察する。前編では、ROSの最新動向とデジタルツインへの対応状況について紹介した。
今回の後編では、ROSのデジタルツイン活用の事例として、ROS 2を実装したロボットの実機とシミュレーションの連動について紹介する。
1.はじめに
前編でも触れた通り、デジタルツインは現実のセンサーや物理的な要素をデジタルデータとして仮想空間に再現する技術である。これは単に実空間を再現するだけでなく、シミュレーションを通じてリアルタイムでフィードバックすることで、現実環境のシステム開発や保守が効率することができる。
今回紹介するデジタルツイン活用の事例は、富士ソフトで検証を行ったシミュレーション上の自律移動ロボット(Turtlebot3)と実機のロボットの動きを同期させ、シミュレーション側のセンサーによって実機のロボットの停止や進行の動作を行うものである(図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を使用した。
なお、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.2.1 Isaac Sim上のTurtlebot3の準備
まずはインポートするTurtlebot3のURDFを、ROBOTISの公式Gitからダウンロードする(リスト1)。
$ git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
Isaac Simを起動するターミナルでROSの環境変数設定を行う(リスト2)。
$ unset LD_LIBRARY_PATH $ export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml
Isaac Simの起動後、以下の手順でURDFをUSDに変換し、ロボットを設置する。
(1)Isaac Utils>Workflows>URDF Importerを選択する(図3)。
(2)URDF Importerで図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)。
ここまでの操作でIsaac Sim上にTurtlebot3が準備できた。ここでいったん、作成したUSDファイルを保存しよう(図6)。
Copyright © ITmedia, Inc. All Rights Reserved.