hakoniwa-ros2sim

仮想環境を活⽤した
ROS 2アプリケーションのシミュレーション⼿法

箱 庭○⾼瀬英希 （東京⼤学）
細合晋太郎（東京⼤学）
福⽥⻯也 （(株)インテック）
⾼⽥光隆 （名古屋⼤学）
久保秋真 （(株)チェンジビジョン）
森崇 （(株)永和システムマネジメント）

アジェンダ
1. 箱庭とは︖コンセプトと⽬指すところ
2. 本研究の内容︓hakoniwa-ros2sim
1. 本研究の⽬的と要件・⽅針
2. 準備︓箱庭エンジン・Unity Robotics Hub
3. ソフトウェアアーキテクチャ
4. アセット間の通信機構
5. 動作例と評価
3. 今後の⽅向性・箱庭WGへのお誘い

2

IoTシステム開発時の課題• IoT開発には様々な分野の技術領域＝技術者の結集が不可⽋• 結合テストや検証が困難である• 問題発⽣時にはその原因と経路の調査が複雑となる• 実証実験コストも⼤きくなる

IT系エンジニア
制御系エンジニア
ET系エンジニア
ICTエンジニア

スマホ
Web系

管制サーバ

クラウドバックエンドサーバ系

⾞載PC

ネットワーク系

⾃動運転制御系

センサ

エレキ系

凡例

CAN
メカ系

ECU制御系

ECU

交通サービス系

3

『箱庭』の狙いとコンセプト• 箱の中に，様々なモノをみんなの好みで配置して，いろいろ試せる！

・仮想環境上(箱庭)でIoT/ロボット・システムを開発する⇒ 各分野の興味(SW)を持ち寄って，机上で全体結合＆実証実験！
ロボット制御系
エンジニア

組込み系
エンジニア

ネットワーク系
エンジニア

ロボットAI系
エンジニア

Web系
エンジニア

4

箱庭のプロトタイプモデル

マイコン制御ロボットシミュレーション
複数ロボットの連携制御シミュレーション

ROS制御ロボットシミュレーション

5本研究の⽬的と要件・⽅針• ⽬的︓箱庭技術を活⽤したROS 2アプリケーションのシミュレーション⼿法の確⽴• 要件と⽅針• 導⼊と活⽤の容易性︓誰でも⼿軽に何度でも利⽤できるようにする• シミュレーション対象の拡張性︓ロボットの構成や外部環境などを⼿軽に変更できる• 実⾏環境としての軽量性︓CPU使⽤率やメモリ使⽤量などの負荷が抑えられる• アプリケーションの機能レベルでの検証 (再現性は重視しない)6

準備︓Hakoniwa Engine

複雑なシステムを仮想環境で動作させるためのコア機能
可視化

シミュレー
ション時間

コンポーネント化
マイコン
シミュレータ

可視化ツール

箱庭エンジン(コア機能)

アセット

アセット

スケジューリング
アセット管理

時間管理
同期・通信

物理シミュレータ

シミュレーション時間

テスト実⾏管理
シナリオ

⾃動化

7

準備︓Unity Robotics HubUnity

Unity robot
control script

ROS 2
ROS 2 application• ROS TCP

Unity-ROS
message

ROS message

Unity-ROS
comm. API

Unity-ROS
endpoint

ROS TCP Connector

ROS TCP Endpoint

Endpoint/Connector:
ROS 2アプリ<->UnityのROS通信を仲介• アセットモデル変換のためのURDF Importerも提供

8ソフトウェアアーキテクチャ
ROS comm.
ros2app.cpp

ROS-TCP-Endpoint

terminal B

terminal A• 実⾏環境︓Docker

開始tb3• 物理演算と可視化︓UnityUnityOS• マルチプラットフォームに対応可能(リファレンスはWindows/WSL2)

hakoniwa-ros2sim container
docker• ビルド＆実⾏向けコンテナイメージを配布• TurtleBot3をリファレンスとする• アセット間通信にはROS TCP Endpointを

利⽤

9

アセット間の通信機構
ROS≪ROS comm. process≫≪C#≫ PDU-ROS
data converter≪C#≫
Unity-ROS message≪Hakoniwa robot asset comm. I/F≫
sensing data to be sent
≪comm. data for Hakoniwa robot asset≫
PDU (Protocol Data Unit)≪Hakoniwa robot asset≫
robot model≪C#≫ Unity-ROS
comm. API≪ROS≫
ROS msg typeformat conversion
of ROS msg

generation ofUnity-ROS
message

Unity≪C#≫Unity-ROS
message

Hakoniwa≪JSON≫ROS msg typegeneration ofPDU-ROS
converted data

≪C#≫PDU-ROS
converted data

≪JSON≫ROS topic info.

generation ofUnity-ROS
callback func.

≪C#≫
Unity-ROS
callback func.

ROS topic info.

箱 庭• PDU (Protocol Data Unit)︓箱庭における通信データの共通フォーマット（データ構造）• (既存のUDP・MMAPに加えて) ROSの通信⽅式のサポート• データ構造の⽣成処理を含めて，Unityに依存／⾮依存部を分離して設計・実装• 箱庭においてはUnityも”アセット”のひとつの位置付け

10

動作例
• 動作環境︓Lenovo ThinkPad X1 Carbon / Windows 1011

定量的評価• Ubuntu 20.04.4 LTS• hakoniwa-ros2sim

Release v1.1.2• Unity Editor 2021.3.5f1

ROS 2 Node(Native)

ROS -TCP-ENDPOINT(Docker)

ROS 2 Node(Docker)

Unity Editor(Native)

180
160140CPU Usage(%)

50403020120
10080
60401020000 1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526272829

0 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334

Time (s)time (s)Free (Native)

ROS -TCP-ENDPOINT(Native)
Unity Editor(Native)

Free (docker)

4.51010

41000
990
980
970
960

3.5
32.5
21.5
1950
940

ROS 2 Node(Native)
ROS -TCP-ENDPOINT(Docker)

51020

Free (MByte)• Intel@HD Graphics 520

ROS -TCP-ENDPOINT(Native)

20060• Core-i7 (6600U) 2.60GHz• Memory 16GB

User Time(Docker)
SystemTime(Docker)

Memory Usage(%)

ネイティブ環境での負荷の⽐較• 評価環境70

CPU(%)• 評価内容︓Docker環境とUser Time(Native)
System Time(Nati ve)

0.5
0
0 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334• 評価項⽬(10回計測の平均値)• vmstat によるCPU使⽤率・メモリ使⽤量• top によるCPU使⽤率・メモリ使⽤量

time (s)0 1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526272829

Time (s)Docker環境ではメモリ使⽤量は⼤きくなる
Unityの負荷が⽀配的

12

今後の⽅向性／ロードマップ
2019ー2021
公開中

2022ー2024
箱庭チュートリアル
組込み系エンジニア
ロボット制御系エンジニア
ロボットAI系エンジニア

箱庭プロトタイプ
モデル開発

箱庭ユーザを広める活動

結合環境構築(箱庭ベース環境)

箱庭チュートリアル開発
広報活動

2025
組込み系エンジニア---------------------------ECU/AUTOSAR開発⼊⾨
シミュレーション環境
ロボット制御系エンジニア---------------------------ロボット制御モデリング/プログラ
ミング⼊⾨シミュレーション環境
ロボットAI系エンジニア---------------------------ロボット制御学習サイクル⾃動化
⼊⾨シミュレーション環境13

機器展⽰ブースのご案内

14

『箱庭』WGへのご案内• でっかく語って，少しずつ育てております︕• 3年⽬でだんだんとカタチになってきました︕• https://toppers.github.io/hakoniwa/

公式Webサイトにて最新の技術情報や発表資料を公開中︕• 箱庭の狙い・趣旨にご賛同いただける⽅のWGへの参画をお待ちしております︕︕• 雰囲気を知りたい → もくもく会へ(次回9/14です)• Slackでの議論，活動内容へのご要望，コア技術やアセットの開発，などに参加したい⽅• 箱庭WGの技術成果を活⽤したい⽅• 製品開発に展開してみたい⽅
よろしくお願いいたします︕︕

15