(57)【要約】少なくとも鉛直軸回り又は床面法線軸回りのロボット１の姿勢に関する目標状態量とロボット１の実状態量との偏差と、ロボット１に作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分である制限対象量の許容範囲とに基づいて、目標床反力に対応する制限対象量を許容範囲に収めつつ、目標運動に動力学モデル上で釣り合う床反力モーメントと目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように目標運動および目標床反力の瞬時値を決定する。
2005000534.tif 000002
【特許請求の範囲】
【請求項１】
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動および目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動および目標床反力の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動および目標床反力に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差と前記許容範囲とに基づいて、前記目標床反力に対応する制限対象量を前記許容範囲に収めつつ、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように前記目標運動および目標床反力の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項２】
前記目標瞬時値決定手段は、前記偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、少なくとも前記目標運動の所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように該所定の仮瞬時値の修正量を決定する手段とを備え、その決定した修正量に応じて前記仮瞬時値を修正することにより前記目標運動の瞬時値を決定することを特徴とする請求の範囲第１項に記載の脚式移動ロボットの制御装置。
【請求項３】
前記動力学モデルの状態量を所定の状態量に近づけるための付加的な床反力モーメントであるモデル補正床反力モーメントを決定する手段を備え、前記目標運動の所定の仮瞬時値の修正量を決定する手段は、少なくとも前記所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントと前記モデル補正床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように前記目標運動の仮瞬時値の修正量を決定することを特徴とする請求の範囲第２項に記載の脚式移動ロボットの制御装置。
【請求項４】
前記所定の仮瞬時値の修正量は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動の修正量であることを特徴とする請求の範囲第２項又は第３項に記載の脚式移動ロボットの制御装置。
【請求項５】
前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体および／又は該上体から延設された腕体の運動であることを特徴とする請求の範囲第４項に記載の脚式移動ロボットの制御装置。
【請求項６】
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量が前記許容範囲に収まるように目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項７】
前記許容範囲に収めた前記制限対象量を目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えたことを特徴とする請求の範囲第６項に記載の脚式移動ロボットの制御装置。
【請求項８】
前記目標瞬時値決定手段は、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲に収めるために、前記ロボットの運動のうち、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を調整して前記目標運動の瞬時値を決定することを特徴とする請求の範囲第６項又は第７項に記載の脚式移動ロボットの制御装置。
【請求項９】
前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体および／又は該上体から延設された腕体の運動であることを特徴とする請求の範囲第８項に記載の脚式移動ロボットの制御装置。
【請求項１０】
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標運動の仮瞬時値を逐次決定する仮瞬時値決定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量のうちの前記許容範囲を逸脱した分をモーメント修正操作量とし、そのモーメント修正操作量に応じて当該逸脱分が減少傾向になるように前記目標運動の仮瞬時値を修正することにより前記目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項１１】
前記目標瞬時値決定手段は、前記モーメント修正操作量をローパスフィルタに通したものに応じて前記目標運動の仮瞬時値の修正量を求め、その求めた修正量により該仮瞬時値を修正することにより前記目標運動の瞬時値を決定することを特徴とする請求の範囲第１０項に記載の脚式移動ロボットの制御装置。
【請求項１２】
前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲により制限してなる制限済制限対象量に対応する床反力モーメントを目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えたことを特徴とする請求の範囲第１０項に記載の脚式移動ロボットの制御装置。
【請求項１３】
前記目標瞬時値決定手段は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を前記目標運動の仮瞬時値から修正することにより前記目標運動の瞬時値を決定することを特徴とする請求の範囲第１０項〜第１２項のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項１４】
前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体および／又は該上体から延設された腕体の運動であることを特徴とする請求の範囲第１３項に記載の脚式移動ロボットの制御装置。
【請求項１５】
前記ロボットの姿勢に関する状態量は、該ロボットの上体のヨー角又はヨー角速度を含むことを特徴とする請求の範囲第１項、第６項および第１０項のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項１６】
前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することを特徴とする請求の範囲第１項、第６項および第１０項のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項１７】
前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断することを特徴とする請求の範囲第１６項に記載の脚式移動ロボットの制御装置。
【請求項１８】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断することを特徴とする請求の範囲第１６項に記載の脚式移動ロボットの制御装置。
【請求項１９】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断することを特徴とする請求の範囲第１６項に記載の脚式移動ロボットの制御装置。
【請求項２０】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動の仮瞬時値を決定する仮瞬時値決定手段と、
前記ロボットの運動と該運動に釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分との関係を表す動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定するモデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように前記目標運動の仮瞬時値を補正して目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項２１】
前記目標瞬時値決定手段は、前記目標運動の瞬時値に前記動力学モデル上で略釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定することを特徴とする請求の範囲第２０項に記載の脚式移動ロボットの制御装置。
【請求項２２】
前記目標瞬時値決定手段は、前記ロボットの摂動運動と床反力モーメントの鉛直成分又は床面法線方向成分の摂動分との関係を表す摂動モデルと、
少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記摂動モデルの摂動分を操作する摂動モデル操作量を決定する手段と、
その決定した摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求める手段と、
該補正量により前記目標運動の仮瞬時値を補正することにより前記目標運動の瞬時値を決定する手段とを備えることを特徴とする請求の範囲第２０項に記載の脚式移動ロボットの制御装置。
【請求項２３】
前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲内に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することを特徴とする請求の範囲第２２項に記載の脚式移動ロボットの制御装置。
【請求項２４】
少なくとも前記摂動モデルの状態量に応じて前記摂動モデル操作量の要求値を決定する手段を備え、
前記摂動モデル操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値、前記許容範囲、及び前記要求値に基づき前記摂動モデルに入力する摂動モデル操作量を決定することを特徴とする請求の範囲第２２項に記載の脚式移動ロボットの制御装置。
【請求項２５】
前記摂動モデル操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することを特徴とする請求の範囲第２４項に記載の脚式移動ロボットの制御装置。
【請求項２６】
前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することを特徴とする請求の範囲第２４項に記載の脚式移動ロボットの制御装置。
【請求項２７】
前記目標瞬時値決定手段は、前記目標運動の補正量を前記動力学モデルに追加的に入力する手段を備えたことを特徴とする請求の範囲第２２項に記載の脚移動ロボットの制御装置。
【請求項２８】
前記摂動モデルは、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることを特徴とする請求の範囲第２２項に記載の脚式移動ロボットの制御装置。
【請求項２９】
前記摂動運動は、該ロボットの重心位置を略一定に維持する摂動運動であることを特徴とする請求の範囲第２８項に記載の脚式移動ロボットの制御装置。
【請求項３０】
前記摂動運動は、ロボットの上体および／又は該上体から延設された腕体の摂動運動であることを特徴とする請求の範囲第２８項又は第２９項に記載の脚式移動ロボットの制御装置。
【請求項３１】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも前記目標床反力の仮瞬時値を前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の仮瞬時値を逐次求める第１モデル演算手段と、
前記ロボットの運動と該運動に釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分との関係を表す第２動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該第２動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定する第２モデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように目標床反力の床反力モーメント補正量を求め、その求めた床反力モーメント補正量を前記第１動力学モデルに追加的に入力する第１モデル入力補正手段とを備え、
少なくとも前記第２動力学モデルの入力に基づいて前記目標運動の瞬時値を決定することを特徴とする脚式移動ロボットの制御装置。
【請求項３２】
前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えたことを特徴とする請求の範囲第３１項に記載の脚式移動ロボットの制御装置。
【請求項３３】
前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定することを特徴とする請求の範囲第３１項に記載の脚式移動ロボットの制御装置。
【請求項３４】
前記目標床反力の床反力モーメント補正量の要求値を決定する手段を備え、
前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定することを特徴とする請求の範囲第３１項に記載の脚式移動ロボットの制御装置。
【請求項３５】
少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記目標運動の補正量を求め、その求めた補正量を前記第２動力学モデルに追加的に入力する第２モデル入力補正手段を備えたことを特徴とする請求の範囲第３１項に記載の脚式移動ロボットの制御装置。
【請求項３６】
前記ロボットの摂動運動と制限対象量摂動分との関係を表す摂動モデルと、
少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき床反力モーメントの操作量を決定する手段と、
その決定した床反力モーメントの操作量を、前記第１動力学モデルに入力する前記目標床反力の床反力モーメント補正量と前記摂動モデルに入力する摂動モデル操作量とに分配する分配手段とを備え、
前記第２モデル入力補正手段は、前記摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求めることを特徴とする請求の範囲第３５項に記載の脚式移動ロボットの制御装置。
【請求項３７】
少なくとも前記摂動モデルの状態量に応じて前記床反力モーメントの操作量の要求値を決定する手段を備え、
前記床反力モーメントの操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲と前記要求値とに基づき前記分配手段に与える床反力モーメントの操作量を決定することを特徴とする請求の範囲第３６項に記載の脚式移動ロボットの制御装置。
【請求項３８】
前記床反力モーメントの操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することを特徴とする請求の範囲第３７項に記載の脚式移動ロボットの制御装置。
【請求項３９】
前記摂動モデルは、ロボットの角運動量変化率の鉛直軸回り又は床面法線軸回りの成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることを特徴とする請求の範囲第３６項に記載の脚式移動ロボットの制御装置。
【請求項４０】
前記摂動運動は、ロボットの重心位置を略一定に維持する摂動運動であることを特徴とする請求の範囲第３９項に記載の脚式移動ロボットの制御装置。
【請求項４１】
前記摂動運動は、ロボットの上体および／又は該上体から延設された腕体の摂動運動であることを特徴とする請求の範囲第３９項または第４０項に記載の脚式移動ロボットの制御装置。
【請求項４２】
前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定することを特徴とする請求の範囲第３６項に記載の脚式移動ロボットの制御装置。
【請求項４３】
前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定することを特徴とする請求の範囲第３７項に記載の脚式移動ロボットの制御装置。
【請求項４４】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも該目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の第１仮瞬時値を求める第１モデル演算手段と、
目標運動の第２仮瞬時値を決定する手段であって、その決定する第２仮瞬時値にロボットの運動と床反力との関係を表す第２動力学モデル上で釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算により求まる制限対象量瞬時値が前記許容範囲に収まるように、少なくとも前記目標床反力の仮瞬時値に基づき、該目標運動の第２仮瞬時値を決定する制限付き第２モデル演算手段と、
少なくとも前記目標運動の第１仮瞬時値と第２仮瞬時値との差に基づいて、該差が０に近づくように床反力モーメントの操作量を求める操作量算出手段と、
該床反力モーメントの操作量を前記第１動力学モデル及び第２動力学モデルのうちの少なくともいずれか一方に追加的に入力するモデル入力補正手段とを備え、
前記目標運動の第２仮瞬時値を該目標運動の目標瞬時値として決定することを特徴とする脚式移動ロボットの制御装置。
【請求項４５】
前記目標運動の第１仮瞬時値と第２仮瞬時値との差は、前記ロボットの所定の部位の姿勢の、鉛直軸回り又は床面法線軸回りの状態量の差を含むことを特徴とする請求の範囲第４４項に記載の脚式移動ロボットの制御装置。
【請求項４６】
前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えたことを特徴とする請求の範囲第４４項に記載の脚式移動ロボットの制御装置。
【請求項４７】
少なくとも前記目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第３動力学モデルに入力し、該第３動力学モデルの出力としての目標運動の第３仮瞬時値を求める第３モデル演算手段を備え、前記目標床反力の床反力モーメント補正量の要求値を決定する手段は、前記決定した前記目標運動の目標瞬時値と前記目標運動の第３仮瞬時値との差に基づいて、該差が０に近づくように前記要求値を決定することを特徴とする請求の範囲第３４項に記載の脚式移動ロボットの制御装置。
【請求項４８】
前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することを特徴とする請求の範囲第２０項、第３１項、および第４４項のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項４９】
前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断することを特徴とする請求の範囲第４８項に記載の脚式移動ロボットの制御装置。
【請求項５０】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断することを特徴とする請求の範囲第４８項に記載の脚式移動ロボットの制御装置。
【請求項５１】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断することを特徴とする請求の範囲第４８項に記載の脚式移動ロボットの制御装置。
【発明の詳細な説明】
【技術分野】  本発明は、脚式移動ロボットの歩行のみならず、走行にも適した制御装置に関する。
【背景技術】  脚式移動ロボット、例えば２足移動ロボットの移動動作を行わせるための歩容（目標歩容）の生成は、従来、主にロボットにスムーズな歩行動作を行なわせる歩容（歩行歩容）を生成することを主目的として行なわれてきた。しかし、近年では、脚式移動ロボットの開発が進むにつれて、該ロボットに歩行だけでなく、走行も行なわせることができる歩容を生成することが望まれている。さらには、十分な摩擦力を発生できない滑りやすい床（いわゆる低ミュー路）上でもロボットを支障なく移動させることができる歩容を生成することが望まれている。
尚、「歩容」という漢字に「歩」が入っているので歩行に限定されると誤解されやすいが、本来「歩容」とは、トロットなど、馬の走行形態を指す言葉として用いられているように、走行も含んだ概念である。
ここで、歩行と走行の特徴の違いを説明しておく。
同時に全脚が空中に存在する瞬間がある移動形態を走行と定義することが一般的ではある。しかし、この定義によって歩行と走行が明確に区別できるとは限らない。たとえば、速いジョギングでは、ほとんどの人間において、同時に全脚が空中に存在する瞬間があるが、遅いジョギングでは、かなりの人間において、常にいずれかの脚が接地している。速いジョギングは走行であるのに遅いジョギングは歩行である、と定義するのは、感覚的に少し無理がある。
図５１に、典型的な走行における上体鉛直位置と床反力鉛直成分（左右の脚に作用する床反力鉛直成分の和）のパターンを示し、図５２には、典型的な歩行における上体鉛直位置と床反力鉛直成分のパターンを示す。
尚、上体鉛直位置速度は、上体代表点の鉛直位置とその速度を意味する。上体水平位置速度は、上体代表点の水平位置とその速度を意味する。上体鉛直位置速度と上体水平位置速度を合わせて、上体位置速度と呼ぶ。
また、「床反力鉛直成分」は、厳密には、床反力の鉛直軸まわりのモーメント成分と区別するために、「並進床反力鉛直成分」と記述すべきであるが、言葉が長くなるので、ここでは「並進」を省略する。以降、「並進床反力水平成分」も「並進」を省略して「床反力水平成分」と記述する。
まず上体の動きを見てみると、歩行においては、支持脚の上を上体が通過する瞬間に上体は最も高く、走行においては、この瞬間に最も低い。すなわち、歩行と走行では、上体の上下動パターンの位相が反転している。
一方、床反力に関しては、歩行では比較的一定であるのに対し、走行においては、大きく変動し、支持脚の上を上体が通過する瞬間に床反力は最も大きい。また、当然のことながら、同時に全脚が空中に存在する瞬間において床反力は０になっている。より詳しく観察すると、走行では、支持脚を縮めた量にほぼ比例した大きさの床反力が発生する。言いかえると、走行では、脚をばねのように使って跳ねながら移動していると言える。
遅いジョギングでは、典型的な走行と同じ上体上下動の位相を持つ。また、遅いジョギングでは、同時に全脚が空中に存在する瞬間がない場合が多いが、その場合でも、支持脚と遊脚の切り換えが行われる瞬間において、床反力は、完全には０にならないがほぼ０になっている。
したがって、以上のように、上体の上下動や床反力のパターンの上記特徴から歩行と走行を区別した方が、遅いジョギングも走行とみなされ、感覚とも一致して、より適切と言えよう。
特に、最も特徴的な点で両者を区別するならば、走行とは、支持脚の切り換えが行われる瞬間において、床反力が０またはほぼ０になる移動形態であり、歩行は、それ以外の移動形態（床反力鉛直成分が比較的一定）であると言えよう。
ところで、本出願人は先にＰＣＴ公開公報ＷＯ／０２／４０２２４において、脚式移動ロボットの床反力を含む歩容を、動力学的平衡条件（目標歩容の重力と慣性力と床反力との釣り合い条件のことである。狭義では、目標歩容の運動による重力と慣性力との合力が目標ＺＭＰまわりに作用するモーメントの水平成分が０であること。詳細は後述する。）をほぼ満足しながら、自在かつリアルタイムに生成する技術を先に提案した。この技術や、特開平１０−８６０８１号公報、特開平１０−２７７９６９号公報などにて本出願人が提案してきた一連の脚式移動ロボットの制御装置は、歩行のみならず走行にも適用できるものである。
また、本願出願人は、特開平５−３３７８４９号公報等にて、次のような技術も提案している。すなわち、この技術では、ロボットの傾き偏差（ロボットの上体の鉛直方向に対する実際の傾き角と目標歩容の傾き角との偏差）とが生じたときには、実ＺＭＰをずらして、目標ＺＭＰ回りに許容範囲内で姿勢復元方向のモーメントを発生させると共に、目標歩容を生成するために用いるモデル上で、目標ＺＭＰ回りにモーメントを発生させるように目標歩容の運動を決定する。このように、モデル上でモーメントを意図的に発生させることにより、実際のロボット上で姿勢復元方向のモーメントを発生させることと同等の効果を得ることができる。
しかしながら、これらの技術においては、目標歩容のＺＭＰまわりの床反力モーメント鉛直成分の大きさを考慮していなかった。このため、この床反力モーメント鉛直成分が過大となって、摩擦の限界を超えて、スピンするおそれがあった。なお、スピンとは、実際のロボットのヨー角（鉛直軸まわり回転角）速度が目標ヨー角速度からずれることを言う。
摩擦係数の高い床面を歩行する場合（この場合、少なくとも１つの脚体は常時接地している）には、床反力鉛直成分が常にほぼロボットの自重相当であるので、摩擦力（すなわち床反力モーメント鉛直成分）の限界が高い。このため、スピンは発生しにくい。
しかるに、走行においては、床反力鉛直成分が０になる、または０に近くなる時があるので、その時には、たとえ摩擦係数が高くとも、床面の摩擦力のモーメント鉛直成分の限界が０になるまたは０に近くなる。したがって、目標歩容の床反力モーメント鉛直成分が限界を超え、スピンして転倒する恐れがあった。
また、歩行の場合でも、床の摩擦係数が低い場合には、スピンして転倒する恐れがあった。
また、前記の技術では、上体のヨー方向の回転姿勢の目標姿勢からのずれを補償するようにしていなかったため、ロボットの移動軌道が目標歩容の軌道からずれる恐れがあった。
一方、本出願人は先に、例えばＰＣＴ出願ＰＣＴ／ＪＰ０２／１３５９６の実施形態において、目標歩容において腕以外が発生するモーメント鉛直成分を打ち消すように、腕を振るようにしたものを提案した。
この場合には、目標歩容のモーメント鉛直成分はほぼ０になるが、脚を激しく振って移動する場合には、腕の振りも激しくなる。
一般的に、人間型ロボットにおいては、腕の質量は、脚の質量に較べて小さい。したがって、モーメント鉛直成分を完全に打ち消すためには、腕は、脚の振りよりも激しく振る必要がある。
しかし、腕の動作範囲には限界があり、また、腕のアクチュエータのトルクおよび速度にも限界があるので、脚を激しく振って移動する場合には、腕によってモーメント鉛直成分を完全に打ち消すことができなくなる場合があった。
また、目標歩容において腕以外が発生するモーメント鉛直成分を完全に打ち消すように、腕を振るようにすると、腕振りの中心が徐々にオフセットしていき、左右の腕の振りが非対称になる恐れがあった。具体的には、ロボットが左旋回する場合に、腕以外が発生するモーメント鉛直成分を完全に打ち消すように、腕を振るようにすると、脚と胴体が左を向いたことによる角運動量変化を打ち消すために、左腕は前側には大きく、後ろ側には小さく振られ、右の腕は前側には小さく後ろ側には大きく振られるようになる。したがって、この場合には、左腕は、前側の振り動作限界に達する恐れが生じ、右腕は、後ろ側の振り動作限界に達する恐れが生じる。
また、さらに左右の腕の振りが非対称にならないように、腕振りの中心を戻そうとすると、この動作によって、床反力モーメント鉛直成分が発生し、目標歩容の床反力モーメント鉛直成分が限界を超え、スピンする恐れがあった。
したがって、本発明の目的は、上記の問題点を解消し、歩行、走行等の歩容形態や床面の摩擦状態によらずに、より一層好適な歩容を生成することができる制御装置を提供することにある。
より具体的には、本発明は、ロボットと床面との間の摩擦力のモーメント鉛直成分の限界を考慮し、ロボットのヨー方向の姿勢状態を安定に保ちつつ、スピンおよびそれに起因するロボットの転倒を防止することが可能な歩容でロボットを動作させることができる制御装置を提供することを目的とする。そして、空中時、あるいは摩擦力のモーメント鉛直成分の限界が極めて低い時にでも、動力学的平衡条件を満足する歩容の運動パターンでロボットを動作させることができる制御装置を提供することを目的とする。さらに、目標歩容の左右非対称性が大きくなることを防止して、動作の継続性を確保することを目的とする。
【発明の開示】
本発明の脚式移動ロボットの歩容生成装置の第１発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動および目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動および目標床反力の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動および目標床反力に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差と前記許容範囲とに基づいて、前記目標床反力に対応する制限対象量を前記許容範囲に収めつつ、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように前記目標運動および目標床反力の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
かかる第１発明によれば、少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差と前記許容範囲とに基づいて、前記目標床反力に対応する制限対象量を前記許容範囲に収めつつ、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように前記目標運動および目標床反力の瞬時値を決定する。このため、鉛直軸回りまたは床面法線軸回りのロボットの姿勢に関する状態量（以下、ヨー方向の姿勢状態量という）を、目標状態量、すなわち目標運動におけるヨー方向の目標姿勢状態量に近づけるようにしつつ（前記偏差を０に近づけるようにしつつ）、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差とを考慮して、目標運動および目標床反力の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
かかる第１発明では、前記目標瞬時値決定手段は、前記偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、少なくとも前記目標運動の所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように該所定の仮瞬時値の修正量を決定する手段とを備え、その決定した修正量に応じて前記仮瞬時値を修正することにより前記目標運動の瞬時値を決定することが好ましい（第２発明）。
かかる第２発明によれば、目標運動の所定の仮瞬時値によって前記動力学モデル上で発生する（目標運動に釣り合う）床反力モーメントと、前記偏差を０に近づけるための補償床反力モーメントとに応じて前記所定の仮瞬時値の修正量を決定するので、ロボットのヨー方向の姿勢状態量を目標状態量に近づけつつ、前記制限対象量が許容範囲に収まるような適切な目標運動の瞬時値を決定できる。
この第２発明では、前記動力学モデルの状態量を所定の状態量に近づけるための付加的な床反力モーメントであるモデル補正床反力モーメントを決定する手段を備え、前記目標運動の所定の仮瞬時値の修正量を決定する手段は、少なくとも前記所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントと前記モデル補正床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように前記目標運動の仮瞬時値の修正量を決定することが好ましい（第３発明）。
この第３発明によれば、目標運動の所定の仮瞬時値の修正量を決定するとき、目標運動の所定の仮瞬時値に動力学モデル上で釣り合う床反力モーメント、及び前記補償床反力モーメントだでなく、動力学モデルの状態量に係るモデル補正床反力モーメントを考慮するので、第２発明の効果に加えて、動力学モデルが発散しないようにすることができる。
また、上記第２及び第３発明では、前記所定の仮瞬時値の修正量は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動の修正量であることが好適である（第４発明）。
これにより制限対象量を許容範囲に収めるように目標運動の仮瞬時値を修正できる。
この第４発明では、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体および／又は該上体から延設された腕体の運動であることが好適である（第５発明）。
これによれば、目標運動の仮瞬時値の修正処理が容易になる。
なお、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、ロボットの全体重心を一定に維持するような運動であることが特に好ましい。
また、本発明の脚式移動ロボットの制御装置の第６発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量が前記許容範囲に収まるように目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
かかる第６発明によれば、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量（例えば前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとの和）が前記許容範囲に収まるように目標運動の瞬時値を決定する。このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
この第６発明では、前記許容範囲に収めた前記制限対象量を目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えることが好ましい（第７発明）。
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
上記第６及び第７発明では、前記目標瞬時値決定手段は、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲に収めるために、前記ロボットの運動のうち、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を調整して前記目標運動の瞬時値を決定することが好ましい（第８発明）。
これにより制限対象量を許容範囲に収めるように目標運動の瞬時値を決定できる。
この第８発明では、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体および／又は該上体から延設された腕体の運動であることが好適である（第９発明）。
これによれば、目標運動の瞬時値の決定処理が容易になる。
なお、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、ロボットの全体重心を一定に維持するような運動であることが特に好ましい。
また、本発明の脚式移動ロボットの制御装置の第１０発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標運動の仮瞬時値を逐次決定する仮瞬時値決定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量のうちの前記許容範囲を逸脱した分をモーメント修正操作量とし、そのモーメント修正操作量に応じて当該逸脱分が減少傾向になるように前記目標運動の仮瞬時値を修正することにより前記目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
この第１０発明によれば、前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量（例えば前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとの和）のうちの前記許容範囲を逸脱した分をモーメント修正操作量とし、そのモーメント修正操作量に応じて当該逸脱分が減少傾向になるように前記目標運動の仮瞬時値を修正することにより前記目標運動の瞬時値を決定する。このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量をほぼ許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差とを考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
かかる第１０発明では、前記目標瞬時値決定手段は、前記モーメント修正操作量をローパスフィルタに通したものに応じて前記目標運動の仮瞬時値の修正量を求め、その求めた修正量により該仮瞬時値を修正することにより前記目標運動の瞬時値を決定することが好ましい（第１１発明）。
この第１１発明によれば、目標運動の仮瞬時値が過剰に修正されるのを防止することができる。
上記第１０および第１１発明では、前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲により制限してなる制限済制限対象量に対応する床反力モーメントを目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えることが好ましい（第１２発明）。
この第１２発明によれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
上記第１０〜第１２発明では、前記目標瞬時値決定手段は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を前記目標運動の仮瞬時値から修正することにより前記目標運動の瞬時値を決定することが好ましい（第１３発明）。
これにより制限対象量を許容範囲に収めるように目標運動の瞬時値を決定できる。
この第１３発明では、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体および／又は該上体から延設された腕体の運動であることが好適である（第１４発明）。
これによれば、目標運動の仮瞬時値の修正処理が容易になる。
なお、前記第１〜第１４発明では、前記ロボットの姿勢に関する状態量は、具体的には、該ロボットの上体のヨー角（ヨー方向の回転角）又はヨー角速度（ヨー方向の回転角の角速度）を含むことが好ましい（第１５発明）。この第１５発明によれば、ロボットの上体のヨー方向の姿勢の安定性を高めることができる。なお、このことは、後述する第１５〜第５１発明においても同様である。
また、前記第１〜第１５発明では、前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することが好ましい（第１６発明）。
この第１６発明によれば、前記ロボット（目標運動の瞬時値に、あるいは目標運動および目標床反力の瞬時値に追従して動作しているロボット）の滑りの発生の判断結果に応じて制限対象量の許容範囲を可変的に設定するので、ロボットの滑りの発生を確実に抑制できる。なお、滑りの発生が有ると判断されたときには、許容範囲は、それを狭めるように設定されるべきである。
この第１６発明では、例えば、次のようにして、滑りの発生を判断することができる。
すなわち、前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断する（第１７発明）。この場合、例えば該対地速度の絶対値が所定値よりも大きいときには、滑りの発生が有ると判断することができる。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断する（第１８発明）。この場合、例えば該見かけばね定数が所定値よりも小さいときには、滑りの発生が有ると判断することができる。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断する（第１９発明）。この場合、前記実床反力をバンドパスフィルタに通したものは、いわゆる滑り振動が発生しているときの、実床反力の振動成分に相当するものとなる。そして、例えばこの振動成分の大きさ（絶対値）が所定値よりも大きいときには、滑り振動の発生が有ると判断することができる。
なお、滑りの発生の判断は、第１７〜第１９発明のいずれでも行なうことができるが、これらの第１７〜第１９発明の２つ以上を組み合わせて滑りの発生の判断を行なうようにしてもよい。
また、本発明の脚式移動ロボットの制御装置の第２０発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動の仮瞬時値を決定する仮瞬時値決定手段と、
前記ロボットの運動と該運動に釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分との関係を表す動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定するモデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように前記目標運動の仮瞬時値を補正して目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
この第２０発明によれば、少なくとも前記目標運動の仮瞬時値を前記動力学モデルに入力することで、該動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分が求められる。そして、その求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算（例えば足し算）によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値（これは前記動力学モデル上で目標運動が発生する床反力モーメントに補償床反力モーメントを付加した場合の制限対象量の瞬時値に相当する）が決定され、少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように前記目標運動の仮瞬時値を補正して目標運動の瞬時値を決定する。
このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
なお、前記動力学モデルは、基本的には近似精度の高いものを用いることが好適である。
この第２０発明では、前記目標瞬時値決定手段は、前記目標運動の瞬時値に前記動力学モデル上で略釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定することが好ましい（第２１発明）。
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
上記第２０および第２１発明では、前記目標瞬時値決定手段は、前記ロボットの摂動運動と床反力モーメントの鉛直成分又は床面法線方向成分の摂動分との関係を表す摂動モデルと、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記摂動モデルの摂動分を操作する摂動モデル操作量を決定する手段と、その決定した摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求める手段と、該補正量により前記目標運動の仮瞬時値を補正することにより前記目標運動の瞬時値を決走する手段とを備えることが好ましい（第２２発明）。
すなわち、前記摂動モデルは線形性が高いので、前記制限対象量を許容範囲に収める上での適正な目標運動の補正量の算出処理が容易になると共に、その補正量による前記目標運動の仮瞬時値の補正処理が容易になる。
この第２２発明では、前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲内に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することが好ましい（第２３発明）。
この第２３発明によれば、まず、摂動モデル操作量を０と仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、摂動モデル操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無いようにすることを可能とする摂動モデル操作量を適切に決定できる。
また、前記第２２発明では、少なくとも前記摂動モデルの状態量に応じて前記摂動モデル操作量の要求値を決定する手段を備え、前記摂動モデル操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値、前記許容範囲、及び前記要求値に基づき前記摂動モデルに入力する摂動モデル操作量を決定することが好ましい（第２４発明）。
これによれば、前記許容範囲と、補償床反力モーメントを加味したモデル制限対象量瞬時値だけでなく、摂動モデルの状態量（摂動モデルの要素となる回転体の回転角やその角速度など）の要求値を考慮して、前記摂動モデル操作量が決定される。これにより、該摂動モデルの状態量が前記要求値に対応する状態量からかけ離れないようにして、不適正な目標運動の補正量が求められるような事態を防止することができる。
この第２４発明では、前記摂動モデル操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することが好適である（第２５発明）。
この第２５発明によれば、摂動モデルの状態量がある目標状態量の近傍に概ね維持されるように摂動モデル操作量が決定される。これにより、この摂動モデルによって決定される目標運動の補正量を、摂動モデルの状態を安定に保ちつつ、制限対象量を許容範囲に収める上で好適なものにすることができる。
さらに、上記第２４発明および第２５発明では、前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することが好ましい（第２６発明）。
これによれば、まず、摂動モデル操作量を前記要求値に一致させたと仮定した場合、すなわち、該要求値のみを摂動モデルに入力したとした場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき決定した制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値と上記要求値との和をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、摂動モデル操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無く、且つ摂動モデルの安定性も確保し得る摂動モデル操作量を適切に決定できる。
前記第２２発明では、前記目標瞬時値決定手段は、前記目標運動の補正量を前記動力学モデルに追加的に入力する手段を備えるようにしてもよい（第２７発明）。
これによれば、目標運動の補正量を前記動力学モデルに追加的に入力するので、該動力学モデルから目標運動に瞬時値に釣り合う床反力モーメントの鉛直成分または床面法線方向成分を直接的に求めることができる。
摂動モデルを備える前記２２〜第２７発明にあっては、前記摂動モデルは、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることが好ましい（第２８発明）。
これによれば、前記制限対象量を許容範囲に収めるための目標運動の補正量を適正に決定できる。
この第２８発明では、前記摂動運動は、該ロボットの重心位置を略一定に維持する摂動運動であることが好適である（第２９発明）。
これによれば、摂動モデルによる目標運動の補正を、ロボットの並進床反力に影響を及ぼすことなく行なうことができる。
さらに上記第２８および第２９発明では、前記摂動運動は、ロボットの上体および／又は該上体から延設された腕体の摂動運動であることが好ましい（第３０発明）。
これによれば、目標運動の補正量の算出処理が容易になる。
また、本発明の脚式移動ロボットの制御装置の第３１発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも前記目標床反力の仮瞬時値を前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の仮瞬時値を逐次求める第１モデル演算手段と、
前記ロボットの運動と該運動に釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分との関係を表す第２動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該第２動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定する第２モデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように目標床反力の床反力モーメント補正量を求め、その求めた床反力モーメント補正量を前記第１動力学モデルに追加的に入力する第１モデル入力補正手段とを備え、
少なくとも前記第２動力学モデルの入力に基づいて前記目標運動の瞬時値を決定することを特徴とする。
かかる第３１発明によれば、少なくとも前記目標運動の仮瞬時値を前記第２動力学モデルに入力することで、該第２動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分が求められ、これと、前記補償床反力モーメントとから所定の演算（例えば足し算）によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値（これは前記動力学モデル上で目標運動が発生する床反力モーメントに補償床反力モーメントを付加した場合の制限対象量の瞬時値に相当する）が決定される。そして、少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように目標床反力の床反力モーメント補正量を求め、その求めた床反力モーメント補正量を前記第１動力学モデルに追加的に入力するので、少なくとも第２動力学モデルの入力に基づいて、前記制限対象量を許容範囲に収め得るような目標運動の瞬時値が得られることとなる。
このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
なお、前記第２動力学モデルは、基本的には第１動力学モデルよりも近似精度の高いものを用いることが好適である。
かかる第３１発明では、前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えることを好ましい（第３２発明）
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
上記第３１発明および第３２発明では、例えば前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定することが好ましい（第３３発明）。
この第３３発明によれば、まず、少なくとも前記目標床反力の床反力モーメント補正量を０と仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と前記制限済制限対象量との差に基づき、床反力モーメン補正量を決定する。補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無いようにすることを可能とする適切な床反力モーメント補正量を決定できる。
また、上記第３１発明および第３２発明では、より好ましくは、前記目標床反力の床反力モーメント補正量の要求値を決定する手段を備え、前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定する（第３４発明）。
この第３４発明によれば、まず、目標床反力の床反力モーメント補正量を前記要求値に一致させたと仮定した場合、すなわち、第１動力学モデルに該要求値のみを追加入力したと仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき決定した制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値と上記要求値との和をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、床反力モーメント補正量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無く、且つ、前記要求値にできるだけ近づくような適切な床反力モーメント補正量を決定できる。
また、上記第３１〜第３４発明では、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記目標運動の補正量を求め、その求めた補正量を前記第２動力学モデルに追加的に入力する第２モデル入力補正手段を備えるようにしてもよい（第３５発明）。
これによれば、第１動力学モデルの安定性を高めつつ、制限対象量を許容範囲により適切に収めるための目標運動の瞬時値を第２動力学モデルに入力させるようにすることができる。
この第３５発明では、前記ロボッ卜の摂動運動と制限対象量摂動分との関係を表す摂動モデルと、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき床反力モーメントの操作量を決定する手段と、その決定した床反力モーメントの操作量を、前記第１動力学モデルに入力する前記目標床反力の床反力モーメント補正量と前記摂動モデルに入力する摂動モデル操作量とに分配する分配手段とを備え、前記第２モデル入力補正手段は、前記摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求めることが好ましい（第３６発明）。
これによれば、前記床反力モーメントの操作量を第１動力学モデルの入力する床反力モーメント補正量と摂動モデルに入力する摂動モデル操作量とに分配するので、第１動力学モデルと摂動モデルとのそれぞれの特性に適した入力をそれぞれのモデルに入力することができる。そのため、第１動力学モデルや摂動モデルが不安定になるのを防止しつつ、制限対象量を許容範囲に収め得る目標運動の瞬時値を適切に決定できる。また、摂動モデルを用いることで、第２動力学モデルに追加的に入力する目標運動の補正量の算出処理が容易になる。
なお、第１動力学モデルに入力する床反力モーメント補正量は床反力モーメントの操作量のうちの低周波成分（直流成分）であることが望ましく、摂動モデルに入力する摂動モデル操作量は、床反力モーメントの操作量のうちの高周波成分であることが望ましい。
この第３６発明では、少なくとも前記摂動モデルの状態量に応じて前記床反力モーメントの操作量の要求値を決定する手段を備え、前記床反力モーメントの操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲と前記要求値とに基づき前記分配手段に与える床反力モーメントの操作量を決定することが好ましい（第３７発明）。
この第３７発明によれば、前記補償床反力モーメントを加味したモデル制限対象量瞬時値と許容範囲だけでなく、摂動モデルの状態量（摂動モデルの要素としての回転体の回転角やその角速度など）を考慮して、分配手段に入力する床反力モーメントの操作量が決定されるので、摂動モデルの状態量が前記要求値に対応する状態量からかけ離れないようにして、該摂動モデルによって求められる目標運動の補正量が不適切なものとなるのを防止できる。
この第３７発明では、前記床反力モーメントの操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することが好適である（第３８発明）。
この第３８発明によれば、摂動モデルの状態量がある目標状態量の近傍に概ね維持されるように床反力モーメントの操作量、ひいては摂動モデル操作量が決定される。これにより、この摂動モデルによって決定される目標運動の補正量を、摂動モデルの状態を安定に保ちつつ、制限対象量を許容範囲に収める上で好適なものにすることができる。
また、上記の如く摂動モデルを備える第３６〜３８発明では、前記摂動モデルは、ロボットの角運動量変化率の鉛直軸回り又は床面法線軸回りの成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることが好ましい（第３９発明）。
これによれば、前記制限対象量を許容範囲に収めるための目標運動の補正量を適正に決定できる。
この第３９発明では、前記摂動運動は、ロボットの重心位置を略一定に維持する摂動運動であることが好適である（第４０発明）。
これによれば、摂動モデルによる目標運動の補正を、ロボットの並進床反力に影響を及ぼすことなく行なうことができる。
さらに、上記第３９および第４０発明では、前記摂動運動は、ロボットの上体および／又は該上体から延設された腕体の摂動運動であることが好ましい（第４１発明）。
これによれば、目標運動の補正量の算出処理が容易になる。
また、前記第３６〜第４１発明では、例えば前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定する（第４２発明）。
この第４２発明によれば、まず、摂動モデル操作量を０と仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、床反力モーメントの操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無いようにすることを可能とする床反力モーメントの操作量を決定できる。
また、特に前記第３７〜第４１発明において、摂動モデル操作量の要求値を決定する場合には、前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定することが好ましい（第４３発明）。
これによれば、まず、摂動モデル操作量を前記要求値に一致させたと仮定した場合、すなわち、該要求値のみを摂動モデルに入力したとした場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき決定した制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値と上記要求値との和をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差、すなわち、モデル制限対象量瞬時値のうちの許容範囲を逸脱する分に基づき、床反力モーメントの操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無く、且つ摂動モデルの安定性も確保し得る床反力モーメントの操作量を適切に決定できる。
また、本発明の脚式移動ロボットの制御装置の第４４発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも該目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の第１仮瞬時値を求める第１モデル演算手段と、
目標運動の第２仮瞬時値を決定する手段であって、その決定する第２仮瞬時値にロボットの運動と床反力との関係を表す第２動力学モデル上で釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算により求まる制限対象量瞬時値が前記許容範囲に収まるように、少なくとも前記目標床反力の仮瞬時値に基づき、該目標運動の第２仮瞬時値を決定する制限付き第２モデル演算手段と、
少なくとも前記目標運動の第１仮瞬時値と第２仮瞬時値との差に基づいて、該差が０に近づくように床反力モーメントの操作量を求める操作量算出手段と、
該床反力モーメントの操作量を前記第１動力学モデル及び第２動力学モデルのうちの少なくともいずれか一方に追加的に入力するモデル入力補正手段とを備え、
前記目標運動の第２仮瞬時値を該目標運動の目標瞬時値として決定することを特徴とする。
この第４４発明によれば、目標床反力の仮瞬時値が第１動力学モデルに入力されて、目標運動の第１仮瞬時値が求められる一方、目標床反力の仮瞬時値が第２動力学モデルにも入力され、この第２動力学モデルを用いて目標運動の第２仮瞬時値が求められる。但し、この場合、目標運動の第２仮瞬時値に第２動力学モデル上で釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算により求まる制限対象量瞬時値が前記許容範囲に収まるように該目標運動の第２仮瞬時値が決定される。そして、少なくとも前記目標運動の第１仮瞬時値と第２仮瞬時値との差に基づいて、該差が零に近づくように床反力モーメントの操作量が求められ、これが第１動力学モデル及び第２動力学モデルのうちの少なくともいずれか一方に追加的に入力される。さらに、目標運動の第２仮瞬時値が該目標運動の目標瞬時値として決定される。
このため、制限付き第２モデル演算手段が求める目標運動の第２仮瞬時値は、前記制限対象量を許容範囲に収めつつ、安定性の高いものとなる。その結果、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
なお、第１動力学モデルは比較的動力学的な近似精度の低いものでよく、また、第２動力学モデルは、第１動力学モデルよりも動力学的な近似精度が高いものであることが望ましい。
かかる第４４発明では、前記目標運動の第１仮瞬時値と第２仮瞬時値との差は、前記ロボットの所定の部位の姿勢の、鉛直軸回り又は床面法線軸回りの状態量の差を含むことが好ましい（第４５発明）。
これによれば、前記所定の部位（例えば上体）のヨー方向の姿勢状態量の安定性を好適に高めることができる。
また、上記第４４および第４５発明では、前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力のモーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えることが好ましい（第４６発明）。
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
上述のような第４４発明は、例えば前記第３４発明の構成を用いることで、容易に実現できる。すなわち、前記第３４発明において、少なくとも前記目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第３動力学モデルに入力し、該第３動力学モデルの出力としての目標運動の第３仮瞬時値を求める第３モデル演算手段を備え、前記目標床反力の床反力モーメント補正量の要求値を決定する手段は、前記決定した前記目標運動の目標瞬時値と前記目標運動の第３仮瞬時値との差に基づいて、該差が０に近づくように前記要求値を決定する（第４７発明）。
かかる第４７発明では、上記第３動力学モデルおよび第３モデル演算手段がそれぞれ第４４発明における第１動力学モデル、第１モデル演算手段に相当するものとなる。従って、第４７発明は、第４４発明と同等のものとなり、第４４発明と同様の効果を奏することができる。
また、以上説明した第２０〜第４７発明では、前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することが好ましい（第４８発明）。
この第４８発明によれば、実際のロボットの滑りの発生の判断結果に応じて制限対象量の許容範囲を可変的に設定するので、ロボットの滑りの発生を確実に抑制できる。なお、滑りの発生が有ると判断されたときには、許容範囲は、それを狭めるように設定されるべきである。
また、この第４８発明では、例えば、前記第１７〜第１９発明と同様に、滑りの発生を判断することができる。
すなわち、前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断する（第４９発明）。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断する（第５０発明）。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断する（第５１発明）。
これらの第４９〜第５１発明によれば、それぞれ前記第１７〜第１９発明と同様に滑りの発生を判断できる。
なお、滑りの発生の判断は、第４９〜第５１発明のいずれでも行なうことができるが、これらの第４９〜第５１発明の２つ以上を組み合わせて滑りの発生の判断を行なうようにしてもよい。
【図面の簡単な説明】  図１は本発明の実施形態およびこれに関連する参考例における脚式移動ロボットとしての２足移動ロボットの全体構成を概略的に示す図、図２は図１のロボットの脚体の先端部の構造を示す図、図３は図１のロボットに備えた制御ユニットの構成を示すブロック図、図４は参考例における制御ユニットの機能的構成を示すブロック図である。図５は実施形態および参考例で生成する走行歩容を説明するための図、図６は目標床反力鉛直成分軌道の例を示すグラフ、図７は目標ＺＭＰ軌道のＸ成分およびＹ成分の例を示すグラフ、図８はロボットの上体並進モードを説明するための図、図９はロボットの上体傾斜モードを説明するための図、図１０はロボットの上体ヨー回転モードを説明するための図、図１１（ａ）はロボットの逆位相腕振りモードを平面視で説明するための図、図１１（ｂ）はロボットの逆位相腕振りモードを側面視で説明するための図、図１２は実施形態で用いる動力学モデルを説明するための図である。図１３は参考例における歩容生成装置のメインルーチン処理を示すフローチャート、図１４はロボットの発散状態を説明するための図、図１５は図１３のＳ０２２のサブルーチン処理を示すフローチャート、図１６は定常歩容と支持脚座標系とを説明するための図、図１７は定常歩容の上体軌道と支持脚座標系とを例示する図、図１８は基準逆位相腕振り角の例を示すグラフ、図１９は定常歩容における目標床反力鉛直成分軌道の設定例を示すグラフ、図２０は定常歩容における床反力水平成分許容範囲の設定例を示すグラフ、図２１は定常歩容における床反力モーメント鉛直成分許容範囲の設定例を示すグラフ、図２２は定常歩容における目標ＺＭＰ軌道の設定例を示すグラフである。図２３は図１３のＳ０２４のサブルーチン処理を示すフローチャート、図２４は図２３のＳ２０８のサブルーチン処理を示すフローチャート、図２５は図２４のＳ３０６のサブルーチン処理を示すフローチャート、図２６は図２５のＳ４１２のサブルーチン処理を示すフローチャートである。図２７は許容範囲を考慮しない床反力水平成分の例を示すグラフ、図２８は許容範囲を考慮した床反力水平成分の例を示すグラフ、図２９は上体傾斜角加速度の例を示すグラフ、図３０はロボットの上体傾斜角を復元するための上体傾斜復元モーメントＺＭＰ換算値の例を示すグラフ、図３１は上体傾斜復元モーメントＺＭＰ換算値を加味した上体傾斜角加速度の例を示すグラフ、図３２は許容範囲を考慮しない床反力モーメント鉛直成分の例を示すグラフ、図３３は許容範囲を考慮した床反力モーメント鉛直成分の例を示すグラフ、図３４は逆位相腕振りモーメントの例を示すグラフ、図３５は図３４の逆位相腕振りモーメントに対応する逆位相腕振り角加速度を示すグラフ、図３６は逆位相腕振り角を復元するための逆位相腕振り復元角加速度の例を示すグラフ、図３７は図３６の逆位相腕振り復元角加速度に対応する逆位相腕振り復元モーメントを示すグラフ、図３８は図３３の床反力モーメント鉛直成分と図３７の逆位相腕振り復元モーメントとを合成してなる床反力モーメント鉛直成分を示すグラフである。図３９は図１３のＳ０２６のサブルーチン処理を示すフローチャート、図４０は今回歩容���床反力水平成分許容範囲の設定例を示すグラフ、図４１は今回歩容の床反力モーメント鉛直成分許容範囲の設定例を示すグラフ、図４２は図１３のＳ０２８のサブルーチン処理を示すフローチャート、図４３は図４２のＳ７０２のサブルーチン処理を示すフローチャート、図４４は今回歩容の仮目標ＺＭＰとＺＭＰ修正量と修正後の目標ＺＭＰとの例を示すグラフ、図４５は図１３のＳ０３０のサブルーチン処理を示すフローチャート、図４６は図４５のＳ１４１２のサブルーチン処理を示すフローチャートである。図４７は定常歩容と目標歩容の上体位置軌道との関係を示すグラフ、図４８は上体傾斜モード（腰中心の上体傾斜）の他の例を示す図、図４９は動力学モデルの他の例を説明するための図、図５０は歩行歩容における目標床反力鉛直成分の設定例を示す図、図５１はロボットの走行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図、図５２はロボットの歩行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図である。図５３は本発明の第１実施形態における制御ユニットの機能的構成を示すブロック図、図５４は図５３に示す補償全床反力モーメント水平成分分配器の処理を示すブロック図、図５５は図５３に示すモデル操作床反力モーメント鉛直成分決定器の処理を示すブロック図、図５６は第１実施形態における歩容生成装置のメインルーチン処理を示すフローチャート、図５７は図５６のＳ３０３２のサブルーチン処理を示すフローチャート、図５８は図５７のＳ３４１４のサブルーチン処理を示すフローチャートである。図５９は本発明の第２実施形態における制御ユニットの機能的構成を示すブロック図、図６０は第２実施形態における歩容生成装置のメインルーチン処理を示すフローチャート、図６１は図６０のＳ２０３４のサブルーチン処理を示すフローチャート、図６２は図６１のＳ２１１４のサブルーチン処理を示すフローチャートである。図６３は本発明の第３実施形態における歩容生成装置の機能的構成を示すブロック図、図６４は第３実施形態におけるＺＭＰ許容範囲の設定例を示す図、図６５は第３実施形態における歩容生成装置のメインルーチン処理を示すフローチャート、図６６は図６５のＳ３５３６の処理を示すブロック図、図６７は図６６に示す上体水平位置摂動用モデルを説明するための図、図６８は図６６に示す上体姿勢角補正用摂動モデルの説明するための図、図６９は図６６に示す逆位相腕振り角補正用摂動モデルを説明するための図、図７０は図６６に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図である。図７１は本発明の第４実施形態における図６５のＳ３５３６の処理を示すブロック図、図７２は図７１に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図である。図７３は本発明の第５実施形態における歩容生成装置の機能的構成を示すブロック図、図７４は図７３に示す擬似順フルモデルの処理を示すブロック図である。図７５は本発明の第６実施形態における図６５のＳ３５３６の処理を示すブロック図である。図７６は本発明の第７実施形態における制御ユニットの機能的構成を示すブロック図、図７７は第７実施形態における歩容生成装置のメインルーチ���処理を示すフローチャート、図７８は図７７のＳ２３３４の処理を示すフローチャート、図７９は図７６に示す滑り判定部の処理を示すフローチャート、図８０〜図８２はそれぞれ図７９のＳ５２１０、Ｓ５２１２、Ｓ５２１４のサブルーチン処理を示すフローチャート、図８３は滑り判定部の判定結果と、許容範囲の低減率と、床反力許容範囲との例を示すグラフ、図８４は第４〜第６実施形態に関する変形態様の例を示すブロック図、図８５は第３実施形態に関する逆位相腕振り角補正用摂動モデルモーメント決定部の処理の変形態様の例（第８実施形態）を示すブロック図である。
【発明を実施するための最良の形態】  以下、添付図面を参照してこの発明の実施形態に係る脚式移動ロボットの制御装置を説明する。尚、脚式移動ロボットとしては２足移動ロボットを例にとる。
まず、図１〜図４７を参照して、本発明の脚式移動ロボットの制御装置に関連する参考例を説明しておく。後述する本発明の実施形態は、その機構的構成はこの参考例と同一であり、また、ロボットの歩容生成処理および制御処理の一部のみが当該参考例と相違するものである。従って、後述する実施形態の説明では、この参考例の説明をしばしば援用する。補足すると、図１と後述の図２、図３並びに図５〜図１２を参照して説明する事項は、後述の実施形態においても同一である。
図１は、この参考例に係る脚式移動ロボットとしての２足移動ロボットを全体的に示す概略図である。
図示の如く、２足移動ロボット（以下、ロボットという）１は上体（ロボット１の基体）３から下方に延設された左右一対の脚体（脚部リンク）２，２を備える。両脚体２，２は同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体３側から順に、股（腰部）の回旋（回転）用（上体３に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌ（符号Ｒ，Ｌはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ）と、股（腰部）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、股（腰部）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌと、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。
各脚体２の足首の２つの関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部には、各脚体２の先端部を構成する足平（足部）２２Ｒ（Ｌ）が取着されると共に、両脚体２，２の最上位には、各脚体２の股の３つの関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して前記上体３が取り付けられている。上体３の内部には、詳細を後述する制御ユニット６０などが格納される。なお、図１では図示の便宜上、制御ユニット６０を上体３の外部に記載している。
上記構成の各脚体２においては、股関節（あるいは腰関節）は関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）から構成され、膝関節は関節１６Ｒ（Ｌ）から構成され、足首関節は関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）から構成される。また股関節と膝関節とは大腿リンク２４Ｒ（Ｌ）で連結され、膝関節と足首関節とは下腿リンク２６Ｒ（Ｌ）で連結される。
上体３の上部の両側部には左右一対の腕体５，５が取り付けられると共に、上体３の上端部には頭部４が配置される。各腕体５は、３つの関節３０Ｒ（Ｌ），３２Ｒ（Ｌ），３４Ｒ（Ｌ）から構成された肩関節と、関節３６Ｒ（Ｌ）から構成された肘関節と、関節３８Ｒ（Ｌ）から構成された手首関節と、この手首関節に連結された手先部４０Ｒ（Ｌ）とを備えている。なお、頭部４は、本発明の要旨と直接的な関連を有しないため詳細な説明を省略する。
上記の構成により、各脚体２の足平２２Ｒ（Ｌ）は、上体３に対して６つの自由度を与えられている。そして、ロボット１の歩行等の移動中に、両脚体２，２を合わせて６＊２＝１２個（この明細書で「＊」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す）の関節を適宜な角度で駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行うことができる。これにより、ロボット１は任意に３次元空間を移動することができる。また、各腕体５は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。
図１に示す如く、各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下方には足平２２Ｒ（Ｌ）との間に公知の６軸力センサ５０が介装されている。該６軸力センサ５０は、各脚体２の足平２２Ｒ（Ｌ）の着地の有無、および各脚体２に作用する床反力（接地荷重）等を検出するためのものであり、該床反力の並進力の３方向成分Ｆｘ，Ｆｙ，Ｆｚ並びにモーメントの３方向成分Ｍｘ，Ｍｙ，Ｍｚの検出信号を制御ユニット６０に出力する。また、上体３には、Ｚ軸（鉛直方向（重力方向））に対する上体３の傾斜角およびその角速度、並びにＺ軸回りの上体３の回転角（ヨー角）およびその角速度を検出するための姿勢センサ５４が備えられ、その検出信号が該姿勢センサ５４から制御ユニット６０に出力される。この姿勢センサ５４は、図示を省略する３軸方向の加速度センサおよび３軸方向のジャイロセンサを備え、これらのセンサの検出信号が上体３の姿勢角（傾斜角およびヨー角）およびその角速度を検出するために用いられると共に、ロボット１の自己位置姿勢を推定するために用いられる。また、詳細構造の図示は省略するが、ロボット１の各関節には、それを駆動するための電動モータ６４（図３参照）と、その電動モータ６４の回転量（各関節の回転角）を検出するためのエンコーダ（ロータリエンコーダ）６５（図３参照）とが設けられ、該エンコーダ６５の検出信号が該エンコーダ６５から制御ユニット６０に出力される。
さらに、図１では図示を省略するが、ロボット１の適宜な位置にはジョイスティック（操作器）７３（図３参照）が設けられ、そのジョイスティック７３を操作することで、直進移動しているロボット１を旋回させるなど、ロボット１の歩容に対する要求を必要に応じて制御ユニット６０に入力できるように構成されている。
図２は本参考例における各脚体２の先端部分（各足平２２Ｒ（Ｌ）を含む）の基本構成を概略的に示す図である。同図に示すように、各足平２２Ｒ（Ｌ）の上方には、前記６軸力センサ５０との間にばね機構７０が装備されると共に、足底（各足平２２Ｒ（Ｌ）の底面）にはゴムなどからなる足底弾性体７１が貼られている。これらのばね機構７０及び足底弾性体７１によりコンプライアンス機構７２が構成されている。ばね機構７０は詳細は後述するが、足平２２Ｒ（Ｌ）の上面部に取り付けられた方形状のガイド部材（図示省略）と、足首関節１８Ｒ（Ｌ）（図２では足首関節２０Ｒ（Ｌ）を省略している）および６軸力センサ５０側に取り付けられ、前記ガイド部材に弾性材（ゴムやばね）を介して微動自在に収納されるピストン状部材（図示省略）とから構成されている。
図２に実線で表示された足平２２Ｒ（Ｌ）は、床反力を受けていないときの状態を示している。各脚体２が床反力を受けると、コンプライアンス機構７２のばね機構７０と足底弾性体７１とがたわみ、足平２２Ｒ（Ｌ）は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構７２の構造は、例えば本出願人が先に提案した特開平５−３０５５８４号公報に詳細に説明されている如く、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。
図３は制御ユニット６０の構成を示すブロック図である。該制御ユニット６０はマイクロコンピュータにより構成されており、ＣＰＵからなる第１の演算装置９０及び第２の演算装置９２、Ａ／Ｄ変換器８０、カウンタ８６、Ｄ／Ａ変換器９６、ＲＡＭ８４、ＲＯＭ９４、並びにこれらの間のデータ授受を行うバスライン８２を備えている。この制御ユニット６０では、各脚体２の６軸力センサ５０、姿勢センサ５４（加速度センサおよびレートジャイロセンサ）、ジョイスティック７３等の出力信号はＡ／Ｄ変換器８０でデジタル値に変換された後、バスライン８２を介してＲＡＭ８４に送られる。またロボット１の各関節のエンコーダ６５（ロータリーエンコーダ）の出力は、カウンタ８６を介してＲＡＭ８４に入力される。
前記第１の演算装置９０は後述の如く目標歩容を生成すると共に、関節角変位指令（各関節の変位角もしくは各電動モータ６４の回転角の指令値）を算出し、ＲＡＭ８４に送出する。また第２の演算装置９２はＲＡＭ８４から関節角変位指令と、前記エンコーダ６５の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してＤ／Ａ変換器９６とサーボアンプ６４ａとを介して各関節を駆動する電動モータ６４に出力する。
図４は、この参考例に係る脚式移動ロボットの制御装置の機能的構成を全体的に示すブロック図である。この図４中の「実ロボット」の部分以外の部分が制御ユニット６０が実行する処理機能（主として第１の演算装置９０及び第２の演算装置９２の機能）によって構成されるものである。なお、以下の説明では、脚体２および腕体５の左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。
以下説明すると、制御ユニット６０は、ロボット１の目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置１００を備えている。該歩容生成装置１００は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置１００が出力する目標歩容は、目標上体位置姿勢軌道（上体３の目標位置及び目標姿勢の軌道）、目標足平位置姿勢軌道（各足平２２の目標位置及び目標姿勢の軌道）、目標腕姿勢軌道（各腕体５の目標姿勢の軌道）、目標全床反力中心点（目標ＺＭＰ）軌道、目標全床反力軌道から構成される。なお、脚体２や腕体５以外に上体３に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、上記歩容における「軌道」は時間的変化のパターン（時系列パターン）を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はＺ軸（鉛直軸）に対するロール方向（Ｘ軸まわり）の上体３の傾斜角とピッチ方向（Ｙ軸まわり）の上体３の傾斜角とヨー方向（Ｚ軸まわり）の上体３の回転角（ヨー角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。また、上体姿勢のうち、鉛直方向に対する姿勢を上体姿勢傾斜もしくは上体姿勢傾斜角ということもある。
尚、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット１の運動に係わる歩容を総称的に「運動」という。また、各足平２２に作用する床反力（並進力及びモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点（全床反力の中心点の目標位置）を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分（鉛直軸（Ｚ軸）まわりのモーメント）を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分（水平軸（Ｘ軸及びＹ軸）回りのモーメント）は零になる。
尚、動力学的平衡条件を満足する歩容では、ロボット１の目標運動軌道から算出されるＺＭＰ（目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点）と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ＺＭＰ軌道を与えると言っても同じことである（詳細は、本願出願人によるＰＣＴ公開公報ＷＯ／０２／４０２２４等を参照）。
このような背景から、上記ＰＣＴ公開公報ＷＯ／０２／４０２２４の明細書では目標歩容を、次のように定義していた。
ａ）広義の目標歩容とは、１歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
ｂ）狭義の目標歩容とは、１歩の期間の目標運動軌道とそのＺＭＰ軌道との組である。
ｃ）一連の歩容は、いくつかの歩容がつながったものとする。
歩行においては、本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法によってロボット１の上体３の鉛直位置（上体高さ）が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が零になるようにロボット１の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、ＰＣＴ公開公報ＷＯ／０２／４０２２４の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ＺＭＰだけで十分であった。したがって、狭義の目標歩容の定義としては、上記のｂ）で十分であった。それに対し、本参考例で説明するロボット１の走行歩容（詳細は後述する）においては、床反力鉛直成分（並進床反力鉛直成分）も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット１の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のｂ’）を用いる。
ｂ’）狭義の目標歩容とは、１歩の期間の目標運動軌道と、その目標ＺＭＰ軌道と目標並進床反力鉛直成分軌道とを少なくとも含む目標床反力軌道との組である。
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は上記ｂ’）の狭義の目標歩容の意味で使用する。この場合、目標歩容の「１歩」は、ロボット１の片方の脚体２が着地してからもう一方の脚体２が着地するまでの意味で使用する。補足すると、本明細書の参考例および実施形態では、目標歩容は１歩の期間分の歩容の意味で使用するが、それは必ずしも１歩の期間分のものである必要はなく、複数歩分、あるいは１歩よりも短い（例えば半歩など）の期間分の歩容であってもよい。尚、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分（鉛直軸回り成分）は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、歩容における両脚支持期とは言うまでもなく、ロボット１がその自重を両脚体２，２で支持する期間、片脚支持期とはいずれか一方のみの脚体２でロボット１の自重を支持する期間、空中期とは両脚体２，２が床から離れている（空中に浮いている）期間を言う。片脚支持期においてロボット１の自重を支持しない側の脚体２を「遊脚」と呼ぶ。尚、本参考例で説明する走行歩容では、両脚支持期は無く、片脚支持期（着地期）と空中期とが交互に繰り返される。この場合、空中期では両脚体２，２とも、ロボット１の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体２、支持脚であった脚体２をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
図５に示す走行歩容を例にして、歩容生成装置１００が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平１０−８６０８１号公報にも記載されているので、以下では、特開平１０−８６０８１号公報に記載されていない内容を主に説明する。
まず、図５に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット１の左右いずれか一方のみの脚体２（支持脚）の足平２２が着地（接地）する片脚支持期と、両脚体２，２が空中に浮く空中期とが交互に繰り返される。図５の１番目の状態は片脚支持期の開始時（初期）の状態、２番目の状態は片脚支持期の中間時点の状態、３番目の状態は片脚支持期に続く空中期の開始時（片脚支持期の終了時）の状態、４番目の状態は空中期の中間時点の状態、５番目の状態は空中期の終了時（次の片脚支持期の開始時）の状態を示している。
この走行歩容では、ロボット１は、図５の１番目の状態で示すように、片脚支持期の開始時において支持脚（ロボット１の進行方向前側の脚体２）側の足平２２のかかとで着地する。続いて、図５の２番目の状態で示すように、ロボット１は、着地した足平２２（支持脚側の足平２２）の底面のほぼ全面を着地させた後、図５の３番目の状態で示すように、その支持脚側の足平２２（図５の３番目の状態におけるロボット１の進行方向後側の脚体２の足平２２）のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了すると共に空中期が開始する。尚、片脚支持期における遊脚は、図５の１番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図５の２番目及び３番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図５の４番目の状態で示す空中期を経た後、ロボット１は、遊脚（空中期の開始直前の片脚支持期で遊脚となっていた脚体２）の足平２２のかかとで着地し、次の片脚支持期が開始される。
図５の走行歩容を考慮しつつ、前記歩容生成装置１００が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置１００が目標歩容を生成するとき、遊脚側の足平２２の着地位置姿勢（着地予定位置姿勢）や着地時刻（着地予定時刻）等の目標歩容生成用の基本的な要求値（要求パラメータ）が、前記ジョイスティック７３の所要の操作等に応じて歩容生成装置１００に与えられる。そして、歩容生成装置１００は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置１００は、上記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ（歩容パラメータという）を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。
この場合、目標足平位置姿勢軌道（より詳しくは、足平の位置及び姿勢の空間的な各成分（Ｘ軸成分等）の目標軌道）は、例えば本出願人が特許第３２３３４５０号にて提案した有限時間整定フィルタを用いて各足平２２毎に生成される。この有限時間整定フィルタは、可変時定数の１次遅れフィルタ、すなわち、伝達関数が１／（１＋τｓ）の形で表されるフィルタ（τは可変の時定数。以下、このフィルタを単位フィルタという）を複数段（本参考例では３段以上）、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値（＞０）から減少されていき、最終的には、該残時間が０になる指定時刻にて、τの値が０になるように設定される。そして、有限時間整定フィルタには、前記指定値（より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量）に応じた高さのステップ入力が与えられる。このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を０もしくはほぼ０にすることができる。特に、単位フィルタを３段以上（３段でよい）、接続した場合には、有限時間整定フィルタの出力の変化加速度（変化速度の微分値）をも０もしくはほぼ０にすることができる。
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平２２の目標位置姿勢軌道である。
上述のように生成される目標足平位置姿勢軌道は、各足平２２の位置が、その初期接地状態（目標歩容の初期時刻の状態）から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を０またはほぼ０にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平２２の着地瞬間における対地速度（床に固定された支持脚座標系での各足平２２の位置の変化速度）が０またはほぼ０になる。したがって、走行歩容において同時に全脚体２，２が空中に存在する状態（空中期での状態）から着地しても、着地衝撃が小さくなる。
前記走行歩容においては、ロボット１に作用する重力によって空中期後半から上体３の鉛直速度は下向きになり、着地時でも下向きのままである。したがって、上記のように各足平２２の着地瞬間における対地速度が０またはほぼ０になるように目標足平位置姿勢軌道を生成すると共に、後述する如く動力学的平衡条件を満たすように上体３の目標位置姿勢軌道を生成したとき、着地直前において、上体３に対する遊脚側の足平２２の相対速度は、上向きになる。すなわち、走行歩容の着地瞬間では、ロボット１の目標歩容は遊脚側の脚体２２を上体３側に引っ込めながら着地するような歩容となる。言い換えれば、本参考例での目標歩容では、ロボット１は、着地瞬間において、遊脚側の足平２２の対地速度が０またはほぼ０になるように、上体３から見て該足平２２を引き上げるようにして着地する。これによって、着地衝撃は小さくなり、着地衝撃が過大になるのを防止するようにしている。
また、本参考例では、有限時間整定フィルタは、単位フィルタを３段以上（例えば３段）、直列に接続したものであるため、着地予定時刻までに各足平２２の速度（足平位置の変化速度）が０またはほぼ０になるだけでなく、各足平２２は、その加速度も着地予定時刻にて０またはほぼ０になって停止する。つまり、着地瞬間における対地加速度も０またはほぼ０になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット１の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、着地予定時刻にて各足平２２の対地速度を０またはほぼ０にする上では、有限時間整定フィルタの単位フィルタの段数は２段でもよいが、この場合には、着地予定時刻での各足平２２の加速度は一般には０にならない。
尚、足平姿勢に関しては、各足平２２が着地予定時刻にてその踵で着地した後、該足平２２の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平２２の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
また、本参考例では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の変化速度（足平位置の時間微分値）が０またはほぼ０になるように、さらには、該着地予定時刻での足平位置の変化加速度（変化速度の時間微分値）が０またはほぼ０になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平２２の底面のほぼ全面が床に設置する時刻にて、各足平２２の姿勢の変化速度、さらにはその変化加速度が０またはほぼ０になるように多項式などの関数が設定される。
目標床反力鉛直成分軌道は、例えば図６のように設定される。本参考例では、走行歩容における目標床反力鉛直成分軌道の形状（詳しくは片脚支持期での形状）は、台形状（床反力鉛直成分の増加側に凸の形状）に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ（床反力鉛直成分軌道パラメータ）が決定される。尚、走行歩容の空中期では、目標床反力鉛直成分は定常的に０に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように（値が不連続にならないように）設定するのが良い。これは床反力を制御する際のロボット１の関節の動作を滑らかにするためである。尚、「実質的に連続」というのは、アナログ的に連続な軌道（真の意味での連続な軌道）を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。
目標ＺＭＰ軌道は次のように設定される。図５の走行歩容においては、前記したように支持脚側足平２２のかかとで着地し、次にその支持脚側足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚側足平２２のかかとで着地する。したがって、片脚支持期での目標ＺＭＰ軌道は、図７の上段図に示すように、支持脚側足平２２のかかとを初期位置として、次に支持脚側足平２２の底面のほぼ全面が接地する期間において該足平２２の前後方向の中央に移動し、その後、離床時までに支持脚側足平２２のつまさきに移動するように設定される。ここで、図７の上段図は、Ｘ軸方向（前後方向）の目標ＺＭＰ軌道を示すものであり、図７の下段図はＹ軸方向（左右方向）の目標ＺＭＰ軌道を示すものである。尚、片脚支持期におけるＹ軸方向の目標ＺＭＰ軌道は、図７の下段図に示すように、Ｙ軸方向での支持脚側脚体２の足首関節の中心位置と同じ位置に設定される。
走行歩容では、さらに片脚支持期の終了後、両脚体２，２が床から離れ、床反力鉛直成分が０になる。床反力鉛直成分が０の時、すなわち空中期には、ロボット１の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット１に作用する重力と慣性力との合力のモーメントは０であるので、目標ＺＭＰは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が０である作用点」というＺＭＰの条件を満たす。言いかえれば、任意の点に目標ＺＭＰを設定しても、上記合力が目標ＺＭＰ回りに作用するモーメントの水平成分が０であるという動力学的平衡条件を満足する。したがって、目標ＺＭＰを不連続に設定しても構わない。例えば、空中期では、目標ＺＭＰを、離床時（片脚支持期の終了時）の目標ＺＭＰ位置から移動しないように設定し、空中期終端において、着地時の目標ＺＭＰ位置に不連続（ステップ状）に移動するように該目標ＺＭＰ軌道を設定しても構わない。しかし本参考例では、図７の上段図に示すように、空中期における目標ＺＭＰ軌道のＸ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側足平２２のつまさきから遊脚側足平２２のかかとの着地位置まで連続的に移動するようにした。また、図７の下段図に示すように、空中期における目標ＺＭＰ軌道のＹ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側脚体２の足首関節の中心のＹ軸方向位置から遊脚側脚体２の足首関節の中心のＹ軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ＺＭＰ軌道を連続（実質的に連続）にした。そして、後述するように、目標ＺＭＰまわりの重力と慣性力との合力のモーメント（鉛直成分を除く）が零になるように目標歩容を生成する（より具体的には目標上体位置姿勢軌道を調整する）ようにした。モデルの近似誤差を考慮すると、生成された歩容が滑らかになるようにするために、空中期においても目標ＺＭＰ軌道を連続（実質的に連続）にしておくのが望ましい。但し、本参考例で用いる後述の動力学モデルでは、目標ＺＭＰの位置によらずに、目標ＺＭＰ回りのモーメントの水平成分をある値（その値は本参考例では０であるが、後述の実施形態では必ずしも０ではない）にするような目標歩容を一義的に生成できるので、必ずしも目標ＺＭＰを連続にしておく必要はない。
尚、本参考例では、図７に示したような目標ＺＭＰ軌道の折れ点の位置や時刻が、ＺＭＰ軌道パラメータ（目標ＺＭＰ軌道を規定するパラメータ）として設定される。また、上記したＺＭＰ軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。
ＺＭＰ軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット１の接地面を含む最小の凸多角形（いわゆる支持多角形）の中央付近に目標ＺＭＰが存在する状態を安定余裕が高いと言う（詳細は特開平１６−８６０８１号公報を参照）。図７の目標ＺＭＰ軌道はこのような条件を満たすように設定したものである。
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。
本参考例では、歩容生成装置１００は、目標上体姿勢だけでなく、基準上体姿勢も生成する。この基準上体姿勢は、歩容に対する要求（歩容生成装置１００に対する行動計画部などの装置または外部（前記ジョイスティック７３等）からの要求）にそのまま従って生成される上体姿勢である。
目標上体姿勢（以降、「基準」が付いていない場合には、目標上体姿勢を表す）は、長期的には基準上体姿勢に追従するかまたは一致するように生成される。
目標上体姿勢は、歩行においては、本願出願人によるＰＣＴ公開公報ＷＯ／０２／４０２２４の明細書に記載した実施形態のごとく通常、常に基準上体姿勢に一致させておけば良い。ＰＣＴ公開公報ＷＯ／０２／４０２２４では、基準上体姿勢という概念は記載されていないが、目標上体姿勢パターンを、明示的かつ優先的に与えていたので、基準上体姿勢に目標上体姿勢が常に一致していることと同じことである。
しかし、走行など空中期がある歩容や低摩擦床面での歩行においては、単に上体水平加速度等を調整するだけでは、目標歩容の床反力水平成分と床反力モーメント鉛直成分とが許容範囲以内（あるいは摩擦限界以内）に存在するようにしつつ動力学的平衡条件を満足することができない。
そこで、本参考例においては、目標上体姿勢を必要に応じて基準上体姿勢から故意にずらすこととした。より具体的には、以下に説明する運動モードを複合的に発生させることにより、目標歩容の床反力水平成分や床反力モーメント鉛直成分が許容範囲以内（あるいは摩擦限界以内）に存在しつつ動力学的平衡条件を満足させるようにした。
図８のように、ロボット１のある運動状態から、上体水平加速度だけを摂動（微小変化）させると、ロボット１の全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生するロボット１の慣性力と重力との合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに（ロボット１の全体重心鉛直加速度を摂動させずに）、目標ＺＭＰまわりの床反力モーメント水平成分（水平軸まわり成分）と床反力水平成分とを摂動させる。このようにロボット１の上体水平加速度を摂動させる運動モードを上体並進モードと呼ぶ。
言いかえると、床反力鉛直成分を変化させずに、目標ＺＭＰまわりの床反力モーメント水平成分と床反力水平成分とを変化させる運動を上体並進モードと呼ぶ。尚、上体並進モードでは、床反力モーメント鉛直成分（鉛直軸まわり成分）も摂動するが、ここではこの点に注目しない。
この時の単位加速度当たりの床反力モーメント水平成分の変化をΔＭｐ、単位加速度当たりの床反力水平成分の変化をΔＦｐとする。図８に示す状況で上体３を前方に水平加速すると、ΔＭｐとΔＦｐは図８に示す矢印の向きに作用する。
感覚的に判り易くするために、運動によって発生する慣性力と重力との合力に釣り合う床反力を用いて表現したが、慣性力と重力との合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力とは、互いに大きさが同じで向きが逆になっている。
それに対し、図９のように、ロボット１のある運動状態から、ある点Ｐｒまわりに上体傾斜角加速度（上体３の傾斜角の角加速度）を摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量（鉛直軸まわり成分を除く）が摂動する。すなわち、点Ｐｒまわりの上体傾斜角加速度の摂動は、床反力鉛直成分と床反力水平成分とを摂動させずに、目標ＺＭＰまわりの床反力モーメント水平成分を摂動させる。このようにロボット１の上体傾斜角加速度を摂動させる運動モードを上体傾斜モードと呼ぶ。
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ＺＭＰまわりの床反力モーメント水平成分を変化させる運動を上体傾斜モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント水平成分の変化をΔＭｒ、単位角加速度当たりの床反力水平成分の変化をΔＦｒとする。ΔＦｒは零である。図９に示す状況で上体３が前傾するように上体傾斜角の角加速度を発生させると、ΔＭｒは図９に示す矢印の向きに作用する。
また、図１０のように、ロボット１のある運動状態から、ある点Ｐｑまわりに上体ヨー角加速度（上体３の鉛直軸まわりの回転角加速度）を摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。ところで、ロボット１の全体重心が摂動しなければ、角運動量鉛直成分の摂動は、作用点に依存しない。したがって、点Ｐｑまわりの上体ヨー角加速度の摂動は、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ＺＭＰまわりの床反力モーメント鉛直成分を摂動させる。このようにロボット１の上体ヨー角加速度を摂動させる運動モードを上体ヨー回転モードと呼ぶ。
言いかえると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を変化させずに、目標ＺＭＰまわりの床反力モーメント鉛直成分を変化させる上体運動を上体ヨー回転モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント鉛直成分の変化をΔＭｂｚ、単位角加速度当たりの床反力水平成分の変化をΔＦｂとする。ΔＦｂは零である。図１０に示す状況で上体３を矢印の向きに単位角加速度で回転させる（角加速度βｂ＝１で回転させる）と、ΔＭｂｚは図１０に示す矢印の向きに作用する。
尚、図１０に示す運動では、両腕体５，５の手先位置が支持脚座標系（床に固定された座標系）から見て変わらないように、上体３を回転させたが、上体３に対する腕体５の相対位置姿勢を変えずに、上体３と共に腕体５を回転させる運動を上体ヨー回転モードと定義しても良い。ただし、この場合には、後述する運動方程式に若干変更が必要である。
また、図１１（ａ），（ｂ）のように、ロボット１のある運動状態から、両腕体５，５の先端を互いに前後に逆方向に摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。以降、この運動モードを逆位相腕振りモードと呼ぶ。言い換えると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ＺＭＰまわりの床反力モーメント鉛直成分を摂動させる腕振り運動モードを逆位相腕振りモードと呼ぶ。
右腕体５Ｒを前側に単位量移動させ、左腕体５Ｌを後ろに単位量移動させる動作を、単位角度の逆位相腕振りと呼ぶ。図１１（ａ），（ｂ）は、逆位相腕振り角度がθａｚの状態を表す。
逆位相腕振りモードの単位角加速度当たりの床反力モーメント鉛直成分の変化をΔＭａｚ、単位角加速度当たりの床反力水平成分の変化をΔＦａとする。ΔＦａは零である。図１１（ａ），（ｂ）に示す状況で右腕体５Ｒを前側に加速し、左腕体５Ｌを後ろ側に加速する（角加速度βａ＞０で振る）と、図１１（ａ）に示す矢印の向き（鉛直軸の正の向き）に床反力モーメント鉛直成分Ｍａｚが作用する。
次に、本参考例に用いられるロボット１の動力学モデルについて説明する。本参考例では単純化された（近似された）以下に示す動力学モデルを用いる。ただし、以下に示す動力学モデルに関しては、キネマティクスモデル（関節、リンクの構造や寸法を表すモデルであり、言い換えると、関節変位とリンクの位置姿勢との関係を表すモデルである。）も必要である。
図１２は、本参考例に用いられるロボット１の動力学モデルである。図示の如く、この動力学モデルは、ロボット１の各脚体２にそれぞれ対応する２つの質点２ｍ，２ｍ、及び上体３に対応する質点３ｍからなる合計３質点と、イナーシャがあって質量のない４つのフライホイールＦＨｘ、ＦＨｙ、ＦＨｂｚ、ＦＨａｚとから構成されるモデルである。フライホイールＦＨｘ、ＦＨｙ、ＦＨｂｚ、ＦＨａｚは、それぞれＸ軸（前後方向軸）、Ｙ軸（左右方向軸）、Ｚ軸（鉛直軸）、Ｚ軸（鉛直軸）の回りに回転可能なものである。この動力学モデルでは、デカップルド、即ち、脚体２，２の動力学（各質点２ｍ，２ｍの動力学）と上体３の動力学（質点３ｍ及びフライホイールＦＨｘ、ＦＨｙおよびＦＨｂｚの動力学）と腕体５，５の動力学（フライホイールＦＨａｚの動力学）とが相互に非干渉に構成されると共に、ロボット１全体の動力学は、それらの線形結合で表される。また、さらに、上体３の運動と床反力との関係も、上体３の並進運動（上体並進モード）と床反力との関係、上体３の傾斜運動（上体傾斜モード）と床反力との関係、上体３のヨー回転運動（上体ヨー回転モード）と床反力との関係、並びに両腕体５，５の逆位相腕振り運動（逆位相腕振りモード）と床反力との関係に分離される。具体的には、上体質点３ｍの水平運動によって発生する床反力は、上体３の水平方向並進運動（上体並進モード）によって発生する床反力に対応し、フライホイールＦＨｘおよびＦＨｙの回転運動によって発生する床反力は、上体３の傾斜角の回転運動（上体傾斜モード）によって発生する床反力に対応する。なお、フライホイールＦＨｘの回転運動は、上体３の傾斜角のロール方向（Ｘ軸回り）の回転運動に対応し、フライホイールＦＨｙの回転運動は、上体３の傾斜角のピッチ方向（Ｙ軸回り）の回転運動に対応している。また、フライホイールＦＨｂｚの回転運動によって発生する床反力は、上体３のヨー回転運動（上体ヨー回転モード）によって発生する床反力に対応する。また、フライホイールＦＨａｚの回転運動によって発生する床反力は、逆位相腕振り（逆位相腕振りモード）によって発生する床反力に対応する。
尚、ロボット１の腕体の質量は上体３に含まれるものとし、上体質点３ｍは腕体５，５の質量を含む質量をもつ。
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。なお、各質点２ｍ，２ｍ，３ｍはそれが対応する部位の代表点であるか、あるいはその部位の位置姿勢から幾何学的に一義的に決定される点に相当する。例えば、支持脚側脚体２の質点２ｍの位置は、該脚体２の足平２２の底面の前記代表点から所定の距離だけ上方の点とする。
Ｚｓｕｐ：支持脚質点鉛直位置
Ｚｓｗｇ：遊脚質点鉛直位置
Ｚｂ：上体質点鉛直位置（上体鉛直位置とは一般的には異なる。）
ＺＧｔｏｔａｌ：全体重心鉛直位置
Ｘｓｕｐ：支持脚質点Ｘ位置
Ｙｓｕｐ：支持脚質点Ｙ位置
Ｘｓｗｇ：遊脚質点Ｘ位置
Ｙｓｗｇ：遊脚質点Ｙ位置
Ｘｂ：上体質点Ｘ位置（上体質点位置は、前記点Ｐｒから上体の前後方向にある所定の距離だけオフセットした点である。オフセットは、直立時などにおいて、厳密モデルの重心位置と、本動力学モデルの重心位置がなるべく一致するように、決定される。上体水平位置とは一般的には異なる。）
Ｙｂ：上体質点Ｙ位置
ＸＧｔｏｔａｌ：全体重心水平Ｘ位置
ＹＧｔｏｔａｌ：全体重心水平Ｙ位置
θｂｘ：鉛直方向に対するＸ軸回りの上体傾斜角
θｂｙ：鉛直方向に対するＹ軸回りの上体傾斜角
θｂｚ：上体ヨー回転角
θａｚ：逆位相腕振り角
ｍｂ：上体質点質量
ｍｓｕｐ：支持脚質点質量
ｍｓｗｇ：遊脚質点質量
ｍｔｏｔａｌ：ロボット総質量（＝ｍｔｏｔａｌ＋ｍｓｕｐ＋ｍｓｗｇ）
Ｊ：上体慣性モーメント（上体傾斜モードにおける等価慣性モーメントである。すなわち、ＦＨｘおよびＦＨｙの慣性モーメントである。実ロボット１の上体３部位の慣性モーメントとは一般的には一致しない。）
Ｊｂｚ：鉛直軸まわり上体慣性モーメント（上体ヨー回転モードにおける等価慣性モーメントである。実ロボット１の上体３部位の慣性モーメントとは一般的には一致しない。）
Ｊａｚ：腕振り鉛直軸まわり慣性モーメント（スピンキャンセルのための逆位相腕振りにおける等価慣性モーメントである。すなわち、ＦＨｚの慣性モーメントである。）
Ｆｘ：床反力Ｘ成分（詳しくは並進床反力の前後方向（Ｘ軸）成分）
Ｆｙ：床反力Ｙ成分（詳しくは並進床反力の左右方向（Ｙ軸）成分）
Ｆｚ：床反力鉛直成分（詳しくは並進床反力の鉛直方向（Ｚ軸）成分。
本参考例では、これは目標並進床反力鉛直成分に等しい）
Ｍｘ：目標ＺＭＰまわりの床反力モーメントＸ成分（詳しくは床反力モーメントの前後軸（Ｘ軸）まわり成分）
Ｍｙ：目標ＺＭＰまわりの床反力モーメントＹ成分（詳しくは床反力モーメントの左右軸（Ｙ軸）まわり成分）
Ｍｚ：目標ＺＭＰまわりの床反力モーメントＺ成分（詳しくは床反力モーメントの鉛直軸（Ｚ軸）まわり成分）
なお、各質点２ｍ，３ｍのＸ位置、Ｙ位置はそれぞれ前後方向（Ｘ軸方向）の位置、左右方向（Ｙ軸方向）の位置を意味している。また、本参考例では、各脚体２の質点２ｍの位置と、その脚体２の足平２２の位置（足平２２のあらかじめ定めた代表点の位置）との位置関係はあらかじめ定められており、一方の位置が決まれば、他方の位置は一義的に定まるものとされている。また、上体質点３ｍと、上体３の位置（上体３のあらかじめ定められた代表点の位置）との位置関係は、上体３の姿勢角（以降、上体に関しては、姿勢角とは、傾斜角とヨー角を意味するものとする。）に応じてあらかじめ定められており、一方の位置と姿勢角とが決まれば、他方の位置は一義的に定まるものとされている。
また、任意の変数Ｘに対して、ｄＸ／ｄｔはＸの１階微分を表わし、ｄ２Ｘ／ｄｔ２はＸの２階微分を表わす。したがって、変数Ｘが変位ならば、ｄＸ／ｄｔは速度、ｄ２Ｘ／ｄｔ２は加速度を意味する。ｇは重力加速度定数を示す。ここでは、ｇは正の値とする。
上記動力学モデルの運動方程式（動力学的平衡条件を表す式）は、式０１、式０２ｘ、式０２ｙ、式０３ｘ、式０３ｙ、式０３ｚで表される。
2005000534.tif 000003
2005000534.tif 000004
また、ロボット全体重心位置には次の関係式が成立する。
2005000534.tif 000005
2005000534.tif 000006
以下に上記動力学モデルと前記ΔＦｐ、ΔＭｐ、ΔＦｒ、ΔＭｒの関係を示す。
前記ΔＦｐは、式０２ｘまたは式０２ｙにおいて、ｄ２Ｘｂ／ｄｔ２またはｄ２Ｙｂ／ｄｔ２を単位量だけ摂動させたときのＦｘまたはＦｙの摂動量であるから、次式によって求められる。
ΔＦｐ＝ｍｂ          …式０６
すなわち、上体並進モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力水平成分の変化ΔＦｐは、上記動力学モデルの上体質点３ｍの質量に相当する。
前記ΔＭｐは、式０３ｙまたは式０３ｘにおいて、ｄ２Ｘｂ／ｄｔ２またはｄ２Ｙｂ／ｄｔ２を単位量だけ摂動させたときのＭｙまたはＭｘの摂動量であるから、次式によって求められる。
ΔＭｐ＝ｍｂ＊（Ｚｂ−Ｚｚｍｐ）          …式０７
すなわち、上体並進モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力モーメント水平成分の変化ΔＭｐは、上記動力学モデルの上体質点質量に、上体質点３ｍの目標ＺＭＰからの高さ（鉛直位置）を乗じたものになる。このときの上体質点３ｍ及び目標ＺＭＰの位置と、上体質点３ｍの運動との関係は、上体質点３ｍを倒立振子質点、目標ＺＭＰを倒立振子支点に対応づけたときの倒立振子の挙動に相当する。なお、Ｙ軸方向のΔＭｐは、より正確には、式０７の右辺の符号を反転させたものである。
前記ΔＦｒは、式０２ｘまたは式０２ｙにおいて、ｄ２θｂｙ／ｄｔ２を単位量だけ摂動させたときのＦｘまたはＦｙの摂動量であるから、次式によって求められる。
ΔＦｒ＝０          …式０８
すなわち、上体傾斜モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力水平成分の変化ΔＦｒは、０である。
前記ΔＭｒは、式０３ｘまたは式０３ｙにおいて、ｄ２θｂｘ／ｄｔ２またはｄ２θｂｙ／ｄｔ２を単位量だけ摂動させたときのＭｘまたはＭｙの摂動量であるから、次式によって求められる。
ΔＭｒ＝Ｊ          …式０９
すなわち、上体傾斜モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力モーメント水平成分の変化ΔＭｒは、水平軸フライホイール（ＦＨｘおよびＦｈｙ）の慣性モーメントに相当する。
前記ΔＭｂｚは、式０３ｚにおいて、ｄ２θｂｚ／ｄｔ２を単位量だけ摂動させたときのＭｚの摂動量であるから、次式によって求められる。
ΔＭｂｚ＝Ｊｂｚ          …式０９ｂ
すなわち、上体ヨー回転モードの単位加速度当たりの床反力モーメント成分の変化ΔＭｂｚは、上体ヨー回転に対応するフライホイールＦＨｂｚの慣性モーメントに相当する。
前記ΔＭａｚは、式０３ｚにおいて、ｄ２θａｚ／ｄｔ２を単位量だけ摂動させたときのＭｚの摂動量であるから、次式によって求められる。
ΔＭａｚ＝Ｊａｚ          …式０９ａ
すなわち、逆位相腕振りの単位角加速度当たりの床反力モーメント成分の変化ΔＭａｚは、腕振りに対応するフライホイールＦＨａｚの慣性モーメントに相当する。
本参考例における歩容生成装置１００は、ロボット１の片方の脚体２が着地してから他方の脚体２が着地するまでの１歩分の目標歩容（前記狭義の意味での目標歩容）を単位として、その１歩分の目標歩容を順番に生成する。従って、本参考例で生成する図５の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時（次の片脚支持期の開始時）までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置１００が今回歩容を新たに生成するとき、該歩容生成装置１００には、ロボット１の２歩先までの遊脚側足平２２の着地予定位置姿勢、着地予定時刻の要求値（要求）が歩容に対する要求パラメータとして入力される（あるいは歩容生成装置１００が記憶装置から要求パラメータを読み込む）。そして、歩容生成装置１００は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。
以下に図５の走行歩容を生成することを例にして、本参考例における歩容生成装置１００の歩容生成処理の詳細を図１３〜図４６を参照しつつ説明する。図１３は、その歩容生成装置１００が実行する歩容生成処理のメインルーチンを示すフローチャート（構造化フローチャート）である。
まずＳ０１０において時刻ｔを０に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置１００の起動時等に行なわれる。次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図１３のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。
次いで、Ｓ０１６に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはＳ０１８に進むと共に、切り替わり目でないときはＳ０３０に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
Ｓ０１８に進むときは時刻ｔが０に初期化され、次いでＳ０２０に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本参考例では、歩容生成装置１００にジョイスティック７３等から与えらる要求パラメータは、２歩先までの遊脚側足平２２の着地予定位置姿勢（足平２２が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢）、着地予定時刻の要求値を含んでおり、その１歩目の要求値、２歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時（前記Ｓ０１６の歩容の切り替わり目）以前に歩容生成装置１００に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける１歩目の遊脚側足平２２（今回歩容での遊脚側足平２２）の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。
例えば図１６を参照して、今回歩容（１歩目）に係わる遊脚側足平２２（図では２２Ｌ）の着地予定位置姿勢の要求値が、今回歩容の支持脚側足平２２（図では２２Ｒ）の着地位置姿勢に対して、今回歩容支持脚座標系のＸ軸方向（今回歩容の支持脚側足平２２Ｒの前後方向）及びＹ軸方向（今回歩容の支持脚側足平２２Ｒの左右方向）に、それぞれｘｎｅｘｔ、ｙｎｅｘｔだけ移動し、且つＺ軸回り（鉛直軸回り）にθｚｎｅｘｔだけ回転させた位置姿勢であるとする。ここで、支持脚座標系は、支持脚側足平２２を水平姿勢（より一般的には床面に平行な姿勢）にして該支持脚側足平２２の底面のほぼ全面を床面に接触（密着）させた状態において、該支持脚側脚体２の足首中心から床面に延ばした垂線が該床面と交わる点（この点は、本参考例の例では支持脚側足平２２の底面のほぼ全面を床面に接触させた状態では、該足平２２の代表点と合致する）を原点とし、その原点を通る水平面をＸＹ平面とするグローバル座標系（床に固定された座標系）である。この場合、Ｘ軸方向、Ｙ軸方向は、それぞれ支持脚側足平２２の前後方向、左右方向である。尚、支持脚座標系の原点は、必ずしも支持脚側足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の代表点（足平２２の位置を代表する点）に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
このとき、次回歩容支持脚座標系は、図示のように今回歩容の遊脚側足平２２Ｌの着地予定位置姿勢の要求値に従って該足平２２を着地させた場合（足平２２の代表点を着地予定位置の要求値に一致させ、且つ、足平２２の姿勢（向き）を着地予定姿勢の要求値に一致させた場合）における該足平２２Ｌの代表点（より詳しくは該代表点に合致する床上の点）を原点とし、該原点を通る水平面内における該足平２２Ｌの前後方向、左右方向をそれぞれＸ’軸方向、Ｙ’軸方向とする座標系である。
上記と同様に、２歩目の遊脚側足平２２の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系（図１６のＸ”Ｙ”座標を参照）が定まる。また、今回歩容周期は、今回歩容の支持脚側足平２２の着地予定時刻（要求値）から、１歩目（今回歩容）の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まり、次回歩容周期は、１歩目の遊脚側足平２２の着地予定時刻（要求値）から２歩目の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まる。
尚、前記要求パラメータは、本参考例ではジョイスティック７３の所要の操作によって歩容生成装置１００に入力されるものであるが、あらかじめ該要求パラメータあるいはこれに対応する上記の支持脚座標系の位置姿勢及び歩容周期をロボット１の移動スケジュールとして記憶しておいても良い。あるいは、ジョイスティック７３などの操縦装置からの指令（要求）とそのときまでのロボットの１の移動履歴とを基に前記次回及び次次回歩容支持脚座標系、並びに今回及び次回歩容周期を決定しても良い。
次いでＳ０２２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、基準とする腕姿勢軌道を規定する基準腕姿勢軌道パラメータ、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を規定するパラメータも歩容パラメータに含まれる。
尚、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界（本参考例では１歩毎の歩容の境界）においてロボット１の運動状態（足平位置姿勢、上体位置姿勢等の状態）に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。
周期的歩容である定常旋回歩容は、本参考例では、ロボット１の２歩分の歩容、すなわち今回歩容に続く第１旋回歩容と該第１旋回歩容に続く第２旋回歩容とからなる歩容を該定常旋回歩容の１周期分の歩容として、その１周期分の歩容を繰り返す歩容である。尚、ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。また、生成する目標歩容が前記図５の走行歩容であると、その目標歩容の今回歩容は、片脚支持期及び空中期を有する走行歩容であるので、定常旋回歩容の第１旋回歩容及び第２旋回歩容は、いずれも今回歩容と同様に片脚支持期と空中期とを有する歩容である。つまり、第１旋回歩容及び第２旋回歩容の基本的な歩容形態は今回歩容と同一である。
定常旋回歩容について補足すると、２足移動ロボットでは、定常旋回歩容の１周期分は、前記した狭義の意味での歩容が、少なくとも２歩分、必要である。そして、３歩以上の歩容を１周期分の歩容とする複雑な定常旋回歩容を設定することも可能である。但し、定常旋回歩容は、後述の如く、今回歩容の終端（終了時刻）における発散成分（詳細は後述する）を決定するためだけに用いられる。このため、３歩以上の歩容を１周期とする定常旋回歩容を用いることは、歩容生成の処理が煩雑となるにも関わらず、効果は少ない。そこで、本参考例での定常旋回歩容の１周期分の歩容を２歩分の歩容（第１及び第２旋回歩容）により構成するようにしている。尚、３足以上の脚式移動ロボットにあっては、それに応じて定常旋回歩容を定義するに足る歩容数が増加する。以下では、説明の便宜上、複数の狭義の歩容（本参考例では２歩分の歩容）から成る定常旋回歩容を１歩の歩容とみなす。
定常旋回歩容は、歩容生成装置１００で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット１の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置１００からそのまま出力されるものではない。
尚、「発散」とは、図１４に示すように、２足移動ロボット１の上体３の位置が両足平２２，２２の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、２足移動ロボット１の上体３の位置が両足平２２，２２の位置（より具体的には、支持脚側足平２２の接地面に設定されたグローバル座標系（支持脚座標系）の原点）からかけ離れていく具合を表す数値である。
本参考例では、目標歩容が、前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。ただし、継続的な歩容の代表例である定常歩容（歩容の軌道の不連続を発生することなく、同じパターンの歩容を繰り返すことができる周期的歩容であり、原理上、無限回繰り返しても発散しない歩容）の初期発散成分（定常歩容の初期時刻での発散成分）であっても、単純に０ではなく、定常歩容のパラメータが変われば、その初期発散成分も変わる。すなわち、歩き方あるいは走り方等の歩容形態によって、適切な発散成分が変わる。そこで、本参考例では、これから生成しようとする今回歩容の後に続く定常歩容が前記今回歩容に係わる要求パラメータに応じて設定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる（より一般的には、今回歩容を定常歩容に連続させもしくは近づける）ように、今回歩容を生成する。これのような歩容生成の基本的な指針は本出願人が先に提案したＰＣＴ公開公報ＷＯ／０２／４０２２４のものと同様である。
本発明の参考例では、ＰＣＴ公開公報ＷＯ／０２／４０２２４の第１実施形態で用いたような線形な３質点動力学モデルを用いていないが、次式で定義される発散成分および収束成分の概念は、図１２に示したモデルのような非線形な動力学モデルの挙動の摂動分に対しても、近似的に十分な精度で適用することができる。
発散成分＝上体質点水平位置＋上体質点水平速度／ω０
…式１０
収束成分＝上体質点水平位置−上体質点水平速度／ω０’
…式１１
ただし、ここでの上体質点水平位置は、図１２に示す前記動力学モデルにおいては、上体質点水平位置Ｘｂを表す。
また、ω０、ω０’はある所定の値である。これらのω０、ω０’値はほぼ同じ値であるが、厳密には一致しない。そして、走行時では、ＰＣＴ公開公報ＷＯ／０２／４０２２４の歩行歩容生成時の値に対して若干変更する必要がある。
発散成分および収束成分に関するその他の詳細は、ＰＣＴ公開公報ＷＯ／０２／４０２２４に記述されているので、ここではこれ以上言及しない。
本参考例においては、ＰＣＴ公開公報ＷＯ／０２／４０２２４に示した方式に加え、さらに、後述するように、目標床反力鉛直成分軌道を規定する歩容パラメータを設定し、この目標床反力鉛直成分を動力学的に満足するようにロボット１の全体重心鉛直位置を決定する。この場合、床反力鉛直成分の２階積分値がロボット１の全体重心鉛直位置を規定するものになるので、目標床反力鉛直成分の設定が悪いと、ロボット１の全体重心鉛直位置もしくは上体鉛直位置が高くなり過ぎたり低くなり過ぎたりする。したがって、目標床反力鉛直成分の設定方法も重要な課題である。しかし、床反力鉛直成分と上体鉛直位置との関係は、ＺＭＰと上体水平位置との関係に似ているので、上体水平位置速度を適切にするための目標ＺＭＰ決定手法の一部を、以下の本参考例に示すように、少し変更するだけで、上体鉛直位置速度を適切にするための目標床反力鉛直成分の決定手法に適用することができる。
本題に戻り、Ｓ０２２では、図１５に示すフローチャートに従って、以下の処理が行われる。
まず、Ｓ１００において、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に具体的な設定方法を図１６を参照して説明する。尚、以降の説明では、支持脚側の脚体２の足平２２を支持脚足平と称し、遊脚側の脚体２の足平２２を遊脚足平を称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻もしくはそれらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第１旋回歩容および第２旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平２２は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢（＝前回歩容終端遊脚足平位置姿勢）から、前記要求パラメータにおける２歩目の遊脚側足平２２の着地予定位置姿勢の要求値（今回歩容の支持脚足平２２の次回歩容における着地予定位置姿勢の要求値）もしくは該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（詳しくは次回歩容支持脚座標系から見た軌道）を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
尚、次回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平２２を接地させたまま、つま先を下げるように該足平２２を水平姿勢までピッチ方向に所定角度回転させたときの該足平の位置姿勢が次次回歩容支持脚座標系の位置姿勢に合致するように決定される。換言すれば、次回歩容終端遊脚足平位置姿勢は、前記要求パラメータにおける２歩目の遊脚側足平２２の着地位置姿勢の要求値から、該足平２２をすべらないようは接地させたまま、つま先を持ち上げるように該足平２２をピッチ方向に所定角度回転させた状態（つま先を上げてかかとを着地させた状態）での該足平２２の位置姿勢である。
また、第１旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、前記次回歩容終端遊脚足平位置姿勢の場合と同様、前記次回歩容支持脚座標系もしくはこれに対応する前記要求パラメータの１歩目（今回歩容）の遊脚着地予定位置姿勢の要求値に応じて定まるものである。すなわち、該今回歩容終端遊脚足平位置姿勢は、その位置姿勢から、足平２２を接地させたまま、つま先を下げるように該足平２２を回転させて該足平２２の底面のほぼ全面を床面に接地させたときの該足平の代表点が次回歩容支持脚座標系の原点に合致するように決定される。
第１旋回歩容終端遊脚足平位置姿勢は、今回歩容終端遊脚足平位置姿勢や次回歩容終端遊脚足平位置姿勢の決定手法と同様に、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に基づいて決定される。より具体的には、第１旋回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平２２を接地させたまま、すべらないように該足平２２を水平姿勢まで所定角度回転させたときの足平位置姿勢が、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に合致するように設定される。
第１旋回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、第１旋回歩容支持脚足平着地予定位置姿勢が設定される。第１旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢に基づいて設定される。より具体的には、第１旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢である。なお、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と次次次回歩容支持脚座標系との相対的位置姿勢関係が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように設定される。
第１旋回歩容終端支持脚足平位置姿勢は、第１旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第１旋回歩容初期支持脚足平位置姿勢から、前記第１旋回歩容支持脚足平着地予定位置姿勢に至る足平位置姿勢軌道（より詳しくは次回歩容支持脚座標系から見た軌道）を、第１旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
第２旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢とされる。第２旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢とされる。
第２旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第２旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
第１旋回歩容および第２旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第１旋回歩容及び第２旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。尚、今回歩容、第１旋回歩容および第２旋回歩容の上記以外の運動パラメータ（両脚支持期時間などの時間パラメータを含む）は、上記決定されたパラメータに応じて、歩容の条件（アクチュエータの速度が許容範囲に入っているか、可動角を超えていないか、床などと干渉していないかなど）を満足するように適宜決定する。
次に、Ｓ１０２に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期（第１旋回歩容の初期）と終端（第２旋回歩容の終端）とでつながるように（定常歩容の初期、終端での基準上体姿勢の姿勢角及びその角速度が一致するように）に設定されている限り、一定姿勢である必要はないが、本参考例では理解を容易にするため、基準上体姿勢のうちの傾斜角（鉛直方向に対する傾斜角）に係わる姿勢は、直立姿勢（鉛直姿勢）に設定される。つまり、本参考例では、上体３の傾斜角に関する基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本参考例では、基準上体姿勢のうちの傾斜角の角速度及び角加速度は０である。基準上体姿勢のうちのヨー角軌道（以降、基準ヨー角軌道とも呼ぶ）θｂｚは、例えば一定角速度（定常歩容の平均旋回速度）の運動にすれば良い。あるいは、後述の基準逆位相腕振り軌道の例（図１８）のようにサイン波状にしても良い。ただし、定常歩容を繰り返した時に基準ヨー角およびその角速度が連続となるように設定する。
尚、本参考例では、目標上体姿勢のうちのヨー角軌道（以降、目標ヨー角軌道とも呼ぶ）は、基準ヨー角軌道に一致させるものとする。
次に、Ｓ１０４に進み、基準腕姿勢軌道パラメータが決定される。具体的には、両腕体５，５の全体の重心位置（上体３に対する相対的な重心位置）、左右の手先（両腕体５，５の先端）の左右方向の間隔、および逆位相腕振り角に関するパラメータが決定される。基準逆位相腕振り角は、たとえば図１７のように左旋回する場合には、図１８のように設定すれば良い。図１８のように、基準逆位相腕振り角θａｚｒｅｆは、定常歩容を繰り返した時に歩容の境界（第２旋回歩容の終端と次の第１旋回歩容の境界）において逆位相腕振り角および角速度が共に連続になり、かつ第１旋回歩容初期における支持脚と逆位相腕振り角の相対関係が、次の第１旋回歩容初期における支持脚と逆位相腕振り角の相対関係に一致するように設定される。すなわち、第１旋回歩容の初期逆位相腕振り角速度と第２旋回歩容の終端逆位相腕振り角速度が一致し、第２旋回歩容の終端逆位相腕振り角は、定常歩容の旋回角（第１旋回歩容と第２旋回歩容の旋回角の和）に第１旋回歩容初期逆位相腕振り角を加えた値に設定される。図１８では基準逆位相腕振り角θａｚｒｅｆをサイン波状の波形としたが、一定角速度に設定しても良い。あるいは、支持脚のヨー角と遊脚のヨー角の平均の値としても良い。
尚、本参考例では、目標腕姿勢の両腕体５，５の全体の重心位置（上体３に対する相対位置）は、上体３に対して一定に維持されるように設定される。
次に、Ｓ１０６に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第１旋回歩容および第２旋回歩容のいずれにおいても図６のように実質的に連続な（値がステップ状に飛ばない）ものとなるように床反力鉛直成分軌道パラメータが設定される。すなわち、定常旋回歩容の目標床反力鉛直成分軌道は図１９のようなパターンで設定される。そのパターンでは、第１旋回歩容及び第２旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が０に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ（ピーク値）が床反力鉛直成分軌道パラメータとして設定される。
この床反力鉛直成分軌道パラメータの設定に際しては、床反力鉛直成分の歩容全期間（第１旋回歩容と第２旋回歩容両方の期間を合わせた期間で定常歩容の１周期の期間）における平均値をロボット１の自重と一致させる。すなわち、床反力鉛直成分の平均値がロボット１に作用する重力と同じ大きさで反対向きになるようにする。
上記のごとく床反力鉛直成分軌道を設定することは、定常歩容の条件を満たすために必要である。定常歩容の条件とは、支持脚座標系（支持脚側足平２２の接地面に設定された座標系）から見た歩容のあらゆる状態変数（ロボット１の各部の位置、姿勢、速度等）の初期状態（第１旋回歩容の初期状態）と次の支持脚座標系（次の第１旋回歩容の支持脚座標系）から見た歩容の終端状態（第２旋回歩容の終端状態）が一致していることである（以下、この条件を定常歩容の境界条件ということがある）。したがって、定常歩容終端におけるロボット１の全体重心鉛直速度と定常歩容初期における全体重心鉛直速度との差（詳細には、第２旋回歩容終端の全体重心鉛直速度と第１旋回歩容初期の全体重心鉛直速度との差）も零でなければならない。上記差は床反力鉛直成分と重力との差の積分値（１階積分値）であるから、上記差を零にするためには、上記のごとく床反力鉛直成分軌道を設定する必要がある。
尚、本参考例では、床反力鉛直成分の第１旋回歩容、第２旋回歩容それぞれの期間における平均値をロボット１の自重と一致させるようにした。より具体的には、例えば第１旋回歩容及び第２旋回歩容の歩容周期に応じて各旋回歩容における床反力鉛直成分軌道の台形部分の折れ点の時刻を設定した上で、その台形部分の高さを、床反力鉛直成分の第１旋回歩容、第２旋回歩容それぞれの期間における平均値がロボット１の自重と一致するように決定した（台形の高さを未知数として、上記平均値及び自重の一致条件を表す方程式を解くことで台形の高さを求める）。
こうすることにより、第１旋回歩容終端の全体重心鉛直速度と第１旋回歩容初期の全体重心鉛直速度との差も０、第２旋回歩容終端の全体重心鉛直速度と第２旋回歩容初期の全体重心鉛直速度との差も０になる。ただし、このようにする必然性はない。例えば、第１旋回歩容と第２旋回歩容との境界あたりで上体鉛直位置が高くなり過ぎたり低くなり過ぎたりして無理な姿勢になりそうな場合には、各旋回歩容で上記平均値及び自重を一致させた状態から各旋回歩容の床反力鉛直成分軌道の台形の高さ等を修正するようにしてもよい。
次に、Ｓ１０８に進み、上記のごとく図１９のように設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］（より詳しくはこれを規定するパラメータ）が図２０のように設定される。図２０の負側の折れ線が床反力水平成分許容下限値Ｆｘｍｉｎ、正側の折れ線が床反力水平成分許容上限値Ｆｘｍａｘを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力水平成分は、床と足平２２との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット１が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平２２との間の摩擦係数をμとすると、Ｆｘｍｉｎは、常に−μ＊床反力鉛直成分以上に、Ｆｘｍａｘはμ＊床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、ｋａは１より小さい正の定数である。
Ｆｘｍｉｎ＝−ｋａ＊μ＊床反力鉛直成分
Ｆｘｍａｘ＝  ｋａ＊μ＊床反力鉛直成分
…式１２
図２０の床反力水平成分許容範囲は、式１２にしたがって設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図２０の台形波形などの折れ点での値と時刻を設定してもよいが、式１２により床反力水平成分許容範囲を決定するときには、単に式１２における（ｋａ＊μ）の値をパラメータとして設定するだけでも良い。
尚、上記条件（目標歩容の床反力水平成分を常に摩擦限界以内にするという条件）を満足しているならば、他の設定方法で床反力水平成分許容範囲を設定するようにしても構わない。
次に、Ｓ１０９に進み、上記のごとく図１９のように設定された床反力鉛直成分軌道などに応じて、床反力モーメント鉛直成分の許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］（より詳しくはこれを規定するパラメータ）が図２１のように設定される。図２１の負側の折れ線が床反力モーメント鉛直成分許容下限値Ｍｚｍｉｎ、正側の折れ線が床反力モーメント鉛直成分許容上限値Ｍｚｍａｘを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力モーメント鉛直成分は、床と足平２２との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット１が移動した時にスピンしないようにするためには、目標歩容の床反力モーメント鉛直成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力モーメント鉛直成分許容範囲を設定し、後述するように、目標歩容の床反力モーメント鉛直成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平２２との間の摩擦係数をμ、モーメント鉛直成分を発生するための床と足平２２との間の接触面の有効半径（あるいは床と足平２２との間の接触面の目標ＺＭＰまわりの断面２次モーメントの平方根）をｒとすると、Ｍｚｍｉｎは、常に−μ＊ｒ＊床反力鉛直成分以上に、Ｍｚｍａｘはμ＊ｒ＊床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、ｋａは１より小さい正の定数である。
Ｍｚｘｍｉｎ＝−ｋａ＊μ＊ｒ＊床反力鉛直成分
Ｍｚｍａｘ＝  ｋａ＊μ＊ｒ＊床反力鉛直成分
…式１０１２
図２１の床反力モーメント鉛直成分許容範囲は、式１０１２にしたがって設定した例である。床反力モーメント鉛直成分許容範囲を規定するパラメータとして、図２１の台形波形などの折れ点での値と時刻を設定してもよいが、式１０１２により床反力モーメント鉛直成分許容範囲を決定するときには、単に式１０１２における（ｋａ＊μ）の値をパラメータとして設定するだけでも良い。ｒは、各瞬間において目標ＺＭＰと接地面から算出するのが良いが、定数としても構わない。
尚、上記条件（目標歩容の床反力モーメント鉛直成分を常に摩擦限界以内にするという条件）を満足しているならば、他の設定方法で床反力モーメント鉛直成分許容範囲を設定するようにしても構わない。
さらには、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を独立に設定するのではなく、床反力水平成分と床反力鉛直成分モーメントの組み合わせの許容範囲を設定するようにしても良い。なぜなら、床反力水平成分が大きくなると、床反力モーメント鉛直成分の許容範囲が狭くなり、また、床反力モーメント鉛直成分が大きくなると、床反力水平成分の許容範囲が狭くなるからである。
次に、Ｓ１１０に進み、第１旋回歩容および第２旋回歩容を合わせた定常歩容のＺＭＰ軌道を規定するＺＭＰ軌道パラメータが設定される。この場合、目標ＺＭＰ軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。
さらに詳細には、図５の走行歩容においては、支持脚足平２２のかかとで着地した後、しばらくして該支持脚足平２２の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平２２のつま先だけが接地する。そして、次に支持脚足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚足平２２のかかとで着地する。また、目標ＺＭＰは接地面内に存在しなければならない。そこで、本参考例では、定常歩容の第１旋回歩容及び第２旋回歩容のそれぞれの目標ＺＭＰのＸ軸方向の位置は、前記図７の上段図に示したように、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ＺＭＰは支持脚足平２２の中央に移動し、該足平２２がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平２２のつまさきに留まるように設定される。さらにその後は、目標ＺＭＰは、前述のごとく、次の遊脚足平２２の着地までに目標ＺＭＰが、支持脚足平２２のつまさきから遊脚足平２２のかかとの着地位置まで連続的に移動するように設定される。したがって、第１旋回歩容と第２旋回歩容とから成る定常歩容の目標ＺＭＰ軌道（Ｘ軸方向の軌道）は、図２２のようになる。そして、この目標ＺＭＰ軌道の折れ点の時刻及び位置がＺＭＰ軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第１旋回歩容及び第２旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系及び次次回歩容支持脚座標系の位置姿勢あるいはこれらの座標系を規定する要求パラメータの１歩目及び２歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。尚、ＺＭＰ軌道のＹ軸方向の位置は、前記図７の下段図に示したものと同様に設定される。より詳しくは、第１旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、図７の下段図のものと同一パターンで設定され、第２旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、第１旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。
次に、Ｓ１１２に進み、定常歩容１歩（１周期）の初期時刻、終端時刻、期間が以下のように再定義される。
定常歩容は、その初期と終端での状態変数が連続的につながる歩容でなければならない。このような歩容の決定を容易にするために、本参考例では、定常歩容を決定するまでは、前述の狭義の歩容の定義とは異なり、定常歩容の１歩の初期、終端、期間を便宜上、図１９のように定める。すなわち、第１旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻を定常歩容の初期時刻Ｔｓとして設定する。なお、初期時刻Ｔｓは、図７に示すように、支持脚足平２２の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前の時刻（図７の足底全面接地期間の終了時刻もしくはその直前の時刻）に設定するのが望ましい。また、Ｓ１１０において設定した図２２（または図７）に示す目標ＺＭＰと時刻Ｔｓとの関係を説明すると、第１旋回歩容において支持脚足平２２の底面のほぼ全面が接地した後に、目標ＺＭＰが支持脚足平２２の中央に移動し、つま先接地状態になるまでにつま先に移動を完了した瞬間が、時刻Ｔｓとなっているのが望ましい。このような初期時刻Ｔｓは例えば先に設定した目標ＺＭＰ軌道パラメータに応じて設定される。上記のごとく初期時刻Ｔｓを設定する理由は後述する。
また、図１９に示すように、定常歩容の周期Ｔｃｙｃは第１旋回歩容と第２旋回歩容の歩容周期の和である。定常歩容の終端時刻をＴｅとする。Ｔｅは、ＴｓにＴｃｙｃを加えた時刻に設定される。
定常歩容が決定された時点（後述の図２３のＳ２０４のループを抜けた時点）から、改めて、歩容の初期、終端等の定義を、前述の狭義の歩容の定義に戻すこととする。以下の説明では、前述の狭義の歩容の定義による初期時刻（支持脚側足平２２の着地当初の時刻）を０とし、定常歩容を決定するまで用いる上記初期時刻Ｔｓを参照符号Ｔｓを用いて（単に「Ｔｓ」と省略することもある）本来の初期時刻０と区別する。
最後にＳ１１４に進み、定常歩容の上体姿勢角・逆位相腕振り角復元期間［Ｔｍ，Ｔｓ２］および［Ｔｍ２，Ｔｅ］を設定する。補足すると、定常歩容を繰り返した時に歩容の境界において上体姿勢角および逆位相腕振り角は連続であるべきである。そのためには、定常歩容の初期上体姿勢角速度と終端上体姿勢角速度が一致し、定常歩容の初期逆位相腕振り角速度と終端逆位相腕振り角速度が一致しなければならない。前記期間は、そのようにするための、上体姿勢角軌道と逆位相腕振り角軌道を調整する期間である。
具体的には、初期時刻Ｔｓから第１旋回歩容の空中期を経て第２旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Ｔｍが設定される。さらに、第２旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Ｔｓ２が設定される。さらに、第２旋回歩容の空中期を経て第１旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Ｔｍ２が設定される。
図１９にこれらの時刻を示す。時刻Ｔｍは、支持脚足平２２の底面のほぼ全面が接地した瞬間あるいはその直後に設定するのが望ましい。時刻Ｔｍ２も同様である。また、時刻Ｔｓ２は、前記初期時刻Ｔｓ同様、足平２２の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前に設定するのが望ましい。
また、前記図１５のＳ１１０において設定した図２２の目標ＺＭＰとこれらの時刻Ｔｍ，Ｔｓ２，Ｔｍ２との関係を説明すると、第２旋回歩容において、目標ＺＭＰが、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平２２の中央に移動し始める瞬間を時刻Ｔｍとすることが望ましい。その後、支持脚足平２２のつま先だけ接地した状態になるまでに、目標ＺＭＰがつま先に移動を完了した瞬間を、時刻Ｔｓ２とすることが望ましい。さらに次の第１旋回歩容において、目標ＺＭＰが、支持脚足平２２のかかとを初期位置として該足平２２の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平２２の中央に移動し始める瞬間を時刻Ｔｍ２とすることが望ましい。
上記のごとく設定する理由は後述する。尚、上体姿勢角を復元（調整）する期間と逆位相腕振り角を復元（調整）する期間を別々に設定しても良い。
図１３のＳ０１０からＳ０２２までに示す処理が行われた後、Ｓ０２４に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度（水平方向での初期上体位置及び初期上体速度）、初期上体鉛直位置速度（鉛直方向での初期上体位置及び初期上体速度）、初期発散成分、初期上体姿勢角、角速度、および初期逆位相腕振り角、角速度である。この初期状態の算出は、図２３のフローチャートに従って、探索的に行なわれる。
図２３のフローチャートにおいては、先ず、Ｓ２００において、定常歩容の歩容パラメータ（前記図１３のＳ０２２で設定したパラメータ）に基づいて、目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角（傾斜角とヨー角）の初期状態（初期時刻Ｔｓでの状態）が決定される。ここで状態とは、位置や姿勢角とその変化率（時間微分）とを表す。
この場合、支持脚側の目標足平位置姿勢の初期状態は、前記図１５のＳ１００で決定した足平軌道パラメータの第１旋回歩容初期支持脚足平位置姿勢から、第２旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（次回歩容支持脚座標系から見た軌道）を時刻Ｔｓまで有限時間整定フィルタにより生成することにより決定される。遊脚側の目標足平位置姿勢の初期状態は、次回歩容支持脚座標系から見た今回歩容初期支持脚足平位置姿勢から、第１旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道を時刻Ｔｓまで有限時間整定フィルタにより生成することにより決定される。また、目標腕姿勢の初期状態は、図１５のＳ１０４で決定した基準腕姿勢軌道パラメータに基づいて求められる時刻Ｔｓにおける基準腕姿勢に決定される。より具体的には、目標腕姿勢の両腕体５，５の全体重心位置（上体３に対する相対位置）、左右の手先（両腕体５，５の先端部）の左右方向の間隔および逆位相腕振り角・角速度が決定される。但し、逆位相腕振り角・角速度は、後述するように、定常歩容を繰り返した時に歩容の境界で連続するように修正されるので、ここではまだ仮に決定されただけである。
また、目標上体姿勢角の初期状態は、図１５のＳ１０２で決定した基準上体姿勢軌道パラメータにより定まる時刻Ｔｓにおける基準上体姿勢（傾斜角およびヨー角）及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本参考例では、上体３の傾斜角に係る基準上体姿勢は鉛直姿勢であるので、目標上体姿勢のうちの傾斜角の初期状態（傾斜角及びその角速度）は０である。
また、本参考例では、定常歩容の目標足平位置姿勢軌道、床反力鉛直成分軌道、及び目標ＺＭＰ軌道は、それぞれ、図１５のフローチャートで決定した足平軌道パラメータ、床反力鉛直成分軌道パラメータ、ＺＭＰ軌道パラメータにより互いに独立的に決定される。例えば定常歩容の瞬時瞬時の目標足平位置姿勢は、床反力鉛直成分の瞬時値に依存することなく足平軌道パラメータに応じて決定される。
次いでＳ２０２において初期上体水平位置速度の候補（すなわち初期時刻Ｔｓでの上体水平位置速度候補）である（Ｘｓ，Ｖｘｓ）（Ｘｓ：水平位置、Ｖｘｓ：水平速度）が仮決めされる。ここで仮決めする候補（Ｘｓ，Ｖｘｓ）は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度を仮決め候補（Ｘｓ，Ｖｘｓ）とすればよい。
尚、説明を簡略にするため、サジタルプレーン上でＸ方向（前後方向）での定常歩容の初期状態を探索する場合を例にとるが、実際には位置・速度ともＸ方向（前後方向），Ｙ方向（左右方向）を別々にあるいは同時に定常歩容の初期状態（定常歩容の前記境界条件を満たす初期状態）を探索する必要がある。
補足すると、サジタルプレーン上では、ヨー回転やモーメント鉛直成分など鉛直軸まわりに関する概念は存在しないので、少なくともヨー回転やモーメント鉛直成分に関しては、３次元空間で演算される。
探索的な決定手法としては、擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。本実施例では、最急降下法を用いる。
次いで、Ｓ２０４を経てＳ２０６において、定常歩容を繰り返した時に上体鉛直位置速度が連続になり、かつ、膝等の関節角が伸び過ぎたり縮み過ぎたりしないように、初期（時刻Ｔｓ）上体鉛直位置速度（Ｚｓ，Ｖｚｓ）（Ｚｓ：鉛直位置、Ｖｚｓ：鉛直速度）が、決定される。これについての詳細は、例えば本願出願人が先に出願したＰＣＴ／ＪＰ０２／１３５９２に記載されているので、ここでは省略する。
Ｓ２０６の処理の後、次いでＳ２０８に進み、定常旋回歩容が仮に生成される（この仮生成される定常旋回歩容を以降、仮歩容ということがある）。より具体的には、前記図１３のＳ０２２で決定した定常歩容の歩容パラメータを基に、初期時刻Ｔｓから終端時刻Ｔｅまでの各瞬間における目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲が逐次求められる。そして、求めた目標ＺＭＰと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル（図１２のモデル）を用いて、前記上体水平位置速度（Ｘｓ，Ｖｘｓ）、上体鉛直位置速度（Ｚｓ，Ｖｚｓ）を上体３の初期（時刻Ｔｓ）状態として、上体位置姿勢を逐次決定することによって、時刻Ｔｓから終端時刻Ｔｅまでの歩容を生成する。また、この時、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
また、床反力モーメント鉛直成分に関する条件、すなわち、床反力モーメント鉛直成分許容範囲を満足するように、逆位相腕振り動作が決定される。
尚、この定常歩容の歩容生成は歩容生成装置１００の内部で行われるだけであって、実際のロボット１を駆動するための目標値として、後述する複合コンプライアンス動作決定部１０４に出力されることはない。
以下に、Ｓ２０８の処理である逐次演算による定常歩容生成処理の詳細を説明する。
図２４はその処理を示すサブルーチンフローチャートである。
以下説明すると、Ｓ３００において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻ｋに初期時刻Ｔｓを代入する。さらに、上体水平位置速度に、現在仮決定されている（Ｘｓ，Ｖｘｓ）（図２３のＳ２０２もしくは後述のＳ２１６もしくはＳ２１８で決定されたもの）が代入され、上体鉛直位置速度に、前記Ｓ２０６で求めた最新の（Ｚｓ，Ｖｚｓ）が代入される。また、上体姿勢角には、基準上体姿勢角初期値（初期時刻Ｔｓでの角度）が代入され、上体姿勢角速度には、基準上体上体姿勢角速度初期値（初期時刻Ｔｓでの角速度）が代入される。
逆位相腕振り角には、基準初期逆位相腕振り角（初期時刻Ｔｓでの角度）逆位相腕振り角速度には、基準初期逆位相腕振り角速度（初期時刻Ｔｓでの角速度）が代入される。
次いで、Ｓ３０２を経てＳ３０４において、仮歩容生成用時刻ｋが歩容終端時刻以前であるか否か（ｋ≦Ｔｓ＋Ｔｃｙｃであるか否か）が判断され、その判断結果がＹＥＳである場合には、Ｓ３０６の歩容瞬時値決定サブルーチンに進み、歩容瞬時値が決定される。次いで歩容生成装置１００の処理は、Ｓ３０８に進み、仮歩容生成用時刻ｋをΔｋだけ増やした後、Ｓ３０４に戻る。
ここで、Δｋは、仮歩容生成のインターバルであり、通常、制御周期Δｔと一致させておけば良い。なお、Δｋは、仮歩容の動力学的精度を落としても良いならば、演算量を低減するために、ΔｋをΔｔよりも長く設定しても良い。
Ｓ３０４の判断結果がＮＯである場合には、Ｓ３１０に進む。以上の処理により、Ｓ３１０に進むまでに定常歩容（仮歩容）が初期から終端まで生成される。
以下に、Ｓ３０６の歩容瞬時値決定サブルーチンの詳細を図２５を参照して説明する。
まず図２５のＳ４００において、定常歩容パラメータ（床反力鉛直成分軌道パラメータ）を基に、前記図１９に示した目標床反力鉛直成分の時刻ｋにおける値（今回値）が求められる。さらに、Ｓ４０２において、定常歩容パラメータ（ＺＭＰ軌道パラメータ）を基に、前記図２２に示した目標ＺＭＰ軌道の時刻ｋにおける値（今回値）が求められる。
次いでＳ４０４に進み、定常歩容パラメータ（足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ）を基に、時刻ｋにおける目標両足平位置姿勢（支持脚側及び遊脚側の両者の目標足平位置姿勢）、基準上体姿勢および基準腕姿勢の値（今回値）が求められる。基準腕姿勢に関しては、具体的には、両腕体５，５の全体重心位置（上体３に対する相対位置）、左右の手先（両腕体５，５の先端部）の左右方向の間隔および逆位相腕振り角の値（今回値）が求められる。
尚、目標足平位置姿勢の今回値（時刻ｋでの値）は、前記図２３のＳ２００で初期時刻Ｔｓでの足平位置姿勢を求めた場合と同様に求められる。
次いでＳ４０６に進み、目標床反力鉛直成分を満足する（ロボット１の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ような時刻ｋにおける全体重心鉛直位置速度の値（今回値）が算出される。具体的には、例えば前記図１２の動力学モデルに係わる前記式０１と式０４とに基づいて、全体重心鉛直位置速度が算出される。すなわち、式０１と式０４とによれば、ロボット１の運動による全体重心鉛直加速度と重力加速度との和にロボット１の全体質量を乗算したものが床反力鉛直成分に等しいという関係式（ロボット１の全体重心の鉛直方向に関する運動方程式）が得られる。従って、この関係式と目標床反力鉛直成分とから、全体重心鉛直加速度が求められる。
尚、この関係式自体は、ロボット１のモデルに依存することなく一般的に成立するものである。そして、この求めた全体重心鉛直加速度を積分することにより、全体重心鉛直速度が算出され、さらにその全体重心鉛直速度を積分することにより、全体重心鉛直位置が算出される。これらの算出は、より一般的には、次式１５および式１６で表される動力学関係式（ニュートンの運動方程式を離散化した式）を用いて行なわれる。
時刻ｋにおける全体重心鉛直速度
＝時刻（ｋ−Δｋ）における全体重心鉛直速度
＋（（床反力鉛直成分／ロボットの全体質量）＋重力加速度）＊Δｋ
（ただし、重力加速度は負の値とする。）
…式１５
時刻ｋにおける全体重心鉛直位置
＝時刻（ｋ−Δｋ）における全体重心鉛直位置
＋時刻ｋにおける全体重心鉛直速度＊Δｋ
…式１６
次いでＳ４０８に進み、全体重心鉛直位置を満足する上体鉛直位置が算出される。具体的には、例えば前記図１２のモデルに係わる式０４を用いて上体鉛直位置が算出される。すなわち、支持脚側及び遊脚側の目標足平位置姿勢の今回値から、図１２のモデルの支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの求めた支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置と、Ｓ４０７で求めた全体重心鉛直位置の今回値とを式０４に適用することで、上体質点３ｍの鉛直位置が求められる。さらに、この求めた上体質点３ｍの鉛直位置と目標上体姿勢角の現在値（Ｓ４０４で設定された基準上体姿勢角または後述のＳ４１４で決定された前回（時刻ｋ−Δｋ）の目標上体姿勢角）とから上体鉛直位置が求められる。
次いでＳ４１０に進み、前記図１５のＳ１０８で決定した歩容パラメータ（床反力水平成分許容範囲を規定するパラメータ）に基づいて、図２０に示した床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］の時刻ｋにおける値（今回値）が求められる。
次いでＳ４１１に進み、前記図１５のＳ１０９で決定した歩容パラメータ（床反力モーメント鉛直成分許容範囲を規定するパラメータ）に基づいて、図２１に示した床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］の時刻ｋにおける値（今回値）が求められる。
次いでＳ４１２に進み、目標ＺＭＰに関する動力学的平衡条件（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が０であるという条件）を満足するように、目標上体水平加速度と目標上体姿勢加速度との今回値が決定される。ただし、床反力水平成分Ｆｘが［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないように、上体水平加速度と上体姿勢角加速度（より詳しくは、上体傾斜角加速度）とが決定される。また、床反力モーメント鉛直成分Ｍｚが［Ｍｚｍｉｎ，Ｍｚｍａｘ］を越えないように、目標逆位相腕振り角加速度の今回値が決定される。
尚、上体姿勢角のうち、ヨー角は基準上体姿勢角のうちのヨー角に一致するように決定される。また、目標腕姿勢に関しては、逆位相腕振り角以外の成分は、基準腕姿勢に一致するように決定される。また、この際、上記条件を満足しつつも、目標上体傾斜角と目標逆位相腕振り角とは、それぞれ基準上体傾斜角と基準逆位相腕振り角とになるべく追従するように決定される。以下にこの詳細を説明する。
この時点において、前記の如く足平位置姿勢および上体鉛直位置の瞬時値（今回値）が決定されており、また、腕姿勢に関して、逆位相腕振り角以外の成分は、基準腕姿勢のそれに一致するように決定されている。このため、残りの上体水平位置と上体姿勢角と逆位相腕振り角とを決定すれば、ロボット１の目標運動は一義的に決定できる。したがって、すべての床反力も一義的に決定される。なお、本参考例では、定常歩容の目標床反力鉛直成分及び目標ＺＭＰは、それぞれ前記図１３のＳ０２２で決定した床反力鉛直成分軌道パラメータ及び目標ＺＭＰ軌道パラメータによって規定される。
ところで、歩容生成において、前記上体並進モードをあまり用いずに主に上体傾斜モードを用いることにより、目標ＺＭＰを満足させる（目標ＺＭＰまわりの床反力モーメントの水平成分を０にする）と、上体姿勢角が大きく振れ過ぎてしまう恐れがある。したがって、これを防ぐためには、なるべく上体並進モードを用いるべきである。しかし、上体並進モードは、床反力水平成分の変化を伴うので、床反力水平成分許容範囲が狭い場合には、上体並進モードを強く働かせるとスリップする恐れがある。この場合には、上体傾斜モードに頼るしかない。特に、前記走行歩容のように床反力水平成分許容範囲が０となる期間では、床反力水平成分を発生させるような歩容を生成することはできないので、上体傾斜モードに頼らざるを得ない。
一方、逆位相腕振り運動は、目標ＺＭＰまわりの床反力モーメントの水平成分および床反力水平成分のいずれも変化させることなく、床反力モーメント鉛直成分のみを変化させることができるので、床反力モーメント鉛直成分が前記床反力モーメント鉛直成分許容範囲を越えないようにするために用いることができる。以上のことを考慮し、本参考例では、図２６に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度と逆位相腕振り加速度とが決定される。尚、理解の便宜上、上体水平加速度と上体姿勢角加速度（上体３の傾斜角の角加速度）の決定に関しては、サジタルプレーン上でＸ方向（前後方向）での上体水平加速度および上体姿勢角加速度を決定する場合を例にとって説明するが、実際にはＹ方向（左右方向）の上体水平加速度および上体姿勢角加速度もＸ方向と同様に決定される。
まずＳ５００において、目標上体ヨー角に時刻ｋでの基準上体ヨー角の値を代入する。また、腕姿勢の逆位相腕振り角・角速度成分を除き、目標腕姿勢に時刻ｋでの基準腕姿勢の値を代入する。
次にＳ５０２において現在時刻（定常歩容作成用タイマーの値）ｋが、上体姿勢角・逆位相腕振り角復元期間（定常歩容の場合、上体姿勢角・逆位相腕振り角復元期間は、時刻Ｔｍから時刻Ｔｓ２の期間および時刻Ｔｍ２からＴｅまでの期間である。）の間にあるか否かが判定される。Ｓ５０２の判定結果がＮＯであるならば、Ｓ５０４に進み、ＹＥＳであるならばＳ５３０に進む。
Ｓ５０４では、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、仮に、上体傾斜モードの角加速度を０にして、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰを満足するために必要な上体水平加速度αｔｍｐが求められる。このαｔｍｐは、例えば前記図１２の動力学モデルに係わる前記式０３ｙを用いて求められる。より具体的には、例えば、現在時刻ｋまでに求められた目標足平位置姿勢の時系列値を用いて、現在時刻ｋにおける支持脚質点２ｍ及び遊脚質点２ｍの鉛直加速度が求められると共に、現在時刻ｋ（今回）の目標足平位置姿勢を用いて支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。また、現在時刻ｋ（今回）の床反力鉛直位置を用いて上体質点３ｍの鉛直位置が求められると共に、現在時刻ｋまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻ｋにおける上体質点３ｍの鉛直加速度が求められる。そして、これらの求めた値を前記式０３ｙに代入すると共に、同式０３ｙのＭｙ、ｄ２θｂｙ／ｄｔ２を０にしてなる式を、ｄ２Ｘｂ／ｄｔ２について解くことにより、上体質点水平加速度が上体水平加速度αｔｍｐとして求められる。尚、より厳密な動力学モデルを用いて、目標ＺＭＰ回りの床反力モーメントの水平成分を零にするような上体水平加速度αｔｍｐを探索的に求めるようにしてもよい。また、本参考例では、上体３の傾斜角に関する基準上体姿勢が鉛直姿勢で、該基準上体姿勢による上体姿勢角加速度（上体３の傾斜角の角加速度）が０であるため、上体傾斜モードの角加速度を０にして上体水平加速度αｔｍｐを求めるようにした。但し、基準上体姿勢のうちの傾斜角が変化するように該基準上体姿勢軌道パラメータを設定した場合で、それにより定まる現在時刻ｋにおける基準上体姿勢角加速度（上体３の傾斜角の基準角加速度）が０でない場合には、上体傾斜モードの角加速度をその０でない基準上体姿勢角加速度の値にして、上体水平加速度αｔｍｐを動力学モデルを用いて求める（例えば式０３ｙのｄ２θｂｙ／ｄｔ２を０でない基準上体姿勢角加速度に設定して上記と同様に上体水平加速度αｔｍｐを求める）ようにすればよい。
次に、Ｓ５０６に進み、上体水平加速度がαｔｍｐの場合の時刻ｋにおける床反力水平成分Ｆｘｔｍｐが動力学モデルを用いて求められる。本参考例においては、前記動力学モデルの式０２ｘを用いてＦｘｔｍｐが求められる。すなわち、次式１７によってＦｘｔｍｐが求められる。但し、ｄ２Ｘｓｕｐ／ｄｔ２およびｄ２Ｘｓｗｇ／ｄｔ２はそれぞれ時刻ｋにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。
Ｆｘｔｍｐ＝ｍｂ＊αｔｍｐ＋ｍｓｕｐ＊ｄ２Ｘｓｕｐ／ｄｔ２
＋ｍｓｗｇ＊ｄ２Ｘｓｗｇ／ｄｔ２        …式１７
このようにして求められるＦｘｔｍｐの例を図２７に示す。図２７に、Ｆｘｔｍｐが床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えている部分を斜線で示す。
次に、Ｓ５０８に進み、上体並進モードの上体水平加速度α、これによって発生する床反力水平成分Ｆｘ、上体傾斜モードの上体角加速度βが次のように決定される（Ｓ５０８〜Ｓ５１６）。
すなわち、
Ｆｘｔｍｐ＞Ｆｘｍａｘならば、Ｓ５１０に進み、次式によりＦｘが決定される。
Ｆｘ＝Ｆｘｍａｘ        …式１８
Ｆｘｔｍｐ＜Ｆｘｍｉｎならば、Ｓ５１２に進み、次式によりＦｘが決定される。
Ｆｘ＝Ｆｘｍｉｎ        …式１９
それ以外、すなわち、Ｆｘｔｍｐが、床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］内に存するならば、Ｓ５１４に進み、次式によりＦｘが決定される。
Ｆｘ＝Ｆｘｔｍｐ        …式２０
いずれの場合においても、次いでＳ５１６に進み、次式により上体水平加速度α、上体姿勢角加速度（上体傾斜角加速度）βが決定される。
α＝αｔｍｐ＋（Ｆｘ−Ｆｘｔｍｐ）／ΔＦｐ      …式２１
β＝（αｔｍｐ−α）＊ΔＭｐ／ΔＭｒ            …式２２
ただし、ΔＦｐ、ΔＭｐおよびΔＭｒはそれぞれ前記式０６、０７、および式０９により決定される。
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体角加速度βを求めた後、上体並進モードと上記求めた上体角加速度βの上体傾斜モードとを合成した運動が目標ＺＭＰを満足するように、上体並進モードの上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン（感度マトリックス）を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
さらに床反力水平成分Ｆｘが床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を厳密に越えないようにするために、Ｓ５１０においては、Ｆｘ＝Ｆｘｍａｘかつ目標ＺＭＰまわりの床反力モーメントの水平成分が０になるように、Ｓ５１２においては、Ｆｘ＝Ｆｘｍｉｎかつ目標ＺＭＰまわりの床反力モーメントの水平成分が０になるように、上体水平加速度αと上体角加速度βとの組を探索的に求めても良い。
上記のように求められるＦｘを図２８に示す。Ｆｘは、Ｆｘｔｍｐの値を床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］から越えないように制限（飽和）させたものになっている。より詳しくは、上体並進モードのみによる上体水平加速度αｔｍｐに応じたＦｘｔｍｐが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］内にある場合には、ＦｘｔｍｐがそのままＦｘとなる。また、上体並進モードのみによる上体水平加速度αｔｍｐに応じたＦｘｔｍｐが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］の上限を超え、もしくは下限を下回った場合には、それぞれＦｘは、それぞれ強制的にＦｘｍａｘ、Ｆｘｍｉｎに制限される。特に走行歩容の空中期では、常に、Ｆｘｍａｘ＝Ｆｘｍｉｎ＝０であるので、Ｆｘ＝０となる。
また、上記のように求められる上体姿勢角加速度βを図２９に示す。上体並進モードによって発生するＦｘが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないように、上体並進モードの加速度を制限したことによって不足した床反力モーメント（より詳しくは目標ＺＭＰ回りの床反力モーメントの水平成分を０にする上で必要な慣性力モーメントから、制限した上体水平運動と両脚体２，２の運動とによるモーメント成分を差し引いたモーメント）を、上体傾斜モードで補ったことになる。なお、走行歩容の空中期では、上体並進モードによる上体水平加速度αは常に０に制限されることとなるので、上体傾斜モードによる上体姿勢角加速度βのみによって、上記不足分の床反力モーメントが補われることとなる。
次に、Ｓ５１８に進み、仮に上体並進モードの上体水平加速度がα、上体傾斜モードの上体角加速度（上体傾斜角加速度）がβ、上体ヨー回転モードの上体加速度（上体ヨー角加速度）が基準ヨー角加速度ｄ２θｂｚｒｅｆ／ｄｔ２、逆位相腕振り角加速度βａが基準逆位相腕振り角加速度ｄ２θａｚｒｅｆ／ｄｔ２である運動をさせた場合の床反力モーメント鉛直成分Ｍｚｔｍｐを求める。以降、ｄ２θｂｚｒｅｆ／ｄｔ２をβｂｒｅｆ、ｄ２θａｚｒｅｆ／ｄｔ２をβａｒｅｆとする。
具体的には、式０３ｚに、式１００１から式１００４を代入することによって得られるＭｚがＭｚｔｍｐである。
ｄ２Ｘｂ／ｄｔ２＝αｘ                                    …式１００１
ｄ２Ｙｂ／ｄｔ２＝αｙ                                    …式１００２
ｄ２θｂｚ／ｄｔ２＝βｂｒｅｆ                            …式１００３
ｄ２θａｚ／ｄｔ２＝βａｒｅｆ                            …式１００４
ただし、αｘは、上体水平加速度αのＸ成分、αｙは、上体水平加速度αのＹ成分を表す。また、Ｘｂ、Ｙｂには時刻ｋ−１における上体水平位置を代入し、Ｘｚｍｐ、Ｙｚｍｐ、Ｘｓｕｐ、ｄ２Ｙｓｕｐ／ｄｔ２、Ｘｓｗｇ、ｄ２Ｙｓｗｇ／ｄｔ２には、時刻ｋの値を代入するものとする。
このようにして求められるＭｚｔｍｐの例を図３２に示す。図３２に、Ｍｚｔｍｐが床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］を越えている部分を斜線で示す。
次に、Ｓ５２０に進み、逆位相腕振り角加速度βａが次のように決定される（Ｓ５２０〜Ｓ５２８）。
すなわち、
Ｍｚｔｍｐ＞Ｍｚｍａｘならば、Ｓ５２２に進み、次式によりＭｚが決定される。
Ｍｚ＝Ｍｚｍａｘ          …式１０１８
Ｍｚｔｍｐ＜Ｍｚｍｉｎならば、Ｓ５２４に進み、次式によりＭｚが決定される。
Ｍｚ＝Ｍｚｍｉｎ          …式１０１９
それ以外、すなわち、Ｍｚｔｍｐが、床反力水平成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］内に存するならば、Ｓ５２６に進み、次式によりＭｚが決定される。
Ｍｚ＝Ｍｚｔｍｐ          …式１０２０
いずれの場合においても、次いでＳ５２８に進み、次式により逆位相腕振り角加速度βａが決定される。
βａ＝βａｒｅｆ＋（Ｍｚｔｍｐ−Ｍｚ）／ΔＭａｚ        …式１０２１
ただし、ΔＭａｚは式０９ａにより決定される。
以下にＳ５１８からＳ５２８までの処理を解説する。
上記のように求められるＭｚは、逆位相腕振りを含めたロボット全体の運動による床反力モーメント鉛直成分を示している。
上記処理では、このＭｚが床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］を越えないように逆位相腕振り角加速度βａが決定されている。具体的には、Ｍｚは、図３３に示すように、Ｍｚｔｍｐの値を床反力水平成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］から越えないように制限（飽和）させたものに決定されている。より詳しくは、Ｍｚｔｍｐが許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］内にある場合には、ＭｚｔｍｐがそのままＭｚとなり、Ｍｚｔｍｐが許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］の上限を越え、もしくは下限を下回った場合には、それぞれＭｚは、それぞれ強制的にＭｚｍａｘ、Ｍｚｍｉｎに制限される。特に走行歩容の空中期では、常に、Ｍｚｍａｘ＝Ｍｚｍｉｎ＝０であるので、Ｍｚ＝０となる。
Ｍｚが床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］を越えないようにするために、逆位相腕振りによって発生すべきモーメント鉛直成分Ｍａｚは、（Ｍｚ−Ｍｚｔｍｐ）である。Ｍａｚ（＝Ｍｚ−Ｍｚｔｍｐ）を図３４に示す。
逆位相腕振り角加速度βａは、Ｍａｚを逆位相腕振りの等価慣性モーメントΔＭａｚで割ったものを基準逆位相腕振り角加速度βａｒｅｆ（基準逆位相腕振り角を２階微分した値）に加えることによって得られる。すなわち、βａは前記式１０２１で求められる。逆位相腕振り角加速度βａを図３５に示す。
以上のごとくＳ５０４からＳ５２８までの処理では、逆位相腕振りを含めたロボット全体の運動によって発生する床反力モーメント鉛直成分Ｍｚが許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］を越えないように（逆位相腕振り角加速度を基準逆位相腕振り角加速度βａｒｅｆに一致させた場合に発生する床反力モーメント鉛直成分Ｍｚｔｍｐが許容範囲を越えた分を打ち消す（キャンセルする）ように）、逆位相腕振り角加速度βａが決定される。
補足すると、床反力モーメント鉛直成分Ｍｚが床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］を厳密に越えないようにするために、Ｓ５０４からＳ５２８までの処理の代わりに、逆位相腕振り角加速度βａを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン（感度マトリックス）を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
以上が、時刻ｋが上体姿勢角・逆位相腕振り角復元期間の間にない場合の処理である。
Ｓ５０２の判定結果がＹＥＳである場合には以下の処理が行われる。まず、Ｓ５３０に進み、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、上体傾斜モードの角加速度を０にして、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰを満足するために必要な上体水平加速度αが求め、これを最終的な上体水平加速度と決定する。
次に、Ｓ５３２に進み、上記場合に床反力水平成分Ｆｘを求める。
次に、Ｓ５３４に進み、上体姿勢角加速度（上体傾斜角加速度）βを０に決定する。なお、上体ヨー角加速度は、基準上体ヨー角加速度βｂｒｅｆ（基準上体ヨー角を２階微分した値）に決定される。
次いで最後に、Ｓ５３６に進み、逆位相腕振り角加速度βａに、基準逆位相腕振り角加速度βａｒｅｆ（基準逆位相腕振り角を２階微分した値）を代入する。
以上が、Ｓ５０２の判定結果がＹＥＳである場合の処理である。すなわち、この場合には、上体姿勢角加速度（上体傾斜角加速度および上体ヨー角加速度）を基準上体姿勢角加速度に、逆位相腕振り角加速度を基準逆位相腕振り角加速度に一致させる。このようにしても運動によって発生する床反力が、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれも越えないと予想されているので、このように決定しても問題ない。
Ｓ５２８またはＳ５３６の処理の後、図２５のＳ４１４に進み、Ｓ４１２で求めた上体水平加速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより上体水平速度が求められ、さらにその上体水平速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより、上体水平位置（今回値）が求められる。また、Ｓ４１２で求めた上体姿勢角加速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより上体姿勢角速度が求められ、さらにその上体姿勢角速度を逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより、上体姿勢角（今回値）が求められる。
次にＳ４１６に進み、Ｓ４１２で求めた逆位相腕振り加速度βａを逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより逆位相腕振り速度が求められ、さらにこれを逐次積分する（時刻Ｔｓから現在時刻ｋまで累積加算する）ことにより、逆位相腕振り角θａｚ（今回値）が求められる。
以上のごとく図２４のＳ３０６の定常歩容瞬時値決定サブルーチンが実行された後、Ｓ３０８に進み、歩容生成用時刻ｋの値が歩容生成インターバルΔｋだけ増加される。次いでＳ３０４に戻り、Ｓ３０４に示す条件が成立している限り、Ｓ３０６とＳ３０８の処理が繰り返され、Ｓ３０４に示す条件が成立しなくなったら、すなわち終端（時刻Ｔｅ＝Ｔｓ＋Ｔｃｙｃ）まで仮歩容の生成が完了したら、Ｓ３１０に進む。
定常歩容では、それを繰り返したときに境界でロボット１の運動状態が不連続にならないように、初期上体姿勢角及びその角速度を決定する必要がある。
そのために、Ｓ３１０では、上体姿勢角速度を、時刻Ｔｅまでに、初期値（時刻Ｔｓでの値）に戻すための上体姿勢角加速度を発生させる床反力モーメントのＺＭＰ換算値（以降、上体姿勢復元モーメントＺＭＰ換算値と呼び、ＺＭＰｒｅｃと略す）のパターンを設定する。
これについて以下に詳細に説明する。
上体姿勢角・逆位相腕振り角復元期間（時刻Ｔｍから時刻Ｔｓ２の期間および時刻Ｔｍ２からＴｅまでの期間）に、上体傾斜モードを用いて上体姿勢角加速度を発生させることにより、上体姿勢角速度を初期値（時刻Ｔｓでの値）に戻すことを考える。このための上体姿勢角加速度パターンを、β（ｋ）とする。なお、上記期間以外では、β（ｋ）＝０とする。
上体傾斜モードでは、上体姿勢角加速度β（ｋ）を発生させようとすると、床反力モーメントβ（ｋ）＊ΔＭｒが発生する。この結果、その瞬間における床反力鉛直成分がＦｚ（ｋ）であるとすると、（目標ＺＭＰでなく）運動から算出されるＺＭＰ（ｋ）は、次式で求められるΔＺＭＰだけずれる。
ΔＺＭＰ（ｋ）＝−β（ｋ）＊ΔＭｒ／Ｆｚ（ｋ）      …式２３
したがって、ΔＭｒのパターンとＦｚ（ｋ）のパターンが決まっていれば（既知であれば）、ΔＺＭＰ（ｋ）のパターンを適当に設定することによって、式２３を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を初期値（時刻Ｔｓでの値）、すなわち基準上体姿勢軌道の初期（時刻Ｔｓ）状態における上体姿勢角速度に戻すことができる。
前記上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）は、そのように適切に設定されたΔＺＭＰ（ｋ）を意味する。前記式２３を用いて上体姿勢復元モーメントＺＭＰ換算値を設定する際に、ΔＭｒは厳密には変動するが、近似的に一定値としても良い。定常歩容は仮に生成されるだけであり、実際のロボットをこの歩容に追従させるわけではないので、定常歩容の動力学的精度はあまり高くなくても良いからである。
図３０にＺＭＰｒｅｃの一例を示す。図３０では、ＺＭＰｒｅｃのパターンとして、時刻Ｔｍから時刻Ｔｓ２の期間および時刻Ｔｍ２からＴｅまでの期間に台形パターンが形成されている。その台形部の折れ点の時刻は、時刻Ｔｍと時刻Ｔｓ２との間の期間および時刻Ｔｍ２からＴｅまでの期間における目標ＺＭＰパターンの折れ点の時刻（図２２参照）に一致させてある。これは、後述するが、今回歩容の目標ＺＭＰパターンの修正が簡単になるからである。
式２３のΔＺＭＰ（ｋ）にＺＭＰｒｅｃ（ｋ）を代入することにより次式が得られる。
β（ｋ）＝−ＺＭＰｒｅｃ（ｋ）＊Ｆｚ（ｋ）／ΔＭｒ        …式２４
したがって、この式２４で求められるβ（ｋ）は、図３１の実線で示すようになる。なお、図３１の点線で示すものは、時刻Ｔｓから時刻Ｔｍまでの期間および時刻Ｔｍ２からＴｅまでの期間の上体姿勢角加速度（図２９の実線示のもの）である。（以降、時刻ｋでの値であることが明らかな場合には、（ｋ）を省略する場合がある。）
初期（時刻Ｔｓ）上体姿勢角は、初期（時刻Ｔｓ）基準上体姿勢角に一致させる。
また、初期上体姿勢角速度は、式３７ａ、３７ｂを満たすように決定する。
終端上体姿勢角−初期上体姿勢角
＝床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の２階積分
＋ＺＭＰｒｅｃによって発生する上体姿勢角加速度の２階積分
＋初期上体姿勢角速度＊定常歩容の周期
……式３７ａ
終端上体姿勢角速度−初期上体姿勢角速度
＝床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の１階積分
＋ＺＭＰｒｅｃによって発生する上体姿勢角加速度の１階積分
……式３７ｂ
なお、式３７ａ、３７ｂのそれぞれの右辺第１項の積分期間は、時刻ＴｓからＴｍまでの期間と、Ｔｓ２からＴｍ２までの期間とを合わせた期間であり、右辺第２項の積分期間は、時刻ＴｍからＴｓ２までの期間とＴｍ２からＴｅまでの期間とを合わせた期間である。
より具体的に説明すると定常歩容では、第１旋回歩容の支持脚座標系（次回歩容支持客座標系）から見た初期状態姿勢角及び角速度が、それぞれ、次の第１旋回歩容の支持脚座標系（次次次回歩容支持脚座標系）から見た終端上体姿勢角および角速度に一致していなければならない。そこで、本参考例では、初期（時刻Ｔｓ）上体姿勢角は、初期（時刻Ｔｓ）基準上体姿勢角の値に決定し、これと、これを定常歩容におけるロボット１のトータルの旋回角（鉛直軸回りの旋回角）に応じたマトリクス（回転座標変換のマトリクス）により次回歩容支持脚座標系から見た値に座標変換したものとをそれぞれ式３７ａの左辺の初期上体姿勢角、終端上体姿勢角に代入する。また、式３７ａ，３７ｂのそれぞれの右辺第１項の積分に係る上体姿勢角加速度は、前記図２６のＳ５１８で求められたものが用いられる。
そして、式３７ａ，３７ｂの初期上体姿勢角速度と、式３７ａ，３７ｂの右辺第２項の積分に係るＺＭＰｒｅｃ（図３０の台形状のパターン）の台形高さをと未知数として（但し、ＺＭＰｒｅｃの台形パターンの折れ点の時刻は前記のごとくあらかじめ定める。また、第１旋回歩容のＺＭＰｒｅｃの台形高さａｃｙｃ１と第２旋回歩容のＺＭＰｒｅｃの台形高さａｃｙｃ２を同一値とする。）、それらの未知数を含む式３７ａ，３７ｂの連立方程式を解くことにより求められる初期上体姿勢角速度を新たな初期上体姿勢角速度として決定する。この場合、式３７ｂの終端上体姿勢角速度は、未知数である初期上体姿勢角速度を、定常歩容の上記トータルの旋回角に応じたマトリクスにより次回支持脚座標系から見た値に座標変換したものである。
次いでＳ３１２に進み、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンを基に、これによる上体水平位置・速度への影響量を求め、終端上体水平位置・速度に加算する。
この処理について解説する。なお、その詳細は、本願出願人のＰＣＴ／ＪＰ０２／１３５９２にて説明されているので、ここでは簡略な説明に留める。
時刻ＴｓからＴｍの期間および時刻Ｔｓ２からＴｅの期間において、上記のごとく上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンを発生するように上体姿勢角加速度βを変化させると、上体姿勢角加速度βは、次式のようになる。
β＝−ＺＭＰｒｅｃ＊Ｆｚ／ΔＭｒ        …式１０２５
上体傾斜復元モーメントを発生させない場合に目標ＺＭＰを満足する上体水平加速度は、Ｓ５３２において求めたごとくαｔｍｐであるが、上記のごとく上体姿勢角加速度βを変化させると、目標ＺＭＰを満足するために必要な上体水平加速度αは、次式のようになる。
α＝αｔｍｐ−（ΔＭｒ／ΔＭｐ）＊β        …式１０２６
式１０２５および１０２６より、
α＝αｔｍｐ＋ＺＭＰｒｅｃ＊Ｆｚ／ΔＭｐ  …式１０２７
すなわち、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）によって、加速度が式１０２７の右辺第２項分だけ増加する。
式が線形であることを利用すると、上記のごとく上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平速度は、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンを発生させなかった場合の終端上体水平速度、すなわちＳ４１４で求めた上体水平速度の終端値に、時刻ＴｓからＴｅまでの（ＺＭＰｒｅｃ＊Ｆｚ／ΔＭｐ）の１階積分を加算したものとして求められる。また、上記のごとく上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平位置は、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）パターンを発生させなかった場合の終端上体水平位置、すなわちＳ４１４で求めた上体水平位置の終端値に、時刻ＴｓからＴｅまでの（ＺＭＰｒｅｃ＊Ｆｚ／ΔＭｐ）の２階積分を加算したものとして求められる。
Ｓ３１２の処理を完了した後、Ｓ３１４に進み、逆位相腕振り角速度が初期と終端で一致するように逆位相腕振り復元角加速度（βａｒｅｃ）パターンを決定する。
具体的には、逆位相腕振り復元角加速度パターンを図３６のように台形状に設定し、時刻ＴｍからＴｓ２までの期間の台形高さａｚｃｙｃ２と時刻Ｔｍ２からＴｅまでの期間の台形高さａｚｃｙｃ１を同一とし、時刻ＴｓからＴｅまでのβａｒｅｃの積分値と床反力モーメント鉛直成分Ｍｚが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βａの積分値との和が０となるように台形高さａｚｃｙｃ１、ａｚｃｙｃ２を決定する。なお、両区間の台形高さは、同一でなくても構わない。
補足すると、このように決定した逆位相腕振り復元角加速度パターンによって発生する床反力モーメント鉛直成分（Ｍａｚｒｅｃ）は、図３７のようになる。したがって、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分Ｍｚは、最終的には、図３８に示すごとく、図３２のＭｚｔｍｐと図３４のＭａｚと図３７のＭａｚｒｅｃとの和、すなわち、図３３のＭｚと図３７のＭａｚｒｅｃとの和になる。時刻ＴｍからＴｓ２までの期間および時刻Ｔｍ２からＴｅまでの期間においては、台形状の復元モーメントが加算されるが、これらの期間は、許容範囲が十分に広い期間に設定されているので、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分は、許容範囲を越えることはない。
次にＳ３１６に進み、定常歩容の初期（時刻Ｔｓ）逆位相腕振り角および角速度を決定する。
具体的には、初期逆位相腕振り角速度は、以下の式によって決定する。
初期逆位相腕振り角速度
＝基準初期逆位相腕振り角速度
−（βａｒｅｃが０の場合の逆位相腕振り角
＋βａｒｅｃパターンの２階積分）／Ｔｃｙｃ
…式１０３０
ただし、上式において、βａｒｅｃが０の場合の逆位相腕振り角とは、Ｓ４１６において求めた逆位相腕振り角（時刻Ｔｅにおける逆位相腕振り角）のことである。また、βａｒｅｃの２階積分とは、図３６のように設定した逆位相腕振り復元角加速度の時刻ＴｓからＴｅまでの２階積分値である。また、基準初期逆位相腕振り角速度は前記基準逆位相腕振り角速度（基準逆位相腕振り角θａｒｅｆの１階微分値）の時刻Ｔｓでの値である。
初期逆位相腕振り角は、基準初期逆位相腕振り角に一致させれば良い。または、最終的に決定された逆位相腕振り角加速度（すなわち、床反力モーメント鉛直成分Ｍｚが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βａと復元角加速度βａｒｅｃの和）と上記求めた初期逆位相腕振り角速度を基に、仮に初期逆位相腕振り角を基準初期逆位相腕振り角に一致させた場合に算出される腕振り角と基準逆位相腕振り角との差の平均値または前記差の最大値と最小値の平均値を求め、求めた平均値の２分の１を基準初期逆位相腕振り角から減じた値を最終的な初期逆位相腕振り角として決定しても良い。このようにすることで、算出される腕振り角と基準逆位相腕振り角との差の絶対値が大きくなり過ぎることを防止することができる。
時刻Ｔｓ、Ｔｍ、Ｔｓ２およびＴｍ２を前記のごとく設定した理由のひとつは、時刻ＴｍからＴｓ２までの期間と時刻Ｔｍ２からＴｅまでの期間とにおいて、上体姿勢角速度を基準上体姿勢軌道の初期角速度に戻すように上体姿勢角加速度βを発生させても、床反力水平成分Ｆｘが許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないようにするためである。換言すれば、時刻ＴｍからＴｓ２までの期間と時刻Ｔｍ２からＴｅまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ＺＭＰを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを発生させても、床反力水平成分Ｆｘは、許容範囲を越えることがない。
また時刻Ｔｓ、Ｔｍ、Ｔｓ２およびＴｍ２を前記のごとく設定したもうひとつの理由は、時刻ＴｍからＴｓ２までの期間と時刻Ｔｍ２からＴｅまでの期間とにおいて、逆位相腕振り角速度を基準逆位相腕振り角軌道の初期角速度に戻すように逆位相腕振り角加速度βａを発生させても、床反力モーメント鉛直成分Ｍｚが許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］を越えないようにするためである。換言すれば、時刻ＴｍからＴｓ２までの期間と時刻Ｔｍ２からＴｅまでの期間とにおいては、床反力モーメント鉛直成分許容範囲が十分に大きいため、逆位相腕振り角速度を戻すように逆位相腕振り角加速度βａを発生させても、床反力モーメント鉛直成分Ｍｚは、許容範囲を越えることがない。
以上のごとく図２４のＳ３１６の処理が完了した後、図２３のＳ２１０に進み、生成した歩容（仮定常歩容）の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系（図１７のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換し、その値を（Ｘｅ，Ｖｘｅ）とする（Ｘｅ：終端上体水平位置、Ｖｘｅ：終端上体水平速度）。
次いでＳ２１２に進み、図示の如く、初期上体水平位置速度（Ｘｓ，Ｖｘｓ）と終端上体水平位置速度（Ｘｅ，Ｖｘｅ）との差を算出する。この差（Ｘｓ−Ｘｅ，Ｖｘｓ−Ｖｘｅ）を上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）と呼ぶ。定常歩容では、前記境界条件を満たす必要があるので、（Ｘｓ，Ｖｘｓ）と（Ｘｅ，Ｖｘｅ）とが一致していなければならない。従って、上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）が零またはほぼ零でなければならない。本参考例では、以下のように、上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）がほぼ零となる（Ｘｓ，Ｖｘｓ）が探索的に求められる。
次いでＳ２１４に進み、算出した上体水平位置速度境界条件誤差（ｅｒｒｘ，ｅｒｒｖｘ）が、あらかじめ適宜設定された許容範囲内にあるか否かが判断される。尚、このように上体水平位置速度境界条件誤差の許容範囲を設定する代わりに、初期発散成分（Ｘｓ＋Ｖｘｓ／ω０）と終端発散成分（Ｘｅ＋Ｖｘｅ／ω０）との差、および初期収束成分（Ｘｓ−Ｖｘｓ／ω０’）と終端収束成分（Ｘｅ−Ｖｘｅ／ω０’）との差がそれぞれある許容範囲内にあるか否か判断するようにしても良い。ただしω０，ω０’は、前述したように、ある所定の値である。
Ｓ２１４の判断結果がＮＯであるときにはＳ２１６に進む。このＳ２１６では、（Ｘｓ，Ｖｘｓ）の付近に複数（本参考例では２つ）の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）が決定される。ここで、ΔＸｓ，ΔＶｘｓは、それぞれＸｓ，Ｖｘｓに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記Ｓ２０８と同様の処理によって定常歩容が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系（図１７のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値（Ｘｅ＋ΔＸｅ１，Ｖｘｅ＋ΔＶｘｅ１），（Ｘｅ＋ΔＸｅ２，Ｖｘｅ＋ΔＶｘｅ２）が求められる。ここで、（Ｘｅ＋ΔＸｅ１，Ｖｘｅ＋ΔＶｘｅ１）は（Ｘｓ＋ΔＸｓ，Ｖｘｓ）に対応する終端上体位置速度を意味し、（Ｘｅ＋ΔＸｅ２，Ｖｘｅ＋ΔＶｘｅ２）は（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）に対応する終端上体位置速度を意味している。なお、この場合の定常歩容（仮歩容）の生成処理では、上体水平位置速度以外の変数の初期状態（時刻Ｔｓでの状態）は、例えば上体水平位置速度の初期値候補を（Ｘｓ，Ｖｘｓ）とした場合と同一に設定すればよい。Ｓ２１６ではさらに、前記Ｓ２１０と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
次いでＳ２１８に進み、（Ｘｓ，Ｖｘｓ）およびその付近の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対する上体水平位置速度境界条件誤差を基に、（Ｘｓ，Ｖｘｓ）の次の初期値候補が探索法（擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など）により決定される。すなわち、（Ｘｓ，Ｖｘｓ）およびその付近の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対する上体水平位置速度境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補（Ｘｓ，Ｖｘｓ）から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、上体水平位置速度境界条件誤差をより小さくするような初期値候補（Ｘｓ，Ｖｘｓ）が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）が決定された後、Ｓ２０６に戻る。
Ｓ２１４の判断結果がＮＯとなる限りは上記した処理（Ｓ２０６〜Ｓ２１８の処理）が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）に対応する定常歩容の生成処理（Ｓ２０８）におけるＳ３００（図２４参照）では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補（Ｘｓ，Ｖｘｓ）に対応するＳ２０８の処理におけるＳ３１０（図２４参照）で決定したものに設定される。そして、Ｓ２１４の判断結果がＹＥＳになると、繰り返しループ（Ｓ２０４）を抜けてＳ２２０に進む。なお、Ｓ２０４の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
Ｓ２２０では、本来の初期時刻０（今回歩容の終端時刻）における初期上体水平位置速度（Ｘ０，Ｖ０）と初期時刻０における初期上体鉛直位置速度（Ｚ０、Ｖｚ０）と初期時刻０における初期上体姿勢角および角速度が求められる。
具体的には、（Ｘ０，Ｖ０）と（Ｚ０，Ｖｚ０）は、Ｓ３１０において決定された上体傾斜復元モーメントＺＭＰ換算値パターン、時刻Ｔｓにおける定常歩容の初期上体姿勢角および角速度と、Ｓ２０４のループを抜けた後の時刻Ｔｓにおける上体水平位置速度（Ｘｓ，Ｖｘｓ）を基に、歩容の条件を満足するように歩容を生成した場合における、第２旋回歩容から第１旋回歩容に切り換わった瞬間の時刻、すなわち、時刻ｋ＝Ｔｃｙｃ（時刻Ｔｅ−Ｔｓ）であるときに決定される上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Ｔｃｙｃから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図１７のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値に決定される。同様に、初期状態姿勢角および角速度は、時刻ｋ＝Ｔｃｙｃ（時刻Ｔｅ−Ｔｓ）であるときに決定される上体姿勢角及び角加速度を、時刻Ｔｃｙｃから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図１７のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値に決定される。
次いでＳ２２２に進み、定常歩容初期発散成分ｑ［０］が次式から求められる。
ｑ［０］＝Ｘ０＋Ｖ０／ω０            …式４０
ただしω０は、発散についての解説で述べたように、ある所定の値である。
次にＳ２２４に進み、定常歩容初期発散成分ｑ［０］が今回歩容支持脚座標系から見た値に変換され、これがｑ”［０］として求められる。また、初期上体鉛直位置速度（Ｚ０，Ｖｚ０）が今回歩容支持脚座標系から見た値に変換され、これが（Ｚ０”，Ｖｚ０”）として求められる。
補足すると、（Ｚ０”，Ｖｚ０”）は、第２旋回歩容の支持脚座標系（図１７のＸ”，Ｙ”，Ｚ”座標系）から見た第２旋回歩容終端上体鉛直位置速度に一致している。また、ｑ”［０］も第２旋回歩容の支持脚座標系（図１７のＸ”，Ｙ”，Ｚ”座標系）から見た第２旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、（Ｚ０”，Ｖｚ０”）およびｑ”［０］を算出するようにしても良い。
さらに、Ｓ２２６に進み、本来の初期時刻０（今回歩容の終端時刻）における初期逆位相腕振り角および角速度（θａｚ０，ωａｚ０）を求め、さらに、これを今回歩容の支持脚座標系から見た値である（θａｚ０”，ωａｚ０”）を求める。具体的には、（θａｚ０，ωａｚ０）は、Ｓ３１４およびＳ３１６において決定された逆位相腕振り復元角加速度パターン、定常歩容の初期（時刻Ｔｓ）逆位相腕振り角および角速度とを基に、歩容の条件を満足するように歩容を生成した場合における（より具体的には、上体姿勢角・逆位相腕振り角復元期間以外では、床反力モーメント鉛直成分が許容範囲を越えないように、逆位相腕振り角軌道を決定し、上体姿勢角・逆位相腕振り角復元期間では、前記基準逆位相腕振り角加速度βａｒｅｆと逆位相腕振り復元角加速度βａｒｅｃの和が発生するように逆位相腕振り角軌道を決定した場合における）第２旋回歩容から第１旋回歩容に切り換わった瞬間の時刻、すなわち、時刻ｋ＝Ｔｃｙｃ（時刻Ｔｅ−Ｔｓ）であるときに決定される逆位相腕振り角および角速度を、時刻Ｔｃｙｃから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図１７のＸ’’’，Ｙ’’’，Ｚ’’’座標系）から見た値に変換した値に決定される。
以上により、図１３のＳ０２４の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図１３のＳ０２６に進み、今回歩容の歩容パラメータを決定（一部は仮決定）する。Ｓ０２６では、より具体的には、図３９に示すフローチャートに従って、以下の処理が行われる。
まず、Ｓ６００において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。
具体的には、今回歩容初期遊脚足平位置姿勢（今回歩容遊脚足平位置姿勢の初期値）は、今回歩容支持脚座標系から見た現在遊脚位置姿勢（前回歩容終端遊脚位置姿勢）に設定される。今回歩容初期支持脚足平位置姿勢（今回歩容支持脚足平位置姿勢の初期値）は、今回歩容支持脚座標系から見た現在支持脚足平位置姿勢（前回歩容終端支持脚足平位置姿勢）に設定される。また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た次回歩容支持脚座標系（今回歩容に係わる１歩目の遊脚着床位置姿勢の要求値）に対応して決定される。すなわち、今回歩容終端遊脚足平位置姿勢から遊脚足平２２を床に接触させたまま、すべらないように該足平２２をその底面のほぼ全面が接地するまで回転させたときの、該足平２２の代表点が今回歩容支持脚座標系から見た次回歩容支持脚座標系の原点に合致するように今回歩容終端遊脚足平位置姿勢が決定される。
今回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、支持脚足平着地予定位置姿勢を設定する。支持脚足平着地予定位置姿勢は、今回歩容支持脚座標から見た次次回歩容支持脚座標（今回歩容に係わる２歩目の遊脚足平位置姿勢の要求値）に対応して設定される。より具体的には、支持脚足平着地予定位置姿勢は、その位置姿勢から、足平２２を床に接触させたまま、すべらないように該足平２２をその底面のほぼ全面が床に接地するまで回転させたときの該足平２２の代表点が今回歩容支持脚座標から見た次次回歩容支持脚座標の原点に合致するように設定される。
今回歩容終端支持脚足平位置姿勢は、現在支持脚位置姿勢（今回歩容初期支持脚足平位置姿勢）から、次回歩容支持脚座標系に対応する足平着地予定位置姿勢（前記要求パラメータにおける２歩目の遊脚側足平着地位置姿勢の要求値）に至る足平位置姿勢軌道を、今回歩容終端まで前記有限時間整定フィルタにより生成することにより求められる。
次いで、Ｓ６０２に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。ただし、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる（今回歩容終端での基準上体姿勢角及び角速度がそれぞれ定常歩容初期の基準上体姿勢角及び角速度に一致する）ように上記パラメータが設定される。なお、本参考例では、傾斜角に関する基準上体姿勢は、今回歩容及び定常歩容のいずれでも定常的な鉛直姿勢である。
次いで、Ｓ６０４に進み、今回歩容の基準腕姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。ただし、今回歩容の初期基準腕姿勢およびその変化率が基準腕姿勢および変化率の現在瞬間値に一致し、かつ、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように上記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定（図１５のＳ１０４）の場合と同様、たとえば、両腕体５，５の全体の重心位置（上体３に対する相対位置）、左右の手先（両腕体５，５の先端）の左右方向の間隔および逆位相腕振り角に関するパラメータが決定される。尚、本参考例では、両腕体５，５の全体の重心位置は、上体３に対して一定に維持されるように設定される。
次いで、Ｓ６０６に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図６のように実質的に連続な（値がステップ状に飛ばない）軌道になるように設定される。
ただし、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。
具体的には、まず、前記図１３のＳ０２４の処理（定常歩容初期状態の決定処理）で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値（Ｚ０”，Ｖｚ０”）、すなわち、図２３のＳ２２４で求めた（Ｚ０”，Ｖｚ０”）等を基に、例えば前記式０４（あるいはロボット１のキネマティクスモデル）を用いて、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。具体的には、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、Ｓ２２４で求めた定常歩容の上体鉛直位置Ｚ０”に対応する図１２のモデルの上体質点鉛直位置と、定常歩容初期の各足平位置を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直位置とを式０４に代入することで求められる。また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、Ｓ２２４で求めた定常歩容の上体鉛直速度Ｖｚ０”に対応する図１２のモデルの上体質点鉛直速度と、定常歩容初期の各足平鉛直速度を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直速度とを式０４の両辺を微分してなる式に代入することにより求められる。なお、この初期全体重心鉛直位置速度の算出は、より厳密なモデルを用いて行なうようにしてもよい。
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を、次式４１ａ、４１ｂの終端全体重心鉛直位置速度に代入すると共に、前回の目標歩容瞬時値（より厳密には、前回目標歩容の終端状態を今回支持脚座標系に変換したもの）の全体重心鉛直位置および速度を、式４１ａ、４１ｂの初期全体重心鉛直位置および速度に代入し、式４１ａ、４１ｂの関係を満足するように、今回歩容の床反力鉛直成分パターン（より具体的にはパラメータ値）が決定される。ただし、式４１ａ、４１ｂにおける積分値は今回歩容の初期から終端までの期間の積分値とする。
終端全体重心鉛直位置−初期全体重心鉛直位置
＝（床反力鉛直成分／ロボットの全体質量）の２階積分
＋重力加速度の２階積分
＋初期全体重心鉛直速度＊１歩の時間
…式４１ａ
終端全体重心鉛直速度−初期全体重心鉛直速度
＝（床反力鉛直成分／ロボットの全体質量）の１階積分
＋重力加速度の１階積分
…式４１ｂ
ただし、重力加速度は負の値とする。
より具体的には、まず、図６のような床反力鉛直成分パターンを規定する床反力鉛直成分パラメータ（折れ点の時刻等）のうちの、少なくとも２つのパラメータを独立な未知変数として、その未知変数の値を、式４１ａ、４１ｂからなる連立方程式を解いて決定する。
未知変数とする床反力鉛直成分パラメータには、例えば、図６の台形の高さ（床反力鉛直成分のピーク値）と幅（片脚支持期時間）とを選択すれば良い。この場合、図６の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。補足すると、未知変数を１つとすると、一般的には式４１ａ、４１ｂの連立方程式を満足する解が存在しない。
次いで、Ｓ６０８に進み、床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］（具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ）が、定常歩容の第１旋回歩容や第２旋回歩容と同様に設定される。たとえば図４０に示すようなパターンで床反力水平成分許容範囲が設定される。本参考例では、先にＳ６０６で決定した床反力鉛直成分パターンに応じて前記式１２に基づいて床反力水平成分許容範囲が設定される。
次いで、Ｓ６１０に進み、床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］（具体的には該床反力モーメント鉛直成分許容範囲のパターンを規定するパラメータ）が、定常歩容の第１旋回歩容や第２旋回歩容と同様に設定される。たとえば図４１に示すようなパターンで床反力モーメント鉛直成分許容範囲が設定される。本参考例では、先にＳ６０６で決定した床反力鉛直成分パターンに応じて前記式１０１２に基づいて床反力モーメント鉛直成分許容範囲が設定される
次いで、Ｓ６１２に進み、今回歩容のＺＭＰ軌道（具体的にはＺＭＰ軌道を規定するパラメータで、軌道の折れ点の時刻や位置）が、定常歩容の第１旋回歩容や第２旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図７に示すごとく設定される。ただし、今回歩容のＺＭＰ軌道が前記定常歩容のＺＭＰ軌道に連続してつながるように上記パラメータを設定される。つまり、今回歩容終端におけるＺＭＰの位置が定常歩容初期のＺＭＰ位置に一致するように、ＺＭＰ軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるＺＭＰ軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のＺＭＰ軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ＺＭＰ軌道が、空中期開始時から、定常歩容初期のＺＭＰ位置まで、直線的に連続して変化するようにＺＭＰ軌道パラメータを設定すればよい。
なお、Ｓ６１２で決定される今回歩容のＺＭＰ軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとく設定した今回歩容のＺＭＰ軌道を、以降、今回歩容の仮目標ＺＭＰ軌道と呼ぶこととする。
最後に、Ｓ６１４に進み、上体姿勢角・逆位相腕振り角復元期間［Ｔａ，Ｔｂ］が設定される。上体姿勢角・逆位相腕振り角復元開始時刻Ｔａは、定常歩容の第２旋回歩容におけるＴｍに相当し、上体姿勢角・逆位相腕振り角復元修了時刻Ｔｂは、定常歩容の第２旋回歩容におけるＴｓ２に相当するものである。これらの時刻Ｔａ，Ｔｂの設定の仕方は、それぞれＴｍおよびＴｓ２の設定の仕方と同様である。
図１３の説明に戻って、上記のごとくＳ０２６に示す処理（今回歩容の歩容パラメータ決定処理）を行って後、次いでＳ０２８に進み、今回歩容の歩容パラメータ（ＺＭＰ軌道パラメータ）が修正され、また、逆位相腕振り角に関するパラメータが決定される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべくＺＭＰ軌道パラメータが修正され、かつ、逆位相腕振り角が定常歩容の逆位相腕振り角軌道に収束するように今回歩容の逆位相腕振り角に関するパラメータが決定される。
図４２はその処理を示すサブルーチン・フロー・チャートである。
まずＳ７００を経てＳ７０２に進み、仮目標ＺＭＰパターンとその他の今回歩容パラメータを基に、今回歩容終端時刻までの仮今回歩容が仮生成される。
Ｓ７０２では、図４３に示すフローチャートに従って、以下の処理が行われる。
以下説明すると、Ｓ８００において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻ｋに０が代入される。また、前回目標歩容の終端状態（より具体的には、上体水平位置速度、上体鉛直位置速度、上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢などの歩容状態の終端値）を今回支持脚座標系に変換したものを、今回歩容初期状態とする。
補足すると、目標腕姿勢は、目標逆位相腕振り角・角速度を含む。
次いで、Ｓ８０２を経てＳ８０４において、仮歩容生成用時刻ｋが今回歩容終端時刻Ｔｃｕｒｒ以前であるか否か（ｋ≦Ｔｃｕｒｒであるか否か）が判断され、その判断結果がＹＥＳある場合には、Ｓ８０６の今回歩容瞬時値決定サブルーチンに進み、今回歩容の時刻ｋの瞬時値が決定される。Ｓ８０６の歩容瞬時値決定サブルーチンでは、前述のＳ３０６と同様、図２５に示すごとく仮歩容を生成する。ただし、歩容パラメータとして、定常歩容パラメータの代わりに今回歩容パラメータが用いられる。
次いでＳ８０８に進み、仮歩容生成用時刻ｋがΔｋだけ増加され、Ｓ８０４に戻る。
Ｓ８０４の判断結果がＮＯである場合には、図４３に示すフローチャートの処理が完了する。
以上の処理により、仮の今回歩容が初期から終端まで生成される。
次いでＳ７０４に進み、上記のごとくＳ７０２で求めた今回歩容終端での上体水平位置速度（Ｘｅ，Ｖｘｅ）から、終端発散成分ｑ０［ｋ］（ｋ＝Ｔｃｕｒｒ）が図示の式（前記式１０）を用いて求められる。
次いでＳ７０６に進み、今回歩容終端発散成分ｑ０［ｋ］と定常歩容初期発散成分ｑ”（図２３のＳ２２４で求めたもの）との差である終端発散成分誤差ｅｒｒｑが図示の式を用いて求められる。さらに、Ｓ７０８に進んで、その求めた終端発散成分誤差ｅｒｒｑが許容範囲内（０近傍の範囲）にあるか否か判断する。
Ｓ７０８の判断結果がＮＯであるときはＳ７１０に進み、ａ＝Δａ（Δａは所定の微小量）とし、図４４の関係に従って現在の仮目標ＺＭＰパターンに台形状の修正を加えた目標ＺＭＰを基に、前記Ｓ７０２と同様に、終端までの仮今回歩容を計算する。ここで、図４４を参照して、ａは、今回歩容終端発散成分を定常歩容初期発散成分にできるだけ一致させる（今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に近づける）ために、仮目標ＺＭＰを修正するための台形パターンの高さである。この場合、本参考例では、仮目標ＺＭＰの修正は、支持脚足平２２の底面のほぼ全面が接地する期間（足底全面接地期間）、すなわち、床反力水平成分許容範囲が十分に広いものとなる期間において行なうようにしており、上記台形パターンの折れ点の時刻は、足底全面接地期間における仮目標ＺＭＰの折れ点の時刻に合わせて設定されている。なお、Ｓ７１０でａ＝Δａとするのは、現在の仮目標ＺＭＰ軌道を上記台形パターンによって微小量、修正したときの前記終端発散成分誤差ｅｒｒｑの変化を観測するためである。
上記のようにＳ７１０にて、ａ＝Δａとして仮目標ＺＭＰ軌道を修正したときの仮今回歩容を終端まで生成した後、さらにＳ７１２に進み、Ｓ７１０で求めた仮今回歩容終端での上体水平位置速度（Ｘｅ１，Ｖｘｅ１）を基に、この仮今回歩容における終端発散成分ｑ１［ｋ］が図示の式（前記式１０）を用いて求められる。
尚、Ｓ７１０においてΔａは、本参考例では、適宜に設定される微小量の定数としたが、以下に説明する繰り返し演算によって終端発散成分誤差ｅｒｒｑが小さくなるにつれてΔａを減少させるように該Δａを設定するようにしても良い。ただし、定数にしておいても、数回の繰り返し演算で終端発散成分誤差ｅｒｒｑを許容範囲内に収めることができる。
次いでＳ７１４に進み、パラメータ感度ｒ（Δａに対する終端発散成分誤差の変化の割合）が図示の式から求められる。さらに、Ｓ７１６に進み、ａ＝−ｅｒｒｑ／ｒ、すなわちＳ７０６で求めた終端発散成分誤差ｅｒｒｑを、Ｓ７１４で求めたパラメータ感度ｒで割った値を高さａとする台形パターンの修正量を図４４の関係に従って仮目標ＺＭＰパターンに加えることにより、仮目標ＺＭＰパターンが修正される（新たな仮目標ＺＭＰパターンが決定される）。
次いでＳ７０２に戻る。そして、Ｓ７０８の判断結果がＮＯである限りは、上記したＳ７０２〜Ｓ７１６の処理が繰り返され、Ｓ７０８の判断結果がＹＥＳになったときには、その繰り返しループ（Ｓ７００）を抜けてＳ７１８に進む。
Ｓ７１８では、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、および仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に、今回歩容の上体姿勢角軌道が定常歩容の上体姿勢角軌道に近づくように、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）のパターンが決定される。ここで決定するＺＭＰｒｅｃは、後述する今回歩容瞬時値の生成処理で、床反力水平成分許容範囲が十分に大きいものとなる期間（片脚支持期内の期間）において、上体姿勢角軌道を定常歩容につながらせる（近づける）ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性（Ｓ７０８の条件）を維持できるように、仮目標ＺＭＰを修正するためのものである。
このＺＭＰｒｅｃは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図３０における第２旋回歩容の期間のＺＭＰｒｅｃの台形パターンと同様に、今回歩容のＺＭＰｒｅｃの台形パターンを設定し、台形の頂点（折れ点）の時刻は既知とする（より具体的には台形の折れ点の時刻を目標ＺＭＰの折れ点時刻に合わせる）と共に、台形高さを未知数とし、以下のようにＺＭＰｒｅｃの台形高さ（パラメータ）が求められる。ただし、ＺＭＰｒｅｃの台形パターンが立ち上がり始める時刻をＴａとし、台形パターンから０に戻る時刻をＴｂとする。
上記のように上体姿勢復元モーメントＺＭＰ換算値パターンの未知パラメータがひとつの場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、１歩容の中でのＺＭＰｒｅｃパターンを複雑にし、未知パラメータを２つ以上にして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげても良いが、ＺＭＰｒｅｃパターンがジグザグに大きく変動し過ぎる恐れがある。
以下では、算出原理を説明した後、算出手順を説明する。
前述のごとくＳ７０２でＺＭＰｒｅｃパターンの台形高さを０として求めた仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差を求め、これをθｅｒｒとする。また、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差を求め、これをｖθｅｒｒとする。
ここで、ＺＭＰｒｅｃパターンの台形高さをある値ｂｃｕｒｒとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第１旋回歩容が生成されると想定する。ただし、第１旋回歩容の上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃパターンは、図２４のＳ３１０において求められた第１旋回歩容のＺＭＰｒｅｃパターン（高さが前記ａｃｙｃ１である図３０の台形パターン）とある値ｂ１の和であるとする。
このようにして生成された歩容をＺＭＰｒｅｃ修正歩容と呼び、その終端（第１旋回歩容の終端）上体姿勢角と角速度をそれぞれθ１、ｖθ１とする。
Ｓ０２４における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容（最終的にＳ３１０において決定された定常歩容初期上体姿勢角および角速度を初期値とし、ＺＭＰｒｅｃパターンをＳ３１０において求められたパターン（高さがａｃｙｃ１である図３０の台形パターン）とした場合の定常歩容）の第１旋回歩容終端上体姿勢角と角速度をそれぞれθ１ｏｒｇ、ｖθ１ｏｒｇとする。
ここで、Δθ１、Δｖθ１を次のように定義する。
Δθ１＝θ１−θ１ｏｒｇ                …式５０
Δｖθ１＝ｖθ１−ｖθ１ｏｒｇ          …式５１
Δθ１およびΔｖθ１は、ＺＭＰｒｅｃ修正歩容と本来の定常歩容を第１旋回歩容の終端まで生成した時点において、両者間における上体姿勢角の差及び角速度の差を意味する。もし、Δθ１およびΔｖθ１が０になれば、ＺＭＰｒｅｃ修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ＺＭＰｒｅｃパターンの台形高さを前記ａｃｙｃ２として第２旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθ１およびΔｖθ１が０となる今回歩容台形高さｂｃｕｒｒ、第１旋回歩容台形高さｂ１を求め、求めたｂｃｕｒｒを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット１の上体姿勢角に関する動力学モデルが図１２に示すフライホイールＦＨｘ、ＦＨｙのような線形特性を持つことから、Δθ１およびΔｖθ１は、今回歩容台形高さｂｃｕｒｒ、第１旋回歩容台形高さｂ１、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角の差θｅｒｒ、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度の差ｖθｅｒｒと以下の関係を持つ。
Δθ１＝ｃ１１＊ｂｃｕｒｒ＋ｃ１２＊ｂ１＋θｅｒｒ＋ｅ１＊ｖθｅｒｒ    …式５２
Δｖθ１＝ｃ２１＊ｂｃｕｒｒ＋ｃ２２＊ｂ１＋ｅ２＊ｖθｅｒｒ            …式５３
だだし、ｃ１１、ｃ１２、ｃ２１、ｃ２２、ｅ１、ｅ２は、今回歩容、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃパターンのパラメータ（特に時間に関するパラメータ）などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での上体姿勢角の差θｅｒｒと角速度の差Ｖθｅｒｒが求められる。
次いで、式５２，５３の係数であるｃ１１、ｃ１２、ｃ２１、ｃ２２、ｅ１、ｅ２が、今回歩容、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃパターンのパラメータ（特に時間に関するパラメータ）などを基に求められる。
次いで式５２、式５３の右辺が０となるように今回歩容台形高さｂｃｕｒｒ、第１旋回歩容台形高さｂ１が決定される。すなわち、式５２、式５３の左辺を０とした連立方程式を解くことによって、ｂｃｕｒｒ、ｂ１が求められる。
最後に、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰｒｅｃ）の台形パターンの台形高さが、上記求めた今回歩容台形高さｂｃｕｒｒに設定される。
次いでＳ７２０に進み、現在の仮目標ＺＭＰパターン（Ｓ７００の繰り返しループを抜けたときの仮目標ＺＭＰパターン）に、Ｓ７１８で上記のように求めた上体姿勢復元モーメントＺＭＰ換算値パターンを加算してなるパターンが今回歩容の目標ＺＭＰパターンとして決定される。なお、この処理は、Ｓ７１０においてΔａの高さの台形パターンを仮目標ＺＭＰパターンに加える処理と同様である。
以下に仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算した理由を述べる。
Ｓ７００のループにおいて生成される仮今回歩容は、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰｒｅｃを０（ＺＭＰｒｅｃの台形パターンの高さパラメータを０）にして生成されたものである。このようにしてＳ７００のループで最終的に生成された仮今回歩容では、その上体位置速度は、定常歩容に連続し、もしくは近づくが、上体姿勢角は、定常歩容の上体姿勢角からずれ、場合によっては発散してしまう。
Ｓ７１８で求められた上体姿勢復元モーメントＺＭＰ換算値パターンは、上体姿勢角の定常歩容に対するずれを０に近づけるための上体姿勢角加速度を発生させるものである。
しかし、Ｓ７００のループで最終的に得られた仮目標ＺＭＰパターンを修正することなく、Ｓ７１８で求められた上体姿勢復元モーメントＺＭＰ換算値パターンに応じた上体姿勢角加速度を発生させると、動力学的平衡条件（ロボットの重力と慣性力との合力が目標ＺＭＰに作用するモーメントが鉛直成分を除いて０になること）を満足させるために、上体水平位置軌道を前記仮今回歩容の上体水平位置軌道からずらさざるを得なくなる。そこで、本実施例では、上体水平位置軌道をＳ７００のループで最終的に得られるものからずらさなくて済むように、ＺＭＰｒｅｃによって仮目標ＺＭＰパターンを修正することとした。
前記仮今回歩容の運動に加えて、Ｓ７１８で求めた上体姿勢復元モーメントＺＭＰ換算値パターンに対応する上体姿勢角加速度を発生させると、ＺＭＰ（運動によって発生する重力と慣性力の合力の鉛直成分を除くモーメントが０になる点）は上体姿勢復元モーメントＺＭＰ換算値だけずれる。したがって、逆に、仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算したパターンを目標ＺＭＰパターンとして、Ｓ７１８で求めた上体姿勢復元モーメントＺＭＰ換算値パターンに対応する上体傾斜モードの上体姿勢角加速度を発生させながら、目標ＺＭＰパターンを満足する今回歩容を生成すれば、前記仮今回歩容と同じ上体並進運動となる。
以上が、仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算したパターンを目標ＺＭＰパターンとした理由である。
次いでＳ７２２に進み、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差および仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を基に、今回歩容の逆位相腕振り角軌道が定常歩容の逆位相腕振り角軌道に近づくように、逆位相腕振り復元角加速度パターンが決定される。このパターンの決定方法は、Ｓ７１８で上体姿勢復元モーメントＺＭＰ換算値パターンを決定する方法と、変数名が次のように異なること以外は、ほぼ同じである。
上体姿勢復元モーメントＺＭＰ換算値パターン→逆位相腕振り復元角加速度パターン
水平成分→モーメント鉛直成分
以下に詳細を説明する。ここで決定する逆位相腕振り復元角加速度パターンは、後述する今回歩容瞬時値の生成処理で、床反力モーメント鉛直成分許容範囲が十分に大きいものとなる期間（片脚支持期内の期間）において、逆位相腕振り角軌道を定常歩容につながらせる（近づける）ように修正するためのものである。
この逆位相腕振り復元角加速度パターンは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図３６における第２旋回歩容の期間の逆位相腕振り復元角加速度の台形パターンと同様に、今回歩容の逆位相腕振り復元角加速度の台形パターンを設定し、台形の頂点（折れ点）の時刻は既知とする（より具体的には台形の折れ点の時刻を目標ＺＭＰの折れ点時刻に合わせる）と共に、台形高さを未知数とし、以下のように逆位相腕振り復元角加速度の台形高さ（パラメータ）が求められる。ただし、逆位相腕振り復元角加速度の台形パターンが立ち上がり始める時刻をＴａとし、台形パターンから０に戻る時刻をＴｂとする。
上記のように逆位相腕振り復元角加速度パターンの未知パラメータがひとつの場合には、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、１歩容の中での逆位相腕振り復元角加速度パターンを複雑にし、未知パラメータを２つ以上にして、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度との両者を定常歩容に連続につなげても良いが、逆位相腕振り復元角加速度パターンがジグザグに大きく変動し過ぎる恐れがある。
前述のごとくＳ７０２で逆位相腕振り復元角加速度パターンの台形高さを０として求めた仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差を求め、これをθａｚｅｒｒとする。また、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を求め、これをｖθｚｅｒｒとする。
ここで、逆位相腕振り復元角加速度パターンの台形高さをある値ｂｚｃｕｒｒとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第１旋回歩容が生成されると想定する。ただし、第１旋回歩容の逆位相腕振り復元角加速度パターンは、図２４のＳ３１４において求められた第１旋回歩容の逆位相腕振り復元角加速度パターン（高さが前記ａｚｃｙｃ１である図３６の台形パターン）とある値ｂｚ１の和であるとする。
このようにして生成された歩容を逆位相腕振り復元角加速度修正歩容と呼び、その終端（第１旋回歩容の終端）逆位相腕振り角と角速度をそれぞれθｚ１、ｖθｚ１とする。
Ｓ０２４における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容（最終的にＳ３１４において決定された定常歩容初期逆位相腕振り角および角速度を初期値とし、逆位相腕振り復元角加速度パターンをＳ３１４において求められたパターン（高さがａｚｃｙｃ１である図３６の台形パターン）とした場合の定常歩容）の第１旋回歩容終端逆位相腕振り角と角速度をそれぞれθｚ１ｏｒｇ、ｖθｚ１ｏｒｇとする。
ここで、Δθｚ１、Δｖθｚ１を次のように定義する。
Δθｚ１＝θｚ１−θｚ１ｏｒｇ                  …式１０５０
Δｖθｚ１＝ｖθｚ１−ｖθｚ１ｏｒｇ            …式１０５１
Δθｚ１およびΔｖθｚ１は、逆位相腕振り復元角加速度修正歩容と本来の定常歩容を第１旋回歩容の終端まで生成した時点において、両者間における逆位相腕振り角の差及び角速度の差を意味する。もし、Δθｚ１およびΔｖθｚ１が０になれば、逆位相腕振り復元角加速度修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、逆位相腕振り復元角加速度パターンの台形高さを前記ａｚｃｙｃ２として第２旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθｚ１およびΔｖθｚ１が０となる今回歩容台形高さｂｚｃｕｒｒ、第１旋回歩容台形高さｂｚ１を求め、求めたｂｚｃｕｒｒを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット１の逆位相腕振り角に関する動力学モデルが図１２に示すフライホイールＦＨａｚのような線形特性を持つことから、Δθｚ１およびΔｖθｚ１は、今回歩容台形高さｂｚｃｕｒｒ、第１旋回歩容台形高さｂｚ１、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角の差θｚｅｒｒ、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初
期逆位相腕振り角速度の差ｖθｚｅｒｒと以下の関係を持つ。
2005000534.tif 000007
だだし、ｃｚ１１、ｃｚ１２、ｃｚ２１、ｃｚ２２、ｅｚ１、ｅｚ２は、今回歩容、第１旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ（特に時間に関するパラメータ）などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での逆位相腕振り角の差θｚｅｒｒと角速度の差ｖθｚｅｒｒが求められる。
次いで、式１０５２，１０５３の係数であるｃｚ１１、ｃｚ１２、ｃｚ２１、ｃｚ２２、ｅｚ１、ｅｚ２が、今回歩容、第１旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ（特に時間に関するパラメータ）などを基に求められる。
次いで式１０５２、式１０５３の右辺が０となるように今回歩容台形高さｂｚｃｕｒｒ、第１旋回歩容台形高さｂｚ１が決定される。すなわち、式１０５２、式１０５３の左辺を０とした連立方程式を解くことによって、ｂｚｃｕｒｒ、ｂｚ１が求められる。
最後に、今回歩容の逆位相腕振り復元角加速度の台形パターンの台形高さが、上記求めた今回歩容台形高さｂｚｃｕｒｒに設定される。
図１３に戻って、上記のごとくＳ０２８において今回歩容パラメータを修正した後、あるいはＳ０１６の判断結果がＮＯである場合には、Ｓ０３０に進み、今回歩容瞬時値が決定される。
Ｓ０３０では、そのサブルーチンである図４５の処理が実行される。
図４５のＳ１４００からＳ１４１１までは、図２５のＳ４００からＳ４１１までと同一の処理が行なわれ、次に、Ｓ１４１２のサブルーチンである図４６のＳ１０００〜Ｓ１０１８の処理が行なわれる。
具体的には、まずＳ１０００において、目標上体ヨー角に現在時刻での基準上体ヨー角の値を代入する。また、腕姿勢逆位相腕振り角・角速度を除き、目標腕姿勢に現在時刻での基準腕姿勢の値を代入する。
次いでＳ１００２に進み、現在時刻が、上体姿勢角・逆位相腕振り角復元期間（時刻Ｔａから時刻Ｔｂの期間）の間にあるか否かが判定される。Ｓ１００２の判定結果がＮＯであるならば、Ｓ１００４に進み、ＹＥＳであるならばＳ１００６に進む。
Ｓ１００４では、上体傾斜角・逆位相腕振り角復元期間でない場合の上体水平加速度α、上体角加速度β、逆位相腕振り角加速度βａ算出処理（図２６のＳ５０４からＳ５２８）と同様の処理を行う。
Ｓ１００６に進む場合では、まず、Ｓ１００６において、仮に上体並進モードの運動をさせた場合に今回（時刻ｋ）目標ＺＭＰを満足するために必要な上体水平加速度αｔｍｐを求める。
次いでＳ１００８に進み、現在時刻における上体傾斜復元モーメントＺＭＰ換算値パターンの瞬間値ＺＭＰｒｅｃを、Ｓ７１８において決定した上体傾斜復元モーメントＺＭＰ換算値パターンに関するパラメータを基に算出する。
次いでＳ１０１０に進み、現在時刻における逆位相腕振り復元角加速度パターンの瞬間値βａｒｅｃを、Ｓ７２２において決定した逆位相腕振り復元角加速度パターンに関するパラメータを基に算出する。
次いでＳ１０１２に進み、図示する式によって、上体傾斜モードの上体角加速度（上体傾斜角加速度）βが決定される。
次いでＳ１０１４に進み、図示する式によって、上体水平加速度αが決定される。
次いでＳ１０１６に進み、Ｓ１０１０で算出した逆位相腕振り復元角加速度パターンの瞬間値βａｒｅｃと基準逆位相腕振り角加速度βａｒｅｆ（基準逆位相腕振り角を２階微分した値）の和を目標逆位相腕振り角加速度βａに代入する。
次いでＳ１０１８に進み、上体水平加速度がαの場合の床反力水平成分Ｆｘを求める。
次いでＳ１４１４に進み、上体水平加速度と上体姿勢角加速度を積分して上体水平速度と上体姿勢角速度（上体傾斜角速度）を算出する。これをさらに積分して、上体水平位置と上体姿勢（上体傾斜角）を決定する。なお、上体姿勢のうちの上体ヨー角は、本参考例では基準上体ヨー角に決定される。
次いでＳ１４１６に進み、逆位相腕振り加速度を積分して逆位相腕振り角速度を算出する。これをさらに積分して、逆位相腕振り角を決定する。
以上のごとく、図１３のＳ０３０の処理が完了する。
次いでＳ０３２に進み、歩容生成用時刻ｔをΔｔだけ増やし、Ｓ０１４に戻り、以上のごとく歩容生成を続ける。
以上が、歩容生成装置１００における目標歩容生成処理である。
図４を参照して本参考例に係る装置の動作をさらに説明すると、歩容生成装置１００において、上記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢（軌道）、目標腕姿勢（軌道）が、ロボット幾何学モデル（逆キネマティクス演算部）１０２に送出される。
また、目標足平位置姿勢（軌道）、目標ＺＭＰ軌道（目標全床反力中心点軌道）、および目標全床反力（軌道）（目標床反力水平成分と目標床反力鉛直成分）は、複合コンプライアンス動作決定部１０４に送られると共に、目標床反力分配器１０６にも送られる。そして、目標床反力分配器１０６で、床反力は各足平２２Ｒ，２２Ｌに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部１０４に送られる。
複合コンプライアンス動作決定部１０４から、機構変形補償付き修正目標足平位置姿勢（軌道）がロボット幾何学モデル１０２に送られる。ロボット幾何学モデル１０２は、目標上体位置姿勢（軌道）と機構変形補償付き修正目標足平位置姿勢（軌道）を入力されると、それらを満足する脚体２，２の１２個の関節（１０Ｒ（Ｌ）など）の関節変位指令（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の１２個の関節の変位を追従制御する。また、ロボット幾何学モデル１０２は、目標腕姿勢を満足する腕関節の変位指定（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の腕体の１２個の関節の変位を追従制御する。
ロボット１に生じた床反力（詳しくは実各足床反力）は６軸力センサ５０によって検出される。その検出値は前記複合コンプライアンス動作決定部１０４に送られる。
また、ロボット１に生じた実上体姿勢角偏差（目標上体姿勢と実上体姿勢（上体３の実際の姿勢）との偏差）のうちの姿勢傾斜角偏差θｅｒｒｘ，θｅｒｒｙ（詳しくは目標上体姿勢のうちの鉛直方向に対する傾斜角に対する実上体姿勢のうちの鉛直方向に対する傾斜角の偏差で、ロール方向（Ｘ軸回り）の姿勢傾斜角偏差がθｅｒｒｘであり、ピッチ方向（Ｙ軸回り）の姿勢傾斜角偏差がθｅｒｒｙである）が姿勢センサ５４を介して検出され、その検出値は姿勢傾斜安定化制御演算部１１２に送られる。この姿勢傾斜安定化制御演算部１１２で、ロボット１の実上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメント水平成分が算出されて複合コンプライアンス動作決定部１０４に送られる。
より具体的には、本参考例では、補償全床反力モーメント水平成分Ｍｄｍｄｘｙは、例えばＰＤ制御則を用いて次式により決定される。
補償全床反力モーメント水平成分Ｍｄｍｄｘｙ
＝Ｋθｂ＊上体姿勢傾斜角偏差
＋Ｋωｂ＊上体姿勢傾斜角速度偏差
……ｄ２５
ここで、Ｋθｂ、Ｋωｂは所定のゲインである。また、上体姿勢傾斜角速度偏差は、上体姿勢傾斜角偏差の時間微分値であり、目標上体姿勢傾斜角速度に対する実上体姿勢傾斜角速度の偏差を意味する。また、上体姿勢傾斜角偏差は、より詳しくは、ロボット１の上体３のロール方向（Ｘ軸回り）の姿勢傾斜角偏差と、ピッチ方向（Ｙ軸回り）の姿勢傾斜角偏差とからなるベクトルである。
また、ロボット１に生じた前記実上体姿勢角偏差のうちのヨー角偏差θｅｒｒｚ（詳しくは実上体姿勢角偏差のうちのヨー方向（Ｚ軸回り）の姿勢角偏差がθｅｒｒｚである）が姿勢センサ５４を介して検出され、その検出値はヨー安定化制御演算部１１３に送られる。このヨー安定化制御演算部１１３で、ロボット１の実上体ヨー角および／または角速度を目標上体ヨー角および／または角速度に収束させるための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメント鉛直成分が算出されて複合コンプライアンス動作決定部１０４に送られる。複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメントが作用するように目標床反力を修正する。
より具体的には、本参考例では、補償全床反力モーメント鉛直成分Ｍｄｍｄｚは、例えばＰＤ制御則を用いて次式により決定される。
補償全床反力モーメント鉛直成分Ｍｄｍｄｚ＝Ｋθｂｚ＊上体ヨー角偏差
＋Ｋωｂｚ＊上体ヨー角速度偏差
……ｄ２６
ここで、Ｋθｂｚ、Ｋωｂｚは所定のゲインである。また、上体ヨー角速度偏差は、上体ヨー角偏差の時間微分値であり、目標上体ヨー角速度に対する実上体ヨー角速度の偏差を意味する。
補足すると、補償全床反力モーメント鉛直成分Ｍｄｍｄｚを前記式ｄ２６により求めるとき、足平２２と床の間の鉛直軸まわり回転滑りまたは鉛直軸まわり回転振動を防止したいだけなら、Ｋθｂｚを０にすれば良い。上体ヨー角偏差までも０に近づけようとすると、実床反力モーメント鉛直成分が大きくなる傾向があるからである。
複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメント水平成分が作用するように目標床反力モーメント水平成分を修正し、さらに、目標歩容に動力学的に釣り合う目標全床反力中心点（目標ＺＭＰ）回りの目標床反力鉛直成分に補償全床反力モーメント鉛直成分を付加的に追加することによって目標床反力モーメント鉛直成分を修正する。
複合コンプライアンス動作決定部１０４は、修正された目標床反力に、センサ検出値などから算出される実ロボット１の状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差（あるいは制御偏差の２乗）の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
尚、この発明の要旨は歩容生成装置１００におけるロボット１の歩容生成にあり、上記した複合コンプライアンス動作決定部１０４などの構成および動作は、本出願人が先に出願した特開平１１−３００６６１号公報などに詳細に記載されているので、説明を以上に留める。
Ｓ０２８において、今回歩容パラメータは、前述のごとく、今回歩容の終端発散成分が、定常旋回歩容の初期発散成分ｑ［０］を今回歩容の支持脚座標系から見た値であるｑ”に一致するように修正される。
実は、発散成分とは、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容に収束するか否かを評価する指標である。収束する場合にちょうど、今回歩容の終端発散成分が、定常旋回初期発散成分ｑ［０］を今回歩容の支持脚座標系から見た値であるｑ”に一致するように、本来、発散成分は定義されなければならない。
式１０で定義した発散成分は、実は、上記の性質を近似的に満足する発散成分である。
したがって、本参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容の上体水平位置に収束する（近づく）ように、今回歩容パラメータを修正した、と言える。
これは、ＰＣＴ公開公報ＷＯ／０２／４０２２４のものと同様である。
特に、本参考例においては、その条件（今回歩容が定常歩容に近づく）を満足するように、今回歩容の歩容パラメータのうちの目標ＺＭＰパターンを修正するようにした。図４７を参照して説明すると、同図に符合Ｂで示す軌道は、上記したように歩容の境界において発散成分が一致するように生成した上体水平位置軌道を示す。
同図に符合Ａで示す軌道は、定常旋回歩容との境界における上体水平位置速度が一致するように今回歩容を生成し、続いて定常歩容を繰り返し生成した場合の上体水平位置軌道を示す。
図示の如く、符合Ｂで示す軌道は、今回歩容と最初の定常旋回歩容との境界においては、一般的に符合Ａで示す軌道からずれているが、その後、徐々に符合Ａで示す軌道に収束し（近づき）、次の定常旋回歩容時期において符合Ａで示す軌道にほぼ一致する。このように、歩容境界で発散成分のみを一致させる歩容生成手法でも、歩容境界で位置速度両方を一致させる歩容生成手法と同様、歩容の発散を防止することができる。尚、同図に符合Ｃで示す例は、それらを考慮せずに軌道を生成した場合の例を示す。このような場合は、生成した軌道は経時的に発散してしまう。当然、目標ＺＭＰパターンを複雑なものにし、複数のパラメータを調整して、位置速度両方を一致させても良いが、目標ＺＭＰパターンがジグザグになる恐れがある。なお、位置速度両方を一致させれば、発散成分も一致するから、位置速度両方を一致させる方法も発散成分を一致させる方法の特殊例であると言える。
またさらに、本参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が定常旋回歩容の上体姿勢角に収束し（近づき）、もしくは一致するように、今回歩容パラメータを修正した、と言える。但し、厳密には、今回歩容直後の第１旋回歩容だけは、前記の如く求めた第１旋回歩容台形高さｂ１，ｂｚ１によって修正された歩容にする必要がある。別の言い方をすれば、今回歩容と第１旋回歩容とを合わせた歩容を今回歩容と見なせば、本参考例においては、上記の如く歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が第２旋回歩容と第１旋回歩容とからなる定常歩容の上体姿勢角に収束し（近づき）、もしくは一致するように、今回歩容パラメータを修正した、と言える。
次に、本参考例の変形態様を以下にいくつか説明する。なお、以下に説明する変形態様は、後述の各実施形態においても同様である。
本参考例では、理解を容易にするために、床反力水平成分許容範囲は、前後方向（Ｘ軸方向）成分と左右方向（Ｙ軸方向）成分それぞれ独立に設定できることとしたが、前後方向と左右方向の関係式で表した方が、よりスリップし難い歩容が生成される。
例えば、次式のようにいわゆる摩擦円を許容範囲としても良い。
（床反力水平成分のＸ成分）＊（床反力水平成分のＸ成分）
＋（床反力水平成分のＹ成分）＊（床反力水平成分のＹ成分）
≦（ｋａ＊μ＊Ｆｚ）＊（ｋａ＊μ＊Ｆｚ）
…式５９
ただし、Ｆｚは、目標床反力鉛直成分をμは摩擦係数、ｋａは１以下の正の定数を表す。
ただし、以上のように、床反力水平成分許容範囲を前後方向と左右方向の関係式で表す場合、許容範囲を同時にあるいは交互に満足するように、サジタルプレーン上での運動とラテラルプレーン上での運動を同時あるいは交互に求める必要がある。
また、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とを上記のごとく別々に設定する代わりに、床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにしても良い。床反力水平成分が大きくなるにつれ、床反力モーメント鉛直成分の摩擦限界は、小さくなる。また、床反力モーメント鉛直成分が大きくなるにつれ、床反力水平成分の摩擦限界は、小さくなる。したがって、このことを鑑みて床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにした方が、より現実の摩擦限界特性に近い許容範囲を設定することができる。具体的には、床反力水平成分の絶対値と床反力モーメント鉛直成分の絶対値との重み付き平均に対して許容範囲を設定しても良い。
前記参考例では、床反力水平成分と目標ＺＭＰまわりの床反力モーメント水平成分を適切な値にするために、上体傾斜モードと上体並進モードとの２つの運動モードを用いたが、これら以外の運動モードを用いても良い。
例えば、図４８のように、股関節を中心に上体姿勢を回転させると、全体重心まわりの角運動量が変化すると共に全体重心も変化する。この運動と前記上体並進モードをある所定の割合で重ね合わせると（合成すると）、前記上体傾斜モードとほとんど同じ運動になり、床反力水平成分が発生しなくなる。したがって、これを改めて前記上体傾斜モードとみなせば、本参考例のアルゴリズムにしたがって、同様の歩容を生成することができる。
したがって、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生の割合が異なるふたつの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ＺＭＰまわりの床反力モーメントとを発生させることができるからである。
また、上体姿勢を変化させる運動モード以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ＺＭＰまわりの床反力モーメントが発生できる運動モードを選ぶことが好ましい。
例えば、左右の腕体の先端位置を同一方向に振りまわす運動モード、接地していない（空中に存在する）足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に０に戻すべきである。なお、左右の腕体の先端位置を同一方向に振りまわす運動モードと逆位相腕振りモードとを併用してもよいことはもちろんである。
また、３つ以上の運動モードを用いても良い。
また、選択した運動モードのうちの少なくとも２つは、その運動モードによる床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなる（各運動モードの挙動を一義的に決定できない）からである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ＺＭＰまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ＺＭＰまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。このようにすると、運動モードの変位が小さくなるからである。
また、床反力モーメント鉛直成分が許容範囲を越えないようにするために（スピン力をキャンセルするために）、逆位相腕振りモードの代わりに、上体ヨー回転モードを用いても良い。上体ヨー回転モードを用いる場合には、ロボット１の上体３を腰寄りの部分（例えば図１の５４の部材の下側の部分）とその上側の部分（例えば図１の５４の部材の上側の部分）とに分割し、上側の部分が腰寄りの部分に対してヨー方向に（例えば上体３の体幹軸回り）に回転し得るように設けておくことが好ましい。このようにすると、脚体２，２の姿勢に影響を及ぼすことなく、上体３の上側の部分を回転させて、床反力モーメント鉛直成分を調整することができる。このようにした場合の参考例は、例えば前記参考例で逆位相腕振り角、その角速度およびその角加速度を決定する代わりに、上体３の上側の部分の回転角、その角速度およびその角加速度を決定するようにすればよい。この場合、両腕体５，５は、例えば上体３の上側の部分に対する相対位置を一定とすればよい。但し、上体３の上側の部分のヨー回転に加えて、両腕体５，５の逆位相腕振り動作を加えてもよいことはもちろんである。
また、床反力モーメント鉛直成分が発生するものであれば、腕、上体以外の部位を変位させる運動モードを用いても良い。
例えば、空中期において、両脚先端を前後逆方向に動かすモードを用いても良い。
あるいは、床反力モーメント鉛直成分が発生するいくつかの運動モードを併用しても良い。例えば、逆位相腕振りモードと上体ヨー回転モードを併用しても良い。
また、上体ヨー回転モードおよび逆位相腕振りモードは、全体重心位置が変わらないように（言い換えると床反力水平成分を発生させずに）床反力モーメント鉛直成分を発生させるモードであるが、全体重心位置が変わってしまう（言い換えると床反力水平成分を発生してしまう）運動でも良い。上体並進モードと組み合わせることにより、床反力水平成分を調整することができるからである。
前記参考例に用いた動力学モデル（図１２の動力学モデル）以外にも以下のモデルを用いても良い。
１）図４９に示したように複数のリンクに質点を設定した非線形なモデル（多質点モデル）。このモデルの各リンクには、イナーシャ（慣性モーメント）が設定されていてもよい。
２）本願出願人によるＰＣＴ公開公報ＷＯ／０２／４０２２４に示された３質点モデル
３）上体ヨー回転モードあるいは逆位相腕振りモードによって生じる慣性力のモーメントを無視したモデル。
４）重力と慣性力との合力（またはこれと釣り合う床反力）と上体並進運動との関係を表す部分モデルと、上記合力と上体姿勢回転運動（上体傾斜運動と上体ヨー回転運動）の関係を表す部分モデルとを分離して持つ分離型モデル。例えば、図１２に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図１２に示すフライホイールは、上記合力と上体姿勢回転運動との関係を表す部分モデルである。
なお、上記１）〜４）のいずれの場合でも、慣性力のモーメント鉛直成分を発生させる運動モードは必要である。
また、各処理で用いられるモデルは同一でも良いし、処理に応じて適宜、モデルを使い分けても良い。例えば、前記定常歩容は今回歩容の終端状態を決定するためだけに生成されるものであるので、その定常歩容の動力学的な精度に対する要求は、今回歩容に比べて小さい。そこで、例えば、今回歩容の生成処理では、図１２の動力学モデル（３質点＋フライホイールのモデル）を用いる一方、定常歩容の生成処理（特に図２１のＳ４０８、Ｓ４１２）では、各脚体２の質量を無視し、上体３に対応する上体質点３ｍと、フライホールＦＨｘ、ＦＨｙ、ＦＨａｚ、ＦＨｂｚとで構成される動力学モデル（図１２のモデルで脚質点２ｍ，２ｍを除去した１質点＋フライホイールのモデル）を用いて定常歩容を生成するようにしてもよい。この場合の定常歩容の生成処理では、前記参考例において、脚質点２ｍの質量を０として前記図２５のＳ４０８、Ｓ４１２の処理を行なうようにすればよい。このようにすると、定常歩容の生成処理における演算量を大幅に削減できる。
尚、前記参考例において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記参考例を２足移動ロボットに関して説明してきたが、３足以上の多脚ロボットにも応用することができる。
前記参考例のごとく、探索手法を用いたり、部分的に解析手法を用いたりして、定常歩容の初期状態（主に初期上体水平位置速度、初期上体鉛直位置速度および逆位相腕振り角・角速度のこと）を決定する手法の代わりに、あらかじめ、上記手法を用いて様々な定常歩容パラメータに対して計算しておき、定常歩容パラメータと定常歩容の初期状態との関係をマップ化あるいは近似式化して記憶して置き、実移動時には、マップ化あるいは近似式化された上記関係を基に、定常歩容の初期値を決定しても良い。
さらには、マップ化あるいは近似式化された上記関係と上記関数ｆを合成した関数をマップ化あるいは近似式化して記憶しても良い。すなわち、前記した足平軌道パラメータ、床反力鉛直軌道パラメータ等からなる定常歩容パラメータから、定常歩容の発散成分を直接求める関数をマップ化あるいは近似式化して記憶しても良い。例えば、複数種類の代表的な定常歩容パラメータの組のそれぞれに対して、事前に定常歩容を生成しておき、各組の定常歩容パラメータに対する定常歩容の初期状態（図１３のＳ０２４で求めるもの）を求めておき、さらにその各組の定常歩容パラメータと、定常歩容初期状態との関係を表すマップをあらかじめ作成しておく。そして、目標歩容を生成する際に、決定された定常歩容パラメータの組から、上記マップに基づいて選択あるいは補間によって定常歩容初期状態を求めるようにすればよい。このようにすれば、今回歩容の生成毎に、定常歩容を生成する必要がなくなり、目標歩容生成処理の演算量を大幅に削減できる。
定常歩容につなげる（近づける）ための今回歩容の修正方法として、本参考例では、今回歩容の目標ＺＭＰパラメータを修正したが、それ以外のパラメータを修正しても良い。
たとえば、今回歩容の遊脚の空中での軌道を変えても良い。また、たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、遊脚を離床後すばやく前方に移動させて遊脚重心位置を前方にずらす。こうすることにより、目標ＺＭＰを満足するための上体水平位置は、前方により一層加速せざるを得なくなる。この結果、上体水平位置が今回歩容終端において、より一層前方に移動し、定常歩容に一致させることができる。
また、目標ＺＭＰパラメータを修正する代わりに、今回歩容の周期を修正しても良い。たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、今回歩容の周期を長くすれば良い。今回歩容の周期を長くことで、上体水平位置が移動する時間が延び、それだけ前方に移動できるからである。
ただし、探索手法によって、上体水平位置等の適正値を決定するときに、目標ＺＭＰパラメータを修正する場合では、目標ＺＭＰの修正量にほぼ比例して、今回歩容終端上体水平位置が変化するので、上記適正値の探索回数が少なくて済む。これに対して、遊脚重心軌道や歩容の周期を修正する場合には、その修正に対して、今回歩容終端上体水平位置が、かなり非線形に変化するので、上記適正値の探索により多くの探索回数を要する。
定常歩容につなげる（近づける）ための今回歩容の修正方法として、本参考例では、今回歩容の目標ＺＭＰパラメータを修正した。この方法では、場合によっては、目標ＺＭＰパラメータの修正量（前記図３４の修正量ａ）が過大になることがある。たとえば、その場でホッピングしている歩容からいきなり高速で移動する要求（走行要求）が与えられると、高速の定常歩容（走行の定常歩容）につなげる（近づける）ために、目標ＺＭＰパラメータは、進行方向に対して後ろに極端に大きくずらす必要が生じる。この場合には、上記したように目標ＺＭＰパラメータ以外の歩容パラメータも修正することが望ましい。但し、この場合では、実は、急激な加速を要求すること自体に無理があったわけであるから、要求値自身を修正しても良い。
要求値の修正を行なう場合には、例えば、とりあえず本参考例に示した手順に従って、要求（要求パラメータ）を満足する定常歩容を求め、この定常歩容につながるように今回歩容パラメータを決定した時点で、今回歩容の目標ＺＭＰ軌道の安定余裕が少なくなり過ぎたか否かを判定する。そして、安定余裕が少なくなり過ぎた場合（いわゆる支持多角形から目標ＺＭＰが外れたり、支持多角形の端部付近に目標ＺＭＰが位置するような場合）には、要求を修正するようにすれば良い。
または、あらかじめ歩容の加減速度（次回歩容初期速度−今回歩容初期速度）／今回歩容の周期）の許容範囲を設定して置き、要求（歩容周期に関する要求パラメータ）を受けた時点で、該要求に対応する加減速度を求め、その求めた加減速度が許容範囲を越えていたら、許容範囲になるように、要求を修正しても良い。
補足すると、前記ΔＭｐ、ΔＦｐ、ΔＭｒ、ΔＦｒ、ΔＭａｚおよびΔＭｂｚは、上記のごとく単純な動力学モデルを用いる場合には、動力学演算により解析的に求めても良いが、一般的なより複雑な動力学モデルを用いる場合には、上体３を上体並進モードで微小量だけ加速または上体傾斜モードで微小量だけ加速させた場合の床反力を求め、加速させなかった場合の床反力との差を求め、この差を上記微小量で割ることによって求めれば良い。
また、あらかじめ標準的な歩容におけるΔＭｐ、ΔＦｐ、ΔＭｒ、ΔＦｒ、ΔＭａｚ、ΔＭｂｚおよびΔＭｐ／ΔＭｒなどのそれぞれの平均値を求めておいて、それを用いても良い。ΔＭｐ、ΔＦｐ、ΔＭｒ、ΔＦｒ、ΔＭａｚ、ΔＭｂｚおよびΔＭｐ／ΔＭｒは、状態（姿勢とその変化率）によって変わるので、各瞬間の状態ごとに求める方法に較べて、精度は若干低下するが、上記モデルよりも複雑なモデルを用いた場合には、演算量を大幅に低減できる。
今回歩容の逆位相腕振り復元角加速度パターンの台形高さｂｚｃｕｒｒを決定する方法として、以下の方法を用いても良い。
前記逆位相腕振り復元角加速度修正歩容（図４２のＳ７２２の説明を参照）の今回歩容終端時点での逆位相腕振り角と角速度をそれぞれθｚｃｕｒｒ、ｖθｚｃｕｒｒとし、これらと、定常歩容の逆位相腕振り角、角速度との差をΔθｚｃｅｒｒ、Δｖθｚｃｅｒｒとする。
歩容周期をインターバルとし、仮今回歩容の終端逆位相腕振り角、角速度と定常歩容の初期逆位相腕振り角、角速度との差θｚｅｒｒ、ｖθｚｅｒｒを前回状態、ｂｚｃｕｒｒを入力、Δθｚｃｅｒｒ、Δｖθｚｃｅｒｒを今回状態とする離散系の状態方程式を立てて、Δθｚｃｅｒｒ、Δｖθｚｃｅｒｒを０に収束させるように、現代制御理論等を用いてフィードバック則を決定し、これに基づいてｂｚｃｕｒｒを求めても良い。
今回歩容およびまたは定常歩容の逆位相腕振り復元角加速度βａｒｅｃは、台形パターンとせず、各瞬間において、目標逆位相腕振り角・角速度と基準逆位相腕振り角・角速度との差などを基に、その差が０に収束するように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βａｒｅｃの値を決定しても良い。
今回歩容の逆位相腕振り復元角加速度βａｒｅｃは、台形パターンとせず、各瞬間において今回歩容の目標逆位相腕振り角・角速度を基に、これらが第１旋回歩容の初期逆位相腕振り角・角速度に近づくように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βａｒｅｃを決定しても良い。
斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分許容範囲の代わりに、並進床反力の床面平行成分（床面に平行な成分）、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分（これは摩擦力に比例する）の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分（摩擦力）の許容範囲を設定する場合に関して説明（この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である）すると、該摩擦力は、床面の水平面に対する傾斜角度θｆ（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式７２の関係が成立する。従って、前記参考例と同様のアルゴリズムに歩容を生成する場合、この式７２の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式７２の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
摩擦力＝床反力水平成分＊ｃｏｓ（θｆ）−床反力鉛直成分＊ｓｉｎ（θｆ）
…式７２
また、斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力モーメント鉛直成分は、式１０７２によって床面摩擦力法線方向モーメントに変換することができるので、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち床面摩擦力法線方向モーメントの許容範囲の許容範囲を設定するようにしてもよい。
床面摩擦力法線方向モーメント＝床反力モーメント鉛直成分＊ｃｏｓ（θｆ）
…式１０７２
今回歩容のパラメータ決定は、前記参考例のように前回歩容が完了した時点で行う以外に、本願出願人によるＰＣＴ公開公報ＷＯ／０２／４０２２４に記述されているように、今回歩容の生成途中で、再決定しても良い。こうすることにより、演算量は増えるが、歩容に対する要求に変更があった時に即応できるからである。
また、歩容の修正（今回歩容パラメータを再決定すること）が、今回制御周期で間に合わない場合には、とりあえず今回は、修正しない歩容あるいは暫定的に修正した歩容（探索途中の歩容であって、完全には、探索完了条件（歩容境界条件のずれが許容値以内に入っていること）を満足していない歩容）を出力し、次回制御周期までに、あるいは複数制御周期後までに（暫定的でない）適切な修正歩容にしても良い。修正された目標ＺＭＰ軌道と目標床反力鉛直成分軌道は連続であり、短時間後では、これらが急激に変化することはないので、今回歩容の目標ＺＭＰ軌道と目標床反力鉛直成分軌道が若干ぎざぎざになるだけで、ほとんど問題はない。
また、前記参考例では、図５の走行歩容を生成する場合を例に採って説明したが、ロボット１の歩行歩容を生成する場合でも、前記参考例と同様に目標歩容を生成できる。この場合には、例えば前記参考例において、目標床反力鉛直成分を前記図６に示したものに代えて、例えば図５０に示すようなパターンで設定すればよい。この例では、床反力鉛直成分軌道は、両脚支持期では床反力鉛直成分の増加側に凸の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸の台形状に設定される。なお、台形部分の高さＣ１、Ｃ２の設定方法などの詳細は、例えば本願出願人によるＰＣＴ公開公報ＷＯ／０３／０５７４２５／Ａ１に詳細に説明されているのでここでの説明は省略する。
次に、以上説明した参考例およびその変形態様を基礎として、本発明の第１実施形態を図５３〜図５８を参照して説明する。なお、本実施形態の説明において、前記参考例と同一構成部分もしくは同一機能部分については前記参考例と同一の参照符号を用いて説明を省略する。特に、本実施形態は、先にも述べたように、前記図１〜図３および図５〜図１２を参照して説明した事項は、前記参考例と同一である。
本実施形態が前記参考例と相違する点の概要を説明すると、本実施形態では、目標上体姿勢角と実上体姿勢角の差である実上体姿勢角偏差（上体３の鉛直方向に対する傾き角の偏差およびヨー角の偏差）、及び／又はその変化率を０に近づけるために、コンプライアンス制御への目標床反力を操作することに加え、目標歩容も修正するようにした。特に、実上体姿勢偏差のうちのヨー角成分及び／又はその角速度に応じて、目標歩容に動力学的に釣り合う（目標歩容の運動の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの鉛直成分に釣り合う）目標ＺＭＰまわりの床反力モーメントの鉛直成分も修正するようにした。
本実施形態における制御ユニット６０の機能的構成を表すブロック図を図５３に示す。以下、本実施形態における制御ユニット６０の機能的構成が前記参考例のもの（図４のもの）と相違する点を説明する。
本実施形態においては、姿勢傾斜安定化制御演算部１１２において算出される補償全床反力モーメント水平成分Ｍｄｍｄｘｙは、補償全床反力モーメント水平成分分配器１１０に入力される。補償全床反力モーメント水平成分分配器１１０は、補償全床反力モーメント水平成分Ｍｄｍｄｘｙを、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とに分配する。換言すれば、実上体姿勢傾斜角偏差を基に、姿勢傾斜安定化制御演算部１１２及び補償全床反力モーメント水平成分分配器１１０により、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とが決定される。
具体的には、補償全床反力モーメント水平成分分配器１１０においては、まず、モデル操作床反力モーメント水平成分が次式で決定される。なお、床反力モーメント水平成分許容範囲は、後述するごとく歩容生成装置１００において決定される。
Ｍｄｍｄｘｙ＞床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分＝−Ｍｄｍｄｘｙ
＋床反力モーメント水平成分許容範囲上限値
Ｍｄｍｄｘｙ＜床反力モーメント水平成分許容範囲下限値である場合
モデル操作床反力モーメント水平成分＝−Ｍｄｍｄｘｙ
＋床反力モーメント水平成分許容範囲下限値
床反力モーメント水平成分許容範囲下限値≦Ｍｄｍｄｘｙ、且つ、Ｍｄｍｄｘｙ≦床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分＝０
……式ｄ２７ａ
次に、コンプライアンス制御用目標床反力モーメント水平成分が次式で決定される。
コンプライアンス制御用目標床反力モーメント水平成分
＝Ｍｄｍｄｘｙ＋モデル操作床反力モーメント水平成分
……式ｄ２７ｂ
従って、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がＭｄｍｄｘｙに等しくなるようにそれらの床反力モーメント水平成分が決定される。
上記のような演算を行なう補償全床反力モーメント水平成分分配器１１０をブロック図で表すと、図５４に示すようになる。
また、ヨー安定化制御演算部１１３において前記参考例と同様に決定された補償全床反力モーメント鉛直成分Ｍｄｍｄｚ（前記式ｄ２６を参照）は、モデル操作床反力モーメント鉛直成分決定器１１１に入力される。モデル操作床反力モーメント鉛直成分決定器１１１は、補償全床反力モーメント鉛直成分Ｍｄｍｄｚを基に、モデル操作床反力モーメント鉛直成分を決定する。換言すれば、実上体姿勢角偏差のうちの上体ヨー角偏差を基に、ヨー安定化制御演算部１１３及びモデル操作床反力モーメント鉛直成分決定器１１１により、補償全床反力モーメント鉛直成分Ｍｄｍｄｚとモデル操作床反力モーメント鉛直成分とが決定される。
具体的には、モデル操作床反力モーメント鉛直成分決定器１１１において、モデル操作床反力モーメント鉛直成分が次式で決定される。なお、床反力モーメント鉛直成分補償量許容範囲は、後述するごとく歩容生成装置１００において決定される。
Ｍｄｍｄｚ＞床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分＝−Ｍｄｍｄｚ
＋床反力モーメント鉛直成分補償量許容範囲上限値
Ｍｄｍｄｚ＜床反力モーメント鉛直成分補償量許容範囲下限値である場合
モデル操作床反力モーメント鉛直成分＝−Ｍｄｍｄｚ
＋床反力モーメント鉛直成分補償量許容範囲下限値
床反力モーメント鉛直成分補償量許容範囲下限値≦Ｍｄｍｄｚ、且つ、Ｍｄｍｄｚ≦床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分＝０
……式ｄ２６ｂ
上記のような演算を行なうモデル操作床反力モーメント鉛直成分決定器１１１をブロック図で表すと、図５５に示すようになる。従って、モデル操作床反力モーメント鉛直成分は、補償全床反力モーメント鉛直成分Ｍｄｍｄｚのうち、床反力モーメント鉛直成分補償量許容範囲を逸脱した分の符号を反転させたものに設定される。
コンプライアンス制御用目標床反力モーメント水平成分および補償全床反力モーメント鉛直成分Ｍｄｍｄｚは、複合コンプライアンス動作決定部１０４に送られる。
モデル操作床反力モーメント水平成分および鉛直成分は、歩容生成装置１００に送られる。
尚、補償全床反力モーメント鉛直成分Ｍｄｍｄｚの代わりに、補償全床反力モーメント鉛直成分Ｍｄｍｄｚとモデル操作床反力モーメント鉛直成分との和を、コンプライアンス制御用目標値として、複合コンプライアンス動作決定部１０４に送っても良い。
複合コンプライアンス動作決定部１０４は、歩容生成装置１００が生成する目標歩容の運動にロボット１の運動を追従させつつ、歩容生成装置１００が生成する目標全床反力にコンプライアンス制御用目標床反力モーメント水平成分と補償全床反力モーメント鉛直成分Ｍｄｍｄｚを加えることによって修正される目標全床反力に実床反力が近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。
この場合、ロボット１の足平位置姿勢や床反力の全ての状態を目標に一致させることは事実上不可能であるので、前記参考例と同様、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。
詳細は後述するが、歩容生成装置１００は、該歩容生成装置１００において決定される目標ＺＭＰまわりの床反力モーメント水平成分がモデル操作床反力モーメント水平成分となるように動力学モデルを用いて目標歩容の運動（特に上体位置姿勢軌道）を生成する。さらに、歩容生成装置１００は、モデル操作床反力モーメントが０であるとして生成された目標歩容（仮目標歩容）に動力学的に釣り合う目標全床反力中心点（目標ＺＭＰ）回りの目標床反力モーメント鉛直成分にモデル操作床反力モーメント鉛直成分が付加的に発生するように目標歩容の運動（特に腕振り軌道）を修正する。
これら以外の、制御ユニット６０の機能的構成は、前記参考例と同一である。補足すると、前記参考例で生成した目標歩容は、本実施形態で、前記モデル操作床反力モーメント水平成分と、モデル操作床反力モーメント鉛直成分とを定常的に０に設定した場合に生成される目標歩容と同じである。
第１実施形態における歩容生成装置１００の動作（歩容生成処理）をそのメインフローチャートである図５６を用いて以下に詳説する。Ｓ３０１０からＳ３０２８までは、前記参考例の図１３のＳ０１０からＳ０２８と同様の処理を行う。
次いで、Ｓ３０３０に進み、コンプライアンス制御用の目標ＺＭＰまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータが決定される。
なお、床反力モーメント水平成分を、床反力鉛直成分で割ったものが、ＺＭＰ（床反力中心点）の目標ＺＭＰからのずれ量を表すものとなる。従って、床反力モーメント水平成分許容範囲を、床反力鉛直成分で割ることによって、床反力中心点に変換したＺＭＰ許容範囲（床反力中心点許容範囲）のパラメータを設定するようにしてもよい。
補足すると、Ｓ３０３０で決定するコンプライアンス制御用の床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分補償量許容範囲のパラメータとを基に、後述する今回歩容瞬時値決定サブルーチン（Ｓ３０３２のサブルーチン）において、それらの許容範囲の瞬時値が決定され、それが、前記補償全床反力モーメント水平成分分配器１１０およびモデル操作床反力モーメント鉛直成分決定器１１１における前記の処理に用いられる。
この床反力モーメント水平成分許容範囲については、本願出願人によるＰＣＴ出願ＰＣＴ／ＪＰ０３／００４３５に床反力モーメント許容範囲として設定方法が詳細に記載されているので、本明細書では、これ以上の説明を省略する。
前記床反力モーメント鉛直成分補償量は、歩容生成装置１００において、仮に、床反力モーメント鉛直成分が歩容生成用の床反力モーメント鉛直成分許容範囲（これはＳ３０２６において設定される）内に制限された目標歩容を生成した場合に、目標歩容の運動が発生する床反力モーメントに付加することができる床反力モーメント鉛直成分の補償量を意味する。したがって、歩容生成用の床反力モーメント鉛直成分許容範囲が実際の摩擦限界よりも十分に狭く設定されていなければ、床反力モーメント鉛直成分補償量許容範囲を広く設定することはできない。
床反力モーメント鉛直成分補償量許容範囲は、歩容生成用の床反力モーメント鉛直成分許容範囲（前記図４１を参照）と相似形に設定すれば良い。また、前記図５の走行歩容の空中期では、コンプライアンス制御用の床反力モーメント鉛直成分補償量許容範囲は、上限値が０、下限値が０の領域に設定される。
図５６に戻って、上記のごとくＳ３０３０においてコンプライアンス制御用の目標ＺＭＰまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータを決定した後、あるいはＳ３０１６の判断結果がＮＯである場合には、Ｓ３０３２に進み、今回歩容瞬時値が決定される。Ｓ３０３２では、目標ＺＭＰまわりに前記式ｄ２７ａに従って決定されるモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値が決定される。ただし、今回歩容に釣り合う（今回歩容の運動の慣性力と重力との合力が目標ＺＭＰまわりに発生する慣性力モーメントの鉛直成分に釣り合う）床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲を越えないように今回歩容瞬時値が決定される。
具体的には、図５７、図５８のフローチャートにしたがって歩容瞬時値が決定される。すなわち、Ｓ３０３０では、まず、図５７のＳ３４００からＳ３４１１までの処理が実行される。これらのＳ３４００からＳ３４１１までの処理は、前述した図４５のＳ１４００からＳ１４１１までの処理と全く同一である。
次いで、Ｓ３４１２に進み、前記図５６のＳ３０３０で決定したコンプライアンス制御用の床反力モーメント水平成分許容範囲および床反力モーメント鉛直成分補償量容範囲のパラメータを基に、現在時刻での床反力モーメント水平成分許容範囲［Ｍｘｙｍｉｎ，Ｍｘｙｍａｘ］と床反力モーメント鉛直成分補償量許容範囲［Ｍｚｃｍｉｎ，Ｍｚｃｍａｘ］の瞬時値（現在時刻ｔの今回値）が求められる。
求められた床反力モーメント水平成分許容範囲は、前記補償全床反力モーメント水平成分分配器１１０（図５３参照）に送られる。そして、この分配器１１０で前記式ｄ２７ａにより算出されたモデル操作床反力モーメントの今回値（現在時刻ｔの値）が歩容生成装置１００に与えられる。
また、求められた床反力モーメント鉛直成分補償量容範囲は、前記モデル操作床反力モーメント鉛直成分決定器１１１（図５３参照）に送られる。そして、このモデル操作床反力モーメント鉛直成分決定器１１１で前記式ｄ２６ｂにより算出されたモデル操作床反力モーメント鉛直成分の今回値（現在時刻ｔの値）が歩容生成装置１００に与えられる。
次いで、歩容生成装置１００の処理は、Ｓ３４１４に進み、補償全床反力モーメント分配器１１０から与えられたモデル操作床反力モーメント水平成分が目標ＺＭＰまわりに発生するように、今回歩容の上体水平加速度と上体姿勢傾斜角加速とが決定される。ただし、床反力水平成分Ｆｘが、Ｓ３４１０で決定された床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないように上体水平加速度および上体姿勢角加速度（上体傾斜角加速度）が決定される。
言い換えると、ロボット１の運動の慣性力と重力との合力が目標ＺＭＰまわりに作用するモーメント水平成分がモデル操作床反力モーメント水平成分の符号を反転したモーメントになるように、今回歩容の上体水平加速度と上体姿勢角加速（上体傾斜角加速度）とが決定される。ただし、慣性力水平成分の符号を反転した力が床反力水平成分許容範囲［Ｆｘｍｉｎ，Ｆｘｍａｘ］を越えないように上体水平加速度および上体姿勢傾斜角加速度が決定される。
Ｓ３４１４では、具体的には、図５８に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度とが決定される。本フローチャートは、Ｓ３１０４およびＳ３１３０を除いて、前記図２６と同様の処理が行われる。Ｓ３１０４およびＳ３１３０では、図２６のＳ５０４およびＳ５３０と異なり、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、上体傾斜モードの角加速度を０にして（より正確には上体傾斜モードの角加速度を基準上体姿勢角加速度に一致させて）、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰまわりに前記モデル操作床反力モーメント水平成分が発生するために必要な上体水平加速度（Ｓ３１０４ではαｔｍｐ、Ｓ３１３０ではα）が求められる。
これ以外の処理は図２６の処理と同じである。
以上のごとくＳ３４１４の処理を行った後、Ｓ３４１６に進み、図４５のＳ１４１４と同一の処理が実行され、今回歩容の上体水平位置および上体姿勢傾斜角（詳しくはそれらの現在時刻ｔにおける今回値）が決定される。
次いでＳ３４１８に進み、図４５のＳ１４１６と同一の処理が実行され、今回歩容の逆位相腕振り角および角速度（詳しくはそれらの現在時刻ｔにおける今回値）が決定される。
これにより、図５６のＳ３０３２の処理が完了する。
次いで図５６のＳ３０３４に進み、目標ＺＭＰまわりにモデル操作床反力モーメント鉛直成分が付加的に発生するように、Ｓ３０３２で生成した今回歩容瞬時値を修正する。
具体的には、モデル操作床反力モーメント鉛直成分に対応する逆位相腕振り角加速度の修正量βａａｄｄを次式によって求める。
逆位相腕振り角加速度の修正量βａａｄｄ
＝モデル操作床反力モーメント鉛直成分
／逆位相腕振り運動の等価慣性モーメントΔＭａｚ
さらに、βａａｄｄを制御周期の期間積分して、逆位相腕振り角速度の修正量を求め、さらにこれを積分して逆位相腕振り角の修正量を求める。
最後に、Ｓ３０３２で生成した今回歩容の逆位相腕振り角および角速度にそれぞれ、逆位相腕振り角速度の修正量および逆位相腕振り角の修正量を加えることにより、今回歩容の逆位相腕振り角および角速度を修正する。
次いでＳ３０３６に進み、時刻ｔに制御周期Δｔを加え、再び、Ｓ３０１４に戻り、制御周期毎のタイマー割り込みを待つ。
第１実施形態では、以上のごとく、歩容生成装置１００における目標歩容生成処理が行なわれ、目標上体位置姿勢、目標足平位置姿勢、目標腕姿勢（逆位相腕振り角を含む）、目標ＺＭＰおよび目標全床反力の瞬時値が逐次決定されて出力される。
この場合、目標全床反力は、コンプライアンス制御に必要な成分だけを出力しても良い。なお、目標ＺＭＰは、目標全床反力に含まれるが特に重要であるので、あえて出力として挙げた。また、複合コンプライアンス制御装置（図５３の点線で囲った部分）に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、コンプライアンス制御に対しては、目標ＺＭＰまわりの床反力モーメント水平成分が０になることを目標とする目標床反力（本来の意味での目標ＺＭＰを満足する目標床反力）が、歩容生成装置１００から出力される。
また、複合コンプライアンス制御装置に対しては、Ｓ３０３４において修正された今回歩容の床反力モーメント鉛直成分が目標値として歩容生成装置１００から出力される。
以上説明した第１実施形態の作用１として、目標歩容の運動は、モデル操作床反力モーメント水平成分が目標ＺＭＰまわりに発生するように生成されつつ、実際のロボッ１の床反力は、モデル操作床反力モーメント水平成分が付加されないように制御される。したがって、差し引きモデル操作床反力モーメント水平成分の分だけ、目標歩容の運動と床反力の不平衡（アンバランス）を生じる。このことは、実ロボット１の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を０に収束させる効果に関して言えば、モデル操作床反力モーメント水平成分の符号を反転した床反力モーメント水平成分を実ロボット１に作用させることと等価である。
つまり、モデル操作床反力モーメント水平成分を適宜決定することにより、実ロボット１を、修正目標歩容（実ロボット１の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を０に収束させる歩容）に収束させることができる。つまり、実ロボット１の姿勢傾斜を安定化させることができる。
作用２として、モデル操作床反力モーメント水平成分の符号を反転したモーメントとコンプライアンス制御用目標床反力モーメント水平成分との和がトータルの傾斜復元力（ロボット１の実上体姿勢傾斜角を目標上体姿勢傾斜角に復元させる力）になる。すなわち、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がトータルの姿勢傾斜復元力になる。
また、作用３として、モデル操作床反力モーメント水平成分は、ＺＭＰ存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢傾斜復元力を発生することができる。
また、作用４として、床反力水平成分が、床反力水平成分許容範囲を越えないように上体並進モードの上体並進加速度と上体傾斜モードの上体姿勢傾斜角加速度とが決定されるので、走行歩容における支持脚側脚体２の離床直前や着床直後など、大きな床反力水平成分を発生できない時期や、摩擦係数の小さい床をロボット１が移動する場合においてもロボット１のスリップを防止することができる。
また、作用５として、床反力の並進力鉛直成分が０の時期、すなわち、両脚がいずれも接地していない時期では、床反力水平成分の許容範囲が０に設定されることにより、前記した第１実施形態のアルゴリズムにより自動的に、上体並進モードに依存せずに上体傾斜モードに依存した姿勢傾斜復元が行われ、床と足底の間の摩擦力に依存せずに姿勢復元が行われる。したがって、この時期（空中期）においても、単に、上体並進モードを修正するだけの方式と異なり、有効に姿勢傾斜復元作用が働く。なお、この時には、床反力水平成分が０になるように生成されるから、歩容の全体重心水平加速度は０となる。
また、作用６として、上記したごとく、コンプライアンス制御に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、目標ＺＭＰまわりにモデル操作床反力モーメント水平成分を発生させるように歩容生成が行なわれても、コンプライアンス制御に対しては、目標ＺＭＰまわりの床反力モーメント水平成分が０になることを目標とする目標床反力が、歩容生成装置１００から与えられる。したがって、コンプライアンス制御による床反力制御を妨げず、コンプライアンス制御による床反力制御を適切に行うことができる。より具体的には、足平２２の本来の接地性が低下したり、足平２２の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
なお、後述するように、第２実施形態以降でも、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲を越えないように決定される。
なお、作用１から６は、本願出願人が先に提案したＰＣＴ／ＪＰ０３／００４３５の技術と同様である。
作用７として、目標歩容の運動は、モデル操作床反力モーメント鉛直成分が目標ＺＭＰまわりに付加的に発生するように生成されつつ、実際のロボット１の床反力は、歩容生成装置１００によりモデル操作床反力モーメント鉛直成分が付加された目標歩容に釣り合う目標床反力モーメント鉛直成分に補償全床反力モーメント鉛直成分Ｍｄｍｄｚを加えたものを目標値として、複合コンプライアンス制御により前記目標値に近づくように実床反力が制御される。Ｍｄｍｄｚが大きくなってくると、Ｍｄｍｄｚと逆方向のモデル操作床反力モーメント鉛直成分が目標歩容に付加されることから、複合コンプライアンス制御により前記目標値に近づくように実床反力を制御するようにしても、実床反力のモーメントの鉛直成分が過大になることがなく、その結果、実ロボット１のスピンを生じることなく、実ロボット１の上体姿勢ヨー角及び／又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び／又はヨー角速度との差を０に収束させる効果を奏することができる。
つまり、モデル操作床反力モーメント鉛直成分を適宜決定することにより、実ロボット１を、そのスピンが生じないようにしつつ、修正目標歩容（実ロボット１の上体姿勢ヨー角及び／又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び／又は上体姿勢ヨー角速度との差を０に収束させる歩容）に収束させることができる。つまり、実ロボット１のヨー回転を安定化させることができる。
作用８として、補償全床反力モーメント鉛直成分Ｍｄｍｄｚがトータルのヨー回転復元力になる。補償全床反力モーメント鉛直成分Ｍｄｍｄｚはヨー角偏差および／またはヨー角速度偏差を０に近づけるようにフィードバック制御則に基づき決定されるので、ヨー角偏差の制御的な安定性が保証されつつ、ヨー角偏差および／またはヨー角速度偏差を０に近づけることができる。
また、作用９として、モデル操作床反力モーメント鉛直成分は、床反力モーメント鉛直成分の許容範囲（あるいは摩擦限界）を無視していかなる値でも取ることが可能であるので、非常に高い姿勢ヨー回転復元力を発生することができる。
また、作用１０として、コンプライアンス制御に対しては、最終的に目標床反力モーメント鉛直成分が、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲の和の範囲を越えないように決定されるので、走行歩容における支持脚側脚体２の離床直前や着床直後など、大きな床反力モーメント鉛直成分を発生できない時期や、摩擦係数の小さい床をロボット１が移動する場合においてもコンプライアンス制御による床反力制御を適切に行うことができ、ロボット１のスピンを防止することができる。より具体的には、足平２２の本来の接地性が低下したり、足平２２の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
また、作用１１として、床反力の並進力鉛直成分が０の時期、すなわち、両脚がいずれも接地していない時期では、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲が０に設定されることにより、前記した本実施形態のアルゴリズムにより自動的に、実床反力モーメント鉛直成分に依存せずに逆位相腕振りモードに依存したヨー回転復元が行われ、床と足底の間の摩擦力に依存せずにヨー回転復元が行われる。したがって、この時期（空中期）においても、単に、コンプライアンス制御の目標床反力モーメント鉛直成分を修正するだけの方式と異なり、有効にヨー回転復元作用が働く。
作用１２として、目標ＺＭＰまわりに発生するモーメント水平成分が０になるように生成したとした場合の歩容を元歩容、前記第１実施形態の如く目標ＺＭＰまわりに発生するモーメント水平成分がモデル操作床反力モーメント水平成分になり、且つ、目標ＺＭＰまわりに発生するモーメント鉛直成分に付加的にモデル操作床反力モーメント鉛直成分が発生するように生成される歩容を修正歩容と呼ぶと、通常、元歩容と修正歩容とは異なる歩容となる。元歩容は定常歩容に漸近するように設定されているので、修正歩容は、通常、定常歩容に漸近しない歩容となる。
しかし、今回歩容（修正歩容）の生成が完了した直後に、再びＳ３０２０からＳ３０２８が実行され、修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、新たに設定される定常歩容に漸近するように、新たな今回歩容パラメータが決定されるので、継続的に（長期的に）安定性が保証された歩容を生成し続けることができる。
上記した作用１２は、本願出願人が先に提案したＰＣＴ／ＪＰ０３／００４３５の技術とほぼ同様である。但し、これに加えて本実施形態では、次のような作用も発生する。すなわち、ヨー角回転復元のために修正された逆位相腕振り角および角速度の終端状態を新たな初期状態とした新たな今回歩容の逆位相腕振り角軌道が新たに設定される定常歩容の逆位相腕振り角軌道に漸近するように、新たな今回歩容の逆位相腕振り角軌道に関するパラメータが決定されるので、継続的に（長期的に）逆位相腕振り角の安定性が保証された歩容を生成し続けることができる。
なお、本実施形態では、補償全床反力モーメント水平成分Ｍｄｍｄｘｙが床反力モーメント水平成分許容範囲内の値であるときには、モデル操作床反力モーメント水平成分は０になるが、このときのモデル操作床反力モーメント水平成分を図１２の動力学モデルの状態量（例えば動力学モデル上でのロボットの重心位置や、上体質点３ｍの位置等）に応じて設定するようにしてもよい。
また、本実施形態では、補償全床反力モーメント鉛直成分Ｍｄｍｄｚが床反力モーメント鉛直成分補償量許容範囲内の値であるときには、モデル操作床反力モーメント鉛直成分補償量は０になるが、このときのモデル操作床反力モーメント鉛直成分補償量を図１２の動力学モデルの状態量（例えば動力学モデル上でのロボット１の逆位相腕振り角および角速度、上体ヨー角および角速度等）に応じて設定するようにしてもよい。
以上説明した第１実施形態は、本発明のうちの第１発明、第２発明、第４〜第９発明および第１５発明の実施形態になっている。この場合、第１実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制限対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第１実施形態における歩容生成用の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］と床反力モーメント鉛直成分補償量許容範囲とを合わせたものが制限対象量の許容範囲に相当する。また、図５６のＳ３０３２で決定される今回歩容瞬時値の運動成分が目標運動の仮瞬時値に対応し、これをＳ３０３４で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、図１２の動力学モデルが相当する。
次に本発明の第２実施形態を図５９〜図６２を参照して説明する。なお、本実施形態の説明において、前記参考例もしくは前記第１実施形態と同一構成部分もしくは同一機能部分については前記参考例もしくは第１実施形態と同一の参照符号を用いて説明を省略する。本実施形態は、前記参考例で前記図１〜図３および図５〜図１２を参照して説明した事項は、前記参考例と同一である。
本実施形態が前記参考例および第１実施形態と相違する点の概要を説明すると、元歩容と修正歩容が同時に生成される。修正歩容は、実ロボット１の上体姿勢（傾斜角およびヨー角）の安定化のために元歩容から修正される。さらに、該修正歩容は、コンプライアンス制御により姿勢復元に必要な床反力モーメントを発生してもまだ余裕がある（目標ＺＭＰまわりに発生可能な床反力モーメントに余裕がある）場合には、この余裕を用いて、可能な範囲で元歩容に収束するように決定される。
本実施形態における制御ユニット６０の機能的構成を表すブロック図を図５９に示す。本実施形態では、姿勢傾斜安定化制御演算部１１２が求める補償全床反力モーメント水平成分Ｍｄｍｄｘｙは、歩容生成装置１００に入力される。
また、ヨー安定化制御演算部１１３が求める補償全床反力モーメント鉛直成分Ｍｄｍｄｚも、歩容生成装置１００に入力される。
そして、このＭｄｍｄｘｙおよびＭｄｍｄｚを基にモデル操作床反力モーメント（水平成分および鉛直成分）とコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）とを決定する補償全床反力モーメント分配器１２０が、歩容生成装置１００に組み込まれ、該歩容生成装置１００からコンプライアンス制御用目標床反力モーメントが複合コンプライアンス動作決定部１０４に出力される。そして、歩容生成装置１００内の補償全床反力モーメント分配器１２０は後述するように、前記第１実施形態の補償全床反力モーメント水平成分分配器１１０およびモデル操作床反力モーメント鉛直成分決定器１１１よりも複雑な処理を行う。これ以外の、制御ユニット６０の機能的構成は、前記第１実施形態と同一である。
図６０に本実施形態における歩容生成装置１００のメインルーチン処理のフローチャートを示す。
同図６０おいて、Ｓ２０１０からＳ２０２８までは、前記参考例のメインフローチャート（図１３）のＳ０１０からＳ０２８までの処理と同一の処理が行なわれる。なお、Ｓ０２８（本実施形態ではＳ２０２８）のサブルーチンである図４３のフローチャートのＳ８００における初期化においては、今回歩容初期状態は、前回修正歩容（歩容生成装置１００が最終的に出力する歩容）の終端状態を今回支持脚座標系に変換したものであり、後述のＳ２０３２で決定される元歩容の終端状態は、Ｓ２０２８のサブルーチンのＳ８００では用いられない。
次いでＳ２０３０に進み、コンプライアンス制御用の床反力モーメント水平成分許容範囲を決定する。この床反力モーメント水平成分許容範囲の決定方法は、第１実施形態のＳ３０３２（図５６）と同様である。
Ｓ２０３０の処理を完了した後、あるいはＳ２０１６の判断結果がＮＯである場合には、Ｓ２０３２に進み、元歩容の瞬時値（時刻ｔの今回値）が決定される。元歩容は、目標ＺＭＰまわりの床反力モーメント水平成分が０になるように生成される歩容である。
この元歩容は、前記第１実施形態の図５６のＳ３０３２のサブルーチン処理の一部を変更したアルゴリズムによって生成される。すなわち、Ｓ３０３２内のサブルーチン処理（詳しくはＳ３０３２のサブルーチン処理である図５７のＳ３４１４のサブルーチン処理）である図５８のＳ３１０４およびＳ３１３０において、モデル操作床反力モーメント水平成分を０として（目標ＺＭＰまわりの目標床反力モーメント水平成分を０として）、上体水平加速度αｔｍｐが求められる。これ以外の処理は、図５６のＳ３０３２の処理と同一でよい。
次いで、Ｓ２０３４に進み、修正歩容の瞬時値を決定する。なお、修正歩容は、歩容生成装置１００から最終的に出力される目標歩容である。
Ｓ２０３４の処理は、図６１のフローチャートで示すサブルーチン処理により行なわれ、以下にその詳細を説明する。
まずＳ２１００からＳ２１１１までは、第１実施形態で説明した図５７のＳ３４００からＳ３４１１と同一の処理が実行される。
次いで、Ｓ２１１２に進み、歩容パラメータを基に現在時刻での床反力モーメント水平成分許容範囲［Ｍｘｙｍｉｎ，Ｍｘｙｍａｘ］を求める。これは、図５７のＳ３４１２での床反力モーメント水平成分許容範囲［Ｍｘｙｍｉｎ，Ｍｘｙｍａｘ］の決定と同様に行われる。
次いで、Ｓ２１１４に進み、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント（水平成分および鉛直成分）、コンプライアンス制御用目標床反力モーメント、上体水平加速度、上体姿勢傾斜角加速および逆位相腕振り角加速度が決定される。
Ｓ２１１４の詳細を、その処理を示す図６２のフローチャートを用いて、以下に説明する。
まず、Ｓ２２００において、修正歩容の上体水平位置と元歩容の上体水平位置との差であるモデル間上体水平位置差が求められる。この時点では、修正歩容の上体水平位置の今回値（時刻ｔでの値）は未だ求められていない。そこで、Ｓ２２００では、修正歩容の上体水平位置の前回値（時刻ｔ−Δｔの制御周期で最終的に求められた値）と、元歩容の上体水平位置の前回値（時刻ｔ−Δｔの制御周期でＳ２０３２において求められた値）あるいは今回値（時刻ｔの制御周期でＳ２０３２において求められた値）とを用いて、モデル間上体水平位置差が算出される。
次いで、Ｓ２２０２に進み、修正歩容の上体姿勢傾斜角と元歩容の上体姿勢傾斜角との差であるモデル間上体姿勢傾斜角差が求められる。このＳ２２０２では、Ｓ２２００のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の上体姿勢傾斜角の前回値と、元歩容の上体姿勢傾斜角の前回値又は今回値とを用いてモデル間上体姿勢傾斜角差が求められる。
次いで、Ｓ２２０４に進み、修正歩容の逆位相腕振り角と元歩容の逆位相腕振り角との差であるモデル間逆位相腕振り角差が求められる。このＳ２２０４では、Ｓ２２００のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の逆位相腕振り角の前回値と、元歩容の逆位相腕振り角の前回値又は今回値とを用いてモデル間逆位相腕振り角差が求められる。
次いで、Ｓ２２０６に進み、モデル間上体水平位置差を基に、その差を０に収束させるために必要なモデル上体水平位置安定化床反力モーメント要求値Ｍｐｆｄｍｄが決定される。単に修正歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントに一致させると、モデル間上体水平位置差は発散する。モデル上体水平位置安定化床反力モーメント要求値Ｍｐｆｄｍｄは、前記上体並進モードによって修正歩容の上体水平位置を元歩容の上体水平位置に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル上体水平位置安定化床反力モーメント要求値Ｍｐｆｄｍｄは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、ＰＤ制御則を用いているが、ＰＩＤ等、他のフィードバック制御則を用いてもよい。
Ｍｐｆｄｍｄ＝Ｋｍｐ＊モデル間上体水平位置差
＋Ｋｍｐｖ＊モデル間上体水平位置差の時間微分値
……式ｄ２８
但し、Ｋｍｐ、Ｋｍｐｖはフィードバックゲイン（比例ゲイン、微分ゲイン）である。
次いで、Ｓ２２０８に進み、モデル間上体姿勢傾斜角差を基に、その差を０に収束させるために必要なモデル上体姿勢傾斜角安定化床反力モーメント要求値Ｍｒｆｄｍｄが決定される。単に修正歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントに一致させると、モデル間上体姿勢傾斜角差は０に収束しない。モデル上体姿勢傾斜角安定化床反力モーメント要求値Ｍｒｆｄｍｄは、上体傾斜モードによって修正歩容の上体姿勢傾斜角を元歩容の上体姿勢傾斜角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル上体姿勢傾斜角安定化床反力モーメント要求値Ｍｒｆｄｍｄは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、ＰＤ制御則を用いているが、ＰＩＤ等、他のフィードバック制御則を用いてもよい。
Ｍｒｆｄｍｄ＝Ｋｍｒ＊モデル間上体姿勢傾斜角差
＋Ｋｍｒｖ＊モデル間上体姿勢傾斜角差の時間微分値
……式ｄ２９
但し、Ｋｍｒ、Ｋｍｒｖはフィードバックゲイン（比例ゲイン、微分ゲイン）である。
次いで、Ｓ２２１０に進み、モデル間逆位相腕振り角差を基に、その差を０に収束させるために必要なモデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄが決定される。単に修正歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントに一致させると、モデル間逆位相腕振り角は０に収束しない。モデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄは、逆位相腕振りモードによって修正歩容の逆位相腕振り角を元歩容の逆位相腕振り角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、ＰＤ制御則を用いているが、ＰＩＤ等、他のフィードバック制御則を用いてもよい。
Ｍａｆｄｍｄ＝Ｋａ＊モデル間逆位相腕振り角差
＋Ｋａｖ＊モデル間逆位相腕振り角差の時間微分値
……式ｄ２９ｂ
但し、Ｋａｒ、Ｋａｖはフィードバックゲイン（比例ゲイン、微分ゲイン）である。
ところで、最終的に決定された修正歩容の上体並進モードに伴って発生する床反力モーメント水平成分から元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体水平位置安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の上体傾斜運動モードに伴って発生する床反力モーメント水平成分から元歩容の上体傾斜運動モードの上体姿勢傾斜角加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体姿勢傾斜角安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の逆位相腕振りモードに伴って発生する床反力モーメント鉛直成分から元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメント鉛直成分を減じたモーメントを、モデル逆位相腕振り角安定化床反力モーメントと呼ぶ。
一方、摂動運動と摂動床反力とには線形性が近似的に成立する、すなわち、異なる摂動運動を元歩容の運動に加えた運動の床反力は、元歩容の床反力にそれぞれの摂動運動が発生する摂動床反力を加えたものにほぼ一致する。また、逆位相腕振りモードでは、床反力モーメント水平成分は変化しない。したがって、次式が近似的に成立する。
モデル操作床反力モーメント水平成分
＝モデル上体水平位置安定化床反力モーメント
＋モデル上体姿勢傾斜角安定化床反力モーメント
……式ｄ３０
この式ｄ３０が近似的に成立することと、逆位相腕振り角加速度に比例して床反力モーメント鉛直成分が変化することとを考慮しつつ、モデル上体水平位置安定化床反力モーメントをモデル上体水平位置安定化床反力モーメント要求値Ｍｐｆｄｍｄに一致またはなるべく近くなるように決定し、かつ、モデル上体姿勢傾斜角安定化床反力モーメントをモデル上体姿勢傾斜角安定化床反力モーメント要求値Ｍｒｆｄｍｄに一致またはなるべく近くなるように決定しつつ、かつ、モデル逆位相腕振り角安定化床反力モーメントをモデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄに一致またはなるべく近くなるように決定すれば、修正歩容に適切なモデル操作床反力モーメントを発生させて、以下に示す復元条件を満足しつつ、修正歩容の上体水平加速度と上体姿勢傾斜角加速度とを、それぞれ元歩容の上体水平加速度と上体姿勢傾斜角加速度とに可能な範囲で収束させることができる。
そこで、Ｓ２２１０の後、Ｓ２２１２に進み、以下の条件（これらを復元条件と呼ぶ）をできる限り満足するようにモデル上体水平位置安定化床反力モーメント（上体並進モードの床反力モーメント）とモデル上体姿勢傾斜角安定化床反力モーメント（上体傾斜モードの床反力モーメント）とモデル逆位相腕振り角安定化床反力モーメントとを決定する。さらに、上記のモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとモデル逆位相腕振り角安定化床反力モーメントとの定義を満足するように、修正歩容の上体水平加速度と上体姿勢傾斜角加速度と逆位相腕振り角加速度とを決定する。なお、以下に示す復元条件は、番号が小さい条件ほど優先度が高いものとする。つまり相反して両立できない条件がある場合には、番号が小さい条件を優先して満足（成立）させる。ただし、復元条件１、２および３は必ず満足（成立）させる。
復元条件１）補償全床反力モーメント水平成分Ｍｄｍｄｘｙとモデル操作床反力モーメントの和（これは、前記式ｄ２７ｂが成立する場合には、コンプライアンス制御用目標床反力モーメント水平成分に相当する）が床反力モーメント水平成分許容範囲を越えないこと。
復元条件２）修正歩容の床反力水平成分が床反力水平成分許容範囲を越えないこと。
復元条件３）修正歩容の床反力モーメント鉛直成分と補償全床反力モーメント鉛直成分Ｍｄｍｄｚの和（これは、コンプライアンス制御用目標床反力モーメント鉛直成分に相当する）が、床反力モーメント鉛直成分許容範囲を越えないこと。
復元条件４）モデル上体姿勢傾斜角安定化床反力モーメントが、モデル上体姿勢傾斜角安定化床反力モーメント要求値Ｍｒｆｄｍｄに一致またはできる限り近いこと。この条件は、修正歩容の上体姿勢傾斜角が元歩容（当初予定した歩容）の上体姿勢傾斜角に収束するための条件である。
復元条件５）モデル上体水平位置安定化床反力モーメントが、モデル上体水平位置安定化床反力モーメント要求値Ｍｐｆｄｍｄに一致またはできる限り近いこと。この条件は、修正歩容の上体水平位置が元歩容（当初予定した歩容）の上体水平位置に収束するための条件である。
復元条件６）モデル逆位相腕振り角安定化床反力モーメントが、モデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄに一致またはできる限り近いこと。この条件は、修正歩容の逆位相腕振り角が元歩容（当初予定した歩容）の逆位相腕振り角に収束するための条件である。
復元条件７）モデル上体姿勢傾斜角安定化床反力モーメント、モデル上体水平位置安定化床反力モーメントおよびモデル逆位相腕振り角安定化床反力モーメントがそれぞれ連続であること。
上記のような復元条件１〜６を満足するような上体水平加速度、上体姿勢傾斜角加速度、逆位相腕振り角加速度等を決定するＳ２２１２の処理は具体的には例えば次のように実行される。
まず、上記復元条件１、２、４および５を満足するように、モデル上体水平位置安定化床反力モーメントおよびモデル上体姿勢傾斜角安定化床反力モーメントが決定され、さらに上体水平加速度および上体姿勢傾斜角加速度が決定される。この処理の詳細は、本願出願人が先に提案したＰＣＴ／ＪＰ０３／００４３５の技術に記載されているので、ここでは説明を省略する。
次いで、上記復元条件３および６を満足するようにモデル逆位相腕振り安定化床反力モーメントが決定され、さらに逆位相腕振り角加速度が決定される。
具体的には、上記のごとく決定された上体水平加速度および上体姿勢傾斜角加速度と元歩容の逆位相腕振り角加速度βａｏｒｇで仮に運動した場合に発生する（運動に動力学的に釣り合う）目標ＺＭＰまわりの床反力モーメント鉛直成分を求める。以降、これを無補正時床反力モーメント鉛直成分と呼ぶ。
次いで、次式のように、無補正時床反力モーメント鉛直成分とモデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄと補償全床反力モーメント鉛直成分Ｍｄｍｄｚとの和Ｍｓｕｍｚを求める。
Ｍｓｕｍｚ＝無補正時床反力モーメント鉛直成分
＋Ｍａｆｄｍｄ＋Ｍｄｍｄｚ
次いで、次式により、モデル逆位相腕振り安定化床反力モーメントが決定される。
Ｍｓｕｍｚ＞床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント＝−Ｍｄｍｄｚ
−無補正時床反力モーメント鉛直成分
＋床反力モーメント鉛直成分許容範囲上限値
Ｍｓｕｍｚ＜床反力モーメント鉛直成分許容範囲下限値である場合
モデル逆位相腕振り安定化床反力モーメント＝−Ｍｄｍｄｚ
−無補正時床反力モーメント鉛直成分
＋床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Ｍｓｕｍｚ、且つ、Ｍｓｕｍｚ≦床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント
＝モデル逆位相腕振り角安定化床反力モーメント要求値Ｍａｆｄｍｄ
……式ｄ２６ｃ
次いで、修正歩容の逆位相腕振り角加速度が次式によって求められる。
修正歩容の逆位相腕振り角加速度
＝元歩容の逆位相腕振り角加速度βａｏｒｇ
＋モデル逆位相腕振り安定化床反力モーメント
／腕振り運動の等価慣性モーメントΔＭａｚ
修正歩容の床反力モーメント鉛直成分は、元歩容の逆位相腕振り角加速度βａｏｒｇとモデル逆位相腕振り安定化床反力モーメントの和であることから、上式のごとくモデル逆位相腕振り安定化床反力モーメントを決定することにより、上記復元条件３が満足される。
上述したようにＳ２２１２の処理を実行した後、Ｓ２２１４に進み、前記式ｄ３０により、モデル操作床反力モーメント水平成分が決定される。すなわち、Ｓ２２０８で求めたモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとの和がモデル操作床反力モーメント水平成分として決定される。なお、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ＺＭＰまわりの床反力モーメントを直接算出して、これをもってモデル操作床反力モーメントとしても良い。
次いで、Ｓ２２１６に進み、前記式ｄ２７ｂにより、コンプライアンス制御用目標床反力モーメント水平成分が決定される。すなわち、補償全床反力モーメント水平成分ＭｄｍｄｘｙとＳ２２１４で求めたモデル操作床反力モーメント水平成分との和がコンプライアンス制御用目標床反力モーメント水平成分として決定される。
次いで、Ｓ２２１８に進み、図示する式によって、コンプライアンス制御用目標床反力モーメント鉛直成分を決定する。なお、図示する式における修正歩容に釣り合う（修正歩容の運動に動力学的に釣り合う）床反力モーメント鉛直成分は、無補正時床反力モーメント鉛直とモデル逆位相腕振り安定化床反力モーメントの和であるが、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ＺＭＰまわりの床反力モーメント鉛直成分を直接算出しても良い。
以上により、図６１のＳ２１１４の処理が終了し、次に、Ｓ２１１６に進む。このＳ２１１６の処理は、前記第１実施形態における図５７のＳ３４１６と同一であり、上体水平加速度の２階積分により上体水平位置の今回値が決定されると共に、上体姿勢傾斜角加速度の２階積分により上体姿勢傾斜角の今回値が決定される。
次に、Ｓ２１１８に進む。このＳ２１１８の処理は、前記第１実施形態における図５７のＳ３４１８と同一であり、逆位相腕振り角加速度の２階積分により逆位相腕振り角の今回値が決定される。
次いで、図６０のＳ２０３６に進んで、時刻ｔに制御周期Δｔを加え、再び、Ｓ２０１４に戻り、制御周期毎のタイマー割り込みを待つ。
補足すると、本実施形態における動力学モデルによる歩容瞬時値決定においては、動力学モデルの状態量（あるいは前回、前前回の歩容瞬時値）も必要であるので、修正歩容生成用と元歩容生成用との２つの動力学モデルが必要である。本実施形態では、それらの動力学モデルは図１２に示した動力学モデルである。
本実施形態においては、上記のごとく、元歩容と修正歩容とが並列的に生成され、修正歩容は、実ロボット１の姿勢（傾斜角およびヨー角）安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント（水平成分および鉛直成分）を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、前記第１実施形態の作用効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止することが可能となる。また、修正歩容の上体姿勢傾斜角が元歩容（当初決定した歩容）の上体姿勢傾斜角に収束することを、修正歩容の上体水平位置が元歩容（当初決定した歩容）の上体水平位置に収束することよりも優先した（床反力水平成分許容範囲を満たす範囲で可能な限り上体並進モードの運動を調整した）ので、上体姿勢傾斜角が大きく変動することを抑制することができる。
以上説明した第２実施形態は、本発明のうちの第１〜第９発明、および第１５発明の実施形態になっている。この場合、第２実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制限対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第２実施形態における歩容生成用の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］が制限対象量の許容範囲に相当する。また、第２実施形態におけるモデル逆位相腕振り角安定化モーメント要求値Ｍａｆｄｍｄが第３発明におけるモデル補正床反力モーメントに相当する。また、図６１のＳ２１１４のサブルーチンで無補正時床反力モーメント鉛直成分を求めたときの運動が第２発明における所定の仮瞬時値に対応する。また、発明における動力学モデルは、図１２の動力学モデルが相当する。
次に本発明の第３実施形態を図６３〜図７０を参照して説明する。なお、本実施形態の説明で、前記参考例または前記第１もしくは第２実施形態と同一構成部分もしくは同一機能部分については該参考例、第１実施形態もしくは第２実施形態と同一の参照符号を用いて詳細な説明を省略する。
本実施形態では、制御ユニット６０の機能的構成は、前記第２実施形態のもの、すなわち前記図５９に示したものと同一である。但し、本実施形態では、歩容生成装置１００が実行する歩容生成のアルゴリズムは、前記第２実施形態のものと相違している。そして、歩容生成装置１００以外の各部の処理は、前記第２実施形態と同一である。
図６３は、本実施形態における歩容生成装置１００の処理の概要を示すブロック図である。この図６３を参照して、歩容生成装置１００の処理の概要を以下に説明する。なお、図６３を用いて以下に説明する処理の概要は、後述する第４〜第６実施形態についても同様である。また、本実施形態および後述の第４〜第６実施形態では、前記図１２の動力学モデルを単純化モデルと称する。
図示の如く、歩容生成装置１００は歩容パラメータ決定部１００ａを備える。歩容パラメータ決定部１００ａは、目標歩容のパラメータ（目標歩容を規定するパラメータ）の値あるいは時系列テーブルを決定する。これは、後述の図６５のフローチャートのＳ３５２０からＳ３５３０までの処理に相当する。
詳細は後述するが、歩容パラメータ決定部１００ａが決定するパラメータには、目標足平位置姿勢軌道、目標腕姿勢軌道、基準上体姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道等を規定するパラメータが含まれる他、床反力水平成分許容範囲を規定するパラメータと、ＺＭＰ許容範囲（もしくは床反力モーメント水平成分許容範囲）を規定するパラメータと、床反力モーメント鉛直成分許容範囲を規定するパラメータとが含まれる。この場合、本実施形態で設定する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲は、後述のＳ３５２６の処理で設定される単純化モデル歩容用のものと、Ｓ３５３０で設定される歩容補正用のものとの２種類がある。一方、ＺＭＰ許容範囲（もしくは床反力モーメント水平成分許容範囲）は、Ｓ３５３０の処理で設定されるフルモデル補正用（歩容補正用）のものだけである。なお、本実施形態では、Ｓ３５３０ではＺＭＰ許容範囲を規定するパラメータを設定するが、これは、床反力モーメント水平成分許容範囲を規定するパラメータと設定することと同等である。これは、前記第１実施形態の図５６のＳ３０３０に関して説明した如く、床反力モーメント水平成分を、目標床反力鉛直成分で割ったものが、ＺＭＰ（床反力中心点）の目標ＺＭＰからのずれ量を表すものとなるからである。
ここで、本実施形態で設定するＺＭＰ許容範囲は、図６４の如く設定される。詳細は、ＰＣＴ／ＪＰ０３／００４３５に詳細に記載されているのでここでは、これ以上の説明を省略する。
歩容パラメータ決定部１００ａで決定された歩容パラメータは目標瞬時値発生部１００ｂに入力される。目標瞬時値発生部１００ｂは入力された歩容パラメータに基づき、目標足平位置姿勢、目標ＺＭＰ、目標床反力鉛直成分、目標腕姿勢、目標全体重心鉛直位置、目標上体鉛直位置、床反力水平成分許容範囲、ＺＭＰ許容範囲、基準上体姿勢角および基準逆位相腕振り角の、現在時刻ｔにおける瞬時値を逐次算出（発生）する（図６３では一部の目標瞬時値のみを記載している）。この目標瞬時値発生部１００ｂの処理は、後述の図６５のフローチャートＳ３５３２の処理のなかで実行される図５７のＳ３４００〜Ｓ３４１２の処理、並びに、図６５のＳ３５３４の処理に相当する。なお、本実施形態では、目標瞬時値発生部１００ｂが算出する目標瞬時値のうち、一部の瞬時値（具体的には目標上体鉛直位置の瞬時値）は仮値であり、後に修正される。また、目標瞬時値発生部１００ｂが算出する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の瞬時値は、単純化モデル歩容用の瞬時値と歩容補正用の瞬時値とがある。
目標瞬時値発生部１００ｂで算出（発生）された目標瞬時値（一部は仮瞬時値）は、フルモデル補正部１００ｃに入力される。また、フルモデル補正部１００ｃには、前記姿勢傾斜安定化制御演算部１１２（図５９を参照）で求められる補償全床反力モーメント水平成分Ｍｄｍｄｘｙおよび前記ヨー安定化制御演算部１１３（図５９を参照）で求められる補償全床反力モーメント鉛直成分Ｍｄｍｄｚも入力される。フルモデル補正部１００ｃは、動力学モデルとして、単純化モデル１００ｃ１とフルモデル１００ｃ２とを備える。該フルモデル補正部１００ｃは、単純化モデル１００ｃ１に基づいて、入力値から目標上体位置姿勢および逆位相腕振り角の仮瞬時値等を決定すると共に、さらに決定された上体位置姿勢および逆位相腕振り角の仮瞬時値等をフルモデル１００ｃ２を用いて修正する。
尚、単純化モデル１００ｃ１をフルモデル補正部１００ｃ２に含ませない構成も可能である。また、フルモデル１００ｃ２は、後述するように、逆フルモデル（逆動力学フルモデル）と順フルモデル（順動力学フルモデル）とのいずれかを含む。
フルモデル補正部１００ｃは、基本的には、次のＡ１〜Ａ４の条件を満足するように、Ｂの処理を実行する。すなわち、フルモデル補正部１００ｃは、
Ａ１）フルモデル補正部１００ｃにより生成される補正歩容の運動に釣り合う床反力モーメントに補償全床反力モーメント水平成分Ｍｄｍｄｘｙと補償全床反力モーメント鉛直成分Ｍｄｍｄｚとを加えたものがフルモデル補正部１００ｃから出力するコンプライアンス制御用床反力モーメントに一致する。
Ａ２）真のＺＭＰ（目標ＺＭＰのまわりにコンプライアンス制御用目標床反力モーメントを発生させることによって修正された本来の定義を満足するＺＭＰ）は、ＺＭＰ許容範囲（安定余裕が十分維持できる許容範囲）に存在する。
Ａ３）床反力水平成分は歩容補正用の床反力水平成分許容範囲内にある。
Ａ４）目標ＺＭＰのまわりに発生すべきコンプライアンス制御用目標床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲内にある。
という条件を満足するように、
Ｂ）単純化モデルを用いて決定された単純化モデル歩容の上体位置姿勢を補正すると共に、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメントを出力する。
なお、上記条件Ａ２は、目標ＺＭＰまわりに発生させる床反力モーメントをＺＭＰ許容範囲に対応する床反力モーメント水平成分許容範囲内に収めることと同等である。
ここで、上記単純化モデル１００ｃ１とフルモデル１００ｃ２とについて説明しておく。単純化モデル１００ｃ１は、動力学的精度よりも、演算量低減や挙動解析のし易さに重点を置いた動力学モデルであり、動力学的に一部無視があったり（例えば、重心まわりの角運動量変化を無視したり）、矛盾があるもの（厳密さを欠くもの）でも良い。本実施形態では前記参考例で説明した図１２の動力学モデル（前記式０１〜０５で記述される動力学モデル）が単純化モデル１００ｃ１として用いられる。
また、フルモデル１００ｃ２は、単純化モデル１００ｃ１とは異なるロボット動力学モデルを意味する。これは、単純化モデル１００ｃ１よりも近似精度の高いロボット動力学モデルであることが望ましい。図示例で説明すれば、本実施形態では先に述べたように前記図１２に示した動力学モデルを単純化モデル１００ｃ１として用いるので、それよりも、近似精度の高い動力学モデル、例えば前記図４９に示した多質点モデル（ロボット１の各リンクにそれぞれ質点を有するモデル）のようなロボット動力学モデルをフルモデル１００ｃ２として用いることが望ましい。この場合、該フルモデル１００ｃ２は、質点のまわりに慣性モーメントを設定するものであっても良い。
しかし、単純化モデル１００ｃ１とフルモデル１００ｃ２とは、必ずしもモデルの近似精度が異なる必要はない。単純化モデル１００ｃ１とフルモデル１００ｃ２とは、動力学方程式が同じで、床反力水平成分許容範囲およびまたは床反力モーメント鉛直成分許容範囲が異なっている、すなわち、単純化モデル歩容用の許容範囲と、歩容補正用（フルモデル補正用）の許容範囲とが異なっているだけでも良い。たとえば、単純化モデル１００ｃ１を用いた歩容を生成する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を大きくとり（摩擦限界を越えていても良い）、フルモデル１００ｃ２を用いて歩容を修正する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲をロボット１のスリップもしくはスピンが発生しにくいように狭く設定するだけでも良い。
尚、この明細書において、目標足平位置姿勢、目標床反力（特に、目標ＺＭＰと目標床反力鉛直成分）に基づいて（入力して）上体位置姿勢および逆位相腕振り角を算出する（出力させる）のに使用するモデルを「順動力学モデル」と呼び、目標足平位置姿勢、目標上体姿勢、目標上体位置および逆位相腕振り角に基づいて（入力して）床反力（特に、目標ＺＭＰもしくは目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）と床反力水平成分）を算出する（出力させる）のに使用するモデルを「逆動力学モデル」と呼ぶ。順動力学モデルの入力には、少なくとも目標床反力が含まれ、逆動力学モデルの入力には、少なくとも目標運動が含まれる。
フルモデル補正部１００ｃが備えるフルモデル１００ｃ２は、逆動力学フルモデル（しばしば「逆フルモデル」と略称）または順動力学フルモデル（しばしば「順フルモデル」と略称）を備える。一般的には、逆動力学モデルの演算に比べ、順動力学モデルの演算は、演算量が多くなりがちである。
以上が本実施形態（第３実施形態）での歩容生成装置１００における処理の概要である。
次に、本実施形態における歩容生成装置１００の処理を詳説する。本実施形態における歩容生成装置１００は、図６５のフローチャートに示す処理を実行して、歩容を生成する。
まず、Ｓ３５１０からＳ３５２８までにて、前記第１実施形態で説明した図５６のＳ３０１０からＳ３０２８までの処理と同一の処理が実行される。なお、Ｓ３０２６のサブルーチンである図３９のＳ６０８で決定する今回歩容の床反力水平成分許容範囲およびＳ６１０で決定する床反力モーメント鉛直成分許容範囲は、前記参考例、第１実施形態および第２実施形態の場合よりも厳密に摩擦力限界を考慮せずともよく、摩擦力限界を超えるような範囲に設定してもよい。これは、後述するフルモデル補正によって、床反力水平成分および床反力モーメント鉛直成分は最終的にフルモデル補正用の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲によって制限されることとなるからである。
次いで、Ｓ３５３０に進み、フルモデル補正用（歩容補正用）の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とＺＭＰ許容範囲（床反力中心点許容範囲）とをそれぞれ規定するパラメータを決定する。この場合、フルモデル補正用の床反力水平成分許容範囲は、例えば前記単純化モデル歩容用の床反力水平成分許容範囲と同様、Ｘ軸方向（前後方向）、Ｙ軸方向（左右方向）のそれぞれについて、床反力鉛直成分軌道と、前記式１２とに基づいて、前記図３０に示したようなパターンに設定される。そして、例えば、前記式１２のｋａ＊μの値がフルモデル補正用の床反力水平成分許容範囲を規定するパラメータとして設定される。但し、この床反力水平成分許容範囲は、式１２の係数ｋａの値を、単純化モデル歩容用の床反力水平成分許容範囲よりも小さめに設定する等して、確実に摩擦限界内の範囲に設定することが望ましい。
床反力モーメント鉛直成分許容範囲に関しても床反力水平成分許容範囲と同様に設定される。すなわち、前記式１０１２に基づいて、前記図４１に示したようなパターンに設定される。
また、ＺＭＰ許容範囲は、前記第１実施形態における図５６のＳ３０３０で床反力モーメント水平成分許容範囲の設定に関して説明した場合と同様に設定される。なお、ＺＭＰ許容範囲に目標床反力鉛直成分を乗じることで、ＺＭＰ許容範囲をこれと等価な床反力モーメント水平成分許容範囲に変換してもよいことはもちろんである。
次いで、Ｓ３５３２に進み今回歩容瞬時値（現在時刻ｔの値）が前記単純化モデル（図１２の動力学モデル）を用いて決定される。このＳ３５３２の処理は、前記参考例における図１３のＳ０３０の処理と同一である。
以上説明したＳ３５３２までの処理によって生成された現在時刻ｔにおける歩容の瞬時値を、以降、単純化モデル歩容瞬時値という。本実施形態では、この単純化モデル歩容瞬時値は、単純化モデル（図１２の動力学モデル）を用いて、ロボット１にその運動によって発生する慣性力と重力との合力が目標ＺＭＰまわりに発生する床反力モーメント水平成分が０になるように（目標ＺＭＰに関する動力学的平衡条件を満たすように）決定される。
この場合、単純化モデル歩容瞬時値のうちの、上体水平位置および上体姿勢傾斜角の瞬時値と、上体鉛直位置の瞬時値と、逆位相腕振り角の瞬時値とは仮瞬時値であり、後述するフルモデル補正によって補正されるものである。また、本実施形態における単純化モデル歩容瞬時値のうち、目標ＺＭＰまわりの目標床反力モーメント水平成分の瞬時値は定常的に０であるが、後述するフルモデル補正によって目標ＺＭＰまわりに発生させる床反力モーメント水平成分の目標値としてのコンプライアンス制御用目標床反力モーメント水平成分が生成される。
次に、Ｓ３５３４に進み、歩容補正用（フルモデル補正用）の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とＺＭＰ許容範囲を規定するパラメータ（Ｓ３５３０で設定したもの）を基に、歩容補正用の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とＺＭＰ許容範囲との瞬時値（現在時刻ｔの値）が求められる。
次いで、Ｓ３５３６に進み、フルモデルを用いて補正歩容の発生（歩容の補正）を行い、最終的な目標歩容の瞬時値が決定される。すなわち、前記図６３を参照して説明したように、補正目標上体位置姿勢、補正目標逆位相腕振り角や、目標ＺＭＰまわりの目標床反力モーメント（水平成分および鉛直成分）としてのコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）の算出（決定）などが実行される。
次いで、Ｓ３５３８に進み、時刻ｔをΔｔだけ増やし、再びＳ３５１４に戻り、Ｓ３５１４からＳ３５３８までの処理が繰り返される。
上記Ｓ３５３６の処理は、本実施形態の特徴をなす部分であり、以下にその処理を詳説する。本実施形態に係る装置の歩容補正手法は、フルモデルフィードフォワード補正型である。また、逆動力学フルモデル（逆フルモデル）を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
図６６は、本実施形態に係る歩容生成装置１００の動作、具体的には、図６５のフロー・チャートのＳ３５３６の歩容の修正手法を説明する機能ブロック図である。ただし、図６６の単純化モデル２００は、単に動力学モデルだけでなく、前述のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表す。したがって、図６６において、単純化モデル２００から先の部分がＳ３５３６の処理に相当する。
尚、歩容補正用（フルモデル補正用）の床反力水平成分許容範囲とＺＭＰ許容範囲の瞬時値を決定する処理は、図６５のフローチャートの参照符号Ｓ３５３４を用いて示している。
実際の処理はひとつのコンピュータで実行されるので、ブロック図を離散化した後、ブロック図の上流側から下流側（歩容出力側）に向かって順に実行される。ただし、上流側に戻るフィードバック量は、前回制御周期（現在時刻ｔに対して時刻ｔ−Δｔ）に算出した値（状態量）を用いることとする。尚、以降、前回制御周期（時刻ｔ−Δｔ）に算出した値を前回値と略す。
Ｓ３５３６の処理が実行される毎に、ブロック図の１制御周期分の演算が実行される。
Ｓ３５３６では、まず、上記のごとく得られた単純化モデル歩容の目標上体姿勢角（以降、単純化モデル上体姿勢角と呼ぶ。また、このうちの傾斜角成分を単純化モデル上体姿勢傾斜角と呼ぶ。）、目標上体水平位置（以降、単純化モデル上体水平位置と呼ぶ）、目標重心位置、目標足平位置姿勢、目標腕姿勢（目標逆位相腕振り角を含む）などの運動を表す変数（これを運動変数と呼ぶ）の瞬時値と、目標ＺＭＰの瞬時値とが前記逆動力学フルモデル（逆フルモデル）２０１に入力される。入力された運動変数で表される運動に釣り合う（すなわち運動によってフルモデルが発生する）床反力水平成分と目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）が、逆フルモデル２０１の演算処理によって算出される。なお、本実施形態では、単純化モデル歩容における目標ＺＭＰまわりの床反力モーメント水平成分は０であるので、逆フルモデル２０１によって算出される目標ＺＭＰまわりの床反力モーメント水平成分は、単純化モデル歩容の誤差としての意味を持つものである。なお、逆フルモデル２０１により求められた床反力水平成分と床反力モーメント水平成分と床反力モーメント鉛直成分とをそれぞれ「フルモデル床反力水平成分」、「フルモデル床反力モーメント水平成分」、「フルモデル床反力モーメント鉛直成分」と呼ぶ。また、以降、しばしば、フルモデル床反力水平成分をＦｆｕｌｌ、フルモデル床反力モーメント水平成分をＭｆｕｌｌｘｙ、フルモデル床反力モーメント鉛直成分をＭｆｕｌｌｚ、と略す。
また、前記逆フルモデル２０１は、目標重心位置を満足する上体鉛直位置を算出する。さらに、図示は省略しているが、逆フルモデル２０１は、重心水平位置も算出する。
補足すると、フルモデルには目標全体重心鉛直位置を入力しており、また目標床反力鉛直成分は目標全体重心鉛直位置の２階微分値から求められるので、フルモデルには、特に目標床反力鉛直成分を入力する必要はない。冗長であっても演算を減らすためなどの理由で、フルモデルに目標床反力鉛直成分を入力しても良い。
ここで、歩容補正に用いられる摂動モデルについて説明する。
摂動モデルは、上体水平位置補正用摂動モデル２０２、上体姿勢傾斜角補正用摂動モデル２０３および逆位相腕振り角補正用摂動モデル２３１から成る。尚、摂動モデルは、このように３つのモデルに分離しないで、図１２のようなひとつのモデルにしても良い。また、上体姿勢傾斜角補正用摂動モデル２０３は図では上体姿勢角補正用摂動モデル２０３と略す。
上体水平位置補正用摂動モデル２０２は、前記上体並進モードにおける床反力の摂動と上体水平位置の摂動との関係を表す。
上体水平位置補正用摂動モデル２０２は、目標床反力モーメントの補正量を入力し、これに動力学的に釣り合う目標上体水平位置の補正量を算出する。この入力（目標床反力モーメントの補正量）を、上体水平位置補正用摂動モデルモーメントＭｐと呼ぶ。また、上体水平位置補正用摂動モデル２０２の出力（目標上体水平位置の補正量）を、補正用摂動モデル上体水平位置Ｘｃと呼ぶ。また、上体水平位置補正用摂動モデル２０２が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Ｆｐと呼ぶ。
上体水平位置補正用摂動モデル２０２は、図６７のように、支点と倒立振子質点（上体質点）とこれらを結合する伸縮自在な支持棒から成る倒立振子で表される。支点の水平位置は前記した今回歩容の支持脚座標系の原点の水平位置に一致し、支点の鉛直位置は目標ＺＭＰの鉛直位置に一致するように支点の位置が設定されている。倒立振子質点の質量ｍｂは、図１２に示す前記単純化モデル（３質点＋フライホイールのモデル）の上体質点質量と同じである。倒立振子質点の鉛直位置Ｚｃは、単純化歩容に対応する図１２に示す単純化モデルの上体質点位置の鉛直位置Ｚｂと同一とする。
この上体水平位置補正用摂動モデル２０２は、前記単純化モデルにおいて、床反力モーメントの摂動ΔＭｙと上体質点水平位置の摂動ΔＸｂとの関係を表す。
そこで、Ｍｙ、Ｘｂ、Ｚｂ以外は定数とみなして、床反力モーメントの摂動ΔＭｙと上体質点水平位置の摂動ΔＸｂとの関係を前記式０３ｙから求めると、次式が得られる。
2005000534.tif 000008
同様に、Ｆｘ、Ｘｂ以外は定数とみなして、床反力水平成分の摂動ΔＦｘと上体質点水平位置の摂動ΔＸｂの関係を前記式０２ｘから求めると、次式が得られる。
ΔＦｘ＝ｍｂ＊ｄ２ΔＸｂ／ｄｔ２        …式ａ１３
上体水平加速度によって発生するΔＭｐとΔＦｐの比である上体並進モード床反力比率ｈは、式ａ１２の右辺のうちの上体水平加速度によって発生する項（すなわち第２項）と式ａ１３との比であるから、次式が得られる。
ｈ＝（Ｚｂ−Ｚｚｍｐ）        …式ａ１４
すなわち、上体並進モード床反力比率ｈは、単純化モデルの上体質点（倒立振子質点）の支点からの高さに相当する。
よって、式ａ１２と式ａ１４とより次式が得られる。
2005000534.tif 000009
一方、上体質点（倒立振子質点）に作用する重力と慣性力との合力の並進力鉛直成分に釣り合う床反力鉛直成分を上体床反力鉛直成分Ｆｂｚと呼ぶ。すなわち、上体床反力鉛直成分Ｆｂｚは、次式で定義される。
Ｆｂｚ＝ｍｂ＊（ｇ＋ｄ２Ｚｂ／ｄｔ２）        …式ａ１６
そして、この式ａ１６と前記式０１とから、上体床反力鉛直成分Ｆｂｚは次式となる。
2005000534.tif 000010
言い換えると、上体床反力鉛直成分は、床反力鉛直成分Ｆｚと図１２に示す前記単純化モデル（３質点＋フライホイールのモデル）の両脚質点に作用する重力と慣性力との合力の並進力鉛直成分との和に等しい。
式ａ１６を式ａ１５に代入することにより、次式が得られる。
ΔＭｙ＝−Ｆｂｚ＊ΔＸｂ＋ｍｂ＊ｈ＊ｄ２ΔＸｂ／ｄｔ２        …式ａ１８
式ａ１８のΔＭｙを上体水平位置補正用摂動モデルモーメントＭｐ、ΔＸｂを補正用摂動モデル上体水平位置Ｘｃに対応させることにより（式ａ１８のΔＭｙに上体水平位置補正用摂動モデルモーメントＭｐ、ΔＸｂに補正用摂動モデル上体水平位置Ｘｃを代入することにより）、次式が得られる。
Ｍｐ＝−Ｆｂｚ＊Ｘｃ＋ｍｂ＊ｈ＊ｄ２Ｘｃ／ｄｔ２        …式ａ１９
すなわち、上体水平位置補正用摂動モデル２０２は、式ａ１４によって求められる上体並進モード床反力比率ｈと式ａ１７によって求められる上体床反力鉛直成分Ｆｂｚを用いて、式ａ１９で表される。
また、式ａ１３のΔＦｘを上体水平位置補正用摂動モデル床反力水平成分Ｆｐに対応させることにより、次式が得られる。
Ｆｐ＝ｍｂ＊ｄ２Ｘｃ／ｄｔ２        …式ａ２０
すなわち、式ａ１４、式ａ１７、式ａ１９、式ａ２０によって上体水平位置補正用摂動モデル２０２が記述される。
補足すると、ここでは、上体質点位置の摂動と上体位置（上体代表点位置）の摂動は一致するものとみなしているが、厳密には、一致するとは限らない。従って、Ｍｐ、ＦｐとＸｃの関係を求めるためには、さらに上体質点水平位置と上体位置の幾何学的関係を表すモデルが必要である。
一方、上体姿勢傾斜角補正用摂動モデル２０３は、前記上体傾斜モードにおける床反力の摂動と上体姿勢傾斜角の摂動の関係を表す。
上体姿勢傾斜角補正用摂動モデル２０３は、床反力モーメント水平成分の補正量が入力され、これに動力学的に釣り合う目標上体姿勢傾斜角の補正量を算出する。この入力（床反力モーメントの補正量）を、上体姿勢傾斜角補正用摂動モデルモーメントＭｒ（上体姿勢角補正用摂動モデルＭｒと略すこともある）と呼ぶ。また、上体姿勢傾斜角補正用摂動モデル２０３の出力（目標上体姿勢傾斜角の補正量）を補正用摂動モデル上体姿勢傾斜角θｃと呼ぶ。また、上体姿勢傾斜角補正用摂動モデル２０３が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Ｆｒと呼ぶ。Ｆｒは前述したごとく０である。すなわち、次式が常に成立する。
Ｆｒ＝０            …式ａ２１
上体姿勢傾斜角補正用摂動モデル２０３は、図６８のように、フライホイールで表される。補足すると、図６８では、Ｙ軸まわり回転のフライホイールのみを示したが、上体姿勢傾斜角補正用摂動モデル２０３は、実際には、Ｙ軸まわり回転のフライホールだけでなく、Ｘ軸まわり回転のフラーホイールも必要とする。それらのフライホイールのイナーシャは、図１２に示した前記単純化モデル（３質点モデル＋フライホイール）のフライホイールＦＨｘ、ＦＨｙと同じである。この上体姿勢傾斜角補正用摂動モデル２０３のフライホイールの回転角度が補正用摂動モデル上体姿勢傾斜角θｃ、そのフライホイールによって発生する床反力モーメント水平成分が上体姿勢傾斜角補正用摂動モデルモーメントＭｒに相当する。なお、以下の説明では理解の便宜上、Ｙ軸まわり回転のフライホイールを中心に説明するが、Ｘ軸まわり回転のフライホイールについても同様である。
この上体姿勢傾斜角補正用摂動モデル２０３（より詳しくはサジタルプレーンに関するモデル）は、前記単純化モデル（３質点＋フライホイールのモデル）の動力学方程式の前記式０３ｙにおいて、床反力モーメントの摂動ΔＭｙと上体姿勢傾斜角の摂動Δθｂｙの関係を表している。
そこで、Ｍｙ、θｂｙ以外は定数とみなして、床反力モーメント水平成分の摂動ΔＭｙと上体姿勢傾斜角の摂動Δθｂｙの関係を式０３ｙから求めると、次式が得られる。
ΔＭｙ＝Ｊ＊ｄ２Δθｂｙ／ｄｔ２        …式ａ２２
式ａ２２のΔＭｙを上体姿勢傾斜角補正用摂動モデルモーメントＭｒ、Δθｂｙを補正用摂動モデル上体姿勢傾斜角θｃに対応させることにより、次式が得られる。
Ｍｒ＝Ｊ＊ｄ２Δθｃ／ｄｔ２        …式ａ２３
すなわち、上体姿勢傾斜角補正用摂動モデル２０３は、式ａ２３で表される。また、上体水平位置補正用摂動モデル床反力水平成分Ｆｒは上記したごとく式ａ２１のようになる（Ｆｒ＝０）。なお、上記では、上体姿勢傾斜角補正用摂動モデル２０３の動力学をサジタルプレーン上で説明したが、ラテラルプレーン上での動力学も、式ａ２３と同じ形の式で表される。
また、逆位相腕振り角補正用摂動モデル２３１は、前記逆位相腕振りモードにおける床反力の摂動と逆位相腕振り角の摂動との関係を表す。
逆位相腕振り角補正用摂動モデル２３１は、床反力モーメント鉛直成分の補正量が入力され、これに動力学的に釣り合う目標逆位相腕振り角の補正量を算出する。この入力（床反力モーメント鉛直成分の補正量）を、逆位相腕振り角補正用摂動モデルモーメントＭａと呼ぶ。また、逆位相腕振り角補正用摂動モデル２０３の出力（目標逆位相腕振り角の補正量）を補正用摂動モデル逆位相腕振り角θｃａと呼ぶ。また、逆位相腕振り角補正用摂動モデルが発生する床反力水平成分を逆位相腕振り角補正用摂動モデル床反力水平成分Ｆａと呼ぶ。Ｆａは前述したごとく０である。すなわち、次式が常に成立する。
Ｆａ＝０            …式ａ２１ｃ
逆位相腕振り角補正用摂動モデル２３１は、図６９のように、フライホイールで表される。フライホイールのイナーシャは、図１２に示した前記単純化モデル（３質点モデル＋フライホイール）のフライホイールＦＨａｚと同じである。この逆位相腕振り角補正用摂動モデル２３１のフライホイールの回転角度が補正用摂動モデル逆位相腕振り角θｃａ、そのフライホイールによって発生する床反力モーメント鉛直成分が逆位相腕振り角補正用摂動モデルモーメントＭａに相当する。
この逆位相腕振り角補正用摂動モデル２３１は、前記単純化モデル（３質点＋フライホイールのモデル）の動力学方程式の前記式０３ｚにおいて、床反力モーメントの摂動ΔＭｚと逆位相腕振り角の摂動Δθａｚとの関係を表している。
そこで、Ｍｚ、θａｚ以外は定数とみなして、床反力モーメントの摂動ΔＭｚと逆位相腕振り角の摂動Δθａｚの関係を式０３ｚら求めると、次式が得られる。
ΔＭｚ＝Ｊａｚ＊ｄ２Δθａｚ／ｄｔ２        …式ａ２２ｃ
式ａ２２ｃのΔＭｚを逆位相腕振り角補正用摂動モデルモーメントＭａ、Δθａｚを補正用摂動モデル逆位相腕振り角θｃａに対応させることにより、次式が得られる。
Ｍａ＝Ｊａｚ＊ｄ２Δθｃａ／ｄｔ２        …式ａ２３ｃ
すなわち、逆位相腕振り角補正用摂動モデル２３１は、式ａ２３ｃで表される。また、逆位相腕振り角補正用摂動モデル床反力水平成分Ｆｒは上記したごとく式ａ２１ｃのようになる（Ｆａ＝０）。
後述するように、Ｓ３５３６では、最終的に、補正歩容（より詳しくは、単純化モデル歩容の一部の瞬時値を補正した目標瞬時値）が生成（出力）される。補正歩容の目標上体姿勢傾斜角（これを以降、補正目標上体姿勢傾斜角と呼ぶ）は、前記求めた単純化モデル上体姿勢傾斜角の瞬時値（Ｓ３５３２で求めた今回歩容の現在時刻ｔでの目標上体姿勢傾斜角の瞬時値）に前記補正用摂動モデル上体姿勢傾斜角θｃ（現在時刻ｔの制御周期で求められる値）を演算部２０４で加えることにより得られる。補正歩容の目標上体水平位置（これを以降、補正目標上体水平位置と呼ぶ）は、前記求めた単純化モデル上体水平位置の瞬時値（Ｓ３５３２で求めた今回歩容の現在時刻ｔでの目標上体水平位置の瞬時値）に補正用摂動モデル上体水平位置Ｘｃ（現在時刻ｔの制御周期で求められる値）を演算部２０５で加えることにより得られる。また、補正歩容の目標逆位相腕振り角（これを以降、補正目標逆位相腕振り角と呼ぶ）は、前記求めた単純化モデル逆位相腕振り角の瞬時値（Ｓ３５３２で求めた今回歩容の現在時刻ｔでの目標逆位相腕振り角の瞬時値）に補正用摂動モデル逆位相腕振り角θｃａ（現在時刻ｔの制御周期で求められる値）を演算部２３２で加えることにより得られる。
補正歩容の目標床反力も修正される。具体的には、目標ＺＭＰまわりの床反力モーメント水平成分が０でなくなり、コンプライアンス制御用目標床反力モーメント水平成分が目標値として出力される。また、目標床反力水平成分も、補正目標床反力水平成分に修正され、出力される。また、目標床反力モーメント鉛直成分も、補正目標床反力モーメント鉛直成分に修正され、出力される。
ところで、上記のごとく、補正歩容の運動は、単純化モデル歩容の運動に摂動モデルの運動（詳しくは上体水平位置補正用摂動モデル２０２と上体姿勢傾斜角補正用摂動モデル２０３の運動と逆位相腕振り角補正用摂動モデル２３１の運動）を加えた（合成した）運動である。
一般に、ある基準運動に、ある摂動運動を加えた運動が発生する床反力は、基準運動が発生する床反力（運動によって発生する重力と慣性力に釣り合う床反力）と摂動運動によって発生する床反力の摂動分の和で近似される。
また、上体傾斜モードが発生する床反力水平成分、上体傾斜モードが発生する床反力モーメント鉛直成分、逆位相腕振りモードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力モーメント水平成分がいずれも０であることを考慮すると、補正歩容の運動に逆フルモデル２０１上で釣り合う床反力モーメントに補償全床反力モーメント水平成分Ｍｄｍｄｘｙと補償全床反力モーメント鉛直成分Ｍｄｍｄｚとを加えたものが補正目標床反力モーメントに一致する（前記Ａ１の条件を満たす）ためには、以下の３つの式を満足しなければならない。
フルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙ
＋上体水平位置補正用摂動モデルモーメントＭｐ
＋上体姿勢傾斜角補正用摂動モデルモーメントＭｒ
＋補償全床反力モーメント水平成分Ｍｄｍｄｘｙ
＝  補正目標床反力モーメント水平成分
…式ｈ５
フルモデル床反力水平成分Ｆｆｕｌｌ
＋上体水平位置補正用摂動モデル床反力水平成分Ｆｐ
＝  補正目標床反力水平成分
…式ｈ６
フルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚ
＋上体水平位置補正用摂動モデルモーメント鉛直成分Ｍｐｚ
＋逆位相腕振り角補正用摂動モデルモーメント鉛直成分Ｍａｚ
＋補償全床反力モーメント鉛直成分Ｍｄｍｄｚ
＝  補正目標床反力モーメント鉛直成分
…式ｈ１００６
ただし、上体水平位置補正用摂動モデルモーメント鉛直成分Ｍｐｚは、上体水平位置補正用摂動モデルの運動によって逆フルモデル２０１上で発生する床反力モーメント鉛直成分である。また、式ｈ５、式ｈ１００６のモーメントは、元の（単純化モデルの）目標ＺＭＰまわりのモーメントである。
また、補正歩容の真のＺＭＰは、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ、単純化モデル歩容の目標ＺＭＰ（理想目標ＺＭＰ）からずれた点に変更される。
補正歩容の真のＺＭＰ＝目標ＺＭＰ
＋補正目標床反力モーメント／目標床反力鉛直成分
…式ｈ７
尚、補正歩容の真のＺＭＰのＸ方向（前後方向）成分を算出する場合には、補正目標床反力モーメントのＹ軸（左右方向軸）まわり成分を用いる。また、補正歩容の真のＺＭＰのＹ方向成分を算出する場合には、補正目標床反力モーメントのＸ軸（前後軸）まわり成分を用いる。ただし、補正歩容の真のＺＭＰのＹ方向成分を算出する場合には、式ｈ７の右辺の「＋」は「−」にしなければならない。
補足すると、補正歩容の真のＺＭＰまわりの補正目標床反力モーメント鉛直成分を算出するようにしても良い。
補正歩容の真のＺＭＰまわりの補正目標床反力モーメント鉛直成分は、元の目標ＺＭＰまわりのモーメントに補正歩容の真のＺＭＰと目標ＺＭＰの差と式ｈ６で求めた補正目標床反力水平成分との外積を加えたものとなる。
式ｈ７から求められる補正歩容の真のＺＭＰは、ＺＭＰ許容範囲内になければならない。これをＺＭＰ制約条件と呼ぶ。
また、補正目標床反力水平成分は、歩容補正用（フルモデル補正用）の床反力水平成分許容範囲内になければならない。これを床反力水平成分制約条件と呼ぶ。
また、補正目標床反力モーメント鉛直成分は、歩容補正用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲内になければならない。これを床反力モーメント鉛直成分制約条件と呼ぶ。
以上のように、補正歩容は、式ｈ５、式ｈ６、式ｈ１００６、ＺＭＰ制約条件（式ｈ７から得られる補正歩容の真のＺＭＰの存在範囲条件）床反力水平成分制約条件および床反力モーメント鉛直成分制約条件を満足しなければならない。
しかし、単に、これらの式や条件を満足するだけでは、前記補正用摂動モデル上体位置と前記補正用摂動モデル上体姿勢傾斜角と前記補正用摂動モデル逆位相腕振り角が発散してしまう。
そこで、前記上体水平位置補正用摂動モデル２０２と前記上体姿勢傾斜角補正用摂動モデル２０３と前記逆位相腕振り角補正用摂動モデル２３１の状態量（より具体的には、補正用摂動モデル上体水平位置速度、補正用摂動モデル上体姿勢傾斜角・角速度、補正用摂動モデル逆位相腕振り角・角速度など）を基に、これらの状態量がある所定の状態に収束する（安定する）ように、補正用摂動モデル２０２，２０３，２３１の安定化制御を行う。
まず、上体水平位置補正用摂動モデル２０２の安定化制御について詳細を説明する。
上体水平位置補正用摂動モデル２０２を目標整定位置に収束（安定）させるための制御則を上体水平位置補正用摂動モデル制御則２０６と呼び、この制御則が決定するフィードバック量（操作量）を上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄと呼ぶ。ここで「要求値」を付けたのは、後述するように、真のＺＭＰが前記ＺＭＰ許容範囲内に存在し、かつ、床反力水平成分が床反力水平成分許容範囲内になるように、上記制御則で決定された値に制限が加えられて修正されるからである。制限が加えられて修正されたモーメントを、上体水平位置補正用摂動モデル安定化モーメントＭｐｆと呼ぶ。
具体的に上体水平位置補正用摂動モデル制御則２０６としては、式ｈ１０を用いる。ただし、目標整定位置は、式ｈ８で与えられる。また、ｍｔｏｔａｌは前記ロボット総重量、ｍｂは前記上体質点質量（倒立振子質量）であり、ＸＧｆは、単純化モデル歩容の瞬間姿勢を基にフルモデルを用いて計算される重心水平位置、すなわち、前記逆フルモデルが算出する重心水平位置である。また、Ｋｐｐ、Ｋｐｖはフィードバック制御のゲインである。
目標整定位置＝−ｍｔｏｔａｌ／ｍｂ＊（ＸＧｆ−ＸＧｓ）        …式ｈ８
上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄ
＝Ｋｐｐ＊（補正用摂動モデル上体水平位置Ｘｃ−目標整定位置）
＋Ｋｐｖ＊補正用摂動モデル上体水平速度ｄＸｃ／ｄｔ
−補正用摂動モデル上体水平位置Ｘｃ＊上体床反力鉛直成分Ｆｂｚ
…式ｈ１０
上体水平位置補正用摂動モデル安定化モーメント要求値ＭｐｆｄｍｄのＸ軸（前後方向軸）まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はＹ軸方向（左右方向）成分を用いる。
上体水平位置補正用摂動モデル安定化モーメント要求値ＭｐｆｄｍｄのＹ軸（左右方向軸）まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はＸ軸方向（前後方向）成分を用い、右辺第３項の「−」を「＋」に代える。
詳細は、先に本出願人が提案したＰＣＴ／ＪＰ０３／００４３５に記載されているので、ここではこれ以上の説明を省略する。
次に、上体姿勢傾斜角補正用摂動モデル２０３の安定化制御について詳細を説明する。
目標瞬時値発生部１００ｂが出力する基準上体姿勢傾斜角（図５７のＳ３４０４で求められたもの）あるいは単純化モデルによる目標上体姿勢傾斜角（図５７のＳ３４１４で求められたもの）に、補正目標上体姿勢傾斜角、すなわち、単純化モデルによる目標上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角を加えたものが整定あるいは追従するように、上体姿勢傾斜角補正用摂動モデル２０３の状態に応じて、ＰＩ制御などのフィードバック制御則によってフィードバック量（操作量）を決定し、これを上体姿勢傾斜角補正用摂動モデル２０３に付加的に入力する。
この制御則を上体姿勢傾斜角補正用摂動モデル制御則２０７（上体姿勢角補正用摂動モデル制御則２０７と略すこともある）と呼び、このフィードバック量（操作量）を上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄと同様の理由からである。制限が加えられて修正されたモーメントを、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆと呼ぶ。
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄを決定する上体姿勢傾斜角補正用摂動モデル制御則２０７は、具体的には、次式のようにすれば良い。
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄ
＝Ｋｒｐ＊（補正用摂動モデル上体姿勢傾斜角θｃ
−（基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角））
＋Ｋｒｖ＊補正用摂動モデル上体姿勢傾斜角速度ｄθｃ／ｄｔ
…式ｈ１１
ただし、Ｋｒｐ、Ｋｒｖはフィードバック制御のゲインである。
なお、式ｈ１１において、（基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角）の代わりに０としてもよい。
再び、図６６の機能ブロック図を用いてＳ３５３６の処理を説明すると、上記のごとく、前記上体水平位置補正用摂動モデル制御則２０６（式ｈ１０）によって上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄが求められる。また、前記上体姿勢傾斜角補正用摂動モデル制御則２０７（式ｈ１１）によって上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄが求められる。
次いで、上体水平位置補正用摂動モデル安定化モーメントＭｐｆが０であったと仮定した場合の上体位置補正用摂動モデルの床反力推定（算出）値Ｆ０がＦ０演算部２０８により求められる。後述するように、上体水平位置補正用摂動モデル２０２には、フルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙに、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを加えられたものが入力される。したがって、Ｆ０は、上体水平位置補正用摂動モデル２０２にフルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙの符号を反転させたものだけが入力された場合に上体水平位置補正用摂動モデル２０２が発生する床反力である。
具体的には、次式によってＦ０が求められる。
Ｆ０＝ｍｂ＊ｄ２Ｘｃ／ｄｔ２−１／ｈ＊Ｍｐｆ            …式ｈ１２
右辺第１項は、前回（時刻ｔ−Δｔ）の上体水平位置補正用摂動モデル２０２の床反力水平成分を表す。
右辺第２項は、前回の上体水平位置補正用摂動モデル安定化モーメントＭｐｆによって、上体水平位置補正用摂動モデル２０２に直接的に発生した（すなわち直達項の）床反力水平成分を表す。
すなわち、上体水平位置補正用摂動モデル２０２の前回の上体質点水平加速度に上体質点の質量ｍｂを乗じた値から、前回の上体水平位置補正用摂動モデル安定化モーメントＭｐｆを上体並進モード床反力比率ｈで割った値を減じることによって、Ｍｐｆが０であったと仮定した場合の上体位置補正用摂動モデルの床反力Ｆ０の推定値が求められる。
次に、前記制約（床反力水平成分制約条件およびＺＭＰ制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄに一致させると共に、目標ＺＭＰまわりの目標床反力モーメント水平成分としてのコンプライアンス制御用目標床反力モーメントを補償全床反力モーメント水平成分ＭｄｍｄｘｙとＭｐｆとＭｒｆとの総和に一致させたと仮定した場合に、目標ＺＭＰまわりに発生する床反力モーメント水平成分ＭｉｎがＭｉｎ演算部２０９により求められる。この床反力モーメント水平成分を無制限時補正目標床反力モーメント水平成分Ｍｉｎと呼ぶ。無制限時補正目標床反力モーメント水平成分Ｍｉｎは、次式によって求められる。
Ｍｉｎ＝Ｍｐｆｄｍｄ＋Ｍｒｆｄｍｄ＋Ｍｄｍｄｘｙ              …式ｈ１３
すなわち、無制限時補正目標床反力モーメント水平成分Ｍｉｎは、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄと補償全床反力モーメント水平成分Ｍｄｍｄｘｙとを加算することにより得られる。
次いで、前記制約（床反力水平成分制約条件およびＺＭＰ制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分ＭｄｍｄｘｙとＭｐｆとＭｒｆとの総和に一致させたと仮定した場合に、発生する床反力水平成分ＦｉｎがＦｉｎ演算部２１０により求められる。この床反力水平成分を無制限時補正目標床反力水平成分Ｆｉｎと呼ぶ。
補正目標床反力水平成分は、前記式ｈ６によって得られるが、前述のごとく、上体姿勢傾斜角補正用摂動モデル２０３の挙動によって上体姿勢傾斜角補正用摂動モデル２０３には床反力水平成分は発生しない、すなわちＦｒは０である。したがって、無制限時補正目標床反力水平成分Ｆｉｎは、上体水平位置補正用摂動モデル安定化モーメントＭｐｆが０であったと仮定した場合の補正目標床反力水平成分に、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを０から上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに変更したことによって増加する床反力水平成分を加えたものになる。
ところで、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを０から上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに変更したことによって増加する床反力水平成分は、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄを上体並進モード床反力比率ｈで割った値になる。
したがって、無制限時補正目標床反力水平成分Ｆｉｎは、式ｈ１５に示すように、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄを上体並進モード床反力比率ｈで割った値に、前記求めたフルモデル床反力水平成分Ｆｆｕｌｌを加算し、さらに、上体水平位置補正用摂動モデル安定化モーメントＭｐｆが０であったと仮定した場合の上体位置補正用摂動モデルの床反力の算出値Ｆ０を加算することによって得られる。
Ｆｉｎ＝１／ｈ＊Ｍｐｆｄｍｄ＋Ｆｆｕｌｌ＋Ｆ０          …式ｈ１５
次いで、制限手段（制限処理部）２１１によって、無制限時補正目標床反力モーメント水平成分Ｍｉｎと無制限時補正目標床反力水平成分Ｆｉｎとから、これらに制限を加えた値である（目標ＺＭＰまわりの）制限補正目標床反力モーメント水平成分Ｍｌｔｄと制限補正目標床反力水平成分Ｆｌｔｄが決定される。本実施形態では、コンプライアンス制御用目標床反力モーメント水平成分は、制限補正目標床反力モーメント水平成分Ｍｌｔｄに一致し、補正歩容の床反力水平成分は制限補正目標床反力水平成分Ｆｌｔｄに一致する。
制限補正目標床反力モーメント水平成分Ｍｌｔｄと制限補正目標床反力水平成分Ｆｌｔｄとは、補正歩容（コンプライアンス制御用目標床反力モーメント水平成分を含む）の真のＺＭＰが前記ＺＭＰ許容範囲内に存在し、かつ、補正歩容の床反力水平成分が床反力水平成分許容範囲内になるように決定される。すなわち、ＭｌｔｄおよびＦｌｔｄはＺＭＰ制約条件および床反力水平成分制約条件を満足するように決定される。
また、上記制約条件下で、上体水平位置補正用摂動モデル安定化モーメントＭｐは、可能な限り、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに一致または近い値になるように決定される。同様に、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒは、可能な限り上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄに一致または近い値になるように決定される。これにより、前記補正用摂動モデル上体位置Ｘｃと前記補正用摂動モデル上体姿勢傾斜角θｃとを安定化し、発散することを防止する。
制限手段（制限処理部）２１１の詳細は、先に本出願人が提案したＰＣＴ／ＪＰ０３／００４３５に記載されているので、ここではこれ以上の説明を省略する。
次いで、以下の式により、上体水平位置補正用摂動モデル安定化モーメントＭｐｆ、および上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆがそれぞれＭｐｆ演算部２１２、Ｍｒｆ演算部２１３により求められる。
Ｍｐｆ＝（Ｆｌｔｄ−Ｆｆｕｌｌ−Ｆ０）＊ｈ      …式ｈ２０
Ｍｒｆ＝Ｍｌｔｄ−Ｍｐｆ−Ｍｄｍｄｘｙ          …式ｈ２１
すなわち、Ｍｐｆ演算部２１２では、制限補正目標床反力水平成分Ｆｌｔｄから、フルモデル床反力水平成分Ｆｆｕｌｌを減じ、Ｍｐが０であったと仮定した場合の上体位置補正用摂動モデル２０２の床反力の算出値Ｆ０を減じた値に、上体並進モード床反力比率ｈを乗じることにより、前記上体水平位置補正用摂動モデル安定化モーメントＭｐｆが得られる。また、Ｍｒｆ演算部２１３では、目標ＺＭＰまわりの制限補正目標床反力モーメント水平成分Ｍｌｔｄから前記上体水平位置補正用摂動モデル安定化モーメントＭｐｆと補償全床反力モーメント水平成分Ｍｄｍｄｘｙとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆが得られる。
次いで、以下の式により、上体水平位置補正用摂動モデル床反力モーメントＭｐ、および上体姿勢傾斜角補正用摂動モデル床反力モーメントＭｒが求められる。
Ｍｐ＝Ｍｐｆ−Ｍｆｕｌｌ      …式ｈ２２
Ｍｒ＝Ｍｒｆ                  …式ｈ２３
すなわち、Ｍｐ演算部２１４にて、上体水平位置補正用摂動モデル安定化モーメントＭｐｆからフルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙを減じることにより、上体水平位置補正用摂動モデル床反力モーメントＭｐが得られる。また、上体姿勢傾斜角補正用摂動モデル床反力モーメントＭｒは、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆと同一の値とされる。
次いで、上体水平位置補正用摂動モデル床反力モーメントＭｐが上体位置補正用摂動モデル２０２に入力され、その入力された床反力モーメントに釣り合う補正用摂動モデル上体位置Ｘｃが算出される。
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントＭｒが上体姿勢傾斜角補正用摂動モデル２０３に入力され、その入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θｃが算出される。
次いで、演算部２０５，２０４にて、それぞれ次式ｈ２４、式ｈ２５に従って、補正目標上体水平位置と補正目標上体姿勢傾斜角とが決定され、これらがそれぞれ上体水平位置姿勢の最終的な目標瞬時値として出力される。
補正目標上体水平位置
＝単純化モデル上体水平位置＋補正用摂動モデル上体位置Ｘｃ
…式ｈ２４
補正目標上体姿勢傾斜角
＝単純化モデル上体姿勢傾斜角＋補正用摂動モデル上体姿勢傾斜角θｃ
…式ｈ２５
すなわち、単純化モデル上体水平位置に補正用摂動モデル上体位置Ｘｃを加えることにより補正目標上体水平位置が得られ、これが最終的な目標上体水平位置として出力される。また、単純化モデル上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角θｃを加えることにより補正目標上体姿勢傾斜角が得られ、これが最終的な目標上体姿勢傾斜角として出力される。
また、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメント水平成分として制限補正目標床反力モーメント水平成分Ｍｌｔｄが出力されると共に、補正目標床反力水平成分として制限補正目標床反力水平成分Ｆｌｔｄが出力される。
すなわち、次式ｈ２６、式ｈ２７に従って、補正目標床反力水平成分と目標ＺＭＰまわりの補正目標床反力モーメント水平成分とがそれぞれ、床反力水平成分および床反力モーメント水平成分（目標ＺＭＰまわりのモーメント水平成分）の最終的な目標瞬時値として決定され、これらが出力される。
コンプライアンス制御用目標床反力モーメント水平成分
＝制限補正目標床反力モーメント水平成分Ｍｌｔｄ
…式ｈ２６
補正目標床反力水平成分
＝制限補正目標床反力水平成分Ｆｌｔｄ
…式ｈ２７
Ｓ３５３６における以上までの処理は、本願出願人によるＰＣＴ／ＪＰ０３／００４３５の通りであるので、ここでの説明は以上に留める。
本実施形態ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部２３０において、逆位相腕振り角補正用摂動モデル２３１への入力である逆位相腕振り角補正用摂動モデルモーメントＭａと目標床反力モーメント鉛直成分が決定される。次いで、逆位相腕振り角補正用摂動モデルモーメントＭａは、逆位相腕振り角補正用摂動モデル２３１に入力され、補正用摂動モデル逆位相腕振り角θｃａが決定される。
補足すると、逆位相腕振り角補正用摂動モデルモーメント決定部２３０は、目標瞬時値発生部１００ｂが出力する基準逆位相腕振り角（図５７のＳ３４０４で求められたもの）あるいは単純化モデルによる目標逆位相腕振り角（図５７のＳ３４１４で求められたもの）に、補正目標逆位相腕振り角、すなわち、単純化モデルによる目標逆位相腕振り角に補正用摂動モデル逆位相腕振り角を加えたものが整定あるいは追従するように、逆位相腕振り角補正用摂動モデル２３１の状態に応じて、ＰＩ制御などのフィードバック制御則によってフィードバック量（操作量）を決定し、これを逆位相腕振り角補正用摂動モデル２３１に付加的に入力する。
この制御則を逆位相腕振り角補正用摂動モデル制御則と呼び、このフィードバック量（操作量）を逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄと同様の理由からである。制限が加えられて修正されたモーメントを、逆位相腕振り角補正用摂動モデル安定化モーメントＭａｆと呼ぶ。なお、本実施形態では、このＭａｆが、逆位相腕振り角補正用摂動モデルモーメントＭａとして、逆位相腕振り角補正用摂動モデル２３１に入力される。
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄを決定する逆位相腕振り角補正用摂動モデル制御則は、具体的には、次式のようにすれば良い。
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄ
＝Ｋａｐ＊（補正用摂動モデル逆位相腕振り角θｃａ
−（基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角））
＋Ｋａｖ＊補正用摂動モデル逆位相腕振り角速度ｄθｃａ／ｄｔ
…式ｈ３０
ただし、Ｋａｐ、Ｋａｖはフィードバック制御則のゲインである。
なお、式ｈ３０において、（基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角）の代わりに０としてもよい。
以下に、逆位相腕振り角補正用摂動モデルモーメント決定部２３０の動作についてその機能ブロック図である図７０を用いて詳細を説明する。
まず、上記のごとく、前記逆位相腕振り角補正用摂動モデル制御則２３０ａ（式ｈ３０）によって逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄが求められる。
次いで、上体水平位置補正用摂動モデル２０２を用いた上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Ｍｐｚが、上体水平位置補正に起因する床反力モーメント鉛直成分摂動量算出部２３０ｂによって求められる。
具体的には、次式によって求められる。
Ｍｐｚ＝（単純モデル上体質点位置
＋補正用摂動モデル上体位置Ｘｃ−目標ＺＭＰ）
＊（単純モデル上体質点水平加速度
＋補正用摂動モデル上体加速度ｄ２Ｘｃ／ｄｔ２）
−（単純モデル上体質点位置  −  目標ＺＭＰ）
＊（単純モデル上体質点水平加速度）
…式ｈ３１
あるいは、上式を近似した以下の式を用いても良い。
Ｍｐｚ≒補正用摂動モデル上体位置Ｘｃ
＊（単純モデル上体質点水平加速度
＋補正用摂動モデル上体加速度ｄ２Ｘｃ／ｄｔ２）
＋（単純モデル上体質点位置−目標ＺＭＰ）
＊  補正用摂動モデル上体加速度ｄ２Ｘｃ／ｄｔ２）
…式ｈ３２
次に、前記床反力モーメント鉛直成分制約条件を無視して、逆位相腕振り角補正用摂動モデル安定化モーメントＭａｆを、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄに一致させると共に、目標ＺＭＰまわりの目標床反力モーメント鉛直成分としてのコンプライアンス制御用目標床反力モーメント鉛直成分を補償全床反力モーメント鉛直成分ＭｄｍｄｚとＭａｆとＭｆｕｌｌｚとＭｐｚとの総和に一致させたと仮定した場合に、目標ＺＭＰまわりに発生する床反力モーメント鉛直成分Ｍｉｎｚが演算部２３０ｃにより求められる。この床反力モーメント鉛直成分を無制限時補正目標床反力モーメーント鉛直成分Ｍｉｎｚと呼ぶ。無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚは、次式によって求められる。
Ｍｉｎｚ＝Ｍａｆｄｍｄ＋Ｍｄｍｄｚ＋Ｍｆｕｌｌｚ＋Ｍｐｚ          …式ｈ３３
すなわち、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚは、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄと補償全床反力モーメント鉛直成分Ｍｄｍｄｚとフルモデル床反力モーメント鉛直成分をＭｆｕｌｌｚと上体水平位置補正用摂動モデルモーメント鉛直成分Ｍｐｚとを加算することにより得られる。
次いで、制限手段（制限処理部）２３０ｄによって、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚから、これに制限を加えた値である（目標ＺＭＰまわりの）制限補正目標床反力モーメント鉛直成分Ｍｌｔｄｚが決定される。本実施形態では、コンプライアンス制御用目標床反力モーメント鉛直成分は、制限補正目標床反力モーメント鉛直成分Ｍｌｔｄｚに一致する。
制限補正目標床反力モーメント鉛直成分Ｍｌｔｄｚは、床反力モーメント鉛直成分許容範囲内になるように決定される。すなわち、Ｍｌｔｄｚは床反力モーメント鉛直成分制約条件を満足するように決定される。
また、上記床反力モーメント鉛直成分制約条件下で、逆位相腕振り角補正用摂動モデル安定化モーメントＭａｆは、可能な限り、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄに一致または近い値になるように決定される。これにより、前記補正用摂動モデル逆位相腕振り角θｃａを安定化し、発散することを防止する。
制限手段（制限処理部）２３０ｄは、次式に示す飽和特性を持った関数である。
Ｍｉｎｚ＞床反力モーメント鉛直成分許容範囲上限値である場合
Ｍｌｔｄｚ＝床反力モーメント鉛直成分許容範囲上限値
Ｍｉｎｚ＜床反力モーメント鉛直成分許容範囲下限値である場合
Ｍｌｔｄｚ＝床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Ｍｉｎｚ、且つ、Ｍｉｎｚ≦床反力モーメント鉛直成分許容範囲上限値である場合
Ｍｌｔｄｚ＝Ｍｉｎｚ
……式ｈ３４
次いで、以下の式により、逆位相腕振り角補正用摂動モデルモーメントＭａ（＝逆位相腕振り角補正用摂動モデル安定化モーメントＭａｆ）がＭａｆ演算部２３０ｅにより求められる。
Ｍａ＝Ｍｌｔｄｚ−（Ｍｄｍｄｚ＋Ｍｆｕｌｌｚ＋Ｍｐｚ）      …式ｈ３５
すなわち、Ｍａｆ演算部２３０ｅでは、制限補正目標床反力モーメント鉛直成分Ｍｌｔｄｚから、補償全床反力モーメント鉛直成分Ｍｄｍｄｚとフルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚと上体水平位置補正用摂動モデルモーメント鉛直成分Ｍｐｚとを減じることによって、逆位相腕振り角補正用摂動モデル安定化モーメントＭａｆとしての逆位相腕振り角補正用摂動モデルモーメントＭａが得られる。
一方、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメント鉛直成分として制限補正目標床反力モーメント鉛直成分Ｍｌｔｄが出力される。
すなわち、次式ｈ３５に従って、目標ＺＭＰまわりの補正目標床反力モーメント鉛直成分が床反力モーメント鉛直成分（目標ＺＭＰまわりのモーメント鉛直成分）の最終的な目標瞬時値として決定され、これらが出力される。
コンプライアンス制御用目標床反力モーメント鉛直成分
＝制限補正目標床反力モーメント鉛直成分Ｍｌｔｄｚ
…式ｈ３６
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部２３０の処理が行われた後、逆位相腕振り角補正用摂動モデルモーメントＭａは、図６６の逆位相腕振り角補正用モデル２３１に入力され、その入力された逆位相腕振り角補正用摂動モデルモーメントＭａに釣り合う補正用摂動モデル逆位相腕振り角θｃａが、式ａ２３ｃを用いて（積分することによって）算出される。
次いで、演算部２３２にて、次式ｈ３７に従って、補正目標逆位相腕振り角が決定され、これが逆位相腕振り角の最終的な目標瞬時値として出力される。
補正目標逆位相腕振り角
＝単純化モデル逆位相腕振り角
＋補正用摂動モデル逆位相腕振り角θｃａ
…式ｈ３７
すなわち、単純化モデル逆位相腕振り角に補正用摂動モデル逆位相腕振り角θｃａを加えることにより補正目標逆位相腕振り角が得られる、これが最終的な目標逆位相腕振り角として出力される。
以上のごとく、Ｓ３５３６の歩容補正が行われる。
尚、補足すると、本実施形態は、フィードフォワード型の補正であり、また、摂動動力学モデルは厳密モデルではない。このため、上記のごとく式ｈ５、式ｈ６および式ｈ１００６を満足するように歩容を補正しても、厳密には、動力学平衡条件を満足するするわけではなく、近似的に動力学平衡条件を満足する。
また、本実施形態では、例えば１歩の歩容の終端（今回歩容終端）において、上体水平位置補正用摂動モデル２０２と上体姿勢傾斜角補正用摂動モデル２０３と逆位相腕振り角補正用摂動モデル２３１との状態量、例えば上体水平位置補正用摂動モデル２０２の上体質点（倒立振子質点）の水平位置や、上体姿勢傾斜角補正用摂動モデル２０３のフライホールの回転角や、逆位相腕振り角補正用摂動モデル２３１のフライホールの回転角は、単純化モデル２００の状態量として追加される。つまり、今回歩容終端における単純化モデル２００の状態量が、上体水平位置補正用摂動モデル２０２の上体運動と上体姿勢傾斜角補正用摂動モデル２０３と逆位相腕振り角補正用摂動モデル２３１との状態量を加えたものに修正される。さらに、各摂動モデル２０２，２０３，２３１の状態量は初期化される（例えば上体水平位置補正用摂動モデル２０２の上体質点（倒立振子質点）の水平位置や、上体姿勢傾斜角補正用摂動モデル２０３のフライホールの回転角や、逆位相腕振り角補正用摂動モデル２３１のフライホールの回転角が０にリセットされる）。そして、上記の如く修正した単純化モデル２００の状態量を次回歩容の初期値として、次回歩容の生成が行なわれると共に、各摂動モデル２０２，２０３，２３１による補正用摂動モデル上体水平位置Ｘｃ、補正用摂動モデル上体姿勢傾斜角θｃおよび補正用摂動モデル逆位相腕振り角θｃａの算出が行なわれる。これにより各摂動モデル２０２，２０３，２３１の挙動の安定性をより一層高めることができる。なお、上記のような単純化モデル２００の状態量の修正は、歩容の生成途中で適宜行なってもよい。逆に、上記のような単純化モデル２００の状態量の修正や摂動モデルのリセットを、歩容の生成途中に行なわなくてもよい。
また、上記のような単純化モデル２００の状態量の修正は、後述する第４、第５実施形態においても同様に行なわれる。
本実施形態では、前記復元条件すべてを満足する。したがって、前記第２実施形態と同様の作用効果を奏することができる。
さらに、第２実施形態の作用効果に加え、前記復元条件を満足するように上体水平位置、上体姿勢傾斜角および逆位相腕振り角を決定する際に、演算量を比較的少ないものとすることができる。
以上説明した第３実施形態は、本発明のうちの第１〜第１０発明、第１２〜第１５発明、第２０〜第２２発明、第２４〜第２６発明、第２８〜第３０発明の実施形態になっている。この場合、第３実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第３実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当する。そして、前記逆位相腕振り角補正用摂動モデルモーメントＭａが第１０発明におけるモーメント修正操作量と、第２２発明における摂動モデル操作量とに相当し、補正用摂動モデル逆位相腕振り角θｃａが第２発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量とに相当する。さらに、第３実施形態における、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚが第２６発明における制限対象量の推定値に、逆位相腕振り角補正用モデル安定化モーメントＭａｆｄｍｄが第３発明におけるモデル補正床反力モーメンと第２４発明における摂動モデル操作量の要求値とに相当する。さらに、第３実施形態におけるフルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚに上体水平位置補正に起因する床反力モーメント鉛直成分Ｍｐｚを加えたものが、目標運動の仮瞬時値にフルモデル（動力学モデル）上でほぼ釣り合う床反力モーメントの鉛直成分に相当する。そして、これに図７０の演算部２３０ｃでＭｄｍｄｚを加えたものが第２０発明におけるモデル制限対象量瞬時値に相当する。
なお、前記第３実施形態においては、Ｍａｆｄｍｄは定常的に０となるものでは無いが、これを定常的に０とすれば、本発明のうちの第２３発明の実施形態が構成されることとなる。
次に本発明の第４実施形態を以下に図７１及び図７２を参照して説明する。第４実施形態に係る装置の補正手法は、前記第３実施形態のものと歩容生成装置１００の処理（図６５のＳ３５３６の処理）のみが相違するものであり、フルモデルフィードバック補正型である。また、逆動力学フルモデル（逆フルモデル）を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
図７１は、この第４実施形態に係る装置の動作、具体的には、図６５のフローチャートのＳ３５３６の歩容の修正手法を説明する機能ブロック図である。ただし、図７１の単純化モデル２００は、前記第３実施形態と同様、単に動力学モデルだけでなく、図６５のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表す。したがって、図７１において、単純化モデル２００から先の部分がＳ３５３６の処理に相当する。なお、図７１の機能部分のうち、第３実施形態に係る図６６と同一の機能分については、図６６と同一の参照符号を用い、詳細な説明を省略する。
Ｓ３５３６の処理以外の構成は第３実施形態と同じであるので説明を省略し、以下に図７１を用いてＳ３５３６の処理を詳細に説明する。
Ｓ３５３６では、まず、前述のごとく図６５のＳ３５３２で求めた単純化モデル歩容の目標上体水平位置の瞬時値（現在時刻ｔの制御周期で求めた仮瞬時値）に、前回制御周期（時刻ｔ−Δｔ）で後述のごとく算出した補正用摂動モデル上体水平位置Ｘｃを演算部２０５により加えることにより、最終的な目標上体水平位置（補正目標上体水平位置）が求められる。また、図６５のＳ３５３２で求めた単純化モデル歩容の目標上体姿勢傾斜角の瞬時値（現在時刻ｔの制御周期で求めた仮瞬時値）に、前回制御周期（時刻ｔ−Δｔ）で算出した後述する補正用摂動モデル上体姿勢傾斜角θｃを演算部２０４により加えることにより、最終的な目標上体姿勢傾斜角（補正目標上体姿勢傾斜角）が求められる。また、図６５のＳ３５３２で求めた単純化モデル歩容の目標逆位相腕振り角の瞬時値（現在時刻ｔの制御周期で求めた仮瞬時値）に、前回制御周期（時刻ｔ−Δｔ）で算出した後述する補正用摂動モデル逆位相腕振り角θｃａを演算部２３２により加えることにより、最終的な目標逆位相腕振り角（補正目標逆位相腕振り角）が求められる。
そして、これらの補正目標上体水平位置、補正目標上体姿勢傾斜角および補正目標逆位相腕振り角が、それぞれ上体水平位置、上体姿勢傾斜角および逆位相腕振り角の最終的な目標瞬時値として出力される。
すなわち、前記式ｈ２４、式ｈ２５、式ｈ３７により、補正目標上体水平位置と補正目標上体姿勢傾斜角と補正目標逆位相腕振り角とが求められる。
次いで、上記の如く単純化モデル歩容を補正して得られた目標上体水平位置（補正目標上体水平位置）、目標上体姿勢傾斜角（補正目標上体姿勢傾斜角）、目標逆位相腕振り角（補正目標逆位相腕振り角）、および前述のごとく得られた単純化モデル歩容の目標重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ＺＭＰの瞬時値とを、前記逆動力学フルモデル２０１に入力し、その入力された運動変数で表される運動に釣り合う（すなわち運動によって逆フルモデル２０１が発生する）床反力水平成分と目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）とが算出される。従って、本実施形態では、逆フルモデル２０１には、単純化モデル上体水平位置、上体姿勢傾斜角、逆位相腕振り角に加えて、補正用摂動モデル上体水平位置Ｘｃと補正用摂動モデル上体姿勢傾斜角θｃと補正用摂動モデル逆位相腕振り角θｃａとが追加的に入力される。以降、第３実施形態と同様、逆フルモデル２０１により算出された床反力水平成分、床反力モーメント水平成分、床反力モーメント鉛直成分、をそれぞれフルモデル床反力水平成分Ｆｆｕｌｌｘｙ、フルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙ、フルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚと呼ぶ。
フルモデル床反力水平成分Ｆｆｕｌｌは、補正目標床反力水平成分（現在時刻ｔにおける床反力水平成分の最終的な目標瞬時値）として出力される。
すなわち、以下の式により、補正目標床反力水平成分が決定されて出力される。
補正目標床反力水平成分＝フルモデル床反力水平成分Ｆｆｕｌｌ
…式ｈ４８
以上の処理からわかるように、本実施形態では、フルモデル補正歩容は、単純化モデル歩容に上体水平位置補正用摂動モデル２０２の挙動と上体姿勢傾斜角補正用摂動モデル２０３の挙動と逆位相腕振り角補正用摂動モデル２３１の挙動とを加えたものになる。さらに、上体傾斜モードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力水平成分がいずれも０であることを考慮すると、次式が成立する。ただし、単純化モデル床反力水平成分は、単純化モデル歩容の運動によって発生する床反力を逆フルモデル２０１を用いて算出したものの並進力水平成分である。
フルモデル床反力水平成分Ｆｆｕｌｌ
＝単純化モデル床反力水平成分
＋上体水平位置補正用摂動モデル床反力水平成分Ｆｐ
…式ｈ５１
次いで、上体水平位置補正用摂動モデル制御則２０６により、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄが決定される。本実施形態における上体水平位置補正用摂動モデル制御則２０６は、特願２００１−１３３６２１号で本願出願人が提案した如く、設定される。例えば、次式のように該制御則２０６が決定される。
上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄ
＝Ｋｐｇ＊重心差＋Ｋｖｇ＊補正用摂動モデル上体水平速度ｄＸｃ／ｄｔ
…式ｈ５２
ただし、重心差は、次式で求められる。
重心差＝フルモデル重心水平位置−単純化モデル重心水平位置
…式ｈ５３
式ｈ５２におけるＫｐｇ、Ｋｖｇはフィードバック制御則のゲインであり、フルモデル重心水平位置、単純化モデル重心水平位置および補正用摂動モデル上体水平速度ｄＸｃ／ｄｔは、それぞれ、前回（時刻ｔ−Δｔ）に後述のごとく算出したフルモデル歩容瞬時値の重心水平位置、単純化モデル歩容瞬時値の重心水平位置（単純化モデル歩容の瞬間姿勢を基に単純化モデルを用いて計算される重心水平位置ＸＧｓ）、および補正用摂動モデル上体水平速度ｄＸｃ／ｄｔである。
即ち、フルモデル重心水平位置から単純化モデル重心水平位置を減算して得た重心差と摂動モデルの状態量のひとつである摂動モデル上体速度とに基づいて摂動モデル制御用フィードバック量（操作量）を演算するようにした。かかる摂動モデル制御則により、前記重心差の時間的平均値を、ほぼ０に制御することができる。
次いで、上体姿勢傾斜角補正用摂動モデル制御則２０７により、上体姿勢補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄが決定される。これは、第３実施形態と同様の制御則を用いれば良い。従って、該制御則２０７としては、例えば前記式ｈ１１が用いられる。
次いで、無制限時補正目標床反力モーメントＭｉｎがＭｉｎ演算部２０９により求められる（推定される）。無制限時補正目標床反力モーメントＭｉｎは、第３実施形態と同様、前記制約（ＺＭＰ制約条件および床反力水平成分制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄに一致させると共に、目標ＺＭＰまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分ＭｄｍｄｘｙとＭｐｆとＭｒｆとの総和に一致させた場合に、目標ＺＭＰまわりに発生する床反力モーメント水平成分である。
無制限時補正目標床反力モーメント水平成分Ｍｉｎは、第３実施形態と同様、前記式ｈ１３の演算によって求められる。すなわち、無制限時補正目標床反力モーメント水平成分Ｍｉｎは、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄと補償全床反力モーメント水平成分Ｍｄｍｄｘｙとを加算することにより得られる。
さらに、Ｆｉｎ演算部２１０により、無制限時補正目標床反力水平成分Ｆｉｎも求められる（推定される）。無制限時補正目標床反力水平成分Ｆｉｎは、第３実施形態と同様、前記制約（ＺＭＰ制約条件および床反力水平成分制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントＭｐｆを上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Ｍｒｆｄｍｄに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分ＭｄｍｄｘｙとＭｐｆとＭｒｆとの総和に一致させたとした場合に、逆フルモデル２０１が発生する床反力水平成分（Ｆｆｕｌｌに相当）である。
無制限時補正目標床反力水平成分Ｆｉｎは、第３実施形態とは異なり、次式により求められる。
無制限時補正目標床反力水平成分Ｆｉｎ
＝フルモデル床反力水平成分Ｆｆｕｌｌ
＋１／ｈ
＊（上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄ
−上体水平位置補正用摂動モデル安定化モーメントＭｐｆ）
…式ｈ５４
ただし、上体水平位置補正用摂動モデル安定化モーメントＭｐｆは前回値（時刻ｔ−Δｔでの値）が用いられる。すなわち、上体水平位置補正用摂動モデル安定化モーメント要求値Ｍｐｆｄｍｄと上体水平位置補正用摂動モデル安定化モーメントＭｐｆの差を求め、上体水平位置補正用摂動モデルの入力を前記差だけ増加させることに起因するフルモデル床反力水平成分Ｆｆｕｌｌの増加量を、前記差を上体並進モード床反力比率ｈで割ることにより推定する。さらに、これにフルモデル床反力水平成分Ｆｆｕｌｌを加えることにより、無制限時補正目標床反力水平成分Ｆｉｎが推定される。
次いで、第３実施形態と同様の制限手段（制限処理部２１１）によって、無制限時補正目標床反力モーメント水平成分Ｍｉｎと無制限時補正目標床反力水平成分Ｆｉｎとから、前記制約（ＺＭＰ制約条件および床反力水平成分制約条件）を満足するように、これらに制限を加えた値である（目標ＺＭＰまわりの）制限補正目標床反力モーメント水平成分Ｍｌｔｄと制限補正目標床反力水平成分Ｆｌｔｄとが決定される。この処理手法は、第３実施形態と同一である。
本実施形態においても、コンプライアンス制御用目標床反力モーメント水平成分は制限補正目標床反力モーメント水平成分Ｍｌｔｄに一致され、また、補正目標床反力水平成分は制限補正目標床反力水平成分Ｆｌｔｄにほぼ一致するので、上記のごとく制限補正目標床反力モーメント水平成分Ｍｌｔｄと制限補正目標床反力水平成分Ｆｌｔｄとを決定することによって、コンプライアンス制御用目標床反力モーメント水平成分および補正目標床反力水平成分は、それぞれＺＭＰ制約条件および床反力水平成分制約条件をほぼ満足する。
次いで、Ｍｐｆ演算部２１５によって、上体水平位置補正用摂動モデル安定化モーメントＭｐｆが求められる。さらに詳細には、制限補正目標床反力水平成分Ｆｌｔｄからフルモデル床反力水平成分Ｆｆｕｌｌを減じた値にゲインＫｃを乗じたものを積分器２１５ａにて積分し、さらに得られた積分値に上体並進モード床反力比率ｈを乗じることにより、上体水平位置補正用摂動モデル安定化モーメントＭｐｆが求められる。すなわち、次式により、上体水平位置補正用摂動モデル安定化モーメントＭｐｆが得られる。
Ｍｐｆ＝ｈ＊∫Ｋｃ（Ｆｌｔｄ−Ｆｆｕｌｌ）ｄｔ                  …式ｈ５５
次いで、Ｍｒｆ演算部２１４によって、制限補正目標床反力モーメント水平成分Ｍｌｔｄから上体水平位置補正用摂動モデル安定化モーメントＭｐｆと補償全床反力モーメント水平成分Ｍｄｍｄｘｙとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆが求められる。すなわち、前記式ｈ２１により、上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆが得られる。
さらに、前記式ｈ２３により、上体姿勢傾斜角補正用摂動モデル床反力モーメントＭｒが決定される。すなわち、Ｍｒｆ演算部２１４の出力である上体姿勢傾斜角補正用摂動モデル安定化モーメントＭｒｆがそのまま上体姿勢傾斜角補正用摂動モデル床反力モーメントＭｒとして決定される。
次いで、次式で定義されるフルモデル床反力モーメント誤差ＭｅｒｒがＭｅｒｒ演算部２１６により算出される。
フルモデル床反力モーメント誤差Ｍｅｒｒ
＝フルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙ
−制限補正目標床反力モーメント水平成分Ｍｌｔｄ
…式ｈ５６
次いで、Ｍｐ演算部２１７により、次式に従って、上体水平位置補正用摂動モデル床反力モーメントＭｐが求められる。
Ｍｐ＝Ｍｐｆ−∫Ｋｍ＊Ｍｅｒｒ  ｄｔ              …式ｈ５７
すなわち、フルモデル床反力モーメント誤差Ｍｅｒｒに積分ゲインＫｍを乗じた値を積分器２１７ａにて積分すると共に、その積分値の符号を反転する。さらに、該積分器２１７ａの出力を上体水平位置補正用摂動モデル安定化モーメントＭｐｆに加えることにより、上体水平位置補正用摂動モデル床反力モーメントＭｐが求められる。
次いで、上体水平位置補正用摂動モデル床反力モーメントＭｐを上体位置補正用摂動モデル２０２に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体位置Ｘｃが算出される。
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントＭｒを上体姿勢傾斜角補正用摂動モデル２０３に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θｃが算出される。
Ｓ３５３６における以上までの処理は、ＰＣＴ／ＪＰ０３／００４３５の通りであるので、ここでの説明は以上に留める。
本実施形態ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部２３０において、逆位相腕振り角モーメント補正用摂動モデルＭａが決定される。
さらに逆位相腕振り角補正用摂動モデルモーメントＭａが逆位相腕振り角補正用摂動モデルに入力されて、補正用摂動モデル逆位相腕振り角θｃａが決定される。
以下に、本実施形態での逆位相腕振り角補正用摂動モデルモーメント決定部２３０の動作についてその機能ブロック図である図７２を用いて詳細を説明する。
まず、逆位相腕振り角補正用摂動モデル制御則により、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄが決定される。これは、第３実施形態と同様の制御則を用いれば良い。従って、該制御則としては、例えば前記式ｈ３０が用いられる。
次いで、演算部２３０ｇにおいて、フルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚと補償全床反力モーメント鉛直成分Ｍｄｍｄｚと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄとの和から逆位相腕振り補正用摂動モデルモーメントＭａの前回値（後述する積分器の出力）を減じることによって無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚを求める。次いで、制限手段（制限処理部）２３０ｈにおいて、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚを床反力鉛直成分モーメント許容範囲を越えないように制限を加えることにより（すなわち図示する飽和特性関数に通して）、制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚを求める。次いで、フルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚと補償全床反力モーメント鉛直成分Ｍｄｍｄｚと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Ｍａｆｄｍｄとの和を制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚから減じた値を積分器２３０ｉにより、積分ゲインＫａで積分することにより逆位相腕振り補正用摂動モデルモーメントＭａを求めて、これを出力する。また、制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚをコンプライアンス制御用目標床反力モーメント鉛直成分として出力する。
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部２３０において、逆位相腕振り補正用摂動モデルモーメントＭａとコンプライアンス制御用目標床反力モーメント鉛直成分が決定される。
求めた補正用摂動モデル上体位置Ｘｃ、補正用摂動モデル上体姿勢傾斜角θｃ、補正用摂動モデル逆位相腕振り角θｃａ、上体水平位置補正用摂動モデル安定化モーメントＭｐｆおよび逆位相腕振り補正用摂動モデルモーメントＭａは、前述のごとく次回制御周期（時刻ｔ＋Δｔ）において、前回値として用いられる。
残余の構成および処理は、第３実施形態と同一である。この第４実施形態によれば、第３実施形態と同様の作用効果を奏することができる。
以上説明した第４実施形態は、本発明のうちの第１〜第１０発明、第１２〜１５発明、第２０〜第２２発明、および第２４〜第３０発明の実施形態になっている。この場合、第４実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第４実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当する。そして、前記逆位相腕振り角補正用摂動モデルモーメントＭａが第３発明におけるモデル補正床反力モーメントと第１０発明におけるモーメント修正操作量と、第２２発明における摂動モデル操作量とに相当し、補正用摂動モデル逆位相腕振り角θｃａが第２発明および第１１発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量とに相当する。さらに、第４実施形態における、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚが第２６発明における制限対象量の推定値に、逆位相腕振り角補正用モデル安定化モーメント要求値Ｍａｆｄｍｄが第３発明におけるモデル補正床反力モーメンと第２４発明における摂動モデル操作量の要求値に相当する。さらに、第４実施形態におけるフルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚが、目標運動の仮瞬時値にフルモデル（動力学モデル）上でほぼ釣り合う床反力モーメントの鉛直成分に相当する。そして、これに図７２の演算部２３０ｇでＭｄｍｄｚを加えたものが第２０発明におけるモデル制限対象量瞬時値に相当する。また、第４実施形態では、第２７発明の如く、目標運動の補正量（補正用摂動モデル逆位相腕振り角θｃａ）が動力学モデルであるフルモデルに追加的に入力される。
なお、前記第４実施形態においては、Ｍａｆｄｍｄは定常的に０となるものでは無いが、これを定常的に０とすれば、本発明のうちの第２３発明の実施形態が構成されることとなる。
次に、本発明の第５実施形態を図７３および図７４を参照して説明する。第５実施形態は、前記第３および第４実施形態で用いた逆動力学フルモデル（逆フルモデル）２０１に代えて、順動力学モデル（より正確には擬似順動力学モデル）を用いて歩容を修正しつつ生成する手法である。
図７３は、この第５実施形態に係る装置の動作を説明する機能ブロック図である。同図７３に示すように、本実施形態では、擬似順フルモデル（擬似順動力学フルモデル）２２２を備えている。
この擬似順フルモデル２２２は、上体水平位置安定化モーメント要求値Ｍｐｆｄｍｄ、上体姿勢傾斜角安定化モーメント要求値Ｍｒｆｄｍｄ、逆位相腕振り角安定化モーメント要求値Ｍａｆｄｍｄ、目標ＺＭＰ、目標床反力鉛直成分、補償全床反力モーメント水平成分Ｍｄｍｄｘｙおよび補償全床反力モーメント鉛直成分Ｍｄｍｄｚと、目標足平位置姿勢および目標腕姿勢など上体３を除く部位の運動状態とを入力として、目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標ＺＭＰまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）、および目標床反力水平成分を出力するモデルである。なお、擬似順フルモデル２２２の目標値入力は、前記図６３を参照して説明した如く、歩容パラメータ決定部１００ａで決定される歩容パラメータを基に、目標瞬時値発生部１００ｂにより生成される。
上記擬似順フルモデル２２２は、具体的には図７４の機能ブロック図で表され、図７４の破線で囲った部分が擬似順フルモデル２２２に相当する。なお、この機能ブロック図で前記第４実施形態の図７１と同一機能部分については、図７１と同一の参照符号を用いている。
ここで、同図７４の単純化モデル２００は、単に動力学モデルだけでなく、前述の図６５のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表す。また、Ｓ３５３２の今回歩容瞬時値（単純化モデル歩容瞬時値）の算出（決定）処理においては、前記第３実施形態で説明したように目標ＺＭＰまわりのモデル操作床反力モーメント水平成分を０として歩容の瞬時値を生成した上で、さらに第３実施形態において述べた上体姿勢傾斜角補正用摂動モデルモーメントＭｒに相当する単純化歩容上体姿勢傾斜角補正用モーメントＭｒ（前回値）を発生する上体傾斜モードの摂動運動と第３実施形態において述べた上体水平位置補正用摂動モデルモーメントＭｐに相当する単純化モデル上体水平位置補正用モーメントＭｐ（前回値）を発生する上体並進モードの摂動運動と第３実施形態において述べた逆位相腕振り角補正用摂動モデルモーメントＭａに相当する単純化モデル逆位相腕振り角補正用モーメントＭａ（前回値）を発生する逆位相腕振りモードの摂動運動を付加する。これにより、単純化モデル２００が出力する歩容の瞬時値を補正する。
より具体的に説明すると、本実施形態における図６５のＳ３５３２の処理においては、そのサブルーチン処理である図５７のＳ３４１４とＳ３４１６において、単純化モデル２００で求めた上体水平加速度に、前記式０３ｙの右辺第２項をＭｐ（前回値）に等しいとした式、すなわちＭｐ＝ｍｂ＊（Ｚｂ−Ｚｚｍｐ）＊（ｄ２Ｘｂ／ｄｔ２）という式に基づいて求められる上体水平加速度（ｄ２Ｘｂ／ｄｔ２）を摂動分として加えてなる上体水平加速度を今回歩容の初期から現在時刻ｔまで２階積分することにより、現在時刻ｔにおける上体水平位置の瞬時値が求められる。また、図５７のＳ３４１４において、単純化モデル２００で求めた上体姿勢傾斜角加速度に、前記式０３ｙの右辺第７項をＭｒ（前回値）に等しいとした式、すなわち、Ｍｒ＝Ｊ＊ｄ２θｂｙ／ｄｔ２という式に基づいて求められる上体姿勢傾斜角加速度（ｄ２θｂｙ／ｄｔ２）を摂動分として加えてなる上体姿勢傾斜角加速度を今回歩容の初期から現在時刻ｔまで２階積分することにより、現在時刻ｔにおける上体姿勢傾斜角の瞬時値が求められる。また、図５７のＳ３４１４において、単純化モデル２００で求めた逆位相腕振り角加速度に、前記式０３ｚの右辺第８項をＭａ（前回値）に等しいとした式、すなわち、Ｍａ＝Ｊａｚ＊ｄ２θａｚ／ｄｔ２という式に基づいて求められる逆位相腕振り角加速度（ｄ２θａｚ／ｄｔ２）を摂動分として加えてなる逆位相腕振り角加速度を今回歩容の初期から現在時刻ｔまで２階積分することにより、現在時刻ｔにおける逆位相腕振り角の瞬時値が求められる。
補足すると、上体水平位置と上体姿勢傾斜角については、サジタルプレーン上の瞬時値について述べたが、ラテラルプレーン上の瞬時値も同様に求める。
図７４において、単純化モデル２００から先の部分がＳ３５３６の処理に相当する処理を実行する部分である。以下に図７４を用いてＳ３５３６の処理を詳細に説明する。
Ｓ３５３６では、まず、Ｓ３０３２において上記の如く単純化モデル上体水平位置補正用モーメントＭｐ（詳しくは時刻（ｔ−Δｔ）の制御周期での前回値）を基に補正された単純化モデル水平上体位置が目標上体水平位置（時刻ｔでの上体水平位置の最終的な目標瞬時値）として出力される。また、単純化モデル上体姿勢傾斜角補正用モーメントＭｒ（詳しくは時刻（ｔ−Δｔ）の制御周期での前回値）を基に補正された単純化モデル上体姿勢傾斜角が目標上体姿勢傾斜角（時刻ｔでの上体姿勢傾斜角の最終的な目標瞬時値）として出力される。また、単純化モデル逆位相腕振り角補正用摂動モデルモーメントＭａ（詳しくは時刻（ｔ−Δｔ）の制御周期での前回値）を基に補正された単純化モデル逆位相腕振り角が目標逆位相腕振り角（時刻ｔでの逆位相腕振り角の最終的な目標瞬時値）として出力される。
すなわち、式ｈ１００、式ｈ１０１、式ｈ１０２により、最終的な目標上体水平位置と目標上体姿勢傾斜角とが決定される。
目標上体水平位置＝単純化モデル上体水平位置                …式ｈ１００
目標上体姿勢傾斜角＝単純化モデル上体姿勢傾斜角            …式ｈ１０１
目標逆位相腕振り角＝単純化モデル逆位相腕振り角            …式ｈ１０２
次いで、目標上体水平位置（すなわち単純化モデル上体水平位置）、目標上体姿勢傾斜角（すなわち単純化モデル上体姿勢傾斜角）、目標逆位相腕振り角（すなわち単純化モデル逆位相腕振り角）および前述のごとく得られた単純化モデル歩容の目標全体重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ＺＭＰの瞬時値とを、前記逆動力学フルモデル（逆フルモデル）２０１に入力し、入力された運動変数で表される運動に釣り合う（すなわち運動によって逆フルモデル２０１が発生する）床反力水平成分と目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）とが算出される。以降、第４実施形態と同様、これらの算出された床反力水平成分、床反力モーメント水平成分および床反力モーメント鉛直成分をそれぞれフルモデル床反力水平成分Ｆｆｕｌｌ、フルモデル床反力モーメント水平成分Ｍｆｕｌｌｘｙ、床反力モーメント鉛直成分Ｍｆｕｌｌｚと呼ぶ。
第４実施形態と同様、フルモデル床反力水平成分Ｆｆｕｌｌは、目標床反力水平成分（時刻ｔでの床反力水平成分の最終的な目標瞬時値）として出力される。
本実施形態では、上体姿勢傾斜角補正用摂動モデルと上体水平位置補正用摂動モデルと逆位相腕振り角補正用摂動モデルとを備えないので、上体水平位置補正用摂動モデル制御則と上体姿勢傾斜角補正用摂動モデル制御則と逆位相腕振り角補正用摂動モデル制御則とに相当する処理は、後述するように、第４実施形態とは異なる。
このことを除けば、上記処理以降、単純化モデル上体姿勢傾斜角補正用モーメントＭｒと単純化モデル上体水平位置補正用モーメントＭｐと単純化モデル逆位相腕振り角補正用モーメントＭａとを決定するまでは、第４実施形態において、上体姿勢傾斜角補正用摂動モデルモーメントＭｒと上体水平位置補正用摂動モデルモーメントＭｐと逆位相腕振り角補正用摂動モデルモーメントＭａとを決定する処理と同一の処理が実行される。すなわち、Ｍｉｎ演算部２０９、Ｆｉｎ演算部２１０、制限処理部２１１（制限手段）、Ｍｐｆ演算部２１５、Ｍｅｒｒ演算部２１６、Ｍｒｆ演算部２１７（＝Ｍｒ演算部）、Ｍｐ演算部２１４の処理は、第４実施形態と同一である。さらに、逆位相腕振り角補正用摂動モデル制御則とに相当する処理を除けば、単純化モデル逆位相腕振り角補正用モーメント決定部２３０の処理は、前記第４実施形態における逆位相腕振り角補正用摂動モデルモーメント決定部２３０の処理と同一である。なお、本実施形態では、Ｍｒ、ＭｐおよびＭａは、それぞれ第４実施形態における上体姿勢傾斜角補正用摂動モデルモーメントＭｒと上体水平位置補正用摂動モデルモーメントＭｐと逆位相腕振り角補正用摂動モデルモーメントＭａとにそれぞれ対応するものであるが、第４実施形態のように摂動モデルに入力するものではなく、単純化モデル２００に入力するものである。このため、Ｍｒ、ＭｐおよびＭａの名称を本実施形態では、単純化モデル上体姿勢傾斜角補正用モーメント、単純化モデル上体水平位置補正用モーメント、単純化モデル逆位相腕振り角補正用モーメントと称している。
上記のごとく求められた単純化モデル上体姿勢傾斜角補正用モーメントＭｒと単純化モデル上体水平位置補正用モーメントＭｐと単純化モデル逆位相腕振り角補正用モーメントＭａとは、前述のごとく次回制御周期（時刻ｔ＋Δｔ）に、単純化モデル歩容瞬時値の決定（生成）時に前回値として用いられる。
残余の構成及び処理は、第４実施形態と同一である。
以下に、上体姿勢傾斜角安定化モーメント要求値Ｍｒｆｄｍｄと上体水平位置安定化モーメント要求値Ｍｐｆｄｍｄと逆位相腕振り角安定化モーメント要求値Ｍａｆｄｍｄとの決定処理について図７３を参照して説明する。
図７３に示すように、本実施形態では、前述したように擬似順フルモデル２２２に備える単純化モデル２００とは別の単純化モデル２２３を備えている。この単純化モデル２２３は、本実施形態でのその機能は、前述した単純化モデル２００と同一であり、単に動力学モデルだけでなく、前述の図６５のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表すものである。なお、単純化モデル２２３は、実際上は、上体姿勢傾斜角の瞬時値と、上体水平位置の瞬時値とを決定できればよく、必ずしも図６５のＳ３５１０からＳ３５３２の処理の全てを行なう必要はない。
以下に図７３を用いて本実施形態におけるＭｐｆｄｍｄおよびＭｒｆｄｍｄの決定処理を詳細に説明する。
本実施形態においては、単純化モデル２２３を用いて生成される歩容と前記擬似順動力学フルモデル２２２を用いて前述の通り算出される歩容との間の上体水平位置、上体姿勢傾斜角および逆位相腕振り角のそれぞれの差が演算部２２４，２２５、２２８により求められる。そして、これらの差に応じて、これらの差が０に収束するようにＰＩＤなどのフィードバック制御則によって上体水平位置安定化モーメント要求値Ｍｐｆｄｍｄ、上体姿勢傾斜角安定化モーメント要求値Ｍｒｆｄｍｄおよび逆位相腕振り角安定化モーメント要求値Ｍａｆｄｍｄが決定される。すなわち、単純化モデル２２３による上体水平位置と擬似順フルモデル２２２による上体水平位置との差に応じて、フィードバック制御則からなる上体水平位置安定化制御則２２６によって、Ｍｐｆｄｍｄが求められる。また、単純化モデル２２３による上体姿勢傾斜角と擬似順フルモデル２２２による上体姿勢傾斜角との差に応じて、フィードバック制御則からなる上体姿勢傾斜角安定化制御則２２７によって、Ｍｒｆｄｍｄが求められる。また、単純化モデル２２３による逆位相腕振り角と擬似順フルモデル２２２による逆位相腕振り角との差に応じて、フィードバック制御則からなる逆位相腕振り角安定化制御則によって、Ｍａｆｄｍｄが求められる。そして、この決定されたＭｐｆｄｍｄ、Ｍｒｆｄｍｄ及びＭａｆｄｍｄが、前記擬似順動力学フルモデルにフィードバックされて入力される。
なお、本実施形態では、歩容生成装置１００は、前記擬似順動力学フルモデル２２２への入力の一部である目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢および目標腕姿勢などと、前記擬似順動力学フルモデル２２２からの出力である目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標床反力水平成分およびコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）を最終的な今回歩容の目標瞬時値として出力する。
以上説明した第５実施形態によれば、前記第４実施形態と同様の作用効果を奏することができる。
なお、前記第５実施形態では、上体姿勢傾斜角安定モーメント要求値Ｍｒｆｄｍｄ、上体水平位置安定化モーメント要求値Ｍｐｆｄｍｄおよび逆位相腕振り角安定化モーメント要求値Ｍａｆｄｍｄを擬似順フルモデル２２２のみに入力するようにしたが、Ｍｒｆｄｍｄ、ＭｐｆｄｍｄおよびＭａｆｄｍｄを単純化モデル２２３に入力するようにしてもよく、あるいは、単純化モデル２２３と擬似順フルモデル２２２とに分配・供給するようにしてもよい。また、補償全床反力モーメント鉛直成分Ｍｄｍｄｚを単純化モデル２２３に入力し、このＭｄｍｄｚが付加的に発生するように単純化モデル逆位相腕振り角を決定するようにしてもよい。
以上説明した第５実施形態は、本発明のうちの第４４〜〜第４７発明の実施形態となっている。この場合、第５実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第５実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。さらに、Ｓ３５２８で決定される今回歩容パラメータにより定まる床反力が目標床反力の仮瞬時値に相当する。また、第４４発明における第１動力学モデルおよび第２動力学モデルにはそれぞれ図７３の単純化モデル２２３、擬似順フルモデルが相当する。なお、第４７発明における第１動力学モデル、第２動力学モデル、第３動力学モデルには、それぞれ図１２の単純化モデル、図７４の逆フルモデル、図７３の単純化モデル２２３が相当する。また、第５実施形態における逆位相腕振り角安定化モーメントＭａｆｄｍｄが第４４発明における床反力モーメントの操作量と、第４７発明における床反力モーメント補正量の要求値に相当し、これは擬似順フルモデル（詳しくは図７４の単純化モデル逆位相腕振り角補正用メーメント決定部２３０）に追加的に入力される。
次に、本発明の第６実施形態を図７５を参照して説明する。図７５は、この発明の第６実施形態に係る装置の動作、具体的には、図６５のフローチャートのＳ３５３６の歩容の修正手法を説明する機能ブロック図である。なお、図７５では、第３実施形態もしくは第４実施形態と同一機能部分については、図６６又は図７１と同一の参照符号を用いる。
第６実施形態においては、上体水平位置補正用摂動モデル２０２と上体姿勢傾斜角補正用摂動モデル２０３と逆位相腕振り角補正用摂動モデル２３１とを備える。また、３つの分配器２２０，２２１，２４１を備える。
分配器２２０，２２１，２４１を定義すると、いずれも、１入力２出力の伝達ブロックであり、入力に応じて、一方の出力を決定し（例えば、入力に周波数特性、不感帯特性、飽和特性などの信号処理を行って一方の出力を決定し）、２つの出力の和が入力に一致またはほぼ一致するように、他方の出力を決定する伝達ブロックである。
分配器２２０には、制限補正目標床反力モーメント水平成分Ｍｌｔｄｘｙから、上体水平位置補正用摂動モデル安定化モーメントＭｐｆと補償全床反力モーメント水平成分Ｍｄｍｄｘｙとを減じたもの（Ｍｒ演算部２１４の出力）である上体姿勢傾斜角補正用モーメントＭｒが入力され、上体姿勢傾斜角補正用摂動モデル２０３に入力する上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉと、単純化モデル２００に入力する単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓとに分配される。この時、上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉと単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓとの和が上体姿勢傾斜角補正用モーメントＭｒに一致するように、上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉと単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓとが決定される（出力される）。
より具体的には、上体姿勢傾斜角補正用モーメントＭｒに応じて、上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉが決定される。例えば、上体姿勢傾斜角補正用モーメントＭｒを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉが決定される。また、上体姿勢傾斜角補正用モーメントＭｒから上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓとして決定される。さらに具体的に説明すると、本実施形態では、分配器２２０は、例えば、入力（上体姿勢傾斜角補正用モーメントＭｒ＝Ｍｌｔｄ−Ｍｐｆ−Ｍｄｍｄｘｙ）をローパスフィルタに通してなる低周波成分（直流分）を単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓとして出力すると共に、その入力（上体姿勢傾斜角補正用モーメントＭｒ）からＭｒｓを差し引いた成分が上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉとして出力される。この場合、低周波成分（直流分）である単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Ｍｒｓが該所定値（例えば０）に維持されるようにしておく。
分配器２２０の出力である上体姿勢傾斜角補正用摂動モデル入力Ｍｒｉは、前記上体姿勢傾斜角補正用摂動モデル２０３に入力され、上体姿勢傾斜角補正用摂動モデル２０３により補正用摂動モデル上体姿勢傾斜角θｃが決定される。
分配器２２０のもうひとつの出力である単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓは単純化モデル２００に入力される。これは、前記第５実施形態における図７４において、単純化モデル上体姿勢傾斜角補正用モーメントＭｒを単純化モデル２００に入力することに相当するものである。
分配器２２１においては、フルモデル床反力モーメント水平成分誤差ＭｅｒｒにゲインＫｍを乗じた値を積分器２１７ａによって積分し、さらに符号を反転した値を入力とする。
分配器２２１の入力は、分配器２２０と同様、単純化モデル２００に入力する単純化モデル上体水平位置補正用モーメントＭｐｓと、上体水平位置補正用摂動モデル２０２に入力する誤差補正モーメントＭｅとに分配される。より具体的には、積分器２１７ａの出力に応じて、誤差補正モーメントＭｅが決定される。例えば、積分器２１７ａの出力（分配器２２０の入力）を不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、誤差補正モーメントＭｅが決定される。また、積分器２１７ａの出力から、誤差補正モーメントＭｅを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓとして決定される。さらに具体的に説明すると、本実施形態では、分配器２２１は、例えば、入力（積分器２１７ａの出力）をローパスフィルタに通してなる低周波成分（直流分）を単純化モデル上体水平位置補正用モーメントＭｐｓとして出力すると共に、その入力（積分器２１７ａの出力）からＭｐｓを差し引いた成分を誤差補正モーメントＭｅとして出力する。この場合、低周波成分（直流分）である単純化モデル上体水平位置補正用モーメントＭｐｓに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Ｍｐｓが該所定値（例えば０）に維持されるようにしておく。
分配器２２１の出力である誤差補正モーメントＭｅに上体水平位置補正用モデル安定化モーメントＭｐｆをＭｐ演算部２１７ｂで加算することにより上体水平位置補正用摂動モデルモーメントＭｐが求められる。そして、上体水平位置補正用摂動モデルモーメントＭｐは、上体水平位置補正用摂動モデル２０２に入力され、上体水平位置補正用摂動モデル２０２により補正用摂動モデル上体水平位置Ｘｃが決定される。
分配器２２１のもうひとつの出力である単純化モデル上体水平位置補正用モーメントＭｐｓは単純化モデル２００に入力される。これは、前記第５実施形態の図７４において、単純化モデル上体水平位置補正用モーメントＭｐを単純化モデル２００に入力することに相当するものである。
逆位相腕振り角補正用摂動モデルモーメント決定部２３０は、第４実施形態において用いた図７２に示す逆位相腕振り角補正用摂動モデルモーメント決定部と同一である。ただし、図７２の出力である逆位相腕振り角補正用摂動モデルモーメントＭａは、逆位相腕振り角補正用摂動モデル２３１に直接入力されず、分配器２４１に入力される。そこで、本実施形態では逆位相腕振り角補正用摂動モデルモーメントＭａは、名称を改めて逆位相腕振り角補正用モデルモーメントＭａと呼ぶ。
分配器２４１においては、逆位相腕振り角補正用摂動モデルモーメント決定部２３０が決定した逆位相腕振り角補正用モデルモーメントＭａを入力とする。
分配器２４１の入力は、分配器２２０と同様、単純化モデル２００に入力する単純化モデル逆位相腕振り角補正用モーメントＭａｓと、逆位相腕振り角補正用摂動モデル２３１に入力する逆位相腕振り角補正用摂動モデル入力Ｍａｉとに分配される。
この時、逆位相腕振り角補正用摂動モデル入力Ｍａｉと単純化モデル逆位相腕振り角補正用モーメントＭａｓとの和が逆位相腕振り角補正用モデルモーメントＭａに一致するように、逆位相腕振り角補正用摂動モデル入力Ｍａｉと単純化モデル逆位相腕振り角補正用モーメントＭａｓとが決定される（出力される）。
より具体的には、逆位相腕振り角補正用モデルモーメントＭａに応じて、逆位相腕振り角補正用摂動モデル入力Ｍａｉが決定される。例えば、逆位相腕振り角補正用モデルモーメントＭａを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、逆位相腕振り角補正用摂動モデル入力Ｍａｉが決定される。また、逆位相腕振り角補正用モデルモーメントＭａから逆位相腕振り角補正用摂動モデル入力Ｍａｉを差し引いたものが、単純化モデル逆位相腕振り角補正用モーメントＭａｓとして決定される。さらに具体的に説明すると、本実施形態では、分配器２４１は、例えば、入力（逆位相腕振り角補正用モデルモーメントＭａ）をローパスフィルタに通してなる低周波成分（直流分）を単純化モデル逆位相腕振り角補正用モーメントＭａｓとして出力すると共に、その入力（逆位相腕振り角補正用モデルモーメントＭａ）からＭａｓを差し引いた成分が逆位相腕振り角補正用摂動モデル入力Ｍａｉとして出力される。この場合、低周波成分（直流分）である単純化モデル逆位相腕振り角補正用モーメントＭａｓに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Ｍａｓが該所定値（例えば０）に維持されるようにしておく。
分配器２４１の出力である逆位相腕振り角補正用摂動モデル入力Ｍａｉは、前記逆位相腕振り角補正用摂動モデル２３１に入力され、逆位相腕振り角補正用摂動モデル２３１により補正用摂動モデル逆位相腕振り角θｃａが決定される。
分配器２４１のもうひとつの出力である単純化モデル逆位相腕振り角補正用モーメントＭａｓは単純化モデル２００に入力される。これは、前記第５実施形態における図７４において、単純化モデル逆位相腕振り角補正用モーメントＭａを単純化モデル２００に入力することに相当するものである。
単純化モデル２００は、前記第５実施形態と同様、単純化モデル歩容瞬時値の算出（決定）処理において、目標ＺＭＰまわりに床反力モーメント水平成分が発生しないように（モデル操作床反力モーメントを０として）歩容の瞬時値を生成した上で、単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓ（前回値）を発生する上体傾斜モードの摂動運動を付加し、単純化モデル上体水平位置補正用モーメントＭｐｓ（前回値）を発生する上体並進モードの摂動運動を付加し、さらに単純化モデル逆位相腕振り角補正用モーメントＭａｓを発生する逆位相腕振りモードの摂動運動を付加して、歩容の瞬時値を補正する。
なお、本実施形態では、図６５のＳ３５２８の処理の一部である図４３のＳ８００において、前回歩容の終端状態として、前回歩容終端における単純化モデルの状態量を用いる。従って、分配器２２０，２２１，２４１から単純化モデルに出力されるＭｒｓ、Ｍｐｓ及びＭａｓが０以外の値となる時があれば、単純化モデルは当初の挙動からずれるので、これに応じてＳ３５２８において、歩容パラメータが適宜修正される。また、前記不感帯の領域を大きく設定すると、Ｍｒｓ、Ｍｐｓ及びＭａｓの絶対値が小さくなるので、歩容パラメータの修正量の絶対値も小さくなる。
その他の構成及び処理は、第４実施形態と同一である。より詳しくは、演算部２０４，２０５，目標上体水平位置を演算する演算部、Ｍｅｒｒ演算部２１６、上体姿勢傾斜角補正用摂動モデル制御則２０７、上体水平位置補正用摂動モデル制御則２０６、Ｍｉｎ演算部２０９、Ｆｉｎ演算部２１０、制限処理部２１１、Ｍｐｆ演算部２１５、逆位相腕振り角補正用摂動モデルモーメント決定部２４０の処理は、前記第４実施形態と同一である。
なお、本実施形態では、前記第３実施形態で説明したように今回歩容の終端等で各摂動モデル２０２、２０３、２３１の状態量により単純化モデル２００の状態量を修正するような処理は行なう必要はない。これは、分配器２２０，２２１，２４１から単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓ、単純化モデル上体水平位置補正用モーメントＭｐｓ及び単純化モデル逆位相腕振り角補正用モーメントＭａｓが追加入力されるからである。
かかる本実施形態では、前記第４実施形態あるいは第５実施形態と同様の作用効果を奏することができる。
なお、本実施形態では、各分配器２２０，２２１、２４１の２つの出力のうち一方を０とし、他方を入力に一致させるようにしても良い。
この場合、例えば分配器２２０の出力である単純化モデル上体姿勢傾斜角補正用モーメントＭｒｓを０にし、分配器２２１の出力である単純化モデル上体水平位置補正用モーメントＭｐｓを０にし、分配器２４１の出力である単純化モデル逆位相腕振り角補正用モーメントＭａｓを０にすると、第４実施形態と同一の作用効果を奏することとなる（事実上、第４実施形態のものと同一構成となる）。
また、誤差補正モーメントＭｅに上体水平位置補正用モデル安定化モーメントＭｐｆを加算した値を図示しない第３の分配器に入力し、その出力の一方を上体水平位置補正用摂動モデルに入力し、もう一方の出力を単純化モデル上体水平位置補正用モーメントＭｐｓに加算しても良い。この場合、分配器２２１の出力である単純化モデル上体水平位置補正用モーメントＭｐｓを０にしても良い。すなわち、分配器２２１を省略し、フルモデル床反力モーメント誤差ＭｅｒｒにゲインＫｍを乗じた値を積分して符号を反転した値を上体水平位置補正用モデル安定化モーメントＭｐｆに加算した値を第３の分配器に入力しても良い。
以上説明した第６実施形態は、本発明のうちの第１〜第１０発明、第１２〜第１５発明、第２０〜第２２発明、第２４〜第３２発明、第３４〜第４１発明および第４３発明の実施形態になっている。この場合、第６実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第６実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に相当し、これをＳ３５３６で修正したものが目標運動の瞬時値に相当する。さらに、Ｓ３５２８で決定される今回歩容パラメータにより定まる床反力が目標床反力の仮瞬時値に相当する。また、第１発明、第６発明、第１０発明、および第２０発明における動力学モデルは、逆フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当し、第３１発明における第１動力学モデル、第２動力学モデルはそれぞれ図１２の単純化モデルと逆フルモデルが相当する。そして、前記逆位相腕振り角補正用モーメントＭａが第３発明におけるモデル補正床反力モーメントと、第１０発明におけるモーメント修正操作量と、および第３６発明における床反力モーメントの操作量に相当し、該Ｍａのうちの単純化モデル逆位相腕振り角補正用モーメントＭａｓが第３１発明における床反力モーメント補正量に、Ｍａｉが第３６発明における摂動モデル操作量に相当する。また、第６実施形態における逆位相腕振り角補正用モデル安定化モーメント要求値Ｍａｆｄｍｄが第３発明におけるモデル補正床反力モーメントと、第２４発明における摂動モデル操作量の要求値と、第３４発明における床反力モーメント補正量の要求値と、第３７発明における床反力モーメントの操作量の要求値とに相当し、補正用摂動モデル逆位相腕振り角θｃａが第２発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量と、第３５発明における目標運動の補正量とに相当する。さらに、第６実施形態における、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚが第４３発明における制限対象量の推定値に相当する。さらに、第６実施形態におけるフルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚが、目標運動の仮瞬時値にフルモデル（動力学モデル）上で釣り合う床反力モーメントの鉛直成分に相当する。そして、これに図７２の演算部２３０ｇでＭｄｍｄｚを加えたものが第２０発明および第３１発明におけるモデル制限対象量瞬時値に相当する。また、第６実施形態では、第２７発明の如く、目標運動の補正量（補正用摂動モデル逆位相腕振り角θｃａ）が動力学モデルである逆フルモデルに追加的に入力される。さらに、第６実施形態では、第３１発明の如く単純化モデル逆位相腕振り角補正用モーメントＭａｓが第１の動力学モデルとしての単純化モデルに追加的に入力される。
なお、前記第６実施形態においては、Ｍａｆｄｍｄは定常的に０となるものでは無いが、これを定常的に０とすれば、本発明のうちの第２３発明、第３３発明、第４２発明の実施形態が構成されることとなる。
なお、以上説明した第３〜第６実施形態では、図６５のＳ３５３２において、目標ＺＭＰを満足するように、すなわち、目標ＺＭＰまわりの床反力モーメント水平成分が０になるように、今回歩容瞬時値（目標運動の仮瞬時値）を決定するようにしたが、これに代えて、第１実施形態における図５６のＳ３０３２のように、目標ＺＭＰまわりにモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値を決定するようにしてもよい。この場合には、図５３に示す如く、歩容生成装置１００に補償全床反力モーメント水平成分分配器１１０からモデル操作床反力モーメント水平成分を与えるようにすればよい。
また、以上説明した第１〜第６実施形態においては、補償全床反力モーメント水平成分Ｍｄｍｄｘｙは、上体姿勢角・角速度の代わりに、全体重心水平位置・速度など、ロボット１の他の姿勢に関する状態量に基づいて決定しても良い。
次に、本発明の第７実施形態を図７６から図８３を参照して説明する。
本実施形態における制御ユニット６０の機能ブロック図を図７６に示す。なお、本実施形態では、前記第２実施形態と同一構成部分もしくは同一機能部分については第２実施形態と同一の参照符号を用いる。
本実施形態では、第２実施形態（図５９参照）に比較して、実ロボット１の滑りの有無を判定する滑り判定部１１４が追加されている。また、滑り判定部１１４から出力される滑り判定結果が歩容生成装置１００に入力される。歩容生成装置１００においては、滑り判定結果が滑りありと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を狭める。また、歩容生成装置１００は、滑り判定結果が滑りなしと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲に戻す。他の構成および処理に関しては、前記第２実施形態と同一である。
滑り判定部１１４を、その処理を表すフローチャートである図７９を用いて詳細に説明すると、まず、Ｓ５２１０において、スピン判定サブルーチンが実行される。スピン判定サブルーチンでは、そのフローチャートである図８０のＳ５３１０に進み、実上体姿勢角速度および関節角指令（検出値）を基に支持脚足平２２の対地角速度鉛直成分ωｓｕｐｚを求める。次いでＳ５３１２に進み、足平２２の６軸力センサ５０の検出値（実床反力）を基に、支持脚に作用している実床反力モーメント鉛直成分の時間的な変化率である支持脚床反力モーメント鉛直成分の変化率ｄＭｓｕｐａｃｔｚ／ｄｔを求める。次いでＳ５３１４に進み、前記支持脚足平２２の対地角速度鉛直成分ωｓｕｐｚの絶対値がある所定の値ωｅを越えているか否かを判定する。越えている場合には、Ｓ５３１６に進み、前記支持脚床反力モーメント鉛直成分の変化率ｄＭｓｕｐａｃｔｚ／ｄｔを前記支持脚足平の対地角速度鉛直成分ωｓｕｐｚで割って符号を反転した値である、支持脚の見かけねじりばね定数Ｋｓｕｐｔを求める。次いでＳ５３１８に進み、Ｋｓｕｐｔがある所定の値Ｋｓｕｐｔｍｉｎよりも小さいか否かを判定し、小さい場合には、Ｓ５３２０に進み、スピン判定結果を、スピンありと判定し、そうでない場合には、Ｓ５３２２に進み、スピン判定結果を、スピンなしと判定する。また、Ｓ５３１４において、前記支持脚足平の対地角速度鉛直成分ωｓｕｐｚの絶対値が前記所定の値ωｅを越えていないと判定された場合には、Ｓ５３２４に進み、スピン判定結果を、スピンなしと判定する。このようにスピンの有無を判定することで、足平２２などの撓み（弾性変形）によって、ωｓｕｐｚの絶対値がある所定の値ωｅを超えたようなときに、スピン有りと誤判定されるような事態が回避される。
以上のごとくＳ５２１０の処理を完了した後、Ｓ５２１２に進み、並進滑り判定サブルーチンが実行される。
並進滑り判定サブルーチンでは、そのフローチャートである図８１のＳ５４１０に進み、実上体姿勢角速度、加速度検出値および関節角指令（検出値）を基に支持脚足平２２の対地並進速度水平成分Ｖｓｕｐｘｙを求める。次いでＳ５４１２に進み、足平２２の６軸力センサ５０の検出値（実床反力）を基に、支持脚に作用している実床反力水平成分の時間的な変化率である支持脚床反力水平成分の変化率ｄＦｓｕｐａｃｔｘｙ／ｄｔを求める。次いでＳ５４１４に進み、前記支持脚足平の対地並進速度水平成分Ｖｓｕｐｘｙの絶対値がある所定の値Ｖｅを越えているか否かを判定する。越えている場合には、Ｓ５４１６に進み、前記支持脚床反力水平成分の変化率ｄＦｓｕｐａｃｔｘｙ／ｄｔを前記支持脚足平２２の対地並進速度水平成分Ｖｓｕｐｘｙで割って符号を反転した値である、支持脚の見かけせん断ばね定数Ｋｓｕｐｓ（＝（−ｄＦｓｕｐａｃｔｘｙ／ｄｔ）／Ｖｓｕｐｘｙ）を求める。次いでＳ５４１８に進み、Ｋｓｕｐｓがある所定の値Ｋｓｕｐｓｍｉｎよりも小さいか否かを判定し、小さい場合には、Ｓ５４２０に進み、並進滑り判定結果を、並進滑りありと判定し、そうでない場合には、Ｓ５４２２に進み、並進滑り判定結果を、並進滑りなしと判定する。また、Ｓ５４１４において、前記支持脚足平の対地並進速度水平成分Ｖｓｕｐｘｙの絶対値が前記所定の値Ｖｅを越えていないと判定された場合には、Ｓ５４２４に進み、並進滑り判定結果を、並進滑りなしと判定する。このように並進滑りの有無を判定することで、足平２２などの撓み（弾性変形）によって、Ｋｓｕｐｓの絶対値がある所定の値Ｋｓｕｐｓｍｉｎを超えたようなときに、並進滑り有りと誤判定されるような事態が回避される。
以上のごとくＳ５２１２の処理を完了した後、Ｓ５２１４に進み、滑り振動判定サブルーチンが実行される。
滑り振動判定サブルーチンでは、そのフローチャートである図８２のＳ５５１０に進み、足平２２の６軸力センサ５０の検出値（並進力水平成分および／またはモーメント鉛直成分）をバンドパスフィルタに通すことにより、滑り振動成分を抽出する。尚、足平２２の６軸力センサ５０の検出値の代わりに、足平２２にヨーレートセンサ、加速度センサ等を備えて、その検出値を用いても良い。また、バンドパスフィルタの通過周波数帯は、足平２２の足底や床面の材質などに応じてあらかじめ設定される。次いでＳ５５１２に進み、検出された滑り振動成分の大きさの絶対値がある所定の値Ａｍｐｅを越えているか否かを判定する。越えている場合には、Ｓ５５１４に進み、滑り振動判定結果を、滑り振動ありと判定し、そうでない場合には、Ｓ５５１６に進み、滑り振動判定結果を、滑り振動なしと判定する。
以上のごとくＳ５２１４の処理を完了した後、Ｓ５２１６に進み、スピン判定結果がスピンあり、または並進滑り判定結果が並進滑りあり、または滑り振動判定結果が滑り振動ありであるならば、Ｓ５２１８に進み、総合判定結果である滑り判定結果を滑りありと決定し、そうでないならば、Ｓ５２２０に進み、総合判定結果である滑り判定結果を滑りなしと決定する。以上が、滑り判定部１１４の処理である。
図７７に本実施形態における歩容生成装置１００のメインルーチン処理のフローチャートを示す。
同図７７おいて、Ｓ２３１０からＳ２３３２までは、第２実施形態のフローチャート（図６０）のＳ２０１０からＳ２０３２までの処理と同一の処理が行なわれる。
次いでＳ２３３４に進み、修正歩容瞬時値決定サブルーチンが実行される。
本実施形態では、修正歩容瞬時値決定サブルーチンでは、元歩容に近づくように目標ＺＭＰおよび逆位相腕振り復元角加速度パターンを修正しつつ、修正された目標ＺＭＰまわりにモデル操作床反力モーメント（水平成分および鉛直成分）が付加的に発生するように修正歩容瞬時値が決定される。ただし床反力許容範囲を滑り判定結果に応じて変更され、この点が第２実施形態と相違する。
図７８に修正歩容瞬時値決定サブルーチンのフローチャートを示す。修正歩容瞬時値決定サブルーチンでは、まずＳ５１００からＳ５１１４までの処理が、第２実施形態の修正歩容瞬時値決定サブルーチンである図６１のＳ２１００からＳ２１１２と同様に実行される。次いで、Ｓ５１１６に進み、前記滑り判定部１１４による滑り判定結果が滑りありであるか否かを判定し、前記滑り判定結果が滑りありの場合には、Ｓ５１１８に進み、許容範囲低減率ａｔｔを徐々に０に近づける（実質的に連続的に減少させる）。尚、許容範囲低減率ａｔｔは０から１までの値をとるものとする。Ｓ５１１６において前記滑り判定結果が滑りなしと判定された場合には、Ｓ５１２０に進み、許容範囲低減率ａｔｔを徐々に１に近づける（実質的に連続的に増加させる）。
次いでＳ５１２２に進み、Ｓ５１１０およびＳ５１１２で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲の上限値および下限値であるＦｘｍｉｎ，Ｆｘｍａｘ，ＭｚｍｉｎおよびＭｚｍａｘにそれぞれ許容範囲低減率ａｔｔを乗じることにより、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を狭める。以降、このＳ５１２２で決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を総称的に最終的床反力許容範囲という。尚、当然のことながら低減率が１の場合には、最終的床反力許容範囲は、Ｓ５１１０およびＳ５１１２で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲（以下、これらを元の床反力許容範囲ということがある）に一致し、該元の床反力許容範囲から狭まらない。
図８３に、滑り判定結果に応じて、許容範囲低減率ａｔｔ、最終的床反力許容範囲（具体的には、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲）が変化する様子の例を示す。
滑りが発生した場合には、グリップ状態に早急に回復しないとロボット１が転倒する恐れが生じるので、滑りが発生したと判定されたならば、最終的床反力許容範囲をすばやく狭めるようにした方が良い。ただし、急激過ぎると、歩容の加速度変化が大きくなり過ぎ、衝撃などが生じるので、急激過ぎない適切な値にすべきである。
滑りがなくなったと判定されたならば、最終的床反力許容範囲を元の床反力許容範囲にすばやく戻すようにした方が良い。最終的床反力許容範囲が狭いままであると、修正歩容が元歩容から大きくずれていってしまうからである。ただし、急激過ぎると、歩容の運動の加速度変化が大きくなり過ぎ、衝撃などが生じて再び滑ってしまうので、急激過ぎない適切な値にすべきである。
次いでＳ５１２４に進み、図６１のＳ２１１４と同様、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント水平成分、コンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）、上体水平加速度および上体姿勢傾斜角加速度および逆位相腕振り角加速度を決定する。
次いでＳ５１２６からＳ５１２８まで進み、図６１のＳ２１１６からＳ２１１８までと同様の処理が行われる。
上記のごとく修正歩容瞬時値決定サブルーチンが実行され、次いで図７７のＳ２３３６に進み、現在時刻ｔをΔｔだけ増加して、再びＳ２３１４に戻り、歩容生成を続ける。
以上が、本実施形態における歩容生成装置１００の処理である。
上記のごとく、第７実施形態においては、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を滑り判定結果に応じて変更するようにしたが、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれか一方だけを変更するようにしても良い。
一般的に、足平２２が床面上で平行に滑っている場合（せん断方向に滑っている場合）には、スピン方向（ヨー方向）のグリップ力も低下する。また逆に、スピン方向（ヨー方向）に滑っている場合には、足平２２が床面上で平行に滑り易くなる。したがって、いずれかの滑りが検知されたならば、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の両方を狭める（０にする）方が滑りから回復する効果は高い。
以上説明した第７実施形態は、前記第２実施形態と同様に本発明のうちの第１〜第９発明および第１５発明の実施形態になっていると同時に、第１６〜第１９発明の実施形態になっている。
また、第７実施形態は、歩容生成装置１００としては、第２実施形態の代わりに第１、第３〜第６実施形態のいずれのものを用いても良い。第１実施形態で、第７実施形態と同様に、許容範囲を可変化する場合には、図５７のＳ３４１２とＳ３４１４との間で、図７８のＳ５１１６〜Ｓ５１２２の処理を行なうようにすればよい。なお、この場合、床反力モーメント鉛直成分補償量許容範囲をも、滑りの発生の判断結果に応じて可変的に設定するようにしてもよい。また、前述のごとく、第３から第６実施形態においては、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲は、単純化モデル歩容用のものと歩容補正用（フルモデル補正用）のものとの２種類がある。これら許容範囲のすべてを変更するようにしても良い。また、そうしなくとも、少なくとも、歩容補正用のいずれかの許容範囲を滑り判定結果に応じて、変更するようにすべきである。この場合、前記制限手段（制限処理部）２１１，２３０ｄ，２３０ｈの処理を実行する際に、図７８のＳ５１１６〜Ｓ５１２２の処理を行なって、許容範囲を可変的に設定するようにすればよい。補足すると、第３〜第６実施形態で、上記のように許容範囲を滑りの判断結果に応じて設定することで、本発明のうちの第４８〜第５１発明の実施形態が構成されることとなる。
また、第７実施形態において、滑りの判定方法としては、実施の形態において挙げた方式以外にも、以下のようないずれを用いても良い。あるいはこれらの結果を総合的に（論理和、積などの論理演算を用いてい）判断しても良い。
１）角速度検出器などを基に床に対する足平２２の角速度を求め、この値の絶対値がある所定の値を越えたら、滑りが発生と判定する。
２）いずれかの脚体２の床反力モーメントの絶対値がある所定の値を越えたら、滑りが発生と判定する。
３）全床反力モーメント（両脚体２，２の床反力の合力のモーメント）の絶対値がある所定の値を越えたら、滑りが発生と判定する。
４）両脚支持期において、全床反力モーメントの変化率と上体姿勢角速度偏差との比に（−１）を乗じた値がある所定の値（両脚接地時ねじり剛性）よりも小さいならば、滑りが発生と判定する。
５）視覚センサや空間フィルタ等を用いた非接触型の対地速度、角速度検出器、あるいは接触型の対地速度、角速度検出器の検出値（推定値）の絶対値がある所定の値を越えたならば、滑りが発生と判定する。
次に、前記第１〜第７実施形態に係る変形態様を以下に説明する。
前記第３〜第７実施形態においては、補償全床反力モーメント水平成分およびを補償全床反力モーメント鉛直成分を決定するようにしたが、補償全床反力モーメント水平成分を０に設定しても良い。ただしこの場合には、フルモデルを用いて歩容を修正することによる上体姿勢傾斜復元効果はなくなる。
前記第３〜第７実施形態においては、単純化モデル２００による歩容生成（単純化モデル歩容生成）には、本願出願人が先に提案した特開平５−３３７８４９号公報の第１実施例、第２実施例の歩容生成装置を用いても良い。フルモデルによる補正量を小さくすることができるので、補正された歩容が単純化モデル歩容から大きくずれることを防止できる。
前記第１実施形態においては、補償全床反力モーメント水平成分Ｍｄｍｄｘｙが床反力モーメント許容範囲水平成分を越えると（第３実施形態以降においては、補償全床反力モーメント水平成分Ｍｄｍｄｘｙとモデル操作床反力モーメント水平成分との和が床反力モーメント許容範囲を越えると）、コンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲の上限値あるいは下限値になる。但し、補償全床反力モーメント水平成分Ｍｄｍｄｘｙ（第３実施形態以降においては、補償全床反力モーメント水平成分Ｍｄｍｄｘｙとモデル操作床反力モーメント水平成分との和）が床反力モーメント水平成分許容範囲を越えていても、補償全床反力モーメント水平成分Ｍｄｍｄｘｙ（第３実施形態以降においては、補償全床反力モーメント水平成分Ｍｄｍｄｘｙとモデル操作床反力モーメント水平成分との和）の増加もしくは減少に応じてコンプライアンス制御用目標床反力モーメント水平成分も増加もしくは減少するようにしても良い。コンプライアンス制御用目標床反力モーメント水平成分が床反力モーメント水平成分許容範囲に接近すると、コンプライアンス制御によって制御される実床反力モーメント水平成分が目標よりも少なめになる傾向があり、このためコンプライアンス制御用目標床反力モーメント水平成分が少々許容範囲を越えても、すぐには、足平２２の本来の接地感を低下させたり、足平２２の底面が浮いてしまうような不具合が発生しない場合が多いからである。
同様の理由により、床反力モーメント水平成分許容範囲をいわゆる支持多角形で表されるＺＭＰ存在可能範囲（厳密な表現では、実床反力作用点の存在許容範囲）をモーメント水平成分に換算して得られる許容範囲を越えて設定しても良い。
コンプライアンス制御によって発生する床反力モーメント水平成分に過度に期待すると、上記のごとく足平２２の本来の接地感を低下させたり、足平２２の底面が浮いてしまうような不具合が発生する。よって、床反力モーメント水平成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント水平成分の許容範囲であると言える。
床反力モーメント水平成分許容範囲は、歩容パラメータからのみならず、検出された実床反力にも基づいて決定しても良い。また、階段でのエッジ位置検出値など、足平２２の接地領域の検出値にも基づいて決定してもよい。
一方、コンプライアンス制御によって発生する床反力モーメント鉛直成分に過度に期待すると、スピンしてしまうような不具合が発生する。よって、床反力モーメント鉛直成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント鉛直成分の許容範囲であると言える。
前記第１実施形態の図５６のＳ３０２８における今回歩容パラメータの修正（目標ＺＭＰの修正）を制御周期毎に実行するように、メインフローチャートの処理を変更しても良い。
修正歩容（目標歩容）が元歩容より大きくずれてしまう場合（発散してしまう場合）には、次回歩容の歩容パラメータ修正をする頃に既に、大きくずれて過ぎてしまい（発散し過ぎてしまい）、次回歩容の歩容パラメータ修正だけでは、継続的長期的に安定な目標歩容を生成することが困難になる。今回歩容パラメータの修正（目標ＺＭＰの修正）を制御周期毎に実行することによって、この問題をかなり解決することができる。
さらには、元歩容からのずれ具合によって、今回歩容の足平着地位置や着地時刻などを制御周期毎に変更しても良い。
具体的には、Ｓ３０２０からＳ３０３０までの処理を制御周期毎に実行するように処理フローを変更しておき、Ｓ３０２０において、次回歩容支持脚座標系（次回歩容支持脚座標系は、次の足平着地位置姿勢に対応）、次次回歩容支持脚座標系（次次回歩容支持脚座標系は、次の次の足平着地位置姿勢に対応）、今回歩容周期（今回歩容周期は、次の足平着地時刻に対応）および次回歩容周期（次回歩容周期は、定常歩容の周期に相当）の少なくともいずれかを、Ｓ３０２８における今回歩容パラメータの修正（特に目標ＺＭＰの修正）が小さくなるように（すなわち、今回歩容の安定余裕が高く維持されるように）、適宜変更すれば良い。
さらには、上記以外の歩容パラメータを変更しても良い。
また、修正歩容の元歩容からのずれは、単純化モデル上体姿勢傾斜角補正用モーメントＭｒ、単純化モデル上体水平位置補正用モーメントＭｐおよび単純化モデル逆位相腕振り角補正用モーメントＭａなどから動力学モデルを用いて推定することができるので、Ｍｒ，ＭｐおよびＭａに応じてモデルの挙動ずれを推定し、推定された挙動ずれを基に、歩容パラメータを修正してもよい。あるいは、Ｍｒ，ＭｐおよびＭａと歩容パラメータの修正量の適正値との関係をあらかじめ求めてマップ化しておいて、Ｍｒ，ＭｐおよびＭａに応じてマップを基に歩容パラメータの修正量を決定してもよい。
また、他の実施形態（第３〜第６実施形態）に対しても上記と同様に、処理フローを変更して良い。
復元条件には、前記した条件以外にも、関節角が許容範囲を越えていないか、脚などの干渉がないか、関節角速度、トルクが過大でないかなどのキネマティクス条件、ダイナミクス条件を加えても良い。
また、これに伴って、前述したごとく、今回歩容パラメータの修正（目標ＺＭＰあるいは着地位置、時刻などの修正）を制御周期毎に実行するようにメインフローチャートの処理を変更した場合には、今回歩容の安定余裕が高く維持されるように適宜変更される歩容パラメータの値が、適切な値になるように（ある制約条件を満足するように）することも、復元条件のひとつに加えても良い。
歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻は、上位の制御装置からの指示（歩行計画決定部やオペレータからの指示など。これを当初の要求と呼ぶ。）によって決定されるので、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻に戻るべきである。そこで、歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻を記憶し、修正歩容の着地位置、着地時刻が、記憶された着地位置、着地時刻にできる限り一致または近づくことも復元条件に加えても良い。ただし、実は、前記復元条件４、５および６によって、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻に徐々に戻る作用が働くので、あえて追加する必要はない。
また、状況の変化に対応して、当初の要求を変更し、変更した要求を満足する歩容パラメータに、上記のごとく歩容の安定余裕を高く維持するために適宜変更される歩容パラメータが、できる限り一致または近づくことを復元条件に加えても良い。この場合、前記前記復元条件４、５および６は削除するべきである。
前述した各種の復元条件を満足するモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントの決定法には、制約条件下で最適値を求めるための線形計画法（シンプレックス法など）や探索法を用いれば良い。または、ファジー推論を用いても良い。
また、着地位置を変更する場合には、歩行環境の障害物なども考慮しなければならない状況も考えられる。このような状況にも対処できるようにするためには、環境認識や行動決定などの人工知能の分野に属する処理も加えて、修正歩容を決定すべきである。
モデル逆位相腕振り角安定化床反力モーメントの決定法も同様である。
前記第３〜第６実施形態における制限手段（制限処理部）の前後のブロック図は、例えば本願出願人によるＰＣＴ／ＪＰ０２／１３５９３で示したように、等価変換あるいは近似変換しても良い。
この場合、上体水平位置補正用モデル安定化モーメントＭｐｆをｈで割った値をローパスフィルタに通した値を補正目標床反力水平成分（フルモデル床反力水平成分Ｆｆｕｌｌ）から減じた値が上記ＰＣＴ出願におけるバイアス推定値ｄｅｓｔｍに相当する。したがって、例えば、前記第４〜第６実施形態におけるゲインＫｃの積分を、時定数１／Ｋｃの１次遅れをフィードバック要素としたポジティブフィードバック系に置き換えたりして、図８４のように、近似変換をしても良い。この例では、第４〜第６実施形態におけるＭｐｆ演算部２１５が図示の如く近似変換されている。
逆位相腕振り角補正用摂動モデルモーメントも、同様に等価変換あるいは近似変換して求めるようにしてもよい。
前記第３実施形態においては、前記逆位相腕振り角補正用摂動モデルモーメントは、図７０に示す機能ブロック図の代わりに、図８５に示す機能ブロック図の処理を行うようにしても良い。これを第８実施形態として以下に説明すると、図７０では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分までも含めて、床反力モーメント鉛直成分許容範囲を越えるか否かが判定されて、逆位相腕振り角補正用モデルの挙動が決定されたが、図８５に示す機能ブロック図の処理では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分は、床反力モーメント許容範囲を越えるか否かを判定する上で無視される。
図８５に示す機能ブロック図の処理を詳細に説明すると、フルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚと上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Ｍｐｚと補償全床反力モーメント鉛直成分Ｍｄｍｄｚとの和を無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚとし、これに図７０と同様に制限を加えることにより、制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚを求める。制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚは、コンプライアンス制御用目標床反力モーメント鉛直成分として出力される。さらに、制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚから無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚを減じた値、すなわち、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚのうちの床反力モーメント鉛直成分許容範囲を越えた分であるＭａａを求める。次いで、補正用摂動モデル逆位相腕振り角θｃａの前回値を基に、ＰＤ制御等を用いた逆位相腕振り角補正用摂動モデル制御則によって逆位相腕振り角補正用モデル安定化モーメント要求値Ｍａｆｄｍｄを求め、これをＭａａから減じた値（モーメント）を逆位相腕振り角補正用摂動モデルに入力し、補正用摂動モデル逆位相腕振り角θｃａを得る。
Ｍａａから補正用摂動モデル逆位相腕振り角θｃａまでの伝達関数は、ローパスフィルタの伝達関数になる。
すなわち、言い換えると、逆位相腕振り角補正用モデルによる床反力モーメント鉛直成分のキャンセル（超過防止動作）を行わない場合に発生する床反力モーメント鉛直成分（無制限時床反力モーメント鉛直成分）を、床反力モーメント鉛直成分許容範囲を越えないように制限する制限手段（飽和手段）に通すことにより、コンプライアンス制御用目標床反力モーメント鉛直成分（制限時補正目標床反力モーメント鉛直成分Ｍｌｔｄｚ）を得ると共に、無制限時床反力モーメント鉛直成分を、床反力モーメント鉛直成分許容範囲を越えた分を求める不感帯手段に通した値をローパスフィルタ（すなわちハイカットフィルタ）に通すことにより、補正用摂動モデル逆位相腕振り角θｃａを得る。
以上説明した第８実施形態は、本発明のうちの第１発明、第２発明、第４〜第１５発明、第２０〜第２３発明、第２８〜第３０発明の実施形態になっている。この場合、第８実施形態における床反力モーメント鉛直成分（Ｍｄｍｄｚを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Ｍｄｍｄｚが補償床反力モーメントに相当する。また、第８実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲［Ｍｚｍｉｎ，Ｍｚｍａｘ］が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当する。そして、Ｍａａが第１０発明におけるモーメント修正操作量に相当し、補正用摂動モデル逆位相腕振り角θｃａが第２発明および第１１発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量とに相当する。さらに第８実施形態における、無制限時補正目標床反力モーメント鉛直成分Ｍｉｎｚが第２３発明における制限対象量の推定値に相当する。さらに、第８実施形態におけるフルモデル床反力モーメント鉛直成分Ｍｆｕｌｌｚに上体水平位置補正に起因する床反力モーメント鉛直成分Ｍｐｚを加えたものが、目標運動の仮瞬時値に逆フルモデル（動力学モデル）上でほぼ釣り合う床反力モーメントの鉛直成分に相当する。そして、これにＭｄｍｄｚを加えたものが第２０発明におけるモデル制限対象量瞬時値に相当する。
なお、前記第８実施形態においては、前記第７実施形態の如く、床反力水平成分許容範囲および／または床反力モーメント鉛直成分許容範囲を滑り判定の結果に応じて可変的に設定するようにしてもよい。
前記第１実施形態においては、本願出願人が提案した特開平５−３３７８４９号公報に記載の構成に加え、床反力の並進力水平成分が床反力水平成分の許容範囲を越えないように、床反力水平成分と目標ＺＭＰまわりの床反力モーメント水平成分との発生の割合が異なる２つの運動モードの挙動、例えば、上体並進運動モードの上体並進加速度と上体傾斜運動モードの上体姿勢傾斜角加速度が決定されるので、実ロボット１を、修正目標歩容（最終的に歩容生成装置１００が出力する歩容）に収束させることができる。つまり、実ロボット１の姿勢を安定化させることができる。
また、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分の差がトータルの復元力になる。
また、モデル操作床反力モーメント水平成分は、ＺＭＰ存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢復元力を発生することができる。
また、床反力の並進力水平成分が、床反力水平成分の許容範囲を越えないので、ロボット１のスリップを防止できる。
また、床反力モーメント鉛直成分（コンプライアンス制御用目標床反力モーメント鉛直成分）しいては実床反力モーメント鉛直成分が、床反力モーメント鉛直成分の許容範囲を越えないので、ロボット１のスリップをより一層防止できる。
また、床反力鉛直成分が０の時期、すなわち、両脚体２，２がいずれも接地していない時期では、上体並進運動モードに依存せずに上体回転運動モードに依存した姿勢復元が行われ、床と足平２２の間の摩擦力に依存せずに効果的に姿勢復元が行われる。
また、実床反力モーメントが過大になることを防止するので、足平２２の本来の接地性が低下したり、足平２２の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
また、１歩分の修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、定常歩容に漸近するように、今回歩容パラメータが決定または変更されるので、継続的に（長期的に）安定性が保証された歩容を生成し続けることができる。
前記第２実施形態においては、上記のごとく、元歩容と修正歩容が同時に生成され、修正歩容は、実ロボット１の姿勢安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント（水平成分及び鉛直成分）を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、第１実施形態の効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止できる。また、修正歩容の上体姿勢角が元歩容（当初決定した歩容）の上体姿勢角に収束することを、修正歩容の上体水平位置が元歩容（当初決定した歩容）の上体水平位置に収束することよりも優先したので、上体姿勢角が大きく変動することを抑制することができる。
前記第１〜第６実施形態では、床反力水平成分許容範囲を設定するようにしたが、床反力水平成分とロボット全体重心水平加速度は、比例関係にあるので、前記各実施形態における床反力水平成分およびその許容範囲の代わりに、ロボット全体重心水平加速度およびその許容範囲を用いても構わない。また、ロボット全体重心水平軌道に近い挙動をする部位の水平加速度軌道に関するパラメータを明示的に設定しても構わない。例えば、脚体２，２の質量が上体３の質量に比べ十分に小さい場合には、上体水平加速度軌道とロボット１の全体重心水平加速度軌道は、ほぼ同じか比例関係にあるので、床反力水平成分およびその許容範囲の代わりに上体水平加速度およびその許容範囲を用いても良い。
さらに、斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分の許容範囲の代わりに、並進床反力の床面平行成分（床面に平行な成分）、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分（これは重力成分を除けば摩擦力に比例する）の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分（摩擦力）の許容範囲を設定する場合に関して説明（この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である）すると、該摩擦力は、床面の水平面に対する傾斜角度をθｆ（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式ｃ７２の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式ｃ７２の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式ｃ７２の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
摩擦力＝床反力水平成分＊ｃｏｓ（θｆ）−床反力鉛直成分＊ｓｉｎ（θｆ）
…式ｃ７２
また、斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち摩擦力モーメントの許容範囲を設定するようにしてもよい。例えば、該摩擦力モーメントは、床面の水平面に対する傾斜角度をθｆ（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式ｃ７３の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式ｃ７３の関係を用いて、床反力モーメント鉛直成分と−床反力モーメント水平成分から摩擦力モーメントを算出し、この値が摩擦力モーメントの許容範囲を越えないように処理を変更すれば良い。
摩擦力モーメント＝床反力モーメント鉛直成分＊ｃｏｓ（θｆ）
＋床反力モーメント水平成分＊ｓｉｎ（θｆ）
…式ｃ７３
また、前記参考例に関する変形態様で説明した如く、床反力水平成分と目標ＺＭＰまわりの床反力モーメント水平成分とを適切な値にするために、前記の実施形態では、上体傾斜モードと上体並進モードとの２つの運動モードを用いたが、これら以外の運動モードを用いても良い。この場合、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ＺＭＰまわりの床反力モーメントの発生の割合が異なる２つの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ＺＭＰまわりの床反力モーメントとを発生させることができるからである。
また、上体姿勢以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ＺＭＰまわりの床反力モーメントが発生できる運動モードを選ぶべきである。
例えば、左右の腕を同一回転方向に振りまわす運動モード、接地していない（空中に存在する）足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に０に戻すべきである。
また、３つ以上の運動モードを用いても良い。
また、選んだモードのうちの少なくとも２つは、床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなるからである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ＺＭＰまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ＺＭＰまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。運動モードの変位が小さくなるからである。
床反力モーメント鉛直成分を適切な値にするために、前記の実施形態では、逆位相腕振りモードを用いたが、これら以外の運動モードを用いても良い。例えば、前記参考例の変形態様について説明した如く、上体ヨー回転モードを用いたり、上体ヨー回転モードと逆位相腕振りモードとを併用しても良い。
また、床反力モーメント鉛直成分を適切な値にするために用いられる運動モードが床反力水平成分および床反力モーメント水平成分を発生しない運動モードである必要もない。例えば、遊脚を前後に振る運動モードを用いても良い。その運動モードによって発生した床反力水平成分および床反力モーメント水平成分は、上体傾斜モードと上体並進モードとの２つの運動モードを調整することによって、打ち消すことができるからである。
フルモデルを用いる実施形態では、前記単純化モデルとして、前記実施形態に用いた動力学モデル（図１２のモデル）以外にも以下のモデルを用いても良い。
１）図４９に示したように複数のリンクに質点を設定した非線形なモデル（多質点モデル）
２）本願出願人によるＰＣＴ公開公報ＷＯ／０２／４０２２４に示された３質点モデル
３）上体にのみ質量がある１質点モデル
４）全体重心まわりの角運動量変化によって生じる慣性力のモーメントを無視したモデル
５）重力と慣性力との合力（または床反力）と上体並進運動との関係を表す部分モデルと、上記合力と上体回転運動の関係を表す部分モデルを分離して持つ分離型モデル。例えば、図１２に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図１２に示すフライホイールは、上記合力と上体回転運動との関係を表す部分モデルである。
ただし、単純化モデルに単純化モデル上体姿勢傾斜角補正用モーメントが加えられる実施形態においては、上記２）、３）、および４）のモデルを用いることはできない。
尚、フルモデルは、基本的には、単純化モデルよりもより近似精度の高い動力学モデルを用いることが好ましいが、単純化モデルと同等の近似精度の動力学モデルを用いてもよい。
また、前述した各実施形態において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記各実施形態を２足移動ロボットに関して説明してきたが、１足もしくは３足以上の多脚ロボットにも本発明を適応することができる。
【産業上の利用可能性】  以上のように本発明は、２足移動ロボット等の脚式移動ロボットと床面との摩擦力が小さくなるような状況でも、ロボットのスピンを生じることなく、また、該ロボットの姿勢を安定に保ちつつ、該ロボットを円滑に移動させることができるものとして有用である。
【図１】
2005000534.tif 000011
【図２】
2005000534.tif 000012
【図３】
2005000534.tif 000013
【図４】
2005000534.tif 000014
【図５】
2005000534.tif 000015
【図６】
2005000534.tif 000016
【図７】
2005000534.tif 000017
【図８】
2005000534.tif 000018
【図９】
2005000534.tif 000019
【図１０】
2005000534.tif 000020
2005000534.tif 000021
【図１２】
2005000534.tif 000022
【図１３】
2005000534.tif 000023
【図１４】
2005000534.tif 000024
【図１５】
2005000534.tif 000025
【図１６】
2005000534.tif 000026
【図１７】
2005000534.tif 000027
【図１８】
2005000534.tif 000028
【図１９】
2005000534.tif 000029
【図２０】
2005000534.tif 000030
【図２１】
2005000534.tif 000031
【図２２】
2005000534.tif 000032
【図２３】
2005000534.tif 000033
【図２４】
2005000534.tif 000034
【図２５】
2005000534.tif 000035
【図２６】
2005000534.tif 000036
【図２７】
2005000534.tif 000037
【図２８】
2005000534.tif 000038
【図２９】
2005000534.tif 000039
【図３０】
2005000534.tif 000040
【図３１】
2005000534.tif 000041
【図３２】
2005000534.tif 000042
【図３３】
2005000534.tif 000043
【図３４】
2005000534.tif 000044
【図３５】
2005000534.tif 000045
【図３６】
2005000534.tif 000046
【図３７】
2005000534.tif 000047
【図３８】
2005000534.tif 000048
【図３９】
2005000534.tif 000049
【図４０】
2005000534.tif 000050
【図４１】
2005000534.tif 000051
【図４２】
2005000534.tif 000052
【図４３】
2005000534.tif 000053
【図４４】
2005000534.tif 000054
【図４５】
2005000534.tif 000055
【図４６】
2005000534.tif 000056
【図４７】
2005000534.tif 000057
【図４８】
2005000534.tif 000058
【図４９】
2005000534.tif 000059
【図５０】
2005000534.tif 000060
【図５１】
2005000534.tif 000061
【図５２】
2005000534.tif 000062
【図５３】
2005000534.tif 000063
【図５４】
2005000534.tif 000064
【図５５】
2005000534.tif 000065
【図５６】
2005000534.tif 000066
【図５７】
2005000534.tif 000067
【図５８】
2005000534.tif 000068
【図５９】
2005000534.tif 000069
【図６０】
2005000534.tif 000070
【図６１】
2005000534.tif 000071
【図６２】
2005000534.tif 000072
【図６３】
2005000534.tif 000073
【図６４】
2005000534.tif 000074
【図６５】
2005000534.tif 000075
【図６６】
2005000534.tif 000076
【図６７】
2005000534.tif 000077
【図６８】
2005000534.tif 000078
【図６９】
2005000534.tif 000079
【図７０】
2005000534.tif 000080
【図７１】
2005000534.tif 000081
【図７２】
2005000534.tif 000082
【図７３】
2005000534.tif 000083
【図７４】
2005000534.tif 000084
【図７５】
2005000534.tif 000085
【図７６】
2005000534.tif 000086
【図７７】
2005000534.tif 000087
【図７８】
2005000534.tif 000088
【図７９】
2005000534.tif 000089
【図８０】
2005000534.tif 000090
【図８１】
2005000534.tif 000091
【図８２】
2005000534.tif 000092
【図８３】
2005000534.tif 000093
【図８４】
2005000534.tif 000094
【図８５】
2005000534.tif 000095
【手続補正書】
【提出日】平成17年11月7日(2005.11.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動および目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動および目標床反力の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動および目標床反力に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差と前記許容範囲とに基づいて、前記目標床反力に対応する制限対象量を前記許容範囲に収めつつ、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように前記目標運動および目標床反力の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項２】
前記目標瞬時値決定手段は、前記偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、少なくとも前記目標運動の所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように該所定の仮瞬時値の修正量を決定する手段とを備え、その決定した修正量に応じて前記仮瞬時値を修正することにより前記目標運動の瞬時値を決定することを特徴とする請求項１記載の脚式移動ロボットの制御装置。
【請求項３】
前記動力学モデルの状態量を所定の状態量に近づけるための付加的な床反力モーメントであるモデル補正床反力モーメントを決定する手段を備え、前記目標運動の所定の仮瞬時値の修正量を決定する手段は、少なくとも前記所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントと前記モデル補正床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように前記目標運動の仮瞬時値の修正量を決定することを特徴とする請求項２記載の脚式移動ロボットの制御装置。
【請求項４】
前記所定の仮瞬時値の修正量は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動の修正量であることを特徴とする請求項２又は３記載の脚式移動ロボットの制御装置。
【請求項５】
前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の運動であることを特徴とする請求項４記載の脚式移動ロボットの制御装置。
【請求項６】
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量が前記許容範囲に収まるように目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項７】
前記許容範囲に収めた前記制限対象量を目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えたことを特徴とする請求項６記載の脚式移動ロボットの制御装置。
【請求項８】
前記目標瞬時値決定手段は、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲に収めるために、前記ロボットの運動のうち、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を調整して前記目標運動の瞬時値を決定することを特徴とする請求項６又は７記載の脚式移動ロボットの制御装置。
【請求項９】
前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の運動であることを特徴とする請求項８記載の脚式移動ロボットの制御装置。
【請求項１０】
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標運動の仮瞬時値を逐次決定する仮瞬時値決定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量のうちの前記許容範囲を逸脱した分をモーメント修正操作量とし、そのモーメント修正操作量に応じて当該逸脱分が減少傾向になるように前記目標運動の仮瞬時値を修正することにより前記目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項１１】
前記目標瞬時値決定手段は、前記モーメント修正操作量をローパスフィルタに通したものに応じて前記目標運動の仮瞬時値の修正量を求め、その求めた修正量により該仮瞬時値を修正することにより前記目標運動の瞬時値を決定することを特徴とする請求項１０記載の脚式移動ロボットの制御装置。
【請求項１２】
前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲により制限してなる制限済制限対象量に対応する床反力モーメントを目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えたことを特徴とする請求項１０記載の脚式移動ロボットの制御装置。
【請求項１３】
前記目標瞬時値決定手段は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を前記目標運動の仮瞬時値から修正することにより前記目標運動の瞬時値を決定することを特徴とする請求項１０〜１２のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項１４】
前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の運動であることを特徴とする請求項１３記載の脚式移動ロボットの制御装置。
【請求項１５】
前記ロボットの姿勢に関する状態量は、該ロボットの上体のヨー角又はヨー角速度を含むことを特徴とする請求項１、６、１０のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項１６】
前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することを特徴とする請求項１、６、１０のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項１７】
前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断することを特徴とする請求項１６記載の脚式移動ロボットの制御装置。
【請求項１８】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断することを特徴とする請求項１６記載の脚式移動ロボットの制御装置。
【請求項１９】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断することを特徴とする請求項１６記載の脚式移動ロボットの制御装置。
【請求項２０】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動の仮瞬時値を決定する仮瞬時値決定手段と、
前記ロボットの運動と該運動に釣り合う床反力モーメントの鉛直成分又は床面法線方向成分との関係を表す動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定するモデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように前記目標運動の仮瞬時値を補正して目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
【請求項２１】
前記目標瞬時値決定手段は、前記目標運動の瞬時値に前記動力学モデル上で略釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定することを特徴とする請求項２０記載の脚式移動ロボットの制御装置。
【請求項２２】
前記目標瞬時値決定手段は、前記ロボットの摂動運動と床反力モーメントの鉛直成分又は床面法線方向成分の摂動分との関係を表す摂動モデルと、
少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記摂動モデルの摂動分を操作する摂動モデル操作量を決定する手段と、
その決定した摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求める手段と、
該補正量により前記目標運動の仮瞬時値を補正することにより前記目標運動の瞬時値を決定する手段とを備えることを特徴とする請求項２０記載の脚式移動ロボットの制御装置。
【請求項２３】
前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲内に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することを特徴とする請求項２２記載の脚式移動ロボットの制御装置。
【請求項２４】
少なくとも前記摂動モデルの状態量に応じて前記摂動モデル操作量の要求値を決定する手段を備え、
前記摂動モデル操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値、前記許容範囲、及び前記要求値に基づき前記摂動モデルに入力する摂動モデル操作量を決定することを特徴とする請求項２２記載の脚式移動ロボットの制御装置。
【請求項２５】
前記摂動モデル操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することを特徴とする請求項２４記載の脚式移動ロボットの制御装置。
【請求項２６】
前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することを特徴とする請求項２４記載の脚式移動ロボットの制御装置。
【請求項２７】
前記目標瞬時値決定手段は、前記目標運動の補正量を前記動力学モデルに追加的に入力する手段を備えたことを特徴とする請求項２２記載の脚移動ロボットの制御装置。
【請求項２８】
前記摂動モデルは、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることを特徴とする請求項２２記載の脚式移動ロボットの制御装置。
【請求項２９】
前記摂動運動は、該ロボットの重心位置を略一定に維持する摂動運動であることを特徴とする請求項２８記載の脚式移動ロボットの制御装置。
【請求項３０】
前記摂動運動は、ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の摂動運動であることを特徴とする請求項２８又は２９記載の脚式移動ロボットの制御装置。
【請求項３１】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも前記目標床反力の仮瞬時値を前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の仮瞬時値を逐次求める第１モデル演算手段と、
前記ロボットの運動と該運動に釣り合う床反力モーメントの鉛直成分又は床面法線方向成分との関係を表す第２動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該第２動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定する第２モデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように目標床反力の床反力モーメント補正量を求め、その求めた床反力モーメント補正量を前記第１動力学モデルに追加的に入力する第１モデル入力補正手段とを備え、
少なくとも前記第２動力学モデルの入力に基づいて前記目標運動の瞬時値を決定することを特徴とする脚式移動ロボットの制御装置。
【請求項３２】
前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えたことを特徴とする請求項３１記載の脚式移動ロボットの制御装置。
【請求項３３】
前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定することを特徴とする請求項３１記載の脚式移動ロボットの制御装置。
【請求項３４】
前記目標床反力の床反力モーメント補正量の要求値を決定する手段を備え、
前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定することを特徴とする請求項３１記載の脚式移動ロボットの制御装置。
【請求項３５】
少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記目標運動の補正量を求め、その求めた補正量を前記第２動力学モデルに追加的に入力する第２モデル入力補正手段を備えたことを特徴とする請求項３１記載の脚式移動ロボットの制御装置。
【請求項３６】
前記ロボットの摂動運動と制限対象量摂動分との関係を表す摂動モデルと、
少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき床反力モーメントの操作量を決定する手段と、
その決定した床反力モーメントの操作量を、前記第１動力学モデルに入力する前記目標床反力の床反力モーメント補正量と前記摂動モデルに入力する摂動モデル操作量とに分配する分配手段とを備え、
前記第２モデル入力補正手段は、前記摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求めることを特徴とする請求項３５記載の脚式移動ロボットの制御装置。
【請求項３７】
少なくとも前記摂動モデルの状態量に応じて前記床反力モーメントの操作量の要求値を決定する手段を備え、
前記床反力モーメントの操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲と前記要求値とに基づき前記分配手段に与える床反力モーメントの操作量を決定することを特徴とする請求項３６記載の脚式移動ロボットの制御装置。
【請求項３８】
前記床反力モーメントの操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することを特徴とする請求項３７記載の脚式移動ロボットの制御装置。
【請求項３９】
前記摂動モデルは、ロボットの角運動量変化率の鉛直軸回り又は床面法線軸回りの成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることを特徴とする請求項３６記載の脚式移動ロボットの制御装置。
【請求項４０】
前記摂動運動は、ロボットの重心位置を略一定に維持する摂動運動であることを特徴とする請求項３９記載の脚式移動ロボットの制御装置。
【請求項４１】
前記摂動運動は、ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれ一方の摂動運動であることを特徴とする請求項３９又は４０記載の脚式移動ロボットの制御装置。
【請求項４２】
前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定することを特徴とする請求項３６記載の脚式移動ロボットの制御装置。
【請求項４３】
前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定することを特徴とする請求項３７記載の脚式移動ロボットの制御装置。
【請求項４４】
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも該目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の第１仮瞬時値を求める第１モデル演算手段と、
目標運動の第２仮瞬時値を決定する手段であって、その決定する第２仮瞬時値にロボットの運動と床反力との関係を表す第２動力学モデル上で釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算により求まる制限対象量瞬時値が前記許容範囲に収まるように、少なくとも前記目標床反力の仮瞬時値に基づき、該目標運動の第２仮瞬時値を決定する制限付き第２モデル演算手段と、
少なくとも前記目標運動の第１仮瞬時値と第２仮瞬時値との差に基づいて、該差が０に近づくように床反力モーメントの操作量を求める操作量算出手段と、
該床反力モーメントの操作量を前記第１動力学モデル及び第２動力学モデルのうちの少なくともいずれか一方に追加的に入力するモデル入力補正手段とを備え、
前記目標運動の第２仮瞬時値を該目標運動の目標瞬時値として決定することを特徴とする脚式移動ロボットの制御装置。
【請求項４５】
前記目標運動の第１仮瞬時値と第２仮瞬時値との差は、前記ロボットの所定の部位の姿勢の、鉛直軸回り又は床面法線軸回りの状態量の差を含むことを特徴とする請求項４４記載の脚式移動ロボットの制御装置。
【請求項４６】
前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えたことを特徴とする請求項４４記載の脚式移動ロボットの制御装置。
【請求項４７】
少なくとも前記目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第３動力学モデルに入力し、該第３動力学モデルの出力としての目標運動の第３仮瞬時値を求める第３モデル演算手段を備え、前記目標床反力の床反力モーメント補正量の要求値を決定する手段は、前記決定した前記目標運動の目標瞬時値と前記目標運動の第３仮瞬時値との差に基づいて、該差が０に近づくように前記要求値を決定することを特徴とする請求項３４記載の脚式移動ロボットの制御装置。
【請求項４８】
前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することを特徴とする請求項２０、３１、４４のいずれか１項に記載の脚式移動ロボットの制御装置。
【請求項４９】
前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断することを特徴とする請求項４８記載の脚式移動ロボットの制御装置。
【請求項５０】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断することを特徴とする請求項４８記載の脚式移動ロボットの制御装置。
【請求項５１】
前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断することを特徴とする請求項４８記載の脚式移動ロボットの制御装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、脚式移動ロボットの歩行のみならず、走行にも適した制御装置に関する。
【背景技術】
【０００２】
脚式移動ロボット、例えば２足移動ロボットの移動動作を行わせるための歩容（目標歩容）の生成は、従来、主にロボットにスムーズな歩行動作を行なわせる歩容（歩行歩容）を生成することを主目的として行なわれてきた。しかし、近年では、脚式移動ロボットの開発が進むにつれて、該ロボットに歩行だけでなく、走行も行なわせることができる歩容を生成することが望まれている。さらには、十分な摩擦力を発生できない滑りやすい床（いわゆる低ミュー路）上でもロボットを支障なく移動させることができる歩容を生成することが望まれている。
【０００３】
尚、「歩容」という漢字に「歩」が入っているので歩行に限定されると誤解されやすいが、本来「歩容」とは、トロットなど、馬の走行形態を指す言葉として用いられているように、走行も含んだ概念である。
【０００４】
ここで、歩行と走行の特徴の違いを説明しておく。
同時に全脚が空中に存在する瞬間がある移動形態を走行と定義することが一般的ではある。しかし、この定義によって歩行と走行が明確に区別できるとは限らない。たとえば、速いジョギングでは、ほとんどの人間において、同時に全脚が空中に存在する瞬間があるが、遅いジョギングでは、かなりの人間において、常にいずれかの脚が接地している。速いジョギングは走行であるのに遅いジョギングは歩行である、と定義するのは、感覚的に少し無理がある。
【０００５】
図５１に、典型的な走行における上体鉛直位置と床反力鉛直成分（左右の脚に作用する床反力鉛直成分の和）のパターンを示し、図５２には、典型的な歩行における上体鉛直位置と床反力鉛直成分のパターンを示す。
【０００６】
尚、上体鉛直位置速度は、上体代表点の鉛直位置とその速度を意味する。上体水平位置速度は、上体代表点の水平位置とその速度を意味する。上体鉛直位置速度と上体水平位置速度を合わせて、上体位置速度と呼ぶ。
【０００７】
また、「床反力鉛直成分」は、厳密には、床反力の鉛直軸まわりのモーメント成分と区別するために、「並進床反力鉛直成分」と記述すべきであるが、言葉が長くなるので、ここでは「並進」を省略する。以降、「並進床反力水平成分」も「並進」を省略して「床反力水平成分」と記述する。
【０００８】
まず上体の動きを見てみると、歩行においては、支持脚の上を上体が通過する瞬間に上体は最も高く、走行においては、この瞬間に最も低い。すなわち、歩行と走行では、上体の上下動パターンの位相が反転している。
【０００９】
一方、床反力に関しては、歩行では比較的一定であるのに対し、走行においては、大きく変動し、支持脚の上を上体が通過する瞬間に床反力は最も大きい。また、当然のことながら、同時に全脚が空中に存在する瞬間において床反力は０になっている。より詳しく観察すると、走行では、支持脚を縮めた量にほぼ比例した大きさの床反力が発生する。言いかえると、走行では、脚をばねのように使って跳ねながら移動していると言える。
【００１０】
遅いジョギングでは、典型的な走行と同じ上体上下動の位相を持つ。また、遅いジョギングでは、同時に全脚が空中に存在する瞬間がない場合が多いが、その場合でも、支持脚と遊脚の切り換えが行われる瞬間において、床反力は、完全には０にならないがほぼ０になっている。
【００１１】
したがって、以上のように、上体の上下動や床反力のパターンの上記特徴から歩行と走行を区別した方が、遅いジョギングも走行とみなされ、感覚とも一致して、より適切と言えよう。
【００１２】
特に、最も特徴的な点で両者を区別するならば、走行とは、支持脚の切り換えが行われる瞬間において、床反力が０またはほぼ０になる移動形態であり、歩行は、それ以外の移動形態（床反力鉛直成分が比較的一定）であると言えよう。
【００１３】
ところで、本出願人は先に特許文献１（ＰＣＴ公開公報WO／02／40224）において、脚式移動ロボットの床反力を含む歩容を、動力学的平衡条件（目標歩容の重力と慣性力と床反力との釣り合い条件のことである。狭義では、目標歩容の運動による重力と慣性力との合力が目標ＺＭＰまわりに作用するモーメントの水平成分が０であること。詳細は後述する。）をほぼ満足しながら、自在かつリアルタイムに生成する技術を先に提案した。この技術や、特許文献２（特開平１０−８６０８１号公報）、特許文献３（特開平１０−２７７９６９号公報）などにて本出願人が提案してきた一連の脚式移動ロボットの制御装置は、歩行のみならず走行にも適用できるものである。
【００１４】
また、本願出願人は、特許文献４（特開平５−３３７８４９号公報）等にて、次のような技術も提案している。すなわち、この技術では、ロボットの傾き偏差（ロボットの上体の鉛直方向に対する実際の傾き角と目標歩容の傾き角との偏差）とが生じたときには、実ＺＭＰをずらして、目標ＺＭＰ回りに許容範囲内で姿勢復元方向のモーメントを発生させると共に、目標歩容を生成するために用いるモデル上で、目標ＺＭＰ回りにモーメントを発生させるように目標歩容の運動を決定する。このように、モデル上でモーメントを意図的に発生させることにより、実際のロボット上で姿勢復元方向のモーメントを発生させることと同等の効果を得ることができる。
【００１５】
しかしながら、これらの技術においては、目標歩容のＺＭＰまわりの床反力モーメント鉛直成分の大きさを考慮していなかった。このため、この床反力モーメント鉛直成分が過大となって、摩擦の限界を超えて、スピンするおそれがあった。なお、スピンとは、実際のロボットのヨー角（鉛直軸まわり回転角）速度が目標ヨー角速度からずれることを言う。
【００１６】
摩擦係数の高い床面を歩行する場合（この場合、少なくとも１つの脚体は常時接地している）には、床反力鉛直成分が常にほぼロボットの自重相当であるので、摩擦力（すなわち床反力モーメント鉛直成分）の限界が高い。このため、スピンは発生しにくい。
【００１７】
しかるに、走行においては、床反力鉛直成分が０になる、または０に近くなる時があるので、その時には、たとえ摩擦係数が高くとも、床面の摩擦力のモーメント鉛直成分の限界が０になるまたは０に近くなる。したがって、目標歩容の床反力モーメント鉛直成分が限界を超え、スピンして転倒する恐れがあった。
【００１８】
また、歩行の場合でも、床の摩擦係数が低い場合には、スピンして転倒する恐れがあった。
【００１９】
また、前記の技術では、上体のヨー方向の回転姿勢の目標姿勢からのずれを補償するようにしていなかったため、ロボットの移動軌道が目標歩容の軌道からずれる恐れがあった。
【００２０】
一方、本出願人は先に、例えばＰＣＴ出願ＰＣＴ／ＪＰ０２／１３５９６の実施形態において、目標歩容において腕以外が発生するモーメント鉛直成分を打ち消すように、腕を振るようにしたものを提案した。
【００２１】
この場合には、目標歩容のモーメント鉛直成分はほぼ０になるが、脚を激しく振って移動する場合には、腕の振りも激しくなる。
【００２２】
一般的に、人間型ロボットにおいては、腕の質量は、脚の質量に較べて小さい。したがって、モーメント鉛直成分を完全に打ち消すためには、腕は、脚の振りよりも激しく振る必要がある。
【００２３】
しかし、腕の動作範囲には限界があり、また、腕のアクチュエータのトルクおよび速度にも限界があるので、脚を激しく振って移動する場合には、腕によってモーメント鉛直成分を完全に打ち消すことができなくなる場合があった。
【００２４】
また、目標歩容において腕以外が発生するモーメント鉛直成分を完全に打ち消すように、腕を振るようにすると、腕振りの中心が徐々にオフセットしていき、左右の腕の振りが非対称になる恐れがあった。具体的には、ロボットが左旋回する場合に、腕以外が発生するモーメント鉛直成分を完全に打ち消すように、腕を振るようにすると、脚と胴体が左を向いたことによる角運動量変化を打ち消すために、左腕は前側には大きく、後ろ側には小さく振られ、右の腕は前側には小さく後ろ側には大きく振られるようになる。したがって、この場合には、左腕は、前側の振り動作限界に達する恐れが生じ、右腕は、後ろ側の振り動作限界に達する恐れが生じる。
【００２５】
また、さらに左右の腕の振りが非対称にならないように、腕振りの中心を戻そうとすると、この動作によって、床反力モーメント鉛直成分が発生し、目標歩容の床反力モーメント鉛直成分が限界を超え、スピンする恐れがあった。
【特許文献１】ＰＣＴ公開公報WO／02／40224
【特許文献２】特開平１０−８６０８１号公報
【特許文献３】特開平１０−２７７９６９号公報
【特許文献４】特開平５−３３７８４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
したがって、本発明の目的は、上記の問題点を解消し、歩行、走行等の歩容形態や床面の摩擦状態によらずに、より一層好適な歩容を生成することができる制御装置を提供することにある。
【００２７】
より具体的には、本発明は、ロボットと床面との間の摩擦力のモーメント鉛直成分の限界を考慮し、ロボットのヨー方向の姿勢状態を安定に保ちつつ、スピンおよびそれに起因するロボットの転倒を防止することが可能な歩容でロボットを動作させることができる制御装置を提供することを目的とする。そして、空中時、あるいは摩擦力のモーメント鉛直成分の限界が極めて低い時にでも、動力学的平衡条件を満足する歩容の運動パターンでロボットを動作させることができる制御装置を提供することを目的とする。さらに、目標歩容の左右非対称性が大きくなることを防止して、動作の継続性を確保することを目的とする。
【課題を解決するための手段】
【００２８】
本発明の脚式移動ロボットの歩容生成装置の第１発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動および目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動および目標床反力の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動および目標床反力に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差と前記許容範囲とに基づいて、前記目標床反力に対応する制限対象量を前記許容範囲に収めつつ、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように前記目標運動および目標床反力の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
【００２９】
かかる第１発明によれば、少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差と前記許容範囲とに基づいて、前記目標床反力に対応する制限対象量を前記許容範囲に収めつつ、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記目標床反力の床反力モーメントとの差が前記偏差を０に近づけるように前記目標運動および目標床反力の瞬時値を決定する。このため、鉛直軸回りまたは床面法線軸回りのロボットの姿勢に関する状態量（以下、ヨー方向の姿勢状態量という）を、目標状態量、すなわち目標運動におけるヨー方向の目標姿勢状態量に近づけるようにしつつ（前記偏差を０に近づけるようにしつつ）、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差とを考慮して、目標運動および目標床反力の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
【００３０】
かかる第１発明では、前記目標瞬時値決定手段は、前記偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、少なくとも前記目標運動の所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように該所定の仮瞬時値の修正量を決定する手段とを備え、その決定した修正量に応じて前記仮瞬時値を修正することにより前記目標運動の瞬時値を決定することが好ましい（第２発明）。
【００３１】
かかる第２発明によれば、目標運動の所定の仮瞬時値によって前記動力学モデル上で発生する（目標運動に釣り合う）床反力モーメントと、前記偏差を０に近づけるための補償床反力モーメントとに応じて前記所定の仮瞬時値の修正量を決定するので、ロボットのヨー方向の姿勢状態量を目標状態量に近づけつつ、前記制限対象量が許容範囲に収まるような適切な目標運動の瞬時値を決定できる。
【００３２】
この第２発明では、前記動力学モデルの状態量を所定の状態量に近づけるための付加的な床反力モーメントであるモデル補正床反力モーメントを決定する手段を備え、前記目標運動の所定の仮瞬時値の修正量を決定する手段は、少なくとも前記所定の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントと前記モデル補正床反力モーメントとに応じて前記制限対象量が前記許容範囲を超えないように前記目標運動の仮瞬時値の修正量を決定することが好ましい（第３発明）。
【００３３】
この第３発明によれば、目標運動の所定の仮瞬時値の修正量を決定するとき、目標運動の所定の仮瞬時値に動力学モデル上で釣り合う床反力モーメント、及び前記補償床反力モーメントだでなく、動力学モデルの状態量に係るモデル補正床反力モーメントを考慮するので、第２発明の効果に加えて、動力学モデルが発散しないようにすることができる。
【００３４】
また、上記第２及び第３発明では、前記所定の仮瞬時値の修正量は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動の修正量であることが好適である（第４発明）。
【００３５】
これにより制限対象量を許容範囲に収めるように目標運動の仮瞬時値を修正できる。
【００３６】
この第４発明では、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の運動であることが好適である（第５発明）。
【００３７】
これによれば、目標運動の仮瞬時値の修正処理が容易になる。
【００３８】
なお、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、ロボットの全体重心を一定に維持するような運動であることが特に好ましい。
【００３９】
また、本発明の脚式移動ロボットの制御装置の第６発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量が前記許容範囲に収まるように目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
【００４０】
かかる第６発明によれば、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量（例えば前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとの和）が前記許容範囲に収まるように目標運動の瞬時値を決定する。このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
【００４１】
この第６発明では、前記許容範囲に収めた前記制限対象量を目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えることが好ましい（第７発明）。
【００４２】
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
【００４３】
上記第６及び第７発明では、前記目標瞬時値決定手段は、前記目標運動に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲に収めるために、前記ロボットの運動のうち、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を調整して前記目標運動の瞬時値を決定することが好ましい（第８発明）。
【００４４】
これにより制限対象量を許容範囲に収めるように目標運動の瞬時値を決定できる。
【００４５】
この第８発明では、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の運動であることが好適である（第９発明）。
【００４６】
これによれば、目標運動の瞬時値の決定処理が容易になる。
【００４７】
なお、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、ロボットの全体重心を一定に維持するような運動であることが特に好ましい。
【００４８】
また、本発明の脚式移動ロボットの制御装置の第１０発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作制御を行なう脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標運動の仮瞬時値を逐次決定する仮瞬時値決定手段と、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する補償床反力モーメント決定手段と、
前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量のうちの前記許容範囲を逸脱した分をモーメント修正操作量とし、そのモーメント修正操作量に応じて当該逸脱分が減少傾向になるように前記目標運動の仮瞬時値を修正することにより前記目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
【００４９】
この第１０発明によれば、前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量（例えば前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとの和）のうちの前記許容範囲を逸脱した分をモーメント修正操作量とし、そのモーメント修正操作量に応じて当該逸脱分が減少傾向になるように前記目標運動の仮瞬時値を修正することにより前記目標運動の瞬時値を決定する。このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量をほぼ許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差とを考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
【００５０】
かかる第１０発明では、前記目標瞬時値決定手段は、前記モーメント修正操作量をローパスフィルタに通したものに応じて前記目標運動の仮瞬時値の修正量を求め、その求めた修正量により該仮瞬時値を修正することにより前記目標運動の瞬時値を決定することが好ましい（第１１発明）。
【００５１】
この第１１発明によれば、目標運動の仮瞬時値が過剰に修正されるのを防止することができる。
【００５２】
上記第１０および第１１発明では、前記目標運動の仮瞬時値に前記動力学モデル上で釣り合う床反力モーメントと前記補償床反力モーメントとに応じて定まる前記制限対象量を前記許容範囲により制限してなる制限済制限対象量に対応する床反力モーメントを目標床反力モーメントとし、その目標床反力モーメントに追従させるようにロボットの動作制御を行なう手段を備えることが好ましい（第１２発明）。
【００５３】
この第１２発明によれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
【００５４】
上記第１０〜第１２発明では、前記目標瞬時値決定手段は、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動を前記目標運動の仮瞬時値から修正することにより前記目標運動の瞬時値を決定することが好ましい（第１３発明）。
【００５５】
これにより制限対象量を許容範囲に収めるように目標運動の瞬時値を決定できる。
【００５６】
この第１３発明では、前記ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を変化させる運動は、該ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の運動であることが好適である（第１４発明）。
【００５７】
これによれば、目標運動の仮瞬時値の修正処理が容易になる。
【００５８】
なお、前記第１〜第１４発明では、前記ロボットの姿勢に関する状態量は、具体的には、該ロボットの上体のヨー角（ヨー方向の回転角）又はヨー角速度（ヨー方向の回転角の角速度）を含むことが好ましい（第１５発明）。この第１５発明によれば、ロボットの上体のヨー方向の姿勢の安定性を高めることができる。なお、このことは、後述する第１５〜第５１発明においても同様である。
【００５９】
また、前記第１〜第１５発明では、前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することが好ましい（第１６発明）。
【００６０】
この第１６発明によれば、前記ロボット（目標運動の瞬時値に、あるいは目標運動および目標床反力の瞬時値に追従して動作しているロボット）の滑りの発生の判断結果に応じて制限対象量の許容範囲を可変的に設定するので、ロボットの滑りの発生を確実に抑制できる。なお、滑りの発生が有ると判断されたときには、許容範囲は、それを狭めるように設定されるべきである。
【００６１】
この第１６発明では、例えば、次のようにして、滑りの発生を判断することができる。
【００６２】
すなわち、前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断する（第１７発明）。この場合、例えば該対地速度の絶対値が所定値よりも大きいときには、滑りの発生が有ると判断することができる。
【００６３】
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断する（第１８発明）。この場合、例えば該見かけばね定数が所定値よりも小さいときには、滑りの発生が有ると判断することができる。
【００６４】
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断する（第１９発明）。この場合、前記実床反力をバンドパスフィルタに通したものは、いわゆる滑り振動が発生しているときの、実床反力の振動成分に相当するものとなる。そして、例えばこの振動成分の大きさ（絶対値）が所定値よりも大きいときには、滑り振動の発生が有ると判断することができる。
【００６５】
なお、滑りの発生の判断は、第１７〜第１９発明のいずれでも行なうことができるが、これらの第１７〜第１９発明の２つ以上を組み合わせて滑りの発生の判断を行なうようにしてもよい。
【００６６】
また、本発明の脚式移動ロボットの制御装置の第２０発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動の仮瞬時値を決定する仮瞬時値決定手段と、
前記ロボットの運動と該運動に釣り合う床反力モーメントの鉛直成分又は床面法線方向成分との関係を表す動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定するモデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように前記目標運動の仮瞬時値を補正して目標運動の瞬時値を決定する目標瞬時値決定手段とを備えたことを特徴とする。
【００６７】
この第２０発明によれば、少なくとも前記目標運動の仮瞬時値を前記動力学モデルに入力することで、該動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分が求められる。そして、その求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算（例えば足し算）によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値（これは前記動力学モデル上で目標運動が発生する床反力モーメントに補償床反力モーメントを付加した場合の制限対象量の瞬時値に相当する）が決定され、少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように前記目標運動の仮瞬時値を補正して目標運動の瞬時値を決定する。
【００６８】
このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
【００６９】
なお、前記動力学モデルは、基本的には近似精度の高いものを用いることが好適である。
【００７０】
この第２０発明では、前記目標瞬時値決定手段は、前記目標運動の瞬時値に前記動力学モデル上で略釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定することが好ましい（第２１発明）。
【００７１】
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
【００７２】
上記第２０および第２１発明では、前記目標瞬時値決定手段は、前記ロボットの摂動運動と床反力モーメントの鉛直成分又は床面法線方向成分の摂動分との関係を表す摂動モデルと、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記摂動モデルの摂動分を操作する摂動モデル操作量を決定する手段と、その決定した摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求める手段と、該補正量により前記目標運動の仮瞬時値を補正することにより前記目標運動の瞬時値を決定する手段とを備えることが好ましい（第２２発明）。
【００７３】
すなわち、前記摂動モデルは線形性が高いので、前記制限対象量を許容範囲に収める上での適正な目標運動の補正量の算出処理が容易になると共に、その補正量による前記目標運動の仮瞬時値の補正処理が容易になる。
【００７４】
この第２２発明では、前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲内に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することが好ましい（第２３発明）。
【００７５】
この第２３発明によれば、まず、摂動モデル操作量を０と仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、摂動モデル操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無いようにすることを可能とする摂動モデル操作量を適切に決定できる。
【００７６】
また、前記第２２発明では、少なくとも前記摂動モデルの状態量に応じて前記摂動モデル操作量の要求値を決定する手段を備え、前記摂動モデル操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値、前記許容範囲、及び前記要求値に基づき前記摂動モデルに入力する摂動モデル操作量を決定することが好ましい（第２４発明）。
【００７７】
これによれば、前記許容範囲と、補償床反力モーメントを加味したモデル制限対象量瞬時値だけでなく、摂動モデルの状態量（摂動モデルの要素となる回転体の回転角やその角速度など）の要求値を考慮して、前記摂動モデル操作量が決定される。これにより、該摂動モデルの状態量が前記要求値に対応する状態量からかけ離れないようにして、不適正な目標運動の補正量が求められるような事態を防止することができる。
【００７８】
この第２４発明では、前記摂動モデル操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することが好適である（第２５発明）。
【００７９】
この第２５発明によれば、摂動モデルの状態量がある目標状態量の近傍に概ね維持されるように摂動モデル操作量が決定される。これにより、この摂動モデルによって決定される目標運動の補正量を、摂動モデルの状態を安定に保ちつつ、制限対象量を許容範囲に収める上で好適なものにすることができる。
【００８０】
さらに、上記第２４発明および第２５発明では、前記摂動モデル操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づき決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記摂動モデル操作量を決定することが好ましい（第２６発明）。
【００８１】
これによれば、まず、摂動モデル操作量を前記要求値に一致させたと仮定した場合、すなわち、該要求値のみを摂動モデルに入力したとした場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき決定した制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値と上記要求値との和をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、摂動モデル操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無く、且つ摂動モデルの安定性も確保し得る摂動モデル操作量を適切に決定できる。
【００８２】
前記第２２発明では、前記目標瞬時値決定手段は、前記目標運動の補正量を前記動力学モデルに追加的に入力する手段を備えるようにしてもよい（第２７発明）。
【００８３】
これによれば、目標運動の補正量を前記動力学モデルに追加的に入力するので、該動力学モデルから目標運動に瞬時値に釣り合う床反力モーメントの鉛直成分または床面法線方向成分を直接的に求めることができる。
【００８４】
摂動モデルを備える前記２２〜第２７発明にあっては、前記摂動モデルは、ロボットの角運動量変化率の鉛直成分又は床面法線方向成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることが好ましい（第２８発明）。
【００８５】
これによれば、前記制限対象量を許容範囲に収めるための目標運動の補正量を適正に決定できる。
【００８６】
この第２８発明では、前記摂動運動は、該ロボットの重心位置を略一定に維持する摂動運動であることが好適である（第２９発明）。
【００８７】
これによれば、摂動モデルによる目標運動の補正を、ロボットの並進床反力に影響を及ぼすことなく行なうことができる。
【００８８】
さらに上記第２８および第２９発明では、前記摂動運動は、ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の摂動運動であることが好ましい（第３０発明）。
【００８９】
これによれば、目標運動の補正量の算出処理が容易になる。
【００９０】
また、本発明の脚式移動ロボットの制御装置の第３１発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状状態との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも前記目標床反力の仮瞬時値を前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の仮瞬時値を逐次求める第１モデル演算手段と、
前記ロボットの運動と該運動に釣り合う床反力モーメントの鉛直成分又は床面法線方向成分との関係を表す第２動力学モデルに、少なくとも前記目標運動の仮瞬時値を入力して、該第２動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分を求め、前記求めた鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値を決定する第２モデル演算手段と、
少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように目標床反力の床反力モーメント補正量を求め、その求めた床反力モーメント補正量を前記第１動力学モデルに追加的に入力する第１モデル入力補正手段とを備え、
少なくとも前記第２動力学モデルの入力に基づいて前記目標運動の瞬時値を決定することを特徴とする。
【００９１】
かかる第３１発明によれば、少なくとも前記目標運動の仮瞬時値を前記第２動力学モデルに入力することで、該第２動力学モデルの出力としての床反力モーメントの鉛直成分又は床面法線方向成分が求められ、これと、前記補償床反力モーメントとから所定の演算（例えば足し算）によって前記制限対象量の仮瞬時値であるモデル制限対象量瞬時値（これは前記動力学モデル上で目標運動が発生する床反力モーメントに補償床反力モーメントを付加した場合の制限対象量の瞬時値に相当する）が決定される。そして、少なくとも該モデル制限対象量瞬時値を前記許容範囲に収めるように目標床反力の床反力モーメント補正量を求め、その求めた床反力モーメント補正量を前記第１動力学モデルに追加的に入力するので、少なくとも第２動力学モデルの入力に基づいて、前記制限対象量を許容範囲に収め得るような目標運動の瞬時値が得られることとなる。
【００９２】
このため、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
【００９３】
なお、前記第２動力学モデルは、基本的には第１動力学モデルよりも近似精度の高いものを用いることが好適である。
【００９４】
かかる第３１発明では、前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えることを好ましい（第３２発明）
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
【００９５】
上記第３１発明および第３２発明では、例えば前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定することが好ましい（第３３発明）。
【００９６】
この第３３発明によれば、まず、少なくとも前記目標床反力の床反力モーメント補正量を０と仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と前記制限済制限対象量との差に基づき、床反力モーメン補正量を決定する。補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無いようにすることを可能とする適切な床反力モーメント補正量を決定できる。
【００９７】
また、上記第３１発明および第３２発明では、より好ましくは、前記目標床反力の床反力モーメント補正量の要求値を決定する手段を備え、前記第１モデル入力補正手段は、少なくとも前記目標床反力の床反力モーメント補正量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメン補正量を決定する（第３４発明）。
【００９８】
この第３４発明によれば、まず、目標床反力の床反力モーメント補正量を前記要求値に一致させたと仮定した場合、すなわち、第１動力学モデルに該要求値のみを追加入力したと仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき決定した制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値と上記要求値との和をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、床反力モーメント補正量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無く、且つ、前記要求値にできるだけ近づくような適切な床反力モーメント補正量を決定できる。
【００９９】
また、上記第３１〜第３４発明では、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき前記目標運動の補正量を求め、その求めた補正量を前記第２動力学モデルに追加的に入力する第２モデル入力補正手段を備えるようにしてもよい（第３５発明）。
【０１００】
これによれば、第１動力学モデルの安定性を高めつつ、制限対象量を許容範囲により適切に収めるための目標運動の瞬時値を第２動力学モデルに入力させるようにすることができる。
【０１０１】
この第３５発明では、前記ロボットの摂動運動と制限対象量摂動分との関係を表す摂動モデルと、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲とに基づき床反力モーメントの操作量を決定する手段と、その決定した床反力モーメントの操作量を、前記第１動力学モデルに入力する前記目標床反力の床反力モーメント補正量と前記摂動モデルに入力する摂動モデル操作量とに分配する分配手段とを備え、前記第２モデル入力補正手段は、前記摂動モデル操作量を前記摂動モデルに入力することにより前記目標運動の補正量を求めることが好ましい（第３６発明）。
【０１０２】
これによれば、前記床反力モーメントの操作量を第１動力学モデルの入力する床反力モーメント補正量と摂動モデルに入力する摂動モデル操作量とに分配するので、第１動力学モデルと摂動モデルとのそれぞれの特性に適した入力をそれぞれのモデルに入力することができる。そのため、第１動力学モデルや摂動モデルが不安定になるのを防止しつつ、制限対象量を許容範囲に収め得る目標運動の瞬時値を適切に決定できる。また、摂動モデルを用いることで、第２動力学モデルに追加的に入力する目標運動の補正量の算出処理が容易になる。
【０１０３】
なお、第１動力学モデルに入力する床反力モーメント補正量は床反力モーメントの操作量のうちの低周波成分（直流成分）であることが望ましく、摂動モデルに入力する摂動モデル操作量は、床反力モーメントの操作量のうちの高周波成分であることが望ましい。
【０１０４】
この第３６発明では、少なくとも前記摂動モデルの状態量に応じて前記床反力モーメントの操作量の要求値を決定する手段を備え、前記床反力モーメントの操作量を決定する手段は、少なくとも前記決定したモデル制限対象量瞬時値と前記許容範囲と前記要求値とに基づき前記分配手段に与える床反力モーメントの操作量を決定することが好ましい（第３７発明）。
【０１０５】
この第３７発明によれば、前記補償床反力モーメントを加味したモデル制限対象量瞬時値と許容範囲だけでなく、摂動モデルの状態量（摂動モデルの要素としての回転体の回転角やその角速度など）を考慮して、分配手段に入力する床反力モーメントの操作量が決定されるので、摂動モデルの状態量が前記要求値に対応する状態量からかけ離れないようにして、該摂動モデルによって求められる目標運動の補正量が不適切なものとなるのを防止できる。
【０１０６】
この第３７発明では、前記床反力モーメントの操作量の要求値を決定する手段は、前記摂動モデルの状態量と該状態量に対する目標値との偏差に応じたフィードバック制御則により前記要求値を逐次決定することが好適である（第３８発明）。
【０１０７】
この第３８発明によれば、摂動モデルの状態量がある目標状態量の近傍に概ね維持されるように床反力モーメントの操作量、ひいては摂動モデル操作量が決定される。これにより、この摂動モデルによって決定される目標運動の補正量を、摂動モデルの状態を安定に保ちつつ、制限対象量を許容範囲に収める上で好適なものにすることができる。
【０１０８】
また、上記の如く摂動モデルを備える第３６〜３８発明では、前記摂動モデルは、ロボットの角運動量変化率の鉛直軸回り又は床面法線軸回りの成分を摂動させる摂動運動と前記制限対象量摂動分との関係を表すモデルであることが好ましい（第３９発明）。
【０１０９】
これによれば、前記制限対象量を許容範囲に収めるための目標運動の補正量を適正に決定できる。
【０１１０】
この第３９発明では、前記摂動運動は、ロボットの重心位置を略一定に維持する摂動運動であることが好適である（第４０発明）。
【０１１１】
これによれば、摂動モデルによる目標運動の補正を、ロボットの並進床反力に影響を及ぼすことなく行なうことができる。
【０１１２】
さらに、上記第３９および第４０発明では、前記摂動運動は、ロボットの上体と該上体から延設された腕体とのうちの少なくともいずれか一方の摂動運動であることが好ましい（第４１発明）。
【０１１３】
これによれば、目標運動の補正量の算出処理が容易になる。
【０１１４】
また、前記第３６〜第４１発明では、例えば前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を０と仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値に基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定する（第４２発明）。
【０１１５】
この第４２発明によれば、まず、摂動モデル操作量を０と仮定した場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差に基づき、床反力モーメントの操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無いようにすることを可能とする床反力モーメントの操作量を決定できる。
【０１１６】
また、特に前記第３７〜第４１発明において、摂動モデル操作量の要求値を決定する場合には、前記床反力モーメントの操作量を決定する手段は、前記摂動モデル操作量を前記要求値に一致させたと仮定した場合の前記制限対象量の推定値を少なくとも前記決定したモデル制限対象量瞬時値と前記要求値とに基づいて決定する手段と、その決定した推定値を前記許容範囲と比較し、その比較に基づき該許容範囲に制限してなる制限済制限対象量を決定する手段とを備え、少なくとも前記決定したモデル制限対象量瞬時値と前記制限済制限対象量との差に基づき前記床反力モーメントの操作量を決定することが好ましい（第４３発明）。
【０１１７】
これによれば、まず、摂動モデル操作量を前記要求値に一致させたと仮定した場合、すなわち、該要求値のみを摂動モデルに入力したとした場合の制限対象量の推定値を求め、この推定値と許容範囲との比較に基づき決定した制限済制限対象量を決定する。なお、この場合、例えばモデル制限対象量瞬時値と上記要求値との和をそのまま制限対象量の推定値としてもよいが、ジャイロ効果を考慮して、制限対象量の推定値を決定するようにしてもよい。また、制限済制限対象量は、前記許容範囲内でできるだけ制限対象量の推定値に近い値に決定することが好ましい。そして、少なくとも前記モデル制限対象量瞬時値と制限済制限対象量との差、すなわち、モデル制限対象量瞬時値のうちの許容範囲を逸脱する分に基づき、床反力モーメントの操作量を決定する。これにより、補償床反力モーメントを付加的に発生させても、制限対象量が許容範囲を超えることが無く、且つ摂動モデルの安定性も確保し得る床反力モーメントの操作量を適切に決定できる。
【０１１８】
また、本発明の脚式移動ロボットの制御装置の第４４発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従させるように該ロボットの動作を制御する制御装置において、
少なくとも鉛直軸回り又は床面法線軸回りのロボットの姿勢に関する目標状態量と該ロボットの実状態量との偏差に応じて、該偏差を０に近づけるための付加的な床反力モーメントである補償床反力モーメントを決定する手段と、
前記目標歩容に追従して動作しているロボットに作用させるべき床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分を制限対象量として、該制限対象量の許容範囲を設定する許容範囲設定手段と、
前記目標歩容を構成する目標運動及び目標床反力のうちの少なくとも目標床反力の仮瞬時値を逐次決定する目標床反力仮瞬時値決定手段と、
少なくとも該目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第１動力学モデルに入力し、該第１動力学モデルの出力としての目標運動の第１仮瞬時値を求める第１モデル演算手段と、
目標運動の第２仮瞬時値を決定する手段であって、その決定する第２仮瞬時値にロボットの運動と床反力との関係を表す第２動力学モデル上で釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算により求まる制限対象量瞬時値が前記許容範囲に収まるように、少なくとも前記目標床反力の仮瞬時値に基づき、該目標運動の第２仮瞬時値を決定する制限付き第２モデル演算手段と、
少なくとも前記目標運動の第１仮瞬時値と第２仮瞬時値との差に基づいて、該差が０に近づくように床反力モーメントの操作量を求める操作量算出手段と、
該床反力モーメントの操作量を前記第１動力学モデル及び第２動力学モデルのうちの少なくともいずれか一方に追加的に入力するモデル入力補正手段とを備え、
前記目標運動の第２仮瞬時値を該目標運動の目標瞬時値として決定することを特徴とする。
【０１１９】
この第４４発明によれば、目標床反力の仮瞬時値が第１動力学モデルに入力されて、目標運動の第１仮瞬時値が求められる一方、目標床反力の仮瞬時値が第２動力学モデルにも入力され、この第２動力学モデルを用いて目標運動の第２仮瞬時値が求められる。但し、この場合、目標運動の第２仮瞬時値に第２動力学モデル上で釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから所定の演算により求まる制限対象量瞬時値が前記許容範囲に収まるように該目標運動の第２仮瞬時値が決定される。そして、少なくとも前記目標運動の第１仮瞬時値と第２仮瞬時値との差に基づいて、該差が零に近づくように床反力モーメントの操作量が求められ、これが第１動力学モデル及び第２動力学モデルのうちの少なくともいずれか一方に追加的に入力される。さらに、目標運動の第２仮瞬時値が該目標運動の目標瞬時値として決定される。
【０１２０】
このため、制限付き第２モデル演算手段が求める目標運動の第２仮瞬時値は、前記制限対象量を許容範囲に収めつつ、安定性の高いものとなる。その結果、ロボットのヨー方向の姿勢状態量を目標状態量（目標運動におけるヨー方向の姿勢状態量）に近づけるための補償床反力モーメントを付加的に発生させるようにしても、実際のロボットに作用する床反力モーメント鉛直成分等の制限対象量を許容範囲内に収めることができるような目標運動を生成できる。つまり、摩擦力モーメント鉛直成分の限界と前記偏差を考慮して、目標運動の瞬時値が決定される。それにより、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することを可能とするロボットの目標運動を決定することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるの防止することを可能とする目標運動を決定することができる。また、制限対象量が許容範囲に収まる限り、該制限対象量を常に０もしくはほぼ０にする必要がないことから、ロボットのある部位の運動が過剰に激しい運動となったりするのを防止できる。
【０１２１】
なお、第１動力学モデルは比較的動力学的な近似精度の低いものでよく、また、第２動力学モデルは、第１動力学モデルよりも動力学的な近似精度が高いものであることが望ましい。
【０１２２】
かかる第４４発明では、前記目標運動の第１仮瞬時値と第２仮瞬時値との差は、前記ロボットの所定の部位の姿勢の、鉛直軸回り又は床面法線軸回りの状態量の差を含むことが好ましい（第４５発明）。
【０１２３】
これによれば、前記所定の部位（例えば上体）のヨー方向の姿勢状態量の安定性を好適に高めることができる。
【０１２４】
また、上記第４４および第４５発明では、前記目標運動の瞬時値に前記第２動力学モデル上で略釣り合う床反力モーメントの鉛直成分又は床面法線方向成分と前記補償床反力モーメントとから前記所定の演算によって決定される制限対象量瞬時値に対応する床反力モーメント瞬時値を、前記目標歩容を構成する目標床反力の床反力モーメント瞬時値として決定する手段を備えることが好ましい（第４６発明）。
【０１２５】
これによれば、ロボットのヨー方向の姿勢状態量を目標運動の姿勢状態量に安定に保ちつつ、ロボットのスピンおよびそれに起因する転倒を防止することができる。また、ロボットの移動軌道が目標歩容の軌道からずれたり、ロボットのヨー方向の姿勢の継続的な安定性が損なわれるのを防止できる。
【０１２６】
上述のような第４４発明は、例えば前記第３４発明の構成を用いることで、容易に実現できる。すなわち、前記第３４発明において、少なくとも前記目標床反力の仮瞬時値を、前記ロボットの運動と床反力との関係を表す第３動力学モデルに入力し、該第３動力学モデルの出力としての目標運動の第３仮瞬時値を求める第３モデル演算手段を備え、前記目標床反力の床反力モーメント補正量の要求値を決定する手段は、前記決定した前記目標運動の目標瞬時値と前記目標運動の第３仮瞬時値との差に基づいて、該差が０に近づくように前記要求値を決定する（第４７発明）。
【０１２７】
かかる第４７発明では、上記第３動力学モデルおよび第３モデル演算手段がそれぞれ第４４発明における第１動力学モデル、第１モデル演算手段に相当するものとなる。従って、第４７発明は、第４４発明と同等のものとなり、第４４発明と同様の効果を奏することができる。
【０１２８】
また、以上説明した第２０〜第４７発明では、前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段を備え、前記許容範囲設定手段は、該滑り判断手段の判断結果に応じて前記許容範囲を可変的に設定することが好ましい（第４８発明）。
【０１２９】
この第４８発明によれば、実際のロボットの滑りの発生の判断結果に応じて制限対象量の許容範囲を可変的に設定するので、ロボットの滑りの発生を確実に抑制できる。なお、滑りの発生が有ると判断されたときには、許容範囲は、それを狭めるように設定されるべきである。
【０１３０】
また、この第４８発明では、例えば、前記第１７〜第１９発明と同様に、滑りの発生を判断することができる。
【０１３１】
すなわち、前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断する（第４９発明）。
【０１３２】
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断する（第５０発明）。
【０１３３】
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断する（第５１発明）。
【０１３４】
これらの第４９〜第５１発明によれば、それぞれ前記第１７〜第１９発明と同様に滑りの発生を判断できる。
【０１３５】
なお、滑りの発生の判断は、第４９〜第５１発明のいずれでも行なうことができるが、これらの第４９〜第５１発明の２つ以上を組み合わせて滑りの発生の判断を行なうようにしてもよい。
【発明を実施するための最良の形態】
【０１３６】
以下、添付図面を参照してこの発明の実施形態に係る脚式移動ロボットの制御装置を説明する。尚、脚式移動ロボットとしては２足移動ロボットを例にとる。
【０１３７】
まず、図１〜図４７を参照して、本発明の脚式移動ロボットの制御装置に関連する参考例を説明しておく。後述する本発明の実施形態は、その機構的構成はこの参考例と同一であり、また、ロボットの歩容生成処理および制御処理の一部のみが当該参考例と相違するものである。従って、後述する実施形態の説明では、この参考例の説明をしばしば援用する。補足すると、図１と後述の図２、図３並びに図５〜図１２を参照して説明する事項は、後述の実施形態においても同一である。
【０１３８】
図１は、この参考例に係る脚式移動ロボットとしての２足移動ロボットを全体的に示す概略図である。
【０１３９】
図示の如く、２足移動ロボット（以下、ロボットという）１は上体(ロボット１の基体）３から下方に延設された左右一対の脚体（脚部リンク）２，２を備える。両脚体２，２は同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体３側から順に、股（腰部）の回旋（回転）用（上体３に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌ（符号Ｒ，Ｌはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ）と、股（腰部）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、股（腰部）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌと、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。
【０１４０】
各脚体２の足首の２つの関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部には、各脚体２の先端部を構成する足平（足部）２２Ｒ（Ｌ）が取着されると共に、両脚体２，２の最上位には、各脚体２の股の３つの関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して前記上体３が取り付けられている。上体３の内部には、詳細を後述する制御ユニット６０などが格納される。なお、図１では図示の便宜上、制御ユニット６０を上体３の外部に記載している。
【０１４１】
上記構成の各脚体２においては、股関節（あるいは腰関節）は関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）から構成され、膝関節は関節１６Ｒ（Ｌ）から構成され、足首関節は関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）から構成される。また股関節と膝関節とは大腿リンク２４Ｒ（Ｌ）で連結され、膝関節と足首関節とは下腿リンク２６Ｒ（Ｌ）で連結される。
【０１４２】
上体３の上部の両側部には左右一対の腕体５，５が取り付けられると共に、上体３の上端部には頭部４が配置される。各腕体５は、３つの関節３０Ｒ（Ｌ），３２Ｒ（Ｌ），３４Ｒ（Ｌ）から構成された肩関節と、関節３６Ｒ（Ｌ）から構成された肘関節と、関節３８Ｒ（Ｌ）から構成された手首関節と、この手首関節に連結された手先部４０Ｒ（Ｌ）とを備えている。なお、頭部４は、本発明の要旨と直接的な関連を有しないため詳細な説明を省略する。
【０１４３】
上記の構成により、各脚体２の足平２２Ｒ（Ｌ）は、上体３に対して６つの自由度を与えられている。そして、ロボット１の歩行等の移動中に、両脚体２，２を合わせて６＊２＝１２個（この明細書で「＊」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す）の関節を適宜な角度で駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行うことができる。これにより、ロボット１は任意に３次元空間を移動することができる。また、各腕体５は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。
【０１４４】
図１に示す如く、各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下方には足平２２Ｒ（Ｌ）との間に公知の６軸力センサ５０が介装されている。該６軸力センサ５０は、各脚体２の足平２２Ｒ（Ｌ）の着地の有無、および各脚体２に作用する床反力（接地荷重）等を検出するためのものであり、該床反力の並進力の３方向成分Ｆｘ，Ｆｙ，Ｆｚ並びにモーメントの３方向成分Ｍｘ，Ｍｙ，Ｍｚの検出信号を制御ユニット６０に出力する。また、上体３には、Ｚ軸（鉛直方向（重力方向））に対する上体３の傾斜角およびその角速度、並びにＺ軸回りの上体３の回転角（ヨー角）およびその角速度を検出するための姿勢センサ５４が備えられ、その検出信号が該姿勢センサ５４から制御ユニット６０に出力される。この姿勢センサ５４は、図示を省略する３軸方向の加速度センサおよび３軸方向のジャイロセンサを備え、これらのセンサの検出信号が上体３の姿勢角（傾斜角およびヨー角）およびその角速度を検出するために用いられると共に、ロボット１の自己位置姿勢を推定するために用いられる。また、詳細構造の図示は省略するが、ロボット１の各関節には、それを駆動するための電動モータ６４（図３参照）と、その電動モータ６４の回転量（各関節の回転角）を検出するためのエンコーダ（ロータリエンコーダ）６５（図３参照）とが設けられ、該エンコーダ６５の検出信号が該エンコーダ６５から制御ユニット６０に出力される。
【０１４５】
さらに、図１では図示を省略するが、ロボット１の適宜な位置にはジョイスティック（操作器）７３（図３参照）が設けられ、そのジョイスティック７３を操作することで、直進移動しているロボット１を旋回させるなど、ロボット１の歩容に対する要求を必要に応じて制御ユニット６０に入力できるように構成されている。
【０１４６】
図２は本参考例における各脚体２の先端部分（各足平２２Ｒ（Ｌ）を含む）の基本構成を概略的に示す図である。同図に示すように、各足平２２Ｒ（Ｌ）の上方には、前記６軸力センサ５０との間にばね機構７０が装備されると共に、足底（各足平２２Ｒ（Ｌ）の底面）にはゴムなどからなる足底弾性体７１が貼られている。これらのばね機構７０及び足底弾性体７１によりコンプライアンス機構７２が構成されている。ばね機構７０は詳細は後述するが、足平２２Ｒ（Ｌ）の上面部に取り付けられた方形状のガイド部材（図示省略）と、足首関節１８Ｒ（Ｌ）（図２では足首関節２０Ｒ（Ｌ）を省略している）および６軸力センサ５０側に取り付けられ、前記ガイド部材に弾性材（ゴムやばね）を介して微動自在に収納されるピストン状部材（図示省略）とから構成されている。
【０１４７】
図２に実線で表示された足平２２Ｒ（Ｌ）は、床反力を受けていないときの状態を示している。各脚体２が床反力を受けると、コンプライアンス機構７２のばね機構７０と足底弾性体７１とがたわみ、足平２２Ｒ（Ｌ）は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構７２の構造は、例えば本出願人が先に提案した特開平５−３０５５８４号公報に詳細に説明されている如く、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。
【０１４８】
図３は制御ユニット６０の構成を示すブロック図である。該制御ユニット６０はマイクロコンピュータにより構成されており、ＣＰＵからなる第１の演算装置９０及び第２の演算装置９２、Ａ／Ｄ変換器８０、カウンタ８６、Ｄ／Ａ変換器９６、ＲＡＭ８４、ＲＯＭ９４、並びにこれらの間のデータ授受を行うバスライン８２を備えている。この制御ユニット６０では、各脚体２の６軸力センサ５０、姿勢センサ５４（加速度センサおよびレートジャイロセンサ）、ジョイスティック７３等の出力信号はＡ／Ｄ変換器８０でデジタル値に変換された後、バスライン８２を介してＲＡＭ８４に送られる。またロボット１の各関節のエンコーダ６５（ロータリーエンコーダ）の出力は、カウンタ８６を介してＲＡＭ８４に入力される。
【０１４９】
前記第１の演算装置９０は後述の如く目標歩容を生成すると共に、関節角変位指令（各関節の変位角もしくは各電動モータ６４の回転角の指令値）を算出し、ＲＡＭ８４に送出する。また第２の演算装置９２はＲＡＭ８４から関節角変位指令と、前記エンコーダ６５の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してＤ／Ａ変換器９６とサーボアンプ６４ａとを介して各関節を駆動する電動モータ６４に出力する。
【０１５０】
図４は、この参考例に係る脚式移動ロボットの制御装置の機能的構成を全体的に示すブロック図である。この図４中の「実ロボット」の部分以外の部分が制御ユニット６０が実行する処理機能（主として第１の演算装置９０及び第２の演算装置９２の機能）によって構成されるものである。なお、以下の説明では、脚体２および腕体５の左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。
【０１５１】
以下説明すると、制御ユニット６０は、ロボット１の目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置１００を備えている。該歩容生成装置１００は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置１００が出力する目標歩容は、目標上体位置姿勢軌道（上体３の目標位置及び目標姿勢の軌道）、目標足平位置姿勢軌道（各足平２２の目標位置及び目標姿勢の軌道）、目標腕姿勢軌道（各腕体５の目標姿勢の軌道）、目標全床反力中心点（目標ＺＭＰ）軌道、目標全床反力軌道から構成される。なお、脚体２や腕体５以外に上体３に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
【０１５２】
ここで、上記歩容における「軌道」は時間的変化のパターン（時系列パターン）を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はＺ軸（鉛直軸）に対するロール方向（Ｘ軸まわり）の上体３の傾斜角とピッチ方向（Ｙ軸まわり）の上体３の傾斜角とヨー方向（Ｚ軸まわり）の上体３の回転角（ヨー角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。また、上体姿勢のうち、鉛直方向に対する姿勢を上体姿勢傾斜もしくは上体姿勢傾斜角ということもある。
【０１５３】
尚、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット１の運動に係わる歩容を総称的に「運動」という。また、各足平２２に作用する床反力（並進力及びモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
【０１５４】
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点（全床反力の中心点の目標位置）を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分（鉛直軸（Ｚ軸）まわりのモーメント）を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分（水平軸（Ｘ軸及びＹ軸）回りのモーメント）は零になる。
【０１５５】
尚、動力学的平衡条件を満足する歩容では、ロボット１の目標運動軌道から算出されるＺＭＰ（目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点）と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ＺＭＰ軌道を与えると言っても同じことである（詳細は、本願出願人によるＰＣＴ公開公報WO／02／40224等を参照）。
【０１５６】
このような背景から、上記ＰＣＴ公開公報WO／02／40224の明細書では目標歩容を、次のように定義していた。
ａ）広義の目標歩容とは、１歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
ｂ）狭義の目標歩容とは、１歩の期間の目標運動軌道とそのＺＭＰ軌道との組である。
ｃ)一連の歩容は、いくつかの歩容がつながったものとする。
【０１５７】
歩行においては、本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法によってロボット１の上体３の鉛直位置（上体高さ）が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が零になるようにロボット１の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、ＰＣＴ公開公報WO／02／40224の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ＺＭＰだけで十分であった。したがって、狭義の目標歩容の定義としては、上記のｂ）で十分であった。それに対し、本参考例で説明するロボット１の走行歩容（詳細は後述する）においては、床反力鉛直成分（並進床反力鉛直成分）も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット１の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のｂ’）を用いる。
ｂ’）狭義の目標歩容とは、１歩の期間の目標運動軌道と、その目標ＺＭＰ軌道と目標並進床反力鉛直成分軌道とを少なくとも含む目標床反力軌道との組である。
【０１５８】
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は上記ｂ’）の狭義の目標歩容の意味で使用する。この場合、目標歩容の「１歩」は、ロボット１の片方の脚体２が着地してからもう一方の脚体２が着地するまでの意味で使用する。補足すると、本明細書の参考例および実施形態では、目標歩容は１歩の期間分の歩容の意味で使用するが、それは必ずしも１歩の期間分のものである必要はなく、複数歩分、あるいは１歩よりも短い（例えば半歩など）の期間分の歩容であってもよい。尚、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分（鉛直軸回り成分）は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
【０１５９】
また、歩容における両脚支持期とは言うまでもなく、ロボット１がその自重を両脚体２，２で支持する期間、片脚支持期とはいずれか一方のみの脚体２でロボット１の自重を支持する期間、空中期とは両脚体２，２が床から離れている（空中に浮いている）期間を言う。片脚支持期においてロボット１の自重を支持しない側の脚体２を「遊脚」と呼ぶ。尚、本参考例で説明する走行歩容では、両脚支持期は無く、片脚支持期（着地期）と空中期とが交互に繰り返される。この場合、空中期では両脚体２，２とも、ロボット１の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体２、支持脚であった脚体２をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
【０１６０】
図５に示す走行歩容を例にして、歩容生成装置１００が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平１０−８６０８１号公報にも記載されているので、以下では、特開平１０−８６０８１号公報に記載されていない内容を主に説明する。
【０１６１】
まず、図５に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット１の左右いずれか一方のみの脚体２（支持脚）の足平２２が着地（接地）する片脚支持期と、両脚体２，２が空中に浮く空中期とが交互に繰り返される。図５の１番目の状態は片脚支持期の開始時（初期）の状態、２番目の状態は片脚支持期の中間時点の状態、３番目の状態は片脚支持期に続く空中期の開始時（片脚支持期の終了時）の状態、４番目の状態は空中期の中間時点の状態、５番目の状態は空中期の終了時（次の片脚支持期の開始時）の状態を示している。
【０１６２】
この走行歩容では、ロボット１は、図５の１番目の状態で示すように、片脚支持期の開始時において支持脚（ロボット１の進行方向前側の脚体２）側の足平２２のかかとで着地する。続いて、図５の２番目の状態で示すように、ロボット１は、着地した足平２２（支持脚側の足平２２）の底面のほぼ全面を着地させた後、図５の３番目の状態で示すように、その支持脚側の足平２２（図５の３番目の状態におけるロボット１の進行方向後側の脚体２の足平２２）のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了すると共に空中期が開始する。尚、片脚支持期における遊脚は、図５の１番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図５の２番目及び３番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図５の４番目の状態で示す空中期を経た後、ロボット１は、遊脚（空中期の開始直前の片脚支持期で遊脚となっていた脚体２）の足平２２のかかとで着地し、次の片脚支持期が開始される。
【０１６３】
図５の走行歩容を考慮しつつ、前記歩容生成装置１００が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置１００が目標歩容を生成するとき、遊脚側の足平２２の着地位置姿勢（着地予定位置姿勢）や着地時刻（着地予定時刻）等の目標歩容生成用の基本的な要求値（要求パラメータ）が、前記ジョイスティック７３の所要の操作等に応じて歩容生成装置１００に与えられる。そして、歩容生成装置１００は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置１００は、上記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ（歩容パラメータという）を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。
【０１６４】
この場合、目標足平位置姿勢軌道（より詳しくは、足平の位置及び姿勢の空間的な各成分（Ｘ軸成分等）の目標軌道）は、例えば本出願人が特許第３２３３４５０号にて提案した有限時間整定フィルタを用いて各足平２２毎に生成される。この有限時間整定フィルタは、可変時定数の１次遅れフィルタ、すなわち、伝達関数が１／（１＋τｓ）の形で表されるフィルタ（τは可変の時定数。以下、このフィルタを単位フィルタという）を複数段（本参考例では３段以上）、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値（＞０）から減少されていき、最終的には、該残時間が０になる指定時刻にて、τの値が０になるように設定される。そして、有限時間整定フィルタには、前記指定値（より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量）に応じた高さのステップ入力が与えられる。このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を０もしくはほぼ０にすることができる。特に、単位フィルタを３段以上（３段でよい）、接続した場合には、有限時間整定フィルタの出力の変化加速度（変化速度の微分値）をも０もしくはほぼ０にすることができる。
【０１６５】
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平２２の目標位置姿勢軌道である。
【０１６６】
上述のように生成される目標足平位置姿勢軌道は、各足平２２の位置が、その初期接地状態（目標歩容の初期時刻の状態）から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を０またはほぼ０にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平２２の着地瞬間における対地速度（床に固定された支持脚座標系での各足平２２の位置の変化速度）が０またはほぼ０になる。したがって、走行歩容において同時に全脚体２，２が空中に存在する状態（空中期での状態）から着地しても、着地衝撃が小さくなる。
【０１６７】
前記走行歩容においては、ロボット１に作用する重力によって空中期後半から上体３の鉛直速度は下向きになり、着地時でも下向きのままである。したがって、上記のように各足平２２の着地瞬間における対地速度が０またはほぼ０になるように目標足平位置姿勢軌道を生成すると共に、後述する如く動力学的平衡条件を満たすように上体３の目標位置姿勢軌道を生成したとき、着地直前において、上体３に対する遊脚側の足平２２の相対速度は、上向きになる。すなわち、走行歩容の着地瞬間では、ロボット１の目標歩容は遊脚側の脚体２２を上体３側に引っ込めながら着地するような歩容となる。言い換えれば、本参考例での目標歩容では、ロボット１は、着地瞬間において、遊脚側の足平２２の対地速度が０またはほぼ０になるように、上体３から見て該足平２２を引き上げるようにして着地する。これによって、着地衝撃は小さくなり、着地衝撃が過大になるのを防止するようにしている。
【０１６８】
また、本参考例では、有限時間整定フィルタは、単位フィルタを３段以上（例えば３段）、直列に接続したものであるため、着地予定時刻までに各足平２２の速度（足平位置の変化速度）が０またはほぼ０になるだけでなく、各足平２２は、その加速度も着地予定時刻にて０またはほぼ０になって停止する。つまり、着地瞬間における対地加速度も０またはほぼ０になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット１の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、着地予定時刻にて各足平２２の対地速度を０またはほぼ０にする上では、有限時間整定フィルタの単位フィルタの段数は２段でもよいが、この場合には、着地予定時刻での各足平２２の加速度は一般には０にならない。
【０１６９】
尚、足平姿勢に関しては、各足平２２が着地予定時刻にてその踵で着地した後、該足平２２の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平２２の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
【０１７０】
また、本参考例では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の変化速度（足平位置の時間微分値）が０またはほぼ０になるように、さらには、該着地予定時刻での足平位置の変化加速度（変化速度の時間微分値）が０またはほぼ０になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平２２の底面のほぼ全面が床に設置する時刻にて、各足平２２の姿勢の変化速度、さらにはその変化加速度が０またはほぼ０になるように多項式などの関数が設定される。
【０１７１】
目標床反力鉛直成分軌道は、例えば図６のように設定される。本参考例では、走行歩容における目標床反力鉛直成分軌道の形状（詳しくは片脚支持期での形状）は、台形状（床反力鉛直成分の増加側に凸の形状）に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ（床反力鉛直成分軌道パラメータ）が決定される。尚、走行歩容の空中期では、目標床反力鉛直成分は定常的に０に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように（値が不連続にならないように）設定するのが良い。これは床反力を制御する際のロボット１の関節の動作を滑らかにするためである。尚、「実質的に連続」というのは、アナログ的に連続な軌道（真の意味での連続な軌道）を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。
【０１７２】
目標ＺＭＰ軌道は次のように設定される。図５の走行歩容においては、前記したように支持脚側足平２２のかかとで着地し、次にその支持脚側足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚側足平２２のかかとで着地する。したがって、片脚支持期での目標ＺＭＰ軌道は、図７の上段図に示すように、支持脚側足平２２のかかとを初期位置として、次に支持脚側足平２２の底面のほぼ全面が接地する期間において該足平２２の前後方向の中央に移動し、その後、離床時までに支持脚側足平２２のつまさきに移動するように設定される。ここで、図７の上段図は、Ｘ軸方向（前後方向）の目標ＺＭＰ軌道を示すものであり、図７の下段図はＹ軸方向（左右方向）の目標ＺＭＰ軌道を示すものである。尚、片脚支持期におけるＹ軸方向の目標ＺＭＰ軌道は、図７の下段図に示すように、Ｙ軸方向での支持脚側脚体２の足首関節の中心位置と同じ位置に設定される。
【０１７３】
走行歩容では、さらに片脚支持期の終了後、両脚体２，２が床から離れ、床反力鉛直成分が０になる。床反力鉛直成分が０の時、すなわち空中期には、ロボット１の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット１に作用する重力と慣性力との合力のモーメントは０であるので、目標ＺＭＰは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が０である作用点」というＺＭＰの条件を満たす。言いかえれば、任意の点に目標ＺＭＰを設定しても、上記合力が目標ＺＭＰ回りに作用するモーメントの水平成分が０であるという動力学的平衡条件を満足する。したがって、目標ＺＭＰを不連続に設定しても構わない。例えば、空中期では、目標ＺＭＰを、離床時（片脚支持期の終了時）の目標ＺＭＰ位置から移動しないように設定し、空中期終端において、着地時の目標ＺＭＰ位置に不連続（ステップ状）に移動するように該目標ＺＭＰ軌道を設定しても構わない。しかし本参考例では、図７の上段図に示すように、空中期における目標ＺＭＰ軌道のＸ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側足平２２のつまさきから遊脚側足平２２のかかとの着地位置まで連続的に移動するようにした。また、図７の下段図に示すように、空中期における目標ＺＭＰ軌道のＹ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側脚体２の足首関節の中心のＹ軸方向位置から遊脚側脚体２の足首関節の中心のＹ軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ＺＭＰ軌道を連続（実質的に連続）にした。そして、後述するように、目標ＺＭＰまわりの重力と慣性力との合力のモーメント（鉛直成分を除く）が零になるように目標歩容を生成する（より具体的には目標上体位置姿勢軌道を調整する）ようにした。モデルの近似誤差を考慮すると、生成された歩容が滑らかになるようにするために、空中期においても目標ＺＭＰ軌道を連続（実質的に連続）にしておくのが望ましい。但し、本参考例で用いる後述の動力学モデルでは、目標ＺＭＰの位置によらずに、目標ＺＭＰ回りのモーメントの水平成分をある値（その値は本参考例では０であるが、後述の実施形態では必ずしも０ではない）にするような目標歩容を一義的に生成できるので、必ずしも目標ＺＭＰを連続にしておく必要はない。
【０１７４】
尚、本参考例では、図７に示したような目標ＺＭＰ軌道の折れ点の位置や時刻が、ＺＭＰ軌道パラメータ（目標ＺＭＰ軌道を規定するパラメータ）として設定される。また、上記したＺＭＰ軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。
【０１７５】
ＺＭＰ軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット１の接地面を含む最小の凸多角形（いわゆる支持多角形）の中央付近に目標ＺＭＰが存在する状態を安定余裕が高いと言う（詳細は特開平１０−８６０８１号公報を参照）。図７の目標ＺＭＰ軌道はこのような条件を満たすように設定したものである。
【０１７６】
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。
【０１７７】
本参考例では、歩容生成装置１００は、目標上体姿勢だけでなく、基準上体姿勢も生成する。この基準上体姿勢は、歩容に対する要求（歩容生成装置１００に対する行動計画部などの装置または外部（前記ジョイスティック７３等）からの要求）にそのまま従って生成される上体姿勢である。
【０１７８】
目標上体姿勢（以降、「基準」が付いていない場合には、目標上体姿勢を表す）は、長期的には基準上体姿勢に追従するかまたは一致するように生成される。
【０１７９】
目標上体姿勢は、歩行においては、本願出願人によるＰＣＴ公開公報WO／02／40224の明細書に記載した実施形態のごとく通常、常に基準上体姿勢に一致させておけば良い。ＰＣＴ公開公報WO／02／40224では、基準上体姿勢という概念は記載されていないが、目標上体姿勢パターンを、明示的かつ優先的に与えていたので、基準上体姿勢に目標上体姿勢が常に一致していることと同じことである。
【０１８０】
しかし、走行など空中期がある歩容や低摩擦床面での歩行においては、単に上体水平加速度等を調整するだけでは、目標歩容の床反力水平成分と床反力モーメント鉛直成分とが許容範囲以内（あるいは摩擦限界以内）に存在するようにしつつ動力学的平衡条件を満足することができない。
【０１８１】
そこで、本参考例においては、目標上体姿勢を必要に応じて基準上体姿勢から故意にずらすこととした。より具体的には、以下に説明する運動モードを複合的に発生させることにより、目標歩容の床反力水平成分や床反力モーメント鉛直成分が許容範囲以内（あるいは摩擦限界以内）に存在しつつ動力学的平衡条件を満足させるようにした。
【０１８２】
図８のように、ロボット１のある運動状態から、上体水平加速度だけを摂動（微小変化）させると、ロボット１の全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生するロボット１の慣性力と重力との合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに（ロボット１の全体重心鉛直加速度を摂動させずに）、目標ＺＭＰまわりの床反力モーメント水平成分（水平軸まわり成分）と床反力水平成分とを摂動させる。このようにロボット１の上体水平加速度を摂動させる運動モードを上体並進モードと呼ぶ。
【０１８３】
言いかえると、床反力鉛直成分を変化させずに、目標ＺＭＰまわりの床反力モーメント水平成分と床反力水平成分とを変化させる運動を上体並進モードと呼ぶ。尚、上体並進モードでは、床反力モーメント鉛直成分（鉛直軸まわり成分）も摂動するが、ここではこの点に注目しない。
【０１８４】
この時の単位加速度当たりの床反力モーメント水平成分の変化をΔMｐ、単位加速度当たりの床反力水平成分の変化をΔFpとする。図８に示す状況で上体３を前方に水平加速すると、ΔMｐとΔFpは図８に示す矢印の向きに作用する。
【０１８５】
感覚的に判り易くするために、運動によって発生する慣性力と重力との合力に釣り合う床反力を用いて表現したが、慣性力と重力との合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力とは、互いに大きさが同じで向きが逆になっている。
【０１８６】
それに対し、図９のように、ロボット１のある運動状態から、ある点Pｒまわりに上体傾斜角加速度（上体３の傾斜角の角加速度）を摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量（鉛直軸まわり成分を除く）が摂動する。すなわち、点Pｒまわりの上体傾斜角加速度の摂動は、床反力鉛直成分と床反力水平成分とを摂動させずに、目標ＺＭＰまわりの床反力モーメント水平成分を摂動させる。このようにロボット１の上体傾斜角加速度を摂動させる運動モードを上体傾斜モードと呼ぶ。
【０１８７】
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ＺＭＰまわりの床反力モーメント水平成分を変化させる運動を上体傾斜モードと呼ぶ。
【０１８８】
この時の単位角加速度当たりの床反力モーメント水平成分の変化をΔMｒ、単位角加速度当たりの床反力水平成分の変化をΔFｒとする。ΔFｒは零である。図９に示す状況で上体３が前傾するように上体傾斜角の角加速度を発生させると、ΔMｒは図９に示す矢印の向きに作用する。
【０１８９】
また、図１０のように、ロボット１のある運動状態から、ある点Pqまわりに上体ヨー角加速度（上体３の鉛直軸まわりの回転角加速度）を摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。ところで、ロボット１の全体重心が摂動しなければ、角運動量鉛直成分の摂動は、作用点に依存しない。したがって、点Pqまわりの上体ヨー角加速度の摂動は、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ＺＭＰまわりの床反力モーメント鉛直成分を摂動させる。このようにロボット１の上体ヨー角加速度を摂動させる運動モードを上体ヨー回転モードと呼ぶ。
【０１９０】
言いかえると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を変化させずに、目標ＺＭＰまわりの床反力モーメント鉛直成分を変化させる上体運動を上体ヨー回転モードと呼ぶ。
【０１９１】
この時の単位角加速度当たりの床反力モーメント鉛直成分の変化をΔMbz、単位角加速度当たりの床反力水平成分の変化をΔFbとする。ΔFbは零である。図１０に示す状況で上体３を矢印の向きに単位角加速度で回転させる（角加速度βb=1で回転させる）と、ΔMbzは図１０に示す矢印の向きに作用する。
【０１９２】
尚、図１０に示す運動では、両腕体５，５の手先位置が支持脚座標系（床に固定された座標系）から見て変わらないように、上体３を回転させたが、上体３に対する腕体５の相対位置姿勢を変えずに、上体３と共に腕体５を回転させる運動を上体ヨー回転モードと定義しても良い。ただし、この場合には、後述する運動方程式に若干変更が必要である。
【０１９３】
また、図１１（ａ），（ｂ）のように、ロボット１のある運動状態から、両腕体５，５の先端を互いに前後に逆方向に摂動させると、ロボット１の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。以降、この運動モードを逆位相腕振りモードと呼ぶ。言い換えると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ＺＭＰまわりの床反力モーメント鉛直成分を摂動させる腕振り運動モードを逆位相腕振りモードと呼ぶ。
【０１９４】
右腕体５Ｒを前側に単位量移動させ、左腕体５Ｌを後ろに単位量移動させる動作を、単位角度の逆位相腕振りと呼ぶ。図１１（ａ），（ｂ）は、逆位相腕振り角度がθazの状態を表す。
【０１９５】
逆位相腕振りモードの単位角加速度当たりの床反力モーメント鉛直成分の変化をΔMaz、単位角加速度当たりの床反力水平成分の変化をΔFaとする。ΔFaは零である。図１１（ａ），（ｂ）に示す状況で右腕体５Ｒを前側に加速し、左腕体５Ｌを後ろ側に加速する（角加速度βa＞0で振る）と、図１１（ａ）に示す矢印の向き（鉛直軸の正の向き）に床反力モーメント鉛直成分Mazが作用する。
【０１９６】
次に、本参考例に用いられるロボット１の動力学モデルについて説明する。本参考例では単純化された（近似された）以下に示す動力学モデルを用いる。ただし、以下に示す動力学モデルに関しては、キネマティクスモデル（関節、リンクの構造や寸法を表すモデルであり、言い換えると、関節変位とリンクの位置姿勢との関係を表すモデルである。）も必要である。
【０１９７】
図１２は、本参考例に用いられるロボット１の動力学モデルである。図示の如く、この動力学モデルは、ロボット１の各脚体２にそれぞれ対応する２つの質点２ｍ，２ｍ、及び上体３に対応する質点３ｍからなる合計３質点と、イナーシャがあって質量のない４つのフライホイールＦＨx、ＦＨy、ＦＨbz、ＦＨazとから構成されるモデルである。フライホイールＦＨx、ＦＨy、ＦＨbz、ＦＨazは、それぞれＸ軸（前後方向軸）、Ｙ軸（左右方向軸）、Ｚ軸（鉛直軸）、Ｚ軸（鉛直軸）の回りに回転可能なものである。この動力学モデルでは、デカップルド、即ち、脚体２，２の動力学（各質点２ｍ，２ｍの動力学）と上体３の動力学（質点３ｍ及びフライホイールＦＨx、ＦＨyおよびＦＨbzの動力学）と腕体５，５の動力学（フライホイールＦＨazの動力学）とが相互に非干渉に構成されると共に、ロボット１全体の動力学は、それらの線形結合で表される。また、さらに、上体３の運動と床反力との関係も、上体３の並進運動（上体並進モード）と床反力との関係、上体３の傾斜運動（上体傾斜モード）と床反力との関係、上体３のヨー回転運動（上体ヨー回転モード）と床反力との関係、並びに両腕体５，５の逆位相腕振り運動（逆位相腕振りモード）と床反力との関係に分離される。具体的には、上体質点３ｍの水平運動によって発生する床反力は、上体３の水平方向並進運動（上体並進モード）によって発生する床反力に対応し、フライホイールＦＨxおよびＦＨyの回転運動によって発生する床反力は、上体３の傾斜角の回転運動（上体傾斜モード）によって発生する床反力に対応する。なお、フライホイールＦＨxの回転運動は、上体３の傾斜角のロール方向（Ｘ軸回り）の回転運動に対応し、フライホイールＦＨyの回転運動は、上体３の傾斜角のピッチ方向（Ｙ軸回り）の回転運動に対応している。また、フライホイールＦＨbzの回転運動によって発生する床反力は、上体３のヨー回転運動（上体ヨー回転モード）によって発生する床反力に対応する。また、フライホイールＦＨazの回転運動によって発生する床反力は、逆位相腕振り（逆位相腕振りモード）によって発生する床反力に対応する。
【０１９８】
尚、ロボット１の腕体の質量は上体３に含まれるものとし、上体質点３ｍは腕体５，５の質量を含む質量をもつ。
【０１９９】
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。なお、各質点２ｍ，２ｍ，３ｍはそれが対応する部位の代表点であるか、あるいはその部位の位置姿勢から幾何学的に一義的に決定される点に相当する。例えば、支持脚側脚体２の質点２ｍの位置は、該脚体２の足平２２の底面の前記代表点から所定の距離だけ上方の点とする。
Ｚsup：支持脚質点鉛直位置
Ｚswg：遊脚質点鉛直位置
Ｚb：上体質点鉛直位置（上体鉛直位置とは一般的には異なる。）
ＺGtotal：全体重心鉛直位置
Ｘsup：支持脚質点Ｘ位置
Ｙsup：支持脚質点Ｙ位置
Ｘswg：遊脚質点Ｘ位置
Ｙswg：遊脚質点Ｙ位置
Ｘb：上体質点Ｘ位置（上体質点位置は、前記点Pｒから上体の前後方向にある所定の距離だけオフセットした点である。オフセットは、直立時などにおいて、厳密モデルの重心位置と、本動力学モデルの重心位置がなるべく一致するように、決定される。上体水平位置とは一般的には異なる。）
Ｙb：上体質点Ｙ位置
ＸGtotal：全体重心水平Ｘ位置
ＹGtotal：全体重心水平Ｙ位置
θbx：鉛直方向に対するＸ軸回りの上体傾斜角
θby：鉛直方向に対するＹ軸回りの上体傾斜角
θbz：上体ヨー回転角
θaz：逆位相腕振り角
mb：上体質点質量
msup：支持脚質点質量
mswg：遊脚質点質量
mtotal：ロボット総質量（＝mtotal＋msup＋mswg）
Ｊ：上体慣性モーメント（上体傾斜モードにおける等価慣性モーメントである。すなわち、FHxおよびFHyの慣性モーメントである。実ロボット１の上体３部位の慣性モーメントとは一般的には一致しない。）
Ｊbz：鉛直軸まわり上体慣性モーメント（上体ヨー回転モードにおける等価慣性モーメントである。実ロボット１の上体３部位の慣性モーメントとは一般的には一致しない。）
Ｊaz：腕振り鉛直軸まわり慣性モーメント（スピンキャンセルのための逆位相腕振りにおける等価慣性モーメントである。すなわち、FHzの慣性モーメントである。）
Fx：床反力Ｘ成分（詳しくは並進床反力の前後方向（Ｘ軸）成分）
Fy：床反力Ｙ成分（詳しくは並進床反力の左右方向（Ｙ軸）成分）
Fz：床反力鉛直成分（詳しくは並進床反力の鉛直方向（Ｚ軸）成分。本参考例では、これは目標並進床反力鉛直成分に等しい）
Mx：目標ＺＭＰまわりの床反力モーメントＸ成分（詳しくは床反力モーメントの前後軸（Ｘ軸）まわり成分）
My：目標ＺＭＰまわりの床反力モーメントＹ成分（詳しくは床反力モーメントの左右軸（Y軸）まわり成分）
Mz：目標ＺＭＰまわりの床反力モーメントＺ成分（詳しくは床反力モーメントの鉛直軸（Ｚ軸）まわり成分）
なお、各質点２ｍ，３ｍのＸ位置、Ｙ位置はそれぞれ前後方向（Ｘ軸方向）の位置、左右方向（Ｙ軸方向）の位置を意味している。また、本参考例では、各脚体２の質点２ｍの位置と、その脚体２の足平２２の位置（足平２２のあらかじめ定めた代表点の位置）との位置関係はあらかじめ定められており、一方の位置が決まれば、他方の位置は一義的に定まるものとされている。また、上体質点３ｍと、上体３の位置（上体３のあらかじめ定められた代表点の位置）との位置関係は、上体３の姿勢角（以降、上体に関しては、姿勢角とは、傾斜角とヨー角を意味するものとする。）に応じてあらかじめ定められており、一方の位置と姿勢角とが決まれば、他方の位置は一義的に定まるものとされている。
【０２００】
また、任意の変数Ｘに対して、dX/dtはＸの１階微分を表わし、d2X/dt2はＸの２階微分を表わす。したがって、変数Ｘが変位ならば、dX/dtは速度、d2X/dt2は加速度を意味する。ｇは重力加速度定数を示す。ここでは、ｇは正の値とする。
【０２０１】
上記動力学モデルの運動方程式（動力学的平衡条件を表す式）は、式０１、式０２x、式０２y、式０３x、式０３y、式０３zで表される。
Ｆz＝mb＊(g+d2Zb/dt2)＋msup＊(g+d2Zsup/dt2)
＋mswg＊(g+d2Zswg/dt2)            ……式０１
Ｆx＝mb＊d2Xb/dt2＋msup＊d2Xsup/dt2＋mswg＊d2Xswg/dt2
……式０２x
Ｆy＝mb＊d2Yb/dt2＋msup＊d2Ysup/dt2＋mswg＊d2Yswg/dt2
……式０２y
Ｍx＝mb＊(Yb−Yzmp)＊(g+d2Zb/dt2)
−mb＊(Zb−Zzmp)＊(d2Yb/dt2)
＋msup＊(Ysup−Yzmp)＊(g+d2Zsup/dt2)
−msup＊(Zsup−Zzmp)＊(d2Ysup/dt2)
＋mswg＊(Yswg−Yzmp)＊(g+d2Zswg/dt2)
−mswg＊(Zswg−Zzmp)＊(d2Yswg/dt2)＋J＊d2θbx/dt2
……式０３x
Ｍy＝−mb＊(Xb−Xzmp)＊(g+d2Zb/dt2)
＋mb＊(Zb−Zzmp)＊(d2Xb/dt2)
−msup＊(Xsup−Xzmp)＊(g+d2Zsup/dt2)
＋msup＊(Zsup−Zzmp)＊(d2Xsup/dt2)
−mswg＊(Xswg−Xzmp)＊(g+d2Zswg/dt2)
＋mswg＊(Zswg−Zzmp)＊(d2Xswg/dt2)＋J＊d2θby/dt2
……式０３y
Ｍz＝mb＊(Xb−Xzmp)＊(d2Yb/dt2)−mb＊(Yb−Yzmp)＊(d2Xb/dt2)
＋msup＊(Xsup−Xzmp)＊(d2Ysup/dt2)
−msup＊(Ysup−Yzmp)＊(d2Xsup/dt2)
＋mswg＊(Xswg−Xzmp)＊(d2Yswg/dt2)
−mswg＊(Yswg−Yzmp)＊(d2Xswg/dt2)
＋Jbz＊d2θbz/dt2＋Jaz＊d2θaz/dt2
……式０３z
また、ロボット全体重心位置には次の関係式が成立する。
ＺGtotal＝(mb＊Zb＋msup＊Zsup＋mswg＊Zswg)／mtotal
……式０４
ＸGtotal＝(mb＊Xb＋msup＊Xsup＋mswg＊Xswg)／mtotal
……式０５x
ＹGtotal＝(mb＊Yb＋msup＊Ysup＋mswg＊Yswg)／mtotal
……式０５y
以下に上記動力学モデルと前記ΔFp、ΔMp、ΔFｒ、ΔMｒの関係を示す。
【０２０２】
前記ΔFpは、式０２ｘまたは式０２ｙにおいて、d2Xb/dt2またはd2Yb/dt2を単位量だけ摂動させたときのFxまたはＦyの摂動量であるから、次式によって求められる。
ΔFp＝mb          …式０６
すなわち、上体並進モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力水平成分の変化ΔFpは、上記動力学モデルの上体質点３ｍの質量に相当する。
【０２０３】
前記ΔMpは、式０３ｙまたは式０３ｘにおいて、d2Xb/dt2またはd2Yb/dt2を単位量だけ摂動させたときのMyまたはＭｘの摂動量であるから、次式によって求められる。
ΔMp＝mb＊(Zb−Zzmp)      …式０７
すなわち、上体並進モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力モーメント水平成分の変化ΔMｐは、上記動力学モデルの上体質点質量に、上体質点３ｍの目標ＺＭＰからの高さ（鉛直位置）を乗じたものになる。このときの上体質点３ｍ及び目標ＺＭＰの位置と、上体質点３ｍの運動との関係は、上体質点３ｍを倒立振子質点、目標ＺＭＰを倒立振子支点に対応づけたときの倒立振子の挙動に相当する。なお、Ｙ軸方向のΔＭpは、より正確には、式０７の右辺の符号を反転させたものである。
【０２０４】
前記ΔFｒは、式０２ｘまたは式０２ｙにおいて、d2θby/dt2を単位量だけ摂動させたときのＦxまたはＦyの摂動量であるから、次式によって求められる。
ΔFｒ＝0      …式０８
すなわち、上体傾斜モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力水平成分の変化ΔFrは、０である。
【０２０５】
前記ΔMｒは、式０３xまたは式０３ｙにおいて、d2θbx/dt2またはd2θby/dt2を単位量だけ摂動させたときのMxまたはＭyの摂動量であるから、次式によって求められる。
ΔMｒ＝Ｊ      …式０９
すなわち、上体傾斜モードの各水平軸（Ｘ軸、Ｙ軸）方向の単位加速度当たりの床反力モーメント水平成分の変化ΔMrは、水平軸フライホイール（FHxおよびFHy）の慣性モーメントに相当する。
【０２０６】
前記ΔMbzは、式０３zにおいて、d2θbz/dt2を単位量だけ摂動させたときのMzの摂動量であるから、次式によって求められる。
ΔMbz＝Ｊbz      …式０９b
すなわち、上体ヨー回転モードの単位加速度当たりの床反力モーメント成分の変化ΔMbzは、上体ヨー回転に対応するフライホイールＦHbzの慣性モーメントに相当する。
【０２０７】
前記ΔMazは、式０３zにおいて、d2θaz/dt2を単位量だけ摂動させたときのMzの摂動量であるから、次式によって求められる。
ΔMaz＝Ｊaz      …式０９a
すなわち、逆位相腕振りの単位角加速度当たりの床反力モーメント成分の変化ΔMazは、腕振りに対応するフライホイールFHazの慣性モーメントに相当する。
【０２０８】
本参考例における歩容生成装置１００は、ロボット１の片方の脚体２が着地してから他方の脚体２が着地するまでの１歩分の目標歩容（前記狭義の意味での目標歩容）を単位として、その１歩分の目標歩容を順番に生成する。従って、本参考例で生成する図５の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時（次の片脚支持期の開始時）までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
【０２０９】
また、歩容生成装置１００が今回歩容を新たに生成するとき、該歩容生成装置１００には、ロボット１の２歩先までの遊脚側足平２２の着地予定位置姿勢、着地予定時刻の要求値（要求）が歩容に対する要求パラメータとして入力される（あるいは歩容生成装置１００が記憶装置から要求パラメータを読み込む）。そして、歩容生成装置１００は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。
【０２１０】
以下に図５の走行歩容を生成することを例にして、本参考例における歩容生成装置１００の歩容生成処理の詳細を図１３〜図４６を参照しつつ説明する。図１３は、その歩容生成装置１００が実行する歩容生成処理のメインルーチンを示すフローチャート（構造化フローチャート）である。
【０２１１】
まずＳ０１０において時刻ｔを０に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置１００の起動時等に行なわれる。次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図１３のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。
【０２１２】
次いで、Ｓ０１６に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはＳ０１８に進むと共に、切り替わり目でないときはＳ０３０に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
【０２１３】
Ｓ０１８に進むときは時刻ｔが０に初期化され、次いでＳ０２０に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本参考例では、歩容生成装置１００にジョイスティック７３等から与えらる要求パラメータは、２歩先までの遊脚側足平２２の着地予定位置姿勢（足平２２が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢）、着地予定時刻の要求値を含んでおり、その１歩目の要求値、２歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時（前記Ｓ０１６の歩容の切り替わり目）以前に歩容生成装置１００に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
【０２１４】
そして、上記要求パラメータにおける１歩目の遊脚側足平２２（今回歩容での遊脚側足平２２）の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。
【０２１５】
例えば図１６を参照して、今回歩容（１歩目）に係わる遊脚側足平２２（図では２２Ｌ）の着地予定位置姿勢の要求値が、今回歩容の支持脚側足平２２（図では２２Ｒ）の着地位置姿勢に対して、今回歩容支持脚座標系のＸ軸方向（今回歩容の支持脚側足平２２Ｒの前後方向）及びＹ軸方向（今回歩容の支持脚側足平２２Ｒの左右方向）に、それぞれxnext、ynextだけ移動し、且つＺ軸回り（鉛直軸回り）にθznextだけ回転させた位置姿勢であるとする。ここで、支持脚座標系は、支持脚側足平２２を水平姿勢（より一般的には床面に平行な姿勢）にして該支持脚側足平２２の底面のほぼ全面を床面に接触（密着）させた状態において、該支持脚側脚体２の足首中心から床面に延ばした垂線が該床面と交わる点（この点は、本参考例の例では支持脚側足平２２の底面のほぼ全面を床面に接触させた状態では、該足平２２の代表点と合致する）を原点とし、その原点を通る水平面をＸＹ平面とするグローバル座標系（床に固定された座標系）である。この場合、Ｘ軸方向、Ｙ軸方向は、それぞれ支持脚側足平２２の前後方向、左右方向である。尚、支持脚座標系の原点は、必ずしも支持脚側足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の代表点（足平２２の位置を代表する点）に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
【０２１６】
このとき、次回歩容支持脚座標系は、図示のように今回歩容の遊脚側足平２２Ｌの着地予定位置姿勢の要求値に従って該足平２２を着地させた場合（足平２２の代表点を着地予定位置の要求値に一致させ、且つ、足平２２の姿勢（向き）を着地予定姿勢の要求値に一致させた場合）における該足平２２Ｌの代表点（より詳しくは該代表点に合致する床上の点）を原点とし、該原点を通る水平面内における該足平２２Ｌの前後方向、左右方向をそれぞれＸ’軸方向、Ｙ’軸方向とする座標系である。
【０２１７】
上記と同様に、２歩目の遊脚側足平２２の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系（図１６のＸ”Ｙ”座標を参照）が定まる。また、今回歩容周期は、今回歩容の支持脚側足平２２の着地予定時刻（要求値）から、１歩目（今回歩容）の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まり、次回歩容周期は、１歩目の遊脚側足平２２の着地予定時刻（要求値）から２歩目の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まる。
【０２１８】
尚、前記要求パラメータは、本参考例ではジョイスティック７３の所要の操作によって歩容生成装置１００に入力されるものであるが、あらかじめ該要求パラメータあるいはこれに対応する上記の支持脚座標系の位置姿勢及び歩容周期をロボット１の移動スケジュールとして記憶しておいても良い。あるいは、ジョイスティック７３などの操縦装置からの指令（要求）とそのときまでのロボットの１の移動履歴とを基に前記次回及び次次回歩容支持脚座標系、並びに今回及び次回歩容周期を決定しても良い。
【０２１９】
次いでＳ０２２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、基準とする腕姿勢軌道を規定する基準腕姿勢軌道パラメータ、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を規定するパラメータも歩容パラメータに含まれる。
【０２２０】
尚、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界（本参考例では１歩毎の歩容の境界）においてロボット１の運動状態（足平位置姿勢、上体位置姿勢等の状態）に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。
【０２２１】
周期的歩容である定常旋回歩容は、本参考例では、ロボット１の２歩分の歩容、すなわち今回歩容に続く第１旋回歩容と該第１旋回歩容に続く第２旋回歩容とからなる歩容を該定常旋回歩容の１周期分の歩容として、その１周期分の歩容を繰り返す歩容である。尚、ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。また、生成する目標歩容が前記図５の走行歩容であると、その目標歩容の今回歩容は、片脚支持期及び空中期を有する走行歩容であるので、定常旋回歩容の第１旋回歩容及び第２旋回歩容は、いずれも今回歩容と同様に片脚支持期と空中期とを有する歩容である。つまり、第１旋回歩容及び第２旋回歩容の基本的な歩容形態は今回歩容と同一である。
【０２２２】
定常旋回歩容について補足すると、２足移動ロボットでは、定常旋回歩容の１周期分は、前記した狭義の意味での歩容が、少なくとも２歩分、必要である。そして、３歩以上の歩容を１周期分の歩容とする複雑な定常旋回歩容を設定することも可能である。但し、定常旋回歩容は、後述の如く、今回歩容の終端（終了時刻）における発散成分（詳細は後述する）を決定するためだけに用いられる。このため、３歩以上の歩容を１周期とする定常旋回歩容を用いることは、歩容生成の処理が煩雑となるにも関わらず、効果は少ない。そこで、本参考例での定常旋回歩容の１周期分の歩容を２歩分の歩容（第１及び第２旋回歩容）により構成するようにしている。尚、３足以上の脚式移動ロボットにあっては、それに応じて定常旋回歩容を定義するに足る歩容数が増加する。以下では、説明の便宜上、複数の狭義の歩容（本参考例では２歩分の歩容）から成る定常旋回歩容を１歩の歩容とみなす。
【０２２３】
定常旋回歩容は、歩容生成装置１００で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット１の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置１００からそのまま出力されるものではない。
【０２２４】
尚、「発散」とは、図１４に示すように、２足移動ロボット１の上体３の位置が両足平２２，２２の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、２足移動ロボット１の上体３の位置が両足平２２，２２の位置（より具体的には、支持脚側足平２２の接地面に設定されたグローバル座標系（支持脚座標系）の原点）からかけ離れていく具合を表す数値である。
【０２２５】
本参考例では、目標歩容が、前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。ただし、継続的な歩容の代表例である定常歩容（歩容の軌道の不連続を発生することなく、同じパターンの歩容を繰り返すことができる周期的歩容であり、原理上、無限回繰り返しても発散しない歩容）の初期発散成分（定常歩容の初期時刻での発散成分）であっても、単純に０ではなく、定常歩容のパラメータが変われば、その初期発散成分も変わる。すなわち、歩き方あるいは走り方等の歩容形態によって、適切な発散成分が変わる。そこで、本参考例では、これから生成しようとする今回歩容の後に続く定常歩容が前記今回歩容に係わる要求パラメータに応じて設定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる（より一般的には、今回歩容を定常歩容に連続させもしくは近づける）ように、今回歩容を生成する。これのような歩容生成の基本的な指針は本出願人が先に提案したＰＣＴ公開公報WO／02／40224のものと同様である。
【０２２６】
本発明の参考例では、ＰＣＴ公開公報WO／02／40224の第１実施形態で用いたような線形な３質点動力学モデルを用いていないが、次式で定義される発散成分および収束成分の概念は、図１２に示したモデルのような非線形な動力学モデルの挙動の摂動分に対しても、近似的に十分な精度で適用することができる。
【０２２７】
発散成分＝上体質点水平位置＋上体質点水平速度／ω0
…式１０
収束成分＝上体質点水平位置−上体質点水平速度／ω0’
…式１１
ただし、ここでの上体質点水平位置は、図１２に示す前記動力学モデルにおいては、上体質点水平位置Xbを表す。
【０２２８】
また、ω0、ω0’はある所定の値である。これらのω0、ω0’値はほぼ同じ値であるが、厳密には一致しない。そして、走行時では、ＰＣＴ公開公報WO／02／40224の歩行歩容生成時の値に対して若干変更する必要がある。
【０２２９】
発散成分および収束成分に関するその他の詳細は、ＰＣＴ公開公報WO／02／40224に記述されているので、ここではこれ以上言及しない。
【０２３０】
本参考例においては、ＰＣＴ公開公報WO／02／40224に示した方式に加え、さらに、後述するように、目標床反力鉛直成分軌道を規定する歩容パラメータを設定し、この目標床反力鉛直成分を動力学的に満足するようにロボット１の全体重心鉛直位置を決定する。この場合、床反力鉛直成分の２階積分値がロボット１の全体重心鉛直位置を規定するものになるので、目標床反力鉛直成分の設定が悪いと、ロボット１の全体重心鉛直位置もしくは上体鉛直位置が高くなり過ぎたり低くなり過ぎたりする。したがって、目標床反力鉛直成分の設定方法も重要な課題である。しかし、床反力鉛直成分と上体鉛直位置との関係は、ＺＭＰと上体水平位置との関係に似ているので、上体水平位置速度を適切にするための目標ＺＭＰ決定手法の一部を、以下の本参考例に示すように、少し変更するだけで、上体鉛直位置速度を適切にするための目標床反力鉛直成分の決定手法に適用することができる。
【０２３１】
本題に戻り、Ｓ０２２では、図１５に示すフローチャートに従って、以下の処理が行われる。
【０２３２】
まず、Ｓ１００において、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に具体的な設定方法を図１６を参照して説明する。尚、以降の説明では、支持脚側の脚体２の足平２２を支持脚足平と称し、遊脚側の脚体２の足平２２を遊脚足平を称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻もしくはそれらの時刻における瞬時歩容を意味する。
【０２３３】
足平軌道パラメータは、第１旋回歩容および第２旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平２２は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢（＝前回歩容終端遊脚足平位置姿勢）から、前記要求パラメータにおける２歩目の遊脚側足平２２の着地予定位置姿勢の要求値（今回歩容の支持脚足平２２の次回歩容における着地予定位置姿勢の要求値）もしくは該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（詳しくは次回歩容支持脚座標系から見た軌道）を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
【０２３４】
尚、次回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平２２を接地させたまま、つま先を下げるように該足平２２を水平姿勢までピッチ方向に所定角度回転させたときの該足平の位置姿勢が次次回歩容支持脚座標系の位置姿勢に合致するように決定される。換言すれば、次回歩容終端遊脚足平位置姿勢は、前記要求パラメータにおける２歩目の遊脚側足平２２の着地位置姿勢の要求値から、該足平２２をすべらないように接地させたまま、つま先を持ち上げるように該足平２２をピッチ方向に所定角度回転させた状態（つま先を上げてかかとを着地させた状態）での該足平２２の位置姿勢である。
【０２３５】
また、第１旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、前記次回歩容終端遊脚足平位置姿勢の場合と同様、前記次回歩容支持脚座標系もしくはこれに対応する前記要求パラメータの１歩目（今回歩容）の遊脚着地予定位置姿勢の要求値に応じて定まるものである。すなわち、該今回歩容終端遊脚足平位置姿勢は、その位置姿勢から、足平２２を接地させたまま、つま先を下げるように該足平２２を回転させて該足平２２の底面のほぼ全面を床面に接地させたときの該足平の代表点が次回歩容支持脚座標系の原点に合致するように決定される。
【０２３６】
第１旋回歩容終端遊脚足平位置姿勢は、今回歩容終端遊脚足平位置姿勢や次回歩容終端遊脚足平位置姿勢の決定手法と同様に、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に基づいて決定される。より具体的には、第１旋回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平２２を接地させたまま、すべらないように該足平２２を水平姿勢まで所定角度回転させたときの足平位置姿勢が、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に合致するように設定される。
【０２３７】
第１旋回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、第１旋回歩容支持脚足平着地予定位置姿勢が設定される。第１旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢に基づいて設定される。より具体的には、第１旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢である。なお、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と次次次回歩容支持脚座標系との相対的位置姿勢関係が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように設定される。
【０２３８】
第１旋回歩容終端支持脚足平位置姿勢は、第１旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第１旋回歩容初期支持脚足平位置姿勢から、前記第１旋回歩容支持脚足平着地予定位置姿勢に至る足平位置姿勢軌道（より詳しくは次回歩容支持脚座標系から見た軌道）を、第１旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
【０２３９】
第２旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢とされる。第２旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢とされる。
【０２４０】
第２旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第２旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
【０２４１】
第１旋回歩容および第２旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第１旋回歩容及び第２旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。尚、今回歩容、第１旋回歩容および第２旋回歩容の上記以外の運動パラメータ（両脚支持期時間などの時間パラメータを含む）は、上記決定されたパラメータに応じて、歩容の条件（アクチュエータの速度が許容範囲に入っているか、可動角を超えていないか、床などと干渉していないかなど）を満足するように適宜決定する。
【０２４２】
次に、Ｓ１０２に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期（第１旋回歩容の初期）と終端（第２旋回歩容の終端）とでつながるように（定常歩容の初期、終端での基準上体姿勢の姿勢角及びその角速度が一致するように）に設定されている限り、一定姿勢である必要はないが、本参考例では理解を容易にするため、基準上体姿勢のうちの傾斜角（鉛直方向に対する傾斜角）に係わる姿勢は、直立姿勢（鉛直姿勢）に設定される。つまり、本参考例では、上体３の傾斜角に関する基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本参考例では、基準上体姿勢のうちの傾斜角の角速度及び角加速度は０である。基準上体姿勢のうちのヨー角軌道（以降、基準ヨー角軌道とも呼ぶ）θbzは、例えば一定角速度（定常歩容の平均旋回速度）の運動にすれば良い。あるいは、後述の基準逆位相腕振り軌道の例（図１８）のようにサイン波状にしても良い。ただし、定常歩容を繰り返した時に基準ヨー角およびその角速度が連続となるように設定する。
【０２４３】
尚、本参考例では、目標上体姿勢のうちのヨー角軌道（以降、目標ヨー角軌道とも呼ぶ）は、基準ヨー角軌道に一致させるものとする。
【０２４４】
次に、Ｓ１０４に進み、基準腕姿勢軌道パラメータが決定される。具体的には、両腕体５，５の全体の重心位置（上体３に対する相対的な重心位置）、左右の手先（両腕体５，５の先端）の左右方向の間隔、および逆位相腕振り角に関するパラメータが決定される。基準逆位相腕振り角は、たとえば図１７のように左旋回する場合には、図１８のように設定すれば良い。図１８のように、基準逆位相腕振り角θazrefは、定常歩容を繰り返した時に歩容の境界（第２旋回歩容の終端と次の第１旋回歩容の境界）において逆位相腕振り角および角速度が共に連続になり、かつ第１旋回歩容初期における支持脚と逆位相腕振り角の相対関係が、次の第１旋回歩容初期における支持脚と逆位相腕振り角の相対関係に一致するように設定される。すなわち、第１旋回歩容の初期逆位相腕振り角速度と第２旋回歩容の終端逆位相腕振り角速度が一致し、第２旋回歩容の終端逆位相腕振り角は、定常歩容の旋回角（第１旋回歩容と第２旋回歩容の旋回角の和）に第１旋回歩容初期逆位相腕振り角を加えた値に設定される。図１８では基準逆位相腕振り角θazrefをサイン波状の波形としたが、一定角速度に設定しても良い。あるいは、支持脚のヨー角と遊脚のヨー角の平均の値としても良い。
【０２４５】
尚、本参考例では、目標腕姿勢の両腕体５，５の全体の重心位置（上体３に対する相対位置）は、上体３に対して一定に維持されるように設定される。
【０２４６】
次に、Ｓ１０６に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第１旋回歩容および第２旋回歩容のいずれにおいても図６のように実質的に連続な（値がステップ状に飛ばない）ものとなるように床反力鉛直成分軌道パラメータが設定される。すなわち、定常旋回歩容の目標床反力鉛直成分軌道は図１９のようなパターンで設定される。そのパターンでは、第１旋回歩容及び第２旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が０に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ（ピーク値）が床反力鉛直成分軌道パラメータとして設定される。
【０２４７】
この床反力鉛直成分軌道パラメータの設定に際しては、床反力鉛直成分の歩容全期間（第１旋回歩容と第２旋回歩容両方の期間を合わせた期間で定常歩容の１周期の期間）における平均値をロボット１の自重と一致させる。すなわち、床反力鉛直成分の平均値がロボット１に作用する重力と同じ大きさで反対向きになるようにする。
【０２４８】
上記のごとく床反力鉛直成分軌道を設定することは、定常歩容の条件を満たすために必要である。定常歩容の条件とは、支持脚座標系（支持脚側足平２２の接地面に設定された座標系）から見た歩容のあらゆる状態変数（ロボット１の各部の位置、姿勢、速度等）の初期状態（第１旋回歩容の初期状態）と次の支持脚座標系（次の第１旋回歩容の支持脚座標系）から見た歩容の終端状態（第２旋回歩容の終端状態）が一致していることである（以下、この条件を定常歩容の境界条件ということがある）。したがって、定常歩容終端におけるロボット１の全体重心鉛直速度と定常歩容初期における全体重心鉛直速度との差（詳細には、第２旋回歩容終端の全体重心鉛直速度と第１旋回歩容初期の全体重心鉛直速度との差）も零でなければならない。上記差は床反力鉛直成分と重力との差の積分値（１階積分値）であるから、上記差を零にするためには、上記のごとく床反力鉛直成分軌道を設定する必要がある。
【０２４９】
尚、本参考例では、床反力鉛直成分の第１旋回歩容、第２旋回歩容それぞれの期間における平均値をロボット１の自重と一致させるようにした。より具体的には、例えば第１旋回歩容及び第２旋回歩容の歩容周期に応じて各旋回歩容における床反力鉛直成分軌道の台形部分の折れ点の時刻を設定した上で、その台形部分の高さを、床反力鉛直成分の第１旋回歩容、第２旋回歩容それぞれの期間における平均値がロボット１の自重と一致するように決定した（台形の高さを未知数として、上記平均値及び自重の一致条件を表す方程式を解くことで台形の高さを求める）。
【０２５０】
こうすることにより、第１旋回歩容終端の全体重心鉛直速度と第１旋回歩容初期の全体重心鉛直速度との差も０、第２旋回歩容終端の全体重心鉛直速度と第２旋回歩容初期の全体重心鉛直速度との差も０になる。ただし、このようにする必然性はない。例えば、第１旋回歩容と第２旋回歩容との境界あたりで上体鉛直位置が高くなり過ぎたり低くなり過ぎたりして無理な姿勢になりそうな場合には、各旋回歩容で上記平均値及び自重を一致させた状態から各旋回歩容の床反力鉛直成分軌道の台形の高さ等を修正するようにしてもよい。
【０２５１】
次に、Ｓ１０８に進み、上記のごとく図１９のように設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fxmin，Fxmax]（より詳しくはこれを規定するパラメータ）が図２０のように設定される。図２０の負側の折れ線が床反力水平成分許容下限値Fxmin、正側の折れ線が床反力水平成分許容上限値Fxmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
【０２５２】
床反力水平成分は、床と足平２２との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット１が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。
【０２５３】
床と足平２２との間の摩擦係数をμとすると、Fxminは、常に−μ＊床反力鉛直成分以上に、Fxmaxはμ＊床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、kaは１より小さい正の定数である。
Fxmin＝−ka＊μ＊床反力鉛直成分
Fxmax＝  ka＊μ＊床反力鉛直成分
…式１２
図２０の床反力水平成分許容範囲は、式１２にしたがって設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図２０の台形波形などの折れ点での値と時刻を設定してもよいが、式１２により床反力水平成分許容範囲を決定するときには、単に式１２における(ka＊μ)の値をパラメータとして設定するだけでも良い。
【０２５４】
尚、上記条件（目標歩容の床反力水平成分を常に摩擦限界以内にするという条件）を満足しているならば、他の設定方法で床反力水平成分許容範囲を設定するようにしても構わない。
【０２５５】
次に、Ｓ１０９に進み、上記のごとく図１９のように設定された床反力鉛直成分軌道などに応じて、床反力モーメント鉛直成分の許容範囲[Mzmin，Mzmax]（より詳しくはこれを規定するパラメータ）が図２１のように設定される。図２１の負側の折れ線が床反力モーメント鉛直成分許容下限値Mzmin、正側の折れ線が床反力モーメント鉛直成分許容上限値Mzmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
【０２５６】
床反力モーメント鉛直成分は、床と足平２２との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット１が移動した時にスピンしないようにするためには、目標歩容の床反力モーメント鉛直成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力モーメント鉛直成分許容範囲を設定し、後述するように、目標歩容の床反力モーメント鉛直成分がこの許容範囲内になるように、目標歩容を生成することとした。
【０２５７】
床と足平２２との間の摩擦係数をμ、モーメント鉛直成分を発生するための床と足平２２との間の接触面の有効半径（あるいは床と足平２２との間の接触面の目標ＺＭＰまわりの断面２次モーメントの平方根）をｒとすると、Mzminは、常に−μ＊r＊床反力鉛直成分以上に、Mzmaxはμ＊r＊床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、kaは１より小さい正の定数である。
Mzmin＝−ka＊μ＊ｒ＊床反力鉛直成分
Mzmax＝  ka＊μ＊ｒ＊床反力鉛直成分
…式１０１２
図２１の床反力モーメント鉛直成分許容範囲は、式１０１２にしたがって設定した例である。床反力モーメント鉛直成分許容範囲を規定するパラメータとして、図２１の台形波形などの折れ点での値と時刻を設定してもよいが、式１０１２により床反力モーメント鉛直成分許容範囲を決定するときには、単に式１０１２における(ka＊μ)の値をパラメータとして設定するだけでも良い。ｒは、各瞬間において目標ＺＭＰと接地面から算出するのが良いが、定数としても構わない。
【０２５８】
尚、上記条件（目標歩容の床反力モーメント鉛直成分を常に摩擦限界以内にするという条件）を満足しているならば、他の設定方法で床反力モーメント鉛直成分許容範囲を設定するようにしても構わない。
【０２５９】
さらには、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を独立に設定するのではなく、床反力水平成分と床反力鉛直成分モーメントの組み合わせの許容範囲を設定するようにしても良い。なぜなら、床反力水平成分が大きくなると、床反力モーメント鉛直成分の許容範囲が狭くなり、また、床反力モーメント鉛直成分が大きくなると、床反力水平成分の許容範囲が狭くなるからである。
【０２６０】
次に、Ｓ１１０に進み、第１旋回歩容および第２旋回歩容を合わせた定常歩容のＺＭＰ軌道を規定するＺＭＰ軌道パラメータが設定される。この場合、目標ＺＭＰ軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。
【０２６１】
さらに詳細には、図５の走行歩容においては、支持脚足平２２のかかとで着地した後、しばらくして該支持脚足平２２の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平２２のつま先だけが接地する。そして、次に支持脚足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚足平２２のかかとで着地する。また、目標ＺＭＰは接地面内に存在しなければならない。そこで、本参考例では、定常歩容の第１旋回歩容及び第２旋回歩容のそれぞれの目標ＺＭＰのＸ軸方向の位置は、前記図７の上段図に示したように、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ＺＭＰは支持脚足平２２の中央に移動し、該足平２２がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平２２のつまさきに留まるように設定される。さらにその後は、目標ＺＭＰは、前述のごとく、次の遊脚足平２２の着地までに目標ＺＭＰが、支持脚足平２２のつまさきから遊脚足平２２のかかとの着地位置まで連続的に移動するように設定される。したがって、第１旋回歩容と第２旋回歩容とから成る定常歩容の目標ＺＭＰ軌道（Ｘ軸方向の軌道）は、図２２のようになる。そして、この目標ＺＭＰ軌道の折れ点の時刻及び位置がＺＭＰ軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第１旋回歩容及び第２旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系及び次次回歩容支持脚座標系の位置姿勢あるいはこれらの座標系を規定する要求パラメータの１歩目及び２歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。尚、ＺＭＰ軌道のＹ軸方向の位置は、前記図７の下段図に示したものと同様に設定される。より詳しくは、第１旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、図７の下段図のものと同一パターンで設定され、第２旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、第１旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。
【０２６２】
次に、Ｓ１１２に進み、定常歩容１歩（１周期）の初期時刻、終端時刻、期間が以下のように再定義される。
【０２６３】
定常歩容は、その初期と終端での状態変数が連続的につながる歩容でなければならない。このような歩容の決定を容易にするために、本参考例では、定常歩容を決定するまでは、前述の狭義の歩容の定義とは異なり、定常歩容の１歩の初期、終端、期間を便宜上、図１９のように定める。すなわち、第１旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻を定常歩容の初期時刻Tsとして設定する。なお、初期時刻Tsは、図７に示すように、支持脚足平２２の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前の時刻（図７の足底全面接地期間の終了時刻もしくはその直前の時刻）に設定するのが望ましい。また、Ｓ１１０において設定した図２２（または図７）に示す目標ＺＭＰと時刻Tsとの関係を説明すると、第１旋回歩容において支持脚足平２２の底面のほぼ全面が接地した後に、目標ＺＭＰが支持脚足平２２の中央に移動し、つま先接地状態になるまでにつま先に移動を完了した瞬間が、時刻Tsとなっているのが望ましい。このような初期時刻Tsは例えば先に設定した目標ＺＭＰ軌道パラメータに応じて設定される。上記のごとく初期時刻Tsを設定する理由は後述する。
【０２６４】
また、図１９に示すように、定常歩容の周期Tcycは第１旋回歩容と第２旋回歩容の歩容周期の和である。定常歩容の終端時刻をTeとする。Teは、TsにTcycを加えた時刻に設定される。
【０２６５】
定常歩容が決定された時点（後述の図２３のＳ２０４のループを抜けた時点）から、改めて、歩容の初期、終端等の定義を、前述の狭義の歩容の定義に戻すこととする。以下の説明では、前述の狭義の歩容の定義による初期時刻（支持脚側足平２２の着地当初の時刻）を０とし、定常歩容を決定するまで用いる上記初期時刻Tsを参照符号Tsを用いて（単に「Ts」と省略することもある）本来の初期時刻０と区別する。
【０２６６】
最後にＳ１１４に進み、定常歩容の上体姿勢角・逆位相腕振り角復元期間[Tm，Ts2]および[Tm2，Te]を設定する。補足すると、定常歩容を繰り返した時に歩容の境界において上体姿勢角および逆位相腕振り角は連続であるべきである。そのためには、定常歩容の初期上体姿勢角速度と終端上体姿勢角速度が一致し、定常歩容の初期逆位相腕振り角速度と終端逆位相腕振り角速度が一致しなければならない。前記期間は、そのようにするための、上体姿勢角軌道と逆位相腕振り角軌道を調整する期間である。
【０２６７】
具体的には、初期時刻Tsから第１旋回歩容の空中期を経て第２旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Tmが設定される。さらに、第２旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Ts2が設定される。さらに、第２旋回歩容の空中期を経て第１旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Tm2が設定される。
【０２６８】
図１９にこれらの時刻を示す。時刻Tmは、支持脚足平２２の底面のほぼ全面が接地した瞬間あるいはその直後に設定するのが望ましい。時刻Tm2も同様である。また、時刻Ts2は、前記初期時刻Ts同様、足平２２の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前に設定するのが望ましい。
【０２６９】
また、前記図１５のＳ１１０において設定した図２２の目標ＺＭＰとこれらの時刻Tm，Ts2，Tm2との関係を説明すると、第２旋回歩容において、目標ＺＭＰが、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平２２の中央に移動し始める瞬間を時刻Tmとすることが望ましい。その後、支持脚足平２２のつま先だけ接地した状態になるまでに、目標ＺＭＰがつま先に移動を完了した瞬間を、時刻Ts2とすることが望ましい。さらに次の第１旋回歩容において、目標ＺＭＰが、支持脚足平２２のかかとを初期位置として該足平２２の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平２２の中央に移動し始める瞬間を時刻Tm2とすることが望ましい。
【０２７０】
上記のごとく設定する理由は後述する。尚、上体姿勢角を復元（調整）する期間と逆位相腕振り角を復元（調整）する期間を別々に設定しても良い。
【０２７１】
図１３のＳ０１０からＳ０２２までに示す処理が行われた後、Ｓ０２４に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度（水平方向での初期上体位置及び初期上体速度）、初期上体鉛直位置速度（鉛直方向での初期上体位置及び初期上体速度）、初期発散成分、初期上体姿勢角、角速度、および初期逆位相腕振り角、角速度である。この初期状態の算出は、図２３のフローチャートに従って、探索的に行なわれる。
【０２７２】
図２３のフローチャートにおいては、先ず、Ｓ２００において、定常歩容の歩容パラメータ（前記図１３のＳ０２２で設定したパラメータ）に基づいて、目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角（傾斜角とヨー角）の初期状態（初期時刻Tsでの状態）が決定される。ここで状態とは、位置や姿勢角とその変化率（時間微分）とを表す。
【０２７３】
この場合、支持脚側の目標足平位置姿勢の初期状態は、前記図１５のＳ１００で決定した足平軌道パラメータの第１旋回歩容初期支持脚足平位置姿勢から、第２旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（次回歩容支持脚座標系から見た軌道）を時刻Tsまで有限時間整定フィルタにより生成することにより決定される。遊脚側の目標足平位置姿勢の初期状態は、次回歩容支持脚座標系から見た今回歩容初期支持脚足平位置姿勢から、第１旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道を時刻Tsまで有限時間整定フィルタにより生成することにより決定される。また、目標腕姿勢の初期状態は、図１５のＳ１０４で決定した基準腕姿勢軌道パラメータに基づいて求められる時刻Tsにおける基準腕姿勢に決定される。より具体的には、目標腕姿勢の両腕体５，５の全体重心位置（上体３に対する相対位置）、左右の手先（両腕体５，５の先端部）の左右方向の間隔および逆位相腕振り角・角速度が決定される。但し、逆位相腕振り角・角速度は、後述するように、定常歩容を繰り返した時に歩容の境界で連続するように修正されるので、ここではまだ仮に決定されただけである。
【０２７４】
また、目標上体姿勢角の初期状態は、図１５のＳ１０２で決定した基準上体姿勢軌道パラメータにより定まる時刻Tsにおける基準上体姿勢（傾斜角およびヨー角）及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本参考例では、上体３の傾斜角に係る基準上体姿勢は鉛直姿勢であるので、目標上体姿勢のうちの傾斜角の初期状態（傾斜角及びその角速度）は０である。
【０２７５】
また、本参考例では、定常歩容の目標足平位置姿勢軌道、床反力鉛直成分軌道、及び目標ＺＭＰ軌道は、それぞれ、図１５のフローチャートで決定した足平軌道パラメータ、床反力鉛直成分軌道パラメータ、ＺＭＰ軌道パラメータにより互いに独立的に決定される。例えば定常歩容の瞬時瞬時の目標足平位置姿勢は、床反力鉛直成分の瞬時値に依存することなく足平軌道パラメータに応じて決定される。
【０２７６】
次いでＳ２０２において初期上体水平位置速度の候補（すなわち初期時刻Tsでの上体水平位置速度候補）である（Ｘs，Ｖxs）（Ｘs：水平位置、Ｖxs：水平速度）が仮決めされる。ここで仮決めする候補（Ｘs，Ｖxs）は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度を仮決め候補（Ｘs，Ｖxs）とすればよい。
【０２７７】
尚、説明を簡略にするため、サジタルプレーン上でＸ方向（前後方向）での定常歩容の初期状態を探索する場合を例にとるが、実際には位置・速度ともＸ方向（前後方向），Ｙ方向（左右方向）を別々にあるいは同時に定常歩容の初期状態（定常歩容の前記境界条件を満たす初期状態）を探索する必要がある。
【０２７８】
補足すると、サジタルプレーン上では、ヨー回転やモーメント鉛直成分など鉛直軸まわりに関する概念は存在しないので、少なくともヨー回転やモーメント鉛直成分に関しては、３次元空間で演算される。
【０２７９】
探索的な決定手法としては、擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。本実施例では、最急降下法を用いる。
【０２８０】
次いで、Ｓ２０４を経てＳ２０６において、定常歩容を繰り返した時に上体鉛直位置速度が連続になり、かつ、膝等の関節角が伸び過ぎたり縮み過ぎたりしないように、初期（時刻Ts）上体鉛直位置速度（Zs，Ｖzs）（Zs：鉛直位置、Ｖzs：鉛直速度）が、決定される。これについての詳細は、例えば本願出願人が先に出願したＰＣＴ／ＪＰ０２／１３５９２に記載されているので、ここでは省略する。
【０２８１】
Ｓ２０６の処理の後、次いでＳ２０８に進み、定常旋回歩容が仮に生成される（この仮生成される定常旋回歩容を以降、仮歩容ということがある）。より具体的には、前記図１３のＳ０２２で決定した定常歩容の歩容パラメータを基に、初期時刻Tsから終端時刻Teまでの各瞬間における目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲が逐次求められる。そして、求めた目標ＺＭＰと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル（図１２のモデル）を用いて、前記上体水平位置速度（Ｘs，Ｖｘs）、上体鉛直位置速度（Zs，Ｖｚs）を上体３の初期（時刻Ts）状態として、上体位置姿勢を逐次決定することによって、時刻Tsから終端時刻Teまでの歩容を生成する。また、この時、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
【０２８２】
また、床反力モーメント鉛直成分に関する条件、すなわち、床反力モーメント鉛直成分許容範囲を満足するように、逆位相腕振り動作が決定される。
【０２８３】
尚、この定常歩容の歩容生成は歩容生成装置１００の内部で行われるだけであって、実際のロボット１を駆動するための目標値として、後述する複合コンプライアンス動作決定部１０４に出力されることはない。
【０２８４】
以下に、Ｓ２０８の処理である逐次演算による定常歩容生成処理の詳細を説明する。
【０２８５】
図２４はその処理を示すサブルーチンフローチャートである。
【０２８６】
以下説明すると、Ｓ３００において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻kに初期時刻Tsを代入する。さらに、上体水平位置速度に、現在仮決定されている（Ｘs，Ｖｘs）（図２３のＳ２０２もしくは後述のＳ２１６もしくはＳ２１８で決定されたもの）が代入され、上体鉛直位置速度に、前記Ｓ２０６で求めた最新の（Zs，Ｖｚs）が代入される。また、上体姿勢角には、基準上体姿勢角初期値（初期時刻Tsでの角度）が代入され、上体姿勢角速度には、基準上体姿勢角速度初期値（初期時刻Tsでの角速度）が代入される。
【０２８７】
逆位相腕振り角には、基準初期逆位相腕振り角（初期時刻Tsでの角度）逆位相腕振り角速度には、基準初期逆位相腕振り角速度（初期時刻Tsでの角速度）が代入される。
【０２８８】
次いで、Ｓ３０２を経てＳ３０４において、仮歩容生成用時刻kが歩容終端時刻以前であるか否か（k ≦ Ts + Tcycであるか否か）が判断され、その判断結果がＹＥＳである場合には、Ｓ３０６の歩容瞬時値決定サブルーチンに進み、歩容瞬時値が決定される。次いで歩容生成装置１００の処理は、Ｓ３０８に進み、仮歩容生成用時刻kをΔkだけ増やした後、Ｓ３０４に戻る。
【０２８９】
ここで、Δkは、仮歩容生成のインターバルであり、通常、制御周期Δｔと一致させておけば良い。なお、Δkは、仮歩容の動力学的精度を落としても良いならば、演算量を低減するために、ΔkをΔｔよりも長く設定しても良い。
【０２９０】
Ｓ３０４の判断結果がＮＯである場合には、Ｓ３１０に進む。以上の処理により、Ｓ３１０に進むまでに定常歩容（仮歩容）が初期から終端まで生成される。
【０２９１】
以下に、Ｓ３０６の歩容瞬時値決定サブルーチンの詳細を図２５を参照して説明する。
【０２９２】
まず図２５のＳ４００において、定常歩容パラメータ（床反力鉛直成分軌道パラメータ）を基に、前記図１９に示した目標床反力鉛直成分の時刻kにおける値（今回値）が求められる。さらに、Ｓ４０２において、定常歩容パラメータ（ＺＭＰ軌道パラメータ）を基に、前記図２２に示した目標ＺＭＰ軌道の時刻kにおける値（今回値）が求められる。
【０２９３】
次いでＳ４０４に進み、定常歩容パラメータ（足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ）を基に、時刻kにおける目標両足平位置姿勢（支持脚側及び遊脚側の両者の目標足平位置姿勢）、基準上体姿勢および基準腕姿勢の値（今回値）が求められる。基準腕姿勢に関しては、具体的には、両腕体５，５の全体重心位置（上体３に対する相対位置）、左右の手先（両腕体５，５の先端部）の左右方向の間隔および逆位相腕振り角の値（今回値）が求められる。
【０２９４】
尚、目標足平位置姿勢の今回値（時刻ｋでの値）は、前記図２３のＳ２００で初期時刻Tsでの足平位置姿勢を求めた場合と同様に求められる。
【０２９５】
次いでＳ４０６に進み、目標床反力鉛直成分を満足する（ロボット１の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ような時刻kにおける全体重心鉛直位置速度の値（今回値）が算出される。具体的には、例えば前記図１２の動力学モデルに係わる前記式０１と式０４とに基づいて、全体重心鉛直位置速度が算出される。すなわち、式０１と式０４とによれば、ロボット１の運動による全体重心鉛直加速度と重力加速度との和にロボット１の全体質量を乗算したものが床反力鉛直成分に等しいという関係式（ロボット１の全体重心の鉛直方向に関する運動方程式）が得られる。従って、この関係式と目標床反力鉛直成分とから、全体重心鉛直加速度が求められる。
【０２９６】
尚、この関係式自体は、ロボット１のモデルに依存することなく一般的に成立するものである。そして、この求めた全体重心鉛直加速度を積分することにより、全体重心鉛直速度が算出され、さらにその全体重心鉛直速度を積分することにより、全体重心鉛直位置が算出される。これらの算出は、より一般的には、次式１５および式１６で表される動力学関係式（ニュートンの運動方程式を離散化した式）を用いて行なわれる。
【０２９７】
時刻kにおける全体重心鉛直速度
＝時刻(k−Δk)における全体重心鉛直速度
＋((床反力鉛直成分／ロボットの全体質量)＋重力加速度)＊Δk
（ただし、重力加速度は負の値とする。）
…式１５
時刻kにおける全体重心鉛直位置
＝時刻(k−Δk)における全体重心鉛直位置
＋時刻kにおける全体重心鉛直速度＊Δk
…式１６
次いでＳ４０８に進み、全体重心鉛直位置を満足する上体鉛直位置が算出される。具体的には、例えば前記図１２のモデルに係わる式０４を用いて上体鉛直位置が算出される。すなわち、支持脚側及び遊脚側の目標足平位置姿勢の今回値から、図１２のモデルの支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの求めた支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置と、Ｓ４０７で求めた全体重心鉛直位置の今回値とを式０４に適用することで、上体質点３ｍの鉛直位置が求められる。さらに、この求めた上体質点３ｍの鉛直位置と目標上体姿勢角の現在値（Ｓ４０４で設定された基準上体姿勢角または後述のＳ４１４で決定された前回（時刻ｋ−Δｋ）の目標上体姿勢角）とから上体鉛直位置が求められる。
【０２９８】
次いでＳ４１０に進み、前記図１５のＳ１０８で決定した歩容パラメータ（床反力水平成分許容範囲を規定するパラメータ）に基づいて、図２０に示した床反力水平成分許容範囲[Fxmin，Fxmax]の時刻kにおける値（今回値）が求められる。
【０２９９】
次いでＳ４１１に進み、前記図１５のＳ１０９で決定した歩容パラメータ（床反力モーメント鉛直成分許容範囲を規定するパラメータ）に基づいて、図２１に示した床反力モーメント鉛直成分許容範囲[Mzmin，Mzmax]の時刻kにおける値（今回値）が求められる。
【０３００】
次いでＳ４１２に進み、目標ＺＭＰに関する動力学的平衡条件（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が０であるという条件）を満足するように、目標上体水平加速度と目標上体姿勢加速度との今回値が決定される。ただし、床反力水平成分Fxが[Fxmin，Fxmax]を越えないように、上体水平加速度と上体姿勢角加速度（より詳しくは、上体傾斜角加速度）とが決定される。また、床反力モーメント鉛直成分Mzが[Mzmin，Mzmax]を越えないように、目標逆位相腕振り角加速度の今回値が決定される。
【０３０１】
尚、上体姿勢角のうち、ヨー角は基準上体姿勢角のうちのヨー角に一致するように決定される。また、目標腕姿勢に関しては、逆位相腕振り角以外の成分は、基準腕姿勢に一致するように決定される。また、この際、上記条件を満足しつつも、目標上体傾斜角と目標逆位相腕振り角とは、それぞれ基準上体傾斜角と基準逆位相腕振り角とになるべく追従するように決定される。以下にこの詳細を説明する。
【０３０２】
この時点において、前記の如く足平位置姿勢および上体鉛直位置の瞬時値（今回値）が決定されており、また、腕姿勢に関して、逆位相腕振り角以外の成分は、基準腕姿勢のそれに一致するように決定されている。このため、残りの上体水平位置と上体姿勢角と逆位相腕振り角とを決定すれば、ロボット１の目標運動は一義的に決定できる。したがって、すべての床反力も一義的に決定される。なお、本参考例では、定常歩容の目標床反力鉛直成分及び目標ＺＭＰは、それぞれ前記図１３のＳ０２２で決定した床反力鉛直成分軌道パラメータ及び目標ＺＭＰ軌道パラメータによって規定される。
【０３０３】
ところで、歩容生成において、前記上体並進モードをあまり用いずに主に上体傾斜モードを用いることにより、目標ＺＭＰを満足させる（目標ＺＭＰまわりの床反力モーメントの水平成分を０にする）と、上体姿勢角が大きく振れ過ぎてしまう恐れがある。したがって、これを防ぐためには、なるべく上体並進モードを用いるべきである。しかし、上体並進モードは、床反力水平成分の変化を伴うので、床反力水平成分許容範囲が狭い場合には、上体並進モードを強く働かせるとスリップする恐れがある。この場合には、上体傾斜モードに頼るしかない。特に、前記走行歩容のように床反力水平成分許容範囲が０となる期間では、床反力水平成分を発生させるような歩容を生成することはできないので、上体傾斜モードに頼らざるを得ない。
【０３０４】
一方、逆位相腕振り運動は、目標ＺＭＰまわりの床反力モーメントの水平成分および床反力水平成分のいずれも変化させることなく、床反力モーメント鉛直成分のみを変化させることができるので、床反力モーメント鉛直成分が前記床反力モーメント鉛直成分許容範囲を越えないようにするために用いることができる。以上のことを考慮し、本参考例では、図２６に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度と逆位相腕振り加速度とが決定される。尚、理解の便宜上、上体水平加速度と上体姿勢角加速度（上体３の傾斜角の角加速度）の決定に関しては、サジタルプレーン上でＸ方向（前後方向）での上体水平加速度および上体姿勢角加速度を決定する場合を例にとって説明するが、実際にはＹ方向（左右方向）の上体水平加速度および上体姿勢角加速度もＸ方向と同様に決定される。
【０３０５】
まずＳ５００において、目標上体ヨー角に時刻kでの基準上体ヨー角の値を代入する。また、腕姿勢の逆位相腕振り角・角速度成分を除き、目標腕姿勢に時刻kでの基準腕姿勢の値を代入する。
【０３０６】
次にＳ５０２において現在時刻（定常歩容作成用タイマーの値）kが、上体姿勢角・逆位相腕振り角復元期間（定常歩容の場合、上体姿勢角・逆位相腕振り角復元期間は、時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間である。）の間にあるか否かが判定される。Ｓ５０２の判定結果がＮＯであるならば、Ｓ５０４に進み、ＹＥＳであるならばＳ５３０に進む。
【０３０７】
Ｓ５０４では、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、仮に、上体傾斜モードの角加速度を０にして、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰを満足するために必要な上体水平加速度αtmpが求められる。このαtmpは、例えば前記図１２の動力学モデルに係わる前記式０３ｙを用いて求められる。より具体的には、例えば、現在時刻ｋまでに求められた目標足平位置姿勢の時系列値を用いて、現在時刻ｋにおける支持脚質点２ｍ及び遊脚質点２ｍの鉛直加速度が求められると共に、現在時刻ｋ（今回）の目標足平位置姿勢を用いて支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。また、現在時刻ｋ（今回）の床反力鉛直位置を用いて上体質点３ｍの鉛直位置が求められると共に、現在時刻ｋまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻ｋにおける上体質点３ｍの鉛直加速度が求められる。そして、これらの求めた値を前記式０３ｙに代入すると共に、同式０３ｙのMy、d2θby/dt2を０にしてなる式を、d2Xb/dt2について解くことにより、上体質点水平加速度が上体水平加速度αtmpとして求められる。尚、より厳密な動力学モデルを用いて、目標ＺＭＰ回りの床反力モーメントの水平成分を零にするような上体水平加速度αtmpを探索的に求めるようにしてもよい。また、本参考例では、上体３の傾斜角に関する基準上体姿勢が鉛直姿勢で、該基準上体姿勢による上体姿勢角加速度（上体３の傾斜角の角加速度）が０であるため、上体傾斜モードの角加速度を０にして上体水平加速度αtmpを求めるようにした。但し、基準上体姿勢のうちの傾斜角が変化するように該基準上体姿勢軌道パラメータを設定した場合で、それにより定まる現在時刻ｋにおける基準上体姿勢角加速度（上体３の傾斜角の基準角加速度）が０でない場合には、上体傾斜モードの角加速度をその０でない基準上体姿勢角加速度の値にして、上体水平加速度αtmpを動力学モデルを用いて求める（例えば式０３ｙのd2θby/dt2を０でない基準上体姿勢角加速度に設定して上記と同様に上体水平加速度αtmpを求める）ようにすればよい。
【０３０８】
次に、Ｓ５０６に進み、上体水平加速度がαtmpの場合の時刻ｋにおける床反力水平成分Fxtmpが動力学モデルを用いて求められる。本参考例においては、前記動力学モデルの式０２ｘを用いてFxtmpが求められる。すなわち、次式１７によってFxtmpが求められる。但し、d2Xsup／dt2およびd2Xswg／dt2はそれぞれ時刻ｋにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。
【０３０９】
Fxtmp = mb＊αtmp＋msup＊d2Xsup／dt2
＋mswg＊d2Xswg／dt2        …式１７
このようにして求められるFxtmpの例を図２７に示す。図２７に、Fxtmpが床反力水平成分許容範囲[Fxmin，Fxmax]を越えている部分を斜線で示す。
【０３１０】
次に、Ｓ５０８に進み、上体並進モードの上体水平加速度α、これによって発生する床反力水平成分Fx、上体傾斜モードの上体角加速度βが次のように決定される（Ｓ５０８〜Ｓ５１６）。
すなわち、
Fxtmp＞Fxmaxならば、Ｓ５１０に進み、次式によりＦxが決定される。
【０３１１】
Fx＝Fxmax        …式１８
Fxtmp＜Fxminならば、Ｓ５１２に進み、次式によりＦxが決定される。
【０３１２】
Fx＝Fxmin        …式１９
それ以外、すなわち、Fxtmpが、床反力水平成分許容範囲[Fxmin，Fxmax]内に存するならば、Ｓ５１４に進み、次式によりＦxが決定される。
【０３１３】
Fx＝Fxtmp        …式２０
いずれの場合においても、次いでＳ５１６に進み、次式により上体水平加速度α、上体姿勢角加速度（上体傾斜角加速度）βが決定される。
【０３１４】
α＝αtmp＋(Fx−Fxtmp)／ΔFp      …式２１
β＝(αtmp−α)＊ΔMｐ／ΔMｒ      …式２２
ただし、ΔＦp、ΔMｐおよびΔMｒはそれぞれ前記式０６、０７、および式０９により決定される。
【０３１５】
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体角加速度βを求めた後、上体並進モードと上記求めた上体角加速度βの上体傾斜モードとを合成した運動が目標ＺＭＰを満足するように、上体並進モードの上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン（感度マトリックス）を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
【０３１６】
さらに床反力水平成分Fxが床反力水平成分許容範囲[Fxmin，Fxmax]を厳密に越えないようにするために、Ｓ５１０においては、Fx＝Fxmaxかつ目標ＺＭＰまわりの床反力モーメントの水平成分が０になるように、Ｓ５１２においては、Fx＝Fxminかつ目標ＺＭＰまわりの床反力モーメントの水平成分が０になるように、上体水平加速度αと上体角加速度βとの組を探索的に求めても良い。
【０３１７】
上記のように求められるFxを図２８に示す。Fxは、Fxtmpの値を床反力水平成分許容範囲[Fxmin，Fxmax]から越えないように制限（飽和）させたものになっている。より詳しくは、上体並進モードのみによる上体水平加速度αtmpに応じたFxtmpが許容範囲[Fxmin，Fxmax]内にある場合には、FxtmpがそのままFxとなる。また、上体並進モードのみによる上体水平加速度αtmpに応じたFxtmpが許容範囲[Fxmin，Fxmax]の上限を超え、もしくは下限を下回った場合には、それぞれFxは、それぞれ強制的にFxmax、Fxminに制限される。特に走行歩容の空中期では、常に、Fxmax＝Fxmin＝０であるので、Fx＝０となる。
【０３１８】
また、上記のように求められる上体姿勢角加速度βを図２９に示す。上体並進モードによって発生するFxが許容範囲[Fxmin，Fxmax]を越えないように、上体並進モードの加速度を制限したことによって不足した床反力モーメント（より詳しくは目標ＺＭＰ回りの床反力モーメントの水平成分を０にする上で必要な慣性力モーメントから、制限した上体水平運動と両脚体２，２の運動とによるモーメント成分を差し引いたモーメント）を、上体傾斜モードで補ったことになる。なお、走行歩容の空中期では、上体並進モードによる上体水平加速度αは常に０に制限されることとなるので、上体傾斜モードによる上体姿勢角加速度βのみによって、上記不足分の床反力モーメントが補われることとなる。
【０３１９】
次に、Ｓ５１８に進み、仮に上体並進モードの上体水平加速度がα、上体傾斜モードの上体角加速度（上体傾斜角加速度）がβ、上体ヨー回転モードの上体加速度（上体ヨー角加速度）が基準ヨー角加速度d2θbzref/dt2、逆位相腕振り角加速度βaが基準逆位相腕振り角加速度d2θazref/dt2である運動をさせた場合の床反力モーメント鉛直成分Mztmpを求める。以降、d2θbzref/dt2をβbref、d2θazref/dt2をβarefとする。
【０３２０】
具体的には、式０３zに、式１００１から式１００４を代入することによって得られるＭzがMztmpである。
【０３２１】
d2Xb/dt2=αx                                    …式１００１
d2Yb/dt2=αy                                    …式１００２
d2θbz/dt2=βbref                                …式１００３
d2θaz/dt2=βaref                                …式１００４
ただし、αxは、上体水平加速度αのＸ成分、αyは、上体水平加速度αのＹ成分を表す。また、Xb、Ybには時刻ｋ−１における上体水平位置を代入し、Xzmp、Yzmp、Xsup、d2Ysup/dt2、Xswg 、d2Yswg/dt2には、時刻kの値を代入するものとする。
【０３２２】
このようにして求められるMztmpの例を図３２に示す。図３２に、Mztmpが床反力モーメント鉛直成分許容範囲[Mzmin，Mzmax]を越えている部分を斜線で示す。
【０３２３】
次に、Ｓ５２０に進み、逆位相腕振り角加速度βaが次のように決定される（Ｓ５２０〜Ｓ５２８）。
すなわち、
Mztmp＞Mzmaxならば、Ｓ５２２に進み、次式によりMzが決定される。
【０３２４】
Mz＝Mzmax        …式１０１８
Mztmp＜Mzminならば、Ｓ５２４に進み、次式によりMzが決定される。
【０３２５】
Mz＝Mzmin        …式１０１９
それ以外、すなわち、Mztmpが、床反力水平成分許容範囲[Mzmin，Mzmax]内に存するならば、Ｓ５２６に進み、次式によりMzが決定される。
【０３２６】
Mz＝Mztmp        …式１０２０
いずれの場合においても、次いでＳ５２８に進み、次式により逆位相腕振り角加速度βaが決定される。
【０３２７】
βa＝βaref＋(Mztmp−Mz)／ΔMaz      …式１０２１
ただし、ΔMazは式０９aにより決定される。
【０３２８】
以下にＳ５１８からＳ５２８までの処理を解説する。
【０３２９】
上記のように求められるMzは、逆位相腕振りを含めたロボット全体の運動による床反力モーメント鉛直成分を示している。
【０３３０】
上記処理では、このMzが床反力モーメント鉛直成分許容範囲[Mzmin，Mzmax]を越えないように逆位相腕振り角加速度βaが決定されている。具体的には、Mzは、図３３に示すように、Mztmpの値を床反力水平成分許容範囲[Mzmin，Mzmax]から越えないように制限（飽和）させたものに決定されている。より詳しくは、Mztmpが許容範囲[Mzmin，Mzmax]内にある場合には、MztmpがそのままMzとなり、Mztmpが許容範囲[Mzmin，Mzmax]の上限を越え、もしくは下限を下回った場合には、それぞれMzは、それぞれ強制的にMzmax、Mzminに制限される。特に走行歩容の空中期では、常に、Mzmax＝Mzmin＝０であるので、Mz＝０となる。
【０３３１】
Mzが床反力モーメント鉛直成分許容範囲[Mzmin，Mzmax]を越えないようにするために、逆位相腕振りによって発生すべきモーメント鉛直成分Mazは、(Mz−Mztmp)である。Maz(= Mz−Mztmp)を図３４に示す。
【０３３２】
逆位相腕振り角加速度βaは、Mazを逆位相腕振りの等価慣性モーメントΔMazで割ったものを基準逆位相腕振り角加速度βaref（基準逆位相腕振り角を２階微分した値）に加えることによって得られる。すなわち、βａは前記式１０２１で求められる。逆位相腕振り角加速度βaを図３５に示す。
【０３３３】
以上のごとくＳ５０４からＳ５２８までの処理では、逆位相腕振りを含めたロボット全体の運動によって発生する床反力モーメント鉛直成分Mzが許容範囲[Mzmin，Mzmax]を越えないように（逆位相腕振り角加速度を基準逆位相腕振り角加速度βarefに一致させた場合に発生する床反力モーメント鉛直成分Mztmpが許容範囲を越えた分を打ち消す（キャンセルする）ように）、逆位相腕振り角加速度βaが決定される。
【０３３４】
補足すると、床反力モーメント鉛直成分Mzが床反力モーメント鉛直成分許容範囲[Mzmin，Mzmax]を厳密に越えないようにするために、Ｓ５０４からＳ５２８までの処理の代わりに、逆位相腕振り角加速度βaを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン（感度マトリックス）を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
【０３３５】
以上が、時刻ｋが上体姿勢角・逆位相腕振り角復元期間の間にない場合の処理である。
【０３３６】
Ｓ５０２の判定結果がＹＥＳである場合には以下の処理が行われる。まず、Ｓ５３０に進み、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、上体傾斜モードの角加速度を０にして、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰを満足するために必要な上体水平加速度αが求め、これを最終的な上体水平加速度と決定する。
【０３３７】
次に、Ｓ５３２に進み、上記場合に床反力水平成分Fxを求める。
【０３３８】
次に、Ｓ５３４に進み、上体姿勢角加速度（上体傾斜角加速度）βを０に決定する。なお、上体ヨー角加速度は、基準上体ヨー角加速度βbref（基準上体ヨー角を２階微分した値）に決定される。
【０３３９】
次いで最後に、Ｓ５３６に進み、逆位相腕振り角加速度βaに、基準逆位相腕振り角加速度βaref（基準逆位相腕振り角を２階微分した値）を代入する。
【０３４０】
以上が、Ｓ５０２の判定結果がＹＥＳである場合の処理である。すなわち、この場合には、上体姿勢角加速度（上体傾斜角加速度および上体ヨー角加速度）を基準上体姿勢角加速度に、逆位相腕振り角加速度を基準逆位相腕振り角加速度に一致させる。このようにしても運動によって発生する床反力が、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれも越えないと予想されているので、このように決定しても問題ない。
【０３４１】
Ｓ５２８またはＳ５３６の処理の後、図２５のＳ４１４に進み、Ｓ４１２で求めた上体水平加速度を逐次積分する（時刻Tsから現在時刻ｋまで累積加算する）ことにより上体水平速度が求められ、さらにその上体水平速度を逐次積分する（時刻Tsから現在時刻ｋまで累積加算する）ことにより、上体水平位置（今回値）が求められる。また、Ｓ４１２で求めた上体姿勢角加速度を逐次積分する（時刻Tsから現在時刻ｋまで累積加算する）ことにより上体姿勢角速度が求められ、さらにその上体姿勢角速度を逐次積分する（時刻Tsから現在時刻ｋまで累積加算する）ことにより、上体姿勢角（今回値）が求められる。
【０３４２】
次にＳ４１６に進み、Ｓ４１２で求めた逆位相腕振り加速度βaを逐次積分する（時刻Tsから現在時刻ｋまで累積加算する）ことにより逆位相腕振り速度が求められ、さらにこれを逐次積分する（時刻Tsから現在時刻ｋまで累積加算する）ことにより、逆位相腕振り角θaz（今回値）が求められる。
【０３４３】
以上のごとく図２４のＳ３０６の定常歩容瞬時値決定サブルーチンが実行された後、Ｓ３０８に進み、歩容生成用時刻kの値が歩容生成インターバルΔｋだけ増加される。次いでＳ３０４に戻り、Ｓ３０４に示す条件が成立している限り、Ｓ３０６とＳ３０８の処理が繰り返され、Ｓ３０４に示す条件が成立しなくなったら、すなわち終端（時刻Te＝Ts＋Tcyc）まで仮歩容の生成が完了したら、Ｓ３１０に進む。
【０３４４】
定常歩容では、それを繰り返したときに境界でロボット１の運動状態が不連続にならないように、初期上体姿勢角及びその角速度を決定する必要がある。
【０３４５】
そのために、Ｓ３１０では、上体姿勢角速度を、時刻Teまでに、初期値（時刻Tsでの値）に戻すための上体姿勢角加速度を発生させる床反力モーメントのＺＭＰ換算値（以降、上体姿勢復元モーメントＺＭＰ換算値と呼び、ＺＭＰrecと略す）のパターンを設定する。
【０３４６】
これについて以下に詳細に説明する。
【０３４７】
上体姿勢角・逆位相腕振り角復元期間（時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間）に、上体傾斜モードを用いて上体姿勢角加速度を発生させることにより、上体姿勢角速度を初期値（時刻Tsでの値）に戻すことを考える。このための上体姿勢角加速度パターンを、β(ｋ)とする。なお、上記期間以外では、β(ｋ)=0とする。
【０３４８】
上体傾斜モードでは、上体姿勢角加速度β(ｋ)を発生させようとすると、床反力モーメントβ(ｋ)＊ΔMｒが発生する。この結果、その瞬間における床反力鉛直成分がFz(ｋ)であるとすると、（目標ＺＭＰでなく）運動から算出されるＺＭＰ(ｋ)は、次式で求められるΔＺＭＰだけずれる。
【０３４９】
ΔＺＭＰ(ｋ)＝−β(ｋ)＊ΔMｒ／Fz(ｋ)      …式２３
したがって、ΔMｒのパターンとFz(ｋ)のパターンが決まっていれば（既知であれば）、ΔＺＭＰ(ｋ)のパターンを適当に設定することによって、式２３を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を初期値（時刻Tsでの値）、すなわち基準上体姿勢軌道の初期（時刻Ts)状態における上体姿勢角速度に戻すことができる。
【０３５０】
前記上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）は、そのように適切に設定されたΔＺＭＰ(ｋ)を意味する。前記式２３を用いて上体姿勢復元モーメントＺＭＰ換算値を設定する際に、ΔMｒは厳密には変動するが、近似的に一定値としても良い。定常歩容は仮に生成されるだけであり、実際のロボットをこの歩容に追従させるわけではないので、定常歩容の動力学的精度はあまり高くなくても良いからである。
【０３５１】
図３０にＺＭＰrecの一例を示す。図３０では、ＺＭＰrecのパターンとして、時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間に台形パターンが形成されている。その台形部の折れ点の時刻は、時刻Tmと時刻Ts2との間の期間および時刻Tm2からTeまでの期間における目標ＺＭＰパターンの折れ点の時刻（図２２参照）に一致させてある。これは、後述するが、今回歩容の目標ＺＭＰパターンの修正が簡単になるからである。
【０３５２】
式２３のΔＺＭＰ(ｋ)にＺＭＰrec(ｋ)を代入することにより次式が得られる。
【０３５３】
β(ｋ)＝−ＺＭＰrec(ｋ)＊Fz(ｋ)／ΔMｒ      …式２４
したがって、この式２４で求められるβ(ｋ)は、図３１の実線で示すようになる。なお、図３１の点線で示すものは、時刻Tsから時刻Tmまでの期間および時刻Tm2からTeまでの期間の上体姿勢角加速度（図２９の実線示のもの）である。（以降、時刻ｋでの値であることが明らかな場合には、(ｋ)を省略する場合がある。）
初期（時刻Ts）上体姿勢角は、初期（時刻Ts）基準上体姿勢角に一致させる。
【０３５４】
また、初期上体姿勢角速度は、式３７ａ、３７ｂを満たすように決定する。
【０３５５】
終端上体姿勢角−初期上体姿勢角
＝床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の２階積分
＋ＺＭＰrecによって発生する上体姿勢角加速度の２階積分
＋初期上体姿勢角速度＊定常歩容の周期
……式３７ａ
終端上体姿勢角速度−初期上体姿勢角速度
＝床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の１階積分
＋ＺＭＰrecによって発生する上体姿勢角加速度の１階積分
……式３７ｂ
なお、式３７ａ、３７ｂのそれぞれの右辺第１項の積分期間は、時刻TsからTmまでの期間と、Ts2からTm2までの期間とを合わせた期間であり、右辺第２項の積分期間は、時刻TmからTs2までの期間とTm2からTeまでの期間とを合わせた期間である。
【０３５６】
より具体的に説明すると定常歩容では、第１旋回歩容の支持脚座標系（次回歩容支持脚座標系）から見た初期状態姿勢角及び角速度が、それぞれ、次の第１旋回歩容の支持脚座標系（次次次回歩容支持脚座標系）から見た終端上体姿勢角および角速度に一致していなければならない。そこで、本参考例では、初期（時刻Ts）上体姿勢角は、初期（時刻Ts）基準上体姿勢角の値に決定し、これと、これを定常歩容におけるロボット１のトータルの旋回角（鉛直軸回りの旋回角）に応じたマトリクス（回転座標変換のマトリクス）により次回歩容支持脚座標系から見た値に座標変換したものとをそれぞれ式３７ａの左辺の初期上体姿勢角、終端上体姿勢角に代入する。また、式３７ａ，３７ｂのそれぞれの右辺第１項の積分に係る上体姿勢角加速度は、前記図２６のＳ５１８で求められたものが用いられる。
【０３５７】
そして、式３７ａ，３７ｂの初期上体姿勢角速度と、式３７ａ，３７ｂの右辺第２項の積分に係るＺＭＰrec（図３０の台形状のパターン）の台形高さを未知数として（但し、ＺＭＰrecの台形パターンの折れ点の時刻は前記のごとくあらかじめ定める。また、第１旋回歩容のＺＭＰrecの台形高さacyc1と第２旋回歩容のＺＭＰrecの台形高さacyc2を同一値とする。）、それらの未知数を含む式３７ａ，３７ｂの連立方程式を解くことにより求められる初期上体姿勢角速度を新たな初期上体姿勢角速度として決定する。この場合、式３７ｂの終端上体姿勢角速度は、未知数である初期上体姿勢角速度を、定常歩容の上記トータルの旋回角に応じたマトリクスにより次回歩容支持脚座標系から見た値に座標変換したものである。
【０３５８】
次いでＳ３１２に進み、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）パターンを基に、これによる上体水平位置・速度への影響量を求め、終端上体水平位置・速度に加算する。
【０３５９】
この処理について解説する。なお、その詳細は、本願出願人のＰＣＴ／ＪＰ０２／１３５９２にて説明されているので、ここでは簡略な説明に留める。
【０３６０】
時刻TsからTmの期間および時刻Ts2からTeの期間において、上記のごとく上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）パターンを発生するように上体姿勢角加速度βを変化させると、上体姿勢角加速度βは、次式のようになる。
【０３６１】
β＝−ＺＭＰrec＊Fz／ΔMｒ        …式１０２５
上体傾斜復元モーメントを発生させない場合に目標ＺＭＰを満足する上体水平加速度は、Ｓ５３２において求めたごとくαtmpであるが、上記のごとく上体姿勢角加速度βを変化させると、目標ＺＭＰを満足するために必要な上体水平加速度αは、次式のようになる。
【０３６２】
α＝αtmp−（ΔMｒ／ΔMｐ）＊β      …式１０２６
式１０２５および１０２６より、
α＝αtmp＋ＺＭＰrec＊Fz／ΔMｐ  …式１０２７
すなわち、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）によって、加速度が式１０２７の右辺第２項分だけ増加する。
【０３６３】
式が線形であることを利用すると、上記のごとく上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平速度は、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）パターンを発生させなかった場合の終端上体水平速度、すなわちＳ４１４で求めた上体水平速度の終端値に、時刻TsからTeまでの（ＺＭＰrec＊Fz／ΔMｐ）の１階積分を加算したものとして求められる。また、上記のごとく上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平位置は、上体傾斜復元モーメントＺＭＰ換算値（ＺＭＰrec）パターンを発生させなかった場合の終端上体水平位置、すなわちＳ４１４で求めた上体水平位置の終端値に、時刻TsからTeまでの（ＺＭＰrec＊Fz／ΔMｐ）の２階積分を加算したものとして求められる。
【０３６４】
Ｓ３１２の処理を完了した後、Ｓ３１４に進み、逆位相腕振り角速度が初期と終端で一致するように逆位相腕振り復元角加速度（βarec）パターンを決定する。
【０３６５】
具体的には、逆位相腕振り復元角加速度パターンを図３６のように台形状に設定し、時刻TmからTs2までの期間の台形高さazcyc2と時刻Tm2からTeまでの期間の台形高さazcyc1を同一とし、時刻TsからTeまでのβarecの積分値と床反力モーメント鉛直成分Mzが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βaの積分値との和が０となるように台形高さazcyc1、azcyc2を決定する。なお、両区間の台形高さは、同一でなくても構わない。
【０３６６】
補足すると、このように決定した逆位相腕振り復元角加速度パターンによって発生する床反力モーメント鉛直成分（Mazrec）は、図３７のようになる。したがって、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分Mzは、最終的には、図３８に示すごとく、図３２のMztmpと図３４のMazと図３７のMazrecとの和、すなわち、図３３のMzと図３７のMazrecとの和になる。時刻TmからTs2までの期間および時刻Tm2からTeまでの期間においては、台形状の復元モーメントが加算されるが、これらの期間は、許容範囲が十分に広い期間に設定されているので、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分は、許容範囲を越えることはない。
【０３６７】
次にＳ３１６に進み、定常歩容の初期（時刻Ts）逆位相腕振り角および角速度を決定する。
【０３６８】
具体的には、初期逆位相腕振り角速度は、以下の式によって決定する。
【０３６９】
初期逆位相腕振り角速度
＝基準初期逆位相腕振り角速度
−（βarecが０の場合の逆位相腕振り角
＋βarecパターンの２階積分）／Tcyc
…式１０３０
ただし、上式において、βarecが０の場合の逆位相腕振り角とは、Ｓ４１６において求めた逆位相腕振り角（時刻Teにおける逆位相腕振り角）のことである。また、βarecの２階積分とは、図３６のように設定した逆位相腕振り復元角加速度の時刻TsからTeまでの２階積分値である。また、基準初期逆位相腕振り角速度は前記基準逆位相腕振り角速度（基準逆位相腕振り角θarefの１階微分値）の時刻Tsでの値である。
【０３７０】
初期逆位相腕振り角は、基準初期逆位相腕振り角に一致させれば良い。または、最終的に決定された逆位相腕振り角加速度（すなわち、床反力モーメント鉛直成分Mzが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βaと復元角加速度βarecの和）と上記求めた初期逆位相腕振り角速度を基に、仮に初期逆位相腕振り角を基準初期逆位相腕振り角に一致させた場合に算出される腕振り角と基準逆位相腕振り角との差の平均値または前記差の最大値と最小値の平均値を求め、求めた平均値の２分の１を基準初期逆位相腕振り角から減じた値を最終的な初期逆位相腕振り角として決定しても良い。このようにすることで、算出される腕振り角と基準逆位相腕振り角との差の絶対値が大きくなり過ぎることを防止することができる。
【０３７１】
時刻Ts、Tm、Ts2およびTm2を前記のごとく設定した理由のひとつは、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいて、上体姿勢角速度を基準上体姿勢軌道の初期角速度に戻すように上体姿勢角加速度βを発生させても、床反力水平成分Fxが許容範囲[Fxmin，Fxmax]を越えないようにするためである。換言すれば、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ＺＭＰを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを発生させても、床反力水平成分Ｆxは、許容範囲を越えることがない。
【０３７２】
また時刻Ts、Tm、Ts2およびTm2を前記のごとく設定したもうひとつの理由は、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいて、逆位相腕振り角速度を基準逆位相腕振り角軌道の初期角速度に戻すように逆位相腕振り角加速度βaを発生させても、床反力モーメント鉛直成分Mzが許容範囲[Mzmin，Mzmax]を越えないようにするためである。換言すれば、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力モーメント鉛直成分許容範囲が十分に大きいため、逆位相腕振り角速度を戻すように逆位相腕振り角加速度βaを発生させても、床反力モーメント鉛直成分Mzは、許容範囲を越えることがない。
【０３７３】
以上のごとく図２４のＳ３１６の処理が完了した後、図２３のＳ２１０に進み、生成した歩容（仮定常歩容）の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系（図１７のＸ'''，Ｙ''' ，Z'''座標系）から見た値に変換し、その値を（Ｘｅ，Ｖｘｅ）とする（Ｘｅ：終端上体水平位置、Ｖｘｅ：終端上体水平速度）。
【０３７４】
次いでＳ２１２に進み、図示の如く、初期上体水平位置速度（Ｘｓ，Ｖｘｓ）と終端上体水平位置速度（Ｘｅ，Ｖｘｅ）との差を算出する。この差（Ｘｓ−Ｘｅ，Ｖｘｓ−Ｖｘｅ）を上体水平位置速度境界条件誤差（errx，errvx）と呼ぶ。定常歩容では、前記境界条件を満たす必要があるので、（Ｘｓ，Ｖｘｓ）と（Ｘｅ，Ｖｘｅ）とが一致していなければならない。従って、上体水平位置速度境界条件誤差（errx，errvx）が零またはほぼ零でなければならない。本参考例では、以下のように、上体水平位置速度境界条件誤差（errx，errvx）がほぼ零となる（Ｘｓ，Ｖｘｓ）が探索的に求められる。
【０３７５】
次いでＳ２１４に進み、算出した上体水平位置速度境界条件誤差（errx，errvx）が、あらかじめ適宜設定された許容範囲内にあるか否かが判断される。尚、このように上体水平位置速度境界条件誤差の許容範囲を設定する代わりに、初期発散成分（Ｘｓ＋Ｖｘｓ／ω0）と終端発散成分（Ｘｅ＋Ｖｘｅ／ω0）との差、および初期収束成分（Ｘｓ−Ｖｘｓ／ω0’）と終端収束成分（Ｘｅ−Ｖｘｅ／ω0’）との差がそれぞれある許容範囲内にあるか否か判断するようにしても良い。ただしω0，ω0’は、前述したように、ある所定の値である。
【０３７６】
Ｓ２１４の判断結果がＮＯであるときにはＳ２１６に進む。このＳ２１６では、（Ｘｓ，Ｖｘｓ）の付近に複数（本参考例では２つ）の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）が決定される。ここで、ΔＸｓ，ΔＶｘｓは、それぞれＸｓ，Ｖｘｓに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記Ｓ２０８と同様の処理によって定常歩容が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系（図１７のＸ'''，Ｙ''' ，Z'''座標系）から見た値に変換した値（Ｘｅ＋ΔＸｅ１，Ｖｘｅ＋ΔＶｘｅ１），（Ｘｅ＋ΔＸｅ２，Ｖｘｅ＋ΔＶｘｅ２）が求められる。ここで、（Ｘｅ＋ΔＸｅ１，Ｖｘｅ＋ΔＶｘｅ１）は（Ｘｓ＋ΔＸｓ，Ｖｘｓ）に対応する終端上体位置速度を意味し、（Ｘｅ＋ΔＸｅ２，Ｖｘｅ＋ΔＶｘｅ２）は（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）に対応する終端上体位置速度を意味している。なお、この場合の定常歩容（仮歩容）の生成処理では、上体水平位置速度以外の変数の初期状態（時刻Ｔｓでの状態）は、例えば上体水平位置速度の初期値候補を（Ｘｓ，Ｖｘｓ）とした場合と同一に設定すればよい。Ｓ２１６ではさらに、前記Ｓ２１０と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
【０３７７】
次いでＳ２１８に進み、（Ｘｓ，Ｖｘｓ）およびその付近の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対する上体水平位置速度境界条件誤差を基に、（Ｘｓ，Ｖｘｓ）の次の初期値候補が探索法（擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など）により決定される。すなわち、（Ｘｓ，Ｖｘｓ）およびその付近の初期値候補（Ｘｓ＋ΔＸｓ，Ｖｘｓ），（Ｘｓ，Ｖｘｓ＋ΔＶｘｓ）のそれぞれに対する上体水平位置速度境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補（Ｘｓ，Ｖｘｓ）から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、上体水平位置速度境界条件誤差をより小さくするような初期値候補（Ｘｓ，Ｖｘｓ）が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）が決定された後、Ｓ２０６に戻る。
【０３７８】
Ｓ２１４の判断結果がＮＯとなる限りは上記した処理（Ｓ２０６〜Ｓ２１８の処理）が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）に対応する定常歩容の生成処理（Ｓ２０８）におけるＳ３００（図２４参照）では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補（Ｘｓ，Ｖｘｓ）に対応するＳ２０８の処理におけるＳ３１０（図２４参照）で決定したものに設定される。そして、Ｓ２１４の判断結果がＹＥＳになると、繰り返しループ（Ｓ２０４）を抜けてＳ２２０に進む。なお、Ｓ２０４の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
【０３７９】
Ｓ２２０では、本来の初期時刻０（今回歩容の終端時刻）における初期上体水平位置速度（Ｘ0，Ｖ0）と初期時刻０における初期上体鉛直位置速度（Ｚ0、Ｖｚ0）と初期時刻０における初期上体姿勢角および角速度が求められる。
【０３８０】
具体的には、（Ｘ0，Ｖ0）と（Ｚ0，Ｖｚ0）は、Ｓ３１０において決定された上体傾斜復元モーメントＺＭＰ換算値パターン、時刻Tsにおける定常歩容の初期上体姿勢角および角速度と、Ｓ２０４のループを抜けた後の時刻Tsにおける上体水平位置速度(Xs,Vxs)を基に、歩容の条件を満足するように歩容を生成した場合における、第２旋回歩容から第１旋回歩容に切り換わった瞬間の時刻、すなわち、時刻ｋ＝Tcyc（時刻Te−Ts）であるときに決定される上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Tcycから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図１７のＸ'''，Ｙ'''，Z'''座標系）から見た値に変換した値に決定される。同様に、初期状態姿勢角および角速度は、時刻ｋ＝Tcyc（時刻Te−Ts）であるときに決定される上体姿勢角及び角加速度を、時刻Tcycから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図１７のＸ'''，Ｙ'''，Z'''座標系）から見た値に変換した値に決定される。
【０３８１】
次いでＳ２２２に進み、定常歩容初期発散成分ｑ［０］が次式から求められる。
【０３８２】
ｑ[0]＝Ｘ0＋Ｖ0／ω0            …式４０
ただしω0は、発散についての解説で述べたように、ある所定の値である。
【０３８３】
次にＳ２２４に進み、定常歩容初期発散成分ｑ［０］が今回歩容支持脚座標系から見た値に変換され、これがｑ”［０］として求められる。また、初期上体鉛直位置速度（Ｚ０，Ｖｚ０）が今回歩容支持脚座標系から見た値に変換され、これが（Z０”，Ｖｚ０”）として求められる。
【０３８４】
補足すると、（Ｚ０”，Ｖｚ０”）は、第２旋回歩容の支持脚座標系（図１７のＸ”，Ｙ”，Ｚ”座標系）から見た第２旋回歩容終端上体鉛直位置速度に一致している。また、ｑ”［０］も第２旋回歩容の支持脚座標系（図１７のＸ”，Ｙ”，Ｚ”座標系）から見た第２旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、（Ｚ０”，Ｖｚ０”）およびｑ”［０］を算出するようにしても良い。
【０３８５】
さらに、Ｓ２２６に進み、本来の初期時刻０（今回歩容の終端時刻）における初期逆位相腕振り角および角速度(θaz0，ωaz0)を求め、さらに、これを今回歩容の支持脚座標系から見た値である(θaz0"，ωaz0")を求める。具体的には、(θaz0,ωaz0)は、Ｓ３１４およびＳ３１６において決定された逆位相腕振り復元角加速度パターン、定常歩容の初期（時刻Ts）逆位相腕振り角および角速度とを基に、歩容の条件を満足するように歩容を生成した場合における（より具体的には、上体姿勢角・逆位相腕振り角復元期間以外では、床反力モーメント鉛直成分が許容範囲を越えないように、逆位相腕振り角軌道を決定し、上体姿勢角・逆位相腕振り角復元期間では、前記基準逆位相腕振り角加速度βarefと逆位相腕振り復元角加速度βarecの和が発生するように逆位相腕振り角軌道を決定した場合における）第２旋回歩容から第１旋回歩容に切り換わった瞬間の時刻、すなわち、時刻ｋ＝Tcyc（時刻Te−Ts）であるときに決定される逆位相腕振り角および角速度を、時刻Tcycから始まる一歩（すなわち２度目の第１旋回歩容）の支持脚に対応する支持脚座標系（図１７のＸ'''，Ｙ'''，Z'''座標系）から見た値に変換した値に決定される。
【０３８６】
以上により、図１３のＳ０２４の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
【０３８７】
次いで、図１３のＳ０２６に進み、今回歩容の歩容パラメータを決定（一部は仮決定）する。Ｓ０２６では、より具体的には、図３９に示すフローチャートに従って、以下の処理が行われる。
【０３８８】
まず、Ｓ６００において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。
【０３８９】
具体的には、今回歩容初期遊脚足平位置姿勢（今回歩容遊脚足平位置姿勢の初期値）は、今回歩容支持脚座標系から見た現在遊脚位置姿勢（前回歩容終端遊脚位置姿勢）に設定される。今回歩容初期支持脚足平位置姿勢（今回歩容支持脚足平位置姿勢の初期値）は、今回歩容支持脚座標系から見た現在支持脚足平位置姿勢（前回歩容終端支持脚足平位置姿勢）に設定される。また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た次回歩容支持脚座標系（今回歩容に係わる１歩目の遊脚着床位置姿勢の要求値）に対応して決定される。すなわち、今回歩容終端遊脚足平位置姿勢から遊脚足平２２を床に接触させたまま、すべらないように該足平２２をその底面のほぼ全面が接地するまで回転させたときの、該足平２２の代表点が今回歩容支持脚座標系から見た次回歩容支持脚座標系の原点に合致するように今回歩容終端遊脚足平位置姿勢が決定される。
【０３９０】
今回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、支持脚足平着地予定位置姿勢を設定する。支持脚足平着地予定位置姿勢は、今回歩容支持脚座標から見た次次回歩容支持脚座標（今回歩容に係わる２歩目の遊脚足平位置姿勢の要求値）に対応して設定される。より具体的には、支持脚足平着地予定位置姿勢は、その位置姿勢から、足平２２を床に接触させたまま、すべらないように該足平２２をその底面のほぼ全面が床に接地するまで回転させたときの該足平２２の代表点が今回歩容支持脚座標から見た次次回歩容支持脚座標の原点に合致するように設定される。
【０３９１】
今回歩容終端支持脚足平位置姿勢は、現在支持脚位置姿勢（今回歩容初期支持脚足平位置姿勢）から、次回歩容支持脚座標系に対応する足平着地予定位置姿勢（前記要求パラメータにおける２歩目の遊脚側足平着地位置姿勢の要求値）に至る足平位置姿勢軌道を、今回歩容終端まで前記有限時間整定フィルタにより生成することにより求められる。
【０３９２】
次いで、Ｓ６０２に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。ただし、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる（今回歩容終端での基準上体姿勢角及び角速度がそれぞれ定常歩容初期の基準上体姿勢角及び角速度に一致する）ように上記パラメータが設定される。なお、本参考例では、傾斜角に関する基準上体姿勢は、今回歩容及び定常歩容のいずれでも定常的な鉛直姿勢である。
【０３９３】
次いで、Ｓ６０４に進み、今回歩容の基準腕姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。ただし、今回歩容の初期基準腕姿勢およびその変化率が基準腕姿勢および変化率の現在瞬間値に一致し、かつ、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように上記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定（図１５のＳ１０４）の場合と同様、たとえば、両腕体５，５の全体の重心位置（上体３に対する相対位置）、左右の手先（両腕体５，５の先端）の左右方向の間隔および逆位相腕振り角に関するパラメータが決定される。尚、本参考例では、両腕体５，５の全体の重心位置は、上体３に対して一定に維持されるように設定される。
【０３９４】
次いで、Ｓ６０６に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図６のように実質的に連続な（値がステップ状に飛ばない）軌道になるように設定される。
【０３９５】
ただし、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。
【０３９６】
具体的には、まず、前記図１３のＳ０２４の処理（定常歩容初期状態の決定処理）で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値（Z０”，Ｖｚ０”）、すなわち、図２３のＳ２２４で求めた（Z０”，Ｖｚ０”）等を基に、例えば前記式０４（あるいはロボット１のキネマティクスモデル）を用いて、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。具体的には、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、Ｓ２２４で求めた定常歩容の上体鉛直位置Z0”に対応する図１２のモデルの上体質点鉛直位置と、定常歩容初期の各足平位置を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直位置とを式０４に代入することで求められる。また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、Ｓ２２４で求めた定常歩容の上体鉛直速度Vz0”に対応する図１２のモデルの上体質点鉛直速度と、定常歩容初期の各足平鉛直速度を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直速度とを式０４の両辺を微分してなる式に代入することにより求められる。なお、この初期全体重心鉛直位置速度の算出は、より厳密なモデルを用いて行なうようにしてもよい。
【０３９７】
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を、次式４１ａ、４１ｂの終端全体重心鉛直位置速度に代入すると共に、前回の目標歩容瞬時値（より厳密には、前回目標歩容の終端状態を今回歩容支持脚座標系に変換したもの）の全体重心鉛直位置および速度を、式４１ａ、４１ｂの初期全体重心鉛直位置および速度に代入し、式４１ａ、４１ｂの関係を満足するように、今回歩容の床反力鉛直成分パターン（より具体的にはパラメータ値）が決定される。ただし、式４１ａ、４１ｂにおける積分値は今回歩容の初期から終端までの期間の積分値とする。
【０３９８】
終端全体重心鉛直位置−初期全体重心鉛直位置
＝（床反力鉛直成分／ロボットの全体質量）の２階積分
＋重力加速度の２階積分
＋初期全体重心鉛直速度＊１歩の時間
…式４１ａ
終端全体重心鉛直速度−初期全体重心鉛直速度
＝（床反力鉛直成分/ロボットの全体質量）の１階積分
＋重力加速度の１階積分
…式４１ｂ
ただし、重力加速度は負の値とする。
【０３９９】
より具体的には、まず、図６のような床反力鉛直成分パターンを規定する床反力鉛直成分パラメータ（折れ点の時刻等）のうちの、少なくとも２つのパラメータを独立な未知変数として、その未知変数の値を、式４１ａ、４１ｂからなる連立方程式を解いて決定する。
【０４００】
未知変数とする床反力鉛直成分パラメータには、例えば、図６の台形の高さ（床反力鉛直成分のピーク値）と幅（片脚支持期時間）とを選択すれば良い。この場合、図６の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。補足すると、未知変数を１つとすると、一般的には式４１ａ、４１ｂの連立方程式を満足する解が存在しない。
【０４０１】
次いで、Ｓ６０８に進み、床反力水平成分許容範囲[Fxmin，Fxmax]（具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ）が、定常歩容の第１旋回歩容や第２旋回歩容と同様に設定される。たとえば図４０に示すようなパターンで床反力水平成分許容範囲が設定される。本参考例では、先にＳ６０６で決定した床反力鉛直成分パターンに応じて前記式１２に基づいて床反力水平成分許容範囲が設定される。
【０４０２】
次いで、Ｓ６１０に進み、床反力モーメント鉛直成分許容範囲[Mzmin，Mzmax]（具体的には該床反力モーメント鉛直成分許容範囲のパターンを規定するパラメータ）が、定常歩容の第１旋回歩容や第２旋回歩容と同様に設定される。たとえば図４１に示すようなパターンで床反力モーメント鉛直成分許容範囲が設定される。本参考例では、先にＳ６０６で決定した床反力鉛直成分パターンに応じて前記式１０１２に基づいて床反力モーメント鉛直成分許容範囲が設定される
次いで、Ｓ６１２に進み、今回歩容のＺＭＰ軌道（具体的にはＺＭＰ軌道を規定するパラメータで、軌道の折れ点の時刻や位置）が、定常歩容の第１旋回歩容や第２旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図７に示すごとく設定される。ただし、今回歩容のＺＭＰ軌道が前記定常歩容のＺＭＰ軌道に連続してつながるように上記パラメータを設定される。つまり、今回歩容終端におけるＺＭＰの位置が定常歩容初期のＺＭＰ位置に一致するように、ＺＭＰ軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるＺＭＰ軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のＺＭＰ軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ＺＭＰ軌道が、空中期開始時から、定常歩容初期のＺＭＰ位置まで、直線的に連続して変化するようにＺＭＰ軌道パラメータを設定すればよい。
【０４０３】
なお、Ｓ６１２で決定される今回歩容のＺＭＰ軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとく設定した今回歩容のＺＭＰ軌道を、以降、今回歩容の仮目標ＺＭＰ軌道と呼ぶこととする。
【０４０４】
最後に、Ｓ６１４に進み、上体姿勢角・逆位相腕振り角復元期間[Ta，Tb]が設定される。上体姿勢角・逆位相腕振り角復元開始時刻Taは、定常歩容の第２旋回歩容におけるTmに相当し、上体姿勢角・逆位相腕振り角復元修了時刻Tbは、定常歩容の第２旋回歩容におけるTs2に相当するものである。これらの時刻Ta，Tbの設定の仕方は、それぞれTmおよびTs2の設定の仕方と同様である。
【０４０５】
図１３の説明に戻って、上記のごとくＳ０２６に示す処理（今回歩容の歩容パラメータ決定処理）を行って後、次いでＳ０２８に進み、今回歩容の歩容パラメータ（ＺＭＰ軌道パラメータ）が修正され、また、逆位相腕振り角に関するパラメータが決定される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべくＺＭＰ軌道パラメータが修正され、かつ、逆位相腕振り角が定常歩容の逆位相腕振り角軌道に収束するように今回歩容の逆位相腕振り角に関するパラメータが決定される。
【０４０６】
図４２はその処理を示すサブルーチン・フロー・チャートである。
【０４０７】
まずＳ７００を経てＳ７０２に進み、仮目標ＺＭＰパターンとその他の今回歩容パラメータを基に、今回歩容終端時刻までの仮今回歩容が仮生成される。
【０４０８】
Ｓ７０２では、図４３に示すフローチャートに従って、以下の処理が行われる。
【０４０９】
以下説明すると、Ｓ８００において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻kに０が代入される。また、前回目標歩容の終端状態（より具体的には、上体水平位置速度、上体鉛直位置速度、上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢などの歩容状態の終端値）を今回歩容支持脚座標系に変換したものを、今回歩容初期状態とする。
【０４１０】
補足すると、目標腕姿勢は、目標逆位相腕振り角・角速度を含む。
【０４１１】
次いで、Ｓ８０２を経てＳ８０４において、仮歩容生成用時刻kが今回歩容終端時刻Tcurr以前であるか否か（k≦Tcurrであるか否か）が判断され、その判断結果がＹＥＳある場合には、Ｓ８０６の今回歩容瞬時値決定サブルーチンに進み、今回歩容の時刻kの瞬時値が決定される。Ｓ８０６の歩容瞬時値決定サブルーチンでは、前述のＳ３０６と同様、図２５に示すごとく仮歩容を生成する。ただし、歩容パラメータとして、定常歩容パラメータの代わりに今回歩容パラメータが用いられる。
【０４１２】
次いでＳ８０８に進み、仮歩容生成用時刻kがΔkだけ増加され、Ｓ８０４に戻る。
【０４１３】
Ｓ８０４の判断結果がＮＯである場合には、図４３に示すフローチャートの処理が完了する。
【０４１４】
以上の処理により、仮の今回歩容が初期から終端まで生成される。
【０４１５】
次いでＳ７０４に進み、上記のごとくＳ７０２で求めた今回歩容終端での上体水平位置速度（Ｘｅ，Ｖｘｅ）から、終端発散成分ｑ0[k]（k=Tcurr）が図示の式（前記式１０）を用いて求められる。
【０４１６】
次いでＳ７０６に進み、今回歩容終端発散成分ｑ0[k]と定常歩容初期発散成分ｑ”（図２３のＳ２２４で求めたもの）との差である終端発散成分誤差errqが図示の式を用いて求められる。さらに、Ｓ７０８に進んで、その求めた終端発散成分誤差errqが許容範囲内（０近傍の範囲）にあるか否か判断する。
【０４１７】
Ｓ７０８の判断結果がＮＯであるときはＳ７１０に進み、ａ＝Δａ（Δａは所定の微小量）とし、図４４の関係に従って現在の仮目標ＺＭＰパターンに台形状の修正を加えた目標ＺＭＰを基に、前記Ｓ７０２と同様に、終端までの仮今回歩容を計算する。ここで、図４４を参照して、ａは、今回歩容終端発散成分を定常歩容初期発散成分にできるだけ一致させる（今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に近づける）ために、仮目標ＺＭＰを修正するための台形パターンの高さである。この場合、本参考例では、仮目標ＺＭＰの修正は、支持脚足平２２の底面のほぼ全面が接地する期間（足底全面接地期間）、すなわち、床反力水平成分許容範囲が十分に広いものとなる期間において行なうようにしており、上記台形パターンの折れ点の時刻は、足底全面接地期間における仮目標ＺＭＰの折れ点の時刻に合わせて設定されている。なお、Ｓ７１０でａ＝Δａとするのは、現在の仮目標ＺＭＰ軌道を上記台形パターンによって微小量、修正したときの前記終端発散成分誤差errqの変化を観測するためである。
【０４１８】
上記のようにＳ７１０にて、ａ＝Δａとして仮目標ＺＭＰ軌道を修正したときの仮今回歩容を終端まで生成した後、さらにＳ７１２に進み、Ｓ７１０で求めた仮今回歩容終端での上体水平位置速度（Ｘｅ1，Ｖｘｅ1）を基に、この仮今回歩容における終端発散成分ｑ1[k]が図示の式（前記式１０）を用いて求められる。
【０４１９】
尚、Ｓ７１０においてΔａは、本参考例では、適宜に設定される微小量の定数としたが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔａを減少させるように該Δａを設定するようにしても良い。ただし、定数にしておいても、数回の繰り返し演算で終端発散成分誤差errqを許容範囲内に収めることができる。
【０４２０】
次いでＳ７１４に進み、パラメータ感度ｒ（Δａに対する終端発散成分誤差の変化の割合）が図示の式から求められる。さらに、Ｓ７１６に進み、ａ＝−errq／r、すなわちＳ７０６で求めた終端発散成分誤差errqを、Ｓ７１４で求めたパラメータ感度ｒで割った値を高さａとする台形パターンの修正量を図４４の関係に従って仮目標ＺＭＰパターンに加えることにより、仮目標ＺＭＰパターンが修正される（新たな仮目標ＺＭＰパターンが決定される）。
【０４２１】
次いでＳ７０２に戻る。そして、Ｓ７０８の判断結果がＮＯである限りは、上記したＳ７０２〜Ｓ７１６の処理が繰り返され、Ｓ７０８の判断結果がＹＥＳになったときには、その繰り返しループ（Ｓ７００）を抜けてＳ７１８に進む。
【０４２２】
Ｓ７１８では、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、および仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に、今回歩容の上体姿勢角軌道が定常歩容の上体姿勢角軌道に近づくように、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）のパターンが決定される。ここで決定するＺＭＰrecは、後述する今回歩容瞬時値の生成処理で、床反力水平成分許容範囲が十分に大きいものとなる期間（片脚支持期内の期間）において、上体姿勢角軌道を定常歩容につながらせる（近づける）ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性（Ｓ７０８の条件）を維持できるように、仮目標ＺＭＰを修正するためのものである。
【０４２３】
このＺＭＰrecは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図３０における第２旋回歩容の期間のＺＭＰrecの台形パターンと同様に、今回歩容のＺＭＰrecの台形パターンを設定し、台形の頂点（折れ点）の時刻は既知とする（より具体的には台形の折れ点の時刻を目標ＺＭＰの折れ点時刻に合わせる）と共に、台形高さを未知数とし、以下のようにＺＭＰrecの台形高さ（パラメータ）が求められる。ただし、ＺＭＰrecの台形パターンが立ち上がり始める時刻をTaとし、台形パターンから０に戻る時刻をTbとする。
【０４２４】
上記のように上体姿勢復元モーメントＺＭＰ換算値パターンの未知パラメータがひとつの場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
【０４２５】
補足すると、１歩容の中でのＺＭＰrecパターンを複雑にし、未知パラメータを２つ以上にして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげても良いが、ＺＭＰrecパターンがジグザグに大きく変動し過ぎる恐れがある。
【０４２６】
以下では、算出原理を説明した後、算出手順を説明する。
【０４２７】
前述のごとくＳ７０２でＺＭＰrecパターンの台形高さを０として求めた仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差を求め、これをθerrとする。また、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差を求め、これをvθerrとする。
【０４２８】
ここで、ＺＭＰrecパターンの台形高さをある値bcurrとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第１旋回歩容が生成されると想定する。ただし、第１旋回歩容の上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecパターンは、図２４のＳ３１０において求められた第１旋回歩容のＺＭＰrecパターン（高さが前記acyc1である図３０の台形パターン）とある値b1の和であるとする。
【０４２９】
このようにして生成された歩容をＺＭＰrec修正歩容と呼び、その終端（第１旋回歩容の終端）上体姿勢角と角速度をそれぞれθ1、vθ1とする。
【０４３０】
Ｓ０２４における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容（最終的にＳ３１０において決定された定常歩容初期上体姿勢角および角速度を初期値とし、ＺＭＰrecパターンをＳ３１０において求められたパターン（高さがacyc1である図３０の台形パターン）とした場合の定常歩容）の第１旋回歩容終端上体姿勢角と角速度をそれぞれθ1org、vθ1orgとする。
【０４３１】
ここで、Δθ1、Δvθ1を次のように定義する。
【０４３２】
Δθ1 =θ1−θ1org              …式５０
Δvθ1 =vθ1−vθ1org            …式５１
Δθ1およびΔvθ1は、ＺＭＰrec修正歩容と本来の定常歩容を第１旋回歩容の終端まで生成した時点において、両者間における上体姿勢角の差及び角速度の差を意味する。もし、Δθ1およびΔvθ1が０になれば、ＺＭＰrec修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ＺＭＰrecパターンの台形高さを前記acyc2として第２旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
【０４３３】
したがって、Δθ1およびΔvθ1が０となる今回歩容台形高さbcurr、第１旋回歩容台形高さb1を求め、求めたbcurrを今回歩容の台形高さとして最終的に決定すれば良い。
【０４３４】
ところで、ロボット１の上体姿勢角に関する動力学モデルが図１２に示すフライホイールFHx、FHyのような線形特性を持つことから、Δθ1およびΔvθ1は、今回歩容台形高さbcurr、第１旋回歩容台形高さb1、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角の差θerr、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度の差vθerrと以下の関係を持つ。
【０４３５】
Δθ1＝c11＊bcurr＋c12＊b1＋θerr＋e1＊vθerr      …式５２
Δvθ1＝c21＊bcurr＋c22＊b1＋e2＊vθerr            …式５３
だだし、c11、c12、c21、c22、e1、e2は、今回歩容、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecパターンのパラメータ（特に時間に関するパラメータ）などによって一義的に決定される係数である。
【０４３６】
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での上体姿勢角の差θerrと角速度の差Ｖθerrが求められる。
【０４３７】
次いで、式５２，５３の係数であるc11、c12、c21、c22、e1、e2が、今回歩容、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecパターンのパラメータ（特に時間に関するパラメータ）などを基に求められる。
【０４３８】
次いで式５２、式５３の右辺が０となるように今回歩容台形高さbcurr、第１旋回歩容台形高さb1が決定される。すなわち、式５２、式５３の左辺を０とした連立方程式を解くことによって、bcurr、b1が求められる。
【０４３９】
最後に、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）の台形パターンの台形高さが、上記求めた今回歩容台形高さbcurrに設定される。
【０４４０】
次いでＳ７２０に進み、現在の仮目標ＺＭＰパターン（Ｓ７００の繰り返しループを抜けたときの仮目標ＺＭＰパターン）に、Ｓ７１８で上記のように求めた上体姿勢復元モーメントＺＭＰ換算値パターンを加算してなるパターンが今回歩容の目標ＺＭＰパターンとして決定される。なお、この処理は、Ｓ７１０においてΔaの高さの台形パターンを仮目標ＺＭＰパターンに加える処理と同様である。
【０４４１】
以下に仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算した理由を述べる。
【０４４２】
Ｓ７００のループにおいて生成される仮今回歩容は、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecを０（ＺＭＰrecの台形パターンの高さパラメータを０）にして生成されたものである。このようにしてＳ７００のループで最終的に生成された仮今回歩容では、その上体位置速度は、定常歩容に連続し、もしくは近づくが、上体姿勢角は、定常歩容の上体姿勢角からずれ、場合によっては発散してしまう。
【０４４３】
Ｓ７１８で求められた上体姿勢復元モーメントＺＭＰ換算値パターンは、上体姿勢角の定常歩容に対するずれを０に近づけるための上体姿勢角加速度を発生させるものである。
【０４４４】
しかし、Ｓ７００のループで最終的に得られた仮目標ＺＭＰパターンを修正することなく、Ｓ７１８で求められた上体姿勢復元モーメントＺＭＰ換算値パターンに応じた上体姿勢角加速度を発生させると、動力学的平衡条件（ロボットの重力と慣性力との合力が目標ＺＭＰに作用するモーメントが鉛直成分を除いて０になること）を満足させるために、上体水平位置軌道を前記仮今回歩容の上体水平位置軌道からずらさざるを得なくなる。そこで、本実施例では、上体水平位置軌道をＳ７００のループで最終的に得られるものからずらさなくて済むように、ＺＭＰrecによって仮目標ＺＭＰパターンを修正することとした。
【０４４５】
前記仮今回歩容の運動に加えて、Ｓ７１８で求めた上体姿勢復元モーメントＺＭＰ換算値パターンに対応する上体姿勢角加速度を発生させると、ＺＭＰ（運動によって発生する重力と慣性力の合力の鉛直成分を除くモーメントが０になる点）は上体姿勢復元モーメントＺＭＰ換算値だけずれる。したがって、逆に、仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算したパターンを目標ＺＭＰパターンとして、Ｓ７１８で求めた上体姿勢復元モーメントＺＭＰ換算値パターンに対応する上体傾斜モードの上体姿勢角加速度を発生させながら、目標ＺＭＰパターンを満足する今回歩容を生成すれば、前記仮今回歩容と同じ上体並進運動となる。
【０４４６】
以上が、仮目標ＺＭＰパターンに上体姿勢復元モーメントＺＭＰ換算値パターンを加算したパターンを目標ＺＭＰパターンとした理由である。
【０４４７】
次いでＳ７２２に進み、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差および仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を基に、今回歩容の逆位相腕振り角軌道が定常歩容の逆位相腕振り角軌道に近づくように、逆位相腕振り復元角加速度パターンが決定される。このパターンの決定方法は、Ｓ７１８で上体姿勢復元モーメントＺＭＰ換算値パターンを決定する方法と、変数名が次のように異なること以外は、ほぼ同じである。
【０４４８】
上体姿勢復元モーメントＺＭＰ換算値パターン→逆位相腕振り復元角加速度パターン
水平成分→モーメント鉛直成分
以下に詳細を説明する。ここで決定する逆位相腕振り復元角加速度パターンは、後述する今回歩容瞬時値の生成処理で、床反力モーメント鉛直成分許容範囲が十分に大きいものとなる期間（片脚支持期内の期間）において、逆位相腕振り角軌道を定常歩容につながらせる（近づける）ように修正するためのものである。
【０４４９】
この逆位相腕振り復元角加速度パターンは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図３６における第２旋回歩容の期間の逆位相腕振り復元角加速度の台形パターンと同様に、今回歩容の逆位相腕振り復元角加速度の台形パターンを設定し、台形の頂点（折れ点）の時刻は既知とする（より具体的には台形の折れ点の時刻を目標ＺＭＰの折れ点時刻に合わせる）と共に、台形高さを未知数とし、以下のように逆位相腕振り復元角加速度の台形高さ（パラメータ）が求められる。ただし、逆位相腕振り復元角加速度の台形パターンが立ち上がり始める時刻をTaとし、台形パターンから０に戻る時刻をTbとする。
【０４５０】
上記のように逆位相腕振り復元角加速度パターンの未知パラメータがひとつの場合には、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
【０４５１】
補足すると、１歩容の中での逆位相腕振り復元角加速度パターンを複雑にし、未知パラメータを２つ以上にして、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度との両者を定常歩容に連続につなげても良いが、逆位相腕振り復元角加速度パターンがジグザグに大きく変動し過ぎる恐れがある。
【０４５２】
前述のごとくＳ７０２で逆位相腕振り復元角加速度パターンの台形高さを０として求めた仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差を求め、これをθazerrとする。また、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を求め、これをvθzerrとする。
【０４５３】
ここで、逆位相腕振り復元角加速度パターンの台形高さをある値bzcurrとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第１旋回歩容が生成されると想定する。ただし、第１旋回歩容の逆位相腕振り復元角加速度パターンは、図２４のＳ３１４において求められた第１旋回歩容の逆位相腕振り復元角加速度パターン（高さが前記azcyc1である図３６の台形パターン）とある値bz1の和であるとする。
【０４５４】
このようにして生成された歩容を逆位相腕振り復元角加速度修正歩容と呼び、その終端（第１旋回歩容の終端）逆位相腕振り角と角速度をそれぞれθz1、vθz1とする。
【０４５５】
Ｓ０２４における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容（最終的にＳ３１４において決定された定常歩容初期逆位相腕振り角および角速度を初期値とし、逆位相腕振り復元角加速度パターンをＳ３１４において求められたパターン（高さがazcyc1である図３６の台形パターン）とした場合の定常歩容）の第１旋回歩容終端逆位相腕振り角と角速度をそれぞれθz1org、vθz1orgとする。
【０４５６】
ここで、Δθz1、Δvθz1を次のように定義する。
【０４５７】
Δθz1 =θz1−θz1org              …式１０５０
Δvθz1 =vθz1−vθz1org            …式１０５１
Δθz1およびΔvθz1は、逆位相腕振り復元角加速度修正歩容と本来の定常歩容を第１旋回歩容の終端まで生成した時点において、両者間における逆位相腕振り角の差及び角速度の差を意味する。もし、Δθz1およびΔvθz1が０になれば、逆位相腕振り復元角加速度修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、逆位相腕振り復元角加速度パターンの台形高さを前記azcyc2として第２旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
【０４５８】
したがって、Δθz1およびΔvθz1が０となる今回歩容台形高さbzcurr、第１旋回歩容台形高さbz1を求め、求めたbzcurrを今回歩容の台形高さとして最終的に決定すれば良い。
【０４５９】
ところで、ロボット１の逆位相腕振り角に関する動力学モデルが図１２に示すフライホイールFHazのような線形特性を持つことから、Δθz1およびΔvθz1は、今回歩容台形高さbzcurr、第１旋回歩容台形高さbz1、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角の差θzerr、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度の差vθzerrと以下の関係を持つ。
Δθz1＝cz11＊bzcurr＋cz12＊bz1＋θzerr＋ez1＊vθzerr
…式１０５２
Δvθz1＝cz21＊bzcurr＋cz22＊bz1＋ez2＊vθzerr
…式１０５３
だだし、cz11、cz12、cz21、cz22、ez1、ez2は、今回歩容、第１旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ（特に時間に関するパラメータ）などによって一義的に決定される係数である。
【０４６０】
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での逆位相腕振り角の差θzerrと角速度の差vθzerrが求められる。
【０４６１】
次いで、式１０５２，１０５３の係数であるcz11、cz12、cz21、cz22、ez1、ez2が、今回歩容、第１旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ（特に時間に関するパラメータ）などを基に求められる。
【０４６２】
次いで式１０５２、式１０５３の右辺が０となるように今回歩容台形高さbzcurr、第１旋回歩容台形高さbz1が決定される。すなわち、式１０５２、式１０５３の左辺を０とした連立方程式を解くことによって、bzcurr、bz1が求められる。
【０４６３】
最後に、今回歩容の逆位相腕振り復元角加速度の台形パターンの台形高さが、上記求めた今回歩容台形高さbzcurrに設定される。
【０４６４】
図１３に戻って、上記のごとくＳ０２８において今回歩容パラメータを修正した後、あるいはＳ０１６の判断結果がＮＯである場合には、Ｓ０３０に進み、今回歩容瞬時値が決定される。
【０４６５】
Ｓ０３０では、そのサブルーチンである図４５の処理が実行される。
【０４６６】
図４５のＳ１４００からＳ１４１１までは、図２５のＳ４００からＳ４１１までと同一の処理が行なわれ、次に、Ｓ１４１２のサブルーチンである図４６のＳ１０００〜Ｓ１０１８の処理が行なわれる。
【０４６７】
具体的には、まずＳ１０００において、目標上体ヨー角に現在時刻での基準上体ヨー角の値を代入する。また、腕姿勢逆位相腕振り角・角速度を除き、目標腕姿勢に現在時刻での基準腕姿勢の値を代入する。
【０４６８】
次いでＳ１００２に進み、現在時刻が、上体姿勢角・逆位相腕振り角復元期間（時刻Taから時刻Tbの期間）の間にあるか否かが判定される。Ｓ１００２の判定結果がＮＯであるならば、Ｓ１００４に進み、ＹＥＳであるならばＳ１００６に進む。
【０４６９】
Ｓ１００４では、上体傾斜角・逆位相腕振り角復元期間でない場合の上体水平加速度α、上体角加速度β、逆位相腕振り角加速度βa算出処理（図２６のＳ５０４からＳ５２８）と同様の処理を行う。
【０４７０】
Ｓ１００６に進む場合では、まず、Ｓ１００６において、仮に上体並進モードの運動をさせた場合に今回（時刻ｋ）目標ＺＭＰを満足するために必要な上体水平加速度αtmpを求める。
【０４７１】
次いでＳ１００８に進み、現在時刻における上体傾斜復元モーメントＺＭＰ換算値パターンの瞬間値ＺＭＰrecを、Ｓ７１８において決定した上体傾斜復元モーメントＺＭＰ換算値パターンに関するパラメータを基に算出する。
【０４７２】
次いでＳ１０１０に進み、現在時刻における逆位相腕振り復元角加速度パターンの瞬間値βarecを、Ｓ７２２において決定した逆位相腕振り復元角加速度パターンに関するパラメータを基に算出する。
【０４７３】
次いでＳ１０１２に進み、図示する式によって、上体傾斜モードの上体角加速度（上体傾斜角加速度）βが決定される。
【０４７４】
次いでＳ１０１４に進み、図示する式によって、上体水平加速度αが決定される。
【０４７５】
次いでＳ１０１６に進み、Ｓ１０１０で算出した逆位相腕振り復元角加速度パターンの瞬間値βarecと基準逆位相腕振り角加速度βaref（基準逆位相腕振り角を２階微分した値）の和を目標逆位相腕振り角加速度βaに代入する。
【０４７６】
次いでＳ１０１８に進み、上体水平加速度がαの場合の床反力水平成分Fxを求める。
【０４７７】
次いでＳ１４１４に進み、上体水平加速度と上体姿勢角加速度を積分して上体水平速度と上体姿勢角速度（上体傾斜角速度）を算出する。これをさらに積分して、上体水平位置と上体姿勢（上体傾斜角）を決定する。なお、上体姿勢のうちの上体ヨー角は、本参考例では基準上体ヨー角に決定される。
【０４７８】
次いでＳ１４１６に進み、逆位相腕振り加速度を積分して逆位相腕振り角速度を算出する。これをさらに積分して、逆位相腕振り角を決定する。
【０４７９】
以上のごとく、図１３のＳ０３０の処理が完了する。
【０４８０】
次いでＳ０３２に進み、歩容生成用時刻ｔをΔｔだけ増やし、Ｓ０１４に戻り、以上のごとく歩容生成を続ける。
【０４８１】
以上が、歩容生成装置１００における目標歩容生成処理である。
【０４８２】
図４を参照して本参考例に係る装置の動作をさらに説明すると、歩容生成装置１００において、上記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢（軌道）、目標腕姿勢（軌道）が、ロボット幾何学モデル（逆キネマティクス演算部）１０２に送出される。
【０４８３】
また、目標足平位置姿勢（軌道）、目標ＺＭＰ軌道（目標全床反力中心点軌道）、および目標全床反力（軌道）（目標床反力水平成分と目標床反力鉛直成分）は、複合コンプライアンス動作決定部１０４に送られると共に、目標床反力分配器１０６にも送られる。そして、目標床反力分配器１０６で、床反力は各足平２２Ｒ，２２Ｌに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部１０４に送られる。
【０４８４】
複合コンプライアンス動作決定部１０４から、機構変形補償付き修正目標足平位置姿勢（軌道）がロボット幾何学モデル１０２に送られる。ロボット幾何学モデル１０２は、目標上体位置姿勢（軌道）と機構変形補償付き修正目標足平位置姿勢（軌道）を入力されると、それらを満足する脚体２，２の１２個の関節（１０Ｒ（Ｌ）など）の関節変位指令（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の１２個の関節の変位を追従制御する。また、ロボット幾何学モデル１０２は、目標腕姿勢を満足する腕関節の変位指定（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の腕体の１２個の関節の変位を追従制御する。
【０４８５】
ロボット１に生じた床反力（詳しくは実各足床反力）は６軸力センサ５０によって検出される。その検出値は前記複合コンプライアンス動作決定部１０４に送られる。
【０４８６】
また、ロボット１に生じた実上体姿勢角偏差（目標上体姿勢と実上体姿勢（上体３の実際の姿勢）との偏差）のうちの姿勢傾斜角偏差θerrx，θerry（詳しくは目標上体姿勢のうちの鉛直方向に対する傾斜角に対する実上体姿勢のうちの鉛直方向に対する傾斜角の偏差で、ロール方向（Ｘ軸回り）の姿勢傾斜角偏差がθerrxであり、ピッチ方向（Ｙ軸回り）の姿勢傾斜角偏差がθerryである）が姿勢センサ５４を介して検出され、その検出値は姿勢傾斜安定化制御演算部１１２に送られる。この姿勢傾斜安定化制御演算部１１２で、ロボット１の実上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメント水平成分が算出されて複合コンプライアンス動作決定部１０４に送られる。
【０４８７】
より具体的には、本参考例では、補償全床反力モーメント水平成分Mdmdxyは、例えばＰＤ制御則を用いて次式により決定される。
【０４８８】
補償全床反力モーメント水平成分Mdmdxy
＝Kθb＊上体姿勢傾斜角偏差
＋Kωb＊上体姿勢傾斜角速度偏差
……ｄ２５
ここで、Ｋθｂ、Ｋωｂは所定のゲインである。また、上体姿勢傾斜角速度偏差は、上体姿勢傾斜角偏差の時間微分値であり、目標上体姿勢傾斜角速度に対する実上体姿勢傾斜角速度の偏差を意味する。また、上体姿勢傾斜角偏差は、より詳しくは、ロボット１の上体３のロール方向（Ｘ軸回り）の姿勢傾斜角偏差と、ピッチ方向（Ｙ軸回り）の姿勢傾斜角偏差とからなるベクトルである。
【０４８９】
また、ロボット１に生じた前記実上体姿勢角偏差のうちのヨー角偏差θerrz（詳しくは実上体姿勢角偏差のうちのヨー方向（Ｚ軸回り）の姿勢角偏差がθerrzである）が姿勢センサ５４を介して検出され、その検出値はヨー安定化制御演算部１１３に送られる。このヨー安定化制御演算部１１３で、ロボット１の実上体ヨー角および／または角速度を目標上体ヨー角および／または角速度に収束させるための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメント鉛直成分が算出されて複合コンプライアンス動作決定部１０４に送られる。複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメントが作用するように目標床反力を修正する。
【０４９０】
より具体的には、本参考例では、補償全床反力モーメント鉛直成分Mdmdzは、例えばＰＤ制御則を用いて次式により決定される。
【０４９１】
補償全床反力モーメント鉛直成分Mdmdz＝Kθbz＊上体ヨー角偏差
＋Kωbz＊上体ヨー角速度偏差
……ｄ２６
ここで、Ｋθbz、Ｋωbzは所定のゲインである。また、上体ヨー角速度偏差は、上体ヨー角偏差の時間微分値であり、目標上体ヨー角速度に対する実上体ヨー角速度の偏差を意味する。
【０４９２】
補足すると、補償全床反力モーメント鉛直成分Mdmdzを前記式ｄ２６により求めるとき、足平２２と床の間の鉛直軸まわり回転滑りまたは鉛直軸まわり回転振動を防止したいだけなら、Ｋθbｚを０にすれば良い。上体ヨー角偏差までも０に近づけようとすると、実床反力モーメント鉛直成分が大きくなる傾向があるからである。
【０４９３】
複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメント水平成分が作用するように目標床反力モーメント水平成分を修正し、さらに、目標歩容に動力学的に釣り合う目標全床反力中心点（目標ＺＭＰ）回りの目標床反力鉛直成分に補償全床反力モーメント鉛直成分を付加的に追加することによって目標床反力モーメント鉛直成分を修正する。
【０４９４】
複合コンプライアンス動作決定部１０４は、修正された目標床反力に、センサ検出値などから算出される実ロボット１の状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差（あるいは制御偏差の２乗）の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
【０４９５】
尚、この発明の要旨は歩容生成装置１００におけるロボット１の歩容生成にあり、上記した複合コンプライアンス動作決定部１０４などの構成および動作は、本出願人が先に出願した特開平１１−３００６６１号公報などに詳細に記載されているので、説明を以上に留める。
【０４９６】
Ｓ０２８において、今回歩容パラメータは、前述のごとく、今回歩容の終端発散成分が、定常旋回歩容の初期発散成分ｑ［０］を今回歩容の支持脚座標系から見た値であるｑ”に一致するように修正される。
【０４９７】
実は、発散成分とは、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容に収束するか否かを評価する指標である。収束する場合にちょうど、今回歩容の終端発散成分が、定常旋回初期発散成分ｑ［０］を今回歩容の支持脚座標系から見た値であるｑ”に一致するように、本来、発散成分は定義されなければならない。
【０４９８】
式１０で定義した発散成分は、実は、上記の性質を近似的に満足する発散成分である。
【０４９９】
したがって、本参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容の上体水平位置に収束する（近づく）ように、今回歩容パラメータを修正した、と言える。
【０５００】
これは、ＰＣＴ公開公報WO／02／40224のものと同様である。
【０５０１】
特に、本参考例においては、その条件（今回歩容が定常歩容に近づく）を満足するように、今回歩容の歩容パラメータのうちの目標ＺＭＰパターンを修正するようにした。図４７を参照して説明すると、同図に符合Ｂで示す軌道は、上記したように歩容の境界において発散成分が一致するように生成した上体水平位置軌道を示す。
【０５０２】
同図に符合Ａで示す軌道は、定常旋回歩容との境界における上体水平位置速度が一致するように今回歩容を生成し、続いて定常歩容を繰り返し生成した場合の上体水平位置軌道を示す。
【０５０３】
図示の如く、符合Ｂで示す軌道は、今回歩容と最初の定常旋回歩容との境界においては、一般的に符合Ａで示す軌道からずれているが、その後、徐々に符合Ａで示す軌道に収束し（近づき）、次の定常旋回歩容時期において符合Ａで示す軌道にほぼ一致する。このように、歩容境界で発散成分のみを一致させる歩容生成手法でも、歩容境界で位置速度両方を一致させる歩容生成手法と同様、歩容の発散を防止することができる。尚、同図に符合Ｃで示す例は、それらを考慮せずに軌道を生成した場合の例を示す。このような場合は、生成した軌道は経時的に発散してしまう。当然、目標ＺＭＰパターンを複雑なものにし、複数のパラメータを調整して、位置速度両方を一致させても良いが、目標ＺＭＰパターンがジグザグになる恐れがある。なお、位置速度両方を一致させれば、発散成分も一致するから、位置速度両方を一致させる方法も発散成分を一致させる方法の特殊例であると言える。
【０５０４】
またさらに、本参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が定常旋回歩容の上体姿勢角に収束し（近づき）、もしくは一致するように、今回歩容パラメータを修正した、と言える。但し、厳密には、今回歩容直後の第１旋回歩容だけは、前記の如く求めた第１旋回歩容台形高さb1，bz1によって修正された歩容にする必要がある。別の言い方をすれば、今回歩容と第１旋回歩容とを合わせた歩容を今回歩容と見なせば、本参考例においては、上記の如く歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が第２旋回歩容と第１旋回歩容とからなる定常歩容の上体姿勢角に収束し（近づき）、もしくは一致するように、今回歩容パラメータを修正した、と言える。
【０５０５】
次に、本参考例の変形態様を以下にいくつか説明する。なお、以下に説明する変形態様は、後述の各実施形態においても同様である。
【０５０６】
本参考例では、理解を容易にするために、床反力水平成分許容範囲は、前後方向（X軸方向）成分と左右方向（Y軸方向）成分それぞれ独立に設定できることとしたが、前後方向と左右方向の関係式で表した方が、よりスリップし難い歩容が生成される。
【０５０７】
例えば、次式のようにいわゆる摩擦円を許容範囲としても良い。
【０５０８】
（床反力水平成分のX成分）＊（床反力水平成分のX成分）
＋（床反力水平成分のY成分）＊（床反力水平成分のY成分）
≦(ka＊μ＊Fz)＊(ka＊μ＊Fz)
…式５９
ただし、Fzは、目標床反力鉛直成分をμは摩擦係数、kaは１以下の正の定数を表す。
【０５０９】
ただし、以上のように、床反力水平成分許容範囲を前後方向と左右方向の関係式で表す場合、許容範囲を同時にあるいは交互に満足するように、サジタルプレーン上での運動とラテラルプレーン上での運動を同時あるいは交互に求める必要がある。
【０５１０】
また、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とを上記のごとく別々に設定する代わりに、床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにしても良い。床反力水平成分が大きくなるにつれ、床反力モーメント鉛直成分の摩擦限界は、小さくなる。また、床反力モーメント鉛直成分が大きくなるにつれ、床反力水平成分の摩擦限界は、小さくなる。したがって、このことを鑑みて床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにした方が、より現実の摩擦限界特性に近い許容範囲を設定することができる。具体的には、床反力水平成分の絶対値と床反力モーメント鉛直成分の絶対値との重み付き平均に対して許容範囲を設定しても良い。
【０５１１】
前記参考例では、床反力水平成分と目標ＺＭＰまわりの床反力モーメント水平成分を適切な値にするために、上体傾斜モードと上体並進モードとの２つの運動モードを用いたが、これら以外の運動モードを用いても良い。
【０５１２】
例えば、図４８のように、股関節を中心に上体姿勢を回転させると、全体重心まわりの角運動量が変化すると共に全体重心も変化する。この運動と前記上体並進モードをある所定の割合で重ね合わせると（合成すると）、前記上体傾斜モードとほとんど同じ運動になり、床反力水平成分が発生しなくなる。したがって、これを改めて前記上体傾斜モードとみなせば、本参考例のアルゴリズムにしたがって、同様の歩容を生成することができる。
【０５１３】
したがって、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生の割合が異なるふたつの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ＺＭＰまわりの床反力モーメントとを発生させることができるからである。
【０５１４】
また、上体姿勢を変化させる運動モード以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ＺＭＰまわりの床反力モーメントが発生できる運動モードを選ぶことが好ましい。
【０５１５】
例えば、左右の腕体の先端位置を同一方向に振りまわす運動モード、接地していない（空中に存在する）足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に０に戻すべきである。なお、左右の腕体の先端位置を同一方向に振りまわす運動モードと逆位相腕振りモードとを併用してもよいことはもちろんである。
【０５１６】
また、３つ以上の運動モードを用いても良い。
【０５１７】
また、選択した運動モードのうちの少なくとも２つは、その運動モードによる床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなる（各運動モードの挙動を一義的に決定できない）からである。
【０５１８】
さらにできる限り、床反力水平成分をあまり変化させないで目標ＺＭＰまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ＺＭＰまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
【０５１９】
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。このようにすると、運動モードの変位が小さくなるからである。
【０５２０】
また、床反力モーメント鉛直成分が許容範囲を越えないようにするために（スピン力をキャンセルするために）、逆位相腕振りモードの代わりに、上体ヨー回転モードを用いても良い。上体ヨー回転モードを用いる場合には、ロボット１の上体３を腰寄りの部分（例えば図１の５４の部材の下側の部分）とその上側の部分（例えば図１の５４の部材の上側の部分）とに分割し、上側の部分が腰寄りの部分に対してヨー方向に（例えば上体３の体幹軸回り）に回転し得るように設けておくことが好ましい。このようにすると、脚体２，２の姿勢に影響を及ぼすことなく、上体３の上側の部分を回転させて、床反力モーメント鉛直成分を調整することができる。このようにした場合の参考例は、例えば前記参考例で逆位相腕振り角、その角速度およびその角加速度を決定する代わりに、上体３の上側の部分の回転角、その角速度およびその角加速度を決定するようにすればよい。この場合、両腕体５，５は、例えば上体３の上側の部分に対する相対位置を一定とすればよい。但し、上体３の上側の部分のヨー回転に加えて、両腕体５，５の逆位相腕振り動作を加えてもよいことはもちろんである。
【０５２１】
また、床反力モーメント鉛直成分が発生するものであれば、腕、上体以外の部位を変位させる運動モードを用いても良い。
【０５２２】
例えば、空中期において、両脚先端を前後逆方向に動かすモードを用いても良い。
【０５２３】
あるいは、床反力モーメント鉛直成分が発生するいくつかの運動モードを併用しても良い。例えば、逆位相腕振りモードと上体ヨー回転モードを併用しても良い。
【０５２４】
また、上体ヨー回転モードおよび逆位相腕振りモードは、全体重心位置が変わらないように（言い換えると床反力水平成分を発生させずに）床反力モーメント鉛直成分を発生させるモードであるが、全体重心位置が変わってしまう（言い換えると床反力水平成分を発生してしまう）運動でも良い。上体並進モードと組み合わせることにより、床反力水平成分を調整することができるからである。
【０５２５】
前記参考例に用いた動力学モデル（図１２の動力学モデル）以外にも以下のモデルを用いても良い。
１）図４９に示したように複数のリンクに質点を設定した非線形なモデル（多質点モデル）。このモデルの各リンクには、イナーシャ（慣性モーメント）が設定されていてもよい。
２）本願出願人によるＰＣＴ公開公報WO／02／40224に示された３質点モデル
３）上体ヨー回転モードあるいは逆位相腕振りモードによって生じる慣性力のモーメントを無視したモデル。
４）重力と慣性力との合力（またはこれと釣り合う床反力）と上体並進運動との関係を表す部分モデルと、上記合力と上体姿勢回転運動（上体傾斜運動と上体ヨー回転運動）の関係を表す部分モデルとを分離して持つ分離型モデル。例えば、図１２に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図１２に示すフライホイールは、上記合力と上体姿勢回転運動との関係を表す部分モデルである。
【０５２６】
なお、上記１）〜４）のいずれの場合でも、慣性力のモーメント鉛直成分を発生させる運動モードは必要である。
【０５２７】
また、各処理で用いられるモデルは同一でも良いし、処理に応じて適宜、モデルを使い分けても良い。例えば、前記定常歩容は今回歩容の終端状態を決定するためだけに生成されるものであるので、その定常歩容の動力学的な精度に対する要求は、今回歩容に比べて小さい。そこで、例えば、今回歩容の生成処理では、図１２の動力学モデル（３質点＋フライホイールのモデル）を用いる一方、定常歩容の生成処理（特に図２１のＳ４０８、Ｓ４１２）では、各脚体２の質量を無視し、上体３に対応する上体質点３ｍと、フライホールFHx、ＦHy、ＦHaz、ＦHbzとで構成される動力学モデル（図１２のモデルで脚質点２ｍ，２ｍを除去した１質点＋フライホイールのモデル）を用いて定常歩容を生成するようにしてもよい。この場合の定常歩容の生成処理では、前記参考例において、脚質点２ｍの質量を０として前記図２５のＳ４０８、Ｓ４１２の処理を行なうようにすればよい。このようにすると、定常歩容の生成処理における演算量を大幅に削減できる。
【０５２８】
尚、前記参考例において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
【０５２９】
また、前記参考例を２足移動ロボットに関して説明してきたが、３足以上の多脚ロボットにも応用することができる。
【０５３０】
前記参考例のごとく、探索手法を用いたり、部分的に解析手法を用いたりして、定常歩容の初期状態（主に初期上体水平位置速度、初期上体鉛直位置速度および逆位相腕振り角・角速度のこと）を決定する手法の代わりに、あらかじめ、上記手法を用いて様々な定常歩容パラメータに対して計算しておき、定常歩容パラメータと定常歩容の初期状態との関係をマップ化あるいは近似式化して記憶して置き、実移動時には、マップ化あるいは近似式化された上記関係を基に、定常歩容の初期値を決定しても良い。
【０５３１】
さらには、マップ化あるいは近似式化された上記関係と上記関数ｆを合成した関数をマップ化あるいは近似式化して記憶しても良い。すなわち、前記した足平軌道パラメータ、床反力鉛直成分軌道パラメータ等からなる定常歩容パラメータから、定常歩容の発散成分を直接求める関数をマップ化あるいは近似式化して記憶しても良い。例えば、複数種類の代表的な定常歩容パラメータの組のそれぞれに対して、事前に定常歩容を生成しておき、各組の定常歩容パラメータに対する定常歩容の初期状態（図１３のＳ０２４で求めるもの）を求めておき、さらにその各組の定常歩容パラメータと、定常歩容初期状態との関係を表すマップをあらかじめ作成しておく。そして、目標歩容を生成する際に、決定された定常歩容パラメータの組から、上記マップに基づいて選択あるいは補間によって定常歩容初期状態を求めるようにすればよい。このようにすれば、今回歩容の生成毎に、定常歩容を生成する必要がなくなり、目標歩容生成処理の演算量を大幅に削減できる。
【０５３２】
定常歩容につなげる（近づける）ための今回歩容の修正方法として、本参考例では、今回歩容の目標ＺＭＰパラメータを修正したが、それ以外のパラメータを修正しても良い。
【０５３３】
たとえば、今回歩容の遊脚の空中での軌道を変えても良い。また、たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、遊脚を離床後すばやく前方に移動させて遊脚重心位置を前方にずらす。こうすることにより、目標ＺＭＰを満足するための上体水平位置は、前方により一層加速せざるを得なくなる。この結果、上体水平位置が今回歩容終端において、より一層前方に移動し、定常歩容に一致させることができる。
【０５３４】
また、目標ＺＭＰパラメータを修正する代わりに、今回歩容の周期を修正しても良い。たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、今回歩容の周期を長くすれば良い。今回歩容の周期を長くすることで、上体水平位置が移動する時間が延び、それだけ前方に移動できるからである。
【０５３５】
ただし、探索手法によって、上体水平位置等の適正値を決定するときに、目標ＺＭＰパラメータを修正する場合では、目標ＺＭＰの修正量にほぼ比例して、今回歩容終端上体水平位置が変化するので、上記適正値の探索回数が少なくて済む。これに対して、遊脚重心軌道や歩容の周期を修正する場合には、その修正に対して、今回歩容終端上体水平位置が、かなり非線形に変化するので、上記適正値の探索により多くの探索回数を要する。
【０５３６】
定常歩容につなげる（近づける）ための今回歩容の修正方法として、本参考例では、今回歩容の目標ＺＭＰパラメータを修正した。この方法では、場合によっては、目標ＺＭＰパラメータの修正量（前記図３４の修正量a）が過大になることがある。たとえば、その場でホッピングしている歩容からいきなり高速で移動する要求（走行要求）が与えられると、高速の定常歩容（走行の定常歩容）につなげる（近づける）ために、目標ＺＭＰパラメータは、進行方向に対して後ろに極端に大きくずらす必要が生じる。この場合には、上記したように目標ＺＭＰパラメータ以外の歩容パラメータも修正することが望ましい。但し、この場合では、実は、急激な加速を要求すること自体に無理があったわけであるから、要求値自身を修正しても良い。
【０５３７】
要求値の修正を行なう場合には、例えば、とりあえず本参考例に示した手順に従って、要求（要求パラメータ）を満足する定常歩容を求め、この定常歩容につながるように今回歩容パラメータを決定した時点で、今回歩容の目標ＺＭＰ軌道の安定余裕が少なくなり過ぎたか否かを判定する。そして、安定余裕が少なくなり過ぎた場合（いわゆる支持多角形から目標ＺＭＰが外れたり、支持多角形の端部付近に目標ＺＭＰが位置するような場合）には、要求を修正するようにすれば良い。
【０５３８】
または、あらかじめ歩容の加減速度（次回歩容初期速度−今回歩容初期速度）／今回歩容の周期）の許容範囲を設定して置き、要求（歩容周期に関する要求パラメータ）を受けた時点で、該要求に対応する加減速度を求め、その求めた加減速度が許容範囲を越えていたら、許容範囲になるように、要求を修正しても良い。
【０５３９】
補足すると、前記ΔMｐ、ΔFp、ΔMｒ、ΔFｒ、ΔMazおよびΔMbzは、上記のごとく単純な動力学モデルを用いる場合には、動力学演算により解析的に求めても良いが、一般的なより複雑な動力学モデルを用いる場合には、上体３を上体並進モードで微小量だけ加速または上体傾斜モードで微小量だけ加速させた場合の床反力を求め、加速させなかった場合の床反力との差を求め、この差を上記微小量で割ることによって求めれば良い。
【０５４０】
また、あらかじめ標準的な歩容におけるΔMｐ、ΔFp、ΔMｒ、ΔFｒ、ΔMaz、ΔMbzおよびΔMｐ／ΔMｒなどのそれぞれの平均値を求めておいて、それを用いても良い。ΔMｐ、ΔFp、ΔMｒ、ΔFｒ、ΔMaz、ΔMbzおよびΔMｐ／ΔMｒは、状態（姿勢とその変化率）によって変わるので、各瞬間の状態ごとに求める方法に較べて、精度は若干低下するが、上記モデルよりも複雑なモデルを用いた場合には、演算量を大幅に低減できる。
【０５４１】
今回歩容の逆位相腕振り復元角加速度パターンの台形高さbzcurrを決定する方法として、以下の方法を用いても良い。
【０５４２】
前記逆位相腕振り復元角加速度修正歩容（図４２のＳ７２２の説明を参照）の今回歩容終端時点での逆位相腕振り角と角速度をそれぞれθzcurr、vθzcurrとし、これらと、定常歩容の逆位相腕振り角、角速度との差をΔθzcerr、Δvθzcerrとする。
【０５４３】
歩容周期をインターバルとし、仮今回歩容の終端逆位相腕振り角、角速度と定常歩容の初期逆位相腕振り角、角速度との差θzerr、vθzerrを前回状態、bzcurrを入力、Δθzcerr、Δvθzcerrを今回状態とする離散系の状態方程式を立てて、Δθzcerr、Δvθzcerrを０に収束させるように、現代制御理論等を用いてフィードバック則を決定し、これに基づいてbzcurrを求めても良い。
【０５４４】
今回歩容およびまたは定常歩容の逆位相腕振り復元角加速度βarecは、台形パターンとせず、各瞬間において、目標逆位相腕振り角・角速度と基準逆位相腕振り角・角速度との差などを基に、その差が０に収束するように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βarecの値を決定しても良い。
【０５４５】
今回歩容の逆位相腕振り復元角加速度βarecは、台形パターンとせず、各瞬間において今回歩容の目標逆位相腕振り角・角速度を基に、これらが第１旋回歩容の初期逆位相腕振り角・角速度に近づくように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βarecを決定しても良い。
【０５４６】
斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分許容範囲の代わりに、並進床反力の床面平行成分（床面に平行な成分）、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分（これは摩擦力に比例する）の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分（摩擦力）の許容範囲を設定する場合に関して説明（この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である）すると、該摩擦力は、床面の水平面に対する傾斜角度θf（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式７２の関係が成立する。従って、前記参考例と同様のアルゴリズムに歩容を生成する場合、この式７２の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式７２の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
【０５４７】
摩擦力＝床反力水平成分＊cos(θf)−床反力鉛直成分＊sin(θf)
…式７２
また、斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力モーメント鉛直成分は、式１０７２によって床面摩擦力法線方向モーメントに変換することができるので、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち床面摩擦力法線方向モーメントの許容範囲の許容範囲を設定するようにしてもよい。
【０５４８】
床面摩擦力法線方向モーメント＝床反力モーメント鉛直成分＊cos(θf)
…式１０７２
今回歩容のパラメータ決定は、前記参考例のように前回歩容が完了した時点で行う以外に、本願出願人によるＰＣＴ公開公報WO／02／40224に記述されているように、今回歩容の生成途中で、再決定しても良い。こうすることにより、演算量は増えるが、歩容に対する要求に変更があった時に即応できるからである。
【０５４９】
また、歩容の修正（今回歩容パラメータを再決定すること）が、今回制御周期で間に合わない場合には、とりあえず今回は、修正しない歩容あるいは暫定的に修正した歩容（探索途中の歩容であって、完全には、探索完了条件（歩容境界条件のずれが許容値以内に入っていること）を満足していない歩容）を出力し、次回制御周期までに、あるいは複数制御周期後までに（暫定的でない）適切な修正歩容にしても良い。修正された目標ＺＭＰ軌道と目標床反力鉛直成分軌道は連続であり、短時間後では、これらが急激に変化することはないので、今回歩容の目標ＺＭＰ軌道と目標床反力鉛直成分軌道が若干ぎざぎざになるだけで、ほとんど問題はない。
【０５５０】
また、前記参考例では、図５の走行歩容を生成する場合を例に採って説明したが、ロボット１の歩行歩容を生成する場合でも、前記参考例と同様に目標歩容を生成できる。この場合には、例えば前記参考例において、目標床反力鉛直成分を前記図６に示したものに代えて、例えば図５０に示すようなパターンで設定すればよい。この例では、床反力鉛直成分軌道は、両脚支持期では床反力鉛直成分の増加側に凸の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸の台形状に設定される。なお、台形部分の高さＣ1、Ｃ2の設定方法などの詳細は、例えば本願出願人によるＰＣＴ公開公報WO／03／057425／A1に詳細に説明されているのでここでの説明は省略する。
【０５５１】
次に、以上説明した参考例およびその変形態様を基礎として、本発明の第１実施形態を図５３〜図５８を参照して説明する。なお、本実施形態の説明において、前記参考例と同一構成部分もしくは同一機能部分については前記参考例と同一の参照符号を用いて説明を省略する。特に、本実施形態は、先にも述べたように、前記図１〜図３および図５〜図１２を参照して説明した事項は、前記参考例と同一である。
【０５５２】
本実施形態が前記参考例と相違する点の概要を説明すると、本実施形態では、目標上体姿勢角と実上体姿勢角の差である実上体姿勢角偏差（上体３の鉛直方向に対する傾き角の偏差およびヨー角の偏差）、及び／又はその変化率を０に近づけるために、コンプライアンス制御への目標床反力を操作することに加え、目標歩容も修正するようにした。特に、実上体姿勢偏差のうちのヨー角成分及び／又はその角速度に応じて、目標歩容に動力学的に釣り合う（目標歩容の運動の慣性力と重力との合力が目標 ＺＭＰまわりに発生するモーメントの鉛直成分に釣り合う）目標ＺＭＰまわりの床反力モーメントの鉛直成分も修正するようにした。
【０５５３】
本実施形態における制御ユニット６０の機能的構成を表すブロック図を図５３に示す。以下、本実施形態における制御ユニット６０の機能的構成が前記参考例のもの（図４のもの）と相違する点を説明する。
【０５５４】
本実施形態においては、姿勢傾斜安定化制御演算部１１２において算出される補償全床反力モーメント水平成分Mdmdxyは、補償全床反力モーメント水平成分分配器１１０に入力される。補償全床反力モーメント水平成分分配器１１０は、補償全床反力モーメント水平成分Mdmdxyを、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とに分配する。換言すれば、実上体姿勢傾斜角偏差を基に、姿勢傾斜安定化制御演算部１１２及び補償全床反力モーメント水平成分分配器１１０により、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とが決定される。
【０５５５】
具体的には、補償全床反力モーメント水平成分分配器１１０においては、まず、モデル操作床反力モーメント水平成分が次式で決定される。なお、床反力モーメント水平成分許容範囲は、後述するごとく歩容生成装置１００において決定される。
【０５５６】
Mdmdxy＞床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分＝−Mdmdxy
＋床反力モーメント水平成分許容範囲上限値
Mdmdxy＜床反力モーメント水平成分許容範囲下限値である場合
モデル操作床反力モーメント水平成分＝−Mdmdxy
＋床反力モーメント水平成分許容範囲下限値
床反力モーメント水平成分許容範囲下限値≦Mdmdxy、且つ、Mdmdxy≦床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分＝０
……式ｄ２７ａ
次に、コンプライアンス制御用目標床反力モーメント水平成分が次式で決定される。
【０５５７】
コンプライアンス制御用目標床反力モーメント水平成分
＝Mdmdxy＋モデル操作床反力モーメント水平成分
……式ｄ２７ｂ
従って、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がMdmdxyに等しくなるようにそれらの床反力モーメント水平成分が決定される。
【０５５８】
上記のような演算を行なう補償全床反力モーメント水平成分分配器１１０をブロック図で表すと、図５４に示すようになる。
【０５５９】
また、ヨー安定化制御演算部１１３において前記参考例と同様に決定された補償全床反力モーメント鉛直成分Mdmdz（前記式ｄ２６を参照）は、モデル操作床反力モーメント鉛直成分決定器１１１に入力される。モデル操作床反力モーメント鉛直成分決定器１１１は、補償全床反力モーメント鉛直成分Mdmdzを基に、モデル操作床反力モーメント鉛直成分を決定する。換言すれば、実上体姿勢角偏差のうちの上体ヨー角偏差を基に、ヨー安定化制御演算部１１３及びモデル操作床反力モーメント鉛直成分決定器１１１により、補償全床反力モーメント鉛直成分Mdmdzとモデル操作床反力モーメント鉛直成分とが決定される。
【０５６０】
具体的には、モデル操作床反力モーメント鉛直成分決定器１１１において、モデル操作床反力モーメント鉛直成分が次式で決定される。なお、床反力モーメント鉛直成分補償量許容範囲は、後述するごとく歩容生成装置１００において決定される。
【０５６１】
Mdmdz＞床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分＝−Mdmdz
＋床反力モーメント鉛直成分補償量許容範囲上限値
Mdmdz＜床反力モーメント鉛直成分補償量許容範囲下限値である場合
モデル操作床反力モーメント鉛直成分＝−Mdmdz
＋床反力モーメント鉛直成分補償量許容範囲下限値
床反力モーメント鉛直成分補償量許容範囲下限値≦Mdmdz、且つ、Mdmdz≦床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分＝０
……式ｄ２６b
上記のような演算を行なうモデル操作床反力モーメント鉛直成分決定器１１１をブロック図で表すと、図５５に示すようになる。従って、モデル操作床反力モーメント鉛直成分は、補償全床反力モーメント鉛直成分Ｍdmdzのうち、床反力モーメント鉛直成分補償量許容範囲を逸脱した分の符号を反転させたものに設定される。
【０５６２】
コンプライアンス制御用目標床反力モーメント水平成分および補償全床反力モーメント鉛直成分Mdmdzは、複合コンプライアンス動作決定部１０４に送られる。
【０５６３】
モデル操作床反力モーメント水平成分および鉛直成分は、歩容生成装置１００に送られる。
【０５６４】
尚、補償全床反力モーメント鉛直成分Mdmdzの代わりに、補償全床反力モーメント鉛直成分Mdmdzとモデル操作床反力モーメント鉛直成分との和を、コンプライアンス制御用目標値として、複合コンプライアンス動作決定部１０４に送っても良い。
【０５６５】
複合コンプライアンス動作決定部１０４は、歩容生成装置１００が生成する目標歩容の運動にロボット１の運動を追従させつつ、歩容生成装置１００が生成する目標全床反力にコンプライアンス制御用目標床反力モーメント水平成分と補償全床反力モーメント鉛直成分Mdmdzを加えることによって修正される目標全床反力に実床反力が近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。
【０５６６】
この場合、ロボット１の足平位置姿勢や床反力の全ての状態を目標に一致させることは事実上不可能であるので、前記参考例と同様、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。
【０５６７】
詳細は後述するが、歩容生成装置１００は、該歩容生成装置１００において決定される目標ＺＭＰまわりの床反力モーメント水平成分がモデル操作床反力モーメント水平成分となるように動力学モデルを用いて目標歩容の運動（特に上体位置姿勢軌道）を生成する。さらに、歩容生成装置１００は、モデル操作床反力モーメントが０であるとして生成された目標歩容（仮目標歩容）に動力学的に釣り合う目標全床反力中心点（目標ＺＭＰ）回りの目標床反力モーメント鉛直成分にモデル操作床反力モーメント鉛直成分が付加的に発生するように目標歩容の運動（特に腕振り軌道）を修正する。
【０５６８】
これら以外の、制御ユニット６０の機能的構成は、前記参考例と同一である。補足すると、前記参考例で生成した目標歩容は、本実施形態で、前記モデル操作床反力モーメント水平成分と、モデル操作床反力モーメント鉛直成分とを定常的に０に設定した場合に生成される目標歩容と同じである。
【０５６９】
第１実施形態における歩容生成装置１００の動作（歩容生成処理）をそのメインフローチャートである図５６を用いて以下に詳説する。Ｓ３０１０からＳ３０２８までは、前記参考例の図１３のＳ０１０からＳ０２８と同様の処理を行う。
【０５７０】
次いで、Ｓ３０３０に進み、コンプライアンス制御用の目標ＺＭＰまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータが決定される。
【０５７１】
なお、床反力モーメント水平成分を、床反力鉛直成分で割ったものが、ＺＭＰ（床反力中心点）の目標ＺＭＰからのずれ量を表すものとなる。従って、床反力モーメント水平成分許容範囲を、床反力鉛直成分で割ることによって、床反力中心点に変換したＺＭＰ許容範囲（床反力中心点許容範囲）のパラメータを設定するようにしてもよい。
【０５７２】
補足すると、Ｓ３０３０で決定するコンプライアンス制御用の床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分補償量許容範囲のパラメータとを基に、後述する今回歩容瞬時値決定サブルーチン（Ｓ３０３２のサブルーチン）において、それらの許容範囲の瞬時値が決定され、それが、前記補償全床反力モーメント水平成分分配器１１０およびモデル操作床反力モーメント鉛直成分決定器１１１における前記の処理に用いられる。
【０５７３】
この床反力モーメント水平成分許容範囲については、本願出願人によるＰＣＴ出願ＰＣＴ／ＪＰ０３／００４３５に床反力モーメント許容範囲として設定方法が詳細に記載されているので、本明細書では、これ以上の説明を省略する。
【０５７４】
前記床反力モーメント鉛直成分補償量は、歩容生成装置１００において、仮に、床反力モーメント鉛直成分が歩容生成用の床反力モーメント鉛直成分許容範囲（これはＳ３０２６において設定される）内に制限された目標歩容を生成した場合に、目標歩容の運動が発生する床反力モーメントに付加することができる床反力モーメント鉛直成分の補償量を意味する。したがって、歩容生成用の床反力モーメント鉛直成分許容範囲が実際の摩擦限界よりも十分に狭く設定されていなければ、床反力モーメント鉛直成分補償量許容範囲を広く設定することはできない。
【０５７５】
床反力モーメント鉛直成分補償量許容範囲は、歩容生成用の床反力モーメント鉛直成分許容範囲（前記図４１を参照）と相似形に設定すれば良い。また、前記図５の走行歩容の空中期では、コンプライアンス制御用の床反力モーメント鉛直成分補償量許容範囲は、上限値が０、下限値が０の領域に設定される。
【０５７６】
図５６に戻って、上記のごとくＳ３０３０においてコンプライアンス制御用の目標ＺＭＰまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータを決定した後、あるいはＳ３０１６の判断結果がＮＯである場合には、Ｓ３０３２に進み、今回歩容瞬時値が決定される。Ｓ３０３２では、目標ＺＭＰまわりに前記式ｄ２７ａに従って決定されるモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値が決定される。ただし、今回歩容に釣り合う（今回歩容の運動の慣性力と重力との合力が目標ＺＭＰまわりに発生する慣性力モーメントの鉛直成分に釣り合う）床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲を越えないように今回歩容瞬時値が決定される。
【０５７７】
具体的には、図５７、図５８のフローチャートにしたがって歩容瞬時値が決定される。すなわち、Ｓ３０３０では、まず、図５７のＳ３４００からＳ３４１１までの処理が実行される。これらのＳ３４００からＳ３４１１までの処理は、前述した図４５のＳ１４００からＳ１４１１までの処理と全く同一である。
【０５７８】
次いで、Ｓ３４１２に進み、前記図５６のＳ３０３０で決定したコンプライアンス制御用の床反力モーメント水平成分許容範囲および床反力モーメント鉛直成分補償量許容範囲のパラメータを基に、現在時刻での床反力モーメント水平成分許容範囲[Mxymin，Mxymax]と床反力モーメント鉛直成分補償量許容範囲[Mzcmin，Mzcmax]の瞬時値（現在時刻ｔの今回値）が求められる。
【０５７９】
求められた床反力モーメント水平成分許容範囲は、前記補償全床反力モーメント水平成分分配器１１０（図５３参照）に送られる。そして、この分配器１１０で前記式ｄ２７ａにより算出されたモデル操作床反力モーメントの今回値（現在時刻ｔの値）が歩容生成装置１００に与えられる。
【０５８０】
また、求められた床反力モーメント鉛直成分補償量許容範囲は、前記モデル操作床反力モーメント鉛直成分決定器１１１（図５３参照）に送られる。そして、このモデル操作床反力モーメント鉛直成分決定器１１１で前記式ｄ２６bにより算出されたモデル操作床反力モーメント鉛直成分の今回値（現在時刻ｔの値）が歩容生成装置１００に与えられる。
【０５８１】
次いで、歩容生成装置１００の処理は、Ｓ３４１４に進み、補償全床反力モーメント分配器１１０から与えられたモデル操作床反力モーメント水平成分が目標ＺＭＰまわりに発生するように、今回歩容の上体水平加速度と上体姿勢傾斜角加速とが決定される。ただし、床反力水平成分Fxが、Ｓ３４１０で決定された床反力水平成分許容範囲[Fxmin，Fxmax]を越えないように上体水平加速度および上体姿勢角加速度（上体傾斜角加速度）が決定される。
【０５８２】
言い換えると、ロボット１の運動の慣性力と重力との合力が目標ＺＭＰまわりに作用するモーメント水平成分がモデル操作床反力モーメント水平成分の符号を反転したモーメントになるように、今回歩容の上体水平加速度と上体姿勢角加速（上体傾斜角加速度）とが決定される。ただし、慣性力水平成分の符号を反転した力が床反力水平成分許容範囲[Fxmin，Fxmax]を越えないように上体水平加速度および上体姿勢傾斜角加速度が決定される。
【０５８３】
S３４１４では、具体的には、図５８に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度とが決定される。本フローチャートは、Ｓ３１０４およびＳ３１３０を除いて、前記図２６と同様の処理が行われる。S３１０４およびS３１３０では、図２６のS５０４およびS５３０と異なり、ロボット１の前回瞬時歩容状態（時刻ｋ−１の歩容状態）から、上体傾斜モードの角加速度を０にして（より正確には上体傾斜モードの角加速度を基準上体姿勢角加速度に一致させて）、上体並進モードの運動をロボット１にさせた場合に今回（時刻ｋ）の目標ＺＭＰまわりに前記モデル操作床反力モーメント水平成分が発生するために必要な上体水平加速度（Ｓ３１０４ではαtmp、Ｓ３１３０ではα）が求められる。
【０５８４】
これ以外の処理は図２６の処理と同じである。
【０５８５】
以上のごとくS３４１４の処理を行った後、S３４１６に進み、図４５のＳ１４１４と同一の処理が実行され、今回歩容の上体水平位置および上体姿勢傾斜角（詳しくはそれらの現在時刻ｔにおける今回値）が決定される。
【０５８６】
次いでS３４１８に進み、図４５のＳ１４１６と同一の処理が実行され、今回歩容の逆位相腕振り角および角速度（詳しくはそれらの現在時刻ｔにおける今回値）が決定される。
【０５８７】
これにより、図５６のＳ３０３２の処理が完了する。
【０５８８】
次いで図５６のＳ３０３４に進み、目標ＺＭＰまわりにモデル操作床反力モーメント鉛直成分が付加的に発生するように、Ｓ３０３２で生成した今回歩容瞬時値を修正する。
【０５８９】
具体的には、モデル操作床反力モーメント鉛直成分に対応する逆位相腕振り角加速度の修正量βaaddを次式によって求める。
【０５９０】
逆位相腕振り角加速度の修正量βaadd
＝モデル操作床反力モーメント鉛直成分
／逆位相腕振り運動の等価慣性モーメントΔMaz
さらに、βaaddを制御周期の期間積分して、逆位相腕振り角速度の修正量を求め、さらにこれを積分して逆位相腕振り角の修正量を求める。
【０５９１】
最後に、Ｓ３０３２で生成した今回歩容の逆位相腕振り角および角速度にそれぞれ、逆位相腕振り角速度の修正量および逆位相腕振り角の修正量を加えることにより、今回歩容の逆位相腕振り角および角速度を修正する。
【０５９２】
次いでＳ３０３６に進み、時刻ｔに制御周期Δｔを加え、再び、Ｓ３０１４に戻り、制御周期毎のタイマー割り込みを待つ。
【０５９３】
第１実施形態では、以上のごとく、歩容生成装置１００における目標歩容生成処理が行なわれ、目標上体位置姿勢、目標足平位置姿勢、目標腕姿勢（逆位相腕振り角を含む）、目標ＺＭＰおよび目標全床反力の瞬時値が逐次決定されて出力される。
【０５９４】
この場合、目標全床反力は、コンプライアンス制御に必要な成分だけを出力しても良い。なお、目標ＺＭＰは、目標全床反力に含まれるが特に重要であるので、あえて出力として挙げた。また、複合コンプライアンス制御装置（図５３の点線で囲った部分）に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、コンプライアンス制御に対しては、目標ＺＭＰまわりの床反力モーメント水平成分が０になることを目標とする目標床反力（本来の意味での目標ＺＭＰを満足する目標床反力）が、歩容生成装置１００から出力される。
【０５９５】
また、複合コンプライアンス制御装置に対しては、Ｓ３０３４において修正された今回歩容の床反力モーメント鉛直成分が目標値として歩容生成装置１００から出力される。
【０５９６】
以上説明した第１実施形態の作用１として、目標歩容の運動は、モデル操作床反力モーメント水平成分が目標ＺＭＰまわりに発生するように生成されつつ、実際のロボッ１の床反力は、モデル操作床反力モーメント水平成分が付加されないように制御される。したがって、差し引きモデル操作床反力モーメント水平成分の分だけ、目標歩容の運動と床反力の不平衡（アンバランス）を生じる。このことは、実ロボット１の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を０に収束させる効果に関して言えば、モデル操作床反力モーメント水平成分の符号を反転した床反力モーメント水平成分を実ロボット１に作用させることと等価である。
【０５９７】
つまり、モデル操作床反力モーメント水平成分を適宜決定することにより、実ロボット１を、修正目標歩容（実ロボット１の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を０に収束させる歩容）に収束させることができる。つまり、実ロボット１の姿勢傾斜を安定化させることができる。
【０５９８】
作用２として、モデル操作床反力モーメント水平成分の符号を反転したモーメントとコンプライアンス制御用目標床反力モーメント水平成分との和がトータルの傾斜復元力（ロボット１の実上体姿勢傾斜角を目標上体姿勢傾斜角に復元させる力）になる。すなわち、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がトータルの姿勢傾斜復元力になる。
【０５９９】
また、作用３として、モデル操作床反力モーメント水平成分は、ＺＭＰ存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢傾斜復元力を発生することができる。
【０６００】
また、作用４として、床反力水平成分が、床反力水平成分許容範囲を越えないように上体並進モードの上体並進加速度と上体傾斜モードの上体姿勢傾斜角加速度とが決定されるので、走行歩容における支持脚側脚体２の離床直前や着床直後など、大きな床反力水平成分を発生できない時期や、摩擦係数の小さい床をロボット１が移動する場合においてもロボット１のスリップを防止することができる。
【０６０１】
また、作用５として、床反力の並進力鉛直成分が０の時期、すなわち、両脚がいずれも接地していない時期では、床反力水平成分の許容範囲が０に設定されることにより、前記した第１実施形態のアルゴリズムにより自動的に、上体並進モードに依存せずに上体傾斜モードに依存した姿勢傾斜復元が行われ、床と足底の間の摩擦力に依存せずに姿勢復元が行われる。したがって、この時期（空中期）においても、単に、上体並進モードを修正するだけの方式と異なり、有効に姿勢傾斜復元作用が働く。なお、この時には、床反力水平成分が０になるように生成されるから、歩容の全体重心水平加速度は０となる。
【０６０２】
また、作用６として、上記したごとく、コンプライアンス制御に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、目標ＺＭＰまわりにモデル操作床反力モーメント水平成分を発生させるように歩容生成が行なわれても、コンプライアンス制御に対しては、目標ＺＭＰまわりの床反力モーメント水平成分が０になることを目標とする目標床反力が、歩容生成装置１００から与えられる。したがって、コンプライアンス制御による床反力制御を妨げず、コンプライアンス制御による床反力制御を適切に行うことができる。より具体的には、足平２２の本来の接地性が低下したり、足平２２の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
【０６０３】
なお、後述するように、第２実施形態以降でも、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲を越えないように決定される。
【０６０４】
なお、作用１から６は、本願出願人が先に提案したＰＣＴ／ＪＰ０３／００４３５の技術と同様である。
【０６０５】
作用７として、目標歩容の運動は、モデル操作床反力モーメント鉛直成分が目標ＺＭＰまわりに付加的に発生するように生成されつつ、実際のロボット１の床反力は、歩容生成装置１００によりモデル操作床反力モーメント鉛直成分が付加された目標歩容に釣り合う目標床反力モーメント鉛直成分に補償全床反力モーメント鉛直成分Mdmdzを加えたものを目標値として、複合コンプライアンス制御により前記目標値に近づくように実床反力が制御される。Mdmdzが大きくなってくると、Mdmdzと逆方向のモデル操作床反力モーメント鉛直成分が目標歩容に付加されることから、複合コンプライアンス制御により前記目標値に近づくように実床反力を制御するようにしても、実床反力のモーメントの鉛直成分が過大になることがなく、その結果、実ロボット１のスピンを生じることなく、実ロボット１の上体姿勢ヨー角及び／又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び／又はヨー角速度との差を０に収束させる効果を奏することができる。
【０６０６】
つまり、モデル操作床反力モーメント鉛直成分を適宜決定することにより、実ロボット１を、そのスピンが生じないようにしつつ、修正目標歩容（実ロボット１の上体姿勢ヨー角及び／又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び／又は上体姿勢ヨー角速度との差を０に収束させる歩容）に収束させることができる。つまり、実ロボット１のヨー回転を安定化させることができる。
【０６０７】
作用８として、補償全床反力モーメント鉛直成分Mdmdzがトータルのヨー回転復元力になる。補償全床反力モーメント鉛直成分Mdmdzはヨー角偏差および／またはヨー角速度偏差を０に近づけるようにフィードバック制御則に基づき決定されるので、ヨー角偏差の制御的な安定性が保証されつつ、ヨー角偏差および／またはヨー角速度偏差を０に近づけることができる。
【０６０８】
また、作用９として、モデル操作床反力モーメント鉛直成分は、床反力モーメント鉛直成分の許容範囲（あるいは摩擦限界）を無視していかなる値でも取ることが可能であるので、非常に高い姿勢ヨー回転復元力を発生することができる。
【０６０９】
また、作用１０として、コンプライアンス制御に対しては、最終的に目標床反力モーメント鉛直成分が、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲の和の範囲を越えないように決定されるので、走行歩容における支持脚側脚体２の離床直前や着床直後など、大きな床反力モーメント鉛直成分を発生できない時期や、摩擦係数の小さい床をロボット１が移動する場合においてもコンプライアンス制御による床反力制御を適切に行うことができ、ロボット１のスピンを防止することができる。より具体的には、足平２２の本来の接地性が低下したり、足平２２の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
【０６１０】
また、作用１１として、床反力の並進力鉛直成分が０の時期、すなわち、両脚がいずれも接地していない時期では、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲が０に設定されることにより、前記した本実施形態のアルゴリズムにより自動的に、実床反力モーメント鉛直成分に依存せずに逆位相腕振りモードに依存したヨー回転復元が行われ、床と足底の間の摩擦力に依存せずにヨー回転復元が行われる。したがって、この時期（空中期）においても、単に、コンプライアンス制御の目標床反力モーメント鉛直成分を修正するだけの方式と異なり、有効にヨー回転復元作用が働く。
【０６１１】
作用１２として、目標ＺＭＰまわりに発生するモーメント水平成分が０になるように生成したとした場合の歩容を元歩容、前記第１実施形態の如く目標ＺＭＰまわりに発生するモーメント水平成分がモデル操作床反力モーメント水平成分になり、且つ、目標ＺＭＰまわりに発生するモーメント鉛直成分に付加的にモデル操作床反力モーメント鉛直成分が発生するように生成される歩容を修正歩容と呼ぶと、通常、元歩容と修正歩容とは異なる歩容となる。元歩容は定常歩容に漸近するように設定されているので、修正歩容は、通常、定常歩容に漸近しない歩容となる。
【０６１２】
しかし、今回歩容（修正歩容）の生成が完了した直後に、再びS３０２０からS３０２８が実行され、修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、新たに設定される定常歩容に漸近するように、新たな今回歩容パラメータが決定されるので、継続的に（長期的に）安定性が保証された歩容を生成し続けることができる。
【０６１３】
上記した作用１２は、本願出願人が先に提案したＰＣＴ／ＪＰ０３／００４３５の技術とほぼ同様である。但し、これに加えて本実施形態では、次のような作用も発生する。すなわち、ヨー角回転復元のために修正された逆位相腕振り角および角速度の終端状態を新たな初期状態とした新たな今回歩容の逆位相腕振り角軌道が新たに設定される定常歩容の逆位相腕振り角軌道に漸近するように、新たな今回歩容の逆位相腕振り角軌道に関するパラメータが決定されるので、継続的に（長期的に）逆位相腕振り角の安定性が保証された歩容を生成し続けることができる。
【０６１４】
なお、本実施形態では、補償全床反力モーメント水平成分Mdmdxyが床反力モーメント水平成分許容範囲内の値であるときには、モデル操作床反力モーメント水平成分は０になるが、このときのモデル操作床反力モーメント水平成分を図１２の動力学モデルの状態量（例えば動力学モデル上でのロボットの重心位置や、上体質点３ｍの位置等）に応じて設定するようにしてもよい。
【０６１５】
また、本実施形態では、補償全床反力モーメント鉛直成分Mdmdzが床反力モーメント鉛直成分補償量許容範囲内の値であるときには、モデル操作床反力モーメント鉛直成分補償量は０になるが、このときのモデル操作床反力モーメント鉛直成分補償量を図１２の動力学モデルの状態量（例えば動力学モデル上でのロボット１の逆位相腕振り角および角速度、上体ヨー角および角速度等）に応じて設定するようにしてもよい。
【０６１６】
以上説明した第１実施形態は、本発明のうちの第１発明、第２発明、第４〜第９発明および第１５発明の実施形態になっている。この場合、第１実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制限対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第１実施形態における歩容生成用の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]と床反力モーメント鉛直成分補償量許容範囲とを合わせたものが制限対象量の許容範囲に相当する。また、図５６のＳ３０３２で決定される今回歩容瞬時値の運動成分が目標運動の仮瞬時値に対応し、これをＳ３０３４で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、図１２の動力学モデルが相当する。
【０６１７】
次に本発明の第２実施形態を図５９〜図６２を参照して説明する。なお、本実施形態の説明において、前記参考例もしくは前記第１実施形態と同一構成部分もしくは同一機能部分については前記参考例もしくは第１実施形態と同一の参照符号を用いて説明を省略する。本実施形態は、前記参考例で前記図１〜図３および図５〜図１２を参照して説明した事項は、前記参考例と同一である。
【０６１８】
本実施形態が前記参考例および第１実施形態と相違する点の概要を説明すると、元歩容と修正歩容が同時に生成される。修正歩容は、実ロボット１の上体姿勢（傾斜角およびヨー角）の安定化のために元歩容から修正される。さらに、該修正歩容は、コンプライアンス制御により姿勢復元に必要な床反力モーメントを発生してもまだ余裕がある（目標ＺＭＰまわりに発生可能な床反力モーメントに余裕がある）場合には、この余裕を用いて、可能な範囲で元歩容に収束するように決定される。
【０６１９】
本実施形態における制御ユニット６０の機能的構成を表すブロック図を図５９に示す。本実施形態では、姿勢傾斜安定化制御演算部１１２が求める補償全床反力モーメント水平成分Mdmdxyは、歩容生成装置１００に入力される。
【０６２０】
また、ヨー安定化制御演算部１１３が求める補償全床反力モーメント鉛直成分Mdmdzも、歩容生成装置１００に入力される。
【０６２１】
そして、このMdmdxyおよびMdmdzを基にモデル操作床反力モーメント（水平成分および鉛直成分）とコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）とを決定する補償全床反力モーメント分配器１２０が、歩容生成装置１００に組み込まれ、該歩容生成装置１００からコンプライアンス制御用目標床反力モーメントが複合コンプライアンス動作決定部１０４に出力される。そして、歩容生成装置１００内の補償全床反力モーメント分配器１２０は後述するように、前記第１実施形態の補償全床反力モーメント水平成分分配器１１０およびモデル操作床反力モーメント鉛直成分決定器１１１よりも複雑な処理を行う。これ以外の、制御ユニット６０の機能的構成は、前記第１実施形態と同一である。
【０６２２】
図６０に本実施形態における歩容生成装置１００のメインルーチン処理のフローチャートを示す。
【０６２３】
同図６０において、Ｓ２０１０からＳ２０２８までは、前記参考例のメインフローチャート（図１３）のＳ０１０からＳ０２８までの処理と同一の処理が行なわれる。なお、Ｓ０２８（本実施形態ではＳ２０２８）のサブルーチンである図４３のフローチャートのＳ８００における初期化においては、今回歩容初期状態は、前回修正歩容（歩容生成装置１００が最終的に出力する歩容）の終端状態を今回歩容支持脚座標系に変換したものであり、後述のＳ２０３２で決定される元歩容の終端状態は、Ｓ２０２８のサブルーチンのＳ８００では用いられない。
【０６２４】
次いでＳ２０３０に進み、コンプライアンス制御用の床反力モーメント水平成分許容範囲を決定する。この床反力モーメント水平成分許容範囲の決定方法は、第１実施形態のＳ３０３２（図５６）と同様である。
【０６２５】
Ｓ２０３０の処理を完了した後、あるいはＳ２０１６の判断結果がＮＯである場合には、Ｓ２０３２に進み、元歩容の瞬時値（時刻ｔの今回値）が決定される。元歩容は、目標ＺＭＰまわりの床反力モーメント水平成分が０になるように生成される歩容である。
【０６２６】
この元歩容は、前記第１実施形態の図５６のＳ３０３２のサブルーチン処理の一部を変更したアルゴリズムによって生成される。すなわち、Ｓ３０３２内のサブルーチン処理（詳しくはＳ３０３２のサブルーチン処理である図５７のＳ３４１４のサブルーチン処理）である図５８のＳ３１０４およびＳ３１３０において、モデル操作床反力モーメント水平成分を０として（目標ＺＭＰまわりの目標床反力モーメント水平成分を０として）、上体水平加速度αtmpが求められる。これ以外の処理は、図５６のＳ３０３２の処理と同一でよい。
【０６２７】
次いで、Ｓ２０３４に進み、修正歩容の瞬時値を決定する。なお、修正歩容は、歩容生成装置１００から最終的に出力される目標歩容である。
【０６２８】
Ｓ２０３４の処理は、図６１のフローチャートで示すサブルーチン処理により行なわれ、以下にその詳細を説明する。
【０６２９】
まずＳ２１００からＳ２１１１までは、第１実施形態で説明した図５７のＳ３４００からＳ３４１１と同一の処理が実行される。
【０６３０】
次いで、Ｓ２１１２に進み、歩容パラメータを基に現在時刻での床反力モーメント水平成分許容範囲[Mxymin，Mxymax]を求める。これは、図５７のＳ３４１２での床反力モーメント水平成分許容範囲[Mxymin，Mxymax]の決定と同様に行われる。
【０６３１】
次いで、Ｓ２１１４に進み、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント（水平成分および鉛直成分）、コンプライアンス制御用目標床反力モーメント、上体水平加速度、上体姿勢傾斜角加速および逆位相腕振り角加速度が決定される。
【０６３２】
Ｓ２１１４の詳細を、その処理を示す図６２のフローチャートを用いて、以下に説明する。
【０６３３】
まず、Ｓ２２００において、修正歩容の上体水平位置と元歩容の上体水平位置との差であるモデル間上体水平位置差が求められる。この時点では、修正歩容の上体水平位置の今回値（時刻ｔでの値）は未だ求められていない。そこで、Ｓ２２００では、修正歩容の上体水平位置の前回値（時刻ｔ−Δｔの制御周期で最終的に求められた値）と、元歩容の上体水平位置の前回値（時刻ｔ−Δｔの制御周期でＳ２０３２において求められた値）あるいは今回値（時刻ｔの制御周期でＳ２０３２において求められた値）とを用いて、モデル間上体水平位置差が算出される。
次いで、Ｓ２２０２に進み、修正歩容の上体姿勢傾斜角と元歩容の上体姿勢傾斜角との差であるモデル間上体姿勢傾斜角差が求められる。このＳ２２０２では、Ｓ２２００のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の上体姿勢傾斜角の前回値と、元歩容の上体姿勢傾斜角の前回値又は今回値とを用いてモデル間上体姿勢傾斜角差が求められる。
【０６３４】
次いで、Ｓ２２０４に進み、修正歩容の逆位相腕振り角と元歩容の逆位相腕振り角との差であるモデル間逆位相腕振り角差が求められる。このＳ２２０４では、Ｓ２２００のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の逆位相腕振り角の前回値と、元歩容の逆位相腕振り角の前回値又は今回値とを用いてモデル間逆位相腕振り角差が求められる。
【０６３５】
次いで、Ｓ２２０６に進み、モデル間上体水平位置差を基に、その差を０に収束させるために必要なモデル上体水平位置安定化床反力モーメント要求値Mpfdmdが決定される。単に修正歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントに一致させると、モデル間上体水平位置差は発散する。モデル上体水平位置安定化床反力モーメント要求値Mpfdmdは、前記上体並進モードによって修正歩容の上体水平位置を元歩容の上体水平位置に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
【０６３６】
具体的には、モデル上体水平位置安定化床反力モーメント要求値Mpfdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、ＰＤ制御則を用いているが、ＰＩＤ等、他のフィードバック制御則を用いてもよい。
【０６３７】
Mpfdmd＝Kmp＊モデル間上体水平位置差
＋Kmpv＊モデル間上体水平位置差の時間微分値
……式ｄ２８
但し、Kmp、Kmpvはフィードバックゲイン（比例ゲイン、微分ゲイン）である。
【０６３８】
次いで、Ｓ２２０８に進み、モデル間上体姿勢傾斜角差を基に、その差を０に収束させるために必要なモデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdが決定される。単に修正歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントに一致させると、モデル間上体姿勢傾斜角差は０に収束しない。モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdは、上体傾斜モードによって修正歩容の上体姿勢傾斜角を元歩容の上体姿勢傾斜角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
【０６３９】
具体的には、モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、ＰＤ制御則を用いているが、ＰＩＤ等、他のフィードバック制御則を用いてもよい。
【０６４０】
Mrfdmd＝Kmr＊モデル間上体姿勢傾斜角差
＋Kmrv＊モデル間上体姿勢傾斜角差の時間微分値
……式ｄ２９
但し、Kmr、Kmrvはフィードバックゲイン（比例ゲイン、微分ゲイン）である。
【０６４１】
次いで、Ｓ２２１０に進み、モデル間逆位相腕振り角差を基に、その差を０に収束させるために必要なモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdが決定される。単に修正歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントに一致させると、モデル間逆位相腕振り角差は０に収束しない。モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdは、逆位相腕振りモードによって修正歩容の逆位相腕振り角を元歩容の逆位相腕振り角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
【０６４２】
具体的には、モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、ＰＤ制御則を用いているが、ＰＩＤ等、他のフィードバック制御則を用いてもよい。
【０６４３】
Mafdmd＝Ka＊モデル間逆位相腕振り角差
＋Kav＊モデル間逆位相腕振り角差の時間微分値
……式ｄ２９b
但し、Kar、Kavはフィードバックゲイン（比例ゲイン、微分ゲイン）である。
【０６４４】
ところで、最終的に決定された修正歩容の上体並進モードに伴って発生する床反力モーメント水平成分から元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体水平位置安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の上体傾斜運動モードに伴って発生する床反力モーメント水平成分から元歩容の上体傾斜運動モードの上体姿勢傾斜角加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体姿勢傾斜角安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の逆位相腕振りモードに伴って発生する床反力モーメント鉛直成分から元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメント鉛直成分を減じたモーメントを、モデル逆位相腕振り角安定化床反力モーメントと呼ぶ。
【０６４５】
一方、摂動運動と摂動床反力とには線形性が近似的に成立する、すなわち、異なる摂動運動を元歩容の運動に加えた運動の床反力は、元歩容の床反力にそれぞれの摂動運動が発生する摂動床反力を加えたものにほぼ一致する。また、逆位相腕振りモードでは、床反力モーメント水平成分は変化しない。したがって、次式が近似的に成立する。
【０６４６】
モデル操作床反力モーメント水平成分
＝モデル上体水平位置安定化床反力モーメント
＋モデル上体姿勢傾斜角安定化床反力モーメント
……式ｄ３０
この式ｄ３０が近似的に成立することと、逆位相腕振り角加速度に比例して床反力モーメント鉛直成分が変化することとを考慮しつつ、モデル上体水平位置安定化床反力モーメントをモデル上体水平位置安定化床反力モーメント要求値Mpfdmdに一致またはなるべく近くなるように決定し、かつ、モデル上体姿勢傾斜角安定化床反力モーメントをモデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdに一致またはなるべく近くなるように決定しつつ、かつ、モデル逆位相腕振り角安定化床反力モーメントをモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdに一致またはなるべく近くなるように決定すれば、修正歩容に適切なモデル操作床反力モーメントを発生させて、以下に示す復元条件を満足しつつ、修正歩容の上体水平加速度と上体姿勢傾斜角加速度とを、それぞれ元歩容の上体水平加速度と上体姿勢傾斜角加速度とに可能な範囲で収束させることができる。
【０６４７】
そこで、Ｓ２２１０の後、Ｓ２２１２に進み、以下の条件（これらを復元条件と呼ぶ）をできる限り満足するようにモデル上体水平位置安定化床反力モーメント（上体並進モードの床反力モーメント）とモデル上体姿勢傾斜角安定化床反力モーメント（上体傾斜モードの床反力モーメント）とモデル逆位相腕振り角安定化床反力モーメントとを決定する。さらに、上記のモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとモデル逆位相腕振り角安定化床反力モーメントとの定義を満足するように、修正歩容の上体水平加速度と上体姿勢傾斜角加速度と逆位相腕振り角加速度とを決定する。なお、以下に示す復元条件は、番号が小さい条件ほど優先度が高いものとする。つまり相反して両立できない条件がある場合には、番号が小さい条件を優先して満足（成立）させる。ただし、復元条件１、２および３は必ず満足（成立）させる。
【０６４８】
復元条件１）補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメントの和（これは、前記式ｄ２７ｂが成立する場合には、コンプライアンス制御用目標床反力モーメント水平成分に相当する）が床反力モーメント水平成分許容範囲を越えないこと。
【０６４９】
復元条件２）修正歩容の床反力水平成分が床反力水平成分許容範囲を越えないこと。
【０６５０】
復元条件３）修正歩容の床反力モーメント鉛直成分と補償全床反力モーメント鉛直成分Mdmdzの和（これは、コンプライアンス制御用目標床反力モーメント鉛直成分に相当する）が、床反力モーメント鉛直成分許容範囲を越えないこと。
【０６５１】
復元条件４）モデル上体姿勢傾斜角安定化床反力モーメントが、モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdに一致またはできる限り近いこと。この条件は、修正歩容の上体姿勢傾斜角が元歩容（当初予定した歩容）の上体姿勢傾斜角に収束するための条件である。
【０６５２】
復元条件５）モデル上体水平位置安定化床反力モーメントが、モデル上体水平位置安定化床反力モーメント要求値Mpfdmdに一致またはできる限り近いこと。この条件は、修正歩容の上体水平位置が元歩容（当初予定した歩容）の上体水平位置に収束するための条件である。
【０６５３】
復元条件６）モデル逆位相腕振り角安定化床反力モーメントが、モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdに一致またはできる限り近いこと。この条件は、修正歩容の逆位相腕振り角が元歩容（当初予定した歩容）の逆位相腕振り角に収束するための条件である。
【０６５４】
復元条件７）モデル上体姿勢傾斜角安定化床反力モーメント、モデル上体水平位置安定化床反力モーメントおよびモデル逆位相腕振り角安定化床反力モーメントがそれぞれ連続であること。
【０６５５】
上記のような復元条件１〜６を満足するような上体水平加速度、上体姿勢傾斜角加速度、逆位相腕振り角加速度等を決定するＳ２２１２の処理は具体的には例えば次のように実行される。
【０６５６】
まず、上記復元条件１、２、４および５を満足するように、モデル上体水平位置安定化床反力モーメントおよびモデル上体姿勢傾斜角安定化床反力モーメントが決定され、さらに上体水平加速度および上体姿勢傾斜角加速度が決定される。この処理の詳細は、本願出願人が先に提案したＰＣＴ／ＪＰ０３／００４３５の技術に記載されているので、ここでは説明を省略する。
【０６５７】
次いで、上記復元条件３および６を満足するようにモデル逆位相腕振り安定化床反力モーメントが決定され、さらに逆位相腕振り角加速度が決定される。
【０６５８】
具体的には、上記のごとく決定された上体水平加速度および上体姿勢傾斜角加速度と元歩容の逆位相腕振り角加速度βaorgで仮に運動した場合に発生する（運動に動力学的に釣り合う）目標ＺＭＰまわりの床反力モーメント鉛直成分を求める。以降、これを無補正時床反力モーメント鉛直成分と呼ぶ。
【０６５９】
次いで、次式のように、無補正時床反力モーメント鉛直成分とモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdと補償全床反力モーメント鉛直成分Mdmdzとの和Msumzを求める。
【０６６０】
Msumz＝無補正時床反力モーメント鉛直成分
＋Mafdmd＋Mdmdz
次いで、次式により、モデル逆位相腕振り安定化床反力モーメントが決定される。
【０６６１】
Msumz＞床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント＝−Mdmdz
−無補正時床反力モーメント鉛直成分
＋床反力モーメント鉛直成分許容範囲上限値
Msumz＜床反力モーメント鉛直成分許容範囲下限値である場合
モデル逆位相腕振り安定化床反力モーメント＝−Mdmdz
−無補正時床反力モーメント鉛直成分
＋床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Msumz、且つ、Msumz≦床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント
＝モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmd
……式ｄ２６ｃ
次いで、修正歩容の逆位相腕振り角加速度が次式によって求められる。
【０６６２】
修正歩容の逆位相腕振り角加速度
＝元歩容の逆位相腕振り角加速度βaorg
＋モデル逆位相腕振り安定化床反力モーメント
／腕振り運動の等価慣性モーメントΔMaz
修正歩容の床反力モーメント鉛直成分は、元歩容の逆位相腕振り角加速度βaorgとモデル逆位相腕振り安定化床反力モーメントの和であることから、上式のごとくモデル逆位相腕振り安定化床反力モーメントを決定することにより、上記復元条件３が満足される。
【０６６３】
上述したようにＳ２２１２の処理を実行した後、Ｓ２２１４に進み、前記式ｄ３０により、モデル操作床反力モーメント水平成分が決定される。すなわち、Ｓ２２０８で求めたモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとの和がモデル操作床反力モーメント水平成分として決定される。なお、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ＺＭＰまわりの床反力モーメントを直接算出して、これをもってモデル操作床反力モーメントとしても良い。
【０６６４】
次いで、Ｓ２２１６に進み、前記式ｄ２７ｂにより、コンプライアンス制御用目標床反力モーメント水平成分が決定される。すなわち、補償全床反力モーメント水平成分MdmdxyとＳ２２１４で求めたモデル操作床反力モーメント水平成分との和がコンプライアンス制御用目標床反力モーメント水平成分として決定される。
【０６６５】
次いで、Ｓ２２１８に進み、図示する式によって、コンプライアンス制御用目標床反力モーメント鉛直成分を決定する。なお、図示する式における修正歩容に釣り合う（修正歩容の運動に動力学的に釣り合う）床反力モーメント鉛直成分は、無補正時床反力モーメント鉛直成分とモデル逆位相腕振り安定化床反力モーメントの和であるが、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ＺＭＰまわりの床反力モーメント鉛直成分を直接算出しても良い。
【０６６６】
以上により、図６１のＳ２１１４の処理が終了し、次に、Ｓ２１１６に進む。このＳ２１１６の処理は、前記第１実施形態における図５７のＳ３４１６と同一であり、上体水平加速度の２階積分により上体水平位置の今回値が決定されると共に、上体姿勢傾斜角加速度の２階積分により上体姿勢傾斜角の今回値が決定される。
【０６６７】
次に、Ｓ２１１８に進む。このＳ２１１８の処理は、前記第１実施形態における図５７のＳ３４１８と同一であり、逆位相腕振り角加速度の２階積分により逆位相腕振り角の今回値が決定される。
【０６６８】
次いで、図６０のＳ２０３６に進んで、時刻ｔに制御周期Δｔを加え、再び、S２０１４に戻り、制御周期毎のタイマー割り込みを待つ。
【０６６９】
補足すると、本実施形態における動力学モデルによる歩容瞬時値決定においては、動力学モデルの状態量（あるいは前回、前前回の歩容瞬時値）も必要であるので、修正歩容生成用と元歩容生成用との２つの動力学モデルが必要である。本実施形態では、それらの動力学モデルは図１２に示した動力学モデルである。
【０６７０】
本実施形態においては、上記のごとく、元歩容と修正歩容とが並列的に生成され、修正歩容は、実ロボット１の姿勢（傾斜角およびヨー角）安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント（水平成分および鉛直成分）を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、前記第１実施形態の作用効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止することが可能となる。また、修正歩容の上体姿勢傾斜角が元歩容（当初決定した歩容）の上体姿勢傾斜角に収束することを、修正歩容の上体水平位置が元歩容（当初決定した歩容）の上体水平位置に収束することよりも優先した（床反力水平成分許容範囲を満たす範囲で可能な限り上体並進モードの運動を調整した）ので、上体姿勢傾斜角が大きく変動することを抑制することができる。
【０６７１】
以上説明した第２実施形態は、本発明のうちの第１〜第９発明、および第１５発明の実施形態になっている。この場合、第２実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制限対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第２実施形態における歩容生成用の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が制限対象量の許容範囲に相当する。また、第２実施形態におけるモデル逆位相腕振り角安定化モーメント要求値Mafdmdが第３発明におけるモデル補正床反力モーメントに相当する。また、図６１のＳ２１１４のサブルーチンで無補正時床反力モーメント鉛直成分を求めたときの運動が第２発明における所定の仮瞬時値に対応する。また、発明における動力学モデルは、図１２の動力学モデルが相当する。
【０６７２】
次に本発明の第３実施形態を図６３〜図７０を参照して説明する。なお、本実施形態の説明で、前記参考例または前記第１もしくは第２実施形態と同一構成部分もしくは同一機能部分については該参考例、第１実施形態もしくは第２実施形態と同一の参照符号を用いて詳細な説明を省略する。
【０６７３】
本実施形態では、制御ユニット６０の機能的構成は、前記第２実施形態のもの、すなわち前記図５９に示したものと同一である。但し、本実施形態では、歩容生成装置１００が実行する歩容生成のアルゴリズムは、前記第２実施形態のものと相違している。そして、歩容生成装置１００以外の各部の処理は、前記第２実施形態と同一である。
【０６７４】
図６３は、本実施形態における歩容生成装置１００の処理の概要を示すブロック図である。この図６３を参照して、歩容生成装置１００の処理の概要を以下に説明する。なお、図６３を用いて以下に説明する処理の概要は、後述する第４〜第６実施形態についても同様である。また、本実施形態および後述の第４〜第６実施形態では、前記図１２の動力学モデルを単純化モデルと称する。
【０６７５】
図示の如く、歩容生成装置１００は歩容パラメータ決定部１００ａを備える。歩容パラメータ決定部１００ａは、目標歩容のパラメータ（目標歩容を規定するパラメータ）の値あるいは時系列テーブルを決定する。これは、後述の図６５のフローチャートのＳ３５２０からＳ３５３０までの処理に相当する。
【０６７６】
詳細は後述するが、歩容パラメータ決定部１００ａが決定するパラメータには、目標足平位置姿勢軌道、目標腕姿勢軌道、基準上体姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道等を規定するパラメータが含まれる他、床反力水平成分許容範囲を規定するパラメータと、ＺＭＰ許容範囲（もしくは床反力モーメント水平成分許容範囲）を規定するパラメータと、床反力モーメント鉛直成分許容範囲を規定するパラメータとが含まれる。この場合、本実施形態で設定する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲は、後述のＳ３５２６の処理で設定される単純化モデル歩容用のものと、Ｓ３５３０で設定される歩容補正用のものとの２種類がある。一方、ＺＭＰ許容範囲（もしくは床反力モーメント水平成分許容範囲）は、Ｓ３５３０の処理で設定されるフルモデル補正用（歩容補正用）のものだけである。なお、本実施形態では、Ｓ３５３０ではＺＭＰ許容範囲を規定するパラメータを設定するが、これは、床反力モーメント水平成分許容範囲を規定するパラメータと設定することと同等である。これは、前記第１実施形態の図５６のＳ３０３０に関して説明した如く、床反力モーメント水平成分を、目標床反力鉛直成分で割ったものが、ＺＭＰ（床反力中心点）の目標ＺＭＰからのずれ量を表すものとなるからである。
【０６７７】
ここで、本実施形態で設定するＺＭＰ許容範囲は、図６４の如く設定される。詳細は、ＰＣＴ／ＪＰ０３／００４３５に詳細に記載されているのでここでは、これ以上の説明を省略する。
【０６７８】
歩容パラメータ決定部１００ａで決定された歩容パラメータは目標瞬時値発生部１００ｂに入力される。目標瞬時値発生部１００ｂは入力された歩容パラメータに基づき、目標足平位置姿勢、目標ＺＭＰ、目標床反力鉛直成分、目標腕姿勢、目標全体重心鉛直位置、目標上体鉛直位置、床反力水平成分許容範囲、ＺＭＰ許容範囲、基準上体姿勢角および基準逆位相腕振り角の、現在時刻ｔにおける瞬時値を逐次算出（発生）する（図６３では一部の目標瞬時値のみを記載している）。この目標瞬時値発生部１００ｂの処理は、後述の図６５のフローチャートＳ３５３２の処理のなかで実行される図５７のＳ３４００〜Ｓ３４１２の処理、並びに、図６５のＳ３５３４の処理に相当する。なお、本実施形態では、目標瞬時値発生部１００ｂが算出する目標瞬時値のうち、一部の瞬時値（具体的には目標上体鉛直位置の瞬時値）は仮値であり、後に修正される。また、目標瞬時値発生部１００ｂが算出する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の瞬時値は、単純化モデル歩容用の瞬時値と歩容補正用の瞬時値とがある。
【０６７９】
目標瞬時値発生部１００ｂで算出（発生）された目標瞬時値（一部は仮瞬時値）は、フルモデル補正部１００ｃに入力される。また、フルモデル補正部１００ｃには、前記姿勢傾斜安定化制御演算部１１２（図５９を参照）で求められる補償全床反力モーメント水平成分Mdmdxyおよび前記ヨー安定化制御演算部１１３（図５９を参照）で求められる補償全床反力モーメント鉛直成分Mdmdzも入力される。フルモデル補正部１００ｃは、動力学モデルとして、単純化モデル１００ｃ１とフルモデル１００ｃ２とを備える。該フルモデル補正部１００ｃは、単純化モデル１００ｃ１に基づいて、入力値から目標上体位置姿勢および逆位相腕振り角の仮瞬時値等を決定すると共に、さらに決定された上体位置姿勢および逆位相腕振り角の仮瞬時値等をフルモデル１００ｃ２を用いて修正する。
【０６８０】
尚、単純化モデル１００ｃ１をフルモデル補正部１００ｃに含ませない構成も可能である。また、フルモデル１００ｃ２は、後述するように、逆フルモデル（逆動力学フルモデル）と順フルモデル（順動力学フルモデル）とのいずれかを含む。
【０６８１】
フルモデル補正部１００ｃは、基本的には、次のA1〜A4の条件を満足するように、Bの処理を実行する。すなわち、フルモデル補正部１００ｃは、
A1）フルモデル補正部１００ｃにより生成される補正歩容の運動に釣り合う床反力モーメントに補償全床反力モーメント水平成分Mdmdxyと補償全床反力モーメント鉛直成分Mdmdzとを加えたものがフルモデル補正部１００ｃから出力するコンプライアンス制御用床反力モーメントに一致する。
A2）真のＺＭＰ（目標ＺＭＰのまわりにコンプライアンス制御用目標床反力モーメントを発生させることによって修正された本来の定義を満足するＺＭＰ）は、ＺＭＰ許容範囲（安定余裕が十分維持できる許容範囲）に存在する。
A3）床反力水平成分は歩容補正用の床反力水平成分許容範囲内にある。
A4）目標ＺＭＰのまわりに発生すべきコンプライアンス制御用目標床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲内にある。
という条件を満足するように、
B）単純化モデルを用いて決定された単純化モデル歩容の上体位置姿勢を補正すると共に、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメントを出力する。
【０６８２】
なお、上記条件A2は、目標ＺＭＰまわりに発生させる床反力モーメントをＺＭＰ許容範囲に対応する床反力モーメント水平成分許容範囲内に収めることと同等である。
【０６８３】
ここで、上記単純化モデル１００ｃ１とフルモデル１００ｃ２とについて説明しておく。単純化モデル１００ｃ１は、動力学的精度よりも、演算量低減や挙動解析のし易さに重点を置いた動力学モデルであり、動力学的に一部無視があったり（例えば、重心まわりの角運動量変化を無視したり）、矛盾があるもの（厳密さを欠くもの）でも良い。本実施形態では前記参考例で説明した図１２の動力学モデル（前記式０１〜０５で記述される動力学モデル）が単純化モデル１００ｃ１として用いられる。
【０６８４】
また、フルモデル１００ｃ２は、単純化モデル１００ｃ１とは異なるロボット動力学モデルを意味する。これは、単純化モデル１００ｃ１よりも近似精度の高いロボット動力学モデルであることが望ましい。図示例で説明すれば、本実施形態では先に述べたように前記図１２に示した動力学モデルを単純化モデル１００ｃ１として用いるので、それよりも、近似精度の高い動力学モデル、例えば前記図４９に示した多質点モデル（ロボット１の各リンクにそれぞれ質点を有するモデル）のようなロボット動力学モデルをフルモデル１００ｃ２として用いることが望ましい。この場合、該フルモデル１００ｃ２は、質点のまわりに慣性モーメントを設定するものであっても良い。
【０６８５】
しかし、単純化モデル１００ｃ１とフルモデル１００ｃ２とは、必ずしもモデルの近似精度が異なる必要はない。単純化モデル１００ｃ１とフルモデル１００ｃ２とは、動力学方程式が同じで、床反力水平成分許容範囲およびまたは床反力モーメント鉛直成分許容範囲が異なっている、すなわち、単純化モデル歩容用の許容範囲と、歩容補正用（フルモデル補正用）の許容範囲とが異なっているだけでも良い。たとえば、単純化モデル１００ｃ１を用いた歩容を生成する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を大きくとり（摩擦限界を越えていても良い）、フルモデル１００ｃ２を用いて歩容を修正する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲をロボット１のスリップもしくはスピンが発生しにくいように狭く設定するだけでも良い。
【０６８６】
尚、この明細書において、目標足平位置姿勢、目標床反力（特に、目標ＺＭＰと目標床反力鉛直成分）に基づいて（入力して）上体位置姿勢および逆位相腕振り角を算出する（出力させる）のに使用するモデルを「順動力学モデル」と呼び、目標足平位置姿勢、目標上体姿勢、目標上体位置および逆位相腕振り角に基づいて（入力して）床反力（特に、目標ＺＭＰもしくは目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）と床反力水平成分）を算出する（出力させる）のに使用するモデルを「逆動力学モデル」と呼ぶ。順動力学モデルの入力には、少なくとも目標床反力が含まれ、逆動力学モデルの入力には、少なくとも目標運動が含まれる。
【０６８７】
フルモデル補正部１００ｃが備えるフルモデル１００ｃ２は、逆動力学フルモデル（しばしば「逆フルモデル」と略称）または順動力学フルモデル（しばしば「順フルモデル」と略称）を備える。一般的には、逆動力学モデルの演算に比べ、順動力学モデルの演算は、演算量が多くなりがちである。
【０６８８】
以上が本実施形態（第３実施形態）での歩容生成装置１００における処理の概要である。
【０６８９】
次に、本実施形態における歩容生成装置１００の処理を詳説する。本実施形態における歩容生成装置１００は、図６５のフローチャートに示す処理を実行して、歩容を生成する。
【０６９０】
まず、Ｓ３５１０からＳ３５２８までにて、前記第１実施形態で説明した図５６のＳ３０１０からＳ３０２８までの処理と同一の処理が実行される。なお、Ｓ３０２６のサブルーチンである図３９のＳ６０８で決定する今回歩容の床反力水平成分許容範囲およびＳ６１０で決定する床反力モーメント鉛直成分許容範囲は、前記参考例、第１実施形態および第２実施形態の場合よりも厳密に摩擦力限界を考慮せずともよく、摩擦力限界を超えるような範囲に設定してもよい。これは、後述するフルモデル補正によって、床反力水平成分および床反力モーメント鉛直成分は最終的にフルモデル補正用の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲によって制限されることとなるからである。
【０６９１】
次いで、Ｓ３５３０に進み、フルモデル補正用（歩容補正用）の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とＺＭＰ許容範囲（床反力中心点許容範囲）とをそれぞれ規定するパラメータを決定する。この場合、フルモデル補正用の床反力水平成分許容範囲は、例えば前記単純化モデル歩容用の床反力水平成分許容範囲と同様、Ｘ軸方向（前後方向）、Ｙ軸方向（左右方向）のそれぞれについて、床反力鉛直成分軌道と、前記式１２とに基づいて、前記図３０に示したようなパターンに設定される。そして、例えば、前記式１２のka＊μの値がフルモデル補正用の床反力水平成分許容範囲を規定するパラメータとして設定される。但し、この床反力水平成分許容範囲は、式１２の係数ｋaの値を、単純化モデル歩容用の床反力水平成分許容範囲よりも小さめに設定する等して、確実に摩擦限界内の範囲に設定することが望ましい。
【０６９２】
床反力モーメント鉛直成分許容範囲に関しても床反力水平成分許容範囲と同様に設定される。すなわち、前記式１０１２に基づいて、前記図４１に示したようなパターンに設定される。
【０６９３】
また、ＺＭＰ許容範囲は、前記第１実施形態における図５６のＳ３０３０で床反力モーメント水平成分許容範囲の設定に関して説明した場合と同様に設定される。なお、ＺＭＰ許容範囲に目標床反力鉛直成分を乗じることで、ＺＭＰ許容範囲をこれと等価な床反力モーメント水平成分許容範囲に変換してもよいことはもちろんである。
【０６９４】
次いで、Ｓ３５３２に進み今回歩容瞬時値（現在時刻ｔの値）が前記単純化モデル（図１２の動力学モデル）を用いて決定される。このＳ３５３２の処理は、前記参考例における図１３のＳ０３０の処理と同一である。
【０６９５】
以上説明したＳ３５３２までの処理によって生成された現在時刻ｔにおける歩容の瞬時値を、以降、単純化モデル歩容瞬時値という。本実施形態では、この単純化モデル歩容瞬時値は、単純化モデル（図１２の動力学モデル）を用いて、ロボット１にその運動によって発生する慣性力と重力との合力が目標ＺＭＰまわりに発生する床反力モーメント水平成分が０になるように（目標ＺＭＰに関する動力学的平衡条件を満たすように）決定される。
【０６９６】
この場合、単純化モデル歩容瞬時値のうちの、上体水平位置および上体姿勢傾斜角の瞬時値と、上体鉛直位置の瞬時値と、逆位相腕振り角の瞬時値とは仮瞬時値であり、後述するフルモデル補正によって補正されるものである。また、本実施形態における単純化モデル歩容瞬時値のうち、目標ＺＭＰまわりの目標床反力モーメント水平成分の瞬時値は定常的に０であるが、後述するフルモデル補正によって目標ＺＭＰまわりに発生させる床反力モーメント水平成分の目標値としてのコンプライアンス制御用目標床反力モーメント水平成分が生成される。
【０６９７】
次に、Ｓ３５３４に進み、歩容補正用（フルモデル補正用）の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とＺＭＰ許容範囲を規定するパラメータ（Ｓ３５３０で設定したもの）を基に、歩容補正用の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とＺＭＰ許容範囲との瞬時値（現在時刻ｔの値）が求められる。
【０６９８】
次いで、Ｓ３５３６に進み、フルモデルを用いて補正歩容の発生（歩容の補正）を行い、最終的な目標歩容の瞬時値が決定される。すなわち、前記図６３を参照して説明したように、補正目標上体位置姿勢、補正目標逆位相腕振り角や、目標ＺＭＰまわりの目標床反力モーメント（水平成分および鉛直成分）としてのコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）の算出（決定）などが実行される。
【０６９９】
次いで、Ｓ３５３８に進み、時刻ｔをΔｔだけ増やし、再びＳ３５１４に戻り、Ｓ３５１４からＳ３５３８までの処理が繰り返される。
【０７００】
上記Ｓ３５３６の処理は、本実施形態の特徴をなす部分であり、以下にその処理を詳説する。本実施形態に係る装置の歩容補正手法は、フルモデルフィードフォワード補正型である。また、逆動力学フルモデル（逆フルモデル）を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
【０７０１】
図６６は、本実施形態に係る歩容生成装置１００の動作、具体的には、図６５のフロー・チャートのＳ３５３６の歩容の修正手法を説明する機能ブロック図である。ただし、図６６の単純化モデル２００は、単に動力学モデルだけでなく、前述のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表す。したがって、図６６において、単純化モデル２００から先の部分がＳ３５３６の処理に相当する。
【０７０２】
尚、歩容補正用（フルモデル補正用）の床反力水平成分許容範囲とＺＭＰ許容範囲の瞬時値を決定する処理は、図６５のフローチャートの参照符号Ｓ３５３４を用いて示している。
【０７０３】
実際の処理はひとつのコンピュータで実行されるので、ブロック図を離散化した後、ブロック図の上流側から下流側（歩容出力側）に向かって順に実行される。ただし、上流側に戻るフィードバック量は、前回制御周期（現在時刻ｔに対して時刻ｔ−Δｔ）に算出した値（状態量）を用いることとする。尚、以降、前回制御周期（時刻ｔ−Δｔ）に算出した値を前回値と略す。
【０７０４】
Ｓ３５３６の処理が実行される毎に、ブロック図の１制御周期分の演算が実行される。
【０７０５】
Ｓ３５３６では、まず、上記のごとく得られた単純化モデル歩容の目標上体姿勢角（以降、単純化モデル上体姿勢角と呼ぶ。また、このうちの傾斜角成分を単純化モデル上体姿勢傾斜角と呼ぶ。）、目標上体水平位置（以降、単純化モデル上体水平位置と呼ぶ）、目標重心位置、目標足平位置姿勢、目標腕姿勢（目標逆位相腕振り角を含む）などの運動を表す変数（これを運動変数と呼ぶ）の瞬時値と、目標ＺＭＰの瞬時値とが前記逆動力学フルモデル（逆フルモデル）２０１に入力される。入力された運動変数で表される運動に釣り合う（すなわち運動によってフルモデルが発生する）床反力水平成分と目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）が、逆フルモデル２０１の演算処理によって算出される。なお、本実施形態では、単純化モデル歩容における目標ＺＭＰまわりの床反力モーメント水平成分は０であるので、逆フルモデル２０１によって算出される目標ＺＭＰまわりの床反力モーメント水平成分は、単純化モデル歩容の誤差としての意味を持つものである。
なお、逆フルモデル２０１により求められた床反力水平成分と床反力モーメント水平成分と床反力モーメント鉛直成分とをそれぞれ「フルモデル床反力水平成分」、「フルモデル床反力モーメント水平成分」、「フルモデル床反力モーメント鉛直成分」と呼ぶ。また、以降、しばしば、フルモデル床反力水平成分をFfull、フルモデル床反力モーメント水平成分をMfullxy、フルモデル床反力モーメント鉛直成分をMfullz、と略す。
【０７０６】
また、前記逆フルモデル２０１は、目標重心位置を満足する上体鉛直位置を算出する。さらに、図示は省略しているが、逆フルモデル２０１は、重心水平位置も算出する。
【０７０７】
補足すると、フルモデルには目標全体重心鉛直位置を入力しており、また目標床反力鉛直成分は目標全体重心鉛直位置の２階微分値から求められるので、フルモデルには、特に目標床反力鉛直成分を入力する必要はない。冗長であっても演算を減らすためなどの理由で、フルモデルに目標床反力鉛直成分を入力しても良い。
【０７０８】
ここで、歩容補正に用いられる摂動モデルについて説明する。
【０７０９】
摂動モデルは、上体水平位置補正用摂動モデル２０２、上体姿勢傾斜角補正用摂動モデル２０３および逆位相腕振り角補正用摂動モデル２３１から成る。尚、摂動モデルは、このように３つのモデルに分離しないで、図１２のようなひとつのモデルにしても良い。また、上体姿勢傾斜角補正用摂動モデル２０３は図では上体姿勢角補正用摂動モデル２０３と略す。
【０７１０】
上体水平位置補正用摂動モデル２０２は、前記上体並進モードにおける床反力の摂動と上体水平位置の摂動との関係を表す。
【０７１１】
上体水平位置補正用摂動モデル２０２は、目標床反力モーメントの補正量を入力し、これに動力学的に釣り合う目標上体水平位置の補正量を算出する。この入力（目標床反力モーメントの補正量）を、上体水平位置補正用摂動モデルモーメントMpと呼ぶ。また、上体水平位置補正用摂動モデル２０２の出力（目標上体水平位置の補正量）を、補正用摂動モデル上体水平位置Xcと呼ぶ。また、上体水平位置補正用摂動モデル２０２が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Fpと呼ぶ。
【０７１２】
上体水平位置補正用摂動モデル２０２は、図６７のように、支点と倒立振子質点（上体質点）とこれらを結合する伸縮自在な支持棒から成る倒立振子で表される。支点の水平位置は前記した今回歩容の支持脚座標系の原点の水平位置に一致し、支点の鉛直位置は目標ＺＭＰの鉛直位置に一致するように支点の位置が設定されている。倒立振子質点の質量mbは、図１２に示す前記単純化モデル（３質点＋フライホイールのモデル）の上体質点質量と同じである。倒立振子質点の鉛直位置Zcは、単純化歩容に対応する図１２に示す単純化モデルの上体質点位置の鉛直位置Zbと同一とする。
【０７１３】
この上体水平位置補正用摂動モデル２０２は、前記単純化モデルにおいて、床反力モーメントの摂動ΔMyと上体質点水平位置の摂動ΔXbとの関係を表す。
【０７１４】
そこで、My、Xb、Zb以外は定数とみなして、床反力モーメントの摂動ΔMyと上体質点水平位置の摂動ΔXbとの関係を前記式０３yから求めると、次式が得られる。
【０７１５】
ΔMy＝−mb＊ΔXb＊(g+d2Zb/dt2)＋mb＊(Zb−Zzmp)＊d2ΔXb/dt2
…式a１２
同様に、Fx、Xb以外は定数とみなして、床反力水平成分の摂動ΔFxと上体質点水平位置の摂動ΔXbの関係を前記式０２ｘから求めると、次式が得られる。
【０７１６】
ΔFx＝mb＊d2ΔXb/dt2      …式a１３
上体水平加速度によって発生するΔMｐとΔFpの比である上体並進モード床反力比率ｈは、式a１２の右辺のうちの上体水平加速度によって発生する項（すなわち第２項）と式a１３との比であるから、次式が得られる。
【０７１７】
h＝(Zb−Zzmp)        …式a１４
すなわち、上体並進モード床反力比率ｈは、単純化モデルの上体質点（倒立振子質点）の支点からの高さに相当する。
【０７１８】
よって、式a１２と式a１４とより次式が得られる。
【０７１９】
ΔMy＝−mb＊ΔXb＊(g+d2Zb/dt2)＋mb＊h＊d2ΔXb/dt2  …式a１５
一方、上体質点（倒立振子質点）に作用する重力と慣性力との合力の並進力鉛直成分に釣り合う床反力鉛直成分を上体床反力鉛直成分Fbzと呼ぶ。すなわち、上体床反力鉛直成分Fbzは、次式で定義される。
【０７２０】
Fbz＝mb＊(g+d2Zb/dt2)        …式a１６
そして、この式ａ１６と前記式０１とから、上体床反力鉛直成分Fbzは次式となる。
【０７２１】
Fbz＝Fz−msup＊(g+d2Zsup/dt2)−mswg＊(g+d2Zswg/dt2)
…式a１７
言い換えると、上体床反力鉛直成分は、床反力鉛直成分Fzと図１２に示す前記単純化モデル（３質点＋フライホイールのモデル）の両脚質点に作用する重力と慣性力との合力の並進力鉛直成分との和に等しい。
【０７２２】
式a１６を式a１５に代入することにより、次式が得られる。
【０７２３】
ΔMy＝−Fbz＊ΔXb＋mb＊h＊d2ΔXb/dt2          …式a１８
式a１８のΔMyを上体水平位置補正用摂動モデルモーメントMp、ΔXbを補正用摂動モデル上体水平位置Xcに対応させることにより（式a１８のΔMyに上体水平位置補正用摂動モデルモーメントMp、ΔXbに補正用摂動モデル上体水平位置Xcを代入することにより）、次式が得られる。
【０７２４】
Mp＝−Fbz＊Xc＋mb＊h＊d2Xc/dt2            …式a１９
すなわち、上体水平位置補正用摂動モデル２０２は、式a１４によって求められる上体並進モード床反力比率ｈと式a１７によって求められる上体床反力鉛直成分Fbzを用いて、式a１９で表される。
【０７２５】
また、式a１３のΔFxを上体水平位置補正用摂動モデル床反力水平成分Fpに対応させることにより、次式が得られる。
Fp＝mb＊d2Xc/dt2              …式a２０
すなわち、式a１４、式a１７、式a１９、式a２０によって上体水平位置補正用摂動モデル２０２が記述される。
【０７２６】
補足すると、ここでは、上体質点位置の摂動と上体位置（上体代表点位置）の摂動は一致するものとみなしているが、厳密には、一致するとは限らない。従って、Mp、FpとXcの関係を求めるためには、さらに上体質点水平位置と上体位置の幾何学的関係を表すモデルが必要である。
【０７２７】
一方、上体姿勢傾斜角補正用摂動モデル２０３は、前記上体傾斜モードにおける床反力の摂動と上体姿勢傾斜角の摂動の関係を表す。
【０７２８】
上体姿勢傾斜角補正用摂動モデル２０３は、床反力モーメント水平成分の補正量が入力され、これに動力学的に釣り合う目標上体姿勢傾斜角の補正量を算出する。この入力（床反力モーメントの補正量）を、上体姿勢傾斜角補正用摂動モデルモーメントMr（上体姿勢角補正用摂動モデルＭrと略すこともある）と呼ぶ。また、上体姿勢傾斜角補正用摂動モデル２０３の出力（目標上体姿勢傾斜角の補正量）を補正用摂動モデル上体姿勢傾斜角θcと呼ぶ。また、上体姿勢傾斜角補正用摂動モデル２０３が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Frと呼ぶ。Frは前述したごとく０である。すなわち、次式が常に成立する。
【０７２９】
Fr＝0            …式a２１
上体姿勢傾斜角補正用摂動モデル２０３は、図６８のように、フライホイールで表される。補足すると、図６８では、Ｙ軸まわり回転のフライホイールのみを示したが、上体姿勢傾斜角補正用摂動モデル２０３は、実際には、Ｙ軸まわり回転のフライホールだけでなく、Ｘ軸まわり回転のフライホイールも必要とする。それらのフライホイールのイナーシャは、図１２に示した前記単純化モデル（３質点モデル＋フライホイール）のフライホイールFHx、FHyと同じである。この上体姿勢傾斜角補正用摂動モデル２０３のフライホイールの回転角度が補正用摂動モデル上体姿勢傾斜角θc、そのフライホイールによって発生する床反力モーメント水平成分が上体姿勢傾斜角補正用摂動モデルモーメントMrに相当する。なお、以下の説明では理解の便宜上、Ｙ軸まわり回転のフライホイールを中心に説明するが、Ｘ軸まわり回転のフライホイールについても同様である。
【０７３０】
この上体姿勢傾斜角補正用摂動モデル２０３（より詳しくはサジタルプレーンに関するモデル）は、前記単純化モデル（３質点＋フライホイールのモデル）の動力学方程式の前記式０３ｙにおいて、床反力モーメントの摂動ΔMyと上体姿勢傾斜角の摂動Δθbyの関係を表している。
【０７３１】
そこで、My、θby以外は定数とみなして、床反力モーメント水平成分の摂動ΔMyと上体姿勢傾斜角の摂動Δθbyの関係を式０３yから求めると、次式が得られる。
【０７３２】
ΔMy＝J＊d2Δθby/dt2            …式a２２
式a２２のΔMyを上体姿勢傾斜角補正用摂動モデルモーメントMr、Δθbyを補正用摂動モデル上体姿勢傾斜角θcに対応させることにより、次式が得られる。
【０７３３】
Mr＝J＊d2Δθc/dt2              …式a２３
すなわち、上体姿勢傾斜角補正用摂動モデル２０３は、式a２３で表される。また、上体水平位置補正用摂動モデル床反力水平成分Frは上記したごとく式a２１のようになる（Ｆr＝０）。なお、上記では、上体姿勢傾斜角補正用摂動モデル２０３の動力学をサジタルプレーン上で説明したが、ラテラルプレーン上での動力学も、式ａ２３と同じ形の式で表される。
【０７３４】
また、逆位相腕振り角補正用摂動モデル２３１は、前記逆位相腕振りモードにおける床反力の摂動と逆位相腕振り角の摂動との関係を表す。
【０７３５】
逆位相腕振り角補正用摂動モデル２３１は、床反力モーメント鉛直成分の補正量が入力され、これに動力学的に釣り合う目標逆位相腕振り角の補正量を算出する。この入力（床反力モーメント鉛直成分の補正量）を、逆位相腕振り角補正用摂動モデルモーメントMaと呼ぶ。また、逆位相腕振り角補正用摂動モデル２０３の出力（目標逆位相腕振り角の補正量）を補正用摂動モデル逆位相腕振り角θcaと呼ぶ。また、逆位相腕振り角補正用摂動モデルが発生する床反力水平成分を逆位相腕振り角補正用摂動モデル床反力水平成分Faと呼ぶ。Faは前述したごとく０である。すなわち、次式が常に成立する。
【０７３６】
Fa＝0            …式a２１c
逆位相腕振り角補正用摂動モデル２３１は、図６９のように、フライホイールで表される。フライホイールのイナーシャは、図１２に示した前記単純化モデル（３質点モデル＋フライホイール）のフライホイールFHazと同じである。この逆位相腕振り角補正用摂動モデル２３１のフライホイールの回転角度が補正用摂動モデル逆位相腕振り角θca、そのフライホイールによって発生する床反力モーメント鉛直成分が逆位相腕振り角補正用摂動モデルモーメントMaに相当する。
【０７３７】
この逆位相腕振り角補正用摂動モデル２３１は、前記単純化モデル（３質点＋フライホイールのモデル）の動力学方程式の前記式０３zにおいて、床反力モーメントの摂動ΔMzと逆位相腕振り角の摂動Δθazとの関係を表している。
【０７３８】
そこで、Mz、θaz以外は定数とみなして、床反力モーメントの摂動ΔMzと逆位相腕振り角の摂動Δθazの関係を式０３ｚら求めると、次式が得られる。
【０７３９】
ΔMz＝Jaz＊d2Δθaz/dt2            …式a２２c
式a２２ｃのΔMzを逆位相腕振り角補正用摂動モデルモーメントMa、Δθazを補正用摂動モデル逆位相腕振り角θcaに対応させることにより、次式が得られる。
【０７４０】
Ma＝Jaz＊d2Δθca/dt2              …式a２３c
すなわち、逆位相腕振り角補正用摂動モデル２３１は、式a２３cで表される。また、逆位相腕振り角補正用摂動モデル床反力水平成分Faは上記したごとく式a２１cのようになる（Fa＝０）。
【０７４１】
後述するように、Ｓ３５３６では、最終的に、補正歩容（より詳しくは、単純化モデル歩容の一部の瞬時値を補正した目標瞬時値）が生成（出力）される。補正歩容の目標上体姿勢傾斜角（これを以降、補正目標上体姿勢傾斜角と呼ぶ）は、前記求めた単純化モデル上体姿勢傾斜角の瞬時値（Ｓ３５３２で求めた今回歩容の現在時刻ｔでの目標上体姿勢傾斜角の瞬時値）に前記補正用摂動モデル上体姿勢傾斜角θc（現在時刻ｔの制御周期で求められる値）を演算部２０４で加えることにより得られる。補正歩容の目標上体水平位置（これを以降、補正目標上体水平位置と呼ぶ）は、前記求めた単純化モデル上体水平位置の瞬時値（Ｓ３５３２で求めた今回歩容の現在時刻ｔでの目標上体水平位置の瞬時値）に補正用摂動モデル上体水平位置Xc（現在時刻ｔの制御周期で求められる値）を演算部２０５で加えることにより得られる。また、補正歩容の目標逆位相腕振り角（これを以降、補正目標逆位相腕振り角と呼ぶ）は、前記求めた単純化モデル逆位相腕振り角の瞬時値（Ｓ３５３２で求めた今回歩容の現在時刻ｔでの目標逆位相腕振り角の瞬時値）に補正用摂動モデル逆位相腕振り角θca（現在時刻ｔの制御周期で求められる値）を演算部２３２で加えることにより得られる。
【０７４２】
補正歩容の目標床反力も修正される。具体的には、目標ＺＭＰまわりの床反力モーメント水平成分が０でなくなり、コンプライアンス制御用目標床反力モーメント水平成分が目標値として出力される。また、目標床反力水平成分も、補正目標床反力水平成分に修正され、出力される。また、目標床反力モーメント鉛直成分も、補正目標床反力モーメント鉛直成分に修正され、出力される。
【０７４３】
ところで、上記のごとく、補正歩容の運動は、単純化モデル歩容の運動に摂動モデルの運動（詳しくは上体水平位置補正用摂動モデル２０２と上体姿勢傾斜角補正用摂動モデル２０３の運動と逆位相腕振り角補正用摂動モデル２３１の運動）を加えた（合成した）運動である。
【０７４４】
一般に、ある基準運動に、ある摂動運動を加えた運動が発生する床反力は、基準運動が発生する床反力（運動によって発生する重力と慣性力に釣り合う床反力）と摂動運動によって発生する床反力の摂動分の和で近似される。
【０７４５】
また、上体傾斜モードが発生する床反力水平成分、上体傾斜モードが発生する床反力モーメント鉛直成分、逆位相腕振りモードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力モーメント水平成分がいずれも０であることを考慮すると、補正歩容の運動に逆フルモデル２０１上で釣り合う床反力モーメントに補償全床反力モーメント水平成分Mdmdxyと補償全床反力モーメント鉛直成分Mdmdzとを加えたものが補正目標床反力モーメントに一致する（前記A1の条件を満たす）ためには、以下の３つの式を満足しなければならない。
【０７４６】
フルモデル床反力モーメント水平成分Mfullxy
＋上体水平位置補正用摂動モデルモーメントMp
＋上体姿勢傾斜角補正用摂動モデルモーメントMr
＋補償全床反力モーメント水平成分Mdmdxy
＝  補正目標床反力モーメント水平成分
…式h５
フルモデル床反力水平成分Ffull
＋上体水平位置補正用摂動モデル床反力水平成分Fp
＝  補正目標床反力水平成分
…式h６
フルモデル床反力モーメント鉛直成分Mfullz
＋上体水平位置補正用摂動モデルモーメント鉛直成分Mpz
＋逆位相腕振り角補正用摂動モデルモーメント鉛直成分Maz
＋補償全床反力モーメント鉛直成分Mdmdz
＝  補正目標床反力モーメント鉛直成分
…式h１００６
ただし、上体水平位置補正用摂動モデルモーメント鉛直成分Mpzは、上体水平位置補正用摂動モデルの運動によって逆フルモデル２０１上で発生する床反力モーメント鉛直成分である。また、式h５、式h１００６のモーメントは、元の（単純化モデルの）目標ＺＭＰまわりのモーメントである。
【０７４７】
また、補正歩容の真のＺＭＰは、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ、単純化モデル歩容の目標ＺＭＰ（理想目標ＺＭＰ）からずれた点に変更される。
【０７４８】
補正歩容の真のＺＭＰ＝目標ＺＭＰ
＋補正目標床反力モーメント／目標床反力鉛直成分
…式h７
尚、補正歩容の真のＺＭＰのX方向（前後方向）成分を算出する場合には、補正目標床反力モーメントのY軸（左右方向軸）まわり成分を用いる。また、補正歩容の真のＺＭＰのY方向成分を算出する場合には、補正目標床反力モーメントのX軸（前後軸）まわり成分を用いる。ただし、補正歩容の真のＺＭＰのY方向成分を算出する場合には、式h７の右辺の「＋」は「−」にしなければならない。
【０７４９】
補足すると、補正歩容の真のＺＭＰまわりの補正目標床反力モーメント鉛直成分を算出するようにしても良い。
【０７５０】
補正歩容の真のＺＭＰまわりの補正目標床反力モーメント鉛直成分は、元の目標ＺＭＰまわりのモーメントに補正歩容の真のＺＭＰと目標ＺＭＰの差と式h６で求めた補正目標床反力水平成分との外積を加えたものとなる。
【０７５１】
式h７から求められる補正歩容の真のＺＭＰは、ＺＭＰ許容範囲内になければならない。これをＺＭＰ制約条件と呼ぶ。
【０７５２】
また、補正目標床反力水平成分は、歩容補正用（フルモデル補正用）の床反力水平成分許容範囲内になければならない。これを床反力水平成分制約条件と呼ぶ。
【０７５３】
また、補正目標床反力モーメント鉛直成分は、歩容補正用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲内になければならない。これを床反力モーメント鉛直成分制約条件と呼ぶ。
【０７５４】
以上のように、補正歩容は、式h５、式h６、式h１００６、ＺＭＰ制約条件（式h７から得られる補正歩容の真のＺＭＰの存在範囲条件）床反力水平成分制約条件および床反力モーメント鉛直成分制約条件を満足しなければならない。
【０７５５】
しかし、単に、これらの式や条件を満足するだけでは、前記補正用摂動モデル上体位置と前記補正用摂動モデル上体姿勢傾斜角と前記補正用摂動モデル逆位相腕振り角が発散してしまう。
【０７５６】
そこで、前記上体水平位置補正用摂動モデル２０２と前記上体姿勢傾斜角補正用摂動モデル２０３と前記逆位相腕振り角補正用摂動モデル２３１の状態量（より具体的には、補正用摂動モデル上体水平位置速度、補正用摂動モデル上体姿勢傾斜角・角速度、補正用摂動モデル逆位相腕振り角・角速度など）を基に、これらの状態量がある所定の状態に収束する（安定する）ように、補正用摂動モデル２０２，２０３，２３１の安定化制御を行う。
【０７５７】
まず、上体水平位置補正用摂動モデル２０２の安定化制御について詳細を説明する。
【０７５８】
上体水平位置補正用摂動モデル２０２を目標整定位置に収束（安定）させるための制御則を上体水平位置補正用摂動モデル制御則２０６と呼び、この制御則が決定するフィードバック量（操作量）を上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと呼ぶ。ここで「要求値」を付けたのは、後述するように、真のＺＭＰが前記ＺＭＰ許容範囲内に存在し、かつ、床反力水平成分が床反力水平成分許容範囲内になるように、上記制御則で決定された値に制限が加えられて修正されるからである。制限が加えられて修正されたモーメントを、上体水平位置補正用摂動モデル安定化モーメントMpfと呼ぶ。
【０７５９】
具体的に上体水平位置補正用摂動モデル制御則２０６としては、式h１０を用いる。ただし、目標整定位置は、式h８で与えられる。また、mtotalは前記ロボット総重量、mbは前記上体質点質量（倒立振子質量）であり、XGfは、単純化モデル歩容の瞬間姿勢を基にフルモデルを用いて計算される重心水平位置、すなわち、前記逆フルモデルが算出する重心水平位置である。また、Kpp、Kpvはフィードバック制御のゲインである。
【０７６０】
目標整定位置＝−mtotal／mb＊(XGf−XGs)            …式h８
上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
＝Kpp＊（補正用摂動モデル上体水平位置Xc−目標整定位置）
＋Kpv＊補正用摂動モデル上体水平速度dXc/dt
−補正用摂動モデル上体水平位置Xc＊上体床反力鉛直成分Fbz
…式h１０
上体水平位置補正用摂動モデル安定化モーメント要求値MpfdmdのX軸（前後方向軸）まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はY軸方向（左右方向）成分を用いる。
【０７６１】
上体水平位置補正用摂動モデル安定化モーメント要求値MpfdmdのY軸（左右方向軸）まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はX軸方向（前後方向）成分を用い、右辺第３項の「−」を「+」に代える。
【０７６２】
詳細は、先に本出願人が提案したＰＣＴ／ＪＰ０３／００４３５に記載されているので、ここではこれ以上の説明を省略する。
【０７６３】
次に、上体姿勢傾斜角補正用摂動モデル２０３の安定化制御について詳細を説明する。
【０７６４】
目標瞬時値発生部１００ｂが出力する基準上体姿勢傾斜角（図５７のＳ３４０４で求められたもの）あるいは単純化モデルによる目標上体姿勢傾斜角（図５７のＳ３４１４で求められたもの）に、補正目標上体姿勢傾斜角、すなわち、単純化モデルによる目標上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角を加えたものが整定あるいは追従するように、上体姿勢傾斜角補正用摂動モデル２０３の状態に応じて、ＰＩ制御などのフィードバック制御則によってフィードバック量（操作量）を決定し、これを上体姿勢傾斜角補正用摂動モデル２０３に付加的に入力する。
【０７６５】
この制御則を上体姿勢傾斜角補正用摂動モデル制御則２０７（上体姿勢角補正用摂動モデル制御則２０７と略すこともある）と呼び、このフィードバック量（操作量）を上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと同様の理由からである。制限が加えられて修正されたモーメントを、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfと呼ぶ。
【０７６６】
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdを決定する上体姿勢傾斜角補正用摂動モデル制御則２０７は、具体的には、次式のようにすれば良い。
【０７６７】
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmd
＝Krp＊（補正用摂動モデル上体姿勢傾斜角θc
−（基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角））
＋Krv＊補正用摂動モデル上体姿勢傾斜角速度dθc/dt
…式h１１
ただし、Krp、Krvはフィードバック制御のゲインである。
【０７６８】
なお、式h１１において、（基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角）の代わりに０としてもよい。
【０７６９】
再び、図６６の機能ブロック図を用いてＳ３５３６の処理を説明すると、上記のごとく、前記上体水平位置補正用摂動モデル制御則２０６（式h１０）によって上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdが求められる。また、前記上体姿勢傾斜角補正用摂動モデル制御則２０７（式h１１）によって上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdが求められる。
【０７７０】
次いで、上体水平位置補正用摂動モデル安定化モーメントMpfが０であったと仮定した場合の上体位置補正用摂動モデルの床反力推定（算出）値F0がF0演算部２０８により求められる。後述するように、上体水平位置補正用摂動モデル２０２には、フルモデル床反力モーメント水平成分Mfullxyに、上体水平位置補正用摂動モデル安定化モーメントMpfを加えられたものが入力される。したがって、F0は、上体水平位置補正用摂動モデル２０２にフルモデル床反力モーメント水平成分Mfullxyの符号を反転させたものだけが入力された場合に上体水平位置補正用摂動モデル２０２が発生する床反力である。
【０７７１】
具体的には、次式によってF0が求められる。
【０７７２】
F0＝mb＊d2Xc/dt2−1/h＊Mpf              …式h１２
右辺第１項は、前回（時刻ｔ−Δｔ）の上体水平位置補正用摂動モデル２０２の床反力水平成分を表す。
【０７７３】
右辺第２項は、前回の上体水平位置補正用摂動モデル安定化モーメントMpfによって、上体水平位置補正用摂動モデル２０２に直接的に発生した（すなわち直達項の）床反力水平成分を表す。
【０７７４】
すなわち、上体水平位置補正用摂動モデル２０２の前回の上体質点水平加速度に上体質点の質量mbを乗じた値から、前回の上体水平位置補正用摂動モデル安定化モーメントMpfを上体並進モード床反力比率ｈで割った値を減じることによって、Mpfが０であったと仮定した場合の上体位置補正用摂動モデルの床反力F0の推定値が求められる。
【０７７５】
次に、前記制約（床反力水平成分制約条件およびＺＭＰ制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、目標ＺＭＰまわりの目標床反力モーメント水平成分としてのコンプライアンス制御用目標床反力モーメントを補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたと仮定した場合に、目標ＺＭＰまわりに発生する床反力モーメント水平成分MinがMin演算部２０９により求められる。この床反力モーメント水平成分を無制限時補正目標床反力モーメント水平成分Minと呼ぶ。無制限時補正目標床反力モーメント水平成分Minは、次式によって求められる。
【０７７６】
Min＝Mpfdmd＋Mrfdmd＋Mdmdxy              …式h１３
すなわち、無制限時補正目標床反力モーメント水平成分Minは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと補償全床反力モーメント水平成分Mdmdxyとを加算することにより得られる。
【０７７７】
次いで、前記制約（床反力水平成分制約条件およびＺＭＰ制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたと仮定した場合に、発生する床反力水平成分FinがFin演算部２１０により求められる。この床反力水平成分を無制限時補正目標床反力水平成分Finと呼ぶ。
【０７７８】
補正目標床反力水平成分は、前記式h６によって得られるが、前述のごとく、上体姿勢傾斜角補正用摂動モデル２０３の挙動によって上体姿勢傾斜角補正用摂動モデル２０３には床反力水平成分は発生しない、すなわちFrは０である。したがって、無制限時補正目標床反力水平成分Finは、上体水平位置補正用摂動モデル安定化モーメントMpfが０であったと仮定した場合の補正目標床反力水平成分に、上体水平位置補正用摂動モデル安定化モーメントMpfを０から上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに変更したことによって増加する床反力水平成分を加えたものになる。
【０７７９】
ところで、上体水平位置補正用摂動モデル安定化モーメントMpfを０から上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに変更したことによって増加する床反力水平成分は、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdを上体並進モード床反力比率ｈで割った値になる。
【０７８０】
したがって、無制限時補正目標床反力水平成分Finは、式h１５に示すように、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdを上体並進モード床反力比率ｈで割った値に、前記求めたフルモデル床反力水平成分Ffullを加算し、さらに、上体水平位置補正用摂動モデル安定化モーメントMpfが０であったと仮定した場合の上体位置補正用摂動モデルの床反力の算出値F0を加算することによって得られる。
【０７８１】
Fin＝1/h＊Mpfdmd＋Ffull＋F0          …式h１５
次いで、制限手段（制限処理部）２１１によって、無制限時補正目標床反力モーメント水平成分Minと無制限時補正目標床反力水平成分Finとから、これらに制限を加えた値である（目標ＺＭＰまわりの）制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdが決定される。本実施形態では、コンプライアンス制御用目標床反力モーメント水平成分は、制限補正目標床反力モーメント水平成分Mltdに一致し、補正歩容の床反力水平成分は制限補正目標床反力水平成分Fltdに一致する。
【０７８２】
制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとは、補正歩容（コンプライアンス制御用目標床反力モーメント水平成分を含む）の真のＺＭＰが前記ＺＭＰ許容範囲内に存在し、かつ、補正歩容の床反力水平成分が床反力水平成分許容範囲内になるように決定される。すなわち、MltdおよびFltdはＺＭＰ制約条件および床反力水平成分制約条件を満足するように決定される。
【０７８３】
また、上記制約条件下で、上体水平位置補正用摂動モデル安定化モーメントMpは、可能な限り、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致または近い値になるように決定される。同様に、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrは、可能な限り上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致または近い値になるように決定される。これにより、前記補正用摂動モデル上体位置Xcと前記補正用摂動モデル上体姿勢傾斜角θcとを安定化し、発散することを防止する。
【０７８４】
制限手段（制限処理部）２１１の詳細は、先に本出願人が提案したＰＣＴ／ＪＰ０３／００４３５に記載されているので、ここではこれ以上の説明を省略する。
【０７８５】
次いで、以下の式により、上体水平位置補正用摂動モデル安定化モーメントMpf、および上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfがそれぞれMpf演算部２１２、Mrf演算部２１３により求められる。
【０７８６】
Mpf＝(Fltd−Ffull−F0)＊h        …式h２０
Mrf＝Mltd−Mpf−Mdmdxy          …式h２１
すなわち、Mpf演算部２１２では、制限補正目標床反力水平成分Fltdから、フルモデル床反力水平成分Ffullを減じ、Mpが０であったと仮定した場合の上体位置補正用摂動モデル２０２の床反力の算出値F0を減じた値に、上体並進モード床反力比率ｈを乗じることにより、前記上体水平位置補正用摂動モデル安定化モーメントMpfが得られる。また、Mrf演算部２１３では、目標ＺＭＰまわりの制限補正目標床反力モーメント水平成分Mltdから前記上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが得られる。
【０７８７】
次いで、以下の式により、上体水平位置補正用摂動モデル床反力モーメントMp、および上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが求められる。
【０７８８】
Mp＝Mpf−Mfull      …式h２２
Mr＝Mrf              …式h２３
すなわち、Mp演算部２１４にて、上体水平位置補正用摂動モデル安定化モーメントMpfからフルモデル床反力モーメント水平成分Mfullxyを減じることにより、上体水平位置補正用摂動モデル床反力モーメントMpが得られる。また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrは、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfと同一の値とされる。
【０７８９】
次いで、上体水平位置補正用摂動モデル床反力モーメントMpが上体位置補正用摂動モデル２０２に入力され、その入力された床反力モーメントに釣り合う補正用摂動モデル上体位置Xcが算出される。
【０７９０】
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが上体姿勢傾斜角補正用摂動モデル２０３に入力され、その入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θcが算出される。
【０７９１】
次いで、演算部２０５，２０４にて、それぞれ次式h２４、式h２５に従って、補正目標上体水平位置と補正目標上体姿勢傾斜角とが決定され、これらがそれぞれ上体水平位置姿勢の最終的な目標瞬時値として出力される。
【０７９２】
補正目標上体水平位置
＝単純化モデル上体水平位置＋補正用摂動モデル上体位置Xc
…式h２４
補正目標上体姿勢傾斜角
＝単純化モデル上体姿勢傾斜角＋補正用摂動モデル上体姿勢傾斜角θc
…式h２５
すなわち、単純化モデル上体水平位置に補正用摂動モデル上体位置Xcを加えることにより補正目標上体水平位置が得られ、これが最終的な目標上体水平位置として出力される。また、単純化モデル上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角θcを加えることにより補正目標上体姿勢傾斜角が得られ、これが最終的な目標上体姿勢傾斜角として出力される。
【０７９３】
また、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメント水平成分として制限補正目標床反力モーメント水平成分Mltdが出力されると共に、補正目標床反力水平成分として制限補正目標床反力水平成分Fltdが出力される。
【０７９４】
すなわち、次式h２６、式h２７に従って、補正目標床反力水平成分と目標ＺＭＰまわりの補正目標床反力モーメント水平成分とがそれぞれ、床反力水平成分および床反力モーメント水平成分（目標ＺＭＰまわりのモーメント水平成分）の最終的な目標瞬時値として決定され、これらが出力される。
【０７９５】
コンプライアンス制御用目標床反力モーメント水平成分
＝制限補正目標床反力モーメント水平成分Mltd
…式h２６
補正目標床反力水平成分
＝制限補正目標床反力水平成分Fltd
…式h２７
Ｓ３５３６における以上までの処理は、本願出願人によるＰＣＴ／ＪＰ０３／００４３５の通りであるので、ここでの説明は以上に留める。
【０７９６】
本実施形態ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部２３０において、逆位相腕振り角補正用摂動モデル２３１への入力である逆位相腕振り角補正用摂動モデルモーメントMaと目標床反力モーメント鉛直成分が決定される。次いで、逆位相腕振り角補正用摂動モデルモーメントMaは、逆位相腕振り角補正用摂動モデル２３１に入力され、補正用摂動モデル逆位相腕振り角θcaが決定される。
【０７９７】
補足すると、逆位相腕振り角補正用摂動モデルモーメント決定部２３０は、目標瞬時値発生部１００ｂが出力する基準逆位相腕振り角（図５７のＳ３４０４で求められたもの）あるいは単純化モデルによる目標逆位相腕振り角（図５７のＳ３４１４で求められたもの）に、補正目標逆位相腕振り角、すなわち、単純化モデルによる目標逆位相腕振り角に補正用摂動モデル逆位相腕振り角を加えたものが整定あるいは追従するように、逆位相腕振り角補正用摂動モデル２３１の状態に応じて、ＰＩ制御などのフィードバック制御則によってフィードバック量（操作量）を決定し、これを逆位相腕振り角補正用摂動モデル２３１に付加的に入力する。
【０７９８】
この制御則を逆位相腕振り角補正用摂動モデル制御則と呼び、このフィードバック量（操作量）を逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと同様の理由からである。制限が加えられて修正されたモーメントを、逆位相腕振り角補正用摂動モデル安定化モーメントMafと呼ぶ。なお、本実施形態では、このＭafが、逆位相腕振り角補正用摂動モデルモーメントMaとして、逆位相腕振り角補正用摂動モデル２３１に入力される。
【０７９９】
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdを決定する逆位相腕振り角補正用摂動モデル制御則は、具体的には、次式のようにすれば良い。
【０８００】
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmd
＝Kap＊（補正用摂動モデル逆位相腕振り角θca
−（基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角））
＋Kav＊補正用摂動モデル逆位相腕振り角速度dθca/dt
…式h３０
ただし、Kap、Kavはフィードバック制御則のゲインである。
【０８０１】
なお、式h３０において、（基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角）の代わりに０としてもよい。
【０８０２】
以下に、逆位相腕振り角補正用摂動モデルモーメント決定部２３０の動作についてその機能ブロック図である図７０を用いて詳細を説明する。
【０８０３】
まず、上記のごとく、前記逆位相腕振り角補正用摂動モデル制御則２３０ａ（式h３０）によって逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdが求められる。
【０８０４】
次いで、上体水平位置補正用摂動モデル２０２を用いた上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Mpzが、上体水平位置補正に起因する床反力モーメント鉛直成分摂動量算出部２３０ｂによって求められる。
【０８０５】
具体的には、次式によって求められる。
【０８０６】
Mpz＝（単純モデル上体質点位置
＋補正用摂動モデル上体位置Xc−目標ＺＭＰ）
＊（単純モデル上体質点水平加速度
＋補正用摂動モデル上体加速度d2Xc/dt2）
−（単純モデル上体質点位置  −  目標ＺＭＰ）
＊（単純モデル上体質点水平加速度）
…式h３１
あるいは、上式を近似した以下の式を用いても良い。
【０８０７】
Mpz≒補正用摂動モデル上体位置Xc
＊（単純モデル上体質点水平加速度
＋補正用摂動モデル上体加速度d2Xc/dt2）
＋（単純モデル上体質点位置−目標ＺＭＰ）
＊  補正用摂動モデル上体加速度d2Xc/dt2）
…式h３２
次に、前記床反力モーメント鉛直成分制約条件を無視して、逆位相腕振り角補正用摂動モデル安定化モーメントMafを、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdに一致させると共に、目標ＺＭＰまわりの目標床反力モーメント鉛直成分としてのコンプライアンス制御用目標床反力モーメント鉛直成分を補償全床反力モーメント鉛直成分MdmdzとMafとMfullzとMpzとの総和に一致させたと仮定した場合に、目標ＺＭＰまわりに発生する床反力モーメント鉛直成分Minzが演算部２３０ｃにより求められる。この床反力モーメント鉛直成分を無制限時補正目標床反力モーメント鉛直成分Minzと呼ぶ。無制限時補正目標床反力モーメント鉛直成分Minzは、次式によって求められる。
【０８０８】
Minz＝Mafdmd＋Mdmdz＋Mfullz＋Mpz              …式h３３
すなわち、無制限時補正目標床反力モーメント鉛直成分Minzは、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdと補償全床反力モーメント鉛直成分Mdmdzとフルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正用摂動モデルモーメント鉛直成分Mpzとを加算することにより得られる。
【０８０９】
次いで、制限手段（制限処理部）２３０ｄによって、無制限時補正目標床反力モーメント鉛直成分Minzから、これに制限を加えた値である（目標ＺＭＰまわりの）制限補正目標床反力モーメント鉛直成分Mltdzが決定される。本実施形態では、コンプライアンス制御用目標床反力モーメント鉛直成分は、制限補正目標床反力モーメント鉛直成分Mltdzに一致する。
【０８１０】
制限補正目標床反力モーメント鉛直成分Mltdzは、床反力モーメント鉛直成分許容範囲内になるように決定される。すなわち、Mltdzは床反力モーメント鉛直成分制約条件を満足するように決定される。
【０８１１】
また、上記床反力モーメント鉛直成分制約条件下で、逆位相腕振り角補正用摂動モデル安定化モーメントMafは、可能な限り、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdに一致または近い値になるように決定される。これにより、前記補正用摂動モデル逆位相腕振り角θcaを安定化し、発散することを防止する。
【０８１２】
制限手段（制限処理部）２３０ｄは、次式に示す飽和特性を持った関数である。
【０８１３】
Minz＞床反力モーメント鉛直成分許容範囲上限値である場合
Mltdz＝床反力モーメント鉛直成分許容範囲上限値
Minz＜床反力モーメント鉛直成分許容範囲下限値である場合
Mltdz＝床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Minz、且つ、Minz≦床反力モーメント鉛直成分許容範囲上限値である場合
Mltdz＝Minz
……式h３４
次いで、以下の式により、逆位相腕振り角補正用摂動モデルモーメントMa（＝逆位相腕振り角補正用摂動モデル安定化モーメントMaf）がMaf演算部２３０ｅにより求められる。
【０８１４】
Ma＝Mltdz−(Mdmdz＋Mfullz＋Mpz)        …式h３５
すなわち、Maf演算部２３０ｅでは、制限補正目標床反力モーメント鉛直成分Mltdzから、補償全床反力モーメント鉛直成分Mdmdzとフルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正用摂動モデルモーメント鉛直成分Mpzとを減じることによって、逆位相腕振り角補正用摂動モデル安定化モーメントMafとしての逆位相腕振り角補正用摂動モデルモーメントMaが得られる。
【０８１５】
一方、目標ＺＭＰまわりのコンプライアンス制御用目標床反力モーメント鉛直成分として制限補正目標床反力モーメント鉛直成分Mltdzが出力される。
【０８１６】
すなわち、次式h３６に従って、目標ＺＭＰまわりの補正目標床反力モーメント鉛直成分が床反力モーメント鉛直成分（目標ＺＭＰまわりのモーメント鉛直成分）の最終的な目標瞬時値として決定され、これらが出力される。
【０８１７】
コンプライアンス制御用目標床反力モーメント鉛直成分
＝制限補正目標床反力モーメント鉛直成分Mltdz
…式h３６
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部２３０の処理が行われた後、逆位相腕振り角補正用摂動モデルモーメントMaは、図６６の逆位相腕振り角補正用モデル２３１に入力され、その入力された逆位相腕振り角補正用摂動モデルモーメントMaに釣り合う補正用摂動モデル逆位相腕振り角θcaが、式a２３cを用いて（積分することによって）算出される。
【０８１８】
次いで、演算部２３２にて、次式h３７に従って、補正目標逆位相腕振り角が決定され、これが逆位相腕振り角の最終的な目標瞬時値として出力される。
【０８１９】
補正目標逆位相腕振り角
＝単純化モデル逆位相腕振り角
＋補正用摂動モデル逆位相腕振り角θca
…式h３７
すなわち、単純化モデル逆位相腕振り角に補正用摂動モデル逆位相腕振り角θcaを加えることにより補正目標逆位相腕振り角が得られる、これが最終的な目標逆位相腕振り角として出力される。
【０８２０】
以上のごとく、Ｓ３５３６の歩容補正が行われる。
【０８２１】
尚、補足すると、本実施形態は、フィードフォワード型の補正であり、また、摂動動力学モデルは厳密モデルではない。このため、上記のごとく式h５、式h６および式h１００６を満足するように歩容を補正しても、厳密には、動力学平衡条件を満足するわけではなく、近似的に動力学平衡条件を満足する。
【０８２２】
また、本実施形態では、例えば１歩の歩容の終端（今回歩容終端）において、上体水平位置補正用摂動モデル２０２と上体姿勢傾斜角補正用摂動モデル２０３と逆位相腕振り角補正用摂動モデル２３１との状態量、例えば上体水平位置補正用摂動モデル２０２の上体質点（倒立振子質点）の水平位置や、上体姿勢傾斜角補正用摂動モデル２０３のフライホールの回転角や、逆位相腕振り角補正用摂動モデル２３１のフライホールの回転角は、単純化モデル２００の状態量として追加される。つまり、今回歩容終端における単純化モデル２００の状態量が、上体水平位置補正用摂動モデル２０２の上体運動と上体姿勢傾斜角補正用摂動モデル２０３と逆位相腕振り角補正用摂動モデル２３１との状態量を加えたものに修正される。さらに、各摂動モデル２０２，２０３，２３１の状態量は初期化される（例えば上体水平位置補正用摂動モデル２０２の上体質点（倒立振子質点）の水平位置や、上体姿勢傾斜角補正用摂動モデル２０３のフライホールの回転角や、逆位相腕振り角補正用摂動モデル２３１のフライホールの回転角が０にリセットされる）。そして、上記の如く修正した単純化モデル２００の状態量を次回歩容の初期値として、次回歩容の生成が行なわれると共に、各摂動モデル２０２，２０３，２３１による補正用摂動モデル上体水平位置Xc、補正用摂動モデル上体姿勢傾斜角θcおよび補正用摂動モデル逆位相腕振り角θcaの算出が行なわれる。これにより各摂動モデル２０２，２０３，２３１の挙動の安定性をより一層高めることができる。なお、上記のような単純化モデル２００の状態量の修正は、歩容の生成途中で適宜行なってもよい。逆に、上記のような単純化モデル２００の状態量の修正や摂動モデルのリセットを、歩容の生成途中に行なわなくてもよい。
【０８２３】
また、上記のような単純化モデル２００の状態量の修正は、後述する第４、第５実施形態においても同様に行なわれる。
【０８２４】
本実施形態では、前記復元条件すべてを満足する。したがって、前記第２実施形態と同様の作用効果を奏することができる。
【０８２５】
さらに、第２実施形態の作用効果に加え、前記復元条件を満足するように上体水平位置、上体姿勢傾斜角および逆位相腕振り角を決定する際に、演算量を比較的少ないものとすることができる。
【０８２６】
以上説明した第３実施形態は、本発明のうちの第１〜第１０発明、第１２〜第１５発明、第２０〜第２２発明、第２４〜第２６発明、第２８〜第３０発明の実施形態になっている。この場合、第３実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第３実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当する。そして、前記逆位相腕振り角補正用摂動モデルモーメントＭａが第１０発明におけるモーメント修正操作量と、第２２発明における摂動モデル操作量とに相当し、補正用摂動モデル逆位相腕振り角θcaが第２発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量とに相当する。さらに、第３実施形態における、無制限時補正目標床反力モーメント鉛直成分Minzが第２６発明における制限対象量の推定値に、逆位相腕振り角補正用モデル安定化モーメントMafdmdが第３発明におけるモデル補正床反力モーメンと第２４発明における摂動モデル操作量の要求値とに相当する。さらに、第３実施形態におけるフルモデル床反力モーメント鉛直成分Mfullzに上体水平位置補正に起因する床反力モーメント鉛直成分Mpzを加えたものが、目標運動の仮瞬時値にフルモデル（動力学モデル）上でほぼ釣り合う床反力モーメントの鉛直成分に相当する。そして、これに図７０の演算部２３０ｃでMdmdzを加えたものが第２０発明におけるモデル制限対象量瞬時値に相当する。
【０８２７】
なお、前記第３実施形態においては、Mafdmdは定常的に０となるものでは無いが、これを定常的に０とすれば、本発明のうちの第２３発明の実施形態が構成されることとなる。
【０８２８】
次に本発明の第４実施形態を以下に図７１及び図７２を参照して説明する。第４実施形態に係る装置の補正手法は、前記第３実施形態のものと歩容生成装置１００の処理（図６５のＳ３５３６の処理）のみが相違するものであり、フルモデルフィードバック補正型である。また、逆動力学フルモデル（逆フルモデル）を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
【０８２９】
図７１は、この第４実施形態に係る装置の動作、具体的には、図６５のフローチャートのＳ３５３６の歩容の修正手法を説明する機能ブロック図である。ただし、図７１の単純化モデル２００は、前記第３実施形態と同様、単に動力学モデルだけでなく、図６５のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表す。したがって、図７１において、単純化モデル２００から先の部分がＳ３５３６の処理に相当する。なお、図７１の機能部分のうち、第３実施形態に係る図６６と同一の機能分については、図６６と同一の参照符号を用い、詳細な説明を省略する。
【０８３０】
Ｓ３５３６の処理以外の構成は第３実施形態と同じであるので説明を省略し、以下に図７１を用いてＳ３５３６の処理を詳細に説明する。
【０８３１】
Ｓ３５３６では、まず、前述のごとく図６５のＳ３５３２で求めた単純化モデル歩容の目標上体水平位置の瞬時値（現在時刻ｔの制御周期で求めた仮瞬時値）に、前回制御周期（時刻ｔ−Δｔ）で後述のごとく算出した補正用摂動モデル上体水平位置Xcを演算部２０５により加えることにより、最終的な目標上体水平位置（補正目標上体水平位置）が求められる。また、図６５のＳ３５３２で求めた単純化モデル歩容の目標上体姿勢傾斜角の瞬時値（現在時刻ｔの制御周期で求めた仮瞬時値）に、前回制御周期（時刻ｔ−Δｔ）で算出した後述する補正用摂動モデル上体姿勢傾斜角θcを演算部２０４により加えることにより、最終的な目標上体姿勢傾斜角（補正目標上体姿勢傾斜角）が求められる。また、図６５のＳ３５３２で求めた単純化モデル歩容の目標逆位相腕振り角の瞬時値（現在時刻ｔの制御周期で求めた仮瞬時値）に、前回制御周期（時刻ｔ−Δｔ）で算出した後述する補正用摂動モデル逆位相腕振り角θcaを演算部２３２により加えることにより、最終的な目標逆位相腕振り角（補正目標逆位相腕振り角）が求められる。
【０８３２】
そして、これらの補正目標上体水平位置、補正目標上体姿勢傾斜角および補正目標逆位相腕振り角が、それぞれ上体水平位置、上体姿勢傾斜角および逆位相腕振り角の最終的な目標瞬時値として出力される。
【０８３３】
すなわち、前記式h２４、式h２５、式h３７により、補正目標上体水平位置と補正目標上体姿勢傾斜角と補正目標逆位相腕振り角とが求められる。
【０８３４】
次いで、上記の如く単純化モデル歩容を補正して得られた目標上体水平位置（補正目標上体水平位置）、目標上体姿勢傾斜角（補正目標上体姿勢傾斜角）、目標逆位相腕振り角（補正目標逆位相腕振り角）、および前述のごとく得られた単純化モデル歩容の目標重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ＺＭＰの瞬時値とを、前記逆動力学フルモデル２０１に入力し、その入力された運動変数で表される運動に釣り合う（すなわち運動によって逆フルモデル２０１が発生する）床反力水平成分と目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）とが算出される。従って、本実施形態では、逆フルモデル２０１には、単純化モデル上体水平位置、上体姿勢傾斜角、逆位相腕振り角に加えて、補正用摂動モデル上体水平位置Xcと補正用摂動モデル上体姿勢傾斜角θcと補正用摂動モデル逆位相腕振り角θcaとが追加的に入力される。以降、第３実施形態と同様、逆フルモデル２０１により算出された床反力水平成分、床反力モーメント水平成分、床反力モーメント鉛直成分、をそれぞれフルモデル床反力水平成分Ffullxy、フルモデル床反力モーメント水平成分Mfullxy、フルモデル床反力モーメント鉛直成分Mfullzと呼ぶ。
【０８３５】
フルモデル床反力水平成分Ffullは、補正目標床反力水平成分（現在時刻ｔにおける床反力水平成分の最終的な目標瞬時値）として出力される。
【０８３６】
すなわち、以下の式により、補正目標床反力水平成分が決定されて出力される。
【０８３７】
補正目標床反力水平成分＝フルモデル床反力水平成分Ffull
…式h４８
以上の処理からわかるように、本実施形態では、フルモデル補正歩容は、単純化モデル歩容に上体水平位置補正用摂動モデル２０２の挙動と上体姿勢傾斜角補正用摂動モデル２０３の挙動と逆位相腕振り角補正用摂動モデル２３１の挙動とを加えたものになる。さらに、上体傾斜モードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力水平成分がいずれも０であることを考慮すると、次式が成立する。ただし、単純化モデル床反力水平成分は、単純化モデル歩容の運動によって発生する床反力を逆フルモデル２０１を用いて算出したものの並進力水平成分である。
【０８３８】
フルモデル床反力水平成分Ffull
＝単純化モデル床反力水平成分
＋上体水平位置補正用摂動モデル床反力水平成分Fp
…式h５１
次いで、上体水平位置補正用摂動モデル制御則２０６により、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdが決定される。本実施形態における上体水平位置補正用摂動モデル制御則２０６は、特願２００１−１３３６２１号で本願出願人が提案した如く、設定される。例えば、次式のように該制御則２０６が決定される。
【０８３９】
上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
＝Kpg＊重心差＋Kvg＊補正用摂動モデル上体水平速度dXc/dt
…式h５２
ただし、重心差は、次式で求められる。
【０８４０】
重心差＝フルモデル重心水平位置−単純化モデル重心水平位置
…式h５３
式h５２におけるKpg、Kvgはフィードバック制御則のゲインであり、フルモデル重心水平位置、単純化モデル重心水平位置および補正用摂動モデル上体水平速度dXc/dtは、それぞれ、前回（時刻ｔ−Δｔ）に後述のごとく算出したフルモデル歩容瞬時値の重心水平位置、単純化モデル歩容瞬時値の重心水平位置（単純化モデル歩容の瞬間姿勢を基に単純化モデルを用いて計算される重心水平位置XGs）、および補正用摂動モデル上体水平速度dXc/dtである。
【０８４１】
即ち、フルモデル重心水平位置から単純化モデル重心水平位置を減算して得た重心差と摂動モデルの状態量のひとつである摂動モデル上体速度とに基づいて摂動モデル制御用フィードバック量（操作量）を演算するようにした。かかる摂動モデル制御則により、前記重心差の時間的平均値を、ほぼ０に制御することができる。
【０８４２】
次いで、上体姿勢傾斜角補正用摂動モデル制御則２０７により、上体姿勢補正用摂動モデル安定化モーメント要求値Mrfdmdが決定される。これは、第３実施形態と同様の制御則を用いれば良い。従って、該制御則２０７としては、例えば前記式h１１が用いられる。
【０８４３】
次いで、無制限時補正目標床反力モーメントMinがMin演算部２０９により求められる（推定される）。無制限時補正目標床反力モーメントMinは、第３実施形態と同様、前記制約（ＺＭＰ制約条件および床反力水平成分制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、目標ＺＭＰまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させた場合に、目標ＺＭＰまわりに発生する床反力モーメント水平成分である。
【０８４４】
無制限時補正目標床反力モーメント水平成分Minは、第３実施形態と同様、前記式h１３の演算によって求められる。すなわち、無制限時補正目標床反力モーメント水平成分Minは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと補償全床反力モーメント水平成分Mdmdxyとを加算することにより得られる。
【０８４５】
さらに、Fin演算部２１０により、無制限時補正目標床反力水平成分Finも求められる（推定される）。無制限時補正目標床反力水平成分Finは、第３実施形態と同様、前記制約（ＺＭＰ制約条件および床反力水平成分制約条件）を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたとした場合に、逆フルモデル２０１が発生する床反力水平成分（Ffullに相当）である。
【０８４６】
無制限時補正目標床反力水平成分Finは、第３実施形態とは異なり、次式により求められる。
【０８４７】
無制限時補正目標床反力水平成分Fin
＝フルモデル床反力水平成分Ffull
＋1/h
＊(上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
−上体水平位置補正用摂動モデル安定化モーメントMpf)
…式h５４
ただし、上体水平位置補正用摂動モデル安定化モーメントMpfは前回値（時刻ｔ−Δｔでの値）が用いられる。すなわち、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体水平位置補正用摂動モデル安定化モーメントMpfの差を求め、上体水平位置補正用摂動モデルの入力を前記差だけ増加させることに起因するフルモデル床反力水平成分Ffullの増加量を、前記差を上体並進モード床反力比率ｈで割ることにより推定する。さらに、これにフルモデル床反力水平成分Ffullを加えることにより、無制限時補正目標床反力水平成分Finが推定される。
【０８４８】
次いで、第３実施形態と同様の制限手段（制限処理部２１１）によって、無制限時補正目標床反力モーメント水平成分Minと無制限時補正目標床反力水平成分Finとから、前記制約（ＺＭＰ制約条件および床反力水平成分制約条件）を満足するように、これらに制限を加えた値である（目標ＺＭＰまわりの）制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとが決定される。この処理手法は、第３実施形態と同一である。
【０８４９】
本実施形態においても、コンプライアンス制御用目標床反力モーメント水平成分は制限補正目標床反力モーメント水平成分Mltdに一致され、また、補正目標床反力水平成分は制限補正目標床反力水平成分Fltdにほぼ一致するので、上記のごとく制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとを決定することによって、コンプライアンス制御用目標床反力モーメント水平成分および補正目標床反力水平成分は、それぞれＺＭＰ制約条件および床反力水平成分制約条件をほぼ満足する。
【０８５０】
次いで、Mpf演算部２１５によって、上体水平位置補正用摂動モデル安定化モーメントMpfが求められる。さらに詳細には、制限補正目標床反力水平成分Fltdからフルモデル床反力水平成分Ffullを減じた値にゲインKcを乗じたものを積分器２１５ａにて積分し、さらに得られた積分値に上体並進モード床反力比率ｈを乗じることにより、上体水平位置補正用摂動モデル安定化モーメントMpfが求められる。すなわち、次式により、上体水平位置補正用摂動モデル安定化モーメントMpfが得られる。
【０８５１】
Mpf＝h＊∫Kc(Fltd−Ffull)dt                  …式h５５
次いで、Mrf演算部２１４によって、制限補正目標床反力モーメント水平成分Mltdから上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが求められる。すなわち、前記式h２１により、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが得られる。
【０８５２】
さらに、前記式h２３により、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが決定される。すなわち、Mrf演算部２１４の出力である上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfがそのまま上体姿勢傾斜角補正用摂動モデル床反力モーメントMrとして決定される。
【０８５３】
次いで、次式で定義されるフルモデル床反力モーメント誤差MerrがMerr演算部２１６により算出される。
【０８５４】
フルモデル床反力モーメント誤差Merr
＝フルモデル床反力モーメント水平成分Mfullxy
−制限補正目標床反力モーメント水平成分Mltd
…式h５６
次いで、Mp演算部２１７により、次式に従って、上体水平位置補正用摂動モデル床反力モーメントMpが求められる。
【０８５５】
Mp＝Mpf−∫Km*Merr dt            …式h５７
すなわち、フルモデル床反力モーメント誤差Merrに積分ゲインKmを乗じた値を積分器２１７ａにて積分すると共に、その積分値の符号を反転する。さらに、該積分器２１７ａの出力を上体水平位置補正用摂動モデル安定化モーメントMpfに加えることにより、上体水平位置補正用摂動モデル床反力モーメントMpが求められる。
【０８５６】
次いで、上体水平位置補正用摂動モデル床反力モーメントMpを上体位置補正用摂動モデル２０２に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体位置Xcが算出される。
【０８５７】
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrを上体姿勢傾斜角補正用摂動モデル２０３に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θcが算出される。
【０８５８】
Ｓ３５３６における以上までの処理は、ＰＣＴ／ＪＰ０３／００４３５の通りであるので、ここでの説明は以上に留める。
【０８５９】
本実施形態ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部２３０において、逆位相腕振り角補正用摂動モデルモーメントMaが決定される。
【０８６０】
さらに逆位相腕振り角補正用摂動モデルモーメントMaが逆位相腕振り角補正用摂動モデルに入力されて、補正用摂動モデル逆位相腕振り角θcaが決定される。
【０８６１】
以下に、本実施形態での逆位相腕振り角補正用摂動モデルモーメント決定部２３０の動作についてその機能ブロック図である図７２を用いて詳細を説明する。
【０８６２】
まず、逆位相腕振り角補正用摂動モデル制御則により、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdが決定される。これは、第３実施形態と同様の制御則を用いれば良い。従って、該制御則としては、例えば前記式h３０が用いられる。
【０８６３】
次いで、演算部２３０ｇにおいて、フルモデル床反力モーメント鉛直成分Mfullzと補償全床反力モーメント鉛直成分Mdmdzと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdとの和から逆位相腕振り角補正用摂動モデルモーメントMaの前回値（後述する積分器の出力）を減じることによって無制限時補正目標床反力モーメント鉛直成分Minzを求める。次いで、制限手段（制限処理部）２３０ｈにおいて、無制限時補正目標床反力モーメント鉛直成分Minzを床反力鉛直成分モーメント許容範囲を越えないように制限を加えることにより（すなわち図示する飽和特性関数に通して）、制限時補正目標床反力モーメント鉛直成分Mltdzを求める。次いで、フルモデル床反力モーメント鉛直成分Mfullzと補償全床反力モーメント鉛直成分Mdmdzと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdとの和を制限時補正目標床反力モーメント鉛直成分Mltdzから減じた値を積分器２３０ｉにより、積分ゲインKaで積分することにより逆位相腕振り角補正用摂動モデルモーメントMaを求めて、これを出力する。また、制限時補正目標床反力モーメント鉛直成分Mltdzをコンプライアンス制御用目標床反力モーメント鉛直成分として出力する。
【０８６４】
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部２３０において、逆位相腕振り角補正用摂動モデルモーメントMaとコンプライアンス制御用目標床反力モーメント鉛直成分が決定される。
【０８６５】
求めた補正用摂動モデル上体位置Xc、補正用摂動モデル上体姿勢傾斜角θc、補正用摂動モデル逆位相腕振り角θca、上体水平位置補正用摂動モデル安定化モーメントMpfおよび逆位相腕振り角補正用摂動モデルモーメントMaは、前述のごとく次回制御周期（時刻ｔ＋Δｔ）において、前回値として用いられる。
【０８６６】
残余の構成および処理は、第３実施形態と同一である。この第４実施形態によれば、第３実施形態と同様の作用効果を奏することができる。
【０８６７】
以上説明した第４実施形態は、本発明のうちの第１〜第１０発明、第１２〜１５発明、第２０〜第２２発明、および第２４〜第３０発明の実施形態になっている。この場合、第４実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第４実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当する。そして、前記逆位相腕振り角補正用摂動モデルモーメントＭａが第３発明におけるモデル補正床反力モーメントと第１０発明におけるモーメント修正操作量と、第２２発明における摂動モデル操作量とに相当し、補正用摂動モデル逆位相腕振り角θcaが第２発明および第１１発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量とに相当する。さらに、第４実施形態における、無制限時補正目標床反力モーメント鉛直成分Minzが第２６発明における制限対象量の推定値に、逆位相腕振り角補正用モデル安定化モーメント要求値Mafdmdが第３発明におけるモデル補正床反力モーメンと第２４発明における摂動モデル操作量の要求値に相当する。さらに、第４実施形態におけるフルモデル床反力モーメント鉛直成分Mfullzが、目標運動の仮瞬時値にフルモデル（動力学モデル）上でほぼ釣り合う床反力モーメントの鉛直成分に相当する。そして、これに図７２の演算部２３０ｇでMdmdzを加えたものが第２０発明におけるモデル制限対象量瞬時値に相当する。また、第４実施形態では、第２７発明の如く、目標運動の補正量（補正用摂動モデル逆位相腕振り角θca）が動力学モデルであるフルモデルに追加的に入力される。
【０８６８】
なお、前記第４実施形態においては、Mafdmdは定常的に０となるものでは無いが、これを定常的に０とすれば、本発明のうちの第２３発明の実施形態が構成されることとなる。
【０８６９】
次に、本発明の第５実施形態を図７３および図７４を参照して説明する。第５実施形態は、前記第３および第４実施形態で用いた逆動力学フルモデル（逆フルモデル）２０１に代えて、順動力学モデル（より正確には擬似順動力学モデル）を用いて歩容を修正しつつ生成する手法である。
【０８７０】
図７３は、この第５実施形態に係る装置の動作を説明する機能ブロック図である。同図７３に示すように、本実施形態では、擬似順フルモデル（擬似順動力学フルモデル）２２２を備えている。
【０８７１】
この擬似順フルモデル２２２は、上体水平位置安定化モーメント要求値Mpfdmd、上体姿勢傾斜角安定化モーメント要求値Mrfdmd、逆位相腕振り角安定化モーメント要求値Mafdmd、目標ＺＭＰ、目標床反力鉛直成分、補償全床反力モーメント水平成分Mdmdxyおよび補償全床反力モーメント鉛直成分Mdmdzと、目標足平位置姿勢および目標腕姿勢など上体３を除く部位の運動状態とを入力として、目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標ＺＭＰまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）、および目標床反力水平成分を出力するモデルである。なお、擬似順フルモデル２２２の目標値入力は、前記図６３を参照して説明した如く、歩容パラメータ決定部１００ａで決定される歩容パラメータを基に、目標瞬時値発生部１００ｂにより生成される。
【０８７２】
上記擬似順フルモデル２２２は、具体的には図７４の機能ブロック図で表され、図７４の破線で囲った部分が擬似順フルモデル２２２に相当する。なお、この機能ブロック図で前記第４実施形態の図７１と同一機能部分については、図７１と同一の参照符号を用いている。
【０８７３】
ここで、同図７４の単純化モデル２００は、単に動力学モデルだけでなく、前述の図６５のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表す。また、Ｓ３５３２の今回歩容瞬時値（単純化モデル歩容瞬時値）の算出（決定）処理においては、前記第３実施形態で説明したように目標ＺＭＰまわりのモデル操作床反力モーメント水平成分を０として歩容の瞬時値を生成した上で、さらに第３実施形態において述べた上体姿勢傾斜角補正用摂動モデルモーメントMrに相当する単純化歩容上体姿勢傾斜角補正用モーメントMr（前回値）を発生する上体傾斜モードの摂動運動と第３実施形態において述べた上体水平位置補正用摂動モデルモーメントMpに相当する単純化モデル上体水平位置補正用モーメントMp（前回値）を発生する上体並進モードの摂動運動と第３実施形態において述べた逆位相腕振り角補正用摂動モデルモーメントMaに相当する単純化モデル逆位相腕振り角補正用モーメントMa（前回値）を発生する逆位相腕振りモードの摂動運動を付加する。これにより、単純化モデル２００が出力する歩容の瞬時値を補正する。
【０８７４】
より具体的に説明すると、本実施形態における図６５のＳ３５３２の処理においては、そのサブルーチン処理である図５７のＳ３４１４とＳ３４１６において、単純化モデル２００で求めた上体水平加速度に、前記式０３yの右辺第２項をMp（前回値）に等しいとした式、すなわちMp＝mb＊(Zb−Zzmp)＊(d2Xb/dt2)という式に基づいて求められる上体水平加速度(d2Xb/dt2)を摂動分として加えてなる上体水平加速度を今回歩容の初期から現在時刻ｔまで２階積分することにより、現在時刻ｔにおける上体水平位置の瞬時値が求められる。また、図５７のＳ３４１４において、単純化モデル２００で求めた上体姿勢傾斜角加速度に、前記式０３yの右辺第７項をMr（前回値）に等しいとした式、すなわち、Mr＝J＊d2θby/dt2という式に基づいて求められる上体姿勢傾斜角加速度（d2θby/dt2）を摂動分として加えてなる上体姿勢傾斜角加速度を今回歩容の初期から現在時刻ｔまで２階積分することにより、現在時刻ｔにおける上体姿勢傾斜角の瞬時値が求められる。また、図５７のＳ３４１４において、単純化モデル２００で求めた逆位相腕振り角加速度に、前記式０３zの右辺第８項をMa（前回値）に等しいとした式、すなわち、Ma＝Jaz＊d2θaz/dt2という式に基づいて求められる逆位相腕振り角加速度（d2θaz/dt2)を摂動分として加えてなる逆位相腕振り角加速度を今回歩容の初期から現在時刻ｔまで２階積分することにより、現在時刻ｔにおける逆位相腕振り角の瞬時値が求められる。
【０８７５】
補足すると、上体水平位置と上体姿勢傾斜角については、サジタルプレーン上の瞬時値について述べたが、ラテラルプレーン上の瞬時値も同様に求める。
【０８７６】
図７４において、単純化モデル２００から先の部分がＳ３５３６の処理に相当する処理を実行する部分である。以下に図７４を用いてＳ３５３６の処理を詳細に説明する。
【０８７７】
Ｓ３５３６では、まず、Ｓ３０３２において上記の如く単純化モデル上体水平位置補正用モーメントMp（詳しくは時刻（ｔ−Δｔ）の制御周期での前回値）を基に補正された単純化モデル水平上体位置が目標上体水平位置（時刻ｔでの上体水平位置の最終的な目標瞬時値）として出力される。また、単純化モデル上体姿勢傾斜角補正用モーメントMr（詳しくは時刻（ｔ−Δｔ）の制御周期での前回値）を基に補正された単純化モデル上体姿勢傾斜角が目標上体姿勢傾斜角（時刻ｔでの上体姿勢傾斜角の最終的な目標瞬時値）として出力される。また、単純化モデル逆位相腕振り角補正用摂動モデルモーメントMa（詳しくは時刻（ｔ−Δｔ）の制御周期での前回値）を基に補正された単純化モデル逆位相腕振り角が目標逆位相腕振り角（時刻ｔでの逆位相腕振り角の最終的な目標瞬時値）として出力される。
【０８７８】
すなわち、式h１００、式h１０１、式h１０２により、最終的な目標上体水平位置と目標上体姿勢傾斜角とが決定される。
【０８７９】
目標上体水平位置＝単純化モデル上体水平位置       …式h１００
目標上体姿勢傾斜角＝単純化モデル上体姿勢傾斜角    …式h１０１
目標逆位相腕振り角＝単純化モデル逆位相腕振り角    …式h１０２
次いで、目標上体水平位置（すなわち単純化モデル上体水平位置）、目標上体姿勢傾斜角（すなわち単純化モデル上体姿勢傾斜角）、目標逆位相腕振り角（すなわち単純化モデル逆位相腕振り角）および前述のごとく得られた単純化モデル歩容の目標全体重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ＺＭＰの瞬時値とを、前記逆動力学フルモデル（逆フルモデル）２０１に入力し、入力された運動変数で表される運動に釣り合う（すなわち運動によって逆フルモデル２０１が発生する）床反力水平成分と目標ＺＭＰまわりの床反力モーメント（水平成分および鉛直成分）とが算出される。以降、第４実施形態と同様、これらの算出された床反力水平成分、床反力モーメント水平成分および床反力モーメント鉛直成分をそれぞれフルモデル床反力水平成分Ffull、フルモデル床反力モーメント水平成分Mfullxy、床反力モーメント鉛直成分Mfullzと呼ぶ。
【０８８０】
第４実施形態と同様、フルモデル床反力水平成分Ffullは、目標床反力水平成分（時刻ｔでの床反力水平成分の最終的な目標瞬時値）として出力される。
【０８８１】
本実施形態では、上体姿勢傾斜角補正用摂動モデルと上体水平位置補正用摂動モデルと逆位相腕振り角補正用摂動モデルとを備えないので、上体水平位置補正用摂動モデル制御則と上体姿勢傾斜角補正用摂動モデル制御則と逆位相腕振り角補正用摂動モデル制御則とに相当する処理は、後述するように、第４実施形態とは異なる。
【０８８２】
このことを除けば、上記処理以降、単純化モデル上体姿勢傾斜角補正用モーメントMrと単純化モデル上体水平位置補正用モーメントMpと単純化モデル逆位相腕振り角補正用モーメントMaとを決定するまでは、第４実施形態において、上体姿勢傾斜角補正用摂動モデルモーメントMrと上体水平位置補正用摂動モデルモーメントMpと逆位相腕振り角補正用摂動モデルモーメントMaとを決定する処理と同一の処理が実行される。すなわち、Min演算部２０９、Fin演算部２１０、制限処理部２１１（制限手段）、Mpf演算部２１５、Merr演算部２１６、Mrf演算部２１７（＝Mr演算部）、Mp演算部２１４の処理は、第４実施形態と同一である。さらに、逆位相腕振り角補正用摂動モデル制御則とに相当する処理を除けば、単純化モデル逆位相腕振り角補正用モーメント決定部２３０の処理は、前記第４実施形態における逆位相腕振り角補正用摂動モデルモーメント決定部２３０の処理と同一である。なお、本実施形態では、Mr、MpおよびMaは、それぞれ第４実施形態における上体姿勢傾斜角補正用摂動モデルモーメントMrと上体水平位置補正用摂動モデルモーメントMpと逆位相腕振り角補正用摂動モデルモーメントMaとにそれぞれ対応するものであるが、第４実施形態のように摂動モデルに入力するものではなく、単純化モデル２００に入力するものである。このため、Mr、MpおよびMaの名称を本実施形態では、単純化モデル上体姿勢傾斜角補正用モーメント、単純化モデル上体水平位置補正用モーメント、単純化モデル逆位相腕振り角補正用モーメントと称している。
【０８８３】
上記のごとく求められた単純化モデル上体姿勢傾斜角補正用モーメントMrと単純化モデル上体水平位置補正用モーメントMpと単純化モデル逆位相腕振り角補正用モーメントMaとは、前述のごとく次回制御周期（時刻ｔ＋Δｔ）に、単純化モデル歩容瞬時値の決定（生成）時に前回値として用いられる。
【０８８４】
残余の構成及び処理は、第４実施形態と同一である。
【０８８５】
以下に、上体姿勢傾斜角安定化モーメント要求値Mrfdmdと上体水平位置安定化モーメント要求値Mpfdmdと逆位相腕振り角安定化モーメント要求値Mafdmdとの決定処理について図７３を参照して説明する。
【０８８６】
図７３に示すように、本実施形態では、前述したように擬似順フルモデル２２２に備える単純化モデル２００とは別の単純化モデル２２３を備えている。この単純化モデル２２３は、本実施形態でのその機能は、前述した単純化モデル２００と同一であり、単に動力学モデルだけでなく、前述の図６５のＳ３５１０からＳ３５３２の処理、すなわち単純化モデル歩容瞬時値の算出（決定）処理を表すものである。なお、単純化モデル２２３は、実際上は、上体姿勢傾斜角の瞬時値と、上体水平位置の瞬時値とを決定できればよく、必ずしも図６５のＳ３５１０からＳ３５３２の処理の全てを行なう必要はない。
【０８８７】
以下に図７３を用いて本実施形態におけるMpfdmdおよびMrfdmdの決定処理を詳細に説明する。
【０８８８】
本実施形態においては、単純化モデル２２３を用いて生成される歩容と前記擬似順動力学フルモデル２２２を用いて前述の通り算出される歩容との間の上体水平位置、上体姿勢傾斜角および逆位相腕振り角のそれぞれの差が演算部２２４，２２５、２２８により求められる。そして、これらの差に応じて、これらの差が０に収束するようにＰＩＤなどのフィードバック制御則によって上体水平位置安定化モーメント要求値Mpfdmd、上体姿勢傾斜角安定化モーメント要求値Mrfdmdおよび逆位相腕振り角安定化モーメント要求値Mafdmdが決定される。すなわち、単純化モデル２２３による上体水平位置と擬似順フルモデル２２２による上体水平位置との差に応じて、フィードバック制御則からなる上体水平位置安定化制御則２２６によって、Mpfdmdが求められる。また、単純化モデル２２３による上体姿勢傾斜角と擬似順フルモデル２２２による上体姿勢傾斜角との差に応じて、フィードバック制御則からなる上体姿勢傾斜角安定化制御則２２７によって、Mrfdmdが求められる。また、単純化モデル２２３による逆位相腕振り角と擬似順フルモデル２２２による逆位相腕振り角との差に応じて、フィードバック制御則からなる逆位相腕振り角安定化制御則によって、Mafdmdが求められる。そして、この決定されたMpfdmd、Mrfdmd及びMafdmdが、前記擬似順動力学フルモデルにフィードバックされて入力される。
【０８８９】
なお、本実施形態では、歩容生成装置１００は、前記擬似順動力学フルモデル２２２への入力の一部である目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢および目標腕姿勢などと、前記擬似順動力学フルモデル２２２からの出力である目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標床反力水平成分およびコンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）を最終的な今回歩容の目標瞬時値として出力する。
【０８９０】
以上説明した第５実施形態によれば、前記第４実施形態と同様の作用効果を奏することができる。
【０８９１】
なお、前記第５実施形態では、上体姿勢傾斜角安定モーメント要求値Mrfdmd、上体水平位置安定化モーメント要求値Mpfdmdおよび逆位相腕振り角安定化モーメント要求値Mafdmdを擬似順フルモデル２２２のみに入力するようにしたが、Mrfdmd、MpfdmdおよびMafdmdを単純化モデル２２３に入力するようにしてもよく、あるいは、単純化モデル２２３と擬似順フルモデル２２２とに分配・供給するようにしてもよい。また、補償全床反力モーメント鉛直成分Mdmdzを単純化モデル２２３に入力し、このMdmdzが付加的に発生するように単純化モデル逆位相腕振り角を決定するようにしてもよい。
【０８９２】
以上説明した第５実施形態は、本発明のうちの第４４〜〜第４７発明の実施形態となっている。この場合、第５実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第５実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。さらに、Ｓ３５２８で決定される今回歩容パラメータにより定まる床反力が目標床反力の仮瞬時値に相当する。また、第４４発明における第１動力学モデルおよび第２動力学モデルにはそれぞれ図７３の単純化モデル２２３、擬似順フルモデルが相当する。なお、第４７発明における第１動力学モデル、第２動力学モデル、第３動力学モデルには、それぞれ図１２の単純化モデル、図７４の逆フルモデル、図７３の単純化モデル２２３が相当する。また、第５実施形態における逆位相腕振り角安定化モーメントMafdmdが第４４発明における床反力モーメントの操作量と、第４７発明における床反力モーメント補正量の要求値に相当し、これは擬似順フルモデル（詳しくは図７４の単純化モデル逆位相腕振り角補正用モーメント決定部２３０）に追加的に入力される。
【０８９３】
次に、本発明の第６実施形態を図７５を参照して説明する。図７５は、この発明の第６実施形態に係る装置の動作、具体的には、図６５のフローチャートのＳ３５３６の歩容の修正手法を説明する機能ブロック図である。なお、図７５では、第３実施形態もしくは第４実施形態と同一機能部分については、図６６又は図７１と同一の参照符号を用いる。
【０８９４】
第６実施形態においては、上体水平位置補正用摂動モデル２０２と上体姿勢傾斜角補正用摂動モデル２０３と逆位相腕振り角補正用摂動モデル２３１とを備える。また、３つの分配器２２０，２２１，２４１を備える。
【０８９５】
分配器２２０，２２１，２４１を定義すると、いずれも、１入力２出力の伝達ブロックであり、入力に応じて、一方の出力を決定し（例えば、入力に周波数特性、不感帯特性、飽和特性などの信号処理を行って一方の出力を決定し）、２つの出力の和が入力に一致またはほぼ一致するように、他方の出力を決定する伝達ブロックである。
【０８９６】
分配器２２０には、制限補正目標床反力モーメント水平成分Mltdxyから、上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じたもの（Mr演算部２１４の出力）である上体姿勢傾斜角補正用モーメントMrが入力され、上体姿勢傾斜角補正用摂動モデル２０３に入力する上体姿勢傾斜角補正用摂動モデル入力Mriと、単純化モデル２００に入力する単純化モデル上体姿勢傾斜角補正用モーメントMrsとに分配される。この時、上体姿勢傾斜角補正用摂動モデル入力Mriと単純化モデル上体姿勢傾斜角補正用モーメントMrsとの和が上体姿勢傾斜角補正用モーメントMrに一致するように、上体姿勢傾斜角補正用摂動モデル入力Mriと単純化モデル上体姿勢傾斜角補正用モーメントMrsとが決定される（出力される）。
【０８９７】
より具体的には、上体姿勢傾斜角補正用モーメントMrに応じて、上体姿勢傾斜角補正用摂動モデル入力Mriが決定される。例えば、上体姿勢傾斜角補正用モーメントMrを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、上体姿勢傾斜角補正用摂動モデル入力Mriが決定される。また、上体姿勢傾斜角補正用モーメントMrから上体姿勢傾斜角補正用摂動モデル入力Mriを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントMrsとして決定される。さらに具体的に説明すると、本実施形態では、分配器２２０は、例えば、入力（上体姿勢傾斜角補正用モーメントMr＝Mltd−Mpf−Mdmdxy）をローパスフィルタに通してなる低周波成分（直流分）を単純化モデル上体姿勢傾斜角補正用モーメントMrsとして出力すると共に、その入力（上体姿勢傾斜角補正用モーメントMr）からMrsを差し引いた成分が上体姿勢傾斜角補正用摂動モデル入力Mriとして出力される。この場合、低周波成分（直流分）である単純化モデル上体姿勢傾斜角補正用モーメントMrsに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Mrsが該所定値（例えば０）に維持されるようにしておく。
【０８９８】
分配器２２０の出力である上体姿勢傾斜角補正用摂動モデル入力Mriは、前記上体姿勢傾斜角補正用摂動モデル２０３に入力され、上体姿勢傾斜角補正用摂動モデル２０３により補正用摂動モデル上体姿勢傾斜角θcが決定される。
【０８９９】
分配器２２０のもうひとつの出力である単純化モデル上体姿勢傾斜角補正用モーメントMrsは単純化モデル２００に入力される。これは、前記第５実施形態における図７４において、単純化モデル上体姿勢傾斜角補正用モーメントMrを単純化モデル２００に入力することに相当するものである。
【０９００】
分配器２２１においては、フルモデル床反力モーメント水平成分誤差MerrにゲインKmを乗じた値を積分器２１７ａによって積分し、さらに符号を反転した値を入力とする。
【０９０１】
分配器２２１の入力は、分配器２２０と同様、単純化モデル２００に入力する単純化モデル上体水平位置補正用モーメントMpsと、上体水平位置補正用摂動モデル２０２に入力する誤差補正モーメントMeとに分配される。より具体的には、積分器２１７ａの出力に応じて、誤差補正モーメントMeが決定される。例えば、積分器２１７ａの出力（分配器２２０の入力）を不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、誤差補正モーメントMeが決定される。また、積分器２１７ａの出力から、誤差補正モーメントMeを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントMrsとして決定される。さらに具体的に説明すると、本実施形態では、分配器２２１は、例えば、入力（積分器２１７ａの出力）をローパスフィルタに通してなる低周波成分（直流分）を単純化モデル上体水平位置補正用モーメントMpsとして出力すると共に、その入力（積分器２１７ａの出力）からMpsを差し引いた成分を誤差補正モーメントMeとして出力する。この場合、低周波成分（直流分）である単純化モデル上体水平位置補正用モーメントMpsに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Mpsが該所定値（例えば０）に維持されるようにしておく。
【０９０２】
分配器２２１の出力である誤差補正モーメントMeに上体水平位置補正用モデル安定化モーメントMpfをMp演算部２１７ｂで加算することにより上体水平位置補正用摂動モデルモーメントMpが求められる。そして、上体水平位置補正用摂動モデルモーメントMpは、上体水平位置補正用摂動モデル２０２に入力され、上体水平位置補正用摂動モデル２０２により補正用摂動モデル上体水平位置Xcが決定される。
【０９０３】
分配器２２１のもうひとつの出力である単純化モデル上体水平位置補正用モーメントMpsは単純化モデル２００に入力される。これは、前記第５実施形態の図７４において、単純化モデル上体水平位置補正用モーメントMpを単純化モデル２００に入力することに相当するものである。
【０９０４】
逆位相腕振り角補正用摂動モデルモーメント決定部２３０は、第４実施形態において用いた図７２に示す逆位相腕振り角補正用摂動モデルモーメント決定部と同一である。ただし、図７２の出力である逆位相腕振り角補正用摂動モデルモーメントMaは、逆位相腕振り角補正用摂動モデル２３１に直接入力されず、分配器２４１に入力される。そこで、本実施形態では逆位相腕振り角補正用摂動モデルモーメントMaは、名称を改めて逆位相腕振り角補正用モデルモーメントMaと呼ぶ。
【０９０５】
分配器２４１においては、逆位相腕振り角補正用摂動モデルモーメント決定部２３０が決定した逆位相腕振り角補正用モデルモーメントMaを入力とする。
【０９０６】
分配器２４１の入力は、分配器２２０と同様、単純化モデル２００に入力する単純化モデル逆位相腕振り角補正用モーメントMasと、逆位相腕振り角補正用摂動モデル２３１に入力する逆位相腕振り角補正用摂動モデル入力Maiとに分配される。
【０９０７】
この時、逆位相腕振り角補正用摂動モデル入力Maiと単純化モデル逆位相腕振り角補正用モーメントMasとの和が逆位相腕振り角補正用モデルモーメントMaに一致するように、逆位相腕振り角補正用摂動モデル入力Maiと単純化モデル逆位相腕振り角補正用モーメントMasとが決定される（出力される）。
【０９０８】
より具体的には、逆位相腕振り角補正用モデルモーメントMaに応じて、逆位相腕振り角補正用摂動モデル入力Maiが決定される。例えば、逆位相腕振り角補正用モデルモーメントMaを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、逆位相腕振り角補正用摂動モデル入力Maiが決定される。また、逆位相腕振り角補正用モデルモーメントMaから逆位相腕振り角補正用摂動モデル入力Maiを差し引いたものが、単純化モデル逆位相腕振り角補正用モーメントMasとして決定される。さらに具体的に説明すると、本実施形態では、分配器２４１は、例えば、入力（逆位相腕振り角補正用モデルモーメントMa）をローパスフィルタに通してなる低周波成分（直流分）を単純化モデル逆位相腕振り角補正用モーメントMasとして出力すると共に、その入力（逆位相腕振り角補正用モデルモーメントMa）からMasを差し引いた成分が逆位相腕振り角補正用摂動モデル入力Maiとして出力される。この場合、低周波成分（直流分）である単純化モデル逆位相腕振り角補正用モーメントMasに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Masが該所定値（例えば０）に維持されるようにしておく。
【０９０９】
分配器２４１の出力である逆位相腕振り角補正用摂動モデル入力Maiは、前記逆位相腕振り角補正用摂動モデル２３１に入力され、逆位相腕振り角補正用摂動モデル２３１により補正用摂動モデル逆位相腕振り角θcaが決定される。
【０９１０】
分配器２４１のもうひとつの出力である単純化モデル逆位相腕振り角補正用モーメントMasは単純化モデル２００に入力される。これは、前記第５実施形態における図７４において、単純化モデル逆位相腕振り角補正用モーメントMaを単純化モデル２００に入力することに相当するものである。
【０９１１】
単純化モデル２００は、前記第５実施形態と同様、単純化モデル歩容瞬時値の算出（決定）処理において、目標ＺＭＰまわりに床反力モーメント水平成分が発生しないように（モデル操作床反力モーメントを０として）歩容の瞬時値を生成した上で、単純化モデル上体姿勢傾斜角補正用モーメントMrs（前回値）を発生する上体傾斜モードの摂動運動を付加し、単純化モデル上体水平位置補正用モーメントMps（前回値）を発生する上体並進モードの摂動運動を付加し、さらに単純化モデル逆位相腕振り角補正用モーメントMasを発生する逆位相腕振りモードの摂動運動を付加して、歩容の瞬時値を補正する。
【０９１２】
なお、本実施形態では、図６５のＳ３５２８の処理の一部である図４３のＳ８００において、前回歩容の終端状態として、前回歩容終端における単純化モデルの状態量を用いる。従って、分配器２２０，２２１，２４１から単純化モデルに出力されるMrs、Mps及びMasが０以外の値となる時があれば、単純化モデルは当初の挙動からずれるので、これに応じてＳ３５２８において、歩容パラメータが適宜修正される。また、前記不感帯の領域を大きく設定すると、Mrs、Mps及びMasの絶対値が小さくなるので、歩容パラメータの修正量の絶対値も小さくなる。
【０９１３】
その他の構成及び処理は、第４実施形態と同一である。より詳しくは、演算部２０４，２０５，目標上体水平位置を演算する演算部、Merr演算部２１６、上体姿勢傾斜角補正用摂動モデル制御則２０７、上体水平位置補正用摂動モデル制御則２０６、Min演算部２０９、Fin演算部２１０、制限処理部２１１、Mpf演算部２１５、逆位相腕振り角補正用摂動モデルモーメント決定部２４０の処理は、前記第４実施形態と同一である。
【０９１４】
なお、本実施形態では、前記第３実施形態で説明したように今回歩容の終端等で各摂動モデル２０２、２０３、２３１の状態量により単純化モデル２００の状態量を修正するような処理は行なう必要はない。これは、分配器２２０，２２１，２４１から単純化モデル上体姿勢傾斜角補正用モーメントMrs、単純化モデル上体水平位置補正用モーメントMps及び単純化モデル逆位相腕振り角補正用モーメントMasが追加入力されるからである。
【０９１５】
かかる本実施形態では、前記第４実施形態あるいは第５実施形態と同様の作用効果を奏することができる。
【０９１６】
なお、本実施形態では、各分配器２２０，２２１、２４１の２つの出力のうち一方を０とし、他方を入力に一致させるようにしても良い。
【０９１７】
この場合、例えば分配器２２０の出力である単純化モデル上体姿勢傾斜角補正用モーメントMrsを０にし、分配器２２１の出力である単純化モデル上体水平位置補正用モーメントMpsを０にし、分配器２４１の出力である単純化モデル逆位相腕振り角補正用モーメントMasを０にすると、第４実施形態と同一の作用効果を奏することとなる（事実上、第４実施形態のものと同一構成となる）。
【０９１８】
また、誤差補正モーメントMeに上体水平位置補正用モデル安定化モーメントMpfを加算した値を図示しない第３の分配器に入力し、その出力の一方を上体水平位置補正用摂動モデルに入力し、もう一方の出力を単純化モデル上体水平位置補正用モーメントMpsに加算しても良い。この場合、分配器２２１の出力である単純化モデル上体水平位置補正用モーメントMpsを０にしても良い。すなわち、分配器２２１を省略し、フルモデル床反力モーメント誤差MerrにゲインKmを乗じた値を積分して符号を反転した値を上体水平位置補正用モデル安定化モーメントMpfに加算した値を第３の分配器に入力しても良い。
【０９１９】
以上説明した第６実施形態は、本発明のうちの第１〜第１０発明、第１２〜第１５発明、第２０〜第２２発明、第２４〜第３２発明、第３４〜第４１発明および第４３発明の実施形態になっている。この場合、第６実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第６実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に相当し、これをＳ３５３６で修正したものが目標運動の瞬時値に相当する。さらに、Ｓ３５２８で決定される今回歩容パラメータにより定まる床反力が目標床反力の仮瞬時値に相当する。また、第１発明、第６発明、第１０発明、および第２０発明における動力学モデルは、逆フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当し、第３１発明における第１動力学モデル、第２動力学モデルはそれぞれ図１２の単純化モデルと逆フルモデルが相当する。そして、前記逆位相腕振り角補正用モーメントＭａが第３発明におけるモデル補正床反力モーメントと、第１０発明におけるモーメント修正操作量と、および第３６発明における床反力モーメントの操作量に相当し、該Maのうちの単純化モデル逆位相腕振り角補正用モーメントMasが第３１発明における床反力モーメント補正量に、Maiが第３６発明における摂動モデル操作量に相当する。また、第６実施形態における逆位相腕振り角補正用モデル安定化モーメント要求値Mafdmdが第３発明におけるモデル補正床反力モーメントと、第２４発明における摂動モデル操作量の要求値と、第３４発明における床反力モーメント補正量の要求値と、第３７発明における床反力モーメントの操作量の要求値とに相当し、補正用摂動モデル逆位相腕振り角θcaが第２発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量と、第３５発明における目標運動の補正量とに相当する。さらに、第６実施形態における、無制限時補正目標床反力モーメント鉛直成分Minzが第４３発明における制限対象量の推定値に相当する。さらに、第６実施形態におけるフルモデル床反力モーメント鉛直成分Mfullzが、目標運動の仮瞬時値にフルモデル（動力学モデル）上で釣り合う床反力モーメントの鉛直成分に相当する。そして、これに図７２の演算部２３０ｇでMdmdzを加えたものが第２０発明および第３１発明におけるモデル制限対象量瞬時値に相当する。また、第６実施形態では、第２７発明の如く、目標運動の補正量（補正用摂動モデル逆位相腕振り角θca）が動力学モデルである逆フルモデルに追加的に入力される。さらに、第６実施形態では、第３１発明の如く単純化モデル逆位相腕振り角補正用モーメントMasが第１の動力学モデルとしての単純化モデルに追加的に入力される。
【０９２０】
なお、前記第６実施形態においては、Mafdmdは定常的に０となるものでは無いが、これを定常的に０とすれば、本発明のうちの第２３発明、第３３発明、第４２発明の実施形態が構成されることとなる。
【０９２１】
なお、以上説明した第３〜第６実施形態では、図６５のＳ３５３２において、目標ＺＭＰを満足するように、すなわち、目標ＺＭＰまわりの床反力モーメント水平成分が０になるように、今回歩容瞬時値（目標運動の仮瞬時値）を決定するようにしたが、これに代えて、第１実施形態における図５６のＳ３０３２のように、目標ＺＭＰまわりにモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値を決定するようにしてもよい。この場合には、図５３に示す如く、歩容生成装置１００に補償全床反力モーメント水平成分分配器１１０からモデル操作床反力モーメント水平成分を与えるようにすればよい。
【０９２２】
また、以上説明した第１〜第６実施形態においては、補償全床反力モーメント水平成分Mdmdxyは、上体姿勢角・角速度の代わりに、全体重心水平位置・速度など、ロボット１の他の姿勢に関する状態量に基づいて決定しても良い。
【０９２３】
次に、本発明の第７実施形態を図７６から図８３を参照して説明する。
【０９２４】
本実施形態における制御ユニット６０の機能ブロック図を図７６に示す。なお、本実施形態では、前記第２実施形態と同一構成部分もしくは同一機能部分については第２実施形態と同一の参照符号を用いる。
【０９２５】
本実施形態では、第２実施形態（図５９参照）に比較して、実ロボット１の滑りの有無を判定する滑り判定部１１４が追加されている。また、滑り判定部１１４から出力される滑り判定結果が歩容生成装置１００に入力される。歩容生成装置１００においては、滑り判定結果が滑りありと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を狭める。また、歩容生成装置１００は、滑り判定結果が滑りなしと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲に戻す。他の構成および処理に関しては、前記第２実施形態と同一である。
【０９２６】
滑り判定部１１４を、その処理を表すフローチャートである図７９を用いて詳細に説明すると、まず、Ｓ５２１０において、スピン判定サブルーチンが実行される。スピン判定サブルーチンでは、そのフローチャートである図８０のＳ５３１０に進み、実上体姿勢角速度および関節角指令（検出値）を基に支持脚足平２２の対地角速度鉛直成分ωsupzを求める。次いでＳ５３１２に進み、足平２２の６軸力センサ５０の検出値（実床反力）を基に、支持脚に作用している実床反力モーメント鉛直成分の時間的な変化率である支持脚床反力モーメント鉛直成分の変化率dMsupactz/dtを求める。次いでＳ５３１４に進み、前記支持脚足平２２の対地角速度鉛直成分ωsupzの絶対値がある所定の値ωeを越えているか否かを判定する。越えている場合には、Ｓ５３１６に進み、前記支持脚床反力モーメント鉛直成分の変化率dMsupactz/dtを前記支持脚足平の対地角速度鉛直成分ωsupzで割って符号を反転した値である、支持脚の見かけねじりばね定数Ksuptを求める。次いでＳ５３１８に進み、Ksuptがある所定の値Ksuptminよりも小さいか否かを判定し、小さい場合には、Ｓ５３２０に進み、スピン判定結果を、スピンありと判定し、そうでない場合には、Ｓ５３２２に進み、スピン判定結果を、スピンなしと判定する。また、Ｓ５３１４において、前記支持脚足平の対地角速度鉛直成分ωsupzの絶対値が前記所定の値ωeを越えていないと判定された場合には、Ｓ５３２４に進み、スピン判定結果を、スピンなしと判定する。このようにスピンの有無を判定することで、足平２２などの撓み（弾性変形）によって、ωsupzの絶対値がある所定の値ωeを超えたようなときに、スピン有りと誤判定されるような事態が回避される。
【０９２７】
以上のごとくＳ５２１０の処理を完了した後、Ｓ５２１２に進み、並進滑り判定サブルーチンが実行される。
【０９２８】
並進滑り判定サブルーチンでは、そのフローチャートである図８１のＳ５４１０に進み、実上体姿勢角速度、加速度検出値および関節角指令（検出値）を基に支持脚足平２２の対地並進速度水平成分Vsupxyを求める。次いでＳ５４１２に進み、足平２２の６軸力センサ５０の検出値（実床反力）を基に、支持脚に作用している実床反力水平成分の時間的な変化率である支持脚床反力水平成分の変化率dFsupactxy/dtを求める。次いでＳ５４１４に進み、前記支持脚足平の対地並進速度水平成分Vsupxyの絶対値がある所定の値Veを越えているか否かを判定する。越えている場合には、Ｓ５４１６に進み、前記支持脚床反力水平成分の変化率dFsupactxy/dtを前記支持脚足平２２の対地並進速度水平成分Vsupxyで割って符号を反転した値である、支持脚の見かけせん断ばね定数Ksups(=(−dFsupactxy/dt)/Vsupxy)を求める。次いでＳ５４１８に進み、Ksupsがある所定の値Ksupsminよりも小さいか否かを判定し、小さい場合には、Ｓ５４２０に進み、並進滑り判定結果を、並進滑りありと判定し、そうでない場合には、Ｓ５４２２に進み、並進滑り判定結果を、並進滑りなしと判定する。また、Ｓ５４１４において、前記支持脚足平の対地並進速度水平成分Vsupxyの絶対値が前記所定の値Veを越えていないと判定された場合には、Ｓ５４２４に進み、並進滑り判定結果を、並進滑りなしと判定する。このように並進滑りの有無を判定することで、足平２２などの撓み（弾性変形）によって、Ｋsupsの絶対値がある所定の値Ksupsminを超えたようなときに、並進滑り有りと誤判定されるような事態が回避される。
【０９２９】
以上のごとくＳ５２１２の処理を完了した後、Ｓ５２１４に進み、滑り振動判定サブルーチンが実行される。
【０９３０】
滑り振動判定サブルーチンでは、そのフローチャートである図８２のＳ５５１０に進み、足平２２の６軸力センサ５０の検出値（並進力水平成分および／またはモーメント鉛直成分）をバンドパスフィルタに通すことにより、滑り振動成分を抽出する。尚、足平２２の６軸力センサ５０の検出値の代わりに、足平２２にヨーレートセンサ、加速度センサ等を備えて、その検出値を用いても良い。また、バンドパスフィルタの通過周波数帯は、足平２２の足底や床面の材質などに応じてあらかじめ設定される。次いでＳ５５１２に進み、検出された滑り振動成分の大きさの絶対値がある所定の値Ampeを越えているか否かを判定する。越えている場合には、Ｓ５５１４に進み、滑り振動判定結果を、滑り振動ありと判定し、そうでない場合には、Ｓ５５１６に進み、滑り振動判定結果を、滑り振動なしと判定する。
【０９３１】
以上のごとくＳ５２１４の処理を完了した後、Ｓ５２１６に進み、スピン判定結果がスピンあり、または並進滑り判定結果が並進滑りあり、または滑り振動判定結果が滑り振動ありであるならば、Ｓ５２１８に進み、総合判定結果である滑り判定結果を滑りありと決定し、そうでないならば、Ｓ５２２０に進み、総合判定結果である滑り判定結果を滑りなしと決定する。以上が、滑り判定部１１４の処理である。
【０９３２】
図７７に本実施形態における歩容生成装置１００のメインルーチン処理のフローチャートを示す。
【０９３３】
同図７７おいて、Ｓ２３１０からＳ２３３２までは、第２実施形態のフローチャート（図６０）のＳ２０１０からＳ２０３２までの処理と同一の処理が行なわれる。
【０９３４】
次いでＳ２３３４に進み、修正歩容瞬時値決定サブルーチンが実行される。
【０９３５】
本実施形態では、修正歩容瞬時値決定サブルーチンでは、元歩容に近づくように目標ＺＭＰおよび逆位相腕振り復元角加速度パターンを修正しつつ、修正された目標ＺＭＰまわりにモデル操作床反力モーメント（水平成分および鉛直成分）が付加的に発生するように修正歩容瞬時値が決定される。ただし床反力許容範囲を滑り判定結果に応じて変更され、この点が第２実施形態と相違する。
【０９３６】
図７８に修正歩容瞬時値決定サブルーチンのフローチャートを示す。
修正歩容瞬時値決定サブルーチンでは、まずＳ５１００からＳ５１１４までの処理が、第２実施形態の修正歩容瞬時値決定サブルーチンである図６１のＳ２１００からＳ２１１２と同様に実行される。次いで、Ｓ５１１６に進み、前記滑り判定部１１４による滑り判定結果が滑りありであるか否かを判定し、前記滑り判定結果が滑りありの場合には、Ｓ５１１８に進み、許容範囲低減率attを徐々に０に近づける（実質的に連続的に減少させる）。尚、許容範囲低減率attは０から１までの値をとるものとする。Ｓ５１１６において前記滑り判定結果が滑りなしと判定された場合には、Ｓ５１２０に進み、許容範囲低減率attを徐々に１に近づける（実質的に連続的に増加させる）。
【０９３７】
次いでＳ５１２２に進み、Ｓ５１１０およびＳ５１１２で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲の上限値および下限値であるFxmin，Fxmax，MzminおよびMzmaxにそれぞれ許容範囲低減率attを乗じることにより、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を狭める。以降、このＳ５１２２で決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を総称的に最終的床反力許容範囲という。尚、当然のことながら低減率が１の場合には、最終的床反力許容範囲は、Ｓ５１１０およびＳ５１１２で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲（以下、これらを元の床反力許容範囲ということがある）に一致し、該元の床反力許容範囲から狭まらない。
【０９３８】
図８３に、滑り判定結果に応じて、許容範囲低減率att、最終的床反力許容範囲（具体的には、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲）が変化する様子の例を示す。
【０９３９】
滑りが発生した場合には、グリップ状態に早急に回復しないとロボット１が転倒する恐れが生じるので、滑りが発生したと判定されたならば、最終的床反力許容範囲をすばやく狭めるようにした方が良い。ただし、急激過ぎると、歩容の加速度変化が大きくなり過ぎ、衝撃などが生じるので、急激過ぎない適切な値にすべきである。
【０９４０】
滑りがなくなったと判定されたならば、最終的床反力許容範囲を元の床反力許容範囲にすばやく戻すようにした方が良い。最終的床反力許容範囲が狭いままであると、修正歩容が元歩容から大きくずれていってしまうからである。ただし、急激過ぎると、歩容の運動の加速度変化が大きくなり過ぎ、衝撃などが生じて再び滑ってしまうので、急激過ぎない適切な値にすべきである。
【０９４１】
次いでＳ５１２４に進み、図６１のＳ２１１４と同様、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント水平成分、コンプライアンス制御用目標床反力モーメント（水平成分および鉛直成分）、上体水平加速度および上体姿勢傾斜角加速度および逆位相腕振り角加速度を決定する。
【０９４２】
次いでＳ５１２６からＳ５１２８まで進み、図６１のＳ２１１６からＳ２１１８までと同様の処理が行われる。
【０９４３】
上記のごとく修正歩容瞬時値決定サブルーチンが実行され、次いで図７７のＳ２３３６に進み、現在時刻ｔをΔｔだけ増加して、再びＳ２３１４に戻り、歩容生成を続ける。
【０９４４】
以上が、本実施形態における歩容生成装置１００の処理である。
【０９４５】
上記のごとく、第７実施形態においては、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を滑り判定結果に応じて変更するようにしたが、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれか一方だけを変更するようにしても良い。
【０９４６】
一般的に、足平２２が床面上で平行に滑っている場合（せん断方向に滑っている場合）には、スピン方向（ヨー方向）のグリップ力も低下する。また逆に、スピン方向（ヨー方向）に滑っている場合には、足平２２が床面上で平行に滑り易くなる。したがって、いずれかの滑りが検知されたならば、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の両方を狭める（０にする）方が滑りから回復する効果は高い。
【０９４７】
以上説明した第７実施形態は、前記第２実施形態と同様に本発明のうちの第１〜第９発明および第１５発明の実施形態になっていると同時に、第１６〜第１９発明の実施形態になっている。
【０９４８】
また、第７実施形態は、歩容生成装置１００としては、第２実施形態の代わりに第１、第３〜第６実施形態のいずれのものを用いても良い。第１実施形態で、第７実施形態と同様に、許容範囲を可変化する場合には、図５７のＳ３４１２とＳ３４１４との間で、図７８のＳ５１１６〜Ｓ５１２２の処理を行なうようにすればよい。なお、この場合、床反力モーメント鉛直成分補償量許容範囲をも、滑りの発生の判断結果に応じて可変的に設定するようにしてもよい。また、前述のごとく、第３から第６実施形態においては、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲は、単純化モデル歩容用のものと歩容補正用（フルモデル補正用）のものとの２種類がある。これら許容範囲のすべてを変更するようにしても良い。また、そうしなくとも、少なくとも、歩容補正用のいずれかの許容範囲を滑り判定結果に応じて、変更するようにすべきである。この場合、前記制限手段（制限処理部）２１１，２３０ｄ，２３０ｈの処理を実行する際に、図７８のＳ５１１６〜Ｓ５１２２の処理を行なって、許容範囲を可変的に設定するようにすればよい。補足すると、第３〜第６実施形態で、上記のように許容範囲を滑りの判断結果に応じて設定することで、本発明のうちの第４８〜第５１発明の実施形態が構成されることとなる。
【０９４９】
また、第７実施形態において、滑りの判定方法としては、実施の形態において挙げた方式以外にも、以下のようないずれを用いても良い。あるいはこれらの結果を総合的に（論理和、積などの論理演算を用いてい）判断しても良い。
１）角速度検出器などを基に床に対する足平２２の角速度を求め、この値の絶対値がある所定の値を越えたら、滑りが発生と判定する。
２）いずれかの脚体２の床反力モーメントの絶対値がある所定の値を越えたら、滑りが発生と判定する。
３）全床反力モーメント（両脚体２，２の床反力の合力のモーメント）の絶対値がある所定の値を越えたら、滑りが発生と判定する。
４）両脚支持期において、全床反力モーメントの変化率と上体姿勢角速度偏差との比に（−１）を乗じた値がある所定の値（両脚接地時ねじり剛性）よりも小さいならば、滑りが発生と判定する。
５）視覚センサや空間フィルタ等を用いた非接触型の対地速度、角速度検出器、あるいは接触型の対地速度、角速度検出器の検出値（推定値）の絶対値がある所定の値を越えたならば、滑りが発生と判定する。
【０９５０】
次に、前記第１〜第７実施形態に係る変形態様を以下に説明する。
【０９５１】
前記第３〜第７実施形態においては、補償全床反力モーメント水平成分およびを補償全床反力モーメント鉛直成分を決定するようにしたが、補償全床反力モーメント水平成分を０に設定しても良い。ただしこの場合には、フルモデルを用いて歩容を修正することによる上体姿勢傾斜復元効果はなくなる。
【０９５２】
前記第３〜第７実施形態においては、単純化モデル２００による歩容生成（単純化モデル歩容生成）には、本願出願人が先に提案した特開平５−３３７８４９号公報の第１実施例、第２実施例の歩容生成装置を用いても良い。フルモデルによる補正量を小さくすることができるので、補正された歩容が単純化モデル歩容から大きくずれることを防止できる。
【０９５３】
前記第１実施形態においては、補償全床反力モーメント水平成分Mdmdxyが床反力モーメント許容範囲水平成分を越えると（第３実施形態以降においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和が床反力モーメント許容範囲を越えると）、コンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲の上限値あるいは下限値になる。但し、補償全床反力モーメント水平成分Mdmdxy（第３実施形態以降においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和）が床反力モーメント水平成分許容範囲を越えていても、補償全床反力モーメント水平成分Mdmdxy（第３実施形態以降においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和）の増加もしくは減少に応じてコンプライアンス制御用目標床反力モーメント水平成分も増加もしくは減少するようにしても良い。コンプライアンス制御用目標床反力モーメント水平成分が床反力モーメント水平成分許容範囲に接近すると、コンプライアンス制御によって制御される実床反力モーメント水平成分が目標よりも少なめになる傾向があり、このためコンプライアンス制御用目標床反力モーメント水平成分が少々許容範囲を越えても、すぐには、足平２２の本来の接地感を低下させたり、足平２２の底面が浮いてしまうような不具合が発生しない場合が多いからである。
【０９５４】
同様の理由により、床反力モーメント水平成分許容範囲をいわゆる支持多角形で表されるＺＭＰ存在可能範囲（厳密な表現では、実床反力作用点の存在許容範囲）をモーメント水平成分に換算して得られる許容範囲を越えて設定しても良い。
【０９５５】
コンプライアンス制御によって発生する床反力モーメント水平成分に過度に期待すると、上記のごとく足平２２の本来の接地感を低下させたり、足平２２の底面が浮いてしまうような不具合が発生する。よって、床反力モーメント水平成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント水平成分の許容範囲であると言える。
【０９５６】
床反力モーメント水平成分許容範囲は、歩容パラメータからのみならず、検出された実床反力にも基づいて決定しても良い。また、階段でのエッジ位置検出値など、足平２２の接地領域の検出値にも基づいて決定してもよい。
【０９５７】
一方、コンプライアンス制御によって発生する床反力モーメント鉛直成分に過度に期待すると、スピンしてしまうような不具合が発生する。よって、床反力モーメント鉛直成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント鉛直成分の許容範囲であると言える。
【０９５８】
前記第１実施形態の図５６のＳ３０２８における今回歩容パラメータの修正（目標ＺＭＰの修正）を制御周期毎に実行するように、メインフローチャートの処理を変更しても良い。
【０９５９】
修正歩容（目標歩容）が元歩容より大きくずれてしまう場合（発散してしまう場合）には、次回歩容の歩容パラメータ修正をする頃に既に、大きくずれて過ぎてしまい（発散し過ぎてしまい）、次回歩容の歩容パラメータ修正だけでは、継続的長期的に安定な目標歩容を生成することが困難になる。今回歩容パラメータの修正（目標ＺＭＰの修正）を制御周期毎に実行することによって、この問題をかなり解決することができる。
【０９６０】
さらには、元歩容からのずれ具合によって、今回歩容の足平着地位置や着地時刻などを制御周期毎に変更しても良い。
【０９６１】
具体的には、Ｓ３０２０からＳ３０３０までの処理を制御周期毎に実行するように処理フローを変更しておき、Ｓ３０２０において、次回歩容支持脚座標系（次回歩容支持脚座標系は、次の足平着地位置姿勢に対応）、次次回歩容支持脚座標系（次次回歩容支持脚座標系は、次の次の足平着地位置姿勢に対応）、今回歩容周期（今回歩容周期は、次の足平着地時刻に対応）および次回歩容周期（次回歩容周期は、定常歩容の周期に相当）の少なくともいずれかを、Ｓ３０２８における今回歩容パラメータの修正（特に目標ＺＭＰの修正）が小さくなるように（すなわち、今回歩容の安定余裕が高く維持されるように）、適宜変更すれば良い。
【０９６２】
さらには、上記以外の歩容パラメータを変更しても良い。
【０９６３】
また、修正歩容の元歩容からのずれは、単純化モデル上体姿勢傾斜角補正用モーメントMr、単純化モデル上体水平位置補正用モーメントMpおよび単純化モデル逆位相腕振り角補正用モーメントMaなどから動力学モデルを用いて推定することができるので、Mr，MpおよびMaに応じてモデルの挙動ずれを推定し、推定された挙動ずれを基に、歩容パラメータを修正してもよい。あるいは、Mr，MpおよびMaと歩容パラメータの修正量の適正値との関係をあらかじめ求めてマップ化しておいて、Mr，Mp およびMaに応じてマップを基に歩容パラメータの修正量を決定してもよい。
【０９６４】
また、他の実施形態（第３〜第６実施形態）に対しても上記と同様に、処理フローを変更して良い。
【０９６５】
復元条件には、前記した条件以外にも、関節角が許容範囲を越えていないか、脚などの干渉がないか、関節角速度、トルクが過大でないかなどのキネマティクス条件、ダイナミクス条件を加えても良い。
【０９６６】
また、これに伴って、前述したごとく、今回歩容パラメータの修正（目標ＺＭＰあるいは着地位置、時刻などの修正）を制御周期毎に実行するようにメインフローチャートの処理を変更した場合には、今回歩容の安定余裕が高く維持されるように適宜変更される歩容パラメータの値が、適切な値になるように（ある制約条件を満足するように）することも、復元条件のひとつに加えても良い。
【０９６７】
歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻は、上位の制御装置からの指示（歩行計画決定部やオペレータからの指示など。これを当初の要求と呼ぶ。）によって決定されるので、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻に戻るべきである。そこで、歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻を記憶し、修正歩容の着地位置、着地時刻が、記憶された着地位置、着地時刻にできる限り一致または近づくことも復元条件に加えても良い。ただし、実は、前記復元条件４、５および６によって、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された（読み込まれた）着地位置、着地時刻に徐々に戻る作用が働くので、あえて追加する必要はない。
【０９６８】
また、状況の変化に対応して、当初の要求を変更し、変更した要求を満足する歩容パラメータに、上記のごとく歩容の安定余裕を高く維持するために適宜変更される歩容パラメータが、できる限り一致または近づくことを復元条件に加えても良い。この場合、前記復元条件４、５および６は削除するべきである。
【０９６９】
前述した各種の復元条件を満足するモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントの決定法には、制約条件下で最適値を求めるための線形計画法（シンプレックス法など）や探索法を用いれば良い。または、ファジー推論を用いても良い。
【０９７０】
また、着地位置を変更する場合には、歩行環境の障害物なども考慮しなければならない状況も考えられる。このような状況にも対処できるようにするためには、環境認識や行動決定などの人工知能の分野に属する処理も加えて、修正歩容を決定すべきである。
【０９７１】
モデル逆位相腕振り角安定化床反力モーメントの決定法も同様である。
【０９７２】
前記第３〜第６実施形態における制限手段（制限処理部）の前後のブロック図は、例えば本願出願人によるＰＣＴ／ＪＰ０２／１３５９３で示したように、等価変換あるいは近似変換しても良い。
【０９７３】
この場合、上体水平位置補正用モデル安定化モーメントMpfをｈで割った値をローパスフィルタに通した値を補正目標床反力水平成分（フルモデル床反力水平成分Ffull）から減じた値が上記ＰＣＴ出願におけるバイアス推定値destmに相当する。したがって、例えば、前記第４〜第６実施形態におけるゲインKcの積分を、時定数１/Kcの１次遅れをフィードバック要素としたポジティブフィードバック系に置き換えたりして、図８４のように、近似変換をしても良い。この例では、第４〜第６実施形態におけるMpf演算部２１５が図示の如く近似変換されている。
【０９７４】
逆位相腕振り角補正用摂動モデルモーメントも、同様に等価変換あるいは近似変換して求めるようにしてもよい。
【０９７５】
前記第３実施形態においては、前記逆位相腕振り角補正用摂動モデルモーメントは、図７０に示す機能ブロック図の代わりに、図８５に示す機能ブロック図の処理を行うようにしても良い。これを第８実施形態として以下に説明すると、図７０では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分までも含めて、床反力モーメント鉛直成分許容範囲を越えるか否かが判定されて、逆位相腕振り角補正用モデルの挙動が決定されたが、図８５に示す機能ブロック図の処理では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分は、床反力モーメント許容範囲を越えるか否かを判定する上で無視される。
【０９７６】
図８５に示す機能ブロック図の処理を詳細に説明すると、フルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Mpzと補償全床反力モーメント鉛直成分Mdmdzとの和を無制限時補正目標床反力モーメント鉛直成分Minzとし、これに図７０と同様に制限を加えることにより、制限時補正目標床反力モーメント鉛直成分Mltdzを求める。制限時補正目標床反力モーメント鉛直成分Mltdzは、コンプライアンス制御用目標床反力モーメント鉛直成分として出力される。さらに、制限時補正目標床反力モーメント鉛直成分Mltdzから無制限時補正目標床反力モーメント鉛直成分Minzを減じた値、すなわち、無制限時補正目標床反力モーメント鉛直成分Minzのうちの床反力モーメント鉛直成分許容範囲を越えた分であるMaaを求める。次いで、補正用摂動モデル逆位相腕振り角θcaの前回値を基に、ＰＤ制御等を用いた逆位相腕振り角補正用摂動モデル制御則によって逆位相腕振り角補正用モデル安定化モーメント要求値Mafdmdを求め、これをMaaから減じた値（モーメント）を逆位相腕振り角補正用摂動モデルに入力し、補正用摂動モデル逆位相腕振り角θcaを得る。
【０９７７】
Maaから補正用摂動モデル逆位相腕振り角θcaまでの伝達関数は、ローパスフィルタの伝達関数になる。
【０９７８】
すなわち、言い換えると、逆位相腕振り角補正用モデルによる床反力モーメント鉛直成分のキャンセル（超過防止動作）を行わない場合に発生する床反力モーメント鉛直成分（無制限時床反力モーメント鉛直成分）を、床反力モーメント鉛直成分許容範囲を越えないように制限する制限手段（飽和手段）に通すことにより、コンプライアンス制御用目標床反力モーメント鉛直成分（制限時補正目標床反力モーメント鉛直成分Mltdz）を得ると共に、無制限時床反力モーメント鉛直成分を、床反力モーメント鉛直成分許容範囲を越えた分を求める不感帯手段に通した値をローパスフィルタ（すなわちハイカットフィルタ）に通すことにより、補正用摂動モデル逆位相腕振り角θcaを得る。
【０９７９】
以上説明した第８実施形態は、本発明のうちの第１発明、第２発明、第４〜第１５発明、第２０〜第２３発明、第２８〜第３０発明の実施形態になっている。この場合、第８実施形態における床反力モーメント鉛直成分（Mdmdzを付加した床反力モーメント鉛直成分）が制御対象量、上体ヨー角偏差および／または上体ヨー角速度偏差がロボット１の状態量の偏差、Mdmdzが補償床反力モーメントに相当する。また、第８実施形態における歩容生成用（フルモデル補正用）の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が制限対象量の許容範囲に相当する。また、単純化モデル歩容の運動成分が目標運動の仮瞬時値に対応し、これをＳ３５３６で修正したものが目標運動の瞬時値に対応する。また、発明における動力学モデルは、フルモデル（逆位相腕振り角補正用摂動モデルを含む）が相当する。そして、Maaが第１０発明におけるモーメント修正操作量に相当し、補正用摂動モデル逆位相腕振り角θcaが第２発明および第１１発明における目標運動の仮瞬時値の修正量と、第２２発明における目標運動の補正量とに相当する。さらに第８実施形態における、無制限時補正目標床反力モーメント鉛直成分Minzが第２３発明における制限対象量の推定値に相当する。さらに、第８実施形態におけるフルモデル床反力モーメント鉛直成分Mfullzに上体水平位置補正に起因する床反力モーメント鉛直成分Mpzを加えたものが、目標運動の仮瞬時値に逆フルモデル（動力学モデル）上でほぼ釣り合う床反力モーメントの鉛直成分に相当する。そして、これにMdmdzを加えたものが第２０発明におけるモデル制限対象量瞬時値に相当する。
【０９８０】
なお、前記第８実施形態においては、前記第７実施形態の如く、床反力水平成分許容範囲および／または床反力モーメント鉛直成分許容範囲を滑り判定の結果に応じて可変的に設定するようにしてもよい。
【０９８１】
前記第１実施形態においては、本願出願人が提案した特開平５−３３７８４９号公報に記載の構成に加え、床反力の並進力水平成分が床反力水平成分の許容範囲を越えないように、床反力水平成分と目標ＺＭＰまわりの床反力モーメント水平成分との発生の割合が異なる２つの運動モードの挙動、例えば、上体並進運動モードの上体並進加速度と上体傾斜運動モードの上体姿勢傾斜角加速度が決定されるので、実ロボット１を、修正目標歩容（最終的に歩容生成装置１００が出力する歩容）に収束させることができる。つまり、実ロボット１の姿勢を安定化させることができる。
【０９８２】
また、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分の差がトータルの復元力になる。
【０９８３】
また、モデル操作床反力モーメント水平成分は、ＺＭＰ存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢復元力を発生することができる。
【０９８４】
また、床反力の並進力水平成分が、床反力水平成分の許容範囲を越えないので、ロボット１のスリップを防止できる。
【０９８５】
また、床反力モーメント鉛直成分（コンプライアンス制御用目標床反力モーメント鉛直成分）しいては実床反力モーメント鉛直成分が、床反力モーメント鉛直成分の許容範囲を越えないので、ロボット１のスリップをより一層防止できる。
【０９８６】
また、床反力鉛直成分が０の時期、すなわち、両脚体２，２がいずれも接地していない時期では、上体並進運動モードに依存せずに上体回転運動モードに依存した姿勢復元が行われ、床と足平２２の間の摩擦力に依存せずに効果的に姿勢復元が行われる。
【０９８７】
また、実床反力モーメントが過大になることを防止するので、足平２２の本来の接地性が低下したり、足平２２の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
【０９８８】
また、１歩分の修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、定常歩容に漸近するように、今回歩容パラメータが決定または変更されるので、継続的に（長期的に）安定性が保証された歩容を生成し続けることができる。
【０９８９】
前記第２実施形態においては、上記のごとく、元歩容と修正歩容が同時に生成され、修正歩容は、実ロボット１の姿勢安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント（水平成分及び鉛直成分）を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、第１実施形態の効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止できる。また、修正歩容の上体姿勢角が元歩容（当初決定した歩容）の上体姿勢角に収束することを、修正歩容の上体水平位置が元歩容（当初決定した歩容）の上体水平位置に収束することよりも優先したので、上体姿勢角が大きく変動することを抑制することができる。
【０９９０】
前記第１〜第６実施形態では、床反力水平成分許容範囲を設定するようにしたが、床反力水平成分とロボット全体重心水平加速度は、比例関係にあるので、前記各実施形態における床反力水平成分およびその許容範囲の代わりに、ロボット全体重心水平加速度およびその許容範囲を用いても構わない。また、ロボット全体重心水平軌道に近い挙動をする部位の水平加速度軌道に関するパラメータを明示的に設定しても構わない。例えば、脚体２，２の質量が上体３の質量に比べ十分に小さい場合には、上体水平加速度軌道とロボット１の全体重心水平加速度軌道は、ほぼ同じか比例関係にあるので、床反力水平成分およびその許容範囲の代わりに上体水平加速度およびその許容範囲を用いても良い。
【０９９１】
さらに、斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分の許容範囲の代わりに、並進床反力の床面平行成分（床面に平行な成分）、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分（これは重力成分を除けば摩擦力に比例する）の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分（摩擦力）の許容範囲を設定する場合に関して説明（この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である）すると、該摩擦力は、床面の水平面に対する傾斜角度をθf（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式ｃ７２の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式ｃ７２の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式ｃ７２の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
【０９９２】
摩擦力＝床反力水平成分＊cos(θf)−床反力鉛直成分＊sin(θf)
…式ｃ７２
また、斜面移動時（傾斜した床面でロボット１を移動させるとき）の歩容生成においては、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち摩擦力モーメントの許容範囲を設定するようにしてもよい。例えば、該摩擦力モーメントは、床面の水平面に対する傾斜角度をθf（ロボット１の進行方向に向かって前下がり斜面の場合を正とする）とすると、次式ｃ７３の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式ｃ７３の関係を用いて、床反力モーメント鉛直成分と床反力モーメント水平成分から摩擦力モーメントを算出し、この値が摩擦力モーメントの許容範囲を越えないように処理を変更すれば良い。
【０９９３】
摩擦力モーメント＝床反力モーメント鉛直成分＊cos(θf)
＋床反力モーメント水平成分＊sin(θf)
…式ｃ７３
また、前記参考例に関する変形態様で説明した如く、床反力水平成分と目標ＺＭＰまわりの床反力モーメント水平成分とを適切な値にするために、前記の実施形態では、上体傾斜モードと上体並進モードとの２つの運動モードを用いたが、これら以外の運動モードを用いても良い。この場合、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ＺＭＰまわりの床反力モーメントの発生の割合が異なる２つの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ＺＭＰまわりの床反力モーメントとを発生させることができるからである。
【０９９４】
また、上体姿勢以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ＺＭＰまわりの床反力モーメントが発生できる運動モードを選ぶべきである。
【０９９５】
例えば、左右の腕を同一回転方向に振りまわす運動モード、接地していない（空中に存在する）足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に０に戻すべきである。
【０９９６】
また、３つ以上の運動モードを用いても良い。
【０９９７】
また、選んだモードのうちの少なくとも２つは、床反力水平成分と目標ＺＭＰまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなるからである。
【０９９８】
さらにできる限り、床反力水平成分をあまり変化させないで目標ＺＭＰまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ＺＭＰまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
【０９９９】
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。運動モードの変位が小さくなるからである。
【１０００】
床反力モーメント鉛直成分を適切な値にするために、前記の実施形態では、逆位相腕振りモードを用いたが、これら以外の運動モードを用いても良い。例えば、前記参考例の変形態様について説明した如く、上体ヨー回転モードを用いたり、上体ヨー回転モードと逆位相腕振りモードとを併用しても良い。
【１００１】
また、床反力モーメント鉛直成分を適切な値にするために用いられる運動モードが床反力水平成分および床反力モーメント水平成分を発生しない運動モードである必要もない。例えば、遊脚を前後に振る運動モードを用いても良い。その運動モードによって発生した床反力水平成分および床反力モーメント水平成分は、上体傾斜モードと上体並進モードとの２つの運動モードを調整することによって、打ち消すことができるからである。
【１００２】
フルモデルを用いる実施形態では、前記単純化モデルとして、前記実施形態に用いた動力学モデル（図１２のモデル）以外にも以下のモデルを用いても良い。
１）図４９に示したように複数のリンクに質点を設定した非線形なモデル（多質点モデル）
２）本願出願人によるＰＣＴ公開公報WO／02／40224に示された３質点モデル
３）上体にのみ質量がある１質点モデル
４）全体重心まわりの角運動量変化によって生じる慣性力のモーメントを無視したモデル
５）重力と慣性力との合力（または床反力）と上体並進運動との関係を表す部分モデルと、上記合力と上体回転運動の関係を表す部分モデルを分離して持つ分離型モデル。例えば、図１２に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図１２に示すフライホイールは、上記合力と上体回転運動との関係を表す部分モデルである。
【１００３】
ただし、単純化モデルに単純化モデル上体姿勢傾斜角補正用モーメントが加えられる実施形態においては、上記２）、３）、および４）のモデルを用いることはできない。
【１００４】
尚、フルモデルは、基本的には、単純化モデルよりもより近似精度の高い動力学モデルを用いることが好ましいが、単純化モデルと同等の近似精度の動力学モデルを用いてもよい。
【１００５】
また、前述した各実施形態において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
【１００６】
また、前記各実施形態を２足移動ロボットに関して説明してきたが、１足もしくは３足以上の多脚ロボットにも本発明を適応することができる。
【１００７】
産業上の利用可能性
以上のように本発明は、２足移動ロボット等の脚式移動ロボットと床面との摩擦力が小さくなるような状況でも、ロボットのスピンを生じることなく、また、該ロボットの姿勢を安定に保ちつつ、該ロボットを円滑に移動させることができるものとして有用である。
【図面の簡単な説明】
【１００８】
【図１】本発明の実施形態およびこれに関連する参考例における脚式移動ロボットとしての２足移動ロボットの全体構成を概略的に示す図。
【図２】図１のロボットの脚体の先端部の構造を示す図。
【図３】図１のロボットに備えた制御ユニットの構成を示すブロック図。
【図４】参考例における制御ユニットの機能的構成を示すブロック図。
【図５】実施形態および参考例で生成する走行歩容を説明するための図。
【図６】目標床反力鉛直成分軌道の例を示すグラフ。
【図７】目標ＺＭＰ軌道のＸ成分およびＹ成分の例を示すグラフ。
【図８】ロボットの上体並進モードを説明するための図。
【図９】ロボットの上体傾斜モードを説明するための図。
【図１０】ロボットの上体ヨー回転モードを説明するための図。
【図１１】図１１（ａ）はロボットの逆位相腕振りモードを平面視で説明するための図、図１１（ｂ）はロボットの逆位相腕振りモードを側面視で説明するための図。
【図１２】実施形態で用いる動力学モデルを説明するための図。
【図１３】参考例における歩容生成装置のメインルーチン処理を示すフローチャート。
【図１４】ロボットの発散状態を説明するための図。
【図１５】図１３のＳ０２２のサブルーチン処理を示すフローチャート。
【図１６】定常歩容と支持脚座標系とを説明するための図。
【図１７】定常歩容の上体軌道と支持脚座標系とを例示する図。
【図１８】基準逆位相腕振り角の例を示すグラフ。
【図１９】定常歩容における目標床反力鉛直成分軌道の設定例を示すグラフ。
【図２０】定常歩容における床反力水平成分許容範囲の設定例を示すグラフ。
【図２１】定常歩容における床反力モーメント鉛直成分許容範囲の設定例を示すグラフ。
【図２２】定常歩容における目標ＺＭＰ軌道の設定例を示すグラフ。
【図２３】図１３のＳ０２４のサブルーチン処理を示すフローチャート。
【図２４】図２３のＳ２０８のサブルーチン処理を示すフローチャート。
【図２５】図２４のＳ３０６のサブルーチン処理を示すフローチャート。
【図２６】図２５のＳ４１２のサブルーチン処理を示すフローチャート。
【図２７】許容範囲を考慮しない床反力水平成分の例を示すグラフ。
【図２８】許容範囲を考慮した床反力水平成分の例を示すグラフ。
【図２９】上体傾斜角加速度の例を示すグラフ。
【図３０】ロボットの上体傾斜角を復元するための上体傾斜復元モーメントＺＭＰ換算値の例を示すグラフ。
【図３１】上体傾斜復元モーメントＺＭＰ換算値を加味した上体傾斜角加速度の例を示すグラフ。
【図３２】許容範囲を考慮しない床反力モーメント鉛直成分の例を示すグラフ。
【図３３】許容範囲を考慮した床反力モーメント鉛直成分の例を示すグラフ。
【図３４】逆位相腕振りモーメントの例を示すグラフ。
【図３５】図３４の逆位相腕振りモーメントに対応する逆位相腕振り角加速度を示すグラフ。
【図３６】逆位相腕振り角を復元するための逆位相腕振り復元角加速度の例を示すグラフ。
【図３７】図３６の逆位相腕振り復元角加速度に対応する逆位相腕振り復元モーメントを示すグラフ。
【図３８】図３３の床反力モーメント鉛直成分と図３７の逆位相腕振り復元モーメントとを合成してなる床反力モーメント鉛直成分を示すグラフ。
【図３９】図１３のＳ０２６のサブルーチン処理を示すフローチャート。
【図４０】今回歩容の床反力水平成分許容範囲の設定例を示すグラフ。
【図４１】今回歩容の床反力モーメント鉛直成分許容範囲の設定例を示すグラフ。
【図４２】図１３のＳ０２８のサブルーチン処理を示すフローチャート。
【図４３】図４２のＳ７０２のサブルーチン処理を示すフローチャート。
【図４４】今回歩容の仮目標ＺＭＰとＺＭＰ修正量と修正後の目標ＺＭＰとの例を示すグラフ。
【図４５】図１３のＳ０３０のサブルーチン処理を示すフローチャート。
【図４６】図４５のＳ１４１２のサブルーチン処理を示すフローチャート。
【図４７】定常歩容と目標歩容の上体位置軌道との関係を示すグラフ。
【図４８】上体傾斜モード（腰中心の上体傾斜）の他の例を示す図。
【図４９】動力学モデルの他の例を説明するための図。
【図５０】歩行歩容における目標床反力鉛直成分の設定例を示す図。
【図５１】ロボットの走行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図。
【図５２】ロボットの歩行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図。
【図５３】本発明の第１実施形態における制御ユニットの機能的構成を示すブロック図。
【図５４】図５３に示す補償全床反力モーメント水平成分分配器の処理を示すブロック図。
【図５５】図５３に示すモデル操作床反力モーメント鉛直成分決定器の処理を示すブロック図。
【図５６】第１実施形態における歩容生成装置のメインルーチン処理を示すフローチャート。
【図５７】図５６のＳ３０３２のサブルーチン処理を示すフローチャート。
【図５８】図５７のＳ３４１４のサブルーチン処理を示すフローチャート。
【図５９】本発明の第２実施形態における制御ユニットの機能的構成を示すブロック図。
【図６０】第２実施形態における歩容生成装置のメインルーチン処理を示すフローチャート。
【図６１】図６０のＳ２０３４のサブルーチン処理を示すフローチャート。
【図６２】図６１のＳ２１１４のサブルーチン処理を示すフローチャート。
【図６３】本発明の第３実施形態における歩容生成装置の機能的構成を示すブロック図。
【図６４】第３実施形態におけるＺＭＰ許容範囲の設定例を示す図。
【図６５】第３実施形態における歩容生成装置のメインルーチン処理を示すフローチャート。
【図６６】図６５のＳ３５３６の処理を示すブロック図。
【図６７】図６６に示す上体水平位置摂動用モデルを説明するための図。
【図６８】図６６に示す上体姿勢角補正用摂動モデルの説明するための図。
【図６９】図６６に示す逆位相腕振り角補正用摂動モデルを説明するための図。
【図７０】図６６に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図。
【図７１】本発明の第４実施形態における図６５のＳ３５３６の処理を示すブロック図。
【図７２】図７１に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図。
【図７３】本発明の第５実施形態における歩容生成装置の機能的構成を示すブロック図。
【図７４】図７３に示す擬似順フルモデルの処理を示すブロック図。
【図７５】本発明の第６実施形態における図６５のＳ３５３６の処理を示すブロック図。
【図７６】本発明の第７実施形態における制御ユニットの機能的構成を示すブロック図。
【図７７】第７実施形態における歩容生成装置のメインルーチン処理を示すフローチャート。
【図７８】図７７のＳ２３３４の処理を示すフローチャート。
【図７９】図７６に示す滑り判定部の処理を示すフローチャート。
【図８０】図７９のＳ５２１０のサブルーチン処理を示すフローチャート。
【図８１】図７９のＳ５２１２のサブルーチン処理を示すフローチャート。
【図８２】図７９のＳ５２１４のサブルーチン処理を示すフローチャート。
【図８３】滑り判定部の判定結果と、許容範囲の低減率と、床反力許容範囲との例を示すグラフ。
【図８４】第４〜第６実施形態に関する変形態様の例を示すブロック図。
【図８５】第３実施形態に関する逆位相腕振り角補正用摂動モデルモーメント決定部の処理の変形態様の例（第８実施形態）を示すブロック図。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１６
【補正方法】変更
【補正の内容】
【図１６】
2005000534.tif 000096
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2005000534.tif 000097
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図４３
【補正方法】変更
【補正の内容】
【図４３】
2005000534.tif 000098
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図４５
【補正方法】変更
【補正の内容】
【図４５】
2005000534.tif 000099
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図５６
【補正方法】変更
【補正の内容】
【図５６】
2005000534.tif 000100
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図６０
【補正方法】変更
【補正の内容】
【図６０】
2005000534.tif 000101
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図６２
【補正方法】変更
【補正の内容】
【図６２】
2005000534.tif 000102
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図６５
【補正方法】変更
【補正の内容】
【図６５】
2005000534.tif 000103
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図７５
【補正方法】変更
【補正の内容】
【図７５】
2005000534.tif 000104
【手続補正１２】
【補正対象書類名】図面
【補正対象項目名】図７７
【補正方法】変更
【補正の内容】
【図７７】
2005000534.tif 000105
【手続補正書】
【提出日】平成17年11月9日(2005.11.9)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2005000534.tif 000106
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図４２
【補正方法】変更
【補正の内容】
【図４２】
2005000534.tif 000107
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図５６
【補正方法】変更
【補正の内容】
【図５６】
2005000534.tif 000108
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図７９
【補正方法】変更
【補正の内容】
【図７９】
2005000534.tif 000109
【国際調査報告】
2005000534.tif 000110
2005000534.tif 000111