(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-15
(45)【発行日】2022-08-23
(54)【発明の名称】地図生成システムおよび移動体
(51)【国際特許分類】
G09B 29/00 20060101AFI20220816BHJP
G08G 1/16 20060101ALI20220816BHJP
G05D 1/02 20200101ALI20220816BHJP
【FI】
G09B29/00 Z
G08G1/16 C
G05D1/02 L
G05D1/02 Z
(21)【出願番号】P 2020533896
(86)(22)【出願日】2018-07-30
(86)【国際出願番号】 JP2018028426
(87)【国際公開番号】W WO2020026294
(87)【国際公開日】2020-02-06
【審査請求日】2020-10-12
【新規性喪失の例外の表示】特許法第30条第2項適用 平成30年3月14日に第23回ロボテックスシンポジウムにて発表
(73)【特許権者】
【識別番号】598163064
【氏名又は名称】学校法人千葉工業大学
(74)【代理人】
【識別番号】100167900
【氏名又は名称】福井 仁
(72)【発明者】
【氏名】友納 正裕
【審査官】岸 智史
(56)【参考文献】
【文献】特開2011-238104(JP,A)
【文献】特開2018-005470(JP,A)
【文献】特開2017-222309(JP,A)
【文献】特開2017-191539(JP,A)
【文献】特開2017-166966(JP,A)
【文献】友納 正裕,観測度数をもつ占有格子地図による長時間地図構成のためのデータ削減方法,日本機械学会論文集,日本,2018年05月08日,https:www.jstage.jst.go.jp/article/transjsme/advpub_18-00058/_pdf/-char/ja
(58)【調査した分野】(Int.Cl.,DB名)
G09B 29/00-29/14
G05D 1/02
G08G 1/16
(57)【特許請求の範囲】
【請求項1】
移動体の移動範囲における周囲の物体までの距離と方向を検出手段によって検出し、物体の有無に基づいて占有格子地図を生成する地図生成システムであって、
前記検出手段による検出単位ごとの検出値を検出情報として時系列に記憶する記憶手段と、
前記記憶手段に記憶された検出情報に基づいて占有格子地図を作成して前記記憶手段に記憶させる地図作成手段と、
前記記憶手段に記憶された検出情報ごとに地図作成に寄与する度合いを示す影響度を
、前記占有格子地図の区画の値に関与する検出情報の集合を区画ごとに求め、該関与検出情報集合に含まれる検出情報を新しい順に並べた順列において、該順列の先頭から所定個数番目までの検出情報に対しては該区画を有効とし、該所定個数番目の次から最後までの検出情報に対しては該区画を無効とすることによって、検出情報ごとの各区画の有効または無効を決定するとともに、有効な区画の割合に応じて高くなるように該検出情報の影響度を算出する影響度算出手段と、を備え、
前記地図作成手段は、前記影響度算出手段にて算出された影響度が所定の閾値よりも小さい検出情報を用いないように選別して占有格子地図を作成する
ことを特徴とする地図生成システム。
【請求項2】
請求項1に記載された地図生成システムにおいて、
前記記憶手段に記憶された検出情報を占有格子地図の区画ごとに
、該検出情報の新しい順に計数して観測度数として算出する観測度数算出手段をさらに備え、
前記影響度算出手段は、
新しい検出情報から入力して、前記観測度数算出手段にて算出された観測度数
が所定の閾値より小さい区画を該検出情報に対して有効とし、前記観測度数が前記閾値より大きい区画を該検出情報に対して無効とすることによって、検出情報ごとの各区画の有効または無効を決定するとともに、有効な区画の割合に応じて高くなるように
該検出情報の影響度を算出する
ことを特徴とする地図生成システム。
【請求項3】
請求項2に記載された地図生成システムにおいて、
前記地図作成手段は、前記観測度数算出手段にて算出された観測度数が所定の閾値よりも小さい区画に対して区画値を更新して占有格子地図を作成する
ことを特徴とする地図生成システム。
【請求項4】
請求項2に記載された地図生成システムにおいて、
前記地図作成手段は、前記観測度数算出手段にて算出された観測度数に関わらずに、各区画に対する区画値を更新して占有格子地図を作成する
ことを特徴とする地図生成システム。
【請求項5】
請求項1から請求項4のいずれかに記載された地図生成システムにおいて、
前記地図作成手段は、前記影響度算出手段にて算出された影響度が所定の閾値よりも小さい検出情報を前記記憶手段から消去する
ことを特徴とする地図生成システム。
【請求項6】
請求項5に記載された地図生成システムにおいて、
前記地図作成手段は、検出情報を前記記憶手段から消去する前に、前記記憶手段に記憶された全ての検出情報を使用して占有格子地図を作成する
ことを特徴とする地図生成システム。
【請求項7】
請求項5または請求項6に記載された地図生成システムにおいて、
前記記憶手段に記憶された全ての検出情報の影響度の合計と、所定の数の検出情報の集合に属する検出情報の影響度の合計と、の比を網羅率として算出する網羅率算出手段をさらに備え、
前記地図作成手段は、前記網羅率算出手段にて算出された網羅率に基づいて、前記影響度の閾値を設定する
ことを特徴とする地図生成システム。
【請求項8】
移動手段、検出手段および制御手段を備えた移動体であって、
請求項1から請求項7のいずれかに記載された地図生成システムが前記制御手段によって構成される
ことを特徴とする移動体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、地図生成システムおよび移動体に関する。
【背景技術】
【0002】
従来、自律走行可能な移動体が自律走行するための技術として、SLAM(Simultaneous Localization and Mapping) と称される自己位置推定と環境地図作成の技術が用いられている。環境地図としては、移動体の移動範囲における物体の有無に基づいて作成された占有格子地図が用いられることがある(例えば、特許文献1参照)。この占有格子地図は、移動範囲の平面や空間を複数の区画(セル)に分割して記憶するとともに、分割した各区画に対して物体の有無に応じたセル値が付与されている。また、占有格子地図では、区画ごとに複数のスキャンに基づいて物体の存在する確率(以下では、存在確率や占有確率と称することがある)が算出され、この確率に基づいて各区画のセル値が管理されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、占有格子地図の作成(および更新)は、所定時間ごとや所定スキャン回数ごとに実行され、そのスキャン数が多いほど情報量が増えて地図の精度を高めることができるものの、スキャンデータ(以下では、検出情報と称することがある)の増大に伴いメモリを圧迫するとともに演算処理の負荷も増加してしまう。また、1つの区画に対して複数のスキャンから存在確率およびセル値を算出する場合、前後に実行されたスキャンの間で情報が重複し、後のスキャンによってセル値が上書きされることが起きる。このため古いスキャンデータから順次削除していき、新しいスキャンデータだけを使用してセル値を算出する手法も考えられるが、そうすると有効な情報を含んだ古いスキャンデータをも削除してしまう可能性があり、地図の精度が低下してしまうことがある。
【0005】
本発明の目的は、占有格子地図の地図精度を確保しつつメモリ容量や演算処理の負荷を軽減させることができる地図生成システムおよび移動体を提供することである。
【課題を解決するための手段】
【0006】
本発明の地図生成システムは、移動体の移動範囲における周囲の物体までの距離と方向を検出手段によって検出し、物体の有無に基づいて占有格子地図を生成する地図生成システムであって、前記検出手段による検出単位ごとの検出値を検出情報として時系列に記憶する記憶手段と、前記記憶手段に記憶された検出情報に基づいて占有格子地図を作成して前記記憶手段に記憶させる地図作成手段と、前記記憶手段に記憶された検出情報ごとに地図作成に寄与する度合いを示す影響度を、前記占有格子地図の区画の値に関与する検出情報の集合を区画ごとに求め、該関与検出情報集合に含まれる検出情報を新しい順に並べた順列において、該順列の先頭から所定個数番目までの検出情報に対しては該区画を有効とし、該所定個数番目の次から最後までの検出情報に対しては該区画を無効とすることによって、検出情報ごとの各区画の有効または無効を決定するとともに、有効な区画の割合に応じて高くなるように該検出情報の影響度を算出する影響度算出手段と、を備え、前記地図作成手段は、前記影響度算出手段にて算出された影響度が所定の閾値よりも小さい検出情報を用いないように選別して占有格子地図を作成することを特徴とする。
【0007】
このような本発明によれば、地図作成手段は、影響度算出手段にて算出された影響度に基づいて、検出情報を選別して占有格子地図を作成するので、効率よく占有格子地図を作成または更新することができる。すなわち、地図作成手段は、占有格子地図に対する影響度が小さい検出情報を用いないように選別することで、演算に利用する検出情報の数を減らすことができ、メモリ容量が少なくて済むとともに演算処理の負荷を軽減させることができる。一方、占有格子地図に対する影響度が大きい検出情報を選別して用いることで、古い検出情報であっても有効なものが残されるため、作成する占有格子地図の地図精度を確保することができる。
【0008】
本発明では、前記記憶手段に記憶された検出情報を占有格子地図の区画ごとに、該検出情報の新しい順に計数して観測度数として算出する観測度数算出手段をさらに備え、
前記影響度算出手段は、新しい検出情報から入力して、前記観測度数算出手段にて算出された観測度数が所定の閾値より大きい区画を該検出情報に対して有効とし、前記観測度数が前記閾値より大きい区画を該検出情報に対して無効とすることによって、検出情報ごとの各区画の有効または無効を決定するとともに、有効な区画の割合に応じて高くなるように該検出情報の影響度を算出することが好ましい。
【0009】
このような構成によれば、観測度数算出手段は、記憶手段に記憶された検出情報を占有格子地図の区画ごとに計数して観測度数として算出し、この観測度数に基づいて有効とした区画の割合に応じて検出情報の影響度を高くすることで、効率よく検出情報を選別することができる。すなわち、ある区画に対して古いものから新しいものまで複数の検出情報(検出値)が存在する場合に、その個数(検出の回数)を観測度数として記録し、新しいものから所定数を有効とし、それよりも古いものを無効とする。そして、有効な区画が多く存在する検出情報の影響度を高く評価する。このようにすることで観測度数が高い(検出の回数が多い)区画に対しては、環境変化が反映されやすい新しい検出情報の影響度が高くなり、占有格子地図の地図精度を高めることができる。一方、観測度数が低い(検出の回数が少ない)区画に対しては、比較的古い検出情報まで影響度が高く評価され、古くても有効な情報を含んだ検出情報を適切に残して占有格子地図を作成することができる。
【0010】
本発明では、前記地図作成手段は、前記観測度数算出手段にて算出された観測度数が所定の閾値よりも小さい区画に対して区画値を更新して占有格子地図を作成することが好ましい。
【0011】
このような構成によれば、地図作成手段は、観測度数が所定の閾値よりも小さい区画に対して区画値を更新して占有格子地図を作成するので、相対的に新しい検出情報が選別されることになり、環境変化を反映させた占有格子地図を作成することができる。
【0012】
本発明では、前記地図作成手段は、前記観測度数算出手段にて算出された観測度数に関わらずに、各区画に対する区画値を更新して占有格子地図を作成することが好ましい。
【0013】
このような構成によれば、地図作成手段は、観測度数に関わらずに、各区画に対する区画値を更新して占有格子地図を作成するので、占有格子地図の安定性を向上させることができる。
【0014】
本発明では、前記地図作成手段は、前記影響度算出手段にて算出された影響度が所定の閾値よりも小さい検出情報を前記記憶手段から消去することが好ましい。
【0015】
このような構成によれば、地図作成手段は、影響度が所定の閾値よりも小さい検出情報を記憶手段から消去することで、占有格子地図の作成にかかる演算負荷と時間を削減することができるとともに、記憶手段の容量を節約することができる。
【0016】
本発明では、前記地図作成手段は、検出情報を前記記憶手段から消去する前に、前記記憶手段に記憶された全ての検出情報を使用して占有格子地図を作成することが好ましい。
【0017】
このような構成によれば、地図作成手段は、検出情報を記憶手段から消去する前に、記憶手段に記憶された全ての検出情報を使用して占有格子地図を作成するので、占有格子地図の安定性を向上させることができる。
【0018】
本発明では、前記記憶手段に記憶された全ての検出情報の影響度の合計と、所定の数の検出情報の集合に属する検出情報の影響度の合計と、の比を網羅率として算出する網羅率算出手段をさらに備え、前記地図作成手段は、前記網羅率算出手段にて算出された網羅率に基づいて、前記影響度の閾値を設定することが好ましい。
【0019】
このような構成によれば、地図作成手段は、網羅率算出手段にて算出された網羅率に基づいて、影響度の閾値を設定するので、効率よく検出情報を選別して占有格子地図を作成することができる。また、網羅率に基づいて影響度の閾値が自動的に設定されるので、演算処理を効率化することができる。
【0020】
本発明の移動体は、移動手段、検出手段および制御手段を備えた移動体であって、前記いずれかの地図生成システムが前記制御手段によって構成されることを特徴とする。
【0021】
このような本発明によれば、移動体は、移動手段、検出手段および制御手段を備え、制御手段によって前記地図生成システムが構成されることで、前述したのと同様に効率よく占有格子地図を作成または更新することができ、自律走行する移動体において、占有格子地図の地図精度を確保しつつメモリ容量や演算処理の負荷を軽減させることができる。
【図面の簡単な説明】
【0022】
【
図1】本発明の一実施形態に係る移動体のブロック図
【
図2】前記移動体の移動範囲を示す占有格子地図の真値の概念図
【
図5】前記占有格子地図の作成方法を示すフローチャート
【
図6】
図5と異なる前記占有格子地図の作成方法を示すフローチャート
【
図8】前記作成例におけるスキャン数の削減率を示すグラフ
【
図9】前記作成例における占有格子地図の品質を示す図
【
図10】(A)~(C)は、前記作成例における入力スキャン数と削減後のスキャン数、ノード数、アーク数の関係を示すグラフ
【
図11】前記移動体の動作の変形例を示すフローチャート
【発明を実施するための形態】
【0023】
以下、本発明の一実施形態を
図1~
図9に基づいて説明する。
本実施形態の移動体は、
図1に示すように、移動体本体1と、移動体本体1を駆動制御する制御手段2と、移動体本体1を移動させる移動手段としての走行手段3と、移動体本体1の周囲の物体を検出するための検出手段4と、を備えている。この移動体は、SLAM技術によって自己位置推定と環境地図作成を行い、制御手段2に記憶された対象空間(移動範囲)ごとのマップや走行スケジュールに基づいて、移動体本体1が走行手段3によって自律走行するものである。このマップとしては、後述する占有格子地図が利用される。
【0024】
移動体本体1は、図示しないボディおよびシャーシを備え、走行手段3は、例えば、左右一対の車輪と、一対の車輪を各々独立して回転駆動するモータと、を備えている。
【0025】
検出手段4は、例えば、移動体本体1の前部に設けられた前方センサと、移動体本体1の上部に設けられた周囲センサと、移動体本体1の後部に設けられた後方センサと、を備えている。周囲センサは、赤外線レーザー等のレーザー光を周囲に照射して物体までの距離を測定するレーザースキャナ(LIDAR(Light Detection and RangingまたはLaser Imaging Detection and Ranging))である。この周囲センサは、SLAM技術によって取得した自己位置であるセンサ中心と方位を基準位置(x,y,θ)Tとし、センサ中心からの距離と、センサ中心回りの角度(方向)と、に基づいて物体の有無や位置を検出する。この物体検出(以下では、単にスキャンと称することがある)では、周囲センサの1周期(例えば、1回転、360°)分の検出において、所定の解像度(例えば、1°)で照射されるレーザービームに基づき、1周期分の検出値を1単位(1スキャン)とし、この1スキャンの検出値が検出情報として時系列で記憶部28に記憶される。
【0026】
制御手段2は、CPU等の演算手段やROM、RAM等の記憶手段を備えて移動体本体1の動作を制御するものであって、走行手段3を制御する走行制御部21と、検出手段4を制御する検出制御部22と、を備える。さらに、制御手段2は、後述するような占有格子地図の作成に係る地図作成部(地図作成手段)23、影響度算出部(影響度算出手段)24、観測度数算出部(観測度数算出手段)25および網羅率算出部(網羅率算出手段)26と、作成した占有格子地図や各種のデータを記憶する記憶部(記憶手段)27と、を備えて構成されている。
【0027】
地図作成部23が占有格子地図を作成するタイミングとしては、例えば、新たな対象空間の占有格子地図を新規に生成する地図生成モードの場合、すでに占有格子地図を生成した既知の対象空間に対して地図を更新する地図更新モードの場合、既知の対象空間に対して通常の作業を実施する自律走行モードの場合などである。また、地図更新モードで地図を更新する期間(更新スパン)としては、その対象空間にて移動体本体1が走行した累計走行時間(例えば、数時間から数十時間ごと)に基づいてもよいし、その対象空間にて検出手段4が検出を実行した累計スキャン回数(例えば、数千から数万回ごと)に基づいてもよいし、使用者から設定入力された期間や手動での指令に基づいてもよい。
【0028】
次に、
図2、
図3を参照して占有格子地図の作成に係る基本的な概念を説明する。
図2は、移動体の移動範囲を示す占有格子地
図Mの真値の概念図であり、
図3は、占有格子地
図Mの作成経過を示す概念図である。占有格子地
図Mは、対象空間を二次元平面に規定し、この平面を所定サイズ(例えば、5cm角)の格子に分割し、分割した区画であるセルCごとにセル値(区画値)を設定する。この占有格子地
図Mの作成方法としては、例えば、レイキャスティングが標準的であり、以下ではレイキャスティングを用いた占有格子地
図Mの作成手順を説明する。
【0029】
レイキャスティングでは、センサ中心からレーザービームを模擬した直線を伸ばし、ビームが通過したセルCの値を更新する。
図3に示すように、レーザースキャナ(周囲センサ)の計測範囲が円内であるとすると,ビームが物体に当たった位置にあるセルCは占有(例えば、セル値=1)、ビームが通過したセルCは自由(例えば、セル値=-1)となる。計測範囲内に物体がない場合はビームが返ってこないので、未観測となり、通常はセル値を変えない。占有格子地
図Mのセル値は対数オッズで管理され、複数のスキャンによるセル値を合算して対数オッズを計算する。例えば、あるセルCの占有が3回、自由が2回あれば、対数オッズは3+(-2)=1となる。この対数オッズから占有確率が計算される。ただし、
図3では、簡単のため、セル値を単純に上塗りしている。
【0030】
次に、
図2、
図3を用いて本発明の占有格子地
図Mの作成方法の考え方を説明する。
図2は、占有格子地
図Mの真値であり、実環境には壁Wと物体Oがあるとする。
図3(A)は、検出手段4により制御手段2が1回目のスキャン(360°のスキャン)を取得したときの占有格子地
図Mのセル値である。ここでは、1回目のスキャンによる自由セルC
f1を白で表す。同様に、
図3(B),(C)は、2回目のスキャン、3回目のスキャンによるセル値であり、それらの自由セルC
f2,C
f3をそれぞれ中間のグレーおよび濃いグレーで表す。
図3において、占有セルC
oはいずれも黒で表し、未観測のセルC
nは薄いグレーで表す。各スキャンにおいて、複数本(例えば、1°ずつ360本)のレーザービームが照射され、1本ごとのレーザービームが通過したセルに対してセル値を設定する。
【0031】
図3を参照すると、1回目のスキャンが書き込んだセル値の多くは、その後のスキャンによって上塗りされている。1回目のスキャンの占有セルC
oは、2回目、3回目のスキャンの円内に含まれるので、すべて上塗りされる。1回目のスキャンの自由セルC
f1はわずかしか残っておらず、1回目のスキャンが占有格子地
図Mの生成にあまり寄与していないことが分かる。この例では、セル値を単純に上塗りしているが、多くのスキャンから占有確率を計算する場合でも、スキャンが重複するにつれて同様の現象が生じることが分かっている。
【0032】
本発明の占有格子地
図Mの作成方法は、各スキャンが占有格子地
図Mの生成に寄与したセル数からそのスキャンの影響度を計算し、影響度の小さいスキャンを削減する。
図2、
図3からわかるように、スキャンの影響度は、時間の進行とともに変化し、一般的には古いスキャンほど影響度は小さくなる。ただし、時間的には古くても、その領域で新しいスキャンが取得されなければ、古いスキャンは生き残る。このように、本発明の作成方法は、相対的に新しいスキャンを残す性質をもつので、スキャンデータの削減と同時に、占有格子地
図Mの更新も行いやすい手法となっている。
【0033】
また、占有格子地
図Mの作成において、各セルCに対数オッズを持たせて占有確率を計算することが一般的に行われている。しかし、対数オッズだけでは、そのセルCを何回スキャンしたかの情報は残らない。例えば、あるセルCの対数オッズが-3となるには、セルCをビームが3回通過して自由値(-1)が3回加算されてもよいし、あるいは、セルCをビームが6回通過、3回到達して自由値(-1)が6回と占有値(1)が3回加算されてもよいが、対数オッズだけでは、ビームの通過回数(スキャン回数)の区別はつかない。
【0034】
占有格子地
図Mを作成する際、ノイズや誤差があっても安定した結果となるためには、複数回のスキャンによって、各セルCに多くのビームが通って、統計的に処理することが望ましい。しかし、スキャンは多いほどよいわけではなく、古いスキャンは新しいスキャンによって塗り替えられて必要なくなることも多い。例えば、物体の位置が変わると、移動元のセルCは自由状態となり、移動先のセルCは占有状態となり、移動後の位置が確定すれば、古いスキャンは必要なくなる。これらのことから、スキャンした回数を明示的に管理し、適切な数のスキャンでセル値を計算すれば、無駄な計算を減らせることになる。
【0035】
本発明の占有格子地
図Mの作成方法では、適切な数のスキャンでセル値を計算するために観測度数を導入する。各セルCは観測度数をもち、そのセルCをスキャンした回数を観測度数に記録し、記録した観測度数に基づいて最新のN個のスキャンだけを残し、古いスキャンを捨てることに特徴がある。ここで、Nは対数オッズから占有確率を計算するのに十分な観測数であればよく、経験的には、1~2秒分のスキャンでよいと考えられる。例えば、周囲センサのフレームレートが10fpsならば、Nは10~20で十分実用的な占有格子地
図Mが作成できることが分かった。
【0036】
また、占有格子地
図Mは、環境の変化を反映して随時更新する必要があり、その更新頻度としては、実時間で更新する場合や毎日定期的に更新する場合など、種々の形態が考えられる。また、地図形状の歪みを減らして一貫性を保つには、ループ閉じ込みを行う必要がある。ここで、ループとは移動体が同じ場所を通る周回経路であり、ループを検出して地図の歪みを解消する処理をループ閉じ込みと呼ぶ。そして、移動体は同じ場所を何度も通るので、ループ閉じ込みが頻発する。ループ閉じ込みをすると地図を作り直すが、これには過去のデータをすべて用いることが一般的であったため、地図を長期間にわたって更新し続ける際の問題として、処理時間とメモリ使用量の増加がある。
【0037】
本発明の占有格子地
図Mの作成方法では、前述のようなスキャンデータの削減に合せて、ループ閉じ込みで用いる内部データであるポーズグラフを縮約する。ポーズグラフを縮約することにより、ループ閉じ込みとその後の地図再構築に要する処理時間とメモリ使用量が削減される。
【0038】
具体的には、移動体の走行軌跡のループを検出し、ポーズ調整によりループ閉じ込みを行う。ポーズ調整は、移動体の位置の拘束関係を表すポーズグラフを用いて行う技術であり、ポーズグラフは、移動体の位置を表すノードと、ノード間の相対位置を表すアークと、によって構成され、移動体の推定位置と計測値とのずれを表すことができる。ポーズ調整は、このずれを最小化することで、地図の歪みを修正する。ポーズ調整の処理時間は、ポーズグラフのノード数にほぼ比例し、ループの数にも依存する。SLAM技術では、移動体の位置はスキャンごとに推定されるため、移動体の位置およびノードの個数はスキャン数に比例する。また、環境が小規模ならば同じ場所を何度も通ると考えられるので、走行軌跡が長くなると、ループの数も増えると想定される。したがって、スキャン数が増えればポーズ調整の処理時間も増えることから、前述のように、使用するスキャン数を削減することで、ループ閉じ込み処理に伴うポーズグラフのサイズを小さくして、ポーズ調整の処理時間が短縮でき、メモリ使用量も削減することが可能になる。
【0039】
次に、
図4~
図6も参照して移動体の動作および占有格子地
図Mの作成(更新)方法について詳しく説明する。
図4は、移動体の動作を示すフローチャートである。
図5は、占有格子地
図Mの作成方法を示すフローチャートであり、
図6は、
図5と異なる占有格子地
図Mの作成方法を示すフローチャートである。なお、ここでは、移動体の走行に係る動作については説明を省略し、走行に伴って占有格子地
図Mを作成、更新する方法に着目して説明する。
【0040】
制御手段2の走行制御部21によって移動体本体1の走行が開始されると、検出制御部22によって周囲センサが駆動制御されて周囲の物体の検出が開始される(検出情報取得工程:ステップST1)。制御手段2は、SLAM技術によって自己位置を推定しつつ、自己位置と関連付けて周囲センサによって検出した検出値を検出情報として記憶部27に記憶させる(検出情報記憶工程:ステップST2)。検出情報の検出は、周囲センサによる1周期分の検出値を1スキャンとし、この1スキャンを1つの検出情報として記憶部27に記憶する。次に、制御手段2は、記憶部27に記憶した検出情報に基づいて、地図作成部23に占有格子地
図Mを作成させ(地図作成工程:ステップST3)、作成した占有格子地
図Mを記憶部27に記憶させる。次に、制御手段2は、検出情報を削減するか否かを判断する(削減判断工程:ステップST4)。ここでは、検出回数(スキャン回数)が所定回数に達したか否かを判断し、所定回数に達していれば(ステップST4でYES)、次のステップST5に進み、所定回数に達していなければ(ステップST3でNO)、再び検出情報取得工程(ステップST1)に戻って、新たな検出情報を取得する。
【0041】
削減判断工程(ステップST4)で検出情報を削減すると判断した場合、制御手段2の影響度算出部24は、記憶部27に記憶された検出情報ごとに占有格子地
図Mに対する影響度を算出する(影響度算出工程:ステップST5)。次に、制御手段2の地図作成部23は、影響度算出部24にて算出された影響度に基づいて、検出情報を選別して記憶部27から検出情報を削減する(検出情報削減工程:ステップST6)。これらの影響度算出工程(ステップST5)および検出情報削減工程(ステップST6)における演算手順は後述する。次に、制御手段2の地図作成部23は、削減された検出情報に基づいて占有格子地
図Mを再度作成(更新)し(地図再作成工程:ステップST7)、更新した占有格子地
図Mを記憶部27に記憶させる。
【0042】
以上のようにして占有格子地
図Mが作成および更新されたら、制御手段2は、ステップST8にて移動体本体1の走行を継続するか否かを判断する。ステップST8で走行を継続する場合、再び検出情報取得工程(ステップST1)に戻り、走行制御部21は、新たに作成した占有格子地
図Mに基づいて移動体本体1の走行を制御するとともに、検出制御部22は、周囲センサによる周囲の物体の検出を継続し、制御手段2は上述した各工程を繰り返す。ステップST8で走行を継続しない場合、制御手段2は、移動体本体1の走行を停止させるとともに、各部の動作を停止させる。
【0043】
次に、影響度算出工程(ステップST5)で算出する影響度は、占有格子地
図Mに対するスキャン(検出情報)ごとに影響度算出部24が算出するものであって、前述したように観測度数算出部25が算出した観測度数が用いられる。ここでは、あるスキャンs
kに対して、その中に含まれる有効自由セル数をf
k、有効占有セル数をo
kとする。ここで有効とは、観測度数の閾値b
threよりも古くないことを意味する。この閾値b
threは、前述したように、残すべき最新のスキャン数Nに相当する。また、i番目のセルの対数オッズをv
i、観測度数をb
iとする。スキャンs
kのセンサ中心位置は、SLAM技術によって得られているものとする。
【0044】
スキャンの影響度ekは、式(1)で表す。
e
k=f
k+Ao
k …(1)
ここで、Aは、有効占有セル数o
kに重みをつけるための定数である。占有格子地
図Mでは、一般に、占有セルは、自由セルに比べて数は少ないが、障害物を示すので重要性が高い。このため、Aによって占有セル数に重みを持たせ、有効占有セルをもつスキャンを優先する仕組みを入れておく。なお、以下の演算では、定数Aは1とする。
【0045】
影響度e
kは、レイキャスティングの最中に計算する。影響度e
kの計算を含めたレイキャスティングの手順を
図5のフローチャートを参照して説明する。
【0046】
まず、ステップST10において、全セルについて、対数オッズviおよび観測度数biを初期化する(vi=0、bi=0)。次に、ステップST11において、スキャンskを新しいものから順に選択する。すなわち、k値が大きい新しいスキャンskから降順に選択する。そして、ステップST12以降において、スキャンskの各セルCiに対して、以下の処理を繰り返す。すなわち、スキャンskを得たときのセンサ中心から、レーザービームを模した直線を計測距離だけ(物体に到達するまで)伸ばし、直線上の各セルCiについて以下の処理を繰り返す。ステップST13において、直線が通過した自由セルCi(自由空間)である場合、ステップST14~ST17を実行し、直線が到達した占有セルCi(物体)である場合、ステップST18~ST21を実行する。なお、レーザービームの反射が観測されない場合は、そのレーザービームが通過したセルは未観測セルとして演算を行わない。
【0047】
自由セルCiの場合、ステップST14において、観測度数biが閾値bthreよりも小さければ(ステップST14でYES)、ステップST15にて有効自由セル数fkに1を加え(fk=fk+1)、ステップST16にて対数オッズviから1を減じ(vi=vi-1)、ステップST17にて観測度数biに1を加える(bi=bi+1)。ステップST14において、観測度数biが閾値bthreよりも大きければ(ステップST14でNO)、ステップST22に進む。
【0048】
占有セルCiの場合、ステップST18において、観測度数biが閾値bthreよりも小さければ(ステップST18でYES)、ステップST19にて有効占有セル数okに1を加え(ok=ok+1)、ステップST20にて対数オッズviに1を加え(vi=vi+1)、ステップST21にて観測度数biに1を加える(bi=bi+1)。ステップST18において、観測度数biが閾値bthreよりも大きければ(ステップST18でNO)、次のステップST22に進む。
【0049】
ステップST22において、あるスキャンskに含まれる全てのセルCiに対しての処理が終了したか否かを判断し、処理が終了していなければ(ステップST22でNO)、ステップST12に戻って次のセルCi(i=i+1)に対して同様の処理を実行する。一方、あるスキャンskに含まれる全てのセルCiに対して処理が終了すれば(ステップST22でYES)、次のステップST23に進み、当該スキャンskの影響度ekを算出する。ステップST23において、スキャンskの影響度ekは、前式(1)によって算出する。次に、ステップST24において、全てのスキャンskに対しての処理が終了したか否かを判断し、処理が終了していなければ(ステップST24でNO)、ステップST11に戻って1つ古いスキャンsk(k=k-1)に対して同様の処理を実行する。一方、全てのスキャンskに対して処理が終了すれば(ステップST24でYES)、影響度算出工程(ステップST5)を終了する。
【0050】
以上の処理は次のことを意味する。スキャンs
kのビームによってセル値が更新されるかどうかは観測度数b
iで判定され、新しいスキャンs
kから処理するので、セルC
iの観測度数b
iが閾値b
threを超えれば、その先のスキャンs
n(1≦n≦k-1)はセル値に影響を与えない。このスキャンs
nは,セル値に対しては古い観測であり、セル値はスキャンs
nの影響度に加算されない。そして、大部分が古い観測であると判定されたスキャンs
kは、その影響度が小さくなり、占有格子地
図Mを更新する際に必要ないと判定されて削除される(後述する検出情報削減工程:ステップST6)。
【0051】
以上の処理の利点としては、レイキャスティングの過程で影響度が計算できるので、計算コストが小さくできるとともに、古くても観測が少ない領域のスキャンs
kを残すことができる。すなわち、新しい観測がない領域では古いスキャンs
kしか残っていないが、観測度数b
iが閾値b
threを超えなければ、そのスキャンs
kは影響度が大きくなり、削除されず、最後に観測した状態が保たれて占有格子地
図Mを安定させることができる。
【0052】
なお、影響度算出工程(ステップST5)は、以上の処理手順によるものに限らず、
図6に示す手順で実行されてもよい。
図6に示す処理手順は、ステップST14~ST17およびステップST18~ST21が
図5のものと相違する。具体的には、ステップST14よりもステップST16を先に実行し、ステップST19よりも先にステップST20を実行する。すなわち、観測度数b
iと閾値b
threとの比較に関わらず、自由セルC
iの場合にはステップST16にて対数オッズv
iから1を減じ(v
i=v
i-1)、占有セルC
iの場合にはステップST20にて対数オッズv
iに1を加える(v
i=v
i+1)。このような処理手順によることで、セル値の更新にb
threを過ぎた古いスキャンs
kも使われるようになる。したがって、環境変化に対するセル値の更新が遅くなる半面、セル値の安定性は増すことになる。
【0053】
以上の影響度算出工程(ステップST5)によって、スキャン(検出情報)ごとに影響度e
kを算出したら、
図4に示すように、検出情報削減工程(ステップST6)において、網羅率算出部27が網羅率を算出し、この網羅率に基づいて検出情報を選別して記憶部27から検出情報を削減する。
【0054】
算出した影響度e
kに基づいてスキャンを選別する方法は、影響度の閾値e
threを用いて、e
k≦e
threとなるスキャンを削除する。ここで、e
threは環境によって変わることから、その設定には、スキャン集合Sの網羅率を用いる。スキャン集合Sの網羅率とは、次式(2)のように、現時点で残っている全スキャン集合S
0の影響度の合計に対するスキャン集合Sによる影響度e
kの合計の比である。
【数1】
【0055】
この網羅率が大きいほど、スキャン集合Sによる占有格子地
図Mは全スキャン集合S
0による占有格子地図に近づく。このように、網羅率は占有格子地
図Mの完成度合いを表すことができ、直感的に指定しやすい指標であると考えられる。スキャンを削減しつつ網羅率を高く保つには、影響度e
kが大きいスキャンを優先してスキャン集合Sに入れるとよい。したがって、網羅率を用いてスキャン選別の閾値e
threを決める手順は以下のようになる。
【0056】
まず、全スキャンの影響度の合計totalEを求めてから、全スキャンを影響度ekの順にソートする。次に、各スキャンskについて、影響度ekの大きい方から以下の式(3)、式(4)を繰り返し計算し、式(4)を満足しなくなった(sum/totalE≧coverageとなった)ときの影響度ekを閾値ethreとする。ここで、coverageはユーザが指定した網羅率であり、例えば、0.95(95%)などが用いられる。
sum=sum+ek …(3)
sum/totalE<coverage …(4)
【0057】
地図再作成工程(ステップST7)において、地図作成部23は、以上の各手順によって選別されて残ったスキャンs
kごとに、演算によって得られたセル値である対数オッズv
iおよび観測度数b
iを記憶部27に記憶させ、これにより占有格子地
図Mが更新される。
【0058】
以下、
図7~
図10を参照して、占有格子地
図Mを作成した例について説明する。
図7は、占有格子地図の作成例を示す図である。
図8は、作成例におけるスキャン数の削減率を示すグラフであり、網羅率の設定によるスキャン数の削減率を示す。
図9は、作成例における占有格子地図の品質を示す図である。
図10(A)~(C)は、作成例における入力スキャン数と削減後のスキャン数、ノード数、アーク数の関係を示すグラフである。
【0059】
図7(A)には、従来例としてスキャンを削減せずに作成した占有格子地
図Mが示され、
図7(B)には、本発明の前述した作成方法によりスキャンを削減してから作成した占有格子地
図Mが示されている。本発明の作成方法において、網羅率には0.95を適用した。
図7では,占有格子地
図Mの上に、地図生成に用いたスキャンに対応する移動体の移動軌跡を表示している。
図7(A)に示すように、移動体は、A、B、…Fの順に走行した。
図7(B)では、スキャンが削減されているので、移動体の位置も断片的になっている。なお、ここでは,見やすさのために単純な短い経路をとっており削減率は高くない。
【0060】
図7(B)に示すように、本発明の作成方法によって古いスキャンが削除されているのがわかる。たとえば、区間A-Bの前半部は削除されている。その部分で取得したスキャン群は主に部屋の上部のセルの占有確率を決めるが、後に走行した区間E-Fの後半部によってセル値が置換えられ、区間A-Bの影響度が減ったためである。また、区間C-Dも削除されているが、これは区間D-Eの残っている部分で置換されたためである。なお、
図7(B)において、区間C-Dの右上にセル値が未定の領域があるが、これは網羅率が0.95であるために生じた欠落である。
【0061】
また、
図7(A)では、壁に対する占有セル(黒)が欠落なく出ているが、
図7(B)では、欠けている部分がある。これは、スキャンの歪みや誤差のため、最近の少数のスキャンだけでは、セル値が不安定になるためと考えられる。これは、セル値計算で多くのスキャンを使用すれば解決する。すなわち、観測度数b
iはスキャン選択だけに用いて、
図6に示すように、対数オッズv
iの計算を観測度数b
iによらずに行えばよい。ただし、
図6に示す処理手順によると、環境変化を迅速に反映することはできなくなる。このように、セル値の安定性と環境変化への対応は相反する面がある。この特性は占有格子地
図Mに本質的なものと考えられ、対象とする空間や環境に応じて処理手順を適宜に使い分ければよい。
【0062】
図8、
図9には、網羅率の設定によってスキャン数の削減率および占有格子地
図Mの品質がどのように変化したかが示されている。
図8のグラフは、スキャン数を3000個、6000個、9000個とした場合の網羅率に対する削減率を示す。
図9(A),(B)は、それぞれ網羅率が0.6および0.9の場合に作成された占有格子地
図Mを示す。ここでは、削減率(reduction ratio)を、削減後のスキャン数を削減前のスキャン数で割った値で定義する。この定義では、削減後のスキャンが少ないほど削減率は小さくなる。
【0063】
図8に示すように、網羅率(coverage)を高くするほど削減率は大きくなっている。また、スキャン数が多いほど削減率は小さくなっている。これはスキャン数が多いほど、重複して計測する面積が増えるためである。また、対象空間の面積について、同じスキャン数ならば、面積が小さいほど計測の重複度が大きくなる。つまり、何度も同じ場所を計測していることになり、スキャンの削減率が小さくなる。
【0064】
図9に示すように、生成された占有格子地
図Mの品質は、網羅率によって変化する。これは、占有格子地
図Mを網羅率が0.6の場合と0,9の場合とで比較した例である。
図9(A)に示す網羅率が0.6の場合では欠けた部分N(図中、グレーで示す部分)があるが、
図9(B)に示す網羅率が0.9の場合だと欠けた部分はほぼ埋まっている。なお、対象空間の広さや長さなどによっては、網羅率が0.9であっても欠けた領域が見られることがある。この要因は、スキャンの重複が小さく、影響度の大きいスキャンが多数存在することと、長い廊下などでレーザースキャナの最大計測距離が不足することが考えられる。長い廊下の長手方向では計測不可となって領域が未観測になり、廊下の中間部分のスキャンは有効セル数が減って、影響度が小さくなる。このような要因が重なることで、欠落部分が残ることが予想される。したがって、網羅率を高くすれば欠落部分は解消するが、削減率は低くなるため、対象空間や環境に応じて網羅率を適宜に設定することが有効である。
【0065】
図10(A)には、作成例における入力スキャン数と削減後のスキャン数との関係が示され、(B)には、入力スキャン数と削減後のノード数との関係が示され、(C)には、入力スキャン数と削減後のアーク数との関係が示されている。なお、
図10(B),(C)は、前述したループ閉じ込みに用いるポーズグラフを縮約した結果、ノード数およびアーク数が削減されたことを示している。SLAM技術では、各スキャンに対して移動体位置を求めるので、ノードとスキャンは1対1に対応する。ただし、ポーズ調整をキーフレームで行う場合は、キーフレーム単位で移動体位置を抽出してノードとする。ここでは、キーフレーム単位でノードを生成した。ここで、キーフレームとは、一定間隔で間引いたスキャンのことであり、並進距離および回転角が閾値(例えば、それぞれ0.4mと60°)を超えるたびに移動体位置を抽出した。また、ノードに対応するキーフレーム間のスキャン群の中で、影響度e
kが閾値e
threを超えるスキャンが1つでもあれば、そのノードを採用し、採用されないノードは削除した。
【0066】
図10(A)に示すように、入力スキャン数が増えても、削減後のスキャン数はそれほど増えず、一定あるいは微増であることがわかる。これは、走行につれてスキャン数が増えると同時に、重複部分も増えるためである。
図10(B)の破線はポーズグラフのキーフレーム間引きだけ行った場合のノード数であるが、キーフレーム間引きだけだと、ノード数はスキャン数に比例して増加する。一方、本発明の処理を行うことで、実線のように、ノード数はさらに削減されるとともに、スキャン数に対する増加率も抑えられていることがわかる。
図10(C)の破線はキーフレーム間引きだけ行った場合のアーク数であり、アークもノードと同様の傾向があるが、アークはループの個数にも影響されるので、増減の挙動はノードよりも複雑である。
【0067】
このような本実施形態によれば、以下の作用・効果を奏することができる。
(1)移動体は、走行手段3、検出手段4および制御手段2を備え、制御手段2の地図作成部23によって占有格子地
図Mを生成し、更新することで、占有格子地
図Mの地図精度を確保しつつメモリ容量や演算処理の負荷を軽減させることができる。
【0068】
(2)制御手段2の地図作成部23は、影響度算出部24にて算出された影響度e
kに基づいて、スキャンs
k(検出情報)を選別してから占有格子地
図Mを作成するので、効率よく占有格子地
図Mを作成または更新することができる。すなわち、地図作成部23は、占有格子地
図Mに対する影響度e
kが小さいスキャンs
kを用いないように選別することで、演算に利用するスキャン数を減らすことができ、メモリ容量が少なくて済むとともに演算処理の負荷を軽減させることができる。一方、占有格子地
図Mに対する影響度が大きいスキャンs
kを選別して用いることで、古いスキャンs
kであっても有効なものが残されるため、作成する占有格子地
図Mの地図精度を確保することができる。
【0069】
(3)観測度数算出部25は、記憶部27に記憶されたスキャンs
kを占有格子地
図MのセルC
iごとに計数して観測度数b
iとして算出し、この観測度数b
iに基づいて有効としたセルC
iの割合に応じてスキャンs
kの影響度e
kを高くすることで、効率よくスキャンs
kを選別することができる。すなわち、あるセルC
iに対して古いものから新しいものまで複数のスキャンs
kが存在する場合に、その数を観測度数b
iとして記録し、新しいものから所定数を有効とし、それよりも古いものを無効とする。そして、有効なセルC
iが多く存在するスキャンs
kの影響度e
kを高く評価する。このようにすることで観測度数b
iが高いセルC
iに対しては、環境変化が反映されやすい新しいスキャンs
kの影響度e
kが高くなり、占有格子地
図Mの地図精度を高めることができる。一方、観測度数b
iが低いセルC
iに対しては、比較的古いスキャンs
kまで影響度e
kが高く評価され、古くても有効な情報を含んだスキャンs
kを適切に残して占有格子地
図Mを作成することができる。
【0070】
(4)地図作成部23は、影響度e
kが所定の閾値e
threよりも小さいスキャンs
kを記憶部27から消去し、削減したスキャンs
kに基づいて占有格子地
図Mを作成することで、占有格子地
図Mの作成にかかる演算負荷と時間を削減することができるとともに、記憶部27の容量を節約することができる。さらに、影響度e
kの高いスキャンs
kを使用して占有格子地
図Mを作成するので、効率よく占有格子地
図Mを作成することができる。
【0071】
(5)地図作成部23は、網羅率算出部26によって算出された網羅率に基づいて、影響度e
kの閾値e
threを設定するので、効率よくスキャンs
kを選別して占有格子地
図Mを作成することができる。また、網羅率に基づいて影響度e
kの閾値e
threが自動的に設定されるので、演算処理を効率化することができる。
【0072】
(6)
図6に示すような処理手順とすれば、セル値の更新にb
threを過ぎた古いスキャンs
kも使って対数オッズv
iが更新されるので、環境変化に対するセル値の更新が遅くなる半面、セル値の安定性は増すことになり、占有格子地
図Mの安定性を向上させることができる。
【0073】
〔実施形態の変形〕
なお、本発明は、前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
例えば、前記実施形態では、移動体として具体的なものを例示しなかったが、移動体としては、サービスロボット、ホームロボットなどの移動ロボットであって、より具体的には、掃除ロボットや警備ロボット、運搬ロボット、案内ロボットなどが例示できる。さらに、移動体としては、自動運転自動車や作業車などであってもよい。さらに、移動体の移動範囲は、二次元平面空間に限らず、三次元空間であってもよく、その場合には移動体がドローンなどの飛行体であってもよい。すなわち、前記実施形態では、SLAM技術として、2D-SLAMを用いた例を示したが、本発明の地図生成システムは、三次元空間を対象にした3D-SLAMにも応用可能である。
【0074】
前記実施形態では、移動体の移動体本体1が制御手段2を備え、この制御手段2に地図作成部23や記憶部27が設けられていたが、占有格子地
図Mを作成する地図作成手段や、占有格子地
図Mを記憶する記憶手段などは、移動体本体1ではなく、移動体本体と通信可能な他の機器に設けられ、他の機器によって作成された占有格子地
図Mに基づいて移動体本体1が自律走行するように構成されていてもよい。また、移動体としては、移動手段(走行手段)を備えていなくてもよく、検出手段が設置された台車等を使用者が手動で移動させつつ周囲を検出するような構成であってもよい。
【0075】
前記実施形態の占有格子地
図Mの作成方法では、
図4に示すように、検出情報削減工程(ステップST6)にて検出情報を選別して記憶部27から削減してから、削減された検出情報に基づいて地図再作成工程(ステップST7)にて占有格子地
図Mを更新したが、このような処理手順に限られず、
図11に示すような処理手順を採用してもよい。
図11は、移動体の動作の変形例を示すフローチャートである。
図11に示す手順では、検出情報削減工程(ステップST6)よりも先に地図再作成工程(ステップST7)を実行し、削減される前の検出情報に基づいて占有格子地
図Mを更新し、その後に選別された検出情報を記憶部27から削減する。この手順によれば、地図作成部23は、検出情報を記憶部27から削除する前に、記憶部27に記憶された全ての検出情報を使用して占有格子地
図Mを作成するので、占有格子地
図Mの安定性を向上させることができる。
【産業上の利用可能性】
【0076】
以上のように、本発明は、占有格子地図を用いて自律移動するロボットなどの各種の移動体において、占有格子地図の作成などに要するメモリ容量が少なくて済むとともに演算処理の負荷を軽減させることによって、占有格子地図の作成の効率化を図ることができる地図生成システムに好適に利用できる。
【符号の説明】
【0077】
1 移動体本体
2 制御手段
3 走行手段(移動手段)
4 検出手段
23 地図作成部(地図作成手段)
24 影響度算出部(影響度算出手段)
25 観測度数算出部(観測度数算出手段)
26 網羅率算出部(網羅率算出手段)
27 記憶部(記憶手段)
C セル(区画)
M 占有格子地図
S スキャン(検出情報)