(57)【要約】少なくとも脚式移動ロボット１の上体２４の水平方向並進運動とロボット１の重心を略一定に維持しつつ該ロボット１の上体２４等の所定部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合により表されるものとして予め定めた動力学モデルを用い、ロボット１に作用する重力と慣性力との合力が動力学的平衡条件を満たすように目標歩容を生成する。動力学モデルの運動は上体質点等の運動とフライホイールの回転運動とにより表される。歩行のみならず、走行等にも適した目標歩容を少ない演算量で生成できる。
2003057426.tif 000002
【特許請求の範囲】
【請求項１】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成する歩容生成装置において、
少なくとも前記上体の水平方向並進運動と前記ロボットの重心を略一定に維持しつつ該ロボットの所定の部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ該各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合により表されるものとしてあらかじめ定められた動力学モデルを用い、ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容を生成することを特徴とする脚式移動ロボットの歩容生成装置。
【請求項２】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成する歩容生成装置において、
少なくとも各脚体先端部の運動と上体の水平方向並進運動と前記ロボットの重心を略一定に維持しつつ該ロボットの所定の部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ該各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合により表されるものとしてあらかじめ定められた動力学モデルを用い、ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容を生成することを特徴とする脚式移動ロボットの歩容生成装置。
【請求項３】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成する歩容生成装置において、
少なくとも各脚体先端部の運動と上体の水平方向並進運動と上体の鉛直方向並進運動と前記ロボットの重心を略一定に維持しつつ該ロボットの所定の部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ該各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合により表されるものとしてあらかじめ定められた動力学モデルを用い、ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容を生成することを特徴とする脚式移動ロボットの歩容生成装置。
【請求項４】
前記ロボットの目標ＺＭＰを設定する手段を備え、前記動力学的平衡条件は、前記目標歩容の運動によって前記目標ＺＭＰ回りに発生するモーメントが略零であるという条件であることを特徴とする請求の範囲第１項〜第３項のいずれか１項に記載の脚式移動ロボットの歩容生成装置。
【請求項５】
前記所定の部位は、ロボットの上体であることを特徴とする請求の範囲第１項〜第３項のいずれか１項に記載の脚式移動ロボットの歩容生成装置。
【請求項６】
前記動力学モデルは、前記上体の水平方向並進運動を質点の水平方向並進運動により表し、前記所定の部位の姿勢変化運動をフライホイールの回転運動により表すモデルであることを特徴とする請求の範囲第１項に記載の脚式移動ロボットの歩容生成装置。
【請求項７】
前記動力学モデルは、前記各脚体先端部の運動をそれぞれ各脚体に対応する質点の運動により表し、前記上体の水平方向並進運動を該上体に対応する質点の水平方向並進運動で表し、前記所定の部位の姿勢変化運動をフライホイールの回転運動により表すモデルであることを特徴とする請求の範囲第２項に記載の脚式移動ロボットの歩容生成装置。
【請求項８】
前記動力学モデルは、前記各脚体先端部の運動をそれぞれ各脚体に対応する質点の運動により表し、前記上体の水平方向並進運動及び鉛直方向並進運動をそれぞれ該上体に対応する質点の水平方向並進運動及び鉛直方向並進運動で表し、前記所定の部位の姿勢変化運動をフライホイールの回転運動により表すモデルであることを特徴とする請求の範囲第３項に記載の脚式移動ロボットの歩容生成装置。
【発明の詳細な説明】
技術分野
本発明は、脚式移動ロボットの歩行のみならず、走行にも適した歩容生成装置に関する。
背景技術
脚式移動ロボット、例えば２足移動ロボットの移動動作を行なわせるための歩容（目標歩容）の生成は、従来、主にロボットにスムーズな歩行動作を行なわせる歩容（歩行歩容）を生成することを主目的として行なわれてきた。しかし、近年では、脚式移動ロボットの開発が進むにつれて、該ロボットに歩行だけでなく、走行も行なわせることができる歩容を生成することが望まれている。
尚、「歩容」という漢字に「歩」が入っているので歩行に限定されると誤解されやすいが、本来「歩容」とは、トロットなど、馬の走行形態を指す言葉として用いられているように、走行も含んだ概念である。
ここで、歩行と走行の特徴の違いを説明しておく。
同時に全脚が空中に存在する瞬間がある移動形態を走行と定義することが一般的ではある。しかし、この定義によって歩行と走行が明確に区別できるとは限らない。たとえば、速いジョギングでは、ほとんどの人間において、同時に全脚が空中に存在する瞬間があるが、遅いジョギングでは、かなりの人間において、常にいずれかの脚が接地している。速いジョギングは走行であるのに遅いジョギングは歩行である、と定義するのは、感覚的に少し無理がある。
図４８に、典型的な走行における上体鉛直位置と床反力鉛直成分（左右の脚に作用する床反力鉛直成分の和）のパターンを示し、図４９には、典型的な歩行における上体鉛直位置と床反力鉛直成分のパターンを示す。
尚、上体鉛直位置速度は、上体代表点の鉛直位置とその速度を意味する。上体水平位置速度は、上体代表点の水平位置とその速度を意味する。上体鉛直位置速度と上体水平位置速度を合わせて、上体位置速度と呼ぶ。
また、「床反力鉛直成分」は、厳密には、床反力の鉛直軸まわりのモーメント成分と区別するために、「並進床反力鉛直成分」と記述すべきであるが、言葉が長くなるので、ここでは「並進」を省略する。
まず上体の動きを見てみると、歩行においては、支持脚の上を上体が通過する瞬間に上体は最も高く、走行においては、この瞬間に最も低い。すなわち、歩行と走行では、上体の上下動パターンの位相が反転している。
一方、床反力に関しては、歩行では比較的一定であるのに対し、走行においては、大きく変動し、支持脚の上を上体が通過する瞬間に床反力は最も大きい。また、当然のことながら、同時に全脚が空中に存在する瞬間において床反力は０になっている。より詳しく観察すると、走行では、支持脚を縮めた量にほぼ比例した大きさの床反力が発生する。言いかえると、走行では、脚をばねのように使って跳ねながら移動していると言える。
遅いジョギングでは、典型的な走行と同じ上体上下動の位相を持つ。また、遅いジョギングでは、同時に全脚が空中に存在する瞬間がない場合が多いが、その場合でも、支持脚と遊脚の切り換えが行われる瞬間において、床反力は、完全には０にならないがほぼ０になっている。
したがって、以上のように、上体の上下動や床反力のパターンの上記特徴から歩行と走行を区別した方が、遅いジョギングも走行とみなされ、感覚とも一致して、より適切と言えよう。
特に、最も特徴的な点で両者を区別するならば、走行とは、支持脚の切り換えが行われる瞬間において、床反力が０またはほぼ０になる移動形態であり、歩行は、それ以外の移動形態（床反力鉛直成分が比較的一定）であると言えよう。
一方、本出願人は先に特願２０００−３５２０１１号において、脚式移動ロボットの床反力を含む歩容を、動力学的平衡条件（目標歩容の重力と慣性力と床反力との釣り合い条件のことである。狭義では、目標歩容の運動による重力と慣性力の合力が目標ＺＭＰまわりに作用するモーメントが０であること。詳細は後述する。）をほぼ満足しながら、自在かつリアルタイムに生成する技術を先に提案した。この場合、基本的には、各脚体の先端部の運動を決定すると共に、上体の鉛直位置を幾何学的条件によって決定した上で、上体の水平運動が動力学的平衡条件を満たすように決定される。この技術や、特開平１０−８６０８１号公報、特開平１０−２７７９６９号公報などにて本出願人が提案してきた一連の脚式移動ロボットの制御装置は、歩行のみならず走行にも適用できるものである。
ところで、特に、全脚体が空中に浮く期間あるいは十分な並進床反力を発生できない時期（離床直前や着地直後等）を有するロボットの走行、あるいは、低摩擦路面でのロボットの移動等では、動力学的平衡条件を満たす適切な歩容を生成する上で、ロボットの重心回りの回転運動も重要になる。
しかるに、前記の技術においては、基本的には上体姿勢をほぼ一定として目標歩容を生成するようにしているため、その目標歩容の生成処理に用いる動力学モデルでは、上体姿勢の変化運動等の回転運動に伴う床反力の影響については十分に考慮されていない。このため、ロボットの走行等を適切に行い得る歩容を生成することができない場合が生じる恐れがあった。
この場合、ロボットの厳密な動力学モデルを用いて歩容を生成することで、適切な歩容を生成することは可能である。しかるに、このような厳密なモデルを用いることは、非線形性が高まることから、動力学的平衡条件を満たす目標歩容を決定する処理に要する演算量が非常に多くなる。このため、走行のように高速な移動をロボットに行なわせるための歩容をリアルタイムに生成することが困難である。
したがって、本発明の目的は、脚式移動ロボットの歩行のみならず走行等の高速移動に対しても、より一層適する歩容を生成することができる歩容生成装置を提供することにある。
より具体的には、複雑な動力学モデルを用いることなく、走行、歩行等の移動を支障なく行なうことができる歩容をリアルタイムで生成することができる歩容生成装置を提供することを目的とする。
発明の開示
本発明の脚式移動ロボットの歩容生成装置は、上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成する歩容生成装置において、少なくとも前記上体の水平方向並進運動と前記ロボットの重心を略一定に維持しつつ該ロボットの所定の部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ該各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合によって表されるものとしてあらかじめ定められた動力学モデルを用い、ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容を生成することを特徴とする（第１発明）。
かかる第１発明によれば、前記動力学モデルでは、前記姿勢変化運動と上体の水平方向運動とを合成してなる運動によって発生する総床反力は、各運動による床反力の和として表される。つまり、各運動の変化に対する床反力の変化の線形性が高まる。このため、各運動によって発生する慣性力と重力との合力に関する前記動力学的平衡条件を満たす上体の水平方向並進運動と前記姿勢変化運動との組、ひいては上体水平位置軌道と前記所定の部位の姿勢軌道とを少ない演算量で決定することが可能となる。またさらに、該動力学モデルに含まれる前記姿勢変化運動は、重心を略一定に維持する姿勢変化運動であるので、該姿勢変化運動は、並進床反力（もしくは並進慣性力）をほとんど変化させずに床反力モーメントを発生させる運動である。従って、発生させるべき並進床反力が制限される走行や低摩擦路での移動等においても、上記姿勢変化運動の調整によって動力学的平衡条件を満たし得る歩容を決定できる。
従って、第１発明によれば、複雑な動力学モデルを用いることなく、走行、歩行等の移動を支障なく行なうことができる歩容をリアルタイムで生成することができる。つまり、歩行のみならず走行等の高速移動に対しても、より一層適する歩容を生成することができる。
かかる第１発明における前記動力学モデルは、少なくとも前記上体の水平方向並進運動と前記姿勢変化運動とこれらの各運動により発生する床反力との関係を表すものであるが、該上体の水平方向並進運動及び姿勢変化運動に加えて、各脚体先端部の運動が含まれていてもよく（第２発明）、さらには上体の鉛直方向並進運動が含まれていてもよい（第３発明）。より詳しくは、第２発明では、少なくとも各脚体先端部の運動と上体の水平方向並進運動と前記ロボットの重心を略一定に維持しつつ該ロボットの所定の部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ該各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合によって表されるものとしてあらかじめ定められた動力学モデルを用い、ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容を生成する。
また、第３発明では、少なくとも各脚体先端部の運動と上体の水平方向並進運動と上体の鉛直方向並進運動と前記ロボットの重心を略一定に維持しつつ該ロボットの所定の部位の姿勢を変化させる姿勢変化運動とこれらの各運動により発生する床反力との関係を表し、且つ該各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合によって表されるものとしてあらかじめ定められた動力学モデルを用い、ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容を生成する。
前記第２発明では、前記第１発明と同様の作用効果を奏することに加えて、前記動力学モデルが各脚体先端部の運動を含むため、該動力学モデルの近似精度が高まる。その結果、前記動力学的平衡条件をより高い精度で満足する目標歩容を生成できる。なお、この第２発明では、例えば各脚体先端部の運動を動力学的平衡条件によらずに、各脚体先端部の着地位置姿勢や着地時刻の要求値等に応じて決定することで、動力学的平衡条件を満たす目標歩容の生成がより容易になる。
また、前記第３発明では、前記第１発明と同様の作用効果を奏することに加えて、前記動力学モデルが各脚体先端部の運動と上体の鉛直方向運動とを含むため、該動力学モデルの近似精度がさらに高まる。その結果、前記動力学的平衡条件をさらに高い精度で満足する目標歩容を生成できる。なお、この第３発明では、例えば各脚体先端部の運動を前記第２発明で説明したごとく動力学的平衡条件によらずに決定すると共に、上体の鉛直方向運動（上体の鉛直位置軌道）を各脚体の関節の変位に関する所定の幾何学的条件に基づき決定し（好ましくは歩行歩容を生成するとき）、あるいは目標床反力鉛直成分もしくはロボットの全体重心の加速度鉛直成分に応じて決定する（好ましくは走行歩容を生成するとき）ことが好ましい。これにより、動力学的平衡条件を満たす目標歩容の生成がより容易になると共に、生成しようとする歩容の形態により適した目標歩容を生成できる。
前記第１〜第３発明では、前記ロボットの目標ＺＭＰを設定する手段を備え、前記動力学的平衡条件は、前記目標歩容の運動によって前記目標ＺＭＰ回りに発生するモーメントが略零であるという条件であることが望ましい（第４発明）。これにより、ロボットの移動時の安定性の高い目標歩容を生成できる。なお、この他に前記動力学的平衡条件は、特定の成分に対して前記合力と床反力とを釣り合わせるというような条件でもよい。
また、前記第１〜第４発明では、前記所定の部位は、ロボットの上体であることが好ましい（第５発明）。すなわち、ロボットの上体は一般に比較的重いので、その上体の姿勢変化運動の変化によって床反力モーメントの変化が生じやすい。従って、並進床反力を十分に発生させることができない状況（走行で全脚体が空中に浮く時期等）でも、ロボットの全体の運動の変動を少ないものとしつつ動力学的平衡条件を満たすような目標歩容を生成できる。
また、前記第１発明では、前記動力学モデルは、前記上体の水平方向並進運動を質点の水平方向並進運動により表し、前記所定の部位の姿勢変化運動をフライホイールの回転運動により表すモデルであることが好ましい（第６発明）。
同様に、前記第２発明では、前記動力学モデルは、前記各脚体先端部の運動をそれぞれ各脚体に対応する質点の運動により表し、前記上体の水平方向並進運動を該上体に対応する質点の水平方向並進運動で表し、前記所定の部位の姿勢変化運動をフライホイールの回転運動により表すモデルであることが好ましい（第７発明）。
同様に、前記第３発明では、前記動力学モデルは、前記各脚体先端部の運動をそれぞれ各脚体に対応する質点の運動により表し、前記上体の水平方向並進運動及び鉛直方向並進運動をそれぞれ該上体に対応する質点の水平方向並進運動及び鉛直方向並進運動で表し、前記所定の部位の姿勢変化運動をフライホイールの回転運動により表すモデルであることが好ましい（第８発明）。
すなわち、上記第６〜第８発明のように質点の運動とフライホイールの運動とで前記動力学モデルの各運動を表現することによって、各運動を合成してなる運動によって発生する総床反力が各運動に対応する床反力の線形結合によって表される動力学モデルを好適に構築することができると共に、該動力学モデルを用いることで、動力学的平衡条件を満たす目標歩容の生成処理が容易になる。
発明を実施するための最良の形態
以下、添付図面を参照して本発明の一実施形態に係る脚式移動ロボットの歩容生成装置及び制御装置を説明する。尚、本発明の実施形態では、脚式移動ロボットとしては２足移動ロボットを例にとる。
図１は、本実施形態に係る歩容生成装置及び制御装置が適用される脚式移動ロボットとしての２足移動ロボットの全体的構成の概略を示す概略図である。
図示の如く、２足移動ロボット（以下、ロボットという）１は上体２４から下方に延設された左右一対の脚体（脚部リンク）２，２を備える。両脚体２，２は同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体２４側から順に、股（腰部）の回旋（回転）用（上体２４に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌ（符号Ｒ、Ｌはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ）と、股（腰部）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、股（腰部）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌと、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。
各脚体２の足首の２つの関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部には、各脚体２の先端部を構成する足平（足部）２２Ｒ（Ｌ）が取着されると共に、両脚体２，２の最上位には、各脚体２の股の３つの関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して前記上体（基体）２４が取り付けられている。上体２４の内部には、詳細を後述する制御ユニット２６などが格納されている。なお、図１では図示の便宜上、制御ユニット２６を上体２４の外部に記載している。
上記構成の各脚体２においては、股関節（あるいは腰関節）は関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）から構成され、膝関節は関節１６Ｒ（Ｌ）から構成され、足関節（足首関節）は関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）から構成される。また股関節と膝関節とは大腿リンク２８Ｒ（Ｌ）で連結され、膝関節と足関節とは下腿リンク３０Ｒ（Ｌ）で連結される。
尚、図示は省略するが、上体２４の上部の両側部には左右一対の腕体が取り付けられると共に、上体２４の上端部には頭部が配置される。これらの腕体及び頭部は、本発明の要旨と直接的な関連を有しないので詳細な説明は省略するが、各腕体は、それに備える複数の関節によって、該腕体を上体２４に対して前後に振る等の運動を行なうことが可能となっている。
各脚体２の上記構成により、各脚体２の足平２２Ｒ（Ｌ）は、上体２４に対して６つの自由度を与えられている。そして、ロボット１の移動に際して両脚体２，２を合わせて６＊２＝１２個（この明細書で「＊」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す）の関節を適宜な角度で駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行なうことができる。これによりロボット１は任意に３次元空間を移動することができる。
尚、この明細書で後述する上体２４の位置および速度は、上体２４の所定位置、具体的には上体２４のあらかじめ定めた代表点（例えば左右の股関節の間の中央点等）の位置およびその移動速度を意味する。同様に、各足平２２Ｒ，２２Ｌの位置及び速度は、各足平２２Ｒ，２２Ｌのあらかじめ定めた代表点の位置及びその移動速度を意味する。この場合、本実施形態では各足平２２Ｒ，２２Ｌの代表点は、例えば各足平２２Ｒ，２２Ｌの底面上（より具体的には各脚体２の足首関節の中心から各足平２２Ｒ，２２Ｌの底面への垂線が該底面と交わる点等）に設定される。
図１に示す如く、各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下方には足平２２Ｒ（Ｌ）との間に公知の６軸力センサ３４が介装されている。該６軸力センサ３４は、各脚体２の足平２２Ｒ（Ｌ）の着地の有無、および各脚体２に作用する床反力（接地荷重）などを検出するためのものであり、該床反力の並進力の３方向成分Ｆｘ，Ｆｙ，Ｆｚ並びにモーメントの３方向成分Ｍｘ，Ｍｙ，Ｍｚの検出信号を制御ユニット２６に出力する。また、上体２４には、Ｚ軸（鉛直方向（重力方向））に対する上体２４の傾き（姿勢角）とその角速度とを検出するための傾斜センサ３６が設置され、その検出信号が該傾斜センサ３６から制御ユニット２６に出力される。また、詳細構造の図示は省略するが、ロボット１の各関節には、それを駆動するために電動モータ３２（図３参照）と、その電動モータ３２の回転量（各関節の回転角）を検出するためのエンコーダ（ロータリエンコーダ）３３（図３参照）とが設けられ、該エンコーダ３３の検出信号が該エンコーダ３３から制御ユニット２６に出力される。
図２に示すように、各足平２２Ｒ（Ｌ）の上方には、前記６軸力センサ３４との間にばね機構３８が装備されると共に、足底（各足平２２Ｒ（Ｌ）の底面）にはゴムなどからなる足底弾性体４０が貼られている。これらのばね機構３８及び足底弾性体４０によりコンプライアンス機構４２が構成されている。ばね機構３８は具体的には、足平２２Ｒ（Ｌ）の上面部に取り付けられた方形状のガイド部材（図示せず）と、足首関節１８Ｒ（Ｌ）（図２では足首関節２０Ｒ（Ｌ）を省略している）および６軸力センサ３４側に取り付けられ、前記ガイド部材内に弾性材（ゴムやばね）を介して微動自在に収納されるピストン状部材（図示せず）とから構成されている。
図２に実線で表示された足平２２Ｒ（Ｌ）は、床反力を受けていないときの状態を示している。各脚体２が床反力を受けると、コンプライアンス機構４２のばね機構３８と足底弾性体４０とがたわみ、足平２２Ｒ（Ｌ）は図中に点線で例示したような位置姿勢に移る。このコンプライアンス機構４２の構造は、着地衝撃を緩和するためだけでなく、ロボット１の制御性を高めるためにも重要なものである。尚、その詳細は本出願人に先に提案した特開平５−３０５５８４号に記載されているので、詳細な説明は省略する。
さらに、図１では図示を省略するが、ロボット１の外部には、該ロボット１の操縦用のジョイスティック（操作器）４４（図３参照）が設けられ、そのジョイスティック４４を操作することで、直進移動しているロボット１を旋回させるなど、ロボット１の歩容に対する要求を必要に応じて制御ユニット２６に入力できるように構成される。この場合、入力できる要求は、例えばロボット１の移動時の歩容形態（歩行、走行等）、遊脚の着地位置姿勢や着地時刻、あるいはこれらの着地位置姿勢や着地時刻を規定する指令データ（例えばロボット１の移動方向、移動速度等）である。
図３は制御ユニット２６の構成を示すブロック図である。該制御ユニット２６はマイクロコンピュータにより構成されており、ＣＰＵからなる第１の演算装置６０及び第２の演算装置６２、Ａ／Ｄ変換器５０、カウンタ５６、Ｄ／Ａ変換器６６、ＲＡＭ５４、ＲＯＭ６４、並びにこれらの間のデータ授受を行なうバスライン５２を備えている。この制御ユニット２６では、前記各脚体２の６軸力センサ３４、傾斜センサ３６、ジョイスティック４４等の出力信号はＡ／Ｄ変換器５０でデジタル値に変換された後、バスライン５２を介してＲＡＭ５４に入力される。また、ロボット１の各関節のエンコーダ３３（ロータリエンコーダ）の出力はカウンタ５６を介してＲＡＭ５４に入力される。
前記第１の演算装置６０は後述の如く、目標歩容を生成すると共に、関節角変位指令（各関節の変位角もしくは各電動モータ３２の回転角の指令値）を算出し、ＲＡＭ５４に送出する。また第２の演算装置６２はＲＡＭ５４から関節角変位指令と、前記エンコーダ３３の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してＤ／Ａ変換器６６とサーボアンプ３２ａとを介して各関節を駆動する電動モータ３２に出力する。
図４は、本実施形態におけるロボット１の歩容生成装置及び制御装置の機能的構成を全体的に示すブロック図である。この図４中の「実ロボット」の部分以外の部分が制御ユニット２６が実行する処理機能（主として第１の演算装置６０及び第２の演算装置６２の機能）によって構成されるものである。尚、以下の説明では、脚体２の左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。
以下説明すると、制御ユニット２６は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置１００を備えている。該歩容生成装置１００は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置１００が出力する目標歩容は、目標上体位置姿勢軌道（上体２４の目標位置及び目標姿勢の軌道）、目標足平位置姿勢軌道（各足平２２の目標位置及び目標姿勢の軌道）、目標腕姿勢軌道（各腕体の目標姿勢の軌道）、目標全床反力中心点（目標ＺＭＰ）軌道、および目標全床反力軌道から構成される。尚、脚体２や腕体以外に、上体２４に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、上記歩容における「軌道」は時間的変化のパターン（時系列パターン）を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はＺ軸（鉛直軸）に対するロール方向（Ｘ軸まわり）の上体２４の傾斜角（姿勢角）とピッチ方向（Ｙ軸まわり）の上体２４の傾斜角（姿勢角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。
尚、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット１の運動に係わる歩容を総称的に「運動」という。また、各足平２２に作用する床反力（並進力及びモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点（全床反力の中心点の目標位置）を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分（鉛直軸（Ｚ軸）まわりのモーメント）を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分（水平軸（Ｘ軸及びＹ軸）回りのモーメント）は零になる。
尚、動力学的平衡条件を満足する歩容では、ロボット１の目標運動軌道から算出されるＺＭＰ（目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点）と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ＺＭＰ軌道を与えると言っても同じことである（詳細は、本願出願人による特願２０００−３５２０１１号等を参照）。
このような背景から、上記特願２０００−３５２０１１号の明細書では目標歩容を、次のように定義していた。
ａ）広義の目標歩容とは、１歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
ｂ）狭義の目標歩容とは、１歩の期間の目標運動軌道とそのＺＭＰ軌道との組である。
ｃ）一連の歩容は、いくつかの歩容がつながったものとする。
歩行においては、本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法によってロボット１の上体２４の鉛直位置（上体高さ）が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が零になるようにロボット１の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、特願２０００−３５２０１１号の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ＺＭＰだけで十分であった。したがって、狭義の目標歩容の定義としては、上記のｂ）で十分であった。それに対し、本実施形態で説明するロボット１の走行歩容（詳細は後述する）においては、床反力鉛直成分（並進床反力鉛直成分）も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット１の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のｂ’）を用いる。
ｂ’）狭義の目標歩容とは、１歩の期間の目標運動軌道とその目標ＺＭＰ軌道と目標並進床反力鉛直成分軌道との組である。
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は上記ｂ’）の狭義の目標歩容の意味で使用する。この場合、目標歩容の「１歩」は、ロボット１の片方の脚体２が着地してからもう一方の脚体２が着地するまでの意味で使用する。尚、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分（鉛直軸回り成分）は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、歩容における両脚支持期とは言うまでもなく、ロボット１がその自重を両脚体２，２で支持する期間、片脚支持期とはいずれか一方のみの脚体２でロボット１の自重を支持する期間、空中期とは両脚体２，２が床から離れている（空中に浮いている）期間を言う。片脚支持期においてロボット１の自重を支持しない側の脚体２を「遊脚」と呼ぶ。尚、本実施形態で説明する走行歩容では、両脚支持期は無く、片脚支持期（着地期）と空中期とが交互に繰り返される。この場合、空中期では両脚２，２とも、ロボット１の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体２、支持脚であった脚体２をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
図５に示す走行歩容を例にして、歩容生成装置１００が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平１０−８６０８１号公報にも記載されているので、以下では、特開平１０−８６０８１号公報に記載されていない内容を主に説明する。
まず、図５に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット１の左右いずれか一方のみの脚体２（支持脚）の足平２２が着地（接地）する片脚支持期と、両脚体２，２が空中に浮く空中期とが交互に繰り返される。図５の１番目の状態は片脚支持期の開始時（初期）の状態、２番目の状態は片脚支持期の中間時点の状態、３番目の状態は片脚支持期に続く空中期の開始時（片脚支持期の終了時）の状態、４番目の状態は空中期の中間時点の状態、５番目の状態は空中期の終了時（次の片脚支持期の開始時）の状態を示している。
この走行歩容では、ロボット１は、図５の１番目の状態で示すように、片脚支持期の開始時において支持脚（ロボット１の進行方向前側の脚体２）側の足平２２のかかとで着地する。続いて、図５の２番目の状態で示すように、ロボット１は、着地した足平２２（支持脚側の足平２２）の底面のほぼ全面を着地させた後、図５の３番目の状態で示すように、その支持脚側の足平２２（図５の３番目の状態におけるロボット１の進行方向後側の脚体２の足平２２）のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了すると共に空中期が開始する。尚、片脚支持期における遊脚は、図５の１番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図５の２番目及び３番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図５の４番目の状態で示す空中期を経た後、ロボット１は、遊脚（空中期の開始直前の片脚支持期で遊脚となっていた脚体２）の足平２２のかかとで着地し、次の片脚支持期が開始される。
図５の走行歩容を考慮しつつ、前記歩容生成装置１００が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置１００が目標歩容を生成するとき、遊脚側の足平２２の着地位置姿勢（着地予定位置姿勢）や着地時刻（着地予定時刻）等の目標歩容生成用の基本的な要求値（要求パラメータ）が、前記ジョイスティック４４の所要の操作等に応じて歩容生成装置１００に与えられる。そして、歩容生成装置１００は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置１００は、上記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ（歩容パラメータという）を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。
この場合、目標足平位置姿勢軌道（より詳しくは、足平の位置及び姿勢の空間的な各成分（Ｘ軸成分等）の目標軌道）は、例えば本出願人が特許第３２３３４５０号にて提案した有限時間整定フィルタを用いて各足平２２毎に生成される。この有限時間整定フィルタは、可変時定数の１次遅れフィルタ、すなわち、伝達関数が１／（１＋τｓ）の形で表されるフィルタ（τは可変の時定数。以下、このフィルタを単位フィルタという）を複数段（本実施形態では３段以上）、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値（＞０）から減少されていき、最終的には、該残時間が０になる指定時刻にて、τの値が０になるように設定される。そして、有限時間整定フィルタには、前記指定値（より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量）に応じた高さのステップ入力が与えられる。このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を０もしくはほぼ０にすることができる。特に、単位フィルタを３段以上（３段でよい）、接続した場合には、有限時間整定フィルタの出力の変化加速度（変化速度の微分値）をも０もしくはほぼ０にすることができる。
このような有限時間整定フィルタを用いる足平位置姿勢軌道（足平２２が着地してから次に着地するまでの位置姿勢軌道）の生成は、例えば次のように行なわれる。例えばＸ軸方向（前後方向）の目標足平位置軌道は次のように生成される。すなわち、前記要求パラメータにより定まる各足平２２の次の着地予定位置のＸ軸方向位置（より詳しくは、次の着地予定位置のひとつ前の着地位置に対するＸ軸方向の変化量（移動量）。これは前記指定値に相当する）に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に前記時定数τが所定の初期値に初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、足平２２のＸ軸方向位置の軌道生成が開始される。そして、この軌道生成時には、前記時定数τは、足平２２の着地予定時刻（これは前記指定時刻に相当する）までに初期値から０まで減少していくように、逐次可変設定される。これにより、着地予定時刻で着地予定位置に達するような、足平２２のＸ軸方向の位置の軌道が生成される。
また、Ｚ軸方向（鉛直方向）の目標足平位置軌道は、例えば次のように生成される。すなわち、まず、足平２２の次の着地予定位置及び着地予定時刻に応じて、該足平２２の高さ（鉛直位置）が最大になるときの該足平２２のＺ軸方向位置（以下、最高点位置という）とその最高点位置への到達時刻とが決定される。そして、その最高点位置（これは前記指定値に相当する）に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に時定数τが初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、前記最高点位置までのＺ軸方向の足平位置軌道が逐次生成される。この際、時定数τは、最高点位置への到達時刻（前記指定時刻に相当）までに初期値から０まで減少するように逐次可変設定される。さらに、最高点位置までのＺ軸方向位置の軌道の生成が終了したら、時定数τを初期化すると共にいままでのステップ入力と逆極性のステップ入力（より詳しくは、最高点位置から次の着地予定位置までのＺ軸方向の変化量（これは前記指定値に相当する）に応じた高さの逆極性のステップ入力）が有限時間整定フィルタに入力され、該最高点位置から着地予定位置までのＺ軸方向の足平位置の軌道が逐次生成される。この際、時定数τは足平２２の着地予定時刻までに初期値から０まで減少するように逐次可変設定される。
尚、Ｚ軸方向の足平位置軌道の生成においては、時定数τを軌道生成開始時刻から足平２２の着地予定時刻まで、初期値から０まで継続的に減少するように可変設定すると共に、最高点位置への到達時刻もしくはその近傍時刻で、ステップ入力の極性を逆極性に切り替えることで、Ｚ軸方向の足平位置軌道を生成するようにしてもよい。この場合には、足平２２を所望の最高点位置に精度よく到達させることはできないが、着地予定時刻での着地予定位置への到達は問題なく行なうことができる。
足平姿勢軌道についても、上述した足平位置軌道と同様に有限時間整定フィルタを用いて生成することができる。この場合、足平姿勢の空間的な各成分のうち、その姿勢の角度変化が単調的（単調増加もしくは単調減少）なものとなる成分については、前記したＸ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。また、姿勢の角度変化が極大値もしくは極小値をもつような成分については、前記したＺ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平２２の目標位置姿勢軌道である。
上述のように生成される目標足平位置姿勢軌道は、各足平２２の位置が、その初期接地状態（目標歩容の初期時刻の状態）から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を０またはほぼ０にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平２２の着地瞬間における対地速度（床に固定された支持脚座標系での各足平２２の位置の変化速度）が０またはほぼ０になる。したがって、走行歩容において同時に全脚体２，２が空中に存在する状態（空中期での状態）から着地しても、着地衝撃が小さくなる。
前記走行歩容においては、ロボット１に作用する重力によって空中期後半から上体２４の鉛直速度は下向きになり、着地時でも下向きのままである。したがって、上記のように各足平２２の着地瞬間における対地速度が０またはほぼ０になるように目標足平位置姿勢軌道を生成すると共に、後述する如く動力学的平衡条件を満たすように上体２４の目標位置姿勢軌道を生成したとき、着地直前において、上体２４に対する遊脚側の足平２２の相対速度は、上向きになる。すなわち、走行歩容の着地瞬間では、ロボット１の目標歩容は遊脚側の脚体２２を上体２４側に引っ込めながら着地するような歩容となる。言い換えれば、本実施例での目標歩容では、ロボット１は、着地瞬間において、遊脚側の足平２２の対地速度が０またはほぼ０になるように、上体２４から見て該足平２２を引き上げるようにして着地する。これによって、着地衝撃は小さくなり、着地衝撃が過大になるのを防止するようにしている。
また、本実施形態では、有限時間整定フィルタは、単位フィルタを３段以上（例えば３段）、直列に接続したものであるため、着地予定時刻までに各足平２２の速度（足平位置の変化速度）が０またはほぼ０になるだけでなく、各足平２２は、その加速度も着地予定時刻にて０またはほぼ０になって停止する。つまり、着地瞬間における対地加速度も０またはほぼ０になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット１の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、着地予定時刻にて各足平２２の対地速度を０またはほぼ０にする上では、有限時間整定フィルタの単位フィルタの段数は２段でもよいが、この場合には、着地予定時刻での各足平２２の加速度は一般には０にならない。
尚、足平姿勢に関しては、各足平２２が着地予定時刻にてその踵で着地した後、該足平２２の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平２２の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
また、本実施形態では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の変化速度が０またはほぼ０になる（足平位置の時間微分値が０になる）ように、さらには、該着地予定時刻での足平位置の変化加速度（変化速度の時間微分値）が０またはほぼ０になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平２２の底面のほぼ全面が床に設置する時刻にて、各足平２２の姿勢の変化速度、さらにはその変変化加速度が０またはほぼ０になるように多項式などの関数が設定される。
目標床反力鉛直成分軌道は、例えば図６のように設定される。本実施形態では、走行歩容における目標床反力鉛直成分軌道の形状（詳しくは片脚支持期での形状）は、台形状（床反力鉛直成分の増加側に凸の形状）に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ（床反力鉛直成分軌道パラメータ）が決定される。尚、走行歩容の空中期では、目標床反力鉛直成分は定常的に０に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように（値が不連続にならないように）設定するのが良い。これは床反力を制御する際のロボット１の関節の動作を滑らかにするためである。尚、「実質的に連続」というのは、アナログ的に連続な軌道（真の意味での連続な軌道）を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。
目標ＺＭＰ軌道は次のように設定される。図５の走行歩容においては、前記したように支持脚側足平２２のかかとで着地し、次にその支持脚側足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚側足平２２のかかとで着地する。したがって、片脚支持期での目標ＺＭＰ軌道は、図７の上段図に示すように、支持脚側足平２２のかかとを初期位置として、次に支持脚側足平２２の底面のほぼ全面が接地する期間において該足平２２の前後方向の中央に移動し、その後、離床時までに支持脚側足平２２のつまさきに移動するように設定される。ここで、図７の上段図は、Ｘ軸方向（前後方向）の目標ＺＭＰ軌道を示すものであり、図７の下段図はＹ軸方向（左右方向）の目標ＺＭＰ軌道を示すものである。尚、片脚支持期におけるＹ軸方向の目標ＺＭＰ軌道は、図７の下段図に示すように、Ｙ軸方向での支持脚側脚体２の足首関節の中心位置と同じ位置に設定される。
走行歩容では、さらに片脚支持期の終了後、両脚体２，２が床から離れ、床反力鉛直成分が０になる。床反力鉛直成分が０の時、すなわち空中期には、ロボット１の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット１に作用する重力と慣性力との合力のモーメントは０であるので、目標ＺＭＰは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が０である作用点」というＺＭＰの条件を満たす。言いかえれば、任意の点に目標ＺＭＰを設定しても、上記合力が目標ＺＭＰ回りに作用するモーメントの水平成分が０であるという動力学的平衡条件を満足する。したがって、目標ＺＭＰを不連続に設定しても構わない。例えば、空中期では、目標ＺＭＰを、離床時（片脚支持期の終了時）の目標ＺＭＰ位置から移動しないように設定し、空中期終端において、着地時の目標ＺＭＰ位置に不連続（ステップ状）に移動するように該目標ＺＭＰ軌道を設定しても構わない。しかし本実施形態では、図７の上段図に示すように、空中期における目標ＺＭＰ軌道のＸ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側足平２２のつまさきから遊脚側足平２２のかかとの着地位置まで連続的に移動するようにした。また、図７の下段図に示すように、空中期における目標ＺＭＰ軌道のＹ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側脚体２の足首関節の中心のＹ軸方向位置から遊脚側脚体２の足首関節の中心のＹ軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ＺＭＰ軌道を連続（実質的に連続）にした。そして、後述するように、目標ＺＭＰまわりの重力と慣性力との合力のモーメント（鉛直成分を除く）が零になるように目標歩容を生成する（より具体的には目標上体位置姿勢軌道を調整する）ようにした。
以下に目標ＺＭＰ軌道を連続的にする理由を述べる。空中期においては、厳密動力学モデルを用いて、重力と慣性力との合力が目標ＺＭＰまわりに作用するモーメントが０になり、且つ目標床反力鉛直成分を０として目標歩容を生成すれば、生成された目標歩容による重力と慣性力との合力が、床に固定されたある座標系（これをグローバル座標系と呼ぶ）の原点まわりに作用するモーメントの真値（厳密動力学モデルによって算出される重力と慣性力との合力が前記座標系原点まわりに作用するモーメントのことであり、以降、原点まわり真モーメントと呼ぶ。）は０となる。
しかし、上記のごとく生成する時に用いる動力学モデルが厳密モデルでなく近似モデルの場合には、生成された歩容の原点まわり真モーメントは０とならない場合がある。しかも、近似モデルが、動力学を表現するのに一般的である微分（差分）方程式または積分方程式で記述されているとすると、原点まわり真モーメントは目標ＺＭＰの位置に依存し、目標ＺＭＰの位置を微小量だけ変更すると、原点まわり真モーメントも微小量だけ移動する場合がある。したがって、この場合に、目標ＺＭＰの位置を不連続に移動させると、原点まわり真モーメントも不連続に変化する。
これは、生成された歩容の真の慣性力（厳密モデルで算出された慣性力）が不連続になることを意味する。さらにこれは、ロボット１のいずれかまたはすべての関節変位の加速度（角加速度）が不連続になることを意味する。
以上の理由により、モデルの近似誤差を考慮すると、生成された歩容が滑らかになるようにするために、空中期においても目標ＺＭＰ軌道を連続（実質的に連続）にしておくのが望ましい。但し、本実施形態で用いる後述の動力学モデルでは、目標ＺＭＰの位置によらずに、目標ＺＭＰ回りモーメントの水平成分を０にするような目標歩容を一義的に生成できるので、必ずしも目標ＺＭＰを連続にしておく必要はない。
尚、本実施形態では、図７に示したような目標ＺＭＰ軌道の折れ点の位置や時刻が、ＺＭＰ軌道パラメータ（目標ＺＭＰ軌道を規定するパラメータ）として設定される。また、上記したＺＭＰ軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。
ＺＭＰ軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット１の接地面を含む最小の凸多角形（いわゆる支持多角形）の中央付近に目標ＺＭＰが存在する状態を安定余裕が高いと言う（詳細は特開平１０−８６０８１号公報を参照）。図７の目標ＺＭＰ軌道はこのような条件を満たすように設定したものである。
また、目標腕姿勢は、上体２４に対する相対姿勢で表す。
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は前述のごとく床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。
本実施形態では、歩容生成装置１００は、目標上体姿勢だけでなく、基準上体姿勢も生成する。この基準上体姿勢は、歩容に対する要求（歩容生成装置１００に対する行動計画部などの装置または外部（前記ジョイスティック４４等）からの要求）にそのまま従って生成される上体姿勢である。
目標上体姿勢（以降、「基準」が付いていない場合には、目標上体姿勢を表す）は、長期的には基準上体姿勢に追従するかまたは一致するように生成される。
目標上体姿勢は、歩行においては、本願出願人による特願２０００−３５２０１１号の明細書に記載した実施形態のごとく通常、常に基準上体姿勢に一致させておけば良い。特願２０００−３５２０１１号では、基準上体姿勢という概念は記載されていないが、目標上体姿勢パターンを、明示的かつ優先的に与えていたので、基準上体姿勢に目標上体姿勢が常に一致していることと同じことである。
しかし、走行など空中期がある歩容や低摩擦床面での歩行においては、単に上体水平加速度を調整するだけでは、目標歩容の床反力水平成分が許容範囲以内（あるいは摩擦限界以内）に存在するようにしつつ動力学的平衡条件を満足することができない。
そこで、本実施形態においては、目標上体姿勢を必要に応じて基準上体姿勢から故意にずらすこととした。より具体的には、以下に説明するふたつの運動モードを複合的に発生させることにより、目標歩容の床反力水平成分が許容範囲以内（あるいは摩擦限界以内）に存在しつつ動力学的平衡条件を満足させるようにした。
図８のように、ロボット１のある運動状態から、上体水平加速度だけを摂動（微小変化）させると、ロボット１の全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生するロボット１の慣性力と重力との合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに（ロボット１の全体重心鉛直加速度を摂動させずに）、目標ＺＭＰまわりの床反力モーメント成分（ただし鉛直軸まわり成分を除く）と床反力水平成分とを摂動させる。このようにロボット１の上体水平加速度を摂動させる運動モードを上体並進モードと呼ぶ。
言いかえると、床反力鉛直成分を変化させずに、目標ＺＭＰまわりの床反力モーメント成分（ただし鉛直軸まわり成分を除く）と床反力水平成分とを変化させる運動を上体並進モードと呼ぶ。
この時の単位加速度当たりの床反力モーメント成分の変化をΔＭｐ、単位加速度当たりの床反力水平成分の変化をΔＦｐとする。図８に示す状況で上体２４を前方に水平加速すると、ΔＭｐとΔＦｐは図８に示す矢印の向きに作用する。
感覚的に判り易くするために、運動によって発生する慣性力と重力との合力に釣り合う床反力を用いて表現したが、慣性力と重力との合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力とは、互いに大きさが同じで向きが逆になっている。
それに対し、図９のように、ロボット１のある運動状態から、ある点Ｐｒまわりに上体姿勢角加速度（上体２４の姿勢角の角加速度）を摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量が摂動する。すなわち、点Ｐｒまわりの上体姿勢角加速度の摂動は、床反力鉛直成分と床反力水平成分とを摂動させずに、目標ＺＭＰまわりの床反力モーメント成分（鉛直軸まわり成分を除く）を摂動させる。このようにロボット１の上体姿勢角加速度を摂動させる運動モードを上体回転モードと呼ぶ。
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ＺＭＰまわりの床反力モーメント成分（鉛直軸まわり成分を除く）を変化させる運動を上体回転モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント成分の変化をΔＭｒ、単位角加速度当たりの床反力水平成分の変化をΔＦｒとする。ΔＦｒは零である。図９に示す状況で上体２４が前傾するように上体姿勢角の角加速度を発生させると、ΔＭｒは図９に示す矢印の向きに作用する。
次に、本実施形態に用いられるロボット動力学モデルについて説明する。本実施形態では単純化された（近似された）以下に示す動力学モデルを用いる。ただし、以下に示す動力学モデルに関しては、キネマティクスモデル（関節、リンクの構造や寸法を表すモデルであり、言い換えると、関節変位とリンクの位置姿勢との関係を表すモデルである。）も必要である。
図１０は、本実施形態に用いられるロボット動力学モデルである。図示の如く、この動力学モデルは、ロボット１の各脚体２にそれぞれ対応する２つの質点２ｍ，２ｍ、及び上体２４に対応する質点２４ｍからなる合計３質点と、イナーシャがあって質量のないフライホイールＦＨとから構成されるモデルである。この動力学モデルでは、デカップルド、即ち、脚体２，２の動力学（各質点２ｍ，２ｍの動力学）と上体２４の動力学（質点２４ｍ及びフライホイールＦＨの動力学）とが相互に非干渉に構成されると共に、ロボット１全体の動力学は、それらの線形結合で表される。また、さらに、上体２４の運動と床反力との関係も、上体２４の並進運動（上体並進モード）と床反力との関係、並びに上体２４の回転運動（上体回転モード）と床反力との関係に分離される。具体的には、上体質点２４ｍの水平運動によって発生する床反力は、上体２４の水平方向並進運動（上体並進モード）によって発生する床反力に対応し、フライホイールの回転運動によって発生する床反力は、上体２４の姿勢角の回転運動（上体回転モード）によって発生する床反力に対応する。
尚、ロボット１の腕体の質量は上体２４に含まれるものとし、上体質点２４ｍは腕体の質量を含む質量をもつ。本実施形態では、目標歩容における腕体の運動（腕振り運動）は、後述するように、ロボット１の腕振り以外の運動によってロボット１に発生する鉛直軸まわりの慣性力のモーメントを打ち消しつつも、上体２４に対する両腕体の全体の重心の相対位置が動かないように行なわれるので、腕体の腕振り運動による（鉛直軸まわり成分を除く）床反力モーメントへの影響と床反力水平成分への影響とは無視する。
以下に上記単純化モデルを数式化する。ただし、説明を簡単にするために、サジタルプレーン（前後軸（Ｘ軸）と鉛直軸（Ｚ軸）を含む平面）での運動方程式のみを記述し、ラテラルプレーン（左右軸（Ｙ軸）と鉛直軸（Ｚ軸）を含む平面）での運動方程式を省略した。
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。なお、各質点２ｍ，２ｍ，２４ｍはそれが対応する部位の代表点であるか、あるいはその部位の位置姿勢から幾何学的に一義的に決定される点に相当する。例えば、支持脚側脚体２の質点２ｍの位置は、該脚体２の足平２２の底面の前記代表点から所定の距離だけ上方の点とする。
Ｚｓｕｐ：支持脚質点鉛直位置
Ｚｓｗｇ：遊脚質点鉛直位置
Ｚｂ：上体質点鉛直位置（上体鉛直位置とは一般的には異なる。）
ＺＧｔｏｔａｌ：全体重心鉛直位置
Ｘｓｕｐ：支持脚質点水平位置
Ｘｓｗｇ：遊脚質点水平位置
Ｘｂ：上体質点水平位置（前記点Ｐｒから前後にある所定の距離だけオフセットした点である。オフセットは、直立時などにおいて、厳密モデルの重心位置と、本動力学モデルの重心位置がなるべく一致するように、決定される。上体水平位置とは一般的には異なる。）
ＸＧｔｏｔａｌ：全体重心水平位置
θｂｙ：鉛直方向に対するＹ軸回りの上体姿勢角（傾斜角）
ｍｂ：上体質点質量
ｍｓｕｐ：支持脚質点質量
ｍｓｗｇ：遊脚質点質量
ｍｔｏｔａｌ：ロボット総質量（＝ｍｔｏｔａｌ＋ｍｓｕｐ＋ｍｓｗｇ）
Ｊ：上体慣性モーメント（上体回転モードにおける等価慣性モーメントである。実ロボット１の上体２４部位の慣性モーメントとは一般的には一致しない。）
Ｆｘ：床反力水平成分（詳しくは並進床反力の前後方向（Ｘ軸）成分）
Ｆｚ：床反力鉛直成分（詳しくは並進床反力の鉛直方向（Ｚ軸）成分。本実施形態では、これは目標並進床反力鉛直成分に等しい）
Ｍｙ：目標ＺＭＰまわりの床反力モーメント（詳しくは床反力モーメントの左右軸（Ｙ軸）まわり成分）
尚、本実施形態では、各脚体２の質点２ｍの位置と、その脚体２の足平２２の位置（足平２２のあらかじめ定めた代表点の位置）との位置関係はあらかじめ定められており、一方の位置が決まれば、他方の位置は一義的に定まるものとされている。また、上体質点２４ｍと、上体２４の位置（上体２４のあらかじめ定められた代表点の位置）との位置関係は、上体２４の姿勢角に応じてあらかじめ定められており、一方の位置と姿勢角とが決まれば、他方の位置は一義的に定まるものとされている。
また、任意の変数Ｘに対して、ｄＸ／ｄｔはＸの１階微分を表わし、ｄ２Ｘ／ｄｔ２はＸの２階微分を表わす。したがって、変数Ｘが変位ならば、ｄＸ／ｄｔは速度、ｄ２Ｘ／ｄｔ２は加速度を意味する。ｇは重力加速度定数を示す。ここでは、ｇは正の値とする。
上記動力学モデルの運動方程式（動力学的平衡条件を表す式）は、式０１、式０２、式０３で表される。
2003057426.tif 000003
2003057426.tif 000004
また、ロボット全体重心位置には次の関係式が成立する。
2003057426.tif 000005
以下に上記動力学モデルと前記ΔＦｐ、ΔＭｐ、ΔＦｒ、ΔＭｒの関係を示す。
前記ΔＦｐは、式０２において、ｄ２Ｘｂ／ｄｔ２を単位量だけ摂動させたときのＦｘの摂動量であるから、次式によって求められる。
2003057426.tif 000006
すなわち、上体並進モードの単位加速度当たりの床反力の水平成分の変化ΔＦｐは、上記動力学モデルの上体質点２４ｍの質量に相当する。
前記ΔＭｐは、式０３において、ｄ２Ｘｂ／ｄｔ２を単位量だけ摂動させたときのＭｙの摂動量であるから、次式によって求められる。
2003057426.tif 000007
すなわち、上体並進モードの単位加速度当たりの床反力モーメント成分の変化ΔＭｐは、上記動力学モデルの上体質点質量に、上体質点２４ｍの目標ＺＭＰからの高さ（鉛直位置）を乗じたものになる。このときの上体質点２４ｍ及び目標ＺＭＰの位置と、上体質点２４ｍの運動との関係は、上体質点２４ｍを倒立振子質点、目標ＺＭＰを倒立振子支点に対応づけたときの倒立振子の挙動に相当する。
前記ΔＦｒは、式０２において、ｄ２θｂｙ／ｄｔ２を単位量だけ摂動させたときのＦｘの摂動量であるから、次式によって求められる。
2003057426.tif 000008
すなわち、上体回転モードの単位加速度当たりの並進床反力水平成分の変化ΔＦｒは、０である。
前記ΔＭｒは、式０３において、ｄ２θｂｙ／ｄｔ２を単位量だけ摂動させたときのＭｙの摂動量であるから、次式によって求められる。
2003057426.tif 000009
すなわち、上体回転モードの単位加速度当たりの床反力モーメント成分の変化ΔＭｒは、フライホイールの慣性モーメントに相当する。
本実施形態における歩容生成装置１００は、ロボット１の片方の脚体２が着地してから他方の脚体２が着地するまでの１歩分の目標歩容（前記狭義の意味での目標歩容）を単位として、その１歩分の目標歩容を順番に生成する。従って、本実施形態で生成する図５の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時（次の片脚支持期の開始時）までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置１００が今回歩容を新たに生成するとき、該歩容生成装置１００には、ロボット１の２歩先までの遊脚側足平２２の着地予定位置姿勢、着地予定時刻の要求値（要求）が歩容に対する要求パラメータとして入力される（あるいは歩容生成装置１００が記憶装置から要求パラメータを読み込む）。そして、歩容生成装置１００は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。
以下に図５の走行歩容を生成することを例にして、歩容生成装置１００の歩容生成処理の詳細を図１２〜図３８を参照しつつ説明する。図１２は、その歩容生成装置１００が実行する歩容生成処理を示すフローチャート（構造化フローチャート）である。
まずＳ０１０において時刻ｔを０に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置１００の起動時等に行なわれる。次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図１２のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。
次いで、Ｓ０１６に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはＳ０１８に進むと共に、切り替わり目でないときはＳ０３０に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
Ｓ０１８に進むときは時刻ｔが０に初期化され、次いでＳ０２０に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本実施形態では、歩容生成装置１００にジョイスティック４４等から与えらる要求パラメータは、２歩先までの遊脚側足平２２の着地予定位置姿勢（足平２２が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢）、着地予定時刻の要求値を含んでおり、その１歩目の要求値、２歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時（前記Ｓ０１６の歩容の切り替わり目）以前に歩容生成装置１００に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける１歩目の遊脚側足平２２（今回歩容での遊脚側足平２２）の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。
例えば図１５を参照して、今回歩容（１歩目）に係わる遊脚側足平２２（図では２２Ｌ）の着地予定位置姿勢の要求値が、今回歩容の支持脚側足平２２（図では２２Ｒ）の着地位置姿勢に対して、今回歩容支持脚座標系のＸ軸方向（今回歩容の支持脚側足平２２Ｒの前後方向）及びＹ軸方向（今回歩容の支持脚側足平２２Ｒの左右方向）に、それぞれｘｎｅｘｔ、ｙｎｅｘｔだけ移動し、且つＺ軸回り（鉛直軸回り）にθｚｎｅｘｔだけ回転させた位置姿勢であるとする。ここで、支持脚座標系は、支持脚側足平２２を水平姿勢（より一般的には床面に平行な姿勢）にして該支持脚側足平２２の底面のほぼ全面を床面に接触（密着）させた状態において、該支持脚側脚体２の足首中心から床面に延ばした垂線が該床面と交わる点（この点は、本実施形態の例では支持脚側足平２２の底面のほぼ全面を床面に接触させた状態では、該足平２２の代表点と合致する）を原点とし、その原点を通る水平面をＸＹ平面とするグローバル座標系（床に固定された座標系）である。この場合、Ｘ軸方向、Ｙ軸方向は、それぞれ支持脚側足平２２の前後方向、左右方向である。尚、支持脚座標系の原点は、必ずしも支持脚側足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の代表点（足平２２の位置を代表する点）に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
このとき、次回歩容支持脚座標系は、図示のように今回歩容の遊脚側足平２２Ｌの着地予定位置姿勢の要求値に従って該足平２２を着地させた場合（足平２２の代表点を着地予定位置の要求値に一致させ、且つ、足平２２の姿勢（向き）を着地予定姿勢の要求値に一致させた場合）における該足平２２Ｌの代表点（より詳しくは該代表点に合致する床上の点）を原点とし、該原点を通る水平面内における該足平２２Ｌの前後方向、左右方向をそれぞれＸ’軸方向、Ｙ’軸方向とする座標系である。
上記と同様に、２歩目の遊脚側足平２２の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系（図１５のＸ”Ｙ”座標を参照）が定まる。また、今回歩容周期は、今回歩容の支持脚側足平２２の着地予定時刻（要求値）から、１歩目（今回歩容）の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まり、次回歩容周期は、１歩目の遊脚側足平２２の着地予定時刻（要求値）から２歩目の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まる。
尚、前記要求パラメータは、本実施形態ではジョイスティック４４の所要の操作によって歩容生成装置１００に入力されるものであるが、あらかじめ該要求パラメータあるいはこれに対応する上記の支持脚座標系の位置姿勢及び歩容周期をロボット１の移動スケジュールとして記憶しておいても良い。あるいは、ジョイスティック４４などの操縦装置からの指令（要求）とそのときまでのロボットの１の移動履歴とを基に前記次回及び次次回歩容支持脚座標系、並びに今回及び次回歩容周期を決定しても良い。
次いでＳ０２２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕軌道パラメータ、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、目標床反力水平成分許容範囲を規定するパラメータも歩容パラメータに含まれる。
尚、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界（本実施形態では１歩毎の歩容の境界）においてロボット１の運動状態（足平位置姿勢、上体位置姿勢等の状態）に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。
周期的歩容である定常旋回歩容は、本実施形態では、ロボット１の２歩分の歩容、すなわち今回歩容に続く第１旋回歩容と該第１旋回歩容に続く第２旋回歩容とからなる歩容を該定常旋回歩容の１周期分の歩容として、その１周期分の歩容を繰り返す歩容である。尚、ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。また、生成する目標歩容が前記図５の走行歩容であると、その目標歩容の今回歩容は、片脚支持期及び空中期を有する走行歩容であるので、定常旋回歩容の第１旋回歩容及び第２旋回歩容は、いずれも今回歩容と同様に片脚支持期と空中期とを有する歩容である。つまり、第１旋回歩容及び第２旋回歩容の基本的な歩容形態は今回歩容と同一である。
定常旋回歩容について補足すると、２足移動ロボットでは、定常旋回歩容の１周期分は、前記した狭義の意味での歩容が、少なくとも２歩分、必要である。そして、３歩以上の歩容を１周期分の歩容とする複雑な定常旋回歩容を設定することも可能である。但し、定常旋回歩容は、後述の如く、今回歩容の終端（終了時刻）における発散成分（詳細は後述する）を決定するためだけに用いられる。このため、３歩以上の歩容を１周期とする定常旋回歩容を用いることは、歩容生成の処理が煩雑となるにも関わらず、効果は少ない。そこで、本実施形態での定常旋回歩容の１周期分の歩容を２歩分の歩容（第１及び第２旋回歩容）により構成するようにしている。尚、３足以上の脚式移動ロボットにあっては、それに応じて定常旋回歩容を定義するに足る歩容数が増加する。以下では、説明の便宜上、複数の狭義の歩容（本実施形態では２歩分の歩容）から成る定常旋回歩容を１歩の歩容とみなす。
定常旋回歩容は、歩容生成装置１００で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット１の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置１００からそのまま出力されるものではない。
尚、「発散」とは、図１３に示すように、２足移動ロボット１の上体２４の位置が両足平２２，２２の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、２足移動ロボット１の上体２４の位置が両足平２２，２２の位置（より具体的には、支持脚側足平２２の接地面に設定されたグローバル座標系（支持脚座標系）の原点）からかけ離れていく具合を表す数値である。
本実施形態では、目標歩容が、前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。ただし、継続的な歩容の代表例である定常歩容（歩容の軌道の不連続を発生することなく、同じパターンの歩容を繰り返すことができる周期的歩容であり、原理上、無限回繰り返しても発散しない歩容）の初期発散成分（定常歩容の初期時刻での発散成分）であっても、単純に０ではなく、定常歩容のパラメータが変われば、その初期発散成分も変わる。すなわち、歩き方あるいは走り方等の歩容形態によって、適切な発散成分が変わる。そこで、本実施形態では、これから生成しようとする今回歩容の後に続く定常歩容が前記今回歩容に係わる要求パラメータに応じて設定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる（より一般的には、今回歩容を定常歩容に連続させもしくは近づける）ように、今回歩容を生成する。これのような歩容生成の基本的な指針は本出願人が先に提案した特願２０００−３５２０１１号のものと同様である。
本発明の実施形態では、特願２０００−３５２０１１号の第１実施形態で用いたような線形な３質点動力学モデルを用いていないが、次式で定義される発散成分および収束成分の概念は、図１０に示したモデルのような非線形な動力学モデルの挙動の摂動分に対しても、近似的に十分な精度で適用することができる。
2003057426.tif 000010
ただし、ここでの上体質点水平位置は、図１０に示す前記動力学モデルにおいては、上体質点水平位置Ｘｂを表す。
また、ω０はある所定の値であり、走行時では、特願２０００−３５２０１１号の歩行歩容生成時の値に対して若干変更する必要がある。
発散成分および収束成分に関するその他の詳細は、特願２０００−３５２０１１号に記述されているので、ここではこれ以上言及しない。
本実施形態においては、特願２０００−３５２０１１号に示した方式に加え、さらに、後述するように、目標床反力鉛直成分軌道を規定する歩容パラメータを設定し、この目標床反力鉛直成分を動力学的に満足するようにロボット１の全体重心鉛直位置を決定する。この場合、床反力鉛直成分の２階積分値がロボット１の全体重心鉛直位置を規定するものになるので、目標床反力鉛直成分の設定が悪いと、ロボット１の全体重心鉛直位置もしくは上体鉛直位置が高くなり過ぎたり低くなり過ぎたりする。したがって、目標床反力鉛直成分の設定方法も重要な課題である。しかし、床反力鉛直成分と上体鉛直位置との関係は、ＺＭＰと上体水平位置との関係に似ているので、上体水平位置速度を適切にするための目標ＺＭＰ決定手法の一部を、以下の本実施形態に示すように、少し変更するだけで、上体鉛直位置速度を適切にするための目標床反力鉛直成分の決定手法に適用することができる。
本題に戻り、Ｓ０２２では、図１４に示すフローチャートに従って、以下の処理が行われる。
まず、Ｓ１００において、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に具体的な設定方法を図１５を参照して説明する。尚、以降の説明では、支持脚側の脚体２の足平２２を支持脚足平と称し、遊脚側の脚体２の足平２を遊脚足平を称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻もしくはそれらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第１旋回歩容および第２旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平２２は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢（＝前回歩容終端遊脚足平位置姿勢）から、前記要求パラメータにおける２歩目の遊脚側足平２２の着地予定位置姿勢の要求値（今回歩容の支持脚足平２２の次回歩容における着地予定位置姿勢の要求値）もしくは該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（詳しくは次回歩容支持脚座標系から見た軌道）を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
尚、次回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平２２を接地させたまま、つま先を下げるように該足平２２を水平姿勢までピッチ方向に所定角度回転させたときの該足平の位置姿勢が次次回歩容支持脚座標系の位置姿勢に合致するように決定される。換言すれば、次回歩容終端遊脚足平位置姿勢は、前記要求パラメータにおける２歩目の遊脚側足平２２の着地位置姿勢の要求値から、該足平２２をすべらないように接地させたまま、つま先を持ち上げるように該足平２２をピッチ方向に所定角度回転させた状態（つま先を上げてかかとを着地させた状態）での該足平２２の位置姿勢である。
また、第１旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、前記次回歩容終端遊脚足平位置姿勢の場合と同様、前記次回歩容支持脚座標系もしくはこれに対応する前記要求パラメータの１歩目（今回歩容）の遊脚着地予定位置姿勢の要求値に応じて定まるものである。すなわち、該今回歩容終端遊脚足平位置姿勢は、その位置姿勢から、足平２２を接地させたまま、つま先を下げるように該足平２２を回転させて該足平２２の底面のほぼ全面を床面に接地させたときの該足平の代表点が次回歩容支持脚座標系の原点に合致するように決定される。
第１旋回歩容終端遊脚足平位置姿勢は、今回歩容終端遊脚足平位置姿勢や次回歩容終端遊脚足平位置姿勢の決定手法と同様に、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に基づいて決定される。より具体的には、第１旋回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平２２を接地させたまま、すべらないように該足平２２を水平姿勢まで所定角度回転させたときの足平位置姿勢が、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に合致するように設定される。
第１旋回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、第１旋回歩容支持脚足平着地予定位置姿勢が設定される。第１旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢に基づいて設定される。より具体的には、第１旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢である。なお、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と次次次回歩容支持脚座標系との相対的位置姿勢関係が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように設定される。
第１旋回歩容終端支持脚足平位置姿勢は、第１旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第１旋回歩容初期支持脚足平位置姿勢から、前記第１旋回歩容支持脚足平着地予定位置姿勢に至る足平位置姿勢軌道（より詳しくは次回歩容支持脚座標系から見た軌道）を、第１旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
第２旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢とされる。第２旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢とされる。
第２旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第２旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
第１旋回歩容および第２旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第１旋回歩容及び第２旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。尚、今回歩容、第１旋回歩容および第２旋回歩容の上記以外の運動パラメータ（両脚支持期時間などの時間パラメータを含む）は、上記決定されたパラメータに応じて、歩容の条件（アクチュエータの速度が許容範囲に入っているか、可動角を超えていないか、床などと干渉していないかなど）を満足するように適宜決定する。
次に、Ｓ１０２に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期（第１旋回歩容の初期）と終端（第２旋回歩容の終端）とでつながるように（定常歩容の初期、終端での基準上体姿勢の姿勢角及びその角速度が一致するように）に設定されている限り、一定姿勢である必要はないが、本実施形態では理解を容易にするため、基準上体姿勢は、直立姿勢（鉛直姿勢）に設定される。つまり、本実施形態では、基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本実施形態では、基準上体姿勢の姿勢角の角速度及び角加速度は０である。
次に、Ｓ１０４に進み、腕姿勢軌道パラメータ、より詳しくは鉛直軸（あるいは上体体幹軸）まわりの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータが決定される。たとえば、上体２４に対する腕体の手先の相対高さや腕全体の相対重心位置などの腕姿勢軌道パラメータが決定される。尚、本実施形態では、腕全体の相対重心位置は、上体に対して一定に維持されるように設定される。
次に、Ｓ１０６に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第１旋回歩容および第２旋回歩容のいずれにおいても図６のように実質的に連続な（値がステップ状に飛ばない）ものとなるように床反力鉛直成分軌道パラメータが設定される。すなわち、定常旋回歩容の目標床反力鉛直成分軌道は図１６のようなパターンで設定される。そのパターンでは、第１旋回歩容及び第２旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が０に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ（ピーク値）が床反力鉛直成分軌道パラメータとして設定される。
この床反力鉛直成分軌道パラメータの設定に際しては、床反力鉛直成分の歩容全期間（第１旋回歩容と第２旋回歩容両方の期間を合わせた期間で定常歩容の１周期の期間）における平均値をロボット１の自重と一致させる。すなわち、床反力鉛直成分の平均値がロボット１に作用する重力と同じ大きさで反対向きになるようにする。
上記のごとく床反力鉛直成分軌道を設定することは、定常歩容の条件を満たすために必要である。定常歩容の条件とは、支持脚座標系（支持脚側足平２２の接地面に設定された座標系）から見た歩容のあらゆる状態変数（ロボット１の各部の位置、姿勢、速度等）の初期状態（第１旋回歩容の初期状態）と次の支持脚座標系（次の第１旋回歩容の支持脚座標系）から見た歩容の終端状態（第２旋回歩容の終端状態）が一致していることである（以下、この条件を定常歩容の境界条件ということがある）。したがって、定常歩容終端におけるロボット１の全体重心鉛直速度と定常歩容初期における全体重心鉛直速度との差（詳細には、第２旋回歩容終端の全体重心鉛直速度と第１旋回歩容初期の全体重心鉛直速度との差）も零でなければならない。上記差は床反力鉛直成分と重力との差の積分値（１階積分値）であるから、上記差を零にするためには、上記のごとく床反力鉛直成分軌道を設定する必要がある。
尚、本実施形態では、床反力鉛直成分の第１旋回歩容、第２旋回歩容それぞれの期間における平均値をロボット１の自重と一致させるようにした。より具体的には、例えば第１旋回歩容及び第２旋回歩容の歩容周期に応じて各旋回歩容における床反力鉛直成分軌道の台形部分の折れ点の時刻を設定した上で、その台形部分の高さを、床反力鉛直成分の第１旋回歩容、第２旋回歩容それぞれの期間における平均値がロボット１の自重と一致するように決定した（台形の高さを未知数として、上記平均値及び自重の一致条件を表す方程式を解くことで台形の高さを求める）。
こうすることにより、第１旋回歩容終端の全体重心鉛直速度と第１旋回歩容初期の全体重心鉛直速度との差も０、第２旋回歩容終端の全体重心鉛直速度と第２旋回歩容初期の全体重心鉛直速度との差も０になる。ただし、このようにする必然性はない。例えば、第１旋回歩容と第２旋回歩容との境界あたりで上体鉛直位置が高くなり過ぎたり低くなり過ぎたりして無理な姿勢になりそうな場合には、各旋回歩容で上記平均値及び自重を一致させた状態から各旋回歩容の床反力鉛直成分軌道の台形の高さ等を修正するようにしてもよい。
次に、Ｓ１０８に進み、上記のごとく図１６のように設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］（より詳しくはこれを規定するパラメータ）が図１７のように設定される。図１７の負側の折れ線が床反力水平成分許容下限値Ｆｘｍｉｎ、正側の折れ線が床反力水平成分許容上限値Ｆｘｍａｘを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力水平成分は、床と足平２２との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット１が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平２２との間の摩擦係数をμとすると、Ｆｘｍｉｎは、常に−μ＊床反力鉛直成分以上に、Ｆｘｍａｘはμ＊床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、ｋａは１より小さい正の定数である。
2003057426.tif 000011
図１７の床反力水平成分許容範囲は、式１２にしたがって設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図１７の台形波形などの折れ点での値と時刻を設定してもよいが、式１２により床反力水平成分許容範囲を決定するときには、単に式１２における（ｋａ＊μ）の値をパラメータとして設定するだけでも良い。
尚、上記条件（目標歩容の床反力水平成分を常に摩擦限界以内にするという条件）を満足しているならば、他の設定方法で床反力水平成分許容範囲を設定するようにしても構わない。
次に、Ｓ１１０に進み、第１旋回歩容および第２旋回歩容を合わせた定常歩容のＺＭＰ軌道を規定するＺＭＰ軌道パラメータが設定される。この場合、目標ＺＭＰ軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。
さらに詳細には、図５の走行歩容においては、支持脚足平２２のかかとで着地した後、しばらくして該支持脚足平２２の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平２２のつま先だけが接地する。そして、次に支持脚足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚足平２２のかかとで着地する。また、目標ＺＭＰは接地面内に存在しなければならない。そこで、本実施形態では、定常歩容の第１旋回歩容及び第２旋回歩容のそれぞれの目標ＺＭＰのＸ軸方向の位置は、前記図７の上段図に示したように、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ＺＭＰは支持脚足平２２の中央に移動し、該足平２２がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平２２のつまさきに留まるように設定される。さらにその後は、目標ＺＭＰは、前述のごとく、次の遊脚足平２２の着地までに目標ＺＭＰが、支持脚足平２２のつまさきから遊脚足平２２のかかとの着地位置まで連続的に移動するように設定される。したがって、第１旋回歩容と第２旋回歩容とから成る定常歩容の目標ＺＭＰ軌道（Ｘ軸方向の軌道）は、図１８のようになる。そして、この目標ＺＭＰ軌道の折れ点の時刻及び位置がＺＭＰ軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第１旋回歩容及び第２旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系及び次次回歩容支持脚座標系の位置姿勢あるいはこれらの座標系を規定する要求パラメータの１歩目及び２歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。尚、ＺＭＰ軌道のＹ軸方向の位置は、前記図７の下段図に示したものと同様に設定される。より詳しくは、第１旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、図７の下段図のものと同一パターンで設定され、第２旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、第１旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。
最後に、Ｓ１１２に進み、定常歩容１歩（１周期）の初期時刻、終端時刻、期間が以下のように再定義される。
定常歩容は、その初期と終端での状態変数が連続的につながる歩容でなければならない。このような歩容の決定を容易にするために、本実施形態では、定常歩容を決定するまでは、前述の狭義の歩容の定義とは異なり、定常歩容の１歩の初期、終端、期間を便宜上、図１６のように定める。すなわち、第１旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻を定常歩容の初期時刻Ｔｓとして設定する。なお、初期時刻Ｔｓは、図７に示すように、支持脚足平２２の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前の時刻（図７の足底全面接地期間の終了時刻もしくはその直前の時刻）に設定するのが望ましい。また、Ｓ１１０において設定した図１８（または図７）に示す目標ＺＭＰと時刻Ｔｓとの関係を説明すると、第１旋回歩容において支持脚足平２２の底面のほぼ全面が接地した後に、目標ＺＭＰが支持脚足平２２の中央に移動し、つま先接地状態になるまでにつま先に移動を完了した瞬間が、時刻Ｔｓとなっているのが望ましい。このような初期時刻Ｔｓは例えば先に設定した目標ＺＭＰ軌道パラメータに応じて設定される。上記のごとく初期時刻Ｔｓを設定する理由は後述する。
また、図１６に示すように、定常歩容の周期Ｔｃｙｃは第１旋回歩容と第２旋回歩容の歩容周期の和である。定常歩容の終端時刻をＴｅとする。Ｔｅは、ＴｓにＴｃｙｃを加えた時刻に設定される。
定常歩容が決定された時点（後述の図１９のＳ２０４のループを抜けた時点）から、改めて、歩容の初期、終端等の定義を、前述の狭義の歩容の定義に戻すこととする。以下の説明では、前述の狭義の歩容の定義による初期時刻（支持脚側足平２２の着地当初の時刻）を０とし、定常歩容を決定するまで用いる上記初期時刻Ｔｓを参照符号Ｔｓを用いて（単に「Ｔｓ」と省略することもある）本来の初期時刻０と区別する。
図１２のＳ０１０からＳ０２２までに示す処理が行われた後、Ｓ０２４に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度（水平方向での初期上体位置及び初期上体速度）、初期上体鉛直位置速度（鉛直方向での初期上体位置及び初期上体速度）、初期発散成分、初期上体姿勢角およびその角速度である。この初期状態の算出は、図１９のフローチャートに従って、探索的に行なわれる。
図１９フローチャートにおいては、先ず、Ｓ２００において、定常歩容の歩容パラメータ（前記図１２のＳ０２２で設定したパラメータ）に基づいて、目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角（姿勢角と方向）の初期状態（初期時刻Ｔｓでの状態）が決定される。ここで状態とは、位置や姿勢角とその変化率（時間微分）とを表す。
この場合、支持脚側の目標足平位置姿勢の初期状態は、前記図１４のＳ１００で決定した足平軌道パラメータの第１旋回歩容初期支持脚足平位置姿勢から、第２旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（次回歩容支持脚座標系から見た軌道）を時刻Ｔｓまで有限時間整定フィルタにより生成することにより決定される。遊脚側の目標足平位置姿勢の初期状態は、次回歩容支持脚座標系から見た今回歩容初期支持脚足平位置姿勢から、第１旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道を時刻Ｔｓまで有限時間整定フィルタにより生成することにより決定される。また、目標腕姿勢の初期状態は、図１４のＳ１０４で決定した腕姿勢軌道パラメータに基づいて時刻Ｔｓにおける腕姿勢（上体２４に対する両腕体の全体重心位置等）を求めることで決定される。また、目標上体姿勢角の初期状態は、図１４のＳ１０２で決定した基準上体姿勢軌道パラメータにより定まる時刻Ｔｓにおける基準上体姿勢（姿勢角）及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本実施形態では、基準状態姿勢角は鉛直姿勢であるので、目標上体姿勢角の初期状態（姿勢角及びその角速度）は０である。また、本実施形態では、定常歩容の目標足平位置姿勢軌道、床反力鉛直成分軌道、及び目標ＺＭＰ軌道は、それぞれ、図１４のフローチャートで決定した足平軌道パラメータ、床反力鉛直成分軌道パラメータ、ＺＭＰ軌道パラメータにより互いに独立的に決定される。例えば定常歩容の瞬時瞬時の目標足平位置姿勢は、床反力鉛直成分の瞬時値に依存することなく足平軌道パラメータに応じて決定される。
次いでＳ２０２において初期上体水平位置速度の候補（すなわち初期時刻Ｔｓでの上体水平位置速度候補）である（Ｘｓ，Ｖｘｓ）（Ｘｓ：水平位置、Ｖｘｓ：水平速度）が仮決めされる。ここで仮決めする候補（Ｘｓ，Ｖｘｓ）は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度を仮決め候補（Ｘｓ，Ｖｘｓ）とすればよい。
尚、説明を簡略にするため、サジタルプレーン上でＸ方向（前後方向）での定常歩容の初期状態を探索する場合を例にとるが、実際には位置・速度ともＸ方向（前後方向），Ｙ方向（左右方向）を別々にあるいは同時に定常歩容の初期状態（定常歩容の前記境界条件を満たす初期状態）を探索する必要がある。
探索的な決定手法としては、擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。本実施例では、最急降下法を用いる。
次いで、Ｓ２０４を経てＳ２０６において、初期（時刻Ｔｓ）上体鉛直位置速度（Ｚｓ、Ｖｚｓ）（Ｚｓ：鉛直位置、Ｖｚｓ：鉛直速度）が決定される。
初期上体鉛直速度Ｖｚｓは、本実施形態では以下のように解析的に決定される。
ロボット１には、動力学的関係として、次式が成立する。
2003057426.tif 000012
（ただし、重力加速度は負の値とする。）
また、定常歩容では、終端全体重心鉛直位置と初期全体重心鉛直位置は一致するので、上式１３の右辺は零にならなければならない。したがって、これらの関係から初期全体重心鉛直速度を求めることができる。具体的には、まず、前記図１４のＳ１０４で設定した床反力鉛直成分パラメータによって算出される床反力鉛直成分をロボット１の全体質量で割った値を１歩の期間（時刻Ｔｓから時刻Ｔｅまで）２階積分することにより、床反力鉛直成分による全体重心移動量（式１３の右辺第１項）が求められる。さらに、重力加速度を一歩の期間２階積分することにより、重力による全体重心移動量（式１３の右辺第２項）が求められる。そして、上記求めた床反力による全体重心移動量と重力による全体重心移動量との和を符号反転し、これを１歩の時間（定常歩容の１周期Ｔｃｙｃｌの時間）で割ることにより、初期全体重心鉛直速度が求められる。
次に、初期上体鉛直位置Ｚｓを求めるために、次式を用いて、時刻０の全体重心鉛直速度が求められる。この際、次式における時刻Ｔｓの全体重心鉛直速度には、式１３に基づいて上記の通り求めた値を代入し、積分期間は時刻０から時刻Ｔｓまでとする。
2003057426.tif 000013
（ただし、重力加速度は負の値とする。）
次に、本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法を用いて時刻０における（すなわち着地瞬間における）上体高さ（上体鉛直位置）が決定される。このとき、時刻０における足平位置姿勢（前記図１４のＳ１００で決定した第１旋回歩容初期（時刻０）支持脚足平位置姿勢及び第１旋回歩容初期（時刻０）遊脚足平位置姿勢）と、各脚体２の膝部の曲げ角に関する所定の幾何学的条件とに基づいて、時刻０での各脚体２，２の膝部が伸び切らないような上体鉛直位置（上体高さ）が決定される。具体的には、支持脚側脚体２の膝曲げ角をθｓｕｐ、遊脚側脚体２の膝曲げ角をθｓｗｇとしたとき、例えばそれらの膝曲げ角θｓｕｐ，θｓｗｇの正弦値の逆数の和がある所定値（有限値）になるように、上体鉛直位置が決定される。ここで、膝曲げ角θｓｕｐ，θｓｗｇは、各脚体２の大腿部の軸心に対する下腿部の軸心の角度であり、各脚体２が伸びきった状態から膝部を曲げていくに伴い、０から増加していく角度である。なお、このような上体２４の鉛直位置の決定手法は、上記特開平１０−８６０８０号公報に詳細に説明されているので、ここでは以上の説明に留める。
次に、このように決定した時刻０における上体鉛直位置や、足平位置姿勢などから時刻０における全体重心鉛直位置がロボット１のモデルを用いて求められる。例えば図１０のモデルに対応する前記式０４のキネマティクスモデルを用いることで、時刻０における全体重心鉛直位置が求められる。具体的には、時刻０での上体鉛直位置と上体姿勢角（本実施形態では０）とから上体質点２４ｍの鉛直位置が求められ、時刻０での支持脚足平位置姿勢及び遊脚足平位置姿勢（これらは、前記図１４のＳ１００で設定した第１旋回歩容初期支持脚足平位置姿勢及び第１旋回歩容初期遊脚足平位置姿勢である）とからそれぞれ支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの求めた上体質点２４ｍ、支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置を、前記式０４のＺｂ、Ｚｓｕｐ、Ｚｓｗｇに代入することで、全体重心鉛直位置（式０４のＺＧｔｏｔａｌ）が求められる。尚、ロボット１のより厳密なモデル（例えば図１１に示すような多質点モデル）を用い、時刻０での上体水平位置や腕姿勢をも考慮して、時刻０での全体重心鉛直位置を求めるようにしてもよい。
次に、前記式１３において、上記求めた時刻０における全体重心鉛直位置を同式１３の左辺の初期全体重心鉛直位置に代入し、上記求めた時刻０の全体重心鉛直速度を同式１３の右辺の初期全体重心鉛直速度に代入し、さらに、同式１３の１歩の時間をＴｓとし、積分期間を時刻０から時刻Ｔｓまでとすることで、式１３の左辺の終端全体重心鉛直位置の値が算出され、この算出値が初期（時刻Ｔｓ）全体重心鉛直位置として得られる。さらに、この求めた初期（時刻Ｔｓ）全体重心鉛直位置と時刻Ｔｓにおける足平位置姿勢（Ｓ２００で求めたもの）などから、ロボット１のモデル（例えば式０４のキネマティクスモデル）を用いて、初期（時刻Ｔｓ）上体鉛直位置Ｚｓが求められる。具体的には、時刻Ｔｓにおける支持脚及び遊脚の各平位置姿勢から、図１０のモデルの支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められ、これらの鉛直位置と、上記求めた初期（時刻Ｔｓ）全体重心鉛直位置とを式０４に適用することで、上体質点２４ｍの鉛直位置（式０４のＺｂ）が求められる。そして、この上体質点２４ｍの鉛直位置と時刻Ｔｓでの上体姿勢（本実施形態では０）とから逆算的に初期（時刻Ｔｓ）上体鉛直位置Ｚｓが求められる。尚、この場合も、より厳密なモデルを用い、上体水平位置や腕姿勢をも考慮して初期上体鉛直位置Ｚｓを求めるようにしてもよい。
最後に、前記Ｓ２００で決定した足平位置姿勢の初期状態や、Ｓ２０６で求めた初期全体重心鉛直速度等から、ロボット１のモデル（例えば式０４のキネマティクスモデル）を用いて、初期上体鉛直速度が求められる。具体的には、式０４の両辺を時間微分してなる式に、前記式１３に基づいて求めた初期全体重心鉛直速度と、支持脚側及び遊脚側の各足平位置姿勢の初期状態により定まる支持脚質点２ｍ及び遊脚質点２ｍの鉛直速度とを適用することで、上体質点２２ｍの鉛直速度が求められる。そして、この上体質点２２ｍの鉛直速度と上体姿勢角の初期状態（Ｓ２００もしくは後述のＳ２０８で決定されたもの）とから、上体鉛直速度が求められる。尚、各足平位置姿勢の初期状態や、初期全体重心鉛直速度のほか、腕姿勢の初期状態（Ｓ２００で決定されたもの）、仮決定した上体水平位置の初期状態（Ｓ２０２もしくは後述のＳ２１６もしくはＳ２１８で仮決定された最新のもの）、上記求めた初期上体鉛直位置を考慮し、上記求めた初期全体重心鉛直速度を満足するような初期上体鉛直速度を、ロボット１のより厳密なモデルを用いて求めるようにしてもよい。
補足すると、ロボット１のモデルが図１１のような複雑なもの（厳密なモデル）であっても、ロボット１は、片脚当たり６自由度であることから、足平位置姿勢軌道および上体位置姿勢軌道の初期状態（位置姿勢とその変化率）が与えられれば、ロボットの初期状態は一義的にすべて決定されることになる。したがって、初期全体重心鉛直速度もこれらが与えられれば一義的に決定される。逆に、片脚当たり６自由度であることから、足平位置姿勢軌道および上体位置姿勢軌道の初期状態の内で速度に関する状態のひとつ（例えば初期上体鉛直速度）が未定であっても、初期全体重心鉛直速度が与えられれば、未定の初期状態は一義的に決定される。
Ｓ２０６の処理の後、次いでＳ２０８に進み、定常旋回歩容が仮に生成される。より具体的には、前記図１２のＳ０２２で決定した定常歩容の歩容パラメータを基に、初期時刻Ｔｓから終端時刻Ｔｅまでの各瞬間における目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢および床反力水平成分許容範囲が逐次求められる。そして、求めた目標ＺＭＰと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル（図１０のモデル）を用いて、前記上体水平位置速度（Ｘｓ，Ｖｘｓ）、上体鉛直位置速度（Ｚｓ、Ｖｚｓ）を上体２４の初期（時刻Ｔｓ）状態として、上体位置姿勢を逐次決定することによって、時刻Ｔｓから終端時刻Ｔｅまでの歩容を生成する。また、この時、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
尚、この定常歩容の歩容生成は歩容生成装置１００の内部で行われるだけであって、実際のロボット１を駆動するための目標値として、後述する複合コンプライアンス動作決定部１０４に出力されることはない。
以下に、Ｓ２０８の処理である逐次演算による定常歩容生成処理の詳細を説明する。
図２０はその処理を示すサブルーチンフローチャートである。
以下説明すると、Ｓ３００において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻ｋに初期時刻Ｔｓを代入する。さらに、上体水平位置速度に、現在仮決定されている（Ｘｓ，Ｖｘｓ）（図１９のＳ２０２もしくは後述のＳ２１６もしくはＳ２１８で決定されたもの）が代入され、上体鉛直位置速度に、前記Ｓ２０６で求めた最新の（Ｚｓ、Ｖｚｓ）が代入される。また、目標上体姿勢角には、基準上体姿勢角初期値（時刻Ｔｓでの基準上体姿勢角）、目標上体姿勢角速度には、基準上体姿勢角速度初期値（時刻Ｔｓでの基準上体姿勢角速度）を代入する。補足すると、後述するごとく最終的には初期目標上体姿勢角速度は変更されるので、基準上体姿勢角速度初期値と異なる値を代入しても良い。
次いで、Ｓ３０２を経てＳ３０４において、仮歩容生成用時刻ｋが歩容終端時刻以前であるか否か（ｋ≦Ｔｓ＋Ｔｃｙｃであるか否か）が判断され、その判断結果がＹＥＳである場合には、Ｓ３０６の歩容瞬時値決定サブルーチンに進み、歩容瞬時値が決定される。次いで歩容生成装置１００の処理は、Ｓ３０８に進み、仮歩容生成用時刻ｋをΔｋだけ増やした後、Ｓ３０４に戻る。
ここで、Δｋは、仮歩容生成のインターバルであり、通常、制御周期Δｔと一致させておけば良い。なお、Δｋは、仮歩容の動力学的精度を落としても良いならば、演算量を低減するために、ΔｋをΔｔよりも長く設定しても良い。
Ｓ３０４の判断結果がＮＯである場合には、Ｓ３１０に進む。以上の処理により、Ｓ３１０に進むまでに定常歩容が初期から終端まで生成される。
以下に、Ｓ３０６の歩容瞬時値決定サブルーチンの詳細を図２１を参照して説明する。
まず図２１のＳ４００において、定常歩容パラメータ（床反力鉛直成分軌道パラメータ）を基に、前記図１６に示した目標床反力鉛直成分の時刻ｋにおける値（今回値）が求められる。さらに、Ｓ４０２において、定常歩容パラメータ（ＺＭＰ軌道パラメータ）を基に、前記図１８に示した目標ＺＭＰ軌道の時刻ｋにおける値（今回値）が求められる。
次いでＳ４０４に進み、定常歩容パラメータ（足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ）を基に、時刻ｋにおける目標両足平位置姿勢（支持脚側及び遊脚側の両者の目標足平位置姿勢）、基準上体姿勢および目標腕姿勢の値（今回値）が求められる。ただし、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸（または上体体幹軸）まわりの角運動量を変化させる腕体の運動（腕振り運動）は、未だ決定されていない。尚、目標足平位置姿勢の今回値（時刻ｋでの値）は、前記図１９のＳ２００で初期時刻Ｔｓでの足平位置姿勢を求めた場合と同様に求められる。
次いでＳ４０６に進み、目標床反力鉛直成分を満足する（ロボット１の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ような時刻ｋにおける全体重心鉛直位置速度の値（今回値）が算出される。具体的には、例えば前記図１０の動力学モデルに係わる前記式０１と式０４とに基づいて、全体重心鉛直位置速度が算出される。すなわち、式０１と式０４とによれば、ロボット１の運動による全体重心鉛直加速度と重力加速度との和にロボット１の全体質量を乗算したものが床反力鉛直成分に等しいという関係式（ロボット１の全体重心の鉛直方向に関する運動方程式）が得られる。従って、この関係式と目標床反力鉛直成分とから、全体重心鉛直加速度が求められる。
尚、この関係式自体は、ロボット１のモデルに依存することなく一般的に成立するものである。そして、この求めた全体鉛直加速度を積分することにより、全体重心鉛直速度が算出され、さらにその全体重心鉛直速度を積分することにより、全体重心鉛直位置が算出される。これらの算出は、より一般的には、次式１５および式１６で表される動力学関係式（ニュートンの運動方程式を離散化した式）を用いて行なわれる。
2003057426.tif 000014
次いでＳ４０８に進み、全体重心鉛直位置を満足する上体鉛直位置が算出される。具体的には、例えば前記図１０のモデルに係わる式０４を用いて上体鉛直位置が算出される。すなわち、支持脚側及び遊脚側の目標足平位置姿勢の今回値から、図１０のモデルの支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの求めた支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置と、Ｓ４０７で求めた全体重心鉛直位置の今回値とを式０４に適用することで、上体質点２４ｍの鉛直位置が求められる。さらに、この求めた上体質点２４ｍの鉛直位置と目標上体姿勢角の現在値（Ｓ４０４で設定された基準上体姿勢角または後述のＳ４１４で決定された前回（時刻ｋ−Δｋ）の目標上体姿勢角）とから上体鉛直位置が求められる。
尚、より厳密なモデル（例えば図１１に示すようにロボット１の各リンクに対応する質点をもたせたようなモデル）を用いて上体鉛直位置を求めてもよい。この場合には、前記求めた目標両足平位置姿勢の今回値（時刻ｋの値）、時刻（ｋ−Δｋ）の目標上体姿勢（または前記求めた基準上体姿勢の今回値）、前記求めた目標腕姿勢（両腕の重心位置）の今回値、時刻（ｋ−Δｋ）の上体水平位置と、求めたい上体鉛直位置とから決定される全体重心鉛直位置が、前記求めた全体重心鉛直位置の今回値に一致するように上体鉛直位置が求められる。
この場合、時刻ｋの上体姿勢と上体水平位置は、未だ決定されていないので、代わりに時刻（ｋ−Δｋ）の値を用いた。より精度を高めるために、時刻ｋでの推定値を、時刻（ｋ−Δｋ）での歩容状態から外挿によって求めても良い。
次いでＳ４１０に進み、前記図１４のＳ１０８で決定した歩容パラメータ（床反力水平成分許容範囲を規定するパラメータ）に基づいて、図１７に示した床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］の時刻ｋにおける値（今回値）が求められる。
次いでＳ４１２に進み、目標ＺＭＰに関する動力学的平衡条件（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が０であるという条件）を満足するように、上体水平加速度と上体姿勢角加速度との今回値が決定される。ただし、床反力水平成分Ｆｘが［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えず、かつ、上体姿勢角速度が定常歩容の初期と終端とで一致するように、上体水平加速度と上体姿勢角加速度とが決定される。以下にこの詳細を説明する。
この時点において、前記の如く足平位置姿勢および上体鉛直位置の瞬時値（今回値）が決定されているので、残りの上体水平位置と上体姿勢角とを決定すれば、鉛直軸まわりの角運動量を変化させる腕体の運動自由度を除いて、ロボット１の目標運動は一義的に決定できる。したがって、上体水平位置と上体姿勢角とを決定すれば、床反力の鉛直軸まわりのモーメントを除き、すべての床反力も一義的に決定される。なお、本実施形態では、定常歩容の目標床反力鉛直成分及び目標ＺＭＰは、それぞれ前記図１２のＳ０２２で決定した床反力鉛直成分軌道パラメータ及び目標ＺＭＰ軌道パラメータによって規定される。したがって、上体水平位置と上体姿勢角の決定に応じて従属的に決定される床反力は、床反力水平成分のみである。また、補足すると、前述したように、ロボット１は片脚当たり６自由度であることから、目標足平位置姿勢と目標上体位置姿勢とから脚体２の各部の位置姿勢は一義的に決定される。なお、鉛直軸まわりの角運動量を変化させる腕の運動自由度は、後述するように、スピン力を打ち消すために用いられる。
ところで、歩容生成において、前記上体並進モードをあまり用いずに主に上体回転モードを用いることにより、目標ＺＭＰを満足させる（目標ＺＭＰまわりの床反力モーメントの水平成分を０にする）と、上体姿勢角が大きく振れ過ぎてしまう恐れがある。したがって、これを防ぐためには、なるべく上体並進モードを用いるべきである。しかし、上体並進モードは、床反力水平成分の変化を伴うので、床反力水平成分許容範囲が狭い場合には、上体並進モードを強く働かせるとスリップする恐れがある。この場合には、上体回転モードに頼るしかない。特に、前記走行歩容のように床反力水平成分許容範囲が０となる期間では、床反力水平成分を発生させるような歩容を生成することはできないので、上体回転モードに頼らざるを得ない。以上のことを考慮し、本実施形態では、図２２に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度とが決定される。
まず、Ｓ５００において、初期時刻Ｔｓから第１旋回歩容の空中期を経て第２旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Ｔｍが設定される。さらに、第２旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Ｔｓ２が設定される。さらに、第２旋回歩容の空中期を経て第１旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Ｔｍ２が設定される。
図１６にこれらの時刻を示す。時刻Ｔｍは、支持脚足平２２の底面のほぼ全面が接地した瞬間あるいはその直後に設定するのが望ましい。時刻Ｔｍ２も同様である。また、時刻Ｔｓ２は、前記初期時刻Ｔｓ同様、足平２２の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前に設定するのが望ましい。
また、前記図１４のＳ１１０において設定した図１８の目標ＺＭＰとこれらの時刻Ｔｍ，Ｔｓ２，Ｔｍ２との関係を説明すると、第２旋回歩容において、目標ＺＭＰが、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平２２の中央に移動し始める瞬間を時刻Ｔｍとすることが望ましい。その後、支持脚足平２２のつま先だけ接地した状態になるまでに、目標ＺＭＰがつま先に移動を完了した瞬間を、時刻Ｔｓ２とすることが望ましい。さらに次の第１旋回歩容において、目標ＺＭＰが、支持脚足平２２のかかとを初期位置として該足平２２の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平２２の中央に移動し始める瞬間を時刻Ｔｍ２とすることが望ましい。
上記のごとく設定する理由は後述する。
次にＳ５０２において現在時刻（定常歩容作成用タイマーの値）ｋが、時刻ＴｓからＴｍの間または時刻Ｔｓ２からＴｍ２の間にあるか否かが判定される。Ｓ５０２の判定結果がＹＥＳであるならば、Ｓ５０４に進み、ＮＯであるならばＳ５１８に進む。
Ｓ５０４では、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、仮に、上体回転モードの角加速度を０にして、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰを満足するために必要な上体水平加速度αｔｍｐが求められる。このαｔｍｐは、例えば前記図１０の動力学モデルに係わる前記式０３を用いて求められる。より具体的には、例えば、現在時刻ｋまでに求められた目標足平位置姿勢の時系列値を用いて、現在時刻ｋにおける支持脚質点２ｍ及び遊脚質点２ｍの鉛直加速度が求められると共に、現在時刻ｋ（今回）の目標足平位置姿勢を用いて支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。また、現在時刻ｋ（今回）の床反力鉛直位置を用いて上体質点２４ｍの鉛直位置が求められると共に、現在時刻ｋまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻ｋにおける上体質点２４ｍの鉛直加速度が求められる。そして、これらの求めた値を前記式０３に代入すると共に、同式０３のＭｙ、ｄ２θｂｙ／ｄｔ２を０にしてなる式を、ｄ２Ｘｂ／ｄｔ２について解くことにより、上体質点水平加速度ｄ２Ｘｂ／ｄｔ２が上体水平加速度αｔｍｐとして求められる。尚、より厳密な動力学モデルを用いて、目標ＺＭＰ回りの床反力モーメントの水平成分を零にするような上体水平加速度αｔｍｐを探索的に求めるようにしてもよい。また、本実施形態では、基準上体姿勢が鉛直姿勢で、基準上体姿勢による上体姿勢角加速度が０であるため、上体回転モードの角加速度を０にして上体水平加速度αｔｍｐを求めるようにした。但し、基準上体姿勢が変化するように該基準上体姿勢軌道パラメータを設定した場合で、それにより定まる現在時刻ｋにおける基準上体姿勢角加速度が０でない場合には、上体回転モードの角加速度をその０でない基準上体姿勢角加速度の値にして、上体水平加速度αｔｍｐを動力学モデルを用いて求める（例えば式０３のｄ２θｂｙ／ｄｔ２を０でない基準上体姿勢角加速度に設定して上記と同様に上体水平加速度αｔｍｐを求める）ようにすればよい。
次に、Ｓ５０６に進み、上体水平加速度がαｔｍｐの場合の時刻ｋにおける床反力水平成分Ｆｘｔｍｐが動力学モデルを用いて求められる。本実施形態においては、前記動力学モデルの式０２を用いてＦｘｔｍｐが求められる。すなわち、次式１７によってＦｘｔｍｐが求められる。但し、ｄ２Ｘｓｕｐ／ｄｔ２およびｄ２Ｘｓｗｇ／ｄｔ２はそれぞれ時刻ｋにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。
2003057426.tif 000015
このようにして求められる  Ｆｘｔｍｐの例を図２３に示す。図２３に、Ｆｘｔｍｐが床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えている部分を斜線で示す。
次に、Ｓ５０８に進み、上体並進モードの上体水平加速度α、これによって発生する床反力水平成分Ｆｘ、上体回転モードの上体角加速度βが次のように決定される（Ｓ５０８〜Ｓ５１６）。
すなわち、
Ｆｘｔｍｐ＞Ｆｘｍａｘならば、Ｓ５１０に進み、次式によりＦｘが決定される。
2003057426.tif 000016
Ｆｘｔｍｐ＜Ｆｘｍｉｎならば、Ｓ５１２に進み、次式によりＦｘが決定される。
2003057426.tif 000017
それ以外、すなわち、Ｆｘｔｍｐが、床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］内に存するならば、Ｓ５１４に進み、次式によりＦｘが決定される。
2003057426.tif 000018
いずれの場合においても、次いでＳ５１６に進み、次式により上体水平加速度α、上体姿勢角加速度βが決定される。
2003057426.tif 000019
ただし、ΔＦｐ、ΔＭｐおよびΔＭｒはそれぞれ前記式０６、０７、および式０９により決定される。
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体角加速度βを求めた後、上体並進モードと上記求めた上体角加速度βの上体回転モードとを合成した運動が目標ＺＭＰを満足するように、上体並進モードの上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン（感度マトリックス）を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
さらに床反力水平成分Ｆｘが床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を厳密に越えないようにするために、Ｓ５１０においては、Ｆｘ＝Ｆｘｍａｘかつ目標ＺＭＰまわりの床反力モーメントの水平成分が０になるように、Ｓ５１２においては、Ｆｘ＝Ｆｘｍｉｎかつ目標ＺＭＰまわりの床反力モーメントの水平成分が０になるように、上体水平加速度αと上体角加速度βとの組を探索的に求めても良い。
上記のように求められるＦｘを図２４に示す。Ｆｘは、Ｆｘｔｍｐの値を床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］から越えないように制限（飽和）させたものになっている。より詳しくは、上体並進モードのみによる上体水平加速度αｔｍｐに応じたＦｘｔｍｐが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］内にある場合には、ＦｘｔｍｐがそのままＦｘとなる。また、上体並進モードのみによる上体水平加速度αｔｍｐに応じたＦｘｔｍｐが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］の上限を超え、もしくは下限を下回った場合には、それぞれＦｘは、それぞれ強制的にＦｘｍａｘ、Ｆｘｍｉｎに制限される。特に走行歩容の空中期では、常に、Ｆｘｍａｘ＝Ｆｘｍｉｎ＝０であるので、Ｆｘ＝０となる。
また、上記のように求められる上体姿勢角加速度βを図２５に示す。上体並進モードによって発生するＦｘが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないように、上体並進モードの加速度を制限したことによって不足した床反力モーメント（より詳しくは目標ＺＭＰ回りの床反力モーメントの水平成分を０にする上で必要な慣性力モーメントから、制限した上体水平運動と両脚体２，２の運動とによるモーメント成分を差し引いたモーメント）を、上体回転モードで補ったことになる。なお、走行歩容の空中期では、上体並進モードによる上体水平加速度αは常に０に制限されることとなるので、上体回転モードによる上体姿勢角加速度βのみによって、上記不足分の床反力モーメントが補われることとなる。
以上が、時刻ｋが時刻ＴｓからＴｍの間または時刻Ｔｓ２からＴｍ２の間の場合の処理である。
Ｓ５０２の判定結果がＮＯである場合には以下の処理が行われる。まず、Ｓ５１８に進み、上体姿勢角速度を、現在時刻ｋが時刻Ｔｓ２以前ならば時刻Ｔｓ２までに、そうでないならば時刻Ｔｅまでに、初期値（現在時刻ｋが時刻Ｔｓ２以前ならば時刻Ｔｓでの値、そうでないならば時刻Ｔｓ２での値）に戻すための上体姿勢角加速度を発生させる床反力モーメントのＺＭＰ換算値（以降、上体姿勢復元モーメントＺＭＰ換算値と呼び、ＺＭＰｒｅｃと略す）のパターンを設定する。
これについて以下に詳細に説明する。現在時刻ｋが時刻Ｔｍ２以降の時期の処理は、時刻Ｔｓ２以前の時期の処理と同様なので、現在時刻ｋが時刻Ｔｓ２以前までの時期の処理だけを解説する。
時刻Ｔｍから時刻Ｔｓ２までに、上体回転モードを用いて上体姿勢角加速度を発生させることにより、上体姿勢角速度を初期値（時刻Ｔｓでの値）に戻すことを考える。このための上体姿勢角加速度パターンを、β（ｋ）とする。
上体回転モードでは、上体姿勢角加速度β（ｋ）を発生させようとすると、床反力モーメントβ（ｋ）＊ΔＭｒが発生する。この結果、その瞬間における床反力鉛直成分がＦｚ（ｋ）であるとすると、（目標ＺＭＰでなく）運動から算出されるＺＭＰ（ｋ）は、次式で求められるΔＺＭＰだけずれる。
2003057426.tif 000020
したがって、ΔＭｒのパターンとＦｚ（ｋ）のパターンが決まっていれば（既知であれば）、ΔＺＭＰ（ｋ）のパターンを適当に設定することによって、式２３を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を初期値（時刻Ｔｓでの値）、すなわち基準上体姿勢軌道の初期（時刻Ｔｓ）状態における上体姿勢角速度に戻すことができる。
前記上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）は、そのように適切に設定されたΔＺＭＰ（ｋ）を意味する。前記式２３を用いて上体姿勢復元モーメントＺＭＰ換算値を設定する際に、ΔＭｒは厳密には変動するが、近似的に一定値としても良い。定常歩容は仮に生成されるだけであり、実際のロボットをこの歩容に追従させるわけではないので、定常歩容の動力学的精度はあまり高くなくても良いからである。
図２６にＺＭＰｒｅｃの一例を示す。図２６では、そのパターンは台形パターンとされている。その台形部の折れ点の時刻は、時刻Ｔｍと時刻Ｔｓ２との間の期間における目標ＺＭＰパターンの折れ点の時刻（図１８参照）に一致させてある。これは、後述するが、今回歩容の目標ＺＭＰパターンの修正が簡単になるからである。式２３のΔＺＭＰ（ｋ）にＺＭＰｒｅｃを代入することにより次式が得られる。
2003057426.tif 000021
したがって、この式２４で求められるβ（ｋ）は、図２７の実線で示すようになる。なお、図２７の点線で示すものは、時刻Ｔｓから時刻Ｔｍまでの上体姿勢角加速度（図２５の実線示のもの）である。
ところで、定常歩容では、時刻Ｔｓ２での上体姿勢角速度が時刻Ｔｓでの上体姿勢角速度に一致していることが望ましい。一致していると、上体姿勢角の変動が小さくなるからである。
そこで、時刻Ｔｓ２での上体姿勢角速度を時刻Ｔｓでの上体姿勢角速度に一致させるため、時刻ＴｓからＴｓ２までの上体姿勢角加速度βの積分値が０になるように、上体姿勢角加速度パターンを設定する。すなわち、時刻Ｔｍから時刻Ｔｓ２までの期間のβ（ｋ）の積分値（図２７の実線部の積分値）が、時刻Ｔｓから時刻Ｔｍまでの上体姿勢角加速度（これは図２２のＳ５０４〜Ｓ５１６で前述のように求められる）の積分値（図２７の点線部の積分値、言い換えれば時刻Ｔｍにおける上体姿勢角速度と時刻Ｔｓにおける上体姿勢角速度の差）に−１を乗じた値になるように設定される。
より具体的には、本実施形態では、図２６のＺＭＰｒｅｃの台形パターンにおいて、台形の折れ点の時刻（これは前述のように定常歩容の目標ＺＭＰ軌道に基づいて決定される）を既知とし、台形高さを未知数とすることで、上記関係を満足するＺＭＰｒｅｃの台形高さ（ＺＭＰｒｅｃパターンを規定するパラメータ）が求められる。
第１旋回歩容におけるＺＭＰｒｅｃの台形高さを第１旋回歩容上体姿勢復元モーメントＺＭＰ換算値台形高さａｃｙｃ１と呼ぶ。第２旋回歩容におけるＺＭＰｒｅｃの台形高さを第２旋回歩容上体姿勢復元モーメントＺＭＰ換算値台形高さａｃｙｃ２と呼ぶ。なお、第２旋回歩容におけるＺＭＰｒｅｃは、時刻Ｔｍ２からＴｅまでの期間で設定される台形パターンである。
補足すると、今回歩容を１歩生成している途中で歩容パラメータが変更されない限り、時刻ＴｍとＴｓ２との間の期間、又は時刻Ｔｍ２とＴｅとの間の期間においてＳ５１８で決定されるＺＭＰｒｅｃパターンは変わらない（同一パラメータ値が算出される）ので、Ｓ５１８の処理は、時刻Ｔｍと時刻Ｔｍ２でのみ実行しても良い。
次いでＳ５２０に進み、時刻ｋにおける上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃの瞬間値（今回値）が、上記のごとく決定したパラメータ（台形高さ）を基に算出される。
次いでＳ５２２に進み、前記式２４を用いて、時刻ｋにおける上記上体姿勢角加速度パターンの瞬間値（今回値）βが算出される。
次いでＳ５２４に進み、ロボットの前回瞬時目標歩容状態（時刻ｋ−１の目標歩容状態）から、仮に上体回転モードをさせずに上体並進モードの運動のみをさせた場合に、今回（時刻ｋ）の目標ＺＭＰを満足するために必要な上体水平加速度αｔｍｐが、ロボット１の動力学モデルを用いて求められる。この算出は、Ｓ５０４と同様に行なわれる。
次いでＳ５２６に進み、次式を用いて、上体並進モードの上体水平加速度αが算出される。
2003057426.tif 000022
さらにＳ５２８に進み、上体水平加速度が上記の如く求めたαである場合の時刻ｋにおける床反力水平成分Ｆｘが、前記式１７と同様の次式２６によって求められる。
2003057426.tif 000023
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体角加速度βを求めた後、Ｓ５２６において、式２５を用いた上体水平加速度αの算出を実行する代わりに、Ｓ５１６の補足で解説した手法と同様、上体並進モードと上記求めた上体角加速度βの上体回転モードを合成した運動が目標ＺＭＰを満足するように、上体並進モードの上体水平加速度αを、より厳密な動力学モデルを用いて、解析的あるいは探索的に決定した方が良い。
以上が、時刻ｋが時刻ＴｓからＴｍの間または時刻Ｔｓ２からＴｍ２の間のいずれでもない場合の処理である。
以上の処理を時刻Ｔｓ２まで完了した時の、床反力水平成分Ｆｘを図２８に示す。さらに、以上の処理を時刻Ｔｅまで完了した時の、床反力水平成分Ｆｘを図２９に、上体姿勢角加速度βを図３０に示す。なお、以上に示したＳ４１２の処理（上体水平加速度と上体姿勢角加速度を決定するサブルーチン）は、時刻ｋにおける上体水平加速度と上体姿勢角加速度の瞬間値が決定されるのであって、時刻Ｔｅまでのこれらの時系列が一度に生成されるわけではない。
なお、本実施形態では、基準上体姿勢が鉛直姿勢で、基準上体姿勢による上体姿勢角加速度が０であるため、上記の如く求めた上体回転モードの角加速度βをＳ４１２の処理で決定される上体姿勢角加速度とした。但し、基準上体姿勢が変化するように該基準上体姿勢軌道パラメータを設定した場合には、上記の如く求めた上体回転モードの角加速度βと基準上体姿勢角加速度の和をもって、Ｓ４１２の処理で決定される上体姿勢角加速度とすべきである。
時刻Ｔｓ、Ｔｍ、Ｔｓ２およびＴｍ２を前記のごとく設定した理由は、時刻ＴｍからＴｓ２までの期間と時刻Ｔｍ２からＴｅまでの期間とにおいて、上体姿勢角速度を基準上体姿勢軌道の初期角速度に戻すように上体姿勢角加速度βを発生させても、床反力水平成分Ｆｘが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないようにするためである。換言すれば、時刻ＴｍからＴｓ２までの期間と時刻Ｔｍ２からＴｅまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ＺＭＰを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを発生させても、床反力水平成分Ｆｘは、許容範囲を越えることがない。
また、時刻Ｔｓでの上体姿勢角速度を時刻Ｔｓでの上体姿勢角速度に一致させることを考えず、ａｃｙｃ１とａｃｙｃ２を同一値として（ａｃｙｃ１＝ａｃｙｃ２として）、時刻Ｔｅでの上体姿勢角速度と時刻Ｔｓでの上体姿勢角速度に一致させるようにａｃｙｃ１およびａｃｙｃ２の値を決定しても良い。
次いで図２１のＳ４１４に進み、Ｓ４１２で求めた上体水平加速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより上体水平速度が求められ、さらにその上体水平速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより、上体水平位置（今回値）が求められる。また、Ｓ４１２で求めた上体姿勢角加速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより上体姿勢角速度が求められ、さらにその上体姿勢角速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより、上体姿勢角（今回値）が求められる。
以上のごとく図２０のＳ３０６の定常歩容瞬時値決定サブルーチンが実行された後、Ｓ３０８に進み、歩容生成用時刻ｋの値が歩容生成インターバルΔｋだけ増加される。次いでＳ３０４に戻り、Ｓ３０４に示す条件が成立している限り、Ｓ３０６とＳ３０８の処理が繰り返され、Ｓ３０４に示す条件が成立しなくなったら、すなわち終端（時刻Ｔｅ＝Ｔｓ＋Ｔｃｙｃ）まで仮定常歩容の生成が完了したら、Ｓ３１０に進む。Ｓ３１０では、次式に従って初期（時刻Ｔｓ）上体姿勢角と初期（時刻Ｔｓ）上体姿勢角速度が、上記求めた仮歩容の終端（時刻Ｔｅ）上体姿勢角などを基に修正される。この修正は、上体姿勢角及びその角速度に関する定常歩容の境界条件（定常歩容の初期と終端とで上体姿勢角及び角速度を一致させる）を満たすようにするためのものである。尚、ここでの説明では、ロボット１の歩容は、該ロボット１を直線的に移動させる歩容であるとする。
この場合、次式の新たな値が修正された値である。
2003057426.tif 000024
ここで、上記式３０により初期状態姿勢角速度を修正する理由を以下に説明する。定常歩容では、それを繰り返したときに境界でロボット１の運動状態が不連続にならないように（前記境界条件を満たすように）初期状態姿勢角及びその角速度を決定する必要がある。この場合、上述のように求めた仮定常歩容の終端上体姿勢角速度は、前述した上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃに対応する上体姿勢角加速度パターンの設定によって、初期上体姿勢角速度初期値（基準上体姿勢角速度初期値）に一致するように生成されているので、残りの条件である次式を満たせば、上体姿勢角及び角速度に関する上記条件を満足する。
2003057426.tif 000025
また、
2003057426.tif 000026
であるから、この式３３の両辺を定常歩容の初期から終端まで２階積分することにより、次式の関係を得る。
2003057426.tif 000027
一方、定常歩容生成においては、前記の如く目標ＺＭＰを満足するために、基本的には上体並進運動モードを用いて上体２４の水平加速度（水平加減速）を調整するが、目標ＺＭＰを満足するための上体２４の水平加速度が、十分に発生できない状況（十分な摩擦力が発生できない状況）では、上体回転運動モードを用いて全体重心加速度が変わらないようにしつつ上体姿勢角の角加速度を調整することで、上体並進運動モードによる上体水平加速度の不足分が補われる。
上記上体回転運動モードを用いて上体姿勢角加速度を調整する動作は、図１０に示すフライホイールＦＨが備わったロボット１において、そのフライホイールＦＨの角加速度を調整することと近似的に等価である。フライホイールＦＨの回転速度が０に近いならば、ジャイロ効果は発生せず、フライホイールＦＨが発生する力は、フライホイールＦＨの角加速度だけで決定される。したがって、上体２４にフライホイールＦＨが備わったロボット１においては、フライホイールＦＨの初期角度・角速度が多少変わっても、該フライホイールＦＨを同じパターンの角加速度で動かせば、発生する力はほとんど変わらない。それ故、ロボット動力学方程式である式０１、式０２、式０３ではジャイロ効果を無視している。したがって、本実施形態のロボット１において、式０１、式０２、式０３、あるいは、より一般的で厳密な動力学モデルのいずれを用いた場合でも、全体重心加速度が変わらないようにしつつ上体姿勢角を同じパターンの角加速度で動かせば（すなわち上体回転運動モードを用いて、上体姿勢角を同じパターンの角加速度で動かせば）、初期上体姿勢角度・角速度を少々変えても、発生する慣性力と重力との合力はほぼ同じになる。言い換えれば、初期上体姿勢角度・角速度を少々変えても、上記のフローチャートに従って生成される歩容の上体姿勢角加速度は同じになる。
つまり、式３４における上体姿勢角加速度の２階積分値は、初期上体姿勢角度・角速度に依存しなくなる。すなわち、式３４における上体姿勢角加速度の２階積分値は、初期上体姿勢角度・角速度の値に関わらず、一定値として扱うことができる。
初期上体姿勢角の値が仮歩容の初期上体姿勢角、かつ初期上体姿勢角速度の値が仮歩容の初期上体姿勢角速度であった場合に、終端上体姿勢角が仮歩容の終端上体姿勢角になったのであるから、この関係を式３４に代入して次式を得る。
2003057426.tif 000028
これより、
2003057426.tif 000029
上記議論により上体姿勢角加速度の２階積分値は定数扱いできる（初期上体姿勢角度・角速度に依存しない）ので、上式を式３４に代入し、次式が得られる。
2003057426.tif 000030
式３７と式３２とから前記式３０が得られる。
なお、初期上体姿勢角は、本実施形態では、式３１のように基準上体姿勢角初期値に一致させるようにしたが、定常歩容の上体姿勢角の平均値が基準上体姿勢角初期値に一致するように初期上体姿勢角を設定するようにしてもよい。あるいは、定常歩容の上体姿勢角の最大値と最小値の平均値が基準上体姿勢角初期値に一致するように初期上体姿勢角を設定しても良い。
また、前記ではロボット１を直進移動させる場合に限定した例を説明したが、旋回移動を含む定常歩容を決定する場合には、その初期と終端とではロボット１の進行方向が変わる。このため初期上体姿勢角速度は初期上体姿勢角に依存するようになる。したがって、これを考慮して初期上体姿勢角および角速度を決定する必要がある。この場合には、例えば次の式３７ａ、３７ｂを満たすように初期上体姿勢角及び初期上体姿勢角速度を更新するようにすればよい。
2003057426.tif 000031
なお、式３７ａ、３７ｂのそれぞれの右辺第１項の積分期間は、時刻ＴｓからＴｍまでの期間と、Ｔｓ２からＴｍ２までの期間とを合わせた期間であり、右辺第２項の積分期間は、時刻ＴｍからＴｓ２までの期間とＴｍ２からＴｅまでの期間とを合わせた期間である。
より具体的に説明すると定常歩容では、第１旋回歩容の支持脚座標系（次回歩容支持客座標系）から見た初期状態姿勢角及び角速度が、それぞれ、次の第１旋回歩容の支持脚座標系（次次次回歩容支持脚座標系）から見た終端上体姿勢角および角速度に一致していなければならない。そこで、本実施形態では、新たな初期上体姿勢角は、前記式３１により決定し、この新たな初期上体姿勢角と、これを定常歩容におけるロボット１のトータルの旋回角（鉛直軸回りの旋回角）に応じたマトリクス（回転座標変換のマトリクス）により次回歩容支持脚座標系から見た値に座標変換したものとをそれぞれ式３７ａの左辺の初期上体姿勢角、終端上体姿勢角に代入する。また、式３７ａ，３７ｂのそれぞれの右辺第１項の積分に係る上体姿勢角加速度は、前記図２２のＳ５１６で逐次求められたものが用いられる。
そして、式３７ａ，３７ｂの初期上体姿勢角速度と、式３７ａ，３７ｂの右辺第２項の積分に係るＺＭＰｒｅｃ（図２６の台形状のパターン）の台形高さをと未知数として（但し、ＺＭＰｒｅｃの台形パターンの折れ点の時刻はあらかじめ定める。また、第１旋回歩容のＺＭＰｒｅｃの台形高さａｃｙｃ１と第２旋回歩容のＺＭＰｒｅｃの台形高さａｃｙｃ２を同一値とする。）、それらの未知数を含む式３７ａ，３７ｂの連立方程式を解くことにより求められる初期上体姿勢角速度を新たな初期上体姿勢角速度として決定する。この場合、式３７ｂの終端上体姿勢角速度は、未知数である初期上体姿勢角速度を、定常歩容の上記トータルの旋回角に応じたマトリクスにより次回支持脚座標系から見た値に座標変換したものである。
ロボット１の移動が旋回を含む移動である場合には、上記のようにして、新たな初期上体姿勢角および角速度を決定すればよい。
なお、定常歩容の境界条件を満たすような初期上体姿勢角速度を探索的に求めることも可能である。
図２０のＳ３１０の処理を完了した後、図１９のＳ２１０に進み、生成した歩容（仮定常歩容）の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系（図３１のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換し、その値を（Ｘｅ，Ｖｘｅ）とする（Ｘｅ：終端上体水平位置、Ｖｘｅ：終端上体水平速度）。
次いでＳ２１２に進み、図示の如く、初期上体水平位置速度（Ｘｓ，Ｖｘｓ）と終端上体水平位置速度（Ｘｅ，Ｖｘｅ）との差を算出する。この差（Ｘｓ−Ｘｅ，Ｖｘｓ−Ｖｘｅ）を上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）と呼ぶ。定常歩容では、前記境界条件を満たす必要があるので、（Ｘｓ，Ｖｘｓ）と（Ｘｅ，Ｖｘｅ）とが一致していなければならない。従って、上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）が零またはほぼ零でなければならない。本実施形態では、以下のように、上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）がほぼ零となる（Ｘｓ，Ｖｘｓ）が探索的に求められる。
次いでＳ２１４に進み、算出した上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）が、あらかじめ適宜設定された許容範囲内にあるか否かが判断される。尚、このように上体水平位置速度境界条件誤差の許容範囲を設定する代わりに、初期発散成分（Ｘｓ＋Ｖｘｓ／ω０）と終端発散成分（Ｘｅ＋Ｖｘｅ／ω０）との差、および初期収束成分（Ｘｓ−Ｖｘｓ／ω０）と終端収束成分（Ｘｅ−Ｖｘｅ／ω０）との差がそれぞれある許容範囲内にあるか否か判断するようにしても良い。ただしω０は、前述したように、ある所定の値である。
Ｓ２１４の判断結果がＮＯであるときにはＳ２１６に進む。このＳ２１６では、（Ｘｓ，Ｖｘｓ）の付近に複数（本実施形態では２つ）の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）が決定される。ここで、ΔＸｓ，ΔＶｘｓは、それぞれＸｓ，Ｖｘｓに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記Ｓ２０８と同様の処理によって定常歩容が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系（図３１のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値（Ｘｅ＋ΔＸｅ１，Ｖｘｅ＋ΔＶｘｅ１），（Ｘｅ＋ΔＸｅ２，Ｖｘｅ＋ΔＶｘｅ２）が求められる。ここで、（Ｘｅ＋ΔＸｅ１，Ｖｘｅ＋ΔＶｘｅ１）は（Ｘｓ＋ΔＸｓ，Ｖｘｓ）に対応する終端上体位置速度を意味し、（Ｘｅ＋ΔＸｅ２，Ｖｘｅ＋ΔＶｘｅ２）は（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）に対応する終端上体位置速度を意味している。なお、この場合の定常歩容（仮歩容）の生成処理では、上体水平位置速度以外の変数の初期状態（時刻Ｔｓでの状態）は、例えば上体水平位置速度の初期値候補を（Ｘｓ，Ｖｘｓ）とした場合と同一に設定すればよい。Ｓ２１６ではさらに、前記Ｓ２１０と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
次いでＳ２１８に進み、（Ｘｓ，Ｖｘｓ）およびその付近の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対する上体水平位置速度境界条件誤差を基に、（Ｘｓ，Ｖｘｓ）の次の初期値候補が探索法（擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など）により決定される。すなわち、（Ｘｓ，Ｖｘｓ）およびその付近の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対する上体水平位置速度境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補（Ｘｓ，Ｖｘｓ）から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、上体水平位置速度境界条件誤差をより小さくするような初期値候補（Ｘｓ，Ｖｘｓ）が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）が決定された後、Ｓ２０６に戻る。
Ｓ２１４の判断結果がＮＯとなる限りは上記した処理（Ｓ２０６〜Ｓ２１８の処理）が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）に対応する定常歩容の生成処理（Ｓ２０８）におけるＳ３００（図２０参照）では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補（Ｘｓ，Ｖｘｓ）に対応するＳ２０８の処理におけるＳ３１０（図２０参照）で決定したものに設定される。そして、Ｓ２１４の判断結果がＹＥＳになると、繰り返しループ（Ｓ２０４）を抜けてＳ２２０に進む。なお、Ｓ２０４の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
Ｓ２２０では、本来の初期時刻０（今回歩容の終端時刻）における初期上体水平位置速度（Ｘ０，Ｖ０）と初期時刻０における初期上体鉛直位置速度（Ｚ０、Ｖｚ０）と初期時刻０における初期上体姿勢角および角速度が求められる。
具体的には、（Ｘ０，Ｖ０）と（Ｚ０，Ｖｚ０）は、前記図２１に示した定常歩容瞬時値決定サブルーチンのＳ４０８およびＳ４１４において、第２旋回歩容から第２旋回歩容に切り換わった瞬間の時刻、すなわち、時刻ｋ＝Ｔｃｙｃ（時刻Ｔｅ−Ｔｓ）であるときに決定された上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Ｔｃｙｃから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図３１のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値に決定される。同様に、初期状態姿勢角および角速度は、時刻ｋ＝Ｔｃｙｃ（時刻Ｔｅ−Ｔｓ）であるときに決定された上体姿勢角及び角加速度を、時刻Ｔｃｙｃから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図３１のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値に決定される。
次いでＳ２２２に進み、定常歩容初期発散成分ｑ［０］が次式から求められる。
2003057426.tif 000032
ただしω０は、発散についての解説で述べたように、ある所定の値である。
さらに、Ｓ２２４に進み、定常歩容初期発散成分ｑ［０］が今回歩容支持脚座標系から見た値に変換され、これがｑ”［０］として求められる。また、初期上体鉛直位置速度（Ｚ０，Ｖｚ０）が今回歩容支持脚座標系から見た値に変換され、これが（Ｚ０”，Ｖｚ０”）として求められる。
補足すると、（Ｚ０”，Ｖｚ０”）は、第２旋回歩容の支持脚座標系（図１５のＸ”，Ｙ”，Ｚ”座標系）から見た第２旋回歩容終端上体鉛直位置速度に一致している。また、ｑ”［０］も第２旋回歩容の支持脚座標系（図１５のＸ”，Ｙ”，Ｚ”座標系）から見た第２旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、（Ｚ０”，Ｖｚ０”）およびｑ”［０］を算出するようにしても良い。
以上により、図１２のＳ０２４の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図１２のＳ０２６に進み、今回歩容の歩容パラメータを決定（一部は仮決定）する。Ｓ０２６では、より具体的には、図３２に示すフローチャートに従って、以下の処理が行われる。
まず、Ｓ６００において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。
具体的には、今回歩容初期遊脚足平位置姿勢（今回歩容遊脚足平位置姿勢の初期値）は、今回歩容支持脚座標系から見た現在遊脚位置姿勢（前回歩容終端遊脚位置姿勢）に設定される。今回歩容初期支持脚足平位置姿勢（今回歩容支持脚足平位置姿勢の初期値）は、今回歩容支持脚座標系から見た現在支持脚足平位置姿勢（前回歩容終端支持脚足平位置姿勢）に設定される。また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た次回歩容支持脚座標系（今回歩容に係わる１歩目の遊脚着床位置姿勢の要求値）に対応して決定される。すなわち、今回歩容終端遊脚足平位置姿勢から遊脚足平２２を床に接触させたまま、すべらないように該足平２２をその底面のほぼ全面が接地するまで回転させたときの、該足平２２の代表点が今回歩容支持脚座標系から見た次回歩容支持脚座標系の原点に合致するように今回歩容終端遊脚足平位置姿勢が決定される。
今回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、支持脚足平着地予定位置姿勢を設定する。支持脚足平着地予定位置姿勢は、今回歩容支持脚座標から見た次次回歩容支持脚座標（今回歩容に係わる２歩目の遊脚足平位置姿勢の要求値）に対応して設定される。より具体的には、支持脚足平着地予定位置姿勢は、その位置姿勢から、足平２２を床に接触させたまま、すべらないように該足平２２をその底面のほぼ全面が床に接地するまで回転させたときの該足平２２の代表点が今回歩容支持脚座標から見た次次回歩容支持脚座標の原点に合致するように設定される。
今回歩容終端支持脚足平位置姿勢は、現在支持脚位置姿勢（今回歩容初期支持脚足平位置姿勢）から、次回歩容支持脚座標系に対応する足平着地予定位置姿勢（前記要求パラメータにおける２歩目の遊脚側足平着地位置姿勢の要求値）に至る足平位置姿勢軌道を、今回歩容終端まで前記有限時間整定フィルタにより生成することにより求められる。
次いで、Ｓ６０２に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。ただし、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる（今回歩容終端での基準上体姿勢角及び角速度がそれぞれ定常歩容初期の基準上体姿勢角及び角速度に一致する）ように上記パラメータが設定される。なお、本実施形態では、基準上体姿勢は、今回歩容及び定常歩容のいずれでも定常的な鉛直姿勢である。
次いで、Ｓ６０４に進み、今回歩容の腕姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。ただし、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように上記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定（図１４のＳ１０４）の場合と同様、鉛直軸（あるいは上体体幹軸）まわりの両腕体の角運動量変化に関すること以外の運動パラメータであり、両腕体の重心位置の軌道を規定するパラメータである。
次いで、Ｓ６０６に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図６のように実質的に連続な（値がステップ状に飛ばない）軌道になるように設定される。
ただし、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。
具体的には、まず、前記図１２のＳ０２４の処理（定常歩容初期状態の決定処理）で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値（Ｚ０”，Ｖｚ０”）、すなわち、図１９のＳ２２４で求めた（Ｚ０”，Ｖｚ０”）等を基に、例えば前記式０４（あるいはロボット１のキネマティクスモデル）を用いて、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。具体的には、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、Ｓ２２４で求めた定常歩容の上体鉛直位置Ｚ０”に対応する図１０のモデルの上体質点鉛直位置と、定常歩容初期の各足平位置を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直位置とを式０４に代入することで求められる。また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、Ｓ２２４で求めた定常歩容の上体鉛直速度Ｖｚ０”に対応する図１０のモデルの上体質点鉛直速度と、定常歩容初期の各足平鉛直速度を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直速度とを式０４の両辺を微分してなる式に代入することにより求められる。なお、この初期全体重心鉛直位置速度の算出は、より厳密なモデルを用いて行なうようにしてもよい。
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を、前記式１３と下記式４１の終端全体重心鉛直位置速度に代入すると共に、前回の目標歩容瞬時値（より厳密には、前回目標歩容の終端状態を今回支持脚座標系に変換したもの）の全体重心鉛直位置および速度を、前記式１３と下記式４１の初期全体重心鉛直位置および速度に代入し、式１３と式４１の関係を満足するように、今回歩容の床反力鉛直成分パターン（より具体的にはパラメータ値）が決定される。ただし、式１３と式４１における積分値は今回歩容の初期から終端までの期間の積分値とする。
2003057426.tif 000033
ただし、重力加速度は負の値とする。
より具体的には、まず、図６のような床反力鉛直成分パターンを規定する床反力鉛直成分パラメータ（折れ点の時刻等）のうちの、少なくとも２つのパラメータを独立な未知変数として、その未知変数の値を、式１３と式４１とからなる連立方程式を解いて決定する。
未知変数とする床反力鉛直成分パラメータには、例えば、図６の台形の高さ（床反力鉛直成分のピーク値）と幅（片脚支持期時間）とを選択すれば良い。この場合、図６の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。補足すると、未知変数を１つとすると、一般的には式１３と式４１の連立方程式を満足する解が存在しない。
次いで、Ｓ６０８に進み、床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］（具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ）が、定常歩容の第１旋回歩容や第２旋回歩容と同様に設定される。たとえば図３３に示すようなパターンで床反力水平成分許容範囲が設定される。本実施形態では、先にＳ６０６で決定した床反力鉛直成分パターンに応じて前記式１２に基づいて床反力水平成分許容範囲が設定される。
次いで、Ｓ６１０に進み、今回歩容のＺＭＰ軌道（具体的にはＺＭＰ軌道を規定するパラメータで、軌道の折れ点の時刻や位置）が、定常歩容の第１旋回歩容や第２旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図７に示すごとく設定される。ただし、今回歩容のＺＭＰ軌道が前記定常歩容のＺＭＰ軌道に連続してつながるように上記パラメータを設定される。つまり、今回歩容終端におけるＺＭＰの位置が定常歩容初期のＺＭＰ位置に一致するように、ＺＭＰ軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるＺＭＰ軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のＺＭＰ軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ＺＭＰ軌道が、空中期開始時から、定常歩容初期のＺＭＰ位置まで、直線的に連続して変化するようにＺＭＰ軌道パラメータを設定すればよい。
なお、Ｓ６１０で決定される今回歩容のＺＭＰ軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとく設定した今回歩容のＺＭＰ軌道を、以降、今回歩容の仮目標ＺＭＰ軌道と呼ぶこととする。
最後に、Ｓ６１２に進み、上体姿勢角復元期間［Ｔａ，Ｔｂ］が設定される。上体姿勢角復元開始時刻Ｔａは、定常歩容の第２旋回歩容におけるＴｍに相当し、上体姿勢角復元修了時刻Ｔｂは、定常歩容の第２旋回歩容におけるＴｓ２に相当するものである。これらの時刻Ｔａ，Ｔｂの設定の仕方は、それぞれＴｍおよびＴｓ２の設定の仕方と同様である。
図１２の説明に戻って、上記のごとくＳ０２６に示す処理（今回歩容の歩容パラメータ決定処理）を行って後、次いでＳ０２８に進み、今回歩容の歩容パラメータ（ＺＭＰ軌道パラメータ）が修正される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべくＺＭＰ軌道パラメータが修正される。
図３４はその処理を示すサブルーチン・フロー・チャートである。
まずＳ７００を経てＳ７０２に進み、仮目標ＺＭＰパターンとその他の今回歩容パラメータを基に、今回歩容終端時刻までの仮今回歩容が仮生成される。
Ｓ７０２では、図３５に示すフローチャートに従って、以下の処理が行われる。
以下説明すると、Ｓ８００において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻ｋに０が代入される。また、前回目標歩容の終端状態（より具体的には、上体水平位置速度、上体鉛直位置速度、上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢などの歩容状態の終端値）を今回支持脚座標系に変換したものを、今回歩容初期状態とする。
次いで、Ｓ８０２を経てＳ８０４において、仮歩容生成用時刻ｋが今回歩容終端時刻Ｔｃｕｒｒ以前であるか否か（ｋ≦Ｔｃｕｒｒであるか否か）が判断され、その判断結果がＹＥＳある場合には、Ｓ８０６の今回歩容瞬時値決定サブルーチンに進み、今回歩容の時刻ｋの瞬時値が決定される。次いでＳ８０８に進み、仮歩容生成用時刻ｋがΔｋだけ増加され、Ｓ８０４に戻る。
Ｓ８０４の判断結果がＮＯである場合には、図３５に示すフローチャートの処理が完了する。
以上の処理により、仮の今回歩容が初期から終端まで生成される。
Ｓ８０６の歩容瞬時値決定サブルーチンでは、図３６に示す処理が行われる。以下にこれを説明する。
まずＳ９００において、今回歩容パラメータの床反力鉛直成分軌道パラメータを基に、図６に示した目標床反力鉛直成分の時刻ｋにおける値（今回値）が求められる。次いで、Ｓ９０２において、今回歩容パラメータのＺＭＰ軌道パラメータを基に、図７に示す目標ＺＭＰ軌道（仮目標ＺＭＰ軌道）の時刻ｋにおける値（今回値）を求める。
次いでＳ９０４に進み、今回歩容パラメータ（足平軌道パラメータ、基準上体姿勢軌道パラメータおよび腕姿勢軌道パラメータ）を基に、時刻ｋにおける目標両足平位置姿勢、基準上体姿勢および目標腕姿勢の値（今回値）がそれぞれ求められる。ただし、目標腕姿勢に関しては、腕全体重心位置は決定されるが、鉛直軸（または上体体幹軸）まわりの角運動量を変化させる運動自由度は、未だ決定されていない。なお、定常歩容の場合と同様、今回歩容の目標足平位置姿勢軌道及び床反力鉛直成分軌道は、それぞれ、図３２のフローチャートで決定した足平軌道パラメータ、床反力鉛直成分軌道パラメータに応じて互いに独立的に決定される。
次いでＳ９０６に進み、Ｓ９００で求めた目標床反力鉛直成分の今回値を満足する（ロボット１の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ような時刻ｋにおける全体重心鉛直位置が算出される。この算出は、具体的には前記図２１のＳ４０６と同様の処理により行なわれる。
次いでＳ９０８に進み、上記の如く求めた全体重心鉛直位置を満足する上体鉛直位置の今回値が算出される。この算出は、具体的には、前記図２１のＳ４０８と同様の処理により行なわれる。
次いでＳ９１０に進み、前記図３２のＳ６０８で決定した床反力水平成分許容範囲のパラメータに基づいて、図３３に示す床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］の時刻ｋにおける値（今回値）が求められる。
次いでＳ９１２に進み、目標ＺＭＰを満足する（目標ＺＭＰ回りに発生するモーメント水平成分が０になる）ように、今回仮歩容の上体水平加速度と上体姿勢角加速度が決定される。ただし、これらの加速度は、床反力水平成分Ｆｘが［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないように決定される。この処理は、図２１のＳ４１２の詳細を示す図２２のフローチャートの処理とは若干異なる。
Ｓ９１２では、具体的には、図３７のフローチャートに示す処理が行われる。図３７のフローチャートでは、まずＳ１０００おいて、時刻ｋが前記図３２のＳ６１２で設定した上体姿勢角復元期間［Ｔａ，Ｔｂ］にあるか否かが判断される。
この判断結果がＮＯである場合（床反力水平成分許容範囲が０もしくは狭い場合）には、Ｓ１００２からＳ１０１４までの処理が実行される。Ｓ１００２からＳ１０１４までの処理は、前述の図２２のＳ５０４からＳ５１６までの処理と同じであるので、説明を省略する。
Ｓ１０００の判断結果がＹＥＳである場合には、Ｓ１０１６に進み、上体姿勢復元モーメントＺＭＰ換算値パターンＺＭＰｒｅｃが設定される。この場合、定常歩容の生成に係わる前記図２２のＳ５１８と異なり、ＺＭＰｒｅｃは、一定値０のパターン（すなわち図２６に示す台形パターンの高さが０であるパターン）に設定される。次に、Ｓ１０１８からＳ１０２６までの処理が行われる。Ｓ１０１８からＳ１０２６までの処理は、前記図２２のＳ５２０からＳ５２８までの処理と同じであるので説明を省略する。なお、Ｓ１０１６〜Ｓ１０２６の処理では、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃの瞬時値は常に０になるので、Ｓ１０２０で求められる上体回転モードの上体姿勢角加速度βも０になる。従って、β＝０として、Ｓ１０２２、Ｓ１０２４及びＳ１０２６の処理のみを行なうようにしてもよい。Ｓ１０００の判断結果がＹＥＳである場合、すなわち、上体姿勢角復元期間［Ｔａ，Ｔｂ］では、上記のようにβ＝０となることから、Ｓ９１２の処理では、上体姿勢角復元期間［Ｔａ，Ｔｂ］の期間（床反力水平成分許容範囲が十分に大きい期間）で、定常歩容生成の場合と異なり、上体姿勢角速度の復元方向への上体姿勢変化の運動軌道は生成されないこととなる。
なお、本実施形態では、基準上体姿勢が鉛直姿勢で、基準上体姿勢による上体姿勢角加速度が０であるため、上記の如く求めた上体回転モードの角加速度βをＳ９１２の処理で決定される上体姿勢角加速度とした。但し、基準上体姿勢が変化するように該基準上体姿勢軌道パラメータを設定した場合には、上記の如く求めた上体回転モードの角加速度βと基準上体姿勢角加速度の和をもって、Ｓ９１２の処理で決定される上体姿勢角加速度とすべきである。
以上のごとく図３６のＳ９１２の処理を完了した後、次いでＳ９１４に進み、上記Ｓ９１２で求めた上体水平加速度を逐次積分する（今回歩容初期（時刻ｋ＝０）から現在時刻ｋまで累積加算する）ことによって上体水平速度が求められ、さらにその上体水平速度を逐次積分する（今回歩容初期（時刻ｋ＝０）から現在時刻ｋまで累積加算する）ことによって、上体水平位置（今回値）が求められる。また、上記Ｓ９１２で求めた上体姿勢角加速度を逐次積分する（今回歩容初期（時刻ｋ＝０）から現在時刻ｋまで累積加算する）ことによって、上体姿勢角速度が求められ、さらにその上体姿勢角速度を逐次積分する（今回歩容初期（時刻ｋ＝０）から現在時刻ｋまで累積加算する）ことによって、上体姿勢角の今回値が求められる。このＳ９１４の処理は図２１のＳ４１４と同様の処理である。
以上のごとく図３５のＳ８０６の今回歩容瞬時値決定サブルーチンが実行され、次いでＳ８０８に進み、歩容生成用時刻ｋの値が歩容生成インターバルΔｋだけ増加される。次いでＳ８０４に戻り、Ｓ８０４に示す条件が成立している限り、Ｓ８０６とＳ８０８の処理が繰り返される。そして、Ｓ８０４に示す条件が成立しなくなったら、すなわち終端まで仮今回歩容の生成が完了したら、図３４のＳ７０４に進む。
Ｓ７０４では、上記のごとくＳ７０２で求めた今回歩容終端での上体水平位置速度（Ｘｅ，Ｖｘｅ）から、終端発散成分ｑ０［ｋ］（ｋ＝Ｔｃｕｒｒ）が図示の式（前記式１０）を用いて求められる。
次いでＳ７０６に進み、今回歩容終端発散成分ｑ０［ｋ］と定常歩容初期発散成分ｑ”（図１９のＳ２２４で求めたもの）との差である終端発散成分誤差ｅｒｒｑが図示の式を用いて求められる。さらに、Ｓ７０８に進んで、その求めた終端発散成分誤差ｅｒｒｑが許容範囲内（０近傍の範囲）にあるか否か判断する。
Ｓ７０８の判断結果がＮＯであるときはＳ７１０に進み、ａ＝Δａ（Δａは所定の微小量）とし、図３８の関係に従って現在の仮目標ＺＭＰパターンに台形状の修正を加えた目標ＺＭＰを基に、前記Ｓ７０２と同様に、終端までの仮今回歩容を計算する。ここで、図３８を参照して、ａは、今回歩容終端発散成分を定常歩容初期発散成分にできるだけ一致させる（今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に近づける）ために、仮目標ＺＭＰを修正するための台形パターンの高さである。この場合、本実施形態では、仮目標ＺＭＰの修正は、支持脚足平２２の底面のほぼ全面が接地する期間（足底全面接地期間）、すなわち、床反力水平成分許容範囲が十分に広いものとなる期間において行なうようにしており、上記台形パターンの折れ点の時刻は、足底全面接地期間における仮目標ＺＭＰの折れ点の時刻に合わせて設定されている。なお、Ｓ７１０でａ＝Δａとするのは、現在の仮目標ＺＭＰ軌道を上記台形パターンによって微小量、修正したときの前記終端発散成分誤差ｅｒｒｑの変化を観測するためである。
上記のようにＳ７１０にて、ａ＝Δａとして仮目標ＺＭＰ軌道を修正したときの仮今回歩容を終端まで生成した後、さらにＳ７１２に進み、Ｓ７１０で求めた仮今回歩容終端での上体水平位置速度（Ｘｅ１，Ｖｘｅ１）を基に、この仮今回歩容における終端発散成分ｑ１［ｋ］が図示の式（前記式１０）を用いて求められる。
尚、Ｓ７１０においてΔａは、本実施形態では、適宜に設定される微小量の定数としたが、以下に説明する繰り返し演算によって終端発散成分誤差ｅｒｒｑが小さくなるにつれてΔａを減少させるように該Δａを設定するようにしても良い。ただし、定数にしておいても、数回の繰り返し演算で終端発散成分誤差ｅｒｒｑを許容範囲内に収めることができる。
次いでＳ７１４に進み、パラメータ感度ｒ（Δａに対する終端発散成分誤差の変化の割合）が図示の式から求められる。さらに、Ｓ７１６に進み、ａ＝−ｅｒｒｑ／ｒ、すなわちＳ７０６で求めた終端発散成分誤差ｅｒｒｑを、Ｓ７１４で求めたパラメータ感度ｒで割った値を高さａとする台形パターンの修正量を図３８の関係に従って仮目標ＺＭＰパターンに加えることにより、仮目標ＺＭＰパターンが修正される（新たな仮目標ＺＭＰパターンが決定される）。
次いでＳ７０２に戻る。そして、Ｓ７０８の判断結果がＮＯである限りは、上記したＳ７０２〜Ｓ７１６の処理が繰り返され、Ｓ７０８の判断結果がＹＥＳになったときには、その繰り返しループ（Ｓ７００）を抜けてＳ７１８に進む。
Ｓ７１８では、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、および仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に、今回歩容の上体姿勢角が定常歩容の上体姿勢角に近づくように、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）のパターンが決定される。ここで決定するＺＭＰｒｅｃは、後述する今回歩容瞬時値の生成処理で、床反力水平成分許容範囲が十分に大きいものとなる期間（片脚支持期内の期間）において、上体姿勢角軌道を定常歩容につながらせる（近づける）ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性（Ｓ７０８の条件）を維持できるように、仮目標ＺＭＰを修正するためのものである。
このＺＭＰｒｅｃは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図２６に示したＺＭＰｒｅｃの台形パターンにおいて、台形の頂点（折れ点）の時刻は既知とする（より具体的には台形の折れ点の時刻を目標ＺＭＰの折れ点時刻に合わせる）と共に、台形高さを未知数とし、以下のようにＺＭＰｒｅｃの台形高さ（パラメータ）が求められる。ただし、Ｓ７１８では図２６におけるＴｍおよびＴｓ２をそれぞれＴａ，Ｔｂに置き換えるものとする。
上記のように上体姿勢復元モーメントＺＭＰ換算値パターンの未知パラメータがひとつの場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本実施形態では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、１歩容の中でのＺＭＰｒｅｃパターンを複雑にし、未知パラメータを２つ以上にして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげても良いが、ＺＭＰｒｅｃパターンがジグザグに大きく変動し過ぎる恐れがある。
以下では、算出原理を説明した後、算出手順を説明する。
前述のごとくＳ７０２でＺＭＰｒｅｃパターンの台形高さを０として求めた仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差を求め、これをθｅｒｒとする。また、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差を求め、これをｖθｅｒｒとする。
ここで、ＺＭＰｒｅｃパターンの台形高さをある値ｂｃｕｒｒとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第１旋回歩容が生成されると想定する。ただし、第１旋回歩容の上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃパターンは、図２２のＳ５１８において求められた第１旋回歩容のＺＭＰｒｅｃパターン（高さが前記ａｃｙｃ１である図２６の台形パターン）とある値ｂ１の和であるとする。
このようにして生成された歩容をＺＭＰｒｅｃ修正歩容と呼び、その終端（第１旋回歩容の終端）上体姿勢角と角速度をそれぞれθ１、ｖθ１とする。
Ｓ０２４における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容（最終的にＳ３１０の式３０、式３１によって決定された定常歩容初期上体姿勢角および角速度を初期値とし、ＺＭＰｒｅｃパターンをＳ５１８において求められたパターン（高さがａｃｙｃ１である図２６の台形パターン）とした場合の定常歩容）の第１旋回歩容終端上体姿勢角と角速度をそれぞれθ１ｏｒｇ、ｖθ１ｏｒｇとする。
ここで、Δθ１、Δｖθ１を次のように定義する。
2003057426.tif 000034
Δθ１およびΔｖθ１は、ＺＭＰｒｅｃ修正歩容と本来の定常歩容を第１旋回歩容の終端まで生成した時点において、両者間における上体姿勢角の差及び角速度の差を意味する。もし、Δθ１およびΔｖθが０になれば、ＺＭＰｒｅｃ修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ＺＭＰｒｅｃパターンの台形高さを前記ａｃｙｃ２として第２旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθ１およびΔｖθ１が０となる今回歩容台形高さｂｃｕｒｒ、第１旋回歩容台形高さｂ１を求め、求めたｂｃｕｒｒを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット１の上体姿勢角に関する動力学モデルが図１０に示すフライホイールＦＨのような線形特性を持つことから、Δθ１およびΔｖθは、今回歩容台形高さｂｃｕｒｒ、第１旋回歩容台形高さｂ１、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角の差θｅｒｒ、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角速度の差ｖθｅｒｒと以下の関係を持つ。
2003057426.tif 000035
だだし、ｃ１１、ｃ１２、ｃ２１、ｃ２２、ｅ１、ｅ２は、今回歩容、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃパターンのパラメータ（特に時間に関するパラメータ）などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での上体姿勢角の差θｅｒｒと角速度の差Ｖθｅｒｒが求められる。
次いで、式５２，５３の係数であるｃ１１、ｃ１２、ｃ２１、ｃ２２、ｅ１、ｅ２が、今回歩容、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃパターンのパラメータ（特に時間に関するパラメータ）などを基に求められる。
次いで式５２、式５３の右辺が０となるように今回歩容台形高さｂｃｕｒｒ、第１旋回歩容台形高さｂ１が決定される。すなわち、式５２、式５３の右辺を０とした連立方程式を解くことによって、ｂｃｕｒｒ、ｂ１が求められる。
最後に、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）の台形パターンの台形高さが、上記求めた今回歩容台形高さｂｃｕｒｒに設定される。
次いでＳ７２０に進み、現在の仮目標ＺＭＰパターン（Ｓ７００の繰り返しループを抜けたときの仮目標ＺＭＰパターン）に、Ｓ７１８で上記のように求めた上体姿勢復元モーメントＺＭＰ換算値パターンを加算してなるパターンが今回歩容の目標ＺＭＰパターンとして決定される。なお、この処理は、Ｓ７１０においてΔａの高さの台形パターンを仮目標ＺＭＰパターンに加える処理と同様である。
以下に仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算した理由を述べる。
Ｓ７００のループにおいて生成される仮今回歩容は、前述の如く、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃを０（ＺＭＰｒｅｃの台形パターンの高さパラメータを０）にして生成される。このようにしてＳ７００のループで最終的に生成された仮今回歩容では、その上体位置速度は、定常歩容に連続し、もしくは近づくが、上体姿勢角は、定常歩容の上体姿勢角からずれ、場合によっては発散してしまう。
Ｓ７１８で求められた上体姿勢復元モーメントＺＭＰ換算値パターンは、上体姿勢角の定常歩容に対するずれを０に近づけるための上体姿勢角加速度を発生させるものである。
しかし、Ｓ７００のループで最終的に得られた仮目標ＺＭＰパターンを修正することなく、Ｓ７１８で求められた上体姿勢復元モーメントＺＭＰ換算値パターンに応じた上体姿勢角加速度を発生させると、動力学的平衡条件（ロボットの重力と慣性力の合力が目標ＺＭＰに作用するモーメントが鉛直成分を除いて０になること）を満足させるために、上体水平位置軌道を前記仮今回歩容の上体水平位置軌道からずらさざるを得なくなる。そこで、本実施例では、上体水平位置軌道をＳ７００のループで最終的に得られるものからずらさなくて済むように、ＺＭＰｒｅｃによって仮目標ＺＭＰパターンを修正することとした。
前記仮今回歩容の運動に加えて、Ｓ７１８で求めた上体姿勢復元モーメントＺＭＰ換算値パターンに対応する上体姿勢角加速度を発生させると、ＺＭＰ（運動によって発生する重力と慣性力の合力の鉛直成分を除くモーメントが０になる点）は上体姿勢復元モーメントＺＭＰ換算値だけずれる。したがって、逆に、仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算したパターンを目標ＺＭＰパターンとして、Ｓ７１８で求めた上体姿勢復元モーメントＺＭＰ換算値パターンに対応する上体回転モードの上体姿勢角加速度を発生させながら、目標ＺＭＰパターンを満足する今回歩容を生成すれば、前記仮今回歩容と同じ上体並進運動となる。
以上が、仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算したパターンを目標ＺＭＰパターンとした理由である。
図１２に戻って、上記のごとくＳ０２８において今回歩容パラメータを修正した後、あるいはＳ０１６の判断結果がＮＯである場合には、Ｓ０３０に進み、今回歩容瞬時値が決定される。
Ｓ０３０では、図３６のＳ９００からＳ９１０までと同一の処理が行なわれ、次に、Ｓ９１２のサブルーチンである図３７のＳ１０００〜Ｓ１０２６の処理が行なわれる。ただし、この場合、図３７のＳ１０１６においては、上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンは、０に設定されるのではなく、図３４のＳ７１８で設定した上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンに設定される。次いで図３６のＳ９１４と同一の処理が実行され、これにより、図１２のＳ０３０の処理が完了する。
次いでＳ０３２に進み、スピン力をキャンセルする（ロボット１の腕以外の運動によって目標ＺＭＰ回りに発生する床反力モーメント鉛直成分を略零にする）ための腕動作が決定される。具体的には、腕を振らなかった場合の目標ＺＭＰにおける床反力モーメント鉛直成分軌道（厳密には、腕を振らずに歩容を生成した場合において、ロボットの重力と慣性力の合力が目標ＺＭＰに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの）が求められる。すなわち、Ｓ０３０の処理によって生成された歩容の運動（これには腕振りの運動は含まれていない）の瞬時値に釣り合う目標ＺＭＰ（瞬時値）回りの床反力モーメント鉛直成分で瞬時値が求められる。そして、これを、腕振り運動の等価慣性モーメントで割ることにより、スピン力キャンセルに必要な腕振り動作の角加速度が求められる。なお、補足すると、腕の振りが大き過ぎる場合には、等価慣性モーメントよりも大きな値で割れば良い。
次に、この角加速度を２階積分し、これを積分値が過大になるのを防ぐためのローカットフィルタに通して得た角度を腕振り動作角とする。ただし、腕振り動作では、左右の腕を前後逆方向に振り、両腕体の重心位置を変化させないようにする。なお、スピン力をキャンセルするための腕振り運動を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り運動を決定するようにしてもよい。
次いでＳ０３４に進み、歩容生成用時刻ｔをΔｔだけ増やし、Ｓ０１４に戻り、以上のごとく歩容生成を続ける。
以上が、歩容生成装置１００における目標歩容生成処理である。
図４を参照して本実施形態に係る装置の動作をさらに説明すると、歩容生成装置１００において、上記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢（軌道）、目標腕姿勢（軌道）が、ロボット幾何学モデル（逆キネマティクス演算部）１０２に送出される。
また、目標足平位置姿勢（軌道）、目標ＺＭＰ軌道（目標全床反力中心点軌道）、および目標全床反力（軌道）（目標床反力水平成分と目標床反力鉛直成分）は、複合コンプライアンス動作決定部１０４に送られると共に、目標床反力分配器１０６にも送られる。そして、目標床反力分配器１０６で、床反力は各足平２２Ｒ，２２Ｌに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部１０４に送られる。
複合コンプライアンス動作決定部１０４から、機構変形補償付き修正目標足平位置姿勢（軌道）がロボット幾何学モデル１０２に送られる。ロボット幾何学モデル１０２は、目標上体位置姿勢（軌道）と機構変形補償付き修正目標足平位置姿勢（軌道）を入力されると、それらを満足する脚体２，２の１２個の関節（１０Ｒ（Ｌ）など）の関節変位指令（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の１２個の関節の変位を追従制御する。また、ロボット幾何学モデル１０２は、目標腕姿勢を満足する腕関節の変位指定（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の腕体の１２個の関節の変位を追従制御する。
ロボット１に生じた床反力（詳しくは実各足床反力）は６軸力センサ３４によって検出される。その検出値は前記複合コンプライアンス動作決定部１０４に送られる。また、ロボット１に生じた姿勢傾斜偏差θｅｒｒｘ，θｅｒｒｙ（詳しくは目標上体姿勢角に対する実姿勢角の偏差で、ロール方向（Ｘ軸回り）の姿勢角偏差がθｅｒｒｘであり、ピッチ方向（Ｙ軸回り）の姿勢角偏差がθｅｒｒｙである）が傾斜センサ３６を介して検出され、その検出値は姿勢安定化制御演算部１１２に送られる。この姿勢安定化制御演算部１１２で、ロボット１の上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメントが算出されて複合コンプライアンス動作決定部１０４に送られる。複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメントが作用するように目標床反力を修正する。
複合コンプライアンス動作決定部１０４は、修正された目標床反力に、センサ検出値などから算出される実ロボットの状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差（あるいは制御偏差の２乗）の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
尚、この発明の要旨は歩容生成装置１００におけるロボット１の歩容生成にあり、上記した複合コンプライアンス動作決定部１０４などの構成および動作は、本出願人が先に出願した特開平１０−２７７９６９号公報などに詳細に記載されているので、説明を以上に止める。
Ｓ０２８において、今回歩容は、前述のごとく、今回歩容の終端発散成分が、定常旋回初期発散成分ｑ［０］を今回歩容の支持脚座標系から見た値であるｑ”に一致するように修正される。
実は、発散成分とは、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容に収束するか否かを評価する指標である。収束する場合にちょうど、今回歩容の終端発散成分が、定常旋回初期発散成分ｑ［０］を今回歩容の支持脚座標系から見た値であるｑ”に一致するように、本来、発散成分は定義されなければならない。
式１０で定義した発散成分は、実は、上記の性質を近似的に満足する発散成分である。
したがって、本実施形態においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容の上体水平位置に収束する（近づく）ように、今回歩容パラメータを修正した、と言える。
これは、特願２０００−３５２０１１号のものと同様である。
特に、本実施形態においては、その条件（今回歩容が定常歩容に近づく）を満足するように、今回歩容の歩容パラメータの中の目標ＺＭＰパターンを修正するようにした。図３９を参照して説明すると、同図に符合Ｂで示す軌道は、上記したように歩容の境界において発散成分が一致するように生成した上体水平位置軌道を示す。
同図に符合Ａで示す軌道は、定常旋回歩容との境界における上体水平位置速度が一致するように今回歩容を生成し、続いて定常歩容を繰り返し生成した場合の上体水平位置軌道を示す。
図示の如く、符合Ｂで示す軌道は、今回歩容と最初の定常旋回歩容との境界においては、一般的に符合Ａで示す軌道からずれているが、その後、徐々に符合Ａで示す軌道に収束し（近づき）、次の定常旋回歩容時期において符合Ａで示す軌道にほぼ一致する。このように、歩容境界で発散成分のみを一致させる歩容生成手法でも、歩容境界で位置速度両方を一致させる歩容生成手法と同様、歩容の発散を防止することができる。尚、同図に符合Ｃで示す例は、それらを考慮せずに軌道を生成した場合を示す。このような場合は、生成した軌道は経時的に発散してしまう。当然、目標ＺＭＰパターンを複雑なものにし、複数のパラメータを調整して、位置速度両方を一致させても良いが、目標ＺＭＰパターンがジグザグになる恐れがある。なお、位置速度両方を一致させれば、発散成分も一致するから、位置速度両方を一致させる方法も発散成分を一致させる方法の特殊例であると言える。
またさらに、本実施形態においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が定常旋回歩容の上体姿勢角に収束し（近づき）、もしくは一致するように、今回歩容パラメータを修正した、と言える。
本実施形態に係る脚式移動ロボットの歩容生成装置は上記の如く構成したので、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容に収束する条件を満足する今回歩容の終端上体水平位置と終端上体水平速度との関係は、厳密には、図４１の実線のように曲線関係になる。発散成分の本来の定義から言えば、図４１の実線の関係を満足する終端上体水平位置と終端上体水平速度とのいかなる組から決定される発散成分の値は同一でなければならない。また、発散成分を指標として物理的にわかり易くするためには、終端上体水平速度が０の時に終端上体水平位置と発散成分の値とが一致していることが望ましい。
すなわち、発散成分を求める関数をｆとすると、図４１の実線を表す式が次式６０の形で表され、かつ、次式６１を満足するのが望ましい。
2003057426.tif 000036
関数ｆ（終端上体水平位置，終端上体水平速度）の値が発散成分の値になる。
発散成分定義式である前述の式１０は、関数ｆの近似式である。式１０で定義される発散成分がある定数である場合、終端上体水平位置と終端上体水平速度の関係は、図４１の点線になり、前記実線に対する近似直線になっている。
発散成分を表す関数ｆは、直線近似する代わりに、多項式などを用いて曲線で近似しても良い。または、関数ｆをマップ化して記憶しても良い。
また、近似精度を高めるには、定常歩容パラメータに応じて、関数ｆを変えるべきである。
なお、発散成分の定義式である式１０において、上体位置速度の代わりに、ロボット全体重心位置速度を用いても良い。
本実施形態では、理解を容易にするために、床反力水平成分許容範囲は、前後方向（Ｘ軸方向）成分と左右方向（Ｙ軸方向）成分それぞれ独立に設定できることとしたが、前後方向と左右方向の関係式で表した方が、よりスリップし難い歩容が生成される。
例えば、次式のようにいわゆる摩擦円を許容範囲としても良い。
2003057426.tif 000037
ただし、Ｆｚは、目標床反力鉛直成分をμは摩擦係数、ｋａは１以下の正の定数を表す。
ただし、以上のように、床反力水平成分許容範囲を前後方向と左右方向の関係式で表す場合、許容範囲を同時にあるいは交互に満足するように、サジタルプレーン上での運動とラテラルプレーン上での運動を同時あるいは交互に求める必要がある。
尚、ロボットの全体重心鉛直加速度と重力加速度との和は床反力鉛直成分に比例するので、歩容パラメータとして、床反力鉛直成分軌道の代わりにロボットの全体重心鉛直加速度軌道を規定するパラメータを明示的に設定しても構わない。本質的に同じことである。また、ロボットの全体重心軌道に近い挙動をする部位の鉛直加速度軌道を規定するパラメータを明示的に設定しても構わない。例えば、脚体の質量が上体の質量に比べて十分に小さい場合には、上体鉛直加速度軌道とロボットの全体重心鉛直加速度軌道は、ほぼ同じか比例関係になるので、床反力鉛直成分軌道の代わりに上体鉛直加速度軌道を用いても良い。同様に、床反力水平成分とロボットの全体重心水平加速度は、比例関係にあるので、本実施例における床反力水平成分およびその許容範囲の代わりに、ロボット全体重心水平加速度およびその許容範囲を用いても構わない。また、ロボットの全体重心水平軌道に近い挙動をする部位の水平加速度軌道に関するパラメータを明示的に設定しても構わない。例えば、脚体の質量が上体の質量に比べ十分に小さい場合には、上体水平加速度軌道とロボットの全体重心水平加速度軌道は、ほぼ同じか比例関係にあるので、床反力水平成分およびその許容範囲の代わりに上体水平加速度およびその許容範囲を用いても良い。
前記実施形態では、床反力水平成分と目標ＺＭＰまわりの床反力モーメントを適切な値にするために、上体回転モードと上体並進モードとの２つの運動モードを用いたが、これら以外の運動モードを用いても良い。
例えば、図４０のように、股関節を中心に上体姿勢を回転させると、全体重心まわりの角運動量が変化すると共に全体重心も変化する。この運動と前記上体並進モードをある所定の割合で重ね合わせると（合成すると）、前記上体回転モードとほとんど同じ運動になり、床反力水平成分が発生しなくなる。したがって、これを改めて前記上体回転モードとみなせば、本実施例のアルゴリズムにしたがって、同様の歩容を生成することができる。
したがって、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ＺＭＰまわりの床反力モーメントの発生の割合が異なるふたつの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ＺＭＰまわりの床反力モーメントを発生させることができるからである。
また、上体姿勢を変化させる運動モード以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ＺＭＰまわりの床反力モーメントが発生できる運動モードを選ぶことが好ましい。
例えば、左右の腕を同一回転方向に振りまわす運動モード、接地していない（空中に存在する）足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に０に戻すべきである。
また、３つ以上の運動モードを用いても良い。
また、選択した運動モードのうちの少なくとも２つは、その運動モードによる床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなる（各運動モードの挙動を一義的に決定できない）からである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ＺＭＰまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ＺＭＰまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。このようにすると、運動モードの変位が小さくなるからである。
前記実施形態に用いた動力学モデル以外にも以下のモデルを用いても良い。
１）図１１に示したように複数のリンクに質点を設定した非線形なモデル（多質点モデル）
２）本願出願人による特願２０００−３５２０１１号に示された３質点モデル
３）上体にのみ質量がある１質点モデル
４）全体重心まわりの角運動量変化によって生じる慣性力のモーメントを無視したモデル
５）重力と慣性力との合力（またはこれと釣り合う床反力）と上体並進運動との関係を表す部分モデルと、上記合力と上体回転運動との関係を表す部分モデルとを分離して持つ分離型モデル。例えば、図１０に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図１０に示すフライホイールは、上記合力と上体回転運動との関係を表す部分モデルである。
また、各処理で用いられるモデルは同一でも良いし、処理に応じて適宜、モデルを使い分けても良い。例えば、前記定常歩容は今回歩容の終端状態を決定するためだけに生成されるものであるので、その定常歩容の動力学的な精度に対する要求は、今回歩容に比べて小さい。そこで、例えば、今回歩容の生成処理では、図１０の動力学モデル（３質点＋フライホイールのモデル）を用いる一方、定常歩容の生成処理（特に図２１のＳ４０８、Ｓ４１２）では、各脚体２の質量を無視し、上体２４に対応する上体質点２４ｍと、フライホールＦＨとで構成される動力学モデル（図１０のモデルで脚質点２ｍ，２ｍを除去した１質点＋フライホイールのモデル）を用いて定常歩容を生成するようにしてもよい。この場合の定常歩容の生成処理では、前記実施形態において、脚質点２ｍの質量を０として前記図２１のＳ４０８、Ｓ４１２の処理を行なうようにすればよい。このようにすると、定常歩容の生成処理における演算量を大幅に削減できる。
尚、前記実施形態において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記実施形態を２足移動ロボットに関して説明してきたが、３足以上の多脚ロボットにも応用することができる。
前記図１９のＳ２０６において初期（時刻Ｔｓ）上体鉛直位置Ｚｓを決定する手法について補足すると、本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法では、両脚体の膝曲げ角がある関係を満足するように、上体鉛直位置が決定されるが、時刻０における（すなわち着地瞬間における）上体鉛直位置を決定方法としては、これ以外に、着地したばかりの脚体の膝曲げ角がある所定の角度あるいは角度範囲になるように決定しても良い。着地衝撃吸収能力は、主に着地する脚の膝曲げ角に依存するからである。補足すると、膝曲げ角が０に近いと（伸び過ぎていると）着地衝撃吸収能力が落ちる傾向がある。逆に曲げ過ぎると、膝関節アクチュエータのトルクが過大になるおそれがある。
さらに補足すると、本実施形態では、図１９のＳ２０６において、着地瞬間では上体鉛直位置をキネマティクス的（幾何学的）に決定し、それ以外の時期では目標鉛直床反力を基に動力学を満足するように上体鉛直位置を決定した。但し、より一般的に、着地前後または離床前後など、最も脚体が伸びる（言いかえると、膝曲げ角が最も零度に近い、あるいは股関節と足首の間の距離が最も長い）時における上体鉛直位置をキネマティクス的（幾何学的）に決定し、それ以外は、目標鉛直床反力を基に動力学を満足するように上体鉛直位置を決定しても良い。
実施例のごとく、探索手法をもちいたり部分的に解析手法を用いたりして、定常歩容の初期状態（主に初期上体水平位置速度、初期上体鉛直位置速度のこと）を決定する手法の代わりに、あらかじめ、上記手法を用いて様々な定常歩容パラメータに対して計算しておき、定常歩容パラメータと定常歩容の初期状態との関係をマップ化あるいは近似式化して記憶して置き、実移動時には、マップ化あるいは近似式化された上記関係を基に、定常歩容の初期値を決定しても良い。
さらには、マップ化あるいは近似式化された上記関係と上記関数ｆを合成した関数をマップ化あるいは近似式化して記憶しても良い。すなわち、前記した足平軌道パラメータ、床反力鉛直軌道パラメータ等からなる定常歩容パラメータから、定常歩容の発散成分を直接求める関数をマップ化あるいは近似式化して記憶しても良い。例えば、複数種類の代表的な定常歩容パラメータの組のそれぞれに対して、事前に定常歩容を生成しておき、各組の定常歩容パラメータに対する定常歩容の初期状態（図１２のＳ０２４で求めるもの）を求めておき、さらにその各組の定常歩容パラメータと、定常歩容初期状態との関係を表すマップをあらかじめ作成しておく。そして、目標歩容を生成する際に、決定された定常歩容パラメータの組から、上記マップに基づいて選択あるいは補間によって定常歩容初期状態を求めるようにすればよい。このようにすれば、今回歩容の生成毎に、定常歩容を生成する必要がなくなり、目標歩容生成処理の演算量を大幅に削減できる。
定常歩容につなげる（近づける）ための今回歩容の修正方法として、本実施形態では、今回歩容の目標ＺＭＰパラメータを修正したが、それ以外のパラメータを修正しても良い。
たとえば、今回歩容の遊脚の空中での軌道を変えても良い。また、たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、遊脚を離床後すばやく前方に移動させて遊脚重心位置を前方にずらす。こうすることにより、目標ＺＭＰを満足するための上体水平位置は、前方により一層加速せざるを得なくなる。この結果、上体水平位置が今回歩容終端において、より一層前方に移動し、定常歩容に一致させることができる。
また、目標ＺＭＰパラメータを修正する代わりに、今回歩容の周期を修正しても良い。たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、今回歩容の周期を長くすれば良い。今回歩容の周期を長くことで、上体水平位置が移動する時間が延び、それだけ前方に移動できるからである。
ただし、探索手法によって、上体水平位置等の適正値を決定するときに、目標ＺＭＰパラメータを修正する場合では、目標ＺＭＰの修正量にほぼ比例して、今回歩容終端上体水平位置が変化するので、上記適正値の探索回数が少なくて済む。これに対して、遊脚重心軌道や歩容の周期を修正する場合には、その修正に対して、今回歩容終端上体水平位置が、かなり非線形に変化するので、上記適正値の探索により多くの探索回数を要する。
定常歩容につなげる（近づける）ための今回歩容の修正方法として、本実施形態では、今回歩容の目標ＺＭＰパラメータを修正した。この方法では、場合によっては、目標ＺＭＰパラメータの修正量（前記図３８の修正量ａ）が過大になることがある。たとえば、その場でホッピングしている歩容からいきなり高速で移動する要求（走行要求）が与えられると、高速の定常歩容（走行の定常歩容）につなげる（近づける）ために、目標ＺＭＰパラメータは、進行方向に対して後ろに極端に大きくずらす必要が生じる。この場合には、上記したように目標ＺＭＰパラメータ以外の歩容パラメータも修正することが望ましい。但し、この場合では、実は、急激な加速を要求すること自体に無理があったわけであるから、要求値自身を修正しても良い。
要求値の修正を行なう場合には、例えば、とりあえず本実施形態に示した手順に従って、要求（要求パラメータ）を満足する定常歩容を求め、この定常歩容につながるように今回歩容パラメータを決定した時点で、今回歩容の目標ＺＭＰ軌道の安定余裕が少なくなり過ぎたか否かを判定する。そして、安定余裕が少なくなり過ぎた場合（いわゆる支持多角形から目標ＺＭＰが外れたり、支持多角形の端部付近に目標ＺＭＰが位置するような場合）には、要求を修正するようにすれば良い。
または、あらかじめ歩容の加減速度（次回歩容初期速度−今回歩容初期速度）／今回歩容の周期）の許容範囲を設定して置き、要求（歩容周期に関する要求パラメータ）を受けた時点で、該要求に対応する加減速度を求め、その求めた加減速度が許容範囲を越えていたら、許容範囲になるように、要求を修正しても良い。
今回歩容の終端上体鉛直位置速度を定常歩容の初期上体鉛直位置速度に一致させるための床反力鉛直成分パラメータがロボットの能力を超えている場合には、前記位置速度両方を一致させる代わりに、少なくとも上体鉛直位置だけは一致させるように床反力鉛直成分パラメータを決定しても良い。
あるいは、今回歩容の終端上体鉛直位置を定常歩容の初期上体鉛直位置よりも低くし、今回歩容の終端上体鉛直速度を定常歩容の初期上体鉛直速度よりも上向きに大きくなるように床反力鉛直成分パラメータを決定しても良い。
あるいは、ある所定の重みを用いて、今回歩容の終端上体鉛直位置と今回歩容の終端上体鉛直速度の加重平均（重み付平均）を求め、求めた加重平均が、定常歩容の初期上体鉛直位置と初期上体鉛直速度の加重平均と一致するように床反力鉛直成分パラメータを決定しても良い。
あるいは、ロボットの位置エネルギーと運動エネルギーとの和が、今回歩容の終端と定常歩容の初期で一致するように床反力鉛直成分パラメータを決定しても良い。
あるいは、図３４のＳ７１８において今回歩容の上体姿勢角が定常歩容の上体姿勢角に近づくように、上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）のパターンを決定する手法を用いても良い。すなわち、Ｓ７１８の手法あるいは後述する今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）を決定する別手法において、上体姿勢角を上体鉛直位置に、上体姿勢復元モーメントＺＭＰ換算値を床反力鉛直成分に置きかえた手法を用いて、床反力鉛直成分パラメータを決定しても良い。
床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を、式６２と式６３を満足するように設定しても良い。
2003057426.tif 000038
ただし、Ｆｘｍａｘは、式１２でＫａ＝１とした場合のＦｘｍａｘの値より大きくならないように設定し、Ｆｘｍｉｎは、式１２でＫａ＝１とした場合のＦｘｍｉｎの値より小さくならないように設定する。
ここで、ＺＭＰｘは目標ＺＭＰの水平位置、ＺＭＰｚは目標ＺＭＰの鉛直位置を表す。
またここで、（ＸＧ，ＺＧ）は、少なくとも上体の質点を含む質点集合の重力と慣性力との合力を近似的に発生する質点の位置とする（ＸＧは水平位置、ＺＧは鉛直位置を表す）。言い換えると、（ＸＧ，ＺＧ）は、少なくとも上体の質点を含む質点集合を代表する質点の位置とする。例えば、全体重心位置、または脚体の一部を除く全体重心位置とする。あるいは、前記実施例に用いた図１０に示す動力学モデルの上体質点２４ｍの位置（Ｘｂ，Ｘｚ）でも良い。
上記式６２でｋｃ＝０と設定した場合には、前記実施形態と同じになる（前記式１２を参照）。
ｋｃ＝１、かつＦｘｍａｘとＦｘｍｉｎをほぼ０に設定した場合には、目標ＺＭＰ（ＺＭＰｘ，ＺＭＰｚ）に作用する目標床反力（Ｆｘ，Ｆｚ）のベクトルが、おおよそ（ＸＧ，ＺＧ）を指すので、目標床反力の向きの変動（特に高い周波数の変動）を小さくすることができる。
その結果、目標床反力水平成分Ｆｘの変化が穏やかになって、接地性が高まりスリップを防止することができる。
また、上体水平位置軌道の加速度はＦｘに比例するので、上体水平位置軌道の加速度の変化も穏やかになり、目標ＺＭＰを修正したときの歩容終端上体水平位置の変化が線形的（直線的、リニア）になり、定常歩容や今回歩容の探索における収束が速くなり、探索回数を減らすことができる。
さらに、ｋｃ＝１かつ、ｋｍａｘ＝ｋｍｉｎ＝０と設定した場合には、１質点モデルの挙動になる（特に、（ＸＧ，ＺＧ）が全体重心の場合）。この場合、定常歩容の上体水平位置軌道が容易に探索可能である。
また、式６２において、（ＺＧ−ＺＭＰｚ）の代わりにある所定の定数にしても良い。歩行や走行中では、（ＺＧ−ＺＭＰｚ）は、大きく変動しない（変動しても１０パーセント程度である）からである。
ｋｃ＝１かつ、ｋｍａｘ＝ｋｍｉｎ＝０、かつ式６２において、（ＺＧ−ＺＭＰｚ）の代わりにある所定の定数とし、（ＸＧ，ＺＧ）を全体重心位置とした場合、１質点線形倒立振子の挙動になるので、挙動を解析的に解くことができ、探索手法を用いなくても、定常歩容や今回歩容を決定することができる。
ただし、上体回転モードの角加速度の変動は大きくなる。
補足すると、前記ΔＭｐ、ΔＦｐ、ΔＭｒおよびΔＦｒは、上記のごとく単純な動力学モデルを用いる場合には、動力学演算により解析的に求めても良いが、一般的なより複雑な動力学モデルを用いる場合には、上体を上体並進モードで微小量だけ加速または上体回転モードで微小量だけ加速させた場合の床反力を求め、加速させなかった場合の床反力との差を求め、この差を上記微小量で割ることによって求めれば良い。
また、あらかじめ標準的な歩容におけるΔＭｐ、ΔＦｐ、ΔＭｒ、ΔＦｒおよびΔＭｐ／ΔＭｒなどのそれぞれの平均値を求めておいて、それを用いても良い。ΔＭｐ、ΔＦｐ、ΔＭｒ、ΔＦｒおよびΔＭｐ／ΔＭｒは、状態（姿勢とその変化率）によって変わるので、各瞬間の状態ごとに求める方法に較べて、精度は若干低下するが、上記モデルよりも複雑なモデルを用いた場合には、演算量を大幅に低減できる。
前記図２２のＳ５０４からＳ５１６までの処理および図３７のＳ１００２からＳ１０１４までの処理において、床反力水平成分Ｆｘに許容限界まで余裕があれば、この余裕を用いて、その時点までの上体姿勢角加速度βの積分値、すなわち上体姿勢角速度を、徐々に元に（初期状態に）戻すようにしても良い。
具体的には、Ｓ５０６およびまたはＳ１００４において、まず、上体姿勢角加速度βの積分値を徐々に戻すための上体姿勢角加速度βの値（これをβｒｅｃと呼ぶ）をそれまでの上体姿勢角加速度βの積分値などから決定する。例えば、上体姿勢角加速度βの積分値に負のゲインを乗じた値をβｒｅｃとしても良い。
次に、Ｆｘｔｍｐを前記式１７の代わりに次式７０で決定する。
2003057426.tif 000039
式７０の右辺第２項は、上体姿勢角加速度がβｒｅｃである上体回転モードの運動をさせた時に、目標ＺＭＰまわりに発生するモーメント（βｒｅｃ＊ΔＭｒ）を打ち消すために必要な上体並進モードの加速度（−βｒｅｃ＊ΔＭｒ／ΔＭｐ）によって生じる床反力水平成分を意味する。
式７０によって決定されるＦｘｔｍｐは、ロボットの前回瞬時目標歩容状態（時刻ｋ−１の目標歩容状態）から、仮に上体姿勢角加速度がβｒｅｃである上体回転モードの運動をさせながら上体並進モードの運動をさせた場合に、今回（時刻ｋ）目標ＺＭＰを満足するために必要な上体並進モードの上体水平加速度を意味する。
それ以降の処理は、前記実施形態の通りとする。以上の処理により、床反力水平成分Ｆｘの余裕を用いて、ある程度、上体姿勢角速度を復元することができるので、上体姿勢角速度変動をより一層小さく抑えることができる。
図３７のＳ１０１６において値が０に一定であるＺＭＰｒｅｃのパターンを設定した場合に、仮今回歩容の終端上体姿勢角が定常歩容の初期上体姿勢角から大きくずれてしまう場合には、ずれが小さくなるように図２６に示す台形パターンの高さを０以外に設定しても構わない。その代わりに、それ以降の図３４のＳ７１８において、Ｓ７１８で求められる上体姿勢復元モーメントＺＭＰ換算値パターンに、Ｓ１０１６において設定した上体姿勢復元モーメントＺＭＰ換算値パターンを加算する必要がある。このようにすれば、最終的に得られる歩容は、Ｓ１０１６において値が０に一定であるパターンを設定した場合と同一またはほぼ同一の歩容になる。
ただし、図３４のＳ７００の探索ループの処理を開始してから完了するまでの間は、図３７のＳ１０１６において設定する上体姿勢復元モーメントＺＭＰ換算値パターン（図２６に示すＺＭＰｒｅｃの台形パターンの高さ）を変更しないことが望ましい。途中で変更すると、終端発散成分ｅｒｒｑが収束しなくなり、ループを抜け出すことができなくなるおそれがあるからである。
今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンの台形高さｂｃｕｒｒを決定する方法として、以下の方法を用いても良い。
前記ＺＭＰｒｅｃ修正歩容（図３４のＳ７１８の説明を参照）の今回歩容終端時点での上体姿勢角と角速度をそれぞれθｃｕｒｒ、ｖθｃｕｒｒとし、これらと、定常歩容の初期上体姿勢角、角速度との差をΔθｃｅｒｒ、Δｖθｃｅｒｒとする。
歩容周期をインターバルとし、仮今回歩容の終端上体姿勢角、角速度と定常歩容の初期上体姿勢角、角速度との差θｅｒｒ、ｖθｅｒｒを前回状態、ｂｃｕｒｒを入力、Δθｃｅｒｒ、Δｖθｃｅｒｒを今回状態とする離散系の状態方程式を立てて、Δθｃｅｒｒ、Δｖθｃｅｒｒを０に収束させるように、現代制御理論等を用いてフィードバック則を決定し、これに基づいてｂｃｕｒｒを求めても良い。
今回歩容およびまたは定常歩容のＺＭＰｒｅｃは、台形パターンとせず、各瞬間において、目標上体姿勢角・角速度と基準上体姿勢角・角速度との差などを基に、その差が０に収束するように、状態フィードバックなど則を用いて、各瞬間におけるＺＭＰｒｅｃの値を決定しても良い。
今回歩容のＺＭＰｒｅｃは、台形パターンとせず、各瞬間において今回歩容の目標上体姿勢角・角速度を基に、これらが第１旋回歩容の初期上体姿勢角・角速度に近づくように、状態フィードバック則などを用いて、各瞬間におけるＺＭＰｒｅｃを決定しても良い。
次に、ロボット１の歩行歩容の生成に関して説明する。なお、ここで、歩行歩容は、空中期がなく、片脚支持期と両脚支持期とが交互に繰り返される歩容である。
歩行歩容を生成する場合には、Ｓ１０６およびＳ６０６において以下のような処理を行う。すなわち、膝の曲げ角度が適切であるかなど、少なくとも各脚体の関節の変位に関する幾何学的条件（幾何学的制約条件）から決定した上体鉛直位置軌道（本出願人による特開平１０−８６０８０号公報に示される上体高さ決定手法などを用いた上体鉛直位置軌道）の位相や振幅などの特徴量をできる限り満足するように床反力鉛直成分軌道を決定する。
これにより、歩容生成のアルゴリズムの主要部を走行と歩行とで共通化しつつ、歩行途中から走行へ、または走行途中から歩行に移行することもできるようになる。
図４３を用いてその処理を説明すると、まず、Ｓ１３００において、本出願人が先に特開平１０−８６０８０号公報に提案した上体高さ決定法などを用いて、少なくとも各脚体２の関節の変位に関する所定の幾何学的制約条件を満足する上体鉛直位置軌道を求める。以降、これを基準上体鉛直位置軌道と呼ぶ。より具体的には、まず、要求パラメータに応じて決定した足平軌道パラメータや目標ＺＭＰ軌道パラメータなどを基に、本出願人が先に提案した特願２０００−３５２０１１号の第１実施形態を用いて、上体水平位置軌道が求められる。なお、この場合、上体水平位置軌道は、床反力鉛直成分がロボット１の自重に一致し、また、上体鉛直位置が、あらかじめ定めた一定値であるとして、目標ＺＭＰ回りの床反力モーメントの水平成分が０になるように決定される。また、このときの上体姿勢軌道は例えば一定姿勢（鉛直姿勢等）の軌道でよい。
次に、本願出願人が先に提案した上体高さ決定法（特開平１０−８６０８０号公報。より具体的には同公報の図６の手法等）を用いて、足平軌道パラメータにより定まる足平軌道や上記の如く決定した上体水平位置軌道、上体姿勢軌道を基に上体鉛直位置軌道が算出され、これをもって前記基準上体鉛直位置軌道とする。
次にＳ１３０２に進み、基準上体鉛直位置軌道になるべく似た目標上体鉛直位置軌道を生成することが可能な床反力鉛直成分軌道を決定するために、基準上体鉛直位置軌道の振幅や位相などの特徴量が算出（抽出）される。例えば、基準上体鉛直位置軌道の振幅（最小値と最大値との差）が特徴量として算出される。
次にＳ１３０４に進み、床反力鉛直成分軌道パラメータを基に生成される上体鉛直位置軌道が、前記特徴量をできる限り満足し得るように（前記基準上体鉛直位置軌道にできるだけ似たパターンになるように）、床反力鉛直成分軌道パラメータ（折れ点での時刻や床反力鉛直成分の値）が決定される。より具体的には、歩行歩容の場合、定常歩容の第１旋回歩容と第２旋回歩容、および今回歩容の床反力鉛直成分軌道は、例えば、図４２のような折れ線状に設定される。すなわち、両脚支持期では、床反力鉛直成分の増加側に凸（上に凸）の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸（下に凸）の台形状に設定される。そして、この床反力鉛直成分軌道を歩容初期（両脚支持期の開始時刻）から終端（片脚支持期の終了時刻）まで２階積分して得られるロボット１の全体重心鉛直位置軌道に対応する上体鉛直位置軌道の最大値と最小値との差が前記特徴量に一致するように、床反力鉛直成分軌道パラメータ、例えば該床反力鉛直成分軌道の２つの台形の高さＣ１，Ｃ２が決定される（この例では床反力鉛直成分軌道の折れ点の時刻は歩容周期に関する要求パラメータに応じて決定される）。
ただし、定常歩容の床反力鉛直成分軌道のパラメータは、前述のごとく以下の条件も満足するように決定される。
条件）床反力鉛直成分軌道の定常歩容全期間（第１旋回歩容と第２旋回歩容両方の期間）における平均値をロボットの自重と一致させる。すなわち、床反力鉛直成分の平均値がロボットに作用する重力と同じ大きさで反対向きになるようにする。
また、今回歩容の床反力鉛直成分軌道のパラメータは、前述のごとく、上体（全体重心）鉛直位置軌道が定常歩容に連続してつながるあるいは近づくように決定される。
以上により、歩行歩容における目標床反力鉛直成分軌道（これを規定するパラメータ）が決定されることとなる。以上説明した目標床反力鉛直成分軌道の決定処理以外の歩容生成処理は、前記した走行歩容に係る実施形態と同一でよい。
上記のごとく基準上体鉛直位置軌道を求めるために要する演算量はかなり多いので、定常歩容の運動パラメータ（足平軌道パラメータなど）と上体（全体重心）鉛直位置軌道の特徴量（振幅など）との関係を表すマップをあらかじめ作成して記憶しておいて、与えられた定常歩容パラメータから、上記マップを参照することで、特徴量を求めるようにしてもよい。
または、床反力鉛直成分から生成される上体（全体重心）鉛直位置軌道の特徴量が基準上体鉛直位置軌道の特徴量にほぼ一致する場合における定常歩容の運動パラメータと床反力鉛直成分軌道パラメータとの関係を表すマップをあらかじめ作成して記憶しておいて、与えられた定常歩容パラメータから、上記マップを参照することで、床反力鉛直成分軌道パラメータを直接的に求めるようにしてもよい。
なお、前記特徴量は、基本的には、前記幾何学的制約条件に基づく基準上体鉛直位置軌道の形状の特徴を表すものであればよく、該基準上体鉛直位置軌道の振幅や位相などのほか、周波数成分等（例えば基本周波数成分の振幅など）を特徴量として用いてもよい。
さらには、上記の例では、１歩分の基準上体鉛直位置軌道の特徴量を用いたが、基準上体鉛直位置軌道の初期状態（位置・速度）を特徴量として用いて、以下のように床反力鉛直成分軌道パラメータを決定するようにしても良い。
すなわち、図４４に示すごとく、まずＳ１４００において、本出願人が先に提案した上体高さ決定法（特開平１０−８６０８０号公報）などを用いて、少なくとも幾何学的制約条件に基づいて、歩容の初期時刻とそれからΔｔ秒後（制御周期後）の基準上体鉛直位置を決定し、これらの初期時刻及びΔｔ秒後の基準状態鉛直位置の差を基に、初期基準上体鉛直速度を算出する。なお、初期時刻とΔｔ秒後の基準状態鉛直位置は、例えば前記図４３のＳ１３００の処理を初期時刻からΔｔ秒後まで実行すれば決定できる。
次いで、Ｓ１４０２に進み、初期基準上体鉛直速度と足平軌道パラメータにより定まる足平位置軌道とを基に、ロボット幾何学モデル（例えば式０４の両辺を微分したもの）を用いて、初期基準全体重心鉛直速度を算出する。
最後に、Ｓ１４０４に進み、床反力鉛直成分軌道から生成される全体重心鉛直位置軌道の初期速度が、上記の如く求めた初期基準全体重心鉛直速度に一致するように、床反力鉛直成分軌道パラメータを決定する。なお、この場合も、上記初期速度の条件だけでなく、定常歩容と今回歩容とでそれらに係わる前記した条件（図４３の処理に関して説明した条件）をも満たすように床反力鉛直成分軌道パラメータが決定される。
また、図４４の処理を図１４のＳ１０６で行うと、その時点で初期（時刻Ｔｓ）上体鉛直速度Ｖｚｓが決定されるので、当然、図１９のＳ２０６においては、上体鉛直速度Ｖｚｓを求める処理を省略できる。
歩行歩容を生成する場合には、本出願人が先に提案した上体高さ決定法（特開平１０−８６０８０号公報）などを用いて、少なくとも幾何学的制約条件に基づいて上体鉛直位置を決定し、走行歩容を生成する場合には、前記図３６のＳ９０６、Ｓ９０８のごとく床反力鉛直成分から決定されるようにしても良い。この場合、歩行から走行あるいは走行から歩行に移行する際の歩容における最終的な上体鉛直位置は、幾何学的制約条件に基づいて決定される歩行用の上体鉛直位置Ｚｇと、床反力鉛直成分から動力学的に決定される走行用の上体鉛直位置Ｚｆとを合成することにより決定することが好ましい。より具体的には、例えば次式７１のように、それらの上体鉛直位置Ｚｇ，Ｚｆの重み付き平均により最終的な上体鉛直位置Ｚを決定する。この場合、重みｗを１から０あるいは０から１に徐々に変化させる。
これにより、歩行と走行の間の移行時の上体鉛直位置軌道を滑らかに変化させることができる。
2003057426.tif 000040
具体的な処理を図４５を用いて説明すると、まず、Ｓ１５００において、前記の実施形態で説明した如く（図３６のＳ９０８を参照）、目標床反力鉛直成分軌道に応じて定まる全体重心鉛直位置軌道を満足する上体鉛直位置Ｚｆを算出する。次いでＳ１５０２に進み、本出願人が先に提案した上体高さ決定法などを用いて、少なくとも各脚体２の関節（膝関節）の変位に関する幾何学的制約条件に基づいて決定される上体鉛直位置Ｚｇを生成する。
次いで、Ｓ１５０４に進み、歩容の時期に応じて重みｗを決定する。例えば、歩容の初期から終端にかけて、０から１または１から０に徐々に変化するように前記式７１の重みｗを決定する。この場合、歩行から走行への移行時には、ｗを０から１に変化させ、走行から歩行への移行時には、ｗを１から０に変化させるように重みｗを決定する。なお、この時、重みｗの変化率（重みの１階時間微分）も連続的に変化するように設定すると良い。さらには、重みｗの変化率の変化率（重みの２階時間微分）も連続的に変化するように設定すると良い。こうすることにより、最終的に生成される上体鉛直位置軌道が滑らかになる。
最後に、Ｓ１５０６に進み、前記式７１により、最終的な上体鉛直位置を決定する。
なお、上記のごとく、歩行から走行あるいは走行から歩行に移行する時にだけ、重みｗが０と１の中間の値をとるのではなく、それ以外の時でも重みｗが０と１の中間の値をとるようにしても良い。また、歩行から走行、または走行から歩行への移行は、１歩容で行なう必要はなく、複数歩容で行なうようにしてもよい。
斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分の代わりに、並進床反力の床面平行成分（床面に平行な成分）、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分（これは摩擦力に比例する）の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分（摩擦力）の許容範囲を設定する場合に関して説明（この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である）すると、該摩擦力は、床面の水平面に対する傾斜角度θｆ（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式７２の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式７２の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式７２の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
2003057426.tif 000041
今回歩容のパラメータ決定は、前記実施形態のように前回歩容が完了した時点で行う以外に、本願出願人による特願２０００−３５２０１１号に記述されているように、今回歩容の生成途中で、再決定しても良い。こうすることにより、演算量は増えるが、歩容に対する要求に変更があった時に即応できるからである。
また、歩容の修正（今回歩容パラメータを再決定すること）が、今回制御周期で間に合わない場合には、とりあえず今回は、修正しない歩容あるいは暫定的に修正した歩容（探索途中の歩容であって、完全には、探索完了条件（歩容境界条件のずれが許容値以内に入っていること）を満足していない歩容）を出力し、次回制御周期までに、あるいは複数制御周期後までに（暫定的でない）適切な修正歩容にしても良い。修正された目標ＺＭＰ軌道と目標床反力鉛直成分軌道は連続であり、短時間後では、これらが急激に変化することはないので、今回歩容の目標ＺＭＰ軌道と目標床反力鉛直成分軌道が若干ぎざぎざになるだけで、ほとんど問題はない。
前記図１２のＳ０３２における、スピン力をキャンセルする腕振り動作の代わりに、上体２４をその体幹軸（あるいは鉛直軸）まわりに回転させる（ひねる）動作を行っても良い。あるいは、腕振り動作と上体２４をその体幹軸（あるいは鉛直軸）まわりに回転させる（ひねる）動作とを併用しても良い。
前記図２１のＳ４０８および図３６のＳ９０８において、全体重心鉛直位置速度を満足する上体鉛直位置を決定する際には、前述のごとく式０４などを用いて解析的に上体鉛直位置を決定する代わりに、以下の別手法１または２によって上体鉛直位置を決定しても良い。
別手法１
図４６に、別手法１の演算処理フローチャートを示す。
まずＳ１１００において、前回瞬時目標歩容状態（時刻ｋ−１に決定された目標歩容状態）などを基に動力学モデルを用いて全体重心鉛直位置・速度が算出される。以降、動力学モデルを用いて算出した全体重心鉛直位置・速度をモデル全体重心鉛直位置・速度と呼ぶ。すなわち、Ｓ１１００では、前回モデル全体重心鉛直位置・速度が算出される。なお、上記動力学モデルは例えば前記図１１のような多質点モデル等を用いればよい。
次いで、Ｓ１１０２に進み、上記の如く求めた前回モデル全体重心鉛直位置・速度と、図２１のＳ４０６または図３６のＳ９０６において算出された全体重心鉛直位置速度、すなわち目標床反力鉛直成分の今回値（時刻ｋの値）を満足する全体重心鉛直位置・速度との差（位置の差と速度の差の両者。以降この差を重心鉛直位置・速度偏差と呼ぶ）が求められる。すなわち、次式８０により重心鉛直位置・速度偏差が決定される。
2003057426.tif 000042
次いで、Ｓ１１０４に進み、目標床反力鉛直成分を満足する全体重心鉛直位置・速度に前記モデル全体重心鉛直位置・速度が追従するように、少なくとも前記重心鉛直方向偏差と前回上体鉛直位置（時刻ｋ−１で決定された上体鉛直位置）を基に、今回上体鉛直位置（上体鉛直位置の今回値）を決定する。例えば、次式によって今回上体鉛直位置が決定される。
2003057426.tif 000043
ただし、Ｋｇｚ、Ｋｇｖｚはゲインである。
Ｋｇｖｚは０でも構わない。この場合、モデル全体重心鉛直速度、目標床反力鉛直成分を満足する全体重心鉛直速度および重心鉛直方向速度偏差を算出する必要はない。
以上のごとく、今回上体鉛直位置が算出される。この場合、式８１によるときには、重心鉛直位置偏差及び重心鉛直速度偏差に応じて今回上体鉛直位置が算出されることとなる。
また、今回上体鉛直位置を求めるために、重心鉛直位置偏差に応じた成分や、重心鉛直速度偏差に応じた成分の他、さらに、例えば以下のようにロボット１のモデル（例えば図１０のモデルからフライホイールＦＨを除いた３質点モデル）を用いて求めた上体鉛直位置に応じた成分（フィードフォワード成分）を前回上体鉛直位置に加算することで、今回上体鉛直位置を求めるようにしてもよい。この場合には、図２１のＳ４０６または図３６のＳ９０６において算出された全体重心鉛直位置速度、すなわち目標床反力鉛直成分の今回値（時刻ｋの値）を満足する全体重心鉛直位置速度と、図２１のＳ４０４または図３６のＳ９０４において算出された目標両足平位置姿勢の今回値（時刻ｋの値）とから、例えば上記３質点モデルを用いて仮上体鉛直位置（これをここでは、ＦＦ上体鉛直位置という）を求める。なお、図２１のＳ４０８または図３６のＳ９０８において前述の如く図１０のモデルを用いて上体鉛直位置を求めていた場合には、それをそのまま上記ＦＦ上体鉛直位置として用いればよい。そして、このようにして求めたＦＦ上体鉛直位置に適当なゲインを乗算したものをフィードフォワード成分として、前記式８１の右辺にさらに加算し、これにより、今回上体鉛直位置を求める。つまり、重心鉛直位置偏差及び重心鉛直速度偏差と（重心鉛直速度偏差は省略してもよい）、ＦＦ上体鉛直位置とに応じて前回上体鉛直位置を補正することで、今回上体鉛直位置が求められる。このようにすると、最終的に求められる今回上体鉛直位置の変動を抑えることができる。なお、この手法で前回上体鉛直位置を求めるために用いるロボット１のモデルは、より厳密なモデルであることが好ましい。
別手法２
また、以下に示すように繰り返し探索手法を用いた別手法２によって今回上体鉛直位置を決定しても良い。
図４７に、その手法の演算処理フローチャートを示す。
まずＳ１２００において、上体鉛直位置速度（より詳しくは上体鉛直位置速度の今回値の候補）が仮決定される。例えば、前回目標歩容瞬時値の上体鉛直位置速度（前回値）が上体鉛直位置速度の候補値として仮決定される。あるいは、上体鉛直位置の前回値に、前回目標歩容瞬時値の上体鉛直速度と制御周期Δｔとの積を加えた値を上体鉛直位置の候補値として仮決定しても良い。
次いで、Ｓ１２０２を経て、Ｓ１２０４に進み、上体鉛直位置速度（候補）の現在値（現在の仮決定値）と、前記求めた目標両足平位置姿勢の今回値、時刻（ｋ−Δｋ）の目標上体姿勢（または前記求めた基準上体姿勢の今回値）、前記求めた目標腕姿勢の今回値、時刻（ｋ−Δｋ）の上体水平位置およびそれらの変化率から決定されるロボット１の姿勢状態から今回モデル全体重心鉛直位置・速度が算出される。なお、今回モデル全体重心鉛直位置・速度の算出で用いる一部の変数には前回値が用いられている。
次いで、Ｓ１２０６に進み、次式８２により、重心鉛直方向位置・速度偏差を算出する。
2003057426.tif 000044
次いで、Ｓ１２０８に進み、式８２で求めた重心鉛直位置偏差が所定の許容範囲内にあれば、最終的に求められた上体鉛直位置（現在値）を上体鉛直位置の今回値（今回上体鉛直位置）として決定し、今回上体鉛直位置決定の処理を完了する。また、Ｓ１２０８の判断で重心鉛直位置偏差が所定の許容範囲内にない場合には、Ｓ１２１０に進み、次式により、上体鉛直位置の次候補を決定する。
2003057426.tif 000045
次いで、Ｓ１２１２に進み、上体鉛直位置次候補を改めて上体鉛直位置とし（上体鉛直位置の候補を更新する）、再びＳ１２０４に進む。そして、この新たな上体鉛直位置の候補を基に今回モデル全体重心鉛直位置・速度が求められ、以下、重心鉛直方向位置・速度偏差が所定の許容範囲内になるまで、上記の処理が繰り返される。
これらの手法１、２は、モデル全体重心鉛直位置が、図２１のＳ４０６または図３６のＳ９０８において算出された全体重心鉛直位置、すなわち目標床反力鉛直成分の今回値を全体質量で割った値を２階積分することにより得られる全体重心鉛直位置に追従またはほぼ一致するように、上体鉛直位置を決定するものである。
この代わりに、モデル全体重心鉛直速度が、目標床反力鉛直成分の今回値を全体質量で割った値を１階積分することにより得られる全体重心鉛直速度に追従またはほぼ一致するように、手法１または手法２と同様の手法により上体鉛直速度を決定し、これを１階積分することにより上体鉛直速度を決定しても良い。
または、モデル全体重心鉛直加速度が、目標床反力鉛直成分の今回値を全体質量で割った値に追従またはほぼ一致するように、手法１または手法２と同様の手法により上体鉛直加速度を決定し、これを２階積分することにより上体鉛直位置を決定しても良い。
ただし、前記別手法１および２に較べ、瞬間的な動力学的誤差は少ないが、積分誤差によって、モデル全体重心鉛直位置が、目標床反力鉛直成分の今回値を全体質量で割った値を２階積分することにより得られる全体重心鉛直位置からずれても、そのずれを０に収束される作用が働かないので、歩容の動力学的精度が長期的には低下する傾向がある。
言いかえると、前記別手法１および２においては、瞬間的な動力学的誤差は若干大きいが、長期的な動力学的誤差は少ないので、ロボットの姿勢の安定性が高くなる。
産業上の利用可能性
以上のように本発明は２足移動ロボット等の脚式移動ロボットを、様々な歩容形態で円滑に移動させることが可能な歩容を生成することができるものとして有用である。
【図面の簡単な説明】
図１は本発明の実施形態における脚式移動ロボットとしての２足移動ロボットの全体的構成の概略を示す概略図、図２は図１のロボットの各脚体の足平部分の構成を示す側面図、図３は図１のロボットに備えた制御ユニットの構成を示すブロック図、図４は図３の制御ユニットの機能的構成を示すブロック図、図５は図１のロボットの走行歩容を例示する説明図、図６は目標床反力鉛直成分の設定例を示す線図、図７は目標ＺＭＰの設定例を示す線図、図８及び図９はロボットの運動モード（上体並進モード及び上体回転モード）の説明図、図１０及び図１１はロボットの動力学モデルの説明図である。図１２は図３の制御ユニットに備えた歩容生成装置のメインルーチン処理を示すフローチャート、図１３はロボットの上体位置の発散状態を示す説明図、図１４は図１２のフローチャートサブルーチン処理を示すフローチャート、図１５は定常歩容足平着地位置姿勢及び座標系の関係を示す説明図、図１６は定常歩容の目標床反力鉛直成分の設定例を示す線図、図１７は定常歩容の床反力水平成分許容範囲の設定例を示す線図、図１８は定常歩容の目標ＺＭＰの設定例を示す線図、図１９は図１２のフローチャートのサブルーチン処理を示すフローチャート、図２０は図１９のフローチャートのサブルーチン処理を示すフローチャート、図２１は図２０のフローチャートのサブルーチン処理を示すフローチャート、図２２は図２１のフローチャートのサブルーチン処理を示すフローチャートである。図２３〜図３０は、図２２のフローチャートの要部の処理を説明するための線図、図３１は定常歩容における上体位置の軌道の例を示す説明図、図３２は図１２のフローチャートのサブルーチン処理を示すフローチャート、図３３は今回歩容の床反力水平成分許容範囲の設定例を示す線図、図３４は図１２のフローチャートのサブルーチン処理を示すフローチャート、図３５は図３４のフローチャートのサブルーチン処理を示すフローチャート、図３６は図３５のフローチャートのサブルーチン処理を示すフローチャート、図３７は図３６のフローチャートのサブルーチン処理を示すフローチャート、図３８は図３７のフローチャートの要部の処理を説明するための線図である。図３９は今回歩容と定常歩容とにおける上体水平位置軌道の関係を示す線図、図４０はロボットの運動のモードの他の例を示す説明図、図４１は定常歩容に収束する今回歩容の終端における上体水平位置と上体水平速度との関係を示す線図、図４２は歩行歩容における目標床反力鉛直成分の設定例を示す線図、図４３及び図４４は歩行歩容における目標床反力鉛直成分の設定処理を例示するフローチャート、図４５は歩行と走行との間の歩容の切換に関する処理を示すフローチャート、図４６及び図４７は目標上体鉛直位置の決定処理を例示するフローチャート、図４８は走行歩容における上体鉛直位置と床反力鉛直成分との関係を示す線図、図４９は歩行歩容における上体鉛直位置と床反力鉛直成分との関係を示す線図である。
【図１】
2003057426.tif 000046
【図２】
2003057426.tif 000047
【図３】
2003057426.tif 000048
【図４】
2003057426.tif 000049
【図５】
2003057426.tif 000050
【図６】
2003057426.tif 000051
【図７】
2003057426.tif 000052
【図８】
2003057426.tif 000053
【図９】
2003057426.tif 000054
【図１０】
2003057426.tif 000055
【図１１】
2003057426.tif 000056
【図１２】
2003057426.tif 000057
【図１３】
2003057426.tif 000058
【図１４】
2003057426.tif 000059
【図１５】
2003057426.tif 000060
【図１６】
2003057426.tif 000061
【図１７】
2003057426.tif 000062
【図１８】
2003057426.tif 000063
【図１９】
2003057426.tif 000064
【図２０】
2003057426.tif 000065
【図２１】
2003057426.tif 000066
【図２２】
2003057426.tif 000067
【図２３】
2003057426.tif 000068
【図２４】
2003057426.tif 000069
【図２５】
2003057426.tif 000070
【図２６】
2003057426.tif 000071
【図２７】
2003057426.tif 000072
【図２８】
2003057426.tif 000073
【図２９】
2003057426.tif 000074
【図３０】
2003057426.tif 000075
【図３１】
2003057426.tif 000076
【図３２】
2003057426.tif 000077
【図３３】
2003057426.tif 000078
【図３４】
2003057426.tif 000079
【図３５】
2003057426.tif 000080
【図３６】
2003057426.tif 000081
【図３７】
2003057426.tif 000082
【図３８】
2003057426.tif 000083
【図３９】
2003057426.tif 000084
【図４０】
2003057426.tif 000085
【図４１】
2003057426.tif 000086
【図４２】
2003057426.tif 000087
【図４３】
2003057426.tif 000088
【図４４】
2003057426.tif 000089
【図４５】
2003057426.tif 000090
【図４６】
2003057426.tif 000091
【図４７】
2003057426.tif 000092
【図４８】
2003057426.tif 000093
【図４９】
2003057426.tif 000094
【国際調査報告】
2003057426.tif 000095
2003057426.tif 000096
2003057426.tif 000097
2003057426.tif 000098