ステレオカメラによるビジュアルオドメトリおよび自己位置認識 Visual

ステレオカメラによるビジュアルオドメトリおよび自己位置認識
○岩田 啓明(東京工業大学), 実吉 敬二(東京工業大学)
Visual Odometry and Localization by Stereo Vision
○Hiroaki IWATA, and Keiji SANEYOSHI (Tokyo Institute of Technology)
Abstract: We have developed methods of getting an odometry and an object map, and a method of localization on the map
by using only stereo vision. Odometry is computed using objects detected according to the height from the road. Then the
map is made using the objects and odometry. When a robot is running autonomously, it can be localized on the map by
means of matching the map and the detected object.
1. はじめに
算出を行う.また特徴点を個々に対応させるのではな
自律移動をするためには走行軌跡(オドメトリ)推
く,データ全体の一致度を元に移動量を決定する.こ
定・環境マップ生成およびマップ内における自己位置
のためカメラの動きが大きくても,また移動物体が一
の認識を行う必要がある.これらを実現するために
部映っていても安定して移動量を求めることができる
GPS・車輪・カメラ・レーザー等のセンサを組み合わせ
ことが特長である.そしてその軌跡を用いてマップを
る研究がおこなわれている.
作成し,マップ‐フレーム間で同じマッチング手法を
GPS は絶対位置を求めることができるものの,環境
用いてマップ内における自己位置認識を行う.自律移
によって結果が不安定になったり,観測不能になった
動車に搭載することを想定し,2 次元的なオドメトリ算
りすることがある.そのため,実際にはその他のセン
出および自己位置認識を行う.
サにより補助しなければならないし,また周囲環境も
その他の手段で観測しなければならない.車輪は累積
誤差が発生し,それを補正するためにやはりその他の
手段に頼らなければならない.このようにそれぞれの
欠点を補うため様々な種類のセンサを組み合わせて用
いることが主流である[2].
2. 本手法の概要
本手法は事前に走行させ撮影したデータから走行軌
跡とともに物体マップを作成し,自律走行時には,こ
れらのデータを用いて現在位置を認識することを想定
している.
しかし我々はシンプルなシステムをめざし,ステレ
オカメラ[1]のみで自律走行を行うことを考えている.
ステレオカメラは,測距センサとしてはレーザーレー
ダーと比べて高解像度・安価・安定した観測が可能で
あることや,パッシブセンサなので人体への危険がな
いという特長がある.もちろん測距センサとしてだけ
ではなく通常のカメラとして,詳細なテクスチャ情報
も得られる.カメラを用いる場合フレーム間の移動量
を累積して軌跡を算出するが,累積誤差が問題になる.
そこでマップを用いて自己位置を補正することでこの
問題を解決する.またそのマップもステレオカメラの
みで作成する.
カメラを用いた移動軌跡検出(ビジュアルオドメト
リ)システムとしては,画像の輝度パターンの特徴点
を用いたシステムがある[3].これに対して本手法では
領域ベースマッチングで得られた高解像度の視差デー
タから路面を認識し,路面上の立体物を路面からの高
さ別に検出して特徴点とする.その特徴点をフレーム
間でマッチングさせることによりカメラの走行軌跡の
第11回システムインテグレーション部門講演会(SI2010)(2010年12月23日~25日・仙台)
-2174-
Fig . 1 The process flowchart
SY0016/10/0000 - 2174 © 2010 SICE
処理の流れを Fig . 1 に示す.連続して撮影した画像
からフレーム間マッチングまでの共通処理とそこから
2つに分岐している処理からなる.一方は事前に走行
させてマップを生成する場合,もう一方はあらかじめ
生成したマップを用いて自律走行時にマップ内におけ
る自己位置を認識する場合に用いる.
使用したステレオカメラは解像度 2048×2048 画素,
基線長 5cm,焦点距離 5mm で補正校正処理後に領域
ベースマッチングにより視差を計算している.マッチ
ングウィンドウサイズは 4×4,探索範囲は 128 画素
である.このカメラにより得られる基準画像および視
差画像をそれぞれ Fig . 2 左上および左下に示す.
3. 路面平面の算出
まず、路面を平面として推定する.車両に取り付け
たステレオカメラは障害物と路面が見られるように車
両前方に若干下に向けて設置してあるため,画像の約
Fig . 2 Disparity image and detected objects.
半分以上は必ず路面が映っている.このため手法とし
Upper left: base image, left lower: disparity image,
ては視差画像の下半分のデータからハフ変換で平面を
Right side: From top to bottom, detected objects
求める.ハフ変換により安定して路面位置を求めるこ
ranging 180cm-230cm, 100cm-150cm and 10cm-60cm
とができる.ここで求めた平面に沿って物体を検出す
respectively. Horizontal axis: u, vertical axis: disparity,
る.路面を基準にすることでロボットの振動などに強
D.
い物体の検出が可能である.
5. フレーム間の移動量の推定
4. 物体の検出
ここでは路面からの 3 つのレベルの高さ帯ごとに物
体を検出する.設定したレベルは路面からの高さがそ
れぞれ 10cm-60cm,100cm-150cm,180cm-230cm の範囲
とした。そして各レベルにおいて画像を幅𝑊𝑇 で縦方向
の列に区切って列ごとに物体があるかを判定し,ある
ならその視差を求める[1].
方法としては,視差画像における該当レベル・列内
のデータに対して視差のヒストグラムをとる.その列
に物体がある場合,同じような視差にデータがまと
まっているので,その視差の度数が高くなり,その度
数は同じ大きさの物体であれば視差に比例すると考え
られる.そこで視差に比例する閾値を設定し,度数の
最大値が閾値を超えたら物体があるとする。物体の視
差は最大度数のグループとその隣の度数の大きい方の
グループのデータの視差の平均とする.
このようにして各レベルで物体データとして物体の
u 座標と視差 D の組(視差空間座標)が得られる.1 レ
ベル当たり最大(画像幅/𝑊𝑇 )個のデータが検出される.
検出した物体データを用いてフレーム間の移動量を
推定する.個々の物体データをフレーム間で対応付け
ることはせず,フレーム間のデータ全体でのマッチン
グ度を求め,もっともよくマッチする移動量を求める.
そのために前フレームの物体データ *𝑝𝑖′ +,現フレーム
の 物 体 デ ー タ *𝑝𝑖 + , フ レ ー ム 間 の 移 動 量 Θ =
(∆𝑥, ∆𝑧, ∆𝜃)に対して尤度関数を以下のように定義した.
𝑦は*𝑝𝑖 +と*𝑝𝑖′ +を合わせたベクトル,𝑅Θ (∙)は与えられた
視差空間の座標を実空間に変換しΘにしたがって移動
後再び視差空間の座標に変換する関数とし,𝑐は𝑅Θ (𝑝𝑖′ )
が視野(観測範囲)内に入る個数とする.
1
𝑓(𝑦|Θ) = ∑ ∑ 𝑣(𝑅Θ (𝑝𝑖′ ) − 𝑝𝑖 )
𝑐
𝑖
𝑗
|𝑥 |
|
𝑣(𝑥) = {1, 𝑢 < 1.5𝑊𝑇 かつ|𝑥𝐷 < 1.5
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
実空間(𝑋, 𝑍)で評価する場合、距離𝑍の誤差が𝑋成分に
影響を与えてしまう.評価を視差空間で行うことによ
これを u 座標に対するルックアップ形式でレベル別に
り,2変数間の誤差の伝播がないように分離した.ま
固定長メモリ内に保存する.
た,データの観測誤差が視差空間では一定になると期
物体検出結果を Fig . 2 右側に示す.横軸に u 座標・
待でき,処理が簡素化できる.
長い側壁が写っているようなシーンでは,実際には
縦軸に視差 D で検出した物体をプロットしている.
壁面に沿って前に移動していても検出される壁面の物
-2175-
体データとしてはフレーム間で変化がないことになる.
5 で述べた手法からフレーム間の物体データの一方
しかし c で割らない場合,
カメラが移動すると視野外に
(前フレームの方)をマップからのデータとすること
移動するデータが発生し評価値が減少し,また壁面自
でマップマッチングを行った.このようにすると 1 度
体のデータ数も多くなるため,木や電柱のようなその
マップからデータを取り出すだけで済むため,マッチ
他の手掛かりがあってもカメラが移動しない方が評価
ング本体の処理時間はマップのデータ数によらずにフ
が高くなってしまうことがある.c で割ることによって,
レーム間マッチングと同様に計算できる.
視野外に物体が移動することがペナルティにならない
実際にはまずフレーム間マッチングにより現在位置
ようにして,その他の手掛かりの効果を生かせるよう
の予測を行い,次にマップマッチングで現在位置を修
にした.
正するという流れで行う.具体的には各フレームで以
𝑣(𝑥)については,ある程度のゆらぎを許容しつつ,離
下のような設定で処理を行い,カメラ位置を更新する.
れた場合は0を返すことでノイズに強くなるように井
1) フレーム間移動量
戸型の関数とした.
各高さレベルごとに𝑓を求め,最も上層のレベルの値
*𝑝𝑖′ + : 前フレームで観測した物体列
を重み 2,
その他のレベルの値を重み 1 として合成する.
*𝑝𝑖 + : 現フレームで観測した物体列
最も上層のレベルの値の重みを大きくするのは,この
Θ′ : 前フレームでのフレーム間移動量の値
レベルは人よりも高いため移動物体が映っていないと
2) マップ‐現フレーム間移動量
考えられ,信頼性が高いためである.
*𝑝𝑖′ + : 現在位置とマップから作成した物体列
尤度関数のみでは手がかりとなる物体が少なかった
りする場合等の原因で大きくミスマッチしてしまうこ
*𝑝𝑖 + : 現フレームで観測した物体列
とがあり,これを抑えるため移動速度一定を仮定する
Θ′ : 0
事前分布の因子を付けた.
𝜋(Θ) = 𝑒
−
このように,フレーム間とマップ‐現フレーム間処
理の両方を行うことで相互に補完し合い,ロバスト性
(∆𝑥−∆𝑥 ′ )2 (∆𝑧−∆𝑧 ′ )2 (∆θ−∆θ′ )2
−
−
2𝜎𝑥 2
2𝜎𝑧 2
2𝜎θ 2
が高まることが期待できる.
∆𝑥 ′ , ∆𝑧 ′ , ∆θ′ は前フレームの移動量の各成分とする.各
8. 実験
成分とも𝜎は大きめにとり緩やかな形とした.
8.1 移動軌跡算出およびマップの生成
そして MAP 推定の要領で𝑓(Θ|𝑦) ∝ 𝑓(𝑦|Θ)𝜋(Θ)を最大
化するΘを求め,結果とする.求め方は移動可能な範囲
内をある程度細かく全探索して求める.
ステレオカメラを台車に乗せ,約 0.5m/s の速度でつ
くば公園内を約 160m 移動させながら,0.5fps のフレー
ムレートで撮影し,これまでに述べた方法でカメラの
移動軌跡およびマップ生成を行った.
6. マップ生成
求めた軌跡を用いて,検出した物体データを統一し
た実座標系(𝑋, 𝑍)に記録する.この時に同じ物体が複数
のフレームで観測されることは頻繁に起こるが,この
ような重複したデータの中で精度のよい最も接近した
データのみをできるだけ記録するようにしたい.そこ
で簡易的に,検出した物体の内,次のフレームで視野
から消える物体を記録した.
結果を Fig . 3 に示す.得られた軌跡を赤い線で,マッ
プに記録された物体の内 10cm-60cm の物体を点で表示
している.また,観測時の観測点から物体までの距離
に応じて点を色分けしている.軌跡についてはほぼ走
行させた経路通りに求まった.物体データはおおむね
重複が除去され最も近くで観測したデータが残ってい
るが,池の前の右カーブを過ぎた直後の所で軌跡上に
物体が残っている.これはこの領域が一度視野から外
7. 自己位置認識
れ再び視野に入ってきたために一度目の精度の悪い
自律走行時にはマップ内における自己位置を求める
必要がある.
-2176-
データが残ってしまったためである.
Fig . 3 Result of the estimated trajectory of motion and objects recorded on the map.
Red line: the estimated trajectory of motion, the points: objects recorded on the map (They are color-coded
according to the distance between them and camera position at the moment of detecting them.), the photo is issued by
The Geospatial Information Authority of Japan.
9. まとめ
ステレオカメラのみを用いて路面を認識し物体を高
さ別に検出し、検出した物体を用いてオドメトリ算
出・マップ生成およびマップ内自己位置認識を行う手
法について述べ,実際に撮影した画像を用いた実験を
行った.
今後これらの手法をロボットに組み込み自律走行を
行う予定である.また,テクスチャ情報なども取り入
れ精度を上げることも考えている.
参考文献
Fig . 4 The result of localization
8.2 自己位置認識
先ほど作成したマップを用いて自己位置認識のテス
トを行った.観測画像としてマップ作成時と同じ画像
データを用いる.この場合自己位置認識手順1)のフ
レーム間移動量がマップ作成時と一致してしまうので,
独立にガウスノイズを加えて意図的にずらす,そして,
2)のマップ‐フレーム間処理時に元の軌跡の位置に
戻れば自己位置が認識できたことになる.
処理結果を Fig . 4 に示す.赤色がマップ作成時の軌
跡,緑色が移動量にノイズを加えた軌跡,青色が自己
位置認識結果を示している.この結果から,自己位置
認識結果が元のマップ生成時の軌跡にほぼ一致してお
りマップ‐フレーム間マッチングに成功していること
がわかる.
-2177-
[1] K.Saneyoshi, K.Hanawa, K.Kise: "Image Recognition System
for Active Drive Assist", AVEC ‘92, 280-285 (1992)
[2] 大谷和彦,永谷圭司,吉田和哉:"GPS およびオドメトリ
機能を搭載した移動ロボットの不整地フィールドにおけ
る位置推定実験",第 10 回 計測自動制御学会 システ
ムインテグレーション部門講演会,(2009)
[3] 友納正裕:"エッジ点追跡に基づくステレオカメラを用い
た三次元 SLAM",第 26 回日本ロボット学会学術講演会,
(2008)