実施の形態1.
図1は、本発明の実施の形態1による補正関数生成装置100aを備えるロボットシステム1a及びロボット制御システム2aの構成の一例を示す図である。ロボットシステム1aは、ロボットアーム300aを備えるロボットと、ロボット制御システム2aとを備える。また、ロボット制御システム2aは、補正関数生成装置100a及びロボット制御装置200aを備える。なお、図1においては、ロボットアーム300a以外のロボットの部位の図示は省略している。
ロボットシステム1aには、ロボットアーム300aの手先の三次元位置を計測する手先位置計測装置3aが接続される。手先位置計測装置3aとしては、例えば、レーザ距離センサ、ビジョンセンサ等が用いられる。ここで、ロボットアーム300aの手先は、ロボットアーム300aの先端であり、作業対象物に作用する部位を指す。ロボットアーム300aの手先は、ロボットの手先と言い換えることもできる。ロボットシステム1aとしては、産業用ロボットの他、人にサービスを提供するサービスロボット等が考えられる。産業用ロボットが行う作業としては、部品の搬送、組み立て、加工などが考えられる。以降において、ロボットアーム300aの手先は、単に手先と記載されることがある。また、以降において、手先の位置は、手先位置と記載されることがある。ロボットアーム300aは、1つ以上の関節を有している。また、ロボットアーム300aには、ロボットアーム300aの所定位置の温度を検出するセンサ、ロボットアーム300aの関節の角度を検出するセンサ等が搭載される。
図2は、本発明の実施の形態1によるロボットアーム300aの構成の一例を示す図である。ロボットアーム300aは、第1のリンク311、第2のリンク312、第3のリンク313、及び第4のリンク314が、関節によって接続された構成となっている。関節の角度は、ロボット制御装置200aから出力される動作指令値によって制御される。この結果、関節によって互いに接続されるリンク間の角度が制御される。また、ロボットアーム300aには、第1の温度センサ321、第2の温度センサ322、第3の温度センサ323、第4の温度センサ324、第5の温度センサ325、及び第6の温度センサ326が、それぞれ所定の位置に搭載されている。
このように、ロボットアーム300aは、4つのリンクとして、第1のリンク311、第2のリンク312、第3のリンク313、及び第4のリンク314を備える。また、ロボットアーム300aは、6つの温度センサとして、第1の温度センサ321、第2の温度センサ322、第3の温度センサ323、第4の温度センサ324、第5の温度センサ325、及び第6の温度センサ326を備える。4つのリンクのそれぞれは、ロボットアーム300aを分割して得られる部位となる。ここで、ロボットアーム300aを分割して得られる各部位は、ロボットアーム300aを直線状に伸ばした時に、ロボットアーム300aの両端を結ぶ方向に配列されるように設定される。また、ロボットアーム300aを分割して得られる各部位は、関節を跨がないように設定される。言い換えると、ロボットアーム300aを分割して得られる各部位は、各部位の端部に関節が存在することはあっても、各部位の内部に関節を含まないように設定される。
ロボットアーム300aには、温度センサ以外に、関節の角度を検出するセンサ等も搭載されるが、図示を省略している。ロボットアーム300aの関節の角度は、互いに接続されるリンク間の角度を表し、関節を駆動するモータの回転角度等から検出することができる。なお、図3に示すロボットアーム300aの構成は一例であり、リンクの数、温度センサの数、温度センサの配置等は、図2に示すものに限定されない。例えば、温度センサは任意の位置に設置されてもよいし、関節を駆動するサーボモータに物理的に接続されたエンコーダに内蔵された温度センサを活用してもよい。
ロボットアーム300aにおいて、第1のリンク311の長さはL1となっている。また、第2のリンク312の長さはL2となっている。また、第3のリンク313の長さはL3となっている。また、第4のリンク314の長さはL4となっている。なお、リンクの長さは、ロボットアーム300aを直線状に伸ばした時に、ロボットアーム300aの両端を結ぶ方向の各リンクの長さである。リンクの両端に関節が存在する場合には、リンクの長さは、そのリンクの両端の関節間の距離で表される。関節の位置は、関節の回転軸の位置として定義できる。一方、リンクの一端のみ関節が存在する場合には、リンクの長さは、そのリンクの一端の関節から他端の先までの距離で表される。また、ロボットアーム300aの手先は、第4のリンク314の先端となる。すなわち、ロボットアーム300aの手先は、第4のリンク314において、第3のリンクと接続されていない側の端部となる。
次に、ロボット制御システム2aについて説明する。図3は、本発明の実施の形態1による補正関数生成装置100aを備えるロボット制御システム2aを実現するための具体的なハードウェア構成の一例を示す図である。すなわち、図3は、補正関数生成装置100a及びロボット制御装置200aを実現するための具体的なハードウェア構成の一例を示す図である。ロボット制御システム2aは、メモリ402に記憶されるプログラムをプロセッサ401で実行することで実現される。プロセッサ401とメモリ402とは、データバス403で接続される。メモリ402には、揮発性のメモリ及び非揮発性のメモリが備えられ、一時的な情報は揮発性のメモリに記憶される。なお、ロボット制御システム2aは一体として図3の構成としても良い。もしくは、補正関数生成装置100a及びロボット制御装置200aを別体として、それぞれを図3の構成としても良い。例えば、補正関数生成装置100a及びロボット制御装置200aが、ネットワークなどを介して接続されていても良い。以降の実施の形態においても、ロボット制御システム2aは同様のハードウェア構成で実現できる。
図4は、本発明の実施の形態1による補正関数生成装置100aを備えるロボット制御システム2aの動作の流れの一例を示す図である。すなわち、図4は、補正関数生成装置100a及びロボット制御装置200aの動作の流れの一例を示す図である。まず、ステップS001aにおいて、ロボット制御装置200aは、手先位置計測装置3aの計測結果、及びロボットアーム300aに装着されるセンサの検出値を取得する。より具体的には、ステップS001aにおいて、ロボット制御装置200aは、ロボットアーム300aから温度情報を取得する。温度情報は、ロボットアーム300aの所定位置で計測された温度の情報であり、ロボットアーム300aに搭載されている6つの温度センサ321〜326によって計測される。
また、ステップS001aにおいて、ロボット制御装置200aは、ロボットアーム300aの関節の角度をロボットアーム300aから取得する。ロボットアーム300aの関節の角度は、ロボットアームに搭載されているセンサによって計測される。ロボット制御装置200aは、温度センサ321〜326によって温度情報が計測された時点のロボットアーム300aの関節の角度を取得する。さらに、ステップS001aにおいて、ロボット制御装置200aは、温度情報が計測された時点の計測位置を手先位置計測装置3aから取得する。計測位置は、手先位置計測装置3aによって計測することで得られるロボットアーム300aの手先の位置である。
ここで、ロボット制御装置200aは、複数の時刻における温度情報、関節の角度、及び計測位置を取得することが望ましい。複数の時刻における温度情報、関節の角度、及び計測位置を用いて補正関数を生成した方が、より高精度の補正効果が得られる可能性が高い。以下では、ロボット制御装置200aは、複数の時刻における温度情報、関節の角度、及び計測位置を取得するものとする。ロボット制御装置200aは、取得される温度情報、関節の角度及び計測位置が、計測時刻が同期して計測された情報となるように、ロボットアーム300a及び手先位置計測装置3aを制御する。この結果、ロボット制御装置200aは、温度情報が計測された時点の関節の角度、及び温度情報が計測された時点の計測位置を取得することができる。なお、温度情報を計測する時刻、関節の角度を計測する時刻、及び手先の位置を計測する時刻は、厳密に同一である必要はなく、実用上で求められる補正精度に影響のない範囲で異なっていても良い。
温度情報、関節の角度、及び計測位置は、任意の時刻に測定されれば良いが、熱に起因するロボットアーム300aの伸びの程度が互いに異なる複数の状態で測定されることが望ましい。このためには、ロボット制御装置200aは、ロボットアーム300aに高負荷を与えるような動作を暖機動作として実行させ、その過程で温度情報、関節の角度、及び計測位置を取得することが望ましい。実際の作業においてロボットアーム300aに実行させる動作が予め1つのパターンに決まっている場合などでは、その動作を暖機動作として実行し、その過程で温度情報を計測すれば良い。その結果、補正関数生成装置は、その動作特有の伸びに最適な補正関数を生成することができる。
また、ロボット制御装置200aは、ロボットアーム300aの計測姿勢も制御する。ここで、計測姿勢とは、温度情報が計測される際のロボットアーム300aの姿勢を意味する。すなわち、ロボット制御装置200aは、温度情報が計測される際のロボットアーム300aの関節の角度も制御する。ロボットアーム300aの計測姿勢は任意である。例えば、ロボットアーム300aの計測姿勢として、手先位置計測装置3aの設置がし易い姿勢を選択することが考えられる。また、ロボットアーム300aの計測姿勢は、予め決定された一定の姿勢であっても良いし、温度情報が計測される毎に異なる姿勢であっても良い。
ロボットアーム300aの計測姿勢が一定である場合には、ロボット制御装置200aは、予め記憶された関節の角度となるようにロボットアーム300aを制御する。この場合には、ロボット制御装置200aは、必ずしもロボットアーム300aから関節の角度を取得する必要はなく、ロボット制御装置200aに予め記憶された関節の角度を読み出せば良い。この場合でも、ロボット制御装置200aは内部のメモリから関節の角度を取得している。本実施の形態のロボット制御システム2aは、関節の角度をロボットアーム300aから取得する構成としている。
また、ロボットアーム300aの計測姿勢が一定である場合には、手先位置の変動は温度変化に起因するものに限られるので、手先の存在範囲が限定される。この場合には、手先位置計測装置3aとして簡易な計測器を使用することができ、例えば基準位置からの位置の変化を測定する変位センサを使用することができる。一方、計測位置が一定ではない場合には、手先位置計測装置3aの計測範囲は広くなるが、ロボットアームに任意の作業をさせている間にも、補正関数の生成が可能となる。本実施の形態のロボットシステム1aにおいては、手先位置計測装置3aは、手先の絶対位置を計測するものとする。以上が、ステップS001aにおけるロボット制御装置200aの動作である。
次に、ステップS100aにおいて、補正関数生成装置100aは、温度情報、関節の角度、及び計測位置をロボット制御装置200aから取得する。ここで、補正関数生成装置100aは、複数の時刻における温度情報、関節の角度、及び計測位置を取得するものとする。また、ステップS100aにおいて、補正関数生成装置100aは、ロボット制御装置200aから取得した情報に基づいて、手先の位置を制御するために用いられる補正関数を生成する。生成された補正関数は、ロボット制御装置200aに出力される。なお、本実施の形態では、補正関数生成装置100aは、ロボット制御装置200aを介して、温度情報、関節の角度、及び計測位置を取得する構成としているが、この構成に限定されるわけではない。
次に、ステップS002において、ロボット制御装置200aは、補正関数生成装置100aで生成された補正関数を取得する。次に、ステップS200において、ロボット制御装置200aは、取得された補正関数に基づいて、ロボットアーム300aの動作を制御するための動作指令値を生成する。生成された動作指令値は、ロボットアーム300aに出力される。ロボットアーム300aは、動作指令値に従って動作する。ロボット制御装置200aが補正関数に基づいて動作指令値を生成することによって、ロボット制御装置200aは手先を所定の位置に高精度に移動させることができる。すなわち、ロボット制御装置200aによる手先の位置決め精度が向上する。
次に、ステップS003において、ロボット制御装置200aは、ロボットアーム300aの動作を終了させるか否かを判定する。ロボット制御装置200aは、予め定められた作業を完了した場合などに動作を終了させる。ステップS003において、動作を終了させると判定されると、ロボット制御システム2aは動作を終了する。一方、ステップS003において、まだ動作を終了させないと判定されると、ロボット制御システム2aの動作はステップS200へと戻り、動作指令値の生成が繰り返される。以上が、ロボット制御システム2aの動作の流れである。以下では、ステップS100a及びステップS200におけるロボット制御システム2aの動作について、更に詳しく述べる。
まず、ステップS100aにおけるロボット制御システム2aの動作について述べる。前述の通り、ステップS100aでは、補正関数生成装置100aが動作する。図5は、本発明の実施の形態1による補正関数生成装置100aの構成の一例を示す図である。図5では、補正関数生成装置100aの構成が、ロボット制御装置200aとともに示されている。本実施の形態の補正関数生成装置100aは、情報取得部110aと、手先位置推定部120aと、補正関数決定部130aとを備える。また、手先位置推定部120aは、候補関数生成部121aと、手先位置演算部122aとを備える。また、手先位置演算部122aは、リンク長演算部123aと、手先位置変換部124aとを備える。また、補正関数決定部130aは、手先位置比較部131aと、補正関数評価部132aとを備える。
また、図6は、本発明の実施の形態1による補正関数生成装置100aの動作の流れの一例を示す図である。図6は、図4のステップS100aにおける補正関数生成装置100aの動作の流れを示している。図5及び図6を用いて、補正関数生成装置100aの動作について述べる。まず、ステップS110aにおいて、情報取得部110aは、温度情報、関節の角度、及び計測位置をロボット制御装置200aから取得する。また、ステップS110aにおいて、情報取得部110aは、基準リンク長をロボット制御装置200aから取得する。基準リンク長は、ロボットアーム300aの4つのリンク311〜314の標準的な長さであり、ロボット制御装置200aに予め記憶される。基準リンク長は、例えば、ロボットアーム300aの設計値とすることや、所定の条件下で予め計測した値とすること等が考えられる。なお、本実施の形態では、情報取得部110aは、ロボット制御装置200aから基準リンク長を取得する構成としているが、この構成に限定されるわけではない。例えば、補正関数生成装置100aが、基準リンク長を予め記憶していても良い。
次に、ステップS120aにおいて、手先位置推定部120aは、情報取得部110aから基準リンク長、温度情報、及び関節の角度を取得し、取得した情報に基づいて、温度情報が計測された時点のロボットアーム300aの手先位置を推定して推定位置を求める。なお、手先位置は、手先の位置を意味する。また、推定位置は、手先位置推定部120aによって推定された手先位置である。ここで、温度情報及び関節の角度は、複数の時刻において計測された情報であるので、推定位置も、温度情報が計測された複数の時刻のそれぞれに対して求められる。例えば、Nを整数として、温度情報及び関節の角度がN回測定されている場合、N個の推定位置が求められる。
次に、ステップS130aにおいて、補正関数決定部130aは、情報取得部110aから取得した計測位置と、手先位置推定部120aから取得した推定位置とを比較し、比較した結果に基づいて補正関数を決定する。なお、後述するように、計測位置と推測位置との比較結果によっては、処理がステップS120aに戻ることになる。すなわち、計測位置と推測位置との比較結果が所定の条件を満たさない場合には、補正関数決定部130aは、手先の位置の推定を再実施するように手先位置推定部120aに要請する。ここで、計測位置は、温度情報が計測された複数の時刻のそれぞれにおいて計測された情報である。また、推定位置は、温度情報が計測された複数の時刻のそれぞれに対して求められる。例えば、補正関数決定部130aは、温度情報が計測された複数の時刻のそれぞれにおいて、対応する計測位置及び推定位置を比較する。Nを整数として、温度情報がN回測定されている場合、N個の計測位置が取得され、N個の推定位置が求められる。したがって、補正関数決定部130aは、計測位置と推定位置とのN個の組を比較する。
別の例としては、補正関数決定部130aは、計測位置の平均値と推定位置の平均値とを比較しても良い。補正関数決定部130aで決定される補正関数は、温度情報を変数とする関数である。また、本実施の形態の補正関数生成装置100aにおいて、補正関数は、ロボットアーム300aの4つのリンク311〜314の長さを温度情報によって補正する関数となる。以上が、図4のステップS100aにおける補正関数生成装置100aの動作の流れとなる。
次に、手先位置推定部120aが推定位置を求める処理、及び補正関数決定部130aが補正関数を決定する処理について、さらに述べる。図7は、本発明の実施の形態1による補正関数生成装置100aにおける手先位置推定部120a及び補正関数決定部130aの動作の流れの一例を示す図である。図7のステップS121aからステップS124aまでが、図6のステップS120aにおける手先位置推定部120aの動作となる。また、図7のステップS131aからステップS134aまでが、図6のステップS130aにおける補正関数決定部130aの動作となる。
まず、ステップS121aにおいて、候補関数生成部121aは、補正関数の候補となる候補関数を生成する。本実施の形態の補正関数生成装置100aにおいて、候補関数は、補正関数と同様に、温度情報を変数とする関数であり、ロボットアーム300aの4つのリンク311〜314の長さを温度情報に基づいて補正する関数となる。候補関数生成部121aで生成される候補関数において、次数等の形式は限定されない。後述する補正関数決定部130aにおける比較結果が所定の条件を満たすまで、候補関数生成部121aは候補関数の生成を繰り返し行う。下記の式(1)は、候補関数生成部121aで生成される候補関数の一例である。
式(1)において、Lb1nは、時刻nにおける補正後の第1のリンク311の長さである。また、Lb2nは、時刻nにおける補正後の第2のリンク312の長さである。また、Lb3nは、時刻nにおける補正後の第3のリンク313の長さである。また、Lb4nは、時刻nにおける補正後の第4のリンク314の長さである。ここで、時刻nは、温度情報が計測された複数の時刻のいずれかを表す。例えば、Nを整数として、温度情報がN回測定されている場合、時刻nは、温度情報が測定されたN個の時刻のうちのいずれかを表す。また、式(1)において、L1は、第1のリンク311の基準リンク長である。また、L2は、第2のリンク312の基準リンク長である。また、L3は、第3のリンク313の基準リンク長である。また、L4は、第4のリンク314の基準リンク長である。
また、式(1)において、T1nは、第1の温度センサ321で計測された時刻nにおける温度情報である。また、T2nは、第2の温度センサ322で計測された時刻nにおける温度情報である。また、T3nは、第3の温度センサ323で計測された時刻nにおける温度情報である。また、T4nは、第4の温度センサ324で計測された時刻nにおける温度情報である。また、T5nは、第5の温度センサ325で計測された時刻nにおける温度情報である。また、T6nは、第6の温度センサ326で計測された時刻nにおける温度情報である。
さらに、式(1)において、ki,jは補正のための係数である。ここで、iは1〜4のいずれかであり、jはa〜gのいずれかを表す。また、式(1)に示す候補関数は、下記の式(2)のようにマトリクス形式で表すこともできる。式(2)において、K1は、係数ki,jを要素とする4行7列の行列である。
候補関数生成部121aは、ステップS121aの処理が行われるたびに、係数ki,jの値を変化させるか、候補関数の形式を変化させる。候補関数の形式は、式(1)又は式(2)に示すものに限定されない。例えば、候補関数は、温度情報に時定数が設けられた式とすることもできる。このような候補関数では、温度情報の変化の履歴も反映した補正が可能となり、補正の精度が向上することが期待できる。下記の式(3)は、温度情報に時定数を設けた候補関数の一例である。式(3)において、時刻n−1は、時刻nより前の時刻を表す。また、式(3)において、K2は、係数を要素とする行列である。さらに、候補関数は、式を一次式以外の形式とすることもできる。下記の式(4)は、二次式の候補関数の例である。式(4)において、K3は、係数を要素とする行列である。候補関数は、更に高次の式としても良い。高次の候補関数とすることで、温度情報に対して非線形なリンク長の変化にも対応でき、補正の精度が向上することが期待できる。
次に、ステップS123a及びステップS124aにおいて、手先位置演算部122aは、温度情報、関節の角度及び候補関数に基づいて、推定位置を求める。まず、ステップS123aにおいて、リンク長演算部123aは、温度情報及び基準リンク長を候補関数に入力することによって、リンク長を補正して時刻nにおける補正後のリンク長を求める。リンク長は、ロボットアーム300aの4つのリンク311〜314のそれぞれの長さである。次に、ステップS124aにおいて、手先位置変換部124aは、関節の角度と、リンク長演算部123aで求められた補正後のリンク長とに基づいて、時刻nにおける手先位置を推定する。すなわち、ステップS124aにおいて、手先位置変換部124aは、時刻nにおける推定位置Penを求める。推定位置は、補正されたリンク長と、関節の角度とに基づいた幾何学演算によって求めることができる。複数の時刻において温度情報が計測された場合、リンク長の補正及び手先位置の推定は、複数の時刻のそれぞれに対して行われる。
このように、本実施の形態の補正関数生成装置100aは、補正関数を用いてロボットアーム300aの4つのリンクの長さを補正し、補正した長さに基づいて手先の位置を推定する。したがって、ロボットアーム300aの4つのリンクのそれぞれは、手先の位置を推定するためのロボットアーム300aの構成単位と考えることができる。この時、補正関数は、手先の位置を推定するためのロボットアーム300aの構成単位の長さを補正する関数であると考えることができる。また、上述の通り、ロボットアーム300aの4つのリンクのそれぞれは、ロボットアーム300aを分割して得られる部位でもある。このように考えると、補正関数は、ロボットアーム300aを分割して得られる部位の長さを補正する関数となる。以上が、ステップS123a及びステップS124aにおける手先位置演算部122aの動作である。
次に、ステップS131aにおいて、手先位置比較部131aは、手先位置推定部120aで求められた推定位置と、情報取得部110aで取得された計測位置とを比較する。すなわち、ステップS131aにおいて、手先位置比較部131aは、推定された手先位置と、計測された手先位置とを比較する。例えば本実施の形態の補正関数生成装置100aにおいては、手先位置比較部131aは、計測位置と推定位置との間の距離を算出することによって、計測位置と推定位置とを比較する。時刻nにおける推定位置をPenとし、時刻nにおいて計測された計測位置をPmnとすると、手先位置比較部131aは、推定位置Penと計測位置Pmnとの時刻nにおける距離Dnを求める。計測位置と推定位置との間の距離は、計測位置に対する推定位置の誤差を表す。
複数の時刻において温度情報が計測された場合、手先位置比較部131aは、複数の時刻のそれぞれにおいて、計測位置Pmnと推定位置Penとの間の距離Dnを算出する。この場合、比較結果として、複数の距離が求められる。例えば、Nを整数として、温度情報がN回測定されている場合、N個の計測位置が取得され、N個の推定位置が求められるので、手先位置比較部131aは、N個の距離を算出する。一方、手先位置比較部131aは、計測位置Pmnの平均と推定位置Penの平均との間の距離を算出することもできる。この場合、比較結果として、1つの距離が求められる。
次に、ステップS132aにおいて、補正関数評価部132aは、比較結果が所定の条件を満たすか否かを判定する。ステップS132aにおいて、補正関数評価部132aは、例えば、計測位置と推定位置との間の距離が、所定の距離よりも短いか否かを判定する。補正関数評価部132aは、計測位置と推定位置との間の距離が所定の距離よりも短い場合に、比較結果が所定の条件を満たすと判定する。ステップS131aにおいて手先位置比較部131aが複数の距離を求めている場合には、補正関数評価部132aは、最大値が所定の距離よりも短いか否かを判定しても良いし、平均値が所定の距離よりも短いか否かを判定しても良い。
ステップS132aにおいて、比較結果が所定の条件を満たすと判定された場合には、補正関数評価部132aの動作は、ステップS133へと進む。ステップS133では、補正関数評価部132aは、最新の候補関数を補正関数として決定し、ロボット制御装置200aに出力する。ここで、最新の候補関数は、所定の条件を満たした推定位置を求めるために使用された候補関数となる。すなわち、補正関数評価部132aは、所定の条件を満たした推定位置に対応する補正関数として、最新の候補関数を出力する。一方、ステップS132aにおいて、比較結果が所定の条件を満たさないと判定された場合には、補正関数評価部132aの動作は、ステップS134aへと進む。ステップS134aでは、補正関数評価部132aは、候補関数生成部121aに候補関数の再生成を要請する。その後、補正関数生成装置100aの動作はS121aに戻る。
候補関数の再生成を要請されると、候補関数生成部121aは、ステップS121aにおいて、候補関数の形式または係数を変更し、新たな候補関数を生成する。この際、候補関数生成部121aは、補正関数決定部130aにおける計測位置と推定位置との比較結果に応じて、候補関数の係数を変化させるか、候補関数の形式を変化させるかを決定しても良い。例えば、計測位置と推定位置との間の複数の距離が求められる場合、距離のばらつきが大きい場合には、候補関数の形式を変化させ、距離のばらつきが小さい場合には、候補関数の係数を変化させることが考えられる。
なお、1回目のステップS121aの動作において、候補関数生成部121aは、任意の形式、任意の係数の候補関数を生成することができる。候補関数生成部121aは、例えば、他の製品等で以前に求められた補正関数を初期の候補関数とすることができる。この場合、計測位置と推定位置との間の距離がより早く収束し、補正関数がより早く求められる可能性がある。ステップS123a以降の動作は前述の通りである。以上が、図4のステップS100aにおけるロボット制御システム2aの動作である。
次に、図4のステップS200におけるロボット制御システム2aの動作について述べる。前述の通り、ステップS200では、ロボット制御装置200aが動作する。図8は、本発明の実施の形態1によるロボット制御装置200aの構成の一例を示す図である。図8では、ロボット制御装置200aの構成が、補正関数生成装置100a、手先位置計測装置3a、及びロボットアーム300aとともに示されている。本実施の形態のロボット制御装置200aは、計測制御部201aと、記憶部202と、補正関数取得部210と、リンク長補正部220aと、目標位置設定部230と、指令値生成部240aとを備える。
計測制御部201aは、手先位置計測装置3a及びロボットアーム300aを制御し、温度情報、関節の角度、及び計測位置を取得する。この動作は、前述の通り図4のステップS001aで実行される。また、計測制御部201aは、後述するロボット制御装置200aの動作においても、ロボットアーム300aから温度情報を取得する。また、記憶部202は、基準リンク長を記憶している。また、補正関数取得部210は、補正関数生成装置100aで生成された補正関数を取得する。この動作は、前述の通り図4のステップS002で実行される。
また、図9は、本発明の実施の形態1によるロボット制御装置200aの動作の流れの一例を示す図である。なお、図9は、図4のステップS200におけるロボット制御装置200aの動作の流れを示している。図4のステップS001a、ステップS002、及びステップS003におけるロボット制御装置200aの動作は前述の通りである。図8及び図9を用いて、ロボット制御装置200aの動作について述べる。まず、ステップS201において、計測制御部201aは、ロボットアーム300aから最新の温度情報を取得する。次に、ステップS220において、リンク長補正部220aは、補正関数取得部210で取得された補正関数に、計測制御部201aで取得された最新の温度情報、及び記憶部202に記憶される基準リンク長を入力して、ロボットアーム300aの4つのリンク311〜314のそれぞれのリンク長を補正し、補正されたリンク長を求める。
次に、ステップS230において、目標位置設定部230は、ロボットアーム300aの手先を移動させる先となる目標位置を設定する。なお、目標位置には、目標となる手先の向きも含まれる。目標位置設定部230の構成は、様々な構成が考えられる。例えば、目標位置設定部230は、予め記憶された目標位置を読み出す。また、別の例としては、目標位置設定部230は、予め記憶された動作指令値から関節の角度を求め、求められた関節の角度と基準リンク長とに基づいて目標位置を算出する。
次に、ステップS240において、指令値生成部240aは、補正されたリンク長に基づいて、手先が目標位置に到達するためのロボットアーム300aの関節の角度を目標角度として算出する。さらに、ステップS240において、指令値生成部240aは、ロボットアーム300aの関節の角度が目標角度となるように動作指令値を生成し、ロボットアーム300aに出力する。以上が、図4のステップS200におけるロボット制御システム2aの動作である。なお、図9に示すロボット制御装置200aの動作の流れは一例であり、一部の動作の順序などを変更することも可能である。
ここで、図4に示す動作では、ロボット制御システム2aは、動作指令値の生成を繰り返す間、同一の補正関数を使用し続ける。この場合、ロボットアーム300aに所定の作業を開始させる前に、ロボット制御システム2aは、準備作業として補正関数生成を生成することになる。これに対して、ロボットアーム300aに所定の作業を実施させている間にも、ロボット制御システム2aは補正関数を適宜更新しても良い。図10は、本発明の実施の形態1による補正関数生成装置100aを備えるロボット制御システム2aの動作の流れの別の例を示す図である。図4に示す動作の流れと比較すると、図10に示す動作の流れは、ステップS004を備える点で異なる。以下では、相違点のみを述べる。
ステップS200の動作が完了すると、ロボット制御システム2aの動作は、ステップS004に進む。ステップS004において、ロボット制御装置200aは、補正関数の更新が必要か否かを判定する。更新が必要であると判定されれば、ロボット制御システム2aの動作は、ステップS001aに戻り、温度情報、関節の角度、及び計測位置が再度取得され、取得された情報に基づいて補正関数が再度生成される。一方、更新は不要であると判定されれば、ロボット制御システム2aの動作は、ステップS003に進む。
ステップS004において、ロボット制御装置200aは、所定の条件に従って補正関数の更新の要否を判定する。所定の条件としては、所定の時刻に到達した場合、ロボットアーム300aから取得された温度情報が大きく変化した場合、補正関数を更新する指示を外部から受け付けた場合、又はロボットアーム300aが行っている作業に失敗が発生した場合などが考えられる。図10に示す動作の流れによれば、ロボットアーム300aが作業を継続中であっても、ロボット制御システム2aは、必要に応じて補正関数を更新することができる。この結果、ロボット制御システム2aは、更に高精度にリンク長を補正でき、ロボットアーム300aの手先の位置を更に高精度に制御することができる。したがって、ロボット制御システム2aは、更に高精度の作業をロボットアーム300aに実行させることができる。
本実施の形態の補正関数生成装置100a、ロボット制御システム2a、及びロボットシステム1aは、以上のように動作する。本実施の形態の補正関数生成装置100aは、ロボットアーム300aの手先の位置が計測されれば、補正関数を生成可能である。したがって、本実施の形態の補正関数生成装置100aによれば、位置計測の対象となる点を増加させることなく、ロボットアーム300aの手先の位置を高精度に制御するための補正関数を生成可能となる。また、本実施の形態のロボット制御システム2a及びロボットシステム1aによれば、位置計測の対象となる点を増加させることなく、ロボットアーム300aの手先の位置を高精度に制御することが可能となる。
実施の形態2.
本実施の形態の補正関数生成装置は、手先の位置の基準位置からの変位を評価して、補正関数を生成するものである。図11は、本発明の実施の形態2による補正関数生成装置100bを備えるロボットシステム1b及びロボット制御システム2bの構成の一例を示す図である。ロボットシステム1bは、ロボットアーム300aを備えるロボットと、ロボット制御システム2bとを備える。また、ロボット制御システム2bは、補正関数生成装置100b及びロボット制御装置200bを備える。ロボットシステム1bには、手先位置計測装置3bが接続される。図11に示されたロボットシステム1bにおいて、ロボット制御システム2bと、手先位置計測装置3bとを除いた他の構成は、図1に示された実施の形態1におけるロボットシステム1aと同様である。以下では、実施の形態1における補正関数生成装置100a、ロボットシステム1a及びロボット制御システム2aとの相違点について述べる。
まず、手先位置計測装置3bについて述べる。図1に示された手先位置計測装置3aは、ロボットアーム300aの手先の絶対位置を計測するものとした。一方、図11に示される手先位置計測装置3bは、ロボットアーム300aの手先の位置を基準位置からの変位として計測する。実施の形態1でも述べた通り、手先位置計測装置3bは、手先の絶対位置を計測できる必要はない。手先位置計測装置3bは、所定の基準時間の手先の位置を基準位置として、その基準位置からの変位を計測できればよい。基準位置からの変位は、基準位置からの相対位置と言い換えることができる。したがって、実施の形態1における補正関数生成装置100aは、手先の絶対位置に基づいて補正関数を生成するのに対して、本実施の形態における補正関数生成装置100bは、手先の相対位置に基づいて補正関数を生成する。
手先位置計測装置3bは、例えば、手先に取り付けられたマーカの位置を三方向から計測するレーザ距離センサを用いて実現することができる。マーカは、立方体のブロック形状とし、周囲温度の変化に起因する形状の変化が起こりにくい素材とする。手先位置計測装置3bは、ビジョンセンサや接触式の位置センサを用いて実現しても良い。手先位置計測装置3bは、基準位置からの相対変位を測定することができれば良い。したがって、手先位置計測装置3bにおいては、絶対位置を計測する場合と比較して、計測装置の設置作業が簡易となる。手先の絶対位置を計測するためには、ロボットと計測装置との位置関係を予め取得しておく必要がある。一方、手先の相対位置を計測する場合には、任意に選択された基準時刻における手先位置を計測して基準位置とし、各時点において計測した手先位置を基準位置と比較すれば良いため、ロボットと計測装置との位置関係を取得しておく必要はない。
次に、ロボット制御システム2bについて、述べる。図12は、本発明の実施の形態2による補正関数生成装置100bを備えるロボット制御システム2bの動作の流れの一例を示す図である。図12に示された動作の流れは、図4に示されたものと比較して、次の3つの点で異なる。第1に、図12に示された動作の流れは、ステップS005の動作を備える。第2に、図12のステップS001bの動作は、図4のステップS001aの動作と部分的に異なる。第3に、図12のステップS100bの動作は、図4のステップS100aの動作と部分的に異なる。なお、図12に示された動作の流れは、図4に示された動作の流れが変更されたものとして例示されているが、図10に示された動作の流れが変更されても良い。以下、実施の形態1と比べて動作が異なる点を中心に、本実施の形態のロボット制御システム2bの動作の流れを述べる。
まず、ステップS005において、ロボット制御装置200bは、基準時刻における温度情報及び関節の角度をロボットアーム300aから取得する。基準時刻は、予め定められた時刻であっても良いし、温度情報が予め定められた温度を示した時刻であっても良い。また、温度情報が示す温度が安定している時間から基準時刻が選択されれば、より高精度に手先位置を推測可能な補正関数を得ることが期待できる。例えば、ロボットアーム300aを恒温状態の環境条件でしばらく放置すれば、温度情報が示す温度は安定すると考えられる。また、ステップS005において、ロボット制御装置200bは、手先位置計測装置3bに、基準時刻における手先の位置を基準位置として記憶させる。なお、ロボット制御装置200bは、基準時刻において、ロボットアーム300aが予め定められた計測姿勢となるように、ロボットアーム300aを制御する。
次に、ステップS001bにおいて、ロボット制御装置200bは、計測時刻における温度情報及び関節の角度をロボットアーム300aから取得する。計測時刻は、基準時刻とは異なる時刻であり、複数の時刻であることが望ましい。また、ステップS001bにおいて、ロボット制御装置200bは、計測位置として、計測時刻における計測変位を手先位置計測装置3bから取得する。計測変位は、手先位置計測装置3bによって計測される手先位置の基準位置からの変位である。なお、ロボット制御装置200bは、計測時刻におけるロボットアーム300aの計測姿勢が、基準時刻における計測姿勢と同じとなるように、ロボットアーム300aを制御する。
次に、ステップS100bにおいて、補正関数生成装置100bは、温度情報、関節の角度、及び計測変位をロボット制御装置200bから取得する。また、ステップS100bにおいて、補正関数生成装置100bは、ロボット制御装置200bから取得した情報に基づいて、補正関数を生成する。ステップS002以降のロボット制御システム2bの動作は、実施の形態1におけるロボット制御システム2aの動作と同様である。以上が、ロボット制御システム2bの動作の流れである。以下では、ステップS100bにおけるロボット制御システム2bの動作について、更に詳しく述べる。前述の通り、ステップS100bでは、補正関数生成装置100bが動作する。
図13は、本発明の実施の形態2による補正関数生成装置100bの構成の一例を示す図である。図13では、補正関数生成装置100bの構成が、ロボット制御装置200bとともに示されている。本実施の形態の補正関数生成装置100bは、情報取得部110bと、手先位置推定部120bと、補正関数決定部130bとを備える。また、手先位置推定部120bは、候補関数生成部121aと、手先位置演算部122bとを備える。また、手先位置演算部122bは、リンク長演算部123bと、手先位置変換部124bとを備える。また、補正関数決定部130bは、手先位置比較部131bと、補正関数評価部132aとを備える。図13において、図5に示されるものと同一のものには同一の符号が付されており、これらについての詳細な説明は省略される。
また、図14は、本発明の実施の形態2による補正関数生成装置100bの動作の流れの一例を示す図である。図14は、図12のステップS100bにおける補正関数生成装置100bの動作の流れを示している。図13及び図14を用いて、補正関数生成装置100bの動作について述べる。まず、ステップS110bにおいて、情報取得部110bは、温度情報、関節の角度、及び計測位置をロボット制御装置200bから取得する。ここで、情報取得部110bは、基準時刻における情報と、計測時刻のそれぞれにおける情報とを取得する。また、ステップS110bにおいて、情報取得部110bは、基準リンク長をロボット制御装置200bから取得する。
次に、ステップS120bにおいて、手先位置推定部120bは、情報取得部110bから基準リンク長、温度情報、及び関節の角度を取得し、取得した情報に基づいて、温度情報が計測された時点のロボットアーム300aの手先位置を推定して推定位置を求める。なお、手先位置推定部120bは、基準位置からの変位として推定位置を求める。具体的には、手先位置推定部120bは、基準時刻における温度情報と関節の角度とに基づいて、基準時刻における推定位置を求める。また、手先位置推定部120bは、計測時刻における温度情報と関節の角度とに基づいて、計測時刻における推定位置を求める。さらに、手先位置推定部120bは、基準時刻における推定位置と計測時刻における推定位置との間の変位を求めて、最終的な推定位置として出力する。
次に、ステップS130bにおいて、補正関数決定部130bは、情報取得部110bから取得した計測変位と、手先位置推定部120bにおいて基準位置からの変位として求められた推定位置とを比較し、比較した結果に基づいて補正関数を決定する。なお、図6と同様に、計測変位と推測位置との比較結果によっては、処理がステップS120bに戻ることになる。以上が、図12のステップS100bにおける補正関数生成装置100bの動作の流れとなる。次に、手先位置推定部120bが推定位置を求める処理、及び補正関数決定部130bが補正関数を決定する処理について、さらに述べる。
図15は、本発明の実施の形態2による補正関数生成装置100bにおける手先位置推定部120b及び補正関数決定部130bの動作の流れの一例を示す図である。図15のステップS121aからステップS124bまでが、図14のステップS120bにおける手先位置推定部120bの動作となる。また、図15のステップS131bからステップS134aまでが、図14のステップS130bにおける補正関数決定部130bの動作となる。
まず、ステップS121aにおいて、候補関数生成部121aは、補正関数の候補となる候補関数を生成する。この動作は、図7のステップS121aにおける動作と同様である。次に、ステップS123bにおいて、リンク長演算部123bは、基準時刻における温度情報及び基準リンク長を候補関数に入力することによって、基準時刻におけるリンク長を求める。また、ステップS123bにおいて、リンク長演算部123bは、計測時刻のそれぞれにおける温度情報及び基準リンク長を候補関数に入力することによって、計測時刻のそれぞれにおけるリンク長を求める。
次に、ステップS124bにおいて、手先位置変換部124bは、基準時刻における関節の角度と、基準時刻におけるリンク長とに基づいて、基準時刻における手先位置を推定する。また、ステップS124bにおいて、手先位置変換部124bは、計測時刻のそれぞれにおける関節の角度と、計測時刻のそれぞれにおけるリンク長とに基づいて、計測時刻のそれぞれにおける手先位置を推定する。さらに、ステップS124bにおいて、手先位置変換部124bは、基準時刻における手先位置と、計測時刻のそれぞれにおける手先位置との間の変位を求めて、計測時刻のそれぞれにおける最終的な推定位置とする。以上が、ステップS123b及びステップS124bにおける手先位置演算部122bの動作である。
次に、ステップS131bにおいて、手先位置比較部131bは、手先位置推定部120bで変位として求められた推定位置と、情報取得部110bで取得された計測変位とを比較する。例えば、手先位置比較部131bは、推定位置と計測変位との間の差分を算出することによって、推定位置と計測変位とを比較する。次に、ステップS132aにおいて、補正関数評価部132aは、比較結果が所定の条件を満たすか否かを判定する。ステップS132aにおいて、補正関数評価部132aは、例えば、推定位置と計測変位との間の差分が、所定の値よりも小さいか否かを判定する。補正関数評価部132aは、推定位置と計測変位との間の差分が所定の値よりも小さい場合に、比較結果が所定の条件を満たすと判定する。ステップS133及びステップS134aにおける補正関数評価部132aの動作は、図7のステップS133及びステップS134aにおける動作と同様である。以上が、図12のステップS100bにおけるロボット制御システム2bの動作である。図12のステップS002、ステップS200、及びステップS003の動作は、図4のステップS002、ステップS200、及びステップS003の動作と同様である。
本実施の形態の補正関数生成装置100b、ロボット制御システム2b、及びロボットシステム1bは、以上のように動作する。本実施の形態の補正関数生成装置100b、ロボット制御システム2b及びロボットシステム1bによれば、簡易に設置可能である手先位置計測装置3bを用いて、ロボットアーム300aの手先の位置を高精度に制御することが可能となる。また、本実施の形態の補正関数生成装置100b、ロボット制御システム2b、及びロボットシステム1bは、実施の形態1で述べた効果も有する。
実施の形態3.
実施の形態1による補正関数生成装置100a、及び実施の形態2による補正関数生成装置100bは、ロボットアーム300aに搭載された温度センサ321〜326で計測された温度情報に基づいて補正関数を生成する構成であった。これに対して、本実施の形態の補正関数生成装置100cは、ロボットアーム300aの周囲の環境温度も使用して補正関数を生成する。
図16は、本発明の実施の形態3による補正関数生成装置100cを備えるロボットシステム1c及びロボット制御システム2cの構成の一例を示す図である。ロボットシステム1cは、ロボットアーム300aを備えるロボットと、ロボット制御システム2cとを備える。また、ロボット制御システム2cは、補正関数生成装置100c及びロボット制御装置200cを備える。ロボットシステム1cには、手先位置計測装置3a及び環境温度計測装置4が接続される。図16に示されたロボットシステム1cにおいて、ロボット制御システム2cを除いた他の構成は、図1に示された実施の形態1におけるロボットシステム1aと同様である。なお、図16に示されるロボットシステム1cは、実施の形態1におけるロボットシステム1aの構成の一部が変更されたものであるが、他の実施の形態のロボットシステムの構成の一部を変更することもできる。以下では、実施の形態1におけるロボット制御システム2aと、本実施の形態におけるロボット制御システム2cとの相違点について述べる。まず、補正関数生成装置100cについて述べる。
図17は、本発明の実施の形態3による補正関数生成装置100cの構成の一例を示す図である。図17では、補正関数生成装置100cの構成が、ロボット制御装置200cとともに示されている。本実施の形態の補正関数生成装置100cは、情報取得部110cと、手先位置推定部120cと、補正関数決定部130aとを備える。また、手先位置推定部120cは、候補関数生成部121cと、手先位置演算部122cとを備える。また、手先位置演算部122cは、リンク長演算部123cと、手先位置変換部124aとを備える。また、補正関数決定部130aは、手先位置比較部131aと、補正関数評価部132aとを備える。図17において、図5に示されるものと同一のものには同一の符号が付されており、これらについての詳細な説明は省略される。
図17に示される補正関数生成装置100cの構成は、図5に示される補正関数生成装置100aの構成と比較すると、情報取得部110c、候補関数生成部121c及びリンク長演算部123cのみが異なる。まず、情報取得部110cについて述べる。情報取得部110cは、温度情報、関節の角度、計測位置、及び基準リンク長をロボット制御装置200cから取得するとともに、環境温度計測装置4で計測された環境温度もロボット制御装置200cから取得する。取得される環境温度は、温度情報が計測された時点のロボットアーム300aの周囲環境の温度である。
次に、候補関数生成部121cについて述べる。候補関数生成部121cは、候補関数を生成する。本実施の形態の補正関数生成装置100cにおいて生成される候補関数は、温度情報及び環境温度を変数とする関数である。下記の式(5)は、候補関数生成部121cで生成される候補関数の一例である。式(5)において、T0nは、環境温度計測装置4で計測された時刻nにおける環境温度である。また、式(5)において、ki,jは補正のための係数である。ここで、iは1〜4のいずれかであり、jはa〜hのいずれかを表す。さらに、式(5)において、K4は、係数ki,jを要素とする4行8列の行列である。式(5)における他の記号は、式(2)におけるものと同様である。
次に、リンク長演算部123cについて述べる。リンク長演算部123cは、候補関数生成部121cで生成される候補関数に、温度情報、基準リンク長、及び環境温度を入力することによって、リンク長を補正して時刻nにおけるリンク長を求める。補正関数生成装置100cにおける他のブロックの動作は、実施の形態1におけるものと同様である。
次に、本実施の形態のロボット制御装置200cと、実施の形態1におけるロボット制御装置200aとの相違点について述べる。図18は、本発明の実施の形態3によるロボット制御装置200cの構成の一例を示す図である。図18では、ロボット制御装置200cの構成が、補正関数生成装置100c、手先位置計測装置3a、環境温度計測装置4、及びロボットアーム300aとともに示されている。本実施の形態のロボット制御装置200cは、計測制御部201cと、記憶部202と、補正関数取得部210と、リンク長補正部220cと、目標位置設定部230と、指令値生成部240aとを備える。
図18に示されるロボット制御装置200cの構成は、図8に示されるロボット制御装置200aの構成と比較して、計測制御部201c及びリンク長補正部220cのみが異なる。以下では、計測制御部201c及びリンク長補正部220cの動作についてのみ相違点を述べ、他のブロックの動作については説明を省略する。計測制御部201cは、手先位置計測装置3a、ロボットアーム300aに加えて環境温度計測装置4も制御し、温度情報、関節の角度、計測位置、及び環境温度を取得する。また、リンク長補正部220cは、補正関数生成装置で生成された温度情報及び環境温度を変数とする補正関数を用いて、リンク長を補正して、最新の計測値に対応したリンク長を求める。ロボット制御装置200cの他のブロックの動作は、実施の形態1で述べた動作と同様である。
本実施の形態の補正関数生成装置100c、ロボット制御システム2c、及びロボットシステム1cは、以上のように動作する。本実施の形態の補正関数生成装置100c、ロボット制御システム2c及びロボットシステム1cによれば、ロボットアーム300aの周囲環境の影響も反映され、ロボットアーム300aの手先の位置を更に高精度に制御することが可能となる。ロボットアーム300aの動作が遅い場合など、ロボットアーム300aの負荷が小さい場合には、ロボットアーム300aの動作に起因する温度変化よりも、環境温度に起因する温度変化が支配的となる。本実施の形態の補正関数生成装置100c、ロボット制御システム2c及びロボットシステム1cは、このような場合に特に有効となる。
さらに、ロボットアーム300aにおいて、モータ等の発熱源が近くに存在しない箇所の温度は、周囲環境の温度の影響を大きく受けると考えられる。周囲環境の温度が計測されていれば、このような箇所には必ずしも温度センサが取り付けられる必要はない。したがって、本実施の形態の補正関数生成装置100c、ロボット制御システム2c及びロボットシステム1cによれば、ロボットアーム300aに取り付けられる温度センサの数を減少させることが可能となる。また、本実施の形態の補正関数生成装置100c、ロボット制御システム2c、及びロボットシステム1cは、実施の形態1又は実施の形態2で述べた効果も有する。
実施の形態4.
実施の形態1による補正関数生成装置100a、実施の形態2による補正関数生成装置100b、及び実施の形態3による補正関数生成装置100cは、リンク311〜314のそれぞれの長さを補正する補正関数を生成するものであった。しかし、リンク311〜314のそれぞれを、更に複数の部位に分割することも考えられる。本実施の形態の補正関数生成装置は、リンク311〜314のそれぞれが更に分割されて得られた部位ごとの長さを補正する補正関数を生成する。
図19は、本発明の実施の形態4によるロボットシステム1dの構成の一例を示す図である。本実施の形態のロボットシステム1dは、ロボットアーム300dを備えるロボットと、ロボット制御システム2aとを備える。また、本実施の形態のロボットシステム1dは、手先位置計測装置3aと接続される。ロボット制御システム2a及び手先位置計測装置3aの構成は、実施の形態1におけるものと同様であり、ロボット制御システム2aで生成される候補関数及び補正関数のみが異なる。以下では、相違点についてのみ説明する。なお、図19において、ロボットシステム1dは、実施の形態1におけるロボット制御システム2aを備える構成として例示されているが、実施の形態2におけるロボット制御システム2b、又は実施の形態3におけるロボット制御システム2cを備える構成とすることもできる。
図20は、本発明の実施の形態4によるロボットシステム1dにおけるロボットアーム300dの構成の一例を示す図である。図20において、図2に示されたと同一のものには同一の符号を付している。図20に示されたロボットアーム300dにおいて、第1のリンク311、第2のリンク312、及び第3のリンク313のそれぞれは、複数の部位に分割される。具体的には、第1のリンク311は、長さがL11である部位3111と、長さがL12である部位3112とに分割される。ここで、第1のリンク311は、部位3111と部位3112とに分割して考えられるが、必ずしも部位3111と部位3112とに物理的に分割されている訳ではない。この点は、他のリンクについても同様である。また、第2のリンク312は、長さがL21である部位3121と、長さがL22である部位3122とに分割される。また、第3のリンク313は、長さがL31である部位3131と、長さがL32である部位3132と、長さがL33である部位3133とに分割される。
ロボットアーム300dにおいて、部位3111、部位3112、部位3121、部位3122、部位3131、部位3132、部位3133、及び第4のリンク314が、ロボットアーム300dを分割して得られる部位であり、手先の位置を推定するためのロボットアーム300dの構成単位である。ロボットアーム300dにおいて、各部位は温度センサの設置位置、または関節の位置を区切りとして分割されている。図20で示された各部位の数及び位置は一例であるが、各部位は関節を跨がないように設定される。
補正関数生成装置100aは、上記のように設定された各部位の長さを補正する補正関数を生成する。下記の式(6)は、補正関数生成装置100aで生成される補正関数の一例である。式(6)において、Lb11n、Lb12n、Lb21n、Lb22n、Lb31n、Lb32n、Lb33n、Lb4nは、時刻nにおける補正後の各部位の長さである。また、式(6)において、L11、L12、L21、L22、L31、L32、L33、L4は、各部位の基準となる長さであり、各部位の補正前の長さである。さらに、式(6)において、K5は、係数ki,jを要素とする8行7列の行列である。式(6)における他の記号は、式(2)におけるものと同様である。
本実施の形態のロボットシステム1dの他の動作は、実施の形態1のロボットシステム1aと同様である。本実施の形態の補正関数生成装置100a、ロボット制御システム2a、及びロボットシステム1dによれば、ロボットアーム300dのリンク内を分割した部位を設定し、部位毎の長さを補正する補正関数を生成するので、ロボットアーム300dの手先の位置を更に高精度に制御することが可能となる。本実施の形態の補正関数生成装置100a、ロボット制御システム2a、及びロボットシステム1dは、ロボットアーム300dのリンク内に、温度変化に対する伸縮の度合いが局所的に異なる箇所が存在する場合に特に有効となる。例えば、他の箇所と比べて異なる素材が使用されている箇所や、構造が異なる箇所が、リンク内に存在すると、その箇所の伸縮の度合いは局所的に異なる可能性がある。例えば、ロボットアーム300dは、関節を駆動するモータの取り付け方法や内部の構造によっては、リンク内で局所的に熱膨張の傾向が異なる可能性がある。
実施の形態5.
実施の形態1による補正関数生成装置100a、実施の形態2による補正関数生成装置100b、及び実施の形態3による補正関数生成装置100cは、まず候補関数を生成し、所定の条件を満たした候補関数を補正関数とするものであった。これに対して、本実施の形態の補正関数生成装置は、まずリンク長の候補を生成し、所定の条件を満たしたリンク長の候補を用いて補正関数を生成するものである。
図21は、本発明の実施の形態5によるロボットシステム1eの構成の一例を示す図である。本実施の形態のロボットシステム1eは、ロボットアーム300aを備えるロボットと、ロボット制御システム2eとを備える。また、ロボット制御システム2eは、補正関数生成装置100eと、ロボット制御装置200aとを備える。また、本実施の形態のロボットシステム1eは、手先位置計測装置3aと接続される。本実施の形態のロボットシステム1eの構成は、補正関数生成装置100eを除いて実施の形態1におけるものと同様である。以下では、相違点である補正関数生成装置100eについてのみ説明する。なお、図21において、ロボットシステム1dは、実施の形態1におけるロボットシステム1aから補正関数生成装置を置き換えた構成として例示されているが、実施の形態2におけるロボットシステム1b、実施の形態3におけるロボットシステム1c、又は実施の形態4におけるロボットシステム1dから補正関数生成装置を置き換えた構成とすることもできる。
図22は、本発明の実施の形態5による補正関数生成装置100eの構成の一例を示す図である。図22では、補正関数生成装置100eの構成が、ロボット制御装置200aとともに示されている。本実施の形態の補正関数生成装置100eは、情報取得部110aと、手先位置推定部120eと、補正関数決定部130eとを備える。また、手先位置推定部120eは、候補リンク長生成部125と、手先位置演算部122eとを備える。また、補正関数決定部130eは、手先位置比較部131aと、リンク長評価部135と、補正関数生成部136とを備える。なお、図22において、図5におけるものと同様のブロックには、同一の符号が付されており、詳細な説明は省略される。
また、図23は、本発明の実施の形態5による補正関数生成装置100eの動作の流れの一例を示す図である。補正関数生成装置100eの動作を除き、ロボット制御システム2eの動作の流れは、図4に示されるロボット制御システム2aの動作の流れと同様である。図23は、図4のステップS100aにおける補正関数生成装置100eの動作の流れを示している。図22及び図23を用いて、補正関数生成装置100eの動作について述べる。まず、ステップS110aにおいて、情報取得部110aは、温度情報、関節の角度、計測位置、及び基準リンク長を取得する。
次に、ステップS125において、候補リンク長生成部125は、温度情報が測定された時点におけるリンク長の候補となる候補リンク長を生成する。より具体的には、時刻nに温度情報が計測されたとすると、候補リンク長生成部125は、時刻nに対応する第1のリンク311の候補リンク長La1n、第2のリンク312の候補リンク長La2n、第3のリンク313の候補リンク長La3n、及び第4のリンク314の候補リンク長La4nを生成する。後述する補正関数決定部130eにおける比較結果が所定の条件を満たすまで、候補リンク長生成部125は候補リンク長の生成を繰り返し行う。
ここで、温度情報が複数の時刻において計測されている場合、候補リンク長も、温度情報が計測された複数の時刻のそれぞれに対して生成される。例えば、Nを整数として、温度情報がN回測定されている場合、N組の候補リンク長が生成される。候補リンク長生成部125は、例えば、候補リンク長の初期値を基準リンク長とし、その後、動作が繰り返されるたびに値を変化させて候補リンク長の生成を行う。候補リンク長生成部125は、ロボットアーム300aを分割して得られる複数の部位のそれぞれの長さを推定する長さ推定部として機能する。
次に、ステップS122eにおいて、手先位置演算部122eは、候補リンク長及び関節の角度に基づいて、推定位置を求める。より詳細には、手先位置演算部122eは、時刻nに対応する候補リンク長、及び時刻nにおいて計測された関節の角度に基づいて、時刻nにおける推定位置Penを求める。前述の通り、推定位置は、推定された手先位置である。推定位置は、候補リンク長と、関節の角度とに基づいた幾何学演算によって求めることができる。複数の時刻において温度情報が計測されている場合、手先位置の推定は、複数の時刻のそれぞれに対して行われる。例えば、Nを整数として、温度情報がN回測定されている場合、N個の推定位置が求められる。
次に、ステップS131aにおいて、手先位置比較部131aは、手先位置推定部120eで求められた推定位置と、情報取得部110aで取得された計測位置とを比較する。例えば、手先位置比較部131aは、時刻nにおける計測位置と、時刻nにおける推定位置との間の距離Dnを算出することによって、計測位置と推定位置とを比較する。複数の時刻において温度情報が計測されている場合、手先位置比較部131aは、複数の時刻のそれぞれにおいて、計測位置と推定位置との間の距離を算出する。この場合、比較結果として、複数の距離が求められる。例えば、Nを整数として、温度情報がN回測定されている場合、N個の計測位置が取得され、N個の推定位置が求められるので、手先位置比較部131aは、N個の距離を算出する。
次に、ステップS135において、リンク長評価部135は、比較結果が所定の条件を満たすか否かを判定する。ステップS135において、リンク長評価部135は、例えば、計測位置と推定位置との間の距離が、所定の距離よりも短いか否かを判定する。リンク長評価部135は、計測位置と推定位置との間の距離が所定の距離よりも短い場合に、比較結果が所定の条件を満たすと判定する。ステップS131aにおいて手先位置比較部131aが複数の距離を求めている場合には、リンク長評価部135は、複数の距離の全てが所定の条件を満たす場合に、比較結果が所定の条件を満たすと判定する。一方、複数の距離のうちの1つでも所定の条件を満たさない場合、リンク長評価部135は、比較結果が所定の条件を満たさないと判定する。
ステップS135において、比較結果が所定の条件を満たすと判定された場合には、補正関数決定部130eの動作は、ステップS136へと進む。ステップS136において、リンク長評価部135は、最新の候補リンク長La1n、La2n、La3n、及びLa4nを補正関数生成部136に出力する。ここで、最新の候補リンク長は、所定の条件を満たした推定位置を求めるために使用された候補リンク長となる。また、ステップS136において、補正関数生成部136は、リンク長評価部135から出力された候補リンク長と、情報取得部110aで取得された温度情報及び基準リンク長とに基づいて補正関数を生成し、ロボット制御装置200aに出力する。したがって、補正関数生成部136は、所定の条件を満たした推定位置に対応する補正関数を生成することになる。
一方、ステップS135において、比較結果が所定の条件を満たさないと判定された場合には、補正関数決定部130eの動作は、ステップS137へと進む。ステップS137において、リンク長評価部135は、候補リンク長生成部125に候補リンク長の再生成を要請する。その後、補正関数生成装置100eの動作はS125に戻る。複数の時刻において温度情報が計測されている場合、候補リンク長生成部125は、常に全ての時刻に対応する候補リンク長を生成する必要はなく、ステップS135において所定の条件を満たさなかった候補リンク長のみを再生成すれば良い。例えば、Nを整数として、温度情報がN回測定されている場合、N組の候補リンク長が生成される。N組の候補リンク長のうち時刻n1における候補リンク長のみが、ステップS135において所定の条件を満たさなかったのであれば、候補リンク長生成部125は、時刻n1における候補リンク長のみを再生成すれば良い。以上が、補正関数生成装置100eの動作である。
次に、図23のステップS136における補正関数生成部136の動作について、更に詳細に述べる。図24は、本発明の実施の形態5による補正関数生成装置100eにおける補正関数生成部136の構成の一例を示す図である。図24では、補正関数生成部136の構成が、情報取得部110a、リンク長評価部135、及びロボット制御装置200aとともに示されている。補正関数生成部136は、候補関数生成部121aと、リンク長演算部123aと、リンク長比較部138と、補正関数評価部132bとを備える。なお、候補関数生成部121a及びリンク長演算部123aは、実施の形態1におけるものと同様のものである。また、図25は、本発明の実施の形態5による補正関数生成装置100eにおける補正関数生成部136の動作の流れの一例を示す図である。図24及び図25を用いて、補正関数生成部136の動作について述べる。
まず、ステップS121aにおいて、候補関数生成部121aは、補正関数の候補となる候補関数を生成する。候補関数生成部121aは、例えば、上述の式(2)、式(3)、又は式(4)で表される候補関数を生成する。後述するリンク長比較部138における比較結果が所定の条件を満たすまで、候補関数生成部121aは候補関数の生成を繰り返し行う。次に、ステップS123aにおいて、リンク長演算部123aは、情報取得部110aによって取得された温度情報及び基準リンク長を候補関数に入力することによって、リンク長を補正して時刻nにおけるリンク長Lb1n、Lb2n、Lb3n、及びLb4nを求める。時刻nは、温度情報が計測された時刻を表す。複数の時刻において温度情報が計測されている場合、リンク長の補正は、複数の時刻のそれぞれに対して行われる。例えば、Nを整数として、温度情報がN回測定されている場合、N組のリンク長が求められる。
次に、ステップS138において、リンク長比較部138は、2種類のリンク長を比較する。ここで、2種類のリンク長の一方は、リンク長演算部123aで候補関数を用いて求められたリンク長Lb1n、Lb2n、Lb3n、及びLb4nである。また、2種類のリンク長の他方は、リンク長評価部135から出力されたリンク長La1n、La2n、La3n、及びLa4nである。例えば、リンク長比較部138は、2種類のリンク長の間の差分を算出する。また、リンク長比較部138は、ロボットアーム300aが備えるリンク毎に、2種類のリンク長を比較する。
より具体的には、リンク長比較部138は、Lb1nとLa1nとの差分dL1nを、時刻nにおける第1のリンク311に対する差分として算出する。また、リンク長比較部138は、Lb2nとLa2nとの差分dL2nを、時刻nにおける第2のリンク312に対する差分として算出する。また、リンク長比較部138は、Lb3nとLa3nとの差分dL3nを、時刻nにおける第3のリンク313に対する差分として算出する。また、リンク長比較部138は、Lb4nとLa4nとの差分dL4nを、時刻nにおける第4のリンク314に対する差分として算出する。
複数の時刻において温度情報が計測されている場合、リンク長比較部138は、複数の時刻のそれぞれにおいて、対応する2組のリンク長を比較する。例えば、Nを整数として、温度情報がN回測定されている場合、リンク長比較部138は、差分dL1n、dL2n、dL3n、及びdL4nからなる組をN組算出する。次に、ステップS132bにおいて、補正関数評価部132bは、リンク長比較部138における比較結果が所定の条件を満たすか否かを判定する。ステップS132bにおいて、補正関数評価部132bは、例えば、リンク長比較部138で求められた差分dL1n、dL2n、dL3n、及びdL4nの全てが、所定の値よりも小さいか否かを判定する。補正関数評価部132bは、差分dL1n、dL2n、dL3n、及びdL4nの全てが所定の値よりも小さい場合に、比較結果が所定の条件を満たすと判定する。一方、補正関数評価部132bは、差分dL1n、dL2n、dL3n、及びdL4nの少なくとも1つが所定の値よりも大きい場合に、比較結果が所定の条件を満たさないと判定する。
ステップS138において、リンク長比較部138がN組の差分を求めている場合には、補正関数評価部132bは、各リンクに対するN個の差分の最大値または平均値を求め、求められた最大値または平均値が所定の値よりも小さい否かを判定すれば良い。この場合、補正関数評価部132bは、求められた平均値または最大値の全てが所定の値よりも小さい場合に、比較結果が所定の条件を満たすと判定する。ステップS132bにおいて、比較結果が所定の条件を満たすと判定された場合には、補正関数評価部132bの動作は、ステップS133へと進む。ステップS133では、補正関数評価部132bは、最新の候補関数を補正関数として決定し、ロボット制御装置200aに出力する。
一方、ステップS132bにおいて、比較結果が所定の条件を満たさないと判定された場合には、補正関数評価部132bの動作は、ステップS134bへと進む。ステップS134bでは、補正関数評価部132bは、候補関数生成部121aに候補関数の再生成を要請する。その後、補正関数生成部136の動作はS121aに戻る。候補関数の再生成を要請されると、候補関数生成部121aは、ステップS121aにおいて、候補関数の形式または係数を変更し、新たな候補関数を生成する。この際、候補関数生成部121aは、所定の値よりも差分が大きいと判定されたリンクに対応する係数のみを変更しても良い。
本実施の形態の補正関数生成装置100eは、以上のように動作する。本実施の形態の補正関数生成装置100eによれば、位置計測の対象となる点を増加させることなく、ロボットアーム300aの手先の位置を高精度に制御するための補正関数を生成可能となる。また、本実施の形態のロボット制御システム2e及びロボットシステム1eによれば、位置計測の対象となる点を増加させることなく、ロボットアーム300aの手先の位置を高精度に制御することが可能となる。
実施の形態6.
温度変化に対するロボットアームの伸縮は、動作条件によって異なる特徴を持つことが考えられる。例えば、動作条件によって、ロボットアームの伸縮する部位が変化したり、伸縮の程度が変化したりすることが考えられる。動作条件としては、ロボットアームの動作経路、動作速度、動作加速度、周囲環境の温度、または設置される台の構造など、様々な条件が考えられる。ロボットアームの動作経路、動作速度、又は動作加速度をロボットアームの動作内容と呼ぶ。本実施の形態のロボット制御システム及びロボットシステムは、ロボット制御装置が、動作条件毎に生成された複数の補正関数を記憶し、ロボットアームに作業を行わせる際の動作条件に応じて補正関数を選択することで、より高精度な作業を実現するものである。
図26は、本発明の実施の形態6によるロボットシステム1fの構成の一例を示す図である。本実施の形態のロボットシステム1fは、ロボットアーム300aを備えるロボットと、ロボット制御システム2fとを備える。また、ロボット制御システム2fは、補正関数生成装置100aと、ロボット制御装置200fとを備える。また、本実施の形態のロボットシステム1fは、手先位置計測装置3aと接続される。本実施の形態のロボットシステム1fの構成は、ロボット制御装置200fを除いて実施の形態1におけるロボットシステム1aと同様である。以下では、相違点であるロボット制御装置200fについてのみ説明する。なお、図26において、ロボットシステム1fは、実施の形態1におけるロボットシステム1aからロボット制御装置を置き換えた構成として例示されているが、実施の形態2におけるロボットシステム1b、実施の形態3におけるロボットシステム1c、実施の形態4におけるロボットシステム1d、又は実施の形態5におけるロボットシステム1eからロボット制御装置を置き換えた構成とすることもできる。
図27は、本発明の実施の形態6によるロボット制御装置200fの構成の一例を示す図である。図27では、ロボット制御装置200fの構成が、補正関数生成装置100a、手先位置計測装置3a、及びロボットアーム300aとともに示されている。本実施の形態のロボット制御装置200fは、計測制御部201fと、記憶部202と、補正関数取得部210と、補正関数記憶部250と、補正関数選択部260と、リンク長補正部220aと、目標位置設定部230と、指令値生成部240aとを備える。図27に示されたロボット制御装置200fは、計測制御部201fと、補正関数記憶部250と、補正関数選択部260とを除いて、図8に示されたロボット制御装置200aと同様の構成となる。
図28は、本発明の実施の形態6によるロボット制御システム2fの動作の流れの一例を示す図である。図28において、図4に示されたロボット制御システム2aの動作と同様の動作には、同一の符号を付している。以下、図28を用いて、図8に示されたロボット制御装置200aからの相違点を中心に、図27に示されたロボット制御装置200fの動作を述べる。まず、ステップS011において、計測制御部201fは、ロボットアーム300aの複数の動作条件から1つを選択し、選択した動作条件を設定する。例えば、動作条件がロボットアーム300aの動作内容であれば、計測制御部201fは、その動作内容となるようなロボットアーム300aの動作指令値を準備する。また、例えば、動作条件がロボットアーム300aの周囲環境の温度であれば、計測制御部201fは、周囲環境がその温度となるまでロボットアーム300aの動作を待機させる。
次に、ステップS001aにおいて、計測制御部201fは、ロボットアーム300aの計測姿勢を制御するとともに、複数の時刻における温度情報、関節の角度、及び計測位置を取得する。ステップS001aにおけるロボット制御装置200fの動作は、実施の形態1におけるロボット制御装置200aの動作と同様である。ただし、温度情報が取得される複数の時刻の間には、計測制御部201fは、設定された動作条件に合致した動作をロボットアーム300aにさせる。また、計測制御部201fは、周囲環境が動作条件に合致していることを確認する。
次に、ステップS100aにおいて、補正関数生成装置100aは、温度情報、関節の角度、及び計測位置をロボット制御装置200fから取得する。また、ステップS100aにおいて、補正関数生成装置100aは、ロボット制御装置200fから取得した情報に基づいて、補正関数を生成する。生成された補正関数は、ロボット制御装置200fに出力される。ステップS100aにおける補正関数生成装置100aの動作は、実施の形態1における補正関数生成装置100aの動作と同様である。
次に、ステップS012において、補正関数取得部210は、補正関数生成装置100aから出力された補正関数を取得する。また、ステップS012において、補正関数記憶部250は、取得された補正関数を動作条件と関連付けて記憶する。補正関数記憶部250は、互いに異なる動作条件において生成された複数の補正関数を記憶する。次に、ステップS013において、計測制御部201fは、補正関数の生成が必要な全ての動作条件に対して、補正関数の生成が完了したかを判定する。全ての動作条件に対して補正関数を生成済みであれば、ロボット制御システム2fの動作はステップS014へと進む。一方、補正関数がまだ生成されていない動作条件が存在する場合には、ロボット制御システム2fの動作はステップS011へと戻る。ステップS011からステップS013までが、ロボット制御システム2fが補正関数を生成する動作である。
ステップS014以降の動作は、ロボット制御システム2fが、補正関数に基づいて動作指令値を生成する動作である。ステップS014において、補正関数選択部260は、補正関数記憶部に記憶された複数の補正関数から、ロボットアーム300aに作業をさせる際の動作条件に合った補正関数を選択する。次に、ステップS200において、ロボット制御装置200fは、選択された補正関数に基づいて、ロボットアーム300aの動作を制御するための動作指令値を生成する。生成された動作指令値は、ロボットアーム300aに出力される。ステップS200におけるロボット制御装置200fの動作は、実施の形態1におけるロボット制御装置200aの動作と同様である。
次に、ステップS003において、ロボット制御装置200fは、ロボットアーム300aの動作を終了させるか否かを判定する。ステップS003において、動作を終了させると判定されると、ロボット制御システム2fは動作を終了する。一方、ステップS003において、まだ動作を終了させないと判定されると、ロボット制御システム2fの動作はステップS200へと戻り、動作指令値の生成が繰り返される。以上が、ロボット制御システム2fの動作の流れである。
本実施の形態のロボット制御システム2f、及びロボットシステム1fは、以上のように動作する。本実施の形態のロボット制御システム2f、及びロボットシステム1fによれば、複数の動作条件が予め決定されている場合に、ロボットアーム300aの手先の位置を更に高精度に制御することが可能となる。例えば、ロボットアーム300aが予め定められた動作パターンでの連続運転を行う場合や、冷凍倉庫、常温環境などの複数種類の温度条件での連続運転を行う場合などに、本実施の形態のロボット制御システム2f、及びロボットシステム1fは効果的である。
実施の形態7.
実施の形態1のロボット制御システム2aにおいて、ロボット制御装置200aは、補正関数を用いて補正されたリンク長に基づいて、ロボットアーム300aの関節の角度の目標値を求める構成であった。さらに、ロボット制御装置200aは、求められた関節の角度の目標値からロボットアーム300aの動作指令値を求める構成であった。しかし、ロボットアーム300aが縮んだ場合には、目標とする位置に手先を届かせるロボットアーム300aの姿勢が存在せず、ロボット制御装置200aが関節の角度の目標値を算出できない場合が起こり得る。すなわち、ロボットアーム300aが縮んだ場合には、目標とする位置がロボットアーム300aの動作範囲外となる可能性がある。
また、ロボット制御装置200aにおいて、リンク長補正部220aがリンク長を補正した結果、目標位置設定部230が生成する目標位置が特異点となってしまう可能性がある。なお、特異点とは、手先の位置および向きから関節の角度を一意に決定することのできない、手先の位置および向きをいう。本実施の形態のロボットシステム及びロボット制御システムは、算出された関節の角度を評価する機能を備えたロボット制御装置を備える。
図29は、本発明の実施の形態7によるロボットシステム1gの構成の一例を示す図である。本実施の形態のロボットシステム1gは、ロボットアーム300aを備えるロボットと、ロボット制御システム2gとを備える。また、ロボット制御システム2gは、補正関数生成装置100aと、ロボット制御装置200gとを備える。また、本実施の形態のロボットシステム1gは、手先位置計測装置3aと接続される。本実施の形態のロボットシステム1gの構成は、ロボット制御装置200gを除いて実施の形態1におけるロボットシステム1aと同様である。以下では、相違点であるロボット制御装置200gについてのみ説明する。
なお、図29において、ロボットシステム1gは、実施の形態1におけるロボットシステム1aからロボット制御装置を置き換えた構成として例示されているが、実施の形態2におけるロボットシステム1b、実施の形態3におけるロボットシステム1c、実施の形態4におけるロボットシステム1d、又は実施の形態5におけるロボットシステム1eからロボット制御装置を置き換えた構成とすることもできる。また、ロボットシステム1gは、実施の形態6におけるロボットシステム1fと同様に、動作指令値を生成する際に、記憶された複数の補正関数から1つを選択して使用する構成とすることもできる。
図30は、本発明の実施の形態7によるロボット制御装置200gの構成の一例を示す図である。図30では、ロボット制御装置200gの構成が、補正関数生成装置100a、手先位置計測装置3a、及びロボットアーム300aとともに示されている。本実施の形態のロボット制御装置200gは、計測制御部201aと、記憶部202と、補正関数取得部210と、リンク長補正部220aと、目標位置設定部230と、指令値生成部240gとを備える。図30に示されたロボット制御装置200gは、指令値生成部240gを除いて、図8に示されたロボット制御装置200aと同様の構成となる。
図31は、本発明の実施の形態7によるロボット制御装置200gにおける指令値生成部240gの構成の一例を示す図である。図31では、指令値生成部240gの構成が、記憶部202、リンク長補正部220a、目標位置設定部230、及びロボットアーム300aとともに示されている。指令値生成部240gは、第1の角度算出部241と、第2の角度算出部242と、関節角度評価部243と、第3の角度算出部244と、指令値出力部245とを備える。第1の角度算出部241は、記憶部202に記憶される基準リンク長と、目標位置設定部230から出力される目標位置とに基づいて、手先が目標位置に到達するためのロボットアーム300aの関節の角度を第1の目標角度θ1qとして算出する。なお、目標位置には、目標となる手先の向きも含まれる。第1の目標角度θ1qは、ロボットアーム300aの各リンクの長さが基準リンク長である場合における関節の目標角度である。なお、qは、ロボットアーム300aの関節を識別するための識別子である。
第2の角度算出部242は、リンク長補正部220aから出力される補正後のリンク長と、目標位置設定部230から出力される目標位置とに基づいて、手先が目標位置に到達するためのロボットアーム300aの関節の角度を第2の目標角度θ2qとして算出する。第2の目標角度θ2qは、ロボットアーム300aの各リンクの長さが補正後のリンク長である場合における関節の目標角度である。関節角度評価部243は、第2の目標角度θ2qが望ましくない角度に近付いていないかを評価し、補正係数a1を生成する。
ここで、望ましくない角度とは、ロボットアーム300aの姿勢が特異点に近付くような関節の角度である。また、多くの関節が伸びきるような関節の角度も、望ましくない角度となる。関節の角度が望ましくない角度となるようなロボットアーム300aの姿勢は、許容されない姿勢となる。望ましくない関節の角度は、許容されない関節の角度と言い換えることもできる。望ましくない関節の角度は、関節の角度に関する制約条件として予め設定される。したがって、関節角度評価部243は、第2の目標角度θ2qと予め設定された制約条件とを比較することで、第2の目標角度θ2qが望ましくない角度に近いか否かを評価する。
第2の目標角度θ2qで表されるロボットアーム300aの姿勢が、許容されない姿勢に近い場合、関節角度評価部243は補正係数a1を0とする。また、第2の目標角度θ2qで表されるロボットアーム300aの姿勢が、許容されない姿勢から離れるに従って、関節角度評価部243は補正係数a1を徐々に大きくする。そして、第2の目標角度θ2qで表されるロボットアーム300aの姿勢が、許容されない姿勢から十分離れている場合、関節角度評価部243は補正係数a1を1とする。第3の角度算出部244は、第1の目標角度θ1q、第2の目標角度θ2q、補正係数a1を用いた下記の式(7)の演算によって、第3の目標角度θ3qを算出する。
指令値出力部245は、ロボットアーム300aの関節の角度が第3の目標角度θ3qとなるように動作指令値を生成し、ロボットアーム300aに出力する。指令値生成部240gは、以上のように動作する。ロボット制御装置200gにおいて、指令値生成部240g以外の動作は実施の形態1におけるロボット制御装置200aの動作と同様である。本実施の形態のロボット制御システム2g及びロボットシステム1gによれば、ロボットアーム300aが許容されない姿勢となることを防止することが可能となる。
例えば、ロボットアーム300aの姿勢が特異点に陥ると、動作を継続するためにはロボットアーム300aは姿勢を大幅に変更する必要がある。この結果、ロボットアーム300aは、滑らかな動作を実現することが困難となる。本実施の形態のロボット制御システム2g及びロボットシステム1gによれば、ロボットアーム300aに滑らかな動作を継続させながら、ロボットアーム300aの手先の位置を更に高精度に制御することも可能となる。また、例えば、ロボットアーム300aが縮むことによって、目標とする位置がロボットアーム300aの手先が到達できない位置となると、ロボットアームの動作が停止することが考えられる。本実施の形態のロボット制御システム2g及びロボットシステム1gによれば、ロボットアーム300aの動作を停止させず、安定して動作を継続させながら、ロボットアーム300aの手先の位置を更に高精度に制御することも可能となる。