(57)【要約】【課題】膝を伸展させたロボットの歩容を生成することのできる装置及び方法を提供する。【解決手段】  実現させるロボットの動作を、空間内で遷移するロボットの各状態における位置を特定することにより設定する空間歩行パターン設定部４と、ロボットに、空間歩行パターン設定部４により設定された動作を、設定された速度で行わせる動作速度設定部５を備えたロボット動作生成装置１を提供すると共に、実現させるロボットの動作を、空間内で遷移するロボットの各状態における位置を特定することにより設定する第一のステップと、ロボットに、第一のステップで設定された動作を、設定された速度で行わせる第二のステップを有するロボット動作生成方法を提供する。【選択図】  図１
2019042848.tif 000002
【特許請求の範囲】
【請求項１】
実現させるロボットの動作を、空間内で遷移する前記ロボットの各状態における位置を特定することにより設定する空間動作設定手段と、
前記ロボットに、前記空間動作設定手段により設定された前記動作を、設定された速度で行わせる動作速度設定手段を備えたロボット動作生成装置。
【請求項２】
前記動作は、歩行動作であり、
前記空間動作設定手段は、特定された前記位置に基づいて、前記ロボットの前記空間内における関節角度と、前記歩行動作を実現できるゼロモーメント点の位置を決定し、
前記動作速度設定手段は、前記ゼロモーメント点の位置及び設定された前記歩行動作の速度に応じて、前記位置の関数として表される前記ロボットの進行方向における重心速度パターンを求め、得られた前記重心速度パターンを時間の関数に変換する、請求項１に記載のロボット動作生成装置。
【請求項３】
前記動作速度設定手段は、さらに、前記時間の関数に変換された前記動作に基づいて、前記ロボットの進行方向に直交する方向における前記ロボットの重心位置を時間の関数として求め、求められた前記重心位置と、前記重心速度パターンを時間の関数として変換することにより得られた前記進行方向に関する前記関節角度に応じて、前記関節角度の時間的遷移を計算する、請求項２に記載のロボット動作生成装置。
【請求項４】
実現させるロボットの動作を、空間内で遷移する前記ロボットの各状態における位置を特定することにより設定する第一のステップと、
前記ロボットに、前記第一のステップで設定された前記動作を、設定された速度で行わせる第二のステップを有するロボット動作生成方法。
【請求項５】
前記動作は、歩行動作であり、
前記第一のステップでは、特定された前記位置に基づいて、前記ロボットの前記空間内における関節角度と、前記歩行動作を実現できるゼロモーメント点の位置を決定し、
前記第二のステップでは、前記ゼロモーメント点の位置及び設定された前記歩行動作の速度に応じて、前記位置の関数として表される前記ロボットの進行方向における重心速度パターンを求め、得られた前記重心速度パターンを時間の関数に変換する、請求項４に記載のロボット動作生成方法。
【請求項６】
前記第二のステップは、さらに、
前記時間の関数に変換された前記動作に基づいて、前記ロボットの進行方向に直交する方向における前記ロボットの重心位置を時間の関数として求めるステップと、
求められた前記重心位置と、前記重心速度パターンを時間の関数として変換することにより得られた前記進行方向に関する前記関節角度に応じて、前記関節角度の時間的遷移を計算するステップを含む、請求項５に記載のロボット動作生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットに所望の動作を行わせるための技術に関するものである。
【背景技術】
【０００２】
近年、歩行ロボットの考案が盛んに行われているが、例えば下記の特許文献１〜３や非特許文献１には、当該ロボットに歩行動作を行わせるためのアルゴリズムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３２６１７３号公報
【特許文献２】特開２００４−１１４２４３号公報
【特許文献３】特開２０１１−１６１５２４号公報
【非特許文献】
【０００４】
【非特許文献１】梶田秀司編著、『ヒューマノイドロボット』、オーム社、２００５年
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ロボットに歩行させるための従来のアルゴリズムは、設定されたゼロモーメント点（以下「ＺＭＰ」という。）を実現すると共に歩行中に発散しない重心軌道を計算した上で、算出された重心軌道と足先運動から逆運動学によって関節角軌道を計算するものであるため、膝を大きめに曲げて腰を落とした歩行となることが多い。
【０００６】
しかし、このような歩行は、見た目が悪いだけでなく、膝を曲げて体重を支えるためにエネルギー効率が悪く、曲げた膝が前方に突き出して周囲の環境と衝突しやすいなど、多くの支障をもたらすという問題がある。
【０００７】
本発明は、このような問題を解決するためになされたもので、膝を伸展させたロボットの歩容を生成することのできる装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、実現させるロボットの動作を、空間内で遷移する上記ロボットの各状態における位置を特定することにより設定する空間動作設定手段と、上記ロボットに、空間動作設定手段により設定された上記動作を、設定された速度で行わせる動作速度設定手段を備えたロボット動作生成装置を提供する。
【０００９】
また、上記課題を解決するため、本発明は、実現させるロボットの動作を、空間内で遷移する上記ロボットの各状態における位置を特定することにより設定する第一のステップと、上記ロボットに、第一のステップで設定された上記動作を、設定された速度で行わせる第二のステップを有するロボット動作生成方法を提供する。
【発明の効果】
【００１０】
本発明によれば、膝を伸展させたエネルギー効率の良いロボットの歩容を生成することのできる装置及び方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係るロボット動作生成装置１の構成を示すブロック図である。
【図２】本発明の実施の形態に係るロボット動作生成方法を示すフローチャートである。
【図３】図２に示されたロボット動作生成方法の一例を示すフローチャートである。
【図４】図２に示されたロボットの構成例を示す図である。
【図５】図４に示されたロボットにおける重心Ｃｇの位置を示す図であり、それぞれ、図５（ａ）は図４に示されたロボットを側面（サジタル面）から見た図、図５（ｂ）は図４に示されたロボットを正面（フロンタル面）から見た図である。
【図６】図３のステップＳ１における空間歩行パターンの例を示す図である。
【図７】図３に示された空間関節角軌道の例を示すグラフである。
【図８】図６に示された空間歩行パターンに対応して決定される支持多角形と目標ＺＭＰの例を示すグラフである。
【図９】図３に示されたステップＳ２において設定された目標歩行速度と、図３に示されたステップＳ３における速度パターンの計算結果を示すグラフである。
【図１０】図３に示されたステップＳ４において得られた重心とＺＭＰの時間軌道を示すグラフである。
【図１１】図３に示されたステップＳ５における重心軌道計算を説明するためのグラフである。
【図１２】図４に示されたロボットの運動を近似的に表現した倒立振り子モデルを示す図である。
【図１３】図３に示されたステップＳ５において算出された左右方向の目標ＺＭＰの例を示すグラフである。
【図１４】図３に示されたステップＳ５において算出された左右方向の重心運動の例を示すグラフである。
【図１５】図３に示されたステップＳ１における空間歩行パターンの他の例を示す図である。
【図１６】本発明の実施の形態に係るロボット動作生成装置の他の構成例を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下において、本発明の実施の形態を図面を参照しつつ詳しく説明する。なお、図中同一符号は同一又は相当部分を示す。
【００１３】
図１は、本発明の実施の形態に係るロボット動作生成装置１の構成を示すブロック図である。図１に示されるように、ロボット動作生成装置１は、入出力ノード２と、入出力ノード２に接続されたバス３と、それぞれバス３に接続された空間歩行パターン設定部４、動作速度設定部５、記憶部６、表示部７、及び操作部８を備える。
【００１４】
図２は、本発明の実施の形態に係るロボット動作生成方法を示すフローチャートである。以下においては、本方法を図１に示されたロボット動作生成装置１を用いて実現する場合について説明するが、本方法は図１に示されたロボット動作生成装置１に限られず広く適用されることは言うまでもない。
【００１５】
図２に示されるように、ステップＳ１では例えば、ユーザによる操作部８の操作に応じて、空間歩行パターン設定部４が、実現させるロボットの動作を、空間内で遷移するロボットの各状態における位置を特定することにより設定する。
【００１６】
次に、ステップＳ２では例えば、動作速度設定部５が、当該ロボットに、ステップＳ１で設定された上記動作を、ユーザによる操作部８の操作により設定された速度で行わせる。以下において、図２に示されたロボット動作生成方法を、図３を参照しつつ詳しく説明する。
【００１７】
ここで、動作を行わせる二足歩行ロボットの一例が図４に示される。図４に示されるように、この二足歩行ロボットは、人間に類似した同じ構造の二本の脚を持つ。そして、各脚には６個の関節Ｈｙ，Ｈｒ，Ｈｐ，Ｋｐ，Ａｐ，Ａｒがあり、これらの関節Ｈｙ，Ｈｒ，Ｈｐ，Ｋｐ，Ａｐ，Ａｒはサーボモータ等のアクチュエータにより希望する角度に回転することができる。
【００１８】
なお、関節Ｈｐ，Ｋｐ，Ａｐは主として図中ｘｚ平面内の運動に寄与し、関節Ｈｒ，Ａｒは主として図中ｙｚ平面内の運動に寄与する。また、関節Ｈｙはｚ軸周りに回転し、ロボットを方向転換する場合に寄与する。
【００１９】
図４以下において、それぞれｘ軸はロボットの前進方向、ｙ軸は左右方向、ｚ軸は上方向を示すものとし、ｘｚ平面をサジタル面、ｙｚ平面をフロンタル面と呼ぶ。
【００２０】
また、本発明に係るロボット動作生成方法は、図４に示されるような人間型ロボットに限られず、２脚を有していれば鳥形や恐竜型など様々な形状のロボットに広く適用することができ、もちろん腕を有していてもよい。
【００２１】
ここでは、説明を簡単にするため、ロボットの脚は十分に軽く、ロボット全体の重心は胴体の重心と一致するものとする。図５（ａ）及び図５（ｂ）は、それぞれ、図４に示されたロボットの重心Ｃｇを、ロボットの側面と正面から見た図である。図５に示されるように、ロボットの腰の水平位置は、上記重心の水平位置と一致する。
【００２２】
図３に示されるように、ステップＳ１では、空間歩行パターン設定部４がユーザによる操作部８の操作に応じて空間歩行パターンを設定する。ここで、空間歩行パターンは、実現させたいロボットの歩行動作を空間的に設定した姿勢の系列として表現されたものであり、図６に一例が示される。
【００２３】
なお、上記の空間歩行パターンは、どのように設定されても良く、例えばモーションキャプチャ等の装置により取得された人間の歩行動作に関するデータを利用してもよい。この場合には、ロボットに人間の歩き方を真似させることになる。
【００２４】
図６に例示された空間歩行パターンは、横軸が時間ではなくロボットにおける腰の水平位置、すなわち重心位置ｘで、縦軸がロボットの高さからなる二次元平面において、ロボットが一歩の歩幅をＬ／２としてゼロの位置から三歩前進する歩行動作が示されるが、常に膝が伸びた状態でロボットの体を支え、支持脚の交換も両脚が伸びた状態で行うように設定されている。
【００２５】
そして、空間歩行パターン設定部４は、このようにして設定された空間歩行パターンを実現するための関節角度を、例えば図７のように規定する。ここで、図７（ａ）及び図７（ｂ）は、それぞれ、水平位置の関数として右脚関節角度若しくは左脚関節角度を示したもので、以下において空間関節角軌道と呼ぶ。なお、図７（ａ）及び図７（ｂ）においてグラフｇＨ，ｇＫ，ｇＡは、それぞれ股関節、膝関節、足首関節のピッチ角成分を示す。
【００２６】
また、空間歩行パターン設定部４は、上記のように設定された空間歩行パターンを基に、足部の軌道とロボットの足裏形状から各時刻において算出される支持多角形と目標ＺＭＰを決定する。
【００２７】
なお、支持多角形とは、床面に接する足裏の領域で構成される凸多角形（凸包）のことであり、歩行中の足先と床との接触状況に応じて変化するものである。すなわち、両脚支持期には後ろ足の踵から前足の爪先の範囲に広がり、単脚支持期には支持脚の踵から爪先までの範囲に狭まる。
【００２８】
一方、ＺＭＰとは、ロボットに作用する床反力の中心点を意味し、上記の支持多角形の内側に保つことにより、当該ロボットの足裏の安定な接触を維持することができる。
【００２９】
ここで、縦軸及び横軸を共に水平位置（ｘ）とした図８に示されるグラフにおいて、図６に示された空間歩行パターンに対応する支持多角形が灰色領域により規定され、目標ＺＭＰが本領域内に位置するように、時間の関数ではなく重心の水平位置ｘの関数として、実線のグラフＺｒとして決定される。なお、図８において、グラフｓＲ，ｓＬはそれぞれ、右足若しくは左足の空間的な遷移パターンを示し、破線で示されたグラフＣＭは重心位置の空間的な遷移パターンを示す。この重心位置は、上記のようにロボットの腰の水平位置そのものなので、図８に示されるようにグラフＣＭは傾き４５度の直線となる。
【００３０】
次に、ステップＳ２において、動作速度設定部５はユーザによる操作部８の操作に応じて、目標歩行速度を設定する。
【００３１】
そして、ステップＳ３において、動作速度設定部５は、設定された目標歩行速度と図８に示された目標ＺＭＰを同時に実現できるように、例えば図９の実線で示されるようなロボットの重心速度の遷移パターン、すなわちロボットの腰の速度パターンを算出する。ここで、図９に示されたグラフは、縦軸が重心速度、横軸が水平位置（ｘ）であって、破線は目標歩行速度Ｖrefを示す。
【００３２】
なお、図９に示された例においては、目標歩行速度Ｖrefは、速度ゼロの初期状態から一歩で所望の大きさまで加速し、最後の一歩で速度ゼロに戻るように設定されている。
【００３３】
そして、このように設定された目標歩行速度Ｖrefと図８に示された目標ＺＭＰ、及びロボットの動力学を基に、動作速度設定部５は、ロボットの最終的な重心速度Ｖを算出する。なお、図９に示された重心速度Ｖの変化は、一歩ごとに加減速を繰り返す速度パターンとなっているが、その理由は目標ＺＭＰで与えられた安定歩行条件を満たすためであり、人間の歩行にも見られる特徴である。
【００３４】
次に、ステップＳ４において、ステップＳ３で得られた速度パターンに基づいて、ステップＳ１で設定された空間歩行パターンを時間軌道に変換（以下「空間時間変換」という。）する。図１０は、この空間時間変換により得られたロボットの重心とＺＭＰの時間軌道の例を示すグラフである。図１０に示されるように、縦軸は水平位置（ｘ）、横軸は時間であって、グラフＺはロボットのＺＭＰについての時間の関数を示し、破線で示されたグラフＣＭはロボットの重心位置についての時間の関数を示す。なお、グラフｓＲ，ｓＬは、それぞれ右足及び左足の位置についての時間の関数を示す。
【００３５】
ところで、以上のステップＳ１からステップＳ４では、サジタル面内の運動についてだけ考慮される。すなわち、ステップＳ４までによれば、図１１（ａ）に示されるようにサジタル面内のバランスだけが取られ、フロンタル面内のバランスが考慮されていない歩行パターンが得られることになる。
【００３６】
そこで、さらに図１１（ｂ）に示されるようなロボットの左右方向（ｙ方向）における腰の運動も追加して、実際に実現可能な歩行パターンを生成する。なお、適切な左右方向の腰運動のパターンは、ＺＭＰの時間軌道を用いた公知の方法により生成することができる。そして、フロンタル面内とサジタル面内の運動を、逆運動学計算を用いて合成する。
【００３７】
具体的には、動作速度設定部５は、ステップＳ５において上記の方法により左右方向における重心軌道を計算し、ステップＳ６において、サジタル面内における時間関節角軌道とフロンタル面内における重心軌道に基づいて、逆運動学を用いて三次元歩行に必要な関節角の時間軌道を計算する。以下において、以上のロボット動作生成方法の具体例について詳しく説明する。
【００３８】
平地上を歩行するロボットの運動は、近似的に図１２に示された倒立振子モデルによって表現される。なお、図中点ＰはＺＭＰを意味すると共に、重心Ｃｇの水平位置は座標ｘ、重心Ｃｇの高さは座標ｚとされる。
【００３９】
この倒立振子モデルについての運動方程式は、次式（１）で示される。
【００４０】
【数１】
2019042848.tif 000003
【００４１】
なお、式（１）においてｘは重心の水平位置、ｐはＺＭＰの水平位置、ｚは重心の高さ、ｇは重力加速度を意味する。
【００４２】
次に、重心の水平位置ｘを、次式（２）のように一定間隔Δｘで離散化する。
【００４３】
【数２】
2019042848.tif 000004
【００４４】
ここで、ある瞬間における重心の速度ｖiが既知であったとすると、微小時間Δｔi後における重心の速度ｖi+1は、式（１）の運動方程式に基づいて次式（３）で与えられる。
【００４５】
【数３】
2019042848.tif 000005
【００４６】
一方、速度ｖiで重心がΔｘだけ移動するのに要する時間Δｔiは、次式（４）で与えられる。
【００４７】
【数４】
2019042848.tif 000006
【００４８】
ここで、式（４）を式（３）に代入することにより、次式（５）を得ることができる。
【００４９】
【数５】
2019042848.tif 000007
【００５０】
式（５）の右辺では速度ｖiが分母に入っているため、速度が０の状態は扱うことができない。そこで、十分小さい０でない速度をεとしたとき、速度ｖiには次式（６）で示される制約条件が付けられる。
【００５１】
【数６】
2019042848.tif 000008
【００５２】
上記の式（５）を空間量子化ダイナミクスと呼び、この式を用いた最適化計算によって重心速度を計算することができる。なお、上記最適化計算は、以下の式（７）で示されるように、値Ｊを最小化するようなＺＭＰｐiを探索するものと定義される。
【００５３】
【数７】
2019042848.tif 000009
【００５４】
上式（７）において、ｖirefは例えば図９に破線のグラフで示された目標歩行速度Ｖref、ｐirefは例えば図８のグラフＺｒで示された目標ＺＭＰ、βは重み係数を意味する。
【００５５】
そして、重み係数βをある値に設定した上で上記最適化問題を解くことによって、図９に示された重心速度Ｖを算出することができる。
【００５６】
なお、式（７）で示された最適化問題は、例えば以下の参考文献１及び２に示されたアルゴリズムを用いて解くことができる。
【００５７】
参考文献１：MathWorks File Exchange: iLQG/DDP trajectory optimization
(https://jp.mathworks.com/matlabcentral/fileexchange/52069-ilqg-ddp-trajectory-optimization)
参考文献２：Tassa,Mansard,Todorov, “Control-Limited Differential Dynamic Programming”, in proceedings of IEEE International Conference on Robotics and Automation, 2014
【００５８】
一方、より簡易に、次式（８）に示された一ステップだけの最適化計算を用いて解を得ることもできる。
【００５９】
【数８】
2019042848.tif 000010
【００６０】
式（８）で示された最適化問題は解析的に解くことができ、その結果は以下の式（９）で示される。
【数９】
2019042848.tif 000011
【００６１】
以上のように、式（７）又は式（８）のいずれかの最適化問題を解くことにより、式（２）で定義される重心位置に対応したＺＭＰ及び速度を算出することができるため、図３のステップＳ３における速度パターンの計算が可能となる。
【００６２】
さらに、ロボットを制御するためには時間情報が必要なので、次式（１０）を用いて計算する。
【００６３】
【数１０】
2019042848.tif 000012
【００６４】
上式（１０）におけるｔiは、図３のステップＳ１で設定された空間歩行パターンにおける第i番目のデータを出力すべきタイミングを示す。そして、このような方法で空間的なパターンを時間的なパターンに変換することにより、図３のステップＳ４に示された空間時間変換を実行することができる。
【００６５】
なお、図８に示された空間パターンとしての軌道を上記の空間時間変換により時間の関数としてプロットし直したものが、図１０に示された時間軌道であって、例えば図１０に示されたグラフＺは、式（７）の最適化計算により求められたＺＭＰの時間軌道を表したものである。
【００６６】
一方、フロンタル面内における重心運動の生成は、以下のように行うことができる。
【００６７】
式（１０）による空間時間変換によって、一歩毎の遊脚の離床タイミングと着地タイミングが定まるので、これを使って左右方向の目標ＺＭＰｐy,kを、次式（１１）のように時間の関数として定めることができる。
【００６８】
【数１１】
2019042848.tif 000013
【００６９】
なお、上式（１１）において、それぞれΔｔは制御のための離散化時間、ｋはサンプル時刻、ＮTは歩行終了時刻を表す。
【００７０】
式（１１）で示された左右方向の目標ＺＭＰは、歩行中に体を支持している足で定まる支持多角形の範囲内を移動するように設定される。ここで具体例として、上記支持多角形の範囲は図１３において灰色の領域で示され、左右方向の目標ＺＭＰはグラフＺｙとして示される。なお、図１３におけるグラフｓＲは右足の位置、グラフｓＬは左足の位置を示すが、図１３のこれらグラフＺｙ，ｓＲ，ｓＬで示された軌道は、図６の空間歩行パターンに基づいた歩行に対応したものである。
【００７１】
このようにＺＭＰが時間の関数として表されている場合、以下のように重心の軌道を計算することができる。まず、ＺＭＰと重心運動の関係は、近似的に次式（１２）の関係にある。
【００７２】
【数１２】
2019042848.tif 000014
【００７３】
式（１２）の左辺は、歩行開始から終了までのサンプル時刻毎のＺＭＰを縦に並べたベクトルである。一方、式（１２）の右辺の行列は、縦横のサイズがＮTの正方行列で、対角成分とその上下の要素以外は全てゼロの三重対角行列となっている。ここで、係数ａ，ｂ，ｃは以下の式（１３）のように、重心の高さｚ、重力加速度ｇ、離散化時間Δｔから計算できる。
【００７４】
【数１３】
2019042848.tif 000015
【００７５】
また、式（１２）の右辺のベクトルは、歩行開始から終了までのサンプル時刻毎の重心軌道を縦に並べたベクトルであるが、これを求めるため、両辺に左から三重対角行列の逆行列を乗じる。これより、式（１４）に示されるように、上記のベクトルが算出されるため、図３に示されたステップＳ５における重心軌道が求められる。
【００７６】
【数１４】
2019042848.tif 000016
【００７７】
具体例として、以上の方法を用いて図１３に示されたＺＭＰから計算された重心軌道が、図１４のグラフＣＭｙにより示される。ここで、図１３と同様に、図１４におけるグラフｓＲは右足の位置、グラフｓＬは左足の位置を示す。
【００７８】
なお、上記非特許文献１にも記されているように、時間の関数として与えられたＺＭＰから重心運動を求める手法はこの他にも数多く存在するが、いずれの方法を用いても良い。
【００７９】
図３に示されたステップＳ６に示されているように、最後に逆運動学計算によって、重心の左右運動を加えて三次元歩行運動を作り出す。ここで、図１１（ａ）に示されるようなサジタル平面内の歩行パターンを考える。まず右脚の運動に注目し、その６つの関節角度を並べたベクトルをｑr*とする。そして、右足部（フット）の位置［ｘr*，ｙr*，ｚr*］は、ロボットの重心位置と右脚関節角度によって次式（１５）で表すことができる。
【００８０】
【数１５】
2019042848.tif 000017
【００８１】
ここで、式（１５）の右辺第一項はロボットの重心位置であるが、サジタル平面内の歩行パターンを考えているのでｙ成分はゼロとなる。また、右辺第二項のｐrは重心を原点としたときの右足部の位置を表し、上記ベクトルｑr*の関数になっている。
【００８２】
このとき、三次元空間における右足部の姿勢を３行３列の回転行列Ｒr*で表現し、次式（１６）で与える。
【００８３】
【数１６】
2019042848.tif 000018
【００８４】
なお、式（１６）の右辺は、右足部の姿勢が上記ベクトルｑr*の関数になっていることを示している。
【００８５】
以上のように定義されたサジタル平面内の歩行パターンに左右方向の重心運動ｙを追加して、図１１（ｂ）に示されるような三次元の歩行運動を作り出す。具体的には、三次元歩行の右足部の関節角度のベクトルをｑrとしたとき、式（１５）における右足部の位置を維持するためには次式（１７）が成立しなくてはならない。
【００８６】
【数１７】
2019042848.tif 000019
【００８７】
ここで、右辺第一項は三次元歩行のための重心位置ベクトルであり、式（１４）で求めた重心のｙ方向成分が上から二つ目の要素に加えられている。また、右辺第二項は、新しい関節角度の下での重心相対の右足部の位置を表す。さらに、式（１６）で示された右足部の姿勢も維持させるため、次式（１８）も成立する必要がある。
【００８８】
【数１８】
2019042848.tif 000020
【００８９】
ここで、式（１７）と式（１８）をできるだけ満足する右脚の関節角度ｑrを求めるため、次式（１９）の値を最小化する最適化問題を解く。なお、この最適化問題の解を求めることは、図３に示されたステップＳ６における逆運動学計算に該当する。
【００９０】
【数１９】
2019042848.tif 000021
【００９１】
上式（１９）において、ｌｎ（）は行列対数関数を意味し、本関数は上記の非特許文献１にも記されているように、足部姿勢の誤差に対応した回転角を表す三次元ベクトルを与えるものである。
【００９２】
そして、同様の計算を左脚と左足部について行って両脚の関節角度を決定することにより、三次元の歩行運動を実現することができる。
【００９３】
なお、上記のロボット動作生成方法は、図１５に示された階段を上る歩行などにも適用することができる。ここで、図１５に示された歩行の場合には、上記の式（１）の代わりに次式（２０）を用いればよい。
【００９４】
【数２０】
2019042848.tif 000022
【００９５】
式（２０）において、ｚmは空間歩行パターンのＺＭＰ相対の重心高さの平均値、ｚirefは重心の高さ、ｐz,irefは階段を上る際における目標ＺＭＰの高さを表す。
【００９６】
また、上記においては、ロボットの直進歩行について説明したが、本発明の実施の形態に係るロボット動作生成方法は、方向転換を伴う歩行にも適用することができる。その場合には、上記の座標軸ｘ，ｙを一歩毎にロボットの前進方向及び左右方向に設定し直して同様の計算を行えばよい。
【００９７】
また、上式（２）においては、空間軸を離散化する際にΔｘとして一定値が与えられたが、ロボットの位置に応じて間隔を変化させたΔｘnを設定しても良い。ここで、ｉ番目の位置ｘiは、Δｘnを積算して次式（２１）のように表すことができる。
【００９８】
【数２１】
2019042848.tif 000023
【００９９】
そして、この場合は、式（５）に替えて次式（２２）を用いることになる。
【０１００】
【数２２】
2019042848.tif 000024
【０１０１】
ところで、上記のロボット動作生成方法は、本方法に係るアルゴリズムをプログラムで表現し、図１６に示されたロボット動作生成装置１０に実行させることによっても実現できる。
【０１０２】
ここで、ロボット動作生成装置１０は、入出力ノード１２と、入出力ノード１２に接続されたバス１３と、それぞれバス１３に接続された中央演算処理装置（ＣＰＵ）１４及びメモリ１５を備える。
【０１０３】
ロボット動作生成装置１０において、上記プログラムはメモリ１５に格納され、ＣＰＵ１４がメモリ１５から当該プログラムを読み出して実行することになる。
【０１０４】
なお、これまで、ロボットに所望の歩行動作を行わせるための方法及び装置について説明したが、本発明に係るロボット動作生成方法及びロボット動作生成装置は、ロボットに歩行以外の動作を行わせる場合にも広く適用することができる。
【０１０５】
以上より、本発明の実施の形態に係るロボット動作生成装置及びロボット動作生成方法によれば、膝を伸展させたエネルギー効率の良いロボットの歩行動作や、大股で美しいロボットの歩行動作などを生成することができる。
【符号の説明】
【０１０６】
１  ロボット動作生成装置
４  空間歩行パターン設定部
５  動作速度設定部
【図１】
2019042848.tif 000025
【図２】
2019042848.tif 000026
【図３】
2019042848.tif 000027
【図４】
2019042848.tif 000028
【図５】
2019042848.tif 000029
【図６】
2019042848.tif 000030
【図７】
2019042848.tif 000031
【図８】
2019042848.tif 000032
【図９】
2019042848.tif 000033
【図１０】
2019042848.tif 000034
【図１１】
2019042848.tif 000035
【図１２】
2019042848.tif 000036
【図１３】
2019042848.tif 000037
【図１４】
2019042848.tif 000038
【図１５】
2019042848.tif 000039
【図１６】
2019042848.tif 000040