version 1.3 TIER IV ACADEMY 自動運転システム構築塾 Day2 ROS 演習 ROS 演習 3:ROS 2.0 の最新動向について
この演習について ROS 演習 1:catkin ビルドシステム ROS 演習 2: ノードの作成とトピックの配信 購読 ü ROS 演習 3:ROS2.0 の最新動向について ROS 演習 4:TF の作成 ROS 演習 5:RViz での表 示 l ROS 演習 1 ~ 5 では ROS の基本的な要素技術を学習 l ROS 演習 3:ROS2.0 の最新動向について ROS ü ROS の概要 ü ROS の機能 ツール群の紹介 ROS2 ü ROS2 とは? ü ROS2 の中核を担う DDS についての紹介 ROS 演習 3:ROS 2.0 の最新動向について 2
目次 第 1 章 :ROS(Robot Operating Systems) 1. ROS とは 2. 特 長 第 2 章 : ROS 2.0 1. コンセプト 2. DDS 3. 構成 第 3 章 : まとめ ROS 演習 3:ROS 2.0 の最新動向について 3
ROS 演習 3:ROS 2.0 の最新動向について 第 1 章 : ROS(Robot Operating Systems) 1. ROS とは 4
ROSとは ROS (Robot Operating System) : ロボット開発におけるライブラリやツールを提供 ハードウェアの抽象化 デバイスドライバ ライブラリ 視覚化ツール データ通信 パッケージ管理理...etc 特 長 n 世界で最も利利 用されているロボット ミドルウェア n 豊富な対応ロボット センサ n オープンソース n サポート 言語 C++, Python n 管理理団体 OSRF n 対応OS Linux ROS演習3 ROS 2.0 の最新動向について 5
自動運転システムにおける ROS (1/2) ITS (Intelligent Transport Systems) + Internet International cooperation Laws Interface 1 2 3 4 3D map Localization Planning Operation Sensing Detection ROS 演習 3:ROS 2.0 の最新動向について 6
自動運転システムにおける ROS (2/2) システム 自動運転 アプリ ケーション Sensing Localization Detection Planning ミドル ウェア ROS OS Linux (Ubuntu14.04) ハード ウェア CPU (multi/many) GPU Camera GNSS (GPS) LIDAR ROS 演習 3:ROS 2.0 の最新動向について 7
ROS 演習 3:ROS 2.0 の最新動向について 第 1 章 : ROS(Robot Operating Systems) 1. 特 長 8
ROS の特 長 ROS (Robot Operating System) : ロボット開発におけるライブラリやツールを提供 Publish / Subscribe モデル l ノードの集合としてシステムを構築 l トピックを介してデータをやり取り 分散システム 例 トピック 視覚化 シミュレーション 歩 行行者検知 ノード 1 車車検知 ノード 2 ノード 3 ROS 演習 3:ROS 2.0 の最新動向について 9
Publish / Subscribe モデル 処理理をノードとして分割 管理理し トピックを介してデータのやり取りを 行行う 再利利 用性 生産性の向上, 分散環境への 高い親和性, 障害分離離 トピック Publish Subscribe Subscribe 歩 行行者検知 ノード 車車検知 ノード ノード 10
Publish / Subscribe モデル 処理理をノードとして分割 管理理し トピックを介してデータのやり取りを 行行う 再利利 用性 生産性の向上, 分散環境への 高い親和性, 障害分離離 トピック 歩 行行者検知 ノード 車車検知 ノード ノード ROS 演習 3:ROS 2.0 の最新動向について 11
Publish / Subscribe モデル 処理理をノードとして分割 管理理し トピックを介してデータのやり取りを 行行う 再利利 用性 生産性の向上, 分散環境への 高い親和性, 障害分離離 NEW! トピック 信号検知 ノード 歩 行行者検知 ノード 車車検知 ノード ノード ROS 演習 3:ROS 2.0 の最新動向について 12
ROS の特 長 TCP/UDP or 共有メモリ 抽象化 User Code ノード ノード ROS Hardware 視覚化 シミュレーション 豊富なパッケージ ( デバイスドライバやライブラリ ) ROS 演習 3:ROS 2.0 の最新動向について 13
ROS の特 長 Gazebo:3D 物理理シミュレータ 強 力力な GUI で ROS との連携が充実 RViz:3D 視覚化ツール 簡単にシステム状態を視覚化可能 User Code [ 再 生データ ] ROS l 記録したセンサデータ (rosbag ファイル ) l 指定した値のデータ Hardware 視覚化 シミュレーション ( ) ROS 演習 3:ROS 2.0 の最新動向について 14
ROS の特 長 TCP/UDP or 共有メモリ 抽象化 User Code ノード ノード ROS Hardware 視覚化 シミュレーション 豊富なパッケージ ( デバイスドライバやライブラリ ) ROS 演習 3:ROS 2.0 の最新動向について 15
ROS の特 長 ハードウェア 様々なロボットやセンサをサポート User Code 抽象化 User Code ROS ROS Hardware パッケージ 2,000を超えるソフトウェアパッ ケージで効率率率的開発 ( ) ライブラリ 座標変換 画像処理理 点群処理理など豊富にサポート Hardware 豊富なパッケージ ( デバイスドライバやライブラリ ) ROS 演習 3:ROS 2.0 の最新動向について 16
ROS のアプリケーション例例 ファイル構成 パッケージ : 物体認識識 ノード : Camera Camera.cpp ノード : ImageProccessing ImageProcessing.cpp Detection.h Image.msg -------------------- Header header uint32 height uint32 width string encoding uint8[] data システムモデル Camera Images Image Proccessing ROS 演習 3:ROS 2.0 の最新動向について 17
ROS 演習 3:ROS 2.0 の最新動向について 第 2 章 : ROS 2.0 1. コンセプト 18
ROS2 コンセプト 元々 研究 プロトタイプ開発向けに開発(2007.11- )されたが 新しいユースケース 組込みシステム リアルタイム 電波環境の変化 製品利利 用 クロス プラットフォーム 開発サポート 複数ロボット ROS演習3 ROS 2.0 の最新動向について 19
ROS2 コンセプト 元々 研究 プロトタイプ開発向けに開発(2007.11- )されたが 新しいユースケース ROS2の開発が進 行行 組込みシステム alpha版が公開中 リアルタイム 電波環境の変化 製品利利 用 クロス プラットフォーム 開発サポート 複数ロボット ROS演習3 ROS 2.0 の最新動向について 20
ROS2: コンセプト DDS (Data Distribution Service) : 工業標準の Publish / Subscribe 通信仕様 l 特 長 - Publish / Subscribe モデル - QoS (Quality of Service) の保証 - 複数のベンダーが実装 l 利利 用実績 - ミッションクリティカルな環境 ( 電 車車, ダム, 船舶, 航空機 etc.) - リアルタイム / 組込みシステム [RTI Connext] ROS 演習 3:ROS 2.0 の最新動向について 21
ROS 演習 3:ROS 2.0 の最新動向について 第 2 章 : ROS 2.0 2. DDS 22
ROS2:DDS/ 構成 ROS 演習 3:ROS 2.0 の最新動向について 23
ROS2:DDS/QoS Global Data Space s Topic Participant HISTORY Participant Data Writer QoS data1 data2 Data Reader QoS Publisher data3 data4 Subscriber RELIABIRITY data4 data3 data2 data1 DEADLINE period ROS 演習 3:ROS 2.0 の最新動向について 24
ROS2:DDS/QoS 更更新間の値の履履歴を保持 :ALL ( 全て ) or LAST ( 任意の数 ) Global Data Space s Topic Data Writer Publisher Participant QoS HISTORY data1 data2 data3 data4 Participant 通信の信頼性を設定 :RELIABLE or BEST_EFFORT Data Reader Subscriber QoS 許容更更新周期を設定 RELIABIRITY data4 data3 data2 data1 DEADLINE period ROS 演習 3:ROS 2.0 の最新動向について 25
ROS2:DDS/QoS Volatility QoS Policy DURABILITY DURABILITY_SERVICE HISTORY READER DATA LIFECYCLE WRITER DATA LIFECYCLE LIFESPAN QoS Policy USER DATA TOPIS FILTER GROUP DATA PARTITION PRESENTATION DENTINATION ORDER User QoS Presentation Infrastructure Delivery ENTITY FACTORY RESOURCE LIMITS RELIABIRITY TIME BASED FILTER DEADLINE OWNERSHIP OWNERSHIP STRENGTH LIVELINESS LATENCY BUDGET TRANSPORT PRIORITY Redundancy Transport ROS2 [Data Distribution Service (DDS) Version 1.4 April, 2015] ROS 演習 3:ROS 2.0 の最新動向について 26
ROS2:DDS/Vendor ベンダー 製品 ライセンス 共有メモリ サポート状況 RTI (Real-Time Innovation) Connext Commercial Research Commercial PrismTech OpenSplice LGPL (v6.4 のみ ) - eprosima FastRTPS Apache 2 - OSRF (Open Source Robotics Foundation) FreeRTPS Apache 2 - ROS 演習 3:ROS 2.0 の最新動向について 27
ROS2:DDS/Vendor DDS ベンダー 製品 ライセンス 共有メモリ サポート状況 RTI (Real-Time Innovation) Connext Commercial Research Commercial PrismTech OpenSplice LGPL (v6.4 のみ ) - eprosima FastRTPS Apache 2 - OSRF (Open Source Robotics Foundation) FreeRTPS Apache 2 - ROS 演習 3:ROS 2.0 の最新動向について 28
ROS2:DDS/Vendor DDS ベンダー 製品 ライセンス 共有メモリ サポート状況 RTI (Real-Time Innovation) Connext Commercial Research Commercial PrismTech OpenSplice LGPL (v6.4 のみ ) - 特 長 eprosima FastRTPS LGPL - No.1 ベンダー J 基本は商 用ライセンス OSRF (ROS2のデフォルトにする為に交渉中 ) (Open Source Secure, Micro FreeRTPS などの複数のパッケージ有り Apache 2 - Robotics Foundation) 少ないスループットで機能を実現 最近 容量量の 大きなデータ通信を 高速化 ROS 演習 3:ROS 2.0 の最新動向について 29
ROS2:DDS/Vendor DDS ベンダー 製品 ライセンス 共有メモリ サポート状況 RTI (Real-Time Innovation) Connext Commercial Research Commercial PrismTech OpenSplice LGPL (v6.4 のみ ) - 特 長 eprosima FastRTPS LGPL - No.2 ベンダー L OSRF 基本は商 用ライセンス (Open 機能が制限された Source v6.4 がオープンソース化 FreeRTPS Apache 2 - Robotics ( ラッピングされ簡単にインストール可 ) Foundation) 並列列化により処理理が早い ROS 演習 3:ROS 2.0 の最新動向について 30
ROS2:DDS/Vendor ベンダー 製品 ライセンス 共有メモリ サポート状況 特 長 RTI Commercial (Real-Time 軽量量 DDS Connext Innovation) Research 今後のROS2のデフォルトDDS Commercial PrismTech パケット分割の起きる 大きなデータに最近 対応 OpenSplice GitHubでコード公開中 LGPL (v6.4のみ) - eprosima FastRTPS Apache 2 - OSRF (Open Source Robotics Foundation) FreeRTPS Apache 2 - ROS 演習 3:ROS 2.0 の最新動向について 31
ROS2:DDS/Vendor ベンダー 製品 ライセンス 共有メモリ サポート状況 RTI Commercial (Real-Time 特 長 Connext Innovation) Research 小型組込み向けDDS Commercial フリー, ポータブル, 最 小セットをテーマ PrismTech OpenSplice に現在開発中 LGPL (v6.4のみ) - GitHubでコード公開中 eprosima FastRTPS LGPL - OSRF (Open Source Robotics Foundation) FreeRTPS Apache 2 - ROS 演習 3:ROS 2.0 の最新動向について 32
ROS 演習 3:ROS 2.0 の最新動向について 第 2 章 : ROS 2.0 3. 構成 33
構成 比較 ROS のシステム ROS のシステム ROS1 マスタ アプリケーション ノード ノード アプリケーション ノード ノード ノード ROS2 クライアントライブラリ TCPROS / UDPROS クライアントライブラリ DDS 抽象化 DDS OS Linux Linux/Windows/Mac/RTOS/No OS ROS 演習 3:ROS 2.0 の最新動向について 34
ROS2: 構成 C++ ユーザーアプリケーション or Python + QoS 現在 DDS を 用いた通信は利利 用可能 rcl (ROS Client Library) rosidl (ROS Interface Description Language) rmw (ROS Middleware Interface) C++, python サポート.msg.idl ROS2 API DDS API Connext or DDS OpenSplice or FastRTPS ROS 演習 3:ROS 2.0 の最新動向について 35
ROS2: 構成 [ 開発中 ] ユーザーアプリケーション C + QoS C 言語と 一部の QoS サポート DDS FreeRTPS RTPS プロトコルによる最低限の通信 ROS 演習 3:ROS 2.0 の最新動向について 36
ROS2: 通信 ROS1 デフォルト nodelet ROS1 ROS1 ROS1 ROS1 ROS2 TCP/UDP inter-process intra-process DDS ROS2 ROS2 ROS2 ROS2 TCP/UDP, DDS ROS 演習 3:ROS 2.0 の最新動向について 37
ROS2: 通信 ROS1 デフォルト nodelet ROS1 ROS1 ROS1 ROS1 ros1_bridge TCP/UDP ROS2 inter-process intra-process DDS ROS1 ROS2 ROS2 ROS2 ROS2 ROS2 TCP/UDP, DDS ROS 演習 3:ROS 2.0 の最新動向について 38
ROS2: 組込み リアルタイム ターゲット例例 メイン In Progress Future Work ARM A-class, SFF x86 etc 32-bit MCU 8/16-bit MCU RAM 1-16GB 4-256KB 1-32KB OS ロードマップ l リアルタイム l QoS のサポート拡 大 Windows, OS X, Linux (Ubuntu14.04, 16.04) l メモリ管理理 :TLSF (Two Level Segregate Fit) allocator の利利 用 l RTOS 上での動作 l intra-process( 共有メモリ利利 用 ) のリアルタイム化 l 組込み l FreeRTPS(ROS2 向け軽量量 DDS) の開発 l C 言語のサポート no OS, RTOS (Xenomai, PREEMPT RT) ROS 演習 3:ROS 2.0 の最新動向について 39
ROS 演習 3:ROS 2.0 の最新動向について 第 5 章 : まとめ 40
まとめ ROS (Robot Operating System) Publish / Subscribe モデルにより ノードとしてアプリケーションを作成 豊富なツール ライブラリ パッケージを簡単に利利 用可能 ROS2 リアルタイム 組込みシステムへの対応 DDS (Data Distribution Service) を利利 用 QoS(Quality of Service) を保証 ROS 演習 3:ROS 2.0 の最新動向について 41
www.tier4.jp 42
ROS 演習 3:ROS 2.0 の最新動向について Appendix 43
参考 文献 n OSRF/ROS.org - [http://wiki.ros.org/], [http://wiki.ros.org/ja] n OSRF/ROS2 wiki [https://github.com/ros2/ros2/wiki] n OSRF/ROS2 Design - [http://design.ros2.org/] n OSRF/FreeRTPS - [https://github.com/ros2/freertps] n ROSCon2015 - [http://roscon.ros.org/2015/] n ROSCon2016 - [http://roscon.ros.org/2016/] n RTI/Connext - [http://www.rti.com/] n PrismTech/OpenSplice DDS Community Edition - [http://www.prismtech.com/dds-community] n eprisima/fastrtps - [http://www.eprosima.com/], [https://github.com/eprosima/fast-rtps] ROS 演習 3:ROS 2.0 の最新動向について 44