【新規性喪失の例外の表示】特許法第30条第2項適用 一般社団法人日本ロボット学会 日本ロボット学会第30回記念学術講演会資料(DVD)2012年9月17日発行 [刊行物等] 日本ロボット学会第30回記念学術講演会 2012年9月17日〜20日開催
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成24年度、支出負担行為担当官 総務省大臣官房会計課企画官、情報通信技術の研究開発 脳の仕組みを活かしたイノベーション創成型研究開発「高精度脳情報センシング技術・脳情報伝送技術、実時間脳情報抽出・解読技術 及び 脳情報解読に基づく生活支援機器制御技術」に関する委託研究、産業技術力強化法第19条の適用を受ける特許出願
【文献】
田中 完爾 Kanji TANAKA,非静的環境における確率的アプローチによる変化検出と自己位置推定 Probabilistic Localization with Dete,電子情報通信学会論文誌 (J88−D−II) 第5号 THE IEICE TRANSACTIONS ON INFORMATION AND SYST,日本,社団法人電子情報通信学会 THE INSTITUTE OF ELECTRO,2005年 5月26日,第J88-D-II巻,頁854〜頁863
(58)【調査した分野】(Int.Cl.,DB名)
移動体に設置した距離センサの検出結果に基づいて当該移動体の位置を推定するとともに、当該移動体が移動した環境についての地図を作成するコンピュータの地図作成プログラムであって、
前記コンピュータに、
前記距離センサで検出された距離データを、当該距離データを計測時の前記移動体の位置および向きを基準とする位置データに変換するデータ変換ステップ、
前記データ変換ステップにおいて変換した位置データを所定のルールに従って複数のクラスタにクラスタリングするクラスタリングステップ、
前記クラスタリングステップにおいてクラスタリングした複数のクラスタの各々の特徴を抽出する抽出ステップ、
前記抽出ステップにおいて抽出した前記複数のクラスタの各々の特徴が所定の条件を満たすかどうかを判断する条件判断ステップ、および
前記条件判断ステップにおいて所定の条件を満たさないことが判断されたクラスタを消去する消去ステップを実行させ、
前記抽出ステップにおいて抽出した特徴は、前記クラスタに含まれる位置データが示す複数の点の分散についての特徴量である、地図作成プログラム。
移動体に設置した距離センサの検出結果に基づいて当該移動体の位置を推定するとともに、当該移動体が移動した環境についての地図を作成するコンピュータの地図作成方法であって、
前記コンピュータは、
(a)前記距離センサで検出された距離データを、当該距離データを計測時の前記移動体の位置および向きを基準とする位置データに変換するステップ、
(b)前記ステップ(a)において変換した位置データを所定のルールに従って複数のクラスタにクラスタリングするステップ、
(c)前記ステップ(b)においてクラスタリングした複数のクラスタの各々の特徴を抽出するステップ、
(d)前記ステップ(c)において抽出した前記複数のクラスタの各々の特徴が所定の条件を満たすかどうかを判断するステップ、および
(e)前記ステップ(d)において所定の条件を満たさないことが判断されたクラスタを消去するステップを含み、
前記ステップ(c)において抽出した特徴は、前記クラスタに含まれる位置データが示す複数の点の分散についての特徴量である、地図作成方法。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、この背景技術では、2つの地図を作成する必要があり、作成処理の負荷が大きい。また、2つの地図中の情報を統合するのにも手間がかかる。
【0005】
それゆえに、この発明の主たる目的は、新規な、地図作成装置、地図作成プログラムおよび地図作成方法を提供することである。
【0006】
この発明の他の目的は、地図を簡単に作成することができる、地図作成装置、地図作成プログラムおよび地図作成方法を提供することである。
【課題を解決するための手段】
【0007】
第1の発明は、移動体に設置した距離センサの検出結果に基づいて当該移動体の位置を推定するとともに、当該移動体が移動した環境についての地図を作成する地図作成装置であって、距離センサで検出された距離データを、当該距離データの計測時における移動体の位置および向きを基準とする位置データに変換するデータ変換手段、データ変換手段によって変換された位置データを所定のルールに従って複数のクラスタにクラスタリングするクラスタリング手段、
クラスタリング手段によってクラスタリングされた複数のクラスタの各々の特徴を抽出する抽出手段、抽出手段によって抽出された複数のクラスタの各々の特徴が所定の条件を満たすかどうかを判断する条件判断手段、および条件判断手段によって所定の条件を満たさないことが判断されたクラスタを消去する消去手段を備
え、抽出手段によって抽出された特徴は、クラスタに含まれる位置データが示す複数の点の分散についての特徴量である、地図作成装置である。
【0008】
第1の発明では、地図作成装置は、移動体に設置した距離センサの検出結果に基づいて当該移動体の位置を推定するとともに、当該移動体が移動した環境についての地図を作成する。データ変換手段は、距離センサで検出された距離データを、当該距離データの計測時における移動体の位置および向きを基準とする位置データに変換する。クラスタリング手段は、データ変換手段によって変換された位置データを所定のルールに従って複数のクラスタにクラスタリングする。
抽出手段は、クラスタリング手段によってクラスタリングされた複数のクラスタの各々の特徴を抽出する。条件判断手段は、
抽出手段によって抽出された複数のクラスタの各々の特徴が所定の条件を満たすかどうかを判断する。たとえば、所定の条件は、クラスタの特徴についての条件であり、より具体的には、人間のような動的物体であるか、壁や柱のような静的物体であるかを判別するための条件である。消去手段は、条件判断手段によって所定の条件を満たさないことが判断されたクラスタを消去する。つまり、不要な位置データが消去される。
抽出手段によって抽出されたクラスタの特徴は、当該クラスタに含まれる位置データが示す複数の点の分散についての特徴量であり、たとえば、クラスタの形状に関する特徴である。
【0009】
第1の発明によれば、不要な位置データを消去するので、必要なデータのみに基づいて地図を作成することができる。したがって、地図を簡単に作成することができる。
第1の発明によれば、クラスタに含まれる点の個数以外の特徴によって所定の条件を満たすかどうかを判断することができる。
第1の発明によれば、クラスタの形状に関する特徴が所定の条件を満たすかどうかで、動的物体であるか、静的物体であるかを判別することができる。
【0010】
第2の発明は、第1の発明に従属し、所定のルールは、
データ変換手段によって変換された位置データが示す点同士の距離が所定距離以下または所定距離未満であることである。
【0011】
第2の発明では、所定のルールは、
データ変換手段によって変換された位置データが示す点同士の距離が所定距離以下または所定距離未満であることであり、近くに有る点が同じクラスタに分類される。
【0012】
第2の発明によれば、点同士の距離を検出するだけなので、簡単にクラスタリングすることができる。
【0013】
第3の発明は、第1または第2の発明に従属し、所定の条件は、クラスタに含まれる位置データが示す点の数が所定数以下または所定数未満であることを含む。
【0014】
第3の発明では、所定の条件は、クラスタに含まれる位置データが示す点の数が所定数以下または所定数未満であることを含み、クラスタに含まれる点が少ない場合には、当該クラスタは消去される。たとえば、クラスタに含まれる点の数が少ない場合には、動的物体であるか、静的物体であるかを判別することができないため、当該クラスタは消去されるのである。
【0015】
第3の発明によれば、動的物体であるか、静的物体であるかを判別できない不要なクラスタを消去することができる。
【0022】
第
4の発明は、第
1ないし3の発明
のいずれかに従属し、特徴量は、クラスタに含まれる位置データが示す複数の点の分散行列についての固有値であり、所定の条件は、固有値の最大値が第1所定値よりも大きいこと、または、2番目に大きい固有値が当該第1所定値よりも小さい第2所定値未満であることをさらに含む。
【0023】
第
4の発明では、特徴量は、クラスタに含まれる位置データが示す複数の点の分散行列についての固有値である。たとえば、特徴量は、クラスタに含まれる複数の点の分散についての主成分であり、分散行列の固有値で表される。たとえば、所定の条件は、固有値の最大値が第1所定値よりも大きいこと、または、2番目に大きい固有値が当該第1所定値よりも小さい第2所定値未満であることをさらに含む。したがって、固有値の最大値が第1所定値以下である場合、または、2番目に大きい固有値が第2所定値以上である場合に、所定の条件を満たさないことが判断され、当該固有値を有するクラスタが消去される。
【0024】
第
4の発明によれば、クラスタに含まれる複数の点の分散行列についての固有値に基づいて不要なデータを消去することができる。
【0025】
第
5の発明は、移動体に設置した距離センサの検出結果に基づいて当該移動体の位置を推定するとともに、当該移動体が移動した環境についての地図を作成するコンピュータの地図作成プログラムであって、コンピュータに、距離センサで検出された距離データを、当該距離データを計測時の移動体の位置および向きを基準とする位置データに変換するデータ変換ステップ、データ変換ステップにおいて変換した位置データを所定のルールに従って複数のクラスタにクラスタリングするクラスタリングステップ、
クラスタリングステップにおいてクラスタリングした複数のクラスタの各々の特徴を抽出する抽出ステップ、抽出ステップにおいて抽出した複数のクラスタの各々の特徴が所定の条件を満たすかどうかを判断する条件判断ステップ、および条件判断ステップにおいて所定の条件を満たさないことが判断されたクラスタを消去する消去ステップを実行さ
せ、抽出ステップにおいて抽出した特徴は、クラスタに含まれる位置データが示す複数の点の分散についての特徴量である、地図作成プログラムである。
【0026】
第
6の発明は、移動体に設置した距離センサの検出結果に基づいて当該移動体の位置を推定するとともに、当該移動体が移動した環境についての地図を作成するコンピュータの地図作成方法であって、コンピュータは、(a)距離センサで検出された距離データを、当該距離データを計測時の移動体の位置および向きを基準とする位置データに変換
するステップ、(b)ステップ(a)において変換した位置データを所定のルールに従って複数のクラスタにクラスタリング
するステップ、(c)
ステップ(b)においてクラスタリングした複数のクラスタの各々の特徴を抽出するステップ、(
d)ステップ(
c)において
抽出した複数のクラスタの各々の特徴が所定の条件を満たすかどうかを判断
するステップ、および(
e)ステップ(
d)において所定の条件を満たさないことが判断されたクラスタを消去
するステップを含み、ステップ(c)において抽出した特徴は、クラスタに含まれる位置データが示す複数の点の分散についての特徴量である、地図作成方法である。
【0027】
第
5および第
6の発明においても、第1の発明と同様に、地図を簡単に作成することができる。
【発明の効果】
【0028】
この発明によれば、移動体に設置した距離センサで距離を計測された位置を所定のルールに従って複数のクラスタにクラスタリングし、各クラスタが所定の条件を満たすかどうかを判別するだけで、静的物体についてのクラスタ以外を消去するので、地図を簡単に作成することができる。
【0029】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための形態】
【0031】
図1(A)を参照して、この実施例の地図作成システム10は、電気車椅子のような移動体12を含み、移動体12は、その下部に、左右の前輪(キャスター)14a、14bおよび左右の後輪16a、16bを備えている。また、移動体12の左側の枠の上部には操作レバー18が設けられる。さらに、移動体12の左側の枠であり、左足を置くステップ20aの左側に、距離センサ22aが取り付けられる。ただし、距離センサ22aは、移動体12の右側の枠であり、右足を置くステップ20bの右側に取り付けてもよい。また、移動体12を上方から見た模式図である
図1(B)に示すように、移動体12の後方に、距離センサ22bが設けられる。
【0032】
なお、この実施例では、距離センサ22aおよび22bを移動体12の前後に取り付けるようにしてあるが、移動体12の左右に取り付けるようにしてもよい。このように2つの距離センサ22a、22bを移動体12の前後または左右に設けるのは、移動体12の周りを全周(360°)に渡って、距離を検出(計測)するためである。ただし、これは単なる一例であり、距離センサは1つでもよく、または、3つ以上設けてもよい。
【0033】
また、この実施例では、距離センサ22aおよび22bは、或る環境内の壁、柱のような固定物(静的物体)のみならず、人間のような移動物(動的物体)を検出(判別)する。このため、後述するように、距離センサ22a、22bを、その検出位置が地面ないし床面から所定の高さになるように設置してある。この実施例では、所定の高さは11cmである。これは、人間の脚(足首辺り)を検出するためである。
【0034】
図1(A)に戻って、移動体12の座席シートの下側であり、左の後輪16aと右の後輪16bの間には、ボックス24が設けられる。この中に、後述するコンピュータ30、入出力インターフェイス(以下、単に「インターフェイス」という。)32、モータドライバ34a、34b、モータ36a、36bおよびエンコーダ38a、38bが設けられる(
図2参照)。ただし、コンピュータ30およびインターフェイス32は、ボックス24の外に設けるようにしてもよい。
【0035】
図2は
図1(A)および(B)に示した地図作成システム10の電気的な構成を示すブロック図である。
図2に示すように、地図作成システム10は、地図作成装置や移動体12の位置推定装置として機能するコンピュータ30を含む。コンピュータ30は、汎用のパーソナルコンピュータやワークステーションなどのコンピュータであり、CPU30a、RAM30bおよびHDD30cなどのコンポーネントを備える。
【0036】
また、コンピュータ30には、上述した操作レバー18および距離センサ22a、22bが接続されるとともに、インターフェイス32が接続される。インターフェイス32には、モータドライバ34aを介してモータ36aが接続されるとともに、モータドライバ34bを介してモータ36bが接続される。また、インターフェイス32には、エンコーダ38aおよび38bが接続される。
【0037】
図示は省略するが、モータ36aの回転軸と左の後輪16aの回転軸がギアを用いて連結され、モータ36bの回転軸と右の後輪16bの回転軸がギアを用いて連結される。
【0038】
コンピュータ30は、この実施例の地図作成システム10の全体的な制御を司る。この実施例では、CPU30aは、操作レバー18からの操作入力に応じてモータ36a、36bの駆動を制御したり、つまり移動体12の移動を制御したり、距離センサ22a、22bおよびエンコーダ38a、38bで検出された距離データや回転数データを取得および記憶したりする。また、コンピュータ30は、SLAMの技術を用いて、検出したデータに基づいて、地図を作成したり、移動体12の位置を推定(決定)したりする。
【0039】
操作レバー18は、ユーザによって操作され、操作に応じた信号(操作入力)をコンピュータ30に与える。たとえば、前進、後退、停止、左折、右折および旋回などの操作を行うことができる。
【0040】
ただし、リモートコントローラ(図示せず)を用いて、遠隔操作により、操作入力をコンピュータ30に与えることもできる。
【0041】
距離センサ22a、22bは、たとえば、汎用のレーザレンジファインダ(LRF)であり、レーザーを照射し、物体に反射して戻ってくるまでの時間から当該物体との距離を計測するものである。たとえば、トランスミッタ(図示せず)から照射したレーザーを回転ミラー(図示せず)で反射させて、扇状に一定角度(たとえば、0.25度)ずつスキャンする。また、この実施例では、検出範囲(
図3参照)の全体をスキャンする周期は、25msecである。
【0042】
図3は、距離センサ22a、22bの検出範囲(計測範囲)を説明するための図解図である。この実施例の距離センサ22a、22bの計測範囲は、半径R(R≒10〜15m)の扇形状で示される。扇の角度は、正面方向を中心として左側および右側のそれぞれに135°である。つまり、正面を中心とする270°の範囲について距離を検出することができる。
【0043】
図2に戻って、モータドライバ34a、34bは、コンピュータ30からの指示に基づいて、モータ36a、36bを駆動する。エンコーダ38aは、モータ36aの回転数(rps)を検出し、回転数についてのデータ(回転数データ)を、インターフェイス32を介してコンピュータ30に入力する。同様に、エンコーダ38bは、モータ36bの回転数を検出し、回転数についての回転数データを、インターフェイスを介してコンピュータ30に入力する。
【0044】
コンピュータ30は、距離センサ22a、22bで検出される距離データと、エンコーダ38a、38bで検出される回転数データを取得して、RAM30b(HDD30cでもよい。)に記憶する。ただし、距離センサ22aで検出される距離データと距離センサ22bで検出される距離データは区別されるとともに、同じ時点において検出された距離データと回転数データは互いに関連付けられる。
【0045】
このような構成の地図作成システム10では、SLAMの技術を用いて、上述したように、地図を作成するとともに、移動体12の位置を推定する。ただし、SLAMの適用に先立って、距離データが回転数データに基づいて位置データに変換される。具体的には、移動体12に搭載された距離センサ22a、22bのそれぞれで計測された距離データが、当該距離データを検出したときの移動体12の位置および向きを基準とする2次元の座標系(移動体座標系)の位置(点)データに変換される。このとき、2つの距離センサ22a、22bの取り付け位置が考慮される。つまり、移動体12の位置と、距離センサ22a、22bの取り付け位置のずれが調整される。当然のことではあるが、距離データを検出したときの距離センサ22a、22bの計測範囲における角度も考慮される。さらに、この実施例では、移動体座標系における位置データが、2次元の世界座標系の位置データに変換される。つまり、移動体座標系では、環境についての距離データの計測(移動体12の移動)を開始したときの位置および向きを基準とするため、それを現実空間についての世界座標系に変換するようにしてある。
【0046】
この実施例では、パーティクルフィルタを用いたSLAMが適用される。簡単に説明すると、SLAMでは、移動体12の位置を推定することと地図を作成することを同時に行うため、先に観測した目印を用いて移動体12の位置を推定し、その移動体12の位置に従って新しい目印を配置して地図を成長(作成)する処理を繰り返し行う。
【0047】
また、SLAMではベイズフィルタが用いられる。したがって、SLAMでは、上述したように、距離センサ22a、22bで検出された距離データを世界座標系に変換した位置データz
1:tと移動体12の動作a
1:tに基づいて、移動体12の軌跡r
1:tと地図mの同時確率密度の推定問題として定式化される。ただし、移動体12の動作aは、[v,ω]
Tである。
【0048】
ここで、上述したように、この実施例では、計測された距離データを移動体12の位置および向きを基準として移動体座標系の位置データに変換するようにしてある。ここで、移動体12の位置および向きは、オドメトリによる計測値に基づいて求められる。具体的には、
図4に示すように、移動体12の位置および向きは、左右の車輪(16a、16b)の移動速度V
L、V
Rおよび車輪間距離Dを用いて算出される動作[v,ω]
Tを追跡することにより、求められる。
【0049】
具体的には、移動体12の動作[v,ω]
Tは数1に従って算出される。ただし、vは移動体12の速度であり、ωは車輪16aおよび16bの車軸の中心(
図4参照)であり、車軸と垂直な軸周りの角度速である。
【0051】
ただし、左右の車輪(16a、16b)の移動速度V
L、V
Rは、左右の車輪(16a、16b)の回転数から算出することができ、また、車輪間隔Dは予め知ることができる。ただし、回転数に応じた移動速度V
L、V
Rのテーブルを用意しておき、計算せずに、テーブルを参照することにより移動速度V
L、V
Rを取得してもよい。
【0052】
そして、算出された動作[v,ω]
Tを積分することにより、前回算出した移動体12の位置および向きからの移動距離dと回転角度θを求めることができる。したがって、移動体12の初期位置および初期の向き(角度θ=0とする。)に、時系列に従って算出される移動距離dと回転角度θを累積的に加算することにより、時間毎の移動体12の位置および向きを知ることができる。
【0053】
なお、上記の移動体12の軌跡r
1:tと地図mの同時確率密度の推定問題については、「S. Thrun, W. Burgard and D. Fox: Probabilistic Robotics. MIT Press, 2005. (邦訳) 上田隆一訳:確率ロボティクス, 毎日コミュニケーションズ,2007.」(文献1)に開示されている。
【0054】
また、状態ベクトルは、移動体12の軌跡r
1:tと目印の集合m
1,…,m
nからなる。このため、パーティクルフィルタをそのまま適用するのは困難である。そこで、Rao-Blackwellizationという操作により、パーティクルのサンプル空間を移動体12の軌跡に限定することにより、パーティクルの次元を減らし、目印の位置の分布については、パーティクル毎に解析的に計算するという方法が「K. Murphy and S. Russell: ‘Rao-Blackwellised Particle Filtering for Dynamic Bayesian Networks,’ A. Doucet ed.: Sequential Monte Carlo Methods in Practice. Springer, 2001.」(文献2)において提案されている。これは、Rao-Blackwellised Particle Filter(RBPF) SLAMと呼ばれている。その実用的な実装として、FastSLAMがある(文献1)。
【0055】
このFastSLAMでは、移動体12の軌跡r
1:tと地図mの同時確率密度を数2のように分解し、移動体の軌跡の分布p(r
1:t,m|z
1:t,a
1:t)をパーティクルフィルタで計算し、目印の位置の分布p(m
j|r
1:t,z
1:t)をカルマンフィルタで計算する。
【0057】
また、制御データ(ここでは、車輪16a、16bの回転数データ)を用いて、時刻t−1のときに、時刻tにおける各パーティクルiの状態(状態ベクトル)が予想される。次に予測した状態と計測値に基づく実際の状態の類似度(尤度)が算出され、この類似度に基づいて重要度w
(i)が計算される(リサンプリング)。たとえば、パーティクルi総数は固定であり、上記の類似度が低いパーティクルiは消去され、類似度が高いパーティクルiは分裂される。また、各パーティクルiの重要度w
(i)は1で正規化される。
【0058】
なお、この実施例では、パーティクルフィルタを用いたSLAMを適用するが、拡張カルマンフィルタを用いたSLAM(EKF-SLAM)を適用することもできる。このEKF-SLAMでは、移動体12の位置r
tと地図mの同時確率密度を正規分布で表し、ベイズ推定とマルコフ性仮定を使うことにより、数3に示すような漸化式を構成する。
【0060】
ここで、u
t=(r
t,m
1,…,m
n)とすると、求める同時確率はp(u
t|z
1:t,a
1:t)となり、拡張カルマンフィルタを実装することができる。ただし、動作モデルp(r
t|r
t-1,a
t)は位置r
tに対して計算されるが、計測モデルはu
tに対して計算される。
【0061】
しかし、このような地図作成システム10は、ショッピングモールやイベント会場など、人間、ショッピングカートや台車のような動的物体が存在する環境についての地図を作成するため、距離センサ22a、22bで検出された距離データを座標変換した位置データ(世界座標系の位置データ)のうち、人間などの動的物体についての位置データを消去する必要がある。
【0062】
そこで、この実施例では、世界座標系の位置データから、壁、柱などの静的物体(環境)以外の動的物体などを判別して、環境についての地図作成のために不要な位置データを消去するようにしてある。以下、人間または人間と思われる動的物体についての位置データを消去する場合について説明する。
【0063】
たとえば、
図5には、壁の前に2人の人間が存在し、そのような状況において、移動体12が壁や人間に対面し、移動体12に設けられた距離センサ22aで距離を検出する様子が示される。ただし、
図5では、壁、人間および移動体12を上方から見た図である。また、ここでは、簡単のため、距離センサ22aの計測範囲は、正面を中心とする約90°の範囲であり、その計測範囲を約3°ずつスキャンした場合について示してある。さらに、
図5では、検出(計測)される距離は点線で示してある。また、上述したように、距離センサ22aは、床ないし地面から所定の高さに設置され、したがって、人間については、その脚(足首辺り)との距離を計測する。
【0064】
図5に示すような場合について、不要な位置データを消去する方法について説明する。簡単に説明すると、位置データに対応する位置(点)を所定のルールに従ってクラスタリングし、クラスタリングされた点群(クラスタ)の特徴から人間を判別し、人間であることが判別されたクラスタ(位置(点)データの集合)を消去する。ただし、クラスタに含まれる点の数が所定数NP(この実施例では、5)よりも少ない場合には、動的物体であるか静的物体であるかを判別するのが困難であるため、このようなクラスタについても消去するようにしてある。このクラスタに含まれる点の数もクラスタの特徴の1つである。
【0065】
クラスタリングでは、距離が所定値TH(この実施例では、10cm)未満である位置(点)同士が同じクラスタに分類される。具体的には、着目する点との距離が最も近い(短い)点を検出し、その距離が所定値TH未満であるかどうかを判断する。そして、距離が所定値TH未満である場合には、検出した点を着目する点と同じクラスタに分類する。一方、距離が所定値TH以上である場合には、検出した点を着目する点とは異なる新しいクラスタに分類する。そして、新しいクラスタに分類した点を着目する点として、上記のようなクラスタリングを行う。このようにして、クラスタリングはすべての点について行われる。
【0066】
図6は、
図5において移動体12の距離センサ22aによって距離を計測された点(位置)を白丸印で示す。ただし、
図6では、距離を計測された点(位置)を分かり易く示すために、壁と人間を省略してある。このような点が上述した方法により、クラスタリングされる。ただし、上述したように、実際には、世界座標系に座標変換された位置データについてクラスタリングが行われる。
【0067】
図7は、
図6に示す各点(位置)について、上述した方法により、クラスタリングを行った場合に生成されたクラスタを示す。
図7から分かるように、たとえば、7つのクラスタが生成される。
図7(
図8および
図9も同じ。)では、同じクラスタに分類されていることを示すために点を囲んである。
【0068】
クラスタリングを終えると、各クラスタについての特徴を抽出(算出)する。この実施例では、クラスタの特徴は、当該クラスタに含まれる複数の点の分散についての主成分であり、分散行列についての固有値λ
1,λ
2である。ただし、λ
1は分散行列についての固有値の中で最も大きい固有値であり、λ
2は固有値λ
1の次に(2番目に)大きい固有値である。
図8では、分かり易く示すために、クラスタの特徴(分散の主成分)を実線で示し、クラスタに含まれる点を省略してある。
【0069】
上述したように、クラスタに含まれる点の数が所定数NP未満であるクラスタについては、動的物体か静的物体かを判別することが困難であるため、固有値を算出するまでも無く、消去される。したがって、
図7および
図8に示すように、点の数が4つであるクラスタ4は消去される。
図8(
図10も同じ。)では、クラスタ4が消去されたことを、当該クラスタ4に含まれる点を囲む線を点線で記載することにより表現している。
【0070】
固有値λ
1,λ
2を算出する場合には、まず、各クラスタでは、クラスタに含まれる複数の点についての重心(または平均)(μ
x,μ
y)が数4に従って算出される。ただし、クラスタにn個の点が含まれているものとする。
【0072】
算出された重心(μ
x,μ
y)を基準とした場合についてのクラスタの分散行列Σは数5で示され、その固有値が数6に従って算出される。
【0073】
[数5]
Σ
ij = E[(X
i −μ
i)(X
j −μ
j)]=E(X
iX
j)−E(X
i)E(X
j)
ただし、μ
i=E(X
i)であり、この実施例では、2つの固有値λ
1,λ
2を算出するため、i=j=1,2である。
【0074】
[数6]
Σx−λIx=(Σ−λI)x=0
det(Σ−λI)=0
ただし、この実施例では、2つの固有値λ
1,λ
2を算出するため、Iは2行2列の単位行列である。
【0075】
このようにして、固有値λ
1,λ
2が算出されると、この固有値λ
1,λ
2を用いて、動的物体であるか、静的物体であるかが判別される。具体的には、固有値λ
1が第1閾値(たとえば、65cm)よりも大きい場合、または、固有値λ
2が第2閾値(たとえば、3cm)よりも小さい場合には、このような固有値λ
1,λ
2を有するクラスタを静的物体と判別する。ただし、第1閾値および第2閾値は、人間のような動的物体と壁や柱のような静的物体を判別するために実験等により経験的に得られた数値である。
【0076】
このように、固有値λ
2が第2閾値よりも小さい場合には、クラスタの形状が細長く、壁に対応するクラスタと考えられるからである。また、固有値λ
1が第1閾値よりも大きい場合には、
図9に示すように、通路の角に相当する部分の壁や柱に対応するクラスタと考えられるからである。したがって、固有値λ
1が第1閾値以下である場合、または、固有値λ
2が第2閾値以上である場合には、人間の脚(足首辺り)に相当する物体すなわち人間または人間のような物体に対応するクラスタであると考え、このような固有値λ
1,λ
2を有するクラスタを動的物体と判別し、当該クラスタを消去する。
【0077】
ただし、この実施例では、固有値λ
1,λ
2の両方が第2閾値(たとえば、3cm)よりも小さい場合には、物体が小さ過ぎると判断し、当該固有値λ
1,λ
2を有するクラスタを消去する。
【0078】
図10は、
図8に示したクラスタ1−3、5−7について、それぞれの特徴に基づいて静的物体であるか動的物体であるかを判別し、動的物体であることが判別されたクラスタ(
図10では、クラスタ2、3、5、6)を消去した図である。したがって、
図5−
図8および
図10に示すように、壁や柱のような静的物体についてのクラスタのみが残され、人間のような動的物体についてのクラスタおよび動的物体または静的物体を判別できないクラスタのような不要なクラスタ(位置データの集合)は消去される。
【0079】
図11は、上述したように、不要なクラスタを消去した後に、SLAMの技術を用いて作成した地図の一部を示す図解図である。ただし、
図11(
図12も同様である。)において、一本の実線で記載されているのが移動体12の移動経路であり、それ以外の複数の小さな黒点で示される領域が壁や柱などの静的物体である。
【0080】
また、
図12は、
図11に示す地図において、人間のような動的物体と判別されたクラスタについても描画した地図である。
図12において、複数の灰色の点で示される領域が人間などの動的物体である。
図11に示す地図では、このような動的物体が無いため、たとえば、コミュニケーションロボットのような移動体12が道案内などのサービスを提供する場合に、移動体12自身の位置を推定するために用いる地図として使用することができる。
【0081】
図13は、
図2に示したコンピュータ30に内蔵されるRAM30bのメモリマップ300の一例を示す。
図13に示すように、RAM30bは、プログラム記憶領域302およびデータ記憶領域304を含む。
【0082】
プログラム記憶領域302には、メイン処理プログラム302a、データ記憶プログラム302b、データ変換プログラム302c、不要データ消去プログラム302dおよび地図作成プログラム302eなどが記憶される。
【0083】
メイン処理プログラム302aは、地図作成システム10のメインルーチンを処理するためのプログラムである。データ記憶プログラム302bは、距離データおよび回転数データを取得して、RAM30bのデータ記憶領域304に記憶するためのプログラムである。ただし、移動体12を移動させている場合には、距離データおよび回転数データをHDD30cに記憶しておき、地図作成時に、HDD30cからRAM30bに読み込んでもよい。
【0084】
データ変換プログラム302cは、距離データを移動体12の位置および向きを基準として移動体座標系の位置データに座標変換し、さらに、世界座標系の位置データに座標変換するためのプログラムである。不要データ消去プログラム302dは、地図作成に先立って、動的物体と判別されたクラスタ(位置データの集合)と、動的物体または静的物体を判別できないクラスタを消去するためのプログラムである。地図作成プログラム302eは、SLAMを適用することにより、地図を作成するためのプログラムである。
【0085】
図示は省略するが、地図作成に必要な他のプログラムもプログラム記憶領域302に記憶される。
【0086】
また、データ記憶領域304には、距離データバッファ304aおよび回転数データバッファ304bが設けられる。距離データバッファ304aは、データ記憶プログラム302bに従って距離データを記憶する。同様に、回転数データバッファ304bは、データ記憶プログラム302bに従って回転数データを記憶する。
【0087】
また、データ記憶領域304には、位置データ304c、クラスタデータ304dおよび地図データ304eが記憶される。位置データ304cは、データ変換プログラム302cに従って世界座標系に座標変換された位置(点)データである。クラスタデータ304dは、不要データ消去プログラム302dに従って不要なクラスタ(位置データの集合)を消去するに際してクラスタリングされた位置データの集合(クラスタ)毎のデータである。地図データ304eは、地図作成プログラム302eに従って作成された地図データである。
【0088】
図示は省略するが、データ記憶領域304には、地図作成のために必要な他のデータが記憶されたり、地図作成のために必要なフラグやタイマ(カウンタ)などが設けられたりする。
【0089】
図14は
図2に示したCPU30aの全体処理を示すフロー図である。
図14に示すように、CPU30aは、全体処理を開始すると、ステップS1で、距離センサ22a、22bを駆動する。そして、CPU30aは、距離センサ22a、22bからの距離データの取得および記憶を開始する。
【0090】
次のステップS3では、移動体12の移動制御を開始する。つまり、CPU30aは、全体処理とは並行して、移動体12の移動制御の処理を実行する。詳細な説明および図示は省略するが、移動制御の処理では、CPU30aは、操作レバー18から入力される操作入力に従ってモータドライバ34a、34bを制御し、モータ36a、36bを駆動する。
【0091】
続くステップS5では、距離データおよび回転数データを取得するとともに記憶する。つまり、CPU30aは、距離センサ22a、22bからの距離データを取得するとともに、エンコーダ38a、38bからの回転数データを取得し、互いに関連付けて、それぞれ時系列に従ってRAM30bに記憶する。
【0092】
続いて、ステップS7では、環境の全範囲について移動したかどうかを判断する。ここでは、ユーザによって移動が終了されたかどうかが判断される。具体的には、CPU30aは、操作レバー18からの操作入力が無い状態が一定時間(たとえば、30秒)を経過したり、ユーザから移動終了の指示が入力されたりしたかどうかを判断する。
【0093】
ステップS7で“NO”であれば、つまり環境の全範囲の移動を終了していない場合には、そのままステップS3に戻る。一方、ステップS7で“YES”であれば、つまり環境の全範囲を移動すれば、ステップS9で、移動体12の位置および向きに応じて距離データを位置データに変換する。ここでは、上述したように、距離センサ22a、22bのそれぞれで検出された距離のデータが、移動体12の位置および向きを基準として移動体座標系の位置データに座標変換される。このとき、上述したように、2つの距離センサ22a、22bの取り付け位置が考慮される。
【0094】
続くステップS11では、後述する不要データの消去処理(
図15および
図16参照)を実行し、ステップS13で、消去処理により残ったクラスタ(位置データ)にSLAMを適用して地図を作成する。そして、ステップS15で、作成した地図に対応する地図データ304eをRAM30bに記憶して、全体処理を終了する。
【0095】
なお、上述したように、距離センサ22a、22bの検出周期は、20msecであるため、ステップS5−S7のスキャンタイムは、20msecよりも短く設定される。
【0096】
図15および
図16は、
図14に示したステップS11の不要データの消去処理を示すフロー図である。
図15に示すように、CPU30aは、不要データの消去処理を開始すると、ステップS31で、移動体座標系における位置データを世界座標系の位置データに変換する。
【0097】
次のステップS33では、着目する点(位置データに対応する位置)についての新しいクラスタを生成する。たとえば、ステップS33では、まだクラスタに分類されていない位置データが任意に選択され、新しいクラスタが生成される。このとき、着目する点についての位置データを含む新しいクラスタのデータが追加される。つまり、新しいクラスタのデータを追加することにより、クラスタデータ304dが更新される。
【0098】
続くステップS35では、次の点への距離が所定値TH(この実施例では、10cm)未満であるかどうかを判断する。ここでは、CPU30aは、着目する点に最も近い点との距離が所定値TH未満であるかどうかを判断するのである。ステップS35で“NO”であれば、つまり次の点への距離が所定値TH以上であれば、新しいクラスタを生成するために、ステップS33に戻る。一方、ステップS35で“YES”であれば、つまり次の点への距離が所定値TH未満であれば、ステップS37で、当該次の点を既存のクラスタに追加する。つまり、当該次の点が着目する点と同じクラスタに分類される。
【0099】
続いて、ステップS39では、すべての点についてクラスタリングを行ったかどうかを判断する。ここでは、CPU30aは、クラスタに分類されていない位置データが残っていないかどうかを判断するのである。ステップS39で“NO”であれば、つまりクラスタリングを行っていない点が残っていれば、ステップS35に戻る。図示は省略するが、このとき、直前にクラスタに分類された点が着目する点に設定される。
【0100】
一方、ステップS39で“YES”であれば、つまりすべての点についてクラスタリングを行えば、クラスタリングを終了したと判断し、ステップS41で、1番目のクラスタを読み出し、
図16に示すステップS43で、当該クラスタに含まれる点の数が所定数NP(この実施例では、5)未満かどうかどうかを判断する。
【0101】
なお、ステップS41では、説明の便宜上、1番目のクラスタを読み出すように説明したが、ここでは、任意のクラスタが読み出される。後述するステップS57においても同様であるが、このステップS57では、静的物体であることが判別されていない任意のクラスタが読み出される。ただし、クラスタを生成した順番に従ってクラスタを読み出すようにしてもよい。
【0102】
ステップS43で“YES”であれば、つまり当該クラスタに含まれる点の数が所定数NP未満であれば、静的物体か動的物体かの判別が出来ないと判断して、ステップS53に進む。一方、ステップS43で“NO”であれば、つまり当該クラスタに含まれる点の数が所定数NP以上であれば、ステップS45で、数4−数6に従って、当該クラスタの固有値λ
1、λ
2を算出する。
【0103】
次のステップS47では、固有値λ
1およびλ
2の両方が第2閾値H
min(この実施例では、3cm)未満であるかどうかを判断する。上述したように、ここでは、静的物体または動的物体を判別することができるかどうかが判断されるのである。ステップS47で“YES”であれば、つまり固有値λ
1およびλ
2の両方が第2閾値H
min未満であれば、そのままステップS53に進む。一方、ステップS47で“NO”であれば、つまり固有値λ
1およびλ
2の少なくとも一方が第2閾値H
min以上であれば、ステップS49で、固有値λ
1が第1閾値H
maxよりも大きい、または、固有値λ
2が第2閾値H
min未満であるかどうかを判断する。上述したように、ここでは、人間のような動的物体であるか、壁や柱のような静的物体であるかが判断(判別)される。
【0104】
ステップS49で“YES”であれば、つまり固有値λ
1が第1閾値H
maxよりも大きい、または、固有値λ
2が第2閾値H
min未満であれば、壁や柱のような静的物体であると判断し、ステップS51で、当該クラスタを静的物体に対応するクラスタに決定して、ステップS55に進む。
【0105】
一方、ステップS49で“NO”であれば、つまり固有値λ
1が第1閾値H
max以下である、または、固有値λ
2が第2閾値H
min以上である場合には、人間のような動的物体であると判断して、ステップS53で、当該クラスタを消去して、ステップS55に進む。つまり、ステップS53の処理を実行することにより、地図作成に不要な位置データが消去される。
【0106】
ステップS55では、すべてのクラスタを判別したかどうかを判断する。ステップS55で“NO”であれば、つまりまだ判別していないクラスタが存在する場合には、ステップS57で、次のクラスタを読み出し、ステップS43に戻る。一方、ステップS55で“YES”であれば、つまりすべてのクラスタを判別すれば、
図14に示した全体処理にリターンする。
【0107】
この実施例によれば、距離センサの計測結果から静的物体および動的物体を判別し、静的物体についての計測結果を用いて地図を作成するので、動的物体の存在しない地図を簡単に作成することができる。
【0108】
また、この実施例では、距離センサで検出された距離データを位置データに変換して不要なデータを消去するので、カメラ等の他のセンサを設ける必要が無い。つまり、コストが高くなったり、画像処理などの負荷が大きくなったりすることもない。
【0109】
なお、この実施例では、移動体として電動車椅子を用いるようにしたが、これに限定される必要はない。たとえば、本件の出願人等が開発するとともに、製造販売するコミュニケーションロボット「Robovie(ロボビー)(登録商標)」を用いることができる。
【0110】
また、この実施例では、距離センサで検出された距離データを移動体座標系の位置データに変換し、さらに、世界座標系の位置データに変換するようにしたが、環境についての距離データの計測(移動体の移動)を開始したときの現実空間における移動体の位置と向きを知ることができれば、移動体座標系の位置データを世界座標系の位置データに変換しなくてもよい。
【0111】
さらに、この実施例では、移動体座標系の位置データを世界座標系の位置データに変換してからクラスタリングするようにしたが、移動体座標系の位置データをクラスタリングした後に世界座標系に変換するようにしてもよい。
【0112】
さらにまた、この実施例では、動的物体の例として人間ないし人間のような物体を判別する場合について詳細に説明したが、上述したように、ショッピングカートや台車などの他の動的物体を判別することもできる。ただし、ショッピングカートや台車などの他の動的物体を判別する場合には、クラスタに含まれる位置データ(点)の数やその分散についての主成分(分散行列の固有値)が満たす条件をそれぞれの場合について決定する必要がある。
【0113】
また、この実施例で示した具体的な数値は単なる一例であり、限定されるべきではなく、実施される製品等に応じて適宜変更可能である。また、この実施例では、所定値や閾値を用いて大小を判断するステップにおいて、当該所定値や当該閾値を含まないようにしたが、当該所定値や当該閾値を含んで大小を判断するようにしてもよい。