ROSConJP 2022
2022/10/19

Now and Next about
⾼瀬 英希，細合 晋太郎，檜原 陽⼀郎，⽥中 晴亮 (東京⼤学)，森⽥ 正⼆ (イーソル株式会社)
本研究の⼀部は，JST CREST JPMJCR21D2 の⽀援ならびに国⽴研究開発法⼈情報通信研究機構の委託研究（04001）により得られたものである．

Affiliation

Hobby@takasehideki
組込み／IoTコンピューティング基盤を⽀える
プラットフォーム技術と設計⽅法論❤

④

ローカル環境Fog AI
集約

Mission

設計技術

良いモノ を 誰でも楽につくることができる世界へ

映像
Weight♪
♪

音 ♪
温度湿度
圧力
振動

フィード
バック

Edge
AI

モビリティ

Edge
AI

勾配計算・更新

入力

出力
推論

Edge
AI

ロボット

Edge
AI

②②②

Fog AI

分配制御

Loss

センシング

最適化

クラウド

Cloud

Edge AI

あらゆるモノ・コトとヒトを繋げる
設計基盤の確⽴

評価アプリ

Edge
AIローカル環境BEAM

❤

Edge
AI

ローカル環境ウェアラブルデバイス・ヘルスケア

BEAM

デプロイされるコード

透過型分散プラットフォーム

評価アプリ

箱 庭

④②

③

評価アプリ

④②

③

エッジ

Edge
AI

④

BEAM

評価アプリ

MEC

②

Fog AI
Edge
AI

❤

BEAM

②

③

最適配分アルゴリズム①❤
システム開発者

Recent R&D

meets EMB for IoT!!
http://www.ros.org/about-ros/

購読（Subscribe）

出版（Publish）

node1

node2

msg

msg

Topic1

Topic2

msg

node3

•

­ 応答性︓遅延時間­ リアルタイム性︓遅延変動

node4
msg

node5

通信性能の向上•

消費電⼒の削減• ROSの本質は通信にあり­ ROSノード (機能単位) の疎な結合⽅式­ ROS 2ではDDS/RTPSに則った通信⽅式­ 基本はTopicを介した出版購読型

mROS-base/mros2

ROS2/DDS通信技術のIoT分野への展開にも期待3

Ｘ

どうやって “組み込む” か︖

micro-ROS
on EMB board

native ROS 2
on SBC

mROS-base/mros2

豊富なカーネル／ボード対応
rclc に完全準拠の機能群
XRCE-DDS＝agent必須

mROS 2
on EMB board

rclcppにサブ準拠API
通信性能・メモリ効率良し
topic通信のみ，QoSなど
未対応機能多し,,,4

mROS 2??

このとき
v0.1.4,,,https://vimeo.com/638040779/8a10335711

mROS 2 application
mROS 2 API
mROS 2 comm. lib.
DDS (embeddedRTPS)ROSConʼ22もお楽しみに,,,UDP stack (lwIP)
CMSIS OS API
RTOS(TOPPERS/ASP3)

HAL drivers
https://www.stmcu.jp/design/thirdparty/os/91883/

mROS-base/mros2(STM32Cube)

Embedded devices(STM32 MCU)

5

ソフトウェア構成 @v0.1.4
mROS 2 application

通信の⾃律性の確保

mROS 2 API

RTPSの仕様に則った通信の実現

mROS 2 comm. lib.
DDS (embeddedRTPS)
UDP stack (lwIP)

軽量かつ効率的な通信処理の実現

CMSIS OS API
RTOS(TOPPERS/ASP3)

HAL drivers(STM32Cube)

Embedded devices

C++実装 / CPU 数百MHz / Mem 数MB程度

⾼品質なリアルタイムOSの採⽤

通信性能・メモリ軽量性の向上にも寄与

基本型に対応した出版購読APIの提供
開発⽣産性＝rclcppとの互換性を考慮(STM32 MCU)

mROS-base/mros26補⾜︓embeddedRTPS [A. Kampmann+ ITSC'2019]• C++実装による組込み向けのRTPSスタック­UDP/IP には lwIP (Raw Mode) を採⽤­シリアライズに eProsima Micro-CDR を利⽤• 主な機能と利点­Discovery: SPDP と SEDP の機能を提供­Interoperability: FastDDS 2.3.1 と疎通可能­QoS Policies: reliable と best-effort に対応­UDP Multicast: multicast locators に対応ü mros2 v0.1.4 では未追従­Message size: lwIP バッファサイズまで対応可能

mROS-base/mros27

v0.2.0 @ 29 Oct 2021
• mros2-mbed︓Mbed Platform に対応︕ 🎉• たった5分で試せる︕(しらんけど:D

https://rosjp.connpass.com/event/222141/­ Dockerでのビルド環境(ghcr.io/armmbed/mbed-os-env)­ Keil Studio Clouda.k.a Mbed Online Compiler

https://os.mbed.com/users/smoritaemb/code/
mbed-os-example-mros2/

mROS-base/mros2

https://www.youtube.com/watch?v=YeQgeTnw5Tc&t=2393s

8

v0.3.0 @ 20 Feb 2022
• 独⾃定義の MsgTypes によるトピック通信に対応︕ 🎉提案⼿法②: 設計⽅針
ポイント①: 共通処理と固有処理の分離
mROS 2における通信処理 メッセージ型に依存しない処理 (=共通処理)
メッセージ型固有の処理 (=固有処理)
共通処理が固有処理を呼び出す形式に.
ポイント②: メッセージ型ヘッダファイルの⽣成
固有処理を含むヘッダファイルをメッセージ型ごとに⽣成.
共通処理

提案⼿法③: メッセージ出版フロー①: シリアライズ & バッファに格納②: 出版するメッセージサイズを計算③: バッファの所定領域にあるデータを送信

固有処理

pub.cpp#include “health.hpp”
・・・
copyToBuf関数呼び出し
・・・

呼び出し

health.hpp

Health.msg

copyToBuf関数
copyFromBuf関数
messageSize関数

string nameuint16 heightfloat32 weight

⽣成

ETNET2022-EMB(2022/3/10): 新規実装部分
hibara17163.5
バッファ

共通処理

name=hibara
height=171
weight=63.5

シリアライズ関数&
バッファ格納関数呼出

メッセサイズ
計算関数呼出出版
タスクへ固有処理10

メッセサイズ計算

シリアライズ&
バッファ格納ETNET2022-EMB(2022/3/10)

11

檜原 陽⼀郎, 中村 宏, ⾼瀬 英希: ROS 2ノード軽量実⾏環境mROS 2における任意型メッセージの通信処理⽅式,
情報処理学会研究報告，Vol. 2022-EMB-59, No. 38, 2022.

mROS-base/mros29

論よりRUN!!

https://twitter.com/takasehideki/status/1505066116921524228"ron yori run"
The RUN is mightier than the word

$ ros2 run mturtlesim turtlesim_node$ picocom /dev/ttyACM0

publturtlesim

mROS-base/mros2

ishTw

ist

EMB board + analog joystick10本研究の⽬的

閑話休題︓性能どうなのか︖

それぞれの優位性を議論

通信性能の評価結果(1)•UInt16- 定量的︓通信性能，メモリサイズ- 定性的︓主に開発者観点から

ü 100回測定

ü 単位は [ms]Twist•

urosserial

urosudp

urosrtps

mros2asp3

mros2mbed

avg

19.530

2.304

5.508

0.593

0.703

max

25.510 11.250

9.860

0.850

0.880

0.560

min

15.5902.050

2.610

0.520

0.640

0.081

std.p

3.666

0.904

1.551

0.065

0.042

urosserial

urosudp

urosrtps

mros2asp3

mros2mbed

avg

11.710

2.109

5.182

0.570

0.646

max

17.3704.240 11.190

0.810

0.940

min

7.590

1.900

1.940

0.490

std.p

3.094

0.244

2.684

0.067

ü mros2- のほうが明らかに優れているØ最⼤値(max) = 応答性
Ø標準偏差(std.p) = リアルタイム性

ü uros-rtps では出版の連続回数に応じて通信時間が増加していく傾向がある

mROS-base/mros2

7

議論︓Pros and Consurosserial

urosudp

urosrtps

mros2-asp3

mros2-mbedsummary (weakness of mros2)

latency

×

△×

◎

◯

mros2-同⼠ではasp3がやや良い

real-time×

△×

◎

◯

-mbedはまれに外れ値が観測されることがある

stability

△

△×

△

◯

uXRCEはagentが必須 -rtpsは接続難あり-asp3は初回通信時に⽋損することあり

mem. size

△

△×

◯

×

特に-asp3は静的OSの⽅針に完全に基づく

variety◎◯◯×△

uros-は多様なチップ・ボードに対応-asp3は1種のみ -mbedは選択肢多め

productivity

△

△△

◯

◎

mros2-ではC++でノード実装可能
コンパイル環境の準備も容易

perfection

◎

◎◯

△

△

uros-はROS 2機能に完全準拠
mros2-はトピック通信のみ

community

◎

◎

△×

×

uros-は世界規模︕ mros2-はこれから,,,

mROS-base/mros2

https://speakerdeck.com/takasehideki/zu-ip-mixiang-keros-2falsedoshi-xing-huan-jing-falseding-liang-de-ping-jia-robomech2022zai-yan-a

mROS-base/mros2

10

11

FAQ︓どうやったら始められるの︖
ALGYAN(あるじゃん)主催︕mROS 2 ハンズオン︕
https://algyan.connpass.com/event/259028/presentation/

12

v0.4.0 @ 18 Oct 2022
• multicast support (locators) 込みの embeddedRTPS に追従︕ 🎉• mros2-posix︓POSIX layer を備えるカーネルにも対応︕ 🎉­ Portable Operating System Interface­ 主にUNIX系OS（今回の実装対象はUbuntu）RTOSもいくつか準拠するものあり
mROS 2 application

KernelInformation
and Control

mROS 2 API
mROS 2 comm. lib.
RTPS (embeddedRTPS)
UDP stack (lwIP)
CMSIS wrapper
Kernel (ASP3, Mbed, POSIX)
HAL library

Generic Wait
Functions

時間管理機能Semaphores

Mutexes

Message
QueueThreadManagement

メッセージキュー
管理機能

スレッド同期処理
キュー管理
機能

Clocks andTimers[凡例]

mROS-base/mros2
Embedded devices

CMSIS
OS機能

利⽤する
コア機能

利⽤する
POSIX OS機能

Pthread(Mutex/Cond)

Memory(malloc/free)

Pthread(Threads)13

論よりRUN!! 其の弐
mros2-mbed
NUCLEO_F767ZI/to_hu/to_(w/o ROS 2)

mb/to_mros2

elb_o/t/tle

mros2-mbedARCH_MAX

mros2

muh

mros2-posix
RPi4/to_humble

m_o2sromROS-base/mros2/to_humble/to_mros2

mros2-mbed
GR_MANGO

14

論よりRUN!! 其の参 powered by
⼆輪倒⽴振⼦robot
bodynode

pid/to_ ata

UdIMtrolcon/to_ M value

PW

calc.
PWM
nodemROS-base/mros215

Check it out! & Whatʼs next??

https://github.com/mROS-base/mros2

Please give us the Star!
& your contribution!!
• support other boards & kernels• implement new targets with POSIX-compliant RTOS
• support QoS control, Service, Action, ...
• design a dedicated board for real robots??
mROS-base/mros2