IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立産機システムの特許一覧

<>
  • 特許-位置検出システムおよび位置検出方法 図1
  • 特許-位置検出システムおよび位置検出方法 図2
  • 特許-位置検出システムおよび位置検出方法 図3
  • 特許-位置検出システムおよび位置検出方法 図4
  • 特許-位置検出システムおよび位置検出方法 図5
  • 特許-位置検出システムおよび位置検出方法 図6
  • 特許-位置検出システムおよび位置検出方法 図7
  • 特許-位置検出システムおよび位置検出方法 図8
  • 特許-位置検出システムおよび位置検出方法 図9A
  • 特許-位置検出システムおよび位置検出方法 図9B
  • 特許-位置検出システムおよび位置検出方法 図10
  • 特許-位置検出システムおよび位置検出方法 図11
  • 特許-位置検出システムおよび位置検出方法 図12
  • 特許-位置検出システムおよび位置検出方法 図13A
  • 特許-位置検出システムおよび位置検出方法 図13B
  • 特許-位置検出システムおよび位置検出方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-26
(45)【発行日】2024-10-04
(54)【発明の名称】位置検出システムおよび位置検出方法
(51)【国際特許分類】
   G05D 1/246 20240101AFI20240927BHJP
   G05D 1/242 20240101ALI20240927BHJP
   G05D 1/43 20240101ALI20240927BHJP
【FI】
G05D1/246
G05D1/242
G05D1/43
【請求項の数】 6
(21)【出願番号】P 2021148913
(22)【出願日】2021-09-13
(65)【公開番号】P2023041505
(43)【公開日】2023-03-24
【審査請求日】2023-10-26
(73)【特許権者】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】槙 修一
【審査官】尾形 元
(56)【参考文献】
【文献】特開2019-215773(JP,A)
【文献】特開2020-24618(JP,A)
【文献】特開2021-47671(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00- 1/87
(57)【特許請求の範囲】
【請求項1】
距離センサで計測した測定データと地図情報とを照合することによって自身の位置を推定しながら移動する移動体の位置を検出する位置検出システムであって、
所定のタイミングで繰り返し、計測された前記測定データと、前記移動体の座標系である相対座標系における原点位置を含む地図情報とを照合し、前記相対座標系での前記移動体の位置および姿勢を検出する相対位置姿勢検出処理部と、
前記所定のタイミングのそれぞれにおいて、検出された前記移動体の位置および姿勢を前記地図情報にあらわした部分地図を作成する部分地図作成部と、
前記所定のタイミングで繰り返し得られた前記移動体の位置および姿勢の差に基づいて、前記部分地図における前記移動体の相対的な移動量を算出する相対移動量算出部と、
前記部分地図での前記移動体の位置および姿勢を、座標に関する所定のパラメータを用いて、全体地図上での前記移動体の位置および姿勢に変換し、当該変換に用いた前記所定のパラメータの補正量を算出する広域位置姿勢検出部と、
前記補正量の分だけ、前記相対座標系における原点位置を、前記全体地図の座標系である全体座標系における原点位置に変換する部分地図原点算出部と、
変換された前記全体座標系における原点位置と、前記移動体の相対的な移動量とを用いて、前記相対座標系での位置および姿勢を全体座標系に変換する座標変換部と、
前記全体座標系に変換された前記相対座標系での位置および姿勢と、当該位置および姿勢を検出したときの前記測定データを、前記移動体の表示部に表示する表示装置制御部と、を有し、
前記相対移動量算出部が、前記全体座標系における前記移動体の相対的な移動量が所定の閾値D以上でないと判定した場合、前記広域位置姿勢検出部、前記部分地図原点算出部、前記座標変換部は処理を行わず、前記表示装置制御部が前記移動体の表示部に原点特定失敗を通知する、
ことを特徴とする位置検出システム。
【請求項2】
請求項1に記載の位置検出システムにおいて、
前記相対位置姿勢検出処理部および前記部分地図作成部は、それぞれ、SLAM処理により、前記相対座標系での前記移動体の位置および姿勢を検出し、前記部分地図を作成する、
ことを特徴とする位置検出システム。
【請求項3】
請求項1に記載の位置検出システムにおいて、
前記広域位置姿勢検出部は、前記相対座標系での位置および姿勢を、前記全体座標系での前記移動体の位置および姿勢に一意に変換できない場合、過去の所定のタイミングで得られた、前記相対座標系での前記移動体の位置および姿勢と、前記部分地図とを用いて、前記全体座標系での前記移動体の位置および姿勢を特定する、
ことを特徴とする位置姿勢検出システム。
【請求項4】
コンピュータが、距離センサで計測した測定データと地図情報とを照合することによって自身の位置を推定しながら移動する移動体の位置を検出する位置検出方法であって、
相対位置姿勢検出処理部が、所定のタイミングで繰り返し、計測された前記測定データと、前記移動体の座標系である相対座標系における原点位置を含む地図情報とを照合し、前記相対座標系での前記移動体の位置および姿勢を検出し、
部分地図作成部が、前記所定のタイミングのそれぞれにおいて、検出された前記移動体の位置および姿勢を前記地図情報にあらわした部分地図を作成し、
相対移動量算出部が、前記所定のタイミングで繰り返し得られた前記移動体の位置および姿勢の差に基づいて、前記部分地図における前記移動体の相対的な移動量を算出し、
広域位置姿勢検出部が、前記部分地図での前記移動体の位置および姿勢を、座標に関する所定のパラメータを用いて、全体地図上での前記移動体の位置および姿勢に変換し、当該変換に用いた前記所定のパラメータの補正量を算出し、
部分地図原点算出部が、前記補正量の分だけ、前記相対座標系における原点位置を、前記全体地図の座標系である全体座標系における原点位置に変換し、
座標変換部が、変換された前記全体座標系における原点位置と、前記移動体の相対的な移動量とを用いて、前記相対座標系での位置および姿勢を全体座標系に変換し、
表示装置制御部が、前記全体座標系に変換された前記相対座標系での位置および姿勢と、当該位置および姿勢を検出したときの前記測定データを、前記移動体の表示部に表示する場合において、
前記相対移動量算出部が、前記全体座標系における前記移動体の相対的な移動量が所定の閾値D以上でないと判定した場合、前記広域位置姿勢検出部、前記部分地図原点算出部、前記座標変換部は処理を行わず、前記表示装置制御部が前記移動体の表示部に原点特定失敗を通知する、
ことを特徴とする位置検出方法。
【請求項5】
請求項に記載の位置検出方法において、
前記相対位置姿勢検出処理部および前記部分地図作成部が、それぞれ、SLAM処理により、前記相対座標系での前記移動体の位置および姿勢を検出し、前記部分地図を作成する、
ことを特徴とする位置検出方法。
【請求項6】
請求項に記載の位置検出方法において、
前記広域位置姿勢検出部が、前記相対座標系での位置および姿勢を、前記全体座標系での前記移動体の位置および姿勢に一意に変換できない場合、過去の所定のタイミングで得られた、前記相対座標系での前記移動体の位置および姿勢と、前記部分地図とを用いて、前記全体座標系での前記移動体の位置および姿勢を特定する、
ことを特徴とする位置姿勢検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、工場内で稼働するフォークリフト等の移動体の位置および姿勢を検出するための位置検出システム、位置検出方法に関する。
【背景技術】
【0002】
近年、工場内の物流の増加に伴い、フォークリフト等にレーザスキャナ等の距離センサを搭載し、SLAM(Simultaneous Localization And Mapping)技術を適用することで位置および姿勢を検出するための技術が開発されている。本技術分野における先行技術文献として特許文献1がある。特許文献1では、カメラを使用したいわゆるVisual SLAMを用いて説明している。カメラで撮像した画像データを、ネットワークを介してサーバに転送し、サーバ上で処理負荷の高い位置推定処理を実行する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2021-56629号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1では通信回線を介して位置推定を実行するため、通信の遅れ等によってリアルタイムに位置を知る必要がある有人フォークリフト向けのサービスへの適用が難しい。例えば、特許文献1では、フォークリフトの初期位置同定や原点位置の計算をサーバ側で行っているため、その結果をフォークリフトに送信し、フォークリフトに搭載されたディスプレイ等の表示装置に表示するまでに時間がかかり、操縦者が、自ら操縦するフォークリフトの位置をリアルタイムに確認することが難しい。
【0005】
本発明は、操縦者が、自ら操縦するフォークリフトの位置をリアルタイムに確認することが可能な位置検出システム、位置検出方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明にかかる位置検出システムは、距離センサで計測した測定データと地図情報とを照合することによって自身の位置を推定しながら移動する移動体の位置を検出する位置検出システムであって、所定のタイミングで繰り返し、計測された前記測定データと、前記移動体の座標系である相対座標系における原点位置を含む地図情報とを照合し、前記相対座標系での前記移動体の位置および姿勢を検出する相対位置姿勢検出処理部と、前記所定のタイミングのそれぞれにおいて、検出された前記移動体の位置および姿勢を前記地図情報にあらわした部分地図を作成する部分地図作成部と、前記所定のタイミングで繰り返し得られた前記移動体の位置および姿勢の差に基づいて、前記部分地図における前記移動体の相対的な移動量を算出する相対移動量算出部と、前記部分地図での前記移動体の位置および姿勢を、座標に関する所定のパラメータを用いて、全体地図上での前記移動体の位置および姿勢に変換し、当該変換に用いた前記所定のパラメータの補正量を算出する広域位置姿勢検出部と、前記補正量の分だけ、前記相対座標系における原点位置を、前記全体地図の座標系である全体座標系における原点位置に変換する部分地図原点算出部と、変換された前記全体座標系における原点位置と、前記移動体の相対的な移動量とを用いて、前記相対座標系での位置および姿勢を全体座標系に変換する座標変換部と、前記全体座標系に変換された前記相対座標系での位置および姿勢と、当該位置および姿勢を検出したときの前記測定データを、前記移動体の表示部に表示する表示装置制御部と、を有することを特徴とする位置検出システムとして構成される。
【発明の効果】
【0007】
本発明によれば、操縦者が、自ら操縦するフォークリフトの位置をリアルタイムに確認することができる。
【図面の簡単な説明】
【0008】
図1】システム構成例
図2】サーバ装置を実現するための構成例
図3】エッジ位置検出装置を実現するための構成例
図4】移動体が環境を移動しながら距離センサで測定している例
図5】サーバ側で広域探索を実行した際に、解が複数ある例
図6】エッジ位置検出装置で部分地図用のデータ測定を実施している例
図7】測定したデータから部分地図を作成する例
図8】サーバで広域探索を実行した際に解が複数ある例
図9A】複数ある解に対して過去のデータのマッチングを行った例
図9B】複数ある解に対して過去のデータのマッチングを行った例
図10】過去のデータを利用することで正解を特定できた例
図11】エッジ位置検出装置上での処理フローチャート
図12】サーバ装置上での処理フローチャート
図13A】データ構成例
図13B】データ構成例
図14】コンピュータ概略図
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
【0010】
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
【0011】
以下の説明では、「データベース」、「テーブル」、「リスト」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いた場合、これらについてはお互いに置換が可能である。
【0012】
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0013】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部や演算装置であれば良く、特定の処理を行う専用回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)やASIC(Application Specific Integrated Circuit))を含んでいてもよい。
【0014】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0015】
本実施例においては、本発明にかかる位置検出システムを、フォークリフトが工場内で荷役作業を行っている環境下に適用した場合を例示しているが、これに限らず、フォークリフトと同種の移動体について適用してよい。
【0016】
図1は、位置検出システム1000の全体の実施例を構成するシステム構成図である。システム構成としては大きく分けてサーバ装置10とフォークリフト11がある。サーバ装置10には、フォークリフト11と通信するための通信装置102が搭載されており、その通信装置102を制御するための通信装置制御部105が搭載されている。フォークリフト11との通信を行う通信装置102は、無線通信を行うための装置である。本実施例においては、公衆回線を用いた通信装置を想定した説明を行うが、工場内にアクセスポイントを配置して、ローカルで通信を行う無線LAN(Local Area Network)でも良い。
【0017】
サーバ装置10には、広域位置姿勢検出部103が搭載されている。広域位置姿勢検出部103は、フォークリフト11が、後述する全体地図や部分地図などの地図データ上において、どの位置でどの方向を向いているかを検出するためにフォークリフト11から送信された距離センサ113の測定データと上記地図データを広い範囲で照合するための機能ブロックである。
【0018】
また、サーバ装置10には、部分地図原点算出部104が搭載されている。これはエッジ位置検出装置111で検出する、部分地図の座標系である相対座標系での位置および姿勢の検出結果を、全体地図の座標系である全体座標系に変換するための補正量を定めるパラメータを算出するための機能ブロックである。相対座標系は、複数存在するそれぞれのエッジ検出装置111(あるいはフォークリフト11)での座標系であり、全体座標系は、複数存在するすべてのエッジ検出装置111(あるいはフォークリフト11)に共通する座標系であるといえる。
【0019】
サーバ装置10に搭載されている運行管理部101は、上記位置および姿勢の検出結果からフォークリフト11の移動距離等を算出する機能が備わっている機能ブロックである。システムの管理者等が移動距離等を参照することで、メンテナンスの時期等を正確に知ることが可能となる。
【0020】
フォークリフト11には、表示装置118、通信装置112、距離センサ113、エッジ位置検出装置111が搭載されている。表示装置118は、フォークリフト11の位置および姿勢、全体地図を表示し、運転手が現在位置を確認するために用いる。通信装置112は、サーバ装置10と通信する際に用いる。
【0021】
エッジ位置検出装置111は、サーバ装置10と連携し、フォークリフト11の位置および姿勢を検出するための装置であり、主に距離センサ制御部116、部分地図生成部114、通信装置制御部115、相対位置姿勢検出部117、座標変換部119によって構成される。
【0022】
距離センサ制御部116は、距離センサ113を制御するために用いる。距離センサ113は、周囲環境にある物体との距離と測定方向を計測することが可能なセンサである。本実施例においては典型的な距離センサとして、二次元のレーザスキャナを用いて説明を行う。二次元のレーザスキャナは、水平方向にレーザのパルスを照射して、乱反射したレーザ光が返ってくるまでの時間を計測することで距離を算出する。二次元のレーザスキャナは、センサ内部に備わっているモータによってレーザパルスの照射方向を回転させ、照射方向と、距離を取得することで、周囲の形状データを取得することができる。
【0023】
レーザスキャナの計測範囲は、例えば照射範囲270度、角度分解能(パルスの照射間隔)を0.25度として、1081点の測定データを25msec周期で取得することが可能なスキャナなどがある。ただし、これに限らず、照射範囲や角度分解能が異なっていても、複数の測定データと照射方向の組を取得できるセンサであれば適用することが可能である。また、二次元のレーザスキャナに限らず三次元で周囲の構造物との距離を計測できる三次元のレーザスキャナやステレオカメラ等、周囲にある構造物との距離を、異なる角度方向に対して複数取得できるものであれば適用することが可能である。
【0024】
次に、図2を用いてサーバ処理装置10の具体的な実現方法について説明する。サーバ処理装置10は、演算処理を行うためのプロセッサ201、プログラムを実行する際の一時記憶装置であるメモリ202、補助記憶装置208、通信I/F(インターフェース)209および通信I/F209に接続された通信装置102によって構成される。
【0025】
サーバ装置10の稼働時においては、メモリ202上に、通信装置制御プログラム203、広域位置姿勢検出プログラム204、地図作成プログラム205、運行管理プログラム210、部分地図原点算出プログラム213、相対移動量算出プログラム215、補助記憶装置208に記憶された全体地図206をはじめとする本システムで用いられる各種データが展開される。これらのプログラムをプロセッサ201で処理することで、全体の機能を実現している。プロセッサ201はプログラムを実行するための演算装置である。
【0026】
通信制御プログラム203は、通信装置制御部105の機能を実現するためのプログラムである。通信制御プログラム203は、通信装置102を制御し、フォークリフト11に搭載されているエッジ位置検出装置111と通信を行い、距離センサ113の測定データ等を受信しメモリ202に格納する。広域位置姿勢検出プログラム204は、広域位置姿勢検出部103の機能を実現するプログラムである。広域位置姿勢検出プログラム204は、全体地図206とエッジ位置検出装置111から送られてくる距離センサ113の測定データとを照合し、全体地図206上で距離センサ113が計測した位置および姿勢を特定するためのプログラムである。また、部分地図原点算出プログラム213は、検出した全体地図206上の位置および姿勢と、エッジ位置検出装置111から送られてきたエッジ位置検出装置111にある部分地図313上での位置および姿勢を比較することで、エッジ位置検出装置111で持っている相対座標系に対する補正量を算出するためのプログラムである。
【0027】
運行管理プログラム210は、運行管理部101の機能を実現するためのプログラムである。地図作成プログラム205は、全体地図の地図データを作成する機能を実現するためのプログラムである。エッジ位置検出装置111の原点情報212は、全体地図における、エッジ位置検出装置111の原点の座標情報であり、あらかじめ定められている。部分地図原点算出プログラム213は、部分地図原点算出部104の機能を実現するためのプログラムである。補助記憶装置208に記憶される探索初期位置214は、フォークリフト11の初期位置同定前に探索されたフォークリフト11の初期位置である。相対移動量算出プログラム215は、フォークリフト11の相対的な移動量を算出するプログラムである。
【0028】
さらに、サーバ装置10の補助記憶装置208は、履歴情報211を記憶する。履歴情報211は、フォークリフト11から受信した各種データを蓄積した情報である。図2に示すように、履歴情報211には、位置姿勢検出結果履歴211a、距離センサデータ211b、測定時刻履歴211cが含まれる。位置姿勢検出結果履歴211aは、エッジ位置検出装置111が検出したフォークリフト11の相対座標系上での位置および姿勢の検出結果である相対位置姿勢検出結果を時系列に蓄積した情報である。距離センサデータ211bは、距離センサ113が測定したデータを時系列に蓄積した情報である。測定時刻履歴211cは、距離センサ113が測定した時刻を時系列に蓄積した情報である。位置姿勢検出結果履歴211a、距離センサデータ211b、測定時刻履歴211cは、互いに測定時刻をキーにして互いに対応付けて記憶され、1つのテーブルとして記憶されていてもよい。
【0029】
例えば、位置姿勢検出結果履歴211aは、図13Aに示す「相対位置、姿勢」項目の内容を時系列に蓄積した情報である。また、距離センサデータ211bは、図13Aに示す「距離センサの測定データ」項目の内容を時系列に蓄積した情報である。また、測定時刻履歴211cは、図13Aに示す「測定時刻」項目の内容を時系列に蓄積した情報である。
【0030】
これらの情報に対応付けて、補助記憶装置208には、さらに、エッジ位置検出装置111から受信した測定データと全体地図206あるいは全体地図206と同様の座標系を有した表示用地図318をマッチングした際の一致度を示す内容、当該マッチングして一致度を算出したときの解のバラツキを示す「解の精度」項目の内容が、それぞれ時系列に蓄積されている。上記「解の精度」項目には、最も一致度が高い解以外にも、一致度を判定した際に得られた所定の閾値以上の他の解が記憶されている。
【0031】
補助記憶装置208は、電源が落とされている場合にも各種のデータを保存可能とするための記憶装置であり、不揮発性メモリなどによって実現される。
【0032】
図3を用いて、エッジ位置検出装置111の具体的な機能について説明する。エッジ位置検出装置111は、プロセッサ301、メモリ302、補助記憶装置309、通信I/F310を有する。通信I/Fに対しては、通信装置112、表示装置118、距離センサ113が接続されている。
【0033】
動作時において、電源が投入された後、メモリ302上に、距離センサ制御プログラム303、位置姿勢検出プログラム304、部分地図作成プログラム305、相対移動量算出プログラム306、表示装置制御プログラム311、通信装置制御プログラム312、補助記憶装置208に記憶された部分地図313をはじめとする本システムで用いられる各種データが展開される。
【0034】
距離センサ制御プログラム303は、距離センサ制御部116の機能を実現するためのプログラムである。距離センサ制御プログラム303は、通信I/Fを介して、距離センサ113を制御し、距離センサ113から測定データ314を取得し、メモリ302に格納する。測定データ314は、距離センサ113が計測した物体との距離と測定方向とを含むデータである。具体的には後述するが、測定データ314には、所定のタイミング(例えば、25ms周期)における測定データが蓄積されている。
【0035】
位置姿勢検出プログラム304は、相対位置姿勢検出部117の機能を実現するためのプログラムである。位置姿勢検出プログラム304は、測定データ314と部分地図313を照合し、フォークリフト11の位置および姿勢を検出し、その測定時刻とともに位置姿勢検出結果308を履歴でメモリ302に格納する。
【0036】
部分地図作成プログラム305は、部分地図作成部114の機能を実現するためのプログラムである。部分地図作成プログラム305は、部分地図と測定データとを用いて、フォークリフト11の位置および姿勢を含む最新の部分地図を作成する。具体的な作成方法については、図7を用いて後述する。
【0037】
相対移動量算出プログラム306は、異なる時刻間の位置姿勢検出結果308からフォークリフト11の相対的な移動量を算出し、算出した都度、その移動量を、位置姿勢検出結果308、測定データ314とともにサーバ装置10に送信する。
【0038】
座標変換プログラム317は、座標変換部119の機能を実現するためのプログラムである。座標変換プログラム317は、サーバ装置10で算出し、送信されたエッジ位置検出装置111の原点情報316を用いて、位置姿勢検出結果308を全体地図206で定義されている全体座標系に変換するためのプログラムである。これら座標系の明確な定義については後述する。
【0039】
表示装置制御プログラム311は、変換された位置姿勢検出結果308を、通信I/F310を介して、表示装置118に出力する。当該位置姿勢検出結果308は、補助記憶装置309に記憶された、表示装置119に表示するための全体地図206と同様の座標系を有した地図である表示用地図318と共に表示される。これにより、フォークリフト11の操縦者は、自ら操縦するフォークリフト11の全体地図206における現在位置および姿勢をリアルタイムに確認することが可能である。
【0040】
上述したサーバ10、エッジ位置検出装置111は、例えば、図14(コンピュータ概略図)に示すような、CPU1601と、メモリ1602と、HDD(Hard Disk Drive)等の外部記憶装置1603と、CD(Compact Disk)やUSBメモリ等の可搬性を有する記憶媒体1608に対して情報を読み書きする読書装置1607と、キーボードやマウス等の入力装置1606と、ディスプレイ等の出力装置1605と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置1604と、これらを連結するシステムバス等の内部通信線(システムバスという)1609と、を備えた一般的なコンピュータ1600により実現できる。
【0041】
サーバ10やエッジ位置検出装置111に記憶され、あるいは処理に用いられる様々なデータは、CPU1601がメモリ1602または外部記憶装置1603から読み出して利用することにより実現可能である。また、サーバ10やエッジ位置検出装置111が有する各機能部(例えば、サーバ10の広域位置姿勢検出部103、部分地図原点算出部104等、あるいはエッジ位置検出装置111の部分地図生成部114、相対位置姿勢検出部117等)は、CPU1601が外部記憶装置1603に記憶されている所定のプログラムをメモリ1602にロードして実行することにより実現可能である。
【0042】
上述した所定のプログラムは、読書装置1607を介して記憶媒体1608から、あるいは、通信装置1604を介してネットワークから、外部記憶装置1603に記憶(ダウンロード)され、それから、メモリ1602上にロードされて、CPU1601により実行されるようにしてもよい。また、読書装置1607を介して、記憶媒体1608から、あるいは通信装置1604を介してネットワークから、メモリ1602上に直接ロードされ、CPU1601により実行されるようにしてもよい。
【0043】
以下では、サーバ10が、ある1つのコンピュータにより構成される場合を例示するが、これらの機能の全部または一部が、クラウドのような1または複数のコンピュータに分散して設けられ、ネットワークを介して互いに通信することにより同様の機能を実現してもよい。
【0044】
図4は、フォークリフトが移動しながら距離センサで測定している様子を表した図である。図4では、相対座標系での位置および姿勢の検出結果を、所定のパラメータにより定められた補正量だけ補正して、全体座標系での位置および姿勢に変換した後の状態をあらわしている。
【0045】
まず、始業時に、フォークリフト11は、位置401において電源投入され、エッジ位置検出装置111が起動する。フォークリフト11は、起動後に距離センサ113で周囲を計測し、測定データ406を取得する。一般にレーザスキャナの測定距離には限界があり、フォークリフト11の動作範囲における一部の構造物との距離しか取得することができない。図4では、測定データ407として得られる上記測定距離の限界の範囲内で測定された構造物の部分を太線で表している。この時点では、フォークリフト11は全体地図206上における自己の位置および姿勢の情報を保持していないため、サーバ装置10に測定データ406を送信する。
【0046】
図5は、サーバ処理装置10において、測定データ406を受信した際の広域位置姿勢検出処理の結果を表している。広域位置姿勢検出処理は、フォークリフト11から受信した距離センサ113の測定データ406と全体地図206の形状を照合する処理である。この形状マッチングの処理に関しては距離センサ113の測定データ406と全体地図206を照合する処理であるICP(Iterative Closest Point Search)アルゴリズムやNDT(Normal Distribution Transform)アルゴリズムといったスキャンマッチング等の手法を用いて行うことを想定しているが、これに限らず、互いの形状を比較し、照合位置を特定できる技術であればよく、深層学習等のAI技術を用いても良い。当該処理は、広域位置姿勢検出プログラム204により行われる。
【0047】
ICPアルゴリズムやNDTアルゴリズムは、照合処理を行う際に初期の位置および姿勢を与える必要がある。広域位置姿勢検出プログラム204は、この初期の位置および姿勢としては、全体地図206に対して、フォークリフト11が存在する可能性がある範囲を一定の区間となる領域ごとに区切り、初期の位置および姿勢を生成する。例えば、全体地図206を格子上に分割した後に、フォークリフト11の通路の情報と重なる範囲のうち、最も早い時刻に存在する可能性のある位置を初期位置とし、当該初期位置における姿勢を初期位置の姿勢とするなどの方法で生成する。姿勢に関しては、通路の方向を考慮するなどで設定を行えば良い。
【0048】
図5において、広域位置姿勢検出処理の実行結果として、フォークリフト11の複数の位置および姿勢501、505が得られる。1フレーム分の測定データ406を用いた場合、計測範囲が限定される。このため、複数個所で良く全体地図206(あるいは全体地図206と同様の座標系を有した表示用地図318)と測定データ406とが一致する箇所が現れる場合がある。図5では、1フレーム内におけるある時点でのフォークリフト11の位置および姿勢501、1フレーム内における別の時点でのフォークリフト11の位置および姿勢505が得られた例を示している。この場合はフォークリフト11の位置を一意に特定することができていない。以下では、これを回避し、フォークリフト11の位置および姿勢を特定するための方法について説明する。
【0049】
図6は、フォークリフト11が移動しながら距離センサ113の測定データ406を計測している様子を表している。このとき、起動した時点でのフォークリフト11の位置をエッジ位置検出装置111上における初期位置、すなわち、相対座標における初期位置とし、フォークリフト11の進行方向にx軸を取ることとする。図6では、位置401にあるフォークリフト11の中心位置が、相対座標における初期位置であり、図の左から右に向かってフォークリフト11が進行することを示している。
【0050】
本実施例においては、距離センサ113の位置はフォークリフト11の中心とし、距離センサ113の正面0度方向はフォークリフト11の進行方向と一致しているとして説明する。しかし、距離センサ113の取付け位置、方向を変更したとしても、フォークリフト11の中心、進行方向に対する取付け位置、方向の関係から、適切な座標変換を行えば上記と同様となる。
【0051】
フォークリフト11は、起動位置である位置401(初期位置)から前進を始め、位置601、602へと進んで行く。この時、距離センサ113は25ms周期で測定データを測定し続けている。図6では、次の周期の位置601で測定される測定データ601Sとして得られる測定距離の限界、さらにその次の周期の位置602で測定される測定データ602Sとして得られる測定距離の限界が示されている。
【0052】
図7は、エッジ位置検出装置111上における相対座標系上での位置および姿勢の検出である相対位置姿勢検出と、部分地図生成の方法について説明している。
【0053】
はじめに、何も記載されていない初期状態の地図情報である地図データ703がある。地図データ703には当該地図データ上における原点Oが設定されている。フォークリフト11が起動した位置401である初期位置における距離センサ113の測定データ406は、起動時の位置および姿勢で計測したデータである。このため、部分地図作成プログラム305は、このデータを基準として部分地図の作成を始める。
【0054】
初期状態の地図データ703に対して、距離センサ113の測定データ406によるフォークリフト11の位置および姿勢の照合処理を行ったとしても、照合先となるフォークリフト11の位置および姿勢が存在しないことにより、一致する位置および姿勢が無い。このため、位置姿勢検出プログラム304は、この場合は、位置401における位置および姿勢(0,0,0)を基準として、距離センサ113の測定データ406を取得する位置姿勢検出処理701を実行する。さらに、部分地図作成プログラム305は、位置姿勢検出処理701が取得した測定データ406をその初期状態の地図データ703に書き込む部分地図作成処理702を実行し、その結果を部分地図である地図データ704とする。
【0055】
次に、位置姿勢検出プログラム304は、地図データ704を作成したときの測定データ406から得られた位置および姿勢を、図6に示した位置601における測定データ601Sから得られる位置および姿勢に対する前回位置および姿勢としてスキャンマッチングの手法で照合する。これにより、位置姿勢検出プログラム304は、フォークリフト11が起動した位置401に対する相対的な移動量を算出することができ、部分地図作成プログラム305は、相対的に移動した後のフォークリフト11の位置および姿勢を含む新たな部分地図である地図データ705を作成することができる。同様に、次の周期の位置602では、位置姿勢検出プログラム304は、位置601における測定データ601Sから得られる位置および姿勢を、位置602における測定データ602Sから得られる位置および姿勢に対する前回位置および姿勢としてスキャンマッチングの手法で照合する。これにより、位置姿勢検出プログラム304は、フォークリフト11が起動して進んだ後の位置601に対する相対的な移動量を算出することができ、部分地図作成プログラム305は、相対的に移動した後のフォークリフト11の位置および姿勢を含む新たな部分地図である地図データ706を作成することができる。
【0056】
位置姿勢検出プログラム304および部分地図作成プログラム305は、これを繰り返すことによって、フォークリフト11が起動した位置および姿勢から、現在に至るまでのフォークリフト11の相対的な移動量を算出し、当該移動量だけ移動した後のフォークリフト11の位置および姿勢を含む新たな部分地図を作成することができる。通信制御部115は、この相対的な移動量と距離センサ113の測定データをサーバ装置10に送信する。また、通信制御部115は、相対的な移動量を算出したときの部分地図、すなわち初期位置から直近位置までの部分地図をサーバ装置10に送信する。
【0057】
図8は、サーバ装置10上に送信されてきたフォークリフト11の位置および姿勢404における測定データ408(図4)を全体地図206(あるいは全体地図206と同様の座標系を有した表示用地図318。以下同様。)と照合した結果を示す図である。図5を用いて説明したように、1フレーム分の測定データ408では、図8に示すように、位置および姿勢を検出した測定データ801b、801c、801eが良く一致している複数の位置および姿勢として抽出されたとする。この状態においては、図5と同様に、全体地図206上での位置および姿勢を特定できない。したがって、広域位置姿勢検出プログラム204は、過去の周期で送信されたデータを利用して、広域での位置姿勢検出処理を行う。
【0058】
図9A、9Bでは、照合の結果得られた、上記位置および姿勢を検出した測定データ801bに対して過去の周期でエッジ位置検出装置111から送られてきた位置および姿勢の履歴データ(履歴情報211として蓄積されている)を当てはめた結果(図9A)と、上記位置および姿勢を検出した測定データ801eに対して過去の周期でエッジ位置検出装置111から送られてきた位置および姿勢の履歴データを当てはめた結果(図9B)について示している。図9Aでは、直近の周期でエッジ位置検出装置111から受信した相対座標系上での位置および姿勢を検出した測定データ801bは、全体地図206や表示用地図318の形状とよく一致している。しかし、他の過去の周期でエッジ位置検出装置111から受信した相対座標系上での位置および姿勢を検出した測定データ(履歴データ801b’、801b”)は、全体地図206や表示用地図318の形状と一致していない範囲Rの箇所が一定数以上存在する。同様に、図9Bでは、直近の周期でエッジ位置検出装置111から受信した相対座標系上での位置および姿勢を検出した測定データ801eは、全体地図206や表示用地図318の形状とよく一致している一方、履歴データ801e’、801e”は、全体地図206や表示用地図318の形状と一致していない範囲Rの箇所が一定数以上存在する。図9A、9Bでは、いずれも上記一致していない範囲Rが4箇所存在していることがわかる。
【0059】
このように、本システムでは、エッジ位置検出装置111から受信した、測定データを全体地図に当てはめることにより、当該エッジ位置検出装置111を搭載したフォークリフト11の全体地図における位置および姿勢を推定する。
【0060】
図10は、照合結果の候補801cに対して過去の履歴を当てはめた結果であり、図9A、9Bに示したような全体地図206や表示用地図318の形状と一致していない範囲Rの箇所がなく、正解の位置および姿勢に対してはすべて良く一致していることがわかる。このような照合結果が、フォークリフト11の表示装置118に表示される。
【0061】
図10では、直近の周期でエッジ位置検出装置111から受信した相対座標系上での位置および姿勢を検出した測定データ801c、過去の周期でエッジ位置検出装置111から受信した相対座標系上での位置および姿勢を検出した他の測定データ(履歴データ801c’、801c”)のいずれもが、全体地図206や表示用地図318の形状とよく一致している。このように、広域位置姿勢検出プログラム204は、直近の周期でエッジ位置検出装置111から受信した相対座標系上での位置および姿勢を検出した測定データだけでなく、過去の周期でエッジ位置検出装置111から受信した上記測定データも含めて、全体地図206と照合することで、初期位置同定を正確に行うことができる。当該初期位置同定は、エッジ位置検出装置111から送信された、初期位置から直近位置までの部分地図と、図7を用いて説明した相対的な移動量を用いて行うことができる。測定データを全体地図に当てはめる際の座標変換については後述する。
【0062】
次に、図11のフローチャートを用いて、エッジ位置検出装置111上での処理の詳細を説明する。
【0063】
エッジ位置検出装置111の距離センサ制御プログラム303は、距離センサ113から測定データを取得する(1101)。
【0064】
エッジ位置検出装置111では、位置姿勢検出プログラム304が、取得された測定データと、現在の部分地図を示す地図データ、1フレーム前の位置および姿勢を初期値とした部分地図を示す地図データを用いて、図7で説明したように、エッジ位置検出装置111での位置姿勢検出処理を行う(1102)。
【0065】
次に、エッジ位置検出装置111は、ステップ1102の位置姿勢検出処理で得られた位置および姿勢の検出の結果に従って、図7で説明したように、エッジ位置検出装置111に記憶されている部分地図313を更新する(1103)。ステップ1102および1103で行われる処理は、例えば、SLAM(Simultaneous Localization And Mapping)技術を用いればよい。
【0066】
次に、エッジ位置検出装置111の通信装置制御プログラム312は、サーバ装置10に、図13Aに示したような測定時刻、距離センサ113の測定データ、相対座標系での位置および姿勢から算出された相対的な移動量、解の精度をサーバ装置10に送信する(1105)。
【0067】
エッジ位置検出装置111の座標変換プログラム317は、サーバ装置10から、すでに広域位置姿勢検出処理が実行されて、成功している旨の通知を受けたか否かを判定する(1109)。すでに成功している旨の通知を受けた場合は(1109;Yes)、座標変換プログラム317は、サーバ装置10からすでに送信されてきている原点情報212を用いて、相対座標系での位置および姿勢を、全体座標系に変換し(1106)、表示装置制御プログラム311は、全体座標系に変換された位置および姿勢を検出した測定データを、エッジ位置検出装置111の表示装置118に表示する(1107)。
【0068】
一方、サーバ装置10から、すでに成功している旨の通知を受けていない場合は(1109;No)、エッジ位置検出装置111の座標変換プログラム317は、初期の位置および姿勢の探索が未完であること表示装置118に表示する(1108)。
【0069】
次に、図12のフローチャートを用いて、サーバ装置10上での処理の詳細を説明する。エッジ位置検出装置111から相対座標系での位置および姿勢、距離センサ113の測定データ、測定時刻、エッジ位置検出装置111での検出結果とその精度を受信する(1201)。
【0070】
図13Aは、エッジ位置検出装置111がサーバ装置10に送信するデータの一例を示す図である。図13Aに示すように、エッジ位置検出装置111から送信されるデータは、「測定時刻」項目およびその内容(図13Aでは「yyyymmddmmssmmm」)、「相対位置、姿勢」項目およびその内容(図13Aでは「x_l[mm]、y_l[mm]、θ_l[mm]」)、「距離センサの測定データ」項目およびその内容(図13Aでは「d1,d2,…,d1081」)が互いに対応付けて記憶されている。さらに上記データには、これらの情報に対応付けて、位置および姿勢を検出した測定データと全体地図206や表示用地図318とが一致した割合を示す「一致度」項目とその内容(図13Aでは「R[%]」)、「一致度」が所定の閾値(例えば、90パーセント以上)を満たしたときの測定データの精度である「解の精度」項目とその内容(図13Aでは現在の周期で得られた測定データの精度「c_11、c_12、c_13」、および過去の2回の周期で得られた測定データの精度「c_21、c_22、c_23」、「c_31、c_32、c_33」)が含まれる。これらの3つは、例えば、図10に示した測定データ801c、履歴データ801c’、801c”が得られたときの精度である。
【0071】
相対移動量算出プログラム215は、ステップ1201で受信したデータと、サーバ装置10に蓄積されている位置姿勢検出結果履歴211aを比較し、フォークリフト11の全体座標系における相対的な移動量を算出する(1212)。全体座標系における相対的な移動量の算出は、相対座標系から全体座標系への座標変換を行ってから、相対座標系における相対的な移動量を算出した場合と同様に、異なる時刻間の位置姿勢検出結果から算出することができる(図9、10)。
【0072】
相対移動量算出プログラム215は、算出された相対的な移動量が閾値D以上の移動量であるか否かを判定する(1213)。閾値Dは、前回のタイミングでフォークリフト11から受信したときの上記相対的な移動量に対してどの程度変化したかを示す値である。つまり、前回の探索に用いた上記相対的な移動量が閾値D以上でないと判定された場合は(1213;No)、フォークリフト11が移動していないことによる判定結果の変化も得られない可能性が高いため、以降の処理を行わず、エッジ位置検出装置111に原点特定失敗を通知する(1211)。
【0073】
ステップ1213において、フォークリフトが閾値D以上移動していると判定された場合(1213;Yes)、まず、相対移動量算出プログラム215は、受信データを履歴情報211に保存する(1214)。次に、広域位置姿勢検出プログラム204は、1ステップ1201で受信した直近の測定時刻、相対的な移動量、解の精度から探索範囲および探索初期値{(xi_1,yi_1,θi_1),…, (xi_N,yi_N,θi_N)}を決定する(1202)。この処理において、過去に全体地図における位置および姿勢の探索が成功している場合は、探索領域として全体地図の全体を探索することはなく、全体地図のなかでも現在位置周辺を探索することで演算量を削減することができるためである。
【0074】
広域位置姿勢検出プログラム204は、設定された探索初期値{(xi_1,yi_1,θi_1),…, (xi_N,yi_N,θi_N)}を初期位置として、位置姿勢検出処理を実行する(1203)。広域位置姿勢検出プログラム204は、それぞれの探索初期値に対する位置姿勢検出結果の評価を行い、位置および姿勢の検出が成功しているものの数Sを算出する(1204)。
【0075】
次に、広域位置姿勢検出プログラム204は、Sの値を評価し、条件分岐処理を実行する(1205)。
【0076】
S=0である場合、初期位置および姿勢の探索に成功しているものが一つもないため、広域位置姿勢検出プログラム204は、エッジ位置検出装置111に原点特定失敗の通知を行う。
【0077】
S=1である場合、位置および姿勢の検出が成功しているものが唯一であるから、広域位置姿勢検出プログラム204は成功とみなし、全体地図上での原点位置、当該原点位置を基準としたエッジ位置検出装置111の位置および姿勢を算出する(1207)。具体的には、広域位置姿勢検出プログラム204は、全体座標系上での位置および姿勢を{(x_t_g,y_t_g,θ_t_g)}、エッジ位置検出装置111での相対座標系での位置および姿勢を(x_t_l,y_t_l,θ_t_l)として、(数1)(数2)を用いて、相対座標系における原点情報(x_t_c,y_t_c,θ_t_c)を算出する。なお、添え字「g」は全体座標系、添え字「l」は相対座標系を表している。最後に、広域位置姿勢検出プログラム204は、エッジ位置検出装置111の全体座標系における原点情報212をエッジ位置検出装置111に送信する。図13Bは、サーバ装置10からエッジ位置検出装置111に送信されるデータの例を示す図である。図13Bに示すように、当該データには、図13Aに示した測定データに対応する測定時刻「yyyymmddmmssmmm」、相対座標系における原点情報「x_c、y_c、θ_c」が対応付けられている。
【0078】
(数1)θ_c=θ_g―θ_l、
(数2)x_c=x_g―x_l×cosθ_c+y_l×sinθ_c、
y_c=y_g―x_l×sinθ_c―y_l×cosθ_c
【0079】
ここで、(数1)(数2)にある変数の添え字として、時刻のインデックスtを省略している。上記全体座標系上での位置および姿勢{(x_t_g,y_t_g,θ_t_g)}およびエッジ位置検出装置111の相対座標系での位置および姿勢(x_t_l,y_t_l,θ_t_l)の座標が、部分地図の座標系である相対座標系から、全体地図の座標系である全体座標系に変換するためのパラメータであり、これらのパラメータに上記数1、数2を適用することで、エッジ位置検出装置111の相対座標系での位置および姿勢から全体座標系上での位置および姿勢への補正量を求めることができる。さらに、相対座標系の原点に対して、当該補正量と同じ補正量で原点位置を補正することで、全体座標系における原点位置を得ることができる。そして、補正した原点位置を表示用地図318に適用し、全体座標系でのエッジ位置検出装置111の位置および姿勢を表示することができる。また、このような表示を繰り返し所定の周期で行うことで、常にフォークリフト11の全体座標系における位置や姿勢を正しく表示することができるようになる。
【0080】
S>1である場合、位置および姿勢の検出が成功しているものが複数あるので、これらを特定するために、広域位置姿勢検出プログラム204は、履歴情報211として蓄積されている履歴データを参照し、解を特定するための処理を実行する。
【0081】
具体的には、広域位置姿勢検出プログラム204は、時刻tおける距離センサ113の測定データに対して、成功と判定されたM個の位置姿勢検出結果を{(x_t_1_g,y_t_1_g,θ_t_1_g), …,(x_t_m_g,y_t_m_g,θ_t_m_g),…,(x_t_M_g,y_t_M_g,θ_t_M_g)}とする。広域位置姿勢検出プログラム204は、これらの位置および姿勢を基準として、過去の履歴データから、位置姿勢検出処理を実行するための初期値I_m={(x_t-1_m_g,y_t-1_m_g,θ_t-1_m_g),…,(x_t-L_m_g,y_t-L_m_g,θ_t-L_m_g)}を算出する。これらの値は下記の(数3)(数4)の座標変換によって算出することが可能である。
【0082】
(数3)θ_g=θ_l+θ_c、
(数4)x_g=x_l×cosθ_c-y_l×sinθ_c+x_c、
y_g=x_l×sinθ_c+y_l×cosθ_c+y_c
ここで(数3)(数4)にある変数の添え字として、時刻t、初期値mを省略している。
【0083】
広域位置姿勢検出プログラム204は、I_1,…,I_m,…,I_Mに対して位置姿勢検出処理を行った結果、I_mの初期探索位置で成功した数R_mを算出し、R_mが閾値以上であるものの数Tを算出する。
【0084】
T=1である場合、広域位置姿勢検出成功として、処理ブロック1207の処理を実行し、算出された原点の情報をエッジ位置検出装置111に送信する。T≠1である場合はエッジ位置検出装置111に広域位置姿勢探索の失敗を送信する。
【0085】
以上のように位置姿勢検出処理を、サーバ装置10とエッジ位置検出装置111に分割することで、フォークリフト側で遅れの無い位置姿勢検出結果を表示装置118に表示することが可能となる。
【0086】
このように、本実施例では、距離センサで計測した測定データと地図情報とを照合することによって自身の位置を推定しながら移動する移動体(例えば、フォークリフト11)の位置を検出する位置検出システム1000において、所定のタイミングで繰り返し(例えば、25msec周期で)、計測された上記測定データと、上記移動体の座標系である相対座標系における原点位置(例えば、図8に示した原点位置O)を含む地図情報(例えば、図8に示した地図データ703)とを照合し、上記相対座標系での上記移動体の位置および姿勢を検出する相対位置姿勢検出処理部(例えば、位置姿勢検出プログラム304)と、上記所定のタイミングのそれぞれにおいて、検出された上記移動体の位置および姿勢を上記地図情報にあらわした部分地図(例えば、図8に示した地図データ704)を作成する部分地図作成部(例えば、部分地図作成プログラム305)と、上記所定のタイミングで繰り返し得られた上記移動体の位置および姿勢の差に基づいて、上記部分地図における上記移動体の相対的な移動量を算出する相対移動量算出部(例えば、相対移動量算出プログラム215)と、上記部分地図での上記移動体の位置および姿勢を、座標に関する所定のパラメータ(例えば、相対座標系での位置および姿勢を示す座標)を用いて、全体地図上での上記移動体の位置および姿勢(例えば、全体座標系での位置および姿勢を示す座標)に変換し、当該変換に用いた上記所定のパラメータの補正量を算出する広域位置姿勢検出部(例えば、広域位置姿勢検出プログラム204)と、上記補正量の分だけ、上記相対座標系における原点位置を、上記全体地図の座標系である全体座標系における原点位置に変換する部分地図原点算出部(例えば、部分地図原点算出プログラム213)と、変換された上記全体座標系における原点位置と、上記移動体の相対的な移動量とを用いて、上記相対座標系での位置および姿勢を全体座標系に変換する座標変換部(例えば、座標変換プログラム317)と、上記全体座標系に変換された上記相対座標系での位置および姿勢と、当該位置および姿勢を検出したときの上記測定データ(例えば、図10に示したような過去の履歴を当てはめた照合結果)を、上記移動体の表示部に表示する表示装置制御部(例えば、表示装置制御プログラム311)と、を有する。
【0087】
したがって、操縦者が、自ら操縦するフォークリフトの全体地図上での位置をリアルタイムに確認することができる。また、フォークリフト等の屋内外を動作する移動体の位置および姿勢を検出するためのシステムを低コストに提供することができる。
【0088】
また、上記位置検出システムにおいて、上記相対位置姿勢検出処理部および上記部分地図作成部は、それぞれ、SLAM処理により、上記相対座標系での上記移動体の位置および姿勢を検出し、上記部分地図を作成する。したがって、移動体が未知の環境下で地図データを作成しつつ、当該地図データを用いて障害物などを回避して特定のタスクを行うことができる。
【0089】
また、上記位置検出システムにおいて、上記広域位置姿勢検出部は、上記相対座標系での位置および姿勢を、上記全体座標系での上記移動体の位置および姿勢に一意に変換できない場合(例えば、図5図8の場合)、図9A、9B、10で説明したように、過去の所定のタイミングで得られた、上記相対座標系での上記移動体の位置および姿勢と、上記部分地図とを用いて、上記全体座標系での上記移動体の位置および姿勢を特定する。したがって、全体座標系での移動体の位置を正確に特定することができる。
【0090】
また、上記位置検出システムにおいて、上記相対移動量算出部が、上記移動体の相対的な移動量が所定の閾値D以上でないと判定した場合、例えば、図12の1213から1211で説明したように、上記広域位置姿勢検出部、上記部分地図原点算出部、上記座標変換部は処理を行わず、上記表示装置制御部が上記移動体の表示部に原点特定失敗を通知する。したがって、例えば、フォークリフト11が移動していないことによる判定結果の変化が得られない可能性が高い場合には、そのような無駄な処理を行うことがなくなり、処理負荷を低減することができる。
【符号の説明】
【0091】
10:サーバ装置、102:通信装置、105:通信制御部、103:広域位置姿勢検出部、104:部分地図原点算出部、11:移動体、111:エッジ位置検出装置、113:距離センサ、112:通信装置、114:部分地図生成部、116:距離センサ制御部、115:通信制御部、117:位置姿勢検出部、201:プロセッサ(CPU)、202:メモリ(主記憶装置)、208:補助記憶装置、209:インターフェース部(I/F)、206:全体地図、204:広域位置姿勢検出プログラム、213:部分地図原点算出プログラム、215:相対移動量算出プログラム、301:プロセッサ(CPU)、302:メモリ(主記憶装置)、309:補助記憶装置、310:インターフェース部(I/F)、305:部分地図作成プログラム、317:座標変換プログラム、304:位置姿勢検出プログラム、311:表示装置制御プログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10
図11
図12
図13A
図13B
図14