以下、本発明による画像処理装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による画像処理装置は、仮想ロボットの3次元モデルへの操作を、操作指示部材の位置等に応じて取得するものである。
図1は、本実施の形態によるロボット制御システム100の構成を示す模式図である。本実施の形態によるロボット制御システム100は、仮想ロボットを操作するためのものであり、画像処理装置3と、表示装置4とを備える。なお、画像処理装置3と表示装置4とは、例えば、有線または無線で接続されてもよい。また、仮想ロボットの3次元モデルが操作されることによって、実ロボットであるロボット1が操作される場合には、ロボット制御システム100は、例えば、ロボット1と、ロボット1の動作を制御するロボット制御装置とをさらに備えてもよい。仮想ロボットの3次元モデルを介したロボット1の操作は、例えば、教示のために行われてもよく、到達可能範囲などの確認のために行われてもよい。3次元モデルが操作されることによってロボット1が操作される場合には、例えば、ロボット1の各関節の角度が3次元モデルの各関節の角度と同じとなるようにロボット1が操作されてもよい。
操作対象の仮想ロボットは、仮想環境に存在する3次元モデルによって構成されるものであり、実環境に存在する実ロボットに対応したものである。すなわち、仮想ロボットは、3次元モデルで構成されている以外は、実ロボットと同じであり、例えば、実ロボットと同じサイズ及び構成であってもよく、実ロボットと同様に、複数のアームの関節の角度などを変更可能になっていてもよい。
実ロボットは、通常、産業用ロボットであり、モータにより駆動される関節によって連結された複数のアーム(リンク)を有するマニピュレータであってもよい。実ロボットは、例えば、垂直多関節ロボットであってもよく、水平多関節ロボットであってもよい。また、実ロボットは、例えば、搬送ロボットであってもよく、溶接ロボットであってもよく、組立ロボットであってもよく、塗装ロボットであってもよく、または、その他の用途のロボットであってもよい。なお、実ロボットは、実環境に存在するロボットである。実環境とは、実空間の環境のことである。ロボット制御装置は、ロボット1の動作を制御する。ロボット1を動作させるロボット制御装置は、すでに公知であり、その詳細な説明を省略する。なお、ロボット制御システム100が、例えば、溶接ロボットであるロボット1を有している場合には、必要に応じて溶接電源やワイヤ送給装置等をさらに有していてもよい。
画像処理装置3は、実環境の所定の位置に、仮想ロボットの3次元モデルを表示するための表示画像を生成して表示装置4に出力するものである。なお、仮想ロボットの3次元モデルの表示画像は、仮想ロボットの3次元モデルと、実環境に存在する実ロボットであるロボット1とが所定の位置関係となるように生成されてもよい。画像処理装置3の詳細については後述する。
表示装置4は、画像を実環境の画像または実環境そのものに重ねて表示する。すなわち、仮想ロボットを操作する作業者は、表示装置4によって、実環境と仮想環境の画像との両方を見ることができる。表示装置4は、仮想ロボットを操作する作業者が頭部に装着する装着型の表示装置であってもよく、または、タブレット端末などの可搬型の情報処理端末である表示装置であってもよい。装着型の表示装置は、例えば、ヘッドマウントディスプレイであってもよい。また、表示装置4は、例えば、透過型ディスプレイを有するものであってもよい。この場合には、表示装置4は、画像を実環境そのものに重ねて表示することになる。透過型ディスプレイを有する装着型の表示装置4としては、例えば、HoloLens(登録商標)等が知られている。このような透過型ディスプレイを有する表示装置4は、複合現実(MR:Mixed Reality)を実現するための表示装置であると考えることもできる。また、表示装置4は、例えば、非透過型ディスプレイを有するものであってもよい。この場合には、表示装置4は、画像を実環境の画像に重ねて表示することになる。したがって、非透過型ディスプレイを有する表示装置4は、実環境を撮影するためのカメラを有しているか、または、実環境を撮影するカメラと接続されていることが好適である。カメラで撮影された実環境の画像は、リアルタイムで非透過型ディスプレイに表示される。非透過型ディスプレイを有する装着型の表示装置4としては、例えば、Oculus Quest等が知られている。このような非透過型ディスプレイを有する表示装置4は、拡張現実(AR:Augmented Reality)を実現するための表示装置であると考えることもできる。タブレット端末などの可搬型の情報処理端末である表示装置4は、例えば、カメラとディスプレイとを有しており、カメラで撮影した実環境の画像をリアルタイムでティスプレイに表示してもよい。本実施の形態では、表示装置4が透過型のディスプレイを有するヘッドマウントディスプレイである場合について主に説明する。
図1で示されるように、本実施の形態による画像処理装置3は、記憶部31と、位置関係取得部32と、受付部33と、操作取得部34と、画像生成部35と、画像出力部36とを備える。
記憶部31では、実環境に存在する実ロボットに対応する仮想ロボットの3次元モデルが記憶される。この仮想ロボットの3次元モデルは、例えば、操作対象の実ロボットに対応する仮想ロボットの3次元モデルであってもよい。仮想ロボットの3次元モデルは、例えば、複数の部分オブジェクトから構成されてもよい。各部分オブジェクトは、マニピュレータの3次元モデルの各アームや手先のツールなどに対応していてもよい。また、3次元モデル以外の情報が記憶部31で記憶されてもよい。例えば、教示データ等が記憶部31で記憶されてもよい。記憶部31に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部31で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部31で記憶されるようになってもよい。記憶部31は、不揮発性の記録媒体によって実現されることが好適であるが、揮発性の記録媒体によって実現されてもよい。記録媒体は、例えば、半導体メモリや磁気ディスク、光ディスクなどであってもよい。
位置関係取得部32は、実ロボットの存在する実環境と、表示装置4との相対的な位置関係を取得する。その実環境には、例えば、実ロボットであるロボット1が存在してもよい。実環境と表示装置4との相対的な位置関係を取得するとは、例えば、実環境の座標系であるワールド座標系と、表示装置4のローカル座標系である表示座標系との相対的な位置関係を取得することであってもよい。その相対的な位置関係は、例えば、両座標系間の変換を示す同次変換行列によって示されてもよい。なお、実環境と表示装置4との相対的な位置関係は、例えば、実環境に存在するロボット1や他のオブジェクトと、表示装置4との相対的な位置関係であってもよく、実環境における表示装置4の位置や姿勢を示す情報であってもよい。
位置関係取得部32が、この相対的な位置関係を取得する方法は問わない。例えば、実環境の環境地図が用意されている場合には、位置関係取得部32は、実環境の環境地図と、表示装置4によって取得された周囲の物体までの距離や周囲の画像とを用いて、SLAM(Simultaneous Localization and Mapping)や、Visual-SLAMの手法を用いて、3次元の実環境における表示装置4の位置や姿勢を示す情報である相対的な位置関係を取得してもよい。この場合には、例えば、画像処理装置3において環境地図が保持されており、位置関係取得部32は、表示装置4から受け取った周囲の物体までの距離や周囲の画像と、環境地図とを用いて、相対的な位置関係を取得してもよい。また、例えば、SLAMやVisual-SLAMの手法を用いた相対的な位置関係の取得は表示装置4において行われ、その相対的な位置関係が位置関係取得部32に渡されてもよい。この場合には、位置関係取得部32による相対的な位置関係の取得は、相対的な位置関係の受け付けであってもよい。また、この場合には、表示装置4は、周囲の物体までの距離を測定可能な深度センサや、周囲の画像を取得可能なカメラを有していてもよい。また、位置関係取得部32は、表示装置4のカメラで撮影された画像を受け取り、その画像に含まれるロボット1や他のオブジェクトの3以上の特徴点を用いて、ワールド座標系と表示座標系との間の変換を示す同次変換行列を取得してもよい。
また、位置関係取得部32は、上記した以外の方法によって、実環境と表示装置4との相対的な位置関係を取得してもよい。その方法の一例については、例えば、上記特許文献1等を参照されたい。また、後述する表示画像の生成ごとに、位置関係取得部32によって上記のようにして相対的な位置関係が取得されてもよく、または、そうでなくてもよい。後者の場合には、例えば、相対的な位置関係が取得された後の表示装置4の位置や姿勢の変化を用いて、実環境と表示装置4との相対的な位置関係が更新されてもよい。この更新は、例えば、位置関係取得部32によって行われてもよい。また、この更新が行われる場合には、表示装置4は、例えば、加速度センサや表示装置4の向きを取得するためのセンサ等を備えており、それらのセンサを用いて位置の変化や姿勢の変化が取得されてもよい。なお、それらのセンサによって取得された値は、例えば、位置関係取得部32などの相対的な位置関係を更新する構成要素に渡されてもよい。表示装置4の向きを取得するためのセンサは、例えば、ジャイロセンサや方位センサ等であってもよい。
受付部33は、操作指示部材5を用いた操作の開始時点を指示する開始指示と、その操作の終了時点を指示する終了指示とを受け付ける。開始指示及び終了指示は、例えば、「操作開始」「操作終了」などの音声によって入力されてもよく、入力デバイスや、表示装置4の仮想入力インターフェースを介して入力されてもよい。
音声入力が行われる場合には、受付部33は、作業者による「操作開始」「操作終了」などの発声に応じた音声をマイク等で受け付け、その音声を信号に変換した音声信号について音声認識を行い、その音声認識の結果であるテキスト情報が、「操作開始(そうさかいし)」であるときに、開始指示を受け付けたと判断してもよい。終了指示についても同様である。なお、受付部33は、音声認識の結果に対応する開始指示または終了指示を、他の構成要素や他の装置から受け付けてもよい。
また、入力デバイスは、例えば、開始指示を入力するための物理ボタンや、終了指示を入力するための物理ボタンを有するものであってもよい。そして、例えば、作業者が開始指示を入力するための物理ボタンを押下した場合に、受付部33は、開始指示を受け付けたと判断してもよい。終了指示についても同様である。
また、作業者は、例えば、エアタップなどの動作に応じて表示装置4のディスプレイに仮想ボタンなどの仮想入力インターフェースを表示させてもよい。そして、例えば、作業者の指やポインティングデバイスによって、開始指示を入力するための仮想ボタンが選択され、その仮想ボタンが選択された旨が受付部33に入力された場合に、受付部33は、開始指示を受け付けたと判断してもよい。終了指示についても同様である。
なお、受付部33は、受け付けを行うためのデバイス(例えば、マイクや、入力デバイス、通信デバイスなど)を含んでもよく、または含まなくてもよい。また、受付部33は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
操作取得部34は、実環境に存在する操作指示部材5の位置を取得する。操作取得部34は、例えば、操作指示部材5の位置と姿勢を取得してもよい。操作指示部材5の形状は特に限定されないが、例えば、棒状の部材であってもよく、それ以外の形状の部材であってもよい。棒状の部材は、例えば、円柱形状の部材や、多角柱形状の部材などであってもよい。また、図1で示されるように、棒状の部材である操作指示部材5は、例えば、一端側が尖っているなどのように、長手方向の両端の形状が異なっていることによって、向きを判別できるようになっていてもよい。操作指示部材5として、例えば、ペンや鉛筆などの筆記具が用いられてもよい。本実施の形態では、操作指示部材5が棒状の部材である場合について主に説明し、それ以外の場合については後述する。操作指示部材5は、通常、作業者の手で動かされる。操作指示部材5は、例えば、ペンなどの筆記具と同程度の大きさであり、作業者が筆記具と同様に手で保持して移動させてもよい。操作指示部材5の位置や姿勢によって、例えば、仮想ロボットの3次元モデルの手先に装着されたツールの位置や姿勢が示されてもよく、仮想ロボットの3次元モデルのTCP(ツールセンターポイント)の位置や姿勢が示されてもよく、仮想ロボットの3次元モデルにおける所定の箇所(例えば、所定のアームなど)の位置や姿勢が示されてもよい。操作指示部材5に対応する3次元モデルの箇所は、あらかじめ決まっていてもよく、または、作業者が決めることができてもよい。本実施の形態では、操作指示部材5の位置や姿勢によって、3次元モデルの手先のツールの位置や姿勢が示される場合について主に説明する。
操作取得部34が操作指示部材5の位置や姿勢を取得する方法は問わない。操作指示部材5の位置や姿勢を取得するとは、例えば、所定の座標系における操作指示部材5の位置や姿勢を特定することであってもよい。この位置や姿勢の取得がリアルタイムで繰り返されることによって、結果として、操作指示部材5の動きが取得されることになる。その座標系は、例えば、ワールド座標系であってもよく、表示装置4のローカル座標系であってもよく、その他の座標系であってもよい。なお、操作取得部34が操作指示部材5の位置を取得する場合には、例えば、操作指示部材5の所定の箇所(例えば、図1で示される操作指示部材5の下方側の尖端など)の位置を取得してもよい。この位置は、例えば、3次元直交座標系における座標値で示されてもよい。また、操作取得部34が操作指示部材5の姿勢を取得する場合には、例えば、棒状である操作指示部材5の長手方向の角度と、棒状である操作指示部材5の長手方向の軸を中心とする回転角度とを取得してもよい。また、この姿勢は、例えば、ロール、ピッチ、ヨー角や、オイラー角などによって示されてもよい。なお、棒状である操作指示部材5の長手方向の軸を中心とする回転角度も取得される場合や、姿勢に応じた3つの自由度の角度が取得される場合には、操作指示部材5の表面(例えば、円柱形状である操作指示部材5の円周面など)に、所定の模様や突起、凹部などが設けられており、例えば、操作指示部材5の長手方向の軸を中心とする回転角度が分かるようになっていてもよい。本実施の形態では、操作取得部34が、操作指示部材5の位置及び姿勢の両方を取得する場合について主に説明する。
操作取得部34は、例えば、操作指示部材5の撮影画像を用いて、その位置等を取得してもよい。この場合には、画像の撮影は、例えば、表示装置4が有するカメラを用いて行われてもよく、実環境の所定の位置に配置されているカメラを用いて行われてもよい。頭部装着型の表示装置4に実環境を撮影するためのカメラが装着されている場合には、そのカメラは、表示装置4を装着する作業者の視線方向と同じ方向の撮影画像を取得するように配置されていることが好適である。また、実環境にカメラが配置されている場合には、そのカメラは、操作指示部材5が作業者によって移動される領域を撮影可能となるように配置されていることが好適である。操作取得部34は、例えば、撮影画像を用いて操作指示部材5の特定及びトラッキングを行い、その結果を用いて、操作指示部材5の位置等を取得してもよい。
また、操作取得部34は、例えば、操作指示部材5に組み込まれているセンサによるセンシング結果を用いて、その位置等を取得してもよい。そのセンサは、例えば、加速度センサや、操作指示部材5の姿勢を取得するためのセンサであってもよい。姿勢を取得するためのセンサは、例えば、方位角を取得するための方位センサと、鉛直方向に対する傾斜角を取得するための傾斜センサであってもよく、ジャイロセンサ(すなわち、角速度センサ)であってもよい。加速度センサや、ジャイロセンサでは、位置や角度の変化しかわからないため、例えば、作業者は初めに操作指示部材5をあらかじめ決められた基準位置及び基準姿勢に配置してもよい。そして、操作取得部34は、その後に加速度センサやジャイロセンサによって取得されたセンシング結果と、基準位置及び基準姿勢とを用いて、操作指示部材5の現在の位置や姿勢を取得してもよい。なお、操作指示部材5が有するセンサのセンシング結果は、操作指示部材5から操作取得部34に、無線または有線で送信されてもよい。
また、操作取得部34は、例えば、実環境に配置されたセンサ、または表示装置4が有するセンサによって取得された操作指示部材5の位置を示すセンシング結果を用いて、操作指示部材5の位置等を取得してもよい。このセンサは、例えば、深度センサなどの測距センサであってもよい。センサが測距センサである場合には、複数の測距センサを用いて実環境の3次元スキャンが行われてもよい。そして、操作取得部34は、センシング結果、すなわち3次元スキャンの結果を用いて、あらかじめ決められた形状である操作指示部材5の位置や姿勢を特定してもよい。
また、撮影画像やセンシング結果を用いた操作指示部材5の位置等の取得は、操作取得部34以外の構成要素や装置において行われてもよい。この場合には、操作取得部34は、操作取得部34以外の構成要素や装置において取得された操作指示部材5の位置や姿勢を受け付けてもよい。すなわち、操作取得部34による操作指示部材5の位置や姿勢の取得は、操作指示部材5の位置や姿勢の受け付けであってもよい。
操作取得部34は、取得した操作指示部材5の位置や姿勢に応じて、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所に対する操作を取得する。操作指示部材5に対応する箇所は、操作指示部材5によって操作が示される箇所であってもよい。この操作指示部材5に対応する箇所は、例えば、操作指示部材5によって位置や姿勢の示される、3次元モデルにおける箇所であってもよい。例えば、3次元モデルにおける操作指示部材5に対応する箇所が、操作指示部材5と重なるようにするための操作が取得されてもよい。この操作の取得は、例えば、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所の操作後の位置や姿勢の取得であってもよい。例えば、操作指示部材5が棒状の部材であり、仮想ロボットの3次元モデルの手先に装着されたツールの位置及び姿勢を示すものである場合には、操作取得部34は、操作指示部材5の位置等に応じて、仮想ロボットの3次元モデルのツールに対する操作を取得してもよい。すなわち、操作取得部34は、3次元モデルのツールが、操作指示部材5の位置となる操作を取得してもよい。ツールは、仮想ロボットの3次元モデルの手先に配置されるものであり、例えば、溶接トーチや、搬送対象などを把持する把持ユニット、搬送対象などを吸着する吸着ユニット、搬送対象などを載置する載置ユニット等であってもよい。例えば、ツールが溶接トーチである場合に、棒状の操作指示部材5によって、溶接トーチの先端の位置及び先端部分の姿勢が示されてもよい。この場合には、操作取得部34は、操作指示部材5の位置や姿勢に応じて、その位置や姿勢と同様に溶接トーチの位置及び姿勢を変化させる操作を取得することになる。また、例えば、ツールが把持ユニットや吸着ユニット等である場合に、棒状の操作指示部材5によって、それらのユニットの基準位置や、基準方向の姿勢が示されてもよい。この場合には、操作取得部34は、操作指示部材5の位置や姿勢に応じて、その位置や姿勢と同様に把持ユニットや吸着ユニットの基準位置や基準方向の姿勢を変化させる操作を取得することになる。
なお、操作指示部材5の位置及び姿勢がそのまま、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所の位置及び姿勢となる場合には、操作取得部34は、操作指示部材5の位置及び姿勢を、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所に対する操作としてもよい。本実施の形態では、この場合について主に説明する。なお、この場合であっても、操作取得部34は、例えば、表示座標系における操作指示部材5の位置や姿勢を、位置関係取得部32によって取得された、ワールド座標系と表示座標系との同次変換行列と、ワールド座標系と仮想ロボットの3次元モデルのローカル座標系との同次変換行列とを用いて、仮想ロボットのローカル座標系における位置や姿勢に変換した結果を、仮想ロボットの3次元モデルへの操作としてもよい。一方、操作指示部材5の位置及び姿勢と、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所の位置及び姿勢とが異なる場合には、操作取得部34は、操作指示部材5の位置及び姿勢に基づいて、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所の位置及び姿勢を生成し、その生成した結果を、その箇所に対する操作としてもよい。この場合には、通常、操作指示部材5の位置及び姿勢と、3次元モデルにおける操作指示部材5に対応する箇所の位置及び姿勢との関係があらかじめ決められており、操作取得部34は、その関係を用いて、操作指示部材5の位置及び姿勢から、3次元モデルにおける操作指示部材5に対応する箇所の位置及び姿勢を取得することによって、その箇所の操作を取得してもよい。なお、この場合については、後述する。
なお、この操作指示部材5の位置等に応じた操作の取得は、受付部33によって開始指示が受け付けられた時点から、終了指示が受け付けられた時点まで行われる。すなわち、操作取得部34は、開始指示から終了指示までの間の操作指示部材5の位置等に応じた操作を取得することになる。取得された操作は、例えば、溶接トーチの先端の位置及び先端部分の姿勢をリアルタイムで示すものであってもよい。
画像生成部35は、記憶部31で記憶されている仮想ロボットの3次元モデルと、位置関係取得部32によって取得された相対的な位置関係とに基づいて、実環境における所定の位置に、3次元モデルを表示するための表示画像を生成する。また、仮想ロボットへの操作が取得された場合には、画像生成部35は、操作された3次元モデルを表示するための表示画像を生成する。
仮想ロボットの3次元モデルが表示される実環境の所定の位置は、例えば、ワールド座標系における所定の位置であってもよく、実環境に存在するロボット1や他のオブジェクトと、仮想ロボットの3次元モデルとが所定の位置関係となる位置であってもよい。仮想ロボットの3次元モデルが表示される実環境における位置、または、ロボット1等と仮想ロボットの3次元モデルとの所定の位置関係は、例えば、あらかじめ決められていてもよく、または、作業者が変更することができてもよい。仮想ロボットの3次元モデルは、例えば、ロボット1の位置に表示されてもよく、ロボット1と異なる位置に表示されてもよい。仮想ロボットの3次元モデルをロボット1の位置に表示するとは、ロボット1と同じ位置に仮想ロボットが配置されるように3次元モデルを表示することであり、例えば、仮想ロボットの3次元モデルの基端側の端部(例えば、床面などへの取り付け部分)が、ロボット1の基端側の端部に重なるように表示することであってもよい。ロボット1と異なる位置に仮想ロボットの3次元モデルが表示される場合には、例えば、ロボット1の隣に3次元モデルが表示されてもよい。なお、本実施の形態による画像処理装置3では、実環境において作業者が移動させる操作指示部材5の位置に、その操作指示部材5に対応する仮想ロボットの3次元モデルの箇所が表示されることになる。したがって、仮想ロボットの3次元モデルがロボット1の位置に表示される場合には、操作指示部材5がロボット1のアーム等に当たる可能性もあるため、仮想ロボットの3次元モデルは、ロボット1とは異なる位置に表示されることが好適である。いずれにしても、仮想ロボットの3次元モデルは、実環境における位置が変化しないように表示されることになる。例えば、仮想ロボットの3次元モデルは、実ロボットであるロボット1との位置関係が変化しないように表示される。したがって、表示装置4において、作業者が表示装置4の向きを変化させたとしても、実環境における仮想ロボットの3次元モデルの表示位置は変化しないことになる。
ワールド座標系における仮想ロボットの3次元モデルの位置は決まっている。したがって、画像生成部35は、実環境における位置関係と同様になるように、仮想空間において仮想ロボットの3次元モデルを配置することができる。例えば、実環境にロボット1が配置されている場合には、画像生成部35は、ロボット1の配置位置があらかじめ決まっている仮想空間において、そのロボット1の配置位置と所定の位置関係となるように仮想ロボットの3次元モデルを配置してもよい。なお、仮想ロボットの各関節の角度は、操作が行われていない場合には初期値となり、操作が行われた場合には操作後の値となる。操作後の各関節の角度は、例えば、実ロボットと同様に、操作後の仮想ロボットの3次元モデルにおける手先の位置及び姿勢を用いた逆運動学によって算出されてもよい。その3次元モデルにおける手先の位置及び姿勢は、操作取得部34の取得結果によって示されるものであってもよい。また、画像生成部35は、位置関係取得部32によって取得された相対的な位置関係によって、ワールド座標系と表示装置4のローカル座標系である表示座標系との関係を知ることができるため、仮想空間における表示装置4の位置及び向きを特定することができる。したがって、画像生成部35は、仮想空間における仮想ロボットの3次元モデルを、表示装置4の位置及び向きを基準としてレンダリングすることによって、3次元モデルを表示するための2次元の表示画像を生成することができる。仮想ロボットが操作されると、上記のように、仮想空間における仮想ロボットの3次元モデルの形状が、それに応じて変更されることになる。また、表示装置4の位置や向きが実環境において変化した場合には、それに応じて仮想空間上の視点の位置や方向が変更されることになる。そして、その変更後にレンダリングが行われることによって、操作後の3次元モデルの表示画像や、表示装置4の位置や向きの変化後の3次元モデルの表示画像が生成されることになる。なお、画像生成部35は、仮想ロボットの3次元モデルの表示画像が表示装置4のディスプレイに表示された際に、その表示画像の大きさが実環境と整合するように、表示画像を生成するものとする。すなわち、表示装置4のディスプレイに表示された仮想ロボットの3次元モデルと、その3次元モデルと同じ相対的な位置関係となるように実環境に配置された実ロボットとが、表示装置4を介して見たときに同じ大きさになるように、表示画像が生成されることになる。
また、受け付けられた操作に応じて仮想ロボットを操作できないこともあり得る。例えば、仮想ロボットの手先を、移動可能な範囲を超えて移動させる操作または回転可能な範囲を超えて回転させる操作が受け付けられることもある。このような場合には、画像生成部35は、その操作に応じた表示画像を生成しなくてもよく、または、可能な範囲内で移動または回転を行った仮想ロボットの3次元モデルの表示画像を生成してもよい。また、移動可能な範囲を超えて移動させる操作または回転可能な範囲を超えて回転させる操作が受け付けられた場合には、例えば、受け付けられた操作が、操作可能な範囲を超えている旨のアラートが作業者に対して出力されてもよい。
画像出力部36は、画像生成部35によって生成された表示画像を表示装置4に出力する。なお、画像出力部36は、表示画像のみを出力してもよい。この場合には、表示装置4において、実環境の画像または実環境そのものに表示画像が重ねられて表示されることになる。一方、表示装置4が非透過型ディスプレイを有する場合であって、表示装置4で撮影された実環境の画像が画像処理装置3で受け付けられている場合には、実環境の画像と表示画像とが合成された結果が、表示装置4に出力されてもよい。この合成は、例えば、画像処理装置3が有する図示しない合成部によって行われてもよい。また、生成された表示画像が表示装置4で表示されることによって、例えば、操作指示部材5と、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所とが重なるように表示されてもよい。
実ロボットであるロボット1と異なる位置に仮想ロボットの3次元モデルが表示される場合には、例えば、図1で示されるように、ロボット1の隣に仮想ロボットの3次元モデル10が表示されてもよい。図1におけるロボット1及び仮想ロボットの3次元モデル10は、仮想ロボットを操作する作業者が表示装置4を介して見ている状況を模式的に示したものである。なお、図1では、説明の便宜上、仮想ロボットの3次元モデル10と、操作指示部材5とが異なる位置となっているが、例えば、3次元モデル10の少なくとも一部は、操作指示部材5と重なるように表示されてもよい。
なお、仮想ロボットの3次元モデルを表示することや、その仮想ロボットの3次元モデルの所定の箇所の位置や姿勢の操作に応じて、操作後の3次元モデルを表示することなどについては、例えば、上記特許文献1等で示されるようにすでに公知であり、その詳細な説明を省略する。
次に、画像処理装置3の動作について図2のフローチャートを用いて説明する。
(ステップS101)受付部33は、操作の開始指示を受け付けたかどうか判断する。そして、操作の開始指示を受け付けた場合には、ステップS102に進み、そうでない場合には、ステップS109に進む。
(ステップS102)操作取得部34は、操作指示部材5の位置や姿勢を取得するかどうか判断する。そして、操作指示部材5の位置等を取得する場合には、ステップS103に進み、そうでない場合には、操作指示部材5の位置等を取得すると判断するまで、ステップS102の処理を繰り返す。なお、操作取得部34は、例えば、操作指示部材5の位置等を取得すると定期的に判断してもよい。また、操作取得部34は、例えば、ステップS101からステップS102に進んだ場合には、すぐに操作指示部材5の位置等を取得すると判断してもよい。
(ステップS103)操作取得部34は、操作指示部材5の位置や姿勢を取得する。このステップS103の処理が定期的に繰り返されることによって、結果として、操作指示部材5の動きが取得されることになってもよい。
(ステップS104)操作取得部34は、ステップS103における操作指示部材5の位置等に関する取得結果に基づいて、仮想ロボットの3次元モデルにおける操作指示部材5に対応する箇所に対する操作を取得する。この操作の取得は、例えば、3次元モデルの所定の箇所の位置及び姿勢の取得であってもよい。このようにして取得される位置及び姿勢は、通常、操作後の位置及び姿勢である。なお、例えば、操作指示部材5の位置及び姿勢がそのまま、3次元モデルにおける操作指示部材5に対応する箇所に対する操作になる場合には、操作取得部34は、ステップS103で取得した操作指示部材5の位置及び姿勢を、3次元モデルにおける操作指示部材5に対応する箇所に対する操作としてもよい。
(ステップS105)位置関係取得部32は、実環境と表示装置4との相対的な位置関係を取得する。
(ステップS106)画像生成部35は、仮想ロボットの3次元モデルと、ステップS105で取得された相対的な位置関係と、ステップS104で取得された操作とを用いて、操作された3次元モデルの表示画像を生成する。
(ステップS107)画像出力部36は、ステップS106で生成された表示画像を表示装置4に出力する。その結果、作業者は、操作後の仮想ロボットの3次元モデルを見ることができる。通常、作業者が実環境において操作している操作指示部材5の位置に、操作指示部材5に対応する3次元モデルの箇所が重ねて表示されることになる。このようにして、実環境に存在する操作指示部材5を用いて、仮想ロボットの3次元モデルを操作することができるようになる。
(ステップS108)受付部33は、操作の終了指示を受け付けたかどうか判断する。そして、操作の終了指示を受け付けた場合には、ステップS101に戻り、そうでない場合には、ステップS102に戻る。
(ステップS109)画像生成部35は、表示画像の生成を行うかどうか判断する。そして、表示画像を生成する場合には、ステップS110に進み、そうでない場合には、ステップS101に戻る。なお、画像生成部35は、例えば、表示画像の生成を行うと定期的に判断してもよい。この判断が行われることによって、例えば、操作が行われていなくても、表示装置4の位置や向きが変更された場合には、その変更後の位置や向きに応じた表示画像が表示装置4で表示されるようになる。
(ステップS110)位置関係取得部32は、実環境と表示装置4との相対的な位置関係を取得する。
(ステップS111)画像生成部35は、仮想ロボットの3次元モデルと、ステップS110で取得された相対的な位置関係とを用いて、3次元モデルの表示画像を生成する。
(ステップS112)画像出力部36は、ステップS111で生成された表示画像を表示装置4に出力する。その結果、作業者は、仮想ロボットの3次元モデルを見ることができる。そして、ステップS101に戻る。
なお、図2のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、本実施の形態による画像処理装置3の動作について、具体例を用いて説明する。
表示装置4を頭部に装着している作業者が、仮想ロボットの3次元モデルをディスプレイに表示させたとする(ステップS109~S112)。そして、作業者は、図3Aで示されるように、3次元モデルのツール10aを移動させたい実環境の位置に、棒状の操作指示部材5を手で移動させ、その状態において、「操作開始」と発声したとする。すると、その音声は受付部33のマイクで集音され、音声認識が行われて、操作の開始指示が入力されたと判断される(ステップS101)。そして、表示装置4で取得された操作指示部材5の撮影画像を用いて、操作取得部34によって、操作指示部材5の尖端側の位置及び姿勢が取得され、それがそのままツール10aの先端の位置及び姿勢を示す操作になったとする(ステップS102~S104)。その操作は、画像生成部35に渡される。
その後、位置関係取得部32によって、実環境と表示装置4との相対的な位置関係が取得され、画像生成部35に渡される(ステップS105)。画像生成部35は、相対的な位置関係や、ツール10aの操作を受け取ると、相対的な位置関係に応じて仮想空間における表示装置4の位置や向きを更新し、ツール10aへの操作、すなわちツール10aの位置及び姿勢に基づいて、逆運動学によって仮想ロボットの3次元モデルの各関節の角度を算出し、その算出した関節の角度に応じて3次元モデルの各関節の角度を変化させる。その後、画像生成部35は、3次元モデルをレンダリングすることによって、表示画像を生成して画像出力部36に渡す(ステップS106)。その表示画像は、画像出力部36によって表示装置4に出力される(ステップS107)。その結果、作業者は、図3Bで示されるように、ツール10aが操作指示部材5に重なるように表示された3次元モデルを見ることができる。
その後、作業者が、図3Cの破線で示される位置から実線で示される位置に、操作指示部材5を移動させたとする。すると、それに応じて、仮想ロボットの3次元モデルのツール10aも移動することになる(ステップS102~S107)。このように、仮想ロボットの3次元モデルのツール10aが、操作指示部材5に追従するため、作業者は、仮想ロボットの3次元モデルを容易に操作することができるようになる。特に、作業者は、操作指示部材5を用いることによって、微小な角度の変更などを容易に行うことができるようになる。また、実環境に溶接対象の母材を配置し、その母材上の溶接線に操作指示部材5の尖端が沿うように操作指示部材5を移動させることによって、仮想ロボットの3次元モデルを適切に操作することができるようになる。
なお、この操作に応じて教示を行う場合には、作業者は、仮想入力インターフェースや、他の入力デバイスなどを用いて、適宜、画像処理装置3に教示指示を入力してもよい。そして、それに応じて、例えば、その時点の各関節の角度が教示データとして記録されてもよい。このようにして生成された教示データは、実ロボットであるロボット1を制御するロボット制御装置に渡され、ロボット1のプレイバック動作のために用いられてもよい。このようにして、仮想ロボットの3次元モデルを用いて教示データを生成することもできる。なお、仮想ロボットの3次元モデルに対する一連の操作が終了した後に、作業者が「操作終了」と発声したとする。すると、その音声は受付部33のマイクで集音され、音声認識が行われて、操作の終了指示が入力されたと判断される(ステップS108)。そして、一連の操作は終了となり、3次元モデルのツール10aは操作指示部材5に追従しなくなる。
また、この具体例では、説明の便宜上、図3A~図3Cにおいて、操作指示部材5を保持している作業者の手を省略している。また、例えば、操作指示部材5の円周面に、操作指示部材5の姿勢を取得するための模様や突起、凹部などが設けられている場合であって、操作指示部材5の撮影画像を用いて操作指示部材5の位置や姿勢が取得される場合には、作業者は、操作指示部材5の円周面の模様等が撮影画像に含まれるように、操作指示部材5を持つことが好適である。
また、本実施の形態では、操作指示部材5の尖端の位置が、ツール10aの先端の位置となるように操作を取得する場合について主に説明したが、そうでなくてもよい。例えば、図4で示されるように、操作指示部材5の尖端側から距離Lだけ他端側に近い位置が、ツール10aの先端の位置となる操作が取得されてもよい。この場合には、例えば、溶接ワイヤの突き出し長を考慮してツール10aを操作する際に、操作指示部材5の尖端を母材の溶接線に沿わせて移動させ、距離Lを突き出し長としてもよい。そして、操作取得部34は、操作指示部材5の尖端から距離Lだけ他端側に近い位置が、ツール10aの先端の位置となる操作を取得してもよい。このようにすることで、仮想ロボットの3次元モデルに関する突き出し長を考慮した操作を実現することができる。この場合には、取得された操作指示部材5の位置と、取得された操作によって示されるツール10aの位置とは異なることになる。このように、3次元モデルにおける操作指示部材5に対応する箇所に対する操作によって示される位置は、取得された操作指示部材5の位置から所定の長さだけ離れた位置となってもよい。また、棒状の操作指示部材5において、ツール10aの先端に相当する位置が、色やリング等によって示されてもよい。例えば、操作指示部材5の尖端から距離Lだけ他端側に近い位置が、周方向にわたって、他と異なる色に塗られていてもよい。そして、その色の箇所が、3次元モデルにおける所定の位置、例えば、ツール10aの先端の位置となる操作が取得されてもよい。また、棒状の操作指示部材5に長手方向に移動可能なリング状部材が装着されていてもよい。そして、そのリングの箇所が、3次元モデルにおける所定の位置、例えば、ツール10aの先端の位置となる操作が取得されてもよい。この場合には、作業者がリングの位置を動かすことによって、例えば、ツール10aの先端の位置を任意に変更することができるようになる。
また、本実施の形態では、操作指示部材5によってツール10aを操作する場合について主に説明したが、そうでなくてもよい。操作指示部材5によって、仮想ロボットの3次元モデル10を構成するアーム等の部分オブジェクトを操作してもよい。すなわち、仮想ロボットの3次元モデル10における操作指示部材5に対応する箇所は、ツールや手先、TCPではなく、所定のアームであってもよい。より具体的には、図5で示されるように、仮想ロボットの3次元モデル10が有する部分オブジェクト10-1~10-8のうち、部分オブジェクト10-7が、操作指示部材5によって操作されてもよい。すなわち、ある部分オブジェクト10-7の位置や姿勢が、実環境における操作指示部材5の位置や姿勢に応じて決定されてもよい。この場合には、画像生成部35は、例えば、操作指示部材5によって操作される部分オブジェクト10-7を特定可能な表示画像を生成してもよい。より具体的には、部分オブジェクト10-7の色や輝度が、他の部分オブジェクトの色や輝度と異なる表示画像が生成されてもよい。また、この操作対象の部分オブジェクトは、作業者が、適宜、選択することができてもよい。この場合には、例えば、作業者が、表示装置4のディスプレイに表示された仮想ロボットの3次元モデルにおいて、所定の部分オブジェクトをエアタップ等のジェスチャ操作によって選択した際に、その選択した部分オブジェクトが、操作指示部材5を用いた操作対象になってもよい。
以上のように、本実施の形態による画像処理装置3によれば、実環境に存在する操作指示部材5を操作することによって、仮想空間上の仮想ロボットの3次元モデルにおける所定の箇所を操作することができる。したがって、仮想空間において、仮想ロボットの所定の箇所を仮想的に手でつまむ動作(ホールド動作)を行って、つまんだ箇所を移動させる場合よりも実感があり、より直感的な操作を実現することができる。特に、実環境に存在する母材に沿った移動の操作や、角度を少しだけ変化させる操作などを行う場合には、より正確な操作を実現することもできる。また、受付部33によって受け付けられた操作の開始指示から終了指示までの間に、操作取得部34による操作の取得を行うことによって、3次元モデルが操作指示部材5に追従する期間と、そうでない期間とを区別することができ、適切な操作を実現することができる。
なお、本実施の形態では、操作の開始指示及び終了指示が受付部33によって受け付けられる場合について説明したが、そうでなくてもよい。例えば、作業者による操作指示部材5の操作に応じて、操作の開始や、操作の終了が指示されたと判断されてもよい。この場合には、例えば、操作取得部34は、撮影画像に含まれる棒状の操作指示部材5が1回目に振られた際に、操作の開始が指示されたと判断し、2回目に振られた際に、操作の終了が指示されたと判断してもよい。また、例えば、操作取得部34は、撮影画像に含まれる操作指示部材5が、その操作指示部材5に対応する3次元モデルの箇所に重ねられた際に、操作の開始が指示されたと判断し、操作指示部材5が振られた際に、操作の終了が指示されたと判断してもよい。また、操作指示部材5が光源を有している場合には、例えば、操作取得部34は、撮影画像に含まれる操作指示部材5の光源が点灯した際に、操作の開始が指示されたと判断し、消灯した際に、操作の終了が指示されたと判断してもよい。このように、受付部33による操作の開始指示及び終了指示の受け付けが行われない場合には、画像処理装置3は、受付部33を有していなくてもよい。
また、本実施の形態では、棒状の操作指示部材5が用いられる場合について主に説明したが、そうでなくてもよい。例えば、操作指示部材は、平面状の部材であってもよい。そして、例えば、3次元モデルのツールの先端が、その平面状の部材における所定の位置(例えば、中心や重心、または、あらかじめ決められた図形や凸部、凹部などの存在する位置など)に位置し、そのツールの先端側の姿勢が、その平面状の部材の法線方向となるように、ツールに対する操作が取得されてもよい。この場合には、表示装置4において3次元モデルの表示画像が表示される際に、3次元モデルにおける操作指示部材に対応する箇所(例えば、ツールの先端部分)と、平面状の操作指示部材とは重ならないように表示されてもよい。例えば、ツールの先端が、平面状の操作指示部材の表面の所定の位置に接触するようにツールが表示されてもよい。
また、本実施の形態では、操作取得部34によって操作指示部材5の位置及び姿勢が取得され、その取得結果に応じて仮想ロボットの3次元モデルの操作指示部材5に対応する箇所の操作が取得される場合について主に説明したが、そうでなくてもよい。操作取得部34によって、操作指示部材5の位置のみが取得され、その取得結果に応じて、仮想ロボットの3次元モデルの操作指示部材5に対応する箇所の位置のみを示す操作が取得されてもよい。この場合でも、例えば、ツールの先端や、TCP、または3次元モデルの他の箇所の位置を、操作指示部材5を用いて操作することができるようになる。この場合には、仮想ロボットの3次元モデルの姿勢については、例えば、あらかじめ決められた姿勢が用いられてもよく、他の方法によって入力された姿勢が用いられてもよい。例えば、作業者が3次元モデルの所定の箇所をエアタップ等によって選択した場合には、その選択した位置が、操作指示部材5の尖端の位置となる操作が操作取得部34によって取得されてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。例えば、画像処理装置3の少なくとも一部の構成は、物理的には、ディスプレイを有する装置などに含まれてもよい。したがって、図1で示される装置の切り分けは、物理的な装置に応じたものではなく、機能に応じた便宜上のものであると考えてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、画像処理装置3に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。