ロボット制御システム、ロボットシステム
【課題】制御ハードウェアーへの性能要求を低減できると共に応答性の改善も図れるロボット制御システム、ロボットシステム等の提供。
【解決手段】ロボット制御システムは、ロボット100のフィードバック制御の目標値を出力する目標値出力部60と、力覚センサー10からのセンサー情報に基づいて力制御を行い、目標値の補正値を出力する力制御部20と、補正値により補正された目標値に基づいて、ロボットのフィードバック制御を行うロボット制御部80を含む。力制御部20は、ロボットの姿勢に応じて変化する制御パラメーターを事前計算する事前計算部22と、センサー情報と制御パラメーターとに基づき補正値を求める演算処理を実行する実行部26を含む。
【解決手段】ロボット制御システムは、ロボット100のフィードバック制御の目標値を出力する目標値出力部60と、力覚センサー10からのセンサー情報に基づいて力制御を行い、目標値の補正値を出力する力制御部20と、補正値により補正された目標値に基づいて、ロボットのフィードバック制御を行うロボット制御部80を含む。力制御部20は、ロボットの姿勢に応じて変化する制御パラメーターを事前計算する事前計算部22と、センサー情報と制御パラメーターとに基づき補正値を求める演算処理を実行する実行部26を含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御システム、ロボットシステム等に関する。
【背景技術】
【0002】
マニピュレーター等のロボットを用いて行う作業において、種々の拘束条件、例えば物体との接触を伴う作業がある。このような場合においては、位置の制御に加えて、力の制御が要求される場合が多い。例えば、物体の表面をなぞる場合、1つの物体を他の物体に嵌め合わせる場合、柔軟物を破壊しないように把持する場合などにおいては、単なる位置の制御に加えて、物体からの反力に対応した動きが必要となる。
【0003】
ロボットにおいて力制御を行う代表的な手法としては、インピーダンス制御と呼ばれる手法がある。インピーダンス制御とは、ロボットを、その実際の質量や粘性特性や弾性特性に関わらず、あたかも作業に適したそれらの値を持つかのように動作させる制御手法である。これは、ロボットに取り付けられた力覚センサーなどから得られる力情報に基づいて運動方程式を解き、ロボットをその解に従って動作させる制御手法である。この運動方程式を適切に設定することにより、マニピュレーター等のロボットを、あたかも所定の質量、粘性、弾性を持っているかのごとく動作させることが可能になる。このようなインピーダンス制御や力制御に関する従来技術としては、特許文献1、2、3に開示される技術が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6−320451号公報
【特許文献2】特開平2−205489号公報
【特許文献3】特開平4−369004号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1には、制御対象が柔軟である場合のような、非常に複雑な系においても、精度良くインピーダンス制御を行う手法が開示されている。
【0006】
特許文献2には、力覚センサーを用いずに力を推定し、より単純な機械的な構造により、インピーダンス制御を行う手法が開示されている。
【0007】
これらの特許文献1、2の手法は、より複雑な系での制御精度の改善、或いは、より単純な系でのインピーダンス制御を実現するものであるが、その代償として、リアルタイム性が要求される多くの演算が必要になるという問題がある。
【0008】
例えば、特許文献1の手法では、力制御の1ループごとに、順ダイナミクスモデルと逆ダイナミクスモデルの計算を必要とする。また特許文献2の手法では、力制御の1ループごとに力を推定するために、その明細書に記載された式の演算を行う必要がある。
【0009】
一方、特許文献3には、演算量を削減するための1つの手法が開示されている。これは、上記の特許文献1、2に記載される逆ヤコビアン行列を求める計算を行わずに、転置ヤコビアン行列を用いることにより、計算量を削減するものである。
【0010】
しかしながら、この特許文献3の手法においても、リアルタイム性が要求される多くの演算が必要になるという問題がある。また、所望の反力を得るまでにマニピュレーターが加速してしまう事態が生じるおそれがあるため、異常時の対応にも問題がある。
【0011】
本発明の幾つかの態様によれば、制御ハードウェアーへの性能要求を低減できると共に応答性の改善も図れるロボット制御システム、ロボットシステム等を提供できる。
【課題を解決するための手段】
【0012】
本発明の一態様は、ロボットのフィードバック制御の目標値を出力する目標値出力部と、力覚センサーからのセンサー情報に基づいて力制御を行い、前記目標値の補正値を出力する力制御部と、前記補正値により補正された前記目標値に基づいて、前記ロボットの前記フィードバック制御を行うロボット制御部とを含み、前記力制御部は、前記ロボットの姿勢に応じて変化する制御パラメーターを事前計算する事前計算部と、前記センサー情報と前記制御パラメーターとに基づき前記補正値を求める演算処理を実行する実行部とを含むロボット制御システムに関係する。
【0013】
本発明の一態様によれば、ロボットの姿勢に応じて変化する制御パラメーターの事前計算が行われ、力覚センサーからのセンサー情報と、事前計算された制御パラメーターとに基づき補正値を求める演算処理が実行される。そして、得られた補正値に基づいて目標値が補正され、補正された目標値に基づいて、ロボットのフィードバック制御が行われる。このようにすれば、実行部での演算処理の実行タイミング前に、ロボットの姿勢に応じて変化する制御パラメーターが、事前計算されるようになる。従って、制御ハードウェアーへの性能要求を低減できると共に応答性の改善も図れるロボット制御システムの提供が可能になる。
【0014】
また本発明の一態様では、力制御部は、前記事前計算部で計算された前記制御パラメーターが格納されるFIFOを含み、前記実行部は、前記FIFOから前記制御パラメーターを読み出し、読み出された前記制御パラメーターに基づき前記補正値を求める前記演算処理を実行してもよい。
【0015】
このようにすれば、事前計算部は、事前計算した制御パラメーターをFIFOに格納した後は、他の処理を行ったり、処理を停止することなどが可能になるため、処理の効率化等を図れる。
【0016】
また本発明の一態様では、前記FIFOには、前記実行部で使用される前記制御パラメーターが、前記実行部の演算処理が実行されるタイミングごとに、先入れ先出し方式で記憶されてもよい。
【0017】
このようにすれば、実行部は、各演算処理が実行されるタイミングにおいて、制御パラメーターをFIFOから読み出すだけで、制御パラメーターを用いた演算処理を実行できるようになる。
【0018】
また本発明の一態様では、前記実行部は、前記FIFOの残りデータ量が所与のしきい値以下になった場合に、前記事前計算部に対して、前記制御パラメーターを事前計算することを要求する事前計算要求を行ってもよい。
【0019】
このようにすれば、事前計算部は、少なくともFIFOの残りデータ量が無くなるまでの期間に、制御パラメーターを事前計算すれば済むようになるため、事前計算部に対するリアルタイム処理要求の緩和等を図れる。
【0020】
また本発明の一態様では、前記事前計算部は、前記制御パラメーターとして、逆ヤコビアンの行列要素を事前計算し、前記実行部は、事前計算された前記逆ヤコビアンの前記行列要素に基づいて、前記目標値の前記補正値を求めてもよい。
【0021】
このようにすれば、逆ヤコビアンの行列要素については事前計算されるようになり、実行部は、逆ヤコビアンの行列要素を演算する必要がなくなるため、実行部に対する性能要求等を軽減できる。
【0022】
また本発明の一態様では、前記事前計算部は、前記制御パラメーターとして、計画軌道に対するロボット軌道の許容範囲を示すリミッター値を事前計算し、前記実行部は、前記計画軌道に対して前記ロボット軌道が前記許容範囲を超えたと判断した場合に、前記許容範囲を超えたことを示す割り込みを発生させてもよい。
【0023】
このようにすれば、ロボット軌道の許容範囲を示すリミッター値については事前計算されるようになり、実行部は、リミッター値を演算する必要がなくなるため、実行部に対する性能要求等を軽減できる。また、ロボット軌道が許容範囲を超えた場合には、割り込みが発生するようになり、適切なエラー処理等を実行できるようになる。
【0024】
また本発明の一態様では、前記事前計算部は、前記計画軌道の周辺のヤコビアンを求めることで、前記リミッター値を事前計算してもよい。
【0025】
このようにすれば、ロボットの姿勢に応じて許容範囲が変化する場合にも、許容範囲を示すリミッター値を適切に事前計算できるようになる。
【0026】
また本発明の一態様では、前記事前計算部は、前記制御パラメーターとして、前記力覚センサーの前記センサー情報を補正するための補正係数を事前計算し、前記実行部は、前記補正係数に基づいて前記センサー情報の補正処理を行ってもよい。
【0027】
このようにすれば、センサー情報を補正するための補正係数については事前計算されるようになり、実行部は、補正係数を演算する必要がなくなるため、実行部に対する性能要求等を軽減できる。
【0028】
また本発明の一態様では、前記目標値出力部は、前記ロボットの軌道情報を出力する軌道生成部と、前記軌道生成部からの前記軌道情報に基づいてインバースキネマティクス処理を行い、前記ロボットの関節角情報を前記目標値として出力するインバースキネマティクス処理部とを含んでもよい。
【0029】
このようにすれば、軌道生成部からの軌道情報に基づいて、インバースキネマティクス処理によりロボットの関節角情報を求め、求められた関節角情報を目標値として、ロボットのフィードバック制御を実行できるようになる。
【0030】
また本発明の一態様では、前記力制御部は、前記力制御としてインピーダンス制御を行ってもよい。
【0031】
また本発明の一態様では、前記目標値は、前記ロボットの関節角情報であり、前記補正値は、前記関節角情報の補正値であってもよい。
【0032】
また本発明の一態様では、上記のいずれかに記載のロボット制御システムと、前記ロボットとを含むロボットシステムに関係する。
【図面の簡単な説明】
【0033】
【図1】本実施形態のロボット制御システム及びロボットシステムの構成例。
【図2】本実施形態のロボットシステムの一例。
【図3】図3(A)〜図3(C)は力制御についての説明図。
【図4】図4(A)、図4(B)はコンプライアンス制御についての説明図。
【図5】図5(A)、図5(B)はインピーダンス制御についての説明図。
【図6】図6(A)、図6(B)はインバースキネマティクスについての説明図。
【図7】図7(A)、図7(B)はヤコビアンについての説明図。
【図8】ヤコビアンによる制御手法についての説明図。
【図9】ヤコビアンによる制御手法についての説明図。
【図10】力覚フィードバックを含まない場合の制御系の基本構成例。
【図11】力覚フィードバックを含む場合の制御系の基本構成例。
【図12】本実施形態のロボット制御システムの制御系の基本構成例。
【図13】本実施形態のロボット制御システムの詳細な構成例。
【図14】FIFOを用いた本実施形態の処理の説明図。
【図15】本実施形態のロボット制御システムの更に詳細な構成例。
【図16】本実施形態の詳細な処理を示すフローチャート。
【図17】本実施形態の詳細な処理を示すフローチャート。
【図18】図18(A)〜図18(C)は本実施形態の詳細な処理を示すフローチャート。
【図19】本実施形態の詳細な処理を示すフローチャート。
【図20】本実施形態の詳細な処理を示すフローチャート。
【発明を実施するための形態】
【0034】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【0035】
1.構成
本実施形態のロボット制御システム(マニピュレーター制御システム)及びこれを含むロボットシステムの構成例を図1に示す。なお本実施形態のロボット制御システム、ロボットシステムは図1の構成には限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0036】
本実施形態のロボット制御システムは、力制御部20、目標値出力部60、ロボット制御部80を含む。また本実施形態のロボットシステムは、このロボット制御システムと、ロボット100(力覚センサー10)により構成される。
【0037】
目標値出力部60は、ロボット(狭義にはマニピュレーター)のフィードバック制御の目標値を出力する。この目標値に基づいてロボット100のフィードバック制御が実現される。多関節ロボット等を例に取れば、この目標値は、ロボットの関節角情報などである。ロボットの関節角情報は、例えばロボットのアームのリンク機構における各関節の角度(ジョイント軸とジョイント軸のなす角度)を表す情報である。
【0038】
目標値出力部60は、軌道生成部62とインバースキネマティクス処理部64を含むことができる。軌道生成部62は、ロボットの軌道情報を出力する。軌道情報は、ロボットのエンドエフェクター部(エンドポイント)の位置情報(x,y,z)と、各座標軸回りでの回転角度情報(u,v,w)を含むことができる。インバースキネマティクス処理部64は、軌道生成部62からの軌道情報に基づいてインバースキネマティクス処理を行い、例えばロボットの関節角情報を目標値として出力する。インバースキネマティクス処理は、関節を有するロボットの動きを計算する処理であり、ロボットのエンドエフェクター部の位置姿勢などから関節角情報等を逆運動学により計算する処理である。
【0039】
力制御部20(狭義にはインピーダンス制御部)は、力覚センサー10からのセンサー情報に基づいて力制御(力覚制御)を行って、目標値の補正値を出力する。更に具体的には、力制御部20(インピーダンス制御部)は、力覚センサー10からのセンサー情報(力情報、モーメント情報)に基づいてインピーダンス制御(或いはコンプライアンス制御)を行う。力制御は、例えば、従来の位置制御に対して、力のフィードバックが加わった制御である。インピーダンス制御は、外力に対するエンドエフェクター部(手先)の変位の生じやすさ(機械インピーダンス)を、制御により望ましい状態にする手法である。具体的には、ロボットのエンドエフェクター部の質量に粘性係数と弾性要素が接続されるモデルにおいて、目標として設定した粘性係数と弾性係数で物体に接触するようにする制御である。また力覚センサー10は、ロボット100が出している力の反力として受けている力やモーメントを検出するセンサーである。この力覚センサー10は、通常、ロボット100のアームの手首部分に取り付けられ、検出された力やモーメントは、センサー情報として、各種の力制御(インピーダンス制御)に用いられる。
【0040】
ロボット制御部80は、目標値出力部60からの目標値に基づいて、ロボットのフィードバック制御を行う。具体的には、力制御部20からの補正値により補正された目標値に基づいて、ロボットのフィードバック制御を行う。例えば補正値により補正された目標値と、ロボット100からのフィードバック信号に基づいて、ロボット100のフィードバック制御を行う。例えばロボット制御部80は、複数の駆動制御部82-1〜82-N(狭義にはモーター制御部)を含み、ロボット100が有する駆動部102-1〜102-Nに対して、その制御信号を出力する。ここで駆動部102-1〜102-Nは、ロボット100の各関節を動かすための駆動機構であり、例えばモーター等により実現される。
【0041】
そして本実施形態では、力制御部20が、事前計算部22と実行部26を含む。事前計算部22は、ロボット100の姿勢に応じて変化する制御パラメーター(演算パラメーター)を事前計算する。そして実行部26(ハードリアルタイム処理部)は、センサー情報と制御パラメーターとに基づき補正値を求める演算処理を実行する。即ち力覚センサー10からのセンサー情報と、事前計算された制御パラメーターとに基づいて、目標値の補正値を求め、例えば目標値出力部60に出力する。これにより、力制御により補正された目標値に基づいて、ロボット100のフィードバック制御が行われるようになる。
【0042】
このように本実施形態では、ロボットの姿勢に応じて変化する制御パラメーターが事前計算され、この事前計算された制御パラメーターに基づいて、各制御タイミングでの補正値が求められる。そして、この補正値により補正された目標値に基づいてロボットのフィードバック制御が行われる。このように、ロボット制御に必要な制御パラメーターを、リアルタイム応答性が必要とされない事前計算により求めるようにすれば、制御ハードウェアーへの性能要求を低減できると共に、ロボット制御の応答性等も改善できるようになる。なお、事前計算は、例えば、実際に制御パラメーターが必要となるタイミングよりも前のタイミングで、ロボットの計画軌道等に基づいて制御パラメーターを予め計算しておくことである。
【0043】
また力制御部20は、事前計算部22で計算された制御パラメーターが格納されるFIFO(First-In First-Out)24を含む。このFIFO24は、先入れ先出しのメモリー(レジスター)などにより実現できる。このFIFO24には、実行部26で使用される制御パラメーターが、実行部26の演算処理が実行されるタイミングごとに、先入れ先出し方式で記憶される。
【0044】
そして実行部26は、FIFO24から制御パラメーターを読み出し、読み出された制御パラメーターに基づき補正値を求める演算処理を実行する。即ち本実施形態では、事前計算された制御パラメーターをFIFO24に格納しておく。そして実行部26は、各演算処理実行タイミングにおいて、FIFO24からの制御パラメーターを読み出して、補正値を求める演算処理を実行する。
【0045】
この場合に実行部26は、FIFO24の残りデータ量が所与のしきい値以下(所与のデータ量以下)になった場合に、事前計算部22に対して、制御パラメーターを事前計算することを要求する事前計算要求を行う。この事前計算要求により、事前計算部22は、制御パラメーターの事前計算を行い、事前計算された制御パラメーターをFIFO24に格納する。
【0046】
ここで、制御パラメーターは、補正値の演算処理に使用されるパラメーター(演算パラメーター)であり、例えばロボット100の姿勢に応じてその値が変化するパラメーターである。この制御パラメーターとしては、逆ヤコビアンの行列要素や、ロボット軌道の許容範囲を示すリミッター値や、力覚センサー10のセンサー情報を補正するための補正係数などの種々のパラメーターを想定できる。
【0047】
例えば事前計算部22は、制御パラメーターとして、逆ヤコビアンの行列要素を事前計算する。そして実行部26は、事前計算された逆ヤコビアンの行列要素に基づいて、目標値の補正値を求める。また事前計算部22は、制御パラメーターとして、計画軌道に対するロボット軌道の許容範囲を示すリミッター値を事前計算する。そして実行部26は、計画軌道に対してロボット軌道が許容範囲を超えたと判断した場合に、許容範囲を超えたことを示す割り込みを発生させる。この場合に事前計算部22は、計画軌道の周辺のヤコビアン(計画軌道からの所与の範囲のポイントでのヤコビアン)を求めることで、リミッター値を事前計算する。また事前計算部22は、制御パラメーターとして、力覚センサー10のセンサー情報を補正するための補正係数(力覚センサー補正値)を事前計算する。そして実行部26は、補正係数に基づいてセンサー情報の補正処理を行う。この補正処理後のセンサー情報に基づいて、目標値の補正値が求められる。なお、逆ヤコビアン、リミッター値、補正係数の詳細については後述する。なお、ロボット軌道は、例えばエンドエフェクター部(エンドポイント)の移動軌道であり、計画軌道は、制御系が予め予定しているロボット軌道である。
【0048】
図2に本実施形態のロボット制御システムを含むロボットシステムの例を示す。このロボットシステムは、制御装置300(情報処理装置)とロボット310(図1のロボット100)とを含む。制御装置300はロボット310の制御処理を行う。具体的には、動作シーケンス情報(シナリオ情報)に基づいてロボット310を動作させる制御を行う。ロボット310は、アーム320及びハンド(把持部)330を有する。そして制御装置300からの動作指示にしたがって動作する。例えば、図示しないパレットに載せられたワークを把持したり、移動するなどの動作を行う。また、図示しない撮像装置で取得された撮像画像情報に基づいて、ロボットの姿勢やワークの位置などの情報が検出され、検出された情報が制御装置300に送られる。
【0049】
本実施形態のロボット制御システムは例えば図2の制御装置300に設けられ、例えば制御装置300のハードウェアーやプログラムによりロボット制御システムが実現される。そして本実施形態のロボット制御システムによれば、制御装置300などの制御ハードウェアーに対する性能要求を低減できると共に、ロボット310を高い応答性で動作させることが可能になる。なお図2は単腕型の例であるが、双腕型等の多腕型のロボットであってもよい。
【0050】
2.本実施形態の手法
次に本実施形態のロボット制御手法について詳細に説明する。
【0051】
2.1 概要
本実施形態では、リアルタイム応答性の必要とされる部分を最小化することにより、応答性を改善し、また制御ハードウェアーの性能要求を低減することを目的としている。即ち、ロボット(マニピュレーター)に用いられる力制御、インピーダンス制御を、単純で低コストな制御系で実現する。現状の制御系が高コストである原因は、高速なハードリアルタイム性を要求される部分が大きいからであり、高コストが許容されるのは、現在のシステム全体が高価なものであるからである。従って、低コスト化のためには、高速なリアルタイム性が要求される部分を小さくし、性能要求を緩和することが必要である。
【0052】
このような本実施形態の基本的なアイデアは次のような事実による。つまり、インピーダンス制御を用いようとも、その軌道は予測可能である場合が多いということである。
【0053】
例えば、双腕又は単腕のロボット(マニピュレーター)が対象物体をインピーダンス制御しながら運搬するというような場合、その軌道は予測可能である。
【0054】
例えば、ロボットを用いてある物体を別の物体に嵌め合わせるような場合、或いは、溶接等のようにロボットがある物体の表面をなぞる場合を考える。このような場合に、従来手法においても、全くの手探りということはなく、治具を用いてある程度の位置が決まっているか、或いは近年の場合には撮像装置を用いて位置を決める場合がほとんどである。この場合も、その位置、軌道はほぼ予測可能である。
【0055】
要するに、従来の場合も近年の場合も、インピーダンス制御を用いる場合に、その軌道が全くの手探りということは非常に少なく、むしろ多くの場合は事前に予測可能である。つまり、インピーダンス制御などを用い、外部拘束による軌道変化は非常に小さい。
【0056】
このように、主たる軌道が予測可能であり、インピーダンス制御などによる軌道変化が小さいものであるならば、それに最適な構造・制御手法を採用することにより、応答性を改善すると共に、制御ハードウェアーの性能要求を低減することが可能になる。つまり、インピーダンス制御に関わるヤコビアンや逆ヤコビアンは、ロボットの姿勢に依存するものである。しかしながら、軌道が予測可能であるならば、その軌道上のある点について、ヤコビアンや逆ヤコビアンを予め計算しておくことが可能となる。この部分はリアルタイム応答性を必要としない。
【0057】
その結果、各点での値が予め計算されていることによる応答性の改善や、その値の事前計算にはリアルタイム応答性を必要としないことによるハードウェアへの性能要求の低減が可能となる。
【0058】
以上の本実施形態の基本的アイデアをまとめると、以下の通りである。
【0059】
即ち、従来の場合、逐次に変化する軌道に対し、姿勢の変化に対応して変化するパラメーターを、その都度、時間遅れなく計算するする必要があった。しかしながら、人や他の機器との時間的に変化する相互作用のある場合を除き、インピーダンス制御を行っても、軌道は予想可能である。産業用機械のタスクのうちのかなりの部分は、これに該当する。つまり、産業用機械において、予測不能な外力により軌道が変化する事態は、異常な事態である。
【0060】
軌道が予測可能であれば、高速リアルタイム性が要求される部分のうち、事前計算が可能な部分がかなり存在する。この事前計算を予め行っておき、FIFO(先入れ先出しメモリ)に入れておく。FIFOの長さを適当に取ることにより、事前計算処理のリアルタイム性は非常に緩和される。なお、リアルタイム処理とは、応答時間の最悪値(イベント発生後に実際に応答が起こるまでの時間の最悪値)が保証されている処理である。そして、その応答の価値が時間経過に対してゆっくりと下がるのがソフトリアルタイム処理であり、急激に下がるのがハードリアルタイム処理である。例えばロボット制御やエアーバック制御の処理は、ハードリアルタイム処理になる。
【0061】
本実施形態では、事前計算を、FIFOが空にならないような時間間隔で行う。高速なハードリアルタイム処理を行う部分は、FIFOから制御パラメーターを読み出して、その制御パラメーターを用いる。
【0062】
また、ハードリアルタイム処理の結果が、事前計算において想定していた範囲を超えた場合は、それを事前計算部へ通知する。また、指定のエラー処理を行う。
【0063】
具体的には本実施形態では、従来では一体型であったインピーダンス制御部を、上位制御層と下位制御層に分割する。即ち図1に示すように、上位制御層である事前計算部22と、下位制御層のハードリアルタイム処理部である実行部26と、これらの間に介在するFIFO24に分割する。ここで実行部26とFIFO24は各関節ごとに与えられる。なお、前述した特許文献3でも階層分割を行っているが、その内容は本実施形態とは全く異なる。
【0064】
また、これらの各制御層での処理の時間間隔が異ならせる。即ち、リアルタイム応答を行う下位制御層である実行部26は、例えば100μs〜1msの時間間隔で処理を行う.一方、まとめて事前計算を行う上位制御層である事前計算部22は、例えば数ms〜数十msの時間間隔で処理を行う。つまり、マルチレートの処理を行う。
【0065】
上位制御層でまとめて事前計算された値は、先入れ先出しメモリであるFIFO24に送られ、下位制御層は、事前計算された値を逐次的にFIFOから読み出して、ハードリアルタイム処理を行う。
【0066】
ここで、事前計算部22で事前計算され、FIFO24を通じて通信されるパラメーターは、例えば、後に詳述する逆ヤコビアン、リミッター値、センサー姿勢の補正係数(ハンド自重補正係数)である。
【0067】
事前計算部22は、上記のパラメーターの事前計算を行う。即ち、上位制御層である事前計算部22は、FIFO24の状態を見ながら、適切な間隔で事前計算を行う。この適切な間隔とは、FIFO24が空にならないように、余裕を持って事前計算が行える程度であればよい。具体的には、事前計算部22は、FIFO24の残りデータ量が少なくなった時に起動される。これにより事前計算部22に対するリアルタイム処理要求は緩和される。そして、ハードリアルタイム処理部である実行部26は、センサー姿勢の補正係数、逆ヤコビアンを用いてインピーダンス制御処理を行う。そして実行部26は、インピーダンス制御処理の結果が、リミッター値の範囲を超えた場合に、事前計算部22に対してエラーを通知する。そして実行部26は、エラーの発生時に、所定のエラー処理を行う。
【0068】
なお、本実施形態では、軌道は予測可能であることを仮定しており、リミッター値は、その仮定から外れるほどの大きなインピーダンス制御による軌道変化があったことを検出するためのものである。このような状態となった場合には、例えば上位制御層への割り込み処理を要求するようにする。
【0069】
以上の本実施形態の手法によれば、パラメーターが予め事前計算されていることによる応答性の改善と、その事前計算にはリアルタイム応答性を必要としないことによる制御ハードウェアーへの性能要求の低減を実現できるようになる。
【0070】
2.2 力制御、インピーダンス制御
次に、力制御、インピーダンス制御(コンプライアンス制御)の概要について説明する。
【0071】
図3(A)は、ロボットの左のアームAL、右のアームARで物体OBを挟んで移動している様子を示している。例えば、位置制御だけでは、物体を落としたり、破壊してしまうおそれがある、力制御によれば、柔軟な物体や脆い物体を、図3(A)のように両側から適切な力で挟んで移動させることが可能になる。
【0072】
また、力制御によれば、図3(B)に示すように、不確実性のある物体の表面SFをアームAM等でなぞることが可能になる。このような制御は位置制御だけでは実現不能である。また、力制御によれば、図3(C)に示すように、粗い位置決めの後に、探って位置合わせをして、物体OBを穴部HLにはめ込むことも可能になる。
【0073】
しかしながら、バネなどの実際の機械部品による力制御では、用途が限られるという問題がある。また、このような機械部品による力制御では、特性の動的な切り替えが困難である。
【0074】
一方、モーターのトルクを制御するトルク制御は簡単であるが、位置精度が悪くなるという問題がある。また、異常時に衝突などの問題が生じる。例えば図3(A)において、異常事態が起きて、物体OBを落としてしまった場合に、トルク制御では、釣合うべき反力が無くなるため、左右のアームAL、ARが衝突してしまうなどの問題が生じる。
【0075】
これに対して、インピーダンス制御(コンプライアンス制御)は、制御が複雑であるという不利点があるものの、汎用性や安全性が高いという利点がある。
【0076】
図4(A)、図4(B)は、インピーダンス制御の1つであるコンプライアンス制御を説明する図である。コンプライアンスはバネ定数の逆数を意味し、バネ定数が硬さを表すのに対して、コンプライアンスは柔らかさを意味する。ロボットと環境との間に相互作用が働くときに、機械的柔軟性であるコンプライアンスを与える制御をコンプライアンス制御と呼ぶ。
【0077】
例えば図4(A)では、ロボットのアームAMには力覚センサーSEが取り付けられている。このロボットのアームAMは、力覚センサーSEで得られたセンサー情報(力・トルク情報)に応じて姿勢が変わるようにプログラムされている。具体的には、図4(A)のA1に示す仮想的なバネが、あたかもアームAMの先端に取り付けられているかのようにロボットを制御する。
【0078】
例えばA1に示すバネのバネ定数が100Kg/mであったとする。これを図4(B)のA2に示すように5Kgの力で押せば、A3に示すようにバネは5cmだけ縮む。逆に言えば、5cmだけ縮んでいれば、5Kgの力で押されているといえる。つまり、力情報と位置情報とが対応づけられている。
【0079】
コンプライアンス制御では、このA1に示す仮想的なバネがアームAMの先端に取り付けられているかのような制御が行われる。具体的には、ロボットは、力覚センサーSEの入力に応答して動作し、A2に示す5Kgの加重に対して、A3に示すように5cmだけ後退するように制御され、力情報に対応して位置情報が変化するように制御される。
【0080】
このような単純なコンプライアンス制御では時間項を含まないが、時間項を含み、その2次の項までを考慮した制御が、インピーダンス制御である。具体的には、2次の項は質量項であり、1次の項は粘性項であり、インピーダンス制御のモデルは下式(1)に示すような運動方程式で表すことができる。
【0081】
【数1】
【0082】
上式(1)において、mは質量、μは粘性係数、kは弾性係数、fは力、xは目標位置からの変位である。またxの1次微分、2次微分は、各々、速度、加速度に対応する。インピーダンス制御では、上式(1)の特性をアームの先端であるエンドエフェクター部に持たせるための制御系を構成する。即ち上式(1)で表される仮想質量、仮想粘性係数、仮想弾性係数を、あたかもアームの先端が持っているかのように制御を行う。
【0083】
このように、インピーダンス制御は、アームの先端の質量に粘性要素と弾性要素が各方向に接続されるモデルにおいて、目的として設定された粘性係数と弾性係数で物体に接触するようにする制御である。
【0084】
例えば図5(A)に示すように、ロボットのアームAL、ARで物体OBをつかんで、軌道TRに沿って移動させる制御を考える。この場合に、軌道TRLは、物体OBの左側の内側に設定された点PLが通る軌道であり、インピーダンス制御を想定して決定された仮想的な左手の軌道である。また軌道TRRは、物体OBの右側の内側に設定された点PRが通る軌道であり、インピーダンス制御を想定して決定された仮想的な右手の軌道である。この場合に、アームALは、アームALの先端と点PLの距離差に応じた力が発生するように制御される。またアームARは、アームARの先端と点PRの距離差に応じた力が発生するように制御される。このようにすれば、物体OBを柔らかくつかみながら移動させるインピーダンス制御を実現できる。そして、インピーダンス制御では、図5(A)のB1に示すように物体OBが落下する事態が生じたとしても、アームAL、ARは、B2、B3に示すように、その先端が点PL、PRの位置で止まるように制御される。即ち、仮想的な軌道が衝突軌道でなければ、アームAL、ARが衝突するのを防止できる。
【0085】
また図5(B)のように、物体の表面SFをなぞるように制御する場合にも、インピーダンス制御では、アームAMの先端に対して、仮想的な軌道TRVAと先端との距離差DFに応じた力が働くように制御される。従って、アームAMを、力を加えながら表面SFをなぞるような制御が可能になる。
【0086】
2.3 ヤコビアン、逆ヤコビアン
以上のようなインピーダンス制御、コンプライアンス制御等においては、その動作は、基本的にはデカルト座標系で計算される。そして、デカルト座標系でのロボットの手先の動きを、ロボットの各関節の動きに翻訳するためにはインバースキネマティクス処理が必要となる。例えば図6(A)において、C1に示す力が働いて、アームAMの先端PTがC2に示すように移動した場合に、各関節J1、J2の角度を求めるためには、インバースキネマティクス処理が必要になる。
【0087】
しかしながら、図6(B)に示すように、一般的には、インバースキネマティクス処理は非常に難しい処理である。一方、ロボットの各関節の値を設定し、それを手先の動きに変換する処理であるフォワードキネマティクス処理は簡単な処理である。このような処理において、姿勢変化が微小であれば、フォワードキネマティクスを用いたヤコビアンを用いることができる。
【0088】
例えば下式(2)に示すように、m個の変数を入力とし、n個の出力を与えるある関数fを考える。或いは、m個の変数を入力とし、1つの出力を与える関数fをn組用意する。
【0089】
【数2】
【0090】
この場合に、ヤコビアン(ヤコビ行列)は、下式(3)に表される行列である。
【0091】
【数3】
【0092】
つまり、ヤコビアンは、xの「ある値」の近傍において、xとyの関係を線形近似したものである。従って、一般的には、xの「ある値」が変化すれば、ヤコビアンも変化する。
【0093】
ここで、xを関節角、yをロボットの手先の姿勢(xyzuvw)とすれば、上式(2)の関数は、フォワードキネマティクス関数となり、これは簡単に求めることができる。
【0094】
上式(2)の関数をフォワードキネマティクス関数と考えれば、上式(3)のヤコビアン(ヤコビ行列)は、ある姿勢において各関節が微小に変化した場合の、それに伴う手先の微小な変化を与える関係式となる。即ち図7(A)において、関節J1の角度が微小な単位量だけ変位した場合に、先端PTがどれだけ変位するかを表す関係式になる。或いは図7(B)において、関節J2の角度が微小な単位量だけ変位した場合に、先端PTがどれだけ変位するかを表す関係式になる。
【0095】
この場合に、各関節角の微小変化と、手先の微小変化との対応は、その姿勢に応じて変化する。つまり、ヤコビアンは、姿勢の変化に対応して、その都度、計算する必要がある。
【0096】
さて、前述したように、手先の位置から関節角を求めるインバースキネマティクス処理は、一般的には非常に難しい処理である。
【0097】
しかしながら、下式(4)のように、ヤコビアンの逆行列である逆ヤコビアンを求めることができれば、手先の微小な変化を各関節角の微小な変化に変換する関係式を求めることができる。
【0098】
【数4】
【0099】
ところが、一般的には、ヤコビアンは正方行列ではなく、且つ、rank(階数)も低く、通常の意味の逆行列は存在しない。例えば7軸のロボットでは、手先の自由度は6つしかないので、7×7ではなく、7×6の行列になってしまう。但し、通常の意味の逆行列と類似した性質を持つ一般化逆行列は存在し得る。この一般化逆行列を用いることにより、インバースキネマティクス関数を必要とする処理を、フォワードキネマティクス関数を用いて実行することが可能になる。これを利用して、本実施形態では、処理の簡素化を図っている。具体的には、制御パラメーターとして、逆ヤコビアンの行列要素を事前計算し、事前計算された逆ヤコビアンの行列要素に基づいて、目標値の補正値を求めている。
【0100】
2.4 リミッター値
さて、図8において、計画軌道TRPに沿ってアームAMの先端PTを移動させる場合を考える。この場合に、産業用途のロボットにおいては、ロボット軌道が、軌道TRAのように大きくずれることはなく、このような軌道TRAになった場合には、それは異常状態であると判断できる。
【0101】
そこで本実施形態では、制御パラメーターとして、計画軌道TRPに対するロボット軌道の許容範囲RTを示すリミッター値(例えばモーターのエンコーダー値のリミッター値)を事前計算する。そして計画軌道TRPに対してロボット軌道が許容範囲RTを超えたか否かを判断する。そして許容範囲を超えた場合には、それを示す割り込みを発生させる。
【0102】
具体的には本実施形態では、計画軌道TRPの周辺のヤコビアンを求めることで、リミッター値を事前計算する。即ち、ヤコビアンの誤差が許容される範囲を、許容範囲RTとして、リミッター値を事前計算する。例えばヤコビアンの行列要素の誤差が所与の値以下になる範囲を許容範囲RTとして、リミッター値を事前計算する。
【0103】
この場合に、図8に示すように、許容範囲RTは一定ではなく、許容範囲RTの大きさはロボットのアームAMの姿勢に依存する。例えば図8のD1に示す姿勢の場合とD2に示す姿勢の場合とで、許容範囲RTは同一ではない。そしてD1とD2とで、ヤコビアン(逆ヤコビアン)の値も異なる。このため本実施形態では、計画軌道TRPの各点の周辺においてヤコビアンを求めることで(各姿勢におけるヤコビアンを求めることで)、リミッター値を事前計算するようにしている。
【0104】
なお、この場合にヤコビアンを計算する姿勢は、図9において実線で示す姿勢であり、破線で示す姿勢ではない。即ち、図5(A)で説明したように、インピーダンス制御においては、物体の内側に設定された点PL、PRを通る仮想的な軌道を目標として制御が行われる。例えば図9のアームAMの先端PTと仮想点VPT(PL、PR)との差に応じた力が発生するように制御される。そしてヤコビアンの計算時には、このような仮想的な軌道に対応する破線で示す姿勢ではなく、実線で示す姿勢においてヤコビアンを計算することになる。
【0105】
2.5 制御系の構成
図10に、力覚フィードバックを含まない場合の制御系の基本構成例を示す。
【0106】
軌道生成部562は、軌道情報p(xyzuvw)を生成してインバースキネマティクス処理部564に出力する。ここで軌道情報pは、例えばアームの先端(エンドエフェクター部)の位置情報(xyz)と各軸回りの回転情報(uvw)を含む。そしてインバースキネマティクス処理部564は、この軌道情報pに基づいてインバースキネマティクス処理を行って、目標値である各関節の関節角θを生成して出力する。そして、この関節角θに基づいて、モーター制御を行うことで、ロボットのアームの動作制御が行われる。この場合に図10のモーター(M)の制御は、公知のPID制御により実現されている。このPID制御は公知の技術であるため、ここでは詳細な説明を省略する。
【0107】
図10において、軌道生成部562とインバースキネマティクス処理部564とにより目標値出力部が構成される。この目標値出力部の処理は、ロボットの全体的な処理になる。一方、後段のモーター制御は、関節毎の制御になる。
【0108】
なお、前述した特許文献3の従来技術においても、上位制御層と下位制御層の区分分割を行っている。しかしながら、特許文献3における上位制御層は、図10の軌道生成部562とインバースキネマティクス処理部564の部分であり、下位制御層は、モーター制御の部分であり、本実施形態とは異なる区分分割となっている。
【0109】
図11に、力覚フィードバックを含む場合の制御系の基本構成例を示す。図11では、図10に対して、更に、力覚センサー510と、姿勢補正部532と、ハンド・ツール自重補正部534と、運動方程式処理部536と、フォワードキネマティクス処理部540が設けられている。
【0110】
図11では、力覚センサー510からのセンサー情報を受けて、姿勢補正部532がセンサーの姿勢補正を行い、ハンド・ツール自重補正部534がハンド・ツール自重補正を行う。そして、運動方程式処理部536が、前述の式(1)に示すような運動方程式の解を求める処理を行い、補正値Δpを出力する。この補正値Δpにより軌道情報pが補正されることで、目標値である関節角θの補正処理が行われる。またフォワードキネマティクス処理部540は、フォワードキネマティクス処理を行って、ロボットの軌道情報p’を求めて軌道生成部562にフィードバックする。また姿勢補正部532、ハンド・ツール補正部534に対して姿勢を特定するための情報を出力する。
【0111】
図12に、本実施形態の制御系の基本構成例を示す。この制御系は、図11と同様に力覚フィードバックを含む。図12が図11と異なるのは、図12では逆ヤコビアン処理部38が更に設けられている点である。
【0112】
具体的には、図11では、運動方程式処理部536からのΔpにより、軌道生成部562が出力するpが補正されている。これに対して図12では、運動方程式処理部536からのΔpに基づいて、逆ヤコビアン処理部38が、Δθを求める逆ヤコビアン処理を行う。即ち、前述の式(4)において、Δy(Δy1,Δy2・・・)がΔpになり、Δx(Δx1,Δx2・・・)がΔθになる逆ヤコビアン処理を行って、Δθを求める。そして、求められたΔθにより、目標値である関節角θが補正される。このような構成にすることにより、運動方程式の処理結果を関節ごとに分解できるようになる。
【0113】
そして図12において、姿勢補正部32、ハンド・ツール自重補正部34、逆ヤコビアン処理部38、フォワードキネマティクス処理部40の処理では、ロボット姿勢に応じて、使用されるパラメーターの値が変化する。
【0114】
しかしながら、ロボットの姿勢変化が予めプログラムされたものであるか、或いはそこからの差異が小さければ、これらのパラメーター値は軌道をプログラムする時点で予め計算しておくことができる。そこで本実施形態では、これらのパラメーター値を事前計算で求める手法を採用している。
【0115】
また、上述の「差異が小さい」とは、各補正における誤差が、運動方程式の解の誤差となった時に、その誤差が許容範囲内にあるということであり、またその結果のヤコビアン処理の結果の誤差が許容範囲内にあるということである。
【0116】
この「差異が小さい」ということは、上記のように、ロボットの実際の姿勢とプログラムされた姿勢との差異が小さいということに依存するものであり、その差異が想定よりも大きなものとなった場合には、エラーとして処理する必要がある。そこで本実施形態では、図8で説明したように許容範囲RTに対応するリミッター値を事前計算しておき、ロボット軌道が許容範囲RTを超えたと判断された場合には、割り込みを発生させるようにしている。
【0117】
2.6 詳細な構成例
図13に本実施形態のロボット制御システムの詳細な構成例を示す。図13は、図12で説明した制御系に対応する構成である。なお本実施形態のロボット制御システムは図13の構成には限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。例えば本実施形態のロボット制御システムとして、図11等で説明した制御系の構成を採用してもよい。
【0118】
図13の逆ヤコビアン事前計算部42、リミッター値事前計算部44、補正係数事前計算部46が、図1の事前計算部22に相当する。また図13のFIFO50、52、54が、図1のFIFO24に相当する。また図13のハンド・ツール自重・姿勢補正部35、運動方程式処理部36、逆ヤコビアン処理部38、リミッター処理部39、割り込み発生部48が、図1の実行部26に相当する。なおFIFO56はインバースキネマティクス処理部64からの関節角θを格納するためのFIFOである。
【0119】
逆ヤコビアン事前計算部42は、前述の式(4)の逆ヤコビアン(逆ヤコビアンの行列要素)を事前計算し、事前計算した逆ヤコビアン(逆ヤコビアンに対応する値)をFIFO50に格納する。そして逆ヤコビアン処理部38は、各演算処理実行タイミングにおいて、事前計算された逆ヤコビアンをFIFO50から読み出して、前述の式(4)に示すような逆ヤコビアン処理を行って、関節角を補正するための補正値を出力する。
【0120】
リミッター値事前計算部44は、図8で説明したロボット軌道の許容範囲に対応するリミッター値を事前計算し、事前計算したリミッター値をFIFO52に格納する。そしてリミッター処理部39は、各演算処理実行タイミングにおいて、事前計算されたリミッター値をFIFO52から読み出して、計画軌道に対してロボット軌道が許容範囲を超えたか否かを判断する。そして、許容範囲を超えたと判断されると、割り込み発生部48が、許容範囲を超えたことを示す割り込みを発生する。
【0121】
補正係数事前計算部46は、力覚センサー10のセンサー情報を補正するための補正係数を事前計算し、事前計算した補正係数をFIFO54に格納する。そしてハンド・ツール自重・姿勢補正部35は、事前計算された補正係数に基づいてセンサー情報の補正処理を行う。そして運動方程式処理部36は、この補正処理後のセンサー情報を用いて、前述の式(1)に対応する運動方程式の解を求める処理を行い、処理結果を逆ヤコビアン処理部38に出力する。すると、逆ヤコビアン処理部38は、この運動方程式処理部38からの処理結果と、事前計算された逆ヤコビアンに基づいて、前述の式(4)に示す逆ヤコビアン処理を行って、関節角の補正値を生成する。
【0122】
ここで、ハンド・ツール自重・姿勢補正部35は、図12のハンド・ツール自重補正部34及び姿勢補正部32に対応するものである。ここでハンド・ツール自重補正は、ロボットのハンドの自重や、ハンドがつかむツールの自重による影響を、力覚センサー10からのセンサー情報(力情報)から相殺するための補正処理である。また姿勢補正は、力覚センサー10の姿勢による影響を、センサー情報(力情報)から相殺するための補正処理である。これらのハンド・ツール自重補正及び姿勢補正は、例えば下式(5)のように表すことができる。
【0123】
【数5】
【0124】
上式(5)において、Fx,Fy,Fz、Fu,Fv,Fwは力覚センサー10からのセンサー情報である力情報、トルク情報である。またBx,By,Bz、Bu,Bv,Bwはバイアス項である。そして、補正後のセンサー情報(力情報、トルク情報)であるfx,fy,fz、fu,fv,fwが運動方程式処理部36に入力される。なお、データには固定値があるため、実質的な補正係数は6×7=42個となる。これらのハンド・ツール自重補正及び姿勢補正は公知の補正処理であるため、詳しい説明は省略する。
【0125】
図14は、FIFOを用いた本実施形態の処理を説明するための図である。図14において、TM1、TM2、TM3・・・は、実行部26(ハンド・ツール自重・姿勢補正部35、運動方程式処理部36、逆ヤコビアン処理部38、リミッター処理部39等)の演算処理の実行タイミングである。このように、本実施形態では、実行部26は、TM1、TM2、TM3・・・の各演算処理実行タイミングにおいて、事前計算された制御パラメーター(逆ヤコビアン、リミッター値、補正係数)をFIFO(FIFO50、52、54)から読み出す。
【0126】
そして図14のE1では、FIFOの残りデータ量(制御パラメーターの残りデータ量)がしきい値以下になったため、下位制御層である実行部26は、E2に示すように、上位制御層である事前計算部22(逆ヤコビアン事前計算部42、リミッター値事前計算部44、補正係数事前計算部46)に対して、制御パラメーターの事前計算要求を行う。すると、事前計算部22が、制御パラメーターの事前計算を行い、E3に示すように、事前計算された制御パラメーターをFIFOに格納する。
【0127】
この場合に、FIFOには、以前に事前計算した制御パラメーターが残存しているため、E4に示すタイミングについては、TM1、TM2、TM3・・・の演算処理実行タイミングに比べて、十分に長いインターバルを取ることができる。従って、実行部26に対しては、高速且つハードなリアルタイム処理が要求されるものの、事前計算部22に対しては、ある程度の処理の遅延が許容されるため、低速又はソフトなリアルタイム処理が要求されるだけになる。従って、事前計算部22は、逆ヤコビアンやリミッター値や補正係数を求めるというような負荷の高い計算処理を、時間的に余裕を持って実行することが可能になる。一方、実行部26では、逆ヤコビアンやリミッター値や補正係数を求めるというような負荷の高い計算処理を行わなくも済むため、高速且つハードなリアルタイム処理が要求されても、これに対応することが可能になる。
【0128】
なお図15は、ロボット制御部80と実行部26の接続関係の例を示す図である。図15では、図1のロボット制御部80が制御するモーター(広義には駆動部)が2つの場合を示している。
【0129】
インバースキネマティクス処理部64からの目標値(関節角)は、FIFO56-1を介してモーター制御部84-1に入力される。この場合に、この目標値は、逆ヤコビアン処理部38からの補正値により補正されて、モーター制御部84-1に入力される。そしてモーター制御部84-1は、補正後の目標値に基づいて、モーターM1の制御を行う。
【0130】
同様に、インバースキネマティクス処理部64からの目標値(関節角)は、FIFO56-2を介してモーター制御部84-2に入力される。この場合に、この目標値は、逆ヤコビアン処理部38からの補正値により補正されて、モーター制御部84-2に入力される。そしてモーター制御部84-2は、補正後の目標値に基づいて、モーターM2の制御を行う。
【0131】
また、リミッター値事前計算部44で事前計算されたリミッター値は、FIFO52-1を介してリミッター処理部39-1に入力される。リミッター処理部39-1は、事前計算されたリミッター値と、モーター制御部84-1からのエンコード値(回転角度検出情報)に基づいて、ロボット軌道が許容範囲を超えたか否かを判断する。そして、許容範囲を超えたと判断された場合には、割り込み発生部48が割り込みを発生する。
【0132】
同様に、リミッター値事前計算部44で事前計算されたリミッター値は、FIFO52-2を介してリミッター処理部39-2に入力される。リミッター処理部39-2は、事前計算されたリミッター値と、モーター制御部84-2からのエンコード値に基づいて、ロボット軌道が許容範囲を超えたか否かを判断する。そして、許容範囲を超えたと判断された場合には、割り込み発生部48が割り込みを発生する。
【0133】
3.詳細な処理
次に本実施形態の詳細な処理例について図16〜図20のフローチャートを用いて説明する。
【0134】
図16は、ハードリアルタイム処理部である実行部の全体的な処理についてのフローチャートである。
【0135】
まず、制御パラメーターを更新するタイミングか否かを判断する(ステップS1)。そして、更新タイミングである場合には、図14で説明したように、FIFOに残りデータ(制御パラメーター)があるか否かを判断する(ステップS2)。そして、残りデータが無い場合には、制御パラメーター無しの割り込みを発生させて(ステップS3)、割り込み処理へ移行する(ステップS4)。一方、FIFOに残りデータがある場合には、FIFOから制御パラメーターを取得する(ステップS5)。
【0136】
次に、FIFOの残りデータ量はしきい値よりも多いか否かを判断する(ステップS6)。そして、しきい値以下である場合には、図14で説明したように、事前計算部に対して制御パラメーターの作成を要求する(ステップS7)。一方、残りデータ量がしきい値よりも多い場合には、インピーダンス制御処理を実行する(ステップS8)。
【0137】
次に、インピーダンス制御処理が正常に終了したか否かを判断する(ステップS9)。そして、正常に終了しなかった場合には、事前計算部に対して制御パラメーターの更新を要求する(ステップS10)。一方、正常に終了した場合にはステップS1に戻る。
【0138】
図17は、図16のステップS8のインピーダンス制御処理についてのフローチャートである。
【0139】
まず、力覚センサーから6次元入力値を得て(ステップS11)、7×7の補正行列との積を計算する(ステップS12)。即ち、前述の式(5)のFx,Fy,Fz、Fu,Fv,Fwを得て、ハンド・自重補正及び姿勢補正を行う。そして、得られた補正済み値に基づいてインピーダンスフィルター処理を行う(ステップS13)。即ち、前述の式(1)の運動方程式の処理を行う。
【0140】
次に、インピーダンスフィルターの出力値と、7×6のヤコビ行列との積を求める(ステップS14)。即ち、前述の式(4)の行列演算を行う。そして、各関節の指令値に対して、ステップS14で得られた値を加える補正処理を行う(ステップS15)。
【0141】
次に、モーターのエンコーダー値(回転角度)を得る(ステップS16)。そして、エンコーダー値はリミッター値の範囲内か否かを判断し(ステップS17)、リミッター値の範囲内でない場合には、リミッターエラー割り込みを発生する(ステップS18)。一方、リミッター値の範囲内である場合には、正常状態であるとして図16のLoopへ戻る。
【0142】
図18(A)〜図18(C)は割り込み処理についてのフローチャートである。
【0143】
図18(A)に示すように、図16のステップS3で制御パラメーター無し割り込みが発生した場合には、予め設定された停止処理に入る(ステップS21)。
【0144】
図18(B)に示すように、図17のステップS18でリミッターエラー割り込みが発生した場合には、予め設定された停止処理に入る(ステップS22)。即ち、上位コントローラー(上位制御層)で、許容範囲のリミッター値を設定し、それを超えるような事態では、ともかく停止させる。
【0145】
或いは、図18(C)に示すように、図17のステップS18でリミッターエラー割り込みが発生した場合に、NOP(No OPeration)とし、異常事態発生としてLoopに戻るようにしてもよい(ステップS23)。即ち、上位コントローラー(上位制御層)で、余裕を見込んだリミッター値を設定し、下位コントローラー(下位制御層)のオーバーシュートを許容する。そして、割り込みを受けた上位コントローラーは、軌道を更新し、FIFOを新しいデータで上書きする。一方、下位コントローラーは、新しいデータで動作を継続する。そして、上位コントローラーが軌道を更新できない場合には、下位コントローラーへの割り込みを発生させて、動作を停止させる。
【0146】
図19は事前計算部の処理についてのフローチャートである。
【0147】
まず、事前計算部は、割り込みが発生するのを待ち(ステップS31)、割り込みが発生した場合には、制御パラメーター無し割り込みか否かを判断する(ステップS32)。そして、制御パラメーター無し割り込みの場合には、制御パラメーターを計算して、FIFOに設定する(ステップS33)。そして、ハードリアルタイム処理部(実行部)を再起動する(ステップS34)。
【0148】
一方、制御パラメーター無し割り込みではない場合には、制御パラメーター作成割り込みか否かを判断する(ステップS35)。そして、制御パラメーター作成割り込みの場合には、FIFOの空きデータ量を取得し(ステップS36)、制御パラメーターを計算して、FIFOに設定する(ステップS37)。
【0149】
制御パラメーター作成割り込みではない場合には、制御パラメーター更新割り込みか否かを判断する(ステップS38)。そして、制御パラメーター更新割り込みの場合には、現在のロボットの姿勢を取得し、復旧軌道を求める(ステップS39)。そして、制御パラメーターを計算して、FIFOに上書きする(ステップS40)。
【0150】
図20は、パラメーター計算処理についてのフローチャートである。
【0151】
まず、FIFOに空きはあるか否かを判断し(ステップS41)、空きがある場合には、計画軌道を求める(ステップS42)。そして、計画軌道のヤコビアン、逆ヤコビアンを求め(ステップS43)、FIFOに逆ヤコビアンの値を設定する(ステップS44)。
【0152】
次に、図8で説明したように、計画軌道の周辺のヤコビアンを求め、差異が所定の値以下である範囲を求め(ステップS45)、FIFOにリミッター値を設定する(ステップS46)。また、計画軌道に対する力覚センサー補正値(補正係数)を求め(ステップS47)、FIFOに力覚センサー補正値を設定する(ステップS48)。
【0153】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また本実施形態及び変形例の全ての組み合わせも、本発明の範囲に含まれる。またロボット制御システム、ロボットシステムの構成・動作や、制御パラメーターの事前計算手法、FIFOへの制御パラメーターの格納手法、制御パラメーターに基づく演算処理の実行手法、制御系の構成等も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【0154】
OB 物体、AL、AR、AM アーム、SF 表面、HL 穴部、J1〜J3 関節、
PT 先端部、M、M1、M2 モーター、
10 力覚センサー、20 力制御部(インピーダンス制御部)、22 事前計算部、
24 FIFO、26 実行部、32 姿勢補正部、34 ハンド・ツール自重補正部、
35 ハンド・ツール自重・姿勢補正部、36 運動方程式処理部、
38 逆ヤコビアン処理部、39、39-1、39-2 リミッター処理部、
40 フォワードキネマティクス処理部、42 逆ヤコビアン事前計算部、
44 リミッター値事前計算部、46 補正係数事前計算部、
50、52、52-1、52-2、54、56、56-1、56-2 FIFO、
60 目標値出力部、62 軌道生成部、64 インバースキネマティクス処理部、
80 ロボット制御部、82-1〜82-N 駆動制御部、
84-1、84-2 モーター制御部、100 ロボット、102-1〜102-N 駆動部、
300 制御装置、310 ロボット、320 アーム、330 ハンド
【技術分野】
【0001】
本発明は、ロボット制御システム、ロボットシステム等に関する。
【背景技術】
【0002】
マニピュレーター等のロボットを用いて行う作業において、種々の拘束条件、例えば物体との接触を伴う作業がある。このような場合においては、位置の制御に加えて、力の制御が要求される場合が多い。例えば、物体の表面をなぞる場合、1つの物体を他の物体に嵌め合わせる場合、柔軟物を破壊しないように把持する場合などにおいては、単なる位置の制御に加えて、物体からの反力に対応した動きが必要となる。
【0003】
ロボットにおいて力制御を行う代表的な手法としては、インピーダンス制御と呼ばれる手法がある。インピーダンス制御とは、ロボットを、その実際の質量や粘性特性や弾性特性に関わらず、あたかも作業に適したそれらの値を持つかのように動作させる制御手法である。これは、ロボットに取り付けられた力覚センサーなどから得られる力情報に基づいて運動方程式を解き、ロボットをその解に従って動作させる制御手法である。この運動方程式を適切に設定することにより、マニピュレーター等のロボットを、あたかも所定の質量、粘性、弾性を持っているかのごとく動作させることが可能になる。このようなインピーダンス制御や力制御に関する従来技術としては、特許文献1、2、3に開示される技術が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6−320451号公報
【特許文献2】特開平2−205489号公報
【特許文献3】特開平4−369004号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1には、制御対象が柔軟である場合のような、非常に複雑な系においても、精度良くインピーダンス制御を行う手法が開示されている。
【0006】
特許文献2には、力覚センサーを用いずに力を推定し、より単純な機械的な構造により、インピーダンス制御を行う手法が開示されている。
【0007】
これらの特許文献1、2の手法は、より複雑な系での制御精度の改善、或いは、より単純な系でのインピーダンス制御を実現するものであるが、その代償として、リアルタイム性が要求される多くの演算が必要になるという問題がある。
【0008】
例えば、特許文献1の手法では、力制御の1ループごとに、順ダイナミクスモデルと逆ダイナミクスモデルの計算を必要とする。また特許文献2の手法では、力制御の1ループごとに力を推定するために、その明細書に記載された式の演算を行う必要がある。
【0009】
一方、特許文献3には、演算量を削減するための1つの手法が開示されている。これは、上記の特許文献1、2に記載される逆ヤコビアン行列を求める計算を行わずに、転置ヤコビアン行列を用いることにより、計算量を削減するものである。
【0010】
しかしながら、この特許文献3の手法においても、リアルタイム性が要求される多くの演算が必要になるという問題がある。また、所望の反力を得るまでにマニピュレーターが加速してしまう事態が生じるおそれがあるため、異常時の対応にも問題がある。
【0011】
本発明の幾つかの態様によれば、制御ハードウェアーへの性能要求を低減できると共に応答性の改善も図れるロボット制御システム、ロボットシステム等を提供できる。
【課題を解決するための手段】
【0012】
本発明の一態様は、ロボットのフィードバック制御の目標値を出力する目標値出力部と、力覚センサーからのセンサー情報に基づいて力制御を行い、前記目標値の補正値を出力する力制御部と、前記補正値により補正された前記目標値に基づいて、前記ロボットの前記フィードバック制御を行うロボット制御部とを含み、前記力制御部は、前記ロボットの姿勢に応じて変化する制御パラメーターを事前計算する事前計算部と、前記センサー情報と前記制御パラメーターとに基づき前記補正値を求める演算処理を実行する実行部とを含むロボット制御システムに関係する。
【0013】
本発明の一態様によれば、ロボットの姿勢に応じて変化する制御パラメーターの事前計算が行われ、力覚センサーからのセンサー情報と、事前計算された制御パラメーターとに基づき補正値を求める演算処理が実行される。そして、得られた補正値に基づいて目標値が補正され、補正された目標値に基づいて、ロボットのフィードバック制御が行われる。このようにすれば、実行部での演算処理の実行タイミング前に、ロボットの姿勢に応じて変化する制御パラメーターが、事前計算されるようになる。従って、制御ハードウェアーへの性能要求を低減できると共に応答性の改善も図れるロボット制御システムの提供が可能になる。
【0014】
また本発明の一態様では、力制御部は、前記事前計算部で計算された前記制御パラメーターが格納されるFIFOを含み、前記実行部は、前記FIFOから前記制御パラメーターを読み出し、読み出された前記制御パラメーターに基づき前記補正値を求める前記演算処理を実行してもよい。
【0015】
このようにすれば、事前計算部は、事前計算した制御パラメーターをFIFOに格納した後は、他の処理を行ったり、処理を停止することなどが可能になるため、処理の効率化等を図れる。
【0016】
また本発明の一態様では、前記FIFOには、前記実行部で使用される前記制御パラメーターが、前記実行部の演算処理が実行されるタイミングごとに、先入れ先出し方式で記憶されてもよい。
【0017】
このようにすれば、実行部は、各演算処理が実行されるタイミングにおいて、制御パラメーターをFIFOから読み出すだけで、制御パラメーターを用いた演算処理を実行できるようになる。
【0018】
また本発明の一態様では、前記実行部は、前記FIFOの残りデータ量が所与のしきい値以下になった場合に、前記事前計算部に対して、前記制御パラメーターを事前計算することを要求する事前計算要求を行ってもよい。
【0019】
このようにすれば、事前計算部は、少なくともFIFOの残りデータ量が無くなるまでの期間に、制御パラメーターを事前計算すれば済むようになるため、事前計算部に対するリアルタイム処理要求の緩和等を図れる。
【0020】
また本発明の一態様では、前記事前計算部は、前記制御パラメーターとして、逆ヤコビアンの行列要素を事前計算し、前記実行部は、事前計算された前記逆ヤコビアンの前記行列要素に基づいて、前記目標値の前記補正値を求めてもよい。
【0021】
このようにすれば、逆ヤコビアンの行列要素については事前計算されるようになり、実行部は、逆ヤコビアンの行列要素を演算する必要がなくなるため、実行部に対する性能要求等を軽減できる。
【0022】
また本発明の一態様では、前記事前計算部は、前記制御パラメーターとして、計画軌道に対するロボット軌道の許容範囲を示すリミッター値を事前計算し、前記実行部は、前記計画軌道に対して前記ロボット軌道が前記許容範囲を超えたと判断した場合に、前記許容範囲を超えたことを示す割り込みを発生させてもよい。
【0023】
このようにすれば、ロボット軌道の許容範囲を示すリミッター値については事前計算されるようになり、実行部は、リミッター値を演算する必要がなくなるため、実行部に対する性能要求等を軽減できる。また、ロボット軌道が許容範囲を超えた場合には、割り込みが発生するようになり、適切なエラー処理等を実行できるようになる。
【0024】
また本発明の一態様では、前記事前計算部は、前記計画軌道の周辺のヤコビアンを求めることで、前記リミッター値を事前計算してもよい。
【0025】
このようにすれば、ロボットの姿勢に応じて許容範囲が変化する場合にも、許容範囲を示すリミッター値を適切に事前計算できるようになる。
【0026】
また本発明の一態様では、前記事前計算部は、前記制御パラメーターとして、前記力覚センサーの前記センサー情報を補正するための補正係数を事前計算し、前記実行部は、前記補正係数に基づいて前記センサー情報の補正処理を行ってもよい。
【0027】
このようにすれば、センサー情報を補正するための補正係数については事前計算されるようになり、実行部は、補正係数を演算する必要がなくなるため、実行部に対する性能要求等を軽減できる。
【0028】
また本発明の一態様では、前記目標値出力部は、前記ロボットの軌道情報を出力する軌道生成部と、前記軌道生成部からの前記軌道情報に基づいてインバースキネマティクス処理を行い、前記ロボットの関節角情報を前記目標値として出力するインバースキネマティクス処理部とを含んでもよい。
【0029】
このようにすれば、軌道生成部からの軌道情報に基づいて、インバースキネマティクス処理によりロボットの関節角情報を求め、求められた関節角情報を目標値として、ロボットのフィードバック制御を実行できるようになる。
【0030】
また本発明の一態様では、前記力制御部は、前記力制御としてインピーダンス制御を行ってもよい。
【0031】
また本発明の一態様では、前記目標値は、前記ロボットの関節角情報であり、前記補正値は、前記関節角情報の補正値であってもよい。
【0032】
また本発明の一態様では、上記のいずれかに記載のロボット制御システムと、前記ロボットとを含むロボットシステムに関係する。
【図面の簡単な説明】
【0033】
【図1】本実施形態のロボット制御システム及びロボットシステムの構成例。
【図2】本実施形態のロボットシステムの一例。
【図3】図3(A)〜図3(C)は力制御についての説明図。
【図4】図4(A)、図4(B)はコンプライアンス制御についての説明図。
【図5】図5(A)、図5(B)はインピーダンス制御についての説明図。
【図6】図6(A)、図6(B)はインバースキネマティクスについての説明図。
【図7】図7(A)、図7(B)はヤコビアンについての説明図。
【図8】ヤコビアンによる制御手法についての説明図。
【図9】ヤコビアンによる制御手法についての説明図。
【図10】力覚フィードバックを含まない場合の制御系の基本構成例。
【図11】力覚フィードバックを含む場合の制御系の基本構成例。
【図12】本実施形態のロボット制御システムの制御系の基本構成例。
【図13】本実施形態のロボット制御システムの詳細な構成例。
【図14】FIFOを用いた本実施形態の処理の説明図。
【図15】本実施形態のロボット制御システムの更に詳細な構成例。
【図16】本実施形態の詳細な処理を示すフローチャート。
【図17】本実施形態の詳細な処理を示すフローチャート。
【図18】図18(A)〜図18(C)は本実施形態の詳細な処理を示すフローチャート。
【図19】本実施形態の詳細な処理を示すフローチャート。
【図20】本実施形態の詳細な処理を示すフローチャート。
【発明を実施するための形態】
【0034】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【0035】
1.構成
本実施形態のロボット制御システム(マニピュレーター制御システム)及びこれを含むロボットシステムの構成例を図1に示す。なお本実施形態のロボット制御システム、ロボットシステムは図1の構成には限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0036】
本実施形態のロボット制御システムは、力制御部20、目標値出力部60、ロボット制御部80を含む。また本実施形態のロボットシステムは、このロボット制御システムと、ロボット100(力覚センサー10)により構成される。
【0037】
目標値出力部60は、ロボット(狭義にはマニピュレーター)のフィードバック制御の目標値を出力する。この目標値に基づいてロボット100のフィードバック制御が実現される。多関節ロボット等を例に取れば、この目標値は、ロボットの関節角情報などである。ロボットの関節角情報は、例えばロボットのアームのリンク機構における各関節の角度(ジョイント軸とジョイント軸のなす角度)を表す情報である。
【0038】
目標値出力部60は、軌道生成部62とインバースキネマティクス処理部64を含むことができる。軌道生成部62は、ロボットの軌道情報を出力する。軌道情報は、ロボットのエンドエフェクター部(エンドポイント)の位置情報(x,y,z)と、各座標軸回りでの回転角度情報(u,v,w)を含むことができる。インバースキネマティクス処理部64は、軌道生成部62からの軌道情報に基づいてインバースキネマティクス処理を行い、例えばロボットの関節角情報を目標値として出力する。インバースキネマティクス処理は、関節を有するロボットの動きを計算する処理であり、ロボットのエンドエフェクター部の位置姿勢などから関節角情報等を逆運動学により計算する処理である。
【0039】
力制御部20(狭義にはインピーダンス制御部)は、力覚センサー10からのセンサー情報に基づいて力制御(力覚制御)を行って、目標値の補正値を出力する。更に具体的には、力制御部20(インピーダンス制御部)は、力覚センサー10からのセンサー情報(力情報、モーメント情報)に基づいてインピーダンス制御(或いはコンプライアンス制御)を行う。力制御は、例えば、従来の位置制御に対して、力のフィードバックが加わった制御である。インピーダンス制御は、外力に対するエンドエフェクター部(手先)の変位の生じやすさ(機械インピーダンス)を、制御により望ましい状態にする手法である。具体的には、ロボットのエンドエフェクター部の質量に粘性係数と弾性要素が接続されるモデルにおいて、目標として設定した粘性係数と弾性係数で物体に接触するようにする制御である。また力覚センサー10は、ロボット100が出している力の反力として受けている力やモーメントを検出するセンサーである。この力覚センサー10は、通常、ロボット100のアームの手首部分に取り付けられ、検出された力やモーメントは、センサー情報として、各種の力制御(インピーダンス制御)に用いられる。
【0040】
ロボット制御部80は、目標値出力部60からの目標値に基づいて、ロボットのフィードバック制御を行う。具体的には、力制御部20からの補正値により補正された目標値に基づいて、ロボットのフィードバック制御を行う。例えば補正値により補正された目標値と、ロボット100からのフィードバック信号に基づいて、ロボット100のフィードバック制御を行う。例えばロボット制御部80は、複数の駆動制御部82-1〜82-N(狭義にはモーター制御部)を含み、ロボット100が有する駆動部102-1〜102-Nに対して、その制御信号を出力する。ここで駆動部102-1〜102-Nは、ロボット100の各関節を動かすための駆動機構であり、例えばモーター等により実現される。
【0041】
そして本実施形態では、力制御部20が、事前計算部22と実行部26を含む。事前計算部22は、ロボット100の姿勢に応じて変化する制御パラメーター(演算パラメーター)を事前計算する。そして実行部26(ハードリアルタイム処理部)は、センサー情報と制御パラメーターとに基づき補正値を求める演算処理を実行する。即ち力覚センサー10からのセンサー情報と、事前計算された制御パラメーターとに基づいて、目標値の補正値を求め、例えば目標値出力部60に出力する。これにより、力制御により補正された目標値に基づいて、ロボット100のフィードバック制御が行われるようになる。
【0042】
このように本実施形態では、ロボットの姿勢に応じて変化する制御パラメーターが事前計算され、この事前計算された制御パラメーターに基づいて、各制御タイミングでの補正値が求められる。そして、この補正値により補正された目標値に基づいてロボットのフィードバック制御が行われる。このように、ロボット制御に必要な制御パラメーターを、リアルタイム応答性が必要とされない事前計算により求めるようにすれば、制御ハードウェアーへの性能要求を低減できると共に、ロボット制御の応答性等も改善できるようになる。なお、事前計算は、例えば、実際に制御パラメーターが必要となるタイミングよりも前のタイミングで、ロボットの計画軌道等に基づいて制御パラメーターを予め計算しておくことである。
【0043】
また力制御部20は、事前計算部22で計算された制御パラメーターが格納されるFIFO(First-In First-Out)24を含む。このFIFO24は、先入れ先出しのメモリー(レジスター)などにより実現できる。このFIFO24には、実行部26で使用される制御パラメーターが、実行部26の演算処理が実行されるタイミングごとに、先入れ先出し方式で記憶される。
【0044】
そして実行部26は、FIFO24から制御パラメーターを読み出し、読み出された制御パラメーターに基づき補正値を求める演算処理を実行する。即ち本実施形態では、事前計算された制御パラメーターをFIFO24に格納しておく。そして実行部26は、各演算処理実行タイミングにおいて、FIFO24からの制御パラメーターを読み出して、補正値を求める演算処理を実行する。
【0045】
この場合に実行部26は、FIFO24の残りデータ量が所与のしきい値以下(所与のデータ量以下)になった場合に、事前計算部22に対して、制御パラメーターを事前計算することを要求する事前計算要求を行う。この事前計算要求により、事前計算部22は、制御パラメーターの事前計算を行い、事前計算された制御パラメーターをFIFO24に格納する。
【0046】
ここで、制御パラメーターは、補正値の演算処理に使用されるパラメーター(演算パラメーター)であり、例えばロボット100の姿勢に応じてその値が変化するパラメーターである。この制御パラメーターとしては、逆ヤコビアンの行列要素や、ロボット軌道の許容範囲を示すリミッター値や、力覚センサー10のセンサー情報を補正するための補正係数などの種々のパラメーターを想定できる。
【0047】
例えば事前計算部22は、制御パラメーターとして、逆ヤコビアンの行列要素を事前計算する。そして実行部26は、事前計算された逆ヤコビアンの行列要素に基づいて、目標値の補正値を求める。また事前計算部22は、制御パラメーターとして、計画軌道に対するロボット軌道の許容範囲を示すリミッター値を事前計算する。そして実行部26は、計画軌道に対してロボット軌道が許容範囲を超えたと判断した場合に、許容範囲を超えたことを示す割り込みを発生させる。この場合に事前計算部22は、計画軌道の周辺のヤコビアン(計画軌道からの所与の範囲のポイントでのヤコビアン)を求めることで、リミッター値を事前計算する。また事前計算部22は、制御パラメーターとして、力覚センサー10のセンサー情報を補正するための補正係数(力覚センサー補正値)を事前計算する。そして実行部26は、補正係数に基づいてセンサー情報の補正処理を行う。この補正処理後のセンサー情報に基づいて、目標値の補正値が求められる。なお、逆ヤコビアン、リミッター値、補正係数の詳細については後述する。なお、ロボット軌道は、例えばエンドエフェクター部(エンドポイント)の移動軌道であり、計画軌道は、制御系が予め予定しているロボット軌道である。
【0048】
図2に本実施形態のロボット制御システムを含むロボットシステムの例を示す。このロボットシステムは、制御装置300(情報処理装置)とロボット310(図1のロボット100)とを含む。制御装置300はロボット310の制御処理を行う。具体的には、動作シーケンス情報(シナリオ情報)に基づいてロボット310を動作させる制御を行う。ロボット310は、アーム320及びハンド(把持部)330を有する。そして制御装置300からの動作指示にしたがって動作する。例えば、図示しないパレットに載せられたワークを把持したり、移動するなどの動作を行う。また、図示しない撮像装置で取得された撮像画像情報に基づいて、ロボットの姿勢やワークの位置などの情報が検出され、検出された情報が制御装置300に送られる。
【0049】
本実施形態のロボット制御システムは例えば図2の制御装置300に設けられ、例えば制御装置300のハードウェアーやプログラムによりロボット制御システムが実現される。そして本実施形態のロボット制御システムによれば、制御装置300などの制御ハードウェアーに対する性能要求を低減できると共に、ロボット310を高い応答性で動作させることが可能になる。なお図2は単腕型の例であるが、双腕型等の多腕型のロボットであってもよい。
【0050】
2.本実施形態の手法
次に本実施形態のロボット制御手法について詳細に説明する。
【0051】
2.1 概要
本実施形態では、リアルタイム応答性の必要とされる部分を最小化することにより、応答性を改善し、また制御ハードウェアーの性能要求を低減することを目的としている。即ち、ロボット(マニピュレーター)に用いられる力制御、インピーダンス制御を、単純で低コストな制御系で実現する。現状の制御系が高コストである原因は、高速なハードリアルタイム性を要求される部分が大きいからであり、高コストが許容されるのは、現在のシステム全体が高価なものであるからである。従って、低コスト化のためには、高速なリアルタイム性が要求される部分を小さくし、性能要求を緩和することが必要である。
【0052】
このような本実施形態の基本的なアイデアは次のような事実による。つまり、インピーダンス制御を用いようとも、その軌道は予測可能である場合が多いということである。
【0053】
例えば、双腕又は単腕のロボット(マニピュレーター)が対象物体をインピーダンス制御しながら運搬するというような場合、その軌道は予測可能である。
【0054】
例えば、ロボットを用いてある物体を別の物体に嵌め合わせるような場合、或いは、溶接等のようにロボットがある物体の表面をなぞる場合を考える。このような場合に、従来手法においても、全くの手探りということはなく、治具を用いてある程度の位置が決まっているか、或いは近年の場合には撮像装置を用いて位置を決める場合がほとんどである。この場合も、その位置、軌道はほぼ予測可能である。
【0055】
要するに、従来の場合も近年の場合も、インピーダンス制御を用いる場合に、その軌道が全くの手探りということは非常に少なく、むしろ多くの場合は事前に予測可能である。つまり、インピーダンス制御などを用い、外部拘束による軌道変化は非常に小さい。
【0056】
このように、主たる軌道が予測可能であり、インピーダンス制御などによる軌道変化が小さいものであるならば、それに最適な構造・制御手法を採用することにより、応答性を改善すると共に、制御ハードウェアーの性能要求を低減することが可能になる。つまり、インピーダンス制御に関わるヤコビアンや逆ヤコビアンは、ロボットの姿勢に依存するものである。しかしながら、軌道が予測可能であるならば、その軌道上のある点について、ヤコビアンや逆ヤコビアンを予め計算しておくことが可能となる。この部分はリアルタイム応答性を必要としない。
【0057】
その結果、各点での値が予め計算されていることによる応答性の改善や、その値の事前計算にはリアルタイム応答性を必要としないことによるハードウェアへの性能要求の低減が可能となる。
【0058】
以上の本実施形態の基本的アイデアをまとめると、以下の通りである。
【0059】
即ち、従来の場合、逐次に変化する軌道に対し、姿勢の変化に対応して変化するパラメーターを、その都度、時間遅れなく計算するする必要があった。しかしながら、人や他の機器との時間的に変化する相互作用のある場合を除き、インピーダンス制御を行っても、軌道は予想可能である。産業用機械のタスクのうちのかなりの部分は、これに該当する。つまり、産業用機械において、予測不能な外力により軌道が変化する事態は、異常な事態である。
【0060】
軌道が予測可能であれば、高速リアルタイム性が要求される部分のうち、事前計算が可能な部分がかなり存在する。この事前計算を予め行っておき、FIFO(先入れ先出しメモリ)に入れておく。FIFOの長さを適当に取ることにより、事前計算処理のリアルタイム性は非常に緩和される。なお、リアルタイム処理とは、応答時間の最悪値(イベント発生後に実際に応答が起こるまでの時間の最悪値)が保証されている処理である。そして、その応答の価値が時間経過に対してゆっくりと下がるのがソフトリアルタイム処理であり、急激に下がるのがハードリアルタイム処理である。例えばロボット制御やエアーバック制御の処理は、ハードリアルタイム処理になる。
【0061】
本実施形態では、事前計算を、FIFOが空にならないような時間間隔で行う。高速なハードリアルタイム処理を行う部分は、FIFOから制御パラメーターを読み出して、その制御パラメーターを用いる。
【0062】
また、ハードリアルタイム処理の結果が、事前計算において想定していた範囲を超えた場合は、それを事前計算部へ通知する。また、指定のエラー処理を行う。
【0063】
具体的には本実施形態では、従来では一体型であったインピーダンス制御部を、上位制御層と下位制御層に分割する。即ち図1に示すように、上位制御層である事前計算部22と、下位制御層のハードリアルタイム処理部である実行部26と、これらの間に介在するFIFO24に分割する。ここで実行部26とFIFO24は各関節ごとに与えられる。なお、前述した特許文献3でも階層分割を行っているが、その内容は本実施形態とは全く異なる。
【0064】
また、これらの各制御層での処理の時間間隔が異ならせる。即ち、リアルタイム応答を行う下位制御層である実行部26は、例えば100μs〜1msの時間間隔で処理を行う.一方、まとめて事前計算を行う上位制御層である事前計算部22は、例えば数ms〜数十msの時間間隔で処理を行う。つまり、マルチレートの処理を行う。
【0065】
上位制御層でまとめて事前計算された値は、先入れ先出しメモリであるFIFO24に送られ、下位制御層は、事前計算された値を逐次的にFIFOから読み出して、ハードリアルタイム処理を行う。
【0066】
ここで、事前計算部22で事前計算され、FIFO24を通じて通信されるパラメーターは、例えば、後に詳述する逆ヤコビアン、リミッター値、センサー姿勢の補正係数(ハンド自重補正係数)である。
【0067】
事前計算部22は、上記のパラメーターの事前計算を行う。即ち、上位制御層である事前計算部22は、FIFO24の状態を見ながら、適切な間隔で事前計算を行う。この適切な間隔とは、FIFO24が空にならないように、余裕を持って事前計算が行える程度であればよい。具体的には、事前計算部22は、FIFO24の残りデータ量が少なくなった時に起動される。これにより事前計算部22に対するリアルタイム処理要求は緩和される。そして、ハードリアルタイム処理部である実行部26は、センサー姿勢の補正係数、逆ヤコビアンを用いてインピーダンス制御処理を行う。そして実行部26は、インピーダンス制御処理の結果が、リミッター値の範囲を超えた場合に、事前計算部22に対してエラーを通知する。そして実行部26は、エラーの発生時に、所定のエラー処理を行う。
【0068】
なお、本実施形態では、軌道は予測可能であることを仮定しており、リミッター値は、その仮定から外れるほどの大きなインピーダンス制御による軌道変化があったことを検出するためのものである。このような状態となった場合には、例えば上位制御層への割り込み処理を要求するようにする。
【0069】
以上の本実施形態の手法によれば、パラメーターが予め事前計算されていることによる応答性の改善と、その事前計算にはリアルタイム応答性を必要としないことによる制御ハードウェアーへの性能要求の低減を実現できるようになる。
【0070】
2.2 力制御、インピーダンス制御
次に、力制御、インピーダンス制御(コンプライアンス制御)の概要について説明する。
【0071】
図3(A)は、ロボットの左のアームAL、右のアームARで物体OBを挟んで移動している様子を示している。例えば、位置制御だけでは、物体を落としたり、破壊してしまうおそれがある、力制御によれば、柔軟な物体や脆い物体を、図3(A)のように両側から適切な力で挟んで移動させることが可能になる。
【0072】
また、力制御によれば、図3(B)に示すように、不確実性のある物体の表面SFをアームAM等でなぞることが可能になる。このような制御は位置制御だけでは実現不能である。また、力制御によれば、図3(C)に示すように、粗い位置決めの後に、探って位置合わせをして、物体OBを穴部HLにはめ込むことも可能になる。
【0073】
しかしながら、バネなどの実際の機械部品による力制御では、用途が限られるという問題がある。また、このような機械部品による力制御では、特性の動的な切り替えが困難である。
【0074】
一方、モーターのトルクを制御するトルク制御は簡単であるが、位置精度が悪くなるという問題がある。また、異常時に衝突などの問題が生じる。例えば図3(A)において、異常事態が起きて、物体OBを落としてしまった場合に、トルク制御では、釣合うべき反力が無くなるため、左右のアームAL、ARが衝突してしまうなどの問題が生じる。
【0075】
これに対して、インピーダンス制御(コンプライアンス制御)は、制御が複雑であるという不利点があるものの、汎用性や安全性が高いという利点がある。
【0076】
図4(A)、図4(B)は、インピーダンス制御の1つであるコンプライアンス制御を説明する図である。コンプライアンスはバネ定数の逆数を意味し、バネ定数が硬さを表すのに対して、コンプライアンスは柔らかさを意味する。ロボットと環境との間に相互作用が働くときに、機械的柔軟性であるコンプライアンスを与える制御をコンプライアンス制御と呼ぶ。
【0077】
例えば図4(A)では、ロボットのアームAMには力覚センサーSEが取り付けられている。このロボットのアームAMは、力覚センサーSEで得られたセンサー情報(力・トルク情報)に応じて姿勢が変わるようにプログラムされている。具体的には、図4(A)のA1に示す仮想的なバネが、あたかもアームAMの先端に取り付けられているかのようにロボットを制御する。
【0078】
例えばA1に示すバネのバネ定数が100Kg/mであったとする。これを図4(B)のA2に示すように5Kgの力で押せば、A3に示すようにバネは5cmだけ縮む。逆に言えば、5cmだけ縮んでいれば、5Kgの力で押されているといえる。つまり、力情報と位置情報とが対応づけられている。
【0079】
コンプライアンス制御では、このA1に示す仮想的なバネがアームAMの先端に取り付けられているかのような制御が行われる。具体的には、ロボットは、力覚センサーSEの入力に応答して動作し、A2に示す5Kgの加重に対して、A3に示すように5cmだけ後退するように制御され、力情報に対応して位置情報が変化するように制御される。
【0080】
このような単純なコンプライアンス制御では時間項を含まないが、時間項を含み、その2次の項までを考慮した制御が、インピーダンス制御である。具体的には、2次の項は質量項であり、1次の項は粘性項であり、インピーダンス制御のモデルは下式(1)に示すような運動方程式で表すことができる。
【0081】
【数1】
【0082】
上式(1)において、mは質量、μは粘性係数、kは弾性係数、fは力、xは目標位置からの変位である。またxの1次微分、2次微分は、各々、速度、加速度に対応する。インピーダンス制御では、上式(1)の特性をアームの先端であるエンドエフェクター部に持たせるための制御系を構成する。即ち上式(1)で表される仮想質量、仮想粘性係数、仮想弾性係数を、あたかもアームの先端が持っているかのように制御を行う。
【0083】
このように、インピーダンス制御は、アームの先端の質量に粘性要素と弾性要素が各方向に接続されるモデルにおいて、目的として設定された粘性係数と弾性係数で物体に接触するようにする制御である。
【0084】
例えば図5(A)に示すように、ロボットのアームAL、ARで物体OBをつかんで、軌道TRに沿って移動させる制御を考える。この場合に、軌道TRLは、物体OBの左側の内側に設定された点PLが通る軌道であり、インピーダンス制御を想定して決定された仮想的な左手の軌道である。また軌道TRRは、物体OBの右側の内側に設定された点PRが通る軌道であり、インピーダンス制御を想定して決定された仮想的な右手の軌道である。この場合に、アームALは、アームALの先端と点PLの距離差に応じた力が発生するように制御される。またアームARは、アームARの先端と点PRの距離差に応じた力が発生するように制御される。このようにすれば、物体OBを柔らかくつかみながら移動させるインピーダンス制御を実現できる。そして、インピーダンス制御では、図5(A)のB1に示すように物体OBが落下する事態が生じたとしても、アームAL、ARは、B2、B3に示すように、その先端が点PL、PRの位置で止まるように制御される。即ち、仮想的な軌道が衝突軌道でなければ、アームAL、ARが衝突するのを防止できる。
【0085】
また図5(B)のように、物体の表面SFをなぞるように制御する場合にも、インピーダンス制御では、アームAMの先端に対して、仮想的な軌道TRVAと先端との距離差DFに応じた力が働くように制御される。従って、アームAMを、力を加えながら表面SFをなぞるような制御が可能になる。
【0086】
2.3 ヤコビアン、逆ヤコビアン
以上のようなインピーダンス制御、コンプライアンス制御等においては、その動作は、基本的にはデカルト座標系で計算される。そして、デカルト座標系でのロボットの手先の動きを、ロボットの各関節の動きに翻訳するためにはインバースキネマティクス処理が必要となる。例えば図6(A)において、C1に示す力が働いて、アームAMの先端PTがC2に示すように移動した場合に、各関節J1、J2の角度を求めるためには、インバースキネマティクス処理が必要になる。
【0087】
しかしながら、図6(B)に示すように、一般的には、インバースキネマティクス処理は非常に難しい処理である。一方、ロボットの各関節の値を設定し、それを手先の動きに変換する処理であるフォワードキネマティクス処理は簡単な処理である。このような処理において、姿勢変化が微小であれば、フォワードキネマティクスを用いたヤコビアンを用いることができる。
【0088】
例えば下式(2)に示すように、m個の変数を入力とし、n個の出力を与えるある関数fを考える。或いは、m個の変数を入力とし、1つの出力を与える関数fをn組用意する。
【0089】
【数2】
【0090】
この場合に、ヤコビアン(ヤコビ行列)は、下式(3)に表される行列である。
【0091】
【数3】
【0092】
つまり、ヤコビアンは、xの「ある値」の近傍において、xとyの関係を線形近似したものである。従って、一般的には、xの「ある値」が変化すれば、ヤコビアンも変化する。
【0093】
ここで、xを関節角、yをロボットの手先の姿勢(xyzuvw)とすれば、上式(2)の関数は、フォワードキネマティクス関数となり、これは簡単に求めることができる。
【0094】
上式(2)の関数をフォワードキネマティクス関数と考えれば、上式(3)のヤコビアン(ヤコビ行列)は、ある姿勢において各関節が微小に変化した場合の、それに伴う手先の微小な変化を与える関係式となる。即ち図7(A)において、関節J1の角度が微小な単位量だけ変位した場合に、先端PTがどれだけ変位するかを表す関係式になる。或いは図7(B)において、関節J2の角度が微小な単位量だけ変位した場合に、先端PTがどれだけ変位するかを表す関係式になる。
【0095】
この場合に、各関節角の微小変化と、手先の微小変化との対応は、その姿勢に応じて変化する。つまり、ヤコビアンは、姿勢の変化に対応して、その都度、計算する必要がある。
【0096】
さて、前述したように、手先の位置から関節角を求めるインバースキネマティクス処理は、一般的には非常に難しい処理である。
【0097】
しかしながら、下式(4)のように、ヤコビアンの逆行列である逆ヤコビアンを求めることができれば、手先の微小な変化を各関節角の微小な変化に変換する関係式を求めることができる。
【0098】
【数4】
【0099】
ところが、一般的には、ヤコビアンは正方行列ではなく、且つ、rank(階数)も低く、通常の意味の逆行列は存在しない。例えば7軸のロボットでは、手先の自由度は6つしかないので、7×7ではなく、7×6の行列になってしまう。但し、通常の意味の逆行列と類似した性質を持つ一般化逆行列は存在し得る。この一般化逆行列を用いることにより、インバースキネマティクス関数を必要とする処理を、フォワードキネマティクス関数を用いて実行することが可能になる。これを利用して、本実施形態では、処理の簡素化を図っている。具体的には、制御パラメーターとして、逆ヤコビアンの行列要素を事前計算し、事前計算された逆ヤコビアンの行列要素に基づいて、目標値の補正値を求めている。
【0100】
2.4 リミッター値
さて、図8において、計画軌道TRPに沿ってアームAMの先端PTを移動させる場合を考える。この場合に、産業用途のロボットにおいては、ロボット軌道が、軌道TRAのように大きくずれることはなく、このような軌道TRAになった場合には、それは異常状態であると判断できる。
【0101】
そこで本実施形態では、制御パラメーターとして、計画軌道TRPに対するロボット軌道の許容範囲RTを示すリミッター値(例えばモーターのエンコーダー値のリミッター値)を事前計算する。そして計画軌道TRPに対してロボット軌道が許容範囲RTを超えたか否かを判断する。そして許容範囲を超えた場合には、それを示す割り込みを発生させる。
【0102】
具体的には本実施形態では、計画軌道TRPの周辺のヤコビアンを求めることで、リミッター値を事前計算する。即ち、ヤコビアンの誤差が許容される範囲を、許容範囲RTとして、リミッター値を事前計算する。例えばヤコビアンの行列要素の誤差が所与の値以下になる範囲を許容範囲RTとして、リミッター値を事前計算する。
【0103】
この場合に、図8に示すように、許容範囲RTは一定ではなく、許容範囲RTの大きさはロボットのアームAMの姿勢に依存する。例えば図8のD1に示す姿勢の場合とD2に示す姿勢の場合とで、許容範囲RTは同一ではない。そしてD1とD2とで、ヤコビアン(逆ヤコビアン)の値も異なる。このため本実施形態では、計画軌道TRPの各点の周辺においてヤコビアンを求めることで(各姿勢におけるヤコビアンを求めることで)、リミッター値を事前計算するようにしている。
【0104】
なお、この場合にヤコビアンを計算する姿勢は、図9において実線で示す姿勢であり、破線で示す姿勢ではない。即ち、図5(A)で説明したように、インピーダンス制御においては、物体の内側に設定された点PL、PRを通る仮想的な軌道を目標として制御が行われる。例えば図9のアームAMの先端PTと仮想点VPT(PL、PR)との差に応じた力が発生するように制御される。そしてヤコビアンの計算時には、このような仮想的な軌道に対応する破線で示す姿勢ではなく、実線で示す姿勢においてヤコビアンを計算することになる。
【0105】
2.5 制御系の構成
図10に、力覚フィードバックを含まない場合の制御系の基本構成例を示す。
【0106】
軌道生成部562は、軌道情報p(xyzuvw)を生成してインバースキネマティクス処理部564に出力する。ここで軌道情報pは、例えばアームの先端(エンドエフェクター部)の位置情報(xyz)と各軸回りの回転情報(uvw)を含む。そしてインバースキネマティクス処理部564は、この軌道情報pに基づいてインバースキネマティクス処理を行って、目標値である各関節の関節角θを生成して出力する。そして、この関節角θに基づいて、モーター制御を行うことで、ロボットのアームの動作制御が行われる。この場合に図10のモーター(M)の制御は、公知のPID制御により実現されている。このPID制御は公知の技術であるため、ここでは詳細な説明を省略する。
【0107】
図10において、軌道生成部562とインバースキネマティクス処理部564とにより目標値出力部が構成される。この目標値出力部の処理は、ロボットの全体的な処理になる。一方、後段のモーター制御は、関節毎の制御になる。
【0108】
なお、前述した特許文献3の従来技術においても、上位制御層と下位制御層の区分分割を行っている。しかしながら、特許文献3における上位制御層は、図10の軌道生成部562とインバースキネマティクス処理部564の部分であり、下位制御層は、モーター制御の部分であり、本実施形態とは異なる区分分割となっている。
【0109】
図11に、力覚フィードバックを含む場合の制御系の基本構成例を示す。図11では、図10に対して、更に、力覚センサー510と、姿勢補正部532と、ハンド・ツール自重補正部534と、運動方程式処理部536と、フォワードキネマティクス処理部540が設けられている。
【0110】
図11では、力覚センサー510からのセンサー情報を受けて、姿勢補正部532がセンサーの姿勢補正を行い、ハンド・ツール自重補正部534がハンド・ツール自重補正を行う。そして、運動方程式処理部536が、前述の式(1)に示すような運動方程式の解を求める処理を行い、補正値Δpを出力する。この補正値Δpにより軌道情報pが補正されることで、目標値である関節角θの補正処理が行われる。またフォワードキネマティクス処理部540は、フォワードキネマティクス処理を行って、ロボットの軌道情報p’を求めて軌道生成部562にフィードバックする。また姿勢補正部532、ハンド・ツール補正部534に対して姿勢を特定するための情報を出力する。
【0111】
図12に、本実施形態の制御系の基本構成例を示す。この制御系は、図11と同様に力覚フィードバックを含む。図12が図11と異なるのは、図12では逆ヤコビアン処理部38が更に設けられている点である。
【0112】
具体的には、図11では、運動方程式処理部536からのΔpにより、軌道生成部562が出力するpが補正されている。これに対して図12では、運動方程式処理部536からのΔpに基づいて、逆ヤコビアン処理部38が、Δθを求める逆ヤコビアン処理を行う。即ち、前述の式(4)において、Δy(Δy1,Δy2・・・)がΔpになり、Δx(Δx1,Δx2・・・)がΔθになる逆ヤコビアン処理を行って、Δθを求める。そして、求められたΔθにより、目標値である関節角θが補正される。このような構成にすることにより、運動方程式の処理結果を関節ごとに分解できるようになる。
【0113】
そして図12において、姿勢補正部32、ハンド・ツール自重補正部34、逆ヤコビアン処理部38、フォワードキネマティクス処理部40の処理では、ロボット姿勢に応じて、使用されるパラメーターの値が変化する。
【0114】
しかしながら、ロボットの姿勢変化が予めプログラムされたものであるか、或いはそこからの差異が小さければ、これらのパラメーター値は軌道をプログラムする時点で予め計算しておくことができる。そこで本実施形態では、これらのパラメーター値を事前計算で求める手法を採用している。
【0115】
また、上述の「差異が小さい」とは、各補正における誤差が、運動方程式の解の誤差となった時に、その誤差が許容範囲内にあるということであり、またその結果のヤコビアン処理の結果の誤差が許容範囲内にあるということである。
【0116】
この「差異が小さい」ということは、上記のように、ロボットの実際の姿勢とプログラムされた姿勢との差異が小さいということに依存するものであり、その差異が想定よりも大きなものとなった場合には、エラーとして処理する必要がある。そこで本実施形態では、図8で説明したように許容範囲RTに対応するリミッター値を事前計算しておき、ロボット軌道が許容範囲RTを超えたと判断された場合には、割り込みを発生させるようにしている。
【0117】
2.6 詳細な構成例
図13に本実施形態のロボット制御システムの詳細な構成例を示す。図13は、図12で説明した制御系に対応する構成である。なお本実施形態のロボット制御システムは図13の構成には限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。例えば本実施形態のロボット制御システムとして、図11等で説明した制御系の構成を採用してもよい。
【0118】
図13の逆ヤコビアン事前計算部42、リミッター値事前計算部44、補正係数事前計算部46が、図1の事前計算部22に相当する。また図13のFIFO50、52、54が、図1のFIFO24に相当する。また図13のハンド・ツール自重・姿勢補正部35、運動方程式処理部36、逆ヤコビアン処理部38、リミッター処理部39、割り込み発生部48が、図1の実行部26に相当する。なおFIFO56はインバースキネマティクス処理部64からの関節角θを格納するためのFIFOである。
【0119】
逆ヤコビアン事前計算部42は、前述の式(4)の逆ヤコビアン(逆ヤコビアンの行列要素)を事前計算し、事前計算した逆ヤコビアン(逆ヤコビアンに対応する値)をFIFO50に格納する。そして逆ヤコビアン処理部38は、各演算処理実行タイミングにおいて、事前計算された逆ヤコビアンをFIFO50から読み出して、前述の式(4)に示すような逆ヤコビアン処理を行って、関節角を補正するための補正値を出力する。
【0120】
リミッター値事前計算部44は、図8で説明したロボット軌道の許容範囲に対応するリミッター値を事前計算し、事前計算したリミッター値をFIFO52に格納する。そしてリミッター処理部39は、各演算処理実行タイミングにおいて、事前計算されたリミッター値をFIFO52から読み出して、計画軌道に対してロボット軌道が許容範囲を超えたか否かを判断する。そして、許容範囲を超えたと判断されると、割り込み発生部48が、許容範囲を超えたことを示す割り込みを発生する。
【0121】
補正係数事前計算部46は、力覚センサー10のセンサー情報を補正するための補正係数を事前計算し、事前計算した補正係数をFIFO54に格納する。そしてハンド・ツール自重・姿勢補正部35は、事前計算された補正係数に基づいてセンサー情報の補正処理を行う。そして運動方程式処理部36は、この補正処理後のセンサー情報を用いて、前述の式(1)に対応する運動方程式の解を求める処理を行い、処理結果を逆ヤコビアン処理部38に出力する。すると、逆ヤコビアン処理部38は、この運動方程式処理部38からの処理結果と、事前計算された逆ヤコビアンに基づいて、前述の式(4)に示す逆ヤコビアン処理を行って、関節角の補正値を生成する。
【0122】
ここで、ハンド・ツール自重・姿勢補正部35は、図12のハンド・ツール自重補正部34及び姿勢補正部32に対応するものである。ここでハンド・ツール自重補正は、ロボットのハンドの自重や、ハンドがつかむツールの自重による影響を、力覚センサー10からのセンサー情報(力情報)から相殺するための補正処理である。また姿勢補正は、力覚センサー10の姿勢による影響を、センサー情報(力情報)から相殺するための補正処理である。これらのハンド・ツール自重補正及び姿勢補正は、例えば下式(5)のように表すことができる。
【0123】
【数5】
【0124】
上式(5)において、Fx,Fy,Fz、Fu,Fv,Fwは力覚センサー10からのセンサー情報である力情報、トルク情報である。またBx,By,Bz、Bu,Bv,Bwはバイアス項である。そして、補正後のセンサー情報(力情報、トルク情報)であるfx,fy,fz、fu,fv,fwが運動方程式処理部36に入力される。なお、データには固定値があるため、実質的な補正係数は6×7=42個となる。これらのハンド・ツール自重補正及び姿勢補正は公知の補正処理であるため、詳しい説明は省略する。
【0125】
図14は、FIFOを用いた本実施形態の処理を説明するための図である。図14において、TM1、TM2、TM3・・・は、実行部26(ハンド・ツール自重・姿勢補正部35、運動方程式処理部36、逆ヤコビアン処理部38、リミッター処理部39等)の演算処理の実行タイミングである。このように、本実施形態では、実行部26は、TM1、TM2、TM3・・・の各演算処理実行タイミングにおいて、事前計算された制御パラメーター(逆ヤコビアン、リミッター値、補正係数)をFIFO(FIFO50、52、54)から読み出す。
【0126】
そして図14のE1では、FIFOの残りデータ量(制御パラメーターの残りデータ量)がしきい値以下になったため、下位制御層である実行部26は、E2に示すように、上位制御層である事前計算部22(逆ヤコビアン事前計算部42、リミッター値事前計算部44、補正係数事前計算部46)に対して、制御パラメーターの事前計算要求を行う。すると、事前計算部22が、制御パラメーターの事前計算を行い、E3に示すように、事前計算された制御パラメーターをFIFOに格納する。
【0127】
この場合に、FIFOには、以前に事前計算した制御パラメーターが残存しているため、E4に示すタイミングについては、TM1、TM2、TM3・・・の演算処理実行タイミングに比べて、十分に長いインターバルを取ることができる。従って、実行部26に対しては、高速且つハードなリアルタイム処理が要求されるものの、事前計算部22に対しては、ある程度の処理の遅延が許容されるため、低速又はソフトなリアルタイム処理が要求されるだけになる。従って、事前計算部22は、逆ヤコビアンやリミッター値や補正係数を求めるというような負荷の高い計算処理を、時間的に余裕を持って実行することが可能になる。一方、実行部26では、逆ヤコビアンやリミッター値や補正係数を求めるというような負荷の高い計算処理を行わなくも済むため、高速且つハードなリアルタイム処理が要求されても、これに対応することが可能になる。
【0128】
なお図15は、ロボット制御部80と実行部26の接続関係の例を示す図である。図15では、図1のロボット制御部80が制御するモーター(広義には駆動部)が2つの場合を示している。
【0129】
インバースキネマティクス処理部64からの目標値(関節角)は、FIFO56-1を介してモーター制御部84-1に入力される。この場合に、この目標値は、逆ヤコビアン処理部38からの補正値により補正されて、モーター制御部84-1に入力される。そしてモーター制御部84-1は、補正後の目標値に基づいて、モーターM1の制御を行う。
【0130】
同様に、インバースキネマティクス処理部64からの目標値(関節角)は、FIFO56-2を介してモーター制御部84-2に入力される。この場合に、この目標値は、逆ヤコビアン処理部38からの補正値により補正されて、モーター制御部84-2に入力される。そしてモーター制御部84-2は、補正後の目標値に基づいて、モーターM2の制御を行う。
【0131】
また、リミッター値事前計算部44で事前計算されたリミッター値は、FIFO52-1を介してリミッター処理部39-1に入力される。リミッター処理部39-1は、事前計算されたリミッター値と、モーター制御部84-1からのエンコード値(回転角度検出情報)に基づいて、ロボット軌道が許容範囲を超えたか否かを判断する。そして、許容範囲を超えたと判断された場合には、割り込み発生部48が割り込みを発生する。
【0132】
同様に、リミッター値事前計算部44で事前計算されたリミッター値は、FIFO52-2を介してリミッター処理部39-2に入力される。リミッター処理部39-2は、事前計算されたリミッター値と、モーター制御部84-2からのエンコード値に基づいて、ロボット軌道が許容範囲を超えたか否かを判断する。そして、許容範囲を超えたと判断された場合には、割り込み発生部48が割り込みを発生する。
【0133】
3.詳細な処理
次に本実施形態の詳細な処理例について図16〜図20のフローチャートを用いて説明する。
【0134】
図16は、ハードリアルタイム処理部である実行部の全体的な処理についてのフローチャートである。
【0135】
まず、制御パラメーターを更新するタイミングか否かを判断する(ステップS1)。そして、更新タイミングである場合には、図14で説明したように、FIFOに残りデータ(制御パラメーター)があるか否かを判断する(ステップS2)。そして、残りデータが無い場合には、制御パラメーター無しの割り込みを発生させて(ステップS3)、割り込み処理へ移行する(ステップS4)。一方、FIFOに残りデータがある場合には、FIFOから制御パラメーターを取得する(ステップS5)。
【0136】
次に、FIFOの残りデータ量はしきい値よりも多いか否かを判断する(ステップS6)。そして、しきい値以下である場合には、図14で説明したように、事前計算部に対して制御パラメーターの作成を要求する(ステップS7)。一方、残りデータ量がしきい値よりも多い場合には、インピーダンス制御処理を実行する(ステップS8)。
【0137】
次に、インピーダンス制御処理が正常に終了したか否かを判断する(ステップS9)。そして、正常に終了しなかった場合には、事前計算部に対して制御パラメーターの更新を要求する(ステップS10)。一方、正常に終了した場合にはステップS1に戻る。
【0138】
図17は、図16のステップS8のインピーダンス制御処理についてのフローチャートである。
【0139】
まず、力覚センサーから6次元入力値を得て(ステップS11)、7×7の補正行列との積を計算する(ステップS12)。即ち、前述の式(5)のFx,Fy,Fz、Fu,Fv,Fwを得て、ハンド・自重補正及び姿勢補正を行う。そして、得られた補正済み値に基づいてインピーダンスフィルター処理を行う(ステップS13)。即ち、前述の式(1)の運動方程式の処理を行う。
【0140】
次に、インピーダンスフィルターの出力値と、7×6のヤコビ行列との積を求める(ステップS14)。即ち、前述の式(4)の行列演算を行う。そして、各関節の指令値に対して、ステップS14で得られた値を加える補正処理を行う(ステップS15)。
【0141】
次に、モーターのエンコーダー値(回転角度)を得る(ステップS16)。そして、エンコーダー値はリミッター値の範囲内か否かを判断し(ステップS17)、リミッター値の範囲内でない場合には、リミッターエラー割り込みを発生する(ステップS18)。一方、リミッター値の範囲内である場合には、正常状態であるとして図16のLoopへ戻る。
【0142】
図18(A)〜図18(C)は割り込み処理についてのフローチャートである。
【0143】
図18(A)に示すように、図16のステップS3で制御パラメーター無し割り込みが発生した場合には、予め設定された停止処理に入る(ステップS21)。
【0144】
図18(B)に示すように、図17のステップS18でリミッターエラー割り込みが発生した場合には、予め設定された停止処理に入る(ステップS22)。即ち、上位コントローラー(上位制御層)で、許容範囲のリミッター値を設定し、それを超えるような事態では、ともかく停止させる。
【0145】
或いは、図18(C)に示すように、図17のステップS18でリミッターエラー割り込みが発生した場合に、NOP(No OPeration)とし、異常事態発生としてLoopに戻るようにしてもよい(ステップS23)。即ち、上位コントローラー(上位制御層)で、余裕を見込んだリミッター値を設定し、下位コントローラー(下位制御層)のオーバーシュートを許容する。そして、割り込みを受けた上位コントローラーは、軌道を更新し、FIFOを新しいデータで上書きする。一方、下位コントローラーは、新しいデータで動作を継続する。そして、上位コントローラーが軌道を更新できない場合には、下位コントローラーへの割り込みを発生させて、動作を停止させる。
【0146】
図19は事前計算部の処理についてのフローチャートである。
【0147】
まず、事前計算部は、割り込みが発生するのを待ち(ステップS31)、割り込みが発生した場合には、制御パラメーター無し割り込みか否かを判断する(ステップS32)。そして、制御パラメーター無し割り込みの場合には、制御パラメーターを計算して、FIFOに設定する(ステップS33)。そして、ハードリアルタイム処理部(実行部)を再起動する(ステップS34)。
【0148】
一方、制御パラメーター無し割り込みではない場合には、制御パラメーター作成割り込みか否かを判断する(ステップS35)。そして、制御パラメーター作成割り込みの場合には、FIFOの空きデータ量を取得し(ステップS36)、制御パラメーターを計算して、FIFOに設定する(ステップS37)。
【0149】
制御パラメーター作成割り込みではない場合には、制御パラメーター更新割り込みか否かを判断する(ステップS38)。そして、制御パラメーター更新割り込みの場合には、現在のロボットの姿勢を取得し、復旧軌道を求める(ステップS39)。そして、制御パラメーターを計算して、FIFOに上書きする(ステップS40)。
【0150】
図20は、パラメーター計算処理についてのフローチャートである。
【0151】
まず、FIFOに空きはあるか否かを判断し(ステップS41)、空きがある場合には、計画軌道を求める(ステップS42)。そして、計画軌道のヤコビアン、逆ヤコビアンを求め(ステップS43)、FIFOに逆ヤコビアンの値を設定する(ステップS44)。
【0152】
次に、図8で説明したように、計画軌道の周辺のヤコビアンを求め、差異が所定の値以下である範囲を求め(ステップS45)、FIFOにリミッター値を設定する(ステップS46)。また、計画軌道に対する力覚センサー補正値(補正係数)を求め(ステップS47)、FIFOに力覚センサー補正値を設定する(ステップS48)。
【0153】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また本実施形態及び変形例の全ての組み合わせも、本発明の範囲に含まれる。またロボット制御システム、ロボットシステムの構成・動作や、制御パラメーターの事前計算手法、FIFOへの制御パラメーターの格納手法、制御パラメーターに基づく演算処理の実行手法、制御系の構成等も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【0154】
OB 物体、AL、AR、AM アーム、SF 表面、HL 穴部、J1〜J3 関節、
PT 先端部、M、M1、M2 モーター、
10 力覚センサー、20 力制御部(インピーダンス制御部)、22 事前計算部、
24 FIFO、26 実行部、32 姿勢補正部、34 ハンド・ツール自重補正部、
35 ハンド・ツール自重・姿勢補正部、36 運動方程式処理部、
38 逆ヤコビアン処理部、39、39-1、39-2 リミッター処理部、
40 フォワードキネマティクス処理部、42 逆ヤコビアン事前計算部、
44 リミッター値事前計算部、46 補正係数事前計算部、
50、52、52-1、52-2、54、56、56-1、56-2 FIFO、
60 目標値出力部、62 軌道生成部、64 インバースキネマティクス処理部、
80 ロボット制御部、82-1〜82-N 駆動制御部、
84-1、84-2 モーター制御部、100 ロボット、102-1〜102-N 駆動部、
300 制御装置、310 ロボット、320 アーム、330 ハンド
【特許請求の範囲】
【請求項1】
ロボットのフィードバック制御の目標値を出力する目標値出力部と、
力覚センサーからのセンサー情報に基づいて力制御を行い、前記目標値の補正値を出力する力制御部と、
前記補正値により補正された前記目標値に基づいて、前記ロボットの前記フィードバック制御を行うロボット制御部と、
を含み、
前記力制御部は、
前記ロボットの姿勢に応じて変化する制御パラメーターを事前計算する事前計算部と、
前記センサー情報と前記制御パラメーターとに基づき前記補正値を求める演算処理を実行する実行部と、
を含むことを特徴とするロボット制御システム。
【請求項2】
請求項1において、
前記力制御部は、
前記事前計算部で計算された前記制御パラメーターが格納されるFIFOを含み、
前記実行部は、
前記FIFOから前記制御パラメーターを読み出し、読み出された前記制御パラメーターに基づき前記補正値を求める前記演算処理を実行することを特徴とするロボット制御システム。
【請求項3】
請求項2において、
前記FIFOには、
前記実行部で使用される前記制御パラメーターが、前記実行部の演算処理が実行されるタイミングごとに、先入れ先出し方式で記憶されることを特徴とするロボット制御システム。
【請求項4】
請求項2又は3において、
前記実行部は、
前記FIFOの残りデータ量が所与のしきい値以下になった場合に、前記事前計算部に対して、前記制御パラメーターを事前計算することを要求する事前計算要求を行うことを特徴とするロボット制御システム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記事前計算部は、
前記制御パラメーターとして、逆ヤコビアンの行列要素を事前計算し、
前記実行部は、
事前計算された前記逆ヤコビアンの前記行列要素に基づいて、前記目標値の前記補正値を求めることを特徴とするロボット制御システム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記事前計算部は、
前記制御パラメーターとして、計画軌道に対するロボット軌道の許容範囲を示すリミッター値を事前計算し、
前記実行部は、
前記計画軌道に対して前記ロボット軌道が前記許容範囲を超えたと判断した場合に、前記許容範囲を超えたことを示す割り込みを発生させることを特徴とするロボット制御システム。
【請求項7】
請求項6において、
前記事前計算部は、
前記計画軌道の周辺のヤコビアンを求めることで、前記リミッター値を事前計算することを特徴とするロボット制御システム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記事前計算部は、
前記制御パラメーターとして、前記力覚センサーの前記センサー情報を補正するための補正係数を事前計算し、
前記実行部は、
前記補正係数に基づいて前記センサー情報の補正処理を行うことを特徴するロボット制御システム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記目標値出力部は、
前記ロボットの軌道情報を出力する軌道生成部と、
前記軌道生成部からの前記軌道情報に基づいてインバースキネマティクス処理を行い、前記ロボットの関節角情報を前記目標値として出力するインバースキネマティクス処理部と、
を含むことを特徴とするロボット制御システム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記力制御部は、
前記力制御としてインピーダンス制御を行うことを特徴とするロボット制御システム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記目標値は、前記ロボットの関節角情報であり、前記補正値は、前記関節角情報の補正値であることを特徴とするロボット制御システム。
【請求項12】
請求項1乃至11のいずれかに記載のロボット制御システムと、
前記ロボットと、
を含むことを特徴とするロボットシステム。
【請求項1】
ロボットのフィードバック制御の目標値を出力する目標値出力部と、
力覚センサーからのセンサー情報に基づいて力制御を行い、前記目標値の補正値を出力する力制御部と、
前記補正値により補正された前記目標値に基づいて、前記ロボットの前記フィードバック制御を行うロボット制御部と、
を含み、
前記力制御部は、
前記ロボットの姿勢に応じて変化する制御パラメーターを事前計算する事前計算部と、
前記センサー情報と前記制御パラメーターとに基づき前記補正値を求める演算処理を実行する実行部と、
を含むことを特徴とするロボット制御システム。
【請求項2】
請求項1において、
前記力制御部は、
前記事前計算部で計算された前記制御パラメーターが格納されるFIFOを含み、
前記実行部は、
前記FIFOから前記制御パラメーターを読み出し、読み出された前記制御パラメーターに基づき前記補正値を求める前記演算処理を実行することを特徴とするロボット制御システム。
【請求項3】
請求項2において、
前記FIFOには、
前記実行部で使用される前記制御パラメーターが、前記実行部の演算処理が実行されるタイミングごとに、先入れ先出し方式で記憶されることを特徴とするロボット制御システム。
【請求項4】
請求項2又は3において、
前記実行部は、
前記FIFOの残りデータ量が所与のしきい値以下になった場合に、前記事前計算部に対して、前記制御パラメーターを事前計算することを要求する事前計算要求を行うことを特徴とするロボット制御システム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記事前計算部は、
前記制御パラメーターとして、逆ヤコビアンの行列要素を事前計算し、
前記実行部は、
事前計算された前記逆ヤコビアンの前記行列要素に基づいて、前記目標値の前記補正値を求めることを特徴とするロボット制御システム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記事前計算部は、
前記制御パラメーターとして、計画軌道に対するロボット軌道の許容範囲を示すリミッター値を事前計算し、
前記実行部は、
前記計画軌道に対して前記ロボット軌道が前記許容範囲を超えたと判断した場合に、前記許容範囲を超えたことを示す割り込みを発生させることを特徴とするロボット制御システム。
【請求項7】
請求項6において、
前記事前計算部は、
前記計画軌道の周辺のヤコビアンを求めることで、前記リミッター値を事前計算することを特徴とするロボット制御システム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記事前計算部は、
前記制御パラメーターとして、前記力覚センサーの前記センサー情報を補正するための補正係数を事前計算し、
前記実行部は、
前記補正係数に基づいて前記センサー情報の補正処理を行うことを特徴するロボット制御システム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記目標値出力部は、
前記ロボットの軌道情報を出力する軌道生成部と、
前記軌道生成部からの前記軌道情報に基づいてインバースキネマティクス処理を行い、前記ロボットの関節角情報を前記目標値として出力するインバースキネマティクス処理部と、
を含むことを特徴とするロボット制御システム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記力制御部は、
前記力制御としてインピーダンス制御を行うことを特徴とするロボット制御システム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記目標値は、前記ロボットの関節角情報であり、前記補正値は、前記関節角情報の補正値であることを特徴とするロボット制御システム。
【請求項12】
請求項1乃至11のいずれかに記載のロボット制御システムと、
前記ロボットと、
を含むことを特徴とするロボットシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2013−856(P2013−856A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−136421(P2011−136421)
【出願日】平成23年6月20日(2011.6.20)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願日】平成23年6月20日(2011.6.20)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]