(57)【要約】【課題】  簡単な方法によりロボット歩行動作中に膝関節のアクチュエータの駆動回路が過負荷状態となることを回避するよう歩容データを作成する。【解決手段】  ロボットの膝関節のアクチュエータ駆動回路が一定の値で継続的に出力可能な許容トルク指令値と、一歩行周期中にその関節が出力するトルクの平均値を比較する。平均トルク指令値が許容トルク指令値以下となるよう歩容データの補正量を設定する。このとき、一方の脚が離床する時点において、少なくともロボット重心位置をロボット進行方向に移動させるように歩容データを補正する。歩容データを補正する際に参照するパラメータを一方の脚の離床時と、ロボット重心位置のロボット進行方向の位置とに絞り込む。これにより見た目に円滑な歩行となるよう作成された歩容データを、簡単な方法でアクチュエータ駆動回路が過負荷とならない歩容データに修正することができる。【選択図】  図３
2007007795.tif 000002
【特許請求の範囲】
【請求項１】
脚式ロボットの歩行に用いる歩容データを修正する方法であり、
ロボット代表点の目標位置の時系列データを含む歩容データを、ロボットの各関節の目標関節角、目標関節角速度又は目標関節角加速度のいずれかの関節目標値に変換する工程と、
各関節を関節目標値に制御することによってロボットを歩行させた際に、ロボットの膝関節のアクチュエータの駆動回路がそのアクチュエータに対して出力するトルク指令値を推定または検出する工程と、
トルク指令値の、一歩行周期における平均トルク指令値を算出する工程と、
その一歩行周期における、一方の脚が接地脚から遊脚に切り替わる離床時点を特定する工程と、
平均トルク指令値が予め設定されている許容トルク指令値を超える場合に、少なくとも前記離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように歩容データを補正する工程と、
を含むことを特徴とする歩容データ修正方法。
【請求項２】
前記補正工程では、ロボット体幹目標位置を、ロボット進行方向へ所定量だけ移動させた体幹目標位置に補正することを特徴とする請求項１に記載の歩容データ修正方法。
【請求項３】
前記補正工程では、ロボット体幹目標姿勢を、ロボット進行方向に所定角だけ前傾させた体幹目標姿勢に補正することを特徴とする請求項１に記載の歩容データ修正方法。
【請求項４】
前記補正工程では、前記特定された離床時点を遅らせる側に補正することによって、一方の脚が接地脚から遊脚に切り替わる離床時点におけるロボット重心位置をロボット進行方向に所定量だけ移動させることを特徴とする請求項１に記載の歩容データ修正方法。
【請求項５】
前記補正工程では、一歩行周期の歩容データに対して設定した補正量を、他の歩行周期の歩容データに対しても設定することを特徴とする請求項１から４のいずれか１項に記載の歩容データ修正方法。
【請求項６】
前記一方の脚が接地脚から遊脚へと切り替わる離床時点に先立つ所定期間内の歩容データを、補正量が漸増するように補正する工程と、
前記一方の脚が接地脚から遊脚へと切り替わる離床時点に続く所定期間内の歩容データを、補正量が漸減するように補正する工程と、
を含むことを特徴とする請求項１から５のいずれか１項に記載の歩容データ修正方法。
【請求項７】
補正された歩容データを、ロボットの各関節の補正後の関節目標値に変換する工程と、
補正後の関節目標値に従ってロボットを歩行させた際に、前記駆動回路が出力する、歩容データ補正後のトルク指令値を推定または検出する工程と、
補正後トルク指令値の一歩行周期における平均補正後トルク指令値を算出する工程と、
補正された歩容データに従ってロボットを歩行させた際の、一歩行周期における一方の脚が接地脚から遊脚に切り替わる、補正後の離床時点を特定する工程と、
平均補正後トルク指令値が許容トルク指令値を超える場合に、少なくとも前記補正後の離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように補正された歩容データをさらに補正する工程と、
を含むことを特徴とする請求項１から６のいずれか１項に記載の歩容データ修正方法。
【請求項８】
前記許容トルク指令値は、前記歩容データによるロボット歩行時間中に、前記駆動回路が継続的に指令可能な値であることを特徴とする請求項１から７のいずれか１項に記載の歩容データ修正方法。
【請求項９】
前記補正工程では、補正前の歩容データを補正後の歩容データに置換することを特徴とする請求項１から８のいずれかの歩容データ修正方法。
【請求項１０】
前記補正工程では、補正前の歩容データに補正量を対応付けて記憶することを特徴とする請求項１から８のいずれかの歩容データ修正方法。
【請求項１１】
ロボット代表点の目標位置の時系列データを含む歩容データを、ロボットの各関節の目標関節角、目標関節角速度又は目標関節角加速度のいずれかの関節目標値に変換する手段と、
各関節を関節目標値に制御することによってロボットを歩行させた際に、ロボットの膝関節のアクチュエータの駆動回路がそのアクチュエータに対して出力するトルク指令値を推定または検出する手段と、
トルク指令値の一歩行周期における平均トルク指令値を算出する手段と、
その一歩行周期における、一方の脚が接地脚から遊脚に切り替わる離床時点を特定する手段と、
平均トルク指令値が予め設定されている許容トルク指令値を超える場合に、少なくとも前記離床におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように歩容データを補正する手段と、
を有することを特徴とする歩行ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、体幹リンク（胴部）に複数本（典型的には２本）の脚リンク群が揺動可能に連結されている機械（脚式ロボット）の歩行中に、ロボット脚部の膝関節を関節目標値に追従するよう制御するアクチュエータ及び／又はアクチュエータの駆動回路が過負荷とならないように歩容データを修正する方法と歩行ロボットに関する。
【背景技術】
【０００２】
体幹リンクと脚リンク群の相対的姿勢を変化させることによって歩行する脚式ロボット（以下単にロボットと称す）が開発されている。このロボットは歩容データを用いて歩行する。歩容データは、ロボットの各代表点の目標位置の時系列データを含む。
代表点目標位置の時系列データを含む歩容データは、ロボットの各関節の目標関節角、目標関節角速度又は目標関節角加速度のいずれかの関節目標値に変換される。変換された関節目標値に従って、ロボットの各関節に備えられたアクチュエータの駆動回路がそのアクチュエータに対してトルク指令値を出力する。各関節のアクチュエータは、駆動回路からのトルク指令値に従って駆動され、各関節は関節目標値に追従するよう制御される。その結果、体幹リンクに対する脚リンク群の相対的姿勢が変化し、ロボットは歩行する。
ロボット歩行中、各関節のアクチュエータの駆動回路が出力するトルク指令値が大きいと、歩行中にアクチュエータ及び／又はアクチュエータの駆動回路（以下、アクチュエータ等と称す）に負荷が蓄積されていく。負荷とはアクチュエータ等の発熱量である。負荷が蓄積される結果、アクチュエータ等が負荷の許容量を超えてしまう。従ってロボット歩行中の負荷、即ちアクチュエータの駆動回路が出力するトルク指令値は小さ方が望ましい。
特許文献１には、各関節のアクチュエータの負荷を低減する技術が提案されている。この技術は、ロボット各関節のアクチュエータの動作範囲、動作角速度、動作角加速度、負荷の少なくともいずれかの、任意の期間における絶対値の最大値または実効値が所定値以下となるように歩容データを作成する。そのような歩容データを作成するために特許文献１の技術は、まずＺＭＰの軌道を最初に決定する。その後、このＺＭＰの軌道を実現するロボット重心位置の鉛直方向の運動パターンを、各関節のアクチュエータの負荷が低減されるように設定する。さらにその後、ロボット重心位置の鉛直方向の運動パターンに沿うように脚部各関節の目標関節角の軌道および、重心の水平方向の軌道を決定する。こうして決定された脚部の各関節の目標関節角の軌道からロボット脚部代表点の目標位置の時系列データ、すなわち歩容データを決定する。
【０００３】
【特許文献１】特開平５−３０５５８２号公報（請求項１、段落００２２、００２８および図３）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術によると、各関節のアクチュエータの負荷を低減する歩容データを作成することができる。しかしそのために、ロボット重心位置の鉛直方向の運動パターン、脚各関節角の目標関節角の軌道および重心の水平方向の軌道を決定するといった複雑な計算が必要となる。特に脚式ロボットの脚は多数の関節を有するため、それら多数の関節の軌道を決定するには極めて多大な計算量となる。人間型の脚式ロボットの場合、通常片脚当たり６個の関節を有し、両脚で１２個の関節を有する。しかも夫々の関節の動作は他の関節の負荷に影響を与える。１２個の関節の目標関節角の軌道が相互に影響し合う問題の解を得るため、その計算プログラム自体も複雑となる。
関節のアクチュエータ等の負荷を低減する歩容データを、できるだけ簡単に作成する方法が望まれている。そのためには見た目に円滑な歩行となるよう作成された歩容データを、各関節のアクチュエータの負荷を低減するのに適切な歩容データへ修正することが考えられる。そうすれば見た目の動作として適切でありかつ関節のアクチュエータ等の負荷を低減する歩容データを作成することができる。
しかし見た目に円滑な歩行となるよう作成された歩容データを如何に簡単に各関節のアクチュエータの負荷を低減するのに適切な歩容データへ修正することは容易ではない。作成した歩容データを、できるだけ簡単な方法で関節のアクチュエータ等の負荷が低減された歩容データに修正する方法が望まれる。
【課題を解決するための手段】
【０００５】
本発明は、ロボット歩行動作において膝関節のアクチュエータ等が、他の関節のアクチュエータ等よりも過負荷となりやすい、という事実に着目する。ロボットの片脚のみが接地脚なる際に、接地脚の膝関節のアクチュエータ等にはロボットの自重を支持するために高トルクが要求されるからである。そこで本発明では膝関節のアクチュエータ等が過負荷となることを防止することを目的として、予め作成された歩容データを補正する技術を提供する。膝関節のみに注目することで、予め作成された歩容データを、負荷を低減した歩容データに簡単なロジックで修正することができる。
【０００６】
本発明は、作成された歩容データに対してできるだけ簡単なロジックでしかも小さい補正量で膝関節のアクチュエータ等の負荷を軽減する。歩容データには、見た目に円滑な歩行となるようにロボット各代表点の目標位置の経時的データを含む。見た目に円滑な歩行となることを優先させるので、この歩容データにはアクチュエータ等の負荷については厳密には考慮されていない。
ここでアクチュエータ等の負荷を低減するよう歩容データを補正する際、歩容データ全体の厳密な最適化を追求して歩行動作中の慣性力を考慮すると、「時間」の要素が絡んでくる。そのため、膝関節のアクチュエータが要求されるトルクを低減するためには、どの変数を、いつ、どのように補正したらよいかという複雑な問題となってしまう。特許文献１の方法は慣性力を考慮するため、厳密ではあるが、そのため計算の簡便性を犠牲にしている。本方法では、この慣性力を無視することによって、問題を静的なものとして扱う。本発明は、問題の簡略化を優先する。特許文献１の技術思想とは相違する。
【０００７】
本発明では、膝関節のアクチュエータの駆動回路が出力するトルク指令値の、ロボットの一歩行周期における平均トルク指令値を求める。そしてこの平均トルク指令値が許容トルク指令値を超える場合に、以下に述べるように歩容データを補正する。許容トルク指令値とは予め設定されている値であり、平均トルク指令値が許容トルク指令値を超える場合には、ロボットが連続して歩行する間にアクチュエータ等が過負荷となってしまう値である。また一歩行周期とは、ロボットの両脚が所定の相対位置関係となった状態から再び同じ相対位置関係となるまでの期間である。ロボットはこの歩行周期を繰り返すことによって連続歩行する。そこで一歩行周期について膝関節のアクチュエータ等の負荷を低減する補正量が設定できれば、他の歩行周期についても同じ補正量を設定することで、連続歩行しても膝関節のアクチュエータ等が過負荷となることはない。
【０００８】
本発明では、一方の脚が接地脚から遊脚に切り替わる時点（以下、離床時点と称す）を特定する。ロボット歩行中、この離床時点において、接地脚となっている他方の脚の膝関節とロボット重心との水平面内距離は最大となるため、他方の脚の膝関節には大きなモーメントが作用する。このとき接地脚の膝関節に備えられたアクチュエータには、このモーメントに抗するだけのトルクが要求される。一方の脚の離床時点における、接地脚の膝関節のアクチュエータの出力トルクが、そのアクチュエータ等が過負荷となるか否かの重要な要因である。本発明ではこの特定した離床時点における、歩容データ内の所定の代表点の目標位置を次に述べるように補正する。本発明では、一歩行周期全体にわたりロボットの重心位置や関節角の軌道は考慮する必要がない。逆に補正する歩容データ内の時点を特定することで、その後の歩容データの補正を簡単化することができる。
【０００９】
本発明では、離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように、歩容データ内の所定の代表点位置の目標位置を補正する。ロボットの重心位置をロボット進行方向へ移動させることによって、接地脚の膝関節とロボット重心との水平面内距離を縮小する。これにより離床時点における接地脚の膝関節のアクチュエータが出力すべきトルクを低減する。本発明は、ロボットの重心のロボットの進行方向位置という、極めてシンプルな１次元の指標を採用することで、見た目に円滑な歩行となるよう作成された歩容データを、膝関節アクチュエータ等の負荷を低減する歩容データへ少ない計算量で修正することができる。
【００１０】
本発明の技術思想は、見た目に円滑な歩行となるよう作成された歩容データを、過負荷となりやすい脚の膝関節のアクチュエータ等に特有の条件に基づいてその関節の負荷を低減する歩容データに修正することにある。即ち、脚の離床時点に関連付けてロボットの重心位置をロボット進行方向前方となるよう歩容データを補正する。また膝関節のアクチュエータ等の負荷を低減するという問題を静的な問題として扱い、歩容データを補正する際の指標を、脚の離床時点とそのときのロボットの重心の前後方向位置との２つに絞り込む。これにより負荷を低減した歩容データに修正するための計算量を低減する。
本発明は、作成された歩容データに対して、できるだけ簡単なロジックでしかも小さい補正量で膝関節のアクチュエータ等の負荷を軽減した歩容データへ修正する。その際に脚部膝関節のアクチュエータ等の負荷を低減するための指標を、離床時点と、そのときのロボットの重心位置のロボット進行方向位置との２つに絞り込むことで、極めて簡単な方法で作成された歩容データを負荷を低減した歩容データに修正することに成功した。
【００１１】
本発明は、脚式ロボットの歩行に用いる歩容データを修正する方法として具現化できる。この方法は、ロボット代表点の目標位置の時系列データを含む歩容データを、ロボットの各関節の目標関節角、目標関節角速度又は目標関節角加速度のいずれかの関節目標値に変換する工程と、関節目標値に従ってロボットの各関節に備えられたアクチュエータを制御することによってロボットを歩行させた際に、ロボットの膝関節用アクチュエータの駆動回路がその膝関節用アクチュエータに対して出力するトルク指令値を推定または検出する工程を含む。
ロボットの制御には位置（姿勢）制御とコンプライアンス制御とがある。位置制御の場合、ロボット代表点の目標位置はロボットの各関節の目標関節角に変換される。従って関節目標値は関節目標角となる。ロボットの関節角を目標関節角に一致するよう制御することでロボットの位置（姿勢）を目標位置に追従させる。このとき代表点の動作を円滑にするために同時に関節目標値として目標関節角速度を指定することもある。一方、コンプライアンス制御の場合、歩容データに従って動作しているロボットが受ける外力に応じてロボットの運動を変化させる。外力に応じてロボットの各代表点の加速度が決まる。従って各関節の関節目標値は関節角加速度となる。いずれの場合でも関節に備えられたアクチュエータの駆動回路が出力するのは最終的にはトルク指令値となる。
トルク指令値を推定するには、ロボットの動特性、アクチュエータ等の特性をモデル化したコンピュータシミュレーション上でロボットを歩行させて推定する、ロボットを実際に歩行させた際にオブザーバ回路により推定する、などの方法を用いることができる。トルク指令値を検出するには、トルクセンサを設置する、アクチュエータ駆動回路のアクチュエータへの電流指令値を検出し、これにトルク定数を乗じて検出する、などの方法を用いることができる。
この方法はまた、トルク指令値の、一歩行周期における平均トルク指令値を算出する工程と、その一歩行周期における、一方の脚が接地脚から遊脚に切り替わる離床時点を特定する工程と、平均トルク指令値が予め設定されている許容トルク指令値を超える場合に、少なくともその離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように歩容データを補正する工程を含む。
ロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるための歩容データの補正としては、頭部リンク、体幹リンクや手先リンクなどに設定された代表点の目標位置をロボット進行方向へ所定量だけずらすことで実現できる。また頭部リンクや体幹リンクの目標姿勢を前傾させることによっても実現することができる。
なお、離床時点を特定する方法は、足平裏面に接触センサを設けて直接検出する、足平に力センサを設けてその出力値の変化から検出する、歩容データ上の足先目標位置から算出される足先の最下点の座標が床（歩行面）の平面を表す座標群の中にある時点から、その座標群より上方に位置する時点に変化する時点として特定する、コンピュータ上でロボットの歩行をシミュレーションさせて離床時点を特定する、などの方法を用いることができる。
【００１２】
この方法では、一方の脚の離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように歩容データを補正する。このように見た目に円滑な歩行となるよう作成された歩容データを、簡単なロジックで膝関節のアクチュエータ等の負荷を低減した歩容データへ修正することが可能となる。
【００１３】
歩容データを補正する工程（補正工程）では、ロボット体幹目標位置を、ロボット進行方向へ所定量だけ移動させた体幹目標位置に補正する、あるいはロボット体幹目標姿勢を、ロボット進行方向に所定角だけ前傾させた体幹目標姿勢に補正することが好ましい。
【００１４】
体幹リンクはいわば人間の胴体に相当するリンクであり、その質量も他のリンク部品に対して大きい。従って体幹リンクをロボット進行方向へ所定量だけ移動させるように歩容データを補正することでロボット全体の重心位置を効果的にロボット進行方向へ移動させることができる。また体幹リンクには頭部リンクや両腕のリンク群が連結されている。これらのリンク（群）の目標位置は体幹リンクに対する相対位置で定義される。従って体幹リンクの目標位置をロボット進行方向へ移動させると頭部リンクや両腕リンク群の脚部足先リンクに対する位置もロボット進行方向へ移動する。従ってこれらのリンク（群）の移動によってもロボットの重心位置をロボット進行方向へ移動させることができる。
体幹リンクの目標姿勢を、ロボット進行方向に所定角だけ前傾させた場合、体幹リンクの上方に連結されている頭部リンクや両腕のリンク群がロボット進行方向へ移動する。これによりロボット全体の重心位置をロボット進行方向へ移動させることができる。
【００１５】
歩容データを補正する工程では、前記特定された離床時点を遅らせる側に補正することによって、一方の脚が接地脚から遊脚に切り替わる時点（離床時点）におけるロボット重心位置をロボット進行方向に所定量だけ移動させるように歩容データを補正することも好ましい。
【００１６】
一方の脚の離床時点を遅らせるよう歩容データを補正する場合、他の代表点目標位置の時系列データが変わらなければロボットの重心位置も補正の前後でほぼ同じ軌道をとる。よって一方の脚の離床時点を遅らせた場合、その遅らせた離床時点におけるロボットの重心位置は補正前より相対的に進行方向前方へ移動させることが可能となる。具体的には、特定された離床時点におけるその脚の足先目標位置を床（歩行面）に接触したままの位置となるよう補正量を設定する。このとき、足先リンク以外のリンクの姿勢が補正前と同じであれば、ロボット全体の歩行姿勢はほぼ補正前と同じにすることができる。具体的には、足先リンクと下腿リンクとを連結するピッチ軸関節の位置が補正前と同じ位置となるよう足先目標姿勢にも補正量を設定する。これにより見た目に円滑な歩行となるよう作成された歩容データに対して、ロボット全体の歩行姿勢を変えずに、膝関節のアクチュエータ等の負荷を低減させる歩容データへ修正することができる。なお、ロボットを直立姿勢としたときの体幹リンク前方方向をＸ軸（ロール軸）、体幹リンク上方向をＺ軸（ヨー軸）、Ｘ−Ｚ面に対して右手直交座標系を構成するように設定した軸をＹ軸（ピッチ軸）と定義する。
【００１７】
歩容データを補正する工程では、一歩行周期の歩容データに対して設定した補正量を、他の歩行周期の歩容データに対しても設定することが好ましい。これにより見た目に円滑な歩行となるよう作成された歩容データを、一歩行周期を繰り返すロボットの連続的な歩行中に、膝関節のアクチュエータ等が過負荷となることを回避する歩容データに修正することができる。
【００１８】
前記一方の脚が接地脚から遊脚へと切り替わる時点（離床時点）に先立つ所定期間内の歩容データを、補正量が漸増するように補正する工程と、その離床時点に続く所定期間内の歩容データを、補正量が漸減するように補正する工程をさらに含むことが好ましい。
これによって、一方の脚の離床時点における他方の脚の膝関節のアクチュエータ等に大きなトルク指令値が要求されるタイミングの前後で、当初の歩容データからの補正量がゼロの状態から徐々に増大し、大きなトルク指令値が要求されるタイミングでの補正量が最大となり、その後に補正量が徐々に減少して当初の歩容データに復帰する歩容データに補正される。一歩行周期における膝関節のアクチュエータの駆動回路の平均トルク指令値を許容トルク指令値以下に抑えながら、ロボットがスムーズに歩行する歩容データに補正することができる。
【００１９】
また、本発明に係る歩容データを修正する方法は、補正された歩容データを、ロボットの各関節の補正後の関節目標値に変換する工程と、補正後の関節目標値に従ってロボットを歩行させた際に、前記駆動回路が出力する、歩容データ補正後のトルク指令値を推定または検出する工程と、補正後トルク指令値の一歩行周期における平均補正後トルク指令値を算出する工程と、補正された歩容データに従ってロボットを歩行させた際の、一歩行周期における一方の脚が接地脚から遊脚に切り替わる、補正後の離床時点を特定する工程と、平均補正後トルク指令値が許容トルク指令値を超える場合に、少なくとも前記補正後の離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように補正された歩容データをさらに補正する工程を含むことが望ましい。
【００２０】
この方法では、毎回の補正量を小さく設定することができ、一歩行周期における膝関節のアクチュエータの駆動回路の平均トルク指令値が許容トルク指令値以下となるのに必要な補正量に達するまで補正量を段階的に増大してゆくことができる。一歩行周期における駆動回路の平均トルク指令値を許容トルク指令値以下とするのに必要な最小の補正量を得ることができる。補正量が小さいほど、最初に作成された歩容データに近い状態でロボットをスムーズに歩行させることが可能となる。
【００２１】
許容トルク指令値は、前記歩容データによるロボット歩行時間中に、前記駆動回路が継続的に指令可能な値であることが好ましい。ここで許容トルク指令値とは、アクチュエータの駆動回路が一定値で継続的に出力してもアクチュエータ等が過負荷とならない値である。しかし駆動回路の許容トルク指令値は不必要なまでに長期間にわたって一定の値で出力可能な値である必要はない。歩容データでロボットが作動する期間において駆動回路が過負荷とならなければよいからである。許容トルク指令値を歩容データによるロボット歩行時間内で駆動回路が一定の値で継続的に出力可能な値とすることで、歩容データに対してできるだけ大きな許容トルク指令値を設定することができる。許容トルク指令値を大きくできれば一歩行期間における駆動回路の平均トルク指令値も大きく設定できる。従って歩容データでロボット作動させる際、駆動回路が過負荷となることを回避しつつ、できるだけスムーズな動作をさせるよう歩容データの補正量を設定することができる。
【００２２】
アクチュエータ等が過負荷となることを避けるためには、補正前の歩容データを補正後の歩容データに置き変えてよい。あるいは、補正前の歩容データに補正量を対応付けて記憶してもよい。
補正量を徐々に増やしながら駆動回路が過負荷となることを避けるのに必要な最小の補正量を探索する場合には、補正前の歩容データに補正量を対応付けて記憶する方式が好ましい。
【００２３】
本発明は脚式ロボットとしても具現化できる。この脚式ロボットは、ロボット代表点の目標位置の時系列データを含む歩容データを、ロボットの各関節の目標関節角、目標関節角速度又は目標関節角加速度のいずれかの関節目標値に変換する手段と、各関節を関節目標値に制御することによってロボットを歩行させた際に、ロボットの膝関節のアクチュエータの駆動回路がそのアクチュエータに対して出力するトルク指令値を推定または検出する手段と、トルク指令値の一歩行周期における平均トルク指令値を算出する手段と、その一歩行周期における、一方の脚が接地脚から遊脚に切り替わる離床時点を特定する手段と、平均トルク指令値が予め設定されている許容トルク指令値を超える場合に、少なくとも前記離床時点におけるロボットの重心位置を、ロボット進行方向へ所定量だけ移動させるように歩容データを補正する手段を有する。
この脚式ロボットによれば、ロボットの歩行中に膝関節のアクチュエータ等が過負荷となることなく、最初に作成された歩容データに近い状態で歩行することができる。
【発明の効果】
【００２４】
本発明によれば、見た目に円滑な歩行となるよう作成された歩容データを、ロボット歩行中に膝関節のアクチュエータ及び／又はアクチュエータの駆動回路がロボット歩行中に過負荷となることを回避する歩容データへ極めて簡単な方法で修正することが可能となる。またロボットの歩行中に膝関節のアクチュエータ等が過負荷となることなく、最初に作成された歩容データに近い状態で歩行することのできる脚式ロボットを提供することができる。
【発明を実施するための最良の形態】
【００２５】
実施例の主要な特徴を列記する。
（第１形態）  膝関節のアクチュエータの駆動回路が一定の値で継続的に出力可能な許容トルク指令値としてできるだけ大きな値を設定することが好ましい。これにより駆動回路の能力を最大限に生かすように歩容データを補正することが可能となるからである。
（第２形態）  補正量により補正された歩容データに従ってロボットを動作させた際、一歩行周期の平均トルクが許容トルク値以下で、できるだけこの許容トルク指令値に近い値となるよう歩容データを補正することが好ましい。許容トルク値以下で平均トルクをできるだけ大きくなるように歩容データを補正することで、駆動回路の能力の限界近くまで利用することができる。従って駆動回路が過負荷とならない範囲で可能な限りロボットを円滑に歩行させるよう制御することができる。
（第３形態）  ロボットの重心位置を、ロボット進行方向へ移動させる、には、ロボット重心位置を、他方の脚（接地脚から遊脚に切り替わる側の脚とは異なる脚）の足先位置に対して相対的にロボット進行方向へ移動させる、ことが好ましい。一方の脚が接地脚から遊脚に切り替わる離床時点において、他方の脚の膝関節には、他方の脚の足先位置とロボット重心位置とのロボット前後方向の距離に応じたモーメントが作用する。ロボット重心位置を、他方の脚の足先位置に対して相対的にロボット進行方向へ移動させることによってこの他方の脚の膝関節に作用するモーメントを小さくすることができる。これにより見た目に円滑な歩行となるよう作成された歩容データを、この膝関節のアクチュエータの駆動回路のトルク指令値を小さくした歩容データへ修正することができる。この膝関節のアクチュエータ等を過負荷とすることを回避できる。
（第４形態）ロボットの重心位置を、水平方向でロボット進行方向へ移動させるとともに、垂直上下方向に移動するよう歩容データを補正してもよい。
（第５形態）  体幹目標姿勢をロボット進行方向に対して前傾させるよう歩容データを補正する場合、ロボット体幹の姿勢を決定する基準点となる、体幹上の代表点は、体幹を前傾させることによって体幹の重心位置がロボット前方へ移動するような位置に設定されていることが好ましい。体幹の重心位置がロボット前方へ移動することによって効率よくロボット全体の重心位置をロボット進行方向前方へ移動させることができるからである。
【実施例】
【００２６】
図面を参照して以下に実施例を詳細に説明する。
まず図８にロボット本体１００のリンク構造を概説する。図８はロボット本体１００を正面から見た図である。ロボット本体１００は複数のリンク部品と相互のリンクを揺動可能に連結する関節から構成されている。主な構成は体幹６０、腰リンク６１、右脚部リンク群６２Ｒ、左脚部リンク群６２Ｌ、頭部、両腕リンク群などである。またロボット本体１００が直立姿勢を取った状態で体幹前方をＸ軸（ロール軸）、体幹上方をＺ軸（ヨー軸）、Ｘ−Ｚ軸に対して直交右手座標系を構成するようにＹ軸（ピッチ軸）を定義する。また図８において、隣接するリンクを連結する関節としては符号１２０で示す円形がＸ軸方向に回転軸を有するロール軸関節、符号１２２で示す横長のひし形がＺ軸方向に回転軸を有するヨー軸関節、符号１２４で示す縦長のひし形がＹ軸方向に回転軸を有するピッチ軸関節と呼ぶ。例えば右膝関節６４Ｒはその回転軸６４ＲＹがピッチ軸方向であるピッチ軸関節のひとつである。脚部には他に足首ピッチ軸関節６６Ｒ、腰リンク６１と脚部を連結する関節にもピッチ軸関節がある。リンク−関節の構成は他にもあるが概ね図８のようになる。例えば図８では体幹６０と腰リンク６１と２つのリンクを有するが、体幹６０と腰リンク６１がひとつのリンクとして一体化した構成もある。
本発明で注目するのは脚部のピッチ軸関節のひとつである右膝関節６４Ｒおよび左膝関節６４Ｌである。
＜実施例１＞
図１から図６を用いて本発明の実施例１を説明する。図１はロボット歩行制御装置１０とロボット本体１００のブロック図である。ロボットの歩行制御装置１０とロボット本体１００とを合わせたものが「ロボット」である。
ロボット歩行制御装置１０には、歩容データ作成装置３２で作成された歩容データを記憶する歩容データ記憶部３０、歩容データ記憶部３０から歩容データを読み出し、同時に補正量データ記憶部２８に記憶された補正量を読み出してロボット本体１００の各関節に備えられたアクチュエータ５２を制御するアクチュエータ制御部２０を備える。ロボット本体１００には所定箇所に加速度センサ５６が備えられている。この加速度センサ５６の出力は歩容データ上の代表点が目標位置に追従して動作するようアクチュエータ制御部２０にフィードバックされる。
またロボット歩行制御装置１０には、アクチュエータ制御部２０から歩容データと膝関節の駆動回路が出力するトルク指令値が入力される平均トルク算出部２２を備える。この平均トルク算出部２２は入力されたデータから、駆動回路が出力するトルク指令値の一歩行周期における平均トルク指令値を算出する。さらにアクチュエータ制御部２０から出力される歩容データから脚が接地脚から遊脚へと切り替わる時点（離床時点）を特定する離床時点特定部３４を備える。離床時点特定部３４は例えば歩容データ上の足先目標位置から算出される足先の最下点の座標が、床（歩行面）の平面を表す座標群の中に存在する時点から、その座標群より上方に位置する時点へ切り替わる時点を離床時点として特定する。その他、ロボット足裏に接触センサを設け、このセンサ出力と歩容データ上での足先目標位置とを照合してロボットの足先が実際に離床した時点を離床時点として特定するよう構成してもよい。さらにロボット歩行制御装置１０には、算出された平均トルク指令値と許容トルク指令値、離床時点および歩容データから歩容データに対する補正量を設定する補正量設定部２４を備える。また設定された補正量を記憶する補正量データ記憶部２８と予め設定されている許容トルク指令値を記憶する指令トルク指令値記憶部２６を備える。歩行制御装置１０内の一部もしくは全部のモジュールがロボット本体１００内に実装される場合もあるが、図１では歩行制御装置１０の構成を理解しやすいようにロボット本体１００とは別に描いてある。
【００２７】
次に各処理モジュールの動作について概要を説明する。
歩容データ記憶部３０には、歩容データ作成装置３２で作成された歩容データが記憶されている。歩容データ作成装置３２で作成された歩容データを当初の歩容データと称することにする。
歩容データ作成装置３２は、当初の歩容データ作成時において、ロボット本体１００のダイナミクスを考慮し、ロボット本体１００に行わせたい動作をロボット代表点の目標位置の時系列データとして作成する。ここで代表点の目標位置によって歩容データを記述するのは、ロボット各関節の目標関節角として歩容データを記述するよりロボット動作の全貌が人間に理解しやすいからである。代表点の具体例としては、左右の足先位置／姿勢、胴部（体幹）の重心位置と胴部の姿勢、左右の手先の位置／姿勢などがある。ダイナミクスを考慮するとは、ロボットが倒れないこと、また各代表点の相対位置関係がロボットの幾何学的拘束条件を満足すること、等である。
【００２８】
アクチュエータ制御部２０は、歩容データ記憶部３０から当初の歩容データを読み込む。また補正量データ記憶部２８から補正量データを読み込む。読み込まれた夫々のデータはアクチュエータ制御部２０内部で加算され、ロボット本体１００の各部に設定された代表点の目標位置／姿勢から各関節の目標関節角、目標関節角速度もしくは目標関節角加速度に変換される。各関節の目標関節角もしくは目標関節角加速度はさらにロボット本体１００の各関節に取り付けられた関節アクチュエータ５２へのトルク指令値に変換され各関節のアクチュエータ５２が駆動される。
ここでロボット本体１００が位置制御される場合はロボット代表点の経時的な目標位置は各関節の経時的な目標関節角（関節目標値）に変換される。一方ロボット本体１００がコンプライアンス制御される場合はロボット代表点の経時的な目標位置は各関節の各時点（例えば制御サンプリング時点）の目標関節角加速度（関節目標値）に変換される。いずれにせよ最終的に関節のアクチュエータの指令値となるのはトルク指令値である。本実施例１では、ロボット１００はコンプライアンス制御されるものと仮定し、以後説明を続ける。アクチュエータ制御部２０の内部については後に図２を用いて説明する。
【００２９】
平均トルク算出部２２はアクチュエータ制御部２０から歩容データとロボット膝関節のアクチュエータの駆動回路が出力するトルク指令値を取り込み、一歩行周期におけるアクチュエータの駆動回路の平均トルク指令値を算出する。平均トルク算出部２２は入力された歩容データによって、両脚の足先目標位置が所定の相対位置関係から歩行動作を経て再び同じ位置関係となるまでの期間を特定する。この期間が一歩行周期に相当する。この歩行周期における駆動回路が出力する膝関節アクチュエータへのトルク指令値を特定しその平均値を求める。こうして一歩行周期における膝関節の駆動回路の平均トルク指令値を求めることができる。
【００３０】
離床時点特定部３４は、平均トルク算出部２２と同様にアクチュエータ制御部２０から歩容データを取り込み、一歩行周期を特定する。特定した一歩行周期内で、足先目標位置が床面から離れる時点（離床時点）を離床時として特定する。この処理は前述した平均トルク算出部２２内で一歩行周期を特定するときに同時に行うよう構成してもよい。
【００３１】
補正量設定部２４は、平均トルク算出部２２で算出された一歩行周期における膝関節のアクチュエータの駆動回路が出力するトルク指令値の平均値と、許容トルク指令値記憶部２６に記憶された許容トルク指令値とを比較する。比較の結果、平均トルク指令値が許容トルク指令値を超える場合は、歩容データと離床時点特定部３４で特定された離床時点を参照して歩容データを補正する補正量を設定する。歩容データの補正の方法については後述する。設定された補正量は補正量データ記憶部２８に記憶される。
許容トルク値記憶部２６に記憶されている許容トルク指令値とは、アクチュエータ等の特性により決定される、一定の値で継続的に出力可能なトルク指令値である。許容トルク指令値については後に詳述する。
【００３２】
次に図２を用いてアクチュエータ制御部２０内部での処理を説明する。なお本実施例ではロボットはコンプライアンス制御されるものと仮定しているので歩容データ上の各代表点の経時的な目標位置データは各関節の目標関節角加速度に変換される。
アクチュエータ制御部２０は歩容データ記憶部３０から当初の歩容データ４０を読み込み、補正量データ記憶部２８から補正量データ４２を読み込む。読み込まれた夫々のデータは加算されて加速度演算部４４に送られる。補正量データ４２には、各代表点の経時的な目標位置データである当初の歩容データ４０に対して補正値を加えるべき代表点目標位置／姿勢、補正量を加えるべき時点、および補正量の大きさが指定されている。従って当初の歩容データ４０に対して補正量データ４２を加算することができるのである。
【００３３】
加速度演算部４４では、補正量データが加算された各代表点の経時的な目標位置データである歩容データから各時点（各制御サンプリング時点）における各代表目標位置の目標加速度を算出する。一方、ロボット本体１００の所定の位置には加速度センサ５６が取り付けられている。この加速度センサ５６の値からロボット本体１００の各代表点の実際の加速度を検出する。算出された目標加速度に対して検出された加速度を減算したものがフィードバック制御部４６に送られる。ここにはコンプライアンス制御、さらにはPID制御等の制御回路が組まれており、結果としてロボット本体１００の各代表点に与えるべき各サンプリング毎の目標加速度が算出される。算出された目標加速度は目標値変換部４８で各代表点の目標加速度からロボット本体１００の各関節アクチュエータ５２の目標関節角加速度へと変換される。この各関節アクチュエータ５２の目標関節角加速度は関節アクチュエータ５２の駆動回路５０へと送られる。そしてこの駆動回路５０により最終的に関節のアクチュエータ５２を動作させるためのトルク指令値に変換され関節アクチュエータ５２に送られる。関節アクチュエータ５２としてサーボモータを例にとると、駆動回路５０はサーボアンプに相当する。サーボアンプは関節のサーボモータがトルク指令値通りに動作するようフィードバック回路５８が設けられている。通常、サーボアンプからサーボモータへのトルク指令値は電流値で与えられる。サーボモータは入力された電流に比例したトルクを発生する。平均トルク算出部２２にはサーボアンプが出力する電流指令値が入力され、この電流指令値にサーボモータ固有のトルク定数を乗じてサーボアンプが出力するトルク指令値として利用する。ここで関節アクチュエータ５２にトルクセンサを取り付け、関節アクチュエータが出力するトルクを検出して駆動回路が出力するトルク指令値として利用することも可能である。また駆動回路に対してオブザーバ回路を設けてトルク指令値を推定することも可能である。さらにロボット全体を数値モデルで表し、シミュレーション上で動作させ、このシミュレーション上で関節アクチュエータの駆動回路が出力するトルク指令値を推定してもよい。
なお、駆動回路５０および関節アクチュエータ５２はロボット本体１００に取り付けられた関節の数だけ用意されている。
【００３４】
通常、サーボアンプには様々な保護回路が設けられている。保護回路としては、過電流遮断回路、回生過電圧遮断回路、過負荷遮断回路、サーボモータ過熱保護回路などがある。ここで過負荷遮断回路はサーボアンプが発生する熱量が許容値を超えるとサーボアンプを停止させる回路である。サーボアンプが許容値以上のトルク指令値（即ち電流指令値）を出力し続けると発生する熱量はサーボアンプ及び／又はサーボモータ内に蓄積される。一方、サーボアンプが所定値以下のトルク指令値を出力し続ける場合は放熱により蓄積された熱量が減少する。ここで上記許容値に相当するトルク指令値が許容トルク指令値である。許容トルク指令値とはサーボアンプの特性、またはサーボモータの特性に応じて、サーボアンプ及び／又はサーボモータが過負荷とならずに一定の値で継続的に出力可能なトルク指令値として定義される。すなわち許容トルク指令値はサーボアンプ（駆動回路）及び／又はサーボモータ（アクチュエータ）に固有の値として予め設定されるものである。
ロボットの歩行中、脚部各ピッチ軸関節（特に膝、足首ピッチ軸関節）のアクチュエータ用のサーボアンプは接地脚時の高トルク指令値出力と遊脚時の低トルク指令値出力が繰り返される。高トルク指令値出力時の発熱量の蓄積分が低トルク指令値出力時の熱量放熱分を超えるといずれサーボアンプ及び／又はサーボモータは過負荷状態となり停止してしまう。そのような事態を避けるように歩容データを補正する必要がある。なお上記説明では関節のアクチュエータとしてサーボモータを、駆動回路としてサーボアンプを例としたが、他のアクチュエータ、例えば油圧式アクチュエータを用いても同様である。
【００３５】
また実施例１ではロボット１００はコンプライアンス制御を行うものと仮定したが、ロボット１００が位置制御される場合は、加速度演算部４４は不要となる。そして力センサ５６の変わりに代表点の実際の位置を検出する検出装置がロボットに備えられる。その具体例としては、各関節にエンコーダを取り付け、このエンコーダ出力から所定の演算（順変換）により各代表点の位置に変換する変換部を設ける。そしてフィードバック制御部４６の前で歩容データ上の各代表点の目標位置からロボット各代表点の実際の位置が減算され、その結果がフィードバック制御部４６へ入力される。ここでロボット各代表点の最終的な目標位置が決定され、目標値変換部４６では代表点の目標位置から各関節の目標関節角へと変換される。この目標関節角に基づいて駆動回路５０は各関節のアクチュエータにトルク指令値を出力する。
【００３６】
次に図３を用いて膝関節のアクチュエータ等の負荷を低減する、歩容データの補正について説明する。
まずステップＳ１００で、初期化を行う。ここで初期化とは、許容トルク指令値記憶部２６から許容トルク指令値を読み込む処理、補正量データ記憶部２８に記憶される補正量をゼロとする処理および歩容データ記憶部３０から当初の歩容データを読み込む処理である。
【００３７】
次にステップＳ１０２で歩容データ上の各代表点の目標位置を各関節の目標関節角加速度に変換する。そしてステップＳ１０４で各関節の目標関節角加速度に基づいてロボットの制御を実行する。ここで「ロボットの制御を実行する」とはロボットを実際に歩行させても良いし、シミュレーション上での歩行でもよい。
次にステップＳ１０６でロボット制御中の膝関節のアクチュエータへの駆動回路が出力するトルク指令値を取得する。同時にステップＳ１０８で一歩行周期を特定する。この処理は歩容データ上で両脚が所定の相対位置関係となった時点から再び同じ相対位置関係となるまでの期間として特定される。従って一歩行周期には右脚が離床する時点（離床時点）と左脚が離床する時点（離床時点）とが含まれる。両脚に対して歩容データを補正するが夫々の脚に対する補正の処理は同様であるので以後は右脚についてのみ説明する。従ってステップＳ１０６では右脚の膝関節のアクチュエータへのトルク指令値を取得する。
【００３８】
ステップＳ１０８で一歩行周期が特定されると、ステップＳ１１０で、その一歩行周期中の左脚の離床時点を特定する。離床時点の特定は、前述したように一歩行周期中の歩容データから特定できる。一方ステップＳ１１２で、一歩行周期中の右膝関節のアクチュエータへのトルク指令値の平均トルク指令値を算出する。次いでステップＳ１１４で、算出された平均トルク指令値と初期化処理ステップＳ１００で読み込んだ許容トルク指令値とを比較する。平均トルク指令値が許容トルク指令値より大きい場合（ステップＳ１１４：ＹＥＳ）、右膝関節のアクチュエータ等が過負荷となる可能性が高いのでステップＳ１１６で、ステップＳ１１０で求めた左脚の離床時点における、体幹目標位置（姿勢）に対する補正量を設定する。具体的には、体幹目標姿勢角のうち、ピッチ軸周り（図８のＹ軸周り）の目標姿勢角をＡ１からＡ１＋ｄＡに補正する。ここでＡ１は当初の歩容データ上での左脚離床時点における体幹ピッチ軸周りの目標姿勢角である。またｄＡはロボット体幹ピッチ軸周りの目標姿勢角をロボット進行方向に前傾させる側に補正する補正量である。このｄＡが補正量に相当する。設定された補正量ｄＡはステップＳ１１８でこの補正量ｄＡを付加する歩容データ上での時刻とともに補正量データ記憶部２８に記憶される。
【００３９】
次に記憶された補正量ｄＡを当初の歩容データに加えて再度ステップＳ１０２からステップＳ１１８を繰り返す。ステップＳ１０２の２回目の処理からは、当初の歩容データに対して補正量記憶部２８に記憶された補正量データが付加された歩容データが各ステップでの処理の対象となる。ここで２回目以降のステップＳ１０６の処理は補正後の歩容データによってロボットの制御が実行された場合のトルク指令値を取得する。このときのトルク指令値を補正後トルク指令値と称することにする。またステップＳ１１２で算出される平均トルク指令値を平均補正後トルク指令値と称することにする。そしてステップＳ１１４で平均補正後トルク指令値が許容トルク指令値より大きい場合（ステップＳ１１４：ＹＥＳ）、ステップＳ１１６では、左脚離床時点の補正後の体幹ピッチ軸周り目標姿勢角Ａ１＋ｄＡにさらに補正量ｄＡを加算する。即ち当初の歩容データ上での体幹ピッチ軸周りの目標姿勢角Ａ１に対して補正量は２ｄＡとなる。こうしてステップＳ１０２からステップＳ１１８を繰返し、ステップＳ１１４で平均補正後トルク指令値が許容トルク指令値以下となった場合（ステップＳ１１４：ＮＯ）、他の歩行周期に対して同じ補正量を設定し、設定された補正量を補正量データ記憶部２８に記憶して処理を終了する。こうして見た目に円滑な歩行となるよう作成された歩容データを、全歩行周期に対して右膝関節のアクチュエータ等が過負荷とならない歩容データへ修正することができる。左膝関節のアクチュエータ等についても同様の処理を行う。なお、本実施例１では、体幹ピッチ軸目標姿勢角を補正したので、補正された歩容データによる左脚離床時点（補正された歩容データに従ってロボットを歩行させた際の、一歩行周期における左脚が接地脚から遊脚に切り替わる、補正後の離床時点）は変わらない。
【００４０】
次に図３のフローチャートに基づく体幹ピッチ軸目標姿勢角の補正が、ロボットの重心位置がロボット進行方向へ移動させることになり、結果膝関節の負荷が低減されることを説明する。
図４に歩容データ上の体幹ピッチ軸目標姿勢角の補正前後の様子を示す。図４（Ａ）は補正量設定前の歩容データ上での左脚６２Ｌの離床時点におけるロボット全体の姿勢を示す。但し両腕及び頭部は省略した。左脚６２Ｌの足先目標位置６２ＬＰは僅かに床面から上方にある。即ち図４（Ａ）で示した姿勢において、左脚６２Ｌは接地脚から遊脚に切り替わり、その結果ロボット全体の自重は右脚６２Ｒで支えることになる。ここで図４（Ａ）では体幹６０の代表点６０Ｐは体幹６０の両脚連結部の位置にあるとする。ロボット本体１００はＸで示す矢印方向に歩行しているとする。今注目している体幹６０のピッチ軸周りの目標姿勢角は、ロボット進行方向に体幹を前傾させる角度であるので、紙面垂直方向の軸周りの角度となる。またその角度はロボット体幹６０の上下方向の直線と鉛直方向とのなす角で定義されるものとする。図４（Ａ）の左脚６２Ｌの離床時点の体幹代表点６０Ｐのピッチ軸周り目標姿勢角Ａ１はゼロであるとする。このときロボット本体１００全体の重心位置ＲＧのＸ方向位置をＸ１であるとする。またこのときの体幹代表点６０ＰのＸ方向座標もＸ１であるとする。
図４（Ａ）の状態において右膝関節６４Ｒに加わるモーメントＭ１はロボット全体の重心位置ＲＧに作用する重力ベクトルＧと、右膝関節６４Ｒの中心からこの重力ベクトルＧにおろした垂線ＭＬ１の大きさで決定される。
【００４１】
当初の歩容データによると、一歩行周期の右膝関節のアクチュエータ駆動回路が出力する平均トルク指令値が許容トルク指令値を超えている場合（図３のステップＳ１１４：ＹＥＳ）、ステップＳ１１６により体幹ピッチ軸周り目標姿勢角をＡ１からＡ１＋ｄＡに補正する。その状態を示したのが図４（Ｂ）である。体幹リンク６０の代表点６０ＰのＸ座標はＸ１のままであるが体幹姿勢角がＡ１＋ｄＡに補正されたことによってロボット全体の重心位置ＲＧのＸ方向位置がＸ１＋ｄＸの位置に、即ちロボット進行方向前方へ移動する。なお図４（Ｂ）ではロボット重心位置ＲＧはロボット体幹に固定された点として描いているが、厳密には体幹目標姿勢角を補正したことにより、ロボット全体の重心位置の、ロボット体幹６０に対する相対位置は変化する。しかし体幹リンク６０の質量はロボット各リンク中で最も大きい部類に属するので、ここでは体幹６０の目標姿勢角を補正した場合でもロボット全体の重心位置ＲＧはほぼロボット体幹６０の重心位置に近いものになる。また体幹が前傾姿勢となることで図示していないが両腕の体幹との連結部もロボット進行方向へ移動する。従って両腕全体がロボット進行方向へ移動することになる。この両腕の移動もロボット全体の重心ＲＧをロボット進行方向へ移動させることに寄与する。
体幹６０の目標姿勢角をＡ１からＡ１＋ｄＡに補正した場合（但しこの場合Ａ１はゼロである）、ロボット右脚６２Ｒの足先目標位置６２ＲＰは補正していない。従って足先目標位置６２ＲＰとロボット重心位置ＲＧのＸ方向の距離は補正によって短くなる。よって図４（Ｂ）に示すように右膝関節６４Ｒ中心からロボット全体の重心ＲＧに作用する重力ベクトルＧへおろした垂線ＭＬ２は図４（Ａ）のＭＬ１より小さくなる。これにより図４（Ｂ）の状態における右膝関節６４Ｒに作用するモーメントＭ２は図４（Ａ）の状態におけるモーメントＭ１より小さくなる。従って上記歩容データの補正により右膝関節６４Ｒのアクチュエータの駆動回路が出力するトルク指令値を小さくすることができる。
【００４２】
上記歩容データの補正により、一歩行周期のロボットの姿勢、および膝関節トルク指令値の変化の様子を図５に示す。
図５（Ａ）には補正前の歩容データによる、一歩行周期の所定時点におけるロボットの姿勢を示す。また図５（Ｂ）には補正後の歩容データによる所定時点のロボットの姿勢を示す。図４（Ｃ）には右膝関節のアクチュエータの駆動回路が出力するトルク指令値の時間変化を示す。図４（Ｄ）には、図４（Ｃ）のトルク指令値のグラフにおいて、許容トルク指令値（図４（Ｃ）に一点鎖線７２で示す）に対するトルク指令値の差分を累積したグラフを示す。なお、図４（Ａ）、（Ｂ）では図右方向がロボット進行方向である。よって図４（Ｃ）、（Ｄ）に示すグラフの横軸は時間であり、またロボットが歩行した距離に等価である。
図５（Ａ）において、ロボット本体が１００ａの姿勢から同じ姿勢である１００ｅとなるまでが一歩行周期である。なお図５（Ａ）において、太線で表した脚が右脚６２Ｒであり、細線で表した脚が左脚６２Ｌである。ロボット本体は１００ｂで左脚が接地脚から遊脚に切り替わり、１００ｃで１００ａの姿勢と左右の脚の位置が反対となった姿勢となり、１００ｄで右脚が接地脚から遊脚へと切り替わり、再び１００ａと同じ姿勢である１００ｅとなる。このときの右膝関節のアクチュエータへのトルク指令値のグラフを図５（Ｃ）に破線７０で示した。トルク指令値は左脚６２Ｌの離床時点である、ロボットが１００ｂの姿勢のときに最大値Ｒ１となる。
【００４３】
図５（Ｃ）に示した一点鎖線７２が許容トルク指令値を表す。即ちトルク指令値がこの許容トルク指令値７２より上側にあるときはアクチュエータ及び／又はアクチュエータの駆動回路には負荷が蓄積され、トルク指令値がこの許容トルク指令値７２より下側にあるときはアクチュエータ等に蓄積された負荷が低減される。そこで許容トルク指令値に対するトルク指令値の差分を累積したグラフを図５（Ｄ）に破線７４で示す。トルク指令値の累積値がアクチュエータ等の負荷累積値を示す指標となる。累積値はトルク指令値が許容トルク指令値７２を超える期間で増加し、トルク指令値が許容トルク指令値７２を下回る期間で減少する。一歩行周期の前後の時点における累積値が増加していると、連続歩行する間に累積値は図５（Ｄ）に矢印７６で示すように徐々に増加していき、いずれアクチュエータ等は過負荷となってしまう。従って一歩行周期の前後の時点でこの累積値の値が変わらなければアクチュエータ及び／又はアクチュエータの駆動回路が過負荷となることを回避できる。
【００４４】
図４（Ａ）に示した、左右脚の離床時点（１００ｂ及び１００ｄで示す姿勢）におけるロボット体幹のピッチ軸周り目標姿勢角を補正したときの様子を図５（Ｂ）に示す。補正前のロボットの姿勢１００ｂが１００ｆへと補正され、１００ｄが１００ｇに補正される。左脚の離床時点における体幹のピッチ軸周りの目標姿勢角をロボット前方へ前傾するよう補正量を設定したことで、左脚６２Ｌの離床時点の、右脚６２Ｒの足先位置に対するロボット全体の重心位置はｄＸだけ前方へ移動している。１００ｂの姿勢と１００ｆの姿勢との間で示したｄＸがこれに相当する。右脚６２Ｒの離床時点（１００ｄ、１００ｇ）についても同様である。この補正後の歩容データによる右膝関節のアクチュエータのトルク指令値を図５（Ｃ）に実線７８で示す。左脚６２Ｌの離床時点のロボット重心位置が前方へ移動したことで、この離床時点の右膝関節のアクチュエータへのトルク指令値はＲ２と、補正前のＲ１より減少させることができた。その結果、補正後の歩容データによるトルク指令値の累積値（図５（Ｄ）に実線８０で示す）は一歩行周期前後の時点で累積値が増加しないようにすることができた。これにより連続歩行しても膝関節のアクチュエータ等が過負荷となることを防止できる。
【００４５】
上記実施例１では図４（Ａ）の符号６０Ｐで示すように体幹の代表点を体幹の下方に設定した。このように、体幹目標姿勢をロボット進行方向に対して前傾させるよう歩容データを補正する場合、ロボット体幹の姿勢を決定する基準点となる体幹上の代表点は、体幹を前傾させることによって体幹の重心位置がロボット前方へ移動するような位置に設定されていることが好ましい。体幹の重心位置がロボット前方へ移動することによって効率よくロボット全体の重心位置をロボット進行方向前方へ移動させることができるからである。なお、通常ロボットの両腕は体幹の上方で体幹と連結されている。同様にロボット頭部も体幹の上方で体幹に連結されている。従って例えば体幹の代表点を体幹の重心に設定した場合でも、体幹を前傾させることによって、両腕および頭部はロボット進行方向に移動する。両腕および頭部の質量がロボット進行方向へ移動することによって、ロボット全体の重心位置をロボット進行方向へ移動させることが可能である。
【００４６】
また、一歩行周期前後の時点におけるトルク指令値の累積値が減少するように補正量を設定してもアクチュエータ等が過負荷となることはない。しかし、アクチュエータ等の能力を最大限に引き出すには、一歩行周期前後の時点におけるトルク指令値の、許容トルク指令値に対する累積値が一定となることが好ましい。図３のフローチャート図でステップＳ１０２からステップＳ１１８の処理を繰り返す際、ステップＳ１１６で付加する補正量をできるだけ小さい値とすれば、一歩行周期前後の時点におけるトルク指令値の、許容トルク指令値に対する累積値が増加しない程度に極力一定となるように最終的な補正量を設定することができる。これにより見た目に円滑な歩行となるよう作成された歩容データを、アクチュエータ等の能力を最大限に引き出したスムーズな歩容データへ修正することが可能となる。
【００４７】
＜実施例２＞
次に実施例２を説明する。この実施例２は、歩容データ上での補正量設定の対象の代表点をロボット体幹に設定された代表点（体幹目標位置）とし、この代表点のロボット進行方向の目標を補正するものである。この実施例２は図３のフローチャートのステップＳ１１６の処理を、体幹目標位置のＸ座標値をｄＸずつ増加させる処理に変更したものである。補正値設定前後のロボットの位置の変化の様子を図６に示す。図６（Ａ）は補正量設定前の左脚離床時のロボットの姿勢であり図４（Ａ）と同じ図である。従って同じ部品には同じ符号を付してある。図４（Ａ）と同様に図６（Ａ）では体幹リンク６０の代表点は６０Ｐの位置にある。ロボット本体１００はＸで示す矢印方向に歩行しており図６（Ａ）の左脚６２Ｌの離床時点の体幹リンク代表点６０ＰのＸ方向の位置はＸ１であるとする。このときロボット全体の重心位置ＲＧの位置もＸ１であるとする。図４（Ａ）の状態において右脚膝関節に加わるモーメントＭ１はロボット全体の重心位置ＲＧに作用する重力ベクトルＧと、右脚膝関節６４Ｒの中心からこの重力ベクトルＧにおろした垂線ＭＬ１の大きさで決定される。
【００４８】
補正前の歩容データでは、一歩行周期の右膝関節６４Ｒのアクチュエータ駆動回路が出力する平均トルク指令値が許容トルク指令値を超えている場合（図３のステップＳ１１４：ＹＥＳ）、ステップＳ１１６により体幹目標位置のＸ方向座標をＸ１からＸ１＋ｄＸに補正する。その状態を示したのが図６（Ｂ）である。体幹リンク６０の代表点６０ＰはＸ１＋ｄＸの位置に補正されている。この補正によって、ロボット全体の重心位置ＲＧもＸ１＋ｄＸの位置に、即ちロボット進行方向前方へ移動する。なお厳密にはロボット体幹位置の補正量ｄＸと同じ距離だけロボット全体の重心位置は移動しないが体幹リンク６０の質量はロボット各リンク中で最も大きい部類に属するのでここではロボット全体の重心位置ＲＧもｄＸにほぼ近い距離だけ移動すると仮定する。このときロボット右脚の足先目標位置６２ＲＰおよび左脚足先目標位置６２ＬＰに対しては補正量を設定しない。従って右脚足先目標位置６２ＲＰとロボット全体の重心ＲＧのＸ軸方向（ロボット進行方向）の距離は小さくなる。よって図６（Ｂ）に示すようにこのとき右膝関節６４Ｒ中心からロボット全体の重心ＲＧに作用する重力ベクトルＧへおろした垂線ＭＬ３は図６（Ａ）のＭＬ１より小さくなる。その理由は体幹リンク６０のＸ方向目標位置をロボット進行方向に移動させた際、右脚足先目標位置６２ＲＰが変わっていなければ右膝関節６４ＲもＸ方向へ移動する。しかし体幹リンク代表点６０ＰがＸ軸方向へ移動する際、幾何学的拘束条件から右脚膝関節６４Ｒは前下方へ移動する。すなわち、体幹リンク６０のＸ軸方向の移動量（ｄＸ）よりも右脚膝関節６４ＲのＸ軸方向への移動量の方が小さくなる。従って図６（Ｂ）の垂線ＭＬ３の長さは図４（Ａ）のＭＬ１の長さより小さくなる。よって図６（Ｂ）の状態における右脚膝関節６４Ｒに作用するモーメントＭ３は図６（Ａ）の状態におけるモーメントＭ１より小さくなる。従って上記歩容データの補正により右膝関節６４Ｒのアクチュエータの駆動回路が出力するトルク指令値を小さくすることができる。もちろん体幹６０の目標位置をＸ軸方向（すなわち水平方向）へ補正するとともに、体幹目標位置の上下方向の座標を上方へ移動するように補正量を設定することで、右膝関節６４Ｒに作用するモーメントをさらに小さくすることができる。
この実施例２によっても図５と同様に一歩行周期における膝関節アクチュエータ等の過負荷を防止することが可能となる。
【００４９】
＜実施例３＞
次に実施例３として、一方の脚の離床時点を遅らせる歩容データの補正について説明する。この実施例３では図３のフローチャート図において、右膝関節のアクチュエータの平均トルク指令値が許容トルク指令値より大きいと判断された場合（ステップＳ１１４：ＹＥＳ）、ステップＳ１１６で補正量を設定する処理の内容を、左脚の足先の離床時点を所定時間遅らす処理に変更する。より具体的な補正量の設定を図７により説明する。
補正前の歩容データ上では、時刻ｔ０での左脚足先目標位置の垂直方向位置が床面（歩行面）と同一であり、時刻ｔ１での左脚足先目標位置６２ＬＰの垂直方向（以下、この方向をＺ軸とする）位置が床面（歩行面）より僅かに上方に設定されているとする。即ち時刻ｔ１が左脚足先の離床時点とする。歩容データ補正前の時刻ｔ１におけるロボットの姿勢を図７（Ａ）に示す。図７（Ａ）の姿勢は図４（Ａ）と同じ図である。このときロボット右膝関節６４Ｒには図４（Ａ）の説明と同様にモーメントＭ１が作用する。右膝関節６４ＲのアクチュエータはこのモーメントＭ１に抗するだけのトルクが要求される。そして図７（Ｂ）に示すように時刻ｔ２で左脚足先目標位置６２ＬＰのＺ軸方向の位置は床面より距離Ｚ１だけ上方となる姿勢になるとする。なおここでｔ０、ｔ１、ｔ２の間隔は例えばロボットの制御サンプリング間隔である。
【００５０】
この補正前の歩容データに対して、左脚足先目標位置６２ＬＰの離床時点を時刻ｔ２となるよう補正する。補正後の時刻ｔ１でのロボットの姿勢を図７（Ｃ）に時刻ｔ２での姿勢を図７（Ｄ）に示す。時刻ｔ１での左脚足先目標位置６２ＬＰのＺ軸方向位置を床面と同じ位置となるよう補正量を設定する。図７（Ａ）と（Ｃ）に示す図ではその差はわかりにくいが図７（Ａ）では左脚６２Ｌは遊脚となっており図７（Ｃ）では左脚６２Ｌはまだ床面に接地している。即ち図７（Ａ）ではロボットの自重は右脚６２Ｒ片脚だけで支えている状態であるのに対し、図７（Ｃ）ではロボットの自重は両脚で支えている状態である。従って図７（Ｃ）の姿勢では右膝関節６４Ｒが出力すべきトルク出力は図７（Ａ）と比較して小さくて済む。そして時刻ｔ２における左脚足先目標位置６２ＬＰのＺ軸方向位置を床面より僅かに上方となるよう補正量を設定する。即ち時刻ｔ２が左脚６２Ｌの離床時点となるように補正する。この時点（ｔ２）で右脚６２Ｒのみでロボットの自重を支えることとなる。時刻ｔ２での左脚足先目標位置６２ＬＰのＺ軸方向の目標位置はＺ１からほぼゼロへ補正される。即ち補正量は（Ｚ１−ｄＺ）である。ここでｄＺはＺ１に対して微小な量である。体幹６０および右脚足先目標位置６２ＲＰに対しては補正量を設定していない。従って体幹６０は時刻がｔ１からｔ２に経過する間、補正前の体幹６０の変化（図７（Ａ）から図７（Ｂ）への変化）と補正後の体幹６０の変化（図７（Ｃ）から図７（Ｄ）への変化）と同じである。即ち体幹６０はｔ１からｔ２へと時間が経過する間に前方（図７の矢印Ｘで示す方向）へ移動するので、左脚６２Ｌの離床時点における右脚足先目標位置６２ＲＰに対するロボットの重心ＲＧの位置はロボット進行方向前方に移動することになる。その結果、図７（Ｄ）に示すようにロボット右膝関節６４Ｒの中心とロボット重心ＲＧの位置との水平方向距離ＭＬ４（即ちロボット自重により右膝関節６４Ｒに作用するモーメントＭ４の腕）は、補正前の歩容データによる左脚６２Ｌ離床時点（図７（Ａ））におけるロボット右膝関節６４Ｒ中心とロボット重心位置ＲＧの水平方向距離ＭＬ１より小さくなる。その結果、離床時点に右脚膝ピッチ軸関節６４Ｒのアクチュエータの駆動回路が出力すべきトルク指令値を小さくすることができる。従って右膝関節６４Ｒのアクチュエータ等を過負荷とならないように歩容データへ修正することが可能となる。
【００５１】
なお、このとき、時刻ｔ２における左脚足首ピッチ軸関節６６Ｌの位置は補正の前後で変化しないよう左脚足先目標位置／姿勢の補正量を設定することが好ましい。補正量設定前後で左脚足首ピッチ軸関節６６Ｌの位置に変化がなければ左脚の足先リンク６８Ｌ以外のリンクについて位置／姿勢の変化はなくロボット全体の歩行姿勢を補正前の歩容データとほぼ同等とすることができるからである。具体的には時刻ｔ２における、左足先リンク６８Ｌの代表点目標位置６２ＬＰ（左足先目標位置、すなわち左脚６２Ｌの足先目標位置）のピッチ軸周りの目標姿勢角が図７（Ｂ）に示すＡ２であったとする。上述したように時刻ｔ２における左脚６２Ｌの足先目標位置６２ＬＰのＺ軸方向位置は床上ｄＺの位置に補正されている。この補正と同時に左脚足首ピッチ軸関節６６Ｌの位置が補正前と変わらない位置となるよう足先目標位置６２ＬＰのＸ方向位置と足先リンク６８Ｌのピッチ軸周りの姿勢角を補正する。具体的には足先リンク６８Ｌのピッチ軸周りの姿勢角を補正前のＡ２（図７（Ｂ）に示す）からＡ３（図７（Ｄ）に示す）となるよう補正量を設定する。また足先目標位置６２ＬＰのＸ方向位置も僅かにＸ方向後方に補正する。左脚足首ピッチ軸関節６６Ｌの位置を補正前と同じとし、左脚足先目標位置６２ＬＰのＺ軸方向の位置が決まれば、幾何学的演算により、補正後の足先リンク６８Ｌのピッチ軸周りの姿勢角Ａ３と、足先目標位置６２ＬＰのＸ方向位置とを求めることができる。
【００５２】
実施例１から３では、一方の脚が接地脚から遊脚に切り替わる離床時点を特定し、その離床時点における歩容データを補正する例を示した。さらに特定された離床時点に先立つ所定期間内の歩容データに対して漸増する補正量を設定し、その離床時点に続く所定期間の歩容データに対して漸減する補正量を設定することも好適である。このとき、特定された離床時点における補正量が最大値となるように漸増・漸減する補正量を設定する。これにより、歩容データ内の補正された所定代表点の経時的目標位置データも経時的に滑らかなものとなり、その結果、実現されるロボットの動作も滑らかなものとすることができる。なお、特定された離床時点の前後の所定期間を合わせた期間は一歩行周期内とすることが好ましい。前後の所定期間を合わせた期間が一歩行周期を超えると、連続して歩行する歩容データである場合、歩行周期の切り替わり時点付近の歩容データに対して二重に補正量を設定してしまうことになるからである。
【００５３】
また、本発明は特にピッチ軸方向に回転軸を有する膝関節に注目したものであるが、膝関節と同様に片足立脚時に自重を支えることになる下腿リンクと足先リンクとを連結する足首ピッチ軸関節に対しても本発明は適用可能である。
【００５４】
また、実施例１から３で例示した以外の代表点に対しても同様の補正をすることができる。例えば手先目標位置／姿勢や頭部リンクの目標位置／姿勢などがある。どの代表点を選択しても、一方の脚の離床時にロボット重心をロボット進行方向前方へ移動させるような補正量の設定は可能だからである。
【００５５】
また上記実施例では、ロボット重心位置をロボット前方へ移動するよう補正量を設定したがロボット全体の重心の近似値として体幹リンク及び／又は腰リンクなど、ロボットを構成するリンク群の中で質量の大きい、好ましくは最大質量であるリンクの重心位置を用いても良い。ロボット全体の重心位置を求めるには各リンクの相対位置関係に基づいて算出する必要があるが特定のリンクの重心位置でロボット全体の重心位置を近似することで計算量を低減することができる。
【００５６】
またロボット脚部の膝関節のアクチュエータの駆動回路が一定の値で継続的に出力可能な許容トルク指令値を記憶し、一歩行周期における膝関節のアクチュエータのトルク平均値が許容トルク値以下となるように作成された歩容データによりロボットを制御するによって、歩容データが終了するまで膝関節のアクチュエータ等を過負荷にすることなくロボットを制御することが可能となる。
【００５７】
なお、ロボットの重心位置を、ロボット進行方向へ移動させる、には、ロボット重心位置を、他方の脚（接地脚から遊脚に切り替わる側の脚とは異なる脚）の足先位置に対して相対的にロボット進行方向へ移動させる、ことが好ましい。一方の脚が接地脚から遊脚に切り替わる離床時点において、他方の脚の膝関節には、他方の脚の足先位置とロボット重心位置とのロボット前後方向の距離に応じたモーメントが作用する。ロボット重心位置を、他方の脚の足先位置に対して相対的にロボット進行方向へ移動させることによってこの他方の脚の膝関節に作用するモーメントを小さくすることができる。これにより見た目に円滑な歩行となるよう作成された歩容データを、この膝関節のアクチュエータの駆動回路のトルク指令値を小さくした歩容データへ修正することができる。この膝関節のアクチュエータ等を過負荷とすることを回避できる。
【００５８】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００５９】
【図１】実施例１のロボット歩行制御装置のブロック図である。
【図２】アクチュエータ制御部のブロック図である。
【図３】実施例１の歩容データ補正量設定のフローチャート図である。
【図４】実施例１による歩容データ補正前後のロボット姿勢を示す図である。
【図５】一歩行周期における各時点でのロボットの姿勢、膝関節トルク指令値およびトルク指令値累積値の時間変化を示す図である。
【図６】実施例２による歩容データ補正前後のロボット姿勢を示す図である。
【図７】実施例３による歩容データ補正前後のロボット姿勢を示す図である。
【図８】ロボット本体のリンク構造を概説する図である。
【符号の説明】
【００６０】
１０：ロボット歩行制御装置
２０：アクチュエータ制御部
２２：平均トルク算出部
２４：補正量設定部
２６：許容トルク指令値記憶部
２８：補正量データ記憶部
３０：歩容データ
３２：歩容データ作成装置
３４：離床時点特定部
４４：加速度演算部
４６：フィードバック制御部
４８：目標値変換部
５０：駆動回路
５２：関節アクチュエータ
５６加速度センサ
１００：ロボット本体
【図１】
2007007795.tif 000003
【図２】
2007007795.tif 000004
【図３】
2007007795.tif 000005
【図４】
2007007795.tif 000006
【図５】
2007007795.tif 000007
【図６】
2007007795.tif 000008
【図７】
2007007795.tif 000009
【図８】
2007007795.tif 000010