SlideShare a Scribd company logo
1 of 44
2020/07/17
高瀬 英希
京都大学/JSTさきがけ
takase@i.kyoto-u.ac.jp
〜Robot Operating Systemというアプローチ〜
SlideShare仕様に
対応するための無駄ページです
P.4以降の下線と枠付き画像には
ハイパーリングが付いています
SlideShare仕様に
対応するための無駄ページです
P.4以降の下線と枠付き画像には
ハイパーリングが付いています
@takasehideki
− 京都大学 情報学研究科 准教授
− JSTさきがけ 兼任研究者
− SWEST ステアリング委員
− IPSJ-SIGEMB 運営幹事
− TOPPERSプロジェクト 特別会員
− ROS Japan Users Group
 関西勉強会 主催
 ROSCon JP 実行委員
− IoT ALGYAN (あるじゃん) 運営委員
− Elixir: NervesJP kyoto.ex
主な研究開発プロジェクト
− mROS: 組込み向けROS軽量実行環境
− Cockatrice: Elixir for HLS
自己紹介
4
Cockatrice
ROS Japan Users Group
• Discourse: https://discourse.ros.org/c/local/japan
• connpass: https://rosjp.connpass.com
− 勉強会・講習会など 初心者から歴戦の猛者まで!
− 関西や瀬戸内でも開催!
− メンバー数1,781名
• Slack: rosjp
• Twitter: #rosjp
Robot Operating System
• ロボットシステム開発とそのススメ方
• ROSの特徴:Plumbing, Tools, Capabilities, Ecosystem
• ROS 2への移行
• version/distributionの比較
• ROSは商用展開に利用できるか?
ロボットといえば?
7
様々な状況に
対応する
複雑な制御
AI/ML処理の
ための処理性能
多品種少量生産の
展開への対応
限定された
計算資源と電力量
実世界との
膨大なデータの
やりとり
ロボットの開発のススメ方
8
• 開発の加速化のためには,,,
− モジュールの再利用性の促進
便利なものは使えばよい
車輪の再発明は避けたい
− プロセス間通信の効率的な管理
部品ごとに開発したい
簡単に組み合わせたい
− サービスの向上に注力したい
統一化された開発フレームワークによる
設計開発の加速化に期待
ROSとは?
Robot Operating System
9
http://www.ros.org/about-ros/
ROS is not just framework,
but design platform for robots!!
• Plumbing: 出版購読型の通信モデルとミドルウェア
• Tools: プロジェクト管理,デバッグ,可視化,等
• Capabilities: 膨大なライブラリ・パッケージ
• Ecosystem: 世界規模の強力なOSSコミュニティ
Plumbing
• Publish / Subscribe messaging infrastructure
− ROSノード:ロボットシステムを構成する機能単位
− 基本的に非同期の疎な結合
ノードの登録・変更・削除が容易に実現できる
障害時にはプロセス/ノード単位で再起動ができる
10
topic:A
topic:B
publish
pub
subscribe
sub
registration
reg
XMLRPC
TCPROS
service
node
node
node
master
node
node
node
ROSの通信モデル
• トピック topic
− ROS通信の基本
− 多対多・非同期型の出版購読通信(Pub/Sub)
• サービス service
− 1対1・同期型のRPC通信
• アクション action
− フィードバック付きRPC通信
− 非同期と同期の組み合わせ
• パラメータ parameter
− 多変量辞書 (key value store)
11
pub/subの仕組み
• ROS Master:
− ノードの登録処理
− 名前空間の管理
• XML-RPC:
− masterへのノードの登録
− トピックを介したノード間の
接続の確立
• TCPROS
− TCP/IP上での非同期通信
− UDPROSもある
12
・・・
・・・
(1)
(2)
(3)
:XML-RPC
:TCPROS
master sub pub
(4)
(5)
(6)
pub/subの仕組み
13
・・・
・・・
(1)
(2)
(3)
:XML-RPC
:TCPROS
master sub pub
(4)
(5)
(6)
• 出版者側(publisher):
− ROS環境とノードの生成
− masterとtopicへの登録
− メッセージの出版
• 購読者側(subscriber):
− ROS環境とノードの生成
− masterとtopicへの登録
− (メッセージの購読時)
コールバック関数の実行
• API仕様の詳細:
http://docs.ros.org/api/roscpp/html/
Tools
• catkin_tools: プロジェクト構成/ビルドシステム
• rqt: Qtベースのデバッグフレームワーク
• gazebo: 3D物理シミュレーションツール
• rviz: 可視化ツール
− 他にもroslaunch, rosbagなど,,,
14
Capabilities
• ROSパッケージ
− ロボットの有用な機能がまとめられたライブラリの集合
− 2,000以上のパッケージが公開されている
https://index.ros.org/packages/
− 利点:既存資産として活用できる
コンポーネント指向開発を実現できる
• 公式サポートの言語(ROS 1):C++, Python, LISP
15
パッケージ名 内容
tf ロボットの3次元座標と連鎖関係,時間の管理
teleop ロボットの移動方向の操作
usb_cam USBカメラの画像の取り込み
Navigation 地図ベースの自己位置推定と経路計画のアルゴリズム
MoveIt マニピュレーションの制御アルゴリズム
Ecosystem
• オンラインのコミュニティ
− ROS Wiki: 各種文書の公開,パッケージ配布
− ROS Answers: Q&Aページ
− ROS Discourse: リリースやイベントのアナウンス
• オフラインのコミュニティ
− ROSCon: 世界規模の開発者会議(最近はlocal confも)
− SIG meetups, tutorial/workshop, local events, etc.,,,
16
ROS around the world!!
17
http://download.ros.org/downloads/
metrics/metrics-report-2019-07.pdf
ROSの歴史
2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
18
1st commit to SourceForge (Nov. 2007)
https://sourceforge.net/p/ros/code/1/log/?path=
http://www.ros.org/news/
2017/11/ros-turns-10.html
ROS 1.0 released
http://wiki.ros.org/Distributions
ROS 2 Alpha
released
https://index.ros.org
/doc/ros2/Releases/
ROS準拠のロボット
19https://robots.ros.org
Aerial Marine
Component Sensor
Ground Manipulator
Motor
学習用ロボット:TurtleBot3
• ROS公式の研究・教育用ロボット組立キット
− テーブルトップでROSやSLAMの学習が出来る
− OSRF (Open Robotics)からのリクエストで誕生
− 改造の自由度が高く、ROS対応ロボット作成が容易
20
ROSのユースケースの変遷
• 単体ロボット
• ワークステーション級の
計算資源
• 非リアルタイムな制御
• 理想的かつ安定的な
ネットワーク環境
• 研究用途
21
• 複数ロボット(協調動作)
• 組込み規模での
動作実現の要求
• リアルタイム制御
• 不安定なネットワーク環境
(遅延や損失への対応)
• 実製品への適用
ROSをver.2として
フルスクラッチから
開発し直す!
ROS 2の新機能
• DDS (Data Distribution Service)
• Quality of service
• Lifecycle state machine
• Actions
• Intra-process communication
• ros1bridge
• colcon build tool
• Python launch system
• Multi platform support
22
ROS 2のソフトウェア構造
23
node.cpp
rclcpp
node.py
rclpy
RCL(ROS Client Library)
RMW(ROS MiddleWare)
DDS
HW
node.java
rcljava
・・・
• 出版購読通信を提供
• ノード自動検出 など
DDSはOMG標準仕様として規定
複数のDDSの通信機能を
抽象化するAPI層
• 共通の基盤機能
• 実装はC言語
• 各言語から呼び出すことで
ライブラリを開発可能
http://4c281b16296b2ab02a4e0b2e3f75446d.cdn
ext.stream.ne.jp/randc/mirai/2-3_ros2_LP.pdf
ROS 2対応DDSの実装
Middleware Library Provider Support ライセンス・備考等
rmw_fastrtps_cpp eProsima
Fast-RTPS
Tier 1 Apache 2.0,ROS 2デフォルト,
軽量実装
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),
高性能・高信頼な評価結果
rmw_opensplice_cpp ADLINK
OpenSplice
Tier 2 商用/オープン(機能制限, Apache 2.0),
PFサポートは限定的,Foxyで対象外
rmw_fastrtps_
dynamic_cpp
eProsima
Fast-RTPS
Tier 2 Apache 2.0,型の実行時の解釈・変換
(type introspection)をサポート
25
REP-2000 を基に
作成・整理
• 実装機能やライセンス形態で複数のDDSから通信層を選択できる
• 異種DDSを選択したノード間で通信できる(rmw層で抽象化)
− Tier 1: Open Robotics公式の手厚いサポート
− Tier 2: 公式だが限定的なサポート
QoS Control
• 通信経路の品質を指定する
− Pub/Sub node間で互換性が必要
(SubのQoSプロファイルのほうが厳しい必要がある)
• 指定できるパラメータの例 (下線はデフォルト設定)
− History (履歴): Keep last (任意の値数を保持) or Keep all
− Depth (深さ): Size of the queue (Keep lastの個数 10)
− Reliability (信頼性): Best effort or Reliable (リトライ試行)
− Durability (耐久性): Transient local or Volatile (遅延非許容)
26https://index.ros.org/doc/ros2/Concepts/About-Quality-of-Service-Settings/
Profile History policy Reliability Durability
Default Keep last 10 Reliable Volatile
Services Keep last 10 Reliable Volatile
Sensor data keep last 5 Best effort Volatile
Parameters keep last 1000 Reliable Volatile
Lifecycle
27
http://design.ros2.org/
articles/node_lifecycle.html
• 基本状態
− Unconfigured
− Inactive
− Active
− Finalized
• 遷移状態
− Configuring
− Activating
− Deactivating
− CleaningUp
− ShuttingDown
− ErrorProcessing
 transitionsの通知で
状態遷移する
Actions
• 非同期送信/同期受信の組合せ
− Entities: action server / client
− Interface Definition: Goal / Result / Feedback
TopicとServiceの名前空間は分離できる
28
http://design.ros2.org/articles/actions.html
Intra-Process Comm.
• 複数ノードを1プロセスとして動作させること
− プロセス内のPub/Sub通信が高速かつ軽量に
− ROS 2プログラミングスタイルのベストプラクティス
SingleThreadedExecutor によるノード登録と実行
− std::unique_ptr によるゼロコピーと所有権移譲ができる
ROS 1のnodeletにあった潜在的バグも解消
29
ros1bridge
• ROS 1とROS 2を共存させる仕組み
• bridgeノードが topic/service の“橋渡し”をする
− dynamic_bridge: 双方に同名のトピック/サービスが
存在する時のみブリッジを作成
− static_bridge: 常にブリッジを作成
30
colcon build tool
• collective construction
• colcon = ament + catkin
− ament: build for ROS 2 pkgs $ ament build --isolated
− catkin: build for ROS 1 pkgs $ catkin_make_isolated --install
31
$ mkdir -p /tmp/workspace/src # Make a workspace directory with a src subdirectory
$ cd /tmp/workspace # Change directory to the workspace root
$ <...> # Populate the `src` directory with packages
$ colcon list -g # List all packages in the workspace and their dependencies
$ colcon build # Build all packages in the workspace
$ colcon test # Test all packages in the workspace
$ colcon test-result --all # Enumerate all test results
$ . install/local_setup.bash # Setup the environment to use the built packages
$ <...> # Use the built packages
TL;DR
Python launch system
32
$ ros2 launch demo_nodes_cpp add_two_ints.launch.py
Multi Platform Support
(Foxy Fitzroy)
33
Arch. Ubuntu
Focal
(20.04)
MacOS
Mojave
(10.14)
Windows
10
(VS20129)
Debian
Buster
(10)
OpenEmbedded
/ WebOS OSE
amd64 Tier 1
[d][a][s]
Tier 1
[a][s]
Tier 1
[a][s]
Tier 3
[s]
arm64 Tier 1
[d][a][s]
Tier 3
[s]
Tier 3
[s]
arm32 Tier 3
[s]
Tier 3
[s]
Tier 3
[s]
• Tier 1: Open Robotics公式の手厚いサポート
• Tier 2: 公式だが限定的なサポート
− [d]: Debianパッケージとして配布
− [a]: 必要パッケージが含まれたアーカイブとして配布
− [s]: ソースからビルドが必要
• Tier 3: コミュニティお任せのサポート
• ベアメタルな組込み環境の対応も進行中(micro-ROS)
ROS versionとdistribution
34
http://wiki.ros.org/Distributions https://index.ros.org/doc/ros2/Releases/
distribution Release EOL date Ubuntu
Kinetic Kame 2016/05/23 April, 2021 Xenial (16.04)
Melodic Morenia 2018/05/23 May, 2023 Bionic (18.04)
Noetic Ninjemys 2020/05/23 May, 2025 Focal (20.04)
Dashing Diademate 2019/05/31 May, 2021 Bionic (18.04)
Eloquent Elusor 2019/11/22 Nov, 2020 Bionic (18.04)
Foxy Fitzroy 2020/06/05 May, 2023 Focal (20.04)
Galactic Geochelone May 2021 TBD TBD
• NoeticがROS 1の最終リリース(念願の?Python 3対応)
• 2020年6月よりROS 2 Rolling Ridley Distributionが導入
− 継続的かつ頻繁な更新 特に開発者向け
version/distributionの選択
• https://metrics.ros.org/rosdistro_numberofrepos.html
35
version/distributionの選択
• https://metrics.ros.org/answers_rosdistro.html
36
ユーザレベルでは
まだまだ??
ROS 1 vs. ROS 2
• ROS 2はまだまだ発展途上
− Foxyはほぼほぼ決定版?
• 既存パッケージを使いたいならROS 1
これからスクラッチ開発ならROS 2
− あとは,今後の強みとしたいなら当然ながらROS 2
• 使いたい機能が熟れてきたらROS 2移行すべき
− rosbag,MoveIt,リアルタイム制御,セキュリティ,,,
• ROS 1の寿命はあと1~2年と言って差し支えない?
− Python 2/3問題も考慮すべき (MelodicはPython 2)
Python 2.7 will not be maintained past 2020.
https://pythonclock.org
37
distributionの選択
• ROS 1については,パッケージの充実度による
− 使いたいパッケージがあるか?
依然としてKineticが充実
− Melodicはまだまだこれから
(Ubuntu 18への追従も大変)
• ROS 2については,
新しいほうが当然良い
− コア機能の安定度が
どんどん向上してきている
− アプリ設計に直結する大きな
仕様変更が発生することも
38
ROSの開発体制
• Open Roboticsが中心的に牽引
• Technical Steering Committeeが主導
− ロードマップの策定やコア機能など
− ROS 2の開発に貢献している組織の技術者により編成
いわゆるIT業界のBig Tech
ロボティクス業界の有名企業
半導体やOSやDDSのトップベンダ など
− 特定トピックに特化したWGsも編成されている
• 品質保証を重視した開発プロセスの採用
− アジャイル:Kanbanによるプロジェクト進行の可視化
− テスト駆動:継続的インテグレーション(CI)の適用
39
ROSの商用展開
• ROSのライセンス形態
− コアモジュール・コンポーネント
ROS1: BSD # 修正・再利用・再配布可
ROS2: Apache 2.0 # より商用利用向き
− 個別パッケージ:
OSI認証のものを独自に設定可能 (GPL, LGPLもあり)
• ROSは商用製品に利用できるか?
− Yes!! ROS 1での採用事例もあり
− ROS-Industrial が商用利用を牽引
− ROS 2は通信層がOMG標準
− 機能安全対応や開発プロセス認証も加速中
40
http://aibo.sony.jp/
まとめ
• ROS is not just framework,
but design platform for robots!!
− ロボットシステムの開発と“つながる”を加速化
− ROS 2の開発が鋭意進行中 Let’s contribute!!
41
お気軽にご連絡ください!
takase@i.kyoto-u.ac.jp
Twitter: @TAKASEhideki
参考情報:書籍
• 小倉 崇:ROSではじめるロボットプログラミング
− まずはじめに読むべき書籍!バージョンと情報は古いので注意
• 表 允皙 ほか:ROSロボットプログラミングバイブル
− TurtleBot3を片手に進める場合の良書
• 上田 隆一:Raspberry Piで学ぶROSロボット入門
− ラズパイマウスを片手に進める場合の良書
• 西田 健 ほか:実用ロボット開発のための
ROSプログラミング
− 中級向け ロボット開発をなにか実践して
から読むのが有用
• 近藤 豊:ROS2ではじめよう
次世代ロボットプログラミング
− 世界初 && 最も充実したROS 2の解説本!
42
参考情報:Web解説
• ROS Tutorials
http://wiki.ros.org/ROS/Tutorials
• ROS 2 Tutorials
https://index.ros.org/doc/ros2/Tutorials/
• ROS講座 (on Qiita)
https://qiita.com/srs/items/5f44440afea0eb616b4a
• Yutaka Kondo: Getting Started with ROS 2 / DDS,
ROS Japan User Group #27, Dec 2018. https://speakerdeck.com/youtalk/dds
• Geoffrey Biggs: 次世代ロボットフレームワークROS2の紹介, 第20回
組込みシステム技術に関するサマーワークショップ (SWEST20), 2018年8月.
https://swest.toppers.jp/SWEST20/program/s2a.html#s2
• Geoffrey Biggs: ROS Japan ユーザグループ 講習会 ~ ROS 2 の紹介 ~
https://gbiggs.github.io/rosjp_ros2_intro/index.html
https://github.com/gbiggs/rosjp_ros2_basics
• TIER IV ACADEMY 自動運転システム構築塾 Day 2 ROS演習
ROS演習3:ROS 2.0の最新動向について
http://4c281b16296b2ab02a4e0b2e3f75446d.cdnext.stream.ne.jp/randc/mirai/2-
3_ros2_LP.pdf
43
参考情報:引用
• Tully Foote: ROS Community Metrics Report, Jul 2018.
http://download.ros.org/downloads/metrics/metrics-report-2018-
07.pdf
• Dirk Thomas, Mikael Arguedas: The ROS 2 Vision -For Advancing
the Future of Robotics Development-, ROSCon 2017, Sep 2017.
https://roscon.ros.org/2017/presentations/ROSCon%202017%20RO
S2%20Vision.pdf
• Dirk Thomas, Esteve Fernandez, William Woodall: State of ROS 2 -
demos and the technology behind, ROSCon 2015, Oct 2015.
https://roscon.ros.org/2015/presentations/state-of-ros2.pdf
• ROS 2.0 Design, https://design.ros2.org
• ROS 2 Overview, https://index.ros.org/doc/ros2/
44

More Related Content

What's hot

3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。ROBOTIS Japan
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜Hideki Takase
 
ROS2勉強会 4章前半
ROS2勉強会 4章前半ROS2勉強会 4章前半
ROS2勉強会 4章前半tomohiro kuwano
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発Yoshitaka HARA
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築Yoshitaka HARA
 
四脚ロボットによる つくばチャレンジへの取り組み
四脚ロボットによるつくばチャレンジへの取り組み四脚ロボットによるつくばチャレンジへの取り組み
四脚ロボットによる つくばチャレンジへの取り組みkiyoshiiriemon
 
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成MobileRoboticsResear
 
ORB-SLAMの手法解説
ORB-SLAMの手法解説ORB-SLAMの手法解説
ORB-SLAMの手法解説Masaya Kaneko
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例Yoshitaka HARA
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてFixstars Corporation
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーションakio19937
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装についてMobileRoboticsResear
 
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向SSII
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージMori Ken
 
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)Masaya Kaneko
 
Cartographer と Autoware を用いた自律走行
Cartographer と Autoware を用いた自律走行Cartographer と Autoware を用いた自律走行
Cartographer と Autoware を用いた自律走行Yoshitaka HARA
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 

What's hot (20)

UnityとROSの連携について
UnityとROSの連携についてUnityとROSの連携について
UnityとROSの連携について
 
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
ROS2勉強会 4章前半
ROS2勉強会 4章前半ROS2勉強会 4章前半
ROS2勉強会 4章前半
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
 
四脚ロボットによる つくばチャレンジへの取り組み
四脚ロボットによるつくばチャレンジへの取り組み四脚ロボットによるつくばチャレンジへの取り組み
四脚ロボットによる つくばチャレンジへの取り組み
 
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
 
ORB-SLAMの手法解説
ORB-SLAMの手法解説ORB-SLAMの手法解説
ORB-SLAMの手法解説
 
ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例ロボティクスにおける SLAM 手法と実用化例
ロボティクスにおける SLAM 手法と実用化例
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
 
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
 
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
 
Cartographer と Autoware を用いた自律走行
Cartographer と Autoware を用いた自律走行Cartographer と Autoware を用いた自律走行
Cartographer と Autoware を用いた自律走行
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 

Similar to ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜

20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナーKazuko Itoda
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)Masataka Kondo
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
Getting Started .NET Core
Getting Started .NET CoreGetting Started .NET Core
Getting Started .NET CoreYuta Matsumura
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来decode2016
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)Kazuko Itoda
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Etsuji Nakai
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)l_b__
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Hideki Takase
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話Yahoo!デベロッパーネットワーク
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 

Similar to ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜 (20)

20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
Getting Started .NET Core
Getting Started .NET CoreGetting Started .NET Core
Getting Started .NET Core
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Mac Ports
Mac PortsMac Ports
Mac Ports
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
Rclex: ElixirでROS!!
Rclex: ElixirでROS!!Rclex: ElixirでROS!!
Rclex: ElixirでROS!!
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 

More from Hideki Takase

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirHideki Takase
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓くHideki Takase
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミングHideki Takase
 
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2ROS 2 Client Library for E^2
ROS 2 Client Library for E^2Hideki Takase
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつHideki Takase
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはHideki Takase
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークHideki Takase
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentHideki Takase
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Hideki Takase
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αHideki Takase
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計するHideki Takase
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてHideki Takase
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirHideki Takase
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANHideki Takase
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?Hideki Takase
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Hideki Takase
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~Hideki Takase
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームHideki Takase
 

More from Hideki Takase (20)

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
 
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+α
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYAN
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
 

ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜

  • 4. @takasehideki − 京都大学 情報学研究科 准教授 − JSTさきがけ 兼任研究者 − SWEST ステアリング委員 − IPSJ-SIGEMB 運営幹事 − TOPPERSプロジェクト 特別会員 − ROS Japan Users Group  関西勉強会 主催  ROSCon JP 実行委員 − IoT ALGYAN (あるじゃん) 運営委員 − Elixir: NervesJP kyoto.ex 主な研究開発プロジェクト − mROS: 組込み向けROS軽量実行環境 − Cockatrice: Elixir for HLS 自己紹介 4 Cockatrice
  • 5. ROS Japan Users Group • Discourse: https://discourse.ros.org/c/local/japan • connpass: https://rosjp.connpass.com − 勉強会・講習会など 初心者から歴戦の猛者まで! − 関西や瀬戸内でも開催! − メンバー数1,781名 • Slack: rosjp • Twitter: #rosjp
  • 6. Robot Operating System • ロボットシステム開発とそのススメ方 • ROSの特徴:Plumbing, Tools, Capabilities, Ecosystem • ROS 2への移行 • version/distributionの比較 • ROSは商用展開に利用できるか?
  • 8. ロボットの開発のススメ方 8 • 開発の加速化のためには,,, − モジュールの再利用性の促進 便利なものは使えばよい 車輪の再発明は避けたい − プロセス間通信の効率的な管理 部品ごとに開発したい 簡単に組み合わせたい − サービスの向上に注力したい 統一化された開発フレームワークによる 設計開発の加速化に期待
  • 9. ROSとは? Robot Operating System 9 http://www.ros.org/about-ros/ ROS is not just framework, but design platform for robots!! • Plumbing: 出版購読型の通信モデルとミドルウェア • Tools: プロジェクト管理,デバッグ,可視化,等 • Capabilities: 膨大なライブラリ・パッケージ • Ecosystem: 世界規模の強力なOSSコミュニティ
  • 10. Plumbing • Publish / Subscribe messaging infrastructure − ROSノード:ロボットシステムを構成する機能単位 − 基本的に非同期の疎な結合 ノードの登録・変更・削除が容易に実現できる 障害時にはプロセス/ノード単位で再起動ができる 10 topic:A topic:B publish pub subscribe sub registration reg XMLRPC TCPROS service node node node master node node node
  • 11. ROSの通信モデル • トピック topic − ROS通信の基本 − 多対多・非同期型の出版購読通信(Pub/Sub) • サービス service − 1対1・同期型のRPC通信 • アクション action − フィードバック付きRPC通信 − 非同期と同期の組み合わせ • パラメータ parameter − 多変量辞書 (key value store) 11
  • 12. pub/subの仕組み • ROS Master: − ノードの登録処理 − 名前空間の管理 • XML-RPC: − masterへのノードの登録 − トピックを介したノード間の 接続の確立 • TCPROS − TCP/IP上での非同期通信 − UDPROSもある 12 ・・・ ・・・ (1) (2) (3) :XML-RPC :TCPROS master sub pub (4) (5) (6)
  • 13. pub/subの仕組み 13 ・・・ ・・・ (1) (2) (3) :XML-RPC :TCPROS master sub pub (4) (5) (6) • 出版者側(publisher): − ROS環境とノードの生成 − masterとtopicへの登録 − メッセージの出版 • 購読者側(subscriber): − ROS環境とノードの生成 − masterとtopicへの登録 − (メッセージの購読時) コールバック関数の実行 • API仕様の詳細: http://docs.ros.org/api/roscpp/html/
  • 14. Tools • catkin_tools: プロジェクト構成/ビルドシステム • rqt: Qtベースのデバッグフレームワーク • gazebo: 3D物理シミュレーションツール • rviz: 可視化ツール − 他にもroslaunch, rosbagなど,,, 14
  • 15. Capabilities • ROSパッケージ − ロボットの有用な機能がまとめられたライブラリの集合 − 2,000以上のパッケージが公開されている https://index.ros.org/packages/ − 利点:既存資産として活用できる コンポーネント指向開発を実現できる • 公式サポートの言語(ROS 1):C++, Python, LISP 15 パッケージ名 内容 tf ロボットの3次元座標と連鎖関係,時間の管理 teleop ロボットの移動方向の操作 usb_cam USBカメラの画像の取り込み Navigation 地図ベースの自己位置推定と経路計画のアルゴリズム MoveIt マニピュレーションの制御アルゴリズム
  • 16. Ecosystem • オンラインのコミュニティ − ROS Wiki: 各種文書の公開,パッケージ配布 − ROS Answers: Q&Aページ − ROS Discourse: リリースやイベントのアナウンス • オフラインのコミュニティ − ROSCon: 世界規模の開発者会議(最近はlocal confも) − SIG meetups, tutorial/workshop, local events, etc.,,, 16
  • 17. ROS around the world!! 17 http://download.ros.org/downloads/ metrics/metrics-report-2019-07.pdf
  • 18. ROSの歴史 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 18 1st commit to SourceForge (Nov. 2007) https://sourceforge.net/p/ros/code/1/log/?path= http://www.ros.org/news/ 2017/11/ros-turns-10.html ROS 1.0 released http://wiki.ros.org/Distributions ROS 2 Alpha released https://index.ros.org /doc/ros2/Releases/
  • 20. 学習用ロボット:TurtleBot3 • ROS公式の研究・教育用ロボット組立キット − テーブルトップでROSやSLAMの学習が出来る − OSRF (Open Robotics)からのリクエストで誕生 − 改造の自由度が高く、ROS対応ロボット作成が容易 20
  • 21. ROSのユースケースの変遷 • 単体ロボット • ワークステーション級の 計算資源 • 非リアルタイムな制御 • 理想的かつ安定的な ネットワーク環境 • 研究用途 21 • 複数ロボット(協調動作) • 組込み規模での 動作実現の要求 • リアルタイム制御 • 不安定なネットワーク環境 (遅延や損失への対応) • 実製品への適用 ROSをver.2として フルスクラッチから 開発し直す!
  • 22. ROS 2の新機能 • DDS (Data Distribution Service) • Quality of service • Lifecycle state machine • Actions • Intra-process communication • ros1bridge • colcon build tool • Python launch system • Multi platform support 22
  • 23. ROS 2のソフトウェア構造 23 node.cpp rclcpp node.py rclpy RCL(ROS Client Library) RMW(ROS MiddleWare) DDS HW node.java rcljava ・・・ • 出版購読通信を提供 • ノード自動検出 など DDSはOMG標準仕様として規定 複数のDDSの通信機能を 抽象化するAPI層 • 共通の基盤機能 • 実装はC言語 • 各言語から呼び出すことで ライブラリを開発可能
  • 25. ROS 2対応DDSの実装 Middleware Library Provider Support ライセンス・備考等 rmw_fastrtps_cpp eProsima Fast-RTPS Tier 1 Apache 2.0,ROS 2デフォルト, 軽量実装 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), 高性能・高信頼な評価結果 rmw_opensplice_cpp ADLINK OpenSplice Tier 2 商用/オープン(機能制限, Apache 2.0), PFサポートは限定的,Foxyで対象外 rmw_fastrtps_ dynamic_cpp eProsima Fast-RTPS Tier 2 Apache 2.0,型の実行時の解釈・変換 (type introspection)をサポート 25 REP-2000 を基に 作成・整理 • 実装機能やライセンス形態で複数のDDSから通信層を選択できる • 異種DDSを選択したノード間で通信できる(rmw層で抽象化) − Tier 1: Open Robotics公式の手厚いサポート − Tier 2: 公式だが限定的なサポート
  • 26. QoS Control • 通信経路の品質を指定する − Pub/Sub node間で互換性が必要 (SubのQoSプロファイルのほうが厳しい必要がある) • 指定できるパラメータの例 (下線はデフォルト設定) − History (履歴): Keep last (任意の値数を保持) or Keep all − Depth (深さ): Size of the queue (Keep lastの個数 10) − Reliability (信頼性): Best effort or Reliable (リトライ試行) − Durability (耐久性): Transient local or Volatile (遅延非許容) 26https://index.ros.org/doc/ros2/Concepts/About-Quality-of-Service-Settings/ Profile History policy Reliability Durability Default Keep last 10 Reliable Volatile Services Keep last 10 Reliable Volatile Sensor data keep last 5 Best effort Volatile Parameters keep last 1000 Reliable Volatile
  • 27. Lifecycle 27 http://design.ros2.org/ articles/node_lifecycle.html • 基本状態 − Unconfigured − Inactive − Active − Finalized • 遷移状態 − Configuring − Activating − Deactivating − CleaningUp − ShuttingDown − ErrorProcessing  transitionsの通知で 状態遷移する
  • 28. Actions • 非同期送信/同期受信の組合せ − Entities: action server / client − Interface Definition: Goal / Result / Feedback TopicとServiceの名前空間は分離できる 28 http://design.ros2.org/articles/actions.html
  • 29. Intra-Process Comm. • 複数ノードを1プロセスとして動作させること − プロセス内のPub/Sub通信が高速かつ軽量に − ROS 2プログラミングスタイルのベストプラクティス SingleThreadedExecutor によるノード登録と実行 − std::unique_ptr によるゼロコピーと所有権移譲ができる ROS 1のnodeletにあった潜在的バグも解消 29
  • 30. ros1bridge • ROS 1とROS 2を共存させる仕組み • bridgeノードが topic/service の“橋渡し”をする − dynamic_bridge: 双方に同名のトピック/サービスが 存在する時のみブリッジを作成 − static_bridge: 常にブリッジを作成 30
  • 31. colcon build tool • collective construction • colcon = ament + catkin − ament: build for ROS 2 pkgs $ ament build --isolated − catkin: build for ROS 1 pkgs $ catkin_make_isolated --install 31 $ mkdir -p /tmp/workspace/src # Make a workspace directory with a src subdirectory $ cd /tmp/workspace # Change directory to the workspace root $ <...> # Populate the `src` directory with packages $ colcon list -g # List all packages in the workspace and their dependencies $ colcon build # Build all packages in the workspace $ colcon test # Test all packages in the workspace $ colcon test-result --all # Enumerate all test results $ . install/local_setup.bash # Setup the environment to use the built packages $ <...> # Use the built packages TL;DR
  • 32. Python launch system 32 $ ros2 launch demo_nodes_cpp add_two_ints.launch.py
  • 33. Multi Platform Support (Foxy Fitzroy) 33 Arch. Ubuntu Focal (20.04) MacOS Mojave (10.14) Windows 10 (VS20129) Debian Buster (10) OpenEmbedded / WebOS OSE amd64 Tier 1 [d][a][s] Tier 1 [a][s] Tier 1 [a][s] Tier 3 [s] arm64 Tier 1 [d][a][s] Tier 3 [s] Tier 3 [s] arm32 Tier 3 [s] Tier 3 [s] Tier 3 [s] • Tier 1: Open Robotics公式の手厚いサポート • Tier 2: 公式だが限定的なサポート − [d]: Debianパッケージとして配布 − [a]: 必要パッケージが含まれたアーカイブとして配布 − [s]: ソースからビルドが必要 • Tier 3: コミュニティお任せのサポート • ベアメタルな組込み環境の対応も進行中(micro-ROS)
  • 34. ROS versionとdistribution 34 http://wiki.ros.org/Distributions https://index.ros.org/doc/ros2/Releases/ distribution Release EOL date Ubuntu Kinetic Kame 2016/05/23 April, 2021 Xenial (16.04) Melodic Morenia 2018/05/23 May, 2023 Bionic (18.04) Noetic Ninjemys 2020/05/23 May, 2025 Focal (20.04) Dashing Diademate 2019/05/31 May, 2021 Bionic (18.04) Eloquent Elusor 2019/11/22 Nov, 2020 Bionic (18.04) Foxy Fitzroy 2020/06/05 May, 2023 Focal (20.04) Galactic Geochelone May 2021 TBD TBD • NoeticがROS 1の最終リリース(念願の?Python 3対応) • 2020年6月よりROS 2 Rolling Ridley Distributionが導入 − 継続的かつ頻繁な更新 特に開発者向け
  • 37. ROS 1 vs. ROS 2 • ROS 2はまだまだ発展途上 − Foxyはほぼほぼ決定版? • 既存パッケージを使いたいならROS 1 これからスクラッチ開発ならROS 2 − あとは,今後の強みとしたいなら当然ながらROS 2 • 使いたい機能が熟れてきたらROS 2移行すべき − rosbag,MoveIt,リアルタイム制御,セキュリティ,,, • ROS 1の寿命はあと1~2年と言って差し支えない? − Python 2/3問題も考慮すべき (MelodicはPython 2) Python 2.7 will not be maintained past 2020. https://pythonclock.org 37
  • 38. distributionの選択 • ROS 1については,パッケージの充実度による − 使いたいパッケージがあるか? 依然としてKineticが充実 − Melodicはまだまだこれから (Ubuntu 18への追従も大変) • ROS 2については, 新しいほうが当然良い − コア機能の安定度が どんどん向上してきている − アプリ設計に直結する大きな 仕様変更が発生することも 38
  • 39. ROSの開発体制 • Open Roboticsが中心的に牽引 • Technical Steering Committeeが主導 − ロードマップの策定やコア機能など − ROS 2の開発に貢献している組織の技術者により編成 いわゆるIT業界のBig Tech ロボティクス業界の有名企業 半導体やOSやDDSのトップベンダ など − 特定トピックに特化したWGsも編成されている • 品質保証を重視した開発プロセスの採用 − アジャイル:Kanbanによるプロジェクト進行の可視化 − テスト駆動:継続的インテグレーション(CI)の適用 39
  • 40. ROSの商用展開 • ROSのライセンス形態 − コアモジュール・コンポーネント ROS1: BSD # 修正・再利用・再配布可 ROS2: Apache 2.0 # より商用利用向き − 個別パッケージ: OSI認証のものを独自に設定可能 (GPL, LGPLもあり) • ROSは商用製品に利用できるか? − Yes!! ROS 1での採用事例もあり − ROS-Industrial が商用利用を牽引 − ROS 2は通信層がOMG標準 − 機能安全対応や開発プロセス認証も加速中 40 http://aibo.sony.jp/
  • 41. まとめ • ROS is not just framework, but design platform for robots!! − ロボットシステムの開発と“つながる”を加速化 − ROS 2の開発が鋭意進行中 Let’s contribute!! 41 お気軽にご連絡ください! takase@i.kyoto-u.ac.jp Twitter: @TAKASEhideki
  • 42. 参考情報:書籍 • 小倉 崇:ROSではじめるロボットプログラミング − まずはじめに読むべき書籍!バージョンと情報は古いので注意 • 表 允皙 ほか:ROSロボットプログラミングバイブル − TurtleBot3を片手に進める場合の良書 • 上田 隆一:Raspberry Piで学ぶROSロボット入門 − ラズパイマウスを片手に進める場合の良書 • 西田 健 ほか:実用ロボット開発のための ROSプログラミング − 中級向け ロボット開発をなにか実践して から読むのが有用 • 近藤 豊:ROS2ではじめよう 次世代ロボットプログラミング − 世界初 && 最も充実したROS 2の解説本! 42
  • 43. 参考情報:Web解説 • ROS Tutorials http://wiki.ros.org/ROS/Tutorials • ROS 2 Tutorials https://index.ros.org/doc/ros2/Tutorials/ • ROS講座 (on Qiita) https://qiita.com/srs/items/5f44440afea0eb616b4a • Yutaka Kondo: Getting Started with ROS 2 / DDS, ROS Japan User Group #27, Dec 2018. https://speakerdeck.com/youtalk/dds • Geoffrey Biggs: 次世代ロボットフレームワークROS2の紹介, 第20回 組込みシステム技術に関するサマーワークショップ (SWEST20), 2018年8月. https://swest.toppers.jp/SWEST20/program/s2a.html#s2 • Geoffrey Biggs: ROS Japan ユーザグループ 講習会 ~ ROS 2 の紹介 ~ https://gbiggs.github.io/rosjp_ros2_intro/index.html https://github.com/gbiggs/rosjp_ros2_basics • TIER IV ACADEMY 自動運転システム構築塾 Day 2 ROS演習 ROS演習3:ROS 2.0の最新動向について http://4c281b16296b2ab02a4e0b2e3f75446d.cdnext.stream.ne.jp/randc/mirai/2- 3_ros2_LP.pdf 43
  • 44. 参考情報:引用 • Tully Foote: ROS Community Metrics Report, Jul 2018. http://download.ros.org/downloads/metrics/metrics-report-2018- 07.pdf • Dirk Thomas, Mikael Arguedas: The ROS 2 Vision -For Advancing the Future of Robotics Development-, ROSCon 2017, Sep 2017. https://roscon.ros.org/2017/presentations/ROSCon%202017%20RO S2%20Vision.pdf • Dirk Thomas, Esteve Fernandez, William Woodall: State of ROS 2 - demos and the technology behind, ROSCon 2015, Oct 2015. https://roscon.ros.org/2015/presentations/state-of-ros2.pdf • ROS 2.0 Design, https://design.ros2.org • ROS 2 Overview, https://index.ros.org/doc/ros2/ 44

Editor's Notes

  1. 初回は2017年12月にKyoto Robotics様で開催(当時は三次元メディア様にて) setoROS 10/13 香川県で開催 内容: World MoveIt Day 2019 in Tokyo 日時: 2019年11月20日(水) 09:30 〜 18:00 場所: オムロンサイニックエックス(東京文京区本郷)
  2. ROS is not just framework, but design platform to accelerate the development of robot systems. There is 4 features for ROS, plumbing, tools, capabilities, and ecosystems. Plumbing means the publish / subscribe messaging infrastructure. ROS offers powerful tools to support configuring, debugging, and visualizing tasks. Capabilities means a broad collection of libraries. Finally, ROS project is organized by the world-wide community. Next, I will explain these features in detail.
  3. The computational unit is expressed as node in ROS application. Nodes can communicate their data through a topic. ROS offers the publish-subscribe messaging infrastructure designed to support the quick and easy construction of distributed computing systems. Master of ROS systems (roscore) manages the communication of ROS nodes. There is two protocols to realize pub/sub communication on the ROS systems. XMLRPC performs the registration for communication. TCPROS/UDPROS is the communication protocol between nodes on TCP/IP or UDP. Synchronous communication is also supported as the ROS function.
  4. Second feature of ROS is powerful tools. The most important tool in development is catkin_tools. It is the command line interface based on cmake for configuring and building ROS systems. Qt-based framework rqt would help you for debugging of systems. For example, rqt_graph such as this picture can indicate the communication structure of nodes and topics. Gazebo is an animation tool for 3D physical behavior. ROS integrates Gazebo's functionality to simulate the interaction for physical world like this figure. Rviz is GUI based visualization tool.
  5. 他にも,C#, Java, Lua, Go, ruby, ,,, ROS also offers a broad collection of libraries that implement useful robot functionality, with a focus on mobility, manipulation, and perception. They are expressed as packages in the ROS platform. Over 2,000 packages have been available as open source. They can enhance the reusability of existing design resource. We can utilize these packages to prevent re-inventing the wheels. In ROS, C++, Python and LISP are officially supported as the ROS client libraries.
  6. ROS is supported and improved by a large community, with a strong focus on integration and documentation. ROS Wiki, Answers and discourse are organized as the online community. ROS Wiki is the official site for documentation and downloading. ROS Answers is a Q&A site like stack overflow. The announcement of release for new packages and related events are posted on ROS Discourse. Of course ROS project employs GitHub to develop the core component and packages. You can join the project by PR, issue, and so on. For the offline event, ROSCon is the most important developers conference for ROS community. ROSCon is held on every year. Over 500 developers participates this conference and discuss the future direction of ROS. All presentation video and slide on ROSCon are available online. Next ROSCon will take place October 31st to November 1st at Macao. ミネソタ シュツットガルト ICRAは5月頃 ICRA: International Conference on Robotics and Automation IROS: International Conference on Intelligent Robots and Systems
  7. OSRF publish the metrics report every year. This figure shows the number of visitors from the world to ROS Wiki. We can understand users of ROS are all around the world. The largest number of users is of course America. China is the second place and Japan is third. This figure is the group photo of ROSCon 18's participants at Madrid. Can you find me from this picture? Maybe I'm around here.
  8. ROS has a history of over 10 years. The project of ROS was started on November 2007., A head of development to ROS is OSRF, stands for Open Source Robotics Foundation. They develop the core component of ROS and maintain the ROS packages. 1st primary version of ROS 1 was released on May 2010. Recently, there is a ROS release every year in May. Releases on even numbered years will be a LTS release, supported for five years. The release number of ROS is attached with a code name derived from a turtle. In 2015, the development of ROS 2 was started and its alpha version was released. I will explain the detail of update for ROS version 2. This picture is a screenshot of web page that states the overview of ROS. I will read out this statement. ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. I t provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under an open source, BSD license. Box Turtle / C Turtle / Diamondback / Electric / Fuertre / Groovy / Hydro / Indigo / Jade / Kinetic Kame / Lunar / Melodic Melodic Morenia / Kinetic Kame / Indigo Igloo Ardent Apalone (Dec 2017) Bouncy Bolson (Aug 2018) Crystal Clemmys (Dec 2018) Dashing Diatemata (May 2019)
  9. Robots with ROS have already been everywhere. The most frequently used application of ROS is aerial and ground applications such as drone and autonomous self-driving vehicle. Industrial robots such as robot arm on the factory production line is also important application for ROS. Recently, ROS has been contributing to the development of new fields to robot systems, such as marine and space. ROS can be installed to not only whole robot systems but also respective components such as robot module, board, sensor and motor. We can construct robot systems by using these components with ROS.
  10. ROS began life as the development environment for the Willow Garage PR2 robot. Their primary goal was to provide the software tools that users would need to undertake novel research and development projects with the PR2. At the same time, they wanted ROS to be useful on other robots. So they put a lot of effort into defining levels of abstraction that would allow much of the software to be reused elsewhere. Still, they thought the PR2 use case as follows. Existing a single robot, and it has workstation-class computational resources on board. No real-time requirements or any real-time requirements would be needed in a special-purpose manner. There is excellent network connectivity that means wired or close-proximity high-bandwidth wireless. And they thought ROS user's main applications are in research. However, the use case and demand of ROS users have been changing in recent years. Specific interest for the ongoing and future growth of the ROS community are the following use cases. Uses want to build multi-robot systems using the ROS platform. And also, we want small computers, including “bare-metal” micro controllers. In addition, we want to support real-time control directly in ROS, including inter-process and inter-machine communication. We want ROS to behave as well as is possible when network connectivity degrades due to loss and/or delay. Finally, we want to ensure that ROS-based prototypes can evolve into ROS-based products, that are suitable for use in real-world applications. Therefore, we have been started to develop next generation ROS platform from the ground up.
  11. HISTORY: 更新間の値の履歴を保持 ALL(全て) or LAST(任意の数) RELIABIRITY: 通信の信頼性を設定 RELIABLE or BEST_EFFORT DEADLINE period: 許容更新周期を設定
  12. RTI ConnextがNo.1ベンダ 複数スケール対応パッケージ有り スループット少ない 共有メモリ対応 Commercial/Research Debian,OpenEmbeddedは不可,amd64のみ ADLinkは元PrismTechでNo.2ベンダ 基本は商用だが機能制限版がオープン Commercial/LGPLv6.4 Fast-RTPSがデフォルト 軽量でオープンApache-2.0 I/F自身はいずれもApache-2.0 EPLライセンスされたプログラムの受領者は、使用・修正・コピーや、修正したバージョンの配布ができる。 しかし、修正したバージョンを配布する場合はソースコードの入手方法を示すなどの義務が生じる。GPLよりコピーレフトが弱い. _dynamicはros_type_introspectionをサポート.コンパイル時に不明なメッセージ型でも実行時に解釈とデシリアライズができる. OSRFが独自にFreeRTPSを実装していた時代もあったが開発停止になった ROS Enhancement Proposals (REPs)
  13. HISTORY: 更新間の値の履歴を保持 ALL(全て) or LAST(任意の数) RELIABIRITY: 通信の信頼性を設定 BEST_EFFORT(落とすかも) or RELIABLE(リトライしてでも取りこぼさないようにする) DEADLINE period: 許容更新周期を設定 Durability(耐久性): Transient(対応するReaderが利用可能になるまでWriterは送り続ける) Lifespan: どれくらいの期間、未送信のメッセージを維持するか Deadline: 守るべき最小周期 Liveliness: どの方式のハートビート(生存確認)が必要か
  14. There are 4 primary states: Unconfigured / Inactive / Active / Finalized There are also 6 transition states: Configuring / CleaningUp / ShuttingDown / Activating / Deactivating / ErrorProcessing There are 7 transitions exposed to a supervisory process: create / configure / cleanup / activate / deactivate / shutdown / destroy
  15. メッセージのコピーやシリアライズ,ネットワーク配信が不要になるから. ROS 1のnodeletでは、boost::shared_ptrを用いていましたが、メッセージのPublisherからSubscriberへの所有権の委譲が中途半端で、あるメッセージをPublish後にPublisher側でそのメッセージを書き換えができたりしました。 unique_ptrは指定されたリソースへのポインタの所有権(ownership)を唯一(unique)持っているように振舞うスマートポインタである。auto_ptrを置き換えるものとしてC++に追加された。 unique_ptrはコピー不可能なクラスである。代わりにムーブによって所有権を他のunique_ptr へ譲渡することができる。また、shared_ptrはunique_ptrを受け取るムーブコンストラクタとムーブ代入演算子を持つ。
  16. colcon is a command line tool to improve the workflow of building, testing and using multiple software packages. It automates the process, handles the ordering and sets up the environment to use the packages. catkinはCMake拡張 Pythonベースで実装されていた元祖のrosbuildにあったOS依存性を解消した amentはモノリシックだったcatkinをプラグイン構造に再設計したもの CMakeLists.txtの無い言語のビルドにも対応できるようになった TL;DR: Too long didn’t read 下を全部みるのでしんどい
  17. 表自体の変化:注記追加/arm32追加/Xenial削除
  18. ROS 2 distributionはユーザレベルではまだまだ浸透していない??
  19. ROS 2 distributionはユーザレベルではまだまだ浸透していない??