More Related Content More from Hideki Takase (20) 「組込み」と「RTPS」の深イイ話2. 2
自己紹介
本務・兼務
−東京大学 情報理工学系研究科 准教授
−JSTさきがけ 兼任研究者
−一般社団法人ROSCon JP 理事
−TOPPERSプロジェクト 運営委員
学会活動
−IPSJ-SIGEMB 運営幹事
−IEICE-RECONF 専門委員
−SWEST ステアリング委員
−ROSCon JP 実行委員
コミュニティ活動
−ROS Japan Users Group
−IoT ALGYAN (あるじゃん) 運営委員
−NervesJP : Elixir for IoT
@takasehideki
3. 3
おしながき・おことわり
1. [宣伝] そもそも "組込み" とは? [PR]
2. Dive into DDS/RTPS
3. embeddedRTPS!! (とは?
• おことわり
−@ken551 に深く感謝いたします
−「組込み」と「ROS」の話しをします
「組込みROS」の話しは今日はしません :D
−発表者の解釈・調査に基づくものであり,間違いがあるかも
しれません.なにかあれば(大々的に)ご意見・ご指摘ください.
8. SWEST23開催概要
• メインテーマ: 密にしよう!組込み開発
• 目的:組込み技術の徹底議論・交流
• 参加対象:組込みシステム分野の技術者・研究者
• 産業界:技術者,マネージャ,教育部門従事者
• 学術界:教員,学生,研究所員
• 実施形態:1泊2日の合宿形式
• オンライン(Zoom, Discord)
• 2021年9月2日(木)〜3日(金)
• 参加費
• 一般:11,000円
• 会員:10,000円
• 学生:2,000円
今年もオンライン開催!
• 組込み業界では夏の恒例イベント
• 毎年夏に1泊2日で開催
• 全国から活発な技術者が参集
(例年150〜200名)
• SWESTの目指す姿:産学連携の場
• 組込みシステムの進むべき指針を徹底的
に議論する場
• SWEST名物:徹夜部屋
• 最新技術の動向調査・情報収集の場
• 若手技術者・学生の教育の場
• 外部技術者・研究者と交流する場
• スキルアップ、問題解決
https://swest.toppers.jp/
とは?
12. 12
DDS (Data Distribution Service)
• OMG (Object Management Group) で策定された通信仕様
−peer-to-peer の通信を実現
−最新版は2015年4月公開の Version 1.4
https://www.omg.org/spec/DDS
• ROS 2での採用による利点
−ROS 2のメンテコード削減
−厳格かつ明確な仕様に依存できる
第三者によるレビューや監査が可能
−高い互換性のある実装が提供される
not “The DDS Wars”, but “DDS Cambrian Explosion” !!
13. 13
Foxyに(公式)対応しているDDS実装
Middleware Library Provider Support ライセンス・備考等
rmw_fastrtps_cpp eProsima
Fast-RTPS
Tier 1 Apache 2.0,Foxyまでのデフォルト,
軽量実装
rmw_connext_cpp RTI Connext Tier 1 商用/研究(機能制限)ライセンス,
No.1ベンダ,PF/Arch.サポートは限定的
rmw_cyclonedds_cpp Eclipse
Cyclone DDS
Tier 1 Eclipse Public License 2.0(Open),
高性能・高信頼な評価結果,
Galacticからデフォルトに
rmw_fastrtps_
dynamic_cpp
eProsima
Fast-RTPS
Tier 2 Apache 2.0,型の実行時の解釈・変換
(type introspection)をサポート
REP-2000 を基に
作成・整理
• 実装機能やライセンス形態に合わせて選択できる
• 異種DDSを選択したノード間で通信できる(rmw層で抽象化)
− Tier 1: Open Robotics公式の手厚いサポート
− Tier 2: 公式だが限定的なサポート
14. 14
RTPS (Real-Time Publish-Subscribe)
• DDSの通信プロトコル
−正式名称は DDS Interoperability Wire Protocol (DDSI-RTPS)
−最新版は2021年3月公開の Version 2.5
https://www.omg.org/spec/DDSI-RTPS/
node <- participant
publisher/subscriber <- writer/reader
• UDP/IP 上に実装される
−OSI参照モデルのtransport層に位置
−パケットの到着保証などの不確実性は
QoS機能によってカバーする
15. 15
QoS Control
• 通信経路の品質を指定する(Pub/Sub間で互換性が必要)
• 指定できるパラメータの例 (下線はデフォルト設定)
−History (履歴) / Depth (深さ): Keep last (任意の値 (10個)を保持) or Keep all
−Reliability (信頼性): Best effort or Reliable (リトライ試行)
−Durability (耐久性): Transient local or Volatile (遅延非許容)
−Deadline (許容更新間隔)
https://docs.ros.org/en/foxy/Concepts/About-Quality-of-Service-Settings.html
Profile History policy Reliability Durability Deadline
Default Keep last 10 Reliable Volatile default
Services Keep last 10 Reliable Volatile default
Sensor data keep last 5 Best effort Volatile default
Parameters keep last 1000 Reliable Volatile default
16. 16
RTPS Message の構造
• Header
−プロトコルのバージョン番号
−プロトコルやベンダのID
−Participant の GUIDs (Globally Unique IDs)
• Submessage
−INFO_TS: 送信元の時刻情報
−INFO_DST: 通信宛先 (Participant IDなど)
−DATA: user / metatraffic data
−HEARTBEAT: reliable 時の送信予定数 など
−ACKNACK: reliable 時の受信数/損失数 など
Figure 8.8 - Structure of RTPS Messages
9.4.5.4 Data Submessage
17. 17
RTPS による通信確立のフロー
• 通信相手の探索/通信経路の確立を自律的に行う
−SPDP / SEDP (Simple Participant / Endpoint Discover Protocol)
1. SPDP による通信相手 Participant の探索
−自身の Participant 情報を他の SPDP Endpoints へ multicast 発信
2. SEDP による Endpoint の探索
−送信元に User Endpoint の情報を unicast で発信
3. User Endpoints と自身の情報をマッチング
4. Reader/Writer としてマッチしたらメッセージを送受信
20. 20
基本情報
• Paper:
A. Kampmann, A. Wüstenberg, B. Alrifaee and S. Kowalewski,
"A Portable Implementation of the Real-Time Publish-Subscribe Protocol for Microcontrollers in
Distributed Robotic Applications," 2019 IEEE Intelligent Transportation Systems Conference
(ITSC), Auckland, New Zealand, 2019, pp. 443-448.
• GitHub: embedded-software-laboratory/embeddedRTPS
Fig. 2. Software Architecture Overview.
21. 21
ざっくり言えば,,,
• 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: PR#4 にて実装(STM32版には未反映)
−Message size: lwIP バッファサイズまで対応可能
22. 22
論よりRUN on STM32 NUCLEO-F767ZI
• Ref:
https://github.com/tlk-emb/embeddedRTPS-STM32/blob/doc_minor/readme.md
• サンプル実行のおおまかな手順
1. git clone --recursive
2. STM32CubeIDE で Open projects from File System
3. ボードのIPアドレスを設定 (rtps/include/rtps/config.h Src/lwip.c)
4. build & flash
5. ホスト用アプリをビルド&実行