JP6913339B2 - 移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム - Google Patents

移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム Download PDF

Info

Publication number
JP6913339B2
JP6913339B2 JP2017012051A JP2017012051A JP6913339B2 JP 6913339 B2 JP6913339 B2 JP 6913339B2 JP 2017012051 A JP2017012051 A JP 2017012051A JP 2017012051 A JP2017012051 A JP 2017012051A JP 6913339 B2 JP6913339 B2 JP 6913339B2
Authority
JP
Japan
Prior art keywords
point
scan data
moving body
revisit
movement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017012051A
Other languages
English (en)
Other versions
JP2018120460A (ja
Inventor
正裕 友納
正裕 友納
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chiba Institute of Technology
Original Assignee
Chiba Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chiba Institute of Technology filed Critical Chiba Institute of Technology
Priority to JP2017012051A priority Critical patent/JP6913339B2/ja
Publication of JP2018120460A publication Critical patent/JP2018120460A/ja
Application granted granted Critical
Publication of JP6913339B2 publication Critical patent/JP6913339B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Description

本発明は、移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラムに関する。
近年、外界の状況をリアルタイムに判断しながら、自らの運動を自律的に制御可能な移動ロボットの開発が急速に進められている。
そしてそのための技術として、移動ロボットに外界を認識するためのレーザスキャナやカメラなどの外界センサを搭載し、外界センサから得られる情報を移動ロボット自らがリアルタイムに解析することで、外界の地図を構築しつつ、自らの運動状態を推定するSLAM(Simultaneous Localization and Mapping)と呼ばれる技術が開発されている(例えば特許文献1及び非特許文献1参照)。
特開2008−197884号公報
S.Thrun, W.Burgard, and D.Fox: Probabilistic Robotics, MIT Press, 2005.
SLAMを用いて移動ロボットを制御する場合には、過去に訪れたことのある場所(再訪点)を再び訪れたことを検出することによって、移動ロボットがそれまでに算定してきた自らの移動軌跡の誤差を修正するループ閉じ込みと呼ばれる手法を用いることができる。
しかしながら、ループ閉じ込みの処理は負荷が大きい上、多くの場合、一つの再訪点に対してその前後でも同様の再訪点が複数検出されるため、ループ閉じ込みの処理を何度も実行することになる。
また移動ロボットは、様々な情報処理を実時間内に行わなければならないため、効率的に情報処理を実行しなければならない。
本発明はこのような点を鑑みてなされたものであり、移動体の再訪点をより効果的に特定し、移動体の移動軌跡を算定する際の処理負荷を軽減することが可能な移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラムを提供することを一つの目的とする。
なお本発明は、例えば自転車や自動車、人をも含む、ロボット以外の広義の移動体にも適用して、自律移動制御以外の様々な分野(例えば地図作成の支援など)への応用も可能である。
一つの側面に係る移動軌跡算定システムは、移動体に搭載され、外界の存在物との相対的な位置の変化を検出することにより前記移動体の移動軌跡を算定する移動軌跡算定システムであって、前記移動体に搭載される距離センサによって計測される外界の各点までの距離及び方位を含むスキャンデータを所定周期で取得するスキャンデータ取得部と、第1タイミングで取得したスキャンデータと、前記第1タイミングから第1所定時間後の第2タイミングで取得したスキャンデータと、を照合することにより、前記第1所定時間における前記移動体の移動ベクトルを求める移動ベクトル算出部と、前記第1所定時間毎に求めた移動ベクトルを累積することにより、前記移動体の前記第1所定時間毎の各通過地点の位置情報を求める位置情報算出部と、前記移動体の前記移動ベクトルの大きさを累積することにより、前記移動体の移動開始地点から前記各通過地点までのそれぞれの累積移動距離を求める累積移動距離算出部と、前記各通過地点のうち前記移動体の現在位置からの距離が所定値よりも小さな通過地点を前記移動体の再訪点として検出し、前記再訪点が複数検出された場合には、前記複数の再訪点のそれぞれの前記累積移動距離の差が所定値以内のもの同士が同一グループになるように前記複数の再訪点を分類し、前記各グループから、前記移動体の前記現在位置に最も近接する再訪点を一つ選出する再訪点検出部と、を備える。
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄の記載、及び図面の記載等により明らかにされる。
本発明によれば、移動体の再訪点をより効果的に特定し、移動体の移動軌跡を算定する際の処理負荷を軽減することが可能となる。
本実施形態に係る移動体及び移動軌跡算定システムの構成を示す図である。 本実施形態に係る経路情報記憶部を示す図である。 本実施形態に係る移動体の位置情報、移動ベクトル及び累積移動距離を示す図である。 本実施形態に係る再訪点を示す図である。 本実施形態に係る再訪点の検出方法を説明するための図である。 本実施形態に係る再訪点の検出方法を説明するための図である。 本実施形態に係る移動軌跡の位置ずれを説明するための図である。 本実施形態に係るループ閉じ込みを行う際のICPの初期値を説明するための図である。 本実施形態に係る処理の流れを説明するためのフローチャートである。 本実施形態に係るスキャン点を説明するための図である。 本実施形態に係るスキャン点を説明するための図である。 本実施形態に係る地図を説明するための図である。 本実施形態に係る移動軌跡を説明するための図である。 本実施形態に係る再訪点の検出結果を説明するための図である。
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。
==第1実施形態==
本発明の第1実施形態に係る移動軌跡算定システム100について、図面を参照しながら説明する。
本実施形態に係る移動軌跡算定システム100は、例えば自律移動ロボットのような移動体1000に搭載され、移動体1000から観察される外界の存在物との相対的な位置の変化を検出することにより移動体1000の移動軌跡を算定する機能を有する装置である。
移動軌跡とは、移動体1000の位置姿勢の時系列を意味する。移動体1000の位置姿勢とは、たとえば、移動体1000が2次元平面上を移動する場合は、所定の2次元座標系における位置座標および方位角(x,y,θ)である。
なお詳細は後述するが、本実施形態に係る移動軌跡算定システム100は、移動体1000の移動中にリアルタイムに周囲の地図の生成も行っている。
=移動体=
移動体1000は、例えば自動運転車、ヒューマノイドロボット、パーソナルモビリティなど、自らの判断で自らの運動を自律的に制御することが可能な装置である。
図1に示すように、移動体1000は、移動軌跡算定システム100、距離センサ200、運動制御部400、アクチュエータ500を備えて構成される。
<距離センサ>
距離センサ200は、外界の存在物までの距離を計測するセンサである。本実施形態に係る距離センサ200は、レーザパルスを出射する光源と、レーザパルスの反射光を検出する検出器とを備えた2次元(2D)レーザスキャナであり、所定の方向に向けて出射したレーザパルスが往復する時間を計測することで計測点までの距離を算定する。
また本実施形態に係る距離センサ200は、レーザパルスの光源及び検出器が所定速度で回転し、所定角度毎あるいは所定時間毎にレーザパルスを出射し、その反射光を検出する。本実施形態では、距離センサ200は左回転に毎秒10回転で回転し、光源が1°回転する毎にレーザパルスを出射する。これらの回転の向きや回転速度、レーザパルスの出射頻度の値は一例であり、距離センサの機種によって異なる。
そして距離センサ200は、計測した距離及びその時のレーザパルスの出射方向を計測結果として出力する。
なお距離センサ200は、レーザパルスが計測点まで届かなかった場合や反射光が検出できなかったような場合には、計測結果を出力しない。このため、本実施形態に係る距離センサ200は、光源が1回転する間に、最大で360カ所の距離及び方向を計測結果として出力するが、計測結果が360個よりも少ないこともある。
本実施形態では、光源が1回転する間に得られる計測結果の集合をスキャンデータあるいはフレームと記す。また所定個数のスキャンデータごとに(例えば10個毎に)選び出されたスキャンデータをキーフレームと記す。また距離センサ200によって距離及び方位が計測された外界の計測点をスキャン点と記す。
また本実施形態では、光源が1回転する時間(0.1秒)を単位時間とし、この単位時間毎の離散時刻をタイミングと記す。このため、光源が1回転する間に得られた計測結果は、同じタイミングで計測されたものとして処理される。タイミングは、実際の測定時刻とは別のものであり、データの通し番号に相当する離散時刻である。
なお、距離センサ200は、レーザ光が水平方向に沿って回転するように移動体1000に装着される。
このような本実施形態で採用するレーザスキャナは、2次元(2D)レーザスキャナや3次元(3D)レーザスキャナを含め、レーザ光の光源を機械的に回転させて周囲の存在物までの距離を逐次的に計測するため、一般に広い視野を確保できる。
そしてこのようなレーザスキャナには、レーザ光の往復時間を計測するものの他に、レーザ光の送信信号と受信信号の位相差を計測するものや、レーザ光の出射点と受光点との間の距離に基づく三角法を用いるものがあり、距離センサ200はそれらのどれでもよい。本実施形態では、代表として2Dレーザスキャナを扱うこととするが、3Dレーザスキャナでもよい。またレーザスキャナの他に、複数の受光素子を用いて複数地点の距離を同時に測定する距離画像カメラを用いてもよい。
<移動軌跡算定システム>
移動軌跡算定システム100は、移動体1000に搭載され、外界の存在物との相対的な位置の変化を検出することにより、移動体1000の移動軌跡を算定する装置である。詳細は後述する。
<運動制御部>
運動制御部400は、移動軌跡算定システム100により推定された移動体1000の所定時間毎の並進量及び回転量(移動ベクトル)や、距離センサ200により得られるスキャンデータを元に作成される外界の地図を用いて、移動体1000を移動させるためのアクチュエータ500を駆動する。
<アクチュエータ>
アクチュエータ500は、移動体1000を移動させるためのモータやバルブ、エンジンなどの動力発生装置である。
=移動軌跡算定システム=
次に、上述した移動軌跡算定システム100について詳細に説明する。
移動軌跡算定システム100は、図1に示すように、スキャンデータ取得部110、経路情報記憶部120、移動ベクトル算出部130、位置情報算出部140、再訪点検出部150、累積移動距離算出部160、ループ閉じ込み処理部170、地図作成部180、地図情報記憶部190を備える。
なお、移動軌跡算定システム100は、不図示のCPU(Central Processing Unit)、RAM(Random Access Memory)やROM(Read Only Memory)、ハードディスク装置などの記憶装置、各種のデータ入出力インタフェース等の機器を有するコンピュータにより構成される。そしてCPUが記憶装置に記憶されているプログラムを実行することにより、本実施形態に係る移動軌跡算定システム100が有する各種機能が実現される。
また移動軌跡算定システム100は、データ入出力インタフェースを通じて、距離センサ200などの外部機器からデータを取得する。またプログラムがCDROMやDVD等の記録媒体に記録されている場合には、これらの記録媒体からプログラムを記憶装置にロードすることができる。あるいはプログラムが他のコンピュータに格納されている場合には、インターネット等の通信ネットワークを介してこのコンピュータからプログラムを記憶装置にダウンロードすることができる。
<スキャンデータ取得部>
スキャンデータ取得部110は、距離センサ200から出力される外界の各計測点(スキャン点)までの距離及び方向を示す計測結果を順次取得する。そしてスキャンデータ取得部110は、距離センサ200による距離の計測方向が1回転する毎に、1回転分の計測結果をスキャンデータP(フレームP)としてまとめ、後述する経路情報記憶部120に記憶する。
このようにしてスキャンデータ取得部110は、距離センサ200によって所定周期(本実施形態では0.1秒毎)で計測される外界の各点までの距離及び方位を含むスキャンデータPを取得する。
なお、各スキャンデータP内の距離及び方向は、計測時点の移動体1000の位置を基準にした局所座標で表わされている。
またPのtは、タイミングを表す整数である。上述したように、タイミングは、距離センサ200の計測方向が1回転する時間を単位時間とする離散時刻である。このスキャンデータPのタイミングを示す整数tは、スキャンデータ取得部110によって適宜、付番される。
スキャンデータ取得部110が取得したスキャンデータPを、図10及び図11を参照しながら説明する。上述したように、スキャンデータPには、外界の各計測点(スキャン点)までの距離及び方向を示すデータが含まれているが、図10及び図11は、それらの各計測点の位置を2次元平面上にプロットしたものである。
このとき、図10及び図11においてr、rで示される点は、距離センサ200すなわち移動体1000の位置を表す。
なお、上述したように、距離センサ200はレーザバルスを360°の全方向に回転させながら出射し、その反射光を検出しているが、図10、図11に示されるように、全てのレーザパルスの反射光が検出できるわけではない。
スキャンデータ取得部110は、このようにして取得したスキャンデータPを、スキャンデータPを取得する毎に順次、経路情報記憶部120に記憶する。
<経路情報記憶部>
つぎに、経路情報記憶部120を図2に示す。
経路情報記憶部120には、図2に示すように、各タイミング毎のスキャンデータPが記憶されている。図2に示す例では、スキャンデータP〜Pが記憶されている。Pは、直近のタイミングnに取得したスキャンデータP、つまり現在位置nにおけるスキャンデータPである。
また詳細は後述するが、経路情報記憶部120には、スキャンデータP(t=0〜n)の他に、各タイミング毎に、移動ベクトルm(t=0〜n)、位置情報r(t=0〜n)、再訪点r、累積移動距離L(t=0〜n)、及び第2相対位置ベクトルv2,t(t=0〜n)がそれぞれ対応づけて記憶されている。
<移動ベクトル算出部>
図1に戻って、移動ベクトル算出部130は、ある第1タイミングiで取得したスキャンデータPと、この第1タイミングから第1所定時間後の第2タイミングjで取得したスキャンデータPと、を照合することにより、第1所定時間における移動体1000の並進量及び回転量、すなわち移動ベクトルmを求める。そして移動ベクトル算出部130は、第1所定時間毎に繰り返し移動ベクトルを算出する。
本実施形態では、第2タイミングjは、第1タイミングiの次のタイミングとしている(j=i+1)。つまり上述した第1所定時間は、距離センサ200が1回転する時間(0.1秒)としている。そして移動ベクトル算出部130は、距離センサ200が1回転する毎に、新たに取得したスキャンデータと前回取得したスキャンデータとの照合を行い、移動体1000の移動ベクトルを算出する。
なお、移動ベクトル算出部130は、2タイミング以上離れたスキャンデータ同士を照合して移動ベクトルを求めるようにしても良い。このようにすると、移動ベクトルを求めるための計算量を減らすことができ、移動軌跡算定システム100の処理負荷を軽減することが可能となる。また距離センサ200が1回転する間に移動ベクトルの算出が間に合わないことが仮にあっても、移動軌跡算定システム100は移動体1000の運動状態を見失うことなく、安定して制御を続けることが可能となる。
移動ベクトル算出部130は、例えばICP(Iterative Closest Points)を用いて、第1タイミングにおけるスキャンデータPと第2タイミングにおけるスキャンデータPとの照合を行う。ICPは、2つの点群データの位置合せをする方法である(ICPについては、例えばP. J. Besl and N. D. Mckay: “A Method of Registration of 3-D Shapes,” IEEE Trans. on PAMI, Vol. 14, No. 2,pp. 239-256, 1992.を参照)。
この場合、移動ベクトル算出部130は、各スキャンデータから得られる計測点(スキャン点)の対応付けと、移動体1000の位置の最適化を交互に行うことで、2つの点群の位置合わせを行う。点対点のICPでは、2つの点群データの対応点間のユークリッド距離の二乗和を誤差関数とする。
また移動ベクトル算出部130は、各スキャンデータから得られるスキャン点の対応付けを行うために、スキャン点の最近傍探索を行う。これは、2つのスキャンデータから得られるスキャン点で最も位置の近いペアを見つける処理である。最近傍探索は、たとえば、FLANN(M. Muja and D. G. Lowe: Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration, Proc. of International Conference on Computer Vision Theory and Applications (VISAPP2009)を参照)などのソフトウェアライブラリを用いて実現することができる。
そして移動ベクトル算出部130は、得られた点の対応付けに対して、下記の式(1)を最小化する移動ベクトルmを求める。式(1)を最小化する手法は種々あるが、本実施形態では準ニュートン法を用いている。
移動ベクトルmの初期値は、移動体100がオドメトリを有している場合には、オドメトリで求めた予測値を用いることができる。あるいは、オドメトリを用いなくても、第1所定時間前に求めた移動ベクトル(前回求めた移動ベクトルmt−1)や所定の固定値を初期値として用いても良い。
移動ベクトル算出部130は、この点の対応づけと誤差最小化の処理を、G(m) の値が収束するまで交互に繰り返すことでICPを行う。
Figure 0006913339
ここで、pt,iは、タイミングt(第2タイミング)のスキャンデータから得られるスキャン点(入力スキャン点とも記す)であり、pref,iは、対応するスキャン点(第1タイミングのスキャンデータから得られるスキャン点であり、参照スキャン点とも記す)である。h(pt,i,m)はpt,iをmで座標変換して得た位置である(pt,iをmの回転成分で回転し、さらにmの並進成分を加える)。
また、nref,iは、pref,iの法線ベクトルである。この評価関数では、pref,iを通りnref,iと直交する直線とpt,iとの距離を計算している。一般に、このような点対線の誤差関数の方が、上述の点対点の誤差関数よりも極小値に陥りにくい。ただし、得られるスキャンデータ内に直線が少ない環境では、点対点の誤差関数(2点間のユークリッド距離)を用いてもよい。
ρは、M推定のカーネル関数であり、誤差の大きいアウトライア(外れ値)の影響を軽減するために用いる。本実施形態では、Geman−McClureカーネルを用いているが、他のカーネル関数でもよい。
移動ベクトル算出部130は、このようにして新たな移動ベクトルmを求める毎に、経路情報記憶部120に順次記憶しておく。なおmは0ベクトルである(並進0、回転0)。
<位置情報算出部>
つぎに位置情報算出部140について説明する。
位置情報算出部140は、第1所定時間毎に得られる移動ベクトルmiを累積することにより、移動体1000の第1所定時間毎の通過地点の位置情報rを求める。
移動ベクトルmiを累積するとは、移動ベクトルmi−1の終点の位置に移動ベクトルmiの始点を重ねることをいう。
具体的には、位置情報算出部140は、新たな移動ベクトルが算出される毎に、式(2)により移動ベクトルを累積し、移動体1000の位置情報を求める。
Figure 0006913339
位置情報算出部140が移動ベクトルmiを累積することで移動体1000の各通過地点の位置情報r(t=0〜n)を求める様子を図3に示す。なお本実施形態では、移動開始地点rも、便宜上、通過地点と称する。
<累積移動距離算出部>
累積移動距離算出部160は、移動体1000の移動ベクトルmiの大きさ|mi|を累積することにより、移動体1000の移動開始地点rから各通過地点r(t=0〜n)までのそれぞれの累積移動距離Lを求める。
具体的には、累積移動距離算出部160は、新たな移動ベクトルが算出される毎に、式(3)により移動体1000の累積移動距離Lを求める。
Figure 0006913339
累積移動距離算出部160が移動ベクトルmiの大きさ|mi|を累積することにより、移動体1000の移動開始地点rから各通過地点r(t=0〜n)までの累積移動距離L(t=0〜n)を求める様子を図3に示す。
<再訪点検出部>
次に、再訪点検出部150について説明する。再訪点検出部150は、移動体1000の各通過地点r(t=0〜n)の中から、移動体1000の最新の通過地点である現在位置rからの距離が所定値よりも小さく、かつ、極小となる通過地点を、移動体1000の再訪点rとして検出する。
図4に、再訪点検出部150によって現在位置rに対して3つの再訪点rs1、rs2、rs3が検出された様子を示す。なお図4において、現在位置rから距離が所定値となる場所を破線の丸印で示してある。
これらの再訪点の検出方法を、図5(a)及び図5(b)を参照しながらより詳細に説明する。
図5(a)は、移動体1000の現在位置rからの距離が所定値よりも小さい通過地点を黒丸で示した図である。
図5(a)に示すように、移動体1000の現在位置rからの距離が所定値以内の範囲(破線の範囲内)には、過去の移動体1000の通過地点が複数存在する場合がある。
この場合、これらの通過地点を全て再訪点としてしまうと、移動軌跡算定システム100は、現在位置rと、これらの再訪点と、に対して後述するループ閉じ込みと呼ばれる処理をそれぞれ行うことになる。
ループ閉じ込みは、移動体1000の現在位置rと再訪点rとのずれを修正するために、現在位置rにおいて得られたスキャンデータPと、再訪点rにおいて得られたスキャンデータPと、を照合する処理や、経路情報記憶部120に記憶されている移動体1000の各通過地点の位置情報r(t=0〜n)と地図情報190を更新する処理を含むため、負荷が大きい。
そのため、移動体1000が現在位置rから次の位置rn+1に移動する短時間の間に、図5(a)に示す全ての再訪点に対するループ閉じ込みの処理を完了できない可能性もある。
そこで本実施形態に係る再訪点検出部150は、移動体1000の現在位置rとの距離が極小となる通過地点を再訪点rとして検出するようにして、再訪点の絞り込みを行う(第1の近傍抑制)。
図5(b)は、移動体1000の現在位置rとの距離が極小となる通過地点を再訪点rとして検出する際の様子を示す図である。図5(b)には、説明の簡単化のために、現在位置r及び再訪点rs1にそれぞれ連なる通過地点のみを示してあるが、他の再訪点rs2、rs3についても同様である。
まず再訪点検出部150は、移動体1000の現在位置rからの距離が所定値よりも小さな8つの通過地点rs1−2、rs1−1、rs1、rs1+1、rs1+2、r、rn−1、rn−2のうち、現在位置rからの距離が極小となる点を選ぶ。この例では、r自身とrs1が選ばれる。ただし、rは現在位置なので再訪点には含めない。このように極小点を求めることで再訪点の個数を減らすことができる。なお、この例では、簡単のため、通過点を8個としているが、実際は任意の個数でよい。
さらに、累積移動距離を用いることで、再訪点の絞り込みを行うこともできる(第2の近傍抑制)。上述のようにして求めた極小点を中心に、該極小点との累積移動距離の差が所定値以内の通過地点を同一グループになるように分類する。図5(b)に示す例では、上記8つの通過地点は、rs1−2、rs1−1、rs1、rs1+1、rs1+2からなる第1グループと、r、rn−1、rn−2からなる第2グループに分類される。
グループの中心となる極小点の選び方によって、グループ構成は変わりうる。選び方としては、たとえば、現在位置rからの直線距離が小さい順に極小点を選ぶ、または、現在位置rから時刻を逆順にたどって極小点を選ぶ、などが考えられる。
そして次に、再訪点検出部150は、各グループごとに、グループ内の各通過地点と現在位置rとの距離が最小となる通過地点を再訪点として一つ選ぶ。
具体的には、再訪点検出部150は、各グループ内で、移動体1000の現在位置rと、各通過地点との距離をそれぞれ求め、これらの距離同士を比較する。そして距離が最小となる再訪点を一つ選ぶ。
図5(b)の例では、第1グループからは再訪点rs1が検出される。第2グループの最小点rは現在位置なので再訪点には含めない。
このようにして第1グループから選出される再訪点rs1は、現在位置rに最も近い本質的な再訪点であると言えるため、再訪点としても好適である。また説明は省略したが、同様にして再訪点rs2及びrs3も検出される。
なお、1つのグループに極小点が複数含まれることがある。図6の例では、同一グループに分類された複数の通過地点rs1−1〜rs1+5の中で、現在位置rからの距離が極小となる再訪点が複数検出されている(rs1とrs1+4)。このような場合であっても、再訪点検出部150は、現在位置rと通過地点rs1との間の距離と、現在位置rと通過地点rs1+4との間の距離と、を比較し、通過地点rs1を再訪点rs1として選出する。
このようにして本実施形態に係る再訪点検出部150によれば、移動体1000の現在位置rからの距離が所定値よりも小さく、かつ、極小となる通過地点を、移動体1000の再訪点rとして検出するようにすることにより、移動体1000の再訪点rを効果的に検出し、移動体1000の移動軌跡を算定する際の処理負荷を軽減することが可能となる。また、同一グループ内に現在位置rからの距離が極小となる再訪点が複数検出される場合でも、現在位置rに最も近接する再訪点を一つ選出することで、さらに効果的に再訪点rの検出を行うことが可能となる。
<地図作成部>
次に、図1に戻って、地図作成部180について説明する。 地図作成部180は、スキャンデータ取得部110が距離センサ200から新たなスキャンデータPを取得する毎に、この新たなスキャンデータPを、移動体1000を基準にした局所座標で表わされた値から、移動体1000の位置に依存しない所定の共通座標で表わされた値に変換する。そして地図作成部180はこれらの共通座標に変換されたスキャンデータを順次、地図情報記憶部190に蓄積することにより、外界の地図を作成する。
例えば、図10は、移動体1000がrで示される位置にいるときに、スキャンデータ取得部110が距離センサ200から取得したスキャンデータPを元に、外界の各スキャン点の位置を2次元平面状にプロットしたものであり、図11は、移動体1000がrで示される位置にいるときに、スキャンデータ取得部110が距離センサ200から取得したスキャンデータPを元に、外界の各スキャン点の位置を2次元平面状にプロットしたものであるが、いずれのスキャンデータP、Pも、それぞれ移動体1000の位置r、rを中心とした局所座標で表現されているため、そのまま重ね合わせることはできない。
本実施形態では、これらのスキャンデータP、Pを、共通座標における値に変換するようにしている。共通座標の原点及び座標軸の向きはどのように定めても良いが、例えば移動体1000の移動開始時の位置及び向きを基準に定めるようにすればよい。
移動体1000の移動開始時の位置及び向きは、経路情報記憶部120に記憶されている移動ベクトルを、移動開始時に遡るように順に参照することによって容易に算定できる。
もちろん実際には、1タイミング毎の移動体1000の並進量及び回転量を蓄積しておき、局所座標から共通座標へ変換する際にはこれらの蓄積値を用いることにより、容易に局所座標から共通座標への変換を行うことができる。
このようにして各スキャンデータP(t=0〜n)から得られる外界の各スキャン点の位置が共通座標上で位置合わせされることによって、地図情報記憶部190に作成された地図の一例を図12に示す。図12は、地図情報記憶部190に蓄積された共通座標のスキャンデータを元に、外界の各スキャン点の位置を2次元平面状にプロットしたものである。このようにして地図情報記憶部190に作成された地図は、運動制御部400によって用いられる。
<ループ閉じ込み処理部>
ループ閉じ込み処理部170は、移動体1000の現在位置rにおいて得られたスキャンデータPと、再訪点rにおいて得られたスキャンデータPと、を照合することにより、現在位置rと再訪点rとの位置ずれを修正する。
ループ閉じ込み処理部170は、第1相対位置ベクトル算出部171と、第2相対位置ベクトル算出部172と、位置情報修正部173と、を有して構成されている。
第1相対位置ベクトル算出部171は、移動ベクトルmi(i=0〜n)を累積することにより算定される移動体1000の現在位置rと、移動ベクトルmi(i=0〜s)を累積することにより算定される再訪点rの位置と、の間の相対位置を示す第1相対位置ベクトルvを求める。
そして第2相対位置ベクトル算出部172は、移動体1000が再訪点rを通過したタイミングs(第3タイミング)におけるスキャンデータPと、移動体1000が現在位置rを通過したタイミングn(第4タイミング)におけるスキャンデータPと、を照合することにより、現在位置rと再訪点rとの間の相対位置を示す第2相対位置ベクトルvを求める。
第2相対位置ベクトル算出部172は、例えばICPを用いて、タイミングsにおけるスキャンデータPとタイミングnにおけるスキャンデータPとの照合を行う。すなわち、第2相対位置ベクトル算出部172は、タイミングnにおけるスキャンデータPから得られる各スキャン点の位置が、タイミングsにおけるスキャンデータPから得られる各スキャン点の位置に近づくように、第2相対位置ベクトルvを求める。
第2相対位置ベクトル算出部172は、移動ベクトル算出部130と同様に、各スキャンデータP、Pから得られるスキャン点の対応付けと、移動体1000の位置の最適化を交互に行うことで、2つの点群の位置合わせを行う。
そして第2相対位置ベクトル算出部172は、得られた点の対応付けに対して、式(4)を最小化する第2相対位置ベクトルvを求める。
Figure 0006913339
式(4)は式(1)と同型であり、pn,iは、タイミングn(第4タイミング) のスキャンデータPから得られるスキャン点であり、ps,iは、対応するスキャン点(第3タイミングのスキャンデータから得られるスキャン点)である。ns,iは、ps,iの法線ベクトルである。また、h(pn,i,)はpn,iをvで座標変換して得た位置である。ρは、M推定のカーネル関数である。式(4)を最小化する手法は種々あるが、本実施形態では準ニュートン法を用いている。
第2相対位置ベクトル算出部172は、このようにして第2相対位置ベクトルvを求める。そして第2相対位置ベクトル算出部172は、第2相対位置ベクトルvを経路情報記憶部120に記憶する。
次に、第2相対位置ベクトル算出部172がICPを行う際に用いる第2相対位置ベクトルvの初期値について説明する。この初期値の算出方法として、以下に第1の方法及び第2の方法を例示する。
第1の方法は、移動体1000が現在位置rを通過した第4タイミングにおけるスキャンデータPから得られる各スキャン点の特徴を表す記述子(後述)と、移動体1000が再訪点rを通過した第3タイミングにおけるスキャンデータPから得られる各スキャン点の特徴を表す記述子と、を比較し、これらの各記述子の一致度合いが所定の判定値よりも大きな第1スキャン点及び第2スキャン点を各スキャンデータP、Pからそれぞれ抽出し、第1スキャン点の位置が第2スキャン点の位置になるような変位ベクトルq(x,y,θ)を、第2相対位置ベクトルvの推定値(初期値)とする方法である。
具体的には、まず第2相対位置ベクトル算出部172は、現在位置rにおけるスキャンデータPと、再訪点rにおけるスキャンデータPについて、各スキャンデータから得られるスキャン点の局所記述子を計算する。
局所記述子は、スキャン点をハフ空間に投影して、ハフ空間での近傍点の分布を特徴ベクトルにしたものである。
次に第2相対位置ベクトル算出部172は、スキャンデータPから得られるスキャン点と、スキャンデータPから得られるスキャン点と、から、局所記述子の一致度が所定の判定値よりも高いペアを選ぶ。
次に第2相対位置ベクトル算出部172は、これらのスキャン点のペアに対して、式(5)〜(7)を用いて姿勢クラスタリングを行う。
まずスキャンデータP、Pにおいて正しく対応するスキャン点を、それぞれp1=(x1,y1,θ1)、p2=(x2,y2,θ2)とする。これらのスキャン点は、各スキャンデータの局所座標系での値である。なおθ1、θ2は法線方向である。このとき、スキャンデータ間の相対位置をq=(x,y,θ)とすると、仮に2つのスキャンデータP、Pが正しく対応していると仮定した場合には、式(5)〜式(7)が成り立つ。
θ=θ1-θ2 (5)
x=x1-(x2cosθ-y2sinθ) (6)
y=y1-(x2sinθ+y2cosθ) (7)
理想的にはこれで相対位置q=(x,y,θ)が求まるが、実際には誤対応や誤差などにより、一組のスキャン点で得た解は信頼性が低い。
そこで、対応するスキャン点の各ペアについて式(5)〜式(7)を解いて得られた相対位置q=(x,y,θ)をクラスタリングして、サイズの大きいクラスタを、第2相対位置ベクトルvの初期値とする(なお、局所記述子及び姿勢クラスタリングについては、例えば、特開2005−174062号公報、及び、友納正裕:ユークリッド変換に不変な特徴量を用いた二次元大域スキャンマッチング方式;『日本ロボット学会誌』Vol.25, No.3, pp.66-77,(2007)を参照)。
この初期値は粗い推定であるが、式(4)のICPで詳細なマッチングを行い、スコアが最もよい解を採用することで、より正確な第2相対位置ベクトルvを算出することができる。
なお、局所記述子は、1つのタイミングのスキャンデータのみを用いて生成しても良いが、前後のタイミングを含む複数のスキャンデータを用いて生成するとなお良い。これにより局所記述子を構成する近傍点の分布を安定させることが可能となる。
また、局所記述子は他の方法によるものを用いてもよい。さらには、局所記述子を用いずに姿勢クラスタリングを行うことも可能である。その場合は、スキャンデータPから得られるスキャン点と、スキャンデータPから得られるスキャン点のすべての組について式(5)〜式(7)を解いて、姿勢クラスタリングを行う。
次に、第2の方法について説明する。図8は、第2の方法を説明するための図である。
第2の方法は、移動体1000が現在位置rを通過したタイミングn(第4タイミング)よりも第2所定期間前(例えば1タイミング前)のタイミングn−1(第5タイミング)からタイミングn(第4タイミング)までの移動体1000の移動ベクトルmを、移動体1000が再訪点rを通過したタイミングs(第3タイミング)よりも1タイミング前(第2所定期間前)のタイミングs−1(第6タイミング)における移動体1000の再訪点の確定した位置(r’s−1=rn−1+v2,n−1)に加えることにより、再訪点rの推定位置(r’s−1+m)を求め、移動体1000の現在位置rと、再訪点の推定位置(r’s−1+m)と、の間の変位ベクトルΔrを、第2相対位置ベクトルvの推定値(初期値)として用いる方法である。ただし、v2,n−1はタイミングn−1での第2相対位置ベクトルである。
つまり第2の方法は、タイミングn−1で実施したループ閉じ込みによって確定した再訪点rs−1の位置r’s−1から、移動体1000の移動ベクトルmを用いて再訪点rの位置を推定する方法である。
なお、移動ベクトル(または相対位置ベクトル)u1=(x1, y11)とu1=(x2, y2, θ2)の加法(u=u1+u2)は次のように行う。
x = x1 + (x2cosθ1 - y2sinθ1) (8)
y = y1 + (x2sinθ1 + y2cosθ1) (9)
θ=θ1 + θ2 (10)
第2相対位置ベクトル算出部172は、この推定を例えば1フレームごとに行う。1フレーム分の移動体1000の移動量mは小さいので、移動体1000が再訪点rを通過したタイミングsの1タイミング前のタイミングs−1において確定した再訪点の位置r’s−1を基準にすることで、現在位置rと再訪点rとの間の第2相対位置ベクトルv2,nの初期値Δrを効率よく求めることができる。
具体的には、まず第2相対位置ベクトル算出部172は、再訪点rs−1の確定位置をr’s−1=rn−1+v2、n−1として求め、それに移動ベクトルmを加えて、次フレームの再訪点候補r’s−1+mを求める。
そして第2相対位置ベクトル算出部172は、移動体1000の現在位置rと再訪点候補r’s−1+mとの間の変位ベクトルΔrを第2相対位置ベクトルv2,nの初期値にする。
その後第2相対位置ベクトル算出部172は、この初期値Δrを用いて、式(4)により、現在位置rのスキャンデータPと、再訪点rのスキャンデータPと、の間のICPを行って、両者の相対位置(第2相対位置ベクトルv2,n)を求める。
<位置情報修正部>
次に、位置情報修正部173は、ループ閉じ込みを行う。具体的には、位置情報修正部173は、第1相対位置ベクトルvと第2相対位置ベクトルvとが求められたら、第1相対位置ベクトルvが第2相対位置ベクトルvに近づくように、移動体1000の各通過地点の位置情報r(t=0〜n)を修正する。
図7に、経路情報記憶部120に記録されている移動体1000の移動ベクトルmi(i=0〜n)を累積することにより得られる移動体1000の移動軌跡の一例を示す。図7に示すように、個々の移動ベクトルmiの誤差により、それらを累積することにより得られる移動体100の移動軌跡にはずれが生じる。
位置情報修正部173は、このずれを修正するように、移動体1000の各通過地点の位置情報r(t=0〜n)を修正する。ループ閉じ込みを行うことによって修正された移動体1000の移動軌跡の例を図13に示す。
位置情報修正部173は、ループ閉じ込みの処理をポーズグラフを用いて行う。ポーズグラフは、移動体1000の位置をノード、ノード間の相対位置をアークとしたグラフである。上述した移動ベクトルmiは、隣接したノード間のアークとなる。また第2相対位置ベクトルvは、離れたノード間のアークであり、ループを生成するのでループアークと呼ばれる。
位置情報修正部173は、経路情報記憶部120を参照してポーズグラフを生成し、このポーズグラフに対してポーズ調整を行うことで、移動体1000の軌跡と地図を修正する。ポーズ調整は、式(11)で表される二乗誤差を最小化することにより行われる。
なお本実施形態では、式(11)の最小化にSPA(Sparse Pose Adjustment)を用いる(SPAについては、K.Konolige, G.Grisetti,et al.:Efficient Sparse Pose Adjustment for 2D Mapping; Proc. of IROS, pp.22-29,(2010)を参照)。
Figure 0006913339
ここで、cはアーク集合、ui,jはアーク(i,j)∈cの観測値(すなわち、移動ベクトルmi、あるいは、第2相対位置ベクトルv2)、関数g(ri,rj)は移動体1000の位置riとrjから計算で得た相対位置(すなわち第1相対位置ベクトルv1)である。またwi,jは、ui,jの誤差共分散である。
以上のようにして、ループ閉じ込み処理部170はループ閉じ込み処理を行う。
このように、移動体1000が再訪点rを通過した際のスキャンデータPを現在位置rのスキャンデータPと比較することで移動体1000の移動軌跡を修正することにより、移動体1000の位置及び運動状態をより正確に把握することが可能となる。
そして本実施形態に係る移動軌跡算定システム1000は、上述したように、移動体1000の現在位置rに対して本質的な再訪点rを特定することができるため、ループ閉じ込みの処理を無駄なく行い、処理負荷の軽減を図ることが可能となる。
なお、複数の再訪点、例えば2つの再訪点rs1、s2検出された場合には、ループ閉じ込み処理部170は、各再訪点rs1、s2に対してそれぞれループ閉じ込みの処理を行う。
=移動軌跡算定システムの制御方法=
次に、移動軌跡算定システム100による処理の流れを、図9を参照しながら説明する。
まず、スキャンデータ取得部110は、距離センサ200から出力される外界の各スキャン点までの距離及び方向を示す計測結果を順次取得する。そしてスキャンデータ取得部110は、距離センサ200による距離の計測方向が1回転する毎に、1回転分の計測結果をスキャンデータP(フレームP)としてまとめ、経路情報記憶部120に記憶する(S1000)。
そして移動ベクトル算出部130は、新たにスキャンデータを取得する毎に、このスキャンデータを前回取得したスキャンデータと照合することにより、第1所定時間毎の移動体1000の移動ベクトルを求め、経路情報記憶部120に記憶する(S1010)。
そして位置情報算出部140は、上記第1所定時間毎に得られる移動ベクトルmi(i=0〜t)を累積することにより、移動体1000の第1所定時間毎の通過地点の位置情報rを求め、経路情報記憶部120に記憶する(S1020)。
また累積移動距離算出部160は、移動体1000の移動ベクトルmiの大きさ|mi|(i=0〜t)を累積することにより、移動体1000の移動開始地点から各通過地点までのそれぞれの累積移動距離Lを求め、経路情報記憶部120に記憶する(S1030)。
そして再訪点検出部150は、移動体1000の各通過地点の中から、移動体1000の最新の通過地点である現在位置rからの距離が所定値よりも小さく、かつ、極小となる通過地点を、移動体1000の再訪点rとして検出する(S1040)。
本実施形態に係る移動軌跡算定システム1000は、このような処理を行うことによって、移動体1000の現在位置rに対して本質的な再訪点rを特定することができるようになるため、ループ閉じ込みの処理を無駄なく行い、移動体1000の移動軌跡を算定する際の処理負荷の軽減を図ることが可能となる。
その後、ループ閉じ込み処理部170は、再訪点rが検出された場合には、移動体1000の現在位置rにおいて得られたスキャンデータPと、再訪点rにおいて得られたスキャンデータPと、を照合することにより、現在位置rと再訪点rsとの位置ずれを修正するループ閉じ込みを行う(S1050)。
また、図9に示すフローチャートには含まれていないが、地図作成部180は、スキャンデータ取得部110が距離センサ200から新たなスキャンデータPを取得する毎に、この新たなスキャンデータPを、移動体1000を基準にした局所座標で表わされた値から、移動体1000の位置に依存しない共通座標で表わされた値に変換し、そして、これらの共通座標に変換されたスキャンデータを順次、地図情報記憶部190に蓄積する。これにより、地図作成部180は、外界の地図を作成する。
移動軌跡算定システム100は、このようにして作成された地図を用いることにより、移動体1000の自律的な運動を適切に行うことが可能となる。
==第2実施形態==
次に、第2実施形態に係る移動軌跡算定システム100について説明する。
第1実施形態では、再訪点検出部150は、スキャンデータ取得部110が距離センサ200からスキャンデータPを取得する毎に再訪点rの検出を行っているが、第2実施形態に係る再訪点検出部150は、キーフレームごとに再訪点rの検出を行う。キーフレームは、所定枚数毎のスキャンデータから選出されるスキャンデータであり、例えば距離センサ200のレーザパルスが10回転するごとに抽出されるスキャンデータ(フレーム)である。
このような態様により、再訪点検出処理(S1040)及びループ閉じ込み処理(S1050)の実行頻度を減らし、移動軌跡算出システム100の処理負荷をさらに軽減することが可能となる。そしてこれにより、処理速度の高速化を図ることができる。
==第3実施形態==
次に、第3実施形態に係る移動軌跡算定システム100について説明する。
第1実施形態及び第2実施形態では、第2相対位置ベクトル算出部172は、経路情報記憶部120に記憶されている現在位置rにおけるスキャンデータPと、再訪点rにおけるスキャンデータPと、を用いて第2相対位置ベクトルvを算出したが、第3実施形態では、地図情報記憶部190に記憶されている地図を用いて第2相対位置ベクトルvを算出する。以下に詳しく説明する。
図10や図11に示したように、1個のスキャンデータでは、周囲の環境形状を十分に表現できないことがある。たとえば、距離センサ200が視野の狭いレーザスキャナである場合は、全周の形状が得られないし、レーザスキャナのレンジが短い場合は、近距離にある存在物の形状しかわからない。
そこで第3実施形態では、移動体1000の現在位置rと再訪点rとの間の第2相対位置ベクトルvを求める際に、経路情報記憶部120に記憶されたスキャンデータを用いるのではなく、地図情報記憶部190に記憶されている地図を用いることにする。
つまり、地図情報記憶部190には、外界の各スキャン点までの距離及び方位を示すスキャンデータが共通座標に変換された形で移動体1000の移動開始時点から蓄積されているが、第3実施形態に係る第2相対位置ベクトル算出部172は、この地図情報記憶部190に蓄積されているスキャンデータを、移動体1000の現在位置r及び再訪点rを起点とする局所座標での距離及び方位を示すデータ(仮想スキャンデータと呼ぶ)にそれぞれ変換し、それらの仮想スキャンデータを照合することにより、現在位置rと再訪点rとの相対位置を求める。
第2相対位置ベクトル算出部172は、移動体1000の位置(現在位置r、再訪点r)を中心として半径Rの範囲にあるスキャン点を地図情報記憶部190に記憶されている全体地図から取り出すことで、仮想スキャンデータを生成する。
より詳しくは、第2相対位置ベクトル算出部172は、まず、地図情報記憶部190に蓄積されている共通座標で表わされたスキャンデータを、移動体1000の現在位置rを基準とした局所座標上での値に変換することにより、現在位置rから外界の各スキャン点までの距離及び方位を示す第1仮想スキャンデータを生成する。
また同様に、第2相対位置ベクトル算出部172は、地図情報記憶部190に蓄積されている共通座標で表されたスキャンデータを、再訪点rを基準とした局所座標上での値に変換することにより、再訪点rから外界の各スキャン点までの距離及び方位を示す第2仮想スキャンデータを生成する。
そして第2相対位置ベクトル算出部172は、第1仮想スキャンデータと第2仮想スキャンデータとを照合することにより、現在位置rと再訪点rとの間の相対位置を示す第2相対位置ベクトルvを求める。
このような態様により、移動体1000の現在位置rと再訪点rとの相対位置である第2相対位置ベクトルvを、より多くのスキャン点を照合することで、より正確に求めることが可能となる。
また本実施形態に係る第2相対位置ベクトル算出部172は、地図情報記憶部190に全体地図として蓄積されている共通座標で表されたスキャンデータから仮想スキャンデータを生成する際に、移動体1000が再訪点rを通過した際の局所座標で表されたスキャンデータPに由来するスキャンデータと、移動体1000が現在位置rを通過した際の局所座標で表されたスキャンデータPに由来するスキャンデータとを混在しないようにしている。
たとえば、図7において、多重ループをなす部分軌跡tr、trは、それぞれ地図上においてスキャン点群s、sを作るが、ループ閉じ込みを行っていない場合には、移動体1000の位置情報の誤差が修正されていないために、これらのスキャン点群はきれいに重ならない。これらのスキャン点群を混在したまま地図から仮想スキャンデータを作ると、その形状は正しくないので、現在位置rと再訪点rのマッチング誤差が大きくなる。
そこで、本実施形態に係る第2相対位置ベクトル算出部172は、累積走行距離Lを用いて部分軌跡を分離し、それぞれで仮想スキャンデータを生成するようにしている。
つまり、第2相対位置ベクトル算出部172は、まず、第1仮想スキャンデータを生成する際には、移動体1000が現在位置rを通過したタイミングn(第4タイミング)から所定タイミングα以内(第3所定期間α以内。n−α〜n)に距離センサ200から取得したスキャンデータPn−α〜Pに由来して地図に蓄積されたスキャンデータを用いる。
また同様に、第2相対位置ベクトル算出部172は、第2仮想スキャンデータを生成する際には、移動体1000が再訪点rを通過したタイミングs(第3タイミング)から所定タイミングα以内(第3所定期間α以内。s−α〜s+α)に距離センサ200から取得したスキャンデータPs−α〜Ps+αに由来して地図に蓄積されたスキャンデータを用いる。
より具体的には、まず、第2相対位置ベクトル算出部172は、経路情報記憶部120から、再訪点rとの累積走行距離の差および直線距離が閾値より小さい通過地点rs−α〜rs+αを部分軌跡として抽出する。
そして第2相対位置ベクトル算出部172は、経路情報記憶部120から部分軌跡として抽出された各通過地点の累積走行距離の最小値atdm(Ls−α)と、最大値atdM(Ls+α)と、を読み出す。
次に第2相対位置ベクトル算出部172は、地図情報記憶部190に記憶されているスキャンデータから、累積走行距離がatdm(Ls−α)とatdM(Ls+α)の範囲内にあるスキャンデータPs−α〜Ps+αに由来する共通座標のスキャンデータを抽出し、その中で再訪点rの近傍のスキャンデータ、つまり、再訪点rとの直線距離が閾値より小さいものを選び、第2仮想スキャンデータとする。
第1仮想スキャンデータも同様に抽出する。ただし、第1仮想スキャンデータを抽出する場合は、最新のスキャンデータはPなので、Pn−α〜Pに由来する共通座標のスキャンデータを地図から抽出し、その中で現在位置rの近傍のスキャンデータ、つまり、現在位置rとの直線距離が閾値より小さいものを選ぶ。
その後第2相対位置ベクトル算出部172は、第1実施形態と同様に、例えばICPを用いて第1仮想スキャンデータと第2仮想スキャンデータとの照合を行い、第1仮想スキャンデータから得られる各スキャン点の位置が、第2仮想スキャンデータから得られる各スキャン点の位置に近づくように、第2相対位置ベクトルvを求める。
この第3実施形態では、多重ループをなす各部分軌跡において、累積走行距離を用いて仮想スキャンデータを抽出しているため、再訪点rが仮想スキャンデータを作る部分軌跡のほぼ中心にできる。つまり、再訪点rの仮想スキャンデータは、Ps−αからPs+αの範囲のスキャンデータを用いて作成することができる。
なお、SLAMの最中に部分地図を定期的に保存しておき、それを仮想スキャンデータにするようにしても良い。
以上のような態様によっても、第1実施形態や第2実施形態と同様に、移動体1000の現在位置rに対して本質的な再訪点rを特定することができるため、ループ閉じ込みの処理を無駄なく行え、処理負荷の軽減を図ることが可能となる。
==第4実施形態==
第1実施形態から第3実施形態では、スキャンデータ取得部110は、距離センサ200から取得した各スキャン点までの距離及び方位の計測結果をそのままスキャンデータPとして経路情報記憶部120に記憶したが、第4実施形態に係るスキャンデータ取得部110は、距離センサ200から各スキャン点までの距離及び方位の計測結果を取得した際に、隣り合うスキャン点の間隔が全体として平準化されるように、各計測結果を補正する。
例えば距離センサ200が回転型である場合は、スキャン点までの計測距離が遠い場合と近い場合とを比べると、距離が遠いスキャン点であるほど隣り合うスキャン点の間隔が離れるが、本実施形態では、例えば計測距離がより近いスキャン点ほどより多くのスキャン点を間引くように補正することで、スキャンデータP全体として隣り合うスキャン点の間隔を平準化するようにする。
本実施形態ではスキャン点の平準化を以下のように行っている。なお、スキャン点を平準化して得られる点をマップ点と称する。
スキャンデータ取得部110は、マップ点をその近傍内にある複数のスキャン点から生成する。スキャンデータ取得部110は、まず、あるスキャン点を中心にして、そのスキャン点から所定距離d以内にあるスキャン点を集める。
次にスキャンデータ取得部110は、そのスキャン点集合の重心を中心にして再び所定距離d以内のスキャン点を集め、重心が収束するまで同じ処理を繰り返す。そして重心が収束した点をマップ点とする。このため、本実施形態に係るスキャンデータPを構成するマップ点は、360よりも少なくなる。
また、本実施形態に係るスキャンデータ取得部110は、マップ点を構成するスキャン点集合を主成分分析して、その最小固有ベクトルをマップ点の法線方向とする。そしてこの法線を用いて、第1実施形態において説明した各スキャン点の特徴を表す局所記述子を定義するようにしても良い。
また本実施形態では、スキャンデータ取得部110は、各マップ点に、そのマップ点の生成に用いたスキャン点を得たときの移動体1000の累積走行距離Lを記録しておく。
また地図作成部180が各タイミングtのスキャンデータPを共通座標の地図に追加していく際、P内のスキャン点の共通座標系での位置の所定距離d内に累積移動距離の差が閾値D以内のマップ点があれば、そのうちの最近傍のマップ点にそのスキャン点を統合する。このような処理により、地図を構成するマップ点の密度をほぼ一定に保つことが可能となる。累積移動距離によってマップ点を分離するのは、第3実施形態で述べたように、多重ループをなす各部分軌跡の仮想スキャンデータを抽出する際に、マップ点を累積移動距離で区別できるようにするためである。
なお、本実施形態に係るスキャンデータ取得部110は、マップ点を生成する際に、スキャン点集合の大きさが閾値に満たない場合は、マップ点を生成せずにそのスキャン点を削除するようにしても良い。これにより、スキャン点における小さなノイズを除去することができる。
このようにマップ点を用いてスキャンデータPを生成するためには、近傍内にあるスキャン点を頻繁に検索する必要があるため、高速な最近傍探索が必要であるが、本実施形態に係る移動軌跡算定システム100は、FLANNなどの最近傍探索ライブラリを用いている。
なお、図10及び図11に示した各スキャン点は、このようにして平準化が行われている。本実施形態に係る移動軌跡算定システム100のような態様によって、複数のスキャンデータを照合する際に、対応づける点の密度にムラが少なくなり、計測距離の影響を受けにくくできるため、精度良く照合を行うことが可能となる。また、マップ点はスキャン点よりも個数が少なくなるため、メモリ効率も向上する。
==第5実施形態==
第5実施形態に係る移動軌跡算定システム100は、第2実施形態から第4実施形態でそれぞれ説明した構成をすべて含む形態である。
そして本実施形態に係る移動軌跡算定システム100を用いて実験を行った結果を、図12〜図14に示す。なお本実験では、10フレームおきにキーフレームをとり、キーフレーム単位でループ閉じ込みを行った。
図12は、本実施形態に係る移動軌跡算定システム100により作成された外界の地図を示す。図13は移動体1000の移動軌跡であり、主な地点でのキーフレーム番号を付加している。図13の移動軌跡は、移動体1000の前方をx軸、横方向をy軸とした座標系で表した位置の列である。図14は、各キーフレームで異なる再訪点が何個検出されたかを示すグラフである。横軸がキーフレーム番号、縦軸が再訪点数である。
図14を見ると、キーフレーム1から進むにつれて再訪点が増えていく様子がわかる。図13の拡大部分Aには。軌跡が5本ある。このため、再訪点は4個得られるはずであるが、図14のグラフのキーフレーム817付近の区間では、再訪点数は4個であり、すべて検出できていることがわかる。
同様に、図13の拡大部分Bには、軌跡が6本あり、再訪点は5個得られるはずである。図14のグラフのキーフレーム番号834付近の区間では、再訪点数は4〜5個であり、ほぼすべての再訪点が得られていることが分かる。このように、図12から図14の結果から、本実施形態に係る移動軌跡算定システム100によって、多くの再訪点が正しく検出できていることが確かめられる。
以上、第1〜第5に係る実施形態の移動軌跡算定システム100について説明したが、いずれの移動軌跡算定システム100においても、移動体1000の再訪点rをより効果的に特定し、移動体1000の移動軌跡を算定する際の処理負荷を軽減することが可能となる。
また本実施形態に係る移動軌跡算定システム100は、ICPや局所記述子において法線を使うため、壁などが多く形状が安定している屋内環境に適している。
さらに、第4実施形態及び第5実施形態に係る移動軌跡算定システム100は、スキャン点を直接使うのではなく、その集合であるマップ点の法線を主成分分析で得ているため、形状に多少の凹凸があっても安定して処理を行うことができる。
なお上述した実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得るとともに、本発明にはその等価物も含まれる。
例えば、移動体1000は、自らの判断で自らの運動を自律的に制御することが可能な装置の他、人間や他の制御装置からの操作に従って移動する装置でも良い。さらには人間が2Dレーザスキャナ(距離センサ200)及び移動軌跡算定システム100を携帯して移動することで、人間の移動軌跡を推定する形態であってもよい。
さらに移動軌跡算定システム1000は、第2実施形態から第4実施形態に示した構成を任意の組み合わせで備える構成であっても良い。
100 移動軌跡算定システム
110 スキャンデータ取得部
120 経路情報記憶部
130 移動ベクトル算出部
140 位置情報算出部
150 再訪点検出部
160 累積移動距離算出部
170 ループ閉じ込み処理部
171 第1相対位置ベクトル算出部
172 第2相対位置ベクトル算出部
173 位置情報修正部
180 地図作成部
190 地図情報記憶部
200 距離センサ
400 運動制御部
500 アクチュエータ
1000 移動体

Claims (9)

  1. 移動体に搭載され、外界の存在物との相対的な位置の変化を検出することにより前記移動体の移動軌跡を算定する移動軌跡算定システムであって、
    前記移動体に搭載される距離センサによって計測される外界の各点までの距離及び方位を含むスキャンデータを所定周期で取得するスキャンデータ取得部と、
    第1タイミングで取得したスキャンデータと、前記第1タイミングから第1所定時間後の第2タイミングで取得したスキャンデータと、を照合することにより、前記第1所定時間における前記移動体の移動ベクトルを求める移動ベクトル算出部と、
    前記第1所定時間毎に求めた移動ベクトルを累積することにより、前記移動体の前記第1所定時間毎の各通過地点の位置情報を求める位置情報算出部と、
    前記移動体の前記移動ベクトルの大きさを累積することにより、前記移動体の移動開始地点から前記各通過地点までのそれぞれの累積移動距離を求める累積移動距離算出部と、
    前記各通過地点のうち前記移動体の現在位置からの距離が所定値よりも小さな通過地点を前記移動体の再訪点として検出し、前記再訪点が複数検出された場合には、前記複数の再訪点のそれぞれの前記累積移動距離の差が所定値以内のもの同士が同一グループになるように前記複数の再訪点を分類し、前記各グループから、前記移動体の前記現在位置に最も近接する再訪点を一つ選出する再訪点検出部と、
    を備えることを特徴とする移動軌跡算定システム。
  2. 請求項に記載の移動軌跡算定システムであって、
    前記移動体の現在位置の位置情報と、前記再訪点の位置情報と、に基づいて、前記現在位置と前記再訪点との間の相対位置を示す第1相対位置ベクトルを求める第1相対位置ベクトル算出部と、
    前記移動体が前記再訪点を通過した第3タイミングに取得したスキャンデータと、前記移動体が前記現在位置を通過した第4タイミングに取得したスキャンデータと、を照合することにより、前記現在位置と前記再訪点との間の相対位置を示す第2相対位置ベクトルを求める第2相対位置ベクトル算出部と、
    前記第1相対位置ベクトルが前記第2相対位置ベクトルに近づくように、前記移動体の前記各通過地点の位置情報を修正する位置情報修正部と、
    を備えることを特徴とする移動軌跡算定システム。
  3. 請求項に記載の移動軌跡算定システムであって、
    前記第2相対位置ベクトル算出部は、前記第4タイミングに取得したスキャンデータから得られる外界の各計測点の位置が、前記第3タイミングに取得したスキャンデータから得られる外界の各計測点の位置に近づくように、前記第2相対位置ベクトルを求める
    ことを特徴とする移動軌跡算定システム。
  4. 請求項に記載の移動軌跡算定システムであって、
    前記第2相対位置ベクトル算出部は、前記第4タイミングに取得したスキャンデータから得られる外界の各計測点の特徴を表す記述子と、前記第3タイミングに取得したスキャンデータから得られる外界の各計測点の特徴を表す記述子と、を比較し、前記各記述子の一致度合いが所定の判定値よりも大きな第1計測点及び第2計測点を前記各スキャンデータからそれぞれ抽出し、前記第1計測点の位置が前記第2計測点になるような変位ベクトルを、前記第2相対位置ベクトルの推定値として用いる
    ことを特徴とする移動軌跡算定システム。
  5. 請求項に記載の移動軌跡算定システムであって、
    前記第2相対位置ベクトル算出部は、前記移動体が前記現在位置を通過した前記第4タイミングよりも第2所定期間前の第5タイミングから前記第4タイミングまでの前記移動体の移動ベクトルを、前記移動体が前記再訪点を通過した前記第3タイミングよりも前記第2所定期間前の第6タイミングにおける前記移動体の通過地点の位置情報に加えることにより、前記再訪点の推定位置を求め、前記移動体の前記現在位置と、前記再訪点の前記推定位置と、の間の変位ベクトルを、前記第2相対位置ベクトルの推定値として用いる
    ことを特徴とする移動軌跡算定システム。
  6. 請求項2〜5のいずれかに記載の移動軌跡算定システムであって、
    前記スキャンデータ取得部が前記距離センサから新たなスキャンデータを取得する毎に、前記新たなスキャンデータを、前記移動体を基準にした局所座標で表わされた値から、前記移動体に依存しない所定の共通座標で表わされた値に変換して蓄積することにより、外界の地図を作成する地図作成部と、
    をさらに備え、
    前記第2相対位置ベクトル算出部は、前記地図に蓄積されている前記共通座標で表わされたスキャンデータを、前記移動体の前記現在位置を基準とした局所座標上での値に変換することにより、前記現在位置から外界の各計測点までの距離及び方位を示す第1仮想スキャンデータを生成すると共に、前記地図に蓄積されている前記共通座標で表されたスキャンデータを、前記再訪点を基準とした局所座標上での値に変換することにより、前記再訪点から外界の各計測点までの距離及び方位を示す第2仮想スキャンデータを生成し、前記第1仮想スキャンデータ及び前記第2仮想スキャンデータを、それぞれ、前記第3タイミングにおける前記スキャンデータ及び前記第4タイミングにおける前記スキャンデータであるものとして照合することにより、前記現在位置と前記再訪点との間の位置差を示す前記第2相対位置ベクトルを求める
    ことを特徴とする移動軌跡算定システム。
  7. 請求項に記載の移動軌跡算定システムであって、
    前記第2相対位置ベクトル算出部は、前記第1仮想スキャンデータを生成する際には、前記移動体が前記現在位置を通過した前記第4タイミングから第3所定期間内に前記距離センサから取得したスキャンデータに由来して前記地図に蓄積されたスキャンデータを用いると共に、前記第2仮想スキャンデータを生成する際には、前記移動体が前記再訪点を通過した前記第3タイミングから前記第3所定期間内に前記距離センサから取得したスキャンデータに由来して前記地図に蓄積されたスキャンデータを用いる
    ことを特徴とする移動軌跡算定システム。
  8. 移動体に搭載され、外界の存在物との相対的な位置の変化を検出することにより前記移動体の移動軌跡を算定する移動軌跡算定システムの制御方法であって、
    前記移動軌跡算定システムが、前記移動体に搭載される距離センサによって計測される外界の各点までの距離及び方位を含むスキャンデータを所定周期で取得し、
    前記移動軌跡算定システムが、第1タイミングで取得したスキャンデータと、前記第1タイミングから第1所定時間後の第2タイミングで取得したスキャンデータと、を照合することにより、前記第1所定時間における前記移動体の移動ベクトルを求め、
    前記移動軌跡算定システムが、前記第1所定時間毎に求めた移動ベクトルを累積することにより、前記移動体の前記第1所定時間毎の各通過地点の位置情報を求め、
    前記移動軌跡算定システムが、前記移動体の前記移動ベクトルの大きさを累積することにより、前記移動体の移動開始地点から前記各通過地点までのそれぞれの累積移動距離を求め、
    前記移動軌跡算定システムが、前記各通過地点のうち前記移動体の現在位置からの距離が所定値よりも小さな通過地点を前記移動体の再訪点として検出し、前記再訪点が複数検出された場合には、前記複数の再訪点のそれぞれの前記累積移動距離の差が所定値以内のもの同士が同一グループになるように前記複数の再訪点を分類し、前記各グループから、前記移動体の前記現在位置に最も近接する再訪点を一つ選出することを特徴とする移動軌跡算定システムの制御方法。
  9. 移動体に搭載され、外界の存在物との相対的な位置の変化を検出することにより前記移動体の移動軌跡を算定する移動軌跡算定システムに、
    前記移動体に搭載される距離センサによって計測される外界の各点までの距離及び方位を含むスキャンデータを所定周期で取得する手順と、
    第1タイミングで取得したスキャンデータと、前記第1タイミングから第1所定時間後の第2タイミングで取得したスキャンデータと、を照合することにより、前記第1所定時間における前記移動体の移動ベクトルを求める手順と、
    前記第1所定時間毎に求めた移動ベクトルを累積することにより、前記移動体の前記第1所定時間毎の各通過地点の位置情報を求める手順と、
    前記移動体の前記移動ベクトルの大きさを累積することにより、前記移動体の移動開始地点から前記各通過地点までのそれぞれの累積移動距離を求める手順と、
    前記各通過地点のうち前記移動体の現在位置からの距離が所定値よりも小さな通過地点を前記移動体の再訪点として検出し、前記再訪点が複数検出された場合には、前記複数の再訪点のそれぞれの前記累積移動距離の差が所定値以内のもの同士が同一グループになるように前記複数の再訪点を分類し、前記各グループから、前記移動体の前記現在位置に最も近接する再訪点を一つ選出する手順と、
    を実行させるためのプログラム。
JP2017012051A 2017-01-26 2017-01-26 移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム Active JP6913339B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017012051A JP6913339B2 (ja) 2017-01-26 2017-01-26 移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017012051A JP6913339B2 (ja) 2017-01-26 2017-01-26 移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2018120460A JP2018120460A (ja) 2018-08-02
JP6913339B2 true JP6913339B2 (ja) 2021-08-04

Family

ID=63043816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017012051A Active JP6913339B2 (ja) 2017-01-26 2017-01-26 移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6913339B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3087884B1 (fr) * 2018-10-31 2021-04-02 Renault Sas Procede de determination d’un vecteur de deplacement d’un vehicule automobile, procede de determination d’une vitesse du vehicule et vehicule associe
CN111862203B (zh) * 2019-04-30 2024-05-17 高新兴科技集团股份有限公司 基于3d地图的球机位置与姿态参数校准方法、存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012064131A (ja) * 2010-09-17 2012-03-29 Tokyo Institute Of Technology 地図生成装置、地図生成方法、移動体の移動方法、及びロボット装置
AU2011305154B2 (en) * 2010-09-24 2015-02-05 Irobot Corporation Systems and methods for VSLAM optimization
CN104471558B (zh) * 2013-06-28 2017-11-07 英特尔公司 用于重访位置检测的系统和方法
JP6481347B2 (ja) * 2014-11-28 2019-03-13 村田機械株式会社 移動量推定装置、自律移動体、及び移動量の推定方法

Also Published As

Publication number Publication date
JP2018120460A (ja) 2018-08-02

Similar Documents

Publication Publication Date Title
CN112985416B (zh) 激光与视觉信息融合的鲁棒定位和建图方法及系统
Ström et al. Robust exploration and homing for autonomous robots
Nieto et al. Recursive scan-matching SLAM
US9239580B2 (en) Autonomous mobile robot, self position estimation method, environmental map generation method, environmental map generation apparatus, and data structure for environmental map
JP4079690B2 (ja) 物体追跡装置及び方法
US8831778B2 (en) Method of accurate mapping with mobile robots
Luck et al. Registration of range data using a hybrid simulated annealing and iterative closest point algorithm
Ström et al. Predictive exploration considering previously mapped environments
JP2005528707A (ja) データ組間の特徴マッピング
JP6782903B2 (ja) 自己運動推定システム、自己運動推定システムの制御方法及びプログラム
Bosse ATLAS: a framework for large scale automated mapping and localization
TWI772743B (zh) 資訊處理裝置以及移動機器人
WO2012176249A1 (ja) 自己位置推定装置、自己位置推定方法、自己位置推定プログラム、及び移動体
Ratter et al. GPU accelerated graph SLAM and occupancy voxel based ICP for encoder-free mobile robots
JP6913339B2 (ja) 移動軌跡算定システム、移動軌跡算定システムの制御方法及びプログラム
KR101738751B1 (ko) 실내 자기장을 이용한 이동 로봇의 위치 인식 방법 및 장치
Park et al. Global localization for mobile robots using reference scan matching
Thomas et al. Delio: Decoupled lidar odometry
Tiar et al. ICP-SLAM methods implementation on a bi-steerable mobile robot
KR102624644B1 (ko) 벡터 맵을 이용한 이동체의 맵 매칭 위치 추정 방법
KR20230056690A (ko) 다중 에이전트 맵 생성
Tungadi et al. Multiple laser polar scan matching with application to SLAM
Hernández et al. Occupancy grid mapping in an underwater structured environment
Wang et al. Mobile robot pose estimation using laser scan matching based on fourier transform
Karlsson et al. The vSLAM algorithm for navigation in natural environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210622

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210705

R150 Certificate of patent or registration of utility model

Ref document number: 6913339

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150