現場作業支援システム
【課題】拡張現実感技術を利用する現場作業支援システムにおけるトラッキング誤差により作業者に誤った情報を提供するのを防止する。
【解決手段】作業現場に設置されたラインマーカ5を撮影した撮影画像から画像認識によって得たコードマーク画像位置と該ラインマーカ5の実際の寸法から計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、トラッキング誤差の大きさによって作業者に提供する情報を制御する。
【解決手段】作業現場に設置されたラインマーカ5を撮影した撮影画像から画像認識によって得たコードマーク画像位置と該ラインマーカ5の実際の寸法から計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、トラッキング誤差の大きさによって作業者に提供する情報を制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、拡張現実感(Augmented Reality;AR)技術を利用して現場作業を支援する現場作業支援システムに関する。
【背景技術】
【0002】
拡張現実感技術は、現実の光景にCG(Computer Graphics)情報を重ね合わせて表示する技術であり、現場作業に有用な情報を現場作業者に提供して現場作業を支援する現場作業支援システムに応用されている。
【0003】
【特許文献1】特開2007−34238号公報
【特許文献2】特開2007−18188号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
拡張現実感技術を利用して作業者の作業を支援するためには、高精度のトラッキング(作業現場における作業者の位置と方向をリアルタイムに計測する技術)が必要である。
【0005】
現在のトラッキング技術として、作業現場にマーカを貼付しておき、作業者が携行するカメラで作業現場を撮影して得た撮影画像中のマーカに基づいてカメラ(作業者)の位置と向きを計測する技術が提案されているが、作業現場の全体で高精度にトラッキングを行うことは困難であり、計測精度が場所によって高低する。計測精度が低い状態で作業者に対して情報(例えば、作業指示)を提供すると、間違った作業指示となって作業ミスを誘発する恐れがある。
【0006】
本発明の1つの目的は、現場作業支援システムにおけるトラッキング精度を予測することにより、作業者に対して誤った情報を提供するのを防止することにある。
【0007】
本発明の他の目的は、現場作業支援システムにおける作業現場を撮影するカメラのキャリブレーションが十分ではないことに起因して撮影画像中のマーカの画像処理において発生する認識誤差により誤った情報を提供するのを防止することにある。
【0008】
本発明の更に他の目的は、現場作業支援システムにおけるトラッキング誤差の軽減を実現するのに好ましいマーカ配置方法を提案することにある。
【課題を解決するための手段】
【0009】
本発明は、予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行う情報処理装置を備えた現場作業支援システムにおいて、
前記情報処理装置は、撮影画像から画像認識によって得たコードマーク画像位置とラインマーカから計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、トラッキング誤差の大きさによって作業者に提供する情報を制御する処理を行う情報処理機能を備えた構成とする。
【0010】
そして、前記情報処理装置は、更に、推定したトラッキング誤差が所定値よりも小さいときには作業指示情報画像を前記表示装置に表示させ、推定したトラッキング誤差が所定値以上のときには警告情報画像を前記表示装置に表示させる制御処理を行うように構成する。
【0011】
また、前記作業指示情報画像は、作業禁止指示情報画像を含む構成とする。
【0012】
そして、トラッキング誤差の軽減を実現するのに好ましいラインマーカ配置方法は、前記カメラの位置の計測誤差が最小となるように、遺伝的アルゴリズムにより最適化配置処理を行うことで決定された位置に配置することにより実現する。
【0013】
具体的には、ラインマーカに対して、
(1)画像処理によって得られるコードマークに含まれる誤差の大きさの推定し、
(2)(1)の結果と誤差計算手法及び遺伝的アルゴリズムを用いて、様々なラインマーカ配置における作業現場内のトラッキングの誤差の大きさを推定し、徐々に高い精度が期待できるラインマーカ配置を繰り返し計算により求める、ことにより実現する。
【発明の効果】
【0014】
本発明は、トラッキング精度を予測(トラッキング誤差を推定)して作業者に対して提供する情報を制御する構成であることから、作業者に対して誤った情報を提供するのを防止することができる。
【0015】
具体的には、作業現場を撮影するカメラのキャリブレーションが十分ではないこと、カメラの解像度が有限であること、マーカの貼り付け位置の情報に誤りや誤差が含まれること、照明が不完全であること等に起因して撮影画像中のマーカの画像処理において発生する認識誤差により誤った情報を提供するのを防止することができる。
【0016】
また、トラッキング誤差を軽減するのに好ましいラインマーカの配置が可能となる。
【発明を実施するための最良の形態】
【0017】
本発明は、予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行う情報処理装置を備えた現場作業支援システムにおいて、
前記情報処理装置は、撮影画像から画像認識によって得たコードマーク画像位置とラインマーカから計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、推定したトラッキング誤差が所定値よりも小さいときには作業(作業禁止)指示情報画像を前記表示装置に表示させ、推定したトラッキング誤差が所定値以上のときには警告情報画像を前記表示装置に表示させる制御処理を行うように構成する。
【0018】
そして、トラッキング誤差の軽減を実現するために好ましいマーカ配置方法は、前記カメラの位置の計測誤差が最小となるように、遺伝的アルゴリズムにより最適化配置処理を行うことで決定された位置に配置することにより実現するものであり、具体的には、ラインマーカに対して、
(1)画像処理によって得られるコードマークに含まれる誤差の大きさを推定し、
(2)(1)の結果と誤差計算手法及び遺伝的アルゴリズムを用いて、様々なラインマーカ配置における作業現場内のトラッキングの誤差の大きさを推定し、徐々に高い精度が期待できるラインマーカ配置を繰り返し計算により求めるように行うことにより実現する。
【実施例1】
【0019】
図1は、現場作業支援システムの機能ブロック図である。
【0020】
作業現場(作業する施設)を撮影するカメラ1は、作業者が装着するAR機能付きのHMD(Head Mounted Display)2の頭上に該HMD2を装着した作業者の顔の向きの前方向(作業者の視界方向)を撮影するように取り付ける。
【0021】
この実施例は、表示装置をHMDを利用する例で説明するが、HMDに限らず、タブレットPCを採用しても実施することができる。また、カメラの向きは、ラインマーカの貼り付け位置との関係で、必ずしも作業者の顔の向きではなく、ラインマーカを天井面に貼り付けて設置するときは、カメラを上方向に向けてラインマーカを撮影してトラッキングを行うように変形することもできる。
【0022】
カメラ1は、図2に示すように、3台のカメラ1a,1b,1cを横に並べて作業現場を広角度に撮影することができるように構成する。この実施例ではカメラを3台使用する例で説明するが、2台あるいは4台で実施するように変形することができる。
【0023】
現場作業支援のための各種の情報処理を実行する情報処理装置(携帯型のパーソナルコンピュータ)3は、基本的には、前記カメラ1から撮影画像を入力して画像処理することによって作業現場における作業者の位置および向きを計測し、HMD2の表示画面に作業現場の撮影画像または予め記憶している設計情報に基づいて生成した作業現場のCG画像と指示情報を重ねて表示させる情報処理を行う。
【0024】
作業現場4には設計情報に基づいて各種の機器41(41a,41b…)が設置されており、その幾つかの機器41a,41f…にはラインマーカ5(5a,5b…)が予め既知の位置に貼付される。このラインマーカ5は、カメラ1の撮影画像中の位置から該カメラ1の位置と向き(作業者の位置と向き)を算出するための画像情報として使用する。
【0025】
各ラインマーカ5は、図3に示すように、細長い帯状の基材51の表面に11ビットのコードマーク52(52a〜52k)を長さ方向に所定の間隔で並べて設け、裏面を施設内の幾つかの機器41a,41f…の表面に貼付して設置するように構成する。通常は、所定の高さ位置に縦長垂直状態に設置するのが望ましい。
【0026】
この実施例では、ラインマーカ5は、コードマーク52が11ビットの例を示したが、このビット数は必要に応じて自由に変更することができる。ちなみに、ビット数を増やすと、誤り訂正できるビット数を増加したり、一度に利用できるラインマーカの数を増加させることができる。
【0027】
各ラインマーカ5に設けたコードマーク52は、30mm×30mmの正方形が「0」,30mm×60mmの長さ方向の長方形が「1」のビットデータを表し、上から7ビットをマーカIDビット、下4ビットを誤り訂正ビットとして使用する。図示のラインマーカ5のコードデータは、「01010000101」である。
【0028】
この実施例では、コードマーク52を30mm×30mmの正方形、30mm×60mmの長さ方向の長方形の例を示したが、ラインマーカ5を貼り付ける場所の大きさや、ラインマーカ5とカメラ1の間の平均距離によって、コードマーク52の大きさを、すべてのコードマーク52に対して統一して変更することができる。
【0029】
HMD2の表示画面21には、作業現場4の撮影画像(CG画像)21a上に指示情報画像21bを重ねた状態で表示する。図示の例は、作業現場に設置されている機器(バルブ)41g,41hの開放操作を指示し、機器(バルブ)41i〜41kについては開放操作を禁止することを指示する指示情報を表示した状態である。
【0030】
このような画像表示は、情報処理装置3がカメラ1から入力した作業現場4の撮影画像(情報)中のラインマーカ5のコードマーク画像の画像位置情報に基づいて該作業現場4における作業者の位置および向きを計測し、作業現場4の撮影画像または予め記憶している設計情報に基づいて作業者の位置と向きを基準にして生成した作業現場のCG画像21aに該作業現場4の機器41に対して行う作業内容を予め設定して記憶させた作業指示情報(作業指示情報画像や作業禁止指示情報画像)21b1,21b2を読み出して重ねて表示する情報処理を行うことによって実現する。
【0031】
このように作業現場4の撮影画像中のラインマーカ5のコードマーク画像位置情報に基づいて該作業現場における作業者の位置および向きを計測するためには、各ラインマーカ5のコードマーク画像が正確な形状で撮影画像21a中に存在しなければならない。しかしながら、カメラ1のレンズの歪み補正が不十分である場合には、撮影画像を処理してラインマーカの位置を認識すると誤差が生じる。そして、この誤差を含んだ位置情報に基づいてカメラ1(作業者)の位置や姿勢を計算すると、当然に、誤差が発生する。
【0032】
しかも、誤差には、更に、作業現場4の機器41に対するラインマーカ5の取り付け誤差(予め設定した取り付け位置情報と実際の取り付け位置間の誤差)や計算処理上の誤差(情報処理装置3が扱う数字の桁数の制約や求解の最適化計算を途中で止めることによる誤差)などが加わる。
【0033】
この発明は、カメラ1のレンズの歪み、カメラの解像度が有限であること、ラインマーカの貼り付け位置の情報に誤りや誤差が含まれること、照明が不完全であること等に因る計測誤差に起因するトラッキング誤差により作業者(HMD2)に誤った指示情報を提供(表示)するのを防止するものである。
【0034】
図4を参照して、カメラ1のレンズ補正が不十分であるために発生する誤差について説明する。
【0035】
図4の(a)は、レンズ補正が完全な状態にあるカメラ1で撮影した撮影画像21a中のラインマーカ5のコードマーク画像列5aであり、各コードマーク画像53は、直線状に並んだ状態に写る。しかしながら、レンズ補正が不十分なカメラ1で撮影した撮影画像21a中のラインマーカ5のコードマーク画像列5bの各コードマーク画像54は、(b)に示すように、わん曲して並んだ状態に写る。
【0036】
この実施例1の現場作業支援システムは、このようなカメラ1のレンズの歪みに因る誤差(トラッキング誤差)の大きさを推定して作業者に提供する情報を制御(編集)する構成である。
【0037】
図5は、このような制御を実現するために情報処理装置3が実行する情報処理のフローチャートである。
【0038】
ステップS301
カメラ1から作業現場(施設内)の撮影画像情報を取得する。
【0039】
ステップS302
取得した撮影画像情報を画像処理することによりラインマーカ5のコードマーク画像列を認識し、各コードマーク画像の重心位置を求める。この処理は、撮影画像中に存在する総てのラインマーカ5のコードマーク画像列に対して行う。
【0040】
具体的には、画像を2値化してラベリングし、正方形,長方形領域を検索し、正方形と長方形の領域が直線状に所定数(ラインマーカ5のコードマーク数)並んでいるものを検索してコードマーク画像列(ラインマーカ5)として認識し、コードマーク画像列の正方形を「0」,長方形を「1」としてマーカIDを認識する。また、コードマーク画像列の両端のコードマーク画像の重心位置をコードマーク画像列(ラインマーカ5)の両端の両端の位置とするように行う。
【0041】
ステップS303
カメラ1のレンズの予め分かっている歪みパラメータを用いてステップS302の処理結果を補正する。
【0042】
ステップS304
撮影画像中のコードマーク画像列の位置からラインマーカ5とカメラ1の相対的な位置関係を計算(トラッキング)する。
【0043】
ステップS305
ステップS304の処理で得たカメラ1の位置情報、カメラ1の各種のパラメータ、ラインマーカ5の貼付位置情報を用いて、コードマーク画像列が撮影画像のどの位置に写り込んでいるべきかを計算(逆算)する。
【0044】
図6(a)は、撮影画像中に写り込んでいるラインマーカ5のコードマーク画像列と認識した両端のコードマーク画像の位置を示し、(b)は、計算によって求められたコードマーク画像列の両端のコードマーク画像の写り込み予定位置を示している。
【0045】
ステップS306
画像処理によって認識したコードマーク画像列の端の位置(図6(a))とトラッキングの結果から逆算したコードマーク画像列の端の位置(図6(b))の撮影画像上での距離diRPを求める。ここで、iは、コードマーク画像列の端の通し番号(最大値は、コードマーク画像列の数の2倍になる)、diRPの最大値をdMAXRPとする。
【0046】
ステップS307
ステップS302で求めたラインマーカ5の各コードマーク画像の重心位置を用いてコードマーク画像列を直線で近似し、近似した直線とコードマーク画像列の2端間の距離diRVを求める。そして、diRVの最大値をdMAXRVとする。
【0047】
図7(a)〜(d)は、先のステップにおいて撮影画像中のコードマーク画像列(a)から各コードマーク画像の重心を求め、そして、本ステップ307において、最小二乗法により各コードマーク画像の重心に最も近い直線を求め、次いで、近似した直線とコードマーク画像列の2端間の距離diRVを求める内容を図示したものである。
【0048】
ステップS308
ステップS302で求めたラインマーカ5の各コードマーク画像の重心位置から求められる各コードマーク画像間の距離とラインマーカ5のマーカIDが示す該ラインマーカ5の実際の寸法から計算できる各コードマーク画像間の距離の差diRHを各コードマーク画像毎に求める(図8参照)。ここで、diRHの最大値をdMAXRHとする。
【0049】
ステップS309
(数1)式を用いて、撮影画像から認識したコードマーク画像列の位置に含まれる可能性がある誤差の最大値(最大誤差推定値)dMAXを求める。
【0050】
【数1】
ステップS310
各トラッキング毎の予想されるトラッキング誤差の大きさを推定する。トラッキング誤差の大きさを推定する計算アルゴリズムは、後述する。
【0051】
ステップS311
推定したトラッキング誤差の大きさに応じてHMDに表示して作業者に提供する情報を制御する。例えば、推定したトラッキング誤差が所定値よりも小さいときには作業指示(作業禁止)情報を表示して作業者に提供し、推定したトラッキング誤差が所定値以上のときには作業指示情報を表示せずにトラッキング誤差を減少させるための撮影画像情報を入力するためにカメラ1の向き(作業者の顔の向き)を変えるように指示する警告情報を表示する。
【0052】
前記ステップS310におけるトラッキング誤差の大きさの推定は、例えば、次ぎのような計算アルゴリズムによって行うことができる。
【0053】
この実施例において使用するトラッキング誤差の計算アルゴリズムにおいて、トラッキングの誤差を計算する手法は、以下の要件を満たす必要がある。
(1)プラント内部で拡張現実感を利用する場合、想定する誤差よりも大きな誤差が発生する可能性がある場合、作業者に間違った指示を出してしまう可能性があり、危険である。そのため、トラッキングの誤差の計算方法は、「90%の確立で10mm以内の計測誤差」の様な確率的な結果ではなく、「最大誤差が13mm」の様な絶対的な結果を計算できる必要がある。
(2)ラインマーカの最適化では、様々なラインマーカ配置における誤差を繰り返し計算する必要がある。そのため、誤差の計算方法は、十分高速である必要がある。
【0054】
拡張現実感を利用するユーザ(作業者)は、発電プラントにおける作業を想定する。また、その支援の内容も、特定の作業現場へのナビゲーションや、配管に流れる流体の量や種類の指示等、プラント設備を眺めた際の情報提示を想定する。この場合、作業者の頭の位置(作業者が装着するカメラの位置)は、
(1)高さがほぼ一定(作業者の身長程度)である、
(2)左右・上下の首振り回転は頻繁に行うが、首を傾けることは希である、
という特徴があると考えられる。
【0055】
そこで、この実施例1では、これらの特徴を利用して、トラッキング誤差の計算アルゴリズムを簡略化する。
【0056】
座標系と各種定義
図9に座標系の定義を示す。スクリーン座標系の原点は、カメラ撮影画像の中心とし、x軸をカメラ撮影画像の左から右方向に、y軸を上方向とする。カメラ座標系の原点は、カメラの焦点位置とし、z軸方向をカメラの撮影視野方向、x軸とy軸をスクリーン座標と平行とする。
【0057】
カメラの位置姿勢は、6自由度のベクトル(カメラの位置で3自由度、カメラの姿勢で3自由度)で表現される。
【0058】
カメラとラインマーカ(コードマーク画像列)を用いたトラッキングでは、1つのラインマーカから計算の基準となる特徴点を複数認識して利用する場合もあるが、この実施例1では、1つのラインマーカから1つの特徴点を認識するものと仮定し、特に断りが無い限り、以下ではラインマーカと特徴点は同義とする。
【0059】
Cをカメラの真の位置姿勢とし、Qi(i=1,2,‥,n)をラインマーカの3次元位置とする。(nはカメラに写ったマーカの総数)。今、Cの位置姿勢にあるカメラでラインマーカを撮影した時、カメラ撮影画像上で、位置Mi(i=1,2,‥,n)にラインマーカが写ったと認識されたとする(Miは2次元ベクトル)。この結果を用いてカメラの位置姿勢を推定した結果をCestとする。位置Miに、カメラの解像度が有限であること、レンズの補正が充分でないこと等が原因で、最大でΔの誤差が含まれているとする。この時、ラインマーカのカメラ撮影画像上での位置Mi'(i=1,2,‥,n)が、下記式(数2)を満たす位置にくるカメラの位置姿勢C'の集合は、Cestのまわりのある程度の大きさを持った領域となる。
【0060】
【数2】
この実施例1では、この領域をTER(Tracking Error Region)と呼ぶ。
【0061】
図10にTERの概念図を示す。カメラの真の位置Cは、このTERの領域の中に含まれるため、トラッキング誤差の最大値を求める計算アルゴリズムはTERの領域の中で、Cestから最も離れた点を求め、その点とCestの距離の差を求めるアルゴリズムである。
【0062】
誤差限界曲線の計算
この実施例1において使用するトラッキング誤差の計算アルゴリズムでは、カメラが移動する高さが作業者の身長でほぼ変化せず、左右・上下の回転のみを行うという仮定のもと、以下の流れでTERを求める。
【0063】
(1)画像処理により認識されたラインマーカのすべての2個の組み合わせに関し、ラインマーカのカメラ撮影画像上でのx座標がそれぞれ、x1±△、x2±△の範囲内に常に入るカメラの位置姿勢の集合の境界(誤差限界曲線と呼ぶ)を求める(x1、x2はカメラが真の位置にあるときにカメラ撮影画像上に写る2つのラインマーカのx座標)。
【0064】
(2)画像処理により認識されたすべてのラインマーカに関し、ラインマーカのカメラ撮影画像上でのy座標がy±△の範囲内に常に入るカメラの位置姿勢の集合の誤差限界曲線を求める(yはカメラが真の位置にあるときにカメラ撮影画像上に写るラインマーカのy座標)。
【0065】
(3)前記(1)と(2)で求められた誤差限界曲線で囲まれる領域をTERとする。
【0066】
以下の説明では、n個のラインマーカがカメラで撮影され、その位置が認識されたと仮定する(nの値は3以上とする)。
【0067】
x座標に関する誤差限界曲線の計算
図11において、点PAおよび点PBをラインマーカQA(xa,ya,za)およびQB(xb,yb,zb)のx−z平面上への射影点とする。
【0068】
点Aを線分CPAとカメラスクリーンのx軸との交点とし、点Bを線分CPBとカメラスクリーンのX軸との交点とする。点A,A1,A2,B,B1,B2は全てカメラスクリーンのX軸上にあるとし、‖A1A‖=‖AA2‖=‖B2B‖=‖BB1‖=△とする。このとき、ラインマーカのカメラ撮影画像上での真の座標x座標は、点A1と点A2の間および点B1と点B2との間にくる。すなわち、以下の式を満たす位置姿勢C'が形成する領域の中に、カメラの真の位置姿勢Cが含まれる。
【0069】
【数3】
ここで、α2=∠A2CB2およびα1=∠A1CB1である。これらの2つの角度は、以下の4つの式を計算することにより求めることができる。
【0070】
【数4】
【0071】
【数5】
【0072】
【数6】
【0073】
【数7】
ここで、Dは、カメラスクリーンの中心、fはカメラのレンズの焦点距離である。∠PAC'PB=α1および∠PAC'PB=α2を満たす位置姿勢C'の集合は、図12に示すように円となる。従って、式(数3)を満たす位置姿勢C'の集合は、図12における灰色に塗られた領域となる、
図12中のCircle 1とCircle 2の求め方は同じであるため、以下ではCircle 1の求め方を示す。まず、Circle 1の中心を求める。点FをCircle 1上の点であり、‖PAF‖=‖PBF‖を満たすとする。また、Eを線分PAPB上の点とし、‖PAE‖=‖PBE‖を満たすとする。この時、線分EFは、線分PAPBの垂直2等分線となる。従って、線分EF上にCircle 1の中心O(xO,0,zO)が存在する。ここで、‖OF‖=‖OPB‖=Rであり、∠PAFPB=α1であるため(RはCircle1の半径)、∠OFPB=∠OPBF==α1/2が成り立つ。従って、以下の式によりCircle 1の半径Rを求めることができる。
【0074】
【数8】
線分PAPBとx軸のなす角はγ==atan{(zb−za)/(xb−xa)}で計算でき、線分PAOとx軸のなす角はθ=−(π/2−α1−γ)で計算できる。従って、Circle 1の中心は以下の式(数9),(数10)で計算できる。
【0075】
【数9】
【0076】
【数10】
以上の方法で求められる円を以下ではX座標に関する誤差限界曲線と呼ぶ。
【0077】
y座標に関する誤差限界曲線の計算
図13において、点PAを、ラインマーカQAのx−z平面上への射影点、点Aを線分CQAとスクリーンとの交点とする。点A1、A2を‖A1A‖=‖AA2‖=△を満たすスクリーン上の点とし、線分A1A2はスクリーンのy軸に平行であるとする。点Dをスクリーンの中心とする(‖CD‖=f)。
点Eは点Aのx−y平面上への射影点である。
【0078】
y座標に関する誤差限界曲線の計算方法
このとき、ラインマーカのカメラ撮影画像上での真のy座標は、点A1と点A2の間の間に来る。すなわち、以下の式を満たす位置姿勢C'が形成する領域の中に、カメラの真の位置姿勢Cが必ず含まれる。
【0079】
【数11】
ここでβ2=∠A2CPAおよびβ1=∠A1CPAである、β2=∠QAC'PAおよび∠QAC'PA=β1を満たすC'は共に点PAを中心とする円となり、その円の半径は‖QAPA‖ctanβ2および‖QAPA‖ctan∠β1で計算できる。ここで
【0080】
【数12】
【0081】
【数13】
【0082】
【数14】
である。以上の方法で求められる円を以下ではy座標に関する誤差限界曲線と呼ぶ。
【0083】
TERからのトラッキング誤差の計算方法
先に求めた全ての誤差限界曲線で囲まれる領域の中にカメラの真の位置が含まれる。そこで、総ての誤差限界曲線で囲まれる領域とカメラの真の位置との間で最も離れている点と、カメラの真の位置との距離を求めることができれば、トラッキングを実行する際に起こりうる誤差の最大値を求めることができる。図14に総ての誤差限界曲線で囲まれる領域(TER)を求める方法の概念図を示す。以下では説明を簡単にするために、カメラ撮影画像で認識されたラインマーカの数が3個の場合を説明する。ラインマーカの数がn個の場合は、ラインマーカの数が3個の場合の計算方法の内、円の交点を求める際の円の組み合わせの数が増えるだけである。
【0084】
図14に示すように、ラインマーカQA、QB、QCのカメラ座標系におけるx−z平面への射影点をそれぞれPA、PB、PCとする。図14に示すArea 1は、ラインマーカQAおよびQBのx座標に関する誤差限界曲線に囲まれる領域であり、この領域内に真のカメラの位置姿勢が含まれる。QAおよびQC、QBおよびQCの組み合わせに関しても同様の領域を求める。Area 2は、ラインマーカQAのy座標に関する誤差限界曲線に囲まれる領域であり、この領域内に真のカメラの位置姿勢が含まれる。QBおよびQCに関しても同様の領域を求める。以上により求められた領域(この場合は合計6領域)に共通して含まれる領域がTERとなり、この中に真のカメラの位置姿勢が含まれる。前述の様に、誤差を含んだラインマーカの認識位置を用いて求めたカメラの位置と、TER領域内で最も離れた位置の距離が、トラッキングを実行する際に起こりうる誤差の最大値となる。ここで、誤差を含んだラインマーカの認識位置を用いて求めたカメラの位置からの最も離れたTER領域内の位置は、必ず誤差限界曲線同士の交点の内の1つであるという性質を用いると、トラッキングを実行する際に起こりうる誤差の最大値を求めることができる。
【0085】
以上の流れを纏めると、認識されたラインマーカの総数がn個の場合、トラッキングを実行する際に起こりうる誤差の最大値を求めるためには、x座標に関する誤差限界曲線としてnC2×2個、y座標に関する誤差限界曲線として2n個の円を求め、それらの全ての円(計n(n+1)個)の組み合わせに関して交点を求める必要がある。従って、トラッキングの誤差を求めるのに必要な計算量は、認識されるラインマーカの数の2乗に比例して大きくなるが、同時に認識されるラインマーカの総数は多い場合でも10程度であり、計算量としてはそれほど多くはならない。認識されるラインマーカの総数が10以上になる場合は、トラッキングに利用されないラインマーカが多くなるため非効率である。この場合は、作業現に貼り付けて設置するラインマーカの数を減らすべきである。
【0086】
次に、この実施例の適用例について、図17及び図18を参照して説明する。
【0087】
図17に示すように、10m×15mの部屋内に6本のラインマーカ(長さ約60cm)5を貼付して設置し、カメラ(Dragonfly B&WXGA,f=6.37mm)1を1m間隔で格子状に移動(2m〜11m)し、実際のカメラの位置(手作業で計測)とトラッキングの結果の差をトラッキング誤差として計算することにより、図18に示すような結果が得られた。
【0088】
ここで、施設(作業領域)内におけるラインマーカ配置の最適化について説明する。
【0089】
ラインマー力配置の最適化アルゴリズム
ラインマーカ配置の最適化アルゴリズムの目標は、拡張現実感の作業者がある領域内を移動する場合、ラインマーカの貼り付け位置を調整することにより、その領域内のトラッキングの精度を向上させることである。作業者が移動する領域とラインマーカを貼り付けることができる領域に関する情報を元に、直接、解析的な計算により最適なラインマーカ配置を求めることは、計算手法が非常に複雑になるため非常に困難である。そこで、この実施例では、遺伝的アルゴリズムを用いた適化繰り返し計算により、ラインマーカの貼り付け位置を求めることにした。その際、想定するトラッキング手法の応用先が、プラント内部での作業支援であることを考慮すると、ラインマーカを貼り付けることができる領域は、細長い配管の表面や壁や天井等の平面になると考えられる。そこで、ここでは、マーカを貼り付けることができる領域の形状を直線および平面の2種類とすることにした。
【0090】
染色体のコード化
この実施例で使用する遺伝的アルゴリズムにおける個々の染色体は、環境に貼り付けるラインマーカの個数と同数の遺伝子を持ち、1つの遺伝子が、1つのラインマーカの位置情報を持つ。染色体Mtiは、
【0091】
【数15】
で定義される。ここで、nは環境に貼り付けるラインマーカの個数、fは染色体の個体番号、tは世代番号である。すなわち、mtikは、t番目の世代として求められた、f番目のラインマーカ配置におけるk番目のラインマーカの貼り付け位置を表す。
【0092】
評価関数
e=g(x,M)を、ラインマーカ配置Mにおける位置姿勢xでのトラッキング誤差とする。この実施例では、この計算に前述したトラッキング誤差の計算方法を用いるが、そのためには、ラインマーカ配置、カメラの解像度、カメラのピクセルサイズ、レンズの焦点距離等の情報から、カメラにどのラインマーカが写っており、どのラインマーカが認識されるかを判断する必要がある。これは、カメラの視野と方向を解析的な計算で求め、ラインマーカの配置情報をもとにその視野内にラインマーカが入っているかどうかを調べることにより容易に判断できる。ただし、実際には、カメラの視野内にラインマーカが入っていても、カメラ画像上でのラインマーカの大きさが小さすぎる等の理由のために認識できない場合も起こりうるために、カメラとラインマーカの間の距離がある閾値以上の場合には、そのラインマーカが認識されないと判断する処理が必要である。ただし、以下では、説明を簡単にするために、カメラの視野に入ったラインマーカはその距離に関係なく、総て認識されるものとする。
【0093】
ラインマーカの配置を最適化するために遺伝的アルゴリズムを用いるにあたり、その評価関数は、最適化の基準に応じて設定するべきである。この実施例では、プラント内部で拡張現実感を利用する際のラインマーカの配置を最適化することを考えるが、その場含、作業者に提示する情報の正確性が問題になる。すなわち、トラッキングの精度が悪く、間違った位置や方向情報を作業者に提供してしまうと、ヒューマンエラーを誘発する原因となってしまうため、これは避けるべきである。従って、この実施例では、ラインマーカ配置最適化の1つの例として、「作業者が移動する範囲内全体での最も大きい誤差の大きさを最小化する」ことを今回の評価関数設定の目標とする。
【0094】
この様なラインマーカ配置の最適化の目標を定めた場合、本来は、作業者が移動する範囲内で起こりうる総ての位置姿勢に関してトラッキングの位置姿勢を評価し、その最大値を求めることが理想であるが、そのためには膨大な位置姿勢におけるトラッキング誤差の計算を繰り返す必要があり計算量が膨大になるために現実的ではない。そこでこの実施例では、予め定めた有限の位置姿勢に関してトラッキングの誤差を計算し、その結果の中の最大値を小さくする方向でラインマーカの配置を変化させる。すなわち、この実施例では、遺伝的アルゴリズムにおける評価関数を以下の式で定義する。
【0095】
【数16】
ここで、xjはj番目のカメラの位置姿勢であり、npは評価に用いられる位置姿勢の総数である。この方法を用いると、予め選定された位置姿勢では、トラッキングの精度が上がり、それ以外の位置姿勢では、トラッキングの精度が下がる可能性がある。しかし、一般に、カメラに写るラインマーカの種類と数が同じである場合、隣り合う位置姿勢のトラッキングの精度は似た傾向になる傾向があり、予め選定された位置姿勢の周辺に関しても、トラッキングの精度が向上すると予想される。そのため、拡張現実感で支援する作業の特性や領域の配置に応じて、高いトラッキング精度が要求される領域の周辺で多くの位置姿勢を選定し、低いトラッキング精度で十分な領域では、少数の位置姿勢を選定すれば、目的の特性を持ったラインマーカ配置を得ることができると考えられる。ただし、この方法では「トラッキングの誤差の最大値は10mmである」のような精度を保証することはできない。従って、この実施例で提案する遺伝的アルゴリズムを用いたラインマーカの最適化手法を実用化する場合には、前述した様に、実際にトラッキングを行う際にも、ラインマーカの配置情報とトラッキングによって得られた位置姿勢を元に、前述のトラッキング誤差の計算アルゴリズムを実行し、誤差の大きさを推定し、その結果を基に情報提示をするかどうかを判断するべきである。
【0096】
初期化
この実施例では、遺伝的アルゴリズムの第1世代として、染色体の遺伝子の数を、ラインマーカを貼り付けることができる領域の数と同数(ラインマーカを配置可能な領域1つに対して1つのラインマーカを配置)とし、各遺伝子にラインマーカを貼り付けることができる領域の範囲内でランダムに定められた位置情報を持たせる。
【0097】
再初期化
この実施例では、初期化の際にラインマーカの初朗配置をランダムに定めるため、評価の対象となる位置姿勢の中で、カメラに十分な数のラインマーカが写らない位置姿勢ができる可能性がある。この場合、ラインマーカの初期配置を何回か繰り返し定め直すと、カメラに十分な数のラインマーカが写るようになる可能性もあるが、必ず十分な数のラインマーカが写るようになるとは限らない。そこで、この実施例では、初期化の際にカメラに十分な数のラインマーカが写らない位置姿勢ができた場合には、その位置姿勢でのカメラに写るように新しいラインマーカを1つ配置する(位置は、ラインマーカを貼り付けることができる領域内からランダムに定める)。この処理をこの実施例では再初期化と呼ぶ。この際、遺伝的アルゴリズムにおける染色体が持つ遺伝子の数は1つ増えることになる。ラインマーカを貼り付けることができる領域の制限が原因で、問題となる位置姿勢でのカメラに写るように新しいラインマーカを貼り付けることができない場合、目的とする領域でのトラッキングが実現できないと判断される。この場合は、ラインマーカを貼り付けることができる領域を新たに確保する必要がある。
【0098】
交叉
交叉は一般に用いられる遺伝的アルゴリズムと同様、2つの親染色体をランダムに選択し、遺伝子のある一点で入れ替えることにより行うすなわち、hを[1,n]の範囲内のランダムな整数とした場合、交叉は以下の式で表ざれる。
【0099】
【数17】
突然変異
この実施例における突然変異は、以下の式で表現される。
【0100】
【数18】
ここで、hは[1,n]の範囲内のランダムな整数であり、mt+1ihは、h番目のラインマーカを貼り付ける新しい位置の候補(予め設定されたラインマーカを貼り付けることができる領域の範囲内でランダムに選ぶ)である。
【0101】
選択
この実施例における選択はルーレット選択を用いる・すなわち、'番目の染色体が選択される確率を以下の式で計算する。
【0102】
【数19】
ここで、f(Mi)およびf(Mk)は、i番目およびk番目の染色体の評価関数値、pは染色体の総数(人口)である。この実施例では、一般の遺伝的アルゴリズムと同様に、上記確率に応じて優秀な染色体を残し、優秀ではない染色体を削除する。
【0103】
遺伝的アルゴリズムの染色体総数と世代数の設定
遺伝的アルゴリズムを実行するにあたり生成する染色体の総数は、環境に貼り付けられるラインマーカの総数に応じて決定するべきである。すなわち、1つのラインマーカに対してk個の位置の候補を評価する為には、ラインマーカの総数がn個の場合、最低nk個の染色体を生成するべきである。
【0104】
遺伝的アルゴリズムでは一般に、交叉を実行する世代数が多くなるほど、より適切な結果が得られる。しかし、非常に大きい世代数まで交叉させると、計算量が多くなり、結果を得るまでに要する時問が長くなる。どの世代で計算をうち切るべきかに関する詳しい議論はこの実施例では行わないが、実際の現場で拡張現実感を利用することを考えた場合、必ずしも最適なラインマーカ配置を求める必要はなく、現場で要求される精度を満たしたラインマーカ配置が求められれば最適でなくても良いとも考えられる。従って、遺伝的アルゴリズムで実行する世代数は、使用するコンピュータの性能や費やすことができる時問によっても変化するが、基本的には、評価関数で得られた値を元に、要求される精度のトラッキングを実現できるラインマーカ配置が求まったかどうかを各世代で判断し、既に求まっている場合には、そこで計算をうち切るという方針が適切であると考えられる。
【0105】
提案手法の試用とその結果
この実施例で提案する遺伝的アルゴリズムを用いたラインマーカの最適化手法の効果を確認するために、シミュレーションベースの評価実験を行った。
【0106】
実験に用いた疑似プラント環境
図15にこの評価実験で用いた疑似プラント環境を示す。この環境は大きさが奥行き8m、幅10m、高さ4mの直方体であり、ラインマーカを貼り付けることができる領域として、直線状の領域と平面状の領域の2種類の領域を設定した。これらの領域は、プラント内部に多数存在する配管の表面や、プラントの壁、天井、床等を想定している。表1に、この実験で想定したラインマーカを貼り付け可能な領域の種類と大きさ、位置等を示す。図15中、灰色の円がラインマーカ、ラインマーカから出る矢印をラインマーカの移動可能方向を示す。なお、ワールド座標系の原点を、図15における左手前の隅に設定し、右向きをx軸、上向きをy軸、手前方向をz軸とする。
【0107】
実際にトラッキングを実行する際には、画像処理によりラインマーカの位置と種類を認識する必要があるため、ラインマーカはある程度の大きさを持ち、互いに重なり合った配置はできない。そこで、この実験では、突然変異でラインマーカの新しい位置を生成する際に、ラインマーカ間の最小距離を50mmとする制限を加えた。
【0108】
【表1】
表2に、この実験で評価関数を求める際に用いるカメラの位置姿勢を示す、図15における矢印の位置と方向が、カメラの位置姿勢を表している。カメラの位置姿勢は、8つの位置と各位置における3姿勢の計24位置姿勢で構成しており、プラント内部において近傍に点検すべき機器や配管がある等の理由により、高精度にトラッキングを行う必要がある位置姿勢であると想定する。
【0109】
しかし、実際にこれらの24位置姿勢のみにおけるトラッキングの誤差を小さくすることを目標に既述の遺伝的アルゴリズムを実行した場合には、局所的に高精度が実現され、その隣接する領域で低精度になるラインマーカ配置が求められてしまうため、この実施例では、遺伝的アルゴリズムの各世代で、トラッキング誤差を評価する位置姿勢を設定した24位置姿勢の周りで微少変化させることにした。すなわち、位置に関してx軸方向とz軸方向に100mm、姿勢に関して左右見回し方向に5度の範囲で評価する位置姿勢を毎世代で変化させた。
【0110】
【表2】
表3に、実験で用いた遺伝的アルゴリズムの各パラメータを示す。カメラは解像度が1024x766pixels、レンズの焦点距離は3.94mm、ピクセルサイズは0.00465mmとし、△は0.5ピクセルとした。
【0111】
【表3】
実験結果
図16に、遺伝的アルゴリズムを用いたマーカ配置の最適化を200世代まで、20回実行した際の各世代におけるトラッキング誤差の最大値の平均値・最良値・最悪値を示す。今回の設定条件では、初期化を行った際に十分な数のラインマーカを撮影できない位置姿勢が生じたため、再初期化が2回行われ、最終的なラインマーカの個数は11個となった第1世代では、最も悪い場合で150mm程度あったトラッキング誤差の最大値が、50世代あたりから、50mm程度まで減少していることが確認できる。
【0112】
この実施例で提案するマーカ配置の最適化手法の実行速度に関して、1世代分の計算に要する時問は、Core 2 Duo 2.66 GHzを搭載したパソコンを用いた場合、1〜2秒程度であった(実行ソフトウエアはC#を用いて開発した)。
【0113】
【表4】
表4に、最適化する前のラインマーカ配置(第1世代)および200世代におけるラインマーカ配置を示す。これを見ると、(1)ラインマーカ間の距離が長い方が精度が高い、(2)ラインマーカが直線状に並ぶと精度が低い、(3)ラインマーカ配置のz軸方向(奥行き方向)の距離が長い方が、精度が高い、ことが確認できる。
【0114】
実際にプラントでのラインマーカ配置の最適化に適用する際の注意点
この実施例で提案する手法を、実際の原子力発電プラントでのラインマーカ配置の最適化に適用する際には、以下の点を注意する必要がある。
(1)この実施例では、カメラのレンズの歪みは適切に補正されているという前提でラインマーカの最適化手法を提案している。なんらかの理由で、カメラのレンズの歪みを適切に補正することができない場合は、この実施例で提案する手法を適当して得られた結果は、参考資料として利川するべきである。
(2)この実施例では、カメラ画像上でのラインマーカの認識誤差△は、既知であるとした。△は、ラインマーカのデザイン、照明条件等で異なることが予想され、実際に本研究で提案する手法を用いるためには、△を実測する必要がある。
(3)この実施例では、ラインマーカの配置を最適化するにあたり、遺伝的アルゴリズムを実行する際の各種パラメータ(計算を実行する世代数、突然変異の割合等)として、実際にどのような値を用いるべきかの厳密な議論は行っていない。これらのパラメータは、最適化の収束速度や、最終的なトラッキング誤差の大きさに影響することが予想される。将来的には、これらのパラメータとして、どのような値を設定するべきかを検討することが望ましい。
【0115】
結論と今後の課題
この実施例では広い範囲でトラッキングの誤差を小さくできるラインマーカ配置を求めることができる新しい手法の実現を目指し、カメラの解像度が有限であることに起因するカメラ画像上でのラインマーカの位直の認識誤差からトラッキングの誤差を計算するTECアルゴリズムと、遺伝的アルゴリズムを用いたラインマーカの最適化手法を提案した。原子力発電プラント内でのトラッキングをシミュレーションする評価実験により、提案する手法により、実用的な時間内でトラッキングの誤差を小さくできるラインマーカ配置を求めることができることを確認した。
【図面の簡単な説明】
【0116】
【図1】本発明における実施例1の現場作業支援システムの機能ブロック図である。
【図2】実施例1の現場作業支援システムにおけるカメラの配列状態を示す平面図である。
【図3】実施例1の現場作業支援システムにおけるラインマーカの平面図である。
【図4】カメラのレンズ補正状態によって発生する誤差を説明するための撮影画像である。
【図5】実施例1における情報処理装置が実行する情報処理のフローチャートである。
【図6】撮影画像に写り込んでいるラインマーカのコードマーク画像列と計算によって求められたコードマーク画像列の両端のコードマーク画像の写り込み予定位置を示す図面である。
【図7】撮影画像中のコードマーク画像列から近似した直線とコードマーク画像列の2端間の距離を求める内容を示す図面である。
【図8】画像認識結果から求めたラインマーカの各コードマーク画像間の距離の誤差を求める内容を示す図面である。
【図9】トラッキング誤差の大きさを推定する計算アルゴリズムにおける座標系を示す図である。
【図10】トラッキング誤差の大きさを推定する計算アルゴリズムにおけるTERの概念図である。
【図11】トラッキング誤差の大きさを推定する計算アルゴリズムにおけるx座標に関する誤差限界曲線の計算方法の概念図である。
【図12】トラッキング誤差の大きさを推定する計算アルゴリズムにおける誤差限界曲線の計算方法の概念図である。
【図13】トラッキング誤差の大きさを推定する計算アルゴリズムにおけるy座標に関する誤差限界曲線の計算方法の概念図である。
【図14】トラッキング誤差の大きさを推定する計算アルゴリズムにおける総ての誤差限界曲線で囲まれる領域(TER)を求める方法の概念図である。
【図15】評価実験で用いた擬似プラント環境の模式図である。
【図16】実験結果(各世代における誤差の最大値の平均値、最良値・最悪値)を示す曲線図である。
【図17】適用例におけるラインマーカ設置位置を立体的に示す斜視図である。
【図18】適用例におけるトラッキング誤差の分布図である。
【符号の説明】
【0117】
1(1a〜1c)…カメラ、2…HMD(Head Mounted Display)、3…情報処理装置、4…作業現場、41(41a,41b…)…機器、5(5a,5b)…ラインマーカ、51…基材、52(52a〜52k)…コードマーク。
【技術分野】
【0001】
本発明は、拡張現実感(Augmented Reality;AR)技術を利用して現場作業を支援する現場作業支援システムに関する。
【背景技術】
【0002】
拡張現実感技術は、現実の光景にCG(Computer Graphics)情報を重ね合わせて表示する技術であり、現場作業に有用な情報を現場作業者に提供して現場作業を支援する現場作業支援システムに応用されている。
【0003】
【特許文献1】特開2007−34238号公報
【特許文献2】特開2007−18188号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
拡張現実感技術を利用して作業者の作業を支援するためには、高精度のトラッキング(作業現場における作業者の位置と方向をリアルタイムに計測する技術)が必要である。
【0005】
現在のトラッキング技術として、作業現場にマーカを貼付しておき、作業者が携行するカメラで作業現場を撮影して得た撮影画像中のマーカに基づいてカメラ(作業者)の位置と向きを計測する技術が提案されているが、作業現場の全体で高精度にトラッキングを行うことは困難であり、計測精度が場所によって高低する。計測精度が低い状態で作業者に対して情報(例えば、作業指示)を提供すると、間違った作業指示となって作業ミスを誘発する恐れがある。
【0006】
本発明の1つの目的は、現場作業支援システムにおけるトラッキング精度を予測することにより、作業者に対して誤った情報を提供するのを防止することにある。
【0007】
本発明の他の目的は、現場作業支援システムにおける作業現場を撮影するカメラのキャリブレーションが十分ではないことに起因して撮影画像中のマーカの画像処理において発生する認識誤差により誤った情報を提供するのを防止することにある。
【0008】
本発明の更に他の目的は、現場作業支援システムにおけるトラッキング誤差の軽減を実現するのに好ましいマーカ配置方法を提案することにある。
【課題を解決するための手段】
【0009】
本発明は、予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行う情報処理装置を備えた現場作業支援システムにおいて、
前記情報処理装置は、撮影画像から画像認識によって得たコードマーク画像位置とラインマーカから計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、トラッキング誤差の大きさによって作業者に提供する情報を制御する処理を行う情報処理機能を備えた構成とする。
【0010】
そして、前記情報処理装置は、更に、推定したトラッキング誤差が所定値よりも小さいときには作業指示情報画像を前記表示装置に表示させ、推定したトラッキング誤差が所定値以上のときには警告情報画像を前記表示装置に表示させる制御処理を行うように構成する。
【0011】
また、前記作業指示情報画像は、作業禁止指示情報画像を含む構成とする。
【0012】
そして、トラッキング誤差の軽減を実現するのに好ましいラインマーカ配置方法は、前記カメラの位置の計測誤差が最小となるように、遺伝的アルゴリズムにより最適化配置処理を行うことで決定された位置に配置することにより実現する。
【0013】
具体的には、ラインマーカに対して、
(1)画像処理によって得られるコードマークに含まれる誤差の大きさの推定し、
(2)(1)の結果と誤差計算手法及び遺伝的アルゴリズムを用いて、様々なラインマーカ配置における作業現場内のトラッキングの誤差の大きさを推定し、徐々に高い精度が期待できるラインマーカ配置を繰り返し計算により求める、ことにより実現する。
【発明の効果】
【0014】
本発明は、トラッキング精度を予測(トラッキング誤差を推定)して作業者に対して提供する情報を制御する構成であることから、作業者に対して誤った情報を提供するのを防止することができる。
【0015】
具体的には、作業現場を撮影するカメラのキャリブレーションが十分ではないこと、カメラの解像度が有限であること、マーカの貼り付け位置の情報に誤りや誤差が含まれること、照明が不完全であること等に起因して撮影画像中のマーカの画像処理において発生する認識誤差により誤った情報を提供するのを防止することができる。
【0016】
また、トラッキング誤差を軽減するのに好ましいラインマーカの配置が可能となる。
【発明を実施するための最良の形態】
【0017】
本発明は、予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行う情報処理装置を備えた現場作業支援システムにおいて、
前記情報処理装置は、撮影画像から画像認識によって得たコードマーク画像位置とラインマーカから計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、推定したトラッキング誤差が所定値よりも小さいときには作業(作業禁止)指示情報画像を前記表示装置に表示させ、推定したトラッキング誤差が所定値以上のときには警告情報画像を前記表示装置に表示させる制御処理を行うように構成する。
【0018】
そして、トラッキング誤差の軽減を実現するために好ましいマーカ配置方法は、前記カメラの位置の計測誤差が最小となるように、遺伝的アルゴリズムにより最適化配置処理を行うことで決定された位置に配置することにより実現するものであり、具体的には、ラインマーカに対して、
(1)画像処理によって得られるコードマークに含まれる誤差の大きさを推定し、
(2)(1)の結果と誤差計算手法及び遺伝的アルゴリズムを用いて、様々なラインマーカ配置における作業現場内のトラッキングの誤差の大きさを推定し、徐々に高い精度が期待できるラインマーカ配置を繰り返し計算により求めるように行うことにより実現する。
【実施例1】
【0019】
図1は、現場作業支援システムの機能ブロック図である。
【0020】
作業現場(作業する施設)を撮影するカメラ1は、作業者が装着するAR機能付きのHMD(Head Mounted Display)2の頭上に該HMD2を装着した作業者の顔の向きの前方向(作業者の視界方向)を撮影するように取り付ける。
【0021】
この実施例は、表示装置をHMDを利用する例で説明するが、HMDに限らず、タブレットPCを採用しても実施することができる。また、カメラの向きは、ラインマーカの貼り付け位置との関係で、必ずしも作業者の顔の向きではなく、ラインマーカを天井面に貼り付けて設置するときは、カメラを上方向に向けてラインマーカを撮影してトラッキングを行うように変形することもできる。
【0022】
カメラ1は、図2に示すように、3台のカメラ1a,1b,1cを横に並べて作業現場を広角度に撮影することができるように構成する。この実施例ではカメラを3台使用する例で説明するが、2台あるいは4台で実施するように変形することができる。
【0023】
現場作業支援のための各種の情報処理を実行する情報処理装置(携帯型のパーソナルコンピュータ)3は、基本的には、前記カメラ1から撮影画像を入力して画像処理することによって作業現場における作業者の位置および向きを計測し、HMD2の表示画面に作業現場の撮影画像または予め記憶している設計情報に基づいて生成した作業現場のCG画像と指示情報を重ねて表示させる情報処理を行う。
【0024】
作業現場4には設計情報に基づいて各種の機器41(41a,41b…)が設置されており、その幾つかの機器41a,41f…にはラインマーカ5(5a,5b…)が予め既知の位置に貼付される。このラインマーカ5は、カメラ1の撮影画像中の位置から該カメラ1の位置と向き(作業者の位置と向き)を算出するための画像情報として使用する。
【0025】
各ラインマーカ5は、図3に示すように、細長い帯状の基材51の表面に11ビットのコードマーク52(52a〜52k)を長さ方向に所定の間隔で並べて設け、裏面を施設内の幾つかの機器41a,41f…の表面に貼付して設置するように構成する。通常は、所定の高さ位置に縦長垂直状態に設置するのが望ましい。
【0026】
この実施例では、ラインマーカ5は、コードマーク52が11ビットの例を示したが、このビット数は必要に応じて自由に変更することができる。ちなみに、ビット数を増やすと、誤り訂正できるビット数を増加したり、一度に利用できるラインマーカの数を増加させることができる。
【0027】
各ラインマーカ5に設けたコードマーク52は、30mm×30mmの正方形が「0」,30mm×60mmの長さ方向の長方形が「1」のビットデータを表し、上から7ビットをマーカIDビット、下4ビットを誤り訂正ビットとして使用する。図示のラインマーカ5のコードデータは、「01010000101」である。
【0028】
この実施例では、コードマーク52を30mm×30mmの正方形、30mm×60mmの長さ方向の長方形の例を示したが、ラインマーカ5を貼り付ける場所の大きさや、ラインマーカ5とカメラ1の間の平均距離によって、コードマーク52の大きさを、すべてのコードマーク52に対して統一して変更することができる。
【0029】
HMD2の表示画面21には、作業現場4の撮影画像(CG画像)21a上に指示情報画像21bを重ねた状態で表示する。図示の例は、作業現場に設置されている機器(バルブ)41g,41hの開放操作を指示し、機器(バルブ)41i〜41kについては開放操作を禁止することを指示する指示情報を表示した状態である。
【0030】
このような画像表示は、情報処理装置3がカメラ1から入力した作業現場4の撮影画像(情報)中のラインマーカ5のコードマーク画像の画像位置情報に基づいて該作業現場4における作業者の位置および向きを計測し、作業現場4の撮影画像または予め記憶している設計情報に基づいて作業者の位置と向きを基準にして生成した作業現場のCG画像21aに該作業現場4の機器41に対して行う作業内容を予め設定して記憶させた作業指示情報(作業指示情報画像や作業禁止指示情報画像)21b1,21b2を読み出して重ねて表示する情報処理を行うことによって実現する。
【0031】
このように作業現場4の撮影画像中のラインマーカ5のコードマーク画像位置情報に基づいて該作業現場における作業者の位置および向きを計測するためには、各ラインマーカ5のコードマーク画像が正確な形状で撮影画像21a中に存在しなければならない。しかしながら、カメラ1のレンズの歪み補正が不十分である場合には、撮影画像を処理してラインマーカの位置を認識すると誤差が生じる。そして、この誤差を含んだ位置情報に基づいてカメラ1(作業者)の位置や姿勢を計算すると、当然に、誤差が発生する。
【0032】
しかも、誤差には、更に、作業現場4の機器41に対するラインマーカ5の取り付け誤差(予め設定した取り付け位置情報と実際の取り付け位置間の誤差)や計算処理上の誤差(情報処理装置3が扱う数字の桁数の制約や求解の最適化計算を途中で止めることによる誤差)などが加わる。
【0033】
この発明は、カメラ1のレンズの歪み、カメラの解像度が有限であること、ラインマーカの貼り付け位置の情報に誤りや誤差が含まれること、照明が不完全であること等に因る計測誤差に起因するトラッキング誤差により作業者(HMD2)に誤った指示情報を提供(表示)するのを防止するものである。
【0034】
図4を参照して、カメラ1のレンズ補正が不十分であるために発生する誤差について説明する。
【0035】
図4の(a)は、レンズ補正が完全な状態にあるカメラ1で撮影した撮影画像21a中のラインマーカ5のコードマーク画像列5aであり、各コードマーク画像53は、直線状に並んだ状態に写る。しかしながら、レンズ補正が不十分なカメラ1で撮影した撮影画像21a中のラインマーカ5のコードマーク画像列5bの各コードマーク画像54は、(b)に示すように、わん曲して並んだ状態に写る。
【0036】
この実施例1の現場作業支援システムは、このようなカメラ1のレンズの歪みに因る誤差(トラッキング誤差)の大きさを推定して作業者に提供する情報を制御(編集)する構成である。
【0037】
図5は、このような制御を実現するために情報処理装置3が実行する情報処理のフローチャートである。
【0038】
ステップS301
カメラ1から作業現場(施設内)の撮影画像情報を取得する。
【0039】
ステップS302
取得した撮影画像情報を画像処理することによりラインマーカ5のコードマーク画像列を認識し、各コードマーク画像の重心位置を求める。この処理は、撮影画像中に存在する総てのラインマーカ5のコードマーク画像列に対して行う。
【0040】
具体的には、画像を2値化してラベリングし、正方形,長方形領域を検索し、正方形と長方形の領域が直線状に所定数(ラインマーカ5のコードマーク数)並んでいるものを検索してコードマーク画像列(ラインマーカ5)として認識し、コードマーク画像列の正方形を「0」,長方形を「1」としてマーカIDを認識する。また、コードマーク画像列の両端のコードマーク画像の重心位置をコードマーク画像列(ラインマーカ5)の両端の両端の位置とするように行う。
【0041】
ステップS303
カメラ1のレンズの予め分かっている歪みパラメータを用いてステップS302の処理結果を補正する。
【0042】
ステップS304
撮影画像中のコードマーク画像列の位置からラインマーカ5とカメラ1の相対的な位置関係を計算(トラッキング)する。
【0043】
ステップS305
ステップS304の処理で得たカメラ1の位置情報、カメラ1の各種のパラメータ、ラインマーカ5の貼付位置情報を用いて、コードマーク画像列が撮影画像のどの位置に写り込んでいるべきかを計算(逆算)する。
【0044】
図6(a)は、撮影画像中に写り込んでいるラインマーカ5のコードマーク画像列と認識した両端のコードマーク画像の位置を示し、(b)は、計算によって求められたコードマーク画像列の両端のコードマーク画像の写り込み予定位置を示している。
【0045】
ステップS306
画像処理によって認識したコードマーク画像列の端の位置(図6(a))とトラッキングの結果から逆算したコードマーク画像列の端の位置(図6(b))の撮影画像上での距離diRPを求める。ここで、iは、コードマーク画像列の端の通し番号(最大値は、コードマーク画像列の数の2倍になる)、diRPの最大値をdMAXRPとする。
【0046】
ステップS307
ステップS302で求めたラインマーカ5の各コードマーク画像の重心位置を用いてコードマーク画像列を直線で近似し、近似した直線とコードマーク画像列の2端間の距離diRVを求める。そして、diRVの最大値をdMAXRVとする。
【0047】
図7(a)〜(d)は、先のステップにおいて撮影画像中のコードマーク画像列(a)から各コードマーク画像の重心を求め、そして、本ステップ307において、最小二乗法により各コードマーク画像の重心に最も近い直線を求め、次いで、近似した直線とコードマーク画像列の2端間の距離diRVを求める内容を図示したものである。
【0048】
ステップS308
ステップS302で求めたラインマーカ5の各コードマーク画像の重心位置から求められる各コードマーク画像間の距離とラインマーカ5のマーカIDが示す該ラインマーカ5の実際の寸法から計算できる各コードマーク画像間の距離の差diRHを各コードマーク画像毎に求める(図8参照)。ここで、diRHの最大値をdMAXRHとする。
【0049】
ステップS309
(数1)式を用いて、撮影画像から認識したコードマーク画像列の位置に含まれる可能性がある誤差の最大値(最大誤差推定値)dMAXを求める。
【0050】
【数1】
ステップS310
各トラッキング毎の予想されるトラッキング誤差の大きさを推定する。トラッキング誤差の大きさを推定する計算アルゴリズムは、後述する。
【0051】
ステップS311
推定したトラッキング誤差の大きさに応じてHMDに表示して作業者に提供する情報を制御する。例えば、推定したトラッキング誤差が所定値よりも小さいときには作業指示(作業禁止)情報を表示して作業者に提供し、推定したトラッキング誤差が所定値以上のときには作業指示情報を表示せずにトラッキング誤差を減少させるための撮影画像情報を入力するためにカメラ1の向き(作業者の顔の向き)を変えるように指示する警告情報を表示する。
【0052】
前記ステップS310におけるトラッキング誤差の大きさの推定は、例えば、次ぎのような計算アルゴリズムによって行うことができる。
【0053】
この実施例において使用するトラッキング誤差の計算アルゴリズムにおいて、トラッキングの誤差を計算する手法は、以下の要件を満たす必要がある。
(1)プラント内部で拡張現実感を利用する場合、想定する誤差よりも大きな誤差が発生する可能性がある場合、作業者に間違った指示を出してしまう可能性があり、危険である。そのため、トラッキングの誤差の計算方法は、「90%の確立で10mm以内の計測誤差」の様な確率的な結果ではなく、「最大誤差が13mm」の様な絶対的な結果を計算できる必要がある。
(2)ラインマーカの最適化では、様々なラインマーカ配置における誤差を繰り返し計算する必要がある。そのため、誤差の計算方法は、十分高速である必要がある。
【0054】
拡張現実感を利用するユーザ(作業者)は、発電プラントにおける作業を想定する。また、その支援の内容も、特定の作業現場へのナビゲーションや、配管に流れる流体の量や種類の指示等、プラント設備を眺めた際の情報提示を想定する。この場合、作業者の頭の位置(作業者が装着するカメラの位置)は、
(1)高さがほぼ一定(作業者の身長程度)である、
(2)左右・上下の首振り回転は頻繁に行うが、首を傾けることは希である、
という特徴があると考えられる。
【0055】
そこで、この実施例1では、これらの特徴を利用して、トラッキング誤差の計算アルゴリズムを簡略化する。
【0056】
座標系と各種定義
図9に座標系の定義を示す。スクリーン座標系の原点は、カメラ撮影画像の中心とし、x軸をカメラ撮影画像の左から右方向に、y軸を上方向とする。カメラ座標系の原点は、カメラの焦点位置とし、z軸方向をカメラの撮影視野方向、x軸とy軸をスクリーン座標と平行とする。
【0057】
カメラの位置姿勢は、6自由度のベクトル(カメラの位置で3自由度、カメラの姿勢で3自由度)で表現される。
【0058】
カメラとラインマーカ(コードマーク画像列)を用いたトラッキングでは、1つのラインマーカから計算の基準となる特徴点を複数認識して利用する場合もあるが、この実施例1では、1つのラインマーカから1つの特徴点を認識するものと仮定し、特に断りが無い限り、以下ではラインマーカと特徴点は同義とする。
【0059】
Cをカメラの真の位置姿勢とし、Qi(i=1,2,‥,n)をラインマーカの3次元位置とする。(nはカメラに写ったマーカの総数)。今、Cの位置姿勢にあるカメラでラインマーカを撮影した時、カメラ撮影画像上で、位置Mi(i=1,2,‥,n)にラインマーカが写ったと認識されたとする(Miは2次元ベクトル)。この結果を用いてカメラの位置姿勢を推定した結果をCestとする。位置Miに、カメラの解像度が有限であること、レンズの補正が充分でないこと等が原因で、最大でΔの誤差が含まれているとする。この時、ラインマーカのカメラ撮影画像上での位置Mi'(i=1,2,‥,n)が、下記式(数2)を満たす位置にくるカメラの位置姿勢C'の集合は、Cestのまわりのある程度の大きさを持った領域となる。
【0060】
【数2】
この実施例1では、この領域をTER(Tracking Error Region)と呼ぶ。
【0061】
図10にTERの概念図を示す。カメラの真の位置Cは、このTERの領域の中に含まれるため、トラッキング誤差の最大値を求める計算アルゴリズムはTERの領域の中で、Cestから最も離れた点を求め、その点とCestの距離の差を求めるアルゴリズムである。
【0062】
誤差限界曲線の計算
この実施例1において使用するトラッキング誤差の計算アルゴリズムでは、カメラが移動する高さが作業者の身長でほぼ変化せず、左右・上下の回転のみを行うという仮定のもと、以下の流れでTERを求める。
【0063】
(1)画像処理により認識されたラインマーカのすべての2個の組み合わせに関し、ラインマーカのカメラ撮影画像上でのx座標がそれぞれ、x1±△、x2±△の範囲内に常に入るカメラの位置姿勢の集合の境界(誤差限界曲線と呼ぶ)を求める(x1、x2はカメラが真の位置にあるときにカメラ撮影画像上に写る2つのラインマーカのx座標)。
【0064】
(2)画像処理により認識されたすべてのラインマーカに関し、ラインマーカのカメラ撮影画像上でのy座標がy±△の範囲内に常に入るカメラの位置姿勢の集合の誤差限界曲線を求める(yはカメラが真の位置にあるときにカメラ撮影画像上に写るラインマーカのy座標)。
【0065】
(3)前記(1)と(2)で求められた誤差限界曲線で囲まれる領域をTERとする。
【0066】
以下の説明では、n個のラインマーカがカメラで撮影され、その位置が認識されたと仮定する(nの値は3以上とする)。
【0067】
x座標に関する誤差限界曲線の計算
図11において、点PAおよび点PBをラインマーカQA(xa,ya,za)およびQB(xb,yb,zb)のx−z平面上への射影点とする。
【0068】
点Aを線分CPAとカメラスクリーンのx軸との交点とし、点Bを線分CPBとカメラスクリーンのX軸との交点とする。点A,A1,A2,B,B1,B2は全てカメラスクリーンのX軸上にあるとし、‖A1A‖=‖AA2‖=‖B2B‖=‖BB1‖=△とする。このとき、ラインマーカのカメラ撮影画像上での真の座標x座標は、点A1と点A2の間および点B1と点B2との間にくる。すなわち、以下の式を満たす位置姿勢C'が形成する領域の中に、カメラの真の位置姿勢Cが含まれる。
【0069】
【数3】
ここで、α2=∠A2CB2およびα1=∠A1CB1である。これらの2つの角度は、以下の4つの式を計算することにより求めることができる。
【0070】
【数4】
【0071】
【数5】
【0072】
【数6】
【0073】
【数7】
ここで、Dは、カメラスクリーンの中心、fはカメラのレンズの焦点距離である。∠PAC'PB=α1および∠PAC'PB=α2を満たす位置姿勢C'の集合は、図12に示すように円となる。従って、式(数3)を満たす位置姿勢C'の集合は、図12における灰色に塗られた領域となる、
図12中のCircle 1とCircle 2の求め方は同じであるため、以下ではCircle 1の求め方を示す。まず、Circle 1の中心を求める。点FをCircle 1上の点であり、‖PAF‖=‖PBF‖を満たすとする。また、Eを線分PAPB上の点とし、‖PAE‖=‖PBE‖を満たすとする。この時、線分EFは、線分PAPBの垂直2等分線となる。従って、線分EF上にCircle 1の中心O(xO,0,zO)が存在する。ここで、‖OF‖=‖OPB‖=Rであり、∠PAFPB=α1であるため(RはCircle1の半径)、∠OFPB=∠OPBF==α1/2が成り立つ。従って、以下の式によりCircle 1の半径Rを求めることができる。
【0074】
【数8】
線分PAPBとx軸のなす角はγ==atan{(zb−za)/(xb−xa)}で計算でき、線分PAOとx軸のなす角はθ=−(π/2−α1−γ)で計算できる。従って、Circle 1の中心は以下の式(数9),(数10)で計算できる。
【0075】
【数9】
【0076】
【数10】
以上の方法で求められる円を以下ではX座標に関する誤差限界曲線と呼ぶ。
【0077】
y座標に関する誤差限界曲線の計算
図13において、点PAを、ラインマーカQAのx−z平面上への射影点、点Aを線分CQAとスクリーンとの交点とする。点A1、A2を‖A1A‖=‖AA2‖=△を満たすスクリーン上の点とし、線分A1A2はスクリーンのy軸に平行であるとする。点Dをスクリーンの中心とする(‖CD‖=f)。
点Eは点Aのx−y平面上への射影点である。
【0078】
y座標に関する誤差限界曲線の計算方法
このとき、ラインマーカのカメラ撮影画像上での真のy座標は、点A1と点A2の間の間に来る。すなわち、以下の式を満たす位置姿勢C'が形成する領域の中に、カメラの真の位置姿勢Cが必ず含まれる。
【0079】
【数11】
ここでβ2=∠A2CPAおよびβ1=∠A1CPAである、β2=∠QAC'PAおよび∠QAC'PA=β1を満たすC'は共に点PAを中心とする円となり、その円の半径は‖QAPA‖ctanβ2および‖QAPA‖ctan∠β1で計算できる。ここで
【0080】
【数12】
【0081】
【数13】
【0082】
【数14】
である。以上の方法で求められる円を以下ではy座標に関する誤差限界曲線と呼ぶ。
【0083】
TERからのトラッキング誤差の計算方法
先に求めた全ての誤差限界曲線で囲まれる領域の中にカメラの真の位置が含まれる。そこで、総ての誤差限界曲線で囲まれる領域とカメラの真の位置との間で最も離れている点と、カメラの真の位置との距離を求めることができれば、トラッキングを実行する際に起こりうる誤差の最大値を求めることができる。図14に総ての誤差限界曲線で囲まれる領域(TER)を求める方法の概念図を示す。以下では説明を簡単にするために、カメラ撮影画像で認識されたラインマーカの数が3個の場合を説明する。ラインマーカの数がn個の場合は、ラインマーカの数が3個の場合の計算方法の内、円の交点を求める際の円の組み合わせの数が増えるだけである。
【0084】
図14に示すように、ラインマーカQA、QB、QCのカメラ座標系におけるx−z平面への射影点をそれぞれPA、PB、PCとする。図14に示すArea 1は、ラインマーカQAおよびQBのx座標に関する誤差限界曲線に囲まれる領域であり、この領域内に真のカメラの位置姿勢が含まれる。QAおよびQC、QBおよびQCの組み合わせに関しても同様の領域を求める。Area 2は、ラインマーカQAのy座標に関する誤差限界曲線に囲まれる領域であり、この領域内に真のカメラの位置姿勢が含まれる。QBおよびQCに関しても同様の領域を求める。以上により求められた領域(この場合は合計6領域)に共通して含まれる領域がTERとなり、この中に真のカメラの位置姿勢が含まれる。前述の様に、誤差を含んだラインマーカの認識位置を用いて求めたカメラの位置と、TER領域内で最も離れた位置の距離が、トラッキングを実行する際に起こりうる誤差の最大値となる。ここで、誤差を含んだラインマーカの認識位置を用いて求めたカメラの位置からの最も離れたTER領域内の位置は、必ず誤差限界曲線同士の交点の内の1つであるという性質を用いると、トラッキングを実行する際に起こりうる誤差の最大値を求めることができる。
【0085】
以上の流れを纏めると、認識されたラインマーカの総数がn個の場合、トラッキングを実行する際に起こりうる誤差の最大値を求めるためには、x座標に関する誤差限界曲線としてnC2×2個、y座標に関する誤差限界曲線として2n個の円を求め、それらの全ての円(計n(n+1)個)の組み合わせに関して交点を求める必要がある。従って、トラッキングの誤差を求めるのに必要な計算量は、認識されるラインマーカの数の2乗に比例して大きくなるが、同時に認識されるラインマーカの総数は多い場合でも10程度であり、計算量としてはそれほど多くはならない。認識されるラインマーカの総数が10以上になる場合は、トラッキングに利用されないラインマーカが多くなるため非効率である。この場合は、作業現に貼り付けて設置するラインマーカの数を減らすべきである。
【0086】
次に、この実施例の適用例について、図17及び図18を参照して説明する。
【0087】
図17に示すように、10m×15mの部屋内に6本のラインマーカ(長さ約60cm)5を貼付して設置し、カメラ(Dragonfly B&WXGA,f=6.37mm)1を1m間隔で格子状に移動(2m〜11m)し、実際のカメラの位置(手作業で計測)とトラッキングの結果の差をトラッキング誤差として計算することにより、図18に示すような結果が得られた。
【0088】
ここで、施設(作業領域)内におけるラインマーカ配置の最適化について説明する。
【0089】
ラインマー力配置の最適化アルゴリズム
ラインマーカ配置の最適化アルゴリズムの目標は、拡張現実感の作業者がある領域内を移動する場合、ラインマーカの貼り付け位置を調整することにより、その領域内のトラッキングの精度を向上させることである。作業者が移動する領域とラインマーカを貼り付けることができる領域に関する情報を元に、直接、解析的な計算により最適なラインマーカ配置を求めることは、計算手法が非常に複雑になるため非常に困難である。そこで、この実施例では、遺伝的アルゴリズムを用いた適化繰り返し計算により、ラインマーカの貼り付け位置を求めることにした。その際、想定するトラッキング手法の応用先が、プラント内部での作業支援であることを考慮すると、ラインマーカを貼り付けることができる領域は、細長い配管の表面や壁や天井等の平面になると考えられる。そこで、ここでは、マーカを貼り付けることができる領域の形状を直線および平面の2種類とすることにした。
【0090】
染色体のコード化
この実施例で使用する遺伝的アルゴリズムにおける個々の染色体は、環境に貼り付けるラインマーカの個数と同数の遺伝子を持ち、1つの遺伝子が、1つのラインマーカの位置情報を持つ。染色体Mtiは、
【0091】
【数15】
で定義される。ここで、nは環境に貼り付けるラインマーカの個数、fは染色体の個体番号、tは世代番号である。すなわち、mtikは、t番目の世代として求められた、f番目のラインマーカ配置におけるk番目のラインマーカの貼り付け位置を表す。
【0092】
評価関数
e=g(x,M)を、ラインマーカ配置Mにおける位置姿勢xでのトラッキング誤差とする。この実施例では、この計算に前述したトラッキング誤差の計算方法を用いるが、そのためには、ラインマーカ配置、カメラの解像度、カメラのピクセルサイズ、レンズの焦点距離等の情報から、カメラにどのラインマーカが写っており、どのラインマーカが認識されるかを判断する必要がある。これは、カメラの視野と方向を解析的な計算で求め、ラインマーカの配置情報をもとにその視野内にラインマーカが入っているかどうかを調べることにより容易に判断できる。ただし、実際には、カメラの視野内にラインマーカが入っていても、カメラ画像上でのラインマーカの大きさが小さすぎる等の理由のために認識できない場合も起こりうるために、カメラとラインマーカの間の距離がある閾値以上の場合には、そのラインマーカが認識されないと判断する処理が必要である。ただし、以下では、説明を簡単にするために、カメラの視野に入ったラインマーカはその距離に関係なく、総て認識されるものとする。
【0093】
ラインマーカの配置を最適化するために遺伝的アルゴリズムを用いるにあたり、その評価関数は、最適化の基準に応じて設定するべきである。この実施例では、プラント内部で拡張現実感を利用する際のラインマーカの配置を最適化することを考えるが、その場含、作業者に提示する情報の正確性が問題になる。すなわち、トラッキングの精度が悪く、間違った位置や方向情報を作業者に提供してしまうと、ヒューマンエラーを誘発する原因となってしまうため、これは避けるべきである。従って、この実施例では、ラインマーカ配置最適化の1つの例として、「作業者が移動する範囲内全体での最も大きい誤差の大きさを最小化する」ことを今回の評価関数設定の目標とする。
【0094】
この様なラインマーカ配置の最適化の目標を定めた場合、本来は、作業者が移動する範囲内で起こりうる総ての位置姿勢に関してトラッキングの位置姿勢を評価し、その最大値を求めることが理想であるが、そのためには膨大な位置姿勢におけるトラッキング誤差の計算を繰り返す必要があり計算量が膨大になるために現実的ではない。そこでこの実施例では、予め定めた有限の位置姿勢に関してトラッキングの誤差を計算し、その結果の中の最大値を小さくする方向でラインマーカの配置を変化させる。すなわち、この実施例では、遺伝的アルゴリズムにおける評価関数を以下の式で定義する。
【0095】
【数16】
ここで、xjはj番目のカメラの位置姿勢であり、npは評価に用いられる位置姿勢の総数である。この方法を用いると、予め選定された位置姿勢では、トラッキングの精度が上がり、それ以外の位置姿勢では、トラッキングの精度が下がる可能性がある。しかし、一般に、カメラに写るラインマーカの種類と数が同じである場合、隣り合う位置姿勢のトラッキングの精度は似た傾向になる傾向があり、予め選定された位置姿勢の周辺に関しても、トラッキングの精度が向上すると予想される。そのため、拡張現実感で支援する作業の特性や領域の配置に応じて、高いトラッキング精度が要求される領域の周辺で多くの位置姿勢を選定し、低いトラッキング精度で十分な領域では、少数の位置姿勢を選定すれば、目的の特性を持ったラインマーカ配置を得ることができると考えられる。ただし、この方法では「トラッキングの誤差の最大値は10mmである」のような精度を保証することはできない。従って、この実施例で提案する遺伝的アルゴリズムを用いたラインマーカの最適化手法を実用化する場合には、前述した様に、実際にトラッキングを行う際にも、ラインマーカの配置情報とトラッキングによって得られた位置姿勢を元に、前述のトラッキング誤差の計算アルゴリズムを実行し、誤差の大きさを推定し、その結果を基に情報提示をするかどうかを判断するべきである。
【0096】
初期化
この実施例では、遺伝的アルゴリズムの第1世代として、染色体の遺伝子の数を、ラインマーカを貼り付けることができる領域の数と同数(ラインマーカを配置可能な領域1つに対して1つのラインマーカを配置)とし、各遺伝子にラインマーカを貼り付けることができる領域の範囲内でランダムに定められた位置情報を持たせる。
【0097】
再初期化
この実施例では、初期化の際にラインマーカの初朗配置をランダムに定めるため、評価の対象となる位置姿勢の中で、カメラに十分な数のラインマーカが写らない位置姿勢ができる可能性がある。この場合、ラインマーカの初期配置を何回か繰り返し定め直すと、カメラに十分な数のラインマーカが写るようになる可能性もあるが、必ず十分な数のラインマーカが写るようになるとは限らない。そこで、この実施例では、初期化の際にカメラに十分な数のラインマーカが写らない位置姿勢ができた場合には、その位置姿勢でのカメラに写るように新しいラインマーカを1つ配置する(位置は、ラインマーカを貼り付けることができる領域内からランダムに定める)。この処理をこの実施例では再初期化と呼ぶ。この際、遺伝的アルゴリズムにおける染色体が持つ遺伝子の数は1つ増えることになる。ラインマーカを貼り付けることができる領域の制限が原因で、問題となる位置姿勢でのカメラに写るように新しいラインマーカを貼り付けることができない場合、目的とする領域でのトラッキングが実現できないと判断される。この場合は、ラインマーカを貼り付けることができる領域を新たに確保する必要がある。
【0098】
交叉
交叉は一般に用いられる遺伝的アルゴリズムと同様、2つの親染色体をランダムに選択し、遺伝子のある一点で入れ替えることにより行うすなわち、hを[1,n]の範囲内のランダムな整数とした場合、交叉は以下の式で表ざれる。
【0099】
【数17】
突然変異
この実施例における突然変異は、以下の式で表現される。
【0100】
【数18】
ここで、hは[1,n]の範囲内のランダムな整数であり、mt+1ihは、h番目のラインマーカを貼り付ける新しい位置の候補(予め設定されたラインマーカを貼り付けることができる領域の範囲内でランダムに選ぶ)である。
【0101】
選択
この実施例における選択はルーレット選択を用いる・すなわち、'番目の染色体が選択される確率を以下の式で計算する。
【0102】
【数19】
ここで、f(Mi)およびf(Mk)は、i番目およびk番目の染色体の評価関数値、pは染色体の総数(人口)である。この実施例では、一般の遺伝的アルゴリズムと同様に、上記確率に応じて優秀な染色体を残し、優秀ではない染色体を削除する。
【0103】
遺伝的アルゴリズムの染色体総数と世代数の設定
遺伝的アルゴリズムを実行するにあたり生成する染色体の総数は、環境に貼り付けられるラインマーカの総数に応じて決定するべきである。すなわち、1つのラインマーカに対してk個の位置の候補を評価する為には、ラインマーカの総数がn個の場合、最低nk個の染色体を生成するべきである。
【0104】
遺伝的アルゴリズムでは一般に、交叉を実行する世代数が多くなるほど、より適切な結果が得られる。しかし、非常に大きい世代数まで交叉させると、計算量が多くなり、結果を得るまでに要する時問が長くなる。どの世代で計算をうち切るべきかに関する詳しい議論はこの実施例では行わないが、実際の現場で拡張現実感を利用することを考えた場合、必ずしも最適なラインマーカ配置を求める必要はなく、現場で要求される精度を満たしたラインマーカ配置が求められれば最適でなくても良いとも考えられる。従って、遺伝的アルゴリズムで実行する世代数は、使用するコンピュータの性能や費やすことができる時問によっても変化するが、基本的には、評価関数で得られた値を元に、要求される精度のトラッキングを実現できるラインマーカ配置が求まったかどうかを各世代で判断し、既に求まっている場合には、そこで計算をうち切るという方針が適切であると考えられる。
【0105】
提案手法の試用とその結果
この実施例で提案する遺伝的アルゴリズムを用いたラインマーカの最適化手法の効果を確認するために、シミュレーションベースの評価実験を行った。
【0106】
実験に用いた疑似プラント環境
図15にこの評価実験で用いた疑似プラント環境を示す。この環境は大きさが奥行き8m、幅10m、高さ4mの直方体であり、ラインマーカを貼り付けることができる領域として、直線状の領域と平面状の領域の2種類の領域を設定した。これらの領域は、プラント内部に多数存在する配管の表面や、プラントの壁、天井、床等を想定している。表1に、この実験で想定したラインマーカを貼り付け可能な領域の種類と大きさ、位置等を示す。図15中、灰色の円がラインマーカ、ラインマーカから出る矢印をラインマーカの移動可能方向を示す。なお、ワールド座標系の原点を、図15における左手前の隅に設定し、右向きをx軸、上向きをy軸、手前方向をz軸とする。
【0107】
実際にトラッキングを実行する際には、画像処理によりラインマーカの位置と種類を認識する必要があるため、ラインマーカはある程度の大きさを持ち、互いに重なり合った配置はできない。そこで、この実験では、突然変異でラインマーカの新しい位置を生成する際に、ラインマーカ間の最小距離を50mmとする制限を加えた。
【0108】
【表1】
表2に、この実験で評価関数を求める際に用いるカメラの位置姿勢を示す、図15における矢印の位置と方向が、カメラの位置姿勢を表している。カメラの位置姿勢は、8つの位置と各位置における3姿勢の計24位置姿勢で構成しており、プラント内部において近傍に点検すべき機器や配管がある等の理由により、高精度にトラッキングを行う必要がある位置姿勢であると想定する。
【0109】
しかし、実際にこれらの24位置姿勢のみにおけるトラッキングの誤差を小さくすることを目標に既述の遺伝的アルゴリズムを実行した場合には、局所的に高精度が実現され、その隣接する領域で低精度になるラインマーカ配置が求められてしまうため、この実施例では、遺伝的アルゴリズムの各世代で、トラッキング誤差を評価する位置姿勢を設定した24位置姿勢の周りで微少変化させることにした。すなわち、位置に関してx軸方向とz軸方向に100mm、姿勢に関して左右見回し方向に5度の範囲で評価する位置姿勢を毎世代で変化させた。
【0110】
【表2】
表3に、実験で用いた遺伝的アルゴリズムの各パラメータを示す。カメラは解像度が1024x766pixels、レンズの焦点距離は3.94mm、ピクセルサイズは0.00465mmとし、△は0.5ピクセルとした。
【0111】
【表3】
実験結果
図16に、遺伝的アルゴリズムを用いたマーカ配置の最適化を200世代まで、20回実行した際の各世代におけるトラッキング誤差の最大値の平均値・最良値・最悪値を示す。今回の設定条件では、初期化を行った際に十分な数のラインマーカを撮影できない位置姿勢が生じたため、再初期化が2回行われ、最終的なラインマーカの個数は11個となった第1世代では、最も悪い場合で150mm程度あったトラッキング誤差の最大値が、50世代あたりから、50mm程度まで減少していることが確認できる。
【0112】
この実施例で提案するマーカ配置の最適化手法の実行速度に関して、1世代分の計算に要する時問は、Core 2 Duo 2.66 GHzを搭載したパソコンを用いた場合、1〜2秒程度であった(実行ソフトウエアはC#を用いて開発した)。
【0113】
【表4】
表4に、最適化する前のラインマーカ配置(第1世代)および200世代におけるラインマーカ配置を示す。これを見ると、(1)ラインマーカ間の距離が長い方が精度が高い、(2)ラインマーカが直線状に並ぶと精度が低い、(3)ラインマーカ配置のz軸方向(奥行き方向)の距離が長い方が、精度が高い、ことが確認できる。
【0114】
実際にプラントでのラインマーカ配置の最適化に適用する際の注意点
この実施例で提案する手法を、実際の原子力発電プラントでのラインマーカ配置の最適化に適用する際には、以下の点を注意する必要がある。
(1)この実施例では、カメラのレンズの歪みは適切に補正されているという前提でラインマーカの最適化手法を提案している。なんらかの理由で、カメラのレンズの歪みを適切に補正することができない場合は、この実施例で提案する手法を適当して得られた結果は、参考資料として利川するべきである。
(2)この実施例では、カメラ画像上でのラインマーカの認識誤差△は、既知であるとした。△は、ラインマーカのデザイン、照明条件等で異なることが予想され、実際に本研究で提案する手法を用いるためには、△を実測する必要がある。
(3)この実施例では、ラインマーカの配置を最適化するにあたり、遺伝的アルゴリズムを実行する際の各種パラメータ(計算を実行する世代数、突然変異の割合等)として、実際にどのような値を用いるべきかの厳密な議論は行っていない。これらのパラメータは、最適化の収束速度や、最終的なトラッキング誤差の大きさに影響することが予想される。将来的には、これらのパラメータとして、どのような値を設定するべきかを検討することが望ましい。
【0115】
結論と今後の課題
この実施例では広い範囲でトラッキングの誤差を小さくできるラインマーカ配置を求めることができる新しい手法の実現を目指し、カメラの解像度が有限であることに起因するカメラ画像上でのラインマーカの位直の認識誤差からトラッキングの誤差を計算するTECアルゴリズムと、遺伝的アルゴリズムを用いたラインマーカの最適化手法を提案した。原子力発電プラント内でのトラッキングをシミュレーションする評価実験により、提案する手法により、実用的な時間内でトラッキングの誤差を小さくできるラインマーカ配置を求めることができることを確認した。
【図面の簡単な説明】
【0116】
【図1】本発明における実施例1の現場作業支援システムの機能ブロック図である。
【図2】実施例1の現場作業支援システムにおけるカメラの配列状態を示す平面図である。
【図3】実施例1の現場作業支援システムにおけるラインマーカの平面図である。
【図4】カメラのレンズ補正状態によって発生する誤差を説明するための撮影画像である。
【図5】実施例1における情報処理装置が実行する情報処理のフローチャートである。
【図6】撮影画像に写り込んでいるラインマーカのコードマーク画像列と計算によって求められたコードマーク画像列の両端のコードマーク画像の写り込み予定位置を示す図面である。
【図7】撮影画像中のコードマーク画像列から近似した直線とコードマーク画像列の2端間の距離を求める内容を示す図面である。
【図8】画像認識結果から求めたラインマーカの各コードマーク画像間の距離の誤差を求める内容を示す図面である。
【図9】トラッキング誤差の大きさを推定する計算アルゴリズムにおける座標系を示す図である。
【図10】トラッキング誤差の大きさを推定する計算アルゴリズムにおけるTERの概念図である。
【図11】トラッキング誤差の大きさを推定する計算アルゴリズムにおけるx座標に関する誤差限界曲線の計算方法の概念図である。
【図12】トラッキング誤差の大きさを推定する計算アルゴリズムにおける誤差限界曲線の計算方法の概念図である。
【図13】トラッキング誤差の大きさを推定する計算アルゴリズムにおけるy座標に関する誤差限界曲線の計算方法の概念図である。
【図14】トラッキング誤差の大きさを推定する計算アルゴリズムにおける総ての誤差限界曲線で囲まれる領域(TER)を求める方法の概念図である。
【図15】評価実験で用いた擬似プラント環境の模式図である。
【図16】実験結果(各世代における誤差の最大値の平均値、最良値・最悪値)を示す曲線図である。
【図17】適用例におけるラインマーカ設置位置を立体的に示す斜視図である。
【図18】適用例におけるトラッキング誤差の分布図である。
【符号の説明】
【0117】
1(1a〜1c)…カメラ、2…HMD(Head Mounted Display)、3…情報処理装置、4…作業現場、41(41a,41b…)…機器、5(5a,5b)…ラインマーカ、51…基材、52(52a〜52k)…コードマーク。
【特許請求の範囲】
【請求項1】
予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行う情報処理装置を備えた現場作業支援システムにおいて、
前記情報処理装置は、撮影画像から画像認識によって得たコードマーク画像位置とラインマーカから計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、トラッキング誤差の大きさによって作業者に提供する情報を制御する処理を行う情報処理機能を備えたことを特徴とする現場作業支援システム。
【請求項2】
請求項1において、前記情報処理装置は、推定したトラッキング誤差が所定値よりも小さいときには作業指示情報画像を前記表示装置に表示させ、推定したトラッキング誤差が所定値以上のときには警告情報画像を前記表示装置に表示させる制御処理を行うことを特徴とする現場作業支援システム。
【請求項3】
請求項2において、前記作業指示情報画像は、作業禁止指示情報画像を含むことを特徴とする現場作業支援システム。
【請求項4】
予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行なう情報処理装置を備えた現場作業支援システムにおけるラインマーカの配置方法において、
前記ラインマーカは、前記カメラの位置の計測誤差が最小となるように、遺伝的アルゴリズムにより最適化配置処理を行うことで決定された位置に配置することを特徴とするラインマーカの配置方法。
【請求項1】
予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行う情報処理装置を備えた現場作業支援システムにおいて、
前記情報処理装置は、撮影画像から画像認識によって得たコードマーク画像位置とラインマーカから計算で求められるコードマーク画像位置との誤差を参照してトラッキング誤差の大きさを推定し、トラッキング誤差の大きさによって作業者に提供する情報を制御する処理を行う情報処理機能を備えたことを特徴とする現場作業支援システム。
【請求項2】
請求項1において、前記情報処理装置は、推定したトラッキング誤差が所定値よりも小さいときには作業指示情報画像を前記表示装置に表示させ、推定したトラッキング誤差が所定値以上のときには警告情報画像を前記表示装置に表示させる制御処理を行うことを特徴とする現場作業支援システム。
【請求項3】
請求項2において、前記作業指示情報画像は、作業禁止指示情報画像を含むことを特徴とする現場作業支援システム。
【請求項4】
予め作業現場に設置されたラインマーカと、作業者が携行するカメラと、作業現場の画像と指示情報を表示して作業者に提供する表示装置と、前記カメラで作業現場を撮影して得た撮影画像中の前記ラインマーカの画像位置に基づいてカメラ(作業者)の位置と向きを計測し、作業者に対して提供する情報画像を作業現場の画像に重ねて前記表示装置に表示させる情報処理を行なう情報処理装置を備えた現場作業支援システムにおけるラインマーカの配置方法において、
前記ラインマーカは、前記カメラの位置の計測誤差が最小となるように、遺伝的アルゴリズムにより最適化配置処理を行うことで決定された位置に配置することを特徴とするラインマーカの配置方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2008−299714(P2008−299714A)
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願番号】特願2007−146824(P2007−146824)
【出願日】平成19年6月1日(2007.6.1)
【出願人】(505374783)独立行政法人 日本原子力研究開発機構 (727)
【出願人】(504132272)国立大学法人京都大学 (1,269)
【Fターム(参考)】
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願日】平成19年6月1日(2007.6.1)
【出願人】(505374783)独立行政法人 日本原子力研究開発機構 (727)
【出願人】(504132272)国立大学法人京都大学 (1,269)
【Fターム(参考)】
[ Back to top ]