[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
<1.1:表示制御システムの構成>
図1は、第1実施形態に係る表示制御システム1000の概略構成図である。
図2は、第1実施形態に係る表示制御装置100の概略構成図である。
表示制御システム1000は、図1に示すように、投影部Prj1と、撮像部Cmr1と、表示制御装置100と、ロボットRbtとを備える。
投影部Prj1は、作業員やロボットRbtの最高点よりも高い位置(例えば、天井)に設置され、投影点P_prjから、下方に向かって(例えば、床面FLRに対して)画像あるいは境界線等を投影する装置である。投影部Prj1は、例えば、画像を床面FLRに投影するプロジェクタ装置や、LEDスキャナ、レーザースキャナ等の床面に所定の色の線を表示することができる装置により実現される。
投影部Prj1は、表示制御装置100から出力される制御信号Ctl_prj(D_prj)を入力し、当該制御信号Ctl_prj(D_prj)に基づいて、投影対象(例えば、床面)に対して、画像または境界線等(データD_prj)を投影する。
撮像部Cmr1は、作業員やロボットRbtの最高点よりも高い位置(例えば、天井)に設置され、投影部Prj1が床面に投影する画像または境界線の表示等を撮像するとともに、作業員(例えば、図1の作業員Psn1)や、作業員が装着しているヘルメット(例えば、図1の作業員Psn1が装着しているヘルメットHat1)、あるいは、作業員に装着されているマーカー(例えば、赤外光反射マーカー)等を撮像する。撮像部Cmr1は、例えば、可視光用イメージセンサを搭載しており、カラー映像を撮像できる撮像装置や、赤外光用イメージセンサを搭載しており、赤外光映像を撮像できる赤外線カメラ等により実現される。
撮像部Cmr1は、撮像したデータ(画像データ、映像データ)をデータD1_imgとして、表示制御装置100に出力する。
表示制御装置100は、図2に示すように、セレクタSEL1と、投影制御部1と、セレクタSEL2と、訓練データ取得部2と、訓練データ格納部DB1と、CG合成部3(CG:Computer Graphics)と、拡張訓練データ格納部DB2と、学習部4と、最適化パラメータ格納部DB3と、予測処理部5とを備える。
セレクタSEL1は、表示制御装置100の各機能部を制御する制御部(不図示)から出力されるモード信号Modeに従い、訓練データ取得時の投影データを含むデータD1_prj_trainと、予測処理部5から出力される予測時の投影データを含むデータDp1_prjのいずれか一方を選択し、選択したデータをデータD_prjとして投影制御部1に出力するセレクタである。具体的には、(1)訓練データ取得時において、モード信号Modeは、その信号値が「0」にセットされており、セレクタSEL1は、訓練データ取得時の投影データを含むデータD1_prj_trainを選択し、当該データをデータD_prjとして、投影制御部1に出力する。(2)予測時において、モード信号Modeは、その信号値が「1」にセットされており、セレクタSEL1は、予測処理部5から出力される予測時の投影データを含むデータDp1_prjを選択し、データDp1_prjをデータD_prjとして投影制御部1に出力する。
投影制御部1は、セレクタSEL1から出力されるデータD_prjを入力し、当該データD_prjに含まれる投影用のデータ(投影用の画像データ、あるいは、投影面に表示する境界線のデータ)が投影部Prj1から投影対象に投影されるように制御する制御信号Ctl_prj(D_prj)を生成し、生成した当該制御信号Ctl_prj(D_prj)を投影部Prj1に出力する。
セレクタSEL2は、表示制御装置100の各機能部を制御する制御部(不図示)から出力されるモード信号Modeに従い、撮像部Cmr1から出力されるデータD1_imgを、訓練データ取得部2および予測処理部5のいずれか一方に出力するセレクタである。具体的には、(1)訓練データ取得時において、モード信号Modeは、その信号値が「0」にセットされており、セレクタSEL2は、データD1_imgを訓練データ取得部2に出力する。(2)予測時において、モード信号Modeは、その信号値が「1」にセットされており、セレクタSEL2は、データD1_imgを予測処理部5に出力する。
訓練データ取得部2は、セレクタSEL2から出力されるデータD1_imgを入力し、データD1_imgに基づいて、予測処理部5の学習モデルを訓練するための訓練データDtr1を生成する。そして、訓練データ取得部2は、生成した訓練データDtr1を訓練データ格納部DB1に記憶させる。
訓練データ格納部DB1は、訓練データ取得部2からの指示に従い、訓練データ取得部2から出力される訓練データDtr1を記憶する。また、訓練データ格納部DB1は、CG合成部3からの指示に従い、記憶保持している訓練データDtr1をCG合成部3に出力する。
CG合成部3は、訓練データ格納部DB1から、訓練データDtr1を読み出す(取得する)。そして、CG合成部3は、訓練データDtr1を用いて、CG合成した訓練データを作成し、作成したデータを拡張訓練データDtr2として、拡張訓練データ格納部DB2に記憶させる。なお、CG合成部3は、拡張訓練データDtr2を作成するために用いた訓練データDtr1も、拡張訓練データDtr2に含めて、拡張訓練データ格納部DB2に記憶させるようにしてもよい。
拡張訓練データ格納部DB2は、CG合成部3からの指示に従い、CG合成部3から出力される拡張訓練データDtr2を記憶する。また、拡張訓練データ格納部DB2は、学習部4からの指示に従い、記憶保持している拡張訓練データDtr2を学習部4に出力する。
学習部4は、拡張訓練データ格納部DB2から拡張訓練データDtr2を読み出し(取得し)、拡張訓練データDtr2を用いて、学習処理を行う。そして、学習部4は、学習処理により、学習用モデルを最適化するパラメータ(最適化パラメータθ_opt)を取得し、取得した最適化パラメータθ_optを最適化パラメータ格納部DB3に記憶させる。
最適化パラメータ格納部DB3は、学習部4からの指示に従い、学習部4から出力される最適化パラメータθ_optを記憶する。また、最適化パラメータ格納部DB3は、予測処理部5からの指示に従い、記憶保持している最適化パラメータθ_optを予測処理部5に出力する。
予測処理部5は、最適化パラメータ格納部DB3から最適化パラメータθ_optを読み出し、当該最適化パラメータθ_optに基づいて、学習済みモデルを取得する。予測処理部5は、セレクタSEL2から出力されるデータD1_imgを入力し、当該データD1_imgに対して、学習済みモデルを用いた予測処理を実行する。そして、予測処理部5は、予測処理結果に基づいて、投影制御部1に出力するデータDp1_prj(投影部Prj1から投影させるデータ)を生成する。そして、予測処理部5は、生成したデータDp1_prjをセレクタSEL1に出力する。
ロボットRbtは、ロボット制御部Rbt_C1と、ロボットアームRbt_armとを備える。
ロボット制御部Rbt_C1は、ロボットアームRbt_armを制御するための機能部である。ロボット制御部Rbt_C1は、訓練用データD1_rb_trainや所定の制御信号を入力し、入力された訓練用データD1_rb_trainや所定の制御信号に基づいて、ロボットアームRbt_armを制御する制御信号を生成する。
ロボットアームRbt_armは、ロボット制御部Rbt_C1から指令(制御信号)に基づいて、所定の動作(例えば、物の把持、運搬等)を行う。
<1.2:表示制御システムの動作>
以上のように構成された表示制御システム1000の動作について、以下、説明する。
以下では、表示制御システム1000の動作について、(1)訓練データ取得モードの処理、(2)学習モードの処理、(3)予測モードの処理に分けて説明する。
なお、説明便宜のため、表示制御システム1000は、工場等の狭空間(室内空間)に設置されており、投影部Prj1および撮像部Cmr1は、天井に設置されており、作業員Psn1、ロボットRbtは、床面に存在しているものとして、以下、説明する。また、投影部Prj1は、床面FLRを投影対象とするものとする。
(1.2.1:訓練データ取得モードの処理)
まず、訓練データ取得モードの処理について、説明する。
図3、図4は、第1実施形態に係る表示制御システム1000の訓練データ取得モードの処理を説明するための図である。
図3に示すように、ロボット制御部Rbt_C1に、訓練データを取得するために、ロボットアームRbt_armに所定の動作(これを第1動作という)を実行させるためのデータD1_rb_trainを入力する。また、表示制御装置100の投影制御部1に、ロボットアームRbt_armに第1動作をさせたときの安全領域、すなわち、作業員(例えば、図3では、作業員Psn1)が存在しても安全な領域(第1動作を行っているときのロボットアームRbt_armに作業員が接触することなく、安全に作業を行うことができる領域)を投影対象である床面に表示させるためのデータD1_prj_trainを入力する。
ロボットアームRbt_armは、データD1_rb_trainに基づいて、第1動作を行う。ロボットアームRbt_armが第1動作を行っている期間において、投影部Prj1は、表示制御装置100の投影制御部1に入力されたデータD1_prj_trainに基づいて、ロボットアームRbt_armが第1動作を行っているときの安全領域を示す画像、あるいは、境界線を、投影対象である床面FLRに表示させる。なお、表示制御装置100において、例えば、投影部Prj1から、例えば、画像上の大きさが既知であるテストパターンを含む所定のテスト画像を床面に投影するように、投影制御部1により制御し、当該テスト画像を撮像部Cmr1により取得した画像(撮像画像)において、上記テストパターンの大きさを調べることで、投影部Prj1の投影点P_prjから投影面(床面FLR)までの距離を取得する。なお、撮像部Cmr1の撮影パラメータ(画角、焦点距離等)は分かっているものとする。そして、表示制御装置100において、取得した距離に基づいて、安全領域を示す画像、あるいは、境界線が投影面である床面FLRに投影されるように投影制御部1を制御する。
図3に示した場合、領域Ar1が、ロボットアームRbt_armが第1動作を行っているときの安全領域であり、当該安全領域を示す境界線が投影部Prj1から床面FLRに投影されている。
この状態において、作業員Psn1にヘルメットHat1(例えば、黄色のヘルメット)をかぶってもらい、安全領域内(領域Ar1内)で作業、あるいは、移動等を行ってもらい、そのときの状況を撮像部Cmr1で撮像する。なお、説明便宜のため、撮像部Cmr1は、可視光用イメージセンサを搭載しており、カラー映像を撮像できる撮像装置であるものとして、以下説明する。また、撮像部Cmr1は、安全領域(図3の場合、領域Ar1)と、ロボットアームRbt_armとが撮像画像(撮像映像)に含まれるように、カメラパラメータ(光軸の向き、画角、焦点距離等)が調整されているものとする。
撮像部Cmr1は、ロボットアームRbt_armが第1動作を行っているときの状況を撮像した映像をフレームごとの画像(フレーム画像)(データD1_img)として、訓練データ取得部2に出力する。
訓練データ取得時において、モード信号Modeは、その信号値が「0」にセットされているので、セレクタSEL2は、データD1_imgを訓練データ取得部2に出力する。
訓練データ取得部2は、セレクタSEL2から出力されるデータD1_imgを入力し、データD1_imgに基づいて、予測処理部5の学習モデルを訓練するための訓練データDtr1を生成する。具体的には、訓練データ取得部2は、データD1_img(フレーム画像データ)を実画像データのまま、訓練データDtr1として、訓練データ格納部DB1に記憶させる。また、訓練データ取得部2は、データD1_img(フレーム画像データ)から、例えば、所定の画像特徴量を抽出した画像(例えば、画像特徴量を作業員がかぶっているヘルメットの色と同一色とし、当該色の部分の画像領域を抽出した画像)を取得し、原画像D1_img(フレーム画像データ)(実画像データ)に合成するようにし、このように合成した画像を訓練データDtr1として生成してもよい。
また、訓練データ取得部2は、訓練データDtr1に、画像データとともに、当該画像が取得されたときの状態の情報(追加情報(ラベル情報))を含めるようにしてもよい。例えば、ロボットアームRbt_armの動作フェーズについての情報、安全領域が領域Ar1で正しいことを示す情報等を追加情報として、画像データとともに、訓練データDtr1に含めるようにしてもよい。
訓練データ取得部2は、生成した訓練データDtr1を訓練データ格納部DB1に記憶させる。
CG合成部3は、訓練データ格納部DB1から、訓練データDtr1を読み出す(取得する)。そして、CG合成部3は、訓練データDtr1を用いて、CG合成した訓練データを作成する。例えば、CG合成部3は、訓練データDtr1の画像データにおいて、作業員のヘルメット部分の画像領域を、CG処理により当該ヘルメットの色と異なる色にしたCG画像領域を生成し、当該CG画像領域により、実画像のヘルメット部分の画像領域を置換することで、CG画像データを生成する。つまり、このCG画像データは、CG処理により、ヘルメット部分の色が変更された画像となる。CG合成部3は、上記と同様にして、例えば、ヘルメット色を他の色、テクスチャーに変更する、あるいは、作業員の髪(ヘルメットをかぶっていない状態)に置換する等のCG処理(CG合成処理)により、元の画像から、多様なCG合成画像を生成する。このように処理することで、1つの訓練データDtr1から、多量の訓練用データを取得することができる。そして、CG合成部3は、上記のようにして生成したCG画像データを、元の画像データに追加して、拡張訓練データDtr2を生成する。そして、CG合成部3は、生成した拡張訓練データDtr2を拡張訓練データ格納部DB2に記憶させる。
なお、元の画像データから、CG処理(CG合成処理)により、多量の画像データ(訓練用画像データ)を取得する方法については、特願2019−008307号に記載の方法を用いてもよい。
上記のように処理することで、表示制御システム1000では、図3の場合(ロボットアームRbt_armが第1動作をしている場合)についての訓練データ(学習用データ)が取得される。
また、表示制御システム1000では、ロボットアームRbt_armが第1動作とは異なる第2動作をしているときの状態を撮像し、さらに、訓練データを取得する。
図4に示すように、ロボット制御部Rbt_C1に、訓練データを取得するために、ロボットアームRbt_armに第1動作とは異なる第2動作を実行させるためのデータD2_rb_trainを入力する。また、表示制御装置100の投影制御部1に、ロボットアームRbt_armに第2動作をさせたときの安全領域、すなわち、作業員(例えば、図4では、作業員Psn1)が存在しても安全な領域(第2動作を行っているときのロボットアームRbt_armに作業員が接触することなく、安全に作業を行うことができる領域)を投影対象である床面に表示させるためのデータD2_prj_trainを入力する。
ロボットアームRbt_armは、データD2_rb_trainに基づいて、第2動作を行う。ロボットアームRbt_armが第2動作を行っている期間において、投影部Prj1は、表示制御装置100の投影制御部1に入力されたデータD2_prj_trainに基づいて、ロボットアームRbt_armが第2動作を行っているときの安全領域を示す画像、あるいは、境界線を、投影対象である床面FLRに表示させる。図4に示した場合、領域Ar2が、ロボットアームRbt_armが第2動作を行っているときの安全領域であり、当該安全領域を示す境界線が投影部Prj1から床面FLRに投影されている。
この状態において、作業員Psn1にヘルメットHat1(例えば、黄色のヘルメット)をかぶってもらい、安全領域内(領域Ar1内)で作業、あるいは、移動等を行ってもらい、そのときの状況を撮像部Cmr1で撮像する。
そして、ロボットアームRbt_armが第1動作をしているときの訓練データを取得する処理と同様の処理を実行することで、表示制御システム1000は、ロボットアームRbt_armが第2動作をしているときの拡張訓練データDtr2を取得し、当該拡張訓練データDtr2は、拡張訓練データ格納部DB2に記憶される。
以上のようにして、表示制御システム1000では、訓練データ取得モードの処理が実行され、訓練データ(学習用データ)(拡張訓練データDtr2)が取得される。
なお、上記では、表示制御システム1000において、訓練データを取得するために、投影部Prj1から安全領域を床面に示す画像または境界線を投影し床面に表示する場合について説明したが、これに限定されることはない。例えば、表示制御システム1000において、投影部Prj1から安全領域を床面に示す画像または境界線を投影せずに、撮像部Cmr1により映像(フレーム画像)を取得し、取得したフレーム画像において、安全領域を示す画像または境界線を(例えば、CG処理により)合成して、訓練データ(訓練用の画像データ)を生成するようにしてもよい。また、安全領域については、取得されたフレーム画像内の作業員、ロボットアームRbt_armの位置、状態に応じて、手動または自動(例えば、算出)により、特定するようにしてもよい。
(1.2.2:学習モードの処理)
次に、学習モードの処理について、説明する。
図5は、第1実施形態に係る表示制御システム1000の学習モードの処理を説明するための図である。
図5に示すように、学習部4は、拡張訓練データ格納部DB2から拡張訓練データDtr2を読み出し(取得し)、拡張訓練データDtr2を用いて、学習処理を行う。学習部4は、拡張訓練データDtr2を教師データとして、学習処理を行う。具体的には、学習部4は、入力を拡張訓練データDtr2に含まれる画像データ(この画像データを「Dtr2.img」と表記する)とし、出力を画像データが取得されたときの安全領域(投影面に表示する安全領域)を特定するための情報として、学習用モデル(例えば、ニューラルネットワークにより実現されるモデル)に対する学習を行う。学習用モデルは、例えば、入力層と、複数の中間層と、出力層とを備えるニューラルネットワークによるモデルである。学習用モデルの各層間の重み付け係数(各層間を繋ぐシナプス結合の重み付け)は、パラメータθにより設定(調整)されるものとする。
学習部4は、学習用モデルへの入力データDtr2.imgの集合をxとし、学習用モデルからの出力データの集合をyとし、入力データxが学習用モデルに入力されたときに出力データyが出力される条件付き確率をP(y|x)とすると、
を満たす最適パラメータθ_optを、上記学習用モデルのパラメータを更新(調整)する処理を繰り返して取得する。なお、条件付きP(y|x)は、出力データが教師データに近い程、大きな値をとるものとする。
例えば、条件付きP(y|x)は、以下のように設定される。
σ:標準偏差
なお、xiは、集合xに含まれるベクトル(2次元画像の各画素のデータを1次元ベクトルにしたデータ)であり、yiは、集合yに含まれるベクトルであり、yi_correctは、xiを入力としたときの教師データ(正解データ)(ベクトルデータ)である。H(xi;θ)は、入力xiに対して、例えば、複数層からなるニューラルネットワークの処理を施し、出力を取得する処理に相当する演算子を表している。パラメータθは、例えば、当該ニューラルネットワークのシナプス結合の重み付け等を決定するパラメータである。なお、H(xi;θ)には、非線形の演算が含まれてもよい。
学習部4は、拡張訓練データを用いて、学習用モデルを用いた学習処理を行い、十分収束したと判断した場合、そのときの学習用モデルに設定されていたパラメータθを最適化パラメータθ_optとして取得し、取得した最適化パラメータθ_optを最適化パラメータ格納部DB3に記憶させる。
以上のようにして、表示制御システム1000では、学習モードの処理が実行される。
(1.2.3:予測モードの処理)
次に、予測モードの処理について、説明する。
図6〜図9は、第1実施形態に係る表示制御システム1000の予測モードの処理を説明するための図である。
図6に示すように、ロボット制御部Rbt_C1に、制御信号Ctrl_Rbt(phase1)が入力され、ロボットアームRbt_armが所定の動作(これを「フェーズ1の動作」という)を実行する場合について、説明する。
この場合、ロボット制御部Rbt_C1は、ロボットアームRbt_armが、制御信号Ctrl_Rbt(phase1)に従う動作(フェーズ1の動作)を実行するように、ロボットアームRbt_armを制御する。
ロボットアームRbt_armは、ロボット制御部Rbt_C1から指令に従い、フェーズ1の動作を行う。
そして、撮像部Cmr1は、そのときの状況(ロボットアームRbt_arm、作業員、床面FLR等)を、訓練データを取得したときと同様の状態で撮像する。なお、投影部Prj1、撮像部Cmr1、ロボットRbt、床FLRとの位置関係がずれる場合があるので、予測モードの処理を実行する前に、キャリブレーション(相対位置関係の調整処理)を行うようにしてもよい。例えば、床面FLRと平行な平面上に存在するロボットRbtの台座上の異なる2点(例えば、図6に示した点P1、点P2)を撮像部Cmr1により撮像した画像内で検出し、検出した2点に対応する画像と、表示制御装置100において、訓練データを取得したときの画像の当該2点に対応する位置とが一致するように、撮像部Cmr1の光軸の向き、カメラアングル、画角等を調整する。このキャリブレーション(相対位置関係の調整処理)により、表示制御システム1000において、撮像部Cmr1で取得される画像は、訓練データを取得したときの画像と同様の状況、つまり、画像内の位置関係が同じ画像となるので、予測処理の精度が向上する。なお、キャリブレーション時の精度を高めるために、3点以上の点群をキャリブレーション点として利用し、当該点群によって生成された各キャリブレーション用パラメータ(光軸の向き、カメラアングル、画角等)の平均値を用いるなどの方法を採用しても良い。
キャリブレーションを実行した後、ロボットアームRbt_armがフェーズ1の動作を行っている期間中において、撮像部Cmr1は、ロボットRbt、床面FLR、(存在すれば)作業員を上方から撮像し、撮像した画像(フレーム画像)を表示制御装置100に出力し続ける。
予測処理時(予測モード)において、モード信号Modeは、その信号値が「1」にセットされているので、セレクタSEL2は、データD1_imgを予測処理部5に出力する。
予測処理部5は、表示制御装置100の処理モードが予測モードに設定されると、最適化パラメータ格納部DB3から最適化パラメータθ_optを読み出し、当該最適化パラメータθ_optに基づいて、学習済みモデルを取得する。つまり、予測処理部5は、学習用モデルにおいて、そのパラメータθを最適化パラメータθ_optにより設定する。これにより、学習済みモデルが構築され、予測処理部5は、当該学習済みモデルに、セレクタSEL2から出力される画像データD1_imgを入力させる。
予測処理部5は、ロボットアームRbt_armがフェーズ1の動作を行っている期間中において取得された画像データD1_imgを、学習済みモデルに入力し、当該学習済みモデルからの出力をデータDp1_prjとして取得する。例えば、図6に示す場合における、(1)ロボットアームRbt_armの位置、状態、および、(2)作業員Psn1の位置、状態は、図3の場合(安全領域が領域Ar1であるときの訓練データを取得したときの状態)における、(1)ロボットアームRbt_armの位置、状態、および、(2)作業員Psn1の位置、状態と類似している。したがって、この状態において、撮像した画像データD1_imgが、予測処理部5の学習済みモデルに入力された場合、安全領域が領域Ar1であることを示すデータ(床面FLRに領域Ar1を表示させるためのデータDp1_prj)が、学習済みモデルから出力される。
そして、予測処理部5は、取得したデータDp1_prjをセレクタSEL1に出力する。予測モードの場合、モード信号Modeの信号値は「1」であるので、セレクタSEL1は、予測処理部5から出力されるデータDp1_prjを投影制御部1に出力する。
投影制御部1は、データDp1_prjを入力し、データDp1_prjに基づく画像(あるいは、投影面に表示する境界線)が投影部Prj1から投影対象に投影されるように制御する制御信号Ctl_prj(Dp1_prj)を生成し、生成した当該制御信号Ctl_prj(Dp1_prj)を投影部Prj1に出力する。
そして、投影部Prj1は、制御信号Ctl_prj(Dp1_prj)に基づいて、投影面(床面FLR)に、データDp1_prjに基づく画像(あるいは、投影面に表示する境界線)を投影する。図6に示した場合、安全領域が領域Ar1であることを示す画像(あるいは、境界線)が床面FLRに投影される。
作業員Psn1は、床面FLRに投影されている画像(あるいは境界線)から、安全領域(図6の場合は、領域Ar1)がどこであるか容易に判断することができ、安全領域内で作業する、あるいは、安全領域内で移動することで、ロボットアームRbt_armの動作を妨害する、あるいは、ロボットアームRbt_armと接触、衝突することない。したがって、安全が確保される。また、ロボットアームRbt_armの動作も、作業員に接触、衝突することがなくなるため、高速動作を継続することができ、その結果、ロボットアームRbt_armによる作業効率も高い状態で維持できる。
次に、図7に示すように、ロボット制御部Rbt_C1に、制御信号Ctrl_Rbt(phase2)が入力され、ロボットアームRbt_armが所定の動作(これを「フェーズ2の動作」という)を実行する場合について、説明する。
この場合、ロボット制御部Rbt_C1は、ロボットアームRbt_armが、制御信号Ctrl_Rbt(phase2)に従う動作(フェーズ2の動作)を実行するように、ロボットアームRbt_armを制御する。
ロボットアームRbt_armは、ロボット制御部Rbt_C1から指令に従い、フェーズ2の動作を行う。
そして、撮像部Cmr1は、そのときの状況(ロボットアームRbt_arm、作業員、床面FLR等)を、訓練データを取得したときと同様の状態で撮像する。
ロボットアームRbt_armがフェーズ2の動作を行っている期間中において、撮像部Cmr1は、ロボットRbt、床面FLR、(存在すれば)作業員を上方から撮像し、撮像した画像(フレーム画像)を表示制御装置100に出力し続ける。
予測処理時(予測モード)において、モード信号Modeは、その信号値が「1」にセットされているので、セレクタSEL2は、データD1_imgを予測処理部5に出力する。
予測処理部5は、ロボットアームRbt_armがフェーズ2の動作を行っている期間中において取得された画像データD1_imgを、学習済みモデルに入力し、当該学習済みモデルからの出力をデータDp1_prjとして取得する。例えば、図7に示す場合における、(1)ロボットアームRbt_armの位置、状態、および、(2)作業員Psn1の位置、状態は、図4の場合(安全領域が領域Ar2であるときの訓練データを取得したときの状態)における、(1)ロボットアームRbt_armの位置、状態、および、(2)作業員Psn1の位置、状態と類似している。したがって、この状態において、撮像した画像データD1_imgが、予測処理部5の学習済みモデルに入力された場合、安全領域が領域Ar2であることを示すデータ(床面FLRに領域Ar2を表示させるためのデータDp1_prj)が、学習済みモデルから出力される。
そして、予測処理部5は、取得したデータDp1_prjをセレクタSEL1に出力する。予測モードの場合、モード信号Modeの信号値は「1」であるので、セレクタSEL1は、予測処理部5から出力されるデータDp1_prjを投影制御部1に出力する。
投影制御部1は、データDp1_prjを入力し、データDp1_prjに基づく画像(あるいは、投影面に表示する境界線)が投影部Prj1から投影対象に投影されるように制御する制御信号Ctl_prj(Dp1_prj)を生成し、生成した当該制御信号Ctl_prj(Dp1_prj)を投影部Prj1に出力する。
そして、投影部Prj1は、制御信号Ctl_prj(Dp1_prj)に基づいて、投影面(床面FLR)に、データDp1_prjに基づく画像(あるいは、投影面に表示する境界線)を投影する。図7に示した場合、安全領域が領域Ar2であることを示す画像(あるいは、境界線)が床面FLRに投影される。
作業員Psn1は、床面FLRに投影されている画像(あるいは境界線)から、安全領域(図7の場合は、領域Ar2)がどこであるか容易に判断することができ、安全領域内で作業する、あるいは、安全領域内で移動することで、ロボットアームRbt_armの動作を妨害する、あるいは、ロボットアームRbt_armと接触、衝突することない。したがって、安全が確保される。また、ロボットアームRbt_armの動作も、作業員に接触、衝突することがなくなるため、高速動作を継続することができ、その結果、ロボットアームRbt_armによる作業効率も高い状態で維持できる。
以上のように、表示制御システム1000では、ロボットアームRbt_arm、作業員の上方に設置した撮像部Cmr1により撮像した画像(フレーム画像)であって、ロボットRbt、ロボットアームRbt_armの位置、状態、作業員の位置、状態を判別できる画像(フレーム画像)と、当該画像が取得されたときの安全領域を特定するデータとを訓練データ(教師データ)として、学習させた学習済みモデルを用いた予測処理を行う。そして、表示制御システム1000では、学習したときの同様の状態で撮像した画像(フレーム画像)を用いて、学習済みモデルによる予測処理を行うことで、入力された画像が撮像されたときの安全領域(投影面における安全領域)を予測(特定)することができる。そして、表示制御システム1000では、予測(特定)した安全領域が投影面(床面FLR)に、投影部Prj1により投影することで、作業員が容易かつ確実に認識できるように、安全領域を投影面(床面FLR)に表示させることができる。つまり、表示制御システム1000では、遮蔽領域が少ない上方から撮影した画像を用いて、学習処理、予測処理を行うため、ロボットRbt、ロボットアームRbt_armがどのような状態であっても、その状態に応じて、動的に安全領域を特定(予測)する予測処理を、適切かつ高精度に行うことができる。
なお、上記では、投影面(床面FLR)に境界線が表示される場合について説明したが、これに限定されることなく、表示制御システム1000において、図8に示すように、安全度合いを階層的に分けた画像領域(例えば、階層的に色分けした画像、あるいは、階層的に輝度を変えた画像)を有する画像を投影面(床面FLR)に投影するようにしてもよい。このようにすることで、作業員は、安全度合いも把握して、安全領域を認識することができる。
また、上記では、投影部Prj1から、安全領域を表示する場合について説明したが、これに限定されることはなく、表示制御システム1000において、図9に示すように、危険領域を示す画像(あるいは境界線)を投影面(床面FLR)に表示するようにしてもよい。なお、図9の場合、領域Ar_rb1が、危険度が高い領域(危険領域)であり、領域Ar_rb2が領域Ar_rb1よりも危険度が低い領域(危険領域)である。この場合、作業員は、危険領域外で、作業、移動等を行うことで、安全が確保される。
このように、表示制御システム1000では、ロボットアームと人間とが共同作業を行うときに、安全領域(あるいは、危険領域)を適切に表示することができる。その結果、高い作業効率を確保しつつ、作業の安全性を向上させることができる。
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。
なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
図10は、第1実施形態の第1変形例に係る表示制御システム1000Aの概略構成図である。
図11は、第1実施形態の第1変形例に係る表示制御装置100Aの概略構成図である。
図12は、第1実施形態の第1変形例に係る表示制御システム1000Aの訓練データ取得モードの処理を説明するための図。
図13は、第1実施形態の第1変形例に係る表示制御システム1000Aにおいて使用する訓練データの一例(パターン1)を示す図(タイミングチャート)である。
図14は、第1実施形態の第1変形例に係る表示制御システム1000Aにおいて使用する訓練データの一例(パターン2)を示す図(タイミングチャート)である。
本変形例に係る表示制御システム1000Aは、図10に示すように、第1実施形態の表示制御システム1000において、表示制御装置100を表示制御装置100Aに置換した構成を有している。そして、表示制御装置100Aは、図11に示すように、第1実施形態の表示制御装置100において、訓練データ取得部2を訓練データ取得部2Aに置換した構成を有している。
訓練データ取得部2Aは、セレクタSEL2から出力されるデータD1_imgと、ロボット制御部Rbt_C1に入力される訓練用データD1_rb_trainとを入力する。訓練データ取得部2Aは、データD1_imgと訓練用データD1_rb_trainとに基づいて、予測処理部5の学習モデルを訓練するための訓練データDtr1を生成する。
本変形例の表示制御システム1000Aでは、予め決められているロボットRbtの制御シーケンスと、それに応じて決定される安全領域(あるいは危険領域)とを対応付けて訓練データを取得する。例えば、図13に示すように、ロボットアームRbt_armが、(1)フェーズ1(危険度:低)、(2)フェーズ2(危険度:高)、(3)フェーズ3(危険度:低(危険度は、フェーズ1の危険度と同じであるものとする))の順番に、動作するよう制御されることが予め決まっている場合、上記フェーズに応じて、安全領域(あるいは危険領域)も決定することができる。
例えば、図13の場合、表示制御システム1000Aにおいて、ロボットRbt用の訓練データD1_rb_trainは、予め決められているロボットRbtの制御シーケンスから決定され、当該制御シーケンスにより決定されるフェーズに応じて危険度が決定されるとともに、安全領域(あるいは危険領域)が決定される。図13の場合、フェーズ2の危険度がフェーズ1の危険度よりも高いので、フェーズ2に対応する画像(安全領域または危険領域を明示する画像)が投影面(例えば、床面FLR)により長い期間投影されるように訓練用データD1_prj_trainを生成する。つまり、図13の場合、フェーズ2の開始時刻t1よりも前の時刻t01から、フェーズ2に対応する画像(安全領域または危険領域を明示する画像)が投影面(例えば、床面FLR)に投影されるように訓練用データD1_prj_trainを生成する。そして、それに応じて、フェーズ1に対応する画像(安全領域または危険領域を明示する画像)が、時刻t0から時刻t01までの期間において、投影面(例えば、床面FLR)に投影されるように訓練用データD1_prj_trainを生成する。つまり、フェーズ1からフェーズ2に移行する時刻t1よりも前の時刻において、投影画像がフェーズ1の画像からフェーズ2の画像に切り替わるように訓練用データD1_prj_trainを生成する。このようにすることで、安全領域が小さくなるフェーズに移行するよりも前に、作業員は、安全領域が小さくなることを認識でき、その結果、作業員の安全が確保される。
また、図14に示すように、危険度に応じて決定した色(または輝度)を有する画像領域から構成される画像が投影面(例えば、床面FLR)に投影されるように訓練用データD1_prj_trainを生成してもよい。
例えば、図14の場合、図13の場合と同様に、表示制御システム1000Aにおいて、ロボットRbt用の訓練データD1_rb_trainは、予め決められているロボットRbtの制御シーケンスから決定され、当該制御シーケンスにより決定されるフェーズに応じて危険度が決定されるとともに、安全領域(あるいは危険領域)が決定される。図14の場合、フェーズ2の危険度がフェーズ1の危険度よりも高いので、フェーズ1からフェーズ2に移行する前の期間において、フェーズ1に対応する画像領域とフェーズ2に対応する画像領域からなる画像(安全領域または危険領域を危険度に応じて色または輝度により階層的に分けた画像)が投影面(例えば、床面FLR)に投影されるように訓練用データD1_prj_trainを生成する。つまり、図14の場合、フェーズ2の開始時刻t1よりも前の時刻t01から時刻t1までの期間において、フェーズ1に対応する画像領域とフェーズ2に対応する画像領域からなる画像(安全領域または危険領域を危険度に応じて色または輝度により階層的に分けた画像)が投影面(例えば、床面FLR)に投影されるように訓練用データD1_prj_trainを生成する。そして、それに応じて、フェーズ1に対応する画像(安全領域または危険領域を明示する画像)が、時刻t0から時刻t01までの期間において、投影面(例えば、床面FLR)に投影されるように訓練用データD1_prj_trainを生成する。つまり、フェーズ1からフェーズ2に移行する時刻t1よりも前の時刻t01から、フェーズ1に対応する画像領域とフェーズ2に対応する画像領域からなる画像(安全領域または危険領域を危険度に応じて色または輝度により階層的に分けた画像)を投影面に投影することで、作業員が、まもなく危険度が変化し、安全領域が変化することを適切に把握することができる。したがって、このようにして生成した訓練用データにより学習することで、作業員の安全を適切に確保する予測処理用の学習済みモデルを構築することができる。
本変形例の表示制御システム1000Aでは、上記のようにロボットRbtの制御シーケンスと対応付けた投影画像を訓練用データとして取得する。そして、このようにして取得した訓練用データを用いて学習処理を行い、学習済みモデルを取得する。そして、当該学習モデルを用いて、予測処理を実行することで、表示制御システム1000Aでは、適切に、安全領域(あるいは危険領域)を明示する画像を投影面(例えば、床面FLR)に投影することができる。その結果、作業員は、安全領域がまもなく変化することも適切に把握でき、作業員の安全が確保される。
なお、本変形例の表示制御システム1000Aにおいて、例えば、投影面に投影されている画像(当該画像の色、輝度)により、訓練用データを生成し、当該訓練データにより、学習処理を行うようにしてもよい。つまり、本変形例の表示制御システム1000Aにおいて、ロボットアームRbt_armの状態を認識することなく、投影面に投影されている画像(当該画像の色、輝度)に基づいて、訓練用データの取得、学習処理を行うようにしてもよい。
[第2実施形態]
次に、第2実施形態について、説明する。
なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
<2.1:表示制御システムの構成>
図15は、第2実施形態に係る表示制御システム2000の概略構成図である。
図16は、第2実施形態に係る表示制御装置100Bの概略構成図である。
図17は、第2実施形態に係る表示制御装置100Bの予測処理部5Aの概略構成図である。
第2実施形態に係る表示制御システム2000は、図15に示すように、第1実施形態の表示制御システム1000において、表示制御装置100を表示制御装置100Bに置換した構成を有している。そして、表示制御装置100Bは、図16に示すように、第1実施形態の表示制御装置100において、予測処理部5を予測処理部5Aに置換した構成を有している。
予測処理部5Aは、図17に示すように、予測部51と、検知対象位置判定部52と、安全範囲マップ生成部53と、危険判定部54とを備える。予測処理部5Aは、予測処理結果のデータDp1_prjをセレクタSEL1および安全範囲マップ生成部53に出力する。
予測部51は、第1実施形態の予測処理部5と同様の処理を実行する機能部である。
検知対象位置判定部52は、セレクタSEL2から出力される画像データD1_imgを入力し、当該画像データD1_imgに対して、画像認識処理を行い、検知対象(例えば、作業員)に相当する画像領域の画像上の位置を特定する。そして、検知対象位置判定部52は、取得した検知対象の画像上の位置情報を含むデータをデータD_posとして、危険判定部54に出力する。
安全範囲マップ生成部53は、予測部51から出力されるデータDp1_prjを入力し、当該データDp1_prjから、安全領域を特定するマップ情報(安全領域の位置、大きさ、形状等を特定するための情報)を取得する。そして、安全範囲マップ生成部53は、取得したマップ情報を含むデータをデータD_mapとして、危険判定部54に出力する。
危険判定部54は、検知対象位置判定部52から出力されるデータD_posと、安全範囲マップ生成部53から出力されるデータD_mapとを入力する。危険判定部54は、データD_posおよびデータD_mapに基づいて、検知対象(例えば、作業員)が危険領域に入っている(あるいは、現時刻から短い期間内に入っている可能性が高い)か否かを判定する。そして、危険判定部54は、検知対象(例えば、作業員)が危険領域に入っている(あるいは、現時刻から短い期間内に入っている可能性が高い)と判定した場合、警告信号Sig_wrnを生成し、生成した警告信号Sig_wrnをロボット制御部Rbt_C1Aに出力する。
ロボット制御部Rbt_C1Aは、第1実施形態のロボット制御部Rbt_C1と同様の機能を有しており、さらに、表示制御装置100Bから出力される警告信号Sig_wrnを入力する。そして、ロボット制御部Rbt_C1Aは、表示制御装置100Bから警告信号Sig_wrnが入力された場合、ロボットアームRbt_armの動作を継続することが危険であると判断し、警告動作(例えば、警告音を発生させる等の処理)、および/または、ロボットアームRbt_armを停止させる等の危険回避処理を行う。
<2.2:表示制御システムの動作>
以上のように構成された表示制御システム2000の動作について、説明する。なお、第1実施形態と同様の部分については、説明を省略する。
図18は、第2実施形態に係る表示制御システム2000の予測モードの処理のフローチャートである。
図19、図20は、第2実施形態に係る表示制御システム2000の予測モードの処理を説明するための図である。
以下では、図18のフローチャートを参照しながら、表示制御システム2000の予測モードの処理について、説明する。なお、表示制御システム2000において、訓練データ取得モードの処理、学習モードの処理は、第1実施形態の表示制御システム1000と同様である。
図19に示すように、ロボット制御部Rbt_C1Aに、制御信号Ctrl_Rbt(phase2)が入力され、ロボットアームRbt_armが所定の動作(これを「フェーズ2の動作」という)を実行する場合について、説明する。
この場合、ロボット制御部Rbt_C1Aは、ロボットアームRbt_armが、制御信号Ctrl_Rbt(phase2)に従う動作(フェーズ2の動作)を実行するように、ロボットアームRbt_armを制御する。
ロボットアームRbt_armは、ロボット制御部Rbt_C1Aから指令に従い、フェーズ2の動作を行う。
そして、撮像部Cmr1は、そのときの状況(ロボットアームRbt_arm、作業員、床面FLR等)を、訓練データを取得したときと同様の状態で撮像する。
ロボットアームRbt_armがフェーズ2の動作を行っている期間中において、撮像部Cmr1は、ロボットRbt、床面FLR、(存在すれば)作業員を上方から撮像し、撮像した画像(フレーム画像)を表示制御装置100に出力し続ける(ステップS1)。
予測処理時(予測モード)において、モード信号Modeは、その信号値が「1」にセットされているので、セレクタSEL2は、データD1_imgを予測処理部5Aに出力する。
予測処理部5Aは、ロボットアームRbt_armがフェーズ2の動作を行っている期間中において取得された画像データD1_imgを、学習済みモデルに入力し、当該学習済みモデルからの出力をデータDp1_prjとして取得する。例えば、図19に示す場合における、(1)ロボットアームRbt_armの位置、状態、および、(2)作業員Psn1の位置、状態は、図4の場合(安全領域が領域Ar2であるときの訓練データを取得したときの状態)における、(1)ロボットアームRbt_armの位置、状態、および、(2)作業員Psn1の位置、状態と類似している。したがって、この状態において、撮像した画像データD1_imgが、予測処理部5Aの学習済みモデルに入力された場合、安全領域が領域Ar2であることを示すデータ(床面FLRに領域Ar2を表示させるためのデータDp1_prj)が、学習済みモデルから出力される。
そして、予測処理部5Aは、取得したデータDp1_prjをセレクタSEL1に出力する。予測モードの場合、モード信号Modeの信号値は「1」であるので、セレクタSEL1は、予測処理部5Aから出力されるデータDp1_prjを投影制御部1に出力する。
投影制御部1は、データDp1_prjを入力し、データDp1_prjに基づく画像(あるいは、投影面に表示する境界線)が投影部Prj1から投影対象に投影されるように制御する制御信号Ctl_prj(Dp1_prj)を生成し、生成した当該制御信号Ctl_prj(Dp1_prj)を投影部Prj1に出力する。
そして、投影部Prj1は、制御信号Ctl_prj(Dp1_prj)に基づいて、投影面(床面FLR)に、データDp1_prjに基づく画像(あるいは、投影面に表示する境界線)を投影する。図19に示した場合、安全領域が領域Ar2であることを示す画像(あるいは、境界線)が床面FLRに投影される。
この状態において、撮像部Cmr1により取得されたフレーム画像データD1_imgが検知対象位置判定部52に入力される。
検知対象位置判定部52はフレーム画像データD1_imgに対して、画像認識処理を行い、検知対象(例えば、図19の作業員Psn1)に相当する画像領域の画像上の位置を特定する(ステップS2)。そして、検知対象位置判定部52は、取得した検知対象の画像上の位置情報を含むデータをデータD_posとして、危険判定部54に出力する。
安全範囲マップ生成部53は、予測部51から出力されるデータDp1_prjを入力し、当該データDp1_prjから、安全領域を特定するマップ情報(安全領域の位置、大きさ、形状等を特定するための情報)を取得する(ステップS3)。図19の場合、安全範囲マップ生成部53は、安全領域Ar2を特定するマップ情報を取得する。
そして、安全範囲マップ生成部53は、取得したマップ情報を含むデータをデータD_mapとして、危険判定部54に出力する。
危険判定部54は、検知対象位置判定部52から出力されるデータD_posと、安全範囲マップ生成部53から出力されるデータD_mapとに基づいて、検知対象(例えば、図19の作業員Psn1)が危険領域に入っている(あるいは、現時刻から短い期間内に入っている可能性が高い)か否かを判定する。例えば、検知対象の動きベクトルを取得し、当該動きベクトルから、現時刻から短い期間内に入っている可能性が高いか否かを判定する(マップ照合処理、ステップS4、S5)。
そして、危険判定部54は、検知対象(例えば、作業員)が危険領域に入っている(あるいは、現時刻から短い期間内に入っている可能性が高い)と判定した場合、警告信号Sig_wrnを生成し、生成した警告信号Sig_wrnをロボット制御部Rbt_C1Aに出力する。
ロボット制御部Rbt_C1Aは、表示制御装置100Bから警告信号Sig_wrnが入力された場合、ロボットアームRbt_armの動作を継続することが危険であると判断し、警告動作(例えば、警告音を発生させる等の処理)、および/または、ロボットアームRbt_armを停止させる等の危険回避処理を行う(ステップS6)。
表示制御システム2000では、このように処理することで、例えば、図19の場合において、作業員Psn1が安全領域Ar2内から、安全領域Ar2外へ移動し、ロボットアームRbt_armと接触、衝突する可能性が高くなった場合、危険回避処理により、ロボットアームRbt_armと接触、衝突する等の重大事故の発生を防止することができる。つまり、表示制御システム2000においても、ロボットRbt、ロボットアームRbt_armがどのような状態であっても、その状態に応じて、動的に安全領域を特定(予測)する予測処理を、適切かつ高精度に行うことができる。
なお、上記では、投影面(床面FLR)に境界線が表示される場合について説明したが、これに限定されることなく、表示制御システム2000において、安全度合いを階層的に分けた画像領域(例えば、階層的に色分けした画像、あるいは、階層的に輝度を変えた画像)を有する画像を投影面(床面FLR)に投影するようにしてもよい。この場合、安全度合いを階層的に分けた画像領域を含む画像データを用いて、上記の検知対象の位置特定処理(ステップS2)、安全範囲マップ取得処理(ステップS3)の処理を行えばよい。
また、上記では、投影部Prj1から、安全領域を表示する場合について説明したが、これに限定されることはなく、表示制御システム2000において、図20に示すように、危険領域を示す画像(あるいは境界線)を投影面(床面FLR)に表示するようにしてもよい。なお、図20の場合、領域Ar_rb1が、危険度が高い領域(危険領域)であり、領域Ar_rb2が領域Ar_rb1よりも危険度が低い領域(危険領域)である。この場合、検知対象(例えば、作業員Psn1)が危険範囲に入る、あるいは、短期間に入る可能性が高い場合、表示制御装置100Bからロボット制御部Rbt_C1Aに警告信号Sig_wrnを出力し、危険回避処理を行うようにすればよい。
[他の実施形態]
上記実施形態を組み合わせて、表示制御システム、表示制御装置を構成するようにしてもよい。例えば、第2実施形態の表示制御システムにおいて、第1実施形態の第1変形例と同様の方法により、訓練用データを取得し、取得した当該訓練用データを用いて学習処理を行い、さらに、当該学習処理により取得した学習済みモデルを用いて、予測処理を行うようにしてもよい。
また、上記実施形態では、ロボットRbtが1つ、作業員が一人である場合について説明したが、これに限定されることはなく、ロボットRbtの数、作業員の数は、任意の数でよい。
また、上記実施形態では、撮像部Cmr1が1つである場合について説明したが、これに限定されることはなく、表示制御システムは、複数の撮像部を備えるものであってもよい。そして、このように構成された表示制御システムにおいて、より遮蔽を減少させるために、複数のカメラで撮像した画像を用いて危険検知、危険判定処理等を行うようにしてもよい。
なお、撮像部は、固定位置に設置されることが好ましいが、可変位置に設置されてもよい。
また、上記実施形態では、安全領域(あるいは、危険領域)を、ロボットアームRbt_armの動作状態により、動的に変化させて、投影面(床面FLR)に投影する場合について説明したが、これに限定されることはなく、例えば、安全領域の最大領域を検出し、当該最大領域を静的に投影面(床面FLR)に表示するようにしてもよい。この場合、床面FLRにおいて、物理的に認識できる境界線等を表示するようにしてもよい(例えば、光ファイバーにより、当該境界が発光し、作業員等が容易に認識できるようにしてもよい)。
また、上記実施形態では、投影部Prj1は、プロジェクタ装置を使用する場合について説明したが、これに限定されることはなく、例えば、LEDスキャナ、レーザースキャナ等を投影部Prj1として用いてもよい。
また、上記実施形態では、投影部Prj1が1つである場合について説明したが、これに限定されることはなく、表示制御システムは、複数の投影部(例えば、プロジェクタ装置)を備えるものであってもよい。そして、このように構成された表示制御システムにおいて、複数の投影部(例えば、プロジェクタ装置)を用いて、遮蔽なく安全領域または危険領域を投影して明示するようにしてもよい。
なお、投影部は、固定位置に設置されることが好ましいが、可変位置に設置されてもよい。
また、上記実施形態では、キャリブレーションにおいて、ロボットRbtの台座の2点を基準点とする場合について、説明したが、これに限定されることはなく、キャリブレーション用の基準点の数は、2以上であってもよいし、また、別の位置を基準点としてもよい。
また、上記実施形態で説明した表示制御システム、表示制御装置において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
例えば、上記実施形態(変形例を含む)の各機能部を、ソフトウェアにより実現する場合、図21に示したハードウェア構成(例えば、CPU、GPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
また、上記実施形態の各機能部をソフトウェアにより実現する場合、当該ソフトウェアは、図21に示したハードウェア構成を有する単独のコンピュータを用いて実現されるものであってもよいし、複数のコンピュータを用いて分散処理により実現されるものであってもよい。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、SSD、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、Blu−ray(登録商標)、次世代光ディスク、半導体メモリを挙げることができる。
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。