説明

位置姿勢出力装置、位置姿勢出力プログラム及び位置姿勢出力方法

【課題】移動体の正確な位置および姿勢を時間遅れなく出力する。
【解決手段】位置姿勢出力装置10は、移動体のオドメトリを計算する計算部3から、オドメトリを第1の間隔で取得する。オドメトリ及びオドメトリ以外の情報を用いて移動体の位置及び姿勢を推定する推定部5から、移動体の位置及び姿勢の推定結果を第1の間隔より長い第2の時間間隔で取得する。移動体の位置及び姿勢の推定結果が取得された場合に、更新後の移動体の位置及び姿勢の値が、オドメトリの差分に基づく位置及び姿勢と、移動体の位置及び姿勢の推定結果との間に遷移するように、記憶部13に記憶された移動体の位置及び姿勢を更新する。オドメトリが第1の間隔で取得される度に、当該オドメトリと今回の推定に用いられたオドメトリとの差分を記憶部13に記憶された移動体の位置及び姿勢に足し合わせた上で出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、位置姿勢出力装置、位置姿勢出力プログラム及び位置姿勢出力方法に関する。
【背景技術】
【0002】
移動体の位置および姿勢を計算する技術が知られている。例えば、オドメトリを計算する方法が挙げられる。かかる「オドメトリ」は、車輪の回転角度から位置および姿勢の変化量を計算した上でそれまでに求められていた位置および姿勢に累積して足し合わせることによって算出される。このように、オドメトリを計算する場合には、車輪が想定外の挙動を取ることによって生じる誤差や車輪等に設定されるパラメータの誤差も累積加算されるとともに、オドメトリの計算誤差も蓄積する。このため、移動体の移動量が大きくなるにしたがってオドメトリと実際の位置および姿勢との誤差も大きくなる。
【0003】
このことから、オドメトリと他の情報とを併用して移動体の位置および姿勢を計算する技術も提案されている。一例としては、オドメトリセンサと撮像センサとを併用する位置推定装置が挙げられる。この位置推定装置では、オドメトリセンサを用いて予測された移動体の位置及び/又は姿勢をもとに撮像センサを用いて撮像された画像から目印やランドマークなどの特徴点を追跡できるか否かによって予測の正誤を判断する。このとき、位置推定装置は、位置及び/又は姿勢の予測が正しくないと判断した場合に、位置及び/又は姿勢の予測を修正する。また、位置推定装置は、位置及び/又は姿勢の予測が正しいと判断した場合に、移動体の位置及び/又は姿勢を更新する。
【0004】
他の一例としては、ジャイロを用いることなく車両の3次元の位置・姿勢を標定する標定装置が挙げられる。この標定装置では、慣性センサとオドメトリとにより計測された角速度と速度とに基づいて車両の自己姿勢角と自己位置とを計測する。そして、標定装置は、先に計測された車両の自己姿勢角および自己位置を用いて予測された白線の消失点予測値と、画像センサによって撮像された画像に映っている白線の消失点実測値との差分である消失点残差に基づいて姿勢誤差推定量を算出する。その上で、標定装置は、姿勢誤差推定量を用いて自己姿勢角を補正する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−303886号公報
【特許文献2】特開2009−204385号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記の従来技術では、以下に説明するように、移動体の正確な位置および姿勢を時間遅れなく出力することができないという問題がある。
【0007】
すなわち、上記の位置推定装置および標定装置では、オドメトリとともに画像等の他の情報を用いて移動体の位置および姿勢を推定するので、画像処理を実行するためにオドメトリの計算に比べて長い処理時間が必要となる。このため、上記の位置推定装置および標定装置では、移動体の位置および姿勢を推定し始めてからその推定結果が出力されるまでのタイムラグが大きくなる。よって、上記の位置推定装置および標定装置では、推定結果に対応する位置および姿勢が移動体によって実際に取られていた時点から遅れて位置および姿勢の推定結果が出力されてしまう。
【0008】
また、上記の位置推定装置および標定装置では、画像等の他の情報を用いて移動体の位置および姿勢を推定する場合に、移動体の位置および姿勢の推定精度にばらつきが生じてしまう。なぜなら、上記の位置推定装置では、画像から目印やランドマークなどの特徴点を追跡し、また、上記の標定装置では、画像から白線の消失点を検出するが、画像には実際の特徴点や実際の白線の消失点と混同されやすいノイズが含まれる場合があるからである。かかる「ノイズ」が画像に含まれる場合には、ノイズを特徴点や白線の消失点と誤認し、移動体の位置および姿勢の推定結果に誤りが生じてしまう。
【0009】
開示の技術は、上記に鑑みてなされたものであって、移動体の正確な位置および姿勢を時間遅れなく出力できる位置姿勢出力装置、位置姿勢出力プログラム及び位置姿勢出力方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本願の開示する位置姿勢出力装置は、移動体の位置および姿勢を記憶する記憶部を有する。前記位置姿勢出力装置は、前記移動体のオドメトリを計算する計算部から、前記オドメトリを第1の間隔で取得する第1の取得部を有する。前記位置姿勢出力装置は、前記オドメトリおよび前記オドメトリ以外の情報を用いて前記移動体の位置および姿勢を推定する推定部から、前記移動体の位置および姿勢の推定結果を前記第1の間隔よりも長い第2の時間間隔で取得する第2の取得部を有する。さらに、前記位置姿勢出力装置は、前記第2の取得部によって前記推定結果が取得された場合に、前記記憶部に記憶された移動体の位置および姿勢を更新する更新部を有する。前記更新部は、更新後の移動体の位置および姿勢の値が、オドメトリの差分に基づく位置および姿勢と、前記推定部による移動体の位置および姿勢の推定結果との間に遷移するように、前記記憶部に記憶された移動体の位置および姿勢を更新する。前記オドメトリの差分に基づく位置および姿勢は、前記記憶部に記憶された移動体の位置および姿勢に前記推定部によって今回の推定に用いられたオドメトリおよび今回以前の推定に用いられたオドメトリの差分を加算することにより得られる。前記位置姿勢出力装置は、前記オドメトリが前記第1の間隔で取得される度に、当該オドメトリと前記推定部によって今回の推定に用いられたオドメトリとの差分を前記記憶部に記憶された移動体の位置および姿勢に足し合わせた上で出力する出力部を有する。
【発明の効果】
【0011】
本願の開示する位置姿勢出力装置の一つの態様によれば、移動体の正確な位置および姿勢を時間遅れなく出力できるという効果を奏する。
【図面の簡単な説明】
【0012】
【図1】図1は、実施例1に係るロボットの機能的構成を示すブロック図である。
【図2】図2は、実施例1に係る位置姿勢出力装置の機能的構成を示すブロック図である。
【図3】図3は、オドメトリおよび位置・姿勢の推定結果が入力される周期の一例を示す図である。
【図4】図4は、内部状態量の更新方法の一例を示す図である。
【図5】図5は、フィルタリング結果の算出方法を示す図である。
【図6】図6は、実施例1に係る出力処理の手順を示すフローチャートである。
【図7】図7は、実施例1に係る算出処理の手順を示すフローチャートである。
【図8】図8は、位置・姿勢の推定結果とフィルタリング結果に関する実験結果の一例を示す図である。
【図9】図9は、位置・姿勢の推定結果とフィルタリング結果に関する実験結果の一例を示す図である。
【図10】図10は、位置・姿勢の推定結果、内部状態量およびフィルタリング結果のX座標値の一例を示す図である。
【図11】図11は、内部状態量の更新方法の応用例を示す図である。
【図12】図12は、オドメトリおよび位置・姿勢の推定結果が入力される周期の一例を示す図である。
【図13】図13は、オドメトリおよび位置・姿勢の推定結果が入力される周期の一例を示す図である。
【図14】図14は、応用例に係る出力処理の手順を示すフローチャートである。
【図15】図15は、実施例1及び実施例2に係る位置姿勢出力プログラムを実行するコンピュータの一例について説明するための図である。
【発明を実施するための形態】
【0013】
以下に、本願の開示する位置姿勢出力装置、位置姿勢出力プログラム及び位置姿勢出力方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例1】
【0014】
[ロボットの構成]
まず、本実施例に係る位置姿勢出力装置を含むロボットの機能的構成について説明する。図1は、実施例1に係るロボットの機能的構成を示すブロック図である。図1に示すロボット1は、オフィス、廊下やショッピングモール等の空間において所定の目標の位置、例えば予め定められた位置や外部から指示入力された位置に向かって自律走行する装置である。
【0015】
図1に示すように、ロボット1は、計算部3と、センサ5aと、推定部5と、経路計画部7と、移動制御部9と、位置姿勢出力装置10とを有する。なお、ロボット1は、図1に示した機能部以外にも既知のロボットが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの他、車軸や車輪、これらを駆動する駆動部などの機能を有するものとする。
【0016】
計算部3は、ロボット1のオドメトリを計算する処理部である。一態様としては、計算部3は、ロボット1の車輪の回転角度から位置および姿勢の変化量を計算した上でそれまでに求めていた位置および姿勢に累積して足し合わせることによってオドメトリを計算する。このように、計算部3によって計算されたオドメトリは、後述の位置姿勢出力装置10へ出力される。
【0017】
推定部5は、撮像センサやLRF(Laser Range Finder)などのセンサ5aによって採取されるセンサ情報を用いて、ロボット1の位置および姿勢を推定する処理部である。一態様としては、推定部5は、センサ5aによって出力されたセンサ情報を予め作成された地図情報との間でマップマッチングすることにより、ロボット1の位置および姿勢を推定する。かかる位置および姿勢の推定には、上述したマップマッチングの他にも公知の任意の手法を採用することができる。このように、推定部5によって推定された位置および姿勢の推定結果は、後述の位置姿勢出力装置10へ出力される。なお、以下では、位置および姿勢のことを「位置・姿勢」と記載する場合がある。
【0018】
経路計画部7は、ロボット1が移動する経路を計画する処理部である。一態様としては、経路計画部7は、ロボット1が目標の位置に到達または通過できるように、後述の位置姿勢出力装置10によって出力されたロボット1の位置・姿勢から、ロボット1を移動させる速度や角速度などの移動制御用のパラメータを決定する。このように、経路計画部7によって決定された移動制御用のパラメータは、後述の移動制御部9へ出力される。
【0019】
移動制御部9は、ロボット1の移動を制御する処理部である。一態様としては、移動制御部9は、経路計画部7によって出力された移動制御用のパラメータにしたがってロボット1の車輪を駆動させたり、車輪の回転に制動を掛けたり、あるいはロボット1本体の向きを回転させたりする。
【0020】
位置姿勢出力装置10は、計算部3および推定部5によって互いに異なる周期で出力されるロボット1のオドメトリおよび位置・姿勢をフィルタリングした上で経路計画部7へ出力する装置である。一態様としては、位置姿勢出力装置10は、計算部3によって計算されたオドメトリおよび推定部5によって推定された位置・姿勢をもとに、内部状態量を更新しつつ、内部状態量を参照してロボット1の位置・姿勢を出力する。ここで言う「内部状態量」とは、位置姿勢出力装置10によって内部的に管理されるロボット1の状態量を指す。なお、以下では、位置姿勢出力装置10が出力する位置・姿勢のことを「フィルタリング結果」と記載する場合がある。
【0021】
[位置姿勢出力装置の構成]
続いて、本実施例に係る位置姿勢出力装置の機能的構成について説明する。図2は、実施例1に係る位置姿勢出力装置の機能的構成を示すブロック図である。図2に示すように、位置姿勢出力装置10は、第1の取得部11と、第2の取得部12と、記憶部13と、更新部14と、算出部15と、出力部16とを有する。
【0022】
このうち、第1の取得部11は、計算部3によって出力されるロボット1のオドメトリを取得する処理部である。また、第2の取得部12は、推定部5によって出力されるロボット1の位置・姿勢の推定結果を取得する処理部である。さらに、第2の取得部12は、ロボット1の位置・姿勢の推定結果とともに、その推定に用いられたオドメトリの値も併せて取得する。
【0023】
ここで、図3を用いて、オドメトリおよび位置・姿勢の推定結果が入力される周期の違いについて説明する。図3は、オドメトリおよび位置・姿勢の推定結果が入力される周期の一例を示す図である。図3に示す「t」は、時刻を指し、「t_new」は、計算部3によって最新のオドメトリが入力された時刻を指す。また、図3に示す「t’」は、推定部5によって位置・姿勢が推定された時刻を指し、図3に示す「t’-1」は、前回に推定部5によって位置・姿勢が推定された時刻を指す。なお、図3の例では、オドメトリおよび位置・姿勢の推定結果の両者がともに一定の間隔で入力される場合を想定する。
【0024】
図3に示すように、計算部3によって計算されたオドメトリが「50msec」の間隔で入力される一方で、推定部5によって推定された位置・姿勢の推定結果が「300msec」の間隔で入力される。このように、オドメトリが入力される周期が位置・姿勢の推定結果が入力される周期よりも短いのは、オドメトリが移動速度の時間積分という簡易な演算によって算出できるからである。また、位置・姿勢の推定結果が入力される周期がオドメトリが入力される周期よりも長いのは、画像やレーザー光の反射光などを解析する処理にオドメトリの計算に比べて長い処理時間を要するからである。なお、ここでは、オドメトリの入力周期が「50msec」であり、位置・姿勢の推定結果が「300msec」である場合を例示したが、これらの入力周期はあくまでも一例である。各々の入力周期は、任意の値であってかまわないが、オドメトリの入力周期は位置・姿勢の推定結果の入力周期よりも短いことが好ましい。
【0025】
記憶部13は、ロボット1の内部状態量を記憶するものである。かかる内部状態量の一態様としては、浮動小数点型のx座標位置(m)、y座標位置(m)および姿勢θ(rad)が対応付けられたデータが採用される。一例としては、第2の取得部12によって位置・姿勢の推定結果が取得される度に、後述の更新部14によって内部状態量が更新される。他の一例としては、第1の取得部11によってオドメトリが取得される度に、後述の出力部16によって内部状態量が参照される。なお、内部状態量の初期状態には、ローカル座標系の原点として位置・姿勢(x,y,θ)=(0,0,0)を設定することもできるし、グローバル座標系におけるロボット1の所在位置およびその姿勢を設定することもできる。
【0026】
この記憶部13には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子の一例としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置の一例としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【0027】
更新部14は、内部状態量を更新する処理部である。一態様としては、更新部14は、第2の取得部12によって位置・姿勢の推定結果が取得された場合に、処理を起動する。このとき、更新部14は、更新後の内部状態量が、更新前の内部状態量に今回の推定に用いられたオドメトリおよび前回の推定に用いられたオドメトリの差分が加算された値と、今回の位置・姿勢の推定結果との間に遷移するように、内部状態量を更新する。
【0028】
ここで、図4を用いて、内部状態量の更新方法について説明する。図4は、内部状態量の更新方法の一例を示す図である。図4に示す「E(t)」は、位置・姿勢の推定結果を指し、例えば、「E(t’)」と表記された場合には今回推定された位置・姿勢の推定結果を表し、「E(t’-1)」と表記された場合には前回推定された位置・姿勢の推定結果を表す。また、図4に示す「z(t)」は、内部状態量を指し、例えば、「z(t’)」と表記された場合には更新後の内部状態量を表し、「z(t’-1)」と表記された場合には更新前の内部状態量を表す。また、図4に示す「E_odo(t)」は、位置・姿勢の推定に用いられたオドメトリを指し、例えば、「E_odo(t’)」と表記された場合には今回の推定に用いられたオドメトリを表し、「E_odo(t’-1)」と表記された場合には前回の推定に用いられたオドメトリを表す。
【0029】
図4に示すように、更新部14は、推定部5によって推定された位置・姿勢の推定結果「E(t’)」をそのまま内部状態量「z(t’)」と同定する更新を必ずしも実行しない。その理由の一因としては、推定部5による位置・姿勢の推定結果にはセンサ5aによって採取されたセンサ情報に含まれるノイズが原因となって推定精度にばらつきが生じるからである。それゆえ、更新部14は、位置・姿勢の推定結果「E(t’)」だけに依存せずに内部状態量z(t)を更新するために、今回の推定に用いられたオドメトリと前回の推定に用いられたオドメトリとの差分「E_odo(t’)-E_odo(t’-1)」を使用する。なぜなら、オドメトリの値は、ロボット1の移動量が大きくなるに伴って実際の位置・姿勢との間で誤差も大きくなるが、オドメトリの差分は位置・姿勢の推定結果が出力される周期という局所的な範囲で見れば誤差は小さく、実値と近い値と推定できるからである。
【0030】
このため、更新部14は、更新前の内部状態量z(t’-1)に上記のオドメトリの差分「E_odo(t’)-E_odo(t’-1)」を加算することによってオドメトリの差分に基づく内部状態量、すなわち図中の白丸の位置・姿勢を算出する。そして、更新部14は、今回の位置・姿勢の推定結果E(t’)から上記のオドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」を減算した上でその減算値「D」に後述の定数ω(0<ω≦1)を乗算する。これによって、オドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」から今回の位置・姿勢の推定結果「E(t’)」へ、更新後の内部状態量z(t’)をどれだけシフトさせるかを表すシフト値dsを導出する。その上で、更新部14は、オドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」にシフト値dsを足し合わせることによって、更新後の内部状態量z(t’)を算出する。なお、上記の定数ωは、ωの値が「1」に近づくほど、内部状態量z(t')は位置・姿勢の推定結果に近づく。また、ωの値が「0」に近づくほど、内部状態量z(t')は更新前の内部状態量z(t'-1)にオドメトリの差分を加えた値に近づく。
【0031】
より詳細には、更新部14は、推定部5によって位置・姿勢の推定結果「E(t’)」が出力さると、下記の式(1)に次の値を代入することによってシフト値dsを算出する。すなわち、更新部14は、更新前の内部状態量z(t’-1)、今回の位置・姿勢の推定結果「E(t’)」、今回の推定に用いられたオドメトリ「E_odo(t’)」および前回の推定に用いられたオドメトリ「E_odo(t’-1)」を下記の式(1)に代入する。その上で、更新部14は、式(1)を用いて算出したシフト値dsを下記の式(2)に代入することによって更新後の内部状態量z(t’)を算出した上でその更新後の内部状態量z(t’)を記憶部13に上書きして更新する。
【0032】
【数1】

【数2】

【0033】
このように、オドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」から今回の位置・姿勢の推定結果「E(t’)」へシフト値dsの分、シフトさせる内部状態量z(t)の更新を実行する。これによって、位置・姿勢の推定結果がばらつくという弱点をオドメトリの差分によって補完することができる結果、内部状態量z(t)を実際の位置・姿勢と近い値に保つことができる。さらに、内部状態量z(t)を更新する方式としてKalman Filterを使用する方法も考えられるが、上記の更新方法では、Kalman Filterを使用する場合のように、入力の共分散行列を受け取る必要がなく、Kalman Filterを使用する場合よりも効率的に更新できる。
【0034】
算出部15は、シフト値dsに乗ずる定数ωを算出する処理部である。ここでは、一例として、ロボット1を予め計画された走行経路で自律走行された場合における位置・姿勢の出力結果のログを用いて定数ωを算出する場合を例示する。なお、上記のログとして、後述の出力部16によって出力されたロボット1のフィルタリング結果のログを用いることとしてもよいし、また、外部装置から供給されたロボット1または他のロボットの位置・姿勢のログを用いることとしてもかまわない。
【0035】
これを説明すると、まず、算出部15は、算出対象とする定数ωを「1」とし、後述の自乗和Sの1回前の計算結果S_preを「0」とするパラメータの初期化を実行する。その後、算出部15は、ロボット1の位置・姿勢の出力結果のログを取得する。そして、算出部15は、ログ取得したロボット1の位置の推移、すなわち位置の点列に含まれる位置と、予め計画された移動軌跡のうち最も近い位置との距離の自乗和Sを計算する。続いて、算出部15は、自乗和Sの1回前の計算結果S_preがゼロでなく、かつ今回計算した自乗和Sが1回前の計算結果S_preよりも大きいか否かを判定する。なお、自乗和Sの計算が始めて実行された場合には、パラメータの初期化によって1回前の計算結果S_preが「0」に設定されている。
【0036】
このとき、算出部15は、自乗和Sの1回前の計算結果S_preがゼロであるか、もしくは今回計算した自乗和Sが1回前の計算結果S_pre以下である場合には、次のように、定数ωおよび1回前の計算結果S_preを変更して自乗和Sの計算を繰り返す。すなわち、算出部15は、定数ωをω/2に変更するとともに1回前の計算結果S_preを今回計算したSに変更した上で、変更後の定数ωを用いて出力された位置・姿勢のログを改めて取得し、自乗和Sを再び計算する。その後、算出部15は、自乗和Sの1回前の計算結果S_preがゼロでなく、かつ今回計算した自乗和Sが1回前の計算結果S_preよりも大きい場合には、今回計算したωの2倍の2ωを定数ωとして決定する。
【0037】
このように定数ωを算出することによって、オドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」から今回の位置・姿勢の推定結果「E(t’)」へシフトさせる重みを適切に決定できる結果、内部状態量z(t)を正確に算出できる。
【0038】
なお、ここでは、ロボット1を実際に自律走行させた位置・姿勢のログを用いて定数ωを算出する場合を例示したが、ロボット1の管理者から定数ωとして経験的に得られる理想値を受け付け、その理想値を採用することとしてもよい。一例としては、今回の位置・姿勢の推定結果「E(t’)」よりもオドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」寄りへシフトさせる値、例えば「0.3」を定数ωとして採用するのが好ましい。
【0039】
出力部16は、記憶部13に記憶された内部状態量z(t)を用いて、フィルタリング結果を算出した上で経路計画部7へ出力する処理部である。一態様としては、出力部16は、最新のオドメトリと今回の推定に用いられたオドメトリとのオドメトリの差分を内部状態量に足し合わせることによってフィルタリング結果を算出する。
【0040】
図5は、フィルタリング結果の算出方法を示す図である。図5に示すように、出力部16は、第1の取得部11によってオドメトリが取得される度に、次のようにして、フィルタリング結果を算出する。すなわち、出力部16は、下記の式(3)のように、内部状態量z(t’)に最新のオドメトリodo(t_new)と今回の推定に用いられたオドメトリE_odo(t’)とのオドメトリの差分を足し合わせることによってフィルタリング結果f(t_new)を算出する。そして、出力部16は、フィルタリング結果f(t_new)を経路計画部7へ出力する。
【0041】
【数3】

【0042】
このように、上記のオドメトリの差分「odo(t_new)-E_odo(t’)」を用いてフィルタリング結果を算出することにより、位置・姿勢の推定結果が入力されずともロボット1の位置・姿勢を導出できる。このため、位置・姿勢の推定結果が入力されるのを待機せずに、位置・姿勢の推定結果が入力されるよりも短い周期、すなわちオドメトリが入力される周期でフィルタリング結果を出力できる。したがって、フィルタリング結果に対応する位置・姿勢がロボット1によって実際に取られていた時点からフィルタリング結果を出力するまでの遅れを低減できる結果、時間遅れを抑制できる。
【0043】
なお、第1の取得部11、第2の取得部12、更新部14、算出部15及び出力部16には、各種の集積回路や電子回路を採用できる。例えば、集積回路の一例としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路の一例としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
【0044】
[計算例]
次に、内部状態量の更新およびフィルタリング結果の算出に関する計算例を説明する。なお、E(t)、E_odo(t)、f(t)、odo(t)、z(t)、dsのデータ型は、それぞれ浮動小数点型のx座標位置(m)、y座標位置(m)、姿勢θ(rad)を含んで構成されるものとする。さらに、ここでは、内部状態量として初期の位置・姿勢(x,y,θ)として(0,0,0)が設定される場合を想定して以下の説明を行う。加えて、以下では、これらデータの要素を区別して説明する場合には、「E(t).x」、「E(t).y」「E(t).θ」のように記載する場合がある。
【0045】
また、本計算例では、一例として、オドメトリの座標系における姿勢が「θ=π」であり、位置・姿勢の推定に用いられる座標系における姿勢が「θ=0」である場合を想定する。以下では、オドメトリの座標系のことを「オドメトリ座標系」と記載し、位置・姿勢の推定に用いられる座標系のことを「位置姿勢推定座標系」と記載する場合がある。なお、内部状態量は、位置・姿勢推定座標系と同様の座標系が採用されているものとする。
【0046】
このとき、内部状態量z(t’-1)の位置・姿勢(x,y,θ)が(5.0,5.0,1.57)であり、前回の推定に用いられたオドメトリE_odo(t’-1)が(1.0,1.0,3.12)であったものとする。さらに、時刻t'において今回の位置・姿勢の推定結果E(t’)が(6.0,6.0,1.44)であり、今回の推定に用いられたオドメトリE_odo(t’)が(2.0,2.0,3.0)であったものとする。
【0047】
このような前提の下、更新部14は、上記の式(1)にしたがってシフト値dsの(x,y,θ)を算出する。まず、更新部14は、位置・姿勢の推定計算に用いられたオドメトリの差分E_odo(t’)-E_odo(t’-1)を(1.0,1.0,-0.12)と算出する。
【0048】
さらに、更新部14は、z(t’-1)+E_odo(t’)-E_odo(t’-1)を算出するが、前述のように、オドメトリ座標系における姿勢と位置・姿勢推定座標系における姿勢は異なるので、オドメトリ座標系から位置・姿勢推定座標系へと座標変換する。座標変換式を以下に記す。
θ(t’)=E(t’).θ-E_odo(t’).θ
dx=(E_odo(t’).x-E_odo(t’-1).x)・cosθ(t’)-(E_odo(t’).y-E_odo(t’-1).y)・sinθ(t’)
dy=(E_odo(t’).x-E_odo(t’-1).x)・sinθ(t’)+(E_odo(t’).y-E_odo(t’-1).y)・cosθ(t’)
【0049】
上記の座標変換式をE_odo(t’)-E_odo(t’-1)に適用することにより、更新部14は、z(t’-1)+E_odo(t’)-E_odo(t’-1)を計算する。
すなわち、
z(t’-1).x+dx=5.0+1.0・cos(-1.56)-1.0・sin(-1.56)=5.0+0.01+1.00=6.01
z(t’-1).y+dy=5.0+1.0・sin(-1.56)+1.0・cos(-1.56)=5.0-1.00+0.01=4.01
z(t’-1).θ+E_odo(t’).θ-E_odo(t’-1).θ=1.45
となる。
【0050】
したがって、更新部14は、E(t’)-(z(t’-1)+E_odo(t’)-E_odo(t’-1))により計算される(x,y,θ)を(-0.01,1.99,-0.01)と算出する。
【0051】
ここで定数ωの値が「0.3」であったとすると、更新部14は、上記の式(1)により、シフト値dsを(-0.003,0.66,-0.003)と算出する。
【0052】
さらに、更新部14は、上記の式(2)にしたがって内部状態量z(t’)を計算する。
すなわち、
z(t’).x=6.01-0.003=6.007
z(t’).y=4.01+0.66=4.67
z(t’).θ=1.45-0.003=1.497
と算出する。
【0053】
その後、出力部16は、時刻t_newにおいて最新のオドメトリが入力された場合に、上記の式(3)を用いてフィルタリング結果を計算する。この場合も、出力部16は、内部状態量z(t’)とオドメトリの差分odo(t_new)-E_odo(t’)の座標系は異なるので、座標変換を実行する。
【0054】
すなわち、出力部16は、上記の同様に、
θ(t’)=E(t’).θ(t’)-E_odo(t’).θ(t’)
dx=(odo(t_new).x-E_odo(t’).x)・cosθ(t’)-(odo(t_new).y-E_odo(t’).y)・sinθ(t’)
dy=(odo(t_new).x-E_odo(t’).x)・sinθ(t’)+(odo(t_new).y-E_odo(t’).y)・cosθ(t’)
の座標変換式を適用する。
【0055】
そして、出力部16は、最新のオドメトリodo(t_new)が(2.5,2.5,2.8)であるとしたとき、下記のように、フィルタリング結果を計算する。
f(t_new).x=6.007+0.5・cos(-1.56)-0.5・sin(-1.56)=6.507
f(t_new).y=4.67+0.5・cos(-1.56)+0.5・sin(-1.56)=4.17
f(t_new).θ=1.497-0.2=1.297
【0056】
[処理の流れ]
次に、本実施例に係る位置姿勢出力装置の処理の流れについて説明する。なお、ここでは、位置姿勢出力装置が実行する(1)出力処理を説明した後に、(2)算出処理を説明することとする。
【0057】
(1)出力処理
図6は、実施例1に係る出力処理の手順を示すフローチャートである。この出力処理は、ロボット1の電源が作動した場合に起動する処理であり、電源がOFF状態になるまで繰り返し実行される。
【0058】
図6に示すように、更新部14は、内部状態量の初期の位置・姿勢(x,y,θ)として(0,0,0)を設定する(ステップS101)。
【0059】
そして、位置・姿勢の推定結果が取得された場合(ステップS102肯定)には、更新部14は、次のような処理を実行する(ステップS103)。すなわち、更新部14は、更新前の内部状態量z(t’-1)、今回の位置・姿勢の推定結果「E(t’)」、今回の推定に用いられたオドメトリ「E_odo(t’)」および前回の推定に用いられたオドメトリ「E_odo(t’-1)」を上記の式(1)に代入してシフト値dsを算出する。なお、位置・姿勢の推定結果が取得されていない場合(ステップS102否定)には、下記のステップS105の処理に移行する。
【0060】
その後、更新部14は、式(1)を用いて算出したシフト値dsを下記の式(2)に代入することによって更新後の内部状態量z(t’)を算出した上でその更新後の内部状態量z(t’)を記憶部13に上書きして更新する(ステップS104)。
【0061】
そして、最新のオドメトリが取得されるのを待機し(ステップS105)、最新のオドメトリが取得されると、出力部16は、次のような処理を実行する(ステップS106)。すなわち、出力部16は、下記の式(3)のように、内部状態量z(t’)に最新のオドメトリodo(t_new)と今回の推定に用いられたオドメトリE_odo(t’)との差分を足し合わせることによってフィルタリング結果f(t_new)を算出して経路計画部7へ出力する。
【0062】
その後、上記のステップS102の処理に戻り、位置姿勢出力装置10は、ロボット1の電源がOFF状態になるまで、上記のステップS102〜ステップS106までの処理を繰り返し実行する。
【0063】
(2)算出処理
図7は、実施例1に係る算出処理の手順を示すフローチャートである。この算出処理は、ロボット1の管理者によって定数ωの算出が指示された場合等に処理が起動する。
【0064】
図7に示すように、算出部15は、算出対象とする定数ωを「1」とし、自乗和Sの1回前の計算結果S_preを「0」とするパラメータの初期化を実行する(ステップS301)。その後、算出部15は、ロボット1の位置・姿勢の出力結果のログを取得する(ステップS302)。
【0065】
そして、算出部15は、ログ取得したロボット1の位置の推移、すなわち位置の点列に含まれる位置と、予め計画された移動軌跡のうち最も近い位置との距離の自乗和Sを計算する(ステップS303)。
【0066】
続いて、算出部15は、自乗和Sの1回前の計算結果S_preがゼロでなく、かつ今回計算した自乗和Sが1回前の計算結果S_preよりも大きいか否かを判定する(ステップS304)。なお、自乗和Sの計算が始めて実行された場合には、パラメータの初期化によって1回前の計算結果S_preが「0」に設定されている。
【0067】
このとき、自乗和Sの1回前の計算結果S_preがゼロであるか、もしくは今回計算した自乗和Sが1回前の計算結果S_pre以下である場合(ステップS304否定)には、次のような処理を実行する(ステップS305)。すなわち、算出部15は、定数ωをω/2に変更するとともに1回前の計算結果S_preを今回計算したSに変更する。その上で、算出部15は、変更後の定数ωを用いて出力された位置・姿勢のログを改めて取得し(ステップS302)、自乗和Sを再び計算する(ステップS303)。
【0068】
その後、自乗和Sの1回前の計算結果S_preがゼロでなく、かつ今回計算した自乗和Sが1回前の計算結果S_preよりも大きい場合(ステップS304肯定)には、算出部15は、次のような処理を実行する。すなわち、算出部15は、今回計算したωの2倍の2ωを定数ωとして決定し(ステップS306)、処理を終了する。
【0069】
[実施例1の効果]
上述してきたように、本実施例に係る位置姿勢出力装置10は、オドメトリの差分に基づく内部状態量「z(t’-1)+E_odo(t’)-E_odo(t’-1)」から今回の位置・姿勢の推定結果「E(t’)」へシフト値dsの分、シフトさせる内部状態量z(t)の更新を実行する。これによって、位置・姿勢の推定結果がばらつくという弱点をオドメトリの差分によって補完することができる結果、内部状態量z(t)を実際の位置・姿勢と近い値に保つことができる。また、本実施例に係る位置姿勢出力装置10は、オドメトリの差分「odo(t_new)-E_odo(t’)」を用いてフィルタリング結果を算出することにより、位置・姿勢の推定結果が入力されずともロボット1の位置・姿勢を導出できる。このため、位置・姿勢の推定結果が入力されるのを待機せずに、位置・姿勢の推定結果が入力されるよりも短い周期、すなわちオドメトリが入力される周期でフィルタリング結果を出力できる。したがって、本実施例に係る位置姿勢出力装置10によれば、ロボット1の正確な位置および姿勢を時間遅れなく出力することが可能になる。
【0070】
ここで、本実施例に係る位置姿勢出力装置10を用いた実験結果を引用して位置・姿勢の精度を検証する。図8及び図9は、位置・姿勢の推定結果とフィルタリング結果に関する実験結果の一例を示す図である。このうち、図8の例では、ロボット1をY軸と平行に直線移動させた場合の実験結果を示す。また、図9の例では、ロボット1をX軸と平行に直線移動させた場合の実験結果を示す。なお、図8及び図9のグラフでは、点線が推定部5による位置・姿勢の推定結果を示し、実線が出力部16によるフィルタリング結果を示す。
【0071】
図8及び図9に示すように、推定部5によって推定された位置・姿勢の推定結果の位置は、数十cmのオーダーでばらついている。その一方で、出力部16によって出力されたフィルタリング結果の位置のばらつきは十cm程度である。このため、推定部5によって推定された位置・姿勢の推定結果よりも出力部16によって出力されたフィルタリング結果の方がロボット1の実際の挙動に近いことがわかる。それゆえ、本実施例に係る位置姿勢出力装置10がロボット1の正確な位置および姿勢を出力できることが検証できたと言える。
【0072】
さらに、図10を用いて、時間遅れの低減について検証する。図10は、位置・姿勢の推定結果、内部状態量およびフィルタリング結果のX座標値の一例を示す図である。この図10の例では、ロボット1をX座標値が増加するように移動物体を移動させた場合を想定する。図10に示すブラフの横軸は、ロボット1が移動を開始してからの経過時間を示し、縦軸は、位置・姿勢の推定結果、内部状態量およびフィルタリング結果のX座標値を示す。なお、図10に示すグラフでは、点線が推定部5による位置・姿勢の推定結果を示し、実線が出力部16によるフィルタリング結果を示し、一点鎖線が内部状態量を示す。
【0073】
図10に示すように、位置・姿勢の推定結果のX座標値のばらつきに対し、内部状態量のばらつきは小さい。また、フィルタリング結果は、最新のオドメトリを反映した値となっているので、内部状態量のX座標値よりもX座標値が大きい。さらに、内部状態量が長い周期、本例では約300msで更新されているのに対し、フィルタリング結果は短い周期、本例では約50msで更新されている。このように、出力部16によって出力されたフィルタリング結果は、X座標値のばらつきが小さく、さらに、フィルタリング結果が出力された時点とロボット1がその位置に所在した時点とのライムラグも小さいことがわかる。それゆえ、本実施例に係る位置姿勢出力装置10がロボット1の位置および姿勢を時間遅れなく出力できることが検証できたと言える。
【実施例2】
【0074】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【0075】
[内部状態量の更新契機]
上記の実施例1では、第2の取得部12によって位置・姿勢の推定結果が取得される周期で内部状態量zを更新する場合を説明したが、開示の装置は先の例に限定されない。他の一例としては、第1の取得部11によってオドメトリが取得される周期で更新する内部状態量z’を新たに使用することもできる。これによって、フィルタリング結果が前回に得られたフィルタリング結果との間で極端に大きな変化をとる場合に、フィルタリング結果を時間的に滑らかに変化させることができる。なお、内部状態量z’のデータ型についても、内部状態量zと同様に、浮動小数点型のx座標位置(m)、y座標位置(m)、姿勢θ(rad)を含んで構成されるものとする。
【0076】
これを説明すると、開示の装置は、上記の実施例1と同様に、第2の取得部12によって位置・姿勢の推定結果が取得され場合に、内部状態量zを更新する。このとき、開示の装置は、上記の式(1)および式(2)の代わりに、下記の式(4)及び式(5)を用いて、シフト値ds(t)の値を更新するとともに、内部状態量z(t)を更新する。なお、下記の式に示す「N」は、位置・姿勢の推定結果の平均入力周期をオドメトリの平均入力周期で除算した値を指す。また、下記の式に示す「n」は、最新のオドメトリが入ってくるときに1つインクリメントさせるカウンタであり、ds(t)の値を更新した後で0にリセットされる。また、下記の式に示すds(t’)は、上記の実施例1におけるシフト値dsに対応する。
【0077】
【数4】

【数5】

【0078】
図11は、内部状態量の更新方法の応用例を示す図である。図11に示すように、オドメトリの入力周期と位置・姿勢の推定結果の入力周期が一定であると仮定した場合には、オドメトリが入力されるタイミングでds(t’)/Nずつ内部状態量z'を内部状態量zへ近づける方式を採用することができる。なぜなら、オドメトリが入力されるステップを1ステップとしたとき、Nステップ後には内部状態量z’が内部状態量zにds(t’)だけ近付くからである。
【0079】
ところが、オドメトリの入力周期と位置・姿勢の推定結果の入力周期が必ずしも一定であるとは限らない。この場合には、開示の装置は、位置・姿勢の推定結果が入力された時点からオドメトリの入力回数を数えるカウンタnを用意することで内部状態量z’の更新の過不足を補正する。
【0080】
これを説明すると、開示の装置は、位置・姿勢の推定結果が入力される間隔に比べ、オドメトリの入力回数が多いか否か、すなわちカウンタnの値がN以上であるか否かを判定する。図12及び図13は、オドメトリおよび位置・姿勢の推定結果が入力される周期の一例を示す図である。これら図12及び図13の例では、位置・姿勢の推定結果の平均入力周期を300ms、オドメトリの平均入力周期を50msと仮定し、Nを6としている。
【0081】
このとき、nの値がN以上である場合には、図12に示すように、位置・姿勢の推定結果が入力される間隔に比べ、オドメトリの入力回数が多いと推定できる。この場合には、開示の装置は、内部状態量z’がds(t’)だけ内部状態量zに近付いたとみなし、下記の式(6)用いて、内部状態量z’を更新する。この式(6)を適用した場合には、内部状態量z’の更新時に「ds(t’)/N」が足し合わせられないので、「ds(t’)/N」の項を足しすぎるのを防止できる。一方、nの値がN未満である場合には、図13に示すように、位置・姿勢の推定結果が入力される間隔に比べ、オドメトリの入力回数が少ないと推定できる。この場合には、開示の装置は、下記の式(7)を適用し、内部状態量z’を内部状態量zに近づける。なお、図13の例のように、位置・姿勢の推定結果の入力間隔に比べ、オドメトリの入力回数が小さい場合に対応するために、ds(t’)の値を計算する際には上記の式(4)の第二項ds(t’-1)/N・(N-n)を加える。
【0082】
【数6】

【数7】

【0083】
このように内部状態量zおよび内部状態量z'を更新しつつ、開示の装置は、最新のオドメトリが入力されると、下記の式(8)を用いて、フィルタリング結果を算出する。すなわち、開示の装置は、下記の式(8)を用いて、前回にフィルタリング結果として出力した内部状態量z'(t_new-1)に最新のオドメトリとその1つ前のオドメトリの差分「odo(t_new)-odo(t_new-1)」を足し合わせる。これによって、開示の装置は、最新のオドメトリの入力に対応して出力する今回のフィルタリング結果を算出する。
【0084】
【数8】

【0085】
図14は、応用例に係る出力処理の手順を示すフローチャートである。この出力処理は、上記の実施例1に示した出力処理と同様に、ロボット1の電源が作動した場合に起動する処理であり、電源がOFF状態になるまで繰り返し実行される。
【0086】
図14に示すように、開示の装置は、内部状態量zおよび内部状態量z’の初期の位置・姿勢(x,y,θ)として(0,0,0)を設定する(ステップS501)。続いて、開示の装置は、シフト値dsに初期値{0,0,0}を設定する(ステップS502)。
【0087】
そして、位置・姿勢の推定結果が取得された場合(ステップS503肯定)には、開示の装置は、上記の式(4)を用いて、シフト値dsを更新する(ステップS504)。さらに、開示の装置は、上記の式(5)を用いて、内部状態量zを更新し(ステップS505)、最新のオドメトリが取得されるのを待機する(ステップS506)。なお、シフト値dsおよび内部状態量zの更新後には、カウンタnが「0」に初期化される。
【0088】
一方、位置・姿勢の推定結果が取得されていない場合(ステップS503否定)には、ステップS504及びステップSステップS505の処理を実行せずに、下記のステップS506の処理に移行する。
【0089】
ここで、開示の装置は、カウンタnの値がN以上であるか否かを判定する(ステップS507)。このとき、nの値がN未満である場合(ステップS507否定)には、位置・姿勢の推定結果が入力される間隔に比べ、オドメトリの入力回数が少ないと推定できる。この場合には、開示の装置は、下記の式(7)を適用し、内部状態量z’を内部状態量zに近づけ(ステップS508)、カウンタnをインクリメントし(ステップS509)、上記のステップS503の処理に戻る。
【0090】
一方、nの値がN以上である場合(ステップS507肯定)には、位置・姿勢の推定結果が入力される間隔に比べ、オドメトリの入力回数が多いと推定できる。この場合には、開示の装置は、内部状態量z’がds(t’)だけ内部状態量zに近付いたとみなし、下記の式(6)用いて、内部状態量z’を更新し(ステップS510)、上記のステップS503の処理に戻る。
【0091】
このように、図14に示した出力処理を実行することによって、フィルタリング結果が前回に得られたフィルタリング結果との間で極端に大きな変化をとる場合に、フィルタリング結果を時間的に滑らかに変化させることができる。
【0092】
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、センサ5a、計算部3、推定部5、経路計画部7または移動制御部9をロボット1の外部装置としてネットワーク経由で接続するようにしてもよい。また、センサ5a、計算部3、推定部5、経路計画部7または移動制御部9を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記のロボット1の機能を実現するようにしてもよい。
【0093】
[位置姿勢出力プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図15を用いて、上記の実施例と同様の機能を有する位置姿勢出力プログラムを実行するコンピュータの一例について説明する。
【0094】
図15は、実施例1及び実施例2に係る位置姿勢出力プログラムを実行するコンピュータの一例について説明するための図である。図15に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180と有する。これら110〜180の各部はバス140を介して接続される。
【0095】
HDD170には、図15に示すように、上記の実施例1で示した第1の取得部11と、第2の取得部12と、更新部14と、算出部15と、出力部16と同様の機能を発揮する位置姿勢出力プログラム170aが予め記憶される。この位置姿勢出力プログラム170aについては、図2に示した各々の第1の取得部11、第2の取得部12、更新部14、算出部15及び出力部16の各構成要素と同様、適宜統合又は分離しても良い。すなわち、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に必要なデータのみがHDD170に格納されれば良い。
【0096】
そして、CPU150が、位置姿勢出力プログラム170aをHDD170から読み出してRAM180に展開する。これによって、図15に示すように、位置姿勢出力プログラム170aは、位置姿勢出力プロセス180aとして機能する。この位置姿勢出力プロセス180aは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、位置姿勢出力プロセス180aは、図2に示した第1の取得部11、第2の取得部12、更新部14、算出部15及び出力部16にて実行される処理、例えば図6、図7や図14に示す処理を含む。また、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【0097】
なお、上記の位置姿勢出力プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【0098】
1 ロボット
3 計算部
5 推定部
5a センサ
7 経路計画部
9 移動制御部
10 位置姿勢出力装置
11 第1の取得部
12 第2の取得部
13 記憶部
14 更新部
15 算出部
16 出力部

【特許請求の範囲】
【請求項1】
移動体の位置および姿勢を記憶する記憶部と、
前記移動体のオドメトリを計算する計算部から、前記オドメトリを第1の間隔で取得する第1の取得部と、
前記計算部によって計算されたオドメトリおよび前記オドメトリ以外の情報を用いて前記移動体の位置および姿勢を推定する推定部から、前記移動体の位置および姿勢の推定結果を前記第1の間隔よりも長い第2の時間間隔で取得する第2の取得部と、
前記第2の取得部によって前記推定結果が取得された場合に、更新後の移動体の位置および姿勢の値が、前記記憶部に記憶された移動体の位置および姿勢に前記推定部によって今回の推定に用いられたオドメトリおよび今回以前の推定に用いられたオドメトリの差分を加算することにより得られるオドメトリの差分に基づく位置および姿勢と、前記推定部による移動体の位置および姿勢の推定結果との間に遷移するように、前記記憶部に記憶された移動体の位置および姿勢を更新する更新部と、
前記第1の取得部によってオドメトリが前記第1の間隔で取得される度に、当該オドメトリと前記推定部によって今回の推定に用いられたオドメトリとの差分を前記記憶部に記憶された移動体の位置および姿勢に足し合わせた上で出力する出力部と
を有することを特徴とする位置姿勢出力装置。
【請求項2】
前記オドメトリの差分に基づく位置および姿勢から前記推定部による移動体の位置および姿勢の推定結果へ前記更新後の移動体の位置および姿勢を遷移させる度合いを定める定数を算出する算出部をさらに有し、
前記更新部は、
前記オドメトリの差分に基づく位置および姿勢と前記推定部による移動体の位置および姿勢の推定結果との差分に前記算出部によって算出された定数を乗算した乗算値を用いて、前記記憶部に記憶された移動体の位置および姿勢を更新することを特徴とする請求項1に記載の位置姿勢出力装置。
【請求項3】
前記記憶部は、
前記第2の取得部によって前記推定結果が取得された場合に更新される移動体の位置および姿勢とともに、前記第1の取得部によってオドメトリが取得された場合に更新される移動体の位置および姿勢をさらに記憶するものであって、
前記更新部は、
前記第1の取得部によってオドメトリが前記第1の間隔で取得される度に、前記第1の間隔と前記第2の間隔との比に基づいて、前記オドメトリの差分に基づく位置および姿勢と前記推定部による移動体の位置および姿勢の推定結果との差分を平滑化した上で、前記記憶部に記憶された移動体の位置および姿勢のうち前記第1の取得部によってオドメトリが取得された場合に更新される移動体の位置および姿勢に足し合わせる更新をさらに実行することを特徴とする請求項1または2に記載の位置姿勢出力装置。
【請求項4】
コンピュータに、
前記移動体のオドメトリを計算する計算部から、前記オドメトリを第1の間隔で取得し、
前記計算部によって計算されたオドメトリおよび前記オドメトリ以外の情報を用いて前記移動体の位置および姿勢を推定する推定部から、前記移動体の位置および姿勢の推定結果を前記第1の間隔よりも長い第2の時間間隔で取得し、
前記移動体の位置および姿勢の推定結果が取得された場合に、更新後の移動体の位置および姿勢の値が、移動体の位置および姿勢を記憶する記憶部に記憶された移動体の位置および姿勢に前記推定部によって今回の推定に用いられたオドメトリおよび今回以前の推定に用いられたオドメトリの差分を加算することにより得られるオドメトリの差分に基づく位置および姿勢と、前記推定部による移動体の位置および姿勢の推定結果との間に遷移するように、前記記憶部に記憶された移動体の位置および姿勢を更新し、
前記オドメトリが前記第1の間隔で取得される度に、当該オドメトリと前記推定部によって今回の推定に用いられたオドメトリとの差分を前記記憶部に記憶された移動体の位置および姿勢に足し合わせた上で出力する
各処理を実行させることを特徴とする位置姿勢出力プログラム。
【請求項5】
コンピュータが、
前記移動体のオドメトリを計算する計算部から、前記オドメトリを第1の間隔で取得し、
前記計算部によって計算されたオドメトリおよび前記オドメトリ以外の情報を用いて前記移動体の位置および姿勢を推定する推定部から、前記移動体の位置および姿勢の推定結果を前記第1の間隔よりも長い第2の時間間隔で取得し、
前記移動体の位置および姿勢の推定結果が取得された場合に、更新後の移動体の位置および姿勢の値が、移動体の位置および姿勢を記憶する記憶部に記憶された移動体の位置および姿勢に前記推定部によって今回の推定に用いられたオドメトリおよび今回以前の推定に用いられたオドメトリの差分を加算することにより得られるオドメトリの差分に基づく位置および姿勢と、前記推定部による移動体の位置および姿勢の推定結果との間に遷移するように、前記記憶部に記憶された移動体の位置および姿勢を更新し、
前記オドメトリが前記第1の間隔で取得される度に、当該オドメトリと前記推定部によって今回の推定に用いられたオドメトリとの差分を前記記憶部に記憶された移動体の位置および姿勢に足し合わせた上で出力する
各処理を実行することを特徴とする位置姿勢出力方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−255705(P2012−255705A)
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2011−128549(P2011−128549)
【出願日】平成23年6月8日(2011.6.8)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人新エネルギー・産業技術総合開発機構、「次世代ロボット知能化技術開発プロジェクト 移動知能(サービス産業分野)の開発 動的視覚認識に基づく移動知能モジュール群の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】