(57)【要約】  【課題】より簡単にロボットのエンドエフェクターの位置制御及び力制御を行う。  【解決手段】アームを備えるロボットの動作を制御するロボット制御装置は、前記アームの作業点に加える仮想の力を取得する第一の取得手段と、前記取得された仮想の力を第一のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第一の変位設定手段と、前記第一の変位設定手段により設定された変位に基づいて前記作業点の目標位置を設定する目標位置設定手段と、を有する。【選択図】図１
2013158837.tif 000002
【特許請求の範囲】
【請求項１】
アームを備えるロボットの動作を制御するロボット制御装置であって、
前記アームの作業点に加える仮想の力を取得する第一の取得手段と、
前記取得された仮想の力を第一のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第一の変位設定手段と、
前記第一の変位設定手段により設定された変位に基づいて前記作業点の目標位置を設定する目標位置設定手段と、を有する、
ことを特徴とするロボット制御装置。
【請求項２】
請求項１に記載のロボット制御装置であって、
前記作業点に加わった外力を検出するセンサーのセンサー値を取得する第二の取得手段と、
前記取得されたセンサー値に対応する外力を第二のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第二の変位設定手段と、を有し、
前記目標位置設定手段は、前記第一の変位設定手段により設定された変位と、前記第二の変位設定手段により設定された変位と、に基づいて前記作業点の目標位置を設定する、
ことを特徴とするロボット制御装置。
【請求項３】
請求項２に記載のロボット制御装置であって、
前記第一の取得手段は、前記仮想の力の入力を受け付ける、又は、前記作業点が移動すべき目標変位の入力を受け付けて、当該目標の変位に応じた前記仮想の力を求める、ことにより前記仮想の力を取得する、
ことを特徴とするロボット制御装置。
【請求項４】
請求項２又は３に記載のロボット制御装置であって、
前記第一の取得手段は、前記作業点に加えるべき目標の力の入力を受け付けて、当該目標の力と、前記第二の取得手段により取得されたセンサー値に対応する外力とに基づいて、前記仮想の力を求める、ことにより前記仮想の力を取得する、
ことを特徴とするロボット制御装置。
【請求項５】
請求項２〜４いずれか一項に記載のロボット制御装置であって、
前記第一のインピーダンスモデルと前記第二のインピーダンスモデルとは、前記仮想の力と前記外力との方向が相互に逆となるように対称に配置されている、
ことを特徴とするロボット制御装置。
【請求項６】
請求項２〜５いずれか一項に記載のロボット制御装置であって、
前記第一のインピーダンスモデルは、軸方向の変位、又は軸回りの変位に対応するモデルであり、
前記仮想の力は、軸方向の仮想の力、又は軸回りの仮想の力であり、
前記第二のインピーダンスモデルは、軸方向の変位、又は軸回りの変位に対応するモデルであり、
前記外力は、軸方向の外力、又は軸回りの外力である、
ことを特徴とするロボット制御装置。
【請求項７】
請求項２〜６いずれか一項に記載のロボット制御装置であって、
前記第一のインピーダンスモデル及び前記第二のインピーダンスモデルそれぞれの特性の変更を受け付ける受付手段、を有する、
ことを特徴とするロボット制御装置。
【請求項８】
請求項１〜７いずれか一項に記載のロボット制御装置であって、
指定された始点から終点までの軌道を生成する軌道生成手段を有し、
前記目標位置設定手段は、前記第一の変位設定手段により算出された変位に基づいて前記軌道を修正する、
ことを特徴とするロボット制御装置。
【請求項９】
アームを備えるロボットの動作を制御するロボット制御方法であって、
前記アームの作業点に加える仮想の力を取得する第一の取得ステップと、
前記取得された仮想の力を第一のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第一の変位設定ステップと、
前記第一の変位設定ステップにより設定された変位に基づいて前記作業点の目標位置を設定する目標位置設定ステップと、を含む、
ことを特徴とするロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、およびロボット制御方法に関する。
【背景技術】
【０００２】
ロボットの運動制御としては、例えば、ロボットアームの手先の位置を制御する位置制御、手先が対象物に加える力を制御する力制御がある。また、位置制御と力制御の両方を統合したハイブリッド制御もある。
【０００３】
ロボットの力制御としては、例えば、インピーダンス制御が知られている。インピーダンス制御では、例えば、ロボットアームの手先に加わる力やモーメントなどの外力を測定する力覚センサーを用いて、力覚センサーの入力に応じてロボットアームの手先の作業対象物に加わる力を制御する。インピーダンス制御に関する文献としては、特許文献１がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−６１５５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、従来の手先の位置の制御では、例えば、開始位置から目標位置までの軌道を生成し、当該軌道に沿って手先が動くように制御する。また、従来のインピーダンス制御は、力覚センサーに対して加わった力を利用して、手先が対象物に接触した場合の手先の位置を柔軟に対応させるために使用される。従って、インピーダンス制御が働くのは、手先が対象物に接触してからとなる。
【０００６】
ここで、例えば、手先が対象物に接触してから手先を一定の力で対象物に押し付け続ける制御を行う場合、手先の目標位置（「制御点」ともいう。）を手先が対象物を押し付ける方向のどの位置に設定するか、センサー出力に応じたインピーダンス制御による位置修正量はどれくらいの大きさになるか、インピーダンスモデルの係数（慣性、粘性、剛性などの係数）をどのように設定するか、などの要素を考慮して制御する必要があり、処理が複雑である。
【０００７】
また、従来の位置制御により手先の位置の移動を制御する場合には、例えば、開始位置から目標位置までの軌道上に複数含まれる通過位置間の軌道ごとに、加速区間や減速区間などの速度の設定が行われる。そのため、多くの設定が必要であり、処理が複雑である。
【０００８】
そこで、本発明は、より簡単にロボットのエンドエフェクターの位置制御及び力制御を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本願は、上記課題を解決する手段を複数含んでいるが、その例を挙げるならば、以下のとおりである。
【００１０】
上記の課題を解決する本発明の一態様は、アームを備えるロボットの動作を制御するロボット制御装置であって、前記アームの作業点に加える仮想の力を取得する第一の取得手段と、前記取得された仮想の力を第一のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第一の変位設定手段と、前記第一の変位設定手段により設定された変位に基づいて前記作業点の目標位置を設定する目標位置設定手段と、を有する、ことを特徴とする。
【００１１】
上記の構成によれば、仮想の力をインピーダンスモデルに与えることでエンドエフェクターの移動を制御できるので、より簡単にロボットのエンドエフェクターの位置制御及び力制御を行うことができる。例えば、インピーダンスモデルに仮想力を与えれば、求まる変位に応じて加速や減速などの速度も制御されるので、より少ない設定で簡単に制御が可能である。
【００１２】
ここで、前記ロボット制御装置は、前記作業点に加わった外力を検出するセンサーのセンサー値を取得する第二の取得手段と、前記取得されたセンサー値に対応する外力を第二のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第二の変位設定手段と、を有し、前記目標位置設定手段は、前記第一の変位設定手段により設定された変位と、前記第二の変位設定手段により設定された変位と、に基づいて前記作業点の目標位置を設定する、ことを特徴としてもよい。
【００１３】
上記の構成によれば、もう一つのインピーダンスモデルにより外力に応じてエンドエフェクターの移動を制御できるので、仮想の力に応じた移動によりエンドエフェクターが対象物などに接触したときの柔軟な移動を簡単に制御できる。
【００１４】
また、前記第一の取得手段は、前記仮想の力の入力を受け付ける、又は、前記作業点が移動すべき目標変位の入力を受け付けて、当該目標の変位に応じた前記仮想の力を求める、ことにより前記仮想の力を取得する、ことを特徴としてもよい。
【００１５】
上記の構成によれば、ユーザーは仮想の力又は目標の変位を入力すればよいので、より直感的にロボットの動作（例えば、作業空間でのエンドエフェクターの移動など）を操ることができる。
【００１６】
また、前記第一の取得手段は、前記作業点に加えるべき目標の力の入力を受け付けて、当該目標の力と、前記第二の取得手段により取得されたセンサー値に対応する外力とに基づいて、前記仮想の力を求める、ことにより前記仮想の力を取得する、ことを特徴としてもよい。
【００１７】
上記の構成によれば、ユーザーは目標の力を入力すればよいので、より直感的にロボットの動作（例えば、対象物に対するエンドエフェクターの押し付け動作など）を操ることができる。
【００１８】
また、前記第一のインピーダンスモデルと前記第二のインピーダンスモデルとは、前記仮想の力と前記外力との方向が相互に逆となるように対称に配置されている、ことを特徴としてもよい。
【００１９】
上記の構成によれば、エンドエフェクターに加わるベクトル方向の力と、その反対のベクトル方向の力とに対する制御を行うことができる。また、性質（例えば、バネの硬さなど）の異なるモデルを設定することもできるので、エンドエフェクターに加わる力に対する反応（動作）と、その反対の力に対する反応（動作）とを、それぞれ設計することができる。
【００２０】
また、前記第一のインピーダンスモデルは、軸方向の変位、又は軸回りの変位に対応するモデルであり、前記仮想の力は、軸方向の仮想の力、又は軸回りの仮想の力であり、前記第二のインピーダンスモデルは、軸方向の変位、又は軸回りの変位に対応するモデルであり、前記外力は、軸方向の外力、又は軸回りの外力である、ことを特徴としてもよい。
【００２１】
上記の構成によれば、エンドエフェクターの位置の軸方向の直進運動だけでなく軸回りの回転運動についても、インピーダンスモデルによって制御することができるため、より簡単な制御が可能である。
【００２２】
また、前記ロボット制御装置は、前記第一のインピーダンスモデル及び前記第二のインピーダンスモデルそれぞれの特性の変更を受け付ける受付手段、を有する、ことを特徴としてもよい。
【００２３】
上記の構成によれば、簡単にロボットの動作（例えば、対象物に接触した場合の動作や、移動速度など）を調整することができる。
【００２４】
また、前記ロボット制御装置は、指定された始点から終点までの軌道を生成する軌道生成手段を有し、前記目標位置設定手段は、前記第一の変位設定手段により算出された変位に基づいて前記軌道を修正する、ことを特徴としてもよい。
【００２５】
上記の構成によれば、軌道生成による位置制御とともに仮想の力による動作を制御できる。
【００２６】
上記の課題を解決する本発明の他の態様は、アームを備えるロボットの動作を制御するロボット制御方法であって、前記アームの作業点に加える仮想の力を取得する第一の取得ステップと、前記取得された仮想の力を第一のインピーダンスモデルに与えることにより、前記作業点が移動すべき変位を設定する第一の変位設定ステップと、前記第一の変位設定ステップにより設定された変位に基づいて前記作業点の目標位置を設定する目標位置設定ステップと、を含む、ことを特徴とする。
【００２７】
上記の構成によれば、仮想の力をインピーダンスモデルに与えることでエンドエフェクターの動作を制御できるので、より簡単にロボットの位置制御及び力制御を行うことができる。
【００２８】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態に係るロボット制御装置の概略構成の一例を示す図である。
【図２】ロボットの概略構成の一例を示す図である。
【図３】仮想力制御のインピーダンスモデルと力制御のインピーダンスモデルの関係を説明する図である。
【図４】インピーダンスモデルの一例を示す図である。
【図５】ロボットアームの手先を移動させる制御の流れ一例を示すフロー図である。
【図６】ロボットアームの手先を対象物に目標の力で押し付ける制御の流れ一例を示すフロー図である。
【発明を実施するための形態】
【００３０】
以下、本発明の一実施形態の一例について、図面を参照して説明する。
【００３１】
図１は、本発明の一実施形態に係るロボット制御装置の概略構成の一例を示す図である。
【００３２】
ロボット２は、ロボット制御装置１により制御される。ロボット２は、例えば、図２に示すように、ワークの把持などを行うアーム型のロボットである。ロボット２のアームは、例えば、複数のジョイント（関節）２００と、複数のリンク２１０と、ハンド（２２０と、力覚センサー２３０とを備える。
【００３３】
各ジョイント２００は、リンク２１０同士や、胴体部とリンク２１０、ハンド２２０とリンク２１０を、回動自在に（ただし、所定の可動範囲内で回動可能に）連結している。本図の例では、ロボット２は、６つのジョイントを備えた６軸アームとなっている。
【００３４】
また、各ジョイント２００やハンド２２０には、それらを動作させるための、例えば、アクチュエーター（不図示）が備えられる。アクチュエーターは、例えば、サーボモーターやエンコーダーなどを備える。エンコーダーが出力するエンコーダー値は、ロボット制御装置１によるロボット２のフィードバック制御に使用される。
【００３５】
また、ロボット２は、ハンド２に力覚センサー２３０を備えている。力覚センサー２３０は、例えば、手先が障害物などに接触した場合に、当該障害物からの外力（作用力）を計測し、ロボット制御装置１に出力する。力覚センサー２３０が出力するセンサー値は、ロボット制御装置１によるロボット２のインピーダンス制御（従来のインピーダンス制御）に使用される。
【００３６】
もちろん、上記のロボット２の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。一般的な把持ロボットが備える構成を排除するものではない。例えば、図２では６軸のアームが示されているが、軸数（ジョイント数）をさらに増加させてもよいし減らしてもよい。リンクの数を増減させてもよい。また、アーム、ハンド、リンク、ジョイント等の各種部材の形状、大きさ、配置、構造等も適宜変更してよい。力覚センサーの位置なども適宜変更してもよい。
【００３７】
ロボット制御装置１は、ロボット２の動作を制御する装置である。ロボット制御装置１は、制御部１００と、入力部１１０と、サーボ制御部１２０とを備える。
【００３８】
制御部１００は、ロボット２の動作制御のための各種演算を行う。制御部１００は、位置制御部１０１と、力制御部１０２と、仮想力制御部１０３と、位置修正部１０４と、インバース・キネマティクス（逆運動学）部１０５と、フォワード・キネマティクス（順運動学）部１０６とを有する。
【００３９】
なお、本実施形態では、ハンド２２０の着目したある点を、アームの「作業点（いわゆる、エンドエフェクター）」と呼ぶ。以下では、ハンド２２０の先端（手先）が「作業点（エンドエフェクター）」であるものとして説明する。
【００４０】
位置制御部１０１は、従来の位置制御を行う。例えば、位置制御部１０１は、フォワード・キネマティクス部１０６からロボット２の現在の手先の位置を取得する。また、位置制御部１０１は、入力部１１０からロボット２の目標の位置を取得する。そして、位置制御部１０１は、現在の位置（始点）から目標の位置（終点）までの軌道を生成する。
【００４１】
力制御部１０２は、力覚センサー２３０から出力されるセンサー値に基づく従来のインピーダンス制御を行う。例えば、力制御部１０２は、ロボット２の力覚センサー２３０のセンサー値に基づいて、手先に対する外力が計測されている場合に、設定されている所定のインピーダンスモデルを用いて手先の位置の変位（修正量）を算出する。
【００４２】
力制御部１０２のインピーダンスモデルは、例えば、図３（手先の左側）に示すように、手先に加わる外力に応じて手先の運動を制御するものである。例えば、手先が障害物などに接触したときに、障害物に対する力（手先に加わる力）を逃がす運動を制御する。なお、力制御のインピーダンスモデルには、例えば、図４に示すような、慣性項、粘性項、及び剛性項を含む一般的な運動方程式を用いることができる。
【００４３】
仮想力制御部１０３は、力制御のインピーダンスモデルと対称に配置されたインピーダンスモデルにより、仮想力に基づくインピーダンス制御を行う。
【００４４】
なお、本実施形態では、「対称」とは、ある軸方向の力の場合、力の直進方向が相互に逆であることを意味し、ある軸回りの力のモーメント（トルク）の場合、力の回転方向が相互に逆であることを意味する。
【００４５】
例えば、仮想力制御部１０３は、入力部１１０を介してユーザーから、手先の目標の移動量（以下、「目標変位」ともいう。）を受け付ける（取得する）。そして、入力された目標変位を所定の変換式を用いて仮想力に変換し、設定されている所定のインピーダンスモデルを用いて手先の位置の変位（修正量）を算出する。
【００４６】
また、例えば、仮想力制御部１０３は、入力部１１０を介してユーザーから、手先に加える目標の力を受け付ける（取得する）。そして、入力された目標の力を所定の変換式を用いて仮想力に変換し、設定されている所定のインピーダンスモデルを用いて手先の位置の変位（修正量）を算出する。なお、目標の力から仮想力への変換を、入力部１１０が行うようにしてもよい。また、入力部１１０が仮想力を受け付けるようにして、変換処理を省略するようにしてもよい。
【００４７】
仮想力制御部１０３のインピーダンスモデルは、例えば、図３（手先の右側）に示すように、手先に加わる仮想力に応じて手先の運動を制御するものである。例えば、手先を目的の方向に移動させたり、障害物に押し付けたりする運動を制御する。なお、仮想力制御のインピーダンスモデルには、例えば、図４に示すような、慣性項、粘性項、及び剛性項を含む一般的な運動方程式を用いることができる。
【００４８】
位置修正部１０４は、手先の目標位置の修正を行う。例えば、位置制御部１０１による軌道の算出と、力制御部１０２による手先の位置の変位の算出とが行われる場合、位置修正部１０４は、位置制御部１０１から出力される現在位置から目標位置までの軌道に基づく位置指令に対して、力制御部１０２から出力される位置の変位を加えて、位置の修正を行う。なお、力覚センサー２３０により外力が検出されない場合、力制御部１０２の出力に応じた位置の修正は行われない。
【００４９】
また、例えば、仮想力制御部１０３による手先の位置の変位の算出と、力制御部１０２による手先の位置の変位の算出とが行われる場合、位置修正部１０４は、仮想力制御部１０３から出力される位置の変位に対して、力制御部１０２から出力される位置の変位を加えて、変位の修正を行う。
【００５０】
インバース・キネマティクス（逆運動学）部１０５は、ロボット２の手先の位置から関節変位を求める。例えば、インバース・キネマティクス（逆運動学）部１０５は、位置修正部１０４から出力される手先の位置を取得し、当該位置を実現する各ジョイント２００の角度情報に変換する。そして、当該角度情報をサーボ制御部１２０に出力する。
【００５１】
フォワード・キネマティクス（順運動学）部１０６は、ロボット２の関節変位から手先の位置を求める。例えば、フォワード・キネマティクス（順運動学）部１０６は、ロボット２の各ジョイント２００の現在の角度を、サーボ制御部１２０から取得し、この角度情報を手先の位置情報に変換する。そして、当該位置情報を位置制御部１０１に出力する。
【００５２】
入力部１１０は、ロボット２の手先の移動の指示を受け付ける。例えば、位置制御部１０１による軌道の算出と、力制御部１０２による手先の位置の変位の算出とが行われる場合、入力部１１０は、ロボット２の手先の目標位置を受け付け、位置制御部１０１に出力する。
【００５３】
また、例えば、仮想力制御部１０３による手先の位置の変位の算出と、力制御部１０２による手先の位置の変位の算出とが行われる場合、入力部１１０は、ロボット２の手先の目標変位を特定する情報を受け付け、仮想力制御部１０３に出力する。また、上述のように、入力部１１０は、目標の力を特定する情報を受け付けるようにしてもよい。仮想力を特定する情報を受け付けるようにしてもよい。
【００５４】
なお、入力部１１０は、手先の目標位置や目標変位を、ユーザーから受け付けてもよいし、他のコンピューターや所定のプログラムから受け付けるようにしてもよい。また、入力部１１０は、インピーダンスモデルの特性の変更などを、ユーザー、他のコンピューター、所定のプログラムなどから受け付けるようにしてもよい。
【００５５】
サーボ制御部１２０は、ロボットのサーボモーターに指令を送る。例えば、サーボ制御部１２０は、インバース・キネマティクス部１０５から出力された各ジョイント２００の角度情報に基づいて制御指令を生成し、各ジョイント２００のサーボモーターを駆動する。これにより、ロボット２の位置及び姿勢が変化する。また、サーボ制御部１２０は、ロボット２のアクチュエーターからエンコーダー値を取得して、制御部１００に出力する。
【００５６】
上記のロボット制御装置１は、例えば、ＣＰＵと、ＲＡＭなどの主メモリーと、ＨＤＤ（Hard Disk Drive）などの補助記憶装置と、ディスプレイと、マウスやキーボードなどの入力装置と、ネットワークインターフェイス（Ｉ／Ｆ）などの通信装置と、を備えるコンピューターにより実現することができる。制御部１００やサーボ制御部１２０は、専用のＡＳＩＣやコントローラー基板で実現されてもよい。なお、制御部１００やサーボ制御部１２０は、例えば、ＣＰＵがＨＤＤに格納された所定のプログラムをＲＡＭに読み出して実行することにより実現することができる。入力部１１０は、例えば、入力装置により実現される。
【００５７】
なお、上記に説明した構成は、ロボット制御装置１の構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。ロボット制御装置１の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、１つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、１つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
【００５８】
次に、上記のロボット制御装置１により実現される特徴的な処理について説明する。
【００５９】
以下では、仮想力制御部１０３と力制御部１０２による制御について説明する。位置制御部１０１と力制御部１０２による制御については、従来と同様なので説明を省略する。
【００６０】
図５は、ロボットアームの手先を移動させる制御（位置制御を用いない場合）の流れ一例を示すフロー図である。
【００６１】
まず、入力部１１０は、ユーザーの操作により、ロボット２の手先の目標変位の入力を受け付ける（Ｓ１０）。目標変位とは、例えば、手先の現在位置からの、指定方向への直線的な移動量である。
【００６２】
それから、仮想力制御部１０３は、目標変位を仮想力に変換する（Ｓ２０）。具体的には、仮想力制御部１０３は、Ｓ１０で入力された目標変位を、所定の変換式を用いて、仮想力に変換する。所定の変換式は、例えば、Ｆ＝Ｋｘである。ここで、Ｆは仮想力であり、Ｋは剛性項であり、ｘは目標変位である。
【００６３】
なお、Ｓ１０において、仮想力を、ユーザーの操作により受け付けるようにしてもよい。この場合、Ｓ２０の処理は、不要である。そして、以降の処理では、入力された仮想力を用いて処理を行えばよい。
【００６４】
また、仮想力制御部１０３は、Ｓ１２０の終了判定に用いる判定閾値を設定する（Ｓ３０）。判定閾値は、Ｓ６０で仮想力制御部１０３により算出される仮想力に対応する変位が、Ｓ１０で入力された目標変位に十分近付いたことを判定する値である。
【００６５】
それから、フォワード・キネマティクス部１０６は、各軸の現在位置（エンコーダー値）を取得する（Ｓ４０）。すなわち、ロボット２の各ジョイント２００の現在の角度を、サーボ制御部１２０から取得する。また、フォワード・キネマティクス部１０６は、取得した角度情報を手先の位置情報に変換する（Ｓ５０）。以降の処理（特にＳ９０）では、当該現在の位置情報が、基準の位置情報となる。
【００６６】
それから、Ｓ６０（仮想力制御部１０３）と、Ｓ７０〜Ｓ８０（力制御部１０２）との処理が、並列的に実行される。もちろん、これらの処理は、順次実行されてもよい。
【００６７】
仮想力制御部１０３は、仮想力制御のインピーダンスモデルの運動方程式を解く（Ｓ６０）。具体的には、仮想力制御部１０３は、Ｓ２０で算出した仮想力を、仮想力制御のインピーダンスモデルに加わる力Ｆとして与え、当該運動方程式の解（時間ｔあたりの変位（修正量））を求める。Ｆは仮想力なので、一定である（入力値に固定する）。なお、運動方程式の解を求める方法としては、例えば、ルンゲ・クッタ（Runge-Kutta）法などの一般的なものを用いることができる。
【００６８】
一方、力制御部１０２は、力覚センサー２３０から出力されるセンサー値を取得する（Ｓ７０）。そして、力制御のインピーダンスモデルの運動方程式を解く（Ｓ８０）。具体的には、力制御部１０２は、Ｓ７０で取得したセンサー値に対応する外力を、力制御のインピーダンスモデルに加わる力Ｆとして与え、当該運動方程式の解（時間ｔあたりの変位（修正量））を求める。Ｆはセンサー値なので、不定である。なお、運動方程式の解を求める方法としては、例えば、ルンゲ・クッタ（Runge-Kutta）法などの一般的なものを用いることができる。
【００６９】
なお、外力が検出されていない場合、Ｓ７０〜Ｓ８０の処理は、実行されない。すなわち、力制御部１０２は、外力に応じた手先位置の変位（修正量）を出力しない。
【００７０】
それから、位置修正部１０４は、手先位置の変位の修正を行う（Ｓ９０）。具体的には、位置修正部１０４は、例えば、Ｓ６０で仮想力制御部１０３により算出された位置の変位に対して、Ｓ８０で力制御部１０２により算出された位置の変位を加えて、修正を行う。また、位置修正部１０４は、Ｓ５０で算出された基準の手先位置に、修正後の変位を加えて、目標位置を修正する。
【００７１】
それから、インバース・キネマティクス部１０５は、Ｓ９０で求められた目標位置を、当該位置を実現する各ジョイント２００の角度情報に変換する（Ｓ１００）。また、サーボ制御部１２０は、Ｓ１００で算出された各ジョイント２００の角度情報に基づいて制御指令を生成し、各ジョイント２００のサーボモーターを駆動する（Ｓ１１０）。
【００７２】
それから、仮想力制御部１０３は、目標変位と仮想力による変位の差分とが判定閾値よりも小さくなったか否かを判定する（Ｓ１２０）。具体的には、仮想力制御部１０３は、Ｓ６０で算出した基準位置からの変位と、Ｓ１０で入力された目標変位との差分を求め、当該差分とＳ３０で設定した判定閾値とを比較する。差分が判定閾値以上の場合（Ｓ１２０：ＮＯ）、処理をＳ５０の直後（Ｓ６０〜Ｓ８０の直前）に戻す。差分が判定閾値より小さい場合（Ｓ１２０：ＹＥＳ）、本フローを終了する。
【００７３】
以上のようにして、指定された変位に基づく仮想力により、手先の移動を制御することができる。例えば、手先に変位を与えれば、仮想力制御のインピーダンスモデルに従って手先が移動する。また、手先が対象物に接触してからは、力制御のインピーダンスモデルに従って、手先に加わる力を逃がす方向にも制御が行われる。
【００７４】
なお、位置制御により手先の位置の移動を制御する場合には、例えば、開始位置から目標位置までの軌道上に複数含まれる通過位置間の軌道ごとに、加速区間や減速区間などの速度の設定が行われるため、多くの設定が必要である。これに対して、仮想力制御を用いる場合は、インピーダンスモデルに仮想力を与えれば、求まる変位に応じて加速や減速などの速度も制御されるので、より少ない設定で簡単に制御が可能である。
【００７５】
もちろん、例えば、手先が対象物に接触してからさらに対象物を押すような変位を与えれば、仮想力制御のインピーダンスモデルに従って手先を対象物に押し付けることができる。
【００７６】
なお、仮想力制御による変位は、目標変位に対応する仮想力に応じて算出される。一方、力制御による変位は、仮想力制御によって生じた変位によりセンサーが外力を検出し、検出された外力に応じて算出される。ここで、通常センサーの応答速度は速くないため、センサーに対する外力は、仮想力制御による変位の発生から遅れて発生するとともに、仮想力制御による変位が大きくなるに従って大きくなる。そして、最終的に仮想力による変位と外力による変位とが釣り合うことで静止する。従って、手先が対象物に接触してから押し付ける方向に変位を発生させると、対象物を押し付けることができる。
【００７７】
手先と対象物の距離が０であり、かつ力覚センサーの検出する値が０である初期状態から、手先を対象物に押し付ける動作を例に挙げて説明する。
【００７８】
例えば、仮想力制御のインピーダンスモデルと、力制御のインピーダンスモデルが同じモデルである場合を考える。仮想力制御のインピーダンスモデルは、バネ係数が１００であり、仮想力５Ｎ（ニュートン）が与えられたときに、０．０５ｍの変位が発生するものとする。力制御のインピーダンスモデルも、同様であるものとする。この場合、仮想力制御のインピーダンスモデルでは、５Ｎの仮想力を与えることで０．０５ｍの変位が発生する。これに対し、力制御のインピーダンスモデルでは、力覚センサーが検出する外力の値が５Ｎになったときに、０．０５ｍの変位が発生する。このように、最終的に力覚センサーが５Ｎの外力を検出したときに、仮想力による変位と外力による変位とが釣り合って手先が静止する。従って、手先の位置は静止したままで、力覚センサーには５Ｎの外力が加わっていることとなる。
【００７９】
一方、例えば、仮想力制御のインピーダンスモデルと、力制御のインピーダンスモデルのバネ係数が異なる場合を考える。仮想力制御のインピーダンスモデルは、バネ係数が１００であり、仮想力５Ｎ（ニュートン）が与えられたときに、０．０５ｍの変位が発生するものとする。力制御のインピーダンスモデルは、バネ係数が２００であるものとする。この場合、仮想力制御のインピーダンスモデルでは５Ｎの仮想力を与えることで０．０５ｍの変位が発生する。これに対し、力制御のインピーダンスモデルでは、力覚センサーが検出する外力の値が１０Ｎになったときに、０．０５ｍの変位が発生する。このように、最終的に力覚センサーが１０Ｎの外力を検出したときに、仮想力による変位と外力による変位とが釣り合って手先が静止する。従って、手先の位置は静止したままで、力覚センサーには１０Ｎの外力が加わっていることとなる。
【００８０】
また、本実施形態では、仮想力に基づくインピーダンス制御と、外力に基づくインピーダンス制御とが、個別に用意されているので、それぞれに与えられる力に応じて個別に制御を行うことができる。例えば、仮想力制御のインピーダンスモデルによる手先の変位（速度）が、力制御のインピーダンスモデルによる変位（速度）よりも遅くなるように特性を設定（例えば、仮想力制御と力制御の剛性項及び慣性項を同じに設定し、仮想力制御の粘性項を力制御のものよりも大きく設定）すれば、仮想力制御による手先の変位が力制御による手先の変位よりも緩慢となり、手先に過度の力が加わらないようにすることができる。
【００８１】
なお、位置制御と力制御により手先の位置を制御する場合には、例えば、位置制御による手先の移動の速度に応じて、力制御のインピーダンスモデルの特性を変更しないと、手先や対象物の破損を発生させるおそれがあり、複雑な調整を必要とする。これに対して、仮想力制御を用いる場合は、上述のように設定が簡易である。
【００８２】
図６は、ロボットアームの手先を目標の力で対象物に押し付ける制御（位置制御を用いない場合）の流れ一例を示すフロー図である。
【００８３】
本図は、手先が対象物に向かって移動して接触した後、対象物を一定の力で押し付け続ける場合に適用される（もちろん、対象物に接触しない場合に適用してもよい）。なお、図５においても、指定する変位の値によって、対象物を一定の力で押し付け続ける制御を行うことができるが、図６では、明示的に押し付ける力を入力できるようにしている。図５と異なる点を中心に説明する。
【００８４】
まず、入力部１１０は、ユーザーの操作により、ロボット２の手先に加える目標の力の入力を受け付ける（Ｓ１１）。また、力制御部１０２は、力覚センサー２３０から出力されるセンサー値を取得する（Ｓ１２）。
【００８５】
それから、仮想力制御部１０３は、仮想力を算出する（Ｓ１３）。具体的には、仮想力制御部１０３は、Ｓ１１で入力された目標の力と、Ｓ１２で取得したセンサー値に対応する外力とから、所定の変換式を用いて、仮想力を算出する。所定の変換式は、例えば、Ｆｖ＝（Ｆｐ−Ｆｓ）＊Ｋｖ／Ｋｆである。ここで、Ｆｖは仮想力であり、Ｆｐは目標の力であり、Ｆｓは外力であり、Ｋｖは仮想力制御のインピーダンスモデルの剛性項であり、Ｋｆは力制御のインピーダンスモデルの剛性項である。Ｋｖ／Ｋｆは、二つの剛性項の比を表している。仮想力Ｆｖを仮想力制御に与えることで、目標の力Ｆｐが手先に加わることとなる。
【００８６】
それから、仮想力制御部１０３は、目標変位を算出する（Ｓ１４）。具体的には、仮想力制御部１０３は、Ｓ１３で算出した仮想力から、所定の変換式を用いて、目標変位を算出する。所定の変換式は、例えば、ｘ＝Ｆｖ／Ｋｖである。ここで、ｘは目標変位であり、Ｆｖは仮想力であり、Ｋｖは剛性項である。
【００８７】
また、仮想力制御部１０３は、Ｓ１２０´の終了判定に用いる判定閾値を設定する（Ｓ３０´）。判定閾値は、Ｓ６０´で仮想力制御部１０３により算出される仮想力に対応する変位が、Ｓ１４で算出された目標変位に十分近付いたことを判定する値である。
【００８８】
Ｓ４０、Ｓ５０は、図５の対応する処理と同様なので、説明を省略する。
【００８９】
それから、仮想力制御部１０３は、仮想力制御のインピーダンスモデルの運動方程式を解く（Ｓ６０´）。具体的には、仮想力制御部１０３は、Ｓ１３で算出した仮想力を、仮想力制御のインピーダンスモデルに加わる力Ｆとして運動方程式の解（時間ｔあたりの変位（修正量））を求める。Ｆは仮想力なので、一定である（入力値に固定する）。
【００９０】
Ｓ７０〜Ｓ１１０は、図５の対応する処理と同様なので、説明を省略する。
【００９１】
それから、仮想力制御部１０３は、目標変位と仮想力による変位の差分とが判定閾値よりも小さくなったか否かを判定する（Ｓ１２０´）。具体的には、仮想力制御部１０３は、Ｓ６０´で算出した基準位置からの変位と、Ｓ１４で算出した目標変位との差分を求め、当該差分とＳ３０´で設定した判定閾値とを比較する。差分が判定閾値以上の場合（Ｓ１２０´：ＮＯ）、処理をＳ５０の直後（Ｓ６０´、Ｓ７０〜Ｓ８０の直前）に戻す。差分が判定閾値より小さい場合（Ｓ１２０´：ＹＥＳ）、本フローを終了する。
【００９２】
以上のようにして、指定された目標の力で手先を対象物に押し付ける動作を制御することができる。例えば、手先が対象物に接触した状態で、手先が対象物に向かう目標の押し付け力を与えれば、仮想力制御のインピーダンスモデルに従った手先の変位により、目標の押し付け力で手先を対象物に押し付けることができる。なお、図５で説明したように、最終的に仮想力と外力とが釣り合うことで静止する。従って、手先が対象物に接触してから押し付ける方向に変位を発生させると、対象物を押し付けることができる。また、仮想力制御及び力制御のインピーダンスモデルに個別に特性を設定できるので、手先に過度の力が加わらないようにすることができる。
【００９３】
上述の図５及び図６のフローの各処理単位は、ロボット制御装置１の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。ロボット制御装置１の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、１つの処理単位がさらに多くの処理を含むように分割することもできる。
【００９４】
以上、本発明の一実施形態の一例について説明した。本実施形態によれば、より簡単にロボットの力制御及び位置制御を行うことができる。
【００９５】
なお、上記の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。多くの代替物、修正および変形例が当業者にとって明らかである。
【００９６】
上記の本実施形態の一例では、説明を分かり易くするため、特に変位の方向を限定せずに説明している。当然、複数の軸、例えば、６軸（ＸＹＺ各軸方向の力と、各軸回りの力のモーメント（トルク））のそれぞれについて、力制御のインピーダンスモデルと、それに対称の仮想力制御のインピーダンスモデルを定義すれば、様々な変位に対応できる。
【００９７】
すなわち、力制御部１０２は、軸方向の外力（センサー値）が与えられれば、対応するインピーダンスモデルの運動方程式を解いて、与えられた力に応じた変位を算出し、軸回りの外力であるトルク（センサー値）が与えられれば、対応するインピーダンスモデルの運動方程式を解いて、与えられたトルクに応じた変位を算出する。また、仮想力制御部１０３は、軸方向の仮想力が与えられれば、対応するインピーダンスモデルの運動方程式を解いて、与えられた力に応じた変位を算出し、軸回りの仮想力であるトルクが与えられれば、対応するインピーダンスモデルの運動方程式を解いて、与えられたトルクに応じた変位を算出する。
【００９８】
なお、仮想力による直線的な変位（直進運動）については、上記の実施形態で説明したとおり、仮想力制御部１０３は、例えばＦ＝Ｋｘで求まる仮想力（軸方向の力）を、図４の「直線」の運動方程式のＦに代入すればよい。仮想力による回転の変位（回転運動）については、例えばＴ＝Ｋｒθで求まる仮想力（軸回りのトルク）を、図４の「回転」の運動方程式のＴに代入すればよい。なお、回転の場合、モデルとしてオイラーの運動方程式を用いるようにしてもよい。
【００９９】
また、例えば、仮想力制御部１０３と、位置制御部１０１とを併用してもよい。この場合、位置修正部１０４は、位置制御部１０１から出力される現在位置から目標位置までの軌道に基づく位置指令に対して、仮想力制御部１０３から出力される位置の変位を加えて、位置の修正を行う。
【０１００】
このようにすれば、例えば、一定の力で対象物を押さえ付けながら手先を移動する、といった動作の制御を行う場合に、位置制御部１０１のみで軌道計画を立てるよりも簡単に軌道計画を立てることができる。すなわち、位置制御部１０１のみで上記のような動作を制御する場合、例えば、手先を対象物に押さえ付けるベクトルへの移動と、手先を移動させたいベクトルへの移動との両方を考慮して、軌道計画を行う必要がある。これに対して、位置制御部１０１と仮想力制御部１０３の両方を用いた場合、手先を対象物に押さえ付けるベクトルへの移動については、仮想力制御部１０３を用いて制御すればよい。従って、位置制御部１０１による軌道計画は簡単になる。
【０１０１】
なお、ロボット制御装置１及びロボット２の機能分担は、上記の実施形態の例に限られず、例えば、ロボット制御装置１の一部分又は全ての機能をロボット２が実行するようにしてもよい。また、例えば、ロボット制御装置１が、ロボット２に含まれていてもよい。
【符号の説明】
【０１０２】
１：ロボット制御装置、２：ロボット、１００：制御部、１０１：位置制御部、１０２：力制御部、１０３：仮想力制御部、１０４：位置修正部、１０５：インバース・キネマティクス部、１０６：フォワード・キネマティクス部、１１０：入力部、１２０：サーボ制御部、２００：ジョイント、２１０：リンク、２２０：ハンド、２３０：力覚センサー
【図１】
2013158837.tif 000003
【図２】
2013158837.tif 000004
【図３】
2013158837.tif 000005
【図４】
2013158837.tif 000006
【図５】
2013158837.tif 000007
【図６】
2013158837.tif 000008