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
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
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
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
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
初回は2017年12月にKyoto Robotics様で開催(当時は三次元メディア様にて)
setoROS 10/13 香川県で開催
内容: World MoveIt Day 2019 in Tokyo
日時: 2019年11月20日(水) 09:30 〜 18:00
場所: オムロンサイニックエックス(東京文京区本郷)
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.
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.
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.
他にも,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.
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 AutomationIROS: International Conference on Intelligent Robots and Systems
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.
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. It 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)
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.
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.
HISTORY: 更新間の値の履歴を保持 ALL(全て) or LAST(任意の数)
RELIABIRITY: 通信の信頼性を設定 RELIABLE or BEST_EFFORT
DEADLINE period: 許容更新周期を設定
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
下を全部みるのでしんどい