#author("2022-03-15T05:37:35+00:00","default:ail-wiki","ail-wiki")
#author("2022-03-15T05:39:29+00:00","default:ail-wiki","ail-wiki")
[[太田研 公開用Wiki]]

#contents
*はじめに [#b144bd0c]
**研究背景 [#vcbb2b52]
近年自動走行技術が我々の生活に身近になり,その技術への需要はより一層高まりつつある.
しかし,自動走行技術への需要は自動車だけでなくロボットにおいても高まりつつあり,
最近では飲食店にて自動で動く配膳ロボットを見ることもめずらしくない.
当研究室では,そのような自動で動くロボット"自律走行ロボット-mercury"を
株式会社revastより提供されており,このmercuryを使い,
自立走行ロボットの実験走行会である,"つくばチャレンジ"に参加している.

つくばチャレンジとは,ロボットを自立走行させ,指定コースを完走させる走行チャレンジである.
ロボット開発の中で得た,技術や知見を共有することで,自立走行技術の向上を目指している.
当研究室では,自立走行に必要な技術をソフトウェア(モジュール)ごとに分け,
プロジェクトメンバーで分担し,つくばチャレンジに参加している.
ロボットが自律的に走行するためには多くのモジュールが必要となるが,
中でも必ず必要となるモジュールに"自己位置推定"がある.

当研究室ではロボットの自己位置推定に"ピラミッドマッチング"という手法を採用してる.
この手法は,予め作成した全体の点群地図に対し,現在のロボット位置から観測される点群を
二次元に落とし込み作成した,局所点群地図を重ね合わせることで,
全体の点群地図上での位置座標を算出するものである.
本手法では事前にデータを取得し,そのデータから全体点群地図を生成しておかなければ,
自己位置の推定を行うことができない.
したがって自己位置推定には全体の点群地図を事前に作成する必要がある.
また,自己位置推定の精度は全体の点群地図の生成精度にも起因するため,
良い精度で自己位置推定を行う為には,高精度の点群地図を生成する必要がある.
本研究は,自己位置推定で使用する全体の点群地図を生成するものである.
点群地図生成の際に,二種類のマッチング手法"ピラミッドマッチング","ICPマッチング"の両方を
使用することで,生成される点群地図の精度を向上させることを目的とし,
それぞれのマッチング手法を単体で使用し生成した点群地図と,
両方の手法を用いて生成した点群地図を比較検討する.

*ロボット構成 [#a87c00ae]
**ハードウェア構成 [#y9aab644]
当研究室では株式会社revastから提供されているロボット"mercury"を使用し研究を行っている.
ロボットにはいくつかのセンサーとパソコン,モニターが搭載されており,
当研究室のプロジェクトメンバーがハードウェアのパーツを作成することなく,
搭載するソフトウェアの作成のみで,自律走行ロボットの走行実験会である,
"つくばチャレンジ"へ参加している.

CENTER:#ref(mercury_brue.jpg,center,15%)
CENTER:図1: mercury

mercuryには外界を観測するために,LiDARセンサー,単眼カメラ,ソナーセンサー
の三つのセンサーが搭載されている.

LiDARは,ロボットの現在位置を推定する目的や,障害物の検知に使用し,
単眼カメラは,色情報で物体を識別する処理に使用している.
また,ソナーセンサーは至近距離障害物の認識に使用する.
上記のセンサーの内,本研究で使用するLiDARについての説明を以下で述べる.

***LiDAR [#g99ce497]
ロボットが人と同様に周囲環境を認識するためには,その為のセンサーが必要となる.
例えば,ソナーセンサーでは至近距離物体の有無を認識し,
おおよその距離を測ることができる.
単眼カメラでは,正面の物体の色情報を用いた認識ができることから,
信号機の状態を識別することができるなど,
それぞれのセンサーで異なる情報を得ることができる.

CENTER:#ref(lidar.jpg,center,10%)
CENTER:図2: LiDAR

LiDARセンサーとは,「light detection and ranging」の頭文字をとった言葉で,
レーザー光を照射しその反射によって認識を行うセンサーである.
LiDARには2D-LiDAR,3D-LiDARが存在し,mercuryにはその両方が搭載されいる.
本研究ではロボット上部に搭載された3D-LiDARのみを使用する.
3D-LiDARはレーザー光が反射した部分を点として取得することができ,
これを上下約32°,左右360°取得することで,
周囲環境を3次元の点の集まり"点群"として取得することができる.
この時,距離情報や点ごとの反射強度も同時に取得することができる.

CENTER:#ref(point_cloud.png,center,30%)
CENTER:図3: 点群

上の図3は実際にロボットに搭載された3D-LiDARで取得した点群の様子である.
ロボットに搭載されているLiDARの位置が,地上から約1mであり,
LiDARの取得できる点群の範囲が上下約16°づつであることから,
ロボットを中心に半径数mの地面の点群は取得出来ず,
円の形に点が抜けているが,それ以外の部分では正確に物理的特徴をとらえることが出来ている.
取得した点群はロボットを中心に三次元座標で(x,y,z)で表され,単位はmで表される.


**ソフトウェア構成 [#v33e634a]
***自律走行モジュール [#ea10bed2]
当研究室で使用しているロボットのソフトウェア構成を以下の図に示す

CENTER:#ref(composition.png,center,15%)
CENTER:図4: ソフトウェア構成

CENTER:表1 送受信データ
|点群|Point_Cloud|
|目標地点|Check_Point,Way_Point|
|カメラ画像|Image|
|速度命令|Twist|
|推定ロボット現在位置|Pose|
|走行距離計ロボット現在位置|Odometry|

自律走行の基本の流れとしては,"認識","演算","走行"であり,センサーを用いた認識から始まる.
認識には主にLiDARとカメラ画像を用いる.次に認識の結果を用いて演算を行う.
LiDARによって認識された点群は,ロボットの現在位置を推定するモジュールや看板を検出するモジュール,
障害物を認識するモジュールに使用され,カメラ画像は色を用いて信号機の状態を検出するために使用される.
この時,自己位置推定モジュールによって算出された推定現在位置と,あらかじめ設定していた通行予定地点(ウェイポイント)
から次に向かうべき方向を決定し,向かうための速度を算出.
最終的に算出した速度をロボットへ送ることで走行を実現している.

図4中で,緑色の枠線で囲われている以下のモジュールは
自律走行に必ず必要となるモジュールである.

-ロボット制御
-経路計画
-障害物検出
-自己位置推定

ロボットの自律走行において,はじめに必要となるモジュールとしては"ロボット制御"があげられる.
このモジュールはロボットへ速度を送信するもので,この速度命令をロボットが受け取ることで,
タイヤが回転し移動を実現している.
また,速度を計算する際にロボットの進行方向を決定する必要があるが,
進路決定は"経路計画"で行う.

"経路計画"ではロボットが進むウェイポイント群から,次に進むべき方向を算出する.
しかし,ロボットが次に進むべき方向を正確に決定するためには,
ロボット自身が現在位置を正確に認識しておく必要がある.
ここで,現在位置を認識するために"自己位置推定"モジュールが必要となる.~
"自己位置推定"では,自律走行を行う予定の場所で地図を作成しておき,
現在位置の周囲環境の地図を照合することで行う.
また,進行経路上に障害物がある場合,その障害物の有無も進行経路選択の考慮に入れる必要がある.
したがって,上記の処理と同時に"障害物検出"を常に行うことで,自律走行を実現する.~
本研究は"自己位置推定"で使用する地図を生成するものである.
それぞれについて以下で述べる.

*自己位置推定 [#ra77ec39]

ロボットの自律走行には図4の通り,多くのモジュールが必要となる.
当研究室では,
それぞれのモジュールをプロジェクトメンバーで分担し作成することとした.
点群地図は,図4上の自己位置推定モジュールに
大きく関係している.本節では自己位置推定と点群地図それぞれについて,
またそれらの関係について詳しく述べる.

**点群地図 [#a0b38481]

前に示した通り,当研究室のロボットに搭載されたLiDARを使用することで,
三次元の点群を取得することができる.この時取得された点の位置情報は
(x,y,z)で表されている.これら点群を鳥瞰で見たものをここでは点群地図と呼ぶ.

CENTER:&ref(point_cloud_trm.png,center,50%); &ref(mini_map_cp.png,center,30%);
CENTER:図5 点群と点群地図

三次元の点群を二次元に落とし込む際に,zの成分が高さ1.0m以上の点のみを採用
しているため図5の点群には存在した地面の点が点群地図では消えている.
またこの時,三次元の点群の座標系はロボット座標系であるのに対し,点群地図はOpenCV座標系となっている.
点群を画像へ変換する際に座標系を変換する必要があるが,座標系の変換は以下の式で行っている.

CENTER:&ref(robot_cord.png,center,20%); &ref(opencv_cord.png,center,20%);
CENTER:図6:ロボット座標系, OpenCV座標系

CENTER:#ref(cordinate.png,center,100%)
CENTER:図7: 座標変換式

図5は局所的な点群地図であり,自律走行に使用する点群地図は
局所的な点群地図をつなぎ合わせ作成した,大きな範囲の全体点群地図である.

CENTER:#ref(global_map_white.png,center,40%)
CENTER:図8: 座標変換式

**自己位置推定 [#ma92b2b9]

人が地図上での現在地を把握するには,現在位置から観測することができる建物や景色を,
地図上のものと照合することで行うことが多い.当研究室で採用しているロボットの
自己位置推定手法は,人が行っている位置の推定に近い手法である.

CENTER:#ref(locater.png,center,20%)
CENTER:図9: 位置推定

本研究で作成し用意しておいた全体点群地図に対し,ロボットの現在位置から観測される
点群を,局所点群地図へ変換したものを照合することで,ロボットの全体点群地図上での
位置座標を算出する.
この時の全体点群地図と局所点群地図を照合する手法には,画像のテンプレートマッチングを用いている.
マッチング手法については後で述べる.

画像のテンプレートマッチングを用いて位置推定を行うこの手法は,
2019年のつくばチャレンジでも使用しており位置推定の精度は保証されている.
しかし,全体点群地図の完成度によってはマッチングの精度が落ちてしまうことも確認されており,
自己位置推定には高精度な点群地図が必要であることが分かっている.

*点群地図生成 [#f4005c57]
**地図生成処理 [#tb9899d2]
全体点群地図を生成する処理は以下の通りである.

CENTER:#ref(flow.png,center,20%)
CENTER:図10: 地図生成フロー

地図生成を始める準備として,ログデータの取得がある.ここでのログデータとは,
コントローラーを使用してロボットを手動走行させたときに取得した,
点群データ,ロボットの走行距離計から算出した現在位置情報(以降はオドメトリ情報),カメラ画像
などをファイルに出力したものを指す.またこのログデータは取得を始めた位置から0.5m進む
ごとに取得するように設定してある.
走行中にリアルタイムで地図生成を行う手法も存在するが,
リアルタイム地図生成にはかなりの計算速度が求められる.
本研究では,このような計算速度の問題を考えないために,事前にログデータを取得し,
取得したログデータを使用しオフラインでの地図生成を行う図10のような構成を考えた.
Boostライブラリのfile_system
を使用しログデータファイルから点群とオドメトリ情報を抽出,
はじめの位置のログデータと次の位置のログデータでマッチングを行い,2地点間の差を算出.
算出した差を用いてはじめの位置へ重ね合わせる.
同様の処理で重ね合わせを数回行った後にノイズ除去を行う.
これら一連の処理を一つ目のログデータから最後のログデータまで繰り返すことで,
手動走行させた場所の全体点群地図を生成する.

以下ではそれぞれの処理について詳しく述べる.

**ログデータ取得 [#lb6da304]
地図を生成するためには,事前にログデータを取得するプログラムを作成する必要があった.
今回は実際にロボットに搭載するために,"ROS2"を使用したモジュールとして,
ログデータを取得するプログラム(以降はロガー)を開発した.
開発したロガーには,自動取得モードと手動取得モードが存在する.
自動取得モードは,ロボットが0.5m進むごとにその場のログデータをファイルに保存するものであり,
手動取得モードはコントローラーのボタンが押された時にその場のログデータをファイルに保存するものである.
地図を作成するために取得するログデータは,自動取得モードで0.5mごとに取得したものを使用する.
手動取得モードは,実際のつくばチャレンジで歩行者信号の画像を取得するために使用する.

本研究では,つくばチャレンジ指定コース,群馬大学,
それぞれのログデータを自動取得モードで取得し地図生成に使用した.

**点群マッチング [#o9296fb6]
ファイルからログデータを取得した後,それらデータでマッチングを行う.
ログデータは0.5mごとに取得しており,ロボットのオドメトリ情報から
ロボットのおおよその現在位置を算出することができる.しかしロボットのオドメトリ情報は
走行する路面状況によっては多くの誤差を含んでしまう.したがって,オドメトリ情報を使用して
点群の重ね合わせを行うことはできない.そこで必要となる処理がマッチングである.
現在のロボット位置から観測される点群と,ひとつ前のロボットの位置から観測された点群で
マッチングを行う.マッチングの結果,現在のロボット位置は一つ前のロボット位置から
どの程度移動したのかという数値を"差"として取得することができる.また,この時取得した"差"
はマッチングを用いて算出した値であることから,信頼することができる.
したがって重ね合わせにはこの信頼することができる"差"を使用して行う.
本研究では,点群マッチング手法として代表的な"ICPマッチング"と,
当研究室のマッチング手法である,"ピラミッドマッチング"の両方を使用することとした.

***ICPマッチング [#na0d7d26]
三次元点群の位置合わせに一般的に使用される技術として,
"ICP(iteretive closest point)マッチング"が存在する.
本研究では,二次元点群の位置合わせとして,ICPマッチングを使用するために,
マッチングモジュールを作成した.

ICPマッチングとは,異なる位置で取得された点群p_ref,p_comp,
が与えられたとき,p_compをp_refに位置合わせする回転行列Rと
並進ベクトルtを算出することを目的とし,以下の手順で推定を行うものである.

-初期位置合わせ
-対応点探索
-対応点の誤差量算出
-誤差量の最小化

***ピラミッドマッチング [#cfb82070]

太田研究室独自の点群マッチング手法であり,2019年度のつくばチャレンジでも
自己位置推定の手法として用いられていたものである.マッチングには点群ではなく,画像を用いる.
以下の手順でまず画像の生成を行う.

-点群から画像生成
-同一画素上に定義される点の重複を削除
-画像サイズを小さくする

CENTER:#ref(pyramid_2.png,center,60%)
CENTER:図11: 生成画像群

このようにして生成した画像群のうち,サイズの小さいものから順に
相似変換で回転しながら,マッチングを行う手法である.

**重ね合わせ [#b940fd85]
点群地図を作り出すスタートの位置におけるロボットの位置座標(x,y,θ)は,
(0,0,0)であり,この数値は誤差の無い数値といえる.
取得したログデータは,このスタート位置から0.5\mごとに取得するように
設定されているため,マッチングを用いて徐々に重ね合わせていくことで大きい範囲の
点群地図を生成することができる.

重ね合わせの具体的な流れは以下の図に示し,下に説明を述べる.

CENTER:#ref(overlay.png,center,20%)
CENTER:図12: 重ね合わせ

pos1 はスタート地点のロボット位置であることから, 真の位置である. 点群地図
はこのスタート位置を中心として, 徐々に拡大していくため, スタート位置から観
測される点群を, 最終的に全体地図となる”global map”へ格納する. これが重ね合
わせのはじめの処理である. pos2 は約0.5m 進んだ位置座標を表しているが, これ
は, ロボットのオドメトリ座標の数値であり, 誤差が含まれている. したがって,pos1
の位置で観測される点群と, pos2 の位置で観測される点群でマッチングを行う必
要がある. マッチングによって算出された差は,pos2 がpos1 からどの程度離れてい
るかを表しており, pos1 に差を適用することで真のpos2(pos2") を算出することが
できる. pos1 のオドメトリ位置座標を(x1, y1, θ1) とし,
pos1 の真の位置座標(x1", y1", θ1") = (x1, y1, θ1)のとき,pos1,pos2 のマッチングで得られた差(dx, dy, dθ) を用いると, pos2 の
真の位置座標(x2", y2", θ2") は,以下の式で表される.

CENTER:#ref(true_pose.png,center,100%)
CENTER:図13: true_pose

pos2 の真の位置座標を用いて,global map への重ね合わせを行う. このとき,pos2
の位置から観測される点群はpos2 を中心とした相対座標である. そして,pos2 の真
の位置座標pos2” はglobal map の中心, つまりpos1 を中心とした, 絶対座標系の
数値である. したがって,pos2” で観測される点群をpos1 中心の絶対座標へ変換す
ることで重ね合わせることができる.
相対座標系の点群座標(ロボットから観測された点群) を(p_rx, p_ry) とし, 相対座
標系の原点(絶対座標系のロボット位置座標) を(c_rx, c_ry), 角度をθr, 絶対座標系の
点群座標を(p_ax, p_ay) とすると, 変換式は以下の通りである.

CENTER:#ref(abs_point.png,center,100%)
CENTER:図14: abs_point

次にpos2 とpos3 のマッチングだが, この時pos2,pos3 は両方ともオドメトリ座
標である. つまりpos2,pos3 をマッチングし算出した差はオドメトリ座標の差であ
り, 誤差を含んでいると考えられる. したがって,pos2,pos3 の差を重ね合わせに使
うことはできない. しかし,pos2,pos3 の差を使うことで, ロボットが大まかにどの
程度進んだかを判定でき, 一つ前の真の位置座標pos2” に適用することで,pos3 の推
定位置座標pos3’ を算出することができる. 最後に,pos3’ とglobal map 上のpos2”
を中心とする点群を切り取り, 切り出した点群でマッチングをすることで, 真の位
置座標pos3” を算出することができ, global map へ重ね合わせることができる.
このようにしてglobal map へ重ね合わせる中で, 同じ座標の点群として閾値以
上の点群数が存在するとき, その点を登録し, それ以外の点をノイズとして除去し
ている. 以上の処理でログデータのはじめから最後までを重ね合わせ, 点群地図を
生成する.

*提案手法 [#xbb55e31]

本研究では, 三次元点群の位置合わせに一般的に用いられる, ICP マッチング, 太
田研究室のマッチング手法である, ピラミッドマッチングの両方を使用することで,
マッチング精度を向上させ, 高精度の点群地図を生成することを考えた.
点群地図生成の, 初期段階として作成したモジュールは以下の図のような, ICP
マッチングのみを使用する構成であった.

CENTER:#ref(map_build_icp.png,center,20%)
CENTER:図15: icp_map_build

pos1,pos2 をICP マッチングし算出した差を用いて,pos2 の真の位置座標を算出.
真の位置座標から観測される点群の座標系を変換することでglobal map への重ね
合わせを行う. このとき,ICP マッチングの初期位置合わせには,pos1 点群の座標系
と, pos2点群の座標系を合わせることで,行っている. p_ref 座標系の点群を(p_rx, p_ry),
原点(ロボット位置座標) を(c_rx, c_ry) とし, p_comp 座標系の点群を(p_cx, p_cy), 原点(ロボット位置座標) を(c_cx, c_cy) とする. それぞれロボットの向いている角度をθr, θc
としたとき変換式は以下の通りである.

CENTER:#ref(conversion.png,center,100%)
CENTER:図16: conversion

ICP マッチングのみを用いた点群地図生成の精度は, 期待していたものより低い
ものであった. そこで, 本研究の提案手法である, 両方のマッチングを使用する以下
の図のような構成を考えた.

CENTER:#ref(map_build_pyramid_icp.png,center,20%)
CENTER:図17: pyramid_icp_map_build

図15との違いは,ICP マッチングの前にピラミッドマッチングを行う点である.
はじめにピラミッドマッチングを行い, おおよその差を算出. 算出した差をICP マッ
チングの初期位置合わせに使用するというものである. ICP マッチングを単体で
使用する場合には, 初期位置合わせにロボットのオドメトリ座標を使用しなければ
ならない. しかしオドメトリ座標は, ロボットが走るほど誤差が累積されるという
特徴がある. したがって, 初期位置合わせにオドメトリ座標を直接使用することは,
誤差の原因になることが考えられる.
本手法ではオドメトリ座標を使用せず, ピラミッドマッチングにより算出した差
を使用することで, 初期位置合わせ精度を向上させ, 結果的に高精度な点群地図を
生成することを目的としている.
ピラミッドマッチングにより算出した差を(dx, dy, dθ), 変換後の点群の座標を
(p_x, p_y), p_comp 座標系の点群を(p_cx, p_cy), p_ref 座標系のロボットが向いている角度
をθr とすると, 差をICP マッチングの初期位置に適用するための式は以下の通り
である.

CENTER:#ref(conversion_2.png,center,100%)
CENTER:図18: conversion

*評価実験 [#rb447f99]

点群地図生成をするにあたって, 部分的に作成した点群地図と, 全体的に作成し
た点群地図, マッチングを考慮しないログデータと, マッチングを考慮し取得した
ログデータに分けて, 点群地図生成実験を行った. それぞれの条件を以下に示す.

-群馬大学
--部分地図
---ICP マッチング単体使用の地図生成
---ピラミッドマッチング単体使用の地図生成
---両方のマッチング使用の地図生
--全体地図
---マッチングを考慮しないログデータ
---マッチングを考慮したログデー
-つくばチャレンジコース

ログデータの取得は全範囲を一度で取得するものではないため, ログデータは部
分的な単位で分かれている. 部分的な単位で作成した点群地図を以下では部分地
図と呼ぶ. また全体地図はそれら部分的な点群地図をはじめに”global map”として
読み込み, 読み込んだglobal map の上に新しいルートで取得したログデータを重
ね合わせることで, 徐々に地図を拡大し, 全体点群地図を生成する. この時の重ね
合わせには前に述べた手法と同様のものを用いる.
マッチングを考慮せずに取得したログデータは, マッチングの取りやすさを特に
考慮することなく, 走行予定の場所でログを取得したものである. このログデータ
には狭い通りや, 曲がり角での回転が多いことや, ログデータ数が多いなどの特徴
がある. これらの特徴はマッチング精度を落としてしまい, 生成される点群地図の
精度を落としてしまう. 逆にマッチングを考慮したログデータは上記の特徴が少な
い, できる限りマッチングを取りやすいルートを選択したログデータで構成されて
いる.
本評価実験はマッチング手法による, 生成される点群地図の精度比較に合わせて,
マッチングを考慮しないログデータと, マッチングを考慮したログデータで生成さ
れた全体の点群地図にどのような差があるのか確認するものである. それぞれの
条件下で作成した点群地図を以下に示す.

*生成結果 [#j2006436]
**群馬大学 [#m175c4d5]
***部分地図 [#s8f2f67d]

群馬大学桐生キャンパス図書館の裏道を通り,4 号館の周りを一周. 一度通った道
を戻り,6 号館とプロジェクト棟の間までのログデータ.

CENTER:&ref(icp_cp.png,center,50%); &ref(scan_cp.png,center,50%); &ref(scan-icp_cp.png,center,50%);
CENTER:図19:icp, pyramid, pyramid-icp

特徴の現れた部分を拡大した図が以下である.

CENTER:&ref(icp_path.jpg,center,60%); &ref(scan_path.jpg,center,60%); &ref(scan-icp_path.jpg,center,60%);
CENTER:図20:icp, pyramid, pyramid-icp

CENTER:&ref(icp_start.png,center,70%); &ref(scan_start.png,center,70%); &ref(scan-icp_start.png,center,70%);
CENTER:図21:icp, pyramid, pyramid-icp

***全体地図 [#b6473dd3]

マッチングを考慮しないログデータ
CENTER:#ref(old_global_map.png,center,50%)
CENTER:図22: 群馬大学

マッチングを考慮したログデータ
CENTER:#ref(new_global_map.png,center,50%)
CENTER:図23: 群馬大学

**つくばチャレンジコース [#e0fa74e1]

CENTER:#ref(tsukuba_1.png,center,50%)
CENTER:図24: 課題コース

一部を拡大したものが以下の図である.

CENTER:&ref(tsukuba_2.png,center,30%); &ref(tsukuba_3.png,center,30%);
CENTER:図25:課題コース(拡大図)

*考察 [#x7312c2a]
**提案手法 [#cec7a12a]
図20,21を見ると, スタート位置で回転するログデータであることが確認で
きる. また, 色の付いている点は推定結果の位置座標である. この時, pyramid, pyramid-icp には地図の歪みは見られないが,
図21 のICP マッチングには小さな歪みと, 推定結
果位置のバラつきが確認できる. この結果から判断できることは,ICP マッチング
は回転に弱く, 初期位置の設定が曖昧であると, マッチングが収束しないというこ
とである. これは, 二点群の初期位置があまりに離れると収束しないICP マッチン
グの特徴によるものだと考えられる. x, y 方向への並進の剛体変換では二点群の形
状がかけ離れることはないが, 回転の変換では数度の回転で大きく形状が変化し,
マッチングが収束しないほど, 初期位置が離れてしまうことが分かった.
二つ目として, 図20のそれぞれを比較すると, ピラミッドマッチングによって算
出された, ロボットの推定位置が飛んでしまっていることが分かる. この結果から,
ピラミッドマッチングは広い範囲で点群を取得することが出来ない環境でマッチ
ング精度が落ちてしまうということが言える. これはピラミッドマッチングのアル
ゴリズムを考えると, 一番小さいサイズの点群地図で行うマッチングでの大きなず
れが原因だと考えられる.
三つ目として, 図20,21 を見ると, 両方のマッチングを使用した点群地図には, 他
のICP マッチングを用いた点群地図, ピラミッドマッチングを用いた点群地図には
見られた, 大きなゆがみや, ずれが発生していないことが分かる. 本研究で注目し
たマッチング手法の両方を使用することで, それぞれのマッチングの弱みを補完す
ることができている. 以上のことから本研究の提案手法は点群地図を生成するう
えで有効な手段であると考える.

**ログデータの改善 [#vedfc674]
全体地図を生成する際に行ったログデータの改善については, 図22と図23
を比較すると, 非常に有効なことが分かる.群馬大学の地図上で3 号館からマシン
ショップにかけての細い道において, 図22 では,歪みが発生しているのに対し, 図
23では, そのような歪みは見られない. これは,図22を構成しているログデータが
一つにつき約1500 から2000 データと多いのに対し,図23を構成しているログデー
タのデータ数は約1000 データと少なく, 累積される推定位置の誤差が少ないこと
が原因だと考えられる. しかし, データ数を減らすことや, 回転, 狭い通りを避ける
という工夫をするために, いくつもルートを分割しているため, ルートの数は多く
なっている. 最終的に生成した,図23の点群地図には特に破綻も見られず, 自律走行
に使用できる精度で生成出来ていると考える.

**つくばチャレンジコース [#c2b3368f]
つくばチャレンジコースの生成結果は満足できるものでは無かった. 全体地図を
拡大した図25を見ると, 推定結果の位置である, マゼンタ色の点が切れてい
ることが分かる. つくばチャレンジコースは群馬大学よりもさらにログデータ数が
多くなり, 約5000 から6000 データで構成されている. データ数が多くなることで
発生する, 推定位置の累積誤差が大きくなってしまい, 図25 のような結果と
なっている.
本年度のつくばチャレンジでは, ログデータを取得するために時間を割くことが
難しく, 新規にログデータを取得することが出来なかった. 結果として使用できる
ログデータが, 一周約5000 から6000 データの大きなログデータとなってしまった.
群馬大学と同様にマッチングを考慮したログデータを複数取得することで, 現状の
点群地図生成プログラムでもより良い生成結果になることが考えられる.

*結言 [#z84716a5]
本研究ではロボットの自律走行のための点群地図生成手法を検討した.
地図生成の際のマッチング手法としては, ICPマッチング, ピラミッドマッチング
を採用し,本研究ではその両方のマッチング手法を用いた点群地図生成手法で
点群地図の生成を行った.

それぞれのマッチングの特徴として,ICPマッチングでは,点群を直接使用するため,
マッチングが収束したときの精度は高いが,数万点の点群を扱うため
マッチングの速度は速くない.また,マッチングを取りたい二点群があまりに
離れた形状をしていた時,マッチングが収束しないという特徴がある.
ピラミッドマッチングでは,点群を画像に変換したものをいくつかサイズを変更し用意.
用意した画像のなかで小さいものからマッチングを行う.
画像を用いてマッチングを行うため,ICPマッチングと比較すると精度こそ劣るものの,
速度は速いという特徴がある.
それぞれのマッチング手法で作成した地図を比較検討した結果,
ICPマッチングは,回転の多いログデータで破綻が見られ,
ピラミッドマッチングでは,狭い道を通るログデータで破綻が見られた.
しかし両方のマッチングを使用したものではそのような破綻が見られなかったことから,
本研究で提案する手法は点群地図生成手法として有効であることが考える.
本研究で提案する手法は点群地図生成手法として有効であると考えられる.

また,ログデータの改善に関しては,全体地図を生成する際に非常に効果的であることが分かった.
群馬大学で,大きな効果を挙げたことから,つくばチャレンジコースにおいても
マッチングを取りやすいルートを選択し,
ログデータを分割して,一つのログデータごとのデータ数を減らすことで,
破綻の少ない点群地図の生成が可能だと考えられる.

今後の方針としては,本研究で作成した群馬大学の点群地図で自律走行可能かを確かめ,
使用できるレベルの地図であれば,次につくばチャレンジコースの地図生成を始めることである.
現在の地図生成精度ではつくばチャレンジコースを破綻無しで生成することは出来ないが,
ログデータの改善で群馬大学地図を高精度で生成出来たことから,
つくばチャレンジコースのログデータを改善することを試すだけの価値はあると考えている.
しかし,現状ではそのような都合の良いログデータは存在しないため,
来年度以降のつくばチャレンジにて,マッチングを取りやすいログデータの取得することが,
点群地図を生成するにあたってはじめにするべきこととなる.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS