ROS (Robot Operating System) を使ったロボットプログラミング

東北大学(6/1より(株)SEQSENSE 兼 明治大学)

渡辺 敦志
http://openspur.org/~atsushi.w/

ROSとは？

ROS (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供しています。具体的には、ハードウェア抽象化、デバイスドライバ、ライブラリ、視覚化ツール、メッセージ通信、パッケージ管理などが提供されています。ROSはオープンソースの一つ、BSDライセンスにより、ライセンス化されています。
引用: http://wiki.ros.org/ja

ロボット開発を楽にするための枠組み

ROS概略ROS Ecosystem
プロセス間通信ライブラリ

ROS コミュニティ

標準のデータ型定義

ユーザーフォーラム
Wiki

メッセージ通信オープンソース
パッケージ群

パラメータサーバ
サービスコール...

機能モジュール

パッケージ管理
依存関係解決WS管理

デバイスのドライバ...

機能フレームワーク

ツール群
可視化

ログ記録/再生シミュレータ...

※ 公式とユーザコミュニティの境界が本当は曖昧な点に注意

ROS概略ROS Ecosystem
プロセス間通信ライブラリ

ROS コミュニティ

標準のデータ型定義

ユーザーフォーラム
Wiki

メッセージ通信
パラメータサーバ

ソフトウェアをサービスコールモジュール化しやすくする...
(マルチプロセス構成)
パッケージ管理
依存関係解決WS管理...

オープンソース
パッケージ群
デバイスのドライバ
機能モジュール
機能フレームワーク

ツール群
可視化

ログ記録/再生シミュレータ...

ROS概略ROS Ecosystem
プロセス間通信ライブラリ

ROS コミュニティ

標準のデータ型定義

ユーザーフォーラム
Wiki

メッセージ通信
パラメータサーバ

既存のソフトウェアを使ってサービスコール
実装の手間を省ける ...
WS管理

デバイスのドライバ
機能モジュール

パッケージ管理
依存関係解決オープンソース
パッケージ群...

機能フレームワーク

ツール群
可視化

ログ記録/再生シミュレータ...

より正確な情報は http://www.ros.org/ から

ROSで動かせるロボットの例

歩行ロボット・移動ロボットとも多くの利用例

ROSで動かせるロボットを使った研究例

Localization of a laser-equipped Nao Humanoid
in complex indoor environments
https://www.youtube.com/watch?v=uiIi2rSKWAU

3D Navigation with the PR2 robot
https://www.youtube.com/watch?v=dblCGZzeUqs

よく使われている機能フレームワーク

Moveit!

move̲base• マニピュレーション、多関節制御• 自律移動MoveIt! Montage 2013

ROS Navigation

https://www.youtube.com/watch?v=dblCGZzeUqs

https://www.youtube.com/watch?v=qziUJcUDfBc

機能のプラグインを組み合わせて多彩な制御を簡単に実装

・ROSについて
・ROSを使った移動ロボットの走行 (実機デモ)・ROSを用いたロボットシステム開発の例
・ROS Moveit!を使った実習型セミナーの紹介(日本ロボット学会)

ROSを使った移動ロボットの走行• 昨年の日本ロボット学会 ロボット工学セミナーで行った実習型セミナーの教材‒ テキストはWeb公開、教材も購入可
https://at-wat.github.io/ROS-quick-start-up/ドライバノード• 搭載デバイスのROSドライバはオープンソースで利用可能
北陽電機 URG-04LX
hokuyo̲node

T-frogプロジェクト TF-2MD3-R6

ypspur̲ros
実機デモ センサデータ表示、走行指令

ジョイパッドでの操作と地図生成• joy, slam̲gmapping パッケージを利用‒ ロボット走行用の地図を作成

実機デモ

作成した地図上での自律移動• navigationメタパッケージ(move̲baseなど)を利用‒ 地図上で指定した位置までぶつからないように移動

実機デモ

ROS概略ROS Ecosystem
プロセス間通信ライブラリ

ROS コミュニティ

標準のデータ型定義

ユーザーフォーラム
Wiki

メッセージ通信オープンソース
パッケージ群

パラメータサーバ

簡単なことなら、既存のサービスコール...
パッケージでできる!
パッケージ管理
依存関係解決WS管理...

デバイスのドライバ
機能モジュール
機能フレームワーク

ツール群
可視化

ログ記録/再生シミュレータ...

・ROSについて
・ROSを使った移動ロボットの走行 (実機デモ)・ROSを用いたロボットシステム開発の例
・ROS Moveit!を使った実習型セミナーの紹介(日本ロボット学会)

ROSを使ったロボットシステム開発の例• プラント点検ロボットのコンペに参加 (2015-17)‒ 模擬プラント内を自律的に移動して計器類を計測

実際にやってみると、既存パッケージでは不十分開発したシステムの概要 (ハードウェア)• クローラ型移動ロボット (6自由度)• 計測・制御のための各種センサ
センサドライバはほとんど既存のパッケージを利用可能 (?)

開発したシステムの概要 (ソフトウェア)
実際に開発を進めると既存パッケージの修正も必要に(ロバスト性を高めようと思うと多くの部分を自作することに)機能毎のモジュール化により開発の分担が容易に(実際は自律制御部分はほとんど渡辺が開発し階段昇降・画像処理の部分を分担)(詳細は今月号の日本ロボット学会誌で！)開発した移動ロボット動作計画パッケージ
常に大域的に経路を計画、近距離は詳細に• Grid-based A*
アルゴリズム‒ ゴールからの距離をヒューリスティ
ック関数に使用計測に応じて必要な範囲のみ更新‒ 3-DOF (x, y, yaw)
(切り返しを含め計算可能)

5 Hz 程度で大域的な経路計画を更新可能

経路追従制御パッケージ• 筑波大 知能ロボット研究室の制御方式を拡張 [Iida, ʻ91]
‒ 線形フィードバック

計画した経路に、なめらかに追従
詳細: https://at-wat.github.io/ROS-quick-start-up/lecture̲1.html

衝突防止パッケージ• 動作予測による速度制限‒ ぶつかりそうなときは、ぶつかる前に止まれるように速度を制御

応答性高く障害物への衝突を抑制

これらのROSパッケージはGitHubで公開中
https://github.com/at-wat/neonavigation/模擬石油プラントでのフィールド試験• ARGOS challenge 2nd competition (2016/4) at
Lacq France• 与えられたミッション‒ ナビゲーション
 地上階から2階までのフロア内を自律移動‒ 計測
 バルブ、圧力計、温度などを自律的に計測

コンペで実際にロボットを動作させた

コンペ会場の地図• 3Dの地図と、そこから2Dの地図を抽出

プラント点検ロボットの動作の様子

走れる場所を検出しながら自律的に移動しカメラ等で計測

プラント点検ロボットのログデータ再生• rosbag ツールで、センサデータなどの記録・再生‒ 実機を動かしているときの状況を再現

Linux PC でログ再生デモROS概略ROS Ecosystem
プロセス間通信ライブラリ

ROS コミュニティ

標準のデータ型定義

ユーザーフォーラム
Wiki

メッセージ通信オープンソース
パッケージ群

パラメータサーバ

モジュール化のしやすさ
サービスコール...
開発補助ツールの充実が強み
パッケージ管理

デバイスのドライバ

依存関係解決機能フレームワーク

WS管理

...

機能モジュール

ツール群
可視化

ログ記録/再生シミュレータ...

・ROSについて
・ROSを使った移動ロボットの走行 (実機デモ)・ROSを用いたロボットシステム開発の例
・ROS Moveit!を使った実習型セミナーの紹介(日本ロボット学会)

ROSは敷居が高い？

• 日本語での情報が少ない (英語はとても充実)
ROS Japan User Group メーリングリスト
http://www.ros-users.jp/

公式チュートリアル
http://wiki.ros.org/ (英語版・推奨)
http://wiki.ros.org/ja/ (日本語版・非推奨)※日本語版は情報が古く、問題が多いので注意

日本ロボット学会などの手っ取り早く始めたい方向けの実習セミナー

日本ロボット学会 第106回ロボット工学セミナー• 「ロボットの作り方」〜ROSを使用した画像処理とマニピュレータ制御〜

産総研 ジェフ先生、愛知県立大 鈴木先生
‒ 2017/06/17(土)~18(日) 定員に達したため申込み終了→ 希望が多くあれば、追加開催の可能性有り

実機の教材があるので始めやすい
http://www.rsj.or.jp/seminar/s106/

ROS概略ROS Ecosystem
プロセス間通信ライブラリ

ROS コミュニティ

標準のデータ型定義

ユーザーフォーラム
Wiki

メッセージ通信
パラメータサーバ

ユーザコミュニティをサービスコール
活用することで ...
開発を効率化
パッケージ管理
依存関係解決WS管理...

オープンソース
パッケージ群
デバイスのドライバ
機能モジュール
機能フレームワーク

ツール群
可視化

ログ記録/再生シミュレータ...

・ROSについて
・ROSを使った移動ロボットの走行 (実機デモ)・ROSを用いたロボットシステム開発の例
・ROS Moveit!を使った実習型セミナーの紹介(日本ロボット学会)