(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】移動体位置決定装置、移動体位置決定方法及びプログラム
(51)【国際特許分類】
G01B 11/00 20060101AFI20241106BHJP
G01B 11/26 20060101ALI20241106BHJP
【FI】
G01B11/00 H
G01B11/26 H
(21)【出願番号】P 2020157122
(22)【出願日】2020-09-18
【審査請求日】2022-02-02
【審判番号】
【審判請求日】2023-07-18
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(72)【発明者】
【氏名】飯塚 宣男
【合議体】
【審判長】濱本 禎広
【審判官】小島 寛史
【審判官】佐々木 祐
(56)【参考文献】
【文献】特開2005-315746(JP,A)
【文献】特開2011-134058(JP,A)
【文献】特開2006-209770(JP,A)
【文献】特開2000-337887(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01C15/00
G01B11/00-11/30
G05D 1/02
(57)【特許請求の範囲】
【請求項1】
3次元空間における高さが異なる任意の位置に設置されている2つの発光装置を含む前記3次元空間の座標位置が既知である複数の発光装置の中から、移動体に取り付けられた撮像装置により撮像される少なくとも2つの発光装置を含む画像に基づいて、前記少なくとも2つの発光装置の画像内の座標位置を取得し、
前記撮像装置から前記少なくとも2つの発光装置の画像内の座標位置までの複数の3次元方向ベクトルを取得し、
取得された前記複数の3次元方向ベクトルと、
前記撮像装置と前記少なくとも2つの発光装置
それぞれとの前記3次元空間における高低差に基づいて、前記3次元空間における高低差の次元とは異なる複数の2次元のベクトルを取得し、
2次元空間における前記撮像装置と前記少なくとも2つの発光装置の各々との間の位置関係と、前記位置関係に対応する前記複数の2次元のベクトルの各々とが略一致するよう、前記複数の2次元のベクトルの少なくとも
1つの2次元のベクトルの長さ及び方向の少なくとも一方を調整し、当該
長さ及び方向の少なくとも一方を調整した
前記複数の2次元のベクトルと前記撮像装置の姿勢データとに基づいて、前記3次元空間における少なくとも前記移動体の座標位置及び前記移動体が向いている方位のいずれかを決定する、
処理を実行する移動体位置決定装置。
【請求項2】
前記画像を含む、撮像タイミングがそれぞれ異なる複数の画像に基づいて、夫々異なる発光パターンで発光する前記少なくとも2つの発光装置を識別する、
処理を実行する請求項1に記載の移動体位置決定装置。
【請求項3】
前記撮像装置の焦点を始点とし、前記少なくとも2つの発光装置の画像内の座標位置を終点とする前記複数の3次元方向ベクトルと、前記撮像装置が向いている方向を示す前記姿勢データと、を取得し、
取得された前記複数の3次元方向ベクトル、及び、前記少なくとも2つの発光装置の前記3次元空間における高低差に基づいて、前記撮像装置から前記少なくとも2つの発光装置までの3次元空間上の各距離と、前記撮像装置が向く光軸方位と、を取得する、
処理を実行する請求項1又は2に記載の移動体位置決定装置。
【請求項4】
取得された前記各距離のうちの長い方を調整する、
処理を実行する請求項3に記載の移動体位置決定装置。
【請求項5】
前記移動体の座標位置決定のために、前記画像における外縁部に存在する発光装置の座標位置を使用しないように制御する、
処理を実行する請求項1乃至
4のいずれかに記載の移動体位置決定装置。
【請求項6】
第1発光装置及びその他の発光装置を含む画像を示す第1画像の取得後に取得される画像が、前記第1発光装置のみを含みその他のいずれの発光装置を含まない第2画像であった場合に、算出される前
記移動体の移動ベクトルに基づいて、前記移動体の座標位置を決定する、
処理を実行する請求項1乃至
5のいずれかに記載の移動体位置決定装置。
【請求項7】
前記移動体に取り付けられた複数の前記撮像装置から取得される画像に従って、前記移動体の座標位置を決定する、
処理を実行する請求項1乃至
6のいずれかに記載の移動体位置決定装置。
【請求項8】
コンピュータに、請求項1乃至
7のいずれかに記載の移動体位置決定装置の処理を実行させる方法。
【請求項9】
コンピュータに、請求項1乃至
7のいずれかに記載の移動体位置決定装置の処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動体位置決定装置、移動体位置決定方法及びプログラムに関する。
【背景技術】
【0002】
従来より、移動体に取り付けられた撮像装置が空間内の発光装置であるマーカを撮像し、その撮像によって得られた画像に基づいて、移動体の3次元空間の位置や方位を算出する技術が存在する(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述した技術では、マーカを同一平面上に配置しなければならないという制約が存在し、マーカの設置の自由度、更には、位置と方位の算出の自由度が低いと言う問題があった。
【0005】
本願発明はこのような問題点に鑑みてなされたものであり、位置と方位の算出の自由度を向上させることを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明に係る移動体位置決定装置は、
3次元空間における高さが異なる任意の位置に設置されている2つの発光装置を含む前記3次元空間の座標位置が既知である複数の発光装置の中から、移動体に取り付けられた撮像装置により撮像される少なくとも2つの発光装置を含む画像に基づいて、前記少なくとも2つの発光装置の画像内の座標位置を取得し、
前記撮像装置から前記少なくとも2つの発光装置の画像内の座標位置までの複数の3次元方向ベクトルを取得し、
取得された前記複数の3次元方向ベクトルと、前記撮像装置と前記少なくとも2つの発光装置それぞれとの前記3次元空間における高低差に基づいて、前記3次元空間における高低差の次元とは異なる複数の2次元のベクトルを取得し、
2次元空間における前記撮像装置と前記少なくとも2つの発光装置の各々との間の位置関係と、前記位置関係に対応する前記複数の2次元のベクトルの各々とが略一致するよう、前記複数の2次元のベクトルの少なくとも1つの2次元のベクトルの長さ及び方向の少なくとも一方を調整し、当該長さ及び方向の少なくとも一方を調整した前記複数の2次元のベクトルと前記撮像装置の姿勢データとに基づいて、前記3次元空間における少なくとも前記移動体の座標位置及び前記移動体が向いている方位のいずれかを決定する、
処理を実行する。
【発明の効果】
【0007】
本発明によれば、位置と方位の算出の自由度を向上させることができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係る可視光通信システムの一例を示す図である。
【
図3】空間におけるカメラとマーカの配置の一例を示す図である。
【
図4】マーカ3次元位置テーブルの一例を示す図である。
【
図5】カメラ内部パラメータの一例を示す図である。
【
図6】(a)は歪み補正前の画像の一例、(b)は歪み補正後の画像の一例を示す図である。
【
図7】マーカの画像位置及び3次元位置の一例を示す図である。
【
図9】(a)はXY平面ベクトルの調整前の一例、(b)、(c)はXY平面ベクトルの調整後の一例を示す図である。
【
図11】カメラ位置候補線と延長ベクトルの交点取得の一例を示す図である。
【
図12】サーバの動作の一例を示す第1のフローチャートである。
【
図13】サーバの動作の一例を示す第2のフローチャートである。
【
図14】サーバの動作の一例を示す第3のフローチャートである。
【
図15】カメラが2台の場合のXY平面ベクトルの一例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して、本発明の実施形態に係る移動体位置決定装置としての可視光通信システムを説明する。
【0010】
図1は、可視光通信システムの構成を示す図である。
図1に示すように、可視光通信システム1は、空間500内を移動する移動体としてのフォークリフト100と、フォークリフト100に取り付けられたカメラ101aと、空間500の天井や側面等に取り付けられた光源であるマーカ102a、102b、102c(以下、マーカ102a、102b、102cのそれぞれを限定しない場合には、適宜「マーカ102」と称する)と、移動体位置決定装置に対応するサーバ200とを含んで構成される。マーカ102は、図示しないLED(Light Emitting Diode)を含む。空間500は、X軸の座標(X座標)、Y軸の座標(Y座標)、Z軸の座標(Z座標)からなる3次元のパラメータで定義でき、これにより当該空間500内に存在する物体の位置を特定可能になっている。ここで、X軸及びY軸は双方とも水平方向であり、互いに直交し、Z軸は垂直方向であり、X軸及びY軸と直交する。
【0011】
本実施形態において、フォークリフト100に取り付けられたカメラ101aは、マーカ102を撮像する。マーカ102は、空間500における3次元位置が既知であり、各種の送信対象の情報で色変調を行い、時系列に沿ってその発光色を変化させて発光することによりその情報を送信する。なお、変調方法は、送信対象の情報をビットデータに変換し、このデータを所定の規則性を持たせて光の三原色(R(赤)G(緑)B(青))の順序に割り当てる方法を採用する。
【0012】
一方、サーバ200は、カメラ101aによる時系列的に連続した撮像によって得られた光の画像における発光色の変化を復調してマーカ102が発する情報を取得するとともに、空間500におけるカメラ101aの3次元位置をフォークリフト100の3次元位置として算出する。
【0013】
図2は、サーバ200の構成の一例を示す図である。
図2に示すように、サーバ200は、制御部202、無線通信部203、画像処理部204、メモリ205、操作部206、表示部207及び通信部208を含む。
【0014】
図3は、空間500におけるカメラ101aとマーカ102の配置の一例を示す図である。本実施形態において、サーバ200は、空間500における既知であるマーカ102の3次元位置に基づいて、未知であるカメラ101aの3次元位置を算出する。
【0015】
カメラ101aは、図示しないレンズを介して入光された光学像を撮像(受光)し、その撮像画角内の画像信号をデジタルデータに変換して画像を生成する。また、カメラ101aは、撮像と画像の生成とを時間的に連続して行い、連続する画像をサーバ200へ無線通信により送信する。サーバ200内の無線通信部203は、画像を受信して画像処理部204へ出力する。画像における各画素や画像領域は、X座標、Y座標からなる2次元の座標平面でその位置が定義される。
【0016】
再び、
図2に戻って説明する。画像処理部204は、無線通信部203から出力された画像(デジタルデータ)をそのまま制御部202へ出力するとともに、当該画像について、表示部207に表示させるべく、画質や画像サイズを調整して制御部202へ出力する。また、画像処理部204は、JPEG(Joint Photographic Experts Group)、MPEG(Moving Photographic Experts Group)等の圧縮符号化方式にて符号化、静止画ファイル化、または、動画ファイル化する機能を有する。
【0017】
制御部202は、プロセッサであるCPU(Central Processing Unit)によって構成される。制御部202は、メモリ205に記憶されたプログラム(例えば、後述する
図12、
図13、
図14に示すサーバ200の動作を実現するためのプログラム)に従ってソフトウェア処理を実行することにより、サーバ200が具備する各種機能を制御する。
【0018】
メモリ205は、例えばRAM(Random Access Memory)やROM(Read Only Memory)である。メモリ205は、サーバ200における制御等に用いられる各種情報(プログラム等)を記憶する。
【0019】
また、メモリ205は、
図4に示すマーカ3次元位置テーブルや
図5に示すカメラ内部パラメータを記憶している。
図4に示すマーカ3次元位置テーブルは、マーカ102a、102b、102cのそれぞれの自己を一意に特定可能なID(Identification)と、空間500における当該マーカ102a、102b、102cの3次元位置(X座標、Y座標、Z座標)とを対応付けたものである。
【0020】
また、
図5に示すカメラ内部パラメータは、画像の歪みを補正する際に用いる画像歪み補正データと、カメラ101aの高さ(Z座標)と、カメラ101aが向いている方向を示す姿勢データとしてのカメラ101aのZ軸を回転軸とする回転を示す3×3行列であるカメラ方位行列Rz(θ)と、カメラ101aが向いている方向を示す姿勢データとしてのカメラ101aのX軸を回転軸とする回転とY軸を回転軸とする回転とを示す3×3行列であるカメラ設置行列Rcとを含んで構成される。
【0021】
再び、
図2に戻って説明する。操作部206は、テンキーやファンクションキー等によって構成され、ユーザの操作内容を入力するために用いられるインタフェースである。表示部207は、例えば、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、EL(Electroluminescence)ディスプレイ等によって構成される。表示部207は、制御部202から出力された画像信号に従って画像を表示する。通信部208は、例えばLAN(Local Area Network)カードである。通信部208は、外部の通信装置との間で通信を行う。
【0022】
制御部202には、画像取得部230、マーカ特定部232、画像位置補正部234及び3次元位置取得部236の各機能が構成される。
【0023】
画像取得部230は、画像処理部204からの画像を取得する。マーカ特定部232は、画像内のマーカ102の位置(画像位置:画像に対応する2次元平面におけるX座標、Y座標)を検出する。ここで、空間500内におけるマーカ102a、102b、102cは、自己を一意に特定可能なIDで変調された、R(赤)G(緑)B(青)の3色のパターンで巡回的に変化する光を発する。
【0024】
マーカ特定部232は、カメラ101aの撮像によって得られた各画像に含まれる巡回的な3色のパターンの光を検出する。更に、マーカ特定部232は、この3色の発光のパターンに対応するIDの検出、更にIDへの復調を試みる。IDが検出された場合、マーカ特定部232は、画像内における、そのIDに対応するマーカ102の画像位置を取得する。
【0025】
更に、マーカ特定部232は、メモリ205に記憶されたマーカ3次元位置テーブルを参照することにより、取得したIDに対応するマーカ102の空間500における3次元位置を取得する。
【0026】
画像位置補正部234は、マーカ102の画像位置を補正する。具体的には、
図6(a)に示すように、通常画像601aには歪みが生じており、その歪みは画像の中心からの距離が長いほど大きくなる。そこで、画像位置補正部234は、
図5のカメラ内部パラメータの画像歪み補正データを用いて、歪みを補正する。画像歪み補正データは、画像の中心からの距離が長いほど補正量が大きくなるデータである。これにより、
図6(b)に示すように歪みが補正された画像601bとなり、当該画像601bにおけるマーカ102a、102b、102cの位置(画像位置)が補正されることになる。
【0027】
また、画像位置補正部234は、歪み補正後の画像のうち、四隅に存在するマーカ102をカメラ101aの3次元位置の取得の際に使用しないように設定する。例えば、
図6(b)に示すように、画像601bの四隅には、三角形の無効領域603a、603b、603c、603dがそれぞれ設定される。マーカ102cは、無効領域603a内に存在するため、当該マーカ102cはカメラ101aの3次元位置の取得の際に使用されず、マーカ102a、102bのみがカメラ101aの3次元位置の取得の際に使用されることになる。
【0028】
3次元位置取得部236は、空間500におけるカメラ101aの3次元位置を取得する。具体的には、3次元位置取得部236は、
図7に示す画像領域700におけるマーカ102aの画像位置610a及びマーカ102bの画像位置と、マーカ3次元テーブルを参照して得られたマーカ102aの3次元位置及びマーカ102bの3次元位置と、メモリ205に記憶された姿勢データであるカメラ方位行列Rz(θ)及びカメラ設置行列Rcとを用いて既知の手法により、空間500におけるカメラ101aの3次元位置C=(cx,cy,cz)を算出する。
【0029】
具体的には、3次元位置取得部236は、カメラ101aを中心とする3次元空間の座標系であるカメラ基準相対系において、マーカ102aの3次元位置と、カメラ内部パラメータ及び姿勢データに基づいて、カメラ101aからマーカ102aへ向かう3次元方向ベクトル(vx1,vy1,vz1)を算出するとともに、マーカ102bの画像位置と姿勢データとに基づいて、カメラ101bからマーカ102へ向かう3次元方向ベクトル(vx2,vy2,vz2)とを算出する。
【0030】
次に、3次元位置取得部236は、カメラ101aからマーカ102aへ向かう3次元方向ベクトル(vx1,vy1,vz1)を3次元空間におけるカメラ101aとマーカ102aとの位置関係に当てはめるために、マーカ102aとカメラ101aの高低差と、カメラ設置行列Rc1とに基づいて、既知の手法により3次元方向ベクトル(vx1,vy1,vz1)をXY平面に投影したXY平面ベクトルV1を算出する。同様に、3次元位置取得部236は、カメラ101aからマーカ102bへ向かう3次元方向ベクトル(vx2,vy2,vz2)を3次元空間におけるカメラ101aとマーカ102bとの位置関係に当てはめるために、マーカ102bとカメラ101aの高低差と、カメラ設置行列Rc2とに基づいて、3次元方向ベクトル(vx2,vy2,vz2)をXY平面に投影したXY平面ベクトルV2を算出する。
図8は、XY平面ベクトルV1、V2の一例を示す図である。
【0031】
更に、3次元位置取得部236は、XY平面ベクトルV1とXY平面ベクトルV2とを調整する。この調整は、カメラ方位行列Rz(θ)が示すZ軸回りの回転角度θの誤差等によって、算出した空間500におけるカメラ101aの3次元位置C=(cx,cy,cz)に誤差が生じている場合に、その誤差を小さくするためである。
【0032】
例えば、
図9(a)に示すように、XY平面上において、カメラ101aとマーカ102a、102bとの位置関係と、XY平面ベクトルV1及びXY平面ベクトルV2とが一致しない場合、3次元位置取得部236は、XY平面ベクトルV1とXY平面ベクトルV2とを調整する。
【0033】
例えば、3次元位置取得部236は、カメラ方位行列Rz(θ)が示すZ軸回りの回転角度θを調整することにより、カメラ101aとマーカ102a、102bとの位置関係と、XY平面ベクトルV1及びXY平面ベクトルV2とを一致させることを試みる。
【0034】
また、3次元位置取得部236は、
図9(a)では、XY平面ベクトルV1の方がXY平面ベクトルV2より長いため、XY平面ベクトルV1の方が誤差が大きいと見なし、
図9(b)に示すように、XY平面ベクトルV2の長さ及び方向を調整することなく、カメラ101aとマーカ102bとの位置関係と、XY平面ベクトルV2とを一致させる一方、XY平面ベクトルV1の長さ及び方向を調整して、カメラ101aとマーカ102bとの位置関係と、XY平面ベクトルV2とを一致させる。
【0035】
また、3次元位置取得部236は、
図9(c)に示すように、XY平面ベクトルV1の長さ及び方向の調整量と、XY平面ベクトルV1の長さ及び方向の調整量との比率を、XY平面ベクトルV1とXY平面ベクトルV2との長さの比率に一致させて、XY平面ベクトルV1及びXY平面ベクトルV2双方の長さ及び方向を調整して、カメラ101aとマーカ102bとの位置関係と、XY平面ベクトルV2とを一致させる。
【0036】
3次元位置取得部236は、調整後のXY平面ベクトルV1、V2、カメラ方位行列Rz(θ)を用いて、3次元方向ベクトル(vx1,vy1,vz1)、更には、空間500におけるカメラ101aの3次元位置C=(cx,cy,cz)を算出するとともに、カメラ方位行列Rz(θ)及びカメラ設置行列Rcに基づいてカメラ101aの方位を算出する。
【0037】
更に、3次元位置取得部236は、メモリ205に記憶されたカメラ101aの3次元位置C=(cx,cy,cz)のうち、最良の3次元位置C=(cx,cy,cz)を選択し、最終的なカメラ101aの3次元位置(移動体の座標位置)とする。最良の3次元位置とは、例えば、カメラ101aのそれぞれの3次元位置Cのうち、対応する再投影誤差が最小となる位置や、再投影誤差の逆数に従った重み平均により算出される位置である。3次元位置取得部236は、求めたカメラ101aの3次元位置及び方位と画像に含まれるマーカ102のIDとを対応付けてメモリ205に記憶させる。
【0038】
また、当初はカメラ101aによって2つ以上のマーカ102が撮像されていたが、その後にカメラ101aの移動によって1つのマーカ102のみが撮像されることになった場合には、その1つのマーカ102の画像位置に基づいて、最終的なカメラ101aの3次元位置及び方位を算出する。
【0039】
具体的には、3次元位置取得部236は、カメラ101aを中心とする3次元空間の座標系であるカメラ基準相対系においてカメラ101aからマーカ102への3次元方向ベクトルを求める。3次元方向ベクトルは、マーカ102の画像位置と姿勢データとに基づいて求められる。
図10に示すように、3次元方向ベクトルV100が求められると、3次元空間におけるカメラ101aの位置(3次元位置)は、マーカ102の直下でカメラ101aと同一平面(XY平面)上の位置C10を中心とする円の外縁部であるカメラ位置候補線710の線上の何れかの位置となる。
【0040】
更に、3次元位置取得部236は、3次元方向ベクトルについてXY平面との傾きを求め、当該傾きと、カメラ101aとマーカ102との高低差とに基づいて、カメラ101aとマーカ102との水平距離(XY平面上の距離)を求める。
【0041】
次に、3次元位置取得部236は、メモリ205に記憶しているマーカ102のIDに対応するカメラ101aの3次元位置及び方位の履歴に基づいて、
図11に示すように、前々回の測定によるカメラ101aの3次元位置(前々回位置)P1を始点とし、前回の測定によるカメラ101aの3次元位置(前回位置)を終点とする移動ベクトルV110を求め、その移動ベクトルV110を延長した延長ベクトルV120を求める。更に、3次元位置取得部236は、延長ベクトルV120とカメラ位置候補線710との交点C20を現在のカメラ101aの3次元位置C20とする。
【0042】
次に、3次元位置取得部236は、画像内のマーカ102の横移動(XY平面上での移動)からカメラ101aの方位の変化を求め、その方位の変化量を前回の測定における方位に加えることにより、現在のカメラ101aの方位とする。更に、3次元位置取得部236は、求めたカメラ101aの3次元位置及び方位と、画像に含まれるマーカ102のIDとを対応付けてメモリ205に記憶させる。
【0043】
次に、フローチャートを参照して、サーバ200の動作を説明する。
図12、
図13及び
図14は、サーバ200の動作の一例を示すフローチャートである。
【0044】
制御部202内の画像取得部230は、画像処理部204からのカメラ101aによって撮像された画像を取得する(ステップS101)。次に、マーカ特定部232は、画像を解析して、マーカ102のIDの取得を試み、IDを取得したか否かを判定する(ステップS102)。IDが取得されなかった場合には(ステップS102;NO)、一連の動作が終了する。
【0045】
一方、IDが取得された場合には(ステップS102;YES)、マーカ特定部232は、マーカ3次元位置テーブルを参照し、取得したIDに対応するマーカ102の空間500における3次元位置を取得する(ステップS103)。
【0046】
画像位置補正部234は、カメラ内部パラメータの画像歪み補正データに基づいて、画像の歪みを補正する(ステップS104)。更に、画像位置補正部234は、歪み補正後の画像のうち、無効領域603a等に存在するマーカ102をカメラ101aの3次元位置の取得の際に使用しないように設定する(ステップS105)。
【0047】
次に、3次元位置取得部236は、画像内にマーカ102が2点以上存在するか否かを判定する(ステップS106)。画像内にマーカ102が2点以上存在する場合には(ステップS106;YES)、
図13に示す動作に移行し、3次元位置取得部236は、マーカ102aの3次元位置、カメラ内部パラメータ及び姿勢データに基づいて、カメラ基準相対系においてカメラ101aからマーカ102へ向かう3次元方向ベクトルを算出する(ステップS201)。
【0048】
次に、3次元位置取得部236は、マーカ102とカメラ101aの高低差と、カメラ設置行列Rcとに基づいて、3次元方向ベクトルをXY平面に投影したXY平面ベクトルを算出する(ステップS202)。
【0049】
次に、3次元位置取得部236は、2点以上のマーカ102のうち、2つのマーカ102を終点とする2つのXY平面ベクトルを選択する(ステップS203)。
【0050】
次に、3次元位置取得部236は、2つのXY平面ベクトルを調整する(ステップS204)。次に、3次元位置取得部236は、調整後のXY平面ベクトル、カメラ方位行列Rz(θ)を用いて、空間500におけるカメラ101aの3次元位置を算出するとともに、カメラ方位行列Rz(θ)及びカメラ設置行列Rcに基づいてカメラ101aの方位を算出し、画像内のマーカ102のIDとともにメモリ205に記憶させる(ステップS205)。
【0051】
更に、3次元位置取得部236は、2つのXY平面ベクトルの組み合わせの全てについてステップS203~ステップS205の処理が終了したか否かを判定する(ステップS206)。終了していない場合には(ステップS206;NO)、ステップS203以降の動作が繰り返される。一方、終了した場合には(ステップS206;YES)、3次元位置取得部236は、最良のカメラ101aの3次元位置及び方位を選択する(ステップS207)。
【0052】
一方、
図11のステップS106において、画像内にマーカ102が2点以上存在しない場合には(ステップS106;NO)、すなわち、画像内にマーカ102が1点のみである場合には、
図14に示す動作に移行し、3次元位置取得部236は、その1点のマーカ102のIDを、過去のカメラ101aの3次元位置及び方位の取得の際に既に取得しているか否かを判定する(ステップS301)。IDを取得済みでない場合には(ステップS301;NO)、一連の動作が終了する。
【0053】
一方、IDを取得済みである場合には(ステップS301;YES)、3次元位置取得部236は、カメラ101aを中心とする3次元空間の座標系であるカメラ基準相対系においてカメラ101aからマーカ102への3次元方向ベクトルを求める。更に、3次元位置取得部236は、3次元方向ベクトルについてXY平面との傾きを求め、当該傾きと、カメラ101aとマーカ102との高低差とに基づいて、カメラ101aとマーカ102との水平距離(XY平面上の距離)を求める(ステップS302)。
【0054】
次に、3次元位置取得部236は、メモリ205に記憶しているマーカ102のIDに対応するカメラ101aの3次元位置及び方位の履歴に基づいて、前々回の測定によるカメラ101aの3次元位置(前々回位置)から前回の測定によるカメラ101aの3次元位置(前回位置)へ向かう移動ベクトルを求め、その移動ベクトルを延長した延長ベクトルを求める(ステップS303)。
【0055】
更に、3次元位置取得部236は、延長ベクトルとカメラ位置候補線との交点を現在のカメラ101aの3次元位置とする(ステップS304)。
【0056】
次に、3次元位置取得部236は、画像内のマーカ102の横移動からカメラ101aの方位の変化を求め、その方位の変化量を前回の測定における方位に加えることにより、現在のカメラ101aの方位とする(ステップS305)。更に、3次元位置取得部236は、求めたカメラ101aの3次元位置及び方位と、画像に含まれるマーカ102のIDとを対応付けてメモリ205に記憶させる(ステップS306)。
【0057】
このように本実施形態では、サーバ200は、カメラ101aによるマーカ102の撮像によって得られた画像を取得すると、当該画像の歪みを補正することによってマーカ102の位置を補正し、補正後の画像におけるマーカ102の画像位置をカメラ101a(フォークリフト100)の3次元位置に変換する。本実施形態では、マーカ102の設置位置に制約はなく、フォークリフト100の3次元位置と方位の算出の自由度を向上させることができる。
【0058】
また、本実施形態では、画像の歪みは当該画像の中心からの距離が長いほど大きくなることに鑑み、サーバ200は、画像の中心からの距離が長いほど補正量が大きくなる画像歪み補正データを用いて画像補正を行うとともに、画像の四隅の無効領域603a等に存在するマーカ102をカメラ101aの3次元位置の取得の際に使用しない。これにより、カメラ101aの3次元位置及び方位の算出精度を向上させることができる。
【0059】
また、本実施形態では、サーバ200は、XY平面ベクトルを調整しており、カメラ方位行列Rz(θ)が示すZ軸回りの回転角度θの誤差等によって、カメラ101aの3次元位置に誤差が生じている場合には、その誤差を小さくすることができる。
【0060】
また、本実施形態では、2つのマーカ102の組み合わせ毎に取得されるカメラ101aの3次元位置及び方位に基づいて、最良のものを選択あるいは取得しており、カメラ101aの3次元位置及び方位の算出精度を向上させることができる。
【0061】
また、本実施形態では、画像内にマーカ102が1つしか含まれない場合であっても、そのマーカ102の3次元位置を利用して過去にカメラ101aの3次元位置及び方位を算出している場合には、現在のカメラ101aの3次元位置及び方位を算出可能である。このため、カメラ101aの3次元位置及び方位の算出の汎用性を向上させることができる。
【0062】
また、本実施形態では、各マーカ102が独立したIDを持ち、且つ、そのセットのID数は極めて多数にすることができるため、非常に広範囲に多数の異なるIDを有するマーカ102を配置することができる。このため、空間500内においては、前の状態にかかわらず、2点のマーカ102のIDを受信した時点で直ちに、マーカ102までの絶対距離を求めることができる。
【0063】
なお、本発明は、上記実施形態の説明及び図面によって限定されるものではなく、上記実施形態及び図面に適宜変更等を加えることは可能である。
【0064】
上述した実施形態では、カメラ101aのみであったが複数のカメラを用いてもよい。例えば、
図12に示すように、カメラ101aの他にカメラ101bが設けられる場合には、カメラ101aがマーカ102aを撮像し、カメラ101bがマーカ102bを撮像するとともに、XY平面におけるカメラ101aからカメラ101bに向かうXY平面ベクトルV3が規定されることにより、フォークリフト100の3次元位置を精度よく算出することができる。
【0065】
また、上述した実施形態では、マーカ102は、時系列に沿って発光色を変化させることによりIDを送信したが、マーカ102の3次元位置を送信してもよい。この場合には、サーバ200は、発光のパターンに対応するマーカ102の3次元位置を検出することができる。このため、
図4に示すマーカ3次元位置テーブルは不要である。
【0066】
また、マーカ102はLEDに限定されない。例えば、表示装置を構成するLCD、PDP、ELディスプレイ等の一部に光源が構成されていてもよい。
【0067】
また、サーバ200は、カメラ101a、101bからの画像を取得するものであれば、どのような装置でもよい。
【0068】
また、上記実施形態において、実行されるプログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read - Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto - Optical Disc)等のコンピュータで読み取り可能な記録媒体に格納して配布し、そのプログラムをインストールすることにより、上述の処理を実行するシステムを構成することとしてもよい。
【0069】
また、プログラムをインターネット等のネットワーク上の所定のサーバが有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、ダウンロード等するようにしてもよい。
【0070】
なお、上述の機能を、OS(Operating System)が分担して実現する場合又はOSとアプリケーションとの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、ダウンロード等してもよい。
【0071】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0072】
(付記1)
3次元空間における高さが異なる任意の位置に設置されている2つの発光装置を含む前記3次元空間の座標位置が既知である複数の発光装置の中から、移動体に取り付けられた撮像装置により撮像される少なくとも2つの発光装置を含む画像に基づいて、前記少なくとも2つの発光装置の画像内の座標位置を取得し、
前記3次元空間の座標位置及び前記画像内の座標位置に基づいて、前記3次元空間における少なくとも前記移動体の座標位置及び前記移動体が向いている方位のいずれかを決定する、
処理を実行する移動体位置決定装置。
【0073】
(付記2)
前記画像を含む、撮像タイミングがそれぞれ異なる複数の画像に基づいて、夫々異なる発光パターンで発光する前記少なくとも2つの発光装置を識別する、
処理を実行する請求項1に記載の移動体位置決定装置。
【0074】
(付記3)
前記撮像装置の焦点を始点とし、前記少なくとも2つの発光装置の画像内の座標位置を終点とする複数の3次元方向ベクトルと、撮像装置が向いている方向を示す姿勢データと、を取得し、
取得された前記複数の3次元方向ベクトル、及び、前記少なくとも2つの発光装置の前記3次元空間における高低差に基づいて、前記撮像装置から前記少なくとも2つの発光装置までの3次元空間上の各距離と、前記撮像装置が向く光軸方位と、を取得する、
処理を実行する付記1又は2に記載の移動体位置決定装置。
【0075】
(付記4)
取得された前記各距離のうちの長い方を調整する、
処理を実行する付記3に記載の移動体位置決定装置。
【0076】
(付記5)
前記複数の3次元方向ベクトルと、取得された前記各距離と、に基づいて算出される前記3次元空間の座標位置とのずれ量の比に従って、前記各距離を調整する、
処理を実行する付記3に記載の移動体位置決定装置。
【0077】
(付記6)
前記移動体の座標位置決定のために、前記画像における外縁部に存在する発光装置の座標位置を使用しないように制御する、
処理を実行する付記1乃至5のいずれかに記載の移動体位置決定装置。
【0078】
(付記7)
第1発光装置及びその他の発光装置を含む画像を示す第1画像の取得後に取得される画像が、前記第1発光装置のみを含みその他のいずれの発光装置を含まない第2画像であった場合に、算出される前記第1発光装置移動体の移動ベクトルに基づいて、前記移動体の座標位置を決定する、
処理を実行する付記1乃至6のいずれかに記載の移動体位置決定装置。
【0079】
(付記8)
前記移動体に取り付けられた複数の前記撮像装置から取得される画像に従って、前記移動体の座標位置を決定する、
処理を実行する付記1乃至7のいずれかに記載の移動体位置決定装置。
【0080】
(付記9)
コンピュータに、付記1乃至8のいずれかに記載の移動体位置決定装置の処理を実行させる方法。
【0081】
(付記10)
コンピュータに、付記1乃至8のいずれかに記載の移動体位置決定装置の処理を実行させるプログラム。
【符号の説明】
【0082】
1…可視光通信システム、100…フォークリフト、101a、101b…カメラ、102、102a、102b、102c…マーカ、200…サーバ、202…制御部、203…無線通信部、204…画像処理部、205…メモリ、206…操作部、207…表示部、208…通信部、230…画像取得部、232…マーカ特定部、234…画像位置補正部、236…3次元位置取得部、500…空間、601a、601b…画像、603a、603b、603c、603d…無効領域、610a、610b…マーカの画像位置、700…画像領域、710…カメラ位置候補線、C10…中心、C20…カメラの3次元位置、P1…前々回位置、P2…前回位置、V1、V2、V3…XY平面ベクトル、V100…3次元方向ベクトル、V110…移動ベクトル、V120…延長ベクトル