以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.概要
1.1 基本構成
本実施形態のロボット制御システム(マニピュレーター制御システム)及びこれを含むロボットシステムの構成例を図1に示す。なお本実施形態のロボット制御システム、ロボットシステムは図1の構成には限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
本実施形態のロボット制御システムは、力制御部20、目標値出力部60、ロボット制御部80を含む。また本実施形態のロボットシステムは、このロボット制御システムと、ロボット100(力覚センサー10)により構成される。
目標値出力部60は、ロボット(狭義にはマニピュレーター)のフィードバック制御の目標値を出力する。この目標値に基づいてロボット100のフィードバック制御が実現される。多関節ロボット等を例に取れば、この目標値は、ロボットの関節角情報などである。ロボットの関節角情報は、例えばロボットのアームのリンク機構における各関節の角度(ジョイント軸とジョイント軸のなす角度)を表す情報である。
目標値出力部60は、軌道生成部62とインバースキネマティクス処理部64を含むことができる。軌道生成部62は、ロボットの軌道情報を出力する。軌道情報は、ロボットのエンドエフェクター部(エンドポイント)の位置情報(x,y,z)と、各座標軸回りでの回転角度情報(u,v,w)を含むことができる。インバースキネマティクス処理部64は、軌道生成部62からの軌道情報に基づいてインバースキネマティクス処理を行い、例えばロボットの関節角情報を目標値として出力する。インバースキネマティクス処理は、関節を有するロボットの動きを計算する処理であり、ロボットのエンドエフェクター部の位置姿勢などから関節角情報等を逆運動学により計算する処理である。
力制御部20(狭義にはインピーダンス制御部)は、力覚センサー10からのセンサー情報に基づいて力制御(力覚制御)を行って、目標値の補正値を出力する。更に具体的には、力制御部20(インピーダンス制御部)は、力覚センサー10からのセンサー情報(力情報、モーメント情報)に基づいてインピーダンス制御(或いはコンプライアンス制御)を行う。力制御は、例えば、従来の位置制御に対して、力のフィードバックが加わった制御である。インピーダンス制御は、外力に対するエンドエフェクター部(手先)の変位の生じやすさ(機械インピーダンス)を、制御により望ましい状態にする手法である。具体的には、ロボットのエンドエフェクター部に質量と粘性係数と弾性要素が接続されるモデルにおいて、目標として設定した質量と粘性係数と弾性係数で物体に接触するようにする制御である。また力覚センサー10は、ロボット100が出している力の反力として受けている力やモーメントを検出するセンサーである。この力覚センサー10は、通常、ロボット100のアームの手首部分に取り付けられ、検出された力やモーメントは、センサー情報として、各種の力制御(インピーダンス制御)に用いられる。
ロボット制御部80は、目標値出力部60からの目標値に基づいて、ロボットのフィードバック制御を行う。具体的には、力制御部20からの補正値に基づく補正処理の結果出力された目標値に基づいて、ロボットのフィードバック制御を行う。例えば目標値と、ロボット100からのフィードバック信号に基づいて、ロボット100のフィードバック制御を行う。例えばロボット制御部80は、複数の駆動制御部82-1〜82-N(狭義にはモーター制御部)を含み、ロボット100が有する駆動部102-1〜102-Nに対して、その制御信号を出力する。ここで駆動部102-1〜102-Nは、ロボット100の各関節を動かすための駆動機構であり、例えばモーター等により実現される。
図2に本実施形態のロボット制御システムを含むロボットシステムの例を示す。このロボットシステムは、制御装置300(情報処理装置)とロボット310(図1のロボット100)とを含む。制御装置300はロボット310の制御処理を行う。具体的には、動作シーケンス情報(シナリオ情報)に基づいてロボット310を動作させる制御を行う。ロボット310は、アーム320及びハンド(把持部)330を有する。そして制御装置300からの動作指示にしたがって動作する。例えば、図示しないパレットに載せられたワークを把持したり、移動するなどの動作を行う。また、図示しない撮像装置で取得された撮像画像情報に基づいて、ロボットの姿勢やワークの位置などの情報が検出され、検出された情報が制御装置300に送られる。
本実施形態のロボット制御システムは例えば図2の制御装置300に設けられ、例えば制御装置300のハードウェアーやプログラムによりロボット制御システムが実現される。そして本実施形態のロボット制御システムによれば、制御装置300などの制御ハードウェアーに対する性能要求を低減できると共に、ロボット310を高い応答性で動作させることが可能になる。なお図2は単腕型の例であるが、双腕型等の多腕型のロボットであってもよい。
1.2 力制御・インピーダンス制御
次に、力制御、インピーダンス制御(コンプライアンス制御)の概要について説明する。
図3(A)は、ロボットの左のアームAL、右のアームARで物体OBを挟んで移動している様子を示している。例えば、位置制御だけでは、物体を落としたり、破壊してしまうおそれがある、力制御によれば、柔軟な物体や脆い物体を、図3(A)のように両側から適切な力で挟んで移動させることが可能になる。
また、力制御によれば、図3(B)に示すように、不確実性のある物体の表面SFをアームAM等でなぞることが可能になる。このような制御は位置制御だけでは実現不能である。また、力制御によれば、図3(C)に示すように、粗い位置決めの後に、探って位置合わせをして、物体OBを穴部HLにはめ込むことも可能になる。
しかしながら、バネなどの実際の機械部品による力制御では、用途が限られるという問題がある。また、このような機械部品による力制御では、特性の動的な切り替えが困難である。
一方、モーターのトルクを制御するトルク制御は簡単であるが、位置精度が悪くなるという問題がある。また、異常時に衝突などの問題が生じる。例えば図3(A)において、異常事態が起きて、物体OBを落としてしまった場合に、トルク制御では、釣合うべき反力が無くなるため、左右のアームAL、ARが衝突してしまうなどの問題が生じる。
これに対して、インピーダンス制御(コンプライアンス制御)は、制御が複雑であるという不利点があるものの、汎用性や安全性が高いという利点がある。
図4(A)、図4(B)は、インピーダンス制御の1つであるコンプライアンス制御を説明する図である。コンプライアンスはバネ定数の逆数を意味し、バネ定数が硬さを表すのに対して、コンプライアンスは柔らかさを意味する。ロボットと環境との間に相互作用が働くときに、機械的柔軟性であるコンプライアンスを与える制御をコンプライアンス制御と呼ぶ。
例えば図4(A)では、ロボットのアームAMには力覚センサーSEが取り付けられている。このロボットのアームAMは、力覚センサーSEで得られたセンサー情報(力・トルク情報)に応じて姿勢が変わるようにプログラムされている。具体的には、図4(A)のA1に示す仮想的なバネが、あたかもアームAMの先端に取り付けられているかのようにロボットを制御する。
例えばA1に示すバネのバネ定数が100Kg/mであったとする。これを図4(B)のA2に示すように5Kgの力で押せば、A3に示すようにバネは5cmだけ縮む。逆に言えば、5cmだけ縮んでいれば、5Kgの力で押されているといえる。つまり、力情報と位置情報とが対応づけられている。
コンプライアンス制御では、このA1に示す仮想的なバネがアームAMの先端に取り付けられているかのような制御が行われる。具体的には、ロボットは、力覚センサーSEの入力に応答して動作し、A2に示す5Kgの加重に対して、A3に示すように5cmだけ後退するように制御され、力情報に対応して位置情報が変化するように制御される。
このような単純なコンプライアンス制御では時間項を含まないが、時間項を含み、その2次の項までを考慮した制御が、インピーダンス制御である。具体的には、2次の項は質量項であり、1次の項は粘性項であり、インピーダンス制御のモデルは下式(1)に示すような運動方程式で表すことができる。
上式(1)において、mは質量、μは粘性係数、kは弾性係数、fは力、xは目標位置からの変位である。またxの1次微分、2次微分は、各々、速度、加速度に対応する。インピーダンス制御では、上式(1)の特性をアームの先端であるエンドエフェクター部に持たせるための制御系を構成する。即ち上式(1)で表される仮想質量、仮想粘性係数、仮想弾性係数を、あたかもアームの先端が持っているかのように制御を行う。
このように、インピーダンス制御は、アームの先端の質量に粘性要素と弾性要素が各方向に接続されるモデルにおいて、目的として設定された粘性係数と弾性係数で物体に接触するようにする制御である。
例えば図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が衝突するのを防止できる。
また図5(B)のように、物体の表面SFをなぞるように制御する場合にも、インピーダンス制御では、アームAMの先端に対して、仮想的な軌道TRVAと先端との距離差DFに応じた力が働くように制御される。従って、アームAMを、力を加えながら表面SFをなぞるような制御が可能になる。
1.3 制御系の構成
図6に、力覚フィードバックを含まない場合の制御系の基本構成例を示す。
軌道生成部562は、軌道情報p(xyzuvw)を生成してインバースキネマティクス処理部564に出力する。ここで軌道情報pは、例えばアームの先端(エンドエフェクター部)の位置情報(xyz)と各軸回りの回転情報(uvw)を含む。そしてインバースキネマティクス処理部564は、この軌道情報pに基づいてインバースキネマティクス処理を行って、目標値である各関節の関節角θを生成して出力する。そして、この関節角θに基づいて、モーター制御を行うことで、ロボットのアームの動作制御が行われる。この場合に図6のモーター(M)の制御は、公知のPID制御により実現されている。このPID制御は公知の技術であるため、ここでは詳細な説明を省略する。
図6において、軌道生成部562とインバースキネマティクス処理部564とにより目標値出力部が構成される。この目標値出力部の処理は、ロボットの全体的な処理になる。一方、後段のモーター制御は、関節毎の制御になる。
図7に、力覚フィードバックを含む場合の制御系の基本構成例を示す。図7では、図6に対して、更に、力覚センサー510と、姿勢補正部532と、ハンド・ツール自重補正部534と、運動方程式処理部536と、フォワードキネマティクス処理部540が設けられている。
図7では、力覚センサー510からのセンサー情報を受けて、姿勢補正部532がセンサーの姿勢補正を行い、ハンド・ツール自重補正部534がハンド・ツール自重補正を行う。そして、運動方程式処理部536が、前述の式(1)に示すような運動方程式の解を求める処理を行い、補正値Δpを出力する。この補正値Δpにより軌道情報pが補正されることで、目標値である関節角θの補正処理が行われる。またフォワードキネマティクス処理部540は、フォワードキネマティクス処理を行って、ロボットの軌道情報p’を求めて軌道生成部562にフィードバックする。また姿勢補正部532、ハンド・ツール自重補正部534に対して姿勢を特定するための情報を出力する。なお、ロボットの軌道情報p’の軌道生成部562へのフィードバックは、p’に基づいた軌道の修正処理等を行うためのものであり、当該修正処理等を行わないのであれば、フィードバックは必ずしも必要ない。
ハンド・ツール自重補正部534では、ハンド・ツール自重補正が行われ、姿勢補正部532では姿勢補正が行われる。ここでハンド・ツール自重補正は、ロボットのハンドの自重や、ハンドがつかむツールの自重による影響を、力覚センサー10からのセンサー情報(力情報)から相殺するための補正処理である。また姿勢補正は、力覚センサー10の姿勢による影響を、センサー情報(力情報)から相殺するための補正処理である。これらのハンド・ツール自重補正及び姿勢補正は、例えば下式(2)のように表すことができる。
上式(2)において、Fx,Fy,Fz、Fu,Fv,Fwは力覚センサー10からのセンサー情報である力情報、トルク情報である。またBx,By,Bz、Bu,Bv,Bwはバイアス項である。そして、補正後のセンサー情報(力情報、トルク情報)であるfx,fy,fz、fu,fv,fwが運動方程式処理部536に入力される。なお、データには固定値があるため、実質的な補正係数は6×7=42個となる。これらのハンド・ツール自重補正及び姿勢補正は公知の補正処理であるため、詳しい説明は省略する。
1.4 デジタルフィルター処理
図7の運動方程式処理部536では運動方程式(広義には常微分方程式)の解を求める必要がある。従来、運動方程式の解を求めるにはNewton法やRunge−Kutta法等が用いられていた。しかし、これらの手法はハードウェアー化に適さず、安定性の判定も難しい。さらに応答性の切り替えに対応することが困難であるという問題もある。
そこで本出願人は、上述の3つの問題に対応するために、常微分方程式を解く手法としてデジタルフィルターを用いる。
1.4.1 運動方程式のデジタルフィルターを用いた解法
運動方程式は上述した式(1)の形で表される。運動方程式は線形常微分方程式であるため、インパルス入力に対する解であるインパルスレスポンスが求められれば、インパルスレスポンスと外力項との畳み込みにより、任意の外力項に対する解を得ることができる。
ここで、運動方程式の解を求めるというステップを、力覚センサーのセンサー情報の入力に対して解(例えば位置情報)を出力するフィルターであると捉えるならば、上式(1)の形から、2極のアナログフィルターとして考えることができる。
つまり、運動方程式の解はアナログフィルターの出力として求めることができるのであるから、当該アナログフィルターをデジタルフィルター化することで、運動方程式をデジタルフィルターを用いて解くことが可能になる。
アナログフィルターのデジタルフィルター化の手法は種々知られているが、例えばImpulse Invariance法を用いればよい。これは、アナログフィルターのインパルスレスポンスを離散時間Tでサンプルした値と同じインパルスレスポンスを与えるデジタルフィルターを考える手法である。Impulse Invariance法については公知の手法であるため詳細な説明は省略する。
以上の結果、常微分方程式の解はデジタルフィルターの出力として求めることが可能になる。運動方程式であれば、図8に示したように2極のデジタルフィルターとなる。図8において、dは1サンプル分の遅延であり、C0、C1、C2はフィルターの係数である。
デジタルフィルターによる処理であれば、ハードウェアー化は容易であるし、後述するように安定性の判定も容易である。また、デジタルフィルターの係数を切り替えれば、特性(柔らかく動かすか固く動かすか等)を切り替えることもできるし、フィルター駆動周波数を切り替えて解の応答性を切り替えることもできる。
1.4.2 デジタルフィルターの安定度判定
インピーダンス制御においては、運動方程式の質量項(m)、粘性項(μ)及び弾性項(k)の設定次第では、安定でない系ができてしまう可能性がある。極端な例で言えば、ロボットに一度力を加えたら、その後一切触れていないにもかかわらずロボットの振動が継続するような、発振する系にもなりうるということである。そのような安定性(安定度)の低い系は実用上好ましくないため、運動方程式に関する系の安定性を判定し、安定でない場合には何らかの対処をする必要がある。
しかし、上述のNewton法やRunge−Kutta法等では、運動方程式の解を求めることはできても、安定性の判定は行えない。そのため、解を求める処理とは別に安定性を判定する処理が必要となるが、一般的に安定性の判定処理は容易でないことが知られている。
本実施形態の手法では、運動方程式を、デジタルフィルターを用いて処理するため、運動方程式に関する系の安定性の判定とは、対応するデジタルフィルターの安定性の判定に他ならない。デジタルフィルターの安定性の判定は、容易に行うことができ、極が単位円の中にあるか否かを判定すればよい。
具体例を図9(A)〜図9(C)に示す。これらはどれも極が単位円の中に収まっている例であるが、極が単位円の外にある場合には安定でないと判定する。また、図9(C)のようにある程度、単位円の円周上から内側に離れた位置に極がある場合には、特に問題はない。しかし、図9(A)のように単位円にかなり近い位置に極(なお、図9(A)は重根ではなく限りなく近い位置に2つの極がある例である)がある場合には、注意が必要である。なぜなら、デジタルフィルターの実装手法によっては、設計値に対して誤差が生ずるおそれがあるからである。当該誤差が極の位置を単位円の外側方向に移動させる要因となった場合、図9(A)のような安定性に余裕のないデジタルフィルターは、設計上安定であるにもかかわらず、実装時には安定でない動作をする可能性があるため、何らかの対処が必要となる。
1.4.3 デジタルフィルターを用いた場合の構成例
図10にデジタルフィルターを用いて運動方程式の解を求める場合の、ロボット制御システム及びそれを含むロボットシステムの構成例を示す。なお本実施形態のロボット制御システム、ロボットシステムは図10の構成には限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
力覚センサー10、目標値出力部60、ロボット制御部80及びロボット100については図1と同様であるため、詳細な説明は省略する。
力制御部20は、デジタルフィルター部22を含む。デジタルフィルター部22は、力覚センサーからのセンサー情報(センサー情報に対して補正処理や帯域制限処理が施された情報も含む)に対してデジタルフィルター処理を行って、出力値を補正値として目標値出力部60に出力する。また、力制御部20はセンサー情報に対して帯域制限処理を行う帯域制限部24を含んでもよい。
デジタルフィルター部22は、デジタルフィルター演算部221と、デジタルフィルター係数出力部222と、デジタルフィルター安定度判定部223を含む。デジタルフィルター演算部221は、センサー情報とデジタルフィルター係数に基づいて、デジタルフィルター処理を行って運動方程式の解を求める。デジタルフィルター係数出力部222は、運動方程式の係数パラメーター(質量項m、粘性項μ、弾性項k及び駆動周期T)に基づいて、デジタルフィルター係数を求め、デジタルフィルター演算部221とデジタルフィルター安定度判定部223に出力する。デジタルフィルター安定度判定部223は、デジタルフィルター係数に基づいて、当該デジタルフィルターの安定性の判定を行う。
デジタルフィルター係数出力部222は、デジタルフィルター係数記憶部224と、デジタルフィルター係数変換部225を含んでもよい。デジタルフィルター係数変換部225は、運動方程式の係数パラメーターをデジタルフィルター係数に変換する。デジタルフィルター係数記憶部224は、変換されたデジタルフィルター係数を記憶する。デジタルフィルター係数記憶部224に複数のデジタルフィルター係数を記憶しておけば、出力するデジタルフィルター係数を切り替えることで、ロボットの動作特性や、解の応答性を切り替えることが可能になる。
以下、図10の構成を基本とし、第1〜第4の実施形態について説明する。第1の実施形態は、本発明の基本形である。第2の実施形態は、複数のフィルターを切り替える場合において、複数フィルターを並行動作させる例である。具体的にはデジタルフィルター演算部221が複数ある構成となる。第3の実施形態は、複数のフィルターを切り替える場合において、1つのデジタルフィルター演算部221を用いる例である。この場合、駆動周波数を切り替える際に、切り替え用の処理を行う必要がある。第4の実施形態は、複数のフィルターを切り替える際のフィルター選択処理を、センサー情報に基づいて行う例である。
2.第1の実施形態
2.1 構成
図11に第1の実施形態にかかるロボット制御システムを含むロボットシステムの構成例を示す。
力覚センサー10、軌道生成部62、インバースキネマティクス処理部64、モーター制御部82−1等については図1と同様であるため詳細な説明は省略する。また、入力補正部30はセンサー情報に対して補正処理を行うもので、例えば図7の姿勢補正部532やハンド・ツール自重補正部534等を含んでもよい。フォワードキネマティクス処理部40は図7のフォワードキネマティクス処理部540に対応し、フォワードキネマティクス処理の結果を入力補正部30に出力するとともに、必要に応じて軌道生成部62にも出力する。
また、ロボット制御システムは、デジタルフィルター演算部221と、デジタルフィルター安定度判定部223と、デジタルフィルター係数記憶部224と、デジタルフィルター係数変換部225と、応答特性入力部226と、フィルター状態記憶部227とを含み、具体的にはこれらは力制御部20のデジタルフィルター部22に含まれる。
デジタルフィルター演算部221、デジタルフィルター安定度判定部223、デジタルフィルター係数記憶部224、デジタルフィルター係数変換部225については図10を用いて説明したため詳細については省略する。
応答特性入力部226は、デジタルフィルター係数変換部225に対して運動方程式の係数パラメーター(m、μ、k)及び駆動周期T(駆動周波数)を出力する。
フィルター状態記憶部227は、フィルター状態を記憶する。ここで、フィルター状態とは、デジタルフィルター演算部221の出力(つまり運動方程式の解)である。上述したように、運動方程式は2極のデジタルフィルターに対応し、具体的には図8のようになる。図8から明らかなように、このデジタルフィルターは2回遅延がかかるため、あるタイミングにおける出力値を求めるためには、1タイミング前の出力値と2タイミング前の出力値が必要となる。フィルター状態記憶部227はそれらを記憶するものであり、デジタルフィルター演算部221の出力を記憶するとともに、デジタルフィルター演算部221に対して過去の出力値を送る。
2.2 詳細な処理
次に本実施形態の詳細な処理例について図12のフローチャートを用いて説明する。図12は、デジタルフィルター部22における処理についてのフローチャートである。
この処理が開始されると、まず出力のタイミング待ちを行ってから(S101)、外力値Fを取得する(S102)。ここでの外力値Fは力覚センサー10からのセンサー情報に対して入力補正部30による補正処理が施されたものとする。
次に取得したFを用いて運動方程式の解を求める(S103)。具体的には、フィルター状態記憶部227において、1ステップ前のデジタルフィルター演算部221の出力Yn―1をYn―2の値とするとともに、Ynの値をYn―1に上書きする。そして、デジタルフィルター係数記憶部224から出力されたデジタルフィルター係数(C0,C1,C2)と、フィルター状態記憶部227から出力された過去の出力値(Yn-1、Yn―2)から、出力値Ynを求める処理をデジタルフィルター演算部221で行う。
以上がある1タイミングでの運動方程式の解を求める処理となる。1タイミングの処理後に、次のタイミングにおける応答特性を変更するかの判定を行い(S104)、変更しない場合にはS101に戻る。変更する場合には、まず応答特性入力部226から応答特性のパラメーター(m、μ、k、T)を取得し(S105)、デジタルフィルター係数変換部225においてデジタルフィルター係数を計算する(S106)。そして、計算したデジタルフィルター係数に基づいて、デジタルフィルター安定度判定部223においてデジタルフィルターの安定性を判定する(S107)。フィルターが安定でない場合には、デジタルフィルター係数記憶部224に記憶することなくS101に戻る。つまり、次ステップにおいても応答特性は変更されない。S107でフィルターが安定であると判定された場合には、デジタルフィルター係数記憶部224にデジタルフィルター係数を記憶し(S108)、S101に戻って更新したデジタルフィルター係数で次のステップの処理を行う。
以上の本実施形態では、ロボット制御システムは、図10に示したように力覚センサー10からのセンサー情報に基づいて、ロボットの目標軌道についての補正値を出力する力制御部20と、目標軌道を補正値に基づいて補正することで目標値を出力する目標値出力部60と、目標値に基づいてロボット100のフィードバック制御を行うロボット制御部80と、を含む。そして力制御部20はデジタルフィルター部22を有し、センサー情報に対してデジタルフィルター部22によるデジタルフィルター処理を行うことで、力制御における常微分方程式の解を求めて、求めた解に基づいて補正値を出力する。
ここで、目標値とはロボット100のフィードバック制御における目標値のことであり、ロボット制御部80における制御はこの目標値に基づいて行われる。目標値は目標軌道に対して補正値による補正処理を行うことで取得できる。なお目標軌道とは、狭義にはロボットのエンドエフェクター部(エンドポイント)の空間的な目標位置の変化を表すものであってもよい。1つの目標位置は、例えば3次元空間座標xyz(姿勢も考慮すれば各軸周りの回転角uvwを追加してもよい)で表されることになり、目標軌道とは当該目標位置の集合となる。ただし、目標軌道はこれに限定されるものではなく、ロボットの目標関節角の集合であってもよい。関節を持つロボットでは、各関節の角度を決定すると、フォワードキネマティクス処理によりエンドエフェクター部の位置は一意に決定される。つまり、N関節ロボットではN個の関節角(θ1〜θN)により1つの目標位置を表現できることになるから、当該N個の関節角の組を1つの目標関節角とすれば、目標軌道とは目標関節角の集合と考えることができる。よって、力制御部20から出力される補正値も、位置に関する値であってもよいし、関節角に関する値であってもよい。
具体例を図21(A)、図21(B)に示す。デジタルフィルター処理により解を求める対象となる常微分方程式として、上式(1)の運動方程式を用いるのであれば、当該運動方程式の解は位置に関する値となる。よって、目標軌道が目標位置である場合には、解をそのまま補正値とすればよく、システム構成例は図21(A)のようになる。なお、目標値は位置に関する値でも関節角に関する値でもよいが、一般的にはロボットのフィードバック制御は関節角を用いることが想定される。
それに対して、目標値出力部60のインバースキネマティクス処理部64とは別に、力制御部20がインバースキネマティクス処理部29を含む図21(B)のようなケースも考えられる。例えば、目標値出力部60での目標軌道生成処理と、力制御部20での補正値出力処理とで、処理のタイミングや処理レートが異なる場合等である。その場合には、目標軌道は目標関節角であり、力制御部20では運動方程式の解に対して変換処理(例えばインバースキネマティクス処理)を行って補正値とすることになる。
また、力制御における常微分方程式とは、力制御において解を求める必要がある常微分方程式のことである。狭義には線形常微分方程式であってもよい。さらに狭義には、ロボット100にあたかも所望の特性(質量・粘性・弾性等)を持つようにふるまわせるために解を求める必要がある常微分方程式のことであり、式(1)に示したような運動方程式であってもよい。
これにより、力制御において必要な、常微分方程式の解を求めるという処理を、デジタルフィルターを用いて行うことが可能になる。Newton法、Runge−Kutta法等の手法を用いる場合に比べて、ハードウェアー化が容易であり、上述したように安定性の判定も容易である。さらに、デジタルフィルター処理に用いるデジタルフィルターを切り替える(例えばフィルター係数を切り替える)ことで、簡単に応答特性を切り替えることも可能となる。
また、デジタルフィルター部22は、図10に示したように常微分方程式の各項の係数パラメーターに基づいてデジタルフィルター係数を出力するデジタルフィルター係数出力部222と、デジタルフィルター係数及びセンサー情報に基づいてデジタルフィルター処理を行うデジタルフィルター演算部221とを含んでもよい。
ここで、常微分方程式の各項の係数パラメーターとは、常微分方程式における定数項、1階微分項の係数、2階微分項の係数、・・・n階微分項の係数を指すものとする。上述した式(1)の例であれば、m、μ、kが係数パラメーターとなる。また、デジタルフィルター処理に用いられるセンサー情報とは、力覚センサー10からの出力値そのものであってもよいし、当該出力値に対して入力補正部30(図11に記載)による補正処理が施されたものであってもよい。また、帯域制限部24(図10に記載)による帯域制限処理が施されたものであってもよい。
これにより、デジタルフィルター処理に必要なデジタルフィルター係数を出力した上で、当該デジタルフィルター係数及びセンサー情報に基づくデジタルフィルター処理が可能となる。
また、デジタルフィルター係数出力部222は、図10、図11に示したように、常微分方程式の係数パラメーターをデジタルフィルター係数に変換するデジタルフィルター係数変換部225と、デジタルフィルター係数を記憶するデジタルフィルター係数記憶部224を含んでもよい。そして、デジタルフィルター係数出力部222は、デジタルフィルター係数記憶部224に記憶されたデジタルフィルター係数を出力する。
これにより、常微分方程式の係数パラメーターから、デジタルフィルター係数を求めることが可能になる。力制御を行う際には、まず当該力制御に必要な常微分方程式が決定される。例えば、ロボット100にとらせたい物理的な特性が決まれば、上式(1)のm、μ、kに具体的な数値が入れられた運動方程式が決定されることになる。しかし、常微分方程式の係数パラメーターとデジタルフィルター係数とは異なるものであるため、常微分方程式が決定されたら、当該常微分方程式の解を求めるデジタルフィルター(具体的にはデジタルフィルター係数)を求める処理が必要となる。本実施形態では、この処理をデジタルフィルター係数変換部225で行う。
また、デジタルフィルター部22は、図10に示したように、デジタルフィルター処理に用いられるデジタルフィルターの安定度(安定性)を判定するデジタルフィルター安定度判定部223を含んでもよい。そして、デジタルフィルター係数出力部222は、デジタルフィルターが安定であると判定された場合に、デジタルフィルター係数を出力する。
これにより、デジタルフィルターの安定性を判定することが可能になる。力制御における常微分方程式の係数パラメーターは、設定次第では現実にはあり得ない系(例えば発振するロボット等)を作ってしまうことがある。そのため、常微分方程式の安定性を判定する必要があるが、デジタルフィルターを用いれば、その判定が容易となる。詳細については上述したとおりである。
また、本実施形態ではデジタルフィルターの駆動周波数の切り替えについては述べていない(第2、第3の実施形態で後述している)が、図10に示した基本構成を用いて駆動周波数の切り替えを行うことを妨げるものではない。具体的には、第1の駆動周波数と、第1の駆動周波数よりも高い周波数である第2の駆動周波数の間で駆動周波数を切り替えながらデジタルフィルター処理を行ってもよい。その場合、デジタルフィルター係数出力部222は、第1の駆動周波数に対応する第1のデジタルフィルター係数及び第2の駆動周波数に対応する第2のデジタルフィルター係数の少なくとも一方を出力する。デジタルフィルター演算部221は、出力されたデジタルフィルター係数に応じて、第1のデジタルフィルター係数を用いた第1の駆動周波数によるデジタルフィルター処理、及び第2のデジタルフィルター係数を用いた第2の駆動周波数によるデジタルフィルター処理の少なくとも一方を行う。
これにより、デジタルフィルター処理の駆動周波数の切り替えが可能になる。駆動周波数を切り替えることで、常微分方程式の解の応答性を切り替えることができる。
また、本実施形態での常微分方程式は、仮想質量項、仮想粘性項、仮想弾性項を係数パラメーターとする運動方程式であってもよい。
これにより、運動方程式の解を求めることが可能になる。よって、ロボット100に対して、あたかも仮想質量項に対応する質量、仮想粘性項に対応する粘性、仮想弾性項に対応する弾性を持つかのようにふるまわせることが可能になる。
また、目標値出力部60は、図10に示したように、ロボット100の目標位置情報を出力する軌道生成部62と、軌道生成部62からの目標位置情報に基づいてインバースキネマティクス処理を行い、ロボット100の関節角情報を出力するインバースキネマティクス処理部64を含んでもよい。
ここで、目標位置情報とは、ロボット100(狭義にはロボット100のエンドエフェクター部)の目標位置に関する情報であり、目標位置は例えばxyz(姿勢に関するuvwを含んでもよい)により表される。目標位置情報は、1つの目標位置の情報であってもよいが、ロボット100の時間的な位置変化(移動経路)を表す複数の目標位置の情報であってもよい。
これにより、ロボット100の目標位置情報を出力した上で、インバースキネマティクス処理を行って関節角情報に変換することが可能になる。軌道生成部62によりロボット100の目標位置情報を生成することで、ロボット100を計画的に制御することができる。しかし、ロボット100を柔軟に移動させるためには関節を持たせることは自然であり、その場合一般的に関節の角度を制御することでロボット制御を行う。よって、目標位置情報を直接目標値とすることは難しく、関節角情報に変換するインバースキネマティクス処理部64が必要となる。
また、以上の本実施形態は、上述してきたロボット制御システム(力制御部20、目標値出力部60、ロボット制御部80を含む)と、ロボット100を含むロボットシステムに関係する。
これにより、ロボット制御装置にとどまらず、本実施形態の処理を実行するロボットシステムを実現することが可能になる。
また、以上の本実施形態は、センサーからのセンサー情報を取得するセンサー情報取得部と、取得されたセンサー情報に対して処理を行うセンサー情報処理部とを含むセンサー情報処理装置に適用できる。センサー情報処理部は、デジタルフィルター部を含み、センサー情報に対してデジタルフィルター部によるデジタルフィルター処理を行うことで、センサー情報処理における常微分方程式の解を求め、センサー情報処理の出力値として出力する。
以上の説明では、センサー情報処理装置として、ロボット制御システムに適用した場合について説明した。ロボット制御システムでは、センサー情報処理装置は図10等における力制御部20に相当し、センサーは力覚センサー10に相当する。センサー情報取得部は特に図示されてはいないが、力覚センサー10と接続されているブロック(図10の場合は帯域制限部24)が兼ねてもよい。また、センサー情報処理部は、図10のデジタルフィルター部22に対応し、さらに帯域制限部24や図11の入力補正部30等を含んでもよい。ただし、センサー情報処理装置は、ロボット制御システムへの適用に限定されるものではなく、他の制御システムに適用されてもよい。その場合、センサー情報に対するセンサー情報処理(デジタルフィルター処理を含む)に基づいて、制御で使用される情報を出力することになる。さらに言えば、センサー情報処理装置は制御システムへの適用に限定されず、他のシステム(装置)に用いられてもよい。例えば、センサーを用いて種々の情報を検出する検出システム等に用いられてもよい。
ここで、センサー情報処理とは、センサーからの出力値に対して何らかの処理を施して、有用な情報を求める処理のことであり、少なくとも常微分方程式の解を求める処理が含まれる。例えば、ロボット制御システムでは、力覚センサーにかかる力情報から補正値(例えばロボットの目標位置の補正値)を求めるような、物理的に意味の異なる情報への変換処理となる。また、検出システムであれば、検出精度を高める処理(例えば、センサー情報に含まれるノイズを低減する処理)等が考えられる。
なお、センサー情報処理装置の適用がロボット制御システムに限定されないように、センサー情報を出力するセンサーも力覚センサーに限定されるものではない。例えば、加速度センサーや角速度センサー、方位センサー、生体センサー(脈拍センサー等)、GPS等であってもよい。
これにより、センサー情報に対するデジタルフィルター処理により、常微分方程式の解を求め、出力値を出力するセンサー情報処理装置を実現することが可能になる。このセンサー情報処理装置は例えばセンサーを含むICチップ等として実現されてもよい。センサー情報そのものではなく、センサー情報を用いた常微分方程式の解等を出力できるため、他のシステム等と組み合わせた際に、装置の出力値の有用性が増すことになる。
3.第2の実施形態
本実施形態においては、デジタルフィルターの駆動周波数を切り替えることを想定している。例えば、帯域制限に応じて駆動周波数を切り替えることが考えられる。一般的に力覚センサーのセンサー情報にはノイズが多い。そのため帯域制限処理を行うことが望ましいが、通過帯域の広さは状況によって異なる(ノイズに対して大きい信号値が得られるのであれば、帯域制限処理は軽めでよく、通過帯域を広くできる)。通過帯域を狭くするほどノイズは減るが、応答特性も悪化するため、通過帯域に対応させてデジタルフィルターの駆動周波数も切り替える必要がある。具体的には、通過帯域を広くした場合には高い駆動周波数で動作させ、通過帯域を狭くした場合には低い駆動周波数で動作させることになる。
本実施形態では、デジタルフィルター演算部221を複数設け、それぞれに通過帯域の異なる帯域制限処理を施したセンサー情報を入力し、異なる駆動周波数で動作させる。つまり、駆動周波数の異なる2つのフィルターを並行動作させておき、状況に応じて適切なフィルターを選択する。なお、以下の説明では2つのフィルターを並行動作させる例について述べるが、並行動作させるデジタルフィルターは3つ以上であってもよい。
3.1 構成
図13に第2の実施形態にかかるロボット制御システムを含むロボットシステムの構成例を示す。
第1の実施形態(図11)と同様の箇所については詳細な説明は省略する。第1の実施形態と比較した場合、デジタルフィルター演算部221が2つ(221−1、221−2)、デジタルフィルター係数記憶部224が2つ(224−1、224−2)、フィルター状態記憶部227が2つ(227−1、227−2)ある点が異なる。また、デジタルフィルター部22は、帯域制限部24−1、24−2及びデジタルフィルター出力選択部220を含む。
帯域制限部24−1は、センサー情報に対して第1の周波数帯域を通過帯域とする帯域制限処理を行いデジタルフィルター演算部221―1に出力する。帯域制限部24−2は、センサー情報に対して第1の周波数帯域とは異なる第2の周波数帯域を通過帯域とする帯域制限処理を行いデジタルフィルター演算部221―2に出力する。
デジタルフィルター出力選択部220は、デジタルフィルター演算部221―1とデジタルフィルター演算部221―2の出力を受け付け、どちらか一方を選択し、選択した値をデジタルフィルター部22の出力値として出力する。
デジタルフィルター係数記憶部224−1は、図12のS105〜S107の処理を行った結果、安定と判定された第1のデジタルフィルター係数を記憶する。同様にデジタルフィルター係数記憶部224−2は、第1のデジタルフィルター係数とは異なる第2のデジタルフィルター係数を記憶する。
デジタルフィルター演算部221−1では、デジタルフィルター係数記憶部224−1に記憶された第1のデジタルフィルター係数と、帯域制限部24−1から出力された帯域制限処理後のセンサー情報と、フィルター状態記憶部227―1から出力された過去の出力値とに基づいて、デジタルフィルター処理を行う。
同様に、デジタルフィルター演算部221−2では、デジタルフィルター係数記憶部224−2に記憶された第2のデジタルフィルター係数と、帯域制限部24−2から出力された帯域制限処理後のセンサー情報と、フィルター状態記憶部227―2から出力された過去の出力値とに基づいて、デジタルフィルター処理を行う。つまり、2つのデジタルフィルターが並列動作することになる。
3.2 詳細な処理
次に本実施形態の詳細な処理例について図14のフローチャートを用いて説明する。図14は、デジタルフィルター部22における処理についてのフローチャートである。
この処理が開始されると、まず出力のタイミング待ちを行ってから(S201)、外力値Fを取得する(S202)。ここでの外力値Fは力覚センサー10からのセンサー情報に対して入力補正部30による補正処理が施されたものとする。
次に、並列動作しているフィルターの全てについて処理を行ったかを判定する(S203)。未処理のフィルターが残っている場合には、当該フィルターを選択し(S204)、帯域制限部(24−1等のうち対応するもの)において選択したフィルターに対応する帯域制限処理を行う(S205)。そして選択したフィルターに対応するデジタルフィルター演算部において、帯域制限処理が施されたセンサー情報を入力値としてデジタルフィルター処理が行われる(S206)。S206の詳細についてはS103と同様である。処理後S203に戻る。
S203において、全てのフィルターが処理済みであると判定された場合には、デジタルフィルター出力選択部220において、複数のフィルターの中から出力フィルターを選択し(S207)、選択されたフィルターの出力値を出力する(S208)。S208の処理後、S201に戻る。
以上の本実施形態では、デジタルフィルター部22は、図13に示したようにデジタルフィルター演算部221として、第1のデジタルフィルター演算部(221−1)と、第2のデジタルフィルター演算部(221−2)を含む。デジタルフィルター係数出力部222は、第1のデジタルフィルター演算部に第1のデジタルフィルター係数を出力し、第2のデジタルフィルター演算部に第2のデジタルフィルター係数を出力する。そして、第1のデジタルフィルター演算部では第1のデジタルフィルター係数及びセンサー情報に基づくデジタルフィルター処理を行い、第2のデジタルフィルター演算部では第2のデジタルフィルター係数及びセンサー情報に基づくデジタルフィルター処理を行う。
これにより、複数のデジタルフィルター処理を並行して行うことが可能になる。そのため、ロボットの特性を切り替えるためのデジタルフィルター係数の切り替えを行う際にも、切り替え前後のデジタルフィルター処理をあらかじめ並行動作させておくことができるため、切り替えがスムーズに行える。また、駆動周波数の切り替えの際も、後述する第3の実施形態のような切り替え処理をする必要がない。
また、デジタルフィルター部22は、図13に示したように、第1のデジタルフィルター演算部における処理結果と、第2のデジタルフィルター演算部における処理結果のうちいずれか1つを選択して補正値として出力するデジタルフィルター出力選択部220を含んでもよい。
これにより、複数のデジタルフィルターが並行動作している場合にも、適切なデジタルフィルターを選択し、選択したデジタルフィルターの処理結果を補正値として出力することが可能になる。デジタルフィルターの選択は、力制御の内容(例えばロボット100の振る舞い)に直結するため、ユーザーの所望する制御になるように、適切なデジタルフィルターを選択する必要がある。
また、第1の駆動周波数と第2の駆動周波数(第1の駆動周波数よりも高周波であるものとする)のいずれかの駆動周波数でデジタルフィルター処理を行ってもよい。その場合、デジタルフィルター係数出力部222は、第1のデジタルフィルター係数として第1の駆動周波数に対応する値を出力し、第2のデジタルフィルター係数として第2の駆動周波数に対応する値を出力する。そして、第1のデジタルフィルター演算部は、第1のデジタルフィルター係数を用いて第1の駆動周波数によるデジタルフィルター処理を行い、第2のデジタルフィルター演算部は、第2のデジタルフィルター係数を用いて第2の駆動周波数によるデジタルフィルター処理を行う。
これにより、デジタルフィルター処理の駆動周波数を切り替えることが可能になる。駆動周波数を切り替えることで、常微分方程式の解の応答性を切り替えることができる。本実施形態においては、切り替え前も切り替え後も、第1の駆動周波数によるデジタルフィルター処理と第2の駆動周波数によるデジタルフィルター処理を並行して行っているため、切り替えをスムーズに行うことができる。
また、力制御部20は、図10に示したように、センサー情報に対して所与の周波数帯域を通過させる帯域制限処理を行い、帯域制限処理を行ったセンサー情報をデジタルフィルター演算部に出力する帯域制限部24を含んでもよい。そして、帯域制限部24は、第1のデジタルフィルター演算部に対しては、第1の周波数帯域を通過させる帯域制限処理を行ったセンサー情報を出力し、第2のデジタルフィルター演算部に対しては、第2の周波数帯域(第1の周波数帯域よりも広い周波数帯域)を通過させる帯域制限処理を行ったセンサー情報を出力する。
なお、帯域制限部24は、図13に示したように帯域制限部24―1と、帯域制限部24―2から構成されてもよい。
これにより、駆動周波数にあわせて、センサー情報に対して帯域制限処理を施すことが可能になる。具体的には、駆動周波数が高いほど通過帯域幅は広くなり、駆動周波数が低いほど通過帯域幅は狭くなる。これは上述したように、帯域制限処理を強くするほど、応答特性が悪化することによる。なお、このように帯域制限処理の強度と駆動周波数は対応関係を持つことになるが、どちらが先に決定されてもよい。センサー情報にノイズが多くのっている場合には、ノイズ除去のため帯域制限処理を強くかけるとよい。つまり、ノイズ量の観点から、まず帯域制限処理の強度が決定され、それに応じて駆動周波数が決定されるケースがある。それに対して、常微分方程式の解の応答性から、駆動周波数が先に決定され(例えばすぐに解がほしいため駆動周波数を高くする等)、それに応じて帯域制限処理の強度が決定されるケースもある。
4.第3の実施形態
本実施形態においては、第2の実施形態と同様にデジタルフィルターの駆動周波数を切り替えることを想定している。本実施形態では、デジタルフィルター処理を行うデジタルフィルター演算部221が1つである構成について説明する。デジタルフィルター演算部221が1つの場合には、駆動周波数を切り替える際に切り替え処理を行う必要がある。具体的には、高周波から低周波への切り替えと、低周波から高周波への切り替えに分けて後述する。
4.1 構成
図15に第3の実施形態にかかるロボット制御システムを含むロボットシステムの構成例を示す。第2の実施形態(図13)と同様の箇所については詳細な説明は省略する。第2の実施形態と比較した場合、デジタルフィルター演算部221が1つである点が異なる。また、入力選択部25、係数選択部228及び状態選択・処理部229を含む。
係数選択部228は、デジタルフィルター係数記憶部224−1から出力された第1のデジタルフィルター係数と、デジタルフィルター係数記憶部224−2から出力された第2のデジタルフィルター係数のうち、デジタルフィルター処理に用いる係数を1つ選択し、選択したデジタルフィルター係数をデジタルフィルター演算部221に出力する。これは、複数のデジタルフィルターの中から、出力に用いられる出力フィルターを選択していると言うこともできる。
状態選択・処理部229は、係数選択部228で選択されたデジタルフィルター係数に対応するデジタルフィルター(以下、出力フィルター)のフィルター状態に関する処理を行う。具体的には、出力フィルターに対応するフィルター状態記憶部から、出力フィルターを用いたデジタルフィルター処理の過去の出力値を取得し、デジタルフィルター演算部221に出力する。さらに、デジタルフィルター演算部221の出力値を、出力フィルターに対応するフィルター状態記憶部に出力する。
上述したように、本実施形態のデジタルフィルター処理では過去のタイミングにおける出力値を用いる必要がある。その際、あるデジタルフィルターが出力フィルターとして選択された場合には、当然のことながら選択された当該デジタルフィルターの過去の出力値を用いなければならない。つまり、係数選択部228において第iのデジタルフィルターに対応するデジタルフィルター係数を選択しながら、状態選択・処理部229において第iとは異なる第kのデジタルフィルターに対応するフィルター状態を選択することはできない。よって、係数選択部228及び状態選択・処理部229はともに複数の候補の中から1つを選択する処理を行うものであるが、選択処理は独立に行われるのではなく、同一のデジタルフィルターに対応する候補を選択するような拘束条件を考慮する必要がある。
また、入力選択部25は、帯域制限部24―1及び帯域制限部24−2からの出力の中から1つを選択しデジタルフィルター演算部221に出力する。ここでも、出力フィルターに対応したものを選択することになる。デジタルフィルターの駆動周波数と帯域制限処理の通過帯域幅との関係は、第2の実施形態において上述したとおりである。つまり、出力フィルターが選択されたら、帯域制限処理の通過帯域も決定されることになり、入力選択部25は対応する帯域制限部からの出力を選択する。以上のことから、係数選択部228及び状態選択・処理部229だけでなく、入力選択部25についても出力フィルターの選択に基づいた選択処理が行われることになる。
4.2 詳細な処理
4.2.1 高周波から低周波への切り替え
本実施形態においては、駆動周波数の切り替えの際に切り替え処理を行う必要がある。まず、高周波(短周期)から低周波(長周期)への切り替えについて説明する。
図16に示したようにA1のタイミングで駆動周波数を切り替えることを考える。その際、切り替え後の低周波フィルターでの出力値を求めるには、A2及びA3で示した過去2タイミングでの、低周波フィルターの出力値が必要となる。
駆動周波数が異なっても、サンプリングのレートが異なるだけであり、サンプリング点を滑らかにつないだ波形は同一になるはずである。つまり、図16の例のように高周波が低周波の10倍のサンプリングレートであるとすれば、高周波フィルターにおける10タイミング前及び20タイミング前の出力値を保持しておけば、低周波フィルターにおける1タイミング前及び2タイミング前の出力値を取得することができる。
しかし、フィルター状態記憶部227が過去2タイミング分の出力値しか記憶しないことを前提とすると問題が生じる。つまり、切り替え前は高周波フィルターが動作していたのであるから、A4(高周波フィルターでの1タイミング過去のタイミング)及びA5(高周波フィルターでの2タイミング過去のタイミング)に示したように高周波フィルターにおける過去2タイミングの情報しか保持しておらず、A2・A3で示したタイミングの出力値は失われてしまっている。
そこで本実施形態では、切り替え時に切り替え期間を設け、当該切り替え期間内では高周波フィルターと低周波フィルターを並行動作させる。図16で言えば、A3のタイミングにおいて切り替え指示を出し、A3からA1までの期間では2つのフィルターを並行動作させる。そのようにした上で、A1のタイミングでフィルターの切り替えを行う。このようにすれば、A1までの間は高周波フィルターを用いた出力を継続しつつ、低周波フィルターのA3、A2での出力値を取得できるため、A1において低周波フィルターの出力に必要な値がそろうことになり、問題なく切り替え処理を行うことができる。
なお、上述したように高周波フィルターと低周波フィルターはサンプリングレートが異なるだけであり、同一タイミングにおける出力は同一のはずである。よって、並行動作といっても、低周波フィルターのデジタルフィルター係数を用いた演算は必要なく、演算は高周波フィルターに関して行えばよい。そして、高周波フィルターの出力値のうち、A3タイミング及びA2タイミングにおける値を、低周波フィルターに対応するフィルター状態記憶部に記憶する。
次に本実施形態の詳細な処理例について図17のフローチャートを用いて説明する。図17は、デジタルフィルター部22における処理についてのフローチャートである。
この処理が開始されると、まず出力のタイミング待ちを行ってから(S301)、外力値Fを取得する(S302)。ここでの外力値Fは力覚センサー10からのセンサー情報に対して入力補正部30による補正処理が施されたものとする。
次に図12のS103と同様のデジタルフィルター処理を行い(S303)、駆動周期を変更するかの判定を行う(S304)。S304でNoの場合は、S301に戻って処理を続ける。
S304でYesの場合には、変更後のデジタルフィルター係数を取得し、安定性の判定を行う(S305〜S307)。この処理については図12のS105〜S107と同様である。
S307でYesの場合には、まずそのタイミングでの出力値を、低周波フィルターの2タイミング前の出力値として記憶する。これは図16で言えば、A3タイミングに対応する。実際の切り替えはA1タイミングになるため、A3タイミングでの出力値は、切り替え時から見て2タイミング過去になる。
S309〜S311については、S301〜S303と同様に高周波フィルターでのデジタルフィルター処理である。そして、現タイミングが低周波フィルターにおける1周期目の出力タイミングであるかの判定を行う(S312)。これは図16で言えば、A2のタイミングであるか否かの判定である。A3とA2の間のタイミングでの高周波フィルターの出力値は、低周波フィルターの動作には寄与しない。よって、A2のタイミングであったときのみ(S312でYesの場合)、その際の出力値を低周波フィルターの1タイミング前の出力値として記憶する(S313)。S313の処理後はS309に戻る。
S312でNoの場合には、現タイミングが低周波フィルターにおける2周期目の出力タイミングであるかの判定を行う(S314)。これは図16で言えば、A1のタイミングであるか否かの判定である。S314でNoの場合にはS309に戻り、Yesの場合には駆動周波数を低周波に切り替える(S315)。
つまり、S308〜S315においては、A3のタイミングでの出力値を記憶し(S308)、A3からA2の間では何もしない(S312及びS314でともにNo)。そしてA2のタイミングで出力値を記憶し(S313)、A2からA1の間では何もしない(S312及びS314でともにNo)。そのようにしてA2、A3での出力値を保持した上で、A1のタイミングを待って駆動周波数の切り替えを行う(S315)。
4.2.2 低周波から高周波への切り替え
次に低周波(長周期)から高周波(短周期)への切り替えについて説明する。図18に示したようにB1のタイミングで駆動周波数を切り替えることを考える。その際、切り替え後の高周波フィルターでの出力値を求めるには、B4及びB5で示した過去2タイミングでの、高周波フィルターの出力値が必要となる。それに対して、B1のタイミングで保持されている過去タイミングの出力は、B2及びB3で示したタイミングのものである。
よって、高周波フィルターの動作に必要な過去2タイミングの出力値が無いため、そのままでは駆動周波数の切り替えができない。本実施形態では、B1のタイミング及びB2のタイミングにおける低周波フィルターの出力値に基づいて、B4・B5のタイミングにおける高周波フィルターの出力値を推定する補間処理(内挿処理)を行う。例えば、下式(3)を用いて処理を行えばよい。
上式(3)において、左辺のYは高周波フィルターに関する値であり、右辺のYは低周波フィルターに関する値である。また、PSは高周波フィルターの駆動周期、PLは低周波フィルターの駆動周期を表す。つまり、一般的な線形補間を用いるものとする。ただし補間処理の手法はこれに限定されるものではなく、例えばB3のタイミングにおける出力値も用いて、2次関数による近似等を行ってもよい。
次に本実施形態の詳細な処理例について図19のフローチャートを用いて説明する。図19は、デジタルフィルター部22における処理についてのフローチャートである。
S401〜S407については図17のS301〜S307の処理と同様であるため詳細な説明は省略する。S407でYesの場合、つまり駆動周波数の切り替えが指示され、かつ、切り替え後のデジタルフィルターが安定であると判定された場合には、上式(3)を用いて、高周波フィルターでの過去2タイミングの出力値を求め(S408)、S401に戻り高周波フィルターによるデジタルフィルター処理を行う。
以上の本実施形態では、デジタルフィルター係数出力部222は、図15に示したように、第1のデジタルフィルター係数と、第1のデジタルフィルター係数とは異なる第2のデジタルフィルター係数のうち、いずれか1つを選択する係数選択部228を含む。そして、デジタルフィルター係数出力部222は、係数選択部228で選択されたデジタルフィルター係数をデジタルフィルター演算部221に出力する。
なお、係数選択部228にデジタルフィルター係数を出力するデジタルフィルター係数記憶部は、図15に示したように2つのデジタルフィルター係数記憶部(224−1,224−2)から構成されてもよい。
これにより、複数のデジタルフィルター係数を記憶しておき、その中から1つを選択して用いることで、デジタルフィルター演算部221が1つの場合にも、複数のデジタルフィルターをスムーズに切り替えることが可能になる。なお、切り替えをスムーズにするためには、フィルター状態記憶部227は複数のデジタルフィルターに対応するフィルター状態を記憶しておくことが望ましい(例えば図15に示したように、複数のフィルター状態記憶部227−1,227−2から構成する等により実現できる)。
また、第1の駆動周波数と第2の駆動周波数(第1の駆動周波数よりも高周波であるものとする)のいずれかの駆動周波数でデジタルフィルター処理を行ってもよい。その場合、係数選択部228は、第1の駆動周波数に対応する第1のデジタルフィルター係数と、第2の駆動周波数に対応する第2のデジタルフィルター係数のうち、いずれか1つを選択する。そして、デジタルフィルター演算部221は、選択されたデジタルフィルター係数を用いて、当該係数に対応する駆動周波数でデジタルフィルター処理を行う。
これにより、デジタルフィルター処理の駆動周波数を切り替えることが可能になる。駆動周波数を切り替える利点については上述したとおりである。
また、力制御部20は、図10に示したように、センサー情報に対して所与の周波数帯域を通過させる帯域制限処理を行い、帯域制限処理を行ったセンサー情報をデジタルフィルター演算部に出力する帯域制限部24を含んでもよい。そして、帯域制限部24は、第1の駆動周波数が用いられる場合には、第1の周波数帯域を通過させる帯域制限処理を行ったセンサー情報を出力し、第2の駆動周波数が用いられる場合には、第2の周波数帯域(第1の周波数帯域よりも広い周波数帯域)を通過させる帯域制限処理を行ったセンサー情報を出力する。
なお、帯域制限部24は、図15に示したように帯域制限部24―1、帯域制限部24―2及び入力選択部25から構成されてもよい。複数の駆動周波数に対応して複数の帯域制限処理が施されるが、デジタルフィルター演算部221は1つであるから、複数の帯域制限処理後のセンサー情報の中から適切なものを選択する必要があるためである。或いは、複数の帯域制限処理のなかから、1つの処理のみを実行し、他の処理を実行しない構成にしてもよい。
これにより、駆動周波数にあわせて、センサー情報に対して帯域制限処理を施すことが可能になる。帯域制限処理の利点については第2の実施形態で上述した通りである。
また、デジタルフィルター処理の駆動周波数を、高周波の第2の駆動周波数から、低周波の第1の駆動周波数に切り替える場合に、デジタルフィルター演算部221は、第1の期間、切り替え期間、第2の期間でデジタルフィルター処理を切り替えてもよい。ここで、第1の期間の次の期間が切り替え期間であり、切り替え期間の次の期間が第2の期間である。第1の期間では、第2のデジタルフィルター係数を用いた第2の駆動周波数によるデジタルフィルター処理を行う。切り替え期間では、第1のデジタルフィルター係数を用いた第1の駆動周波数によるデジタルフィルター処理と第2のデジタルフィルター係数を用いた第2の駆動周波数によるデジタルフィルター処理の両方を行う。第2の期間では、第1のデジタルフィルター係数を用いた第1の駆動周波数によるデジタルフィルター処理を行う。
これにより、図16及び図17を用いて詳述したような、高周波から低周波へのスムーズな切り替え処理が可能になる。なお、図16において、第1の期間とはA3のタイミングの前の期間、切り替え期間とはA3からA1の間の期間、第2の期間とはA1以降の期間に対応する。
また、デジタルフィルター処理の駆動周波数を、低周波の第1の駆動周波数から、高周波の第2の駆動周波数に切り替える場合に、デジタルフィルター演算部221は、切り替えタイミングにおける第1のデジタルフィルター処理の出力値である第1の出力値と、過去タイミングにおける第1のデジタルフィルター処理の出力値である第2の出力値に基づいて、切り替えタイミングと過去タイミングの間のタイミングにおける補間値を求める補間処理を行ってもよい。そして、補間処理によって求めた補間値に基づいて、切り替えタイミング以後の第2のデジタルフィルター処理を行う。
ここで、第i(i=1or2)のデジタルフィルター処理とは、第iのデジタルフィルター係数を用いた第iの駆動周波数によるデジタルフィルター処理のことである。また、切り替えタイミングとは、駆動周波数を切り替えるタイミングのことであり、図18におけるB1に相当する。過去タイミングとは切り替えタイミングより過去のタイミングであり、B2やB3に対応する(狭義には第1のデジタルフィルター処理のサンプリングタイミングである)。補間値とは、第1の出力値及び第2の出力値から求められる値であり、狭義には、第2のデジタルフィルター処理のサンプリングタイミングであり、かつ、切り替えタイミングの1タイミング前及び2タイミング前のタイミング(B4及びB5に相当)におけるデジタルフィルター処理の出力値に対応する値のことである。
これにより、図18及び図19を用いて詳述したような、高周波から低周波へのスムーズな切り替え処理が可能になる。
5.第4の実施形態
第2の実施形態及び第3の実施形態では、駆動周波数の切り替えは、例えば外部I/F等を介したユーザーからの入力情報に基づいて行われる。それに対して本実施形態では、力覚センサーからのセンサー情報に基づいて出力フィルターの選択処理(狭義には駆動周波数の切り替え処理)を行う。
具体的には、センサー情報に対して低域通過フィルター処理を施した低域センサー情報と、高域通過フィルター処理を施した高域センサー情報を求める。そして、低域センサー情報と高域センサー情報から、信号全体に対する高周波成分の比率を算出する。高周波成分の比率が高い場合には、駆動周波数の高いデジタルフィルターを出力フィルターとして選択し、高周波成分の比率が低い場合には、駆動周波数の低いデジタルフィルターを選択する。
5.1 構成
図20に第4の実施形態にかかるロボット制御システムを含むロボットシステムの構成例を示す。第3の実施形態(図15)と同様の箇所については詳細な説明は省略する。第3の実施形態と比較した場合、選択処理部50、低域通過フィルター51及び高域通過フィルター52が追加されている点が異なる。なお、説明を簡略化するための帯域制限部24−1、帯域制限部24−2及び入力選択部25が省略されているが、本実施形態においてこれらを用いる構成にしてもよい。その場合、選択処理部50の処理結果は、入力選択部25にも出力されることになる。
低域通過フィルター51は力覚センサーからのセンサー情報に対して低域通過フィルター処理を施し低域センサー情報を出力する。同様に高域通過フィルター52は力覚センサーからのセンサー情報に対して高域通過フィルター処理を施し高域センサー情報を出力する。
選択処理部50は、低域センサー情報及び高域センサー情報に基づいて、信号全体に対する高周波成分の比率を求める。さらに求めた比率に基づいて、複数のデジタルフィルターの中から、出力フィルターとして用いるデジタルフィルターの選択処理を行い、選択処理の結果を係数選択部228と状態選択・処理部229に対して出力する。
係数選択部228は選択された出力フィルターに対応するデジタルフィルター係数を選択し、状態選択・処理部229は選択された出力フィルターに対応するフィルター状態に関する処理を行う。
5.2 詳細な処理
本実施形態における処理の詳細は、図17或いは図19と同様である。S304或いはS404における駆動周波数の切り替え判定が、選択処理部50で選択された出力フィルターが変化したか否かに基づいて行われることになる。
なお、以上では第3の実施形態と同様にデジタルフィルター演算部が1つの構成を用いて説明したが、これに限定されるものではない。例えば、第2の実施形態(図13)のようにデジタルフィルター演算部が2つの構成をとってもよい。その場合、図13に選択処理部50、低域通過フィルター51及び高域通過フィルター52が追加されることになり、選択処理部50の処理結果はデジタルフィルター出力選択部220に対して出力される。そして、デジタルフィルター出力選択部220では、選択処理部50で選択されたデジタルフィルターに対応したデジタルフィルター演算部からの出力を選択し、デジタルフィルター部22の出力とする。
以上の本実施形態では、デジタルフィルター部22は、図20に示したように、センサー情報の信号周波数帯域情報に基づいて、デジタルフィルターの駆動周波数を選択する選択処理部50を含む。そして、デジタルフィルター部22は、選択処理部50において選択された駆動周波数でデジタルフィルター処理を行い、補正値を出力する。
ここで、駆動周波数の選択は、狭義には第1の駆動周波数と第2の駆動周波数のうちのいずれかの選択を行うものとするが、候補の駆動周波数が3つ以上であってもよい。
これにより、ユーザーが入力等を行うことなく、駆動周波数を選択することができるため、ユーザーにとって使いやすいシステムを提供することが可能になる。
また、選択処理部50は、センサー情報に対して低域通過フィルター51を施した低域センサー情報と、センサー情報に対して高域通過フィルター52を施した高域センサー情報を、上述の信号周波数帯域情報として用いてもよい。つまり、低域センサー情報と高域センサー情報に基づいて駆動周波数を選択する。
これにより、フィルター処理という容易な処理により、駆動周波数の選択を行うことが可能になる。処理の具体例としては、低域センサー情報と高域センサー情報から、信号全体に対する高周波成分の比率を求めることが考えられる。高周波成分が多い場合には、駆動周波数も高くして信号の高周波成分に対応する。高周波成分が少なければ、駆動周波数も低くてよい。
以上、本発明を適用した4つの実施の形態1〜4およびその変形例について説明したが、本発明は、各実施の形態1〜4やその変形例そのままに限定されるものではなく、実施段階では、発明の要旨を逸脱しない範囲内で構成要素を変形して具体化することができる。また、上記した各実施の形態1〜4や変形例に開示されている複数の構成要素を適宜組み合わせることによって、種々の発明を形成することができる。例えば、各実施の形態1〜4や変形例に記載した全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態や変形例で説明した構成要素を適宜組み合わせてもよい。また、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。このように、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能である。