Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ROSの活用による
屋外の歩行者空間に適応した
自律移動ロボットの開発
千葉工業大学 未来ロボット技術研究センター
原 祥尭(HARA, Yoshitaka)
ロボット工学セミナー 2015-09-11
つくばチャレンジ2014での自律走行の様子
1
ロボット工学セミナー 2015-09-11
https://youtu.be/FzouCV4_Jnw
Contents 2
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経路...
自律走行に関するパッケージとその機能
3
ロボット工学セミナー 2015-09-11
 slam_gmapping
 地図生成
 navigation
 自己位置推定
 占有格子地図生成、障害物情報の管理
 大域的経路計画
 ...
自律走行に使用できるデバイスとパッケージ
4
ロボット工学セミナー 2015-09-11
 センサ(レーザスキャナ、カメラ、距離画像カメラ、IMUなど)
http://wiki.ros.org/Sensors
 移動ロボット台車...
自律走行を行う際のワークフロー
5
ロボット工学セミナー 2015-09-11
1. ロボットを手動走行させて環境のセンサデータを取得、
bag ファイルとして保存
2. bag ファイルを再生し、slam_gmapping パッケージ...
slam_gmapping パッケージの構成
6
ロボット工学セミナー 2015-09-11
 gmapping:地図生成の実行(ROSラッパー)
 openslam_gmapping:
OpenSLAM で公開されている Rao-Bl...
OpenSLAM とは
7
ロボット工学セミナー 2015-09-11
 SLAM の各種アルゴ
リズムをオープンソースで
公開する Web サイト
 EKF, RBPF, Graph-
based SLAM, ICP
マッチングな...
navigation パッケージの構成
8
ロボット工学セミナー 2015-09-11
 map_server:地図の提供
 amcl:自己位置推定
 move_base:移動タスクの実行
 costmap_2d:コストマップの生...
nav_core によるパッケージの入れ替え
9
ロボット工学セミナー 2015-09-11
 ヘッダファイルでのインタフェース定義のみ(純粋仮想関数)
 大域的経路計画:BaseGlobalPlanner
 局所的動作計画:Bas...
入れ替え可能なパッケージとそのアルゴリズム
10
ロボット工学セミナー 2015-09-11
 大域的経路計画(BaseGlobalPlanner)
 navfn:ダイクストラ法
 global_planner:A*/ダイクス...
標準で使用されるアルゴリズムの詳細
11
ロボット工学セミナー 2015-09-11
 地図生成(gmapping)
Rao-Blackwellized Particle Filter による Grid-
based SLAM(FastS...
Contents 12
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経...
Bayes Filter による自己位置推定
13
ロボット工学セミナー 2015-09-11
 ロボットの自己位置の確率分布を求める
 地図は事前に与えられている
地図:m スキャン計測:zt
自己位置
(時刻t-1):xt-1
真の自己...
最尤推定、最大事後確率推定、ベイズ推定
14
ロボット工学セミナー 2015-09-11
自己位置:xt
確率密度:p(xt)
尤度 p(zt|xt,ut)
(スキャンなど:zt)
ベイズ推定
事後確率の分布を推定
最大事後確率推定
事後確...
確率的自己位置推定の隠れマルコフモデル
15
ロボット工学セミナー 2015-09-11
xt-1 xt
ut-1 ut
zt-1 zt
m
自己位置推定のグラフィカルモデル
map: m
xt+1
ut+1
zt+1
robot pos...
Bayes Filter の定式化
16
ロボット工学セミナー 2015-09-11
 漸化式で時系列の確率過程を表現
 Extended Kalman Filter、Histogram Filter など
はすべて Bayes Filte...
Bayes Filter の数学的導出
17
ロボット工学セミナー 2015-09-11
時刻tの自己位置xtの事後確率
尤度
(計測モデル)
事前確率
動作モデル 時刻t-1の自己位置xt-1
ベイズの定理
条件付き独立性
(過去には非依存)...
ベイズの定理の適用
18
ロボット工学セミナー 2015-09-11
 ベイズの定理
 条件付きベイズの定理
 自己位置推定に適用 x:ロボット位置
m:地図
u:制御動作(オドメトリ)
z:環境計測(レーザスキャン)
ROSパッ...
マルコフ性の仮定と条件付き独立性の適用
19
ロボット工学セミナー 2015-09-11
1次マルコフ性を仮定
 現在の状態は、1時刻前の状態にだけ依存
 それ以前の状態や他のデータとは独立
現在の環境計測ztは、現在の状態である自己位置x...
全確率の定理の適用
20
ロボット工学セミナー 2015-09-11
 全確率の定理
 条件付き全確率の定理
 自己位置推定に適用
隠れ変数xt-1を導入
x:ロボット位置
m:地図
u:制御動作(オドメトリ)
z:環境計測(レーザ...
Particle Filter の定式化
21
ロボット工学セミナー 2015-09-11
 Bayes Filter の一種だが、定式化は若干異なる
 各パーティクルは、時刻tの自己位置だけでなく、
時刻1から時刻tの走行軌跡を保持する...
Particle Filter の数学的導出
22
ロボット工学セミナー 2015-09-11
時刻1からtの走行軌跡xt:tの事後確率
尤度
(計測モデル)
事前確率
動作モデル 時刻1からt-1の走行軌跡x1:t-1
ベイズの定理
条件付き...
乗法定理の適用(Particle Filter の場合)
23
ロボット工学セミナー 2015-09-11
 乗法定理(条件付き確率)
 条件付き乗法定理(3変数での条件付き確率)
 自己位置推定に適用
x:ロボット位置
m:地図
u:...
Adaptive Monte Carlo Localization
24
ロボット工学セミナー 2015-09-11
 Particle Filter による2次元3自由度での確率的
自己位置推定(Monte Carlo Localizati...
Adaptive Monte Carlo Localization
25
ロボット工学セミナー 2015-09-11
処理イメージ(平面図)
時刻:t-1
パーティクルによって表される
ロボット位置の複数仮説
1. 予測
:ロボット位置...
Adaptive Monte Carlo Localization
26
ロボット工学セミナー 2015-09-11
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
処理イメージ(平面図)
スキャンと占有格子地図...
Adaptive Monte Carlo Localization
27
ロボット工学セミナー 2015-09-11
3. リサンプリング
処理イメージ(平面図)
:尤度
 尤度の高いパーティクルは
自身のコピーを多く残す
 尤度...
Contents 28
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経...
Rao-Blackwellized Particle Filter の定式化
29
ロボット工学セミナー 2015-09-11
ロボット走行軌跡 x1:t
Particle Filter で推定
地図 m
Binary Bayes Filte...
提案分布における最適化計算の利用
30
ロボット工学セミナー 2015-09-11
:ロボット位置
真値
スキャンマッチングで
真値に近付ける
真値
多数のパーティクルによる提案分布
(高精度だが計算コスト大)
少数のパーティクルと最適...
Rao-Blackwellized Particle Filter SLAM
31
ロボット工学セミナー 2015-09-11
処理イメージ(平面図)
時刻:t-1
パーティクルによって表される
ロボット位置の複数仮説
1. 予測
:ロホ...
Rao-Blackwellized Particle Filter SLAM
32
ロボット工学セミナー 2015-09-11
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
処理イメージ(平面図)
スキャンを占...
Rao-Blackwellized Particle Filter SLAM
33
ロボット工学セミナー 2015-09-11
3. リサンプリング
処理イメージ(平面図)
:尤度
 尤度の高いパーティクルは
自身のコピーを多く残す...
Rao-Blackwellized Particle Filter SLAM
34
ロボット工学セミナー 2015-09-11
4.地図生成
処理イメージ(平面図)
Rao-Blackwellization により各パーティクルごとにそれぞ...
Contents 35
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経...
自律走行時のデータの流れ
36
ロボット工学セミナー 2015-09-11
http://wiki.ros.org/move_base
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
costmap_2d によるコストマップの生成
37
ロボット工学セミナー 2015-09-11
 レーザスキャンまたは3次元点群のデータを用いて、
2次元/3次元の占有格子地図を生成
 レイキャスティングにより、占有/フリー/未知...
costmap_2d によるコストマップの生成
38
ロボット工学セミナー 2015-09-11
http://wiki.ros.org/costmap_2d
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
コストマップを生成する枠組み
39
ロボット工学セミナー 2015-09-11
 ROS Hydro 以降、costmap_2d の構成が変更
http://wiki.ros.org/costmap_2d
http://wiki.ros.o...
自律走行時のデータの流れ
40
ロボット工学セミナー 2015-09-11
http://wiki.ros.org/move_base
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
navfn の大域的経路計画
41
ロボット工学セミナー 2015-09-11
 Navigation Function と呼ばれるポテンシャル場で評価
 ゴールまでの距離と障害物からの距離をコストとする
 グローバルコストマッフ...
navfn による大域的経路計画の例
42
ロボット工学セミナー 2015-09-11
グローバルパス
スタート
5 m
グローバル
コストマップ
ゴール
障害物から離れた経路を計画
ROSパッケージ アルゴリズム 開発情...
ダイクストラ法とA*の違い
43
ロボット工学セミナー 2015-09-11
 ダイクストラ法
幅優先探索をコストを評価するよう
に拡張した、最良優先探索と呼ば
れる手法の一種
 A*(A-Star)
ヒューリスティック関数でコストの予...
自律走行時のデータの流れ
44
ロボット工学セミナー 2015-09-11
http://wiki.ros.org/move_base
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
base_local_planner の局所的動作計画
45
ロボット工学セミナー 2015-09-11
 大域的経路計画によるグローバルパスに追従しつつ、
障害物を回避する動作(速度)を計画
 Dynamic Window Appr...
Dynamic Window Approach
46
ロボット工学セミナー 2015-09-11
平面図
ロボット位置
ローカルパス
候補
グローバルパス
障害物
並進速度 v
回転角速度ω
最大速度範囲
Dynamic Window...
DynamicWindowApproachのコスト評価関数
47
ロボット工学セミナー 2015-09-11
軌跡コスト =
経路距離スケール × ローカルパス端点とグローバルパスの距離
+ ゴール距離スケール × ローカルパス端点...
自律走行時のデータの流れ
48
ロボット工学セミナー 2015-09-11
http://wiki.ros.org/move_base
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
スタックした場合の復帰動作の状態遷移
49
ロボット工学セミナー 2015-09-11
http://wiki.ros.org/move_base
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
Contents 50
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経...
slam_gmapping, navigation にない機能
51
ロボット工学セミナー 2015-09-11
 3次元空間の地図生成(SLAM)
 Graph-based SLAM
 PF による3次元6自由度での自己位置推定
(EK...
自律走行の実現に役立つチュートリアルページ
52
ロボット工学セミナー 2015-09-11
 ROS 概要
http://wiki.ros.org/ROS/StartGuide
 ROS 基本チュートリアル(プロセス間通信、開発ツー...
画面分割できるターミナル Terminator
53
ロボット工学セミナー 2015-09-11
screen / tmux のような画面分割を簡単に利用可能
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
CMake を開ける統合開発環境 Qt Creator
54
ロボット工学セミナー 2015-09-11
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
Contents 55
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経...
つくばチャレンジとは
56
ロボット工学セミナー 2015-09-11
 公道(歩道)での自律走行実証実験(7~11月)
 主催:つくばチャレンジ実行委員会、つくば市
 Competition ではなく Challenge
 スピードは...
つくばチャレンジ2014走行コース
57
ロボット工学セミナー 2015-09-11
 走行距離 1.4 km 以上の人通りのある実環境で
の自律走行
 探索対象(人、看板)の発見と接近
ROSパッケージ アルゴリズム 開発情報 つ...
つくばチャレンジでの ROS の利用状況
58
ロボット工学セミナー 2015-09-11
2007 2008 2009 2010 2011 2012 2013 2014
参加
台数 33 50 72 70 69 36 47 54
完走 3 ...
開発したロボットの外観と搭載センサ
59
ロボット工学セミナー 2015-09-11
2D-LIDAR #5, #6
(水平、左右)
2D-LIDAR #2, #3, #4
(ピッチ・ロール傾斜)
2D-LIDAR #1
(水平、前方)
IM...
ロボットの外観(正面図、側面図)
60
ロボット工学セミナー 2015-09-11
30 deg
30 deg
1390 mm
320 mm
830 mm600 mm
710 mm
1480 mm
1420 mm
280 mm
30 deg
R...
新しく実装した機能
61
ロボット工学セミナー 2015-09-11
 広大/見通しの悪い環境に対応した地図生成
 地図生成時に教示経路の Waypoints を自動生成
 IMUを用いたジャイロオドメトリ
 3次元点群を用いた段差...
現在のセンサデータだけではマッチングに失敗する
62
ロボット工学セミナー 2015-09-11
 地図と充分に重なるスキャンを計測することが重要
 センサ視野が足らずに形状が不足して安定しない
地図:m
平面図
スキャン計測
(時刻t...
従来手法(現在のスキャンのみ)で生成した地図
63
ロボット工学セミナー 2015-09-11
歪みが発生
経路のループが
閉じていない
地図が歪んで矛盾が生じている
二重にずれている
ROSパッケージ アルゴリズム 開発情報 つくば...
従来手法の隠れマルコフモデルは現在データのみ
64
ロボット工学セミナー 2015-09-11
xt-1 xt
ut-1 ut
zt-1 zt
m
従来の SLAM のグラフィカルモデル
map: m
(hidden variable)...
過去のデータを活用して情報量を増やすアイデア
65
ロボット工学セミナー 2015-09-11
 複数回のスキャン計測を蓄積して充分な形状を得る
 形状が充分ならばマッチングが幾何学的に安定する
地図
平面図
ロボット位置
(時刻t...
走行軌跡の不確実性を考慮したスキャンの蓄積
66
ロボット工学セミナー 2015-09-11
 真の走行軌跡は分からない
 不確実性を考慮して確率的に扱う必要がある
地図
平面図
ロボット位置
(時刻t-K+1) ロボット位置
(時刻t...
蓄積スキャンで過去を考慮する隠れマルコフモデル
67
ロボット工学セミナー 2015-09-11
xt-1 xt
ut-1 ut
zt-1 zt
m
過去のスキャンを考慮した SLAM のグラフィカルモデル
map: m
(hidden ...
過去を考慮した RBPF SLAM の定式化
68
ロボット工学セミナー 2015-09-11
x:ロボット位置 m:地図
u:制御動作(オドメトリ) z:環境計測(レーザスキャン)
ロボット走行軌跡(自己位置)と地図と
蓄積したスキャ...
過去を考慮したParticle Filter の数学的導出
69
ロボット工学セミナー 2015-09-11
乗法定理
時刻1からtの走行軌跡x1:tと蓄積スキャンz~1:tの
同時確率
条件付き独立性
通常のParticleFilterの導出...
最尤パーティクルが持つスキャンデータの例
70
ロボット工学セミナー 2015-09-11
10 m
1回のスキャンデータ 蓄積したスキャンデータ
ロボット位置
平面図
ロボットの走行経路
生け垣
生け垣
ROSパッケージ アル...
レーザのビームモデルを考慮した蓄積
71
ロボット工学セミナー 2015-09-11
 レーザが通過した部分は自由空間であるはず
 移動障害物は測定距離を短くする(長くはしない)
平面図
ロボット位置
(時刻t-1) ロボット位...
過去5秒間のスキャンを利用して生成した地図
72
ロボット工学セミナー 2015-09-11
矛盾がなく整合性の取れた地図が生成できた
450 m
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
Waypoints の生成方法
73
ロボット工学セミナー 2015-09-11
 Rao-Blackwellized Particle Filter は時刻1からt
の走行軌跡も推定する完全 SLAM であり、各
パーティクルは軌跡の情報...
自律走行時のソフトウェアの構成図
74
ロボット工学セミナー 2015-09-11
Linux PC
LIDAR
Handler
IMU
Occupancy
Grid MapLIDAR
Handler
IMU
Handler
Obstacle
...
自律走行時のソフトウェアの rqt_graph
75
ロボット工学セミナー 2015-09-11
rqt_graph:ROSシステムの実際の接続構成を示すグラフ
全体で動いているプロセスは20個以上
ROSパッケージ アルゴリズム 開...
自律走行時の処理結果の可視化
76
ロボット工学セミナー 2015-09-11
ロボット位置
(パーティクル)
障害物
(人)
障害物
(ベンチ)
検出した看板
(探索対象)
計画した経路
走行軌跡
レーザスキャン
検出した障害物
(衝...
Adaptive Monte Carlo Localization (AMCL)
77
ロボット工学セミナー 2015-09-11
ロボット位置
(パーティクル)
レーザスキャン
ロボット
1 m
ROSパッケージ アルゴリズム...
AMCL が人混みなどでもロバストな理由
78
ロボット工学セミナー 2015-09-11
 最尤推定の枠組みであるスキャンマッチングの最適化計算
を行わないため、過信による推定誤りをしにくい
 動作モデルによる事前確率に基づいてパ...
AMCL による自己位置推定(人混み1)
79
ロボット工学セミナー 2015-09-11
ロボット位置
(パーティクル)
レーザスキャン
1 m
ロボット
人混み
(地図にない物体)
ROSパッケージ アルゴリズム 開発情報 ...
AMCL による自己位置推定(人混み2)
80
ロボット工学セミナー 2015-09-11
ロボット位置
(パーティクル)
レーザスキャン
ロボット
1 m
人混み
(地図にない物体)
ROSパッケージ アルゴリズム 開発情報 ...
AMCL による自己位置推定(平坦な壁)
81
ロボット工学セミナー 2015-09-11
ロボット
ロボット位置
(パーティクル)
レーザスキャン
1 m
長手方向に広がる
ROSパッケージ アルゴリズム 開発情報 つくばチャ...
衝突高さ判定と段差判定による障害物検出
82
ロボット工学セミナー 2015-09-11
 ロボットと衝突する高さの点群と、地面より低い
点群(下り階段など)を高さで判定
 地面付近の点群を段差判定(近傍点との差分)
ロボット位置
(パ...
Global Dynamic Window Approach
83
ロボット工学セミナー 2015-09-11
目標地点
(ウェイポイント)
走行軌跡グローバルパス
(ダイクストラ法)
ローカルパス
(Dynamic Window
...
目標経路上の障害物を回避する様子
84
ロボット工学セミナー 2015-09-11
https://youtu.be/JgUn1YL5jjM
ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
つくばチャレンジ2014の結果
85
ロボット工学セミナー 2015-09-11
 本走行
 完走+探索課題達成、つくば市長賞
 走行距離:1,482 m、走行時間:58分間
 実験走行と本走行での完走率
 完走:8回/10回
 課...
Contents 86
ロボット工学セミナー 2015-09-11
1. 自律走行を実現するための ROS パッケージ
2. 実装されているアルゴリズム
a. 自己位置推定(amcl)
b. 地図生成(gmapping)
c. 大域的経...
まとめ
87
ロボット工学セミナー 2015-09-11
 slam_gmapping, navigation パッケージの構成
 実装されている各アルゴリズムについて解説
 自己位置推定:Adaptive Monte Carlo...
参考文献
88
ロボット工学セミナー 2015-09-11
 ROS Wiki
http://wiki.ros.org/
 友納 正裕: “移動ロボットのための確率的な自己位置推定と
地図構築”, 日本ロボット学会誌, vol.29, ...
謝辞
89
ロボット工学セミナー 2015-09-11
 つくばチャレンジにおいて研究開発を共に行った
チームメンバーの皆さま(西田 貴亮,熊田 大輔,安藤
大和,渡邉 涼,兼井 宏嘉)と 坪内 孝司 先生
(筑波大)に感謝致します
 ...
Upcoming SlideShare
Loading in …5
×

ROSの活用による屋外の歩行者空間に適応した自律移動ロボットの開発

21,862 views

Published on

日本ロボット学会 第94回ロボット工学セミナー「ロボット用オープンソースソフトウェアとその実用例」講演資料

Published in: Technology
  • 開発に役立つ情報を、次の資料に記載しました。 https://www.slideshare.net/hara-y/ros-nav-rsj-seminar
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ROSの活用による屋外の歩行者空間に適応した自律移動ロボットの開発

  1. 1. ROSの活用による 屋外の歩行者空間に適応した 自律移動ロボットの開発 千葉工業大学 未来ロボット技術研究センター 原 祥尭(HARA, Yoshitaka) ロボット工学セミナー 2015-09-11
  2. 2. つくばチャレンジ2014での自律走行の様子 1 ロボット工学セミナー 2015-09-11 https://youtu.be/FzouCV4_Jnw
  3. 3. Contents 2 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  4. 4. 自律走行に関するパッケージとその機能 3 ロボット工学セミナー 2015-09-11  slam_gmapping  地図生成  navigation  自己位置推定  占有格子地図生成、障害物情報の管理  大域的経路計画  局所的動作計画(障害物回避) 自律走行に必要な機能をひととおり提供、 C++で実装されている ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  5. 5. 自律走行に使用できるデバイスとパッケージ 4 ロボット工学セミナー 2015-09-11  センサ(レーザスキャナ、カメラ、距離画像カメラ、IMUなど) http://wiki.ros.org/Sensors  移動ロボット台車 http://wiki.ros.org/Robots  T-frog i-Cart mini(T-frog モータコントローラ):約28万円 http://t-frog.com/  Doog TEC-1(T-frog モータコントローラ):約8万円 http://www.doog-inc.com/  T-frog モータコントローラ ROS 対応パッケージ  ypspur_ros_bridge 速度指令、オドメトリの情報を YP-Spur と中継するシンプル構成  open-rdc icart_mini ros_control を使用、Gazebo によるシミュレーション可能 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  6. 6. 自律走行を行う際のワークフロー 5 ロボット工学セミナー 2015-09-11 1. ロボットを手動走行させて環境のセンサデータを取得、 bag ファイルとして保存 2. bag ファイルを再生し、slam_gmapping パッケージ を使用してオフラインで地図生成(オンラインも可能) 3. 生成した地図に基づき、navigation パッケージ を使用して自律走行 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  7. 7. slam_gmapping パッケージの構成 6 ロボット工学セミナー 2015-09-11  gmapping:地図生成の実行(ROSラッパー)  openslam_gmapping: OpenSLAM で公開されている Rao-Blackwellized Particle Filter による Grid-based SLAM (FastSLAM 2.0 での Grid Mapping) slam_gmapping gmapping openslam_gmapping メタパッケージ パッケージ (実行ファイル) パッケージ (ソースのみ) 凡例 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  8. 8. OpenSLAM とは 7 ロボット工学セミナー 2015-09-11  SLAM の各種アルゴ リズムをオープンソースで 公開する Web サイト  EKF, RBPF, Graph- based SLAM, ICP マッチングなど複数の 手法の実装あり  研究者が各手法を 比較するために公開  ライブラリではない ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  9. 9. navigation パッケージの構成 8 ロボット工学セミナー 2015-09-11  map_server:地図の提供  amcl:自己位置推定  move_base:移動タスクの実行  costmap_2d:コストマップの生成  nav_core:行動インタフェース定義  navfn:大域的経路計画  base_local_planner:局所 的動作計画  *_recovery:スタックした場合 の復帰動作 navigation move_base map_server amcl nav_core navfn base_local_planner clear_costmap_recovery rotate_recovery costmap_2d メタパッケージ パッケージ (実行ファイル) パッケージ (ソースのみ) 凡例 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  10. 10. nav_core によるパッケージの入れ替え 9 ロボット工学セミナー 2015-09-11  ヘッダファイルでのインタフェース定義のみ(純粋仮想関数)  大域的経路計画:BaseGlobalPlanner  局所的動作計画:BaseLocalPlanner  スタック復帰動作:RecoveryBehavior  実装は move_base のパラメータで実行時に変更可能  ROS の pluginlib という機能で実現されている ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  11. 11. 入れ替え可能なパッケージとそのアルゴリズム 10 ロボット工学セミナー 2015-09-11  大域的経路計画(BaseGlobalPlanner)  navfn:ダイクストラ法  global_planner:A*/ダイクストラ法  carrot_planner:ゴールに向かって直進  局所的動作計画(BaseLocalPlanner)  base_local_planner:Dynamic Window Approach  dwa_local_planner:Dynamic Window Approach の別実装  スタック復帰動作(RecoveryBehavior)  clear_costmap_recovery:コストマップをクリア  rotate_recovery:ロボットが回転して障害物を測定  move_slow_and_clear:コストマップをクリア、移動速度を制限 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  12. 12. 標準で使用されるアルゴリズムの詳細 11 ロボット工学セミナー 2015-09-11  地図生成(gmapping) Rao-Blackwellized Particle Filter による Grid- based SLAM(FastSLAM 2.0 での Grid Mapping)  自己位置推定(amcl) Adaptive/Augmented Monte Carlo Localization  経路計画(move_base) Global Dynamic Window Approach  大域的経路計画(navfn) Navigation Function に基づくダイクストラ法  局所的動作計画(base_local_planner) Dynamic Window Approach ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  13. 13. Contents 12 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  14. 14. Bayes Filter による自己位置推定 13 ロボット工学セミナー 2015-09-11  ロボットの自己位置の確率分布を求める  地図は事前に与えられている 地図:m スキャン計測:zt 自己位置 (時刻t-1):xt-1 真の自己位置(時刻t):xt オドメトリによる自己位置 (時刻t):T(ut)xt-1 平面図 オドメトリ動作(移動量):ut 対応付け ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  15. 15. 最尤推定、最大事後確率推定、ベイズ推定 14 ロボット工学セミナー 2015-09-11 自己位置:xt 確率密度:p(xt) 尤度 p(zt|xt,ut) (スキャンなど:zt) ベイズ推定 事後確率の分布を推定 最大事後確率推定 事後確率のモードを推定 最尤推定 尤度のみのモードを推定 事前確率 p(xt|ut) (オドメトリなど:ut) 事後確率 p(xt|ut,zt) 事後確率 =尤度×事前確率 ベイズの定理による自己位置推定の概念図 Bayes Filter は、ベイズの定理に基づくベイズ推定 によって自己位置の事後確率分布を求める ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  16. 16. 確率的自己位置推定の隠れマルコフモデル 15 ロボット工学セミナー 2015-09-11 xt-1 xt ut-1 ut zt-1 zt m 自己位置推定のグラフィカルモデル map: m xt+1 ut+1 zt+1 robot pose: x (hidden variable) motion: u (e.g. odometry) measurement: z (e.g. laser scan) 自己位置の時系列を1次マルコフ過程と仮定 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  17. 17. Bayes Filter の定式化 16 ロボット工学セミナー 2015-09-11  漸化式で時系列の確率過程を表現  Extended Kalman Filter、Histogram Filter など はすべて Bayes Filter の理論に基づいた実装 時刻tの自己位置xtの事後確率 尤度(計測モデル) 事前確率 x:ロボット位置 m:地図 u:制御動作(オドメトリなど) z:環境計測(レーザスキャンなど) 動作モデル 時刻t-1の自己位置xt-1 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  18. 18. Bayes Filter の数学的導出 17 ロボット工学セミナー 2015-09-11 時刻tの自己位置xtの事後確率 尤度 (計測モデル) 事前確率 動作モデル 時刻t-1の自己位置xt-1 ベイズの定理 条件付き独立性 (過去には非依存) 全確率の定理 条件付き独立性 (1次マルコフ性) 条件付き独立性 漸化式として定式化 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  19. 19. ベイズの定理の適用 18 ロボット工学セミナー 2015-09-11  ベイズの定理  条件付きベイズの定理  自己位置推定に適用 x:ロボット位置 m:地図 u:制御動作(オドメトリ) z:環境計測(レーザスキャン) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  20. 20. マルコフ性の仮定と条件付き独立性の適用 19 ロボット工学セミナー 2015-09-11 1次マルコフ性を仮定  現在の状態は、1時刻前の状態にだけ依存  それ以前の状態や他のデータとは独立 現在の環境計測ztは、現在の状態である自己位置xtと 地図mにのみ依存 現在の状態である自己位置xtは、1時刻前の状態xt-1と それ以後の制御動作utにのみ依存 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  21. 21. 全確率の定理の適用 20 ロボット工学セミナー 2015-09-11  全確率の定理  条件付き全確率の定理  自己位置推定に適用 隠れ変数xt-1を導入 x:ロボット位置 m:地図 u:制御動作(オドメトリ) z:環境計測(レーザスキャン) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  22. 22. Particle Filter の定式化 21 ロボット工学セミナー 2015-09-11  Bayes Filter の一種だが、定式化は若干異なる  各パーティクルは、時刻tの自己位置だけでなく、 時刻1から時刻tの走行軌跡を保持する  動作モデルによる事前確率の計算に積分なし 時刻1からtの走行軌跡xt:tの事後確率 尤度(計測モデル) 事前確率 動作モデル 時刻1からt-1の走行軌跡x1:t-1 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  23. 23. Particle Filter の数学的導出 22 ロボット工学セミナー 2015-09-11 時刻1からtの走行軌跡xt:tの事後確率 尤度 (計測モデル) 事前確率 動作モデル 時刻1からt-1の走行軌跡x1:t-1 ベイズの定理 条件付き独立性 (過去には非依存) 乗法定理 条件付き独立性 (1次マルコフ性) 条件付き独立性 漸化式として定式化 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  24. 24. 乗法定理の適用(Particle Filter の場合) 23 ロボット工学セミナー 2015-09-11  乗法定理(条件付き確率)  条件付き乗法定理(3変数での条件付き確率)  自己位置推定に適用 x:ロボット位置 m:地図 u:制御動作(オドメトリ) z:環境計測(レーザスキャン) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  25. 25. Adaptive Monte Carlo Localization 24 ロボット工学セミナー 2015-09-11  Particle Filter による2次元3自由度での確率的 自己位置推定(Monte Carlo Localization)  オドメトリ動作モデル  ビーム計測モデル/尤度場計測モデル  KLD-Sampling による Adaptive MCL 推定位置の不確かさに応じて、パーティクル数を 適応的に調整  Augmented MCL 真値周辺のパーティクルの喪失に対処するために、 ランダムパーティクルを挿入 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  26. 26. Adaptive Monte Carlo Localization 25 ロボット工学セミナー 2015-09-11 処理イメージ(平面図) 時刻:t-1 パーティクルによって表される ロボット位置の複数仮説 1. 予測 :ロボット位置 時刻:t 動作モデルにより 時刻 t の ロボット位置を予測 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  27. 27. Adaptive Monte Carlo Localization 26 ロボット工学セミナー 2015-09-11 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ 処理イメージ(平面図) スキャンと占有格子地図の 重なり度合いを評価 2. 尤度計算 :占有格子地図 :現時刻のスキャン計測 :尤度 事前に与えられた1つの地図に対して、各パーティクルのスキャンを評価 計測モデルにより 尤度を計算
  28. 28. Adaptive Monte Carlo Localization 27 ロボット工学セミナー 2015-09-11 3. リサンプリング 処理イメージ(平面図) :尤度  尤度の高いパーティクルは 自身のコピーを多く残す  尤度の低いパーティクルは 消滅  KLD-Sampling により、 推定位置の不確かさに 応じてパーティクル数を調整 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  29. 29. Contents 28 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  30. 30. Rao-Blackwellized Particle Filter の定式化 29 ロボット工学セミナー 2015-09-11 ロボット走行軌跡 x1:t Particle Filter で推定 地図 m Binary Bayes Filter で推定 ロボット走行軌跡と地図の同時確率 ロボット走行軌跡と地図を求める完全 SLAM、 独立性の仮定により因子分解して解く x:ロボット位置 m:地図 u:制御動作(オドメトリなど) z:環境計測(レーザスキャンなど) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  31. 31. 提案分布における最適化計算の利用 30 ロボット工学セミナー 2015-09-11 :ロボット位置 真値 スキャンマッチングで 真値に近付ける 真値 多数のパーティクルによる提案分布 (高精度だが計算コスト大) 少数のパーティクルと最適化計算 による提案分布(FastSLAM 2.0) 最適化計算で 失敗の危険あり ROS gmapping も この枠組 計算コストはパーティクル数に依存するので、 少数のパーティクルそれぞれで最適化計算を併用 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  32. 32. Rao-Blackwellized Particle Filter SLAM 31 ロボット工学セミナー 2015-09-11 処理イメージ(平面図) 時刻:t-1 パーティクルによって表される ロボット位置の複数仮説 1. 予測 :ロボット位置 時刻:t 動作モデルにより 時刻 t の ロボット位置を予測 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  33. 33. Rao-Blackwellized Particle Filter SLAM 32 ロボット工学セミナー 2015-09-11 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ 処理イメージ(平面図) スキャンを占有格子地図に Greedy Scan Matching (FastSLAM 2.0) 2. 尤度計算 :占有格子地図 :現時刻のスキャン計測 :尤度 Rao-Blackwellization により各パーティクルごとに地図を持っている 計測モデルにより 尤度を計算
  34. 34. Rao-Blackwellized Particle Filter SLAM 33 ロボット工学セミナー 2015-09-11 3. リサンプリング 処理イメージ(平面図) :尤度  尤度の高いパーティクルは 自身のコピーを多く残す  尤度の低いパーティクルは 消滅 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  35. 35. Rao-Blackwellized Particle Filter SLAM 34 ロボット工学セミナー 2015-09-11 4.地図生成 処理イメージ(平面図) Rao-Blackwellization により各パーティクルごとにそれぞれの地図を生成する :占有格子地図 :現時刻のスキャン計測 レーザのレイキャスティングにより Binary Bayes Filter で 占有格子地図を生成 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  36. 36. Contents 35 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  37. 37. 自律走行時のデータの流れ 36 ロボット工学セミナー 2015-09-11 http://wiki.ros.org/move_base ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  38. 38. costmap_2d によるコストマップの生成 37 ロボット工学セミナー 2015-09-11  レーザスキャンまたは3次元点群のデータを用いて、 2次元/3次元の占有格子地図を生成  レイキャスティングにより、占有/フリー/未知の3状態 で障害物情報を管理  占有格子地図の障害物をロボットの内接円半径の 大きさで膨張させ、x, y の2自由度コンフィグレーション 空間として2次元コストマップを生成  グローバルコストマップとローカルコストマップの2種類を生成 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  39. 39. costmap_2d によるコストマップの生成 38 ロボット工学セミナー 2015-09-11 http://wiki.ros.org/costmap_2d ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  40. 40. コストマップを生成する枠組み 39 ロボット工学セミナー 2015-09-11  ROS Hydro 以降、costmap_2d の構成が変更 http://wiki.ros.org/costmap_2d http://wiki.ros.org/costmap_2d/hydro http://wiki.ros.org/hydro/Migration#Navigation_-_Costmap2D  LayeredCostmap という仕組みが導入された  Static Map Layer:SLAM で生成した静的地図  Obstacle Map Layer:検出した障害物の蓄積と消去 (ObstacleCostmapPlugin / VoxelCostmapPlugin)  Inflation Layer:障害物を膨張したコンフィグレーション空間  ROS の pluginlib という機能で実現されている ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  41. 41. 自律走行時のデータの流れ 40 ロボット工学セミナー 2015-09-11 http://wiki.ros.org/move_base ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  42. 42. navfn の大域的経路計画 41 ロボット工学セミナー 2015-09-11  Navigation Function と呼ばれるポテンシャル場で評価  ゴールまでの距離と障害物からの距離をコストとする  グローバルコストマップに基づいて処理  格子地図に対して、ダイクストラ法でポテンシャル場の 最小コストとなる経路を探索  各セルのポテンシャル場のコストを計算しながらダイクストラ法で 探索し、ゴールまでのグローバルパスを計画  ロボットの方向は考慮しない(円形と仮定)  方向によっては障害物と衝突する経路が計画される ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  43. 43. navfn による大域的経路計画の例 42 ロボット工学セミナー 2015-09-11 グローバルパス スタート 5 m グローバル コストマップ ゴール 障害物から離れた経路を計画 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  44. 44. ダイクストラ法とA*の違い 43 ロボット工学セミナー 2015-09-11  ダイクストラ法 幅優先探索をコストを評価するよう に拡張した、最良優先探索と呼ば れる手法の一種  A*(A-Star) ヒューリスティック関数でコストの予測値を 追加した、ダイクストラ法の改良版 https://en.wikipedia.org/wiki/Dijkstra's_algorithm https://en.wikipedia.org/wiki/A*_search_algorithm ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  45. 45. 自律走行時のデータの流れ 44 ロボット工学セミナー 2015-09-11 http://wiki.ros.org/move_base ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  46. 46. base_local_planner の局所的動作計画 45 ロボット工学セミナー 2015-09-11  大域的経路計画によるグローバルパスに追従しつつ、 障害物を回避する動作(速度)を計画  Dynamic Window Approach を使用  ロボットのキネマティクス(運動モデル)を考慮した軌跡  現在の速度に基づき、ダイナミクスを考慮して実行可能 な複数のローカルパス候補を生成  評価関数により、グローバルパスに近く、かつ障害物 から離れたローカルパスの動作を選択  ローカルコストマップに基づいて処理 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  47. 47. Dynamic Window Approach 46 ロボット工学セミナー 2015-09-11 平面図 ロボット位置 ローカルパス 候補 グローバルパス 障害物 並進速度 v 回転角速度ω 最大速度範囲 Dynamic Window 現在速度 ローカルパス候補 キネマティクスとダイナミクスを考慮してローカルパス候補の 軌跡を生成、離散化してコストを評価 速度の決定 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  48. 48. DynamicWindowApproachのコスト評価関数 47 ロボット工学セミナー 2015-09-11 軌跡コスト = 経路距離スケール × ローカルパス端点とグローバルパスの距離 + ゴール距離スケール × ローカルパス端点とゴールの距離 + 障害物スケール × ローカルパス上での最大障害物コスト 上記の ROS の実装は、オリジナル論文の評価関数とは異なる 平面図 ロボット位置 ローカルパス候補 グローバルパス 障害物 ゴール コストマップ  距離は各セルごとに 事前計算  ローカルパスの振動を抑制 するため、一定距離は 逆符号の速度を無効化 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  49. 49. 自律走行時のデータの流れ 48 ロボット工学セミナー 2015-09-11 http://wiki.ros.org/move_base ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  50. 50. スタックした場合の復帰動作の状態遷移 49 ロボット工学セミナー 2015-09-11 http://wiki.ros.org/move_base ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  51. 51. Contents 50 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  52. 52. slam_gmapping, navigation にない機能 51 ロボット工学セミナー 2015-09-11  3次元空間の地図生成(SLAM)  Graph-based SLAM  PF による3次元6自由度での自己位置推定 (EKF は robot_pose_ekf パッケージで可能)  3次元点群を用いた地図生成/自己位置推定  x, y, yaw の3自由度コンフィグレーション空間  3次元6自由度での経路計画  3次元点群を用いた段差などの障害物の検出  移動障害物の検出と追跡 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  53. 53. 自律走行の実現に役立つチュートリアルページ 52 ロボット工学セミナー 2015-09-11  ROS 概要 http://wiki.ros.org/ROS/StartGuide  ROS 基本チュートリアル(プロセス間通信、開発ツールなど) http://wiki.ros.org/ROS/Tutorials  tf チュートリアル(座標変換) http://wiki.ros.org/tf/Tutorials http://wiki.ros.org/tf2/Tutorials  navigation チュートリアル(自律走行) http://wiki.ros.org/navigation/Tutorials/RobotSetup http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide  slam_gmapping チュートリアル(地図生成、SLAM) http://wiki.ros.org/slam_gmapping/Tutorials/MappingFromLoggedData  rviz チュートリアル(ビューア) http://wiki.ros.org/rviz/Tutorials http://wiki.ros.org/navigation/Tutorials/Using%20rviz%20with%20the%20N avigation%20Stack ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  54. 54. 画面分割できるターミナル Terminator 53 ロボット工学セミナー 2015-09-11 screen / tmux のような画面分割を簡単に利用可能 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  55. 55. CMake を開ける統合開発環境 Qt Creator 54 ロボット工学セミナー 2015-09-11 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  56. 56. Contents 55 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  57. 57. つくばチャレンジとは 56 ロボット工学セミナー 2015-09-11  公道(歩道)での自律走行実証実験(7~11月)  主催:つくばチャレンジ実行委員会、つくば市  Competition ではなく Challenge  スピードは競わない、順位は付けない、賞金はない  一般の人々がいる日常環境での貴重な実験機会  第一ステージ(2007~2012年度):自律走行のみ  第二ステージ(2013年度~):自律走行+探索  コースは毎年異なるが、人混みの歩道 1 km 強 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  58. 58. つくばチャレンジ2014走行コース 57 ロボット工学セミナー 2015-09-11  走行距離 1.4 km 以上の人通りのある実環境で の自律走行  探索対象(人、看板)の発見と接近 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  59. 59. つくばチャレンジでの ROS の利用状況 58 ロボット工学セミナー 2015-09-11 2007 2008 2009 2010 2011 2012 2013 2014 参加 台数 33 50 72 70 69 36 47 54 完走 3 1 5 7 6 5 3 (0) 8 (4) チーム 内訳 金沢工大, 筑波大×2 ヤマハ発動機 日立製作所, 富士ソフト+筑波大, 東北大, 千葉工大fuRo, 宇都宮大 電通大, 筑波大, 日立製作所, 千葉工大fuRo, 産総研, 防衛大, 富士ソフト+筑波大 群馬大+ミツバ, 筑波大, 防衛大, 宇都宮大, 千葉工大fuRo, 産総研 早稲田大, 宇都宮大×2, 防衛大, 筑波大 -- 東北大, 防衛大, 宇都宮PJ, 筑波大 完走 +探索 -- -- -- -- -- -- 3 4 チーム 内訳 -- -- -- -- -- -- 筑波大, 防衛大, 宇都宮大 宇都宮大, 筑波大, 防衛大, 群馬大+ミツバ ROS 利用 0 0 0 1 4 3 6 13 ROS 完走 0 0 0 0 0 0 0 1 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  60. 60. 開発したロボットの外観と搭載センサ 59 ロボット工学セミナー 2015-09-11 2D-LIDAR #5, #6 (水平、左右) 2D-LIDAR #2, #3, #4 (ピッチ・ロール傾斜) 2D-LIDAR #1 (水平、前方) IMU モータエンコーダ 3D-LIDAR GNSS (参照値用) 単眼カメラ ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  61. 61. ロボットの外観(正面図、側面図) 60 ロボット工学セミナー 2015-09-11 30 deg 30 deg 1390 mm 320 mm 830 mm600 mm 710 mm 1480 mm 1420 mm 280 mm 30 deg ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  62. 62. 新しく実装した機能 61 ロボット工学セミナー 2015-09-11  広大/見通しの悪い環境に対応した地図生成  地図生成時に教示経路の Waypoints を自動生成  IMUを用いたジャイロオドメトリ  3次元点群を用いた段差などの障害物の検出  探索対象(人、看板)の発見  教示経路を走行しつつ探索対象に接近する行動計画  音声再生による状態通知 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  63. 63. 現在のセンサデータだけではマッチングに失敗する 62 ロボット工学セミナー 2015-09-11  地図と充分に重なるスキャンを計測することが重要  センサ視野が足らずに形状が不足して安定しない 地図:m 平面図 スキャン計測 (時刻t):zt 自己位置 (時刻t) :xt 自己位置 (時刻t-1):xt-1 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  64. 64. 従来手法(現在のスキャンのみ)で生成した地図 63 ロボット工学セミナー 2015-09-11 歪みが発生 経路のループが 閉じていない 地図が歪んで矛盾が生じている 二重にずれている ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  65. 65. 従来手法の隠れマルコフモデルは現在データのみ 64 ロボット工学セミナー 2015-09-11 xt-1 xt ut-1 ut zt-1 zt m 従来の SLAM のグラフィカルモデル map: m (hidden variable) xt+1 ut+1 zt+1 robot pose: x (hidden variable) motion: u (e.g. odometry) measurement: z (e.g. laser scan) 現在のセンサデータのみを利用して推定するため、 充分なスキャン形状を計測できなかった場合に誤認識 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  66. 66. 過去のデータを活用して情報量を増やすアイデア 65 ロボット工学セミナー 2015-09-11  複数回のスキャン計測を蓄積して充分な形状を得る  形状が充分ならばマッチングが幾何学的に安定する 地図 平面図 ロボット位置 (時刻t-K+1) K個のスキャン計測 (時刻t-K+1~t) ロボット位置 (時刻t) K個のスキャン計測 (時刻t-K+1~t) ロボット位置 (時刻t) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  67. 67. 走行軌跡の不確実性を考慮したスキャンの蓄積 66 ロボット工学セミナー 2015-09-11  真の走行軌跡は分からない  不確実性を考慮して確率的に扱う必要がある 地図 平面図 ロボット位置 (時刻t-K+1) ロボット位置 (時刻t) 蓄積したスキャン計測 (時刻t-K+1~t) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  68. 68. 蓄積スキャンで過去を考慮する隠れマルコフモデル 67 ロボット工学セミナー 2015-09-11 xt-1 xt ut-1 ut zt-1 zt m 過去のスキャンを考慮した SLAM のグラフィカルモデル map: m (hidden variable) xt+1 ut+1 zt+1 zt-1~ zt~ zt+1~measurement: z (e.g. accumulated scan) ~ robot pose: x (hidden variable) motion: u (e.g. odometry) measurement: z (e.g. laser scan) 過去のセンサデータも利用して推定することで、 複数回の測定による充分なスキャン形状を利用できる ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  69. 69. 過去を考慮した RBPF SLAM の定式化 68 ロボット工学セミナー 2015-09-11 x:ロボット位置 m:地図 u:制御動作(オドメトリ) z:環境計測(レーザスキャン) ロボット走行軌跡(自己位置)と地図と 蓄積したスキャン計測の同時確率を推定する ロボット走行軌跡と地図と 蓄積したスキャン計測の同時確率 ロボット走行軌跡 x1:t と蓄積スキャン z~1:t Particle Filter の拡張手法で推定 地図 m Binary Bayes Filter で推定 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  70. 70. 過去を考慮したParticle Filter の数学的導出 69 ロボット工学セミナー 2015-09-11 乗法定理 時刻1からtの走行軌跡x1:tと蓄積スキャンz~1:tの 同時確率 条件付き独立性 通常のParticleFilterの導出 蓄積スキャン生成の導出 乗法定理 尤度(計測モデル) 動作モデル 蓄積スキャン生成 時刻1からt-1の走行軌跡x1:t-1と蓄積スキャンz~1:t-1の同時確率 漸化式として定式化 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  71. 71. 最尤パーティクルが持つスキャンデータの例 70 ロボット工学セミナー 2015-09-11 10 m 1回のスキャンデータ 蓄積したスキャンデータ ロボット位置 平面図 ロボットの走行経路 生け垣 生け垣 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  72. 72. レーザのビームモデルを考慮した蓄積 71 ロボット工学セミナー 2015-09-11  レーザが通過した部分は自由空間であるはず  移動障害物は測定距離を短くする(長くはしない) 平面図 ロボット位置 (時刻t-1) ロボット位置(時刻t) (オドメトリのみで推定) 時刻t-1の 測定点 時刻t-1の 測定点 時刻tの 測定点 時刻tの 測定点 消去 消去 保持 保持 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  73. 73. 過去5秒間のスキャンを利用して生成した地図 72 ロボット工学セミナー 2015-09-11 矛盾がなく整合性の取れた地図が生成できた 450 m ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  74. 74. Waypoints の生成方法 73 ロボット工学セミナー 2015-09-11  Rao-Blackwellized Particle Filter は時刻1からt の走行軌跡も推定する完全 SLAM であり、各 パーティクルは軌跡の情報を保持している  地図生成時に最尤パーティクルの走行軌跡を取り出 すことで、教示経路の Waypoints を自動生成  生成した地図と Waypoints は座標系が一致  経路を微修正する場合は、Waypoints ファイルを 手動で編集 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  75. 75. 自律走行時のソフトウェアの構成図 74 ロボット工学セミナー 2015-09-11 Linux PC LIDAR Handler IMU Occupancy Grid MapLIDAR Handler IMU Handler Obstacle Detector Transform Broadcaster Gyro Odometer Behavior Planner Localizer Path Planner Vehicle Controller Motor Controller Waypoint Route Sound Player Costmap Builder LIDARLIDAR MotorMotor Device Process File Data Flow Target Detector ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  76. 76. 自律走行時のソフトウェアの rqt_graph 75 ロボット工学セミナー 2015-09-11 rqt_graph:ROSシステムの実際の接続構成を示すグラフ 全体で動いているプロセスは20個以上 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  77. 77. 自律走行時の処理結果の可視化 76 ロボット工学セミナー 2015-09-11 ロボット位置 (パーティクル) 障害物 (人) 障害物 (ベンチ) 検出した看板 (探索対象) 計画した経路 走行軌跡 レーザスキャン 検出した障害物 (衝突高さ/段差) 1 m ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  78. 78. Adaptive Monte Carlo Localization (AMCL) 77 ロボット工学セミナー 2015-09-11 ロボット位置 (パーティクル) レーザスキャン ロボット 1 m ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  79. 79. AMCL が人混みなどでもロバストな理由 78 ロボット工学セミナー 2015-09-11  最尤推定の枠組みであるスキャンマッチングの最適化計算 を行わないため、過信による推定誤りをしにくい  動作モデルによる事前確率に基づいてパーティクルを 散布し、計測モデルは尤度を評価するだけのため、 推定位置が事前確率の範囲から外れない  パーティクルごとに異なる外れ値除去ができ、アウトライア に対して頑健  不確実性を明示的に扱い、推定位置が不確かな 場合は KLD-Sampling によりパーティクル数を増やす ため、真値周辺のパーティクルが喪失しにくい ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  80. 80. AMCL による自己位置推定(人混み1) 79 ロボット工学セミナー 2015-09-11 ロボット位置 (パーティクル) レーザスキャン 1 m ロボット 人混み (地図にない物体) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  81. 81. AMCL による自己位置推定(人混み2) 80 ロボット工学セミナー 2015-09-11 ロボット位置 (パーティクル) レーザスキャン ロボット 1 m 人混み (地図にない物体) ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  82. 82. AMCL による自己位置推定(平坦な壁) 81 ロボット工学セミナー 2015-09-11 ロボット ロボット位置 (パーティクル) レーザスキャン 1 m 長手方向に広がる ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  83. 83. 衝突高さ判定と段差判定による障害物検出 82 ロボット工学セミナー 2015-09-11  ロボットと衝突する高さの点群と、地面より低い 点群(下り階段など)を高さで判定  地面付近の点群を段差判定(近傍点との差分) ロボット位置 (パーティクル) 1 m 検出した障害物 (段差判定) 検出した障害物 (衝突高さ判定) ロボット段差 自動車 自動車 段差 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  84. 84. Global Dynamic Window Approach 83 ロボット工学セミナー 2015-09-11 目標地点 (ウェイポイント) 走行軌跡グローバルパス (ダイクストラ法) ローカルパス (Dynamic Window Approach) ロボット位置 (パーティクル) 自動車 ローカル コストマップ 1 m グローバル コストマップ ロボット 自動車 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  85. 85. 目標経路上の障害物を回避する様子 84 ロボット工学セミナー 2015-09-11 https://youtu.be/JgUn1YL5jjM ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  86. 86. つくばチャレンジ2014の結果 85 ロボット工学セミナー 2015-09-11  本走行  完走+探索課題達成、つくば市長賞  走行距離:1,482 m、走行時間:58分間  実験走行と本走行での完走率  完走:8回/10回  課題達成(全探索対象の発見):6回/10回  他チームの状況  完走+探索課題達成:4台/全54台  ROSを利用して完走したチームは我々のみ ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  87. 87. Contents 86 ロボット工学セミナー 2015-09-11 1. 自律走行を実現するための ROS パッケージ 2. 実装されているアルゴリズム a. 自己位置推定(amcl) b. 地図生成(gmapping) c. 大域的経路計画、局所的動作計画(move_base) 3. ROS での開発に関する情報 4. つくばチャレンジにおける屋外環境での自律走行 5. まとめ
  88. 88. まとめ 87 ロボット工学セミナー 2015-09-11  slam_gmapping, navigation パッケージの構成  実装されている各アルゴリズムについて解説  自己位置推定:Adaptive Monte Carlo Localization  地図生成:Rao-Blackwellized Particle Filter SLAM (FastSLAM 2.0 での Grid Mapping)  大域的経路計画:Navigation Function とダイクストラ法  局所的動作計画:Dynamic Window Approach  ROS での開発に関する知見  Terminator:画面分割できるターミナル  Qt Creator:CMake を開ける統合開発環境  つくばチャレンジでの屋外自律走行の実現例 ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  89. 89. 参考文献 88 ロボット工学セミナー 2015-09-11  ROS Wiki http://wiki.ros.org/  友納 正裕: “移動ロボットのための確率的な自己位置推定と 地図構築”, 日本ロボット学会誌, vol.29, no.5, pp. 423-426, 2011.  友納 正裕: “移動ロボットの自己位置推定と地図構築の基礎”, 第47回ロボット工学セミナー, 2008.  Sebastian Thrun, Wolfram Burgard, and Dieter Fox: “Probabilistic Robotics”, The MIT Press, 2005. (邦訳)上田 隆一: “確率ロボティクス”, マイナビ, 2007.  坪内 孝司: “移動体の位置認識”, 計測自動制御学会 編, ビークル, コロナ社, 2003.  Dieter Fox, Wolfram Burgard, and Sebastian Thrun: “The Dynamic Window Approach to Collision Avoidance”, IEEE Robotics & Automation Mag., vol.4, no.1, pp. 23-33, 1997. ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ
  90. 90. 謝辞 89 ロボット工学セミナー 2015-09-11  つくばチャレンジにおいて研究開発を共に行った チームメンバーの皆さま(西田 貴亮,熊田 大輔,安藤 大和,渡邉 涼,兼井 宏嘉)と 坪内 孝司 先生 (筑波大)に感謝致します  過去を考慮する SLAM の定式化について助言 を頂いた、友納 正裕 先生(fuRo)、古賀 弘樹 先生(筑波大)、坪内 孝司 先生(筑波大)に 感謝致します ROSパッケージ アルゴリズム 開発情報 つくばチャレンジ まとめ

×