以下、本発明による移動体、自己位置選択装置、自己位置推定装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による自己位置推定装置は、学習器を用いて自己位置に関する信頼度を取得するものである。本実施の形態による自己位置選択装置は、そのようにして取得された信頼度を用いて、2個の自己位置推定装置によって推定された自己位置のうち、信頼度の高い方の自己位置を選択するものである。本実施の形態による移動体は、そのようにして選択された自己位置を用いて移動制御を行うものである。
図1は、本実施の形態による移動体1の構成を示すブロック図である。本実施の形態による移動体1は、自己位置選択装置2と、移動機構11と、移動制御部12とを備える。自己位置選択装置2は、移動体1の自己位置を推定する第1の自己位置推定装置21aと、第1の自己位置推定装置21aと異なるように移動体1の自己位置を推定する第2の自己位置推定装置21bと、選択部22とを備える。第1の自己位置推定装置21aは、第1の位置推定用センサ31aと、第1の推定部32aと、第1の信頼度取得部33aとを備える。第2の自己位置推定装置21bは、第2の位置推定用センサ31bと、第2の推定部32bと、第2の信頼度取得部33bとを備える。
移動体1は、例えば、陸上を走行する走行体であってもよく、または、空中を飛行する飛行体であってもよく、水上を移動する水上航行体(例えば、船舶など)であってもよく、水中を移動する水中航行体(例えば、潜水艇など)であってもよい。本実施の形態では、移動体1が走行体である場合について主に説明する。
走行体である移動体1は、例えば、台車であってもよく、自動運転車であってもよく、移動するロボットであってもよい。ロボットは、例えば、エンターテインメントロボットであってもよく、監視ロボットであってもよく、搬送ロボットであってもよく、清掃ロボットであってもよく、動画や静止画を撮影するロボットであってもよく、その他のロボットであってもよい。
飛行体は、例えば、回転翼機であってもよく、飛行機であってもよく、飛行船であってもよく、その他の飛行体であってもよい。任意の位置に移動可能であるという観点からは、飛行体は、回転翼機であることが好適である。回転翼機は、例えば、ヘリコプターであってもよく、3個以上の回転翼(ロータ)を有するマルチコプターであってもよい。マルチコプターは、例えば、4個の回転翼を有するクワッドロータであってもよく、その他の個数の回転翼を有するものであってもよい。
また、移動体1は、例えば、自律的に移動するものであってもよい。なお、移動体1が自律的に移動するとは、移動体1がユーザ等から受け付ける操作指示に応じて移動するのではなく、自らの判断によって目的地に移動することであってもよい。その目的地は、例えば、手動で決められたものであってもよく、または、自動的に決定されたものであってもよい。また、その目的地までの移動は、例えば、移動経路に沿って行われてもよく、または、そうでなくてもよい。また、自らの判断によって目的地に移動するとは、例えば、進行方向、移動や停止などを移動体1が自ら判断することによって、目的地まで移動することであってもよい。また、例えば、移動体1が、障害物に衝突しないように移動することであってもよい。
次に、移動体1の自己位置選択装置2の構成について説明する。
第1及び第2の自己位置推定装置21a,21bは、異なるように自己位置の推定を行うものであるが、その違い以外については、両者は実質的に同様のものである。以下、両者を区別しない場合には、自己位置推定装置21と呼ぶこともある。また、第1及び第2の位置推定用センサ31a,31bについても、両者を区別しない場合には、位置推定用センサ31と呼ぶこともある。また、第1及び第2の推定部32a,32bについても、両者を区別しない場合には、推定部32と呼ぶことがある。また、第1及び第2の信頼度取得部33a,33bについても、両者を区別しない場合には、信頼度取得部33と呼ぶことがある。
位置推定用センサ31は、移動体1に装着されており、移動体1の位置の推定に用いられる情報を取得するセンサである。なお、移動体1の位置の推定は、移動体1の位置のみに関する推定であってもよく、または、移動体1の位置及び姿勢(角度)に関する推定であってもよい。本実施の形態では、後者の場合について主に説明する。位置推定用センサ31は、特に限定されるものではないが、例えば、移動体1の周囲の情報を取得するセンサ、角位置センサ、加速度センサ、GPS(Global Positioning System)センサ等であってもよい。移動体1の周囲の情報を取得するセンサは、例えば、測距センサ、画像センサ等であってもよい。
また、移動体1の位置の推定が、移動体1の位置及び姿勢の推定である場合には、位置推定用センサ31は、2以上のセンサを有していてもよい。例えば、位置推定用センサ31は、加速度センサと、移動体1の姿勢の検出に用いられるセンサとを有していてもよく、GPSセンサと、移動体1の姿勢の検出に用いられるセンサとを有していてもよい。移動体1の姿勢の検出に用いられるセンサは、例えば、ジャイロセンサであってもよく、地磁気センサ(電子コンパス)であってもよい。ジャイロセンサは、例えば、移動体1の姿勢を検出するものであってもよく、移動体1の角速度や角加速度を検出するものであってもよい。
測距センサは、複数方向に関して周囲の物体までの距離を測定するセンサであり、例えば、レーザセンサや、超音波センサ、マイクロ波を用いた距離センサ、ステレオカメラによって撮影されたステレオ画像を用いた距離センサなどであってもよい。レーザセンサは、レーザレンジセンサ(レーザレンジスキャナ)であってもよい。なお、それらの測距センサについてはすでに公知であり、それらの説明を省略する。本実施の形態では、測距センサがレーザレンジセンサである場合について主に説明する。また、測距センサは、1個のレーザレンジセンサを有していてもよく、または、2個以上のレーザレンジセンサを有していてもよい。後者の場合には、2個以上のレーザレンジセンサによって、全方向がカバーされてもよい。また、測距センサが超音波センサや、マイクロ波を用いた距離センサなどである場合に、測距センサの測距方向を回転させることによって複数方向の距離を測定してもよく、複数方向ごとに配置された複数の測距センサを用いて複数方向の距離を測定してもよい。複数方向の距離を測定するとは、例えば、あらかじめ決められた角度範囲や全周囲(360度)について、あらかじめ決められた角度間隔で複数方向の距離を測定することであってもよい。その角度間隔は、例えば、1度間隔や2度間隔、5度間隔などのように一定であってもよい。測距センサによって取得される情報は、例えば、移動体1のある向きを基準とした複数の方位角のそれぞれに関する周辺の物体までの距離であってもよい。その距離を用いることによって、移動体1のローカル座標系において、移動体1の周囲にどのような物体が存在するのかを知ることができるようになる。
画像センサは、例えば、CCDイメージセンサや、CMOSイメージセンサなどであってもよい。なお、それらの画像センサについてはすでに公知であり、それらの説明を省略する。画像センサは、例えば、画像センサ上に結像させるためのレンズ等の光学系を含んでいてもよい。また、画像センサは、単眼であってもよく、双眼(ステレオカメラ)であってもよい。画像センサは、通常、動画を撮影するもの、すなわち、連続した画像フレームを取得するものである。移動している移動体1の自己位置を取得するために撮影画像を取得することから、そのフレームレートは、移動速度に対して十分大きいものであることが好適である。例えば、フレームレートは、約30fpsなどであってもよい。
角位置センサは、移動体1の駆動軸の回転の変位を取得するセンサであり、例えば、ロータリーエンコーダ等であってもよい。角位置センサが回転の変位を取得する対象となる駆動軸は、移動体1の移動のために駆動される駆動軸である。例えば、モータ等の駆動手段と、車輪や無限軌道などとの間に減速機が存在する場合には、回転の変位を取得する対象となる駆動軸は、減速機の入力側(すなわち、モータ等の側)であってもよく、または出力側(すなわち、車輪等の側)であってもよい。なお、角位置センサについてはすでに公知であり、その説明を省略する。角位置センサによって取得される情報は、例えば、駆動軸の回転量や角度であってもよい。
加速度センサは、移動体1の加速度を計測する。この加速度センサは、例えば、2軸の加速度センサであってもよく、3軸の加速度センサであってもよい。なお、加速度センサについてはすでに公知であり、その説明を省略する。移動方向が所定の平面内に限定される場合(例えば、移動体1が床面を移動する走行体である場合など)には、2軸の加速度センサが用いられてもよい。
GPSセンサは、GPS衛星からの電波を受信するセンサである。なお、GPSセンサについてはすでに公知であり、その説明を省略する。GPSセンサによって取得される情報は、例えば、GPS衛星から送信された電波であってもよい。
ジャイロセンサによって取得される情報は、例えば、移動体1の姿勢(角度)や、角速度、角加速度であってもよい。また、地磁気センサによって取得される情報は、例えば、移動体1の姿勢であってもよい。移動体1の姿勢は、例えば、移動体1の方位角や、移動体1の方位角及び仰俯角であってもよい。
第1及び第2の自己位置推定装置21a,21bが、異なるように自己位置の推定を行うようにするため、例えば、第1及び第2の位置推定用センサ31a,31bは、それぞれ異なる情報を取得するセンサであってもよい。異なる情報を取得するセンサとは、例えば、異なる種類のセンシングによって情報を取得するセンサ(例えば、角位置センサと測距センサなど)であってもよく、同じ種類のセンシングによって異なる対象の情報を取得するセンサ(例えば、移動体1のある方向の範囲(前方の範囲など)について測距を行う測距センサと、別の方向の範囲(後方の範囲など)について測距を行う測距センサなど)であってもよい。なお、第1及び第2の位置推定用センサ31a,31bによる情報の取得は、同期して行われることが好適である。第1及び第2の推定部32a,32bによって、同時点の位置の推定が行われることが好適だからである。
推定部32は、位置推定用センサ31によって取得された情報を用いて移動体1の自己位置を推定する。なお、推定部32は、位置推定に用いる情報を取得した位置推定用センサ31の種類に応じた自己位置の推定を行うものとする。例えば、位置推定用センサ31が測距センサである場合には、推定部32は、測距センサによって取得された情報を用いた位置の推定を行い、位置推定用センサ31が画像センサである場合には、推定部32は、画像センサによって取得された情報を用いた位置の推定を行ってもよい。したがって、推定部32は、特に限定されるものではないが、例えば、移動体1の周囲の情報を取得するセンサによって取得された情報、角位置センサによって取得された情報、加速度センサによって取得された情報、GPSセンサによって取得された情報等を用いて位置の推定を行うものであってもよい。移動体1の周囲の情報を取得するセンサによって取得された情報は、例えば、測距センサによって取得された情報、画像センサによって取得された情報等であってもよい。
ここで、センサによって取得された情報を用いた位置の推定について簡単に説明する。推定された位置は、例えば、ワールド座標系における位置であってもよい。
まず、位置推定用センサ31が測距センサであり、推定部32が、位置推定用センサ31によって取得された測距結果と、自己位置の推定に用いられる環境地図とを用いて自己位置を推定する場合について説明する。測距結果は、厳密には、測定された各方向の距離である。環境地図は、移動体1の移動領域における障害物の位置を示す地図であり、推定部32がアクセス可能な図示しない記録媒体において記憶されているものとする。その障害物は、測距センサによる距離の測定対象となる壁や設備等の物体であってもよい。自己位置は、通常、ワールド座標系における位置である。そのような測距結果を用いた自己位置推定は、測距結果を用いたSLAM(Simultaneous Localization and Mapping)においてすでに知られているため、その詳細な説明を省略する。なお、推定部32は、環境地図の作成を行ってもよく、または行わなくてもよい。前者の場合には、推定部32は、測距結果を用いたSLAMと同様のものであってもよく、後者の場合には、推定部32は、既存の環境地図を用いて自己位置推定を行うものであってもよい。
次に、位置推定用センサ31が画像センサであり、推定部32が、位置推定用センサ31によって取得された撮影画像と、自己位置の推定に用いられる環境地図とを用いて自己位置を推定する場合について説明する。その位置の推定において、画像センサによって取得された撮影画像において特定された特徴点、及び移動体1の移動領域における特徴点の位置を示す環境地図が用いられてもよい。なお、環境地図は、推定部32がアクセス可能な図示しない記録媒体において記憶されているものとする。自己位置は、通常、ワールド座標系における位置である。そのような撮影画像を用いた自己位置推定は、visual−SLAMとしてすでに知られているため、その詳細な説明を省略する。なお、推定部32は、環境地図の作成を行ってもよく、または行わなくてもよい。前者の場合には、推定部32は、visual−SLAMと同様のものであってもよく、後者の場合には、推定部32は、既存の環境地図を用いて自己位置推定を行うものであってもよい。
次に、位置推定用センサ31が、移動体1の駆動軸の回転の変位を取得するロータリーエンコーダ等の角位置センサであり、推定部32が、位置推定用センサ31によって取得された、駆動軸の回転量や角度によって、車輪等の回転量を把握し、自己位置を推定する場合について説明する。ここでは、対向2輪型の移動体1の例について具体的に説明する。
角位置センサによって取得された左右の車輪の回転量をそれぞれΔθL、ΔθRとし、車輪径をRとすると、左右の車輪の移動量ΔdL、ΔdRはそれぞれ次のようになる。
ΔdL=RΔθL
ΔdR=RΔθR
また、左右の車輪間の距離をLとすると、移動体1の移動量Δdと旋回量Δθは、次式のように算出できる。
Δd=(ΔdR+ΔdL)/2
Δθ=(ΔdR−ΔdL)/L
移動体1の位置を(X,Y,Θ)とすると、移動体1の相対移動量(ΔX,ΔY,ΔΘ)は、次式のようになる。なお、(X,Y)は、2次元XY座標系における座標値であり、Θは、2次元座標系におけるX軸を基準とした角度であってもよい。また、移動体1の位置(X,Y,Θ)は、ワールド座標系における位置であってもよい。
(ΔX,ΔY,ΔΘ)=(Δd×cosΘ,Δd×sinΘ,Δθ)
したがって、相対移動量(ΔX,ΔY,ΔΘ)を前回(時刻:t−1)の自己位置(Xt-1,Yt-1,Θt-1)に加算することによって、現在(時刻:t)の自己位置(Xt,Yt,Θt)を取得することができる。
(Xt,Yt,Θt)=(Xt-1,Yt-1,Θt-1)+(ΔX,ΔY,ΔΘ)
なお、上式の相対移動量は、t−1からtまでの間の移動量である。前回の自己位置は、例えば、角位置センサによって取得された情報を用いて推定されたものであってもよく、選択部22によって選択された自己位置であってもよい。また、ここでは、移動体1が対向2輪型である場合について具体的に説明したが、移動体1が他の形式である場合であっても、同様にして、エンコーダ等の角位置センサによって取得された情報を用いて、移動体1の位置を推定できることは言うまでもない。
また、位置推定用センサ31は、移動体1の加速度を取得する加速度センサであってもよく、その場合には、推定部32は、位置推定用センサ31によって取得された加速度を2階積分することによって移動量(移動距離)を取得してもよい。この場合には、推定部32は、移動量を順次、加算していくことによって、移動体1の自己位置を推定することができる。なお、この場合には、移動距離を取得することしかできないため、初期位置は入力する必要がある。
また、測距結果や撮影画像、車輪等の回転量、加速度等を用いた位置の推定において、例えば、パーティクルフィルタやカルマンフィルタ等の状態空間モデルが用いられてもよく、ネルダーミード法(Nelder-Mead法;滑降シンプレックス法)が用いられてもよく、その他の手法が用いられてもよい。
また、位置推定用センサ31は、GPSセンサであってもよく、その場合には、推定部32は、位置推定用センサ31によって受信された複数のGPS衛星からの電波を用いて自己位置を推定してもよい。なお、GPSの位置推定はすでに公知であり、その詳細な説明を省略する。
なお、測距センサ、画像センサ、角位置センサによって取得された情報を用いた位置の推定においては、通常、移動体1の位置及び姿勢を推定することができる。一方、加速度センサ、GPSセンサによって取得された情報を用いた位置の推定においては、通常、移動体1の位置のみを推定することになる。したがって、移動体1の姿勢に関する推定も必要な場合には、ジャイロセンサや地磁気センサ等の姿勢の検出に用いられるセンサによって取得された情報を用いた姿勢に関する推定が行われてもよい。例えば、移動体1の姿勢を検出するジャイロセンサや地磁気センサによって情報が取得される場合には、その取得された情報そのものが移動体1の姿勢として用いられてもよい。また、例えば、角速度センサや角加速度センサであるジャイロセンサによって移動体1の角速度や角加速度が取得される場合には、角速度を積分することによって得られた角度(姿勢の変化量)や角加速度を2階積分することによって得られた角度(姿勢の変化量)を積算することによって移動体1の姿勢が取得されてもよい。
信頼度取得部33は、位置推定用センサ31によって取得された情報、及び推定部32によって推定された自己位置の少なくとも一方に関する情報を含む入力情報を学習器に適用することによって、推定部32によって推定された自己位置に関する信頼度を取得する。自己位置に関する信頼度は、その推定結果である自己位置を信頼できる程度、すなわち自己位置の確からしさを示す値であってもよい。位置推定用センサ31によって取得された情報に関する情報は、位置推定用センサ31によって取得された情報そのものであってもよく、位置推定用センサ31によって取得された情報に基づいて得られる情報であってもよい。後者の情報は、例えば、角位置センサである位置推定用センサ31によって取得された情報に基づいて得られた移動量であってもよい。また、推定部32によって推定された自己位置に関する情報は、推定部32によって推定された自己位置そのものであってもよく、推定部32によって推定された自己位置に基づいて得られる情報であってもよい。また、入力情報は、位置推定用センサ31によって取得された情報、及び推定部32によって推定された自己位置の両方に基づいて得られる情報であってもよい。
なお、入力情報に含まれる情報を、位置推定用センサ31によって取得された情報等に基づいて生成する必要がある場合には、信頼度取得部33は、その情報を生成してもよい。また、移動量などのように、位置推定用センサ31によって取得された情報に基づいて得られる情報は、推定部32によって取得されていることもある。そのような場合には、信頼度取得部33は、入力情報に含まれる情報を、推定部32等の他の構成要素から受け取ってもよい。
学習器は、移動体が有するセンサによって取得された、その移動体の位置の推定に用いられる情報、及びその情報を用いて推定された、その移動体の自己位置の少なくとも一方に関する情報を含む訓練用入力情報と、その自己位置に関する信頼度である訓練用出力情報との組を複数用いて学習された学習結果である。その学習器は、例えば、信頼度取得部33がアクセス可能な図示しない記録媒体で記憶されていてもよい。なお、位置推定用センサ31と、訓練用入力情報に含まれる情報の元となる情報を取得したセンサとの種類は同じであることが好適である。例えば、位置推定用センサ31が、測距センサである場合には、訓練用入力情報に含まれる情報の元となる情報を取得したセンサも、測距センサであることが好適である。また、訓練用入力情報に自己位置に関する情報も含まれる場合には、その自己位置を推定する方法が、推定部32による自己位置を推定する方法と同じであることが好適である。また、訓練用入力情報と訓練用出力情報との組を訓練情報と呼ぶこともある。
学習器は、例えば、ニューラルネットワーク(Neural Network)の学習結果であってもよく、それ以外の機械学習の学習結果であってもよい。本実施の形態では、学習器がニューラルネットワークの学習結果である場合について主に説明する。
ニューラルネットワークは、例えば、畳み込み層を含むニューラルネットワークであってもよく、全結合層を含むニューラルネットワークであってもよく、それら以外のニューラルネットワークであってもよい。また、ニューラルネットワークが少なくとも1個の中間層(隠れ層)を有する場合には、そのニューラルネットワークの学習は、深層学習(ディープラーニング、Deep Learning)であると考えてもよい。また、機械学習にニューラルネットワークを用いる場合において、そのニューラルネットワークの層数、各層におけるノード数、各層の種類(例えば、畳み込み層、全結合層など)等については、適宜、選択したものを用いてもよい。また、各層において、バイアスを用いてもよく、または、用いなくてもよい。バイアスを用いるかどうかは、層ごとに独立して決められてもよい。なお、入力層と出力層のノード数は、通常、訓練情報に含まれる訓練用入力情報の情報数と訓練用出力情報の情報数とによって決まる。
また、ニューラルネットワークにおける各設定は、次のようであってもよい。活性化関数は、例えば、ReLU(正規化線形関数)であってもよく、シグモイド関数であってもよく、その他の活性化関数であってもよい。また、学習では、例えば、誤差逆伝搬法を用いてもよく、ミニバッチ法を用いてもよい。また、損失関数(誤差関数)は、平均二乗誤差であってもよい。また、epoch数(パラメータの更新回数)は特に問わないが、過剰適合とならないepoch数が選択されることが好適である。また、過剰適合を予防するため、所定の層間においてドロップアウトを行ってもよい。なお、機械学習における学習方法としては、公知の方法を用いることができ、その詳細な説明を省略する。
学習器が所定の記録媒体で記憶されているとは、例えば、学習器そのもの(例えば、入力に対して値を出力する関数や学習結果のモデル等)が記憶されていることであってもよく、学習器を構成するために必要なパラメータ等の情報が記憶されていることであってもよい。後者の場合であっても、そのパラメータ等の情報を用いて学習器を構成できるため、実質的に学習器が記憶されていると考えることができるからである。本実施の形態では、学習器そのものが、推定部32がアクセス可能な記録媒体で記憶されている場合について主に説明する。また、第1及び第2の位置推定用センサ31a,31bが異なるセンサである場合には、通常、第1及び第2の信頼度取得部33a,33bは、それぞれ異なる学習器を用いて信頼度を取得することになる。一方、第1及び第2の信頼度取得部33a,33bが学習器に適用する情報が同じ種類の情報である場合には、両者は、1個の学習器を用いて信頼度を取得してもよい。例えば、第1及び第2の位置推定用センサ31a,31bが両方とも測距センサであり、一方が移動体1のある方向について測距を行い、他方が移動体1の別の方向について測距を行うような場合には、第1及び第2の信頼度取得部33a,33bは、同一の学習器を用いて信頼度の取得を行ってもよい。
ここで、学習器の生成について、位置推定用センサ31の種類ごとに説明する。なお、訓練情報を取得するために用いられる移動体は、移動体1であってもよく、または、別の移動体であってもよい。後者の場合であって、例えば、第1の自己位置推定装置21aにおける信頼度の取得用の学習器を生成するために用いられる訓練情報を取得する場合には、その移動体は、第1の位置推定用センサ31aと同様のセンサと、第1の推定部32aと同様の推定部とを有していることが好適である。また、移動体1ではない移動体を用いて訓練情報が取得される場合には、その移動体は、移動制御部等を有しておらず、訓練情報を取得するための構成のみを有しているものであってもよい。
まず、位置推定用センサ31が測距センサである場合には、訓練用入力情報は、測距センサによって取得された測距結果と、その測距結果を用いた自己位置の推定に用いられる環境地図と、その測距結果及びその環境地図を用いて推定された自己位置とに関する情報であってもよい。例えば、環境地図と、推定された自己位置を基準とした測距結果によって示される点(以下、「検出点」と呼ぶこともある。)とのマッチングの程度を示す情報が訓練用入力情報であってもよい。なお、検出点は、推定された自己位置を基準として測距センサによって距離が測定された、移動領域における点である。そのマッチングの程度を示す情報が訓練用入力情報として用いられることにより、入力されたマッチングの程度に応じた信頼度を出力できる学習器を生成することができると考えられるからである。
例えば、環境地図と測距結果とを用いて推定された自己位置と、その自己位置を基準とした測距結果の位置を示す検出点とは、図3で示されるようになる。図3は、壁や設備等の障害物D1〜D4を含む環境地図を示す図であり、その環境地図上に、移動体1aと、複数の検出点Pとを示している。黒塗りの正方形で示される移動体1aは、訓練情報を取得するために用いられる移動体であって、環境地図における推定された自己位置に配置されており、矢印は、移動体1aの推定された向き(姿勢)を示している。また、検出点Pは、図3における移動体1aの位置を基準として、各測距結果の位置をプロットしたものである。この場合には、訓練用入力情報は、図4Aで示される環境地図を示す第1のチャネルの画像と、図4Bで示される複数の検出点を示す第2のチャネルの画像とであってもよい。また、このように、訓練用入力情報が2チャネルの画像である場合には、ニューラルネットワークは、1以上の畳み込み層を有していてもよい。
また、例えば、環境地図と、測距結果と、推定された自己位置とを用いることによって、各測距方向における測距結果と、推定された自己位置から環境地図によって示される障害物のエッジまでの距離との差の絶対値を取得することができる。その距離の差の絶対値の集合を、訓練用入力情報としてもよい。この場合には、ニューラルネットワークは、複数の全結合層を有していてもよい。また、上記した以外の環境地図と、検出点とのマッチングの程度を示す情報が、訓練用入力情報として用いられてもよい。
また、訓練用入力情報に、推定された自己位置そのものを含めてもよい。移動体の位置に応じて、測距センサを用いた正確な位置推定を行うことができるかどうかが決まることもあり得るからである。例えば、移動体が長い廊下のように単調な環境に存在する場合には、測距センサによる測距結果を用いて、自己位置を一意に決定できず、誤差が大きくなることもあり得る。また、例えば、移動体が人の出入りの多い領域に存在する場合には、環境地図に含まれない障害物(人間)が存在することにより、誤差が大きくなることもあり得る。そのような状況においては、訓練用入力情報に自己位置が含まれていることによって、より正確な信頼度を取得することができるようになると考えられる。
訓練用出力情報は、推定された自己位置に関する信頼度である。この信頼度は、推定された自己位置の誤差に応じた値であってもよい。その誤差を取得するため、訓練用入力情報の取得に用いられる移動体の位置が正確に測定されることが好適である。その位置の測定は、例えば、3次元のレーザトラッカーなどの3次元測定器を用いて、移動体の所定の位置(例えば、球体等のあらかじめ決められた形状の物体が装着された位置など)を計測することによって行われてもよく、移動体の移動領域側に配置された複数のカメラで移動体を撮影することによって行われてもよく、手動で測定することによって行われてもよく、その他の方法によって行われてもよい。また、その位置の測定は、自己位置の推定のためのセンシングを行った位置に存在する移動体について行われることが好適である。このようにして測定された移動体の正確な位置と、センサによるセンシング結果を用いて推定された自己位置との差(例えば、両位置間の距離)を算出することによって、推定された自己位置の誤差を取得することができる。なお、信頼度は、その誤差が小さいほど、高くなる値であってもよい。例えば、所定の減少関数の変数に誤差を代入することによって求められた値が、信頼度となってもよい。信頼度は、例えば、0から1までの範囲などのように、所定の範囲に規格化されていてもよい。なお、訓練用出力情報については、センサの種類を問わないため、測距センサ以外のセンサについても、このように訓練用出力情報が生成されてもよい。
なお、訓練用入力情報と訓練用出力情報との組は、移動領域における種々の場所において、より多く取得されることが好適である。訓練情報を取得する際に移動体が移動する移動領域と、学習器を用いた信頼度の取得を行う際に移動体1が移動する移動領域とは、同じであることが好適であるが、両移動領域は異なっていてもよい。
位置推定用センサ31が測距センサである場合には、信頼度取得部33が学習器に適用する入力情報は、位置推定用センサ31によって取得された測距結果と、推定部32による自己位置の推定に用いられる環境地図と、推定部32によって推定された自己位置とに関する情報を含んでいてもよい。なお、その入力情報は、訓練用入力情報と同種類の情報であることが好適である。
次に、位置推定用センサ31が画像センサである場合には、訓練用入力情報は、撮影画像と、その撮影画像を用いた自己位置の推定に用いられる環境地図と、その撮影画像及びその環境地図を用いて推定された自己位置とに関する情報であってもよい。例えば、撮影画像における特徴点と、推定された自己位置を基準とした環境地図における特徴点とのマッチングの程度を示す情報が訓練用入力情報であってもよい。そのマッチングの程度を示す情報が訓練用入力情報として用いられることにより、入力されたマッチングの程度に応じた信頼度を出力できる学習器を生成することができると考えられるからである。
上記の測距センサに対応する訓練用入力情報と同様に、特徴点を示す画像を含む訓練用入力情報が用いられてもよく、または、撮影画像と環境地図との間で対応している特徴点の組について、特徴記述子(特徴量)の類似の程度を示す情報(例えば、類似度など)を含む訓練用入力情報が用いられてもよい。訓練用入力情報が画像である場合には、第1のチャネルの画像は、撮影画像における特徴点を示す画像であり、第2のチャネルの画像は、推定された自己位置を基準とした環境地図における特徴点を示す画像であってもよい。なお、各特徴点には、特徴記述子(特徴量)が対応付けられているため、その特徴記述子が、例えば、画像における特徴点の属性として示されてもよい。その属性は、例えば、特徴点の大きさであってもよく、色であってもよく、形状であってもよく、その他の属性であってもよい。なお、特徴点は、例えば、ORB−SLAMと同様の自己位置推定において用いられる所定個数のFASTキーポイントであってもよく、SIFTキーポイントやSURFキーポイントなどであってもよい。また、特徴記述子の類似度は、例えば、特徴記述子が二値ベクトルである場合(例えば、ORB−SLAMの場合)には、ハミング距離を用いて算出してもよい。特徴記述子が二値ベクトルではない場合(例えば、SIFTキーポイントやSURFキーポイントの場合)には、特徴記述子の類似度をコサイン距離やユークリッド距離を用いて算出してもよい。また、位置推定用センサ31が画像センサである場合にも、訓練用入力情報に、推定された自己位置そのものを含めてもよい。
位置推定用センサ31が画像センサである場合には、信頼度取得部33が学習器に適用する入力情報は、位置推定用センサ31によって取得された撮影画像と、推定部32による自己位置の推定に用いられる環境地図と、推定部32によって推定された自己位置とに関する情報を含んでいてもよい。なお、その入力情報は、訓練用入力情報と同種類の情報であることが好適である。
次に、位置推定用センサ31がロータリーエンコーダ等の角位置センサである場合には、訓練用入力情報は、角位置センサによって取得された、移動体の駆動軸の回転の変位に応じた移動量と、その移動量に応じて推定された移動体の自己位置とであってもよい。移動量は、角位置センサによって取得された情報を用いて取得することができる。例えば、対向2輪型の移動体の場合には、上記(ΔX,ΔY,ΔΘ)が移動量となる。移動量は、所定の時間間隔における移動体の位置の変化量であるため、例えば、車輪に滑りが発生しているような場合には、移動量が通常よりも大きくなると考えられる。また、車輪に滑りが発生しやすい領域はあらかじめ決まっていると考えられるため、推定された自己位置に応じて、移動体が車輪に滑りが発生しやすい領域に存在するのかどうかが特定されると考えられる。したがって、移動量や推定された自己位置が訓練用入力情報として用いられることにより、入力された移動量や自己位置に応じた信頼度を出力できる学習器を生成することができると考えられる。
位置推定用センサ31がロータリーエンコーダ等の角位置センサである場合には、信頼度取得部33が学習器に適用する入力情報は、位置推定用センサ31によって取得された駆動軸の回転の変位に応じた移動量、及び推定部32によって推定された自己位置を含んでいてもよい。なお、その入力情報は、訓練用入力情報と同種類の情報であることが好適である。
次に、位置推定用センサ31が加速度センサを含んでいる場合には、訓練用入力情報は、加速度センサによって取得された加速度と、その加速度を用いて推定された移動体の自己位置とを含んでいてもよい。例えば、移動体が移動を開始して加速を行い、次に等速移動に移行し、その後に減速して停止するなどのように、理想的な速度変化の場合と、急激な加速と減速とを短時間に繰り返すなどのように、理想的ではない速度変化の場合とにおいては、移動体の誤差が異なり、その結果、信頼度が異なると考えられる。また、移動体の自己位置の誤差が発生しやすくなる領域と、そうでない領域とがあると考えられ、移動体の自己位置に応じても、誤差が異なると考えられる。したがって、加速度や推定された自己位置が訓練用入力情報として用いられることにより、入力された加速度や自己位置に応じた信頼度を出力できる学習器を生成することができると考えられる。
位置推定用センサ31が加速度センサを含んでいる場合には、信頼度取得部33が学習器に適用する入力情報は、位置推定用センサ31によって取得された加速度、及び推定部32によって推定された自己位置を含んでいてもよい。なお、その入力情報は、訓練用入力情報と同種類の情報であることが好適である。
次に、位置推定用センサ31がGPSセンサを含んでいる場合には、訓練用入力情報は、推定された自己位置を含んでいてもよい。例えば、移動体が、障害物が多い環境などのように、マルチパスの多い環境を移動している場合には、GPS衛星からの電波に関するマルチパスの影響によって、推定された自己位置の誤差が大きくなる可能性がある。したがって、推定された自己位置が訓練用入力情報として用いられることにより、入力された自己位置に応じた信頼度を出力できる学習器を生成することができると考えられる。
位置推定用センサ31がGPSセンサを含んでいる場合には、信頼度取得部33が学習器に適用する入力情報は、推定部32によって推定された自己位置を含んでいてもよい。なお、その入力情報は、訓練用入力情報と同種類の情報であることが好適である。
また、位置推定用センサ31がジャイロセンサを含んでいる場合には、例えば、ジャイロセンサによって取得された角速度や角加速度が、訓練用入力情報に含まれてもよい。移動体の姿勢の変化に応じて、誤差の程度も異なると考えられるからである。また、位置推定用センサ31が地磁気センサを含んでいる場合には、例えば、推定された自己位置が訓練用入力情報に含まれていてもよい。例えば、エレベータの近くなどのように、磁気の影響を受ける領域においては、誤差が大きくなると考えられるからである。
位置推定用センサ31がジャイロセンサを含んでいる場合には、信頼度取得部33が学習器に適用する入力情報は、位置推定用センサ31によって取得された角速度や角加速度を含んでいてもよい。また、位置推定用センサ31が地磁気センサを含んでいる場合には、信頼度取得部33が学習器に適用する入力情報は、推定部32によって推定された自己位置を含んでいてもよい。なお、その入力情報は、訓練用入力情報と同種類の情報であることが好適である。
上記のように、複数の訓練情報を学習して生成された学習器に、移動体1が有する位置推定用センサ31によって取得された、移動体1の位置の推定に用いられる情報、及びその情報を用いて推定された移動体1の自己位置の少なくとも一方に関する情報を含む入力情報が入力されると、その自己位置に関する信頼度を取得することができる。その入力情報は、上記したように、学習器を生成する際に用いられる訓練用入力情報と同種類の情報であることが好適である。具体的には、位置推定用センサ31が測距センサである場合には、環境地図と、推定された自己位置を基準とした測距結果によって示される検出点とのマッチングの程度を示す入力情報が学習器に入力されることによって、信頼度が出力されてもよい。
選択部22は、第1及び第2の自己位置推定装置21a,21bにおいて取得された信頼度のうち、高い方の信頼度に対応する自己位置推定装置21によって推定された自己位置である、移動体1の移動制御に用いられる自己位置を選択する。以下、第1の推定部32aによって推定された自己位置を第1の自己位置と呼び、第1の信頼度取得部33aによって取得された信頼度を第1の信頼度と呼び、第2の推定部32bによって推定された自己位置を第2の自己位置と呼び、第2の信頼度取得部33bによって取得された信頼度を第2の信頼度と呼ぶこともある。そうすると、選択部22は、第1の信頼度の方が第2の信頼度よりも高い場合には、第1の自己位置を選択し、第2の信頼度の方が第1の信頼度よりも高い場合には、第2の自己位置を選択することになる。なお、第1及び第2の信頼度が同じ値である場合には、選択部22は、ランダムに一方の自己位置を選択してもよく、または、前回の選択と同じ側の自己位置を選択してもよい。また、第1及び第2の信頼度取得部33a,33bによって取得される信頼度、すなわち第1及び第2の信頼度は、両者を適切に比較することができるように規格化されていることが好適である。具体的には、第1及び第2の信頼度が同程度の値であれば、第1及び第2の自己位置が同程度の信頼性となるようにそれぞれが規格化されていることが好適である。
なお、信頼度に応じて選択対象が切り替わった場合(例えば、選択対象が第1の自己位置から第2の自己位置に切り替わった場合など)には、移動制御に用いられる自己位置が突然に大きく変化することも考えられる。したがって、信頼度に応じて選択対象が切り替わった場合であって、選択対象が切り替わる前の自己位置と選択対象が切り替わった後の自己位置とに、あらかじめ決められた閾値以上の差が存在する場合には、切り替わる直前の自己位置から、新たに選択対象となった自己位置までを滑らかに繋ぐようにしてもよい。具体的には、選択部22は、両自己位置を滑らかに繋ぐための中間の自己位置を生成して、移動制御部13に渡してもよい。
次に、移動体1の自己位置選択装置2以外の構成について説明する。
移動機構11は、移動体1を移動させる。移動機構11は、例えば、移動体1を全方向に移動できるものであってもよく、または、そうでなくてもよい。全方向に移動できるとは、任意の方向に移動できることである。移動機構11は、例えば、走行部(例えば、車輪や無限軌道など)と、その走行部を駆動する駆動手段(例えば、モータやエンジンなど)とを有していてもよく、飛行体を飛行させる飛行部を有していてもよく、水上航行体や水中航行体を航行させる航行部を有していてもよい。飛行部は、例えば、回転翼と、その回転翼を駆動する駆動手段とを有していてもよい。また、航行部は、例えば、スクリューと、そのスクリューを駆動する駆動手段とを有していてもよい。また、移動機構11には、例えば、車輪等の回転量を取得できる機構、例えば、ロータリーエンコーダ等の角位置センサが装着されていてもよい。なお、移動機構11が、移動体1を全方向に移動できるものである場合には、その走行部は、全方向移動車輪(例えば、オムニホイール、メカナムホイールなど)であってもよい。この移動機構11としては、公知のものを用いることができるため、その詳細な説明を省略する。
移動制御部12は、選択部22によって選択された自己位置を用いて移動機構11を制御することによって、移動体1の移動を制御する。移動の制御は、移動体1の移動の向きや、移動の開始・停止などの制御であってもよい。例えば、移動経路が設定されている場合には、移動制御部12は、移動体1がその移動経路に沿って移動するように、移動機構11を制御してもよい。より具体的には、移動制御部12は、選択された自己位置が、その移動経路に沿ったものになるように、移動機構11を制御してもよい。また、移動制御部12は、地図を用いて、移動の制御を行ってもよい。移動制御部12による移動機構11の制御は公知であるため、その詳細な説明を省略する。
次に、自己位置選択装置2の動作について図2のフローチャートを用いて説明する。
(ステップS101)選択部22は、自己位置の選択を行うかどうか判断する。そして、自己位置の選択を行う場合には、ステップS102に進み、そうでない場合には、自己位置の選択を行うと判断するまで、ステップS101の処理を繰り返す。なお、選択部22は、例えば、自己位置を選択すると定期的に判断してもよい。
(ステップS102)第1及び第2の位置推定用センサ31a,31bは、それぞれ移動体1の位置の推定に用いられる情報を取得する。
(ステップS103)第1及び第2の推定部32a,32bは、それぞれ第1及び第2の位置推定用センサ31a,31bによって取得された情報を用いて、移動体1の自己位置を推定する。
(ステップS104)第1及び第2の信頼度取得部33a,33bは、それぞれ入力情報を学習器に適用することによって、信頼度を取得する。
(ステップS105)選択部22は、第1及び第2の信頼度取得部33a,33bによって取得された第1及び第2の信頼度のうち、高い方の信頼度に対応する自己位置を選択する。その選択された自己位置が、移動体1の移動制御に用いられることになる。そして、ステップS101に戻る。
なお、図2のフローチャートでは、自己位置を選択する処理のみを示しているが、移動体1においては、その選択された自己位置を用いた移動の制御が移動制御部12によって行われ、その制御に応じた移動の処理が移動機構11によって行われてもよい。また、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
以上のように、本実施の形態による自己位置推定装置21によれば、学習器を用いて信頼度を取得することによって、自己位置の信頼度をより高い精度で取得することができるようになる。例えば、上記特許文献1に記載された技術のように、信頼度をあらかじめ決められた方法で取得した場合には、想定していない事象(例えば、絶対位置が観測された直後に車輪が滑ることによって、ロータリーエンコーダを用いた自己位置の信頼度が大きく下がることなど)への対応を行うことができないが、学習器を用いることによって、そのような事象にも対応することができるようになるため、信頼度の精度がより高くなる。すなわち、移動体の実際の移動環境における位置推定に基づいて生成された学習器を用いて信頼度を取得するため、その信頼度は、実際の移動環境に応じた高精度のものとなる。また、例えば、ロータリーエンコーダ等の角位置センサによって取得された情報を用いて自己位置の推定を行っている場合に、移動量が通常よりも多いときや、移動体1が滑りやすい領域を移動中であるときには、低い信頼度が取得されることによって、推定結果の信頼性が低いことを知ることができるようになる。また、例えば、測距センサによって取得された情報を用いて自己位置推定を行っている場合に、人などの環境地図に含まれない障害物が多い領域を移動中であるときには、低い信頼度が取得されることによって、推定結果の信頼性が低いことを知ることができるようになる。また、本実施の形態による自己位置選択装置2によれば、第1及び第2の自己位置推定装置21a,21bによって推定された第1及び第2の自己位置のうち、信頼性の高い方の自己位置を選択することができ、より精度の高い自己位置を選択することができるようになる。また、本実施の形態による移動体1によれば、そのようにして選択された自己位置を用いて移動制御を行うことができるため、より精度の高い移動制御を実現することができる。
なお、本実施の形態では、第1及び第2の自己位置推定装置21a,21bが、異なるように自己位置の推定を行うようにするため、第1及び第2の位置推定用センサ31a,31bが、それぞれ異なる情報を取得するセンサである場合について主に説明したが、そうでなくてもよい。例えば、第1及び第2の位置推定用センサ31a,31bによって、同じ情報が取得されてもよい。その場合には、第1及び第2の推定部32a,32bによる自己位置の推定方法が異なっていてもよい。例えば、パーティクルフィルタ、カルマンフィルタ等の状態空間モデルや、ネルダーミード法などを用いて位置の推定が行われる場合に、第1及び第2の推定部32a,32bは、異なるモデルや手法によって、位置の推定を行ってもよい。具体的には、測距センサによって取得された情報を用いて位置推定を行う場合に、第1の推定部32aは、パーティクルフィルタを用いて位置の推定を行い、第2の推定部32bは、カルマンフィルタを用いて位置の推定を行ってもよい。また、第1及び第2の推定部32a,32bが同じモデルや同じ手法によって自己位置の推定を行う場合には、第1及び第2の推定部32a,32bは、異なる設定(パラメータ)のモデルや手法によって位置の推定を行ってもよい。例えば、第1及び第2の推定部32a,32bがパーティクルフィルタを用いる場合には、パーティクルの個数がそれぞれ異なっていてもよい。また、例えば、第1及び第2の推定部32a,32bがネルダーミード法を用いる場合には、シンプレックスの頂点の個数がそれぞれ異なっていてもよく、シンプレックスの頂点の初期位置がそれぞれ異なっていてもよい。なお、第1及び第2の位置推定用センサ31a,31bによって同じ情報が取得される場合には、自己位置選択装置2は、1個の位置推定用センサのみを有していてもよい。その場合には、第1及び第2の推定部32a,32bは、1個の位置推定用センサによって取得された情報を用いて、移動体1の自己位置を推定してもよい。
また、自己位置選択装置2によって選択された自己位置が、他の装置等においても用いられる場合には、自己位置選択装置2は、選択部22によって選択された自己位置を出力する出力部を有していてもよい。その出力は、例えば、所定の機器への通信回線を介した送信でもよく、記録媒体への蓄積でもよい。なお、出力部は、出力を行うデバイス(例えば、通信デバイスなど)を含んでもよく、または含まなくてもよい。また、出力部は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
また、自己位置推定装置21によって推定された自己位置が、他の装置等においても用いられる場合には、自己位置推定装置21は、推定部32によって推定された自己位置と、信頼度取得部33によって取得された信頼度とを出力する出力部を有していてもよい。その出力は、例えば、所定の機器への通信回線を介した送信でもよく、記録媒体への蓄積でもよい。なお、出力部は、出力を行うデバイス(例えば、通信デバイスなど)を含んでもよく、または含まなくてもよい。また、出力部は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
また、本実施の形態では、移動体1が2個の自己位置推定装置21a、21bを有する場合について説明したが、そうでなくてもよい。移動体は、1個の自己位置推定装置21のみを有しており、その自己位置推定装置21によって推定された自己位置を用いて移動制御を行ってもよい。その場合には、信頼度は、自己位置の選択以外の用途に用いられてもよい。例えば、移動体が、所定の作業を行うためのマニピュレータ等の構成要素を有している場合には、信頼度に応じて、作業に関する安全率を変更してもよい。この場合には、信頼度が高いほど、安全率が低くされてもよい。例えば、所定の作業を行う構成要素がマニピュレータである場合に、信頼度が高いほど、障害物を検知した際にマニピュレータを停止させる範囲をより小さく設定し、信頼度が低いほど、その範囲をより大きく設定してもよい。
また、本実施の形態において、推定部32は、自己位置を推定できる情報を複数用いて、自己位置の推定を行ってもよい。例えば、推定部32は、測距センサによって取得された測距結果と、角位置センサによって取得された駆動軸の回転量や角度とを用いて、自己位置を推定してもよい。この場合には、例えば、パーティクルフィルタ等の状態空間モデルが用いられてもよい。また、この場合には、位置推定用センサ31は、例えば、2種類以上のセンサ、例えば、測距センサと角位置センサを含んでいてもよい。また、この場合には、訓練用入力情報や入力情報は、各センサに対応した情報、例えば、測距センサに対応した情報と、角位置センサに対応した情報とを含んでいてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、移動体1や自己位置選択装置2、自己位置推定装置21に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。