以下、図面を参照して、本発明の実施形態について詳細に説明する。
図1は、実施形態に係るロボット1の概略構成図である。図1に示すように、ロボット1はヒューマノイドロボットである。ロボット1は、基体2と、基体2の上方に配置された頭部3と、基体2の上部から延設された左右の腕部4と、腕部4の先端に設けられた手部5と、基体2の下部から延設された左右の脚体6と、脚体6の先端に設けられた足部7とを備えている。以下の説明では、ロボット1の前後方向をX軸、左右方向をY軸、上下方向をZ軸とする。
基体2はZ軸回りに相対的に回動し得るように上下に連結された上部及び下部により構成されている。頭部3は基体2に対してZ軸回りに回動する等、動くことができる。
腕部4は上腕リンク8と前腕リンク9とを備えている。基体2と上腕リンク8とは肩関節10を介して連結され、上腕リンク8と前腕リンク9とは肘関節11を介して連結され、前腕リンク9と手部5とは手根関節12を介して連結されている。肩関節10はX軸、Y軸及びZ軸回りの回動自由度を有し、肘関節11はY軸回りの回動自由度を有し、手根関節12はX軸、Y軸、Z軸回りの回動自由度を有している。基体2には、ロボット1の全体の動作を制御する第1制御装置13が設けられている。
図2に示すように、手部5は、掌部14と、掌部14から延設された複数の指部15とを備えている。指部15のそれぞれは、第1指リンク16と、第2指リンク17と、第3指リンク18とを備えている。掌部14と第1指リンク16とは第1指関節19を介して連結され、第1指リンク16と第2指リンク17とは第2指関節20を介して連結され、第2指リンク17と第3指リンク18とは第3指関節21を介して連結されている。第1指関節19~第3指関節21はY軸回りの回動自由度を有している。親指に対応する指部15の第1指関節19は、更にX軸回りの回動自由度を有している。前腕リンク9、掌部14、第1指リンク16~第3指リンク18、手根関節12及び第1指関節19~第3指関節21はアウタケース22によって覆われている。
前腕リンク9には、各指の関節を駆動するための複数のモータ23(駆動源)と、これらのモータ23の動作を制御する第2制御装置25とが設けられている。本実施形態では、第3指関節21は第2指関節20と連動するように構成されており、各指部15について、第1指関節19を駆動するためのモータ23と、第2指関節20及び第3指関節21を駆動するためのモータ23との2つのモータ23が使用される。第2制御装置25は、全ての指部15のモータ23を駆動するものであり、複数のアクチュエータ30に共通となっている。
第2制御装置25は、基体2に搭載された第1制御装置13(図1)から指令を受け、指令に基づいてモータ23の動作を制御することによって手部5の全ての指部15を駆動する。モータ23はロボット1に搭載されているバッテリ(図示略)から供給される電力によって動作する。指部15のそれぞれはアクチュエータ30を構成する。つまり、上腕リンク8から掌部14までの部分は、肩関節10を介して基体2に支持されたアーム31をなし、掌部14は、アーム31の基部をなす前腕リンク9に手根関節12を介して連結され、指部15を支持するハンド部をなしている。
本実施形態では、指部15が複数のモータ23によって駆動される複数の関節(19~21)を有している。つまり、本実施形態の指部15は複数のアクチュエータ30を含んでいると言える。第1指関節19を駆動するアクチュエータ30は、掌部14に対して指部15の全体をY軸回りに回動駆動する。第2指関節20を駆動するアクチュエータ30は、第1指リンク16に対して第2指リンク17及び第3指リンク18をY軸回りに回動駆動する。以下、アクチュエータ30における駆動対象である指部15並びに、第2指リンク17及び第3指リンク18を、単に負荷体32(図3参照)と言う。各負荷体32は直接又は他の負荷体32を介して間接的にアーム31に対して変位可能に設けられる。なお、他の実施形態では、指が1つのモータ23のみによって駆動されてもよい。
図3は、手部5のアクチュエータ30のモデル図である。図3に示すように、アクチュエータ30は、前腕リンク9に設けられたモータ23と、モータ23によって駆動される負荷体32と、モータ23が発生する動力を負荷体32に伝達する動力伝達系33とを備えている。動力伝達系33は、モータ23によって回転駆動される駆動プーリ34と、負荷体32の回動軸回りに負荷体32に一体に形成された従動プーリ35と、駆動プーリ34及び従動プーリ35に巻き掛けられたワイヤ36とを含んでいる。ワイヤ36は屈曲側張力Fbを伝達可能に駆動プーリ34と従動プーリ35とを連結している。
ワイヤ36は、駆動プーリ34に固定された一端から延びて従動プーリ35に巻き掛けられ、他端において掌部14(ハンド部、図2)に固定されている。従動プーリ35に対しワイヤ36の他端側には、ワイヤ36を掌部14に向けて常時付勢する付勢部材42が設けられている。付勢部材42は例えば引っ張りコイルばねや弦巻ばねであってよい。ワイヤ36は、駆動プーリ34によって引っ張られると、屈曲側張力Fbによって負荷体32を屈曲させる向きのトルクを従動プーリ35に伝達する。ワイヤ36は、駆動プーリ34からの屈曲側張力Fbが作用する方向と相反する方向に付勢部材42によって付勢されると、付勢力によって負荷体32を伸展させる向きのトルクを従動プーリ35に伝達する。
本実施形態では、ワイヤ36上の駆動プーリ34と従動プーリ35との間に、ワイヤ36の張力Fを取得するための張力センサ39、すなわちワイヤ36の屈曲側張力Fbを検出する張力センサ39が設けられている。張力センサ39は前腕リンク9(図2)に設けられる。張力センサ39と従動プーリ35との間のワイヤ36の部分は手根関節12(図2)を通過する。ワイヤ36の手根関節12を通過する部分には図示しないアウタチューブが設けられる。
モータ23と駆動プーリ34との間には、所定の減速比RRを有する減速機40が設けられる。ここでは、駆動プーリ34の半径と従動プーリ35の半径とは互いに同一とされており、駆動プーリ34と従動プーリ35とは同速で回転する。他の実施形態では、駆動プーリ34と従動プーリ35との半径比による減速機構が追加されてもよい。モータ23の出力軸は駆動プーリ34に直接結合(剛結)されている。動力伝達系33は、ワイヤ36を含むことにより、ワイヤ剛性の逆数である柔軟係数1/Ksprを有している。なお、柔軟係数は動力伝達系33のばね剛性Kspr(ばね定数)の逆数である。
図4は手部5のアクチュエータ30のシステム構成図である。図4に示すように、ロボット1に設けられた手部5のアクチュエータシステムは、第1制御装置13と、第2制御装置25と、複数のモータ23と、複数のモータ角センサ43と、複数の張力センサ39と、複数の関節角センサ44とを備えている。第2制御装置25は通信線45を介して第1制御装置13に接続されている。複数のモータ23、モータ角センサ43及び関節角センサ44は、通信線45を介して第2制御装置25に接続されている。
第1制御装置13は、CPU、ROM、RAM、I/O、アナログ回路等によって構成される電子制御装置である。第1制御装置13はCPUでプログラムに沿った演算処理を実行することで、各種の運動制御を実行する。第1制御装置13は1つのハードウェアとして構成されていてもよく、複数のハードウェアからなるユニットとして構成されていてもよい。第1制御装置13をロボット1の制御装置として機能させるための「運動制御プログラム」は、ROM等の記憶装置に予め格納されていてよい。或いは、このプログラムは、任意のタイミングでサーバからネットワークや放送を介して配信され、第1制御装置13の記憶装置に格納されてもよく、サーバに保存された状態でネットワークや放送を介して第1制御装置13に利用されてもよい。第1制御装置13は、運動制御プログラムに沿った演算処理を実行することで、各アクチュエータ30の負荷体32の運動目標値を設定し、運動目標値に基づいて負荷体32の目標トルクTtを設定する。
第2制御装置25は、プログラマブルロジックデバイス、モータドライバ、I/O、アナログ回路等によって構成される電子制御装置である。プログラマブルロジックデバイスは、プログラムに沿った演算処理を実行することでアクチュエータ30の動作制御を実行するものであり、例えばFPGA(field-programmable gate array)であってよい。第2制御装置25をアクチュエータ30の制御装置として機能させるための「動作制御プログラム」は、プログラマブルロジックデバイスに予め格納されている。第2制御装置25は、第1制御装置13から受け取る負荷体32の目標トルクTtの指令に従って、モータ23の出力を制御することによってアクチュエータ30を動作させる。すなわち、第2制御装置25は、第1制御装置13と協働して、負荷体32の与えられた目標位置を実現するようにモータ23の出力を制御する。
モータ角センサ43は、対応するモータ23の出力軸の角度であるモータ角度θM(位置)及びモータ角速度ωM(速度)を取得するためにモータ角度θMを検出する角度センサである。すなわち、モータ角センサ43は、駆動源の位置及び速度を取得するための駆動源の位置を検出する駆動位置センサである。モータ角センサ43は、例えばエンコーダであってよく、モータ角度θMに応じた信号を出力する。
張力センサ39は、ワイヤ36の屈曲側張力Fbを検出する(図5参照)。張力センサ39は、ワイヤ36の張力Fに応じた信号を出力する。
関節角センサ44は、モータ23により駆動される負荷体32の支持部材に対する角度位置、すなわち関節の関節角度θL(位置)及び関節角速度ωL(速度)を取得するために、関節角度θLを検出する角度センサである。すなわち、関節角センサ44は、負荷体32の位置及び速度を取得するために負荷体32の位置を検出する負荷位置センサである。関節角センサ44は、例えばエンコーダであってよく、関節角度θLに応じた信号を出力する。
上記のように第1制御装置13はロボット1の基体2に配置され、第2制御装置25及び複数のモータ23はロボット1の前腕リンク9に配置されている。そのため、第1制御装置13と第2制御装置25との間には肩関節10及び肘関節11が介在する。
図5は、手部5のアクチュエータ30の概略的な機能ブロック図である。図5に示すように、第1制御装置13は、関節目標値設定部51と、目標張力設定部52とを有している。関節目標値設定部51は、上記運動制御プログラムに沿った演算処理を実行することで、負荷体32の運動目標値を設定する。負荷体32の運動目標値には、目標関節角度θLt及び目標関節角速度ωLtが含まれる。負荷体32の運動目標値に関節トルク指令が含まれてもよい。
目標張力設定部52には、目標関節角度θLt及び目標関節角速度ωLtと、張力センサ39から取得された関節角度θL及び関節角速度ωLとが入力される。目標張力設定部52は、入力されるこれらの値の偏差に基づいて、負荷体32の目標力としての目標トルクTtを設定するインピーダンス制御を行う。このようにして目標張力設定部52は、少なくとも目標関節角度θLt(目標位置)と関節角度θL(負荷体32の位置)とに基づいて負荷体32に作用させるべき目標力を設定する。
第2制御装置25は、張力制御部53と、モータ制御部54と、電流制御部55と、センサデータ取得部56とを有している。センサデータ取得部56は微分器57を備えている。センサデータ取得部56は、張力センサ39(39A、39B)、モータ角センサ43及び関節角センサ44から出力される信号を取得して必要な処理を行ったうえで、これらの信号を必要とする各機能部へ分配する。微分器57は、モータ角センサ43から取得したモータ角度θMに応じた信号を微分することによってモータ角速度ωMを算出し、関節角センサ44から取得した関節角度θLに応じた信号を微分することによって関節角速度ωLを算出する。
センサデータ取得部56は、モータ角度θMをモータ制御部54に送信し、ワイヤ36の張力F(Fb)及び関節角速度ωLを張力制御部53に送信し、関節角度θL及び関節角速度ωLを第1制御装置13の目標張力設定部52に送信する。なお、アクチュエータ30では、屈曲側張力Fbが張力制御部53に送信される。
張力制御部53は、目標張力設定部52にて設定された目標トルクTt、センサデータ取得部56から送信される張力F(Fb)及び関節角速度ωLに基づいて、目標モータ角速度ωMtを設定する。
モータ制御部54は、張力制御部53にて設定された目標モータ角速度ωMt、及び、センサデータ取得部56から送信されるモータ角速度ωMに基づいて、モータ23に供給すべき目標電流Itを設定する。電流制御部55は、モータ制御部54にて設定された目標電流Itがモータ23に供給されるようにバッテリからモータ23へ流れる電流Iを制御する。このようにして第2制御装置25は、駆動源の出力であるモータ角速度ωMを制御する。以下、第1制御装置13と第2制御装置25とを合わせてコントローラと言う。
図6は、アクチュエータ30に係るコントローラの要部の機能ブロック図である。第1制御装置13の目標張力設定部52は、第1減算器61、第2減算器62、積分器63及び加算器64を備えている。第1減算器61は、関節目標値設定部51により設定された目標関節角度θLtから、関節角センサ44により検出された実測時の関節角度θLを減じることで、関節角度差ΔθLを算出する。第2減算器62は、関節目標値設定部51により設定された目標関節角速度ωLtから、関節角センサ44により検出された実測時の関節角速度ωLを減じることで、角速度差ΔωLを算出する。積分器63は関節角度差ΔθLを積分する。目標張力設定部52は、関節角度差ΔθLに比例ゲインKpを乗じて負荷体32のトルク値に換算し、関節角速度ωLに微分ゲインKdを乗じて負荷体32のトルク値に換算し、関節角度差ΔθLの積分値に積分ゲインKiを乗じて負荷体32のトルク値に換算する。加算器64は、これら3つの値を加算することで、負荷体32に作用させるべきトルク目標値TLtを算出する。
また目標張力設定部52は、駆動側トルク変換部65及び制限部66を備えている。駆動側トルク変換部65は、負荷体32に作用させるべきトルク目標値TLtを、駆動側のトルクに変換する。本実施形態では、負荷体32とワイヤ36との間に減速機構はなく、負荷体32のトルクと動力伝達系33のワイヤ36部分のトルクとが一致する。そのため、駆動側トルク変換部65はトルク目標値TLtを目標トルクTtとして制限部66に向けてそのまま出力する。制限部66は、目標トルクTtを、-C2<Tt<C1となるように制限する。C2はC1よりも小さな正の値であり、ワイヤ36が緩まない下限値である。ここで、C1は正の値であり、この動力伝達系33においてワイヤ36が破断しないトルクの上限値である。C1は、張力センサ39の計測精度に応じて、例えば1Nに設定されてよい。制限部66は、目標トルクTtに対して制限処理を実行した後、目標トルクTtを張力制御部53に向けて出力する。
目標張力設定部52は、これらの比例ゲインKp、微分ゲインKd及び積分ゲインKiを変更してアクチュエータ30の機械的なインピーダンス(ばね剛性Kspr)を調整することにより、アクチュエータ30の特性を変更することができる。具体的には、動力伝達系33にワイヤ36が含まれていても、これらのゲインを大きくすることにより、負荷体32の位置応答性を高めることができる。また、これらのゲインを小さくすることにより、手部5の負荷体32の柔軟性を高め、例えば衝撃吸収性能を高めることができる。
第2制御装置25の張力制御部53は、駆動側トルク変換部72、減算器73及び加算器74を備えている。駆動側トルク変換部72には、張力センサ39から取得された屈曲側張力Fb(ワイヤ36の実トルク張力Fa)が入力される。駆動側トルク変換部72は、屈曲側張力Fbに駆動プーリ34の半径を乗じることで動力伝達系33のワイヤ36部分の実トルクTaを算出する。減算器73は、目標張力設定部52により設定された目標トルクTtから実トルクTaを減じることで、負荷体32に付加すべきトルク偏差Terrを算出する。
駆動側トルク変換部72により算出される実トルク張力Faには、図3の付勢部材42による付勢力に対抗する力が含まれている。そこで、第1制御装置13の目標張力設定部52は付勢力補償部67を更に備えている。第1制御装置13の目標張力設定部52では、付勢力補償部67が、付勢部材42の伸び変位に相当する関節角度θLに、付勢部材42のばね定数に相当する補償係数を乗じることで、付勢部材42の付勢力への対抗力に相当する対抗トルクTcを算出する。目標張力設定部52は、対抗トルクTcにトルクフィードフォワードゲインKtffを乗じて負荷体32のトルク値に換算する。この値は加算器64に入力され、他の3つの値に加算される。これにより付勢部材42の付勢力が相殺される。
張力制御部53は、減算器73によって算出されたトルク偏差Terrに力制御ゲインKtpを乗じることにより、駆動源の付加速度指令(目標付加速度)である目標付加角速度ωaddを算出する。目標付加角速度ωaddは加算器74に入力される。ここで、力制御ゲインKtpは、動力伝達系33の柔軟係数(1/Kspr)に、位置指令である角度を速度指令である角速度に変換するための速度ゲインである比例ゲインKp2を乗じて得られる。以下に、力制御ゲインKtpについて詳細に説明する。
図7は(A)従来技術、(B)本発明のそれぞれの制御の説明図である。特許文献1に示される従来のパッシブコンプライアンス制御では、動力伝達系33に介在する柔軟要素が線形な柔軟特性を有している。そのため、図7(A)に示すように、トルク指令である目標トルクTtに柔軟要素の柔軟係数(1/Kspr)を乗じることで位置指令である角度指令値θtが算出されていた。また、角度指令値θtから、駆動側と負荷側との間の角度(角度差「θM-θL」)が減じられることで角度差Δθが算出されていた。そしてこの角度差Δθに、角度指令を角速度指令に変換するための比例ゲインKp2が乗じられることで角速度指令が算出されていた。
これに対し本実施形態では、動力伝達系33がワイヤ36を含むために、動力伝達系33の33特性が非線形になる。そのため張力制御部53では、駆動側と負荷側との間の角度(角度差「θM-θL」)に動力伝達系33のばね剛性Ksprを乗じることで得られる、駆動側と負荷側との間の実トルクTaが、張力センサ39の検出値から取得される。また、トルク指令である目標トルクTtから実トルクTaが減じられることでトルク偏差Terrが算出される。そして、トルク偏差Terrに動力伝達系33の柔軟係数(1/Kspr)が乗じられることで従来の角度差Δθに相当する値が算出され、この値に比例ゲインKp2が乗じられることで角速度指令が算出される。このように張力制御部53は、等価交換によって位置ではなく力(実トルクTa)を用いて同様の処理を行うことにより、ヒステリシスを有する動力伝達系33のばね特性をモデル化しなくても、速度指令(目標角速度ωt)を算出できる。
図6に戻って説明を続ける。張力制御部53は駆動側速度変換部75を更に備える。駆動側速度変換部75は、関節角センサ44により取得された関節角速度ωLを駆動側の角速度に変換する。具体的には、駆動側速度変換部75は、関節角速度ωLに減速機40の減速比RRを乗じることで、関節角速度ωLに対応する従動モータ角速度ωfを算出する。ここで、従動モータ角速度ωfは、モータ23の駆動に従動して回動した負荷体32の関節角速度ωLをモータ角速度ωMに換算して得た従動駆動源速度に相当する角速度である。
張力制御部53は、従動モータ角速度ωfに制御ゲインKvffを乗じて従動モータ角速度ωfを適正化する。制御ゲインKvffは通常は1に設定されており、本実施形態でも1である。従動モータ角速度ωfは加算器74にフィードフォワード項として入力される。加算器74は、目標付加角速度ωaddに従動モータ角速度ωfを加算することで、駆動源の目標速度に相当する目標モータ角速度ωMtを算出する。目標モータ角速度ωMtはモータ制御部54に供給され、上記のようにモータ制御部54はモータ角速度ωMに基づき目標電流Itを設定する角速度制御を実行する。
このように第2制御装置25及びこれによる制御方法は、ワイヤ36の実トルク張力Faに対応する実トルクTaと目標トルクTtとの偏差であるトルク偏差Terrに、力制御ゲインKtpを乗じて、駆動源の目標角速度ωtである目標付加角速度ωaddを設定する。そして、第2制御装置25が目標付加角速度ωaddに基づいて駆動源の出力であるモータ角速度ωMを制御することで、負荷体32にコンプライアンスを与えるパッシブコンプライアンス制御を従来と同様に実現することができる。
ここで、上記のように力制御ゲインKtpは、動力伝達系33の柔軟係数(1/Kspr)と速度ゲインとしての比例ゲインKp2との乗算値である。つまり、力制御ゲインKtpが柔軟係数(1/Kspr)を含むことで、トルク偏差Terrに柔軟係数(1/Kspr)を乗じた値が、ワイヤ36の実変位とワイヤ36の目標変位との変位差に対応する、駆動側と負荷側との間の角度(図7の角度差Δθ)として算出される。そしてこのワイヤ36の変位差(図7の角度差Δθ)に比例ゲインKp2が乗じられることで、駆動源の目標付加角速度ωaddが算出される。
また第2制御装置25は、関節角センサ44から取得される負荷体32の関節角速度ωLを換算して得た従動モータ角速度ωfと目標付加角速度ωaddとに基づいて目標モータ角速度ωMtを設定する。そして第2制御装置25は、目標モータ角速度ωMtを実現するようにモータ角速度ωMを制御する。そのため、第2制御装置25は、目標トルクTtとワイヤ36の実トルク張力Faに対応する実トルクTaとに基づいて、目標モータ角速度ωMtを制御媒体としてモータ角速度ωMを制御することができる。
また図3に示すようにアクチュエータ30では、動力伝達系33が、ワイヤ36の張力Fが作用する方向と相反する方向にワイヤ36を常時付勢する線形特性を有する付勢部材42を含む。そして、図6に示すように第1制御装置13は、付勢部材42による付勢力に相当する対抗トルクTcを加算して、目標トルクTtを設定する。
特許文献1に示される従来のパッシブコンプライアンス制御は、動力伝達系33が金属ばねのような柔軟要素を介して連続し、正負両方向に対して力を伝達できることを前提としていた。そのため、ワイヤ36が張力Fを一方のみに伝達するように配置され、他方への力が付勢部材42によって与えられる場合には、従来の制御を利用することができなかった。
本実施形態では、ワイヤ36が張力Fを一方のみに伝達するように配置され、他方への力が線形特性を有する付勢部材42によって与えられても、コントローラが、目標トルクTtを負荷体32に作用させるようにモータ角速度ωMを制御することができる。また、負荷体32を両方向に駆動し得るようにワイヤ36を配置する必要がないため、アクチュエータ30の大型化が抑制される。
図8は実施形態に係る制御による応答性の効果を示すボード線図である。グラフ中の一点鎖線は、第1制御装置13の目標張力設定部52が、関節角度差ΔθLの積分値に積分ゲインKiを乗じて換算した負荷体32のトルク値を加算器64に加算しない場合、すなわちPD制御を行った場合の周波数特性を示す。実線は、実施形態に係る制御の周波数特性を示す。目標張力設定部52が関節角度θLを用いたPD制御を行った場合には、一点鎖線で示すように、0.5~1Hzの周波数領域において共振点が発生し、ゲインが高くなる一方で位相遅れが生じ、応答性が低下する。これに対し、本実施形態では、この周波数領域における共振が抑えられ、応答性が向上する。
図9はアクチュエータ30の応答を示すタイムチャートである。縦軸は関節角度θLを示している。チャート中の破線は関節角度θLの指令値(目標関節角度θLt)を示し、実線は本発明の実測値(関節角度θL)を示し、一点鎖線は比較例の実測値を示している。比較例は、目標張力設定部52(図6)が、二次側の関節角速度ωLを駆動側速度変換部75にて一次側(駆動側)の従動モータ角速度ωfに換算し、この値に制御ゲインKvffを乗じた値をフィードフォワード項として加算器74にて加算しない場合を示す。
図9に示すように、比較例では、関節角度θLの指令値が小さく変化したとき(伸展側への回動指令のとき)、0°に向けた関節角度θLの戻りが遅い。これに対し本発明では、目標張力設定部52が関節角速度ωLに基づく従動モータ角速度ωfに関するフィードフォワード項を加算して目標モータ角速度ωMtを演算することにより、関節角度θLが屈曲側への指令のときと同様に指令値に追従して変化しており、0°に向けた関節角度θLの戻りが早い。つまり、ワイヤ36が張力Fを一方のみに伝達するように配置され、他方への力が付勢部材42によって与えられても、第2制御装置25が関節角センサ44から取得される負荷体32の関節角速度ωLを換算して得た従動モータ角速度ωfと目標付加角速度ωaddとに基づいて目標モータ角速度ωMtを設定することにより、負荷体32の応答性が向上する。
図10は実施形態に係る制御システムによる応答を示すタイムチャートである。縦軸は関節角度θLを示している。チャート中の破線は関節角度θLの指令値(目標関節角度θLt)を示し、実線は本発明の実測値(関節角度θL)を示し、一点鎖線は比較例の実測値を示している。
比較例は、従来システムの構成によるものである。ここで、本発明との相違を明確にするために従来システムの構成について説明する。従来システムでは、第2制御装置25はモータ23の出力を制御するモータドライバとしての機能のみを有していた。つまり、モータ23の出力であるモータ角速度ωMを制御する張力制御部53は第1制御装置13に設けられ、第1制御装置13が負荷体32の関節角度θLを関節角センサ44から得て、関節角度θLから関節角速度ωLを算出して張力制御部53に提供していた。
これに対し本発明では、図5に示すように、モータ角速度ωMを制御するモータドライバをなす第2制御装置25に、張力制御部53が一体に設けられている。第2制御装置25の張力制御部53は、第1制御装置13を経由することなく、負荷体32の位置を表す関節角度θLを関節角センサ44から直接得て、関節角度θLに基づいて負荷体32の関節角速度ωLを算出する。そして、第2制御装置25がワイヤ36の張力Fに対応する実トルクTaと負荷体32の関節角速度ωLとに基づいてモータ23の出力である関節角速度ωLを制御する。これにより、第2制御装置25が負荷体32の関節角速度ωLを短時間で算出してモータ角速度ωMを目標モータ角速度ωMtに近付けることができ、負荷体32の動作が滑らかになる。
また図6に示すように、第2制御装置25では、張力制御部53が、目標トルクTtとワイヤ36の実トルク張力Faに相当する動力伝達系33のワイヤ36部分の実トルクTaとに基づいて、モータ23の目標付加角速度ωaddを設定する。張力制御部53は、目標付加角速度ωaddと、負荷体32の関節角速度ωLを換算して得た従動モータ角速度ωfとに基づいて、目標モータ角速度ωMtを設定する。そしてモータ制御部54が、目標モータ角速度ωMtに基づいてモータ23を駆動する。このように第2制御装置25は、第1制御装置13によって設定された目標トルクTtと実トルクTaとに基づいて、目標モータ角速度ωMtを制御媒体としてモータ23の出力を制御する。これにより、動力伝達系33が柔軟要素であるワイヤ36を含んでいても、負荷体32にコンプライアンスを与える従来のようなパッシブコンプライアンス制御をコントローラが実現できる。
また図2に示すアーム31において、負荷体32を支持するハンド部をなす掌部14は、アーム基部をなす前腕リンク9に手根関節12を介して連結される。そのため、図3に示すワイヤ36は、手根関節12を通過するように設けられる。一方、上記のように第2制御装置25及び張力センサ39(39A、39B)は共に前腕リンク9に設けられていることから、第2制御装置25による張力制御処理の時間が短縮される。これにより、負荷体32の動きが滑らかになる。また、装置やセンサの実装による掌部14の大型化が回避される。
言い換えれば、張力センサ39(39A、39B)が手根関節12に対してモータ23の側に配置される。これにより、手根関節12に対して負荷体32の側に張力センサ39(39A、39B)を設ける必要がないため、アクチュエータ30の負荷体32側の部分の大型化を抑制することができる。
本実施形態のアクチュエータ30は、図3に示すように片方向駆動の構成を有する。すなわち、負荷体32が、ワイヤ36を介した駆動源の動力によって一方向に駆動され、ワイヤ36を動力伝達方向と相反する戻し方向に付勢する付勢部材42の付勢力によって戻し方向に駆動される。そのため、付勢部材42による戻し動作の際に、ワイヤ36に緩みが生じると(すなわち、ワイヤ36の張力Fが0N未満になると)、ワイヤ36の伝達特性が大きく変化する。これにより、負荷体32が発振し易くなり、負荷体32の動作が不安定になる。
そのため、図6に示すように、第2制御装置25の張力制御部53は、ワイヤ緩み検出部77及び出力修正部78を備えている。
ワイヤ緩み検出部77は、関節角センサ44によって検出された負荷体32の位置である関節角度θLと、モータ角センサ43により検出された駆動源の位置であるモータ角度θMとに基づいて、ワイヤ36の緩み及び緩み量θlを検出する。具体的には、ワイヤ緩み検出部77は、関節角度θLを減速機40の減速比RRを乗じることでモータ23の推定角度θestに換算する。ワイヤ緩み検出部77は、下式(1)に示すように、モータ23の推定角度θestからモータ23の実角度であるモータ角度θMを減じることによって差分角θdifを取得する。
θdif=θest-θM ・・・(1)
差分角θdifが所定の第1閾値θth1よりも大きいときに、ワイヤ36に緩みありと判定される。第1閾値θth1は、例えば1°であってよい。下式(2)に示すように、差分角θdifから第1閾値θth1を減じた値(θdif-θth1)は、ワイヤ36の緩み量θlを表す。
θl=θdif-θth1 ・・・(2)
出力修正部78は、ワイヤ36の緩み及び緩み量θlに応じ、モータ制御部54の目標出力である目標モータ角速度ωMtを修正する。具体的には、出力修正部78は、図11に示すグラフを用い、ワイヤ36の緩み量θlに基づいて、張力制御ゲインRcを取得する。張力制御ゲインRcは、モータ23の出力制御(張力制御)に用いる目標モータ角速度ωMtを修正するための修正ゲインである。張力制御ゲインRcは、差分角θdifが第1閾値θth1以下で範囲では1に設定される。第1閾値θth1は、例えば、0°であってよい。差分角θdifが第1閾値θth1を超える範囲では、張力制御ゲインRcは、差分角θdifが大きいほど小さくなるように、すなわちワイヤ36の緩み量θlが大きいほど小さくなるように設定されている。図示例では、張力制御ゲインRcは、第1閾値θth1から第2閾値θth2にかけて線形的に減少し、第2閾値θth2にて0に設定されている。第2閾値θth2は例えば10°であってよい。張力制御ゲインRcは、差分角θdifが第2閾値θth2である10°以上である範囲では、張力制御ゲインRcは0に設定される。出力修正部78は、目標モータ角速度ωMtに張力制御ゲインRcを乗じることで目標モータ角速度ωMtを修正する。
以下により詳細に説明する。出力修正部78は、負荷体32に付加すべきトルク偏差Terrに力制御ゲインKtpを乗じた値に、制御ゲインKvffの乗算によって適正化された従動モータ角速度ωfを加算して得た目標モータ角速度ωMtの値に応じ、この値を修正する。目標モータ角速度ωMtの値は、モータ23の駆動方向を示している。すなわち、目標モータ角速度ωMtが0よりも小さい場合、張力制御部53は負荷体32を付勢部材42による戻し方向に駆動させることを意味する。そのような戻し動作を行う際に、ワイヤ36に緩みが生じると(すなわち、ワイヤ36の張力Fが0N未満になると)、ワイヤ36の伝達特性が大きく変化する。これにより、負荷体32が発振し易くなり、負荷体32の動作が不安定になる。
そこで、出力修正部78は、モータ23の目標出力を示す目標モータ角速度ωMtが0よりも小さいときには、目標モータ角速度ωMtにワイヤ36の緩み量θlに基づく張力制御ゲインRcを乗じることで目標モータ角速度ωMtを修正する。目標モータ角速度ωMtは、張力制御ゲインRcの乗算により、絶対値が小さくなるように修正される、すなわち緩みを解消させる側に修正される。このように目標モータ角速度ωMtが負荷体32を戻し方向に作動させる値であるときにワイヤ36の緩みが検出された場合、第2制御装置25は張力制御ゲインRcを、ワイヤ36の緩み量θlに基づいて、緩みを解消させる側に修正する。これにより、負荷体32の動作が安定する。また、第2制御装置25は、負荷体32の目標関節角度θLtを実現するようにモータ23の出力であるモータ角速度ωMを制御し、負荷体32にコンプライアンスを与えるパッシブコンプライアンス制御を行う。
一方、第2制御装置25のワイヤ緩み検出部77によるワイヤ36の緩みの検出精度が低い場合、モータ23の目標モータ角速度ωMtが負荷体32を駆動方向に作動させる値であるときにもワイヤ36の緩みが検出されることがある。ただし、この場合に負荷体32が発振する可能性は低い。そこで第2制御装置25は、目標モータ角速度ωMtが0以上であるとき、すなわち、モータ23の出力が負荷体32を駆動方向に作動させる値であるときは、ワイヤ36の緩みが検出されても張力制御ゲインRcを修正しない。これにより第2制御装置25は、負荷体32の動作を安定させつつ、ワイヤ36が緩まない下限値であるC2を小さな値に設定することによって戻し方向の応答性の低下を抑制することができる。
次に、第2制御装置25が行う出力修正による効果について、具体例を示して説明する。図12は、実施形態に係る出力修正を行わない比較例の応答を示すタイムチャートである。図13は、実施形態に係る出力修正を行った例の応答を示すタイムチャートである。
図12(A)に示すように、時点t1にて負荷体32の目標関節角度θLtが正の値から減少すると(戻し方向に作動すると)、(B)の負荷体32の目標トルクTtがほぼ0になる。(D)の張力センサ39によって検出されるワイヤ36の張力Fもほぼ0Nになる。しかしながら、第2制御装置25が出力修正を行わない場合、(D)のワイヤ36の張力Fが0になった時点t2の後、関節角センサ44によって検出される実際の負荷体32の関節角度θLは、目標値に追従していない。
一方、図13(A)に示すように、実際の負荷体32の関節角度θLは図12に比べて小さくなる。時刻t12にて(F)の差分角θdif(モータ23の推定角度θestから実角度であるモータ角度θMを減じた値)が第1閾値θth1を超えると、(E)の張力制御ゲインRcが1よりも小さくなる。時点t13にて(F)の差分角θdifが第2閾値θth2以上になると、張力制御ゲインRcは0になる。張力制御ゲインRcの減少に伴い、(B)の目標トルクTtが徐々に小さくなり、(A)の実際の負荷体32の関節角度θLは、負荷体32を発振させることなく、0になる。このように時点t12から時点t13の間に、検出されたワイヤ36の緩み量θlに応じて、ワイヤ36が緩む方向への駆動を弱めることで、負荷体32の関節角度θLの目標値に対する追従性向上が実現される。また、ワイヤ36が緩む方向への挙動を抑える効果を利用して、ワイヤ36が緩まない下限値であるC2の負値を目標トルクTtの下限値に設定することで負荷体32の発振を抑制しながらアクチュエータ30の応答性を高めることが可能である。
以上で具体的実施形態の説明を終えるが、本発明は上記実施形態に限定されることなく幅広く変形実施することができる。例えば、上記実施形態では、一例としてロボット1の手部5のアクチュエータ30に適用して本発明の説明を行ったが、本発明は手部5以外の部分や、ヒューマノイドロボット以外のロボット1にも広く適用することができる。
他の実施形態ではアクチュエータ30が、図14に示すように構成されてもよい。このアクチュエータ30では、動力伝達系33のワイヤ36上の適所にアイドラプーリ37及びテンショナ38が設けられている。図示例では、ワイヤ36の屈曲側張力Fbを伝達する部分に、1つアイドラプーリ37及び1つのテンショナ38が設けられている。このようにアイドラプーリ37やテンショナ38が動力伝達系33に追加されてもよい。
また、上記実施形態では、第1制御装置13がロボット1の基体2に配置されているが、第1制御装置13がロボット1の前腕リンク9に配置されてもよく、各装置の配置はこれに限られない。この他、各部材や部位の具体的構成や配置、数量、角度、手順など、本発明の趣旨を逸脱しない範囲であれば適宜変更することができる。一方、上記実施形態に示した各構成要素は必ずしも全てが必須ではなく、適宜選択することができる。