以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.本実施形態の手法
画像情報を用いたロボット制御が広く知られている。例えば、連続的に画像情報を取得し、当該画像情報から取得される情報と、目標となる情報との比較処理の結果をフィードバックするビジュアルサーボ制御が知られている。ビジュアルサーボでは、最新の画像情報から取得された情報と、目標となる情報との差が小さくなる方向にロボットを制御する。具体的には、目標に近づくような関節角の変化量等を求め、当該変化量等に従って関節を駆動する制御を行う。
目標となるロボットの手先等の位置姿勢が与えられ、当該目標の位置姿勢となるようにロボットを制御する手法では、位置決め精度を高くすること、すなわち手先(ハンド)等を正確に目標の位置姿勢に移動させることは容易ではない。理想的には、ロボットのモデルが決定されれば、当該モデルに従って手先位置姿勢を一意に求めることができる。ここでのモデルとは、例えば2つの関節の間に設けられるフレーム(リンク)の長さや、関節の構造(関節の回転方向や、オフセットがあるか否か等)等の情報である。
しかし、ロボットには種々の誤差が含まれる。例えばリンクの長さのずれや重力によるたわみ等である。これらの誤差要因により、ロボットに所与の姿勢を取らせる制御(例えば各関節の角度を決定する制御)を行った場合に、理想的な位置姿勢と、実際の位置姿勢とが異なる値となってしまう。
その点、ビジュアルサーボ制御では撮像画像に対する画像処理結果をフィードバックするため、人間が作業状況を目で見ながら腕や手の動かし方を微調整できるのと同様に、現在の位置姿勢が目標の位置姿勢からずれていたとしても、当該ずれを認識して修正することができる。
ビジュアルサーボ制御では、上記の「画像から取得された情報」及び「目標となる情報」として、ロボットの手先等の3次元的な位置姿勢情報を用いることもできるし、画像から取得される画像特徴量を位置姿勢情報に変換することなく用いることもできる。位置姿勢情報を用いるビジュアルサーボを位置ベースのビジュアルサーボと呼び、画像特徴量を用いるビジュアルサーボを特徴量ベースのビジュアルサーボと呼ぶ。
ビジュアルサーボを適切に行うためには、画像情報から位置姿勢情報或いは画像特徴量を精度よく検出する必要がある。この検出処理の精度が低いと、現在の状態を誤って認識することになってしまう。そのため、制御ループにフィードバックされる情報も、ロボットの状態を目標状態に適切に近づけるものにならず、精度の高いロボット制御ができなくなってしまう。
位置姿勢情報も画像特徴量も、何らかの検出処理(例えばマッチング処理)等により求めることが想定されるが、当該検出処理の精度は必ずしも充分ではない。なぜなら、実際にロボットが動作する環境では、撮像画像中には認識対象である物体(例えばロボットのハンド)だけでなく、ワークや治具、或いは動作環境に配置された物体等も撮像されてしまうためである。画像の背景に種々の物体が写り込むことで、所望の物体の認識精度(検出精度)は低下してしまい、求められる位置姿勢情報や画像特徴量の精度も低くなってしまう。
特許文献1では、位置ベースのビジュアルサーボにおいて、画像から算出した空間的位置もしくは移動速度とエンコーダーから算出した空間的位置もしくは移動速度を比較して、異常を検出する手法が開示されている。なお、空間的位置は位置姿勢情報に含まれるものであり、移動速度も位置姿勢情報の変化量から求められる情報であるため、以下では空間的位置もしくは移動速度を、位置姿勢情報として説明する。
特許文献1の手法を用いることで、画像情報から求めた位置姿勢情報に大きな誤差が生じている等、ビジュアルサーボに何らかの異常が発生している場合に、当該異常を検出することが可能になると考えられる。異常の検出ができれば、ロボットの制御を停止するにしろ、位置姿勢情報の検出をやり直すにしろ、少なくとも異常な情報をそのまま制御に用いることを抑止できる。
しかし、特許文献1の手法は位置ベースのビジュアルサーボを前提としている。位置ベースであれば上述したように、エンコーダー等の情報から容易に求められる位置姿勢情報と、画像情報から求めた位置姿勢情報との比較処理を行えばよいため、実現は容易である。一方、特徴量ベースのビジュアルサーボでは、ロボットの制御においては画像特徴量を用いる。そして、エンコーダー等の情報からは、ロボットの手先等の空間的位置を求めることは容易であっても画像特徴量との関係は直接的に求められるものではない。つまり、特徴量ベースのビジュアルサーボを想定した場合、特許文献1の手法を適用することは困難であった。
そこで本出願人は、画像特徴量を用いた制御において、実際に画像情報から取得された画像特徴量変化量と、ロボット制御の結果取得される情報から推定した推定画像特徴量変化量とを用いて異常を検出する手法を提案する。具体的には、本実施形態に係るロボット制御装置100は、図1に示したように、画像情報に基づいてロボット200を制御するロボット制御部110と、画像情報に基づいて、画像特徴量変化量を求める変化量演算部120と、ロボット200又は対象物の情報であって、画像情報以外の情報である変化量推定用情報に基づいて、画像特徴量変化量の推定量である推定画像特徴量変化量を演算する変化量推定部130と、画像特徴量変化量と推定画像特徴量変化量の比較処理により異常判定を行う異常判定部140を含む。
ここで、画像特徴量とは、上述したように画像中の領域や面積、線分の長さ、特徴点の位置等の特徴を表す量であり、画像特徴量変化量とは、複数の(狭義には2つの)画像情報から取得された複数の画像特徴量の間の変化を表す情報である。画像特徴量として3つの特徴点の画像上での2次元位置を用いる例であれば、画像特徴量は6次元のベクトルであり、画像特徴量変化量は2つの6次元ベクトルの差、すなわちベクトルの各要素の差を要素とする6次元ベクトルとなる。
また、変化量推定用情報とは、画像特徴量変化量の推定に用いられる情報であって、画像情報以外の情報である。変化量推定用情報は、例えばロボット制御の結果により取得される(実測される)情報であってもよく、具体的にはロボット200の関節角情報であってもよい。関節角情報は、ロボットの関節駆動用のモーター(広義にはアクチュエーター)の動作を測定、制御するエンコーダーから取得することが可能である。或いは、変化量推定用情報は、ロボット200のエンドエフェクター220、又はロボット200による作業の対象物の位置姿勢情報であってもよい。位置姿勢情報は,例えば物体の基準点の3次元位置(x,y,z)と、基準姿勢に対する各軸周りの回転(R1,R2,R3)を含む6次元ベクトルである。物体の位置姿勢情報を求める手法は種々考えられるが、例えば超音波を用いた距離測定手法や、測量機を用いる手法、手先にLED等を設けて当該LEDを検出して測量する手法、機械式の3次元測定器を用いる手法等を用いればよい。
このようにすれば、画像特徴量を用いたロボット制御(狭義には特徴量ベースのビジュアルサーボ)において、異常を検出することが可能になる。この際、実際に取得した画像情報から求めた画像特徴量変化量と、画像情報とは異なる観点から取得された変化量推定用情報から求めた推定画像特徴量変化量との比較処理が行われることになる。
なお、画像情報に基づくロボットの制御はビジュアルサーボに限定されるものではない。例えば、ビジュアルサーボでは、制御ループに対する画像情報に基づく情報のフィードバックを継続するが、1回の画像情報の取得を行い、当該画像情報に基づいて目標位置姿勢への移動量を求め、当該移動量に基づいて位置制御を行うビジョン方式を、画像情報に基づくロボットの制御として用いてもよい。その他、ビジュアルサーボやビジョン方式以外であっても、画像情報を用いるロボットの制御において、画像情報からの情報の検出等において異常を検出する手法として、本実施形態の手法を適用可能である。
ただし、後述するように本実施形態の手法では、推定画像特徴量変化量の演算にヤコビアンを用いることを想定している。そしてヤコビアンは、所与の値の変化量と、他の値の変化量との関係を表す情報である。例えば、第1の情報xと第2の情報yが非線形な関係(y=g(x)におけるgが非線形関数)であっても、所与の値の近傍においては第1の情報の変化量Δxと第2の情報の変化量Δyが線形な関係(Δy=h(Δx)におけるhが線形関数)であると考えることができ、ヤコビアンは当該線形な関係を表す。つまり、本実施形態では画像特徴量そのものではなく、画像特徴量変化量を処理に用いることが想定される。よって、本実施形態の手法をビジョン方式等、ビジュアルサーボ以外に適用する場合には、画像情報を1回だけ取得する手法ではなく、少なくとも画像特徴量変化量が求められるように2回以上画像情報を取得する手法を用いる必要がある点に留意すべきである。例えば本実施形態の手法をビジョン方式に適用するのであれば、画像情報の取得及び目標となる移動量の演算を複数回行うものとする必要がある。
以下、本実施形態に係るロボット制御装置100やロボットのシステム構成例について説明した後、ビジュアルサーボの概要について説明する。その上で、本実施形態の異常検出手法を説明し、最後に、変形例についても説明する。なお、以下では画像情報を用いたロボットの制御としてビジュアルサーボを例に取るが、以下の説明は、その他の画像情報を用いたロボットの制御に拡張可能である。
2.システム構成例
図2に本実施形態に係るロボット制御装置100の詳細なシステム構成例を示す。ただし、ロボット制御装置100は図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
図2に示したように、ロボット制御装置100は、目標特徴量入力部111と、目標軌道生成部112と、関節角制御部113と、駆動部114と、関節角検出部115と、画像情報取得部116と、画像特徴量演算部117と、変化量演算部120と、変化量推定部130と、異常判定部140を含む。
目標特徴量入力部111は、目標となる画像特徴量fgを目標軌道生成部112に対して入力する。目標特徴量入力部111は、例えば、ユーザーによる目標画像特徴量fgの入力を受け付けるインターフェース等として実現されてもよい。ロボット制御においては、画像情報から求められる画像特徴量fを、ここで入力される目標画像特徴量fgに近づける(狭義には一致させる)制御が行われる。なお、目標画像特徴量fgは、目標状態に対応する画像情報(参照画像、ゴール画像)を取得し、当該画像情報から求めてもよい。或いは、参照画像は保持せずに、直接目標画像特徴量fgの入力を受け付けてもよい。
目標軌道生成部112は、目標画像特徴量fgと、画像情報から求められた画像特徴量fとに基づいて、ロボット200を動作させる目標軌道を生成する。具体的には、ロボット200を目標状態(fgに対応する状態)に近づけるための関節角の変化量Δθgを求める処理を行う。このΔθgは関節角の暫定的な目標値となる。なお、目標軌道生成部112では、Δθgから、単位時間当たりの関節角の駆動量(図2におけるドット付きθg)を求めてもよい。
関節角制御部113は、関節角の目標値Δθgと、現在の関節角の値θとに基づいて、関節角の制御を行う。例えば、Δθgは関節角の変化量であるため、θとΔθgを用いて、関節角をどのような値にすればよいかを求める処理を行う。駆動部114は、関節角制御部113の制御に従って、ロボット200の関節を駆動する制御を行う。
関節角検出部115は、ロボット200の関節角が、どのような値となっているかを検出する処理を行う。具体的には、駆動部114による駆動制御により関節角が変化した後に、当該変化後の関節角の値を検出して、現在の関節角の値θとして関節角制御部113に出力する。関節角検出部115は、具体的にはエンコーダーの情報を取得するインターフェース等として実現されてもよい。
画像情報取得部116は、撮像部等から画像情報の取得を行う。ここでの撮像部は、図3に示したように環境に配置されるものであってもよいし、ロボット200のアーム210等に設けられる撮像部(例えばハンドアイカメラ)であってもよい。画像特徴量演算部117は、画像情報取得部116が取得した画像情報に基づいて、画像特徴量の演算処理を行う。なお、画像情報から画像特徴量を演算する手法は、エッジ検出処理やマッチング処理等、種々の手法が知られており、本実施形態ではそれらを広く適用可能であるため、詳細な説明は省略する。画像特徴量演算部117で求められた画像特徴量は、最新の画像特徴量fとして、目標軌道生成部112に出力される。
変化量演算部120は、画像特徴量演算部117で演算された画像特徴量を保持しておき、過去に取得された画像特徴量foldと、処理対象である画像特徴量f(狭義には最新の画像特徴量)との差分から、画像特徴量変化量Δfを演算する。
変化量推定部130は、関節角検出部115で検出された関節角情報を保持しておき、過去に取得された関節角情報θoldと、処理対象である関節角情報θ(狭義には最新の関節角情報)との差分から、関節角情報の変化量Δθを演算する。さらに、Δθに基づいて、推定画像特徴量変化量Δfeを求める。なお、図2では変化量推定用情報が関節角情報である例について説明したが、変化量推定用情報としてロボット200のエンドエフェクター220又は対象物の位置姿勢情報を用いてもよいことは上述したとおりである。
なお、図1のロボット制御部110は、図2の目標特徴量入力部111と、目標軌道生成部112と、関節角制御部113と、駆動部114と、関節角検出部115と、画像情報取得部116と、画像特徴量演算部117とに対応するものであってもよい。
また本実施形態の手法は、図4に示したように、画像情報に基づいてロボット(具体的には、アーム210及びエンドエフェクター220を含むロボット本体300)を制御するロボット制御部110と、画像情報に基づいて、画像特徴量変化量を求める変化量演算部120と、ロボット200又は対象物の情報であって、画像情報以外の情報である変化量推定用情報に基づいて、画像特徴量変化量の推定量である推定画像特徴量変化量を演算する変化量推定部130と、画像特徴量と推定画像特徴量変化量の比較処理により異常判定を行う異常判定部140を含むロボットに適用できる。
ここでのロボットとは、図5に示したように、制御装置600と、ロボット本体300と、を含むロボットであってもよい。図5の構成であれば、制御装置600に図4のロボット制御部110等が含まれる。そしてロボット本体300は、アーム210と、エンドエフェクター220を含む。このようにすれば、画像情報に基づく制御に従った動作を行いつつ、制御における異常を自動検出するロボットを実現することが可能になる。
なお、本実施形態に係るロボットの構成例は図5に限定されない。例えば、図6に示したように、ロボットは、ロボット本体300と、ベースユニット部350を含んでもよい。本実施形態に係るロボットは図6に示したように双腕ロボットであってもよく、頭部や胴体に相当する部分に加え、第1のアーム210−1と第2のアーム210−2を含む。図6では第1のアーム210−1は、関節211,213と、関節の間に設けられるフレーム215,217から構成され、第2のアーム210−2についても同様のものとしたがこれに限定されない。なお、図6では2本のアームを有する双腕ロボットの例を示したが、本実施形態のロボットは3本以上のアームを有してもよい。
ベースユニット部350は、ロボット本体300の下部に設けられ、ロボット本体300を支持する。図6の例では、ベースユニット部350には車輪等が設けられ、ロボット全体が移動可能な構成となっている。ただし、ベースユニット部350が車輪等を持たず、床面等に固定される構成であってもよい。図6では図5の制御装置600に対応する装置が不図示であるが、図6のロボットシステムでは、ベースユニット部350に制御装置600が格納されることで、ロボット本体300と制御装置600とが一体として構成される。
或いは、制御装置600のように、特定の制御用の機器を設けることなく、ロボットに内蔵される基板(更に具体的には基板上に設けられるIC等)により、上記のロボット制御部110等を実現してもよい。
また、図7に示すように、ロボット制御装置100の機能は、有線及び無線の少なくとも一方を含むネットワーク400を介して、ロボットと通信接続されたサーバー500により実現されてもよい。
或いは本実施形態では、本発明のロボット制御装置の処理の一部を、ロボット制御装置であるサーバー500が行ってもよい。この場合には、ロボット側に設けられたロボット制御装置との分散処理により、当該処理を実現する。
そして、この場合に、ロボット制御装置であるサーバー500は、本発明のロボット制御装置における各処理のうち、サーバー500に割り当てられた処理を行う。一方、ロボットに設けられたロボット制御装置は、本発明のロボット制御装置の各処理のうち、ロボットのロボット制御装置に割り当てられた処理を行う。
例えば、本発明のロボット制御装置が第1〜第M(Mは整数)の処理を行うものであり、第1の処理がサブ処理1a及びサブ処理1bにより実現され、第2の処理がサブ処理2a及びサブ処理2bにより実現されるように、第1〜第Mの各処理が複数のサブ処理に分割できる場合を考える。この場合、ロボット制御装置であるサーバー500がサブ処理1a、サブ処理2a、・・・サブ処理Maを行い、ロボット側に設けられたロボット制御装置がサブ処理1b、サブ処理2b、・・・サブ処理Mbを行うといった分散処理が考えられる。この際、本実施形態に係るロボット制御装置、すなわち、第1〜第Mの処理を実行するロボット制御装置とは、サブ処理1a〜サブ処理Maを実行するロボット制御装置であってもよいし、サブ処理1b〜サブ処理Mbを実行するロボット制御装置であってもよいし、サブ処理1a〜サブ処理Ma及びサブ処理1b〜サブ処理Mbの全てを実行するロボット制御装置であってもよい。更にいえば、本実施形態に係るロボット制御装置は、第1〜第Mの処理の各処理について、少なくとも1つのサブ処理を実行するロボット制御装置である。
これにより、例えばロボット側の端末装置(例えば図5の制御装置600)よりも処理能力の高いサーバー500が、処理負荷の高い処理を行うこと等が可能になる。さらに、サーバー500が各ロボットの動作を一括して制御することができ、例えば複数のロボットに協調動作をさせること等が容易になる。
また近年は、多品種少数の部品を製造することが増えてきている。そして、製造する部品の種類を変更する場合には、ロボットが行う動作を変更する必要がある。図7に示すような構成であれば、複数のロボットの各ロボットへ教示作業をし直さなくても、サーバー500が一括して、ロボットが行う動作を変更すること等が可能になる。さらに、各ロボットに対して一つのロボット制御装置100を設ける場合に比べて、ロボット制御装置100のソフトウェアアップデートを行う際の手間を大幅に減らすこと等が可能になる。
3.ビジュアルサーボ制御
本実施形態に係る異常検出手法を説明する前に、一般的なビジュアルサーボ制御について説明する。一般的なビジュアルサーボ制御系の構成例を図8に示しす。図8からわかるように、図2に示した本実施形態に係るロボット制御装置100と比較した場合に、変化量演算部120と、変化量推定部130と、異常判定部140が除かれた構成となっている。
ビジュアルサーボに用いる画像特徴量の次元数をn(nは整数)とした場合に、画像特徴量fはf=[f1,f2,・・・,fn]Tとなる画像特徴量ベクトルで表現される。fの各要素は、例えば特徴点(制御点)の画像における座標値等を用いればよい。この場合、目標特徴量入力部111から入力される目標画像特徴量fgも同様に、fg=[fg1,fg2,・・・,fgn]Tと表現される。
また、関節角についても、ロボット200(狭義にはアーム210)に含まれる関節数に対応する次元数の関節角ベクトルとして表現される。例えば、アーム210が6つの関節を有する6自由度のアームであれば、関節角ベクトルθは、θ=[θ1,θ2,・・・,θ6]Tと表現される。
ビジュアルサーボでは、現在の画像特徴量fが取得された場合に、当該画像特徴量fと目標画像特徴量fgとの差分をロボットの動きへフィードバックする。具体的には、画像特徴量fと目標画像特徴量fgの差分を小さくする方向にロボットを動作させる。そのためには、関節角θをどのように動かせば、画像特徴量fがどのように変化する、という関係性を知らなくてはならない。一般的にこの関係性は非線形となり、例えばf1=g(θ1,θ2,θ3,θ4,θ5,θ6)となる場合に、関数gは非線形関数となる。
そこで、ビジュアルサーボにおいてヤコビアンJを用いる手法が広く知られている。2つの空間が非線形な関係にあっても、それぞれの空間での微少な変化量の間は線形な関係で表現することができる。ヤコビアンJはその微少変化量同士を関連づけるものである。
具体的には、ロボット200の手先の位置姿勢XをX=[x,y,z,R1,R2,R3]
Tとした場合に、関節角の変化量と位置姿勢の変化量の間のヤコビアンJaは、下式(1)で表現され、位置姿勢の変化量と画像特徴量変化量の間のヤコビアンJiは、下式(2)で表現される。
そして、Ja,Jiを用いることで、Δθ、ΔX、Δfの関係を下式(3)、(4)のように表記できる。Jaは一般的にロボットヤコビアンと呼ばれるものであり、ロボット200のリンク長や回転軸等の機構情報があれば解析的に算出することが出来る。一方、Jiは事前にロボット200の手先の位置姿勢を微少量変化させた際の画像特徴量の変化などから推測することが出来るし、Jiを動作中に随時推定する手法も提案されている。
ΔX=JaΔθ ・・・・・(3)
Δf=JiΔX ・・・・・(4)
さらに、上式(3)、(4)を用いることで、画像特徴量変化量Δfと、関節角の変化量Δθの関係を下式(5)のように表現できる。
Δf=JvΔθ ・・・・・(5)
ここで、Jv=JiJaであり、関節角の変化量と画像特徴量変化量の間のヤコビアンを表す。また、Jvを画像ヤコビアンと表記することもある。上式(3)〜(5)の関係性を図示したものが図9である。
以上をふまえると、目標軌道生成部112は、fとfgの差分をΔfとして、関節角の駆動量(関節角の変化量)Δθを求めればよい。このようにすれば、画像特徴量fをfgに近づけるための関節角の変化量を求めることができる。具体的には、ΔfからΔθを求めるため、上式(5)の両辺に左からJvの逆行列Jv−1をかければよいが、さらに制御ゲインをλを考慮して、下式(6)により目標となる関節角の変化量Δθgを求める。
Δθg=−λJv−1(f−fg) ・・・・・(6)
なお、上式(6)ではJvの逆行列Jv−1を求められるものとしているが、Jv−1を求められない場合には、Jvの一般化逆行列(疑似逆行列)Jv#を用いてもよい。
上式(6)を用いることで、新たな画像が取得されるごとに、新たなΔθgが求められる。よって、取得した画像を用いて、目標となる関節角を更新しながら、ゴール状態(画像特徴量がfgとなる状態)に近づける制御を行うことが可能になる。この流れを図示したものが図10である。第m−1の画像(mは整数)から画像特徴量fm−1が求められれば、上式(6)のf=fm−1とすることでΔθgm−1を求めることができる。そして、第m−1の画像と、次の画像である第mの画像の間で、求めたΔθgm−1を目標としてロボット200の制御を行えばよい。そして、第mの画像が取得されたら、当該第mの画像から画像特徴量fgを求め、上式(6)により新たな目標であるΔθgmを算出する。算出したΔθgmは、第mの画像と第m+1の画像の間で制御に用いられる。以下、この処理を収束するまで(画像特徴量がfgに充分近づくまで)継続すればよい。
なお、目標となる関節角の変化量を求めたからといって、必ずしも関節角を目標分だけ変化させる必要はない。例えば、第mの画像と第m+1の画像の間では、Δθgmを目標値として制御を行うが、実際の変化量がΔθgmとならないうちに、次の画像である第m+1の画像が取得され、それにより新たな目標値Δθgm+1が算出されるという場合も大いに考えられる。
4.異常検出手法
本実施形態における異常検出手法について説明する。図11(A)に示したように、ロボット200の関節角がθpであるときに、第pの画像情報が取得され、当該第pの画像情報から画像特徴量fpが算出されたとする。そして、第pの画像情報の取得タイミングよりも後のタイミングにおいて、ロボット200の関節角がθqであるときに、第qの画像情報が取得され、当該第qの画像情報から画像特徴量fqが算出されたとする。ここで、第pの画像情報と第qの画像情報は、時系列的に隣接する画像情報であってもよいし、隣接しない(第pの画像情報の取得後、第qの画像情報の取得前に他の画像情報を取得する)画像情報であってもよい。
ビジュアルサーボにおいては、fpやfqは、上述したようにfgとの差分をΔfとしてΔθgの算出に用いられていたが、fpとfqの差分fq−fpも画像特徴量変化量に他ならない。また、関節角θpや関節角θqは関節角検出部115がエンコーダー等から取得するため、実測値として求めることが可能であり、θpとθqの差分θq−θpは関節角の変化量Δθである。つまり、2つの画像情報について、それぞれ対応する画像特徴量fと関節角θが求められるため、画像特徴量変化量はΔf=fq−fpとして求められ、対応する関節角の変化量もΔθ=θq−θpとして求められる。
そして、上式(5)に示したように、Δf=JvΔθという関係がある。つまり実測したΔθ=θq−θpと、ヤコビアンJvを用いてΔfe=JvΔθを求めれば、求めたΔfeは誤差が全く生じない理想的な環境においては実測されたΔf=fq−fpに一致するはずである。
よって、変化量推定部130は、関節角情報の変化量に対して、関節角情報と画像特徴量を対応付ける(具体的には関節角情報の変化量と画像特徴量変化量を対応付ける)ヤコビアンJvを作用させることで、推定画像特徴量変化量Δfeを演算する。上述したように、理想的な環境であれば求められた推定画像特徴量変化量Δfeは、変化量演算部120においてΔf=fq−fpとして求められた画像特徴量変化量Δfに一致するはずであり、逆に言えばΔfとΔfeが大きく異なる場合には、何らかの異常が発生していると判定することができる。
ここで、ΔfとΔfeに誤差が生じる要因としては、画像情報から画像特徴量を演算する際の誤差、エンコーダーが関節角の値を読み取る際の誤差、ヤコビアンJvに含まれる誤差等が考えられる。ただし、エンコーダーが関節角の値を読み取る際に誤差が生じる可能性は他の2つと比較した場合低い。また、ヤコビアンJvに含まれる誤差についてもそれほど大きな誤差とはならない。それに対して、画像中に認識対象ではない多数の物体が撮像されたりすることで、画像情報から画像特徴量を演算する際の誤差の発生頻度は比較的高いものとなる。また、画像特徴量演算において異常が発生した場合には、誤差が非常に大きくなる可能性がある。例えば、画像中から所望の物体を認識する認識処理に失敗すれば、本来の物体位置とは大きく異なる画像上の位置に、物体があると誤認識する可能性がある。よって本実施形態では、主として画像特徴量の演算における異常を検出するものとする。ただし、他の要因による誤差も異常として検出してもよい。
異常判定においては例えば閾値を用いた判定処理を行えばよい。具体的には、異常判定部140は、画像特徴量変化量Δfと推定画像特徴量変化量Δfeの差分情報と、閾値との比較処理を行い、差分情報が閾値よりも大きい場合に異常と判定する。例えば所与の閾値Thを設定し、下式(7)が満たされる場合に、異常が発生していると判定すればよい。このようにすれば、下式(7)等の容易な演算により異常を検出することが可能になる。
|Δf−Δfe|>Th ・・・・・(7)
また、閾値Thは固定値である必要はなく、状況に応じて値を変化させてもよい。例えば、異常判定部140は、変化量演算部120での、画像特徴量変化量の演算に用いられる2つの画像情報の取得タイミングの差が大きいほど、閾値を大きく設定してもよい。
ヤコビアンJvは図9等に示したように、ΔθとΔfを関連づけるものである。そして図12に示したように、同じヤコビアンJvを作用させた場合でも、Δθに作用させて得られるΔfeに比べて、Δθよりも変化量の大きいΔθ’に作用させて得られるΔfe’の方が変化量が大きくなる。この際、ヤコビアンJvに全く誤差が生じないということは考えにくく、ΔθやΔθ’だけ関節角が変化した場合の画像特徴量の理想的な変化量ΔfiやΔfi’に比べた場合、図12に示したようにΔfeやΔfe’はずれが生じる。そして図12のA1とA2の比較から明らかなように、当該ずれは変化量が大きくなるほど大きくなってしまう。
仮に、画像特徴量演算において誤差が全くないと仮定すれば、画像情報から求められる画像特徴量変化量ΔfはΔfiやΔfi’に等しくなる。その場合、上式(7)の左辺はヤコビアンによる誤差を表すことになり、ΔθやΔfe等のように変化量が小さい場合にはA1に相当する値となり、Δθ’やΔfe’等のように変化量が大きい場合にはA2に相当する値となる。しかし上述したように、Δfe、Δfe’の両方で用いているヤコビアンJvは同一であり、上式(7)の左辺の値が大きくなったからといって、A2の方がA1に比べてより異常度が高い状態であると判定することは不適切である。つまり、A1に対応する状況では上式(7)を満たさず(異常と判定されず)、A2に対応する状況では上式(7)を満たす(異常と判定される)ことは適切とは言えない。そこで異常判定部140では、よりΔθやΔfe等の変化量が大きいほど、閾値Thも大きく設定する。このようにすれば、A1に対応する状況に比べ、A2に対応する状況での閾値Thが大きくなるため、適切な異常判定が可能である。2つの画像情報(図11(A)であれば第pの画像情報と第qの画像情報)の取得タイミングの差が大きいほど、ΔθやΔfe等も大きくなると考えられるため、処理上は例えば、画像取得タイミングの差に応じて閾値Thを設定すればよい。
また、異常判定部140において異常が検出された場合の制御は種々考えられる。例えば、異常判定部140により異常が検出された場合に、ロボット制御部110は、ロボット200を停止させる制御を行ってもよい。上述したように、異常が検出された場合とは、例えば画像情報からの画像特徴量の演算に大きな誤差が生じている場合等である。つまり、当該画像特徴量(図11(A)の例であればfq)を用いてロボット200の制御を行ってしまうと、画像特徴量が目標画像特徴量fgに近づく方向とはかけ離れた方向へロボット200を移動させてしまう可能性がある。場合によっては、アーム210等が他の物体に衝突したり、無理な姿勢を取ることでハンド等に把持していた対象物を落下させてしまうおそれもある。よって異常時の制御の一例としては、ロボット200の動作自体を停止させてしまい、そのようなリスクの大きい動作を行わないというものが考えられる。
また、画像特徴量fqに誤差が大きいと推定され、fqを用いた制御が望ましくないのであれば、即座にロボット動作を停止してしまうのではなく、fqを制御に用いないものとしてもよい。よって例えば、異常判定部140により異常が検出された場合に、ロボット制御部110は、変化量演算部120での、画像特徴量変化量の演算に用いられる2つの画像情報のうち、時系列的に後のタイミングで取得された画像情報である異常判定画像情報に基づく制御をスキップし、異常判定画像情報よりも前のタイミングで取得された画像情報に基づいて制御を行ってもよい。
図11(A)の例であれば、異常判定画像情報とは第qの画像である。また、図10の例で、隣接する2つの画像情報を用いて異常判定を行い、第m−2の画像情報と第m−1の画像情報では異常なし、第m−1の画像情報と第mの画像情報では異常なし、第mの画像情報と第m+1の画像情報では異常ありと判定されたとする。その場合、fm−1及びfmには異常がないことがわかり、fm+1に異常があると考えられ、Δθgm−1、Δθgmは制御に用いることができるが、Δθgm+1は制御に用いることが適切でない。本来、第m+1の画像情報とその次の第m+2の画像情報の間ではΔθgm+1を制御に用いるが、ここでは当該制御は適切でないため行わない。その場合、第m+1の画像情報と第m+2の画像情報の間でも、その前に求められたΔθgmを用いてロボット200を動作させればよい。Δθgmは、少なくともfmの算出タイミングにおいては目標方向へロボット200を移動させる情報であるから、fm+1の算出後に継続利用したとしても大きな誤差を生じさせるとは考えにくい。このように、異常が検出された場合にも、それ以前の情報、特に異常検出タイミングよりも前に取得され、且つ異常が検出されていない情報で一応の制御を行うことでロボット200の動作を継続できる。その後、新たな画像情報(図10の例であれば第m+2の画像情報)が取得されたら、当該新たな画像情報から求められる新たな画像特徴量により制御を行えばよい。
異常検出時まで考慮した本実施形態の処理の流れを、図16のフローチャートに示す。この処理が開始されると、まず画像取得部116による画像の取得と、画像特徴量演算部117による画像特徴量の演算を行い、変化量演算部120において画像特徴量変化量を演算する(S101)。また、関節角検出部115による関節角の検出を行い、変化量推定部130において推定画像特徴量変化量を推定する(S102)。そして画像特徴量変化量と推定画像特徴量変化量の差分が閾値以下であるか否かにより異常判定を行う(S103)。
差分が閾値以下である(S103でYes)の場合には、異常は発生していないとして、S101で求められた画像特徴量を用いて制御を行う(S104)。そして、目標となる画像特徴量と、現在の画像特徴量が充分近づいたか(狭義には一致したか)の判定を行い、Yesの場合には正常に目標に到達したとして処理を終了する。一方、S105でNoの場合には、動作自体に異常は発生していないが、目標には到達していないとして、S101に戻り制御を継続する。
また、画像特徴量変化量と推定画像特徴量変化量の差分が閾値より大きい(S103でNo)の場合には、異常が発生していると判定する。そして、異常の発生がN回連続しているかの判定を行い(S106)、連続発生している場合には、動作の継続が好ましくない程度の異常であるとして、動作を停止する。一方、異常の発生がN回連続でない場合には、過去の画像特徴量であり、且つ異常が発生していないと判定された画像特徴量を用いて制御を行い(S107)、S101に戻って次のタイミングの画像について処理を継続する。図16のフローチャートでは、上述したようにある程度の異常まで(ここでは連続N−1回以下の異常発生)は、即座に動作を停止するのではなく、動作を継続する方向での制御を行っている。
なお、以上の説明においては、画像情報の取得タイミング、関節角情報の取得タイミング、画像特徴量の取得タイミング(演算完了タイミング)の間の時間差を特に考慮していなかった。しかし実際には、図13に示したように、所与のタイミングで画像情報が取得されたとしても、当該画像情報の取得時の関節角情報をエンコーダーが読み取り、且つ読み取った情報が関節角検出部115に送信されるまでにタイムラグが生じる。また、画像特徴量の演算が画像取得後に行われるため、そこでもタイムラグが生じるし、画像情報によって画像特徴量の演算負荷が異なるためタイムラグの長さも異なる。例えば、認識対象物以外の物体が全く撮影されず、且つ背景が単色無地等の場合は画像特徴量の演算は高速でできるが、種々の物体が撮影された場合等には画像特徴量の演算に時間を要する。
つまり、図11(A)では第pの画像情報と第qの画像情報を用いた異常判定を行うとシンプルに説明したが、実際には図13に示したように、第pの画像情報の取得から対応する関節角情報の取得までのタイムラグtθpと、第pの画像情報の取得から画像特徴量の演算完了までのタイムラグtfpを考慮する必要があり、第qの画像情報についても同様にtθqと、tfqを考慮する必要がある。
異常判定処理は、例えば第qの画像情報の画像特徴量fqが取得されたタイミングで開始されるが、差分を取る対象であるfpはどれだけ前に取得された画像特徴量であるか、また、θqとθpの取得タイミングはいつであるかということを適切に判定しなくてはならない。
具体的には、第1の画像情報の画像特徴量f1が第i(iは自然数)のタイミングで取得され、第2の画像情報の前記画像特徴量f2が第j(jはj≠iを満たす自然数)のタイミングで取得された場合に、変化量演算部120は、画像特徴量f1と画像特徴量f2の差分を、画像特徴量変化量として求め、変化量推定部130は、第1の画像情報に対応する変化量推定用情報p1が第k(kは自然数)のタイミングで取得され、第2の画像情報に対応する変化量推定用情報p2が第l(lは自然数)のタイミングで取得された場合に、変化量推定用情報p1と変化量推定用情報p2とに基づいて、推定画像特徴量変化量を求める。
図13の例であれば、画像特徴量や関節角情報は種々のタイミングで取得されているものであるが、fqの取得タイミング(例えば第jのタイミング)を基準とした場合に、第pの画像情報に対応する画像特徴量fpは、(tfq+ti−tfp)だけ前に取得された画像特徴量である、すなわち、第iのタイミングは第jのタイミングより(tfq+ti−tfp)だけ前であるということを特定する。ここで、tiは図13に示したように画像取得タイミングの差を表す。
同様に、θqの取得タイミングである第lのタイミングは、第jのタイミングより(tfq−tθq)だけ前のタイミングであり、θpの取得タイミングである第kのタイミングは、第jのタイミングより(tfq+ti−tθp)だけ前のタイミングであると特定する。本実施形態の手法では、ΔfとΔθの対応がとれている必要があり、具体的にはΔfが第pの画像情報と第qの画像情報から求められているのであれば、Δθも第pの画像情報と第qの画像情報に対応する必要がある。そうでなければ、Δθから求められる推定画像特徴量変化量ΔfeはそもそもΔfと対応関係を持たなくなり、比較処理を行う意義がないためである。よって上述したように、タイミングの対応関係を特定することは重要と言える。なお、図13においては、関節角の駆動自体は非常に高速且つ高頻度で行われるため、連続的なものとして扱っている。
なお、現状のロボット200及びロボット制御装置100では、画像情報の取得タイミングと、対応する関節角情報の取得タイミングの差は充分小さいと考えることが可能である。よって、第kのタイミングは、第1の画像情報の取得タイミングであり、第lのタイミングは、第2の画像情報の取得タイミングであると考えてよい。この場合、図13におけるtθpやtθqを0とすることができるため処理が容易になる。
また、さらに具体的な例としては、1つ前の画像情報から画像特徴量が算出されたタイミングに、次の画像情報の取得を行う手法が考えられる。この場合の例を図14に示す。図14の縦軸は画像特徴量の値であり、「実際の特徴量」とは、当該タイミングでの関節角情報に対応する画像特徴量が仮に取得された場合の値であり、処理上確認できるものではない。実際の特徴量が滑らかに推移することからわかるように、関節角の駆動は連続的であると考えてよい。
この場合、B1のタイミングで取得された画像情報に対応する画像特徴量は、t2だけ経過後のB2のタイミングに取得されるため、B1での実際の特徴量と、B2での画像特徴量が対応する(誤差がなければ一致する)ことになる。そしてB2のタイミングで次の画像情報が取得される。
同様に、B2で取得された画像情報の画像特徴量はB3で演算が完了し、B3で次の画像情報が取得される。以下同様であり、B4で取得された画像情報の画像特徴量はt1だけ経過後のB5で演算が完了し、B5で次の画像情報が取得される。
図14の例であれば、B5のタイミングで算出された画像特徴量と、B2のタイミングで算出された画像特徴量とを異常判定処理に用いる場合、画像情報の取得タイミングはそれぞれB4とB1になる。上述したように、画像情報の取得タイミングと対応する関節角情報の取得タイミングの差は充分小さい場合には、関節角情報はB4のタイミングのものと、B1のタイミングのものを用いればよい。つまり図14に示したようにB2とB5の差をTsとし、タイミングの基準をB5とした場合には、比較対象である画像特徴量はTsだけ前のものを用いる。また、関節角情報の差分を求める際に用いる2つの関節角情報は、t1だけ前のものと、Ts+t2だけ前のものを用いればよい。また、2つの画像情報の取得タイミングの差は(Ts+t2−t1)となる。よって、画像情報の取得タイミングの差に基づいて閾値Thを決定する場合には、(Ts+t2−t1)の値を用いればよいことになる。
その他、各種情報の取得タイミングは種々考えられるが、上述したようにΔfとΔθの間に対応関係があるようにタイミングの特定を行えばよい点は同様である。
5.変形例
以上の説明では、ΔfとΔθが取得され、Δθから推定画像特徴量変化量Δfeを求め、ΔfとΔfeを比較していた。しかし本実施形態の手法はこれに限定されない。例えば上述した測定手法のように、何らかの手法でロボット200の手先の位置姿勢情報、又は手先によって把持等が行われる対象物の位置姿勢情報を取得してもよい。
この場合、変化量推定用情報としては位置姿勢情報Xが取得されるため、その変化量ΔXを求めることができる。そして上式(4)に示したように、ΔXに対してヤコビアンJiを作用させることで、Δθの場合と同様に推定画像特徴量変化量Δfeを求めることができる。Δfeが求められれば、その後の処理は上述の例と同様である。つまり、変化量推定部130は、位置姿勢情報の変化量に対して、位置姿勢情報と画像特徴量を対応付ける(具体的には位置姿勢情報の変化量と画像特徴量変化量を対応付ける)ヤコビアンを作用させることで、推定画像特徴量変化量を演算する。この処理の流れを、図11(A)と対応させて示したものが図11(B)である。
ここで、位置姿勢情報としてロボット200の手先(ハンド或いはエンドエフェクター220)の位置姿勢を用いる場合には、Jiは手先の位置姿勢情報の変化量と画像特徴量変化量を対応付ける情報である。また、位置姿勢情報として対象物の位置姿勢を用いる場合には、Jiは対象物の位置姿勢情報の変化量と画像特徴量変化量を対応付ける情報である。或いは、エンドエフェクターにより対象物をどのような相対的な位置姿勢で把持するか、という情報が既知であれば、エンドエフェクター220の位置姿勢情報と、対象物の位置姿勢情報は1対1に対応するため、一方の情報を他方の情報に変換することも可能である。つまり、エンドエフェクター220の位置姿勢情報を取得してから、対象物の位置姿勢情報に変換し、その後、対象物の位置姿勢情報の変化量と画像特徴量変化量を対応付けるヤコビアンJiを用いてΔfeを求める等、種々の実施形態が考えられる。
また、本実施形態の異常判定における比較処理は、画像特徴量変化量Δfと推定画像特徴量変化量Δfeを用いて行うものに限定されない。画像特徴量変化量Δfと、位置姿勢情報の変化量ΔXと、関節角情報の変化量Δθとは、ヤコビアンや、ヤコビアンの逆行列(広義には一般化逆行列)である逆ヤコビアンを用いることで相互に変換が可能である。
つまり本実施形態の手法は、図17に示すように、画像情報に基づいてロボット200を制御するロボット制御部110と、ロボット200のエンドエフェクター220又は対象物の位置姿勢情報の変化量を表す位置姿勢変化量、又は、ロボット200の関節角情報の変化量を表す関節角変化量を求める変化量演算部120と、画像情報に基づいて、画像特徴量変化量を求め、画像特徴量変化量に基づいて、位置姿勢変化量の推定量である推定位置姿勢変化量、又は、関節角変化量の推定量である推定関節角変化量を求める変化量推定部130と、位置姿勢変化量と推定位置姿勢変化量の比較処理、又は、関節角変化量と推定関節角変化量の比較処理により異常判定を行う異常判定部140とを含むロボット制御装置に適用できる。
図17では、図2と比較した場合に、変化量演算部120と変化量推定部130が入れ替わった構成となっている。つまり変化量演算部120は、関節角情報に基づいて変化量(ここでは関節角変化量又は位置姿勢変化量)を求め、変化量推定部130は、画像特徴量の差分に基づいて変化量を推定する(推定関節角変化量又は推定位置姿勢変化量を求める)。また図17では変化量演算部120は関節角情報を取得するものとしたが、上述したように変化量演算部120において、測定結果等を用いて位置姿勢情報を取得してもよい。
具体的には、ΔfとΔθが取得された場合に、上式(5)から求められる下式(8)により推定関節角変化量Δθeを求め、ΔθとΔθeの比較処理を行ってもよい。具体的には、所与の閾値Th2を用いて、下式(9)が成り立つ場合に異常であると判定すればよい。
Δθe=Jv−1Δf ・・・・・(8)
|Δθ−Δθe|>Th2 ・・・・・(9)
或いは、上述したような測定手法を用いて、ΔfとΔXが取得された場合に、上式(4)から求められる下式(10)により推定位置姿勢変化量ΔXeを求め、ΔXとΔXeの比較処理を行ってもよい。具体的には、所与の閾値Th3を用いて、下式(11)が成り立つ場合に異常であると判定すればよい。
ΔXe=Ji−1Δf ・・・・・(10)
|ΔX−ΔXe|>Th3 ・・・・・(11)
また、直接的に求められる情報により比較を行うものにも限定されない。例えば、ΔfとΔθが取得された場合に、Δfから上式(10)により推定位置姿勢変化量ΔXeを求め、Δθから上式(3)により位置姿勢変化量ΔX(厳密にはこのΔXも実測値ではなく推定値)を求め、上式(11)を用いた判定を行ってもよい。
或いは、ΔfとΔXが取得された場合に、Δfから上式(8)により推定関節角変化量Δθeを求め、ΔXから上式(3)から求められる下式(12)により関節角変化量Δθ(厳密にはこのΔθも実測値ではなく推定値)を求め、上式(9)を用いた判定を行ってもよい。
Δθ=Ja−1ΔX ・・・・・(12)
つまり、変化量演算部120は、複数の位置姿勢情報を取得して、複数の位置姿勢情報の差分を位置姿勢変化量として求める処理、複数の位置姿勢情報を取得して、複数の位置姿勢情報の差分に基づいて関節変化量を求める処理、複数の関節角情報を取得して、複数の関節角情報の差分を前記関節角変化量として求める処理、及び複数の関節角情報を取得して、複数の関節角情報の差分に基づいて位置姿勢変化量を求める処理、のいずれかの処理を行う。
以上に示したΔf、ΔX、Δθの関係を、本明細書における数式の番号を併記してまとめたものが図15である。つまり本実施形態の手法は、Δfと、ΔX及びΔθのいずれかの2つの情報が取得されれば、それらをΔf、ΔX、Δθのいずれかの情報に変換して比較することで実現することができ、取得する情報や比較に用いる情報については種々の変形実施が可能である。
なお、本実施形態のロボット制御装置100等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、CPU等のプロセッサーがプログラムを実行することで、本実施形態のロボット制御装置100等が実現される。具体的には、非一時的な情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをCPU等のプロセッサーが実行する。ここで、情報記憶媒体(コンピューターにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、CD等)、HDD(ハードディスクドライブ)、或いはメモリー(カード型メモリー、ROM等)などにより実現できる。そして、CPU等のプロセッサーは、情報記憶媒体に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピューターに実行させるためのプログラム)が記憶される。
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御装置100等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。