.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ロボット・ソフトウェア
開発環境 ROS とは何か?
  (ROS: Robot Operating System)
山上俊彦
IoT 事業本部, ACCESS
Toshihiko.Yamakami@access-company.com
2017/03
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 1 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ROS
ロボット開発環境
(OSS)
- モジュラーに作る
(共有可能)
【ロボット OS(Willow Garage が提供 →Open Source Robotics Foundation が維持)】
既存ソフト資産の組み合わせで簡単にロボットソフトが作れる
(座標系、移動計画、3D シミュレータ)
比較的簡単に分散並列システムが作れる
物理エンジンを搭載したシミュレータが使える
センサーを可視化できる
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 2 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ロボット・ソフトウェアには多様な要素技術が必要
地図作成
自己位置同定
経路計画
駆動制御
運動制御
動作計画
信号処理 画像認識
音声認識
発話処理
【ロボット・ソフトウェアに必要な様々な要素技術 (かつては全てカスタムメイド)】
・OSS で既存ソフトウェア資産を活用
・一部分だけを自分の研究で代替可能
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 3 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ロボット OS の簡単な歴史
年代 ロボット OS 概要
2001 Player ロボット制御の OS 非依存のネットワー
クサーバ。GPL ライセンス。
2005 RT ミドルウェア 産総研が作った日本のロボット開発環
境。
2006 Robot Studio Microsoft が無償で提供する Windows 用
ロボット開発ツール。
2007 ROS OS と名前がついているがロボット開発
基盤、通信ライブラリ、ツール群。Standord
大学の AI Lab を起源とし、Willow Garage
が引き継ぎ (2008)、現在は OSRF が維
持 (2013–)。BSD ライセンス。ROS1.0 は
Ubuntu で主に使われる。
2014 V-Sido ソフトバンクグループのアスラテックが
開発する人形ロボット制御基盤。企業向
けライセンスのみ。
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 4 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ROS 1.0 のディストリビューション (A から始まる亀の名)
用語 概要
Hydra 2013 年 5 月リリース。2015 年維持終了。
Indigo 2014 年 7 月リリース。2019 年まで維持。
Jade 2015 年 5 月リリース。2017 年まで維持。
Kinetic Kame 2016 年 5 月リリース。2021 年まで維持。
Lunar Longerhead 2017 年 5 月リリース予定。
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 5 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
用語
用語 概要
ROS Stanford AI Lab から発生したロボット開発ツール群。
現在 ROS 1.0。互換性のない ROS 2.0 へ移行するこ
とが予定されている。
Catkin ROS 1.0 で使われているビルドツール。CMake ベー
ス。ROS 2.0 では amend が使われる予定。
MoveIt! 移動計画プラットフォーム。ROS で使われる。
Gazebo シミューレーションツール。OSRF が開発。ROS1.0
ベースだったが独自色強く移行。ROS とは連携維持。
WIllow
Garage
米国の非営利ロボット開発会社。eGroup 創設の Scott
Hassan が個人資金で 2006 年に創立。ロボットの長
期的産業育成に貢献することを目指す。ロボット
版ペイパルマフィアと呼ばれロボットベンチャー
を輩出。2014 年事業停止 (スピンアウトした有力企
業 (Suitable Technologies) の経営に専念し、ソフトは
OSS として OSRF で開発するため)。
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 6 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ROS の 5 つの意味
モジュラーな
開発環境
(交換可能)
実行環境 プログラ
ミング標準
開発ツール ユーザ
コミュニティ
【ROS の 5 つの意味(通常の OS とは少し意味が異なる)】
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 7 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
「ソフト開発環境」の位置づけ
パッケージ
・Rviz
・tf
ライブラリ
・OpenCV
・PCL
ツール
・turtlesim
・PR2
ROS
Ubuntu
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 8 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
複数パッケージ共存での開発を前提
ワーク
スペース
作成
- パッケージ
作成
- プログラ
ミング
- catkin による
ビルド
- 実行
【開発のステップ】
ワークスペース: パッケージを管理するディレクトリ
パッケージ: プログラム及び関連ファイルの集合
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 9 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ROS の向き・不向き
向いている 向いていない
・研究・オープンソース ・強いセキュリティ
・複数 OS での連携 ・高いスケーラビリティ
・既存研究資源(ソフト)の再活用 ・ミッションクリティカルな用途
・最新成果の実験的リリース ・リリースの長期的安定性
・Ubuntu での開発
・C++ あるいは Python での開発
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 10 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
構造
座標系変換
(交換可能) 移動計画
コミュニ
ケーション
センサー結合
【機能構造】
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 11 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
アーキテクチャ
ノード -
マスター
(最初を仲介)
ノード
【アーキテクチャ:publish/subscribe モデル(トピックで通信)】
・ノード毎に機能を代替可能(移行可能):2 回目以後は P2P 通信
・ツールや環境の統合が自由
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 12 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ROS の相互接続の機能
開発環境 - 言語を越えて
通信形式に変換
【環境としての相互接続の形式】
・開発環境ファイルシステム:統合を容易にするディレクトリ構造
ROS が定義した
データ構造
- プログラムから
通信部分を自動生成
【通信はプログラミング言語独立に定義: プログラム間の相互通信を簡単に実現】
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 13 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
豊富なパッケージ・ツール群 (5000 以上)
【画像】 【可視化・シミュレータ】
・vision_opencv: 画像認識ライブラリ ・rviz: トピック等の可視化
・cv_bridge: 画像データの形式変換 ・mapviz: 2D データの可視化
・ar_track_alvar: マーカーの位置、姿勢を求める ・rqt: GUI ツール
・camera-calibration: カメラキャリブレーション ・rqt_graph: ノード等をグラフ化
・image_view: 画像表示 ・turtlesim: 簡易 2D シミュレータ
・pcl: ポイントクラウドライブラリ ・stdr_simulator: 2D シミュレータ
・gmapping: 2D 地図作成 ・gazebo: 3D シミュレータ
・navigation: ナビゲーション 【通信】
【音声】 ・nodelet: プロセス間通信
・sound_play: 音データの再生等 ・rosserial: シリアル通信
・rospeex: 音声コミュニケーションツール ・rosserial_arduino: Arduino との通信
【デバイス】 【その他】
・joy: ジョイスティックとの接続 ・rosbag: データの記録
・rosbridge: JSON 形式のソケット通信 ・tf: 座標変換、フレーム作成
・usb_cam: usb カメラとの接続 ・ros_control: ロボット用コントローラー
・openni_camera: kinect との接続 ・actionlib: アクションサーバ
・iai_kinect2: Kinect v2 との接続 ・MoveIt!: モーションプランニング
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 14 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ROS2.0 への展望
互換性はないがブリッジは提供される
ROS 1.0 ver 0.4 からの API が変更される
ROS 1.0 の roscpp や rospy はいじらない: 現行 ROS1 エコシステム
の維持
Zeroconf, Protocol Buffers, ZeroMQ (and the other MQs), Redis,
WebSockets, DDS (Data Distribution Service). の利用
Ubuntu ベースだったのが Windows, Mac OS X でもサポート
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 15 / 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
参考文献
「ROSCon 2016 Seoul Day 1: Plan to Win with MoveIt! - Lessons learnt from the Amazon
Picking Challenge 2016    https://vimeo.com/187699449
Operating System ROS 8 years https://www.youtube.com/watch?v=Z70_3wMFO24
What is ROS? https://www.youtube.com/watch?v=t2lIQSBaNcY
Introduction to ROS and MoveIt! https://www.youtube.com/watch?v=eMlGV94c5WU
ROS tutorial #1: Introduction, Installing ROS, and running the Turtlebot simulator.
https://www.youtube.com/watch?v=9U6GDonGFHw
ROS tutorial #2.1: C++ walkthrough of publisher / subscriber lab
https://www.youtube.com/watch?v=2Cmdu6mkxD0
ROS によるロボットソフトウェアの開発
https://www.slideshare.net/yyamauchi/ros-62750941 (2016 年)
詳説 ROS プログラミング –導入から SLAM,Gazebo,Moveit まで–
http://robotics.ait.kyushu-u.ac.jp/books/ROSBOOK_JP.pdf (2015 年)
ROS の概念 http://wiki.ros.org/ja/ROS/Concepts
ROS JAPAN Users Group Meetup 01
https://www.slideshare.net/DaikiMaekawa/ros-meetup-01-33458682 (2014 年)
ロボット開発で注目される「ROS」(Robot Operating System)とは何か (1/3)
http://monoist.atmarkit.co.jp/mn/articles/1504/14/news006.html (2015 年)
ROS ディストリビューション http://wiki.ros.org/Distributions
ロボットの“PARC”「Willow Garage」が撒いた種 (1/4)
http://monoist.atmarkit.co.jp/mn/articles/1607/22/news008.html (2016 年)
Why ROS 2.0? http://design.ros2.org/articles/why_ros2.html
山上俊彦 (ACCESS Confidential) ロボット・ソフトウェア開発環境 ROS とは何か?  (ROS: Robot Operatin2017/03 16 / 16

ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)