JP5943734B2 - ロボット及びロボット制御方法 - Google Patents

ロボット及びロボット制御方法 Download PDF

Info

Publication number
JP5943734B2
JP5943734B2 JP2012141598A JP2012141598A JP5943734B2 JP 5943734 B2 JP5943734 B2 JP 5943734B2 JP 2012141598 A JP2012141598 A JP 2012141598A JP 2012141598 A JP2012141598 A JP 2012141598A JP 5943734 B2 JP5943734 B2 JP 5943734B2
Authority
JP
Japan
Prior art keywords
command value
contraction force
force command
contraction
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012141598A
Other languages
English (en)
Other versions
JP2014004654A (ja
Inventor
秀和 古瀬
秀和 古瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2012141598A priority Critical patent/JP5943734B2/ja
Publication of JP2014004654A publication Critical patent/JP2014004654A/ja
Application granted granted Critical
Publication of JP5943734B2 publication Critical patent/JP5943734B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Manipulator (AREA)

Description

本発明は、人工筋肉アクチュエータがリンクに対して拮抗配置されたロボット及び該ロボットを制御するロボット制御方法に関する。
マニピュレータの制御方法において、手先が対象物に柔軟に接触できることが重要になってきている。これを産業ロボットに応用すれば、人間との共同作業が実現でき、手先の柔軟性の方向を制御することにより部品の嵌め合い作業等が容易になる。また、これを脚式移動ロボットに応用すれば、地面に柔らかく接地することで胴体に対する衝撃を和らげることができ、段差を吸収することで不整地を安定に歩行することを可能とする。
手先の柔軟性の制御を実現するために、手先に力センサを装着するインピーダンス制御や、人工筋肉アクチュエータを用いる制御等が行われている。人間の筋はアクチュエータであると同時に、粘弾性可変の制御機構であることが知られている。人工筋肉の中でも、特にMcKibben型人工筋肉に代表される空気圧ゴム人工筋肉は、粘弾性特性が筋に類似している。そこで、ロボットにおける人工筋肉アクチュエータの柔らかさ制御することで、任意の手先の柔軟性で対象物に接触することができる。しかし、人工筋肉アクチュエータは、粘弾性特性に非線系性を有している、収縮方向のみに力を発生するため拮抗配置して制御を行う必要がある、などの理由で制御性に難があることが知られている。
従来、筋の粘弾性特性を含むマニピュレータのモデルと、修正値計算部を用いて関節角度と手先の柔軟性を同時制御するためのフィードフォワード入力を生成しているものが提案されている(特許文献1参照)。特許文献1では、モデルを用いて制御入力が与えられた時の関節角度と人工筋肉アクチュエータの粘弾性係数を出力し、それを目標値と比較する。そして、目標値との誤差を修正値計算部に逆伝播させ、フィードフォワード入力を修正する。修正されたフィードフォワード入力を再びモデルに与える操作を繰り返し、徐々にフィードフォワード入力を求めている。
特許第3436320号公報
上記特許文献1では、フィードフォワード制御により関節角度と手先の柔軟性の同時制御を行っている。しかし、人工筋肉アクチュエータを最小の制御入力で拮抗駆動するための研究例はこれまで見られない。
制御入力を最小化するには、関節角度の目標軌道に対応する手先柔軟性の目標軌道を考慮し、それを制御入力と同時に最適化する必要がある。しかし、上記特許文献1のフィードフォワード制御は、手先柔軟性の目標軌道をあらかじめ与えており、それを最適化するアルゴリズムは含まれていない。
そこで、本発明は、人工筋肉アクチュエータを駆動源に用いる2リンクの関節角度の軌道制御において、最小の収縮力指令値で拮抗駆動を行うことを目的とするものである。
本発明のロボットは、基台に第1関節で連結された第1リンクと、前記第1リンクに第2関節で連結された第2リンクと、収縮により前記第1リンクを前記第1関節まわりに第1旋回方向に旋回させる第1人工筋肉アクチュエータと、収縮により前記第1リンクを前記第1関節まわりに前記第1旋回方向に対して反対の第2旋回方向に旋回させる第2人工筋肉アクチュエータと、収縮により前記第2リンクを前記第2関節まわりに前記第1旋回方向に旋回させる第3人工筋肉アクチュエータと、収縮により前記第2リンクを前記第2関節まわりに前記第2旋回方向に旋回させる第4人工筋肉アクチュエータと、収縮により前記第1及び第2リンクを同時に前記第1及び第2関節まわりに前記第1旋回方向に旋回させる第5人工筋肉アクチュエータと、収縮により前記第1及び第2リンクを同時に前記第1及び第2関節まわりに前記第2旋回方向に旋回させる第6人工筋肉アクチュエータと、前記第1関節の第1関節トルク指令値及び前記第2関節の第2関節トルク指令値を生成するトルク指令値生成部と、前記第1関節トルク指令値及び前記第2関節トルク指令値に基づいて、前記第1人工筋肉アクチュエータの第1収縮力指令値、前記第2人工筋肉アクチュエータの第2収縮力指令値、前記第3人工筋肉アクチュエータの第3収縮力指令値、前記第4人工筋肉アクチュエータの第4収縮力指令値、前記第5人工筋肉アクチュエータの第5収縮力指令値、及び前記第6人工筋肉アクチュエータの第6収縮力指令値を求める収縮力指令値演算部と、前記第1収縮力指令値に応じて前記第1人工筋肉アクチュエータを収縮させ、前記第2収縮力指令値に応じて前記第2人工筋肉アクチュエータを収縮させ、前記第3収縮力指令値に応じて前記第3人工筋肉アクチュエータを収縮させ、前記第4収縮力指令値に応じて前記第4人工筋肉アクチュエータを収縮させ、前記第5収縮力指令値に応じて前記第5人工筋肉アクチュエータを収縮させ、前記第6収縮力指令値に応じて前記第6人工筋肉アクチュエータを収縮させる収縮力発生部と、を備え、前記収縮力指令値演算部は、前記第1関節トルク指令値を定数とし、前記第1、第2、第5及び第6収縮力指令値を変数として成立する第1関数、並びに前記第2関節トルク指令値を定数とし、前記第3、第4、第5及び第6収縮力指令値を変数として成立する第2関数において、前記第1及び第2収縮力指令値の一方、前記第3及び第4収縮力指令値の一方、並びに前記第5及び第6収縮力指令値の一方を0とした場合に、前記第1及び第2収縮力指令値の他方、前記第3及び第4収縮力指令値の他方、並びに前記第5及び第6収縮力指令値の他方のうち最大値となる収縮力指令値が最小となるように前記第1及び第2収縮力指令値の他方、前記第3及び第4収縮力指令値の他方、並びに前記第5及び第6収縮力指令値の他方を演算する指令値演算処理と、前記指令値演算処理で演算した前記第1から第6収縮力指令値を前記収縮力発生部に出力する指令値出力処理と、を実行することを特徴とする。
本発明によれば、手先柔軟性の目標軌道が一意に決定され、各人工筋肉アクチュエータが最小の収縮力指令値で拮抗駆動されるので、収縮力発生部において各人工筋肉アクチュエータに収縮力を発生させるのに必要な例えば空気等の消費量を最小にすることができる。したがって、ロボットの駆動時間を延長することが可能となる。
本発明の第1実施形態に係る人工筋肉アクチュエータの粘弾性モデルを示す説明図である。 本発明の第1実施形態に係るロボットの概略構成を示す説明図である。 本発明の第1実施形態に係るロボットの制御装置を示すブロック線図である。 本発明の第1実施形態に係る筋トルクの符号の組み合わせを示す図である。 本発明の第1実施形態に係る収縮力指令値演算部の処理動作を示すフローチャートである。 本発明の第1実施形態に係る収縮力指令値演算部による第1最小化演算処理のフローチャートである。 直線uf1 ,uf2 ,uf3 の一例を示すグラフである。 直線uf1 ,uf2 ,uf3 の別の例を示すグラフである。 直線uf1 ,uf2 ,uf3 の別の例を示すグラフである。 本発明の第1実施形態に係る収縮力指令値演算部による第1演算処理のフローチャートである。 本発明の第1実施形態に係る収縮力指令値演算部による第2演算処理のフローチャートである。 本発明の第1実施形態に係る収縮力指令値演算部による第3演算処理のフローチャートである。 本発明の第1実施形態に係る収縮力指令値演算部による第4演算処理のフローチャートである。 本発明の第1実施形態に係る収縮力指令値演算部による第1指令選択処理のフローチャートである。 本発明の第2実施形態に係る本発明の第3実施形態に係るロボットの収縮力指令値演算部の処理動作を示すフローチャートである。 本発明の第2実施形態に係る収縮力指令値演算部による第2最小化演算処理のフローチャートである。 本発明の第2実施形態に係る収縮力指令値演算部による第5演算処理のフローチャートである。 本発明の第2実施形態に係る収縮力指令値演算部による第6演算処理のフローチャートである。 本発明の第2実施形態に係る収縮力指令値演算部による第7演算処理のフローチャートである。 本発明の第2実施形態に係る収縮力指令値演算部による第8演算処理のフローチャートである。 本発明の第2実施形態に係るシミュレーション結果を示す図である。 本発明の第2実施形態に係るシミュレーション結果を示す図である。 本発明の第2実施形態に係るシミュレーション結果を示す図である。 本発明の第2実施形態に係るシミュレーション結果を示す図である。 本発明の第3実施形態に係るスティフネス楕円を表す図である。 本発明の第3実施形態に係るロボットの制御装置を示すブロック線図である。 本発明の第3実施形態に係るシミュレーション結果を示す図である。 本発明の第3実施形態に係るシミュレーション結果を示す図である。
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
[第1実施形態]
本発明の第1実施形態では、駆動源として人工筋肉アクチュエータを用いる2リンクマニピュレータに対して、関節角度の目標軌道に追従するための制御入力を最小化する。なお、第1実施形態では、目標軌道へ追従するために必要となる第1、第2関節まわりのトルクがどちらも正数となるときに限定し、制御入力の導出方法を示す。
(1 モデル導出)
本節では、人工筋肉アクチュエータを駆動源とする、2リンクマニピュレータのモデルを導出する。本第1実施形態で用いる人工筋肉アクチュエータとは、筋の粘弾性特性と類似する特性を有するアクチュエータであり、図1に示すように、力発生要素11と弾性要素12と粘性要素13を用いてモデル化される。力発生要素11の収縮力をu、収縮方向を正とする筋の収縮量をxとする。収縮速度を、
Figure 0005943734
とする。また、弾性力定数をk、粘性力定数をcとし、筋収縮力をFとする。このとき、筋の粘弾性特性は、
Figure 0005943734
と表わされる。人工筋肉アクチュエータは、収縮方向にのみ力を発生するため、リンクの角度を任意に制御するためには、人工筋肉アクチュエータを拮抗配置する必要がある。
図2は、本発明の第1実施形態に係るロボットの概略構成を示す説明図である。このロボット100は、2リンクマニピュレータである。ロボット100は、基台であるプーリ103と、プーリ103に関節(第1関節)111で連結されたリンク(第1リンク)101と、リンク101に関節(第2関節)112で連結されたリンク(第2リンク)102とを備えている。
本第1実施形態では、ロボット100は、6つの人工筋肉アクチュエータ(以下、単に「アクチュエータ」という)f,e,f,e,f,eと、これらアクチュエータf,e,f,e,f,eを制御する制御装置150と、を備えている。
第1人工筋肉アクチュエータであるアクチュエータfは、収縮により第1リンク101を第1関節111まわりに第1旋回方向R(図2中、反時計回り方向、屈曲する方向)に旋回させる。第2人工筋肉アクチュエータであるアクチュエータeは、収縮により第1リンク101を第1関節111まわりに第1旋回方向Rに対して反対の第2旋回方向R(図2中、時計回り方向、伸展する方向)に旋回させる。第3人工筋肉アクチュエータであるアクチュエータfは、収縮により第2リンク102を第2関節112まわりに第1旋回方向Rに旋回させる。第4人工筋肉アクチュエータであるアクチュエータeは、収縮により第2リンク102を第2関節112まわりに第2旋回方向Rに旋回させる。第5人工筋肉アクチュエータであるアクチュエータfは、収縮により第1及び第2リンク101,102を同時に第1及び第2関節111,112まわりに第1旋回方向Rに旋回させる。第6人工筋肉アクチュエータであるアクチュエータeは、収縮により第1及び第2リンク101,102を同時に第1及び第2関節111,112まわりに第2旋回方向Rに旋回させる。
つまり、アクチュエータf,eは第1関節111を、アクチュエータf,eは第2関節112を駆動し、アクチュエータf,eは二関節111,112を同時に駆動する。
制御装置150は、各アクチュエータf,eの収縮力指令値ufi,ueiを演算により求めて、各収縮力指令値ufi,ueiに応じて各アクチュエータf,eを収縮させる(i=1,2,3)。ここで、アクチュエータfの収縮力指令値を、第1収縮力指令値uf1とする。アクチュエータeの収縮力指令値を、第2収縮力指令値ue1とする。アクチュエータfの収縮力指令値を、第3収縮力指令値uf2とする。アクチュエータeの収縮力指令値を、第4収縮力指令値ue2とする。アクチュエータfの収縮力指令値を、第5収縮力指令値uf3とする。アクチュエータeの収縮力指令値を、第6収縮力指令値ue3とする。
アクチュエータf,e(i=1,2,3)の収縮量xは、モーメント径rと関節角度θ(i=1,2,3)を用いて、
Figure 0005943734
と表わせる。
ここで、アクチュエータf,eの弾性力定数をk、粘性力定数をc、関節角速度をω、関節角加速度をαとする(i=1,2,3)。アクチュエータf,eの収縮力指令値ufi,uei(i=1,2,3)により生じるトルク(以下、筋トルクと呼ぶ)τ(i=1,2,3)は、
Figure 0005943734
と表すことができる。ただし、関節角度θは、
Figure 0005943734
と定義する。また、トルクの正の方向は、図2において反時計回り方向である第1旋回方向Rとする。
式(3)より、右辺第1項の収縮力の差が関節に回転トルクを与え、第2項と第3項の収縮力の和が、筋の弾性と粘性を変動させることがわかる。なお、前述のように人工筋肉アクチュエータf,e(i=1,2,3)は収縮力のみを発揮する。そのため、収縮力指令値ufi,uei(i=1,2,3)は、
Figure 0005943734
を満たさなければならない。
ここで、第1,第2リンク101,102の関節111,112まわりの慣性モーメントをI,I、リンク101,102長さをL,L、リンク101,102の質量をm,mとする。また、関節111,112まわりに働くトルク指令値(第1関節トルク指令値及び第2関節トルク指令値)をT,Tとする。本第1実施形態の2リンクマニピュレータの運動方程式は、
Figure 0005943734
となる。ただし、式(6)において、慣性行列は、
Figure 0005943734
コリオリ力・遠心力は、
Figure 0005943734
である。
慣性行列及びコリオリ力・遠心力は、以下の式(7)及び式(8)となる。
Figure 0005943734
また、第1関節トルク指令値T、第1関節トルク指令値Tは、筋トルクτ,τ,τを用いて、
Figure 0005943734
となる。
式(3)と式(9)とにより、関節トルク指令値T,Tは、収縮力指令値ufi,ueiを用いて、
Figure 0005943734
となる。ただし、係数Kf1,Ke1,Kf2,Ke2,Kf3,Ke3は、
Figure 0005943734
と定義する(i=1,2,3)。
つまり、式(10)は、第1関節トルク指令値Tを定数とし、第1、第2、第5及び第6収縮力指令値uf1,ue1,uf3,ue3を変数として成立する第1関数である。式(11)は、第2関節トルク指令値Tを定数とし、第3、第4、第5及び第6収縮力指令値uf2,ue2,uf3,ue3を変数として成立する第2関数である。
(2 制御系設計)
本第1実施形態の制御系では、関節トルク指令値T[k],T[k]に基づき、収縮力指令値ufi[k],uei[k]の最大値を最小化する。なお、時刻kは離散信号であり、制御周期Tと正の整数nを用いて、
Figure 0005943734
と表すことができる。なお、前述のように本第1実施形態では、関節トルク指令値T[k],T[k]がどちらも正数となるときの収縮力指令値ufi[k],uei[k]の導出方法について述べる。本第1実施形態の制御系は、例えば、重力により生じる負の方向のトルクに対して、動作を行うマニピュレータに対して適用することが可能である。
図3は、本発明の第1実施形態に係るロボットの制御装置を示すブロック線図である。図3において、制御装置150は、トルク指令値生成部としてのフィードフォワード補償部151と、収縮力指令値演算部152と、収縮力発生部153と、を備えている。
フィードフォワード補償部151は、時刻kにおける各関節111,112の目標関節角度θri[k]、目標角速度ωri[k]、目標角加速度αri[k](i=1,2)を入力とする。そして、
Figure 0005943734
とする逆動力学演算により、関節角度を目標値に追従させるための関節トルク指令値T[k],T[k]を演算する。つまり、フィードフォワード補償部151は、各関節111,112の目標関節角度θri[k]、目標角速度ωri[k]、目標角加速度αri[k](i=1,2)に基づき、各関節111,112の関節トルク指令値T[k],T[k]を生成する。
また、収縮力指令値演算部152は、目標関節角度θri[k]、目標角速度ωri[k]、及び関節トルク指令値T[k],T[k]を入力し、これらに基づいて、最大値が最小となる収縮力指令値ufi[k],uei[k]を求める。
収縮力発生部153は、各収縮力指令値ufi[k],uei[k]に応じて各アクチュエータf,eを収縮させる。
制御系設計では、まず、収縮力指令値ufi[k],uei[k]の最大値を最小化する問題(以下、収縮力最小化問題と呼ぶ)を定義し、同問題を解くための制御側を導出する。次に、係数Kfi,Keiと関節トルク指令値T[k],T[k]に基づく場合分けを行い、収縮力指令値ufi[k],uei[k]を演算する。なお、本第1実施形態の制御系設計では表記を簡潔にするために、時刻を表す[k]を省略する。
(2.1 関節剛性と収縮力の同時制御)
まず、評価関数をJとし、Jを次式(15)と定義する。
Figure 0005943734
つまり、J=max{uf1,ue1,uf2,ue2,uf3,ue3}と定義する。収縮力最小化問題とは、関節トルク指令値T,Tと、目標関節角度θr1,θr2と、目標関節角速度ωr1,ωr2とが与えられたとき、式(3)〜式(5)及び式(9)を満たし、かつ評価関数Jを最小化する収縮力指令値ufi,ueiを求める問題である。
収縮力最小化問題では、式(10)、式(11)、式(15)の3つが制約条件となるが、未知数である収縮力指令値ufi,ueiの数は6つである。一般に、制約条件の数に比べて未知数の数が多い場合は、未知数を一意に決めることはできない。しかし、筋トルクτの正負に応じて収縮力指令値ufi,ueiを、
Figure 0005943734
と切り替える制御側を適用すると、収縮力最小化問題を解くことが可能となる。なぜならば、式(16)の制御側により、収縮力指令値ufi,ueiのどちらか一方が必ず0となるため、未知数の数を3つに減らすことが可能となるためである。さらに、収縮力指令値ufi,ueiの一方を0とすることで、最小の収縮力で駆動することが可能となる。しかし、筋トルクτは、係数Kfi,Keiを用いて、
Figure 0005943734
と表されるため、係数Kfi,Keiが正数となることが条件である。そのため、本第1実施形態では、マニピュレータが目標関節角度θr1,θr2と目標角速度ωr1,ωr2に従って運動するとき、係数Kfi,Keiが常に正数となるように、弾性力定数k、粘性力定数c、モーメントアーム径rを設計している。
式(16)に示す制御側を適用するためには、筋トルクτ,τ,τの正負の符号が決定されている必要がある。しかし、式(9)に示すように、筋トルクτ,τ,τは関節トルク指令値T,Tに対して冗長となるため、関節トルク指令値の符号から筋トルクの符号を一意に決定することはできない。
そこで、本第1実施形態では、筋トルクτ,τ,τの符号の組み合わせのうち一つを仮定し、この仮定の下で評価関数Jを最小化する収縮力指令値ufi,ueiの候補を導出する。これを、筋トルクτ,τ,τの符号の組み合わせ全てについて行い、収縮力の候補の中から評価関数Jを最小化する収縮力を選び出す。
図4は、筋トルクτ,τ,τの符号が取りうる8通りの組み合わせを示す図である。ただし、本第1実施形態のように、関節トルク指令値T,Tがどちらも正数となる場合は、筋トルクτを負数とする条件5、条件6、条件7、条件8の組み合わせを仮定する必要はない。なぜなら、筋トルクτを負数とすると、式(9)より、τを正数とする場合と比べて筋トルクτと筋トルクτを増加させなければならず、これは、第一、第二単関節筋の収縮力を増加させてしまうためである。
そこで、本第1実施形態では、条件1、条件2、条件3、条件4の4通りの組み合わせについてのみ、収縮力指令値ufi,ueiを導出する。
次に、制御装置150によるロボット制御方法について説明する。図5は、収縮力指令値演算部の処理動作を示すフローチャートである。収縮力指令値演算部152は、関節トルク指令値T,Tをフィードフォワード補償部151から入力すると共に、不図示の上位コントローラから目標関節角度θ,θ、目標関節角速度ω,ωを入力する(S1)。なお、弾性力定数k、粘性力定数c及びモーメントアーム径rは、予め設定された値である。
次に、収縮力指令値演算部152は、式(12)を用いて、目標関節角度θ,θ、目標関節角速度ω,ωから係数Kfi,Keiを算出する(S2)。
次に、収縮力指令値演算部152は、式(10)に示す第1関数、及び式(11)に示す第2関数に、演算した係数Kfi,Kei及び入力した関節トルク指令値T,Tを定数として代入する(S3)。
次に、収縮力指令値演算部152は、評価関数Jを最小化する指令値候補を演算する第1最小化演算処理を実行する(S4)。
次に、収縮力指令値演算部152は、評価関数Jmin 及び指令値候補ufi 1〜4,uei 1〜4に対し(S5)、評価関数が最小の指令値候補を選択する第1指令選択処理を実行する(S6)。
即ち、収縮力指令値演算部152は、これらS2〜S6において、第1から第6収縮力指令値ufi,ueiを演算する指令値演算処理を実行する(指令値演算処理工程)。具体的には、収縮力指令値演算部152は、式(10)に示す第1関数及び式(11)に示す第2関数において、第1及び第2収縮力指令値の一方、第3及び第4収縮力指令値の一方、並びに第5及び第6収縮力指令値の一方を0とする。そして、収縮力指令値演算部152は、第1及び第2収縮力指令値の他方、第3及び第4収縮力指令値の他方、並びに第5及び第6収縮力指令値の他方のうち最大値となる収縮力指令値が最小となるようにこれらを演算する。
次に、収縮力指令値演算部152は、演算した第1から第6収縮力指令値ufi,ueiを収縮力発生部153に出力する指令値出力処理を実行する(S7:指令値出力処理工程)。
(2.2 第1最小化演算処理の設計)
図6は、収縮力指令値演算部による第1最小化演算処理のフローチャートである。収縮力指令値演算部152は、図4に示す第1条件を仮定し(S11)、第1演算処理を実行し(S12)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第1指令値候補ufi ,uei を出力する(S13)。
続いて、収縮力指令値演算部152は、図4に示す第2条件を仮定し(S14)、第2演算処理を実行し(S15)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第2指令値候補ufi ,uei を出力する(S16)。
続いて、収縮力指令値演算部152は、図4に示す第3条件を仮定し(S17)、第3演算処理を実行し(S18)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第3指令値候補ufi ,uei を出力する(S19)。
続いて、収縮力指令値演算部152は、図4に示す第4条件を仮定し(S20)、第4演算処理を実行し(S21)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第4指令値候補ufi ,uei を出力する(S22)。
第1、第2、第3、第4演算処理は、それぞれ、筋トルクτ,τの符号を図4の条件1、2、3、4と仮定して、評価関数Jの最小値の候補Jmin と収縮力指令値の指令値候補ufi 、uei を演算するサブルーチンである(j=1,2,3,4)。なお、評価関数の候補Jmin と収縮力指令値の候補ufi 、uei の上付きの添え字jは対応する演算処理の番号を表す。また、第1〜第4演算処理が評価関数の候補Jmin と収縮力指令値の指令値候補ufi ,uei を演算する方法は同様であるため、本第1実施形態では第1演算処理における演算方法を詳細に述べ、第2〜第4演算処理における演算方法は簡潔に述べる。
(2.2.1 第1演算処理の設計)
第1演算処理における収縮力指令値の第1指令値候補ufi ,uei のうち、第1指令値候補ue1 、ue2 、ue3 は、図4の条件1と式(16)により、
Figure 0005943734
となる。つまり、収縮力指令値演算部152は、式(10)に示す第1関数及び式(11)に示す第2関数において、ue1 =0,ue2 =0,ue3 =0とする。従って、評価関数Jは、第1指令値候補uf1 、uf2 、uf3 の最大値となる。
また、式(10)、式(11)及び式(18)より、関節トルク指令値T,Tは、収縮力指令値の第1指令値候補uf1 ,uf2 ,uf3 を用いて、
Figure 0005943734
と表すことができる。ここで、変数uf3 ’を、
Figure 0005943734
と定義する。式(19)及び式(20)は変数uf3 ’を用いて、
Figure 0005943734
と表すことができる。ただし、変数uf3 ’の変域は、第1指令値候補uf1 ,uf2 ,uf3 が全て正数となる範囲である必要がある。
式(21)〜式(23)により、第1指令値候補uf1 ,uf2 ,uf3 は全てuf3 ’を変数とする一次関数となることがわかる。そこで、本第1実施形態では、X軸を変数uf3 ’と、Y軸を第1指令値候補uf1 ,uf2 ,uf3 とする直線uf1 ,uf2 ,uf3 のグラフを描画する。そして、変数uf3 ’を増減させて、X座標を変数uf3 ’とするY軸と平行な直線をX軸の正側と負側に移動させることで、交点の軌跡から評価関数Jの最小値を求める。
図7は、直線uf1 ,uf2 ,uf3 の一例を示すグラフである。直線uf1 は点線、直線uf2 は破線、直線uf3 は実線を用いて表している。また、Y軸と平行な直線を、一点鎖線を用いて表している。さらに、変数uf3 ’の変域を、矢印を用いて表している。そして、直線uf1 ,uf2 ,uf3 とY軸と平行な直線の交点のうち、Y座標が最大となる点を点Zと定義する。ここで、Y軸と平行な直線と、直線uf1 ,uf2 ,uf3 の交点のY座標が求めるべき第1指令値候補uf1 ,uf2 ,uf3 であることから、点ZのY座標は評価関数Jの値を表すことがわかる。
図7に示す例では、直線uf1 と直線uf3 の交点において評価関数Jが最小となる。なぜなら、変数uf3 ’を減少させると点Zは直線uf1 に従って移動し、変数uf3 ’を増加させると直線uf3 に従って移動するため、どちらの場合においても評価関数Jの値が増加してしまうためである。
ただし、評価関数Jは常に直線uf1 とuf3 の交点において最小となるわけではない。それは、各直線のX切片、Y切片、交点のX座標とY座標の大きさが、係数Kf1,Kf2,Kf3と関節トルク指令値T,Tに依存して変化するためである。
そこで、本第1実施形態では、各直線のX切片、Y切片、交点のX座標とY座標の大きさに基づく場合分けの条件を導出し、それぞれの場合において評価関数Jが最小となる点を求める。ただし、直線uf1 と直線uf2 の両方を動かすと、場合分けの条件が複雑となってしまう。そこで、本第1実施形態では説明を容易にするために、直線uf1 のX切片とY切片を固定して図示する。そして、直線uf2 のX切片とY切片を原点からX軸とY軸の正の方向に、徐々に図上で移動させるときの直線uf1 ,uf2 ,uf3 のグラフを図示し、評価関数Jが最小値を取る点を求める。
図8及び図9は、直線uf1 ,uf2 ,uf3 の別の例を示すグラフである。まず、図8(a)及び図8(b)と図9(a)及び図9(b)とに、直線uf1 ,uf2 ,uf3 と補助線を点線、破線、実線、一点鎖線を用いて、それぞれ表す。なお、図8(a)は、直線uf2 のX切片及びY切片が、直線uf1 のX切片及びY切片と比べて十分に小さいときのグラフを、図8(b)は、直線uf2 のX切片をX軸の正方向へ移動させたときのグラフを表す。また、図9(a)は、図8(b)と比べて直線uf2 のY切片をY軸の正方向へ移動させたときのグラフを、図9(b)は、直線uf2 のX切片及びY切片をX軸及びY軸の正方向に十分に大きく移動させたときのグラフを表す。
次に、直線uf1 と直線uf3 の交点を点A、点Aを通りY軸と平行な直線と直線uf2 の交点を点B、直線uf2 とX軸との交点をC、点Cを通りY軸と平行な直線と直線uf1 との交点をDとする。また、直線uf2 と直線uf3 の交点を点E、点Eを通りY軸と平行な直線と直線uf1 の交点を点F、直線uf1 とX軸との交点を点G、点Gを通りY軸と平行な直線と直線uf2 との交点をHとする。なお、各点の下付きの添え字は対応する演算処理の番号を表す。
ここで、式(18)〜式(20)より、点A,B,C,D,E,F,G,Hのx座標xa1,xb1,xc1,xd1,xe1,xf1,xg1,xh1とy座標ya1,yb1,yc1,yd1,ye1,yf1,yg1,yh1は、
Figure 0005943734
となる。なお、各座標の下付きの添え字は対応する点を表す。
図8(a)及び図8(b)に示すように、直線uf2 のY切片が直線uf1 のY切片と比べて十分に小さいとき、点Aが点Bに対してY軸の正側に存在するため、座標ya1,yb1は、
Figure 0005943734
を満たす。また、図8(a)に示すように、直線uf2 のX切片が直線uf1 のX切片と比べて十分に小さいとき、点Aは点Cに対してX軸の正側に存在するため、座標xa1,xc1は、
Figure 0005943734
を満たす。このとき、変数uf3 ’の変域は、
Figure 0005943734
となるため、図8(a)より、評価関数Jは点Dにおいて最小値を取ることがわかる。従って、式(32)及び式(33)が成立するとき、評価関数Jの最小値Jmin は、
Figure 0005943734
となり、第1指令値候補uf1 ,uf2 ,uf3 はそれぞれ、
Figure 0005943734
となる。また、図8(b)に示すように、点Cが点Aに対してX軸の正側に存在するように、直線uf2 のX切片を移動すると、座標xa1,xc1は、
Figure 0005943734
を満たすこととなる。このとき、図8(b)より、座標xa1は変数uf3 ’の変域内に存在し、評価関数Jは点Aにおいて最小値を取ることがわかる。従って、式(32)及び式(37)が成立するとき、評価関数Jの最小値Jmin は、
Figure 0005943734
となる。第1指令値候補uf1 ,uf2 ,uf3 はそれぞれ、
Figure 0005943734
となる。
さらに、図9(a)及び図9(b)に示すように、点Bが点Aに対してY軸の正側に存在するように直線uf2 のY切片を移動すると、座標ya1,yb1は、
Figure 0005943734
を満たすこととなる。ここで、図9(a)に示すように、点Eが点Gに対して、X軸の負側に存在するとき、すなわち、座標xe1,xg1が、
Figure 0005943734
を満たすとき、評価関数Jは点Eにおいて最小値を取る。従って、式(40)及び式(41)が同時に成り立つとき、評価関数Jの最小値Jmin は、
Figure 0005943734
となる。第1指令値候補uf1 ,uf2 ,uf3 はそれぞれ、
Figure 0005943734
となる。また、図9(b)に示すように、点Eが点Gに対してX軸の正側に存在するように、直線uf2 のX切片とY切片をさらに正側に移動させると、座標xe1,xg1は、
Figure 0005943734
を満たすこととなる。このとき、図9(b)より、座標xe1は変数uf3 ’の変域に含まれないため、評価関数Jは点Hにおいて最小値を取ることがわかる。従って、式(40)及び式(44)が同時に成り立つとき、評価関数Jの最小値Jmin は、
Figure 0005943734
となり、第1指令値候補uf1 ,uf2 ,uf3 はそれぞれ、
Figure 0005943734
となる。
なお、本第1実施形態では、式(35)、式(38)、式(42)、式(45)を用いて評価関数Jの最小値Jmin を演算する場合を、それぞれCase11、Case12、Case13、Case14と定義する。ただし、Caseに続く番号は、第1〜4演算処理のうち、対応する演算処理の番号を表す。
図10は、収縮力指令値演算部による第1演算処理のフローチャートである。図10に示すように、収縮力指令値演算部152は、第1演算処理として、式(10)に示す第1関数及び式(11)に示す第2関数において、式(18)に示すように、ue1=0,ue2=0,ue3=0とする(S31)。
次に、収縮力指令値演算部152は、式(24)及び式(25)を演算する(S32)。次に、収縮力指令値演算部152は、ya1≧yb1であるか否かを判断する(S33)。収縮力指令値演算部152は、ya1≧yb1である場合(S33:Yes)、式(26)を演算する(S34)。次に、収縮力指令値演算部152は、xa1≧xc1であるか否かを判断する(S35)。収縮力指令値演算部152は、xa1≧xc1である場合(S35:Yes)、式(27)を演算し(S36)、式(35)及び式(36)を導き出す(S37:Case11)。
また、収縮力指令値演算部152は、xa1≧xc1ではない場合(S35:No)、式(38)及び式(39)を導き出す(S38:Case12)。
また、収縮力指令値演算部152は、ya1≧yb1ではない場合(S33:No)、式(28)、式(29)及び式(30)を演算する(S39)。次に、収縮力指令値演算部152は、xe1<xg1であるか否かを判断する(S40)。次に、収縮力指令値演算部152は、xe1<xg1である場合(S40:Yes)、式(42)及び式(43)を導き出す(S41:Case13)。
また、収縮力指令値演算部152は、xe1<xg1ではない場合(S40:No)、式(30)及び式(31)を演算し(S42)、式(45)及び式(46)を導き出す(S43:Case14)。
このように、収縮力指令値演算部152は、式(32)、式(33)及び式(41)に示す場合分けを行う。そして、それぞれの場合について、評価関数Jの最小値Jmin と第1指令値候補uf1 ,uf2 ,uf3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第1指令値候補を演算する第1演算処理を実行する。
なお、本実施形態では式(21)で定義する変数uf3 ’を用いて、評価関数Jを最小化する指令値候補uf1 ,uf2 ,uf3 を導出するが、評価関数Jの最小値と指令値候補uf1 ,uf2 ,uf3 は変数の選び方に依存しない。なぜなら、評価関数Jの最小値は指令値候補uf1 ,uf2 ,uf3 によって決定されるが、指令値候補uf1 ,uf2 ,uf3 は変数の選び方によらず式(19)と式(20)を満たすように増減するためである。このことは、以下に述べる第2〜4演算処理においても同様に成り立つ。
(2.2.2 第2演算処理の設計)
第2演算処理における収縮力指令値の第2指令値候補ue1 ,uf2 ,ue3 は、図4の条件2と式(16)より、
Figure 0005943734
となるため、評価関数Jは第2指令値候補uf1 ,ue2 ,uf3 の最大値となる。そこで、第1演算処理と同様に変数uf3 ’を、
Figure 0005943734
と定義する。変数uf3 ’を用いて第2指令値候補uf1 ,ue2 を、
Figure 0005943734
とする。そして、X軸を変数uf3 ’と、Y軸を第2指令値候補uf1 ,ue2 ,uf3 とする3つの直線uf1 ,ue2 ,uf3 のグラフを描画する。さらに、直線uf1 のX切片とY切片を固定し、直線ue2 のX切片とY切片を原点から移動させると、第2演算処理においてはCase21、Case22、Case23、Case24の4通りの場合分けが必要となる。
図11は、収縮力指令値演算部による第2演算処理のフローチャートである。図11に示すように、収縮力指令値演算部152は、第2演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(47)に示すように、ue1=0,uf2=0,ue3=0とする(S51)。
次に、収縮力指令値演算部152は、ya2,yb2を演算し(S52)、yb2≦ya2であるか否かを判断する(S53)。収縮力指令値演算部152は、yb2≦ya2である場合(S53:Yes)、xc2,xa2を演算し(S54)、xc2<xa2であるか否かを判断する(S55)。収縮力指令値演算部152は、xc2<xa2である場合(S55:Yes)、uf1 =ya2,ue2 =yb2,uf3 =ya2,Jmin =ya2を導き出す(S56:Case21)。
また、収縮力指令値演算部152は、xc2<xa2ではない場合(S55:No)、xc2≦xd2であるか否かを判断する(S57)。次に、収縮力指令値演算部152は、xc2≦xd2である場合(S57:Yes)、ye2,yf2を演算し(S58)、uf1 =yf2,ue2 =0,uf3 =ye2,Jmin =ye2を導き出す(S59:Case22)。
また、収縮力指令値演算部152は、xc2≦xd2ではない場合(S57:No)、uf1 =ue2 =uf3 =0,Jmin =0を導き出す(S60:Case23)。
また、収縮力指令値演算部152は、yb2≦ya2ではない場合(S53:No)、yg2,yh2を演算し(S61)、uf1 =0,ue2 =yh2,uf3 =yg2,Jmin =yg2を導き出す(S62:Case24)。
なお、Case23では、第2指令値候補uf1 ,ue2 ,uf3 を全て正数とすることができない。そこで、後述する筋指令選択部において候補から外すために、第2指令値候補ufi ,uei と最小値Jmin を0とおく。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と第2指令値候補uf1 ,ue2 ,uf3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第2指令値候補を演算する第2演算処理を実行する。
(2.2.3 第3演算処理の設計)
第3演算処理における収縮力指令値の第3指令値候補uf1 ,ue2 ,ue3 は、図4の条件3と式(16)より、
Figure 0005943734
となるため、評価関数Jは第3指令値候補ue1 ,uf2 ,uf3 の最大値となる。そこで、第1演算処理と同様に変数uf3 ’を、
Figure 0005943734
と定義する。第3指令値候補ue1 ,uf2 は、
Figure 0005943734
と表すことができる。ここで、
Figure 0005943734
と定義する。変数uf1 ’,ue2 ’と定数Kf1’,Ke2’,T’,T’を用いて式(53)及び式(54)を表すと、
Figure 0005943734
となる。式(49)と式(59)、式(50)と式(58)を比較すると、第3演算処理の場合分けは、第2演算処理と等価であることがわかる。従って、第3演算処理においてはCase31、Case32、Case33、Case34の4通りの場合分けが必要となる。
図12は、収縮力指令値演算部による第3演算処理のフローチャートである。図12に示すように、本第1実施形態の第3演算処理は、式(55)〜式(57)に示す変数変換と第2演算処理を用いて場合分けを行う。
即ち、収縮力指令値演算部152は、第3演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(51)に示すように、uf1=0,ue2=0,ue3=0とする(S71)。次に、収縮力指令値演算部152は、式(56)及び式(57)のように定義し(S72)、第2演算処理と同様の演算を行う(S73)。その際、収縮力指令値演算部152は、式(55)のように定義する(S74)。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と第3指令値候補ue1 ,uf2 ,uf3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第3指令値候補を演算する第3演算処理を実行する。
(2.2.4 第4演算処理の設計)
第4演算処理における収縮力指令値の第4指令値候補uf1 ,uf2 ,ue3 は、図4の条件4と式(16)より、
Figure 0005943734
となるため、評価関数Jは第4指令値候補ue1 ,ue2 ,uf3 の最大値となる。そこで、第1演算処理と同様に変数uf3 ’を、
Figure 0005943734
と定義する。変数uf3 ’を用いて第4指令値候補ue1 ,ue2 を、
Figure 0005943734
とする。そして、X軸を変数uf3 ’と、Y軸を第4指令値候補ue1 ,ue2 ,uf3 とする3つの直線ue1 ,ue2 ,uf3 のグラフを描画する。さらに、直線ue1 のX切片とY切片を固定して図示し、直線ue2 のX切片とY切片を図上で移動させると、第4演算処理においては、Case41、Case42、Case43、Case44の4通りの場合分けが必要となる。
図13は、収縮力指令値演算部による第4演算処理のフローチャートである。収縮力指令値演算部152は、第4演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(60)に示すように、uf1=0,uf2=0,ue3=0とする(S81)。
次に、収縮力指令値演算部152は、xa4,xb4を演算する(S82)。次に、収縮力指令値演算部152は、xb4<xa4であるか否かを判断する(S83)。収縮力指令値演算部152は、xb4<xa4であると判断した場合は(S83:Yes)、yc4,yd4を演算する(S84)。そして、収縮力指令値演算部152は、ue1 =0,ue2 =ye4,uf3 =yc4を導き出す(S85)。
次に、収縮力指令値演算部152は、yd4<yc4であるか否かを判断する(S86)。そして、収縮力指令値演算部152は、yd4<yc4であると判断した場合は(S86:Yes)、Jmin =yc4とする(S87:Case41)。また、収縮力指令値演算部152は、yd4<yc4ではないと判断した場合は(S86:No)、Jmin =yd4とする(S88:Case42)。
また、収縮力指令値演算部152は、xb4<xa4ではないと判断した場合は(S83:No)、ye4,yf4を演算する(S89)。そして、収縮力指令値演算部152は、ue1 =ye4,ue2 =0,uf3 =yf4を導き出す(S90)。
次に、収縮力指令値演算部152は、ye4<yf4であるか否かを判断する(S91)。そして、収縮力指令値演算部152は、ye4<yf4であると判断した場合は(S91:Yes)、Jmin =yf4とする(S92:Case43)。また、収縮力指令値演算部152は、ye4<yf4ではないと判断した場合は(S91:No)、Jmin =ye4とする(S93:Case44)。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と収縮力指令値の第4指令値候補ue1 ,ue2 ,uf3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第4指令値候補を演算する第4演算処理を実行する。
(2.3 第1指令選択処理)
収縮力指令値演算部152は、第1指令選択処理では、評価関数の最小値Jminの候補Jmin ,Jmin ,Jmin ,Jmin のうち、最小となるものを選び出す。そして、収縮力指令値演算部152は、そのときの指令値候補を、収縮力指令値ufi,ueiとして出力する。
図14は、収縮力指令値演算部による第1指令選択処理のフローチャートである。まず、収縮力指令値演算部152は、評価関数Jの最小値Jminと収縮力指令値ufi,ueiを、第1演算処理で演算した最小値の候補Jmin と収縮力指令値の第1指令値候補ufi ,uei とする(S101)。次に、収縮力指令値演算部152は、Jmin >0であるか否かを判断し(S102)、Jmin >0である場合(S102:Yes)、以下の式(64)、即ちJmin>Jmin であるか否かを判断する(S103)。
Figure 0005943734
収縮力指令値演算部152は、Jmin>Jmin であると判断した場合(S103:Yes)、JminをJmin とし、ufi,ueiをufi ,uei とする(S104)。
次に、収縮力指令値演算部152は、Jmin >0であるか否かを判断し(S105)、Jmin >0である場合(S105:Yes)、Jmin>Jmin であるか否かを判断する(S106)。収縮力指令値演算部152は、Jmin>Jmin であると判断した場合(S106:Yes)、JminをJmin とし、ufi,ueiをufi ,uei とする(S107)。
次に、収縮力指令値演算部152は、Jmin>Jmin であるか否かを判断する(S108)。収縮力指令値演算部152は、Jmin>Jmin であると判断した場合(S108:Yes)、JminをJmin とし、ufi,ueiをufi ,uei とする(S109)。
ここで、2.2節で述べたように、第2,第3演算処理において、収縮力を全て正数とすることができないときは、最小値の候補Jmin ,Jmin を0とした。そこで、収縮力指令値演算部152は、第1筋指令選択処理では、候補Jmin ,Jmin が0より大きい場合にのみ、最小値Jminと収縮力指令値ufi,ueiの更新を行う。
以上、収縮力指令値演算部152は、第1〜第4指令値候補のうち、評価関数が最小の指令値候補を、指令値出力処理にて出力する第1〜第6収縮力指令値として選択する指令選択処理を実行する。
本第1実施形態によれば、収縮力指令値である制御入力を最適化する場合分けアルゴリズムにより、手先柔軟性の目標軌道が一意に決定されるため、最小の制御入力で人工筋肉アクチュエータf,eを拮抗駆動することが可能となる。制御入力を最小にすることで、例えばMcKibben型人工筋肉では消費する空気の量を最小にすることができる。これにより、タンク等の搭載型の空気源を用いるロボット100では稼働時間を延長することが可能となる。
[第2実施形態]
次に、本発明の第2実施形態のロボットについて説明する。本第2実施形態では、上記第1実施形態の制御方法にさらに分岐条件を加えることによって、各関節トルク指令値が正数と負数の両方を取るときにも制御入力である収縮力指令値の導出が可能であることを示す。なお、本第2実施形態において、装置構成は、上記第1実施形態における図2及び図3と同様であり、制御装置の制御動作が異なるものであるため、装置構成についての詳細な説明は省略し、制御装置の制御動作について詳細に説明する。
本第2実施形態では、関節トルク指令値T,Tが負数となる場合を考慮する収縮力の制御方法を導出する。これにより、任意の関節角度の目標軌道において、収縮力の最大値を最小化することが可能となる。
(1モデル導出)
本第2実施形態では第1実施形態と同じモデルを用いる。
(2 制御系設計)
本第2実施形態において、収縮力指令値演算部152は、関節トルク指令値T,Tの符号に基づいて、筋トルクτ,τ,τの符号の組み合わせを仮定する点が上記第1実施形態と異なる。
(2.1 関節トルク指令値の符号に基づく場合分け)
関節トルク指令値が負数となる場合は、図4に示す筋トルクτ,τ,τの符号の組み合わせのうち、筋トルクτが負数となる場合を考慮する必要がある。なぜなら、関節トルク指令値Tが負数のとき、筋トルクτを負数とすれば第1単関節筋の収縮力を低減することが可能となるためである。
このように、関節トルク指令値T,Tのどちらかが負数となるときと、どちらも正数となるときでは、考慮すべき筋トルクτ,τ,τの符号の組み合わせが異なる。そこで、関節トルク指令値T,Tの符号に基づいて、考慮すべき筋トルクτ,τ,τの符号の組み合わせの場合分けを行う。
まず、関節トルク指令値Tが正数となりTが負数となるときを考える。図4において、筋トルクτ,τをどちらも負数とする条件7及び条件8の組み合わせを仮定すると、式(9)より、関節トルク指令値Tは負数となる。また、筋トルクτ,τをどちらも正数とする条件1と条件3の組み合わせを仮定すると、関節トルク指令値Tは正数となる。これらのことから、関節トルク指令値Tが正数となり関節トルク指令値Tが負数となるときは、条件2、条件4、条件5、条件6の組み合わせを仮定して、評価関数Jを最小化するufi,ueiを導出すればよいことが分かる。
なお、本第2実施形態では、関節トルク指令値Tが正数となり関節トルク指令値Tが負数となるときは、関節トルク指令値Tが負数となり関節トルク指令値Tが正数となるときの演算方法を用いて収縮力指令値を演算する。
また、関節トルク指令値T,Tがどちらも負数となるときは、関節トルク指令値T,Tがどちらも正数となる場合の演算方法を用いて収縮力を演算する。さらに、本発明では関節トルク指令値T,Tが0となる場合は、正数である場合と同一の処理を行う。
収縮力指令値演算部152は、関節トルク指令値T,Tの符号に基づく場合分けを行い、筋トルクτ,τ,τの符号の候補を選択する。そして、収縮力指令値演算部152は、関節トルク指令値T,Tのうち、一方が正数となり他方が負数となる場合、即ち、関節トルク指令値Tと関節トルク指令値Tとが異符号の場合には、第2最小化演算処理と第2指令選択処理を実行する。これにより収縮力指令値を演算する。
また、収縮力指令値演算部152は、関節トルク指令値T,Tがどちらも正数又は負数となる場合、即ち、関節トルク指令値Tと関節トルク指令値Tとが同符号の場合には、上記第1実施形態と同様に、第1最小化演算処理と第1指令選択処理を実行する。これにより収縮力指令値を演算する。
図15は、本発明の第2実施形態に係るロボットの収縮力指令値演算部の処理動作を示すフローチャートである。まず、収縮力指令値演算部152は、関節トルク指令値T,Tをフィードフォワード補償部151から入力すると共に、不図示の上位コントローラから目標関節角度θ,θ、目標関節角速度ω,ωを入力する(S110)。なお、弾性力定数k、粘性力定数c及びモーメントアーム径rは、予め設定された値である。
次に、収縮力指令値演算部152は、式(12)を用いて、目標関節角度θ,θ、目標関節角速度ω,ωから係数Kfi,Keiを算出する(S111)。次に、収縮力指令値演算部152は、T≧0であるか否かを判断する(S112)。収縮力指令値演算部152は、T≧0であると判断した場合(S112:Yes)、T≧0であるか否かを判断する(S113)。
収縮力指令値演算部152は、T≧0であると判断した場合(S113:Yes)、式(10)に示す第1関数、及び式(11)に示す第2関数に、係数Kfi,Kei及び関節トルク指令値T,Tを定数として代入する(S114)。即ち、収縮力指令値演算部152は、関節トルク指令値Tと関節トルク指令値Tとが同符号の場合、ステップS114の処理を実行する。
次に、収縮力指令値演算部152は、上記第1実施形態で説明した第1最小化演算処理を実行する(S115)。次に、収縮力指令値演算部152は、評価関数Jmin 及び指令値候補ufi 1〜4,uei 1〜4に対し(S116)、評価関数が最小の指令値候補を選択する、上記第1実施形態と同様の第1指令選択処理を実行する(S117)。次に、収縮力指令値演算部152は、演算した第1〜第6収縮力指令値ufi,ueiを収縮力発生部153に出力する指令値出力処理を実行する(S118:指令値出力処理工程)。
また、収縮力指令値演算部152は、T≧0ではないと判断した場合(S113:No)、式(10)に示す第1関数、及び式(11)に示す第2関数に、係数Kfi,Kei及び関節トルク指令値T,Tを定数として代入する(S119)。即ち、収縮力指令値演算部152は、関節トルク指令値Tと関節トルク指令値Tとが同符号の場合、ステップS119の処理を実行する。
次に、収縮力指令値演算部152は、後述する、評価関数Jを最小化する指令値候補を演算する第2最小化演算処理を実行する(S120)。次に、収縮力指令値演算部152は、評価関数Jmin 5〜8及び指令値候補ufi 5〜8,uei 5〜8に対し(S121)、評価関数が最小の指令値候補を選択する、後述する第2指令選択処理を実行する(S122)。次に、収縮力指令値演算部152は、演算した第1〜第6収縮力指令値ufi,ueiを収縮力発生部153に出力する指令値出力処理を実行する(S118:指令値出力処理工程)。
また、収縮力指令値演算部152は、T≧0ではないと判断した場合(S112:No)、T≧0であるか否かを判断する(S123)。次に、収縮力指令値演算部152は、T≧0であると判断した場合(S123:Yes)、Kf1’=Ke2,Ke1’=Kf2,Kf2’=Ke1,Ke2’=Kf1,T’=T,T’=Tを定義する(S124)。そして、収縮力指令値演算部152は、Kfi’,Kei’,T’,T’を、式(10)に示す第1関数、及び式(11)に示す第2関数に代入する(S125)。
次に、収縮力指令値演算部152は、後述する、評価関数Jを最小化する指令値候補を演算する第2最小化演算処理を実行する(S126)。次に、収縮力指令値演算部152は、uf1=uf2’,ue1=ue2’,uf2=uf1’,ue2’=uf1とする(S127)。次に、収縮力指令値演算部152は、評価関数Jmin 及び指令値候補ufi 5〜8,uei 5〜8に対し(S128)、評価関数が最小の指令値候補を選択する、後述する第2指令選択処理を実行する(S129)。次に、収縮力指令値演算部152は、演算した第1〜第6収縮力指令値ufi,ueiを収縮力発生部153に出力する指令値出力処理を実行する(S118:指令値出力処理工程)。
また、収縮力指令値演算部152は、T≧0ではないと判断した場合(S123:No)、Kfi’=Kei,Kei’=Kfi,T’=−T,T’=−Tを定義する(S130)。そして、収縮力指令値演算部152は、Kfi’,Kei’,T’,T’を、式(10)に示す第1関数、及び式(11)に示す第2関数に代入する(S131)。
次に、収縮力指令値演算部152は、上記第1実施形態で説明した第1最小化演算処理を実行する(S132)。次に、収縮力指令値演算部152は、ufi’=uei,uei’=ufiとする(S133)。次に、収縮力指令値演算部152は、評価関数Jmin 及び指令値候補ufi 1〜4,uei 1〜4に対し(S134)、評価関数が最小の指令値候補を選択する、上記第1実施形態と同様の第1指令選択処理を実行する(S135)。
即ち、収縮力指令値演算部152は、これらS111〜S135において、第1から第6収縮力指令値ufi,ueiを演算する指令値演算処理を実行する(指令値演算処理工程)。
次に、収縮力指令値演算部152は、演算した第1〜第6収縮力指令値ufi,ueiを収縮力発生部153に出力する指令値出力処理を実行する(S118:指令値出力処理工程)。
なお、第2最小化計算処理と第2指令値選択処理とは、上記第1実施形態の第1最小化計算処理と第1指令値選択処理と同様であるため、詳細な演算方法を省略する。
(2.2 第2最小化演算処理における場合分け)
図16は、収縮力指令値演算部による第2最小化演算処理のフローチャートである。収縮力指令値演算部152は、図4に示す第2条件を仮定し(S141)、第5演算処理を実行し(S142)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第5指令値候補ufi ,uei を出力する(S143)。
続いて、収縮力指令値演算部152は、図4に示す第4条件を仮定し(S144)、第6演算処理を実行し(S145)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第6指令値候補ufi ,uei を出力する(S146)。
続いて、収縮力指令値演算部152は、図4に示す第5条件を仮定し(S147)、第7演算処理を実行し(S148)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第7指令値候補ufi ,uei を出力する(S149)。
続いて、収縮力指令値演算部152は、図4に示す第6条件を仮定し(S150)、第8演算処理を実行し(S151)、評価関数Jmin を最小化する第1〜第6収縮力指令値からなる第8指令値候補ufi ,uei を出力する(S152)。
第5、第6、第7、第8演算処理は、それぞれ、筋トルクτ,τの符号を図4の条件2、4、5、6と仮定して、評価関数Jの最小値の候補Jmin と収縮力指令値の指令値候補ufi 、uei を演算するサブルーチンである(j=5,6,7,8)。
(2.2.1 第5演算処理の設計)
第5演算処理における収縮力指令値の第5指令値候補ufi ,uei のうち、第5指令値候補ue1 ,uf2 ,ue3 は、図4の条件2と式(16)より、
Figure 0005943734
となるため、評価関数Jは収縮力指令値の第5指令値候補uf1 ,ue2 ,uf3 の最大値となる。そこで、第1演算処理と同様に変数uf3 ’を、
Figure 0005943734
と定義する。変数uf3 ’を用いて第5指令値候補uf1 ,ue2 を、
Figure 0005943734
とする。そして、X軸を変数uf3 ’と、Y軸を収縮力指令値の第5指令値候補uf1 ,ue2 ,uf3 とする3つの直線uf1 ,ue2 ,uf3 のグラフを描画する。さらに、直線uf1 のX切片とY切片を固定し、直線ue2 のX切片とY切片を図上で移動させると、第5演算処理においてはCase51、Case52、Case53の3通りの場合分けが必要となることがわかる。
図17は、収縮力指令値演算部による第5演算処理のフローチャートである。図17に示すように、収縮力指令値演算部152は、第5演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(65)に示すように、ue1=0,uf2=0,ue3=0とする(S161)。
次に、収縮力指令値演算部152は、ya5,yb5を演算し(S162)、xc5,yc5を演算する(S163)。次に、収縮力指令値演算部152は、yb5<ya5であるか否かを判断する(S164)。
収縮力指令値演算部152は、yb5<ya5である場合(S164:Yes)、yc5<yd5であるか否かを判断する(S165)。収縮力指令値演算部152は、yc5<yd5である場合(S165:Yes)、ye5,yf5を演算し(166)、uf1 =ye5,ue2 =yf5,uf3 =ye5,Jmin =ye5を導き出す(S167:Case51)。
また、収縮力指令値演算部152は、yc5<yd5ではない場合(S165:No)、uf1 =yc5,ue2 =yc5,uf3 =yd5,Jmin =yd5を導き出す(S168:Case52)。
また、収縮力指令値演算部152は、yb5<ya5ではない場合(S164:No)、uf1 =ya5,ue2 =yb5,uf3 =0,Jmin =yb5を導き出す(S169:Case53)。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と第5指令値候補uf1 ,ue2 ,uf3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第5指令値候補を演算する第5演算処理を実行する。
(2.2.2 第6演算処理の設計)
第6演算処理部における収縮力指令値の第6指令値候補ufi ,uei のうち、第6指令値候補uf1 ,uf2 ,ue3 は、図4の条件4と式(16)より、
Figure 0005943734
となるため、評価関数Jは収縮力指令値の第6指令値候補uf1 ,uf2 ,ue3 の最大値となる。そこで、変数uf3 ’を、
Figure 0005943734
と定義する。変数uf3 ’を用いて収縮力指令値の第6指令値候補ue1 ,ue2 を、
Figure 0005943734
とする。そして、X軸を変数uf3 ’と、Y軸を収縮力指令値の第6指令値候補ue1 ,ue2 ,uf3 とする3つの直線ue1 ,ue2 ,uf3 のグラフを描画する。さらに、直線uf1 のX切片とY切片を固定し、直線ufe2 のX切片とY切片を図上で移動させると、第6演算処理においてはCase61、Case62の2通りの場合分けが必要となる。
図18は、収縮力指令値演算部による第6演算処理のフローチャートである。図18に示すように、収縮力指令値演算部152は、第6演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(69)に示すように、uf1=0,uf2=0,ue3=0とする(S171)。
次に、収縮力指令値演算部152は、xa6,yb6を演算し(S172)、yc6=xa6とする(S173)。次に、収縮力指令値演算部152は、ue1 =0,ue2 =yb6,uf3 =yc6とする(S174)。次に、収縮力指令値演算部152は、yb6<yc6であるか否かを判断する(S175)。
収縮力指令値演算部152は、yb6<yc6である場合(S175:Yes)、Jmin =yc6を導き出し(S176:Case61)、yb6<yc6ではない場合(S175:No)、Jmin =yb6を導き出す(S177:Case62)。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と第6指令値候補ue1 ,ue2 ,uf3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第5指令値候補を演算する第5演算処理を実行する。
(2.2.3 第7演算処理の設計)
第7演算処理における収縮力指令値の第7指令値候補ufi ,uei のうち、第7指令値候補ue1 ,ue2 ,uf3 は、図4の条件5と式(16)より、
Figure 0005943734
となるため、評価関数Jは収縮力指令値の第7指令値候補uf1 ,uf2 ,ue3 の最大値となる。そこで、変数ue3 ’を、
Figure 0005943734
と定義する。収縮力指令値の第7指令値候補uf1 ,uf2 は、
Figure 0005943734
と表すことができる。ここで、
Figure 0005943734
と定義する。変数ue1 ’,ue2 ’,uf3 ’と定数T’,T’,Ke1’,Ke2’,Kf3’を用いて式(71)及び式(72)を表すと、
Figure 0005943734
となる。式(71)と式(81)、式(72)と式(80)を比較すると、第6演算処理と第7演算処理の場合分けは等価であることがわかる。従って、第7演算処理においてはCase71、Case72の2通りの場合分けが必要となる。
図19は、収縮力指令値演算部による第7演算処理のフローチャートである。図19に示すように、本第2実施形態の第7演算処理は、式(77)〜式(79)に示す変数変換と第7演算処理を用いて場合分けを行う。
即ち、収縮力指令値演算部152は、第7演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(73)に示すように、ue1=0,ue2=0,uf3=0とする(S181)。次に、収縮力指令値演算部152は、式(78)及び式(79)のように定義し(S182)、第6演算処理と同様の演算を行う(S183)。その際、収縮力指令値演算部152は、式(77)のように定義する(S184)。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と第7指令値候補uf1 ,uf2 ,ue3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第7指令値候補を演算する第7演算処理を実行する。
(2.2.4 第8演算処理の設計)
第8演算処理における収縮力指令値の第8指令値候補ue1 ,uf2 ,uf3 は、図4の条件6と式(16)より、
Figure 0005943734
となるため、評価関数Jは収縮力指令値の第8指令値候補uf1 ,ue2 ,ue3 の最大値となる。そこで、変数ue3 ’を、
Figure 0005943734
と定義する。収縮力指令値の第8指令値候補uf1 ,ue2 は変数ue3 ’を用いて、
Figure 0005943734
と表すことができる。ここで、
Figure 0005943734
と定義する。変数uf1 ’,ue2 ’,uf3 ’と定数T’,T’,Kf1’,Ke2’,Kf3’を用いて式(84)及び式(85)を表すと、
Figure 0005943734
となる。式(67)と式(90)、式(68)と式(89)を比較すると、第5演算処理と第8演算処理の場合分けは等価であることがわかる。従って、第8演算処理においてはCase81、Case82、Case83の3通りの場合分けが必要となる。
図20に、収縮力指令値演算部による第8演算処理のフローチャートである。図20に示すように、本第2実施形態の第8演算処理は、式(86)〜式(88)に示す変数変換と第7演算処理を用いて場合分けを行う。
即ち、収縮力指令値演算部152は、第8演算処理として、まず、式(10)に示す第1関数及び式(11)に示す第2関数において、式(82)に示すように、ue1=0,uf2=0,uf3=0とする(S191)。次に、収縮力指令値演算部152は、式(87)及び式(88)のように定義し(S192)、第5演算処理と同様の演算を行う(S193)。その際、収縮力指令値演算部152は、式(86)のように定義する(S194)。
以上、収縮力指令値演算部152は、評価関数Jの最小値Jmin と第8指令値候補uf1 ,ue2 ,ue3 を演算する。つまり、収縮力指令値演算部152は、評価関数を最小化する第1〜第6収縮力指令値からなる第8指令値候補を演算する第8演算処理を実行する。
(2.3 関節トルク指令値T、Tがどちらも負数となる場合の場合分け)
上記第1実施形態の式(10)と式(11)に対して、
Figure 0005943734
とする変数変換を行うと、
Figure 0005943734
と表すことができる。式(92)より、T’とT’は正数となるため、式(91)〜式(93)に示す変数変換と第1最小化演算処理を実行することで、関節トルク指令値T,Tがどちらも負数となる場合の場合分けを行うことが可能となることがわかる。そこで、図15に示すように、まず、式(91)〜式(93)に示す変数変換を行う。次に、第1最小化演算処理を実行して評価関数Jを最小化する収縮力指令値ufi’,uei’を求める。さらに、式(91)に示す変数変換を行い、収縮力指令値ufi’,uei’からufi,ueiを得る。
(2.4 関節トルク指令値Tが負数となり関節トルク指令値Tが正数となる場合の場合分け)
式(10)と(11)に対して、
Figure 0005943734
とする変数変換を行うと、
Figure 0005943734
と表すことができる。式(97)より、T’は正数となりT’は負数となる。このため、式(96)〜式(98)に示す変数変換と第2最小化演算処理を実行することで、関節トルク指令値Tが負数となり、関節トルク指令値Tが正数となる場合の場合分けを行うことが可能となることがわかる。そこで、図15に示すように、まず、式(96)〜式(98)に示す変数変換を行う。次に、第2最小化演算処理を実行して評価関数Jを最小化する収縮力指令値ufi’,uei’を求める。さらに、式(96)に示す変数変換を行い、収縮力指令値ufi’,uei’からufi,ueiを得る。
以上の導出では、筋の弾性力がθ=0radからの角度に比例して発生することを仮定していた。任意の角度を筋の弾性力発生の基準となる角度(以下、中立角度と呼ぶ)をθci(i=1,2,3)としてフィードフォワード制御入力を生成するためには、係数Kfi,Kei(i=1,2,3)を、式(12)に代わり、
Figure 0005943734
とすればよい。ただし、角度θc1,θc2,θc3はそれぞれ、第一単関節筋、第二単関節筋、二関節筋の弾性力の中立角度とする。
(3 シミュレーション)
本節では前節で設計した制御系を用いて、シミュレーションを行う。また、評価関数Jを最小化する収縮力は、前節で示した方法により導出する。本第2実施形態では、リンク101,102の慣性モーメントI,Iを2.5×10−3kgm、リンク101,102の長さL,Lを0.2m、第2リンク102の質量mを1kgとする。また、プーリ径rを5.0×10−2m、筋の弾性力定数kを10m−1、粘性力定数cを10m−1sec−1とする。さらに、目標関節角度θr1,θr2をそれぞれ、0secから0.3secの間に0.785radから1.047radに、1.571radから2.094radに増加するジャーク最小軌道とし、サンプリング周期Tを1.0×10−4secとする。
図21(a)及び図21(b)に、第1、第2リンクの関節角度θ,θを実線で、目標軌道θr1,θr2を破線で表し、図22に、関節トルク指令値Tを実線で、関節トルク指令値Tを破線で表す。また、図23(a)、図23(b)及び図23(c)に、実線を用いて収縮力指令値uf1,uf2,uf3を、破線を用いて収縮力指令値ue1,ue2,ue3を、それぞれ表す。さらに、図24に、係数Kfi,Keiと関節トルク指令値T,Tの変化によって、第1〜8演算処理における収縮力の演算フローが切り替わる様子を表す。
図21(a)及び図21(b)より、実線で示す関節角度は、破線で示す目標軌道と重なっており、関節角度は目標軌道に追従していることがわかる。
図22より、0secから0.11secの間は、関節トルク指令値T,Tが正数となるため、収縮力指令値演算部152は第1最小化演算処理を実行して収縮力を最小化していることがわかる。また、0.11secから0.3secの間は、関節トルク指令値Tは負数となり関節トルク指令値Tは正数となるため、収縮力指令値演算部152は第2最小化演算処理を実行して収縮力を最小化していることがわかる。
図23(a)、図23(b)及び図23(c)より、実線で示す収縮力指令値ufiと破線で示す収縮力指令値ueiはどちらも必ず正数となることがわかる。また、収縮力指令値ufiと収縮力指令値ueiは一方が0となる場合には他方が0となっていることがわかる
これらのことから、第1最小化演算処理と第2最小化演算処理を実行して導出する収縮力は、どちらも式(16)を満たし、評価関数Jを最小化していることがわかる。
また、図23(b)及び図23(c)より、0.11secと0.12secにおいて、収縮力指令値uf2,uf3の応答が急峻に変化していることが分かる。さらに、図24より、収縮力指令値演算部152は0.11secにおいてCase11からCase14へ、0.12secにおいてCase51からCase52へ、それぞれ演算フローを切り替えていることがわかる。
これらのことから、演算フローを切り替えるとき、高周波成分を多く含む制御入力が発生してしまうことがわかる。制御入力に高周波成分が含まれると、ロボットの固有振動が励起されることが考えられる。しかし、この高周波成分は、収縮力の最小値は若干増加するものの、例えば零位相ローパスフィルタを用いることで低減することが可能である。
[第3実施形態]
次に、本発明の第3実施形態に係るロボットについて説明する。本第3実施形態では、制御入力は最小とならないが、関節剛性と関節角度の目標軌道に同時に追従するための制御方法を示す。
(1モデル導出)
本第3実施形態では第2実施形態と同じモデルを用いる。
(2制御系設計)
2リンクマニピュレータでは、手先が外界と直に接触するため、手先の剛性を制御することが重要である。手先の剛性は、図25に示すようなスティフネス楕円Cによって表される。この楕円Cは、各方向に対しての剛性の分布を示し、手先と楕円Cの距離が離れるほど剛性が高いことを表している。
また、3対6筋構造を備える2リンクマニピュレータでは、手先の剛性と関節周りに働くトルクを独立に制御することが可能であることが知られている。収縮力指令値ufi,uei(i=1,2,3)の差をUdi(i=1,2,3)、和をUsi(i=1,2,3)とする。
Figure 0005943734
diとUsiを用いると、式(3)は、
Figure 0005943734
となる。式(103)より、Udiが関節まわりのトルクを、Usiが関節に対する剛性および粘性を増減させることがわかる。したがって、Udi,Usiをそれぞれトルク指令値、関節剛性指令値とすると、式(103)より、アクチュエータの収縮力により生じるトルクと、筋の粘弾性により生じるトルクを独立に制御できることがわかる。例えば、関節剛性指令値Us1,Us2,Us3を、
Figure 0005943734
と制御すると、スティフネス楕円Cの長軸は第1関節と手先を結ぶ方向を向くことが知られている。
しかし、上記第1実施形態と上記第2実施形態の制御系では、式(16)に示す制御側によって、関節剛性は収縮力と等しくなってしまうため、駆動中の手先剛性を任意に指定することはできない。そこで、本第3実施形態では、駆動中に所望の手先剛性を実現するように、収縮力指令値演算部152が出力する収縮力に予備収縮力を加算する。そのため、本第3実施形態の制御系における収縮力は、剛性制御を行わない上記第1及び第2実施形態と比べて増加してしまう。予備収縮力をΔufi,Δueiとすると、実際に2リンクマニピュレータに与える収縮力指令値ufi’,uei’は、
Figure 0005943734
となる。式(105)より、収縮力の和を関節剛性の目標軌道Usi(i=1,2,3)と等しくするためには、予備収縮力Δufi,Δueiを、
Figure 0005943734
とすればよいことがわかる。また、予備収縮力を考慮すると、筋トルクτは、
Figure 0005943734
となる。ここで、右辺の第3項、第4項は予備収縮力により関節周りに生じるトルクを表し、マニピュレータに印加される外乱となる。そこで、予備収縮力による筋トルクを発生させないように、予備収縮力Δufi,Δueiを、
Figure 0005943734
を満たすよう制御する。式(106)と式(108)を予備収縮力Δufi,Δueiについて解くと、
Figure 0005943734
となる。
図26は、本発明の第3実施形態に係るロボットの制御装置を示すブロック線図である。図26において、制御装置150Aは、トルク指令値生成部としてのフィードフォワード補償部151と、収縮力指令値演算部152と、収縮力発生部153と、を備えている。更に、本第3実施形態の制御装置150Aは、剛性制御部154を有している。図26において、剛性制御部154は、収縮力指令値演算部152が出力する収縮力指令値ufi,ueiを入力として、式(109)と式(110)を用いて予備収縮力Δufi,Δueiを演算する。
(3 シミュレーション)
前節の制御系を用いたシミュレーションを行う。第1リンク101と第2リンク102の物理パラメータと関節角度の目標軌道は上記第2実施形態と同一とする。また、関節剛性の目標軌道Usi(i=1,2,3)を0secから0.3secの間に8Nから12Nに増加するジャーク最小軌道とする。
図27に関節剛性の目標軌道Usi(i=1,2,3)を表す。また、図28(a)、図28(b)及び図28(c)に、収縮力指令値uf1’,uf2’,uf3’を実線で、収縮力指令値ue1’,ue2’,ue3’を破線で、収縮力の和を点線で、それぞれ表す。図28(a)、図28(b)及び図28(c)より、収縮力指令値ufi’,uei’はどちらも0N以上となることがわかる。これは、収縮力指令値演算部152が出力する収縮力指令値ufi,ueiに予備収縮力Δufi,Δueiが加算されているためである。さらに、図27の実線と図28(a)、図28(b)及び図28(c)の点線とが一致していることから、収縮力指令値ufi’,uei’の和が関節剛性の目標軌道Usiと一致していることがわかる。これらのことから、本第3実施形態の制御系により、手先の柔軟性を制御することが可能となることがわかる。
なお、本発明は、以上説明した実施形態に限定されるものではなく、多くの変形が本発明の技術的思想内で当分野において通常の知識を有する者により可能である。
100…ロボット、101…第1リンク、102…第2リンク、103…プーリ(基台)、111…第1関節、112…第2関節、150…制御装置、151…フィードフォワード補償部(トルク指令値生成部)、152…収縮力指令値演算部、153…収縮力発生部、e…第2人工筋肉アクチュエータ、e…第4人工筋肉アクチュエータ、e…第6人工筋肉アクチュエータ、f…第1人工筋肉アクチュエータ、f…第3人工筋肉アクチュエータ、f…第5人工筋肉アクチュエータ

Claims (4)

  1. 基台に第1関節で連結された第1リンクと、
    前記第1リンクに第2関節で連結された第2リンクと、
    収縮により前記第1リンクを前記第1関節まわりに第1旋回方向に旋回させる第1人工筋肉アクチュエータと、
    収縮により前記第1リンクを前記第1関節まわりに前記第1旋回方向に対して反対の第2旋回方向に旋回させる第2人工筋肉アクチュエータと、
    収縮により前記第2リンクを前記第2関節まわりに前記第1旋回方向に旋回させる第3人工筋肉アクチュエータと、
    収縮により前記第2リンクを前記第2関節まわりに前記第2旋回方向に旋回させる第4人工筋肉アクチュエータと、
    収縮により前記第1及び第2リンクを同時に前記第1及び第2関節まわりに前記第1旋回方向に旋回させる第5人工筋肉アクチュエータと、
    収縮により前記第1及び第2リンクを同時に前記第1及び第2関節まわりに前記第2旋回方向に旋回させる第6人工筋肉アクチュエータと、
    前記第1関節の第1関節トルク指令値及び前記第2関節の第2関節トルク指令値を生成するトルク指令値生成部と、
    前記第1関節トルク指令値及び前記第2関節トルク指令値に基づいて、前記第1人工筋肉アクチュエータの第1収縮力指令値、前記第2人工筋肉アクチュエータの第2収縮力指令値、前記第3人工筋肉アクチュエータの第3収縮力指令値、前記第4人工筋肉アクチュエータの第4収縮力指令値、前記第5人工筋肉アクチュエータの第5収縮力指令値、及び前記第6人工筋肉アクチュエータの第6収縮力指令値を求める収縮力指令値演算部と、
    前記第1収縮力指令値に応じて前記第1人工筋肉アクチュエータを収縮させ、前記第2収縮力指令値に応じて前記第2人工筋肉アクチュエータを収縮させ、前記第3収縮力指令値に応じて前記第3人工筋肉アクチュエータを収縮させ、前記第4収縮力指令値に応じて前記第4人工筋肉アクチュエータを収縮させ、前記第5収縮力指令値に応じて前記第5人工筋肉アクチュエータを収縮させ、前記第6収縮力指令値に応じて前記第6人工筋肉アクチュエータを収縮させる収縮力発生部と、を備え、
    前記収縮力指令値演算部は、
    前記第1関節トルク指令値を定数とし、前記第1、第2、第5及び第6収縮力指令値を変数として成り立つ第1関数、並びに前記第2関節トルク指令値を定数とし、前記第3、第4、第5及び第6収縮力指令値を変数として成り立つ第2関数において、前記第1及び第2収縮力指令値の一方、前記第3及び第4収縮力指令値の一方、並びに前記第5及び第6収縮力指令値の一方を0とした場合に、前記第1及び第2収縮力指令値の他方、前記第3及び第4収縮力指令値の他方、並びに前記第5及び第6収縮力指令値の他方のうち最大値となる収縮力指令値が最小となるように前記第1及び第2収縮力指令値の他方、前記第3及び第4収縮力指令値の他方、並びに前記第5及び第6収縮力指令値の他方を演算する指令値演算処理と、
    前記指令値演算処理で演算した前記第1から第6収縮力指令値を前記収縮力発生部に出力する指令値出力処理と、を実行することを特徴とするロボット。
  2. 前記第1収縮力指令値をuf1、前記第2収縮力指令値をue1、前記第3収縮力指令値をuf2、前記第4収縮力指令値をue2、前記第5収縮力指令値をuf3、前記第6収縮力指令値をue3、前記第1関節トルク指令値をT、前記第2関節トルク指令値をTとし、
    正の係数Kf1,Ke1,Kf2,Ke2,Kf3,Ke3を用いて、前記第1関数を、T=Kf1×uf1−Ke1×ue1+Kf3×uf3−Ke3×ue3とし、前記第2関数を、T=Kf2×uf2−Ke2×ue2+Kf3×uf3−Ke3×ue3とし、
    評価関数を、J=max{uf1,ue1,uf2,ue2,uf3,ue3}としたとき、
    前記収縮力指令値演算部は、
    前記指令値演算処理として、
    前記第1関数及び前記第2関数において、ue1=0,ue2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第1指令値候補を演算する第1演算処理と、
    前記第1関数及び前記第2関数において、ue1=0,uf2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第2指令値候補を演算する第2演算処理と、
    前記第1関数及び前記第2関数において、uf1=0,ue2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第3指令値候補を演算する第3演算処理と、
    前記第1関数及び前記第2関数において、uf1=0,uf2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第4指令値候補を演算する第4演算処理と、
    前記第1から第4指令値候補のうち、前記評価関数が最小の指令値候補を、前記指令値出力処理にて出力する前記第1から第6収縮力指令値として選択する指令選択処理と、を実行することを特徴とする請求項1に記載のロボット。
  3. 前記第1収縮力指令値をuf1、前記第2収縮力指令値をue1、前記第3収縮力指令値をuf2、前記第4収縮力指令値をue2、前記第5収縮力指令値をuf3、前記第6収縮力指令値をue3、前記第1関節トルク指令値をT、前記第2関節トルク指令値をTとし、
    正の係数Kf1,Ke1,Kf2,Ke2,Kf3,Ke3を用いて、前記第1関数を、T=Kf1×uf1−Ke1×ue1+Kf3×uf3−Ke3×ue3とし、前記第2関数を、T=Kf2×uf2−Ke2×ue2+Kf3×uf3−Ke3×ue3とし、
    評価関数を、J=max{uf1,ue1,uf2,ue2,uf3,ue3}としたとき、
    前記収縮力指令値演算部は、
    前記指令値演算処理として、
    前記第1関節トルク指令値と前記第2関節トルク指令値とが同符号の場合には、
    前記第1関数及び前記第2関数において、ue1=0,ue2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第1指令値候補を演算する第1演算処理と、
    前記第1関数及び前記第2関数において、ue1=0,uf2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第2指令値候補を演算する第2演算処理と、
    前記第1関数及び前記第2関数において、uf1=0,ue2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第3指令値候補を演算する第3演算処理と、
    前記第1関数及び前記第2関数において、uf1=0,uf2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第4指令値候補を演算する第4演算処理と、
    前記第1から第4指令値候補のうち、前記評価関数が最小の指令値候補を、前記指令値出力処理にて出力する前記第1から第6収縮力指令値として選択する第1指令選択処理と、を実行し、
    前記第1関節トルク指令値と前記第2関節トルク指令値とが異符号の場合には、
    前記第1関数及び前記第2関数において、ue1=0,uf2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第5指令値候補を演算する第5演算処理と、
    前記第1関数及び前記第2関数において、uf1=0,uf2=0,ue3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第6指令値候補を演算する第6演算処理と、
    前記第1関数及び前記第2関数において、ue1=0,ue2=0,uf3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第7指令値候補を演算する第7演算処理と、
    前記第1関数及び前記第2関数において、ue1=0,uf2=0,uf3=0とした場合に、前記評価関数を最小化する前記第1から第6収縮力指令値からなる第8指令値候補を演算する第8演算処理と、
    前記第5から第8指令値候補のうち、前記評価関数が最小の指令値候補を、前記指令値出力処理にて出力する前記第1から第6収縮力指令値として選択する第2指令選択処理と、を実行することを特徴とする請求項1に記載のロボット。
  4. 基台に第1関節で連結された第1リンクと、
    前記第1リンクに第2関節で連結された第2リンクと、
    収縮により前記第1リンクを前記第1関節まわりに第1旋回方向に旋回させる第1人工筋肉アクチュエータと、
    収縮により前記第1リンクを前記第1関節まわりに前記第1旋回方向に対して反対の第2旋回方向に旋回させる第2人工筋肉アクチュエータと、
    収縮により前記第2リンクを前記第2関節まわりに前記第1旋回方向に旋回させる第3人工筋肉アクチュエータと、
    収縮により前記第2リンクを前記第2関節まわりに前記第2旋回方向に旋回させる第4人工筋肉アクチュエータと、
    収縮により前記第1及び第2リンクを同時に前記第1及び第2関節まわりに前記第1旋回方向に旋回させる第5人工筋肉アクチュエータと、
    収縮により前記第1及び第2リンクを同時に前記第1及び第2関節まわりに前記第2旋回方向に旋回させる第6人工筋肉アクチュエータと、
    前記第1関節の第1関節トルク指令値及び前記第2関節の第2関節トルク指令値を生成するトルク指令値生成部と、
    前記第1関節トルク指令値及び前記第2関節トルク指令値に基づいて、前記第1人工筋肉アクチュエータの第1収縮力指令値、前記第2人工筋肉アクチュエータの第2収縮力指令値、前記第3人工筋肉アクチュエータの第3収縮力指令値、前記第4人工筋肉アクチュエータの第4収縮力指令値、前記第5人工筋肉アクチュエータの第5収縮力指令値、及び前記第6人工筋肉アクチュエータの第6収縮力指令値を求める収縮力指令値演算部と、
    前記第1収縮力指令値に応じて前記第1人工筋肉アクチュエータを収縮させ、前記第2収縮力指令値に応じて前記第2人工筋肉アクチュエータを収縮させ、前記第3収縮力指令値に応じて前記第3人工筋肉アクチュエータを収縮させ、前記第4収縮力指令値に応じて前記第4人工筋肉アクチュエータを収縮させ、前記第5収縮力指令値に応じて前記第5人工筋肉アクチュエータを収縮させ、前記第6収縮力指令値に応じて前記第6人工筋肉アクチュエータを収縮させる収縮力発生部と、を備えたロボットを制御するロボット制御方法において、
    前記収縮力指令値演算部が、前記第1関節トルク指令値を定数とし、前記第1、第2、第5及び第6収縮力指令値を変数として成り立つ第1関数、並びに前記第2関節トルク指令値を定数とし、前記第3、第4、第5及び第6収縮力指令値を変数として成り立つ第2関数において、前記第1及び第2収縮力指令値の一方、前記第3及び第4収縮力指令値の一方、並びに前記第5及び第6収縮力指令値の一方を0とした場合に、前記第1及び第2収縮力指令値の他方、前記第3及び第4収縮力指令値の他方、並びに前記第5及び第6収縮力指令値の他方のうち最大値となる収縮力指令値が最小となるように前記第1及び第2収縮力指令値の他方、前記第3及び第4収縮力指令値の他方、並びに前記第5及び第6収縮力指令値の他方を演算する指令値演算処理工程と、
    前記収縮力指令値演算部が、前記指令値演算処理工程で演算した前記第1から第6収縮力指令値を前記収縮力発生部に出力する指令値出力処理工程と、を備えたことを特徴とするロボット制御方法。
JP2012141598A 2012-06-25 2012-06-25 ロボット及びロボット制御方法 Expired - Fee Related JP5943734B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012141598A JP5943734B2 (ja) 2012-06-25 2012-06-25 ロボット及びロボット制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012141598A JP5943734B2 (ja) 2012-06-25 2012-06-25 ロボット及びロボット制御方法

Publications (2)

Publication Number Publication Date
JP2014004654A JP2014004654A (ja) 2014-01-16
JP5943734B2 true JP5943734B2 (ja) 2016-07-05

Family

ID=50102870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012141598A Expired - Fee Related JP5943734B2 (ja) 2012-06-25 2012-06-25 ロボット及びロボット制御方法

Country Status (1)

Country Link
JP (1) JP5943734B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6112947B2 (ja) * 2013-04-08 2017-04-12 キヤノン株式会社 ロボット装置、ロボット制御方法、プログラム及び記録媒体
CN106426139B (zh) * 2015-08-28 2019-02-22 范甬挺 一种人工肌肉及其应用、机器人
JP7073620B2 (ja) 2016-10-31 2022-05-24 ヤマハ株式会社 アクチュエータの駆動制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3436320B2 (ja) * 1994-04-18 2003-08-11 富士通株式会社 非線形システムの出力軌道と動特性の制御方法および装置
JP3193656B2 (ja) * 1997-02-03 2001-07-30 トヨタ自動車株式会社 筋電信号生成装置
JP5326223B2 (ja) * 2007-05-14 2013-10-30 沖電気工業株式会社 リハビリテーション教育用ロボット
JP5930754B2 (ja) * 2012-02-13 2016-06-08 キヤノン株式会社 ロボット装置の制御方法及びロボット装置

Also Published As

Publication number Publication date
JP2014004654A (ja) 2014-01-16

Similar Documents

Publication Publication Date Title
JP6080643B2 (ja) ロボット装置、ロボット制御方法、プログラム及び記録媒体
JP5930754B2 (ja) ロボット装置の制御方法及びロボット装置
JP5930753B2 (ja) ロボット装置の制御方法及びロボット装置
Lu et al. Design and optimization of interval type-2 fuzzy logic controller for delta parallel robot trajectory control
Chien et al. Adaptive impedance controller design for flexible-joint electrically-driven robots without computation of the regressor matrix
JP2010134907A (ja) 強化学習システム
JP5943734B2 (ja) ロボット及びロボット制御方法
He et al. Variable impedance control of cable actuated continuum manipulators
Bellegarda et al. Training in task space to speed up and guide reinforcement learning
Wang et al. Hybrid trajectory and force learning of complex assembly tasks: A combined learning framework
Liang et al. A novel impedance control method of rubber unstacking robot dealing with unpredictable and time-variable adhesion force
Rayyes et al. Learning inverse statics models efficiently with symmetry-based exploration
Zhang et al. Adaptive control of discrete-time nonlinear systems using ITF-ORVFL
Soni et al. End-to-end reinforcement learning for torque based variable height hopping
Treratanakulwong et al. Low-friction tendon-driven robot hand with carpal tunnel mechanism in the palm by optimal 3D allocation of pulleys
Mehdi et al. PSO-Lyapunov motion/force control of robot arms with model uncertainties
Tao et al. Multi-phase multi-objective dexterous manipulation with adaptive hierarchical curriculum
Hasan et al. Neural networks’ based inverse kinematics solution for serial robot manipulators passing through singularities
Kim et al. Weighted hybrid admittance-impedance control with human intention based stiffness estimation for human-robot interaction
Bhatti Adaptive collaborative position control of a tendon-driven robotic finger
Mohamed et al. Humanoid robot arm performance optimization using multi objective evolutionary algorithm
Razali et al. Lifting and stabilizing of two-wheeled wheelchair system using interval type-2 fuzzy logic control based spiral dynamic algorithm
Popescu et al. A spatial weight error control for a class of hyper-redundant robots
Balderas Hill et al. Minimizing the energy consumption of a delta robot by exploiting the natural dynamics
CN116728393A (zh) 机器人控制方法和机器人

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160415

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160524

R151 Written notification of patent or utility model registration

Ref document number: 5943734

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees