JPWO2005000536A1 - 脚式移動ロボットの制御装置 - Google Patents

脚式移動ロボットの制御装置 Download PDF

Info

Publication number
JPWO2005000536A1
JPWO2005000536A1 JP2005511139A JP2005511139A JPWO2005000536A1 JP WO2005000536 A1 JPWO2005000536 A1 JP WO2005000536A1 JP 2005511139 A JP2005511139 A JP 2005511139A JP 2005511139 A JP2005511139 A JP 2005511139A JP WO2005000536 A1 JPWO2005000536 A1 JP WO2005000536A1
Authority
JP
Japan
Prior art keywords
gait
reaction force
target
floor reaction
robot
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005511139A
Other languages
English (en)
Other versions
JP4181175B2 (ja
Inventor
竹中 透
透 竹中
松本 隆志
隆志 松本
孝英 吉池
孝英 吉池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honda Motor Co Ltd
Original Assignee
Honda Motor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honda Motor Co Ltd filed Critical Honda Motor Co Ltd
Publication of JPWO2005000536A1 publication Critical patent/JPWO2005000536A1/ja
Application granted granted Critical
Publication of JP4181175B2 publication Critical patent/JP4181175B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D57/00Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track
    • B62D57/02Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members
    • B62D57/032Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members with alternately or sequentially lifted supporting base and legs; with alternately or sequentially lifted feet or skid
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Manipulator (AREA)
  • Numerical Control (AREA)
  • Control Of Position Or Direction (AREA)

Abstract

目標歩容に追従して動作しているロボットの滑りの発生を判断し、ロボットに作用させる床反力水平成分や床反力モーメント鉛直成分等の制限対象量の許容範囲を滑りの判断結果に応じて可変的に設定する。目標歩容の仮運動を動力学モデルを用いて決定し、その仮運動により定まる制限対象量が許容範囲を逸脱したとき、動力学的平衡条件を満たしつつ、制限対象量を許容範囲内に制限するようにロボットの角運動量変化率を仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する。

Description

本発明は、脚式移動ロボットの歩行のみならず、走行にも適した歩容生成装置および制御装置に関する。
脚式移動ロボット、例えば2足移動ロボットの移動動作を行わせるための歩容(目標歩容)の生成は、従来、主にロボットにスムーズな歩行動作を行なわせる歩容(歩行歩容)を生成することを主目的として行なわれてきた。しかし、近年では、脚式移動ロボットの開発が進むにつれて、該ロボットに歩行だけでなく、走行も行なわせることができる歩容を生成することが望まれている。さらには、十分な摩擦力を発生できない滑りやすい床(いわゆる低ミュー路)上でもロボットを支障なく移動させることができる歩容を生成することが望まれている。
尚、「歩容」という漢字に「歩」が入っているので歩行に限定されると誤解されやすいが、本来「歩容」とは、トロットなど、馬の走行形態を指す言葉として用いられているように、走行も含んだ概念である。
ここで、歩行と走行の特徴の違いを説明しておく。
同時に全脚が空中に存在する瞬間がある移動形態を走行と定義することが一般的ではある。しかし、この定義によって歩行と走行が明確に区別できるとは限らない。たとえば、速いジョギングでは、ほとんどの人間において、同時に全脚が空中に存在する瞬間があるが、遅いジョギングでは、かなりの人間において、常にいずれかの脚が接地している。速いジョギングは走行であるのに遅いジョギングは歩行である、と定義するのは、感覚的に少し無理がある。
図51に、典型的な走行における上体鉛直位置と床反力鉛直成分(左右の脚に作用する床反力鉛直成分の和)のパターンを示し、図52には、典型的な歩行における上体鉛直位置と床反力鉛直成分のパターンを示す。
尚、上体鉛直位置速度は、上体代表点の鉛直位置とその速度を意味する。上体水平位置速度は、上体代表点の水平位置とその速度を意味する。上体鉛直位置速度と上体水平位置速度を合わせて、上体位置速度と呼ぶ。
また、「床反力鉛直成分」は、厳密には、床反力の鉛直軸まわりのモーメント成分と区別するために、「並進床反力鉛直成分」と記述すべきであるが、言葉が長くなるので、ここでは「並進」を省略する。以降、「並進床反力水平成分」も「並進」を省略して「床反力水平成分」と記述する。
まず上体の動きを見てみると、歩行においては、支持脚の上を上体が通過する瞬間に上体は最も高く、走行においては、この瞬間に最も低い。すなわち、歩行と走行では、上体の上下動パターンの位相が反転している。
一方、床反力に関しては、歩行では比較的一定であるのに対し、走行においては、大きく変動し、支持脚の上を上体が通過する瞬間に床反力は最も大きい。また、当然のことながら、同時に全脚が空中に存在する瞬間において床反力は0になっている。より詳しく観察すると、走行では、支持脚を縮めた量にほぼ比例した大きさの床反力が発生する。言いかえると、走行では、脚をばねのように使って跳ねながら移動していると言える。
遅いジョギングでは、典型的な走行と同じ上体上下動の位相を持つ。また、遅いジョギングでは、同時に全脚が空中に存在する瞬間がない場合が多いが、その場合でも、支持脚と遊脚の切り換えが行われる瞬間において、床反力は、完全には0にならないがほぼ0になっている。
したがって、以上のように、上体の上下動や床反力のパターンの上記特徴から歩行と走行を区別した方が、遅いジョギングも走行とみなされ、感覚とも一致して、より適切と言えよう。
特に、最も特徴的な点で両者を区別するならば、走行とは、支持脚の切り換えが行われる瞬間において、床反力が0またはほぼ0になる移動形態であり、歩行は、それ以外の移動形態(床反力鉛直成分が比較的一定)であると言えよう。
ところで、本出願人は先にPCT公開公報WO/02/40224において、脚式移動ロボットの床反力を含む歩容を、動力学的平衡条件(目標歩容の重力と慣性力と床反力との釣り合い条件のことである。狭義では、目標歩容の運動による重力と慣性力との合力が目標ZMPまわりに作用するモーメントの水平成分が0であること。詳細は後述する。)をほぼ満足しながら、自在かつリアルタイムに生成する技術を先に提案した。この技術や、特開平10−86081号公報、特開平10−277969号公報などにて本出願人が提案してきた一連の脚式移動ロボットの制御装置は、歩行のみならず走行にも適用できるものである。
しかしながら、この技術においては、目標歩容の並進床反力水平成分や目標歩容のZMPまわりの床反力モーメント鉛直成分の大きさを考慮していなかった。このため、摩擦の限界を超えて、ロボットの支持脚足平の滑り(床面に並行な方向のスリップやスピン)が発生するおそれがあった。なお、スピンとは、実際のロボットのヨー角(鉛直軸まわり回転角)速度が目標ヨー角速度からずれることを言う。
摩擦係数の高い床面を歩行する場合(この場合、少なくとも1つの脚体は常時接地している)には、床反力鉛直成分が常にほぼロボットの自重相当であるので、摩擦力の限界が高い。このため、ロボットの滑りは発生しにくい。
しかるに、走行においては、床反力鉛直成分が0になる、または0に近くなる時があるので、その時には、たとえ摩擦係数が高くとも、床面の摩擦力の限界が0になるまたは0に近くなる。したがって、目標歩容の並進床反力水平成分や床反力モーメント鉛直成分が限界を超え、ロボットが滑って転倒する恐れがあった。
また、歩行の場合でも、床の摩擦係数が低い場合には、ロボットの滑りが発生して転倒する恐れがあった。
一方、本出願人は先に、例えばPCT出願PCT/JP02/13596等において、目標歩容の並進床反力水平成分が許容範囲を超えないように、目標歩容を生成したり、目標歩容において腕以外が発生するモーメント鉛直成分を打ち消すように、腕を振るようにする技術を提案した。この技術によれば、ロボットの滑りの発生を抑制できる。
しかるに、床面の状態などによっては、並進床反力水平成分の許容範囲が実際の床面の摩擦力の限界と整合しない場合もあり、その場合には、ロボットの滑りが発生する恐れがあった。そして、これを回避するために、並進床反力水平成分の許容範囲を狭めに設定すると、上体の姿勢(傾斜角)の大きく変動しやすい。また、脚を激しく振って移動する場合には、モーメント鉛直成分を打ち消すために、腕の振りも激しくなる。
したがって、本発明の目的は、上記の問題点を解消し、歩行、走行等の歩容形態や床面の摩擦状態によらずに、ロボットの滑りの発生をより確実に防止し、より一層好適な歩容を生成することができる制御装置を提供することにある。
本発明の脚式移動ロボットの制御装置の第1発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従するようにロボットの動作を制御する制御装置において、
前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段と、
前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
所定の動力学モデル上で前記ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容の仮運動を決定する仮運動決定手段と、
前記目標歩容の仮運動により定まる前記制限対象量が前記許容範囲を逸脱したとき、前記動力学的平衡条件を満たしつつ、該制限対象量を前記許容範囲内に制限するようにロボットの重心回りの角運動量変化率を前記仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する仮運動修正手段とを備えたことを特徴とする。
この第1発明によれば、目標歩容の仮運動により定まる前記制限対象量(並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分)が前記許容範囲を逸脱したとき、該仮運動を修正して目標歩容の運動を決定する。この場合、ロボットの重心回りの角運動量変化率を前記仮運動から変化させるので、動力学的平衡条件(例えば目標ZMPまわりの床反力モーメント水平成分が0になるなどの条件)を満たしつつ、制限対象量を許容範囲内に制限することができる。なお、変化させる角運動量変化率は、基本的にはロール方向、あるいはピッチ方向の角運動両変化率でよい。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、実際のロボットの滑りの発生の有無に応じて即応的に目標運動を修正できる。この結果、実際のロボットの滑りが発生しても、直ちにその滑りを抑制するようにロボットの運動が修正される。従って、第1発明によれば、実際のロボットの滑りの発生を抑制でき、ロボットの姿勢の安定性を保つことができる。なお、滑りの発生が有ると判断されたときには、前記許容範囲は、それを狭めるように設定されるべきであり、このことは、以下に説明する第2〜第4発明においても同様である。
次に本発明の脚式移動ロボットの第2発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従するようにロボットの動作を制御する制御装置において、
前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段と、
前記ロボットに作用させる床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
所定の動力学モデル上で前記ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容の仮運動を決定する仮運動決定手段と、
前記目標歩容の仮運動により定まる前記制限対象量が前記許容範囲を逸脱したとき、前記動力学的平衡条件を満たしつつ、該制限対象量を前記許容範囲内に制限するようにロボットの角運動量変化率を前記仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する仮運動修正手段とを備えたことを特徴とする。
この第2発明によれば、目標歩容の仮運動により定まる前記制限対象量(床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分)が前記許容範囲を逸脱したとき、該仮運動を修正して目標歩容の運動を決定する。この場合、ロボットの角運動量変化率を前記仮運動から変化させるので、動力学的平衡条件(例えば目標ZMPまわりの床反力モーメント水平成分が0になるなどの条件)を満たしつつ、制限対象量を許容範囲内に制限することができる。なお、変化させる角運動量変化率は、基本的にはヨー方向の角運動量変化率でよい。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、実際のロボットの滑りの発生の有無に応じて即応的に目標運動を修正できる。この結果、実際のロボットの滑りが発生しても、直ちにその滑り(特にスピン)を抑制するようにロボットの運動が修正される。従って、第1発明によれば、実際のロボットの滑りの発生を抑制でき、ロボットの姿勢の安定性を保つことができる。
なお、第1発明と第2発明とは、併用してもよい。この場合には、並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を1つの制限対象量とすると共に、床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分を他の1つの制限対象量とし、これらの許容範囲を滑り判断手段の判断結果に応じて可変的に設定すればよい。この場合には、いずれか一方の制限対象量が許容範囲を逸脱したときに、目標運動の仮運動を修正することが望ましい。
次に、本発明に脚式移動ロボットの制御装置の第3発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作を制御する脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットの滑りの発生を判断する滑り判断手段と、
少なくとも前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
少なくとも前記決定された目標運動の瞬時値に対応するロボットの姿勢の目標状態量と該ロボットの姿勢の実状態量との偏差に基づいて、前記目標運動の新たな瞬時値を、該新たな瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する目標瞬時値決定手段とを備えたことを特徴とする。
この第3発明によれば、少なくともロボットの姿勢の状態量に関する前記偏差に基づいて、前記目標運動の新たな瞬時値を、該新たな瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量(並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分)が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する。つまり、ロボットの姿勢を所望の姿勢に保つようにしつつ、制限対象量が許容範囲を逸脱しないように(以下、この条件を、ここでの説明では姿勢/制限対象量条件ということがある)目標運動の瞬時値が決定される。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、実際のロボットの滑りの発生の有無に応じて即応的に、前記姿勢/制限対象量条件を満たすように目標運動の瞬時値を決定できる。この結果、実際のロボットの滑りが発生しても、該ロボットの姿勢を適切な姿勢に安定に保ちつつ、直ちにその滑りを抑制することができる。
また、本発明の脚式移動ロボットの制御装置の第4発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動及び目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動及び目標床反力の瞬時値に追従させるように前記ロボットの動作を制御する脚式移動ロボットの制御装置において、
前記目標運動及び目標床反力に追従して動作しているロボットの滑りの発生を判断する滑り判断手段と、
少なくとも前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
少なくとも前記決定された目標運動及び目標床反力の瞬時値に対応するロボットの姿勢の目標状態量と該ロボットの姿勢の実状態量との偏差に基づいて、前記目標運動及び目標床反力の新たな瞬時値を、該新たな目標運動の瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する目標瞬時値決定手段とを備えたことを特徴とする。
この第4発明によれば、少なくともロボットの姿勢の状態量に関する前記偏差に基づいて、前記目標運動及び目標床反力の新たな瞬時値を、該新たな目標運動の瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量(並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分)が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する。つまり、ロボットの姿勢を所望の姿勢に保つようにしつつ、制限対象量が許容範囲を逸脱しないように(以下、この条件を、第3発明と同様に、姿勢/制限対象量条件ということがある)目標運動および目標床反力の瞬時値が決定される。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、前記第3発明と同様、実際のロボットの滑りの発生の有無に応じて即応的に、前記姿勢/制限対象量条件を満たすように目標運動及び目標床反力の瞬時値を決定できる。この結果、実際のロボットの滑りが発生しても、該ロボットの姿勢を適切な姿勢に安定に保ちつつ、直ちにその滑りを抑制することができる。また、この場合、目標運動と目標床反力との両者が前記姿勢/制限対象量条件によって規制されるので、効果的に滑りを抑制できる。
前記第1〜第4発明では、例えば、例えば、次のようにして、滑りの発生を判断することができる。
すなわち、前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断する(第5発明)。この場合、例えば該対地速度の絶対値が所定値よりも大きいときには、滑りの発生が有ると判断することができる。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断する(第6発明)。この場合、例えば該見かけばね定数が所定値よりも小さいときには、滑りの発生が有ると判断することができる。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断する(第7発明)。この場合、前記実床反力をバンドパスフィルタに通したものは、いわゆる滑り振動が発生しているときの、実床反力の振動成分に相当するものとなる。そして、例えばこの振動成分の大きさ(絶対値)が所定値よりも大きいときには、滑り振動の発生が有ると判断することができる。
なお、滑りの発生の判断は、第5〜第7発明のいずれでも行なうことができるが、これらの第5〜第7発明の2つ以上を組み合わせて滑りの発生の判断を行なうようにしてもよい。
図1は本発明の実施形態およびこれに関連する参考例における脚式移動ロボットとしての2足移動ロボットの全体構成を概略的に示す図、図2は図1のロボットの脚体の先端部の構造を示す図、図3は図1のロボットに備えた制御ユニットの構成を示すブロック図、図4は第1参考例における制御ユニットの機能的構成を示すブロック図である。図5は実施形態および参考例で生成する走行歩容を説明するための図、図6は目標床反力鉛直成分軌道の例を示すグラフ、図7は目標ZMP軌道のX成分およびY成分の例を示すグラフ、図8はロボットの上体並進モードを説明するための図、図9はロボットの上体傾斜モードを説明するための図、図10はロボットの上体ヨー回転モードを説明するための図、図11(a)はロボットの逆位相腕振りモードを平面視で説明するための図、図11(b)はロボットの逆位相腕振りモードを側面視で説明するための図、図12は実施形態で用いる動力学モデルを説明するための図である。図13は第1参考例における歩容生成装置のメインルーチン処理を示すフローチャート、図14はロボットの発散状態を説明するための図、図15は図13のS022のサブルーチン処理を示すフローチャート、図16は定常歩容と支持脚座標系とを説明するための図、図17は定常歩容の上体軌道と支持脚座標系とを例示する図、図18は基準逆位相腕振り角の例を示すグラフ、図19は定常歩容における目標床反力鉛直成分軌道の設定例を示すグラフ、図20は定常歩容における床反力水平成分許容範囲の設定例を示すグラフ、図21は定常歩容における床反力モーメント鉛直成分許容範囲の設定例を示すグラフ、図22は定常歩容における目標ZMP軌道の設定例を示すグラフである。図23は図13のS024のサブルーチン処理を示すフローチャート、図24は図23のS208のサブルーチン処理を示すフローチャート、図25は図24のS306のサブルーチン処理を示すフローチャート、図26は図25のS412のサブルーチン処理を示すフローチャートである。図27は許容範囲を考慮しない床反力水平成分の例を示すグラフ、図28は許容範囲を考慮した床反力水平成分の例を示すグラフ、図29は上体傾斜角加速度の例を示すグラフ、図30はロボットの上体傾斜角を復元するための上体傾斜復元モーメントZMP換算値の例を示すグラフ、図31は上体傾斜復元モーメントZMP換算値を加味した上体傾斜角加速度の例を示すグラフ、図32は許容範囲を考慮しない床反力モーメント鉛直成分の例を示すグラフ、図33は許容範囲を考慮した床反力モーメント鉛直成分の例を示すグラフ、図34は逆位相腕振りモーメントの例を示すグラフ、図35は図34の逆位相腕振りモーメントに対応する逆位相腕振り角加速度を示すグラフ、図36は逆位相腕振り角を復元するための逆位相腕振り復元角加速度の例を示すグラフ、図37は図36の逆位相腕振り復元角加速度に対応する逆位相腕振り復元モーメントを示すグラフ、図38は図33の床反力モーメント鉛直成分と図37の逆位相腕振り復元モーメントとを合成してなる床反力モーメント鉛直成分を示すグラフである。図39は図13のS026のサブルーチン処理を示すフローチャート、図40は今回歩容の床反力水平成分許容範囲の設定例を示すグラフ、図41は今回歩容の床反力モーメント鉛直成分許容範囲の設定例を示すグラフ、図42は図13のS028のサブルーチン処理を示すフローチャート、図43は図42のS702のサブルーチン処理を示すフローチャート、図44は今回歩容の仮目標ZMPとZMP修正量と修正後の目標ZMPとの例を示すグラフ、図45は図13のS030のサブルーチン処理を示すフローチャート、図46は図45のS1412のサブルーチン処理を示すフローチャートである。図47は定常歩容と目標歩容の上体位置軌道との関係を示すグラフ、図48は上体傾斜モード(腰中心の上体傾斜)の他の例を示す図、図49は動力学モデルの他の例を説明するための図、図50は歩行歩容における目標床反力鉛直成分の設定例を示す図、図51はロボットの走行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図、図52はロボットの歩行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図である。図53は第2参考例における制御ユニットの機能的構成を示すブロック図、図54は図53に示す補償全床反力モーメント水平成分分配器の処理を示すブロック図、図55は図53に示すモデル操作床反力モーメント鉛直成分決定器の処理を示すブロック図、図56は第2参考例における歩容生成装置のメインルーチン処理を示すフローチャート、図57は図56のS3032のサブルーチン処理を示すフローチャート、図58は図57のS3414のサブルーチン処理を示すフローチャートである。図59は第3参考例における制御ユニットの機能的構成を示すブロック図、図60は第2実施形態における歩容生成装置のメインルーチン処理を示すフローチャート、図61は図60のS2034のサブルーチン処理を示すフローチャート、図62は図61のS2114のサブルーチン処理を示すフローチャートである。図63は第4参考例における歩容生成装置の機能的構成を示すブロック図、図64は第4参考例におけるZMP許容範囲の設定例を示す図、図65は第4参考例における歩容生成装置のメインルーチン処理を示すフローチャート、図66は図65のS3536の処理を示すブロック図、図67は図66に示す上体水平位置摂動用モデルを説明するための図、図68は図66に示す上体姿勢角補正用摂動モデルの説明するための図、図69は図66に示す逆位相腕振り角補正用摂動モデルを説明するための図、図70は図66に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図である。図71は第5参考例における図65のS3536の処理を示すブロック図、図72は図71に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図である。図73は第6参考例における歩容生成装置の機能的構成を示すブロック図、図74は図73に示す擬似順フルモデルの処理を示すブロック図である。図75は第7参考例における図65のS3536の処理を示すブロック図である。図76は本発明の第1実施形態における制御ユニットの機能的構成を示すブロック図、図77は第1実施形態における歩容生成装置のメインルーチン処理を示すフローチャート、図78は図77のS2334の処理を示すフローチャート、図79は図76に示す滑り判定部の処理を示すフローチャート、図80〜図82はそれぞれ図79のS5210、S5212、S5214のサブルーチン処理を示すフローチャート、図83は滑り判定部の判定結果と、許容範囲の低減率と、床反力許容範囲との例を示すグラフ、図84は第5〜第7参考例に関する変形態様の例を示すブロック図、図85は第4参考例に関する逆位相腕振り角補正用摂動モデルモーメント決定部の処理の変形態様の例を示すブロック図である。
以下、添付図面を参照してこの発明の実施形態に係る脚式移動ロボットの制御装置を説明する。尚、脚式移動ロボットとしては2足移動ロボットを例にとる。
まず、図1〜図47を参照して、本発明の脚式移動ロボットの制御装置に関連する第1参考例を説明しておく。さらに、図53〜図58を参照して第2参考例を、図59〜図62を参照して第3参考例を、図63〜図70を参照して第4参考例を、図71及び図72を参照して第5参考例を、図73及び図74を参照して第6参考例を、図75を参照して第7参考例を説明しておく。後述する本発明の実施形態は、その機構的構成は第1参考例と同一であり、また、ロボットの歩容生成処理および制御処理の一部(具体的には許容範囲設定処理)のみが第1〜第7参考例のいずれかと相違するものである。従って、後述する実施形態の説明では、この第1〜第7参考例の説明をしばしば援用する。補足すると、図1と後述の図2、図3並びに図5〜図12を参照して説明する事項は、後述の実施形態においても同一である。
まず、第1参考例を説明する。図1は、この第1参考例に係る脚式移動ロボットとしての2足移動ロボットを全体的に示す概略図である。
図示の如く、2足移動ロボット(以下、ロボットという)1は上体(ロボット1の基体)3から下方に延設された左右一対の脚体(脚部リンク)2,2を備える。両脚体2,2は同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体3側から順に、股(腰部)の回旋(回転)用(上体3に対するヨー方向の回転用)の関節10R,10L(符号R,Lはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ)と、股(腰部)のロール方向(X軸まわり)の回転用の関節12R,12Lと、股(腰部)のピッチ方向(Y軸まわり)の回転用の関節14R,14Lと、膝部のピッチ方向の回転用の関節16R,16Lと、足首のピッチ方向の回転用の関節18R,18Lと、足首のロール方向の回転用の関節20R,20Lとから構成される。
各脚体2の足首の2つの関節18R(L),20R(L)の下部には、各脚体2の先端部を構成する足平(足部)22R(L)が取着されると共に、両脚体2,2の最上位には、各脚体2の股の3つの関節10R(L),12R(L),14R(L)を介して前記上体3が取り付けられている。上体3の内部には、詳細を後述する制御ユニット60などが格納される。なお、図1では図示の便宜上、制御ユニット60を上体3の外部に記載している。
上記構成の各脚体2においては、股関節(あるいは腰関節)は関節10R(L),12R(L),14R(L)から構成され、膝関節は関節16R(L)から構成され、足首関節は関節18R(L),20R(L)から構成される。また股関節と膝関節とは大腿リンク24R(L)で連結され、膝関節と足首関節とは下腿リンク26R(L)で連結される。
上体3の上部の両側部には左右一対の腕体5,5が取り付けられると共に、上体3の上端部には頭部4が配置される。各腕体5は、3つの関節30R(L),32R(L),34R(L)から構成された肩関節と、関節36R(L)から構成された肘関節と、関節38R(L)から構成された手首関節と、この手首関節に連結された手先部40R(L)とを備えている。なお、頭部4は、本発明の要旨と直接的な関連を有しないため詳細な説明を省略する。
上記の構成により、各脚体2の足平22R(L)は、上体3に対して6つの自由度を与えられている。そして、ロボット1の歩行等の移動中に、両脚体2,2を合わせて6*2=12個(この明細書で「*」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す)の関節を適宜な角度で駆動することで、両足平22R,22Lの所望の運動を行うことができる。これにより、ロボット1は任意に3次元空間を移動することができる。また、各腕体5は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。
図1に示す如く、各脚体2の足首関節18R(L),20R(L)の下方には足平22R(L)との間に公知の6軸力センサ50が介装されている。該6軸力センサ50は、各脚体2の足平22R(L)の着地の有無、および各脚体2に作用する床反力(接地荷重)等を検出するためのものであり、該床反力の並進力の3方向成分Fx,Fy,Fz並びにモーメントの3方向成分Mx,My,Mzの検出信号を制御ユニット60に出力する。また、上体3には、Z軸(鉛直方向(重力方向))に対する上体3の傾斜角およびその角速度、並びにZ軸回りの上体3の回転角(ヨー角)およびその角速度を検出するための姿勢センサ54が備えられ、その検出信号が該姿勢センサ54から制御ユニット60に出力される。この姿勢センサ54は、図示を省略する3軸方向の加速度センサおよび3軸方向のジャイロセンサを備え、これらのセンサの検出信号が上体3の姿勢角(傾斜角およびヨー角)およびその角速度を検出するために用いられると共に、ロボット1の自己位置姿勢を推定するために用いられる。また、詳細構造の図示は省略するが、ロボット1の各関節には、それを駆動するための電動モータ64(図3参照)と、その電動モータ64の回転量(各関節の回転角)を検出するためのエンコーダ(ロータリエンコーダ)65(図3参照)とが設けられ、該エンコーダ65の検出信号が該エンコーダ65から制御ユニット60に出力される。
さらに、図1では図示を省略するが、ロボット1の適宜な位置にはジョイスティック(操作器)73(図3参照)が設けられ、そのジョイスティック73を操作することで、直進移動しているロボット1を旋回させるなど、ロボット1の歩容に対する要求を必要に応じて制御ユニット60に入力できるように構成されている。
図2は本第1参考例における各脚体2の先端部分(各足平22R(L)を含む)の基本構成を概略的に示す図である。同図に示すように、各足平22R(L)の上方には、前記6軸力センサ50との間にばね機構70が装備されると共に、足底(各足平22R(L)の底面)にはゴムなどからなる足底弾性体71が貼られている。これらのばね機構70及び足底弾性体71によりコンプライアンス機構72が構成されている。ばね機構70は詳細は後述するが、足平22R(L)の上面部に取り付けられた方形状のガイド部材(図示省略)と、足首関節18R(L)(図2では足首関節20R(L)を省略している)および6軸力センサ50側に取り付けられ、前記ガイド部材に弾性材(ゴムやばね)を介して微動自在に収納されるピストン状部材(図示省略)とから構成されている。
図2に実線で表示された足平22R(L)は、床反力を受けていないときの状態を示している。各脚体2が床反力を受けると、コンプライアンス機構72のばね機構70と足底弾性体71とがたわみ、足平22R(L)は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構72の構造は、例えば本出願人が先に提案した特開平5−305584号公報に詳細に説明されている如く、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。
図3は制御ユニット60の構成を示すブロック図である。該制御ユニット60はマイクロコンピュータにより構成されており、CPUからなる第1の演算装置90及び第2の演算装置92、A/D変換器80、カウンタ86、D/A変換器96、RAM84、ROM94、並びにこれらの間のデータ授受を行うバスライン82を備えている。この制御ユニット60では、各脚体2の6軸力センサ50、姿勢センサ54(加速度センサおよびレートジャイロセンサ)、ジョイスティック73等の出力信号はA/D変換器80でデジタル値に変換された後、バスライン82を介してRAM84に送られる。またロボット1の各関節のエンコーダ65(ロータリーエンコーダ)の出力は、カウンタ86を介してRAM84に入力される。
前記第1の演算装置90は後述の如く目標歩容を生成すると共に、関節角変位指令(各関節の変位角もしくは各電動モータ64の回転角の指令値)を算出し、RAM84に送出する。また第2の演算装置92はRAM84から関節角変位指令と、前記エンコーダ65の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してD/A変換器96とサーボアンプ64aとを介して各関節を駆動する電動モータ64に出力する。
図4は、この第1参考例に係る脚式移動ロボットの制御装置の機能的構成を全体的に示すブロック図である。この図4中の「実ロボット」の部分以外の部分が制御ユニット60が実行する処理機能(主として第1の演算装置90及び第2の演算装置92の機能)によって構成されるものである。なお、以下の説明では、脚体2および腕体5の左右を特に区別する必要がないときは、前記符号R,Lを省略する。
以下説明すると、制御ユニット60は、ロボット1の目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置100を備えている。該歩容生成装置100は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置100が出力する目標歩容は、目標上体位置姿勢軌道(上体3の目標位置及び目標姿勢の軌道)、目標足平位置姿勢軌道(各足平22の目標位置及び目標姿勢の軌道)、目標腕姿勢軌道(各腕体5の目標姿勢の軌道)、目標全床反力中心点(目標ZMP)軌道、目標全床反力軌道から構成される。なお、脚体2や腕体5以外に上体3に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、上記歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はZ軸(鉛直軸)に対するロール方向(X軸まわり)の上体3の傾斜角とピッチ方向(Y軸まわり)の上体3の傾斜角とヨー方向(Z軸まわり)の上体3の回転角(ヨー角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。また、上体姿勢のうち、鉛直方向に対する姿勢を上体姿勢傾斜もしくは上体姿勢傾斜角ということもある。
尚、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット1の運動に係わる歩容を総称的に「運動」という。また、各足平22に作用する床反力(並進力及びモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点(全床反力の中心点の目標位置)を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分(鉛直軸(Z軸)まわりのモーメント)を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分(水平軸(X軸及びY軸)回りのモーメント)は零になる。
尚、動力学的平衡条件を満足する歩容では、ロボット1の目標運動軌道から算出されるZMP(目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点)と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ZMP軌道を与えると言っても同じことである(詳細は、本願出願人によるPCT公開公報WO/02/40224等を参照)。
このような背景から、上記PCT公開公報WO/02/40224の明細書では目標歩容を、次のように定義していた。
a)広義の目標歩容とは、1歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
b)狭義の目標歩容とは、1歩の期間の目標運動軌道とそのZMP軌道との組である。
c)一連の歩容は、いくつかの歩容がつながったものとする。
歩行においては、本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法によってロボット1の上体3の鉛直位置(上体高さ)が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が零になるようにロボット1の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、PCT公開公報WO/02/40224の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ZMPだけで十分であった。したがって、狭義の目標歩容の定義としては、上記のb)で十分であった。それに対し、本第1参考例で説明するロボット1の走行歩容(詳細は後述する)においては、床反力鉛直成分(並進床反力鉛直成分)も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット1の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のb’)を用いる。
b’)狭義の目標歩容とは、1歩の期間の目標運動軌道と、その目標ZMP軌道と目標並進床反力鉛直成分軌道とを少なくとも含む目標床反力軌道との組である。
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は上記b’)の狭義の目標歩容の意味で使用する。この場合、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。補足すると、本明細書の参考例および実施形態では、目標歩容は1歩の期間分の歩容の意味で使用するが、それは必ずしも1歩の期間分のものである必要はなく、複数歩分、あるいは1歩よりも短い(例えば半歩など)の期間分の歩容であってもよい。尚、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分(鉛直軸回り成分)は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、歩容における両脚支持期とは言うまでもなく、ロボット1がその自重を両脚体2,2で支持する期間、片脚支持期とはいずれか一方のみの脚体2でロボット1の自重を支持する期間、空中期とは両脚体2,2が床から離れている(空中に浮いている)期間を言う。片脚支持期においてロボット1の自重を支持しない側の脚体2を「遊脚」と呼ぶ。尚、本第1参考例で説明する走行歩容では、両脚支持期は無く、片脚支持期(着地期)と空中期とが交互に繰り返される。この場合、空中期では両脚体2,2とも、ロボット1の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体2、支持脚であった脚体2をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
図5に示す走行歩容を例にして、歩容生成装置100が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平10−86081号公報にも記載されているので、以下では、特開平10−86081号公報に記載されていない内容を主に説明する。
まず、図5に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット1の左右いずれか一方のみの脚体2(支持脚)の足平22が着地(接地)する片脚支持期と、両脚体2,2が空中に浮く空中期とが交互に繰り返される。図5の1番目の状態は片脚支持期の開始時(初期)の状態、2番目の状態は片脚支持期の中間時点の状態、3番目の状態は片脚支持期に続く空中期の開始時(片脚支持期の終了時)の状態、4番目の状態は空中期の中間時点の状態、5番目の状態は空中期の終了時(次の片脚支持期の開始時)の状態を示している。
この走行歩容では、ロボット1は、図5の1番目の状態で示すように、片脚支持期の開始時において支持脚(ロボット1の進行方向前側の脚体2)側の足平22のかかとで着地する。続いて、図5の2番目の状態で示すように、ロボット1は、着地した足平22(支持脚側の足平22)の底面のほぼ全面を着地させた後、図5の3番目の状態で示すように、その支持脚側の足平22(図5の3番目の状態におけるロボット1の進行方向後側の脚体2の足平22)のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了すると共に空中期が開始する。尚、片脚支持期における遊脚は、図5の1番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図5の2番目及び3番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図5の4番目の状態で示す空中期を経た後、ロボット1は、遊脚(空中期の開始直前の片脚支持期で遊脚となっていた脚体2)の足平22のかかとで着地し、次の片脚支持期が開始される。
図5の走行歩容を考慮しつつ、前記歩容生成装置100が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置100が目標歩容を生成するとき、遊脚側の足平22の着地位置姿勢(着地予定位置姿勢)や着地時刻(着地予定時刻)等の目標歩容生成用の基本的な要求値(要求パラメータ)が、前記ジョイスティック73の所要の操作等に応じて歩容生成装置100に与えられる。そして、歩容生成装置100は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置100は、上記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ(歩容パラメータという)を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。
この場合、目標足平位置姿勢軌道(より詳しくは、足平の位置及び姿勢の空間的な各成分(X軸成分等)の目標軌道)は、例えば本出願人が特許第3233450号にて提案した有限時間整定フィルタを用いて各足平22毎に生成される。この有限時間整定フィルタは、可変時定数の1次遅れフィルタ、すなわち、伝達関数が1/(1+τs)の形で表されるフィルタ(τは可変の時定数。以下、このフィルタを単位フィルタという)を複数段(本第1参考例では3段以上)、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値(>0)から減少されていき、最終的には、該残時間が0になる指定時刻にて、τの値が0になるように設定される。そして、有限時間整定フィルタには、前記指定値(より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量)に応じた高さのステップ入力が与えられる。このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を0もしくはほぼ0にすることができる。特に、単位フィルタを3段以上(3段でよい)、接続した場合には、有限時間整定フィルタの出力の変化加速度(変化速度の微分値)をも0もしくはほぼ0にすることができる。
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平22の目標位置姿勢軌道である。
上述のように生成される目標足平位置姿勢軌道は、各足平22の位置が、その初期接地状態(目標歩容の初期時刻の状態)から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を0またはほぼ0にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平22の着地瞬間における対地速度(床に固定された支持脚座標系での各足平22の位置の変化速度)が0またはほぼ0になる。したがって、走行歩容において同時に全脚体2,2が空中に存在する状態(空中期での状態)から着地しても、着地衝撃が小さくなる。
前記走行歩容においては、ロボット1に作用する重力によって空中期後半から上体3の鉛直速度は下向きになり、着地時でも下向きのままである。したがって、上記のように各足平22の着地瞬間における対地速度が0またはほぼ0になるように目標足平位置姿勢軌道を生成すると共に、後述する如く動力学的平衡条件を満たすように上体3の目標位置姿勢軌道を生成したとき、着地直前において、上体3に対する遊脚側の足平22の相対速度は、上向きになる。すなわち、走行歩容の着地瞬間では、ロボット1の目標歩容は遊脚側の脚体22を上体3側に引っ込めながら着地するような歩容となる。言い換えれば、本第1参考例での目標歩容では、ロボット1は、着地瞬間において、遊脚側の足平22の対地速度が0またはほぼ0になるように、上体3から見て該足平22を引き上げるようにして着地する。これによって、着地衝撃は小さくなり、着地衝撃が過大になるのを防止するようにしている。
また、本第1参考例では、有限時間整定フィルタは、単位フィルタを3段以上(例えば3段)、直列に接続したものであるため、着地予定時刻までに各足平22の速度(足平位置の変化速度)が0またはほぼ0になるだけでなく、各足平22は、その加速度も着地予定時刻にて0またはほぼ0になって停止する。つまり、着地瞬間における対地加速度も0またはほぼ0になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット1の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、着地予定時刻にて各足平22の対地速度を0またはほぼ0にする上では、有限時間整定フィルタの単位フィルタの段数は2段でもよいが、この場合には、着地予定時刻での各足平22の加速度は一般には0にならない。
尚、足平姿勢に関しては、各足平22が着地予定時刻にてその踵で着地した後、該足平22の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平22の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
また、本第1参考例では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の変化速度(足平位置の時間微分値)が0またはほぼ0になるように、さらには、該着地予定時刻での足平位置の変化加速度(変化速度の時間微分値)が0またはほぼ0になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平22の底面のほぼ全面が床に設置する時刻にて、各足平22の姿勢の変化速度、さらにはその変化加速度が0またはほぼ0になるように多項式などの関数が設定される。
目標床反力鉛直成分軌道は、例えば図6のように設定される。本第1参考例では、走行歩容における目標床反力鉛直成分軌道の形状(詳しくは片脚支持期での形状)は、台形状(床反力鉛直成分の増加側に凸の形状)に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ(床反力鉛直成分軌道パラメータ)が決定される。尚、走行歩容の空中期では、目標床反力鉛直成分は定常的に0に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように(値が不連続にならないように)設定するのが良い。これは床反力を制御する際のロボット1の関節の動作を滑らかにするためである。尚、「実質的に連続」というのは、アナログ的に連続な軌道(真の意味での連続な軌道)を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。
目標ZMP軌道は次のように設定される。図5の走行歩容においては、前記したように支持脚側足平22のかかとで着地し、次にその支持脚側足平22のつま先で蹴って空中に飛び上がり、最後に遊脚側足平22のかかとで着地する。したがって、片脚支持期での目標ZMP軌道は、図7の上段図に示すように、支持脚側足平22のかかとを初期位置として、次に支持脚側足平22の底面のほぼ全面が接地する期間において該足平22の前後方向の中央に移動し、その後、離床時までに支持脚側足平22のつまさきに移動するように設定される。ここで、図7の上段図は、X軸方向(前後方向)の目標ZMP軌道を示すものであり、図7の下段図はY軸方向(左右方向)の目標ZMP軌道を示すものである。尚、片脚支持期におけるY軸方向の目標ZMP軌道は、図7の下段図に示すように、Y軸方向での支持脚側脚体2の足首関節の中心位置と同じ位置に設定される。
走行歩容では、さらに片脚支持期の終了後、両脚体2,2が床から離れ、床反力鉛直成分が0になる。床反力鉛直成分が0の時、すなわち空中期には、ロボット1の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット1に作用する重力と慣性力との合力のモーメントは0であるので、目標ZMPは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が0である作用点」というZMPの条件を満たす。言いかえれば、任意の点に目標ZMPを設定しても、上記合力が目標ZMP回りに作用するモーメントの水平成分が0であるという動力学的平衡条件を満足する。したがって、目標ZMPを不連続に設定しても構わない。例えば、空中期では、目標ZMPを、離床時(片脚支持期の終了時)の目標ZMP位置から移動しないように設定し、空中期終端において、着地時の目標ZMP位置に不連続(ステップ状)に移動するように該目標ZMP軌道を設定しても構わない。しかし本第1参考例では、図7の上段図に示すように、空中期における目標ZMP軌道のX軸方向位置は、次の遊脚側脚体2の着地までに支持脚側足平22のつまさきから遊脚側足平22のかかとの着地位置まで連続的に移動するようにした。また、図7の下段図に示すように、空中期における目標ZMP軌道のY軸方向位置は、次の遊脚側脚体2の着地までに支持脚側脚体2の足首関節の中心のY軸方向位置から遊脚側脚体2の足首関節の中心のY軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ZMP軌道を連続(実質的に連続)にした。そして、後述するように、目標ZMPまわりの重力と慣性力との合力のモーメント(鉛直成分を除く)が零になるように目標歩容を生成する(より具体的には目標上体位置姿勢軌道を調整する)ようにした。モデルの近似誤差を考慮すると、生成された歩容が滑らかになるようにするために、空中期においても目標ZMP軌道を連続(実質的に連続)にしておくのが望ましい。但し、本第1参考例で用いる後述の動力学モデルでは、目標ZMPの位置によらずに、目標ZMP回りのモーメントの水平成分をある値(その値は本第1参考例では0であるが、後述の実施形態では必ずしも0ではない)にするような目標歩容を一義的に生成できるので、必ずしも目標ZMPを連続にしておく必要はない。
尚、本第1参考例では、図7に示したような目標ZMP軌道の折れ点の位置や時刻が、ZMP軌道パラメータ(目標ZMP軌道を規定するパラメータ)として設定される。また、上記したZMP軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。
ZMP軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット1の接地面を含む最小の凸多角形(いわゆる支持多角形)の中央付近に目標ZMPが存在する状態を安定余裕が高いと言う(詳細は特開平10−86081号公報を参照)。図7の目標ZMP軌道はこのような条件を満たすように設定したものである。
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。
本第1参考例では、歩容生成装置100は、目標上体姿勢だけでなく、基準上体姿勢も生成する。この基準上体姿勢は、歩容に対する要求(歩容生成装置100に対する行動計画部などの装置または外部(前記ジョイスティック73等)からの要求)にそのまま従って生成される上体姿勢である。
目標上体姿勢(以降、「基準」が付いていない場合には、目標上体姿勢を表す)は、長期的には基準上体姿勢に追従するかまたは一致するように生成される。
目標上体姿勢は、歩行においては、本願出願人によるPCT公開公報WO/02/40224の明細書に記載した実施形態のごとく通常、常に基準上体姿勢に一致させておけば良い。PCT公開公報WO/02/40224では、基準上体姿勢という概念は記載されていないが、目標上体姿勢パターンを、明示的かつ優先的に与えていたので、基準上体姿勢に目標上体姿勢が常に一致していることと同じことである。
しかし、走行など空中期がある歩容や低摩擦床面での歩行においては、単に上体水平加速度等を調整するだけでは、目標歩容の床反力水平成分と床反力モーメント鉛直成分とが許容範囲以内(あるいは摩擦限界以内)に存在するようにしつつ動力学的平衡条件を満足することができない。
そこで、本第1参考例においては、目標上体姿勢を必要に応じて基準上体姿勢から故意にずらすこととした。より具体的には、以下に説明する運動モードを複合的に発生させることにより、目標歩容の床反力水平成分や床反力モーメント鉛直成分が許容範囲以内(あるいは摩擦限界以内)に存在しつつ動力学的平衡条件を満足させるようにした。
図8のように、ロボット1のある運動状態から、上体水平加速度だけを摂動(微小変化)させると、ロボット1の全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生するロボット1の慣性力と重力との合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに(ロボット1の全体重心鉛直加速度を摂動させずに)、目標ZMPまわりの床反力モーメント水平成分(水平軸まわり成分)と床反力水平成分とを摂動させる。このようにロボット1の上体水平加速度を摂動させる運動モードを上体並進モードと呼ぶ。
言いかえると、床反力鉛直成分を変化させずに、目標ZMPまわりの床反力モーメント水平成分と床反力水平成分とを変化させる運動を上体並進モードと呼ぶ。尚、上体並進モードでは、床反力モーメント鉛直成分(鉛直軸まわり成分)も摂動するが、ここではこの点に注目しない。
この時の単位加速度当たりの床反力モーメント水平成分の変化をΔMp、単位加速度当たりの床反力水平成分の変化をΔFpとする。図8に示す状況で上体3を前方に水平加速すると、ΔMpとΔFpは図8に示す矢印の向きに作用する。
感覚的に判り易くするために、運動によって発生する慣性力と重力との合力に釣り合う床反力を用いて表現したが、慣性力と重力との合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力とは、互いに大きさが同じで向きが逆になっている。
それに対し、図9のように、ロボット1のある運動状態から、ある点Prまわりに上体傾斜角加速度(上体3の傾斜角の角加速度)を摂動させると、ロボット1の全体重心は摂動せずに、全体重心まわりの角運動量(鉛直軸まわり成分を除く)が摂動する。すなわち、点Prまわりの上体傾斜角加速度の摂動は、床反力鉛直成分と床反力水平成分とを摂動させずに、目標ZMPまわりの床反力モーメント水平成分を摂動させる。このようにロボット1の上体傾斜角加速度を摂動させる運動モードを上体傾斜モードと呼ぶ。
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ZMPまわりの床反力モーメント水平成分を変化させる運動を上体傾斜モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント水平成分の変化をΔMr、単位角加速度当たりの床反力水平成分の変化をΔFrとする。ΔFrは零である。図9に示す状況で上体3が前傾するように上体傾斜角の角加速度を発生させると、ΔMrは図9に示す矢印の向きに作用する。
また、図10のように、ロボット1のある運動状態から、ある点Pqまわりに上体ヨー角加速度(上体3の鉛直軸まわりの回転角加速度)を摂動させると、ロボット1の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。ところで、ロボット1の全体重心が摂動しなければ、角運動量鉛直成分の摂動は、作用点に依存しない。したがって、点Pqまわりの上体ヨー角加速度の摂動は、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ZMPまわりの床反力モーメント鉛直成分を摂動させる。このようにロボット1の上体ヨー角加速度を摂動させる運動モードを上体ヨー回転モードと呼ぶ。
言いかえると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を変化させずに、目標ZMPまわりの床反力モーメント鉛直成分を変化させる上体運動を上体ヨー回転モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント鉛直成分の変化をΔMbz、単位角加速度当たりの床反力水平成分の変化をΔFbとする。ΔFbは零である。図10に示す状況で上体3を矢印の向きに単位角加速度で回転させる(角加速度βb=1で回転させる)と、ΔMbzは図10に示す矢印の向きに作用する。
尚、図10に示す運動では、両腕体5,5の手先位置が支持脚座標系(床に固定された座標系)から見て変わらないように、上体3を回転させたが、上体3に対する腕体5の相対位置姿勢を変えずに、上体3と共に腕体5を回転させる運動を上体ヨー回転モードと定義しても良い。ただし、この場合には、後述する運動方程式に若干変更が必要である。
また、図11(a),(b)のように、ロボット1のある運動状態から、両腕体5,5の先端を互いに前後に逆方向に摂動させると、ロボット1の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。以降、この運動モードを逆位相腕振りモードと呼ぶ。言い換えると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ZMPまわりの床反力モーメント鉛直成分を摂動させる腕振り運動モードを逆位相腕振りモードと呼ぶ。
右腕体5Rを前側に単位量移動させ、左腕体5Lを後ろに単位量移動させる動作を、単位角度の逆位相腕振りと呼ぶ。図11(a),(b)は、逆位相腕振り角度がθazの状態を表す。
逆位相腕振りモードの単位角加速度当たりの床反力モーメント鉛直成分の変化をΔMaz、単位角加速度当たりの床反力水平成分の変化をΔFaとする。ΔFaは零である。図11(a),(b)に示す状況で右腕体5Rを前側に加速し、左腕体5Lを後ろ側に加速する(角加速度βa>0で振る)と、図11(a)に示す矢印の向き(鉛直軸の正の向き)に床反力モーメント鉛直成分Mazが作用する。
次に、本第1参考例に用いられるロボット1の動力学モデルについて説明する。本第1参考例では単純化された(近似された)以下に示す動力学モデルを用いる。ただし、以下に示す動力学モデルに関しては、キネマティクスモデル(関節、リンクの構造や寸法を表すモデルであり、言い換えると、関節変位とリンクの位置姿勢との関係を表すモデルである。)も必要である。
図12は、本第1参考例に用いられるロボット1の動力学モデルである。図示の如く、この動力学モデルは、ロボット1の各脚体2にそれぞれ対応する2つの質点2m,2m、及び上体3に対応する質点3mからなる合計3質点と、イナーシャがあって質量のない4つのフライホイールFHx、FHy、FHbz、FHazとから構成されるモデルである。フライホイールFHx、FHy、FHbz、FHazは、それぞれX軸(前後方向軸)、Y軸(左右方向軸)、Z軸(鉛直軸)、Z軸(鉛直軸)の回りに回転可能なものである。この動力学モデルでは、デカップルド、即ち、脚体2,2の動力学(各質点2m,2mの動力学)と上体3の動力学(質点3m及びフライホイールFHx、FHyおよびFHbzの動力学)と腕体5,5の動力学(フライホイールFHazの動力学)とが相互に非干渉に構成されると共に、ロボット1全体の動力学は、それらの線形結合で表される。また、さらに、上体3の運動と床反力との関係も、上体3の並進運動(上体並進モード)と床反力との関係、上体3の傾斜運動(上体傾斜モード)と床反力との関係、上体3のヨー回転運動(上体ヨー回転モード)と床反力との関係、並びに両腕体5,5の逆位相腕振り運動(逆位相腕振りモード)と床反力との関係に分離される。具体的には、上体質点3mの水平運動によって発生する床反力は、上体3の水平方向並進運動(上体並進モード)によって発生する床反力に対応し、フライホイールFHxおよびFHyの回転運動によって発生する床反力は、上体3の傾斜角の回転運動(上体傾斜モード)によって発生する床反力に対応する。なお、フライホイールFHxの回転運動は、上体3の傾斜角のロール方向(X軸回り)の回転運動に対応し、フライホイールFHyの回転運動は、上体3の傾斜角のピッチ方向(Y軸回り)の回転運動に対応している。また、フライホイールFHbzの回転運動によって発生する床反力は、上体3のヨー回転運動(上体ヨー回転モード)によって発生する床反力に対応する。また、フライホイールFHazの回転運動によって発生する床反力は、逆位相腕振り(逆位相腕振りモード)によって発生する床反力に対応する。
尚、ロボット1の腕体の質量は上体3に含まれるものとし、上体質点3mは腕体5,5の質量を含む質量をもつ。
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。なお、各質点2m,2m,3mはそれが対応する部位の代表点であるか、あるいはその部位の位置姿勢から幾何学的に一義的に決定される点に相当する。例えば、支持脚側脚体2の質点2mの位置は、該脚体2の足平22の底面の前記代表点から所定の距離だけ上方の点とする。
Zsup:支持脚質点鉛直位置
Zswg:遊脚質点鉛直位置
Zb:上体質点鉛直位置(上体鉛直位置とは一般的には異なる。)
ZGtotal:全体重心鉛直位置
Xsup:支持脚質点X位置
Ysup:支持脚質点Y位置
Xswg:遊脚質点X位置
Yswg:遊脚質点Y位置
Xb:上体質点X位置(上体質点位置は、前記点Prから上体の前後方向にある所定の距離だけオフセットした点である。オフセットは、直立時などにおいて、厳密モデルの重心位置と、本動力学モデルの重心位置がなるべく一致するように、決定される。上体水平位置とは一般的には異なる。)
Yb:上体質点Y位置
XGtotal:全体重心水平X位置
YGtotal:全体重心水平Y位置
θbx:鉛直方向に対するX軸回りの上体傾斜角
θby:鉛直方向に対するY軸回りの上体傾斜角
θbz:上体ヨー回転角
θaz:逆位相腕振り角
mb:上体質点質量
msup:支持脚質点質量
mswg:遊脚質点質量
mtotal:ロボット総質量(=mtotal+msup+mswg)
J:上体慣性モーメント(上体傾斜モードにおける等価慣性モーメントである。すなわち、FHxおよびFHyの慣性モーメントである。実ロボット1の上体3部位の慣性モーメントとは一般的には一致しない。)
Jbz:鉛直軸まわり上体慣性モーメント(上体ヨー回転モードにおける等価慣性モーメントである。実ロボット1の上体3部位の慣性モーメントとは一般的には一致しない。)
Jaz:腕振り鉛直軸まわり慣性モーメント(スピンキャンセルのための逆位相腕振りにおける等価慣性モーメントである。すなわち、FHzの慣性モーメントである。)
Fx:床反力X成分(詳しくは並進床反力の前後方向(X軸)成分)
Fy:床反力Y成分(詳しくは並進床反力の左右方向(Y軸)成分)
Fz:床反力鉛直成分(詳しくは並進床反力の鉛直方向(Z軸)成分。
本第1参考例では、これは目標並進床反力鉛直成分に等しい)
Mx:目標ZMPまわりの床反力モーメントX成分(詳しくは床反力モーメントの前後軸(X軸)まわり成分)
My:目標ZMPまわりの床反力モーメントY成分(詳しくは床反力モーメントの左右軸(Y軸)まわり成分)
Mz:目標ZMPまわりの床反力モーメントZ成分(詳しくは床反力モーメントの鉛直軸(Z軸)まわり成分)
なお、各質点2m,3mのX位置、Y位置はそれぞれ前後方向(X軸方向)の位置、左右方向(Y軸方向)の位置を意味している。また、本第1参考例では、各脚体2の質点2mの位置と、その脚体2の足平22の位置(足平22のあらかじめ定めた代表点の位置)との位置関係はあらかじめ定められており、一方の位置が決まれば、他方の位置は一義的に定まるものとされている。また、上体質点3mと、上体3の位置(上体3のあらかじめ定められた代表点の位置)との位置関係は、上体3の姿勢角(以降、上体に関しては、姿勢角とは、傾斜角とヨー角を意味するものとする。)に応じてあらかじめ定められており、一方の位置と姿勢角とが決まれば、他方の位置は一義的に定まるものとされている。
また、任意の変数Xに対して、dX/dtはXの1階微分を表わし、d2X/dt2はXの2階微分を表わす。したがって、変数Xが変位ならば、dX/dtは速度、d2X/dt2は加速度を意味する。gは重力加速度定数を示す。ここでは、gは正の値とする。
上記動力学モデルの運動方程式(動力学的平衡条件を表す式)は、式01、式02x、式02y、式03x、式03y、式03zで表される。
Figure 2005000536
Figure 2005000536
また、ロボット全体重心位置には次の関係式が成立する。
Figure 2005000536
以下に上記動力学モデルと前記ΔFp、ΔMp、ΔFr、ΔMrの関係を示す。
前記ΔFpは、式02xまたは式02yにおいて、d2Xb/dt2またはd2Yb/dt2を単位量だけ摂動させたときのFxまたはFyの摂動量であるから、次式によって求められる。
ΔFp=mb …式06
すなわち、上体並進モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力水平成分の変化ΔFpは、上記動力学モデルの上体質点3mの質量に相当する。
前記ΔMpは、式03yまたは式03xにおいて、d2Xb/dt2またはd2Yb/dt2を単位量だけ摂動させたときのMyまたはMxの摂動量であるから、次式によって求められる。
ΔMp=mb*(Zb−Zzmp) …式07
すなわち、上体並進モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力モーメント水平成分の変化ΔMpは、上記動力学モデルの上体質点質量に、上体質点3mの目標ZMPからの高さ(鉛直位置)を乗じたものになる。このときの上体質点3m及び目標ZMPの位置と、上体質点3mの運動との関係は、上体質点3mを倒立振子質点、目標ZMPを倒立振子支点に対応づけたときの倒立振子の挙動に相当する。なお、Y軸方向のΔMpは、より正確には、式07の右辺の符号を反転させたものである。
前記ΔFrは、式02xまたは式02yにおいて、d2θby/dt2を単位量だけ摂動させたときのFxまたはFyの摂動量であるから、次式によって求められる。
ΔFr=0 …式08
すなわち、上体傾斜モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力水平成分の変化ΔFrは、0である。
前記ΔMrは、式03xまたは式03yにおいて、d2θbx/dt2またはd2θby/dt2を単位量だけ摂動させたときのMxまたはMyの摂動量であるから、次式によって求められる。
ΔMr=J …式09
すなわち、上体傾斜モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力モーメント水平成分の変化ΔMrは、水平軸フライホイール(FHxおよびFhy)の慣性モーメントに相当する。
前記ΔMbzは、式03zにおいて、d2θbz/dt2を単位量だけ摂動させたときのMzの摂動量であるから、次式によって求められる。
ΔMbz=Jbz …式09b
すなわち、上体ヨー回転モードの単位加速度当たりの床反力モーメント成分の変化ΔMbzは、上体ヨー回転に対応するフライホイールFHbzの慣性モーメントに相当する。
前記ΔMazは、式03zにおいて、d2θaz/dt2を単位量だけ摂動させたときのMzの摂動量であるから、次式によって求められる。
ΔMaz=Jaz …式09a
すなわち、逆位相腕振りの単位角加速度当たりの床反力モーメント成分の変化ΔMazは、腕振りに対応するフライホイールFHazの慣性モーメントに相当する。
本第1参考例における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩分の目標歩容(前記狭義の意味での目標歩容)を単位として、その1歩分の目標歩容を順番に生成する。従って、本第1参考例で生成する図5の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時(次の片脚支持期の開始時)までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置100が今回歩容を新たに生成するとき、該歩容生成装置100には、ロボット1の2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値(要求)が歩容に対する要求パラメータとして入力される(あるいは歩容生成装置100が記憶装置から要求パラメータを読み込む)。そして、歩容生成装置100は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。
以下に図5の走行歩容を生成することを例にして、本第1参考例における歩容生成装置100の歩容生成処理の詳細を図13〜図46を参照しつつ説明する。図13は、その歩容生成装置100が実行する歩容生成処理のメインルーチンを示すフローチャート(構造化フローチャート)である。
まずS010において時刻tを0に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図13のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはS018に進むと共に、切り替わり目でないときはS030に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
S018に進むときは時刻tが0に初期化され、次いでS020に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本第1参考例では、歩容生成装置100にジョイスティック73等から与えらる要求パラメータは、2歩先までの遊脚側足平22の着地予定位置姿勢(足平22が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢)、着地予定時刻の要求値を含んでおり、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける1歩目の遊脚側足平22(今回歩容での遊脚側足平22)の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。
例えば図16を参照して、今回歩容(1歩目)に係わる遊脚側足平22(図では22L)の着地予定位置姿勢の要求値が、今回歩容の支持脚側足平22(図では22R)の着地位置姿勢に対して、今回歩容支持脚座標系のX軸方向(今回歩容の支持脚側足平22Rの前後方向)及びY軸方向(今回歩容の支持脚側足平22Rの左右方向)に、それぞれxnext、ynextだけ移動し、且つZ軸回り(鉛直軸回り)にθznextだけ回転させた位置姿勢であるとする。ここで、支持脚座標系は、支持脚側足平22を水平姿勢(より一般的には床面に平行な姿勢)にして該支持脚側足平22の底面のほぼ全面を床面に接触(密着)させた状態において、該支持脚側脚体2の足首中心から床面に延ばした垂線が該床面と交わる点(この点は、本第1参考例の例では支持脚側足平22の底面のほぼ全面を床面に接触させた状態では、該足平22の代表点と合致する)を原点とし、その原点を通る水平面をXY平面とするグローバル座標系(床に固定された座標系)である。この場合、X軸方向、Y軸方向は、それぞれ支持脚側足平22の前後方向、左右方向である。尚、支持脚座標系の原点は、必ずしも支持脚側足平22の底面のほぼ全面を床面に接触させた状態での該足平22の代表点(足平22の位置を代表する点)に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
このとき、次回歩容支持脚座標系は、図示のように今回歩容の遊脚側足平22Lの着地予定位置姿勢の要求値に従って該足平22を着地させた場合(足平22の代表点を着地予定位置の要求値に一致させ、且つ、足平22の姿勢(向き)を着地予定姿勢の要求値に一致させた場合)における該足平22Lの代表点(より詳しくは該代表点に合致する床上の点)を原点とし、該原点を通る水平面内における該足平22Lの前後方向、左右方向をそれぞれX’軸方向、Y’軸方向とする座標系である。
上記と同様に、2歩目の遊脚側足平22の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系(図16のX”Y”座標を参照)が定まる。また、今回歩容周期は、今回歩容の支持脚側足平22の着地予定時刻(要求値)から、1歩目(今回歩容)の遊脚側足平22の着地予定時刻(要求値)までの時間として定まり、次回歩容周期は、1歩目の遊脚側足平22の着地予定時刻(要求値)から2歩目の遊脚側足平22の着地予定時刻(要求値)までの時間として定まる。
尚、前記要求パラメータは、本第1参考例ではジョイスティック73の所要の操作によって歩容生成装置100に入力されるものであるが、あらかじめ該要求パラメータあるいはこれに対応する上記の支持脚座標系の位置姿勢及び歩容周期をロボット1の移動スケジュールとして記憶しておいても良い。あるいは、ジョイスティック73などの操縦装置からの指令(要求)とそのときまでのロボットの1の移動履歴とを基に前記次回及び次次回歩容支持脚座標系、並びに今回及び次回歩容周期を決定しても良い。
次いでS022に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、基準とする腕姿勢軌道を規定する基準腕姿勢軌道パラメータ、目標ZMP軌道を規定するZMP軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を規定するパラメータも歩容パラメータに含まれる。
尚、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界(本第1参考例では1歩毎の歩容の境界)においてロボット1の運動状態(足平位置姿勢、上体位置姿勢等の状態)に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。
周期的歩容である定常旋回歩容は、本第1参考例では、ロボット1の2歩分の歩容、すなわち今回歩容に続く第1旋回歩容と該第1旋回歩容に続く第2旋回歩容とからなる歩容を該定常旋回歩容の1周期分の歩容として、その1周期分の歩容を繰り返す歩容である。尚、ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。また、生成する目標歩容が前記図5の走行歩容であると、その目標歩容の今回歩容は、片脚支持期及び空中期を有する走行歩容であるので、定常旋回歩容の第1旋回歩容及び第2旋回歩容は、いずれも今回歩容と同様に片脚支持期と空中期とを有する歩容である。つまり、第1旋回歩容及び第2旋回歩容の基本的な歩容形態は今回歩容と同一である。
定常旋回歩容について補足すると、2足移動ロボットでは、定常旋回歩容の1周期分は、前記した狭義の意味での歩容が、少なくとも2歩分、必要である。そして、3歩以上の歩容を1周期分の歩容とする複雑な定常旋回歩容を設定することも可能である。但し、定常旋回歩容は、後述の如く、今回歩容の終端(終了時刻)における発散成分(詳細は後述する)を決定するためだけに用いられる。このため、3歩以上の歩容を1周期とする定常旋回歩容を用いることは、歩容生成の処理が煩雑となるにも関わらず、効果は少ない。そこで、本第1参考例での定常旋回歩容の1周期分の歩容を2歩分の歩容(第1及び第2旋回歩容)により構成するようにしている。尚、3足以上の脚式移動ロボットにあっては、それに応じて定常旋回歩容を定義するに足る歩容数が増加する。以下では、説明の便宜上、複数の狭義の歩容(本第1参考例では2歩分の歩容)から成る定常旋回歩容を1歩の歩容とみなす。
定常旋回歩容は、歩容生成装置100で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット1の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置100からそのまま出力されるものではない。
尚、「発散」とは、図14に示すように、2足移動ロボット1の上体3の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、2足移動ロボット1の上体3の位置が両足平22,22の位置(より具体的には、支持脚側足平22の接地面に設定されたグローバル座標系(支持脚座標系)の原点)からかけ離れていく具合を表す数値である。
本第1参考例では、目標歩容が、前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。ただし、継続的な歩容の代表例である定常歩容(歩容の軌道の不連続を発生することなく、同じパターンの歩容を繰り返すことができる周期的歩容であり、原理上、無限回繰り返しても発散しない歩容)の初期発散成分(定常歩容の初期時刻での発散成分)であっても、単純に0ではなく、定常歩容のパラメータが変われば、その初期発散成分も変わる。すなわち、歩き方あるいは走り方等の歩容形態によって、適切な発散成分が変わる。そこで、本第1参考例では、これから生成しようとする今回歩容の後に続く定常歩容が前記今回歩容に係わる要求パラメータに応じて設定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる(より一般的には、今回歩容を定常歩容に連続させもしくは近づける)ように、今回歩容を生成する。これのような歩容生成の基本的な指針は本出願人が先に提案したPCT公開公報WO/02/40224のものと同様である。
本発明の第1参考例では、PCT公開公報WO/02/40224の第1実施形態で用いたような線形な3質点動力学モデルを用いていないが、次式で定義される発散成分および収束成分の概念は、図12に示したモデルのような非線形な動力学モデルの挙動の摂動分に対しても、近似的に十分な精度で適用することができる。
発散成分=上体質点水平位置+上体質点水平速度/ω0
…式10
収束成分=上体質点水平位置−上体質点水平速度/ω0’
…式11
ただし、ここでの上体質点水平位置は、図12に示す前記動力学モデルにおいては、上体質点水平位置Xbを表す。
また、ω0、ω0’はある所定の値である。これらのω0、ω0’値はほぼ同じ値であるが、厳密には一致しない。そして、走行時では、PCT公開公報WO/02/40224の歩行歩容生成時の値に対して若干変更する必要がある。
発散成分および収束成分に関するその他の詳細は、PCT公開公報WO/02/40224に記述されているので、ここではこれ以上言及しない。
本第1参考例においては、PCT公開公報WO/02/40224に示した方式に加え、さらに、後述するように、目標床反力鉛直成分軌道を規定する歩容パラメータを設定し、この目標床反力鉛直成分を動力学的に満足するようにロボット1の全体重心鉛直位置を決定する。この場合、床反力鉛直成分の2階積分値がロボット1の全体重心鉛直位置を規定するものになるので、目標床反力鉛直成分の設定が悪いと、ロボット1の全体重心鉛直位置もしくは上体鉛直位置が高くなり過ぎたり低くなり過ぎたりする。したがって、目標床反力鉛直成分の設定方法も重要な課題である。しかし、床反力鉛直成分と上体鉛直位置との関係は、ZMPと上体水平位置との関係に似ているので、上体水平位置速度を適切にするための目標ZMP決定手法の一部を、以下の本第1参考例に示すように、少し変更するだけで、上体鉛直位置速度を適切にするための目標床反力鉛直成分の決定手法に適用することができる。
本題に戻り、S22では、図15に示すフローチャートに従って、以下の処理が行われる。
まず、S100において、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に具体的な設定方法を図16を参照して説明する。尚、以降の説明では、支持脚側の脚体2の足平22を支持脚足平と称し、遊脚側の脚体2の足平22を遊脚足平を称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻もしくはそれらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第1旋回歩容および第2旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第1旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平22は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢(=前回歩容終端遊脚足平位置姿勢)から、前記要求パラメータにおける2歩目の遊脚側足平22の着地予定位置姿勢の要求値(今回歩容の支持脚足平22の次回歩容における着地予定位置姿勢の要求値)もしくは該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(詳しくは次回歩容支持脚座標系から見た軌道)を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
尚、次回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平22を接地させたまま、つま先を下げるように該足平22を水平姿勢までピッチ方向に所定角度回転させたときの該足平の位置姿勢が次次回歩容支持脚座標系の位置姿勢に合致するように決定される。換言すれば、次回歩容終端遊脚足平位置姿勢は、前記要求パラメータにおける2歩目の遊脚側足平22の着地位置姿勢の要求値から、該足平22をすべらないように接地させたまま、つま先を持ち上げるように該足平22をピッチ方向に所定角度回転させた状態(つま先を上げてかかとを着地させた状態)での該足平22の位置姿勢である。
また、第1旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、前記次回歩容終端遊脚足平位置姿勢の場合と同様、前記次回歩容支持脚座標系もしくはこれに対応する前記要求パラメータの1歩目(今回歩容)の遊脚着地予定位置姿勢の要求値に応じて定まるものである。すなわち、該今回歩容終端遊脚足平位置姿勢は、その位置姿勢から、足平22を接地させたまま、つま先を下げるように該足平22を回転させて該足平22の底面のほぼ全面を床面に接地させたときの該足平の代表点が次回歩容支持脚座標系の原点に合致するように決定される。
第1旋回歩容終端遊脚足平位置姿勢は、今回歩容終端遊脚足平位置姿勢や次回歩容終端遊脚足平位置姿勢の決定手法と同様に、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に基づいて決定される。より具体的には、第1旋回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平22を接地させたまま、すべらないように該足平22を水平姿勢まで所定角度回転させたときの足平位置姿勢が、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に合致するように設定される。
第1旋回歩容終端では、支持脚足平22は離床して空中にある。支持脚足平22が離床してから後の軌道を決定するために、第1旋回歩容支持脚足平着地予定位置姿勢が設定される。第1旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢に基づいて設定される。より具体的には、第1旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢である。なお、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と次次次回歩容支持脚座標系との相対的位置姿勢関係が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように設定される。
第1旋回歩容終端支持脚足平位置姿勢は、第1旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第1旋回歩容初期支持脚足平位置姿勢から、前記第1旋回歩容支持脚足平着地予定位置姿勢に至る足平位置姿勢軌道(より詳しくは次回歩容支持脚座標系から見た軌道)を、第1旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
第2旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端支持脚足平位置姿勢とされる。第2旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端遊脚足平位置姿勢とされる。
第2旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第2旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
第1旋回歩容および第2旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第1旋回歩容及び第2旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。尚、今回歩容、第1旋回歩容および第2旋回歩容の上記以外の運動パラメータ(両脚支持期時間などの時間パラメータを含む)は、上記決定されたパラメータに応じて、歩容の条件(アクチュエータの速度が許容範囲に入っているか、可動角を超えていないか、床などと干渉していないかなど)を満足するように適宜決定する。
次に、S102に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期(第1旋回歩容の初期)と終端(第2旋回歩容の終端)とでつながるように(定常歩容の初期、終端での基準上体姿勢の姿勢角及びその角速度が一致するように)に設定されている限り、一定姿勢である必要はないが、本第1参考例では理解を容易にするため、基準上体姿勢のうちの傾斜角(鉛直方向に対する傾斜角)に係わる姿勢は、直立姿勢(鉛直姿勢)に設定される。つまり、本第1参考例では、上体3の傾斜角に関する基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本第1参考例では、基準上体姿勢のうちの傾斜角の角速度及び角加速度は0である。基準上体姿勢のうちのヨー角軌道(以降、基準ヨー角軌道とも呼ぶ)θbzは、例えば一定角速度(定常歩容の平均旋回速度)の運動にすれば良い。あるいは、後述の基準逆位相腕振り軌道の例(図18)のようにサイン波状にしても良い。ただし、定常歩容を繰り返した時に基準ヨー角およびその角速度が連続となるように設定する。
尚、本第1参考例では、目標上体姿勢のうちのヨー角軌道(以降、目標ヨー角軌道とも呼ぶ)は、基準ヨー角軌道に一致させるものとする。
次に、S104に進み、基準腕姿勢軌道パラメータが決定される。具体的には、両腕体5,5の全体の重心位置(上体3に対する相対的な重心位置)、左右の手先(両腕体5,5の先端)の左右方向の間隔、および逆位相腕振り角に関するパラメータが決定される。基準逆位相腕振り角は、たとえば図17のように左旋回する場合には、図18のように設定すれば良い。図18のように、基準逆位相腕振り角θazrefは、定常歩容を繰り返した時に歩容の境界(第2旋回歩容の終端と次の第1旋回歩容の境界)において逆位相腕振り角および角速度が共に連続になり、かつ第1旋回歩容初期における支持脚と逆位相腕振り角の相対関係が、次の第1旋回歩容初期における支持脚と逆位相腕振り角の相対関係に一致するように設定される。すなわち、第1旋回歩容の初期逆位相腕振り角速度と第2旋回歩容の終端逆位相腕振り角速度が一致し、第2旋回歩容の終端逆位相腕振り角は、定常歩容の旋回角(第1旋回歩容と第2旋回歩容の旋回角の和)に第1旋回歩容初期逆位相腕振り角を加えた値に設定される。図18では基準逆位相腕振り角θazrefをサイン波状の波形としたが、一定角速度に設定しても良い。あるいは、支持脚のヨー角と遊脚のヨー角の平均の値としても良い。
尚、本第1参考例では、目標腕姿勢の両腕体5,5の全体の重心位置(上体3に対する相対位置)は、上体3に対して一定に維持されるように設定される。
次に、S106に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第1旋回歩容および第2旋回歩容のいずれにおいても図6のように実質的に連続な(値がステップ状に飛ばない)ものとなるように床反力鉛直成分軌道パラメータが設定される。すなわち、定常旋回歩容の目標床反力鉛直成分軌道は図19のようなパターンで設定される。そのパターンでは、第1旋回歩容及び第2旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が0に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ(ピーク値)が床反力鉛直成分軌道パラメータとして設定される。
この床反力鉛直成分軌道パラメータの設定に際しては、床反力鉛直成分の歩容全期間(第1旋回歩容と第2旋回歩容両方の期間を合わせた期間で定常歩容の1周期の期間)における平均値をロボット1の自重と一致させる。すなわち、床反力鉛直成分の平均値がロボット1に作用する重力と同じ大きさで反対向きになるようにする。
上記のごとく床反力鉛直成分軌道を設定することは、定常歩容の条件を満たすために必要である。定常歩容の条件とは、支持脚座標系(支持脚側足平22の接地面に設定された座標系)から見た歩容のあらゆる状態変数(ロボット1の各部の位置、姿勢、速度等)の初期状態(第1旋回歩容の初期状態)と次の支持脚座標系(次の第1旋回歩容の支持脚座標系)から見た歩容の終端状態(第2旋回歩容の終端状態)が一致していることである(以下、この条件を定常歩容の境界条件ということがある)。したがって、定常歩容終端におけるロボット1の全体重心鉛直速度と定常歩容初期における全体重心鉛直速度との差(詳細には、第2旋回歩容終端の全体重心鉛直速度と第1旋回歩容初期の全体重心鉛直速度との差)も零でなければならない。上記差は床反力鉛直成分と重力との差の積分値(1階積分値)であるから、上記差を零にするためには、上記のごとく床反力鉛直成分軌道を設定する必要がある。
尚、本第1参考例では、床反力鉛直成分の第1旋回歩容、第2旋回歩容それぞれの期間における平均値をロボット1の自重と一致させるようにした。より具体的には、例えば第1旋回歩容及び第2旋回歩容の歩容周期に応じて各旋回歩容における床反力鉛直成分軌道の台形部分の折れ点の時刻を設定した上で、その台形部分の高さを、床反力鉛直成分の第1旋回歩容、第2旋回歩容それぞれの期間における平均値がロボット1の自重と一致するように決定した(台形の高さを未知数として、上記平均値及び自重の一致条件を表す方程式を解くことで台形の高さを求める)。
こうすることにより、第1旋回歩容終端の全体重心鉛直速度と第1旋回歩容初期の全体重心鉛直速度との差も0、第2旋回歩容終端の全体重心鉛直速度と第2旋回歩容初期の全体重心鉛直速度との差も0になる。ただし、このようにする必然性はない。例えば、第1旋回歩容と第2旋回歩容との境界あたりで上体鉛直位置が高くなり過ぎたり低くなり過ぎたりして無理な姿勢になりそうな場合には、各旋回歩容で上記平均値及び自重を一致させた状態から各旋回歩容の床反力鉛直成分軌道の台形の高さ等を修正するようにしてもよい。
次に、S108に進み、上記のごとく図19のように設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fxmin,Fxmax](より詳しくはこれを規定するパラメータ)が図20のように設定される。図20の負側の折れ線が床反力水平成分許容下限値Fxmin、正側の折れ線が床反力水平成分許容上限値Fxmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力水平成分は、床と足平22との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット1が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平22との間の摩擦係数をμとすると、Fxminは、常に−μ*床反力鉛直成分以上に、Fxmaxはμ*床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、kaは1より小さい正の定数である。
Fxmin=−ka*μ*床反力鉛直成分
Fxmax= ka*μ*床反力鉛直成分
…式12
図20の床反力水平成分許容範囲は、式12にしたがって設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図20の台形波形などの折れ点での値と時刻を設定してもよいが、式12により床反力水平成分許容範囲を決定するときには、単に式12における(ka*μ)の値をパラメータとして設定するだけでも良い。
尚、上記条件(目標歩容の床反力水平成分を常に摩擦限界以内にするという条件)を満足しているならば、他の設定方法で床反力水平成分許容範囲を設定するようにしても構わない。
次に、S109に進み、上記のごとく図19のように設定された床反力鉛直成分軌道などに応じて、床反力モーメント鉛直成分の許容範囲[Mzmin,Mzmax](より詳しくはこれを規定するパラメータ)が図21のように設定される。図21の負側の折れ線が床反力モーメント鉛直成分許容下限値Mzmin、正側の折れ線が床反力モーメント鉛直成分許容上限値Mzmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力モーメント鉛直成分は、床と足平22との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット1が移動した時にスピンしないようにするためには、目標歩容の床反力モーメント鉛直成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力モーメント鉛直成分許容範囲を設定し、後述するように、目標歩容の床反力モーメント鉛直成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平22との間の摩擦係数をμ、モーメント鉛直成分を発生するための床と足平22との間の接触面の有効半径(あるいは床と足平22との間の接触面の目標ZMPまわりの断面2次モーメントの平方根)をrとすると、Mzminは、常に−μ*r*床反力鉛直成分以上に、Mzmaxはμ*r*床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、kaは1より小さい正の定数である。
Mzxmin=−ka*μ*r*床反力鉛直成分
Mzmax= ka*μ*r*床反力鉛直成分
…式1012
図21の床反力モーメント鉛直成分許容範囲は、式1012にしたがって設定した例である。床反力モーメント鉛直成分許容範囲を規定するパラメータとして、図21の台形波形などの折れ点での値と時刻を設定してもよいが、式1012により床反力モーメント鉛直成分許容範囲を決定するときには、単に式1012における(ka*μ)の値をパラメータとして設定するだけでも良い。rは、各瞬間において目標ZMPと接地面から算出するのが良いが、定数としても構わない。
尚、上記条件(目標歩容の床反力モーメント鉛直成分を常に摩擦限界以内にするという条件)を満足しているならば、他の設定方法で床反力モーメント鉛直成分許容範囲を設定するようにしても構わない。
さらには、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を独立に設定するのではなく、床反力水平成分と床反力鉛直成分モーメントの組み合わせの許容範囲を設定するようにしても良い。なぜなら、床反力水平成分が大きくなると、床反力モーメント鉛直成分の許容範囲が狭くなり、また、床反力モーメント鉛直成分が大きくなると、床反力水平成分の許容範囲が狭くなるからである。
次に、S110に進み、第1旋回歩容および第2旋回歩容を合わせた定常歩容のZMP軌道を規定するZMP軌道パラメータが設定される。この場合、目標ZMP軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。
さらに詳細には、図5の走行歩容においては、支持脚足平22のかかとで着地した後、しばらくして該支持脚足平22の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平22のつま先だけが接地する。そして、次に支持脚足平22のつま先で蹴って空中に飛び上がり、最後に遊脚足平22のかかとで着地する。また、目標ZMPは接地面内に存在しなければならない。そこで、本第1参考例では、定常歩容の第1旋回歩容及び第2旋回歩容のそれぞれの目標ZMPのX軸方向の位置は、前記図7の上段図に示したように、支持脚足平22のかかとを初期位置として、該足平22の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ZMPは支持脚足平22の中央に移動し、該足平22がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平22のつまさきに留まるように設定される。さらにその後は、目標ZMPは、前述のごとく、次の遊脚足平22の着地までに目標ZMPが、支持脚足平22のつまさきから遊脚足平22のかかとの着地位置まで連続的に移動するように設定される。したがって、第1旋回歩容と第2旋回歩容とから成る定常歩容の目標ZMP軌道(X軸方向の軌道)は、図22のようになる。そして、この目標ZMP軌道の折れ点の時刻及び位置がZMP軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第1旋回歩容及び第2旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系及び次次回歩容支持脚座標系の位置姿勢あるいはこれらの座標系を規定する要求パラメータの1歩目及び2歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。尚、ZMP軌道のY軸方向の位置は、前記図7の下段図に示したものと同様に設定される。より詳しくは、第1旋回歩容における目標ZMPのY軸方向位置の軌道は、図7の下段図のものと同一パターンで設定され、第2旋回歩容における目標ZMPのY軸方向位置の軌道は、第1旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。
次に、S112に進み、定常歩容1歩(1周期)の初期時刻、終端時刻、期間が以下のように再定義される。
定常歩容は、その初期と終端での状態変数が連続的につながる歩容でなければならない。このような歩容の決定を容易にするために、本第1参考例では、定常歩容を決定するまでは、前述の狭義の歩容の定義とは異なり、定常歩容の1歩の初期、終端、期間を便宜上、図19のように定める。すなわち、第1旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻を定常歩容の初期時刻Tsとして設定する。なお、初期時刻Tsは、図7に示すように、支持脚足平22の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前の時刻(図7の足底全面接地期間の終了時刻もしくはその直前の時刻)に設定するのが望ましい。また、S110において設定した図22(または図7)に示す目標ZMPと時刻Tsとの関係を説明すると、第1旋回歩容において支持脚足平22の底面のほぼ全面が接地した後に、目標ZMPが支持脚足平22の中央に移動し、つま先接地状態になるまでにつま先に移動を完了した瞬間が、時刻Tsとなっているのが望ましい。このような初期時刻Tsは例えば先に設定した目標ZMP軌道パラメータに応じて設定される。上記のごとく初期時刻Tsを設定する理由は後述する。
また、図19に示すように、定常歩容の周期Tcycは第1旋回歩容と第2旋回歩容の歩容周期の和である。定常歩容の終端時刻をTeとする。Teは、TsにTcycを加えた時刻に設定される。
定常歩容が決定された時点(後述の図23のS204のループを抜けた時点)から、改めて、歩容の初期、終端等の定義を、前述の狭義の歩容の定義に戻すこととする。以下の説明では、前述の狭義の歩容の定義による初期時刻(支持脚側足平22の着地当初の時刻)を0とし、定常歩容を決定するまで用いる上記初期時刻Tsを参照符号Tsを用いて(単に「Ts」と省略することもある)本来の初期時刻0と区別する。
最後にS114に進み、定常歩容の上体姿勢角・逆位相腕振り角復元期間[Tm,Ts2]および[Tm2,Te]を設定する。補足すると、定常歩容を繰り返した時に歩容の境界において上体姿勢角および逆位相腕振り角は連続であるべきである。そのためには、定常歩容の初期上体姿勢角速度と終端上体姿勢角速度が一致し、定常歩容の初期逆位相腕振り角速度と終端逆位相腕振り角速度が一致しなければならない。前記期間は、そのようにするための、上体姿勢角軌道と逆位相腕振り角軌道を調整する期間である。
具体的には、初期時刻Tsから第1旋回歩容の空中期を経て第2旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Tmが設定される。さらに、第2旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Ts2が設定される。さらに、第2旋回歩容の空中期を経て第1旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Tm2が設定される。
図19にこれらの時刻を示す。時刻Tmは、支持脚足平22の底面のほぼ全面が接地した瞬間あるいはその直後に設定するのが望ましい。時刻Tm2も同様である。また、時刻Ts2は、前記初期時刻Ts同様、足平22の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前に設定するのが望ましい。
また、前記図15のS110において設定した図22の目標ZMPとこれらの時刻Tm,Ts2,Tm2との関係を説明すると、第2旋回歩容において、目標ZMPが、支持脚足平22のかかとを初期位置として、該足平22の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平22の中央に移動し始める瞬間を時刻Tmとすることが望ましい。その後、支持脚足平22のつま先だけ接地した状態になるまでに、目標ZMPがつま先に移動を完了した瞬間を、時刻Ts2とすることが望ましい。さらに次の第1旋回歩容において、目標ZMPが、支持脚足平22のかかとを初期位置として該足平22の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平22の中央に移動し始める瞬間を時刻Tm2とすることが望ましい。
上記のごとく設定する理由は後述する。尚、上体姿勢角を復元(調整)する期間と逆位相腕振り角を復元(調整)する期間を別々に設定しても良い。
図13のS010からS022までに示す処理が行われた後、S024に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度(水平方向での初期上体位置及び初期上体速度)、初期上体鉛直位置速度(鉛直方向での初期上体位置及び初期上体速度)、初期発散成分、初期上体姿勢角、角速度、および初期逆位相腕振り角、角速度である。この初期状態の算出は、図23のフローチャートに従って、探索的に行なわれる。
図23のフローチャートにおいては、先ず、S200において、定常歩容の歩容パラメータ(前記図13のS022で設定したパラメータ)に基づいて、目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角(傾斜角とヨー角)の初期状態(初期時刻Tsでの状態)が決定される。ここで状態とは、位置や姿勢角とその変化率(時間微分)とを表す。
この場合、支持脚側の目標足平位置姿勢の初期状態は、前記図15のS100で決定した足平軌道パラメータの第1旋回歩容初期支持脚足平位置姿勢から、第2旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(次回歩容支持脚座標系から見た軌道)を時刻Tsまで有限時間整定フィルタにより生成することにより決定される。遊脚側の目標足平位置姿勢の初期状態は、次回歩容支持脚座標系から見た今回歩容初期支持脚足平位置姿勢から、第1旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道を時刻Tsまで有限時間整定フィルタにより生成することにより決定される。また、目標腕姿勢の初期状態は、図15のS104で決定した基準腕姿勢軌道パラメータに基づいて求められる時刻Tsにおける基準腕姿勢に決定される。より具体的には、目標腕姿勢の両腕体5,5の全体重心位置(上体3に対する相対位置)、左右の手先(両腕体5,5の先端部)の左右方向の間隔および逆位相,腕振り角・角速度が決定される。但し、逆位相腕振り角・角速度は、後述するように、定常歩容を繰り返した時に歩容の境界で連続するように修正されるので、ここではまだ仮に決定されただけである。
また、目標上体姿勢角の初期状態は、図15のS102で決定した基準上体姿勢軌道パラメータにより定まる時刻Tsにおける基準上体姿勢(傾斜角およびヨー角)及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本第1参考例では、上体3の傾斜角に係る基準上体姿勢は鉛直姿勢であるので、目標上体姿勢のうちの傾斜角の初期状態(傾斜角及びその角速度)は0である。
また、本第1参考例では、定常歩容の目標足平位置姿勢軌道、床反力鉛直成分軌道、及び目標ZMP軌道は、それぞれ、図15のフローチャートで決定した足平軌道パラメータ、床反力鉛直成分軌道パラメータ、ZMP軌道パラメータにより互いに独立的に決定される。例えば定常歩容の瞬時瞬時の目標足平位置姿勢は、床反力鉛直成分の瞬時値に依存することなく足平軌道パラメータに応じて決定される。
次いでS202において初期上体水平位置速度の候補(すなわち初期時刻Tsでの上体水平位置速度候補)である(Xs,Vxs)(Xs:水平位置、Vxs:水平速度)が仮決めされる。ここで仮決めする候補(Xs,Vxs)は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度を仮決め候補(Xs,Vxs)とすればよい。
尚、説明を簡略にするため、サジタルプレーン上でX方向(前後方向)での定常歩容の初期状態を探索する場合を例にとるが、実際には位置・速度ともX方向(前後方向),Y方向(左右方向)を別々にあるいは同時に定常歩容の初期状態(定常歩容の前記境界条件を満たす初期状態)を探索する必要がある。
補足すると、サジタルプレーン上では、ヨー回転やモーメント鉛直成分など鉛直軸まわりに関する概念は存在しないので、少なくともヨー回転やモーメント鉛直成分に関しては、3次元空間で演算される。
探索的な決定手法としては、擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。本実施例では、最急降下法を用いる。
次いで、S204を経てS206において、定常歩容を繰り返した時に上体鉛直位置速度が連続になり、かつ、膝等の関節角が伸び過ぎたり縮み過ぎたりしないように、初期(時刻Ts)上体鉛直位置速度(Zs,Vzs)(Zs:鉛直位置、Vzs:鉛直速度)が、決定される。これについての詳細は、例えば本願出願人が先に出願したPCT/JP02/13592に記載されているので、ここでは省略する。
S206の処理の後、次いでS208に進み、定常旋回歩容が仮に生成される(この仮生成される定常旋回歩容を以降、仮歩容ということがある)。より具体的には、前記図13のS022で決定した定常歩容の歩容パラメータを基に、初期時刻Tsから終端時刻Teまでの各瞬間における目標ZMP、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲が逐次求められる。そして、求めた目標ZMPと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル(図12のモデル)を用いて、前記上体水平位置速度(Xs,Vxs)、上体鉛直位置速度(Zs,Vzs)を上体3の初期(時刻Ts)状態として、上体位置姿勢を逐次決定することによって、時刻Tsから終端時刻Teまでの歩容を生成する。また、この時、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
また、床反力モーメント鉛直成分に関する条件、すなわち、床反力モーメント鉛直成分許容範囲を満足するように、逆位相腕振り動作が決定される。
尚、この定常歩容の歩容生成は歩容生成装置100の内部で行われるだけであって、実際のロボット1を駆動するための目標値として、後述する複合コンプライアンス動作決定部104に出力されることはない。
以下に、S208の処理である逐次演算による定常歩容生成処理の詳細を説明する。
図24はその処理を示すサブルーチンフローチャートである。
以下説明すると、S300において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻kに初期時刻Tsを代入する。さらに、上体水平位置速度に、現在仮決定されている(Xs,Vxs)(図23のS202もしくは後述のS216もしくはS218で決定されたもの)が代入され、上体鉛直位置速度に、前記S206で求めた最新の(Zs,Vzs)が代入される。また、上体姿勢角には、基準上体姿勢角初期値(初期時刻Tsでの角度)が代入され、上体姿勢角速度には、基準上体上体姿勢角速度初期値(初期時刻Tsでの角速度)が代入される。
逆位相腕振り角には、基準初期逆位相腕振り角(初期時刻Tsでの角度)逆位相腕振り角速度には、基準初期逆位相腕振り角速度(初期時刻Tsでの角速度)が代入される。
次いで、S302を経てS304において、仮歩容生成用時刻kが歩容終端時刻以前であるか否か(k≦Ts+Tcycであるか否か)が判断され、その判断結果がYESである場合には、S306の歩容瞬時値決定サブルーチンに進み、歩容瞬時値が決定される。次いで歩容生成装置100の処理は、S308に進み、仮歩容生成用時刻kをΔkだけ増やした後、S304に戻る。
ここで、Δkは、仮歩容生成のインターバルであり、通常、制御周期Δtと一致させておけば良い。なお、Δkは、仮歩容の動力学的精度を落としても良いならば、演算量を低減するために、ΔkをΔtよりも長く設定しても良い。
S304の判断結果がNOである場合には、S310に進む。以上の処理により、S310に進むまでに定常歩容(仮歩容)が初期から終端まで生成される。
以下に、S306の歩容瞬時値決定サブルーチンの詳細を図25を参照して説明する。
まず図25のS400において、定常歩容パラメータ(床反力鉛直成分軌道パラメータ)を基に、前記図19に示した目標床反力鉛直成分の時刻kにおける値(今回値)が求められる。さらに、S402において、定常歩容パラメータ(ZMP軌道パラメータ)を基に、前記図22に示した目標ZMP軌道の時刻kにおける値(今回値)が求められる。
次いでS404に進み、定常歩容パラメータ(足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ)を基に、時刻kにおける目標両足平位置姿勢(支持脚側及び遊脚側の両者の目標足平位置姿勢)、基準上体姿勢および基準腕姿勢の値(今回値)が求められる。基準腕姿勢に関しては、具体的には、両腕体5,5の全体重心位置(上体3に対する相対位置)、左右の手先(両腕体5,5の先端部)の左右方向の間隔および逆位相腕振り角の値(今回値)が求められる。
尚、目標足平位置姿勢の今回値(時刻kでの値)は、前記図23のS200で初期時刻Tsでの足平位置姿勢を求めた場合と同様に求められる。
次いでS406に進み、目標床反力鉛直成分を満足する(ロボット1の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ような時刻kにおける全体重心鉛直位置速度の値(今回値)が算出される。具体的には、例えば前記図12の動力学モデルに係わる前記式01と式04とに基づいて、全体重心鉛直位置速度が算出される。すなわち、式01と式04とによれば、ロボット1の運動による全体重心鉛直加速度と重力加速度との和にロボット1の全体質量を乗算したものが床反力鉛直成分に等しいという関係式(ロボット1の全体重心の鉛直方向に関する運動方程式)が得られる。従って、この関係式と目標床反力鉛直成分とから、全体重心鉛直加速度が求められる。
尚、この関係式自体は、ロボット1のモデルに依存することなく一般的に成立するものである。そして、この求めた全体重心鉛直加速度を積分することにより、全体重心鉛直速度が算出され、さらにその全体重心鉛直速度を積分することにより、全体重心鉛直位置が算出される。これらの算出は、より一般的には、次式15および式16で表される動力学関係式(ニュートンの運動方程式を離散化した式)を用いて行なわれる。
時刻kにおける全体重心鉛直速度
=時刻(k−Δk)における全体重心鉛直速度
+((床反力鉛直成分/ロボットの全体質量)+重力加速度)*Δk
(ただし、重力加速度は負の値とする。)
…式15
時刻kにおける全体重心鉛直位置
=時刻(k−Δk)における全体重心鉛直位置
+時刻kにおける全体重心鉛直速度*Δk
…式16
次いでS408に進み、全体重心鉛直位置を満足する上体鉛直位置が算出される。具体的には、例えば前記図12のモデルに係わる式04を用いて上体鉛直位置が算出される。すなわち、支持脚側及び遊脚側の目標足平位置姿勢の今回値から、図12のモデルの支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。そして、これらの求めた支持脚質点2m及び遊脚質点2mの鉛直位置と、S407で求めた全体重心鉛直位置の今回値とを式04に適用することで、上体質点3mの鉛直位置が求められる。さらに、この求めた上体質点3mの鉛直位置と目標上体姿勢角の現在値(S404で設定された基準上体姿勢角または後述のS414で決定された前回(時刻k−Δk)の目標上体姿勢角)とから上体鉛直位置が求められる。
次いでS410に進み、前記図15のS108で決定した歩容パラメータ(床反力水平成分許容範囲を規定するパラメータ)に基づいて、図20に示した床反力水平成分許容範囲[Fxmin,Fxmax]の時刻kにおける値(今回値)が求められる。
次いでS411に進み、前記図15のS109で決定した歩容パラメータ(床反力モーメント鉛直成分許容範囲を規定するパラメータ)に基づいて、図21に示した床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]の時刻kにおける値(今回値)が求められる。
次いでS412に進み、目標ZMPに関する動力学的平衡条件(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が0であるという条件)を満足するように、目標上体水平加速度と目標上体姿勢加速度との今回値が決定される。ただし、床反力水平成分Fxが[Fxmin,Fxmax]を越えないように、上体水平加速度と上体姿勢角加速度(より詳しくは、上体傾斜角加速度)とが決定される。また、床反力モーメント鉛直成分Mzが[Mzmin,Mzmax]を越えないように、目標逆位相腕振り角加速度の今回値が決定される。
尚、上体姿勢角のうち、ヨー角は基準上体姿勢角のうちのヨー角に一致するように決定される。また、目標腕姿勢に関しては、逆位相腕振り角以外の成分は、基準腕姿勢に一致するように決定される。また、この際、上記条件を満足しつつも、目標上体傾斜角と目標逆位相腕振り角とは、それぞれ基準上体傾斜角と基準逆位相腕振り角とになるべく追従するように決定される。以下にこの詳細を説明する。
この時点において、前記の如く足平位置姿勢および上体鉛直位置の瞬時値(今回値)が決定されており、また、腕姿勢に関して、逆位相腕振り角以外の成分は、基準腕姿勢のそれに一致するように決定されている。このため、残りの上体水平位置と上体姿勢角と逆位相腕振り角とを決定すれば、ロボット1の目標運動は一義的に決定できる。したがって、すべての床反力も一義的に決定される。なお、本第1参考例では、定常歩容の目標床反力鉛直成分及び目標ZMPは、それぞれ前記図13のS022で決定した床反力鉛直成分軌道パラメータ及び目標ZMP軌道パラメータによって規定される。
ところで、歩容生成において、前記上体並進モードをあまり用いずに主に上体傾斜モードを用いることにより、目標ZMPを満足させる(目標ZMPまわりの床反力モーメントの水平成分を0にする)と、上体姿勢角が大きく振れ過ぎてしまう恐れがある。したがって、これを防ぐためには、なるべく上体並進モードを用いるべきである。しかし、上体並進モードは、床反力水平成分の変化を伴うので、床反力水平成分許容範囲が狭い場合には、上体並進モードを強く働かせるとスリップする恐れがある。この場合には、上体傾斜モードに頼るしかない。特に、前記走行歩容のように床反力水平成分許容範囲が0となる期間では、床反力水平成分を発生させるような歩容を生成することはできないので、上体傾斜モードに頼らざるを得ない。
一方、逆位相腕振り運動は、目標ZMPまわりの床反力モーメントの水平成分および床反力水平成分のいずれも変化させることなく、床反力モーメント鉛直成分のみを変化させることができるので、床反力モーメント鉛直成分が前記床反力モーメント鉛直成分許容範囲を越えないようにするために用いることができる。以上のことを考慮し、本第1参考例では、図26に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度と逆位相腕振り加速度とが決定される。尚、理解の便宜上、上体水平加速度と上体姿勢角加速度(上体3の傾斜角の角加速度)の決定に関しては、サジタルプレーン上でX方向(前後方向)での上体水平加速度および上体姿勢角加速度を決定する場合を例にとって説明するが、実際にはY方向(左右方向)の上体水平加速度および上体姿勢角加速度もX方向と同様に決定される。
まずS500において、目標上体ヨー角に時刻kでの基準上体ヨー角の値を代入する。また、腕姿勢の逆位相腕振り角・角速度成分を除き、目標腕姿勢に時刻kでの基準腕姿勢の値を代入する。
次にS502において現在時刻(定常歩容作成用タイマーの値)kが、上体姿勢角・逆位相腕振り角復元期間(定常歩容の場合、上体姿勢角・逆位相腕振り角復元期間は、時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間である。)の間にあるか否かが判定される。S502の判定結果がNOであるならば、S504に進み、YESであるならばS530に進む。
S504では、ロボット1の前回瞬時歩容状態(時刻k−1の歩容状態)から、仮に、上体傾斜モードの角加速度を0にして、上体並進モードの運動をロボット1にさせた場合に今回(時刻k)の目標ZMPを満足するために必要な上体水平加速度αtmpが求められる。このαtmpは、例えば前記図12の動力学モデルに係わる前記式03yを用いて求められる。より具体的には、例えば、現在時刻kまでに求められた目標足平位置姿勢の時系列値を用いて、現在時刻kにおける支持脚質点2m及び遊脚質点2mの鉛直加速度が求められると共に、現在時刻k(今回)の目標足平位置姿勢を用いて支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。また、現在時刻k(今回)の床反力鉛直位置を用いて上体質点3mの鉛直位置が求められると共に、現在時刻kまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻kにおける上体質点3mの鉛直加速度が求められる。そして、これらの求めた値を前記式03yに代入すると共に、同式03yのMy、d2θby/dt2を0にしてなる式を、d2Xb/dt2について解くことにより、上体質点水平加速度が上体水平加速度αtmpとして求められる。尚、より厳密な動力学モデルを用いて、目標ZMP回りの床反力モーメントの水平成分を零にするような上体水平加速度αtmpを探索的に求めるようにしてもよい。また、本第1参考例では、上体3の傾斜角に関する基準上体姿勢が鉛直姿勢で、該基準上体姿勢による上体姿勢角加速度(上体3の傾斜角の角加速度)が0であるため、上体傾斜モードの角加速度を0にして上体水平加速度αtmpを求めるようにした。但し、基準上体姿勢のうちの傾斜角が変化するように該基準上体姿勢軌道パラメータを設定した場合で、それにより定まる現在時刻kにおける基準上体姿勢角加速度(上体3の傾斜角の基準角加速度)が0でない場合には、上体傾斜モードの角加速度をその0でない基準上体姿勢角加速度の値にして、上体水平加速度αtmpを動力学モデルを用いて求める(例えば式03yのd2θby/dt2を0でない基準上体姿勢角加速度に設定して上記と同様に上体水平加速度αtmpを求める)ようにすればよい。
次に、S506に進み、上体水平加速度がαtmpの場合の時刻kにおける床反力水平成分Fxtmpが動力学モデルを用いて求められる。本第1参考例においては、前記動力学モデルの式02xを用いてFxtmpが求められる。すなわち、次式17によってFxtmpが求められる。但し、d2Xsup/dt2およびd2Xswg/dt2はそれぞれ時刻kにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。
Figure 2005000536
このようにして求められるFxtmpの例を図27に示す。図27に、Fxtmpが床反力水平成分許容範囲[Fxmin,Fxmax]を越えている部分を斜線で示す。
次に、S508に進み、上体並進モードの上体水平加速度α、これによって発生する床反力水平成分Fx、上体傾斜モードの上体角加速度βが次のように決定される(S508〜S516)。
すなわち、
Fxtmp>Fxmaxならば、S510に進み、次式によりFxが決定される。
Fx=Fxmax …式18
Fxtmp<Fxminならば、S512に進み、次式によりFxが決定される。
Fx=Fxmin …式19
それ以外、すなわち、Fxtmpが、床反力水平成分許容範囲[Fxmin,Fxmax]内に存するならば、S514に進み、次式によりFxが決定される。
Fx=Fxtmp …式20
いずれの場合においても、次いでS516に進み、次式により上体水平加速度α、上体姿勢角加速度(上体傾斜角加速度)βが決定される。
α=αtmp+(Fx−Fxtmp)/ΔFp …式21
β=(αtmp−α)*ΔMp/ΔMr …式22
ただし、ΔFp、ΔMpおよびΔMrはそれぞれ前記式06、07、および式09により決定される。
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体角加速度βを求めた後、上体並進モードと上記求めた上体角加速度βの上体傾斜モードとを合成した運動が目標ZMPを満足するように、上体並進モードの上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン(感度マトリックス)を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
さらに床反力水平成分Fxが床反力水平成分許容範囲[Fxmin,Fxmax]を厳密に越えないようにするために、S510においては、Fx=Fxmaxかつ目標ZMPまわりの床反力モーメントの水平成分が0になるように、S512においては、Fx=Fxminかつ目標ZMPまわりの床反力モーメントの水平成分が0になるように、上体水平加速度αと上体角加速度βとの組を探索的に求めても良い。
上記のように求められるFxを図28に示す。Fxは、Fxtmpの値を床反力水平成分許容範囲[Fxmin,Fxmax]から越えないように制限(飽和)させたものになっている。より詳しくは、上体並進モードのみによる上体水平加速度αtmpに応じたFxtmpが許容範囲[Fxmin,Fxmax]内にある場合には、FxtmpがそのままFxとなる。また、上体並進モードのみによる上体水平加速度αtmpに応じたFxtmpが許容範囲[Fxmin,Fxmax]の上限を超え、もしくは下限を下回った場合には、それぞれFxは、それぞれ強制的にFxmax、Fxminに制限される。特に走行歩容の空中期では、常に、Fxmax=Fxmin=0であるので、Fx=0となる。
また、上記のように求められる上体姿勢角加速度βを図29に示す。上体並進モードによって発生するFxが許容範囲[Fxmin,Fxmax]を越えないように、上体並進モードの加速度を制限したことによって不足した床反力モーメント(より詳しくは目標ZMP回りの床反力モーメントの水平成分を0にする上で必要な慣性力モーメントから、制限した上体水平運動と両脚体2,2の運動とによるモーメント成分を差し引いたモーメント)を、上体傾斜モードで補ったことになる。なお、走行歩容の空中期では、上体並進モードによる上体水平加速度αは常に0に制限されることとなるので、上体傾斜モードによる上体姿勢角加速度βのみによって、上記不足分の床反力モーメントが補われることとなる。
次に、S518に進み、仮に上体並進モードの上体水平加速度がα、上体傾斜モードの上体角加速度(上体傾斜角加速度)がβ、上体ヨー回転モードの上体加速度(上体ヨー角加速度)が基準ヨー角加速度d2θbzref/dt2、逆位相腕振り角加速度βaが基準逆位相腕振り角加速度d2θazref/dt2である運動をさせた場合の床反力モーメント鉛直成分Mztmpを求める。以降、d2θbzref/dt2をβbref、d2θazref/dt2をβarefとする。
具体的には、式03zに、式1001から式1004を代入することによって得られるMzがMztmpである。
d2Xb/dt2=αx …式1001
d2Yb/dt2=αy …式1002
d2θbz/dt2=βbref …式1003
d2θaz/dt2=βaref …式1004
ただし、αxは、上体水平加速度αのX成分、αyは、上体水平加速度αのY成分を表す。また、Xb、Ybには時刻k−1における上体水平位置を代入し、Xzmp、Yzmp、Xsup、d2Ysup/dt2、Xswg、d2Yswg/dt2には、時刻kの値を代入するものとする。
このようにして求められるMztmpの例を図32に示す。図32に、Mztmpが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を越えている部分を斜線で示す。
次に、S520に進み、逆位相腕振り角加速度βaが次のように決定される(S520〜S528)。
すなわち、
Mztmp>Mzmaxならば、S522に進み、次式によりMzが決定される。
Mz=Mzmax …式1018
Mztmp<Mzminならば、S524に進み、次式によりMzが決定される。
Mz=Mzmin …式1019
それ以外、すなわち、Mztmpが、床反力水平成分許容範囲[Mzmin,Mzmax]内に存するならば、S526に進み、次式によりMzが決定される。
Mz=Mztmp …式1020
いずれの場合においても、次いでS528に進み、次式により逆位相腕振り角加速度βaが決定される。
βa=βaref+(Mztmp−Mz)/ΔMaz …式1021
ただし、ΔMazは式09aにより決定される。
以下にS518からS528までの処理を解説する。
上記のように求められるMzは、逆位相腕振りを含めたロボット全体の運動による床反力モーメント鉛直成分を示している。
上記処理では、このMzが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を越えないように逆位相腕振り角加速度βaが決定されている。具体的には、Mzは、図33に示すように、Mztmpの値を床反力水平成分許容範囲[Mzmin,Mzmax]から越えないように制限(飽和)させたものに決定されている。より詳しくは、Mztmpが許容範囲[Mzmin,Mzmax]内にある場合には、MztmpがそのままMzとなり、Mztmpが許容範囲[Mzmin,Mzmax]の上限を越え、もしくは下限を下回った場合には、それぞれMzは、それぞれ強制的にMzmax、Mzminに制限される。特に走行歩容の空中期では、常に、Mzmax=Mzmin=0であるので、Mz=0となる。
Mzが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を越えないようにするために、逆位相腕振りによって発生すべきモーメント鉛直成分Mazは、(Mz−Mztmp)である。Maz(=Mz−Mztmp)を図34に示す。
逆位相腕振り角加速度βaは、Mazを逆位相腕振りの等価慣性モーメントΔMazで割ったものを基準逆位相腕振り角加速度βaref(基準逆位相腕振り角を2階微分した値)に加えることによって得られる。すなわち、βaは前記式1021で求められる。逆位相腕振り角加速度βaを図35に示す。
以上のごとくS504からS528までの処理では、逆位相腕振りを含めたロボット全体の運動によって発生する床反力モーメント鉛直成分Mzが許容範囲[Mzmin,Mzmax]を越えないように(逆位相腕振り角加速度を基準逆位相腕振り角加速度βarefに一致させた場合に発生する床反力モーメント鉛直成分Mztmpが許容範囲を越えた分を打ち消す(キャンセルする)ように)、逆位相腕振り角加速度βaが決定される。
補足すると、床反力モーメント鉛直成分Mzが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を厳密に越えないようにするために、S504からS528までの処理の代わりに、逆位相腕振り角加速度βaを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン(感度マトリックス)を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
以上が、時刻kが上体姿勢角・逆位相腕振り角復元期間の間にない場合の処理である。
S502の判定結果がYESである場合には以下の処理が行われる。まず、S530に進み、ロボット1の前回瞬時歩容状態(時刻k−1の歩容状態)から、上体傾斜モードの角加速度を0にして、上体並進モードの運動をロボット1にさせた場合に今回(時刻k)の目標ZMPを満足するために必要な上体水平加速度αが求め、これを最終的な上体水平加速度と決定する。
次に、S532に進み、上記場合に床反力水平成分Fxを求める。
次に、S534に進み、上体姿勢角加速度(上体傾斜角加速度)βを0に決定する。なお、上体ヨー角加速度は、基準上体ヨー角加速度βbref(基準上体ヨー角を2階微分した値)に決定される。
次いで最後に、S536に進み、逆位相腕振り角加速度βaに、基準逆位相腕振り角加速度βaref(基準逆位相腕振り角を2階微分した値)を代入する。
以上が、S502の判定結果がYESである場合の処理である。すなわち、この場合には、上体姿勢角加速度(上体傾斜角加速度および上体ヨー角加速度)を基準上体姿勢角加速度に、逆位相腕振り角加速度を基準逆位相腕振り角加速度に一致させる。このようにしても運動によって発生する床反力が、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれも越えないと予想されているので、このように決定しても問題ない。
S528またはS536の処理の後、図25のS414に進み、S412で求めた上体水平加速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより上体水平速度が求められ、さらにその上体水平速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより、上体水平位置(今回値)が求められる。また、S412で求めた上体姿勢角加速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより上体姿勢角速度が求められ、さらにその上体姿勢角速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより、上体姿勢角(今回値)が求められる。
次にS416に進み、S412で求めた逆位相腕振り加速度βaを逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより逆位相腕振り速度が求められ、さらにこれを逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより、逆位相腕振り角θaz(今回値)が求められる。
以上のごとく図24のS306の定常歩容瞬時値決定サブルーチンが実行された後、S308に進み、歩容生成用時刻kの値が歩容生成インターバルΔkだけ増加される。次いでS304に戻り、S304に示す条件が成立している限り、S306とS308の処理が繰り返され、S304に示す条件が成立しなくなったら、すなわち終端(時刻Te=Ts+Tcyc)まで仮歩容の生成が完了したら、S310に進む。
定常歩容では、それを繰り返したときに境界でロボット1の運動状態が不連続にならないように、初期上体姿勢角及びその角速度を決定する必要がある。
そのために、S310では、上体姿勢角速度を、時刻Teまでに、初期値(時刻Tsでの値)に戻すための上体姿勢角加速度を発生させる床反力モーメントのZMP換算値(以降、上体姿勢復元モーメントZMP換算値と呼び、ZMPrecと略す)のパターンを設定する。
これについて以下に詳細に説明する。
上体姿勢角・逆位相腕振り角復元期間(時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間)に、上体傾斜モードを用いて上体姿勢角加速度を発生させることにより、上体姿勢角速度を初期値(時刻Tsでの値)に戻すことを考える。このための上体姿勢角加速度パターンを、β(k)とする。なお、上記期間以外では、β(k)=0とする。
上体傾斜モードでは、上体姿勢角加速度β(k)を発生させようとすると、床反力モーメントβ(k)*ΔMrが発生する。この結果、その瞬間における床反力鉛直成分がFz(k)であるとすると、(目標ZMPでなく)運動から算出されるZMP(k)は、次式で求められるΔZMPだけずれる。
ΔZMP(k)=−β(k)*ΔMr/Fz(k) …式23
したがって、ΔMrのパターンとFz(k)のパターンが決まっていれば(既知であれば)、ΔZMP(k)のパターンを適当に設定することによって、式23を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を初期値(時刻Tsでの値)、すなわち基準上体姿勢軌道の初期(時刻Ts)状態における上体姿勢角速度に戻すことができる。
前記上体姿勢復元モーメントZMP換算値(ZMPrec)は、そのように適切に設定されたΔZMP(k)を意味する。前記式23を用いて上体姿勢復元モーメントZMP換算値を設定する際に、ΔMrは厳密には変動するが、近似的に一定値としても良い。定常歩容は仮に生成されるだけであり、実際のロボットをこの歩容に追従させるわけではないので、定常歩容の動力学的精度はあまり高くなくても良いからである。
図30にZMPrecの一例を示す。図30では、ZMPrecのパターンとして、時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間に台形パターンが形成されている。その台形部の折れ点の時刻は、時刻Tmと時刻Ts2との間の期間および時刻Tm2からTeまでの期間における目標ZMPパターンの折れ点の時刻(図22参照)に一致させてある。これは、後述するが、今回歩容の目標ZMPパターンの修正が簡単になるからである。
式23のΔZMP(k)にZMPrec(k)を代入することにより次式が得られる。
β(k)=−ZMPrec(k)*Fz(k)/ΔMr …式24
したがって、この式24で求められるβ(k)は、図31の実線で示すようになる。なお、図31の点線で示すものは、時刻Tsから時刻Tmまでの期間および時刻Tm2からTeまでの期間の上体姿勢角加速度(図29の実線示のもの)である。(以降、時刻kでの値であることが明らかな場合には、(k)を省略する場合がある。)
初期(時刻Ts)上体姿勢角は、初期(時刻Ts)基準上体姿勢角に一致させる。
また、初期上体姿勢角速度は、式37a、37bを満たすように決定する。
終端上体姿勢角−初期上体姿勢角
=床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の2階積分
+ZMPrecによって発生する上体姿勢角加速度の2階積分
+初期上体姿勢角速度*定常歩容の周期
……式37a
終端上体姿勢角速度−初期上体姿勢角速度
=床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の1階積分
+ZMPrecによって発生する上体姿勢角加速度の1階積分
……式37b
なお、式37a、37bのそれぞれの右辺第1項の積分期間は、時刻TsからTmまでの期間と、Ts2からTm2までの期間とを合わせた期間であり、右辺第2項の積分期間は、時刻TmからTs2までの期間とTm2からTeまでの期間とを合わせた期間である。
より具体的に説明すると定常歩容では、第1旋回歩容の支持脚座標系(次回歩容支持客座標系)から見た初期状態姿勢角及び角速度が、それぞれ、次の第1旋回歩容の支持脚座標系(次次次回歩容支持脚座標系)から見た終端上体姿勢角および角速度に一致していなければならない。そこで、本第1参考例では、初期(時刻Ts)上体姿勢角は、初期(時刻Ts)基準上体姿勢角の値に決定し、これと、これを定常歩容におけるロボット1のトータルの旋回角(鉛直軸回りの旋回角)に応じたマトリクス(回転座標変換のマトリクス)により次回歩容支持脚座標系から見た値に座標変換したものとをそれぞれ式37aの左辺の初期上体姿勢角、終端上体姿勢角に代入する。また、式37a,37bのそれぞれの右辺第1項の積分に係る上体姿勢角加速度は、前記図26のS518で求められたものが用いられる。
そして、式37a,37bの初期上体姿勢角速度と、式37a,37bの右辺第2項の積分に係るZMPrec(図30の台形状のパターン)の台形高さをと未知数として(但し、ZMPrecの台形パターンの折れ点の時刻は前記のごとくあらかじめ定める。また、第1旋回歩容のZMPrecの台形高さacyc1と第2旋回歩容のZMPrecの台形高さacyc2を同一値とする。)、それらの未知数を含む式37a,37bの連立方程式を解くことにより求められる初期上体姿勢角速度を新たな初期上体姿勢角速度として決定する。この場合、式37bの終端上体姿勢角速度は、未知数である初期上体姿勢角速度を、定常歩容の上記トータルの旋回角に応じたマトリクスにより次回支持脚座標系から見た値に座標変換したものである。
次いでS312に進み、上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを基に、これによる上体水平位置・速度への影響量を求め、終端上体水平位置・速度に加算する。
この処理について解説する。なお、その詳細は、本願出願人のPCT/JP02/13592にて説明されているので、ここでは簡略な説明に留める。
時刻TsからTmの期間および時刻Ts2からTeの期間において、上記のごとく上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生するように上体姿勢角加速度βを変化させると、上体姿勢角加速度βは、次式のようになる。
β=−ZMPrec*Fz/ΔMr …式1025
上体傾斜復元モーメントを発生させない場合に目標ZMPを満足する上体水平加速度は、S532において求めたごとくαtmpであるが、上記のごとく上体姿勢角加速度βを変化させると、目標ZMPを満足するために必要な上体水平加速度αは、次式のようになる。
α=αtmp−(ΔMr/ΔMp)*β …式1026
式1025および1026より、
α=αtmp+ZMPrec*Fz/ΔMp …式1027
すなわち、上体傾斜復元モーメントZMP換算値(ZMPrec)によって、加速度が式1027の右辺第2項分だけ増加する。
式が線形であることを利用すると、上記のごとく上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平速度は、上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生させなかった場合の終端上体水平速度、すなわちS414で求めた上体水平速度の終端値に、時刻TsからTeまでの(ZMPrec*Fz/ΔMp)の1階積分を加算したものとして求められる。また、上記のごとく上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平位置は、上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生させなかった場合の終端上体水平位置、すなわちS414で求めた上体水平位置の終端値に、時刻TsからTeまでの(ZMPrec*Fz/ΔMp)の2階積分を加算したものとして求められる。
S312の処理を完了した後、S314に進み、逆位相腕振り角速度が初期と終端で一致するように逆位相腕振り復元角加速度(βarec)パターンを決定する。
具体的には、逆位相腕振り復元角加速度パターンを図36のように台形状に設定し、時刻TmからTs2までの期間の台形高さazcyc2と時刻Tm2からTeまでの期間の台形高さazcyc1を同一とし、時刻TsからTeまでのβarecの積分値と床反力モーメント鉛直成分Mzが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βaの積分値との和が0となるように台形高さazcyc1、azcyc2を決定する。なお、両区間の台形高さは、同一でなくても構わない。
補足すると、このように決定した逆位相腕振り復元角加速度パターンによって発生する床反力モーメント鉛直成分(Mazrec)は、図37のようになる。したがって、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分Mzは、最終的には、図38に示すごとく、図32のMztmpと図34のMazと図37のMazrecとの和、すなわち、図33のMzと図37のMazrecとの和になる。時刻TmからTs2までの期間および時刻Tm2からTeまでの期間においては、台形状の復元モーメントが加算されるが、これらの期間は、許容範囲が十分に広い期間に設定されているので、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分は、許容範囲を越えることはない。
次にS316に進み、定常歩容の初期(時刻Ts)逆位相腕振り角および角速度を決定する。
具体的には、初期逆位相腕振り角速度は、以下の式によって決定する。
初期逆位相腕振り角速度
=基準初期逆位相腕振り角速度
−(βarecが0の場合の逆位相腕振り角
+βarecパターンの2階積分)/Tcyc
…式1030
ただし、上式において、βarecが0の場合の逆位相腕振り角とは、S416において求めた逆位相腕振り角(時刻Teにおける逆位相腕振り角)のことである。また、βareeの2階積分とは、図36のように設定した逆位相腕振り復元角加速度の時刻TsからTeまでの2階積分値である。また、基準初期逆位相腕振り角速度は前記基準逆位相腕振り角速度(基準逆位相腕振り角θarefの1階微分値)の時刻Tsでの値である。
初期逆位相腕振り角は、基準初期逆位相腕振り角に一致させれば良い。または、最終的に決定された逆位相腕振り角加速度(すなわち、床反力モーメント鉛直成分Mzが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βaと復元角加速度βarecの和)と上記求めた初期逆位相腕振り角速度を基に、仮に初期逆位相腕振り角を基準初期逆位相腕振り角に一致させた場合に算出される腕振り角と基準逆位相腕振り角との差の平均値または前記差の最大値と最小値の平均値を求め、求めた平均値の2分の1を基準初期逆位相腕振り角から減じた値を最終的な初期逆位相腕振り角として決定しても良い。このようにすることで、算出される腕振り角と基準逆位相腕振り角との差の絶対値が大きくなり過ぎることを防止することができる。
時刻Ts、Tm、Ts2およびTm2を前記のごとく設定した理由のひとつは、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいて、上体姿勢角速度を基準上体姿勢軌道の初期角速度に戻すように上体姿勢角加速度βを発生させても、床反力水平成分Fxが許容範囲[Fxmin,Fxmax]を越えないようにするためである。換言すれば、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ZMPを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを発生させても、床反力水平成分Fxは、許容範囲を越えることがない。
また時刻Ts、Tm、Ts2およびTm2を前記のごとく設定したもうひとつの理由は、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいて、逆位相腕振り角速度を基準逆位相腕振り角軌道の初期角速度に戻すように逆位相腕振り角加速度βaを発生させても、床反力モーメント鉛直成分Mzが許容範囲[Mzmin,Mzmax]を越えないようにするためである。換言すれば、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力モーメント鉛直成分許容範囲が十分に大きいため、逆位相腕振り角速度を戻すように逆位相腕振り角加速度βaを発生させても、床反力モーメント鉛直成分Mzは、許容範囲を越えることがない。
以上のごとく図24のS316の処理が完了した後、図23のS210に進み、生成した歩容(仮定常歩容)の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系(図17のX’’’,Y’’’,Z’’’座標系)から見た値に変換し、その値を(Xe,Vxe)とする(Xe:終端上体水平位置、Vxe:終端上体水平速度)。
次いでS212に進み、図示の如く、初期上体水平位置速度(Xs,Vxs)と終端上体水平位置速度(Xe,Vxe)との差を算出する。この差(Xs−Xe,Vxs−Vxe)を上体水平位置速度境界条件誤差(errx,errvx)と呼ぶ。定常歩容では、前記境界条件を満たす必要があるので、(Xs,Vxs)と(Xe,Vxe)とが一致していなければならない。従って、上体水平位置速度境界条件誤差(errx,errvx)が零またはほぼ零でなければならない。本第1参考例では、以下のように、上体水平位置速度境界条件誤差(errx,errvx)がほぼ零となる(Xs,Vxs)が探索的に求められる。
次いでS214に進み、算出した上体水平位置速度境界条件誤差(errx,errvx)が、あらかじめ適宜設定された許容範囲内にあるか否かが判断される。尚、このように上体水平位置速度境界条件誤差の許容範囲を設定する代わりに、初期発散成分(Xs+Vxs/ω0)と終端発散成分(Xe+Vxe/ω0)との差、および初期収束成分(Xs−Vxs/ω0’)と終端収束成分(Xe−Vxe/ω0’)との差がそれぞれある許容範囲内にあるか否か判断するようにしても良い。ただしω0,ω0’は、前述したように、ある所定の値である。
S214の判断結果がNOであるときにはS216に進む。このS216では、(Xs,Vxs)の付近に複数(本第1参考例では2つ)の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)が決定される。ここで、ΔXs,ΔVxsは、それぞれXs,Vxsに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記S208と同様の処理によって定常歩容が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系(図17のX’’’,Y’’’,Z’’’座標系)から見た値に変換した値(Xe+ΔXe1,Vxe+ΔVxe1),(Xe+ΔXe2,Vxe+ΔVxe2)が求められる。ここで、(Xe+ΔXe1,Vxe+ΔVxe1)は(Xs+ΔXs,Vxs)に対応する終端上体位置速度を意味し、(Xe+ΔXe2,Vxe+ΔVxe2)は(Xs,Vxs+ΔVxs)に対応する終端上体位置速度を意味している。なお、この場合の定常歩容(仮歩容)の生成処理では、上体水平位置速度以外の変数の初期状態(時刻Tsでの状態)は、例えば上体水平位置速度の初期値候補を(Xs,Vxs)とした場合と同一に設定すればよい。S216ではさらに、前記S210と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
次いでS218に進み、(Xs,Vxs)およびその付近の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対する上体水平位置速度境界条件誤差を基に、(Xs,Vxs)の次の初期値候補が探索法(擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など)により決定される。すなわち、(Xs,Vxs)およびその付近の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対する上体水平位置速度境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補(Xs,Vxs)から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、上体水平位置速度境界条件誤差をより小さくするような初期値候補(Xs,Vxs)が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補(Xs,Vxs)が決定された後、S206に戻る。
S214の判断結果がNOとなる限りは上記した処理(S206〜S218の処理)が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補(Xs,Vxs)に対応する定常歩容の生成処理(S208)におけるS300(図24参照)では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補(Xs,Vxs)に対応するS208の処理におけるS310(図24参照)で決定したものに設定される。そして、S214の判断結果がYESになると、繰り返しループ(S204)を抜けてS220に進む。なお、S204の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
S220では、本来の初期時刻0(今回歩容の終端時刻)における初期上体水平位置速度(X0,V0)と初期時刻0における初期上体鉛直位置速度(Z0、Vz0)と初期時刻0における初期上体姿勢角および角速度が求められる。
具体的には、(X0,V0)と(Z0,Vz0)は、S310において決定された上体傾斜復元モーメントZMP換算値パターン、時刻Tsにおける定常歩容の初期上体姿勢角および角速度と、S204のループを抜けた後の時刻Tsにおける上体水平位置速度(Xs,Vxs)を基に、歩容の条件を満足するように歩容を生成した場合における、第2旋回歩容から第1旋回歩容に切り換わった瞬間の時刻、すなわち、時刻k=Tcyc(時刻Te−Ts)であるときに決定される上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Tcycから始まる一歩(すなわち2度目の第1旋回歩容)の支持脚に対応する支持脚座標系(図17のX’’’,Y’’’,Z’’’座標系)から見た値に変換した値に決定される。同様に、初期状態姿勢角および角速度は、時刻k=Tcyc(時刻Te−Ts)であるときに決定される上体姿勢角及び角加速度を、時刻Tcycから始まる一歩(すなわち2度目の第1旋回歩容)の支持脚に対応する支持脚座標系(図17のX’’’,Y’’’,Z’’’座標系)から見た値に変換した値に決定される。
次いでS222に進み、定常歩容初期発散成分q[0]が次式から求められる。
q[0]=X0+V0/ω0 …式40
ただしω0は、発散についての解説で述べたように、ある所定の値である。
次にS224に進み、定常歩容初期発散成分q[0]が今回歩容支持脚座標系から見た値に変換され、これがq”[0]として求められる。また、初期上体鉛直位置速度(Z0,Vz0)が今回歩容支持脚座標系から見た値に変換され、これが(Z0”,Vz0”)として求められる。
補足すると、(Z0”,Vz0”)は、第2旋回歩容の支持脚座標系(図17のX”,Y”,Z”座標系)から見た第2旋回歩容終端上体鉛直位置速度に一致している。また、q”[0]も第2旋回歩容の支持脚座標系(図17のX”,Y”,Z”座標系)から見た第2旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、(Z0”,Vz0”)およびq”[0]を算出するようにしても良い。
さらに、S226に進み、本来の初期時刻0(今回歩容の終端時刻)における初期逆位相腕振り角および角速度(θaz0,ωaz0)を求め、さらに、これを今回歩容の支持脚座標系から見た値である(θaz0’’,ωaz0’’)を求める。具体的には、(θaz0,ωaz0)は、S314およびS316において決定された逆位相腕振り復元角加速度パターン、定常歩容の初期(時刻Ts)逆位相腕振り角および角速度とを基に、歩容の条件を満足するように歩容を生成した場合における(より具体的には、上体姿勢角・逆位相腕振り角復元期間以外では、床反力モーメント鉛直成分が許容範囲を越えないように、逆位相腕振り角軌道を決定し、上体姿勢角・逆位相腕振り角復元期間では、前記基準逆位相腕振り角加速度βarefと逆位相腕振り復元角加速度βarecの和が発生するように逆位相腕振り角軌道を決定した場合における)第2旋回歩容から第1旋回歩容に切り換わった瞬間の時刻、すなわち、時刻k=Tcyc(時刻Te−Ts)であるときに決定される逆位相腕振り角および角速度を、時刻Tcycから始まる一歩(すなわち2度目の第1旋回歩容)の支持脚に対応する支持脚座標系(図17のX’’’,Y’’’,Z’’’座標系)から見た値に変換した値に決定される。
以上により、図13のS024の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図13のS026に進み、今回歩容の歩容パラメータを決定(一部は仮決定)する。S026では、より具体的には、図39に示すフローチャートに従って、以下の処理が行われる。
まず、S600において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。
具体的には、今回歩容初期遊脚足平位置姿勢(今回歩容遊脚足平位置姿勢の初期値)は、今回歩容支持脚座標系から見た現在遊脚位置姿勢(前回歩容終端遊脚位置姿勢)に設定される。今回歩容初期支持脚足平位置姿勢(今回歩容支持脚足平位置姿勢の初期値)は、今回歩容支持脚座標系から見た現在支持脚足平位置姿勢(前回歩容終端支持脚足平位置姿勢)に設定される。また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た次回歩容支持脚座標系(今回歩容に係わる1歩目の遊脚着床位置姿勢の要求値)に対応して決定される。すなわち、今回歩容終端遊脚足平位置姿勢から遊脚足平22を床に接触させたまま、すべらないように該足平22をその底面のほぼ全面が接地するまで回転させたときの、該足平22の代表点が今回歩容支持脚座標系から見た次回歩容支持脚座標系の原点に合致するように今回歩容終端遊脚足平位置姿勢が決定される。
今回歩容終端では、支持脚足平22は離床して空中にある。支持脚足平22が離床してから後の軌道を決定するために、支持脚足平着地予定位置姿勢を設定する。支持脚足平着地予定位置姿勢は、今回歩容支持脚座標から見た次次回歩容支持脚座標(今回歩容に係わる2歩目の遊脚足平位置姿勢の要求値)に対応して設定される。より具体的には、支持脚足平着地予定位置姿勢は、その位置姿勢から、足平22を床に接触させたまま、すべらないように該足平22をその底面のほぼ全面が床に接地するまで回転させたときの該足平22の代表点が今回歩容支持脚座標から見た次次回歩容支持脚座標の原点に合致するように設定される。
今回歩容終端支持脚足平位置姿勢は、現在支持脚位置姿勢(今回歩容初期支持脚足平位置姿勢)から、次回歩容支持脚座標系に対応する足平着地予定位置姿勢(前記要求パラメータにおける2歩目の遊脚側足平着地位置姿勢の要求値)に至る足平位置姿勢軌道を、今回歩容終端まで前記有限時間整定フィルタにより生成することにより求められる。
次いで、S602に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様に決定される。ただし、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる(今回歩容終端での基準上体姿勢角及び角速度がそれぞれ定常歩容初期の基準上体姿勢角及び角速度に一致する)ように上記パラメータが設定される。なお、本第1参考例では、傾斜角に関する基準上体姿勢は、今回歩容及び定常歩容のいずれでも定常的な鉛直姿勢である。
次いで、S604に進み、今回歩容の基準腕姿勢軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様に決定される。ただし、今回歩容の初期基準腕姿勢およびその変化率が基準腕姿勢および変化率の現在瞬間値に一致し、かつ、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように上記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定(図15のS104)の場合と同様、たとえば、両腕体5,5の全体の重心位置(上体3に対する相対位置)、左右の手先(両腕体5,5の先端)の左右方向の間隔および逆位相腕振り角に関するパラメータが決定される。尚、本第1参考例では、両腕体5,5の全体の重心位置は、上体3に対して一定に維持されるように設定される。
次いで、S606に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図6のように実質的に連続な(値がステップ状に飛ばない)軌道になるように設定される。
ただし、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。
具体的には、まず、前記図13のS024の処理(定常歩容初期状態の決定処理)で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値(Z0”,Vz0”)、すなわち、図23のS224で求めた(Z0”,Vz0”)等を基に、例えば前記式04(あるいはロボット1のキネマティクスモデル)を用いて、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。具体的には、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、S224で求めた定常歩容の上体鉛直位置Z0”に対応する図12のモデルの上体質点鉛直位置と、定常歩容初期の各足平位置を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直位置とを式04に代入することで求められる。また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、S224で求めた定常歩容の上体鉛直速度Vz0”に対応する図12のモデルの上体質点鉛直速度と、定常歩容初期の各足平鉛直速度を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直速度とを式04の両辺を微分してなる式に代入することにより求められる。なお、この初期全体重心鉛直位置速度の算出は、より厳密なモデルを用いて行なうようにしてもよい。
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を、次式41a、41bの終端全体重心鉛直位置速度に代入すると共に、前回の目標歩容瞬時値(より厳密には、前回目標歩容の終端状態を今回支持脚座標系に変換したもの)の全体重心鉛直位置および速度を、式41a、41bの初期全体重心鉛直位置および速度に代入し、式41a、41bの関係を満足するように、今回歩容の床反力鉛直成分パターン(より具体的にはパラメータ値)が決定される。ただし、式41a、41bにおける積分値は今回歩容の初期から終端までの期間の積分値とする。
終端全体重心鉛直位置−初期全体重心鉛直位置
=(床反力鉛直成分/ロボットの全体質量)の2階積分
+重力加速度の2階積分
+初期全体重心鉛直速度*1歩の時間
…式41a
終端全体重心鉛直速度−初期全体重心鉛直速度
=(床反力鉛直成分/ロボットの全体質量)の1階積分
+重力加速度の1階積分
…式41b
ただし、重力加速度は負の値とする。
より具体的には、まず、図6のような床反力鉛直成分パターンを規定する床反力鉛直成分パラメータ(折れ点の時刻等)のうちの、少なくとも2つのパラメータを独立な未知変数として、その未知変数の値を、式41a、41bからなる連立方程式を解いて決定する。
未知変数とする床反力鉛直成分パラメータには、例えば、図6の台形の高さ(床反力鉛直成分のピーク値)と幅(片脚支持期時間)とを選択すれば良い。この場合、図6の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。補足すると、未知変数を1つとすると、一般的には式41a、41bの連立方程式を満足する解が存在しない。
次いで、S608に進み、床反力水平成分許容範囲[Fxmin,Fxmax](具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ)が、定常歩容の第1旋回歩容や第2旋回歩容と同様に設定される。たとえば図40に示すようなパターンで床反力水平成分許容範囲が設定される。本第1参考例では、先にS606で決定した床反力鉛直成分パターンに応じて前記式12に基づいて床反力水平成分許容範囲が設定される。
次いで、S610に進み、床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax](具体的には該床反力モーメント鉛直成分許容範囲のパターンを規定するパラメータ)が、定常歩容の第1旋回歩容や第2旋回歩容と同様に設定される。たとえば図41に示すようなパターンで床反力モーメント鉛直成分許容範囲が設定される。本第1参考例では、先にS606で決定した床反力鉛直成分パターンに応じて前記式1012に基づいて床反力モーメント鉛直成分許容範囲が設定される
次いで、S612に進み、今回歩容のZMP軌道(具体的にはZMP軌道を規定するパラメータで、軌道の折れ点の時刻や位置)が、定常歩容の第1旋回歩容や第2旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図7に示すごとく設定される。ただし、今回歩容のZMP軌道が前記定常歩容のZMP軌道に連続してつながるように上記パラメータを設定される。つまり、今回歩容終端におけるZMPの位置が定常歩容初期のZMP位置に一致するように、ZMP軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるZMP軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のZMP軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ZMP軌道が、空中期開始時から、定常歩容初期のZMP位置まで、直線的に連続して変化するようにZMP軌道パラメータを設定すればよい。
なお、S612で決定される今回歩容のZMP軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとく設定した今回歩容のZMP軌道を、以降、今回歩容の仮目標ZMP軌道と呼ぶこととする。
最後に、S614に進み、上体姿勢角・逆位相腕振り角復元期間[Ta,Tb]が設定される。上体姿勢角・逆位相腕振り角復元開始時刻Taは、定常歩容の第2旋回歩容におけるTmに相当し、上体姿勢角・逆位相腕振り角復元修了時刻Tbは、定常歩容の第2旋回歩容におけるTs2に相当するものである。これらの時刻Ta,Tbの設定の仕方は、それぞれTmおよびTs2の設定の仕方と同様である。
図13の説明に戻って、上記のごとくS026に示す処理(今回歩容の歩容パラメータ決定処理)を行って後、次いでS028に進み、今回歩容の歩容パラメータ(ZMP軌道パラメータ)が修正され、また、逆位相腕振り角に関するパラメータが決定される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべくZMP軌道パラメータが修正され、かつ、逆位相腕振り角が定常歩容の逆位相腕振り角軌道に収束するように今回歩容の逆位相腕振り角に関するパラメータが決定される。
図42はその処理を示すサブルーチン・フロー・チャートである。
まずS700を経てS702に進み、仮目標ZMPパターンとその他の今回歩容パラメータを基に、今回歩容終端時刻までの仮今回歩容が仮生成される。
S702では、図43に示すフローチャートに従って、以下の処理が行われる。
以下説明すると、S800において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻kに0が代入される。また、前回目標歩容の終端状態(より具体的には、上体水平位置速度、上体鉛直位置速度、上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢などの歩容状態の終端値)を今回支持脚座標系に変換したものを、今回歩容初期状態とする。
補足すると、目標腕姿勢は、目標逆位相腕振り角・角速度を含む。
次いで、S802を経てS804において、仮歩容生成用時刻kが今回歩容終端時刻Tcurr以前であるか否か(k≦Tcurrであるか否か)が判断され、その判断結果がYESある場合には、S806の今回歩容瞬時値決定サブルーチンに進み、今回歩容の時刻kの瞬時値が決定される。S806の歩容瞬時値決定サブルーチンでは、前述のS306と同様、図25に示すごとく仮歩容を生成する。ただし、歩容パラメータとして、定常歩容パラメータの代わりに今回歩容パラメータが用いられる。
次いでS808に進み、仮歩容生成用時刻kがΔkだけ増加され、S804に戻る。
S804の判断結果がNOである場合には、図43に示すフローチャートの処理が完了する。
以上の処理により、仮の今回歩容が初期から終端まで生成される。
次いでS704に進み、上記のごとくS702で求めた今回歩容終端での上体水平位置速度(Xe,Vxe)から、終端発散成分q0[k](k=Tcurr)が図示の式(前記式10)を用いて求められる。
次いでS706に進み、今回歩容終端発散成分q0[k]と定常歩容初期発散成分q”(図23のS224で求めたもの)との差である終端発散成分誤差errqが図示の式を用いて求められる。さらに、S708に進んで、その求めた終端発散成分誤差errqが許容範囲内(0近傍の範囲)にあるか否か判断する。
S708の判断結果がNOであるときはS710に進み、a=Δa(Δaは所定の微小量)とし、図44の関係に従って現在の仮目標ZMPパターンに台形状の修正を加えた目標ZMPを基に、前記S702と同様に、終端までの仮今回歩容を計算する。ここで、図44を参照して、aは、今回歩容終端発散成分を定常歩容初期発散成分にできるだけ一致させる(今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に近づける)ために、仮目標ZMPを修正するための台形パターンの高さである。この場合、本第1参考例では、仮目標ZMPの修正は、支持脚足平22の底面のほぼ全面が接地する期間(足底全面接地期間)、すなわち、床反力水平成分許容範囲が十分に広いものとなる期間において行なうようにしており、上記台形パターンの折れ点の時刻は、足底全面接地期間における仮目標ZMPの折れ点の時刻に合わせて設定されている。なお、S710でa=Δaとするのは、現在の仮目標ZMP軌道を上記台形パターンによって微小量、修正したときの前記終端発散成分誤差errqの変化を観測するためである。
上記のようにS710にて、a=Δaとして仮目標ZMP軌道を修正したときの仮今回歩容を終端まで生成した後、さらにS712に進み、S710で求めた仮今回歩容終端での上体水平位置速度(Xe1,Vxe1)を基に、この仮今回歩容における終端発散成分q1[k]が図示の式(前記式10)を用いて求められる。
尚、S710においてΔaは、本第1参考例では、適宜に設定される微小量の定数としたが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔaを減少させるように該Δaを設定するようにしても良い。ただし、定数にしておいても、数回の繰り返し演算で終端発散成分誤差errqを許容範囲内に収めることができる。
次いでS714に進み、パラメータ感度r(Δaに対する終端発散成分誤差の変化の割合)が図示の式から求められる。さらに、S716に進み、a=−errq/r、すなわちS706で求めた終端発散成分誤差errqを、S714で求めたパラメータ感度rで割った値を高さaとする台形パターンの修正量を図44の関係に従って仮目標ZMPパターンに加えることにより、仮目標ZMPパターンが修正される(新たな仮目標ZMPパターンが決定される)。
次いでS702に戻る。そして、S708の判断結果がNOである限りは、上記したS702〜S716の処理が繰り返され、S708の判断結果がYESになったときには、その繰り返しループ(S700)を抜けてS718に進む。
S718では、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、および仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に、今回歩容の上体姿勢角軌道が定常歩容の上体姿勢角軌道に近づくように、今回歩容の上体姿勢復元モーメントZMP換算値(ZMPrec)のパターンが決定される。ここで決定するZMPrecは、後述する今回歩容瞬時値の生成処理で、床反力水平成分許容範囲が十分に大きいものとなる期間(片脚支持期内の期間)において、上体姿勢角軌道を定常歩容につながらせる(近づける)ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性(S708の条件)を維持できるように、仮目標ZMPを修正するためのものである。
このZMPrecは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図30における第2旋回歩容の期間のZMPrecの台形パターンと同様に、今回歩容のZMPrecの台形パターンを設定し、台形の頂点(折れ点)の時刻は既知とする(より具体的には台形の折れ点の時刻を目標ZMPの折れ点時刻に合わせる)と共に、台形高さを未知数とし、以下のようにZMPrecの台形高さ(パラメータ)が求められる。ただし、ZMPrecの台形パターンが立ち上がり始める時刻をTaとし、台形パターンから0に戻る時刻をTbとする。
上記のように上体姿勢復元モーメントZMP換算値パターンの未知パラメータがひとつの場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本第1参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、1歩容の中でのZMPrecパターンを複雑にし、未知パラメータを2つ以上にして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげても良いが、ZMPrecパターンがジグザグに大きく変動し過ぎる恐れがある。
以下では、算出原理を説明した後、算出手順を説明する。
前述のごとくS702でZMPrecパターンの台形高さを0として求めた仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差を求め、これをθerrとする。また、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差を求め、これをvθerrとする。
ここで、ZMPrecパターンの台形高さをある値bcurrとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第1旋回歩容が生成されると想定する。ただし、第1旋回歩容の上体姿勢復元モーメントZMP換算値ZMPrecパターンは、図24のS310において求められた第1旋回歩容のZMPrecパターン(高さが前記acyc1である図30の台形パターン)とある値b1の和であるとする。
このようにして生成された歩容をZMPrec修正歩容と呼び、その終端(第1旋回歩容の終端)上体姿勢角と角速度をそれぞれθ1、vθ1とする。
S024における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容(最終的にS310において決定された定常歩容初期上体姿勢角および角速度を初期値とし、ZMPrecパターンをS310において求められたパターン(高さがacyc1である図30の台形パターン)とした場合の定常歩容)の第1旋回歩容終端上体姿勢角と角速度をそれぞれθ1org、vθ1orgとする。
ここで、Δθ1、Δvθ1を次のように定義する。
Δθ1=θ1−θ1org …式50
Δvθ1=vθ1−vθ1org …式51
Δθ1およびΔvθ1は、ZMPrec修正歩容と本来の定常歩容を第1旋回歩容の終端まで生成した時点において、両者間における上体姿勢角の差及び角速度の差を意味する。もし、Δθ1およびΔvθ1が0になれば、ZMPrec修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ZMPrecパターンの台形高さを前記acyc2として第2旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθ1およびΔvθ1が0となる今回歩容台形高さbcurr、第1旋回歩容台形高さb1を求め、求めたbcurrを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット1の上体姿勢角に関する動力学モデルが図12に示すフライホイールFHx、FHyのような線形特性を持つことから、Δθ1およびΔvθ1は、今回歩容台形高さbcurr、第1旋回歩容台形高さb1、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角の差θerr、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度の差vθerrと以下の関係を持つ。
Δθ1=c11*bcurr+c12*b1+θerr+e1*vθerr …式52
Δvθ1=c21*bcurr+c22*b1+e2*vθerr …式53
だだし、c11、c12、c21、c22、e1、e2は、今回歩容、第1旋回歩容の歩容周期、上体姿勢復元モーメントZMP換算値ZMPrecパターンのパラメータ(特に時間に関するパラメータ)などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での上体姿勢角の差θerrと角速度の差Vθerrが求められる。
次いで、式52,53の係数であるc11、c12、c21、c22、e1、e2が、今回歩容、第1旋回歩容の歩容周期、上体姿勢復元モーメントZMP換算値ZMPrecパターンのパラメータ(特に時間に関するパラメータ)などを基に求められる。
次いで式52、式53の右辺が0となるように今回歩容台形高さbcurr、第1旋回歩容台形高さb1が決定される。すなわち、式52、式53の左辺を0とした連立方程式を解くことによって、bcurr、b1が求められる。
最後に、今回歩容の上体姿勢復元モーメントZMP換算値(ZMPrec)の台形パターンの台形高さが、上記求めた今回歩容台形高さbcurrに設定される。
次いでS720に進み、現在の仮目標ZMPパターン(S700の繰り返しループを抜けたときの仮目標ZMPパターン)に、S718で上記のように求めた上体姿勢復元モーメントZMP換算値パターンを加算してなるパターンが今回歩容の目標ZMPパターンとして決定される。なお、この処理は、S710においてΔaの高さの台形パターンを仮目標ZMPパターンに加える処理と同様である。
以下に仮目標ZMPパターンに上体姿勢復元モーメントZMP換算値パターンを加算した理由を述べる。
S700のループにおいて生成される仮今回歩容は、上体姿勢復元モーメントZMP換算値ZMPrecを0(ZMPrecの台形パターンの高さパラメータを0)にして生成されたものである。このようにしてS700のループで最終的に生成された仮今回歩容では、その上体位置速度は、定常歩容に連続し、もしくは近づくが、上体姿勢角は、定常歩容の上体姿勢角からずれ、場合によっては発散してしまう。
S718で求められた上体姿勢復元モーメントZMP換算値パターンは、上体姿勢角の定常歩容に対するずれを0に近づけるための上体姿勢角加速度を発生させるものである。
しかし、S700のループで最終的に得られた仮目標ZMPパターンを修正することなく、S718で求められた上体姿勢復元モーメントZMP換算値パターンに応じた上体姿勢角加速度を発生させると、動力学的平衡条件(ロボットの重力と慣性力との合力が目標ZMPに作用するモーメントが鉛直成分を除いて0になること)を満足させるために、上体水平位置軌道を前記仮今回歩容の上体水平位置軌道からずらさざるを得なくなる。そこで、本実施例では、上体水平位置軌道をS700のループで最終的に得られるものからずらさなくて済むように、ZMPrecによって仮目標ZMPパターンを修正することとした。
前記仮今回歩容の運動に加えて、S718で求めた上体姿勢復元モーメントZMP換算値パターンに対応する上体姿勢角加速度を発生させると、ZMP(運動によって発生する重力と慣性力の合力の鉛直成分を除くモーメントが0になる点)は上体姿勢復元モーメントZMP換算値だけずれる。したがって、逆に、仮目標ZMPパターンに上体姿勢復元モーメントZMP換算値パターンを加算したパターンを目標ZMPパターンとして、S718で求めた上体姿勢復元モーメントZMP換算値パターンに対応する上体傾斜モードの上体姿勢角加速度を発生させながら、目標ZMPパターンを満足する今回歩容を生成すれば、前記仮今回歩容と同じ上体並進運動となる。
以上が、仮目標ZMPパターンに上体姿勢復元モーメントZMP換算値パターンを加算したパターンを目標ZMPパターンとした理由である。
次いでS722に進み、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差および仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を基に、今回歩容の逆位相腕振り角軌道が定常歩容の逆位相腕振り角軌道に近づくように、逆位相腕振り復元角加速度パターンが決定される。このパターンの決定方法は、S718で上体姿勢復元モーメントZMP換算値パターンを決定する方法と、変数名が次のように異なること以外は、ほぼ同じである。
上体姿勢復元モーメントZMP換算値パターン→逆位相腕振り復元角加速度パターン
水平成分→モーメント鉛直成分
以下に詳細を説明する。ここで決定する逆位相腕振り復元角加速度パターンは、後述する今回歩容瞬時値の生成処理で、床反力モーメント鉛直成分許容範囲が十分に大きいものとなる期間(片脚支持期内の期間)において、逆位相腕振り角軌道を定常歩容につながらせる(近づける)ように修正するためのものである。
この逆位相腕振り復元角加速度パターンは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図36における第2旋回歩容の期間の逆位相腕振り復元角加速度の台形パターンと同様に、今回歩容の逆位相腕振り復元角加速度の台形パターンを設定し、台形の頂点(折れ点)の時刻は既知とする(より具体的には台形の折れ点の時刻を目標ZMPの折れ点時刻に合わせる)と共に、台形高さを未知数とし、以下のように逆位相腕振り復元角加速度の台形高さ(パラメータ)が求められる。ただし、逆位相腕振り復元角加速度の台形パターンが立ち上がり始める時刻をTaとし、台形パターンから0に戻る時刻をTbとする。
上記のように逆位相腕振り復元角加速度パターンの未知パラメータがひとつの場合には、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本第1参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、1歩容の中での逆位相腕振り復元角加速度パターンを複雑にし、未知パラメータを2つ以上にして、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度との両者を定常歩容に連続につなげても良いが、逆位相腕振り復元角加速度パターンがジグザグに大きく変動し過ぎる恐れがある。
前述のごとくS702で逆位相腕振り復元角加速度パターンの台形高さを0として求めた仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差を求め、これをθazerrとする。また、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を求め、これをvθzerrとする。
ここで、逆位相腕振り復元角加速度パターンの台形高さをある値bzcurrとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第1旋回歩容が生成されると想定する。ただし、第1旋回歩容の逆位相腕振り復元角加速度パターンは、図24のS314において求められた第1旋回歩容の逆位相腕振り復元角加速度パターン(高さが前記azcyc1である図36の台形パターン)とある値bz1の和であるとする。
このようにして生成された歩容を逆位相腕振り復元角加速度修正歩容と呼び、その終端(第1旋回歩容の終端)逆位相腕振り角と角速度をそれぞれθz1、vθz1とする。
S024における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容(最終的にS314において決定された定常歩容初期逆位相腕振り角および角速度を初期値とし、逆位相腕振り復元角加速度パターンをS314において求められたパターン(高さがazcyc1である図36の台形パターン)とした場合の定常歩容)の第1旋回歩容終端逆位相腕振り角と角速度をそれぞれθz1org、vθz1orgとする。
ここで、Δθz1、Δvθz1を次のように定義する。
Δθz1=θz1−θz1org …式1050
Δvθz1=vθz1−vθz1org …式1051
Δθz1およびΔvθz1は、逆位相腕振り復元角加速度修正歩容と本来の定常歩容を第1旋回歩容の終端まで生成した時点において、両者間における逆位相腕振り角の差及び角速度の差を意味する。もし、Δθz1およびΔvθz1が0になれば、逆位相腕振り復元角加速度修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、逆位相腕振り復元角加速度パターンの台形高さを前記azcyc2として第2旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθz1およびΔvθz1が0となる今回歩容台形高さbzcurr、第1旋回歩容台形高さbz1を求め、求めたbzcurrを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット1の逆位相腕振り角に関する動力学モデルが図12に示すフライホイールFHazのような線形特性を持つことから、Δθz1およびΔvθz1は、今回歩容台形高さbzcurr、第1旋回歩容台形高さbz1、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角の差θzerr、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度の差vθzerrと以下の関係を持つ。
Figure 2005000536
だだし、cz11、cz12、cz21、cz22、ez1、ez2は、今回歩容、第1旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ(特に時間に関するパラメータ)などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での逆位相腕振り角の差θzerrと角速度の差vθzerrが求められる。
次いで、式1052,1053の係数であるcz11、cz12、cz21、cz22、ez1、ez2が、今回歩容、第1旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ(特に時間に関するパラメータ)などを基に求められる。
次いで式1052、式1053の右辺が0となるように今回歩容台形高さbzcurr、第1旋回歩容台形高さbz1が決定される。すなわち、式1052、式1053の左辺を0とした連立方程式を解くことによって、bzcurr、bz1が求められる。
最後に、今回歩容の逆位相腕振り復元角加速度の台形パターンの台形高さが、上記求めた今回歩容台形高さbzcurrに設定される。
図13に戻って、上記のごとくS028において今回歩容パラメータを修正した後、あるいはS016の判断結果がNOである場合には、S030に進み、今回歩容瞬時値が決定される。
S030では、そのサブルーチンである図45の処理が実行される。
図45のS1400からS1411までは、図25のS400からS411までと同一の処理が行なわれ、次に、S1412のサブルーチンである図46のS1000〜S1018の処理が行なわれる。
具体的には、まずS1000において、目標上体ヨー角に現在時刻での基準上体ヨー角の値を代入する。また、腕姿勢逆位相腕振り角・角速度を除き、目標腕姿勢に現在時刻での基準腕姿勢の値を代入する。
次いでS1002に進み、現在時刻が、上体姿勢角・逆位相腕振り角復元期間(時刻Taから時刻Tbの期間)の間にあるか否かが判定される。S1002の判定結果がNOであるならば、S1004に進み、YESであるならばS1006に進む。
S1004では、上体傾斜角・逆位相腕振り角復元期間でない場合の上体水平加速度α、上体角加速度β、逆位相腕振り角加速度βa算出処理(図26のS504からS528)と同様の処理を行う。
S1006に進む場合では、まず、S1006において、仮に上体並進モードの運動をさせた場合に今回(時刻k)目標ZMPを満足するために必要な上体水平加速度αtmpを求める。
次いでS1008に進み、現在時刻における上体傾斜復元モーメントZMP換算値パターンの瞬間値ZMPrecを、S718において決定した上体傾斜復元モーメントZMP換算値パターンに関するパラメータを基に算出する。
次いでS1010に進み、現在時刻における逆位相腕振り復元角加速度パターンの瞬間値βarecを、S722において決定した逆位相腕振り復元角加速度パターンに関するパラメータを基に算出する。
次いでS1012に進み、図示する式によって、上体傾斜モードの上体角加速度(上体傾斜角加速度)βが決定される。
次いでS1014に進み、図示する式によって、上体水平加速度αが決定される。
次いでS1016に進み、S1010で算出した逆位相腕振り復元角加速度パターンの瞬間値βarecと基準逆位相腕振り角加速度βaref(基準逆位相腕振り角を2階微分した値)の和を目標逆位相腕振り角加速度βaに代入する。
次いでS1018に進み、上体水平加速度がαの場合の床反力水平成分Fxを求める。
次いでS1414に進み、上体水平加速度と上体姿勢角加速度を積分して上体水平速度と上体姿勢角速度(上体傾斜角速度)を算出する。これをさらに積分して、上体水平位置と上体姿勢(上体傾斜角)を決定する。なお、上体姿勢のうちの上体ヨー角は、本第1参考例では基準上体ヨー角に決定される。
次いでS1416に進み、逆位相腕振り加速度を積分して逆位相腕振り角速度を算出する。これをさらに積分して、逆位相腕振り角を決定する。
以上のごとく、図13のS030の処理が完了する。
次いでS032に進み、歩容生成用時刻tをΔtだけ増やし、S014に戻り、以上のごとく歩容生成を続ける。
以上が、歩容生成装置100における目標歩容生成処理である。
図4を参照して本第1参考例に係る装置の動作をさらに説明すると、歩容生成装置100において、上記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢(軌道)、目標腕姿勢(軌道)が、ロボット幾何学モデル(逆キネマティクス演算部)102に送出される。
また、目標足平位置姿勢(軌道)、目標ZMP軌道(目標全床反力中心点軌道)、および目標全床反力(軌道)(目標床反力水平成分と目標床反力鉛直成分)は、複合コンプライアンス動作決定部104に送られると共に、目標床反力分配器106にも送られる。そして、目標床反力分配器106で、床反力は各足平22R,22Lに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部104に送られる。
複合コンプライアンス動作決定部104から、機構変形補償付き修正目標足平位置姿勢(軌道)がロボット幾何学モデル102に送られる。ロボット幾何学モデル102は、目標上体位置姿勢(軌道)と機構変形補償付き修正目標足平位置姿勢(軌道)を入力されると、それらを満足する脚体2,2の12個の関節(10R(L)など)の関節変位指令(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の12個の関節の変位を追従制御する。また、ロボット幾何学モデル102は、目標腕姿勢を満足する腕関節の変位指定(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の腕体の12個の関節の変位を追従制御する。
ロボット1に生じた床反力(詳しくは実各足床反力)は6軸力センサ50によって検出される。その検出値は前記複合コンプライアンス動作決定部104に送られる。
また、ロボット1に生じた実上体姿勢角偏差(目標上体姿勢と実上体姿勢(上体3の実際の姿勢)との偏差)のうちの姿勢傾斜角偏差θerrx,θerry(詳しくは目標上体姿勢のうちの鉛直方向に対する傾斜角に対する実上体姿勢のうちの鉛直方向に対する傾斜角の偏差で、ロール方向(X軸回り)の姿勢傾斜角偏差がθerrxであり、ピッチ方向(Y軸回り)の姿勢傾斜角偏差がθerryである)が姿勢センサ54を介して検出され、その検出値は姿勢傾斜安定化制御演算部112に送られる。この姿勢傾斜安定化制御演算部112で、ロボット1の実上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメント水平成分が算出されて複合コンプライアンス動作決定部104に送られる。
より具体的には、本第1参考例では、補償全床反力モーメント水平成分Mdmdxyは、例えばPD制御則を用いて次式により決定される。
補償全床反力モーメント水平成分Mdmdxy
=Kθb*上体姿勢傾斜角偏差
+Kωb*上体姿勢傾斜角速度偏差
……d25
ここで、Kθb、Kωbは所定のゲインである。また、上体姿勢傾斜角速度偏差は、上体姿勢傾斜角偏差の時間微分値であり、目標上体姿勢傾斜角速度に対する実上体姿勢傾斜角速度の偏差を意味する。また、上体姿勢傾斜角偏差は、より詳しくは、ロボット1の上体3のロール方向(X軸回り)の姿勢傾斜角偏差と、ピッチ方向(Y軸回り)の姿勢傾斜角偏差とからなるベクトルである。
また、ロボット1に生じた前記実上体姿勢角偏差のうちのヨー角偏差θerrz(詳しくは実上体姿勢角偏差のうちのヨー方向(Z軸回り)の姿勢角偏差がθerrzである)が姿勢センサ54を介して検出され、その検出値はヨー安定化制御演算部113に送られる。このヨー安定化制御演算部113で、ロボット1の実上体ヨー角および/または角速度を目標上体ヨー角および/または角速度に収束させるための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメント鉛直成分が算出されて複合コンプライアンス動作決定部104に送られる。複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメントが作用するように目標床反力を修正する。
より具体的には、本第1参考例では、補償全床反力モーメント鉛直成分Mdmdzは、例えばPD制御則を用いて次式により決定される。
補償全床反力モーメント鉛直成分Mdmdz=Kθbz*上体ヨー角偏差
+Kωbz*上体ヨー角速度偏差
……d26
ここで、Kθbz、Kωbzは所定のゲインである。また、上体ヨー角速度偏差は、上体ヨー角偏差の時間微分値であり、目標上体ヨー角速度に対する実上体ヨー角速度の偏差を意味する。
補足すると、補償全床反力モーメント鉛直成分Mdmdzを前記式d26により求めるとき、足平22と床の間の鉛直軸まわり回転滑りまたは鉛直軸まわり回転振動を防止したいだけなら、Kθbzを0にすれば良い。上体ヨー角偏差までも0に近づけようとすると、実床反力モーメント鉛直成分が大きくなる傾向があるからである。
複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメント水平成分が作用するように目標床反力モーメント水平成分を修正し、さらに、目標歩容に動力学的に釣り合う目標全床反力中心点(目標ZMP)回りの目標床反力鉛直成分に補償全床反力モーメント鉛直成分を付加的に追加することによって目標床反力モーメント鉛直成分を修正する。
複合コンプライアンス動作決定部104は、修正された目標床反力に、センサ検出値などから算出される実ロボット1の状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
尚、この発明の要旨は歩容生成装置100におけるロボット1の歩容生成にあり、上記した複合コンプライアンス動作決定部104などの構成および動作は、本出願人が先に出願した特開平11−300661号公報などに詳細に記載されているので、説明を以上に留める。
S028において、今回歩容パラメータは、前述のごとく、今回歩容の終端発散成分が、定常旋回歩容の初期発散成分q[0]を今回歩容の支持脚座標系から見た値であるq”に一致するように修正される。
実は、発散成分とは、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容に収束するか否かを評価する指標である。収束する場合にちょうど、今回歩容の終端発散成分が、定常旋回初期発散成分q[0]を今回歩容の支持脚座標系から見た値であるq”に一致するように、本来、発散成分は定義されなければならない。
式10で定義した発散成分は、実は、上記の性質を近似的に満足する発散成分である。
したがって、本第1参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容の上体水平位置に収束する(近づく)ように、今回歩容パラメータを修正した、と言える。但し、厳密には、今回歩容直後の第1旋回歩容だけは、前記の如く求めた第1旋回歩容台形高さb1,bz1によって修正された歩容にする必要がある。別の言い方をすれば、今回歩容と第1旋回歩容とを合わせた歩容を今回歩容と見なせば、本参考例においては、上記の如く歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が第2旋回歩容と第1旋回歩容とからなる定常歩容の上体姿勢角に収束し(近づき)、もしくは一致するように、今回歩容パラメータを修正した、と言える。
これは、PCT公開公報WO/02/40224のものと同様である。
特に、本第1参考例においては、その条件(今回歩容が定常歩容に近づく)を満足するように、今回歩容の歩容パラメータのうちの目標ZMPパターンを修正するようにした。図47を参照して説明すると、同図に符合Bで示す軌道は、上記したように歩容の境界において発散成分が一致するように生成した上体水平位置軌道を示す。
同図に符合Aで示す軌道は、定常旋回歩容との境界における上体水平位置速度が一致するように今回歩容を生成し、続いて定常歩容を繰り返し生成した場合の上体水平位置軌道を示す。
図示の如く、符合Bで示す軌道は、今回歩容と最初の定常旋回歩容との境界においては、一般的に符合Aで示す軌道からずれているが、その後、徐々に符合Aで示す軌道に収束し(近づき)、次の定常旋回歩容時期において符合Aで示す軌道にほぼ一致する。このように、歩容境界で発散成分のみを一致させる歩容生成手法でも、歩容境界で位置速度両方を一致させる歩容生成手法と同様、歩容の発散を防止することができる。尚、同図に符合Cで示す例は、それらを考慮せずに軌道を生成した場合の例を示す。このような場合は、生成した軌道は経時的に発散してしまう。当然、目標ZMPパターンを複雑なものにし、複数のパラメータを調整して、位置速度両方を一致させても良いが、目標ZMPパターンがジグザグになる恐れがある。なお、位置速度両方を一致させれば、発散成分も一致するから、位置速度両方を一致させる方法も発散成分を一致させる方法の特殊例であると言える。
またさらに、本第1参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が定常旋回歩容の上体姿勢角に収束し(近づき)、もしくは一致するように、今回歩容パラメータを修正した、と言える。但し、厳密には、今回歩容直後の第1旋回歩容だけは、前記の如く求めた第1旋回歩容台形高さb1,bz1によって修正された歩容にする必要がある。
次に、本第1参考例の変形態様を以下にいくつか説明する。なお、以下に説明する変形態様は、後述の各実施形態においても同様である。
本第1参考例では、理解を容易にするために、床反力水平成分許容範囲は、前後方向(X軸方向)成分と左右方向(Y軸方向)成分それぞれ独立に設定できることとしたが、前後方向と左右方向の関係式で表した方が、よりスリップし難い歩容が生成される。
例えば、次式のようにいわゆる摩擦円を許容範囲としても良い。
(床反力水平成分のX成分)*(床反力水平成分のX成分)
+(床反力水平成分のY成分)*(床反力水平成分のY成分)
≦(ka*μ*Fz)*(ka*μ*Fz)
…式59
ただし、Fzは、目標床反力鉛直成分をμは摩擦係数、kaは1以下の正の定数を表す。
ただし、以上のように、床反力水平成分許容範囲を前後方向と左右方向の関係式で表す場合、許容範囲を同時にあるいは交互に満足するように、サジタルプレーン上での運動とラテラルプレーン上での運動を同時あるいは交互に求める必要がある。
また、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とを上記のごとく別々に設定する代わりに、床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにしても良い。床反力水平成分が大きくなるにつれ、床反力モーメント鉛直成分の摩擦限界は、小さくなる。また、床反力モーメント鉛直成分が大きくなるにつれ、床反力水平成分の摩擦限界は、小さくなる。したがって、このことを鑑みて床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにした方が、より現実の摩擦限界特性に近い許容範囲を設定することができる。具体的には、床反力水平成分の絶対値と床反力モーメント鉛直成分の絶対値との重み付き平均に対して許容範囲を設定しても良い。
前記第1参考例では、床反力水平成分と目標ZMPまわりの床反力モーメント水平成分を適切な値にするために、上体傾斜モードと上体並進モードとの2つの運動モードを用いたが、これら以外の運動モードを用いても良い。
例えば、図48のように、股関節を中心に上体姿勢を回転させると、全体重心まわりの角運動量が変化すると共に全体重心も変化する。この運動と前記上体並進モードをある所定の割合で重ね合わせると(合成すると)、前記上体傾斜モードとほとんど同じ運動になり、床反力水平成分が発生しなくなる。したがって、これを改めて前記上体傾斜モードとみなせば、本第1参考例のアルゴリズムにしたがって、同様の歩容を生成することができる。
したがって、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ZMPまわりの床反力モーメントとの発生の割合が異なるふたつの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ZMPまわりの床反力モーメントとを発生させることができるからである。
また、上体姿勢を変化させる運動モード以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ZMPまわりの床反力モーメントが発生できる運動モードを選ぶことが好ましい。
例えば、左右の腕体の先端位置を同一方向に振りまわす運動モード、接地していない(空中に存在する)足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に0に戻すべきである。なお、左右の腕体の先端位置を同一方向に振りまわす運動モードと逆位相腕振りモードとを併用してもよいことはもちろんである。
また、3つ以上の運動モードを用いても良い。
また、選択した運動モードのうちの少なくとも2つは、その運動モードによる床反力水平成分と目標ZMPまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなる(各運動モードの挙動を一義的に決定できない)からである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ZMPまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ZMPまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。このようにすると、運動モードの変位が小さくなるからである。
また、床反力モーメント鉛直成分が許容範囲を越えないようにするために(スピン力をキャンセルするために)、逆位相腕振りモードの代わりに、上体ヨー回転モードを用いても良い。上体ヨー回転モードを用いる場合には、ロボット1の上体3を腰寄りの部分(例えば図1の54の部材の下側の部分)とその上側の部分(例えば図1の54の部材の上側の部分)とに分割し、上側の部分が腰寄りの部分に対してヨー方向に(例えば上体3の体幹軸回り)に回転し得るように設けておくことが好ましい。このようにすると、脚体2,2の姿勢に影響を及ぼすことなく、上体3の上側の部分を回転させて、床反力モーメント鉛直成分を調整することができる。このようにした場合の参考例は、例えば前記第1参考例で逆位相腕振り角、その角速度およびその角加速度を決定する代わりに、上体3の上側の部分の回転角、その角速度およびその角加速度を決定するようにすればよい。この場合、両腕体5,5は、例えば上体3の上側の部分に対する相対位置を一定とすればよい。但し、上体3の上側の部分のヨー回転に加えて、両腕体5,5の逆位相腕振り動作を加えてもよいことはもちろんである。
また、床反力モーメント鉛直成分が発生するものであれば、腕、上体以外の部位を変位させる運動モードを用いても良い。
例えば、空中期において、両脚先端を前後逆方向に動かすモードを用いても良い。
あるいは、床反力モーメント鉛直成分が発生するいくつかの運動モードを併用しても良い。例えば、逆位相腕振りモードと上体ヨー回転モードを併用しても良い。
また、上体ヨー回転モードおよび逆位相腕振りモードは、全体重心位置が変わらないように(言い換えると床反力水平成分を発生させずに)床反力モーメント鉛直成分を発生させるモードであるが、全体重心位置が変わってしまう(言い換えると床反力水平成分を発生してしまう)運動でも良い。上体並進モードと組み合わせることにより、床反力水平成分を調整することができるからである。
前記第1参考例に用いた動力学モデル(図12の動力学モデル)以外にも以下のモデルを用いても良い。
1)図49に示したように複数のリンクに質点を設定した非線形なモデル(多質点モデル)。このモデルの各リンクには、イナーシャ(慣性モーメント)が設定されていてもよい。
2)本願出願人によるPCT公開公報WO/02/40224に示された3質点モデル
3)上体ヨー回転モードあるいは逆位相腕振りモードによって生じる慣性力のモーメントを無視したモデル。
4)重力と慣性力との合力(またはこれと釣り合う床反力)と上体並進運動との関係を表す部分モデルと、上記合力と上体姿勢回転運動(上体傾斜運動と上体ヨー回転運動)の関係を表す部分モデルとを分離して持つ分離型モデル。例えば、図12に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図12に示すフライホイールは、上記合力と上体姿勢回転運動との関係を表す部分モデルである。
なお、上記1)〜4)のいずれの場合でも、慣性力のモーメント鉛直成分を発生させる運動モードは必要である。
また、各処理で用いられるモデルは同一でも良いし、処理に応じて適宜、モデルを使い分けても良い。例えば、前記定常歩容は今回歩容の終端状態を決定するためだけに生成されるものであるので、その定常歩容の動力学的な精度に対する要求は、今回歩容に比べて小さい。そこで、例えば、今回歩容の生成処理では、図12の動力学モデル(3質点+フライホイールのモデル)を用いる一方、定常歩容の生成処理(特に図21のS408、S412)では、各脚体2の質量を無視し、上体3に対応する上体質点3mと、フライホールFHx、FHy、FHaz、FHbzとで構成される動力学モデル(図12のモデルで脚質点2m,2mを除去した1質点+フライホイールのモデル)を用いて定常歩容を生成するようにしてもよい。この場合の定常歩容の生成処理では、前記第1参考例において、脚質点2mの質量を0として前記図25のS408、S412の処理を行なうようにすればよい。このようにすると、定常歩容の生成処理における演算量を大幅に削減できる。
尚、前記第1参考例において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記第1参考例を2足移動ロボットに関して説明してきたが、3足以上の多脚ロボットにも応用することができる。
前記第1参考例のごとく、探索手法を用いたり、部分的に解析手法を用いたりして、定常歩容の初期状態(主に初期上体水平位置速度、初期上体鉛直位置速度および逆位相腕振り角・角速度のこと)を決定する手法の代わりに、あらかじめ、上記手法を用いて様々な定常歩容パラメータに対して計算しておき、定常歩容パラメータと定常歩容の初期状態との関係をマップ化あるいは近似式化して記憶して置き、実移動時には、マップ化あるいは近似式化された上記関係を基に、定常歩容の初期値を決定しても良い。
さらには、マップ化あるいは近似式化された上記関係と上記関数fを合成した関数をマップ化あるいは近似式化して記憶しても良い。すなわち、前記した足平軌道パラメータ、床反力鉛直軌道パラメータ等からなる定常歩容パラメータから、定常歩容の発散成分を直接求める関数をマップ化あるいは近似式化して記憶しても良い。例えば、複数種類の代表的な定常歩容パラメータの組のそれぞれに対して、事前に定常歩容を生成しておき、各組の定常歩容パラメータに対する定常歩容の初期状態(図13のS024で求めるもの)を求めておき、さらにその各組の定常歩容パラメータと、定常歩容初期状態との関係を表すマップをあらかじめ作成しておく。そして、目標歩容を生成する際に、決定された定常歩容パラメータの組から、上記マップに基づいて選択あるいは補間によって定常歩容初期状態を求めるようにすればよい。このようにすれば、今回歩容の生成毎に、定常歩容を生成する必要がなくなり、目標歩容生成処理の演算量を大幅に削減できる。
定常歩容につなげる(近づける)ための今回歩容の修正方法として、本第1参考例では、今回歩容の目標ZMPパラメータを修正したが、それ以外のパラメータを修正しても良い。
たとえば、今回歩容の遊脚の空中での軌道を変えても良い。また、たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、遊脚を離床後すばやく前方に移動させて遊脚重心位置を前方にずらす。こうすることにより、目標ZMPを満足するための上体水平位置は、前方により一層加速せざるを得なくなる。この結果、上体水平位置が今回歩容終端において、より一層前方に移動し、定常歩容に一致させることができる。
また、目標ZMPパラメータを修正する代わりに、今回歩容の周期を修正しても良い。たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、今回歩容の周期を長くすれば良い。今回歩容の周期を長くことで、上体水平位置が移動する時間が延び、それだけ前方に移動できるからである。
ただし、探索手法によって、上体水平位置等の適正値を決定するときに、目標ZMPパラメータを修正する場合では、目標ZMPの修正量にほぼ比例して、今回歩容終端上体水平位置が変化するので、上記適正値の探索回数が少なくて済む。これに対して、遊脚重心軌道や歩容の周期を修正する場合には、その修正に対して、今回歩容終端上体水平位置が、かなり非線形に変化するので、上記適正値の探索により多くの探索回数を要する。
定常歩容につなげる(近づける)ための今回歩容の修正方法として、本第1参考例では、今回歩容の目標ZMPパラメータを修正した。この方法では、場合によっては、目標ZMPパラメータの修正量(前記図34の修正量a)が過大になることがある。たとえば、その場でホッピングしている歩容からいきなり高速で移動する要求(走行要求)が与えられると、高速の定常歩容(走行の定常歩容)につなげる(近づける)ために、目標ZMPパラメータは、進行方向に対して後ろに極端に大きくずらす必要が生じる。この場合には、上記したように目標ZMPパラメータ以外の歩容パラメータも修正することが望ましい。但し、この場合では、実は、急激な加速を要求すること自体に無理があったわけであるから、要求値自身を修正しても良い。
要求値の修正を行なう場合には、例えば、とりあえず本第1参考例に示した手順に従って、要求(要求パラメータ)を満足する定常歩容を求め、この定常歩容につながるように今回歩容パラメータを決定した時点で、今回歩容の目標ZMP軌道の安定余裕が少なくなり過ぎたか否かを判定する。そして、安定余裕が少なくなり過ぎた場合(いわゆる支持多角形から目標ZMPが外れたり、支持多角形の端部付近に目標ZMPが位置するような場合)には、要求を修正するようにすれば良い。
または、あらかじめ歩容の加減速度(次回歩容初期速度−今回歩容初期速度)/今回歩容の周期)の許容範囲を設定して置き、要求(歩容周期に関する要求パラメータ)を受けた時点で、該要求に対応する加減速度を求め、その求めた加減速度が許容範囲を越えていたら、許容範囲になるように、要求を修正しても良い。
補足すると、前記ΔMp、ΔFp、ΔMr、ΔFr、ΔMazおよびΔMbzは、上記のごとく単純な動力学モデルを用いる場合には、動力学演算により解析的に求めても良いが、一般的なより複雑な動力学モデルを用いる場合には、上体3を上体並進モードで微小量だけ加速または上体傾斜モードで微小量だけ加速させた場合の床反力を求め、加速させなかった場合の床反力との差を求め、この差を上記微小量で割ることによって求めれば良い。
また、あらかじめ標準的な歩容におけるΔMp、ΔFp、ΔMr、ΔFr、ΔMaz、ΔMbzおよびΔMp/ΔMrなどのそれぞれの平均値を求めておいて、それを用いても良い。ΔMp、ΔFp、ΔMr、ΔFr、ΔMaz、ΔMbzおよびΔMp/ΔMrは、状態(姿勢とその変化率)によって変わるので、各瞬間の状態ごとに求める方法に較べて、精度は若干低下するが、上記モデルよりも複雑なモデルを用いた場合には、演算量を大幅に低減できる。
今回歩容の逆位相腕振り復元角加速度パターンの台形高さbzcurrを決定する方法として、以下の方法を用いても良い。
前記逆位相腕振り復元角加速度修正歩容(図42のS722の説明を参照)の今回歩容終端時点での逆位相腕振り角と角速度をそれぞれθzcurr、vθzcurrとし、これらと、定常歩容の逆位相腕振り角、角速度との差をΔθzcerr、Δvθzcerrとする。
歩容周期をインターバルとし、仮今回歩容の終端逆位相腕振り角、角速度と定常歩容の初期逆位相腕振り角、角速度との差θzerr、vθzerrを前回状態、bzcurrを入力、Δθzcerr、Δvθzcerrを今回状態とする離散系の状態方程式を立てて、Δθzcerr、Δvθzcerrを0に収束させるように、現代制御理論等を用いてフィードバック則を決定し、これに基づいてbzcurrを求めても良い。
今回歩容およびまたは定常歩容の逆位相腕振り復元角加速度βarecは、台形パターンとせず、各瞬間において、目標逆位相腕振り角・角速度と基準逆位相腕振り角・角速度との差などを基に、その差が0に収束するように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βarecの値を決定しても良い。
今回歩容の逆位相腕振り復元角加速度βarecは、台形パターンとせず、各瞬間において今回歩容の目標逆位相腕振り角・角速度を基に、これらが第1旋回歩容の初期逆位相腕振り角・角速度に近づくように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βarecを決定しても良い。
斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分許容範囲の代わりに、並進床反力の床面平行成分(床面に平行な成分)、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分(これは摩擦力に比例する)の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分(摩擦力)の許容範囲を設定する場合に関して説明(この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である)すると、該摩擦力は、床面の水平面に対する傾斜角度θf(ロボット1の進行方向に向かって前下がり斜面の場合を正とする)とすると、次式72の関係が成立する。従って、前記第1参考例と同様のアルゴリズムに歩容を生成する場合、この式72の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式72の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
摩擦力=床反力水平成分*cos(θf)−床反力鉛直成分*sin(θf)
…式72
また、斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力モーメント鉛直成分は、式1072によって床面摩擦力法線方向モーメントに変換することができるので、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち床面摩擦力法線方向モーメントの許容範囲の許容範囲を設定するようにしてもよい。
床面摩擦力法線方向モーメント=床反力モーメント鉛直成分*cos(θf)
…式1072
今回歩容のパラメータ決定は、前記第1参考例のように前回歩容が完了した時点で行う以外に、本願出願人によるPCT公開公報WO/02/40224に記述されているように、今回歩容の生成途中で、再決定しても良い。こうすることにより、演算量は増えるが、歩容に対する要求に変更があった時に即応できるからである。
また、歩容の修正(今回歩容パラメータを再決定すること)が、今回制御周期で間に合わない場合には、とりあえず今回は、修正しない歩容あるいは暫定的に修正した歩容(探索途中の歩容であって、完全には、探索完了条件(歩容境界条件のずれが許容値以内に入っていること)を満足していない歩容)を出力し、次回制御周期までに、あるいは複数制御周期後までに(暫定的でない)適切な修正歩容にしても良い。修正された目標ZMP軌道と目標床反力鉛直成分軌道は連続であり、短時間後では、これらが急激に変化することはないので、今回歩容の目標ZMP軌道と目標床反力鉛直成分軌道が若干ぎざぎざになるだけで、ほとんど問題はない。
また、前記第1参考例では、図5の走行歩容を生成する場合を例に採って説明したが、ロボット1の歩行歩容を生成する場合でも、前記第1参考例と同様に目標歩容を生成できる。この場合には、例えば前記第1参考例において、目標床反力鉛直成分を前記図6に示したものに代えて、例えば図50に示すようなパターンで設定すればよい。この例では、床反力鉛直成分軌道は、両脚支持期では床反力鉛直成分の増加側に凸の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸の台形状に設定される。なお、台形部分の高さC1、C2の設定方法などの詳細は、例えば本願出願人によるPCT公開公報WO/03/057425/A1に詳細に説明されているのでここでの説明は省略する。
次に、以上説明した第1参考例およびその変形態様を基礎として、第2参考例を図53〜図58を参照して説明する。なお、本第2参考例の説明において、前記第1参考例と同一構成部分もしくは同一機能部分については前記第1参考例と同一の参照符号を用いて説明を省略する。特に、本第2参考例は、先にも述べたように、前記図1〜図3および図5〜図12を参照して説明した事項は、前記第1参考例と同一である。
本第2参考例が前記第1参考例と相違する点の概要を説明すると、本第2参考例では、目標上体姿勢角と実上体姿勢角の差である実上体姿勢角偏差(上体3の鉛直方向に対する傾き角の偏差およびヨー角の偏差)、及び/又はその変化率を0に近づけるために、コンプライアンス制御への目標床反力を操作することに加え、目標歩容も修正するようにした。特に、実上体姿勢偏差のうちのヨー角成分及び/又はその角速度に応じて、目標歩容に動力学的に釣り合う(目標歩容の運動の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの鉛直成分に釣り合う)目標ZMPまわりの床反力モーメントの鉛直成分も修正するようにした。
本第2参考例における制御ユニット60の機能的構成を表すブロック図を図53に示す。以下、本第2参考例における制御ユニット60の機能的構成が前記第1参考例のもの(図4のもの)と相違する点を説明する。
本第2参考例においては、姿勢傾斜安定化制御演算部112において算出される補償全床反力モーメント水平成分Mdmdxyは、補償全床反力モーメント水平成分分配器110に入力される。補償全床反力モーメント水平成分分配器110は、補償全床反力モーメント水平成分Mdmdxyを、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とに分配する。換言すれば、実上体姿勢傾斜角偏差を基に、姿勢傾斜安定化制御演算部112及び補償全床反力モーメント水平成分分配器110により、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とが決定される。
具体的には、補償全床反力モーメント水平成分分配器110においては、まず、モデル操作床反力モーメント水平成分が次式で決定される。なお、床反力モーメント水平成分許容範囲は、後述するごとく歩容生成装置100において決定される。
Mdmdxy>床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分=−Mdmdxy
+床反力モーメント水平成分許容範囲上限値
Mdmdxy<床反力モーメント水平成分許容範囲下限値である場合
モデル操作床反力モーメント水平成分=−Mdmdxy
+床反力モーメント水平成分許容範囲下限値
床反力モーメント水平成分許容範囲下限値≦Mdmdxy、且つ、Mdmdxy≦床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分=0
……式d27a
次に、コンプライアンス制御用目標床反力モーメント水平成分が次式で決定される。
コンプライアンス制御用目標床反力モーメント水平成分
=Mdmdxy+モデル操作床反力モーメント水平成分
……式d27b
従って、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がMdmdxyに等しくなるようにそれらの床反力モーメント水平成分が決定される。
上記のような演算を行なう補償全床反力モーメント水平成分分配器110をブロック図で表すと、図54に示すようになる。
また、ヨー安定化制御演算部113において前記第1参考例と同様に決定された補償全床反力モーメント鉛直成分Mdmdz(前記式d26を参照)は、モデル操作床反力モーメント鉛直成分決定器111に入力される。モデル操作床反力モーメント鉛直成分決定器111は、補償全床反力モーメント鉛直成分Mdmdzを基に、モデル操作床反力モーメント鉛直成分を決定する。換言すれば、実上体姿勢角偏差のうちの上体ヨー角偏差を基に、ヨー安定化制御演算部113及びモデル操作床反力モーメント鉛直成分決定器111により、補償全床反力モーメント鉛直成分Mdmdzとモデル操作床反力モーメント鉛直成分とが決定される。
具体的には、モデル操作床反力モーメント鉛直成分決定器111において、モデル操作床反力モーメント鉛直成分が次式で決定される。なお、床反力モーメント鉛直成分補償量許容範囲は、後述するごとく歩容生成装置100において決定される。
Mdmdz>床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分=−Mdmdz
+床反力モーメント鉛直成分補償量許容範囲上限値
Mdmdz<床反力モーメント鉛直成分補償量許容範囲下限値である場合
モデル操作床反力モーメント鉛直成分=−Mdmdz
+床反力モーメント鉛直成分補償量許容範囲下限値
床反力モーメント鉛直成分補償量許容範囲下限値≦Mdmdz、且つ、Mdmdz≦床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分=0
……式d26b
上記のような演算を行なうモデル操作床反力モーメント鉛直成分決定器111をブロック図で表すと、図55に示すようになる。従って、モデル操作床反力モーメント鉛直成分は、補償全床反力モーメント鉛直成分Mdmdzのうち、床反力モーメント鉛直成分補償量許容範囲を逸脱した分の符号を反転させたものに設定される。
コンプライアンス制御用目標床反力モーメント水平成分および補償全床反力モーメント鉛直成分Mdmdzは、複合コンプライアンス動作決定部104に送られる。
モデル操作床反力モーメント水平成分および鉛直成分は、歩容生成装置100に送られる。
尚、補償全床反力モーメント鉛直成分Mdmdzの代わりに、補償全床反力モーメント鉛直成分Mdmdzとモデル操作床反力モーメント鉛直成分との和を、コンプライアンス制御用目標値として、複合コンプライアンス動作決定部104に送っても良い。
複合コンプライアンス動作決定部104は、歩容生成装置100が生成する目標歩容の運動にロボット1の運動を追従させつつ、歩容生成装置100が生成する目標全床反力にコンプライアンス制御用目標床反力モーメント水平成分と補償全床反力モーメント鉛直成分Mdmdzを加えることによって修正される目標全床反力に実床反力が近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。
この場合、ロボット1の足平位置姿勢や床反力の全ての状態を目標に一致させることは事実上不可能であるので、前記第1参考例と同様、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。
詳細は後述するが、歩容生成装置100は、該歩容生成装置100において決定される目標ZMPまわりの床反力モーメント水平成分がモデル操作床反力モーメント水平成分となるように動力学モデルを用いて目標歩容の運動(特に上体位置姿勢軌道)を生成する。さらに、歩容生成装置100は、モデル操作床反力モーメントが0であるとして生成された目標歩容(仮目標歩容)に動力学的に釣り合う目標全床反力中心点(目標ZMP)回りの目標床反力モーメント鉛直成分にモデル操作床反力モーメント鉛直成分が付加的に発生するように目標歩容の運動(特に腕振り軌道)を修正する。
これら以外の、制御ユニット60の機能的構成は、前記第1参考例と同一である。補足すると、前記第1参考例で生成した目標歩容は、本第2参考例で、前記モデル操作床反力モーメント水平成分と、モデル操作床反力モーメント鉛直成分とを定常的に0に設定した場合に生成される目標歩容と同じである。
第2参考例における歩容生成装置100の動作(歩容生成処理)をそのメインフローチャートである図56を用いて以下に詳説する。S3010からS3028までは、前記第1参考例の図13のS010からS028と同様の処理を行う。
次いで、S3030に進み、コンプライアンス制御用の目標ZMPまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータが決定される。
なお、床反力モーメント水平成分を、床反力鉛直成分で割ったものが、ZMP(床反力中心点)の目標ZMPからのずれ量を表すものとなる。従って、床反力モーメント水平成分許容範囲を、床反力鉛直成分で割ることによって、床反力中心点に変換したZMP許容範囲(床反力中心点許容範囲)のパラメータを設定するようにしてもよい。
補足すると、S3030で決定するコンプライアンス制御用の床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分補償量許容範囲のパラメータとを基に、後述する今回歩容瞬時値決定サブルーチン(S3032のサブルーチン)において、それらの許容範囲の瞬時値が決定され、それが、前記補償全床反力モーメント水平成分分配器110およびモデル操作床反力モーメント鉛直成分決定器111における前記の処理に用いられる。
この床反力モーメント水平成分許容範囲については、本願出願人によるPCT出願PCT/JP03/00435に床反力モーメント許容範囲として設定方法が詳細に記載されているので、本明細書では、これ以上の説明を省略する。
前記床反力モーメント鉛直成分補償量は、歩容生成装置100において、仮に、床反力モーメント鉛直成分が歩容生成用の床反力モーメント鉛直成分許容範囲(これはS3026において設定される)内に制限された目標歩容を生成した場合に、目標歩容の運動が発生する床反力モーメントに付加することができる床反力モーメント鉛直成分の補償量を意味する。したがって、歩容生成用の床反力モーメント鉛直成分許容範囲が実際の摩擦限界よりも十分に狭く設定されていなければ、床反力モーメント鉛直成分補償量許容範囲を広く設定することはできない。
床反力モーメント鉛直成分補償量許容範囲は、歩容生成用の床反力モーメント鉛直成分許容範囲(前記図41を参照)と相似形に設定すれば良い。また、前記図5の走行歩容の空中期では、コンプライアンス制御用の床反力モーメント鉛直成分補償量許容範囲は、上限値が0、下限値が0の領域に設定される。
図56に戻って、上記のごとくS3030においてコンプライアンス制御用の目標ZMPまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータを決定した後、あるいはS3016の判断結果がNOである場合には、S3032に進み、今回歩容瞬時値が決定される。S3032では、目標ZMPまわりに前記式d27aに従って決定されるモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値が決定される。ただし、今回歩容に釣り合う(今回歩容の運動の慣性力と重力との合力が目標ZMPまわりに発生する慣性力モーメントの鉛直成分に釣り合う)床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲を越えないように今回歩容瞬時値が決定される。
具体的には、図57、図58のフローチャートにしたがって歩容瞬時値が決定される。すなわち、S3030では、まず、図57のS3400からS3411までの処理が実行される。これらのS3400からS3411までの処理は、前述した図45のS1400からS1411までの処理と全く同一である。
次いで、S3412に進み、前記図56のS3030で決定したコンプライアンス制御用の床反力モーメント水平成分許容範囲および床反力モーメント鉛直成分補償量容範囲のパラメータを基に、現在時刻での床反力モーメント水平成分許容範囲[Mxymin,Mxymax]と床反力モーメント鉛直成分補償量許容範囲[Mzcmin,Mzcmax]の瞬時値(現在時刻tの今回値)が求められる。
求められた床反力モーメント水平成分許容範囲は、前記補償全床反力モーメント水平成分分配器110(図53参照)に送られる。そして、この分配器110で前記式d27aにより算出されたモデル操作床反力モーメントの今回値(現在時刻tの値)が歩容生成装置100に与えられる。
また、求められた床反力モーメント鉛直成分補償量容範囲は、前記モデル操作床反力モーメント鉛直成分決定器111(図53参照)に送られる。そして、このモデル操作床反力モーメント鉛直成分決定器111で前記式d26bにより算出されたモデル操作床反力モーメント鉛直成分の今回値(現在時刻tの値)が歩容生成装置100に与えられる。
次いで、歩容生成装置100の処理は、S3414に進み、補償全床反力モーメント分配器110から与えられたモデル操作床反力モーメント水平成分が目標ZMPまわりに発生するように、今回歩容の上体水平加速度と上体姿勢傾斜角加速とが決定される。ただし、床反力水平成分Fxが、S3410で決定された床反力水平成分許容範囲[Fxmin,Fxmax]を越えないように上体水平加速度および上体姿勢角加速度(上体傾斜角加速度)が決定される。
言い換えると、ロボット1の運動の慣性力と重力との合力が目標ZMPまわりに作用するモーメント水平成分がモデル操作床反力モーメント水平成分の符号を反転したモーメントになるように、今回歩容の上体水平加速度と上体姿勢角加速(上体傾斜角加速度)とが決定される。ただし、慣性力水平成分の符号を反転した力が床反力水平成分許容範囲[Fxmin,Fxmax]を越えないように上体水平加速度および上体姿勢傾斜角加速度が決定される。
S3414では、具体的には、図58に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度とが決定される。本フローチャートは、S3104およびS3130を除いて、前記図26と同様の処理が行われる。S3104およびS3130では、図26のS504およびS530と異なり、ロボット1の前回瞬時歩容状態(時刻k−1の歩容状態)から、上体傾斜モードの角加速度を0にして(より正確には上体傾斜モードの角加速度を基準上体姿勢角加速度に一致させて)、上体並進モードの運動をロボット1にさせた場合に今回(時刻k)の目標ZMPまわりに前記モデル操作床反力モーメント水平成分が発生するために必要な上体水平加速度(S3104ではαtmp、S3130ではα)が求められる。
これ以外の処理は図26の処理と同じである。
以上のごとくS3414の処理を行った後、S3416に進み、図45のS1414と同一の処理が実行され、今回歩容の上体水平位置および上体姿勢傾斜角(詳しくはそれらの現在時刻tにおける今回値)が決定される。
次いでS3418に進み、図45のS1416と同一の処理が実行され、今回歩容の逆位相腕振り角および角速度(詳しくはそれらの現在時刻tにおける今回値)が決定される。
これにより、図56のS3032の処理が完了する。
次いで図56のS3034に進み、目標ZMPまわりにモデル操作床反力モーメント鉛直成分が付加的に発生するように、S3032で生成した今回歩容瞬時値を修正する。
具体的には、モデル操作床反力モーメント鉛直成分に対応する逆位相腕振り角加速度の修正量βaaddを次式によって求める。
逆位相腕振り角加速度の修正量βaadd
=モデル操作床反力モーメント鉛直成分
/逆位相腕振り運動の等価慣性モーメントΔMaz
さらに、βaaddを制御周期の期間積分して、逆位相腕振り角速度の修正量を求め、さらにこれを積分して逆位相腕振り角の修正量を求める。
最後に、S3032で生成した今回歩容の逆位相腕振り角および角速度にそれぞれ、逆位相腕振り角速度の修正量および逆位相腕振り角の修正量を加えることにより、今回歩容の逆位相腕振り角および角速度を修正する。
次いでS3036に進み、時刻tに制御周期Δtを加え、再び、S3014に戻り、制御周期毎のタイマー割り込みを待つ。
第2参考例では、以上のごとく、歩容生成装置100における目標歩容生成処理が行なわれ、目標上体位置姿勢、目標足平位置姿勢、目標腕姿勢(逆位相腕振り角を含む)、目標ZMPおよび目標全床反力の瞬時値が逐次決定されて出力される。
この場合、目標全床反力は、コンプライアンス制御に必要な成分だけを出力しても良い。なお、目標ZMPは、目標全床反力に含まれるが特に重要であるので、あえて出力として挙げた。また、複合コンプライアンス制御装置(図53の点線で囲った部分)に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、コンプライアンス制御に対しては、目標ZMPまわりの床反力モーメント水平成分が0になることを目標とする目標床反力(本来の意味での目標ZMPを満足する目標床反力)が、歩容生成装置100から出力される。
また、複合コンプライアンス制御装置に対しては、S3034において修正された今回歩容の床反力モーメント鉛直成分が目標値として歩容生成装置100から出力される。
以上説明した第2参考例の作用1として、目標歩容の運動は、モデル操作床反力モーメント水平成分が目標ZMPまわりに発生するように生成されつつ、実際のロボッ1の床反力は、モデル操作床反力モーメント水平成分が付加されないように制御される。したがって、差し引きモデル操作床反力モーメント水平成分の分だけ、目標歩容の運動と床反力の不平衡(アンバランス)を生じる。このことは、実ロボット1の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を0に収束させる効果に関して言えば、モデル操作床反力モーメント水平成分の符号を反転した床反力モーメント水平成分を実ロボット1に作用させることと等価である。
つまり、モデル操作床反力モーメント水平成分を適宜決定することにより、実ロボット1を、修正目標歩容(実ロボット1の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を0に収束させる歩容)に収束させることができる。つまり、実ロボット1の姿勢傾斜を安定化させることができる。
作用2として、モデル操作床反力モーメント水平成分の符号を反転したモーメントとコンプライアンス制御用目標床反力モーメント水平成分との和がトータルの傾斜復元力(ロボット1の実上体姿勢傾斜角を目標上体姿勢傾斜角に復元させる力)になる。すなわち、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がトータルの姿勢傾斜復元力になる。
また、作用3として、モデル操作床反力モーメント水平成分は、ZMP存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢傾斜復元力を発生することができる。
また、作用4として、床反力水平成分が、床反力水平成分許容範囲を越えないように上体並進モードの上体並進加速度と上体傾斜モードの上体姿勢傾斜角加速度とが決定されるので、走行歩容における支持脚側脚体2の離床直前や着床直後など、大きな床反力水平成分を発生できない時期や、摩擦係数の小さい床をロボット1が移動する場合においてもロボット1のスリップを防止することができる。
また、作用5として、床反力の並進力鉛直成分が0の時期、すなわち、両脚がいずれも接地していない時期では、床反力水平成分の許容範囲が0に設定されることにより、前記した第2参考例のアルゴリズムにより自動的に、上体並進モードに依存せずに上体傾斜モードに依存した姿勢傾斜復元が行われ、床と足底の間の摩擦力に依存せずに姿勢復元が行われる。したがって、この時期(空中期)においても、単に、上体並進モードを修正するだけの方式と異なり、有効に姿勢傾斜復元作用が働く。なお、この時には、床反力水平成分が0になるように生成されるから、歩容の全体重心水平加速度は0となる。
また、作用6として、上記したごとく、コンプライアンス制御に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、目標ZMPまわりにモデル操作床反力モーメント水平成分を発生させるように歩容生成が行なわれても、コンプライアンス制御に対しては、目標ZMPまわりの床反力モーメント水平成分が0になることを目標とする目標床反力が、歩容生成装置100から与えられる。したがって、コンプライアンス制御による床反力制御を妨げず、コンプライアンス制御による床反力制御を適切に行うことができる。より具体的には、足平22の本来の接地性が低下したり、足平22の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
なお、後述するように、第3参考例以降でも、目標ZMPまわりのコンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲を越えないように決定される。
なお、作用1から6は、本願出願人が先に提案したPCT/JP03/00435の技術と同様である。
作用7として、目標歩容の運動は、モデル操作床反力モーメント鉛直成分が目標ZMPまわりに付加的に発生するように生成されつつ、実際のロボット1の床反力は、歩容生成装置100によりモデル操作床反力モーメント鉛直成分が付加された目標歩容に釣り合う目標床反力モーメント鉛直成分に補償全床反力モーメント鉛直成分Mdmdzを加えたものを目標値として、複合コンプライアンス制御により前記目標値に近づくように実床反力が制御される。Mdmdzが大きくなってくると、Mdmdzと逆方向のモデル操作床反力モーメント鉛直成分が目標歩容に付加されることから、複合コンプライアンス制御により前記目標値に近づくように実床反力を制御するようにしても、実床反力のモーメントの鉛直成分が過大になることがなく、その結果、実ロボット1のスピンを生じることなく、実ロボット1の上体姿勢ヨー角及び/又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び/又はヨー角速度との差を0に収束させる効果を奏することができる。
つまり、モデル操作床反力モーメント鉛直成分を適宜決定することにより、実ロボット1を、そのスピンが生じないようにしつつ、修正目標歩容(実ロボット1の上体姿勢ヨー角及び/又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び/又は上体姿勢ヨー角速度との差を0に収束させる歩容)に収束させることができる。つまり、実ロボット1のヨー回転を安定化させることができる。
作用8として、補償全床反力モーメント鉛直成分Mdmdzがトータルのヨー回転復元力になる。補償全床反力モーメント鉛直成分Mdmdzはヨー角偏差および/またはヨー角速度偏差を0に近づけるようにフィードバック制御則に基づき決定されるので、ヨー角偏差の制御的な安定性が保証されつつ、ヨー角偏差および/またはヨー角速度偏差を0に近づけることができる。
また、作用9として、モデル操作床反力モーメント鉛直成分は、床反力モーメント鉛直成分の許容範囲(あるいは摩擦限界)を無視していかなる値でも取ることが可能であるので、非常に高い姿勢ヨー回転復元力を発生することができる。
また、作用10として、コンプライアンス制御に対しては、最終的に目標床反力モーメント鉛直成分が、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲の和の範囲を越えないように決定されるので、走行歩容における支持脚側脚体2の離床直前や着床直後など、大きな床反力モーメント鉛直成分を発生できない時期や、摩擦係数の小さい床をロボット1が移動する場合においてもコンプライアンス制御による床反力制御を適切に行うことができ、ロボット1のスピンを防止することができる。より具体的には、足平22の本来の接地性が低下したり、足平22の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
また、作用11として、床反力の並進力鉛直成分が0の時期、すなわち、両脚がいずれも接地していない時期では、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲が0に設定されることにより、前記した本第2参考例のアルゴリズムにより自動的に、実床反力モーメント鉛直成分に依存せずに逆位相腕振りモードに依存したヨー回転復元が行われ、床と足底の間の摩擦力に依存せずにヨー回転復元が行われる。したがって、この時期(空中期)においても、単に、コンプライアンス制御の目標床反力モーメント鉛直成分を修正するだけの方式と異なり、有効にヨー回転復元作用が働く。
作用12として、目標ZMPまわりに発生するモーメント水平成分が0になるように生成したとした場合の歩容を元歩容、前記第2参考例の如く目標ZMPまわりに発生するモーメント水平成分がモデル操作床反力モーメント水平成分になり、且つ、目標ZMPまわりに発生するモーメント鉛直成分に付加的にモデル操作床反力モーメント鉛直成分が発生するように生成される歩容を修正歩容と呼ぶと、通常、元歩容と修正歩容とは異なる歩容となる。元歩容は定常歩容に漸近するように設定されているので、修正歩容は、通常、定常歩容に漸近しない歩容となる。
しかし、今回歩容(修正歩容)の生成が完了した直後に、再びS3020からS3028が実行され、修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、新たに設定される定常歩容に漸近するように、新たな今回歩容パラメータが決定されるので、継続的に(長期的に)安定性が保証された歩容を生成し続けることができる。
上記した作用12は、本願出願人が先に提案したPCT/JP03/00435の技術とほぼ同様である。但し、これに加えて本第2参考例では、次のような作用も発生する。すなわち、ヨー角回転復元のために修正された逆位相腕振り角および角速度の終端状態を新たな初期状態とした新たな今回歩容の逆位相腕振り角軌道が新たに設定される定常歩容の逆位相腕振り角軌道に漸近するように、新たな今回歩容の逆位相腕振り角軌道に関するパラメータが決定されるので、継続的に(長期的に)逆位相腕振り角の安定性が保証された歩容を生成し続けることができる。
なお、本第2参考例では、補償全床反力モーメント水平成分Mdmdxyが床反力モーメント水平成分許容範囲内の値であるときには、モデル操作床反力モーメント水平成分は0になるが、このときのモデル操作床反力モーメント水平成分を図12の動力学モデルの状態量(例えば動力学モデル上でのロボットの重心位置や、上体質点3mの位置等)に応じて設定するようにしてもよい。
また、本第2参考例では、補償全床反力モーメント鉛直成分Mdmdzが床反力モーメント鉛直成分補償量許容範囲内の値であるときには、モデル操作床反力モーメント鉛直成分補償量は0になるが、このときのモデル操作床反力モーメント鉛直成分補償量を図12の動力学モデルの状態量(例えば動力学モデル上でのロボット1の逆位相腕振り角および角速度、上体ヨー角および角速度等)に応じて設定するようにしてもよい。
次に本発明の第3参考例を図59〜図62を参照して説明する。なお、第3参考例の説明において、前記第1参考例もしくは前記第2参考例と同一構成部分もしくは同一機能部分については前記第1参考例もしくは第2参考例と同一の参照符号を用いて説明を省略する。第3参考例は、前記第1参考例で前記図1〜図3および図5〜図12を参照して説明した事項は、前記第1参考例と同一である。
第3参考例が前記第1参考例および第2参考例と相違する点の概要を説明すると、元歩容と修正歩容が同時に生成される。修正歩容は、実ロボット1の上体姿勢(傾斜角およびヨー角)の安定化のために元歩容から修正される。さらに、該修正歩容は、コンプライアンス制御により姿勢復元に必要な床反力モーメントを発生してもまだ余裕がある(目標ZMPまわりに発生可能な床反力モーメントに余裕がある)場合には、この余裕を用いて、可能な範囲で元歩容に収束するように決定される。
第3参考例における制御ユニット60の機能的構成を表すブロック図を図59に示す。第3参考例では、姿勢傾斜安定化制御演算部112が求める補償全床反力モーメント水平成分Mdmdxyは、歩容生成装置100に入力される。
また、ヨー安定化制御演算部113が求める補償全床反力モーメント鉛直成分Mdmdzも、歩容生成装置100に入力される。
そして、このMdmdxyおよびMdmdzを基にモデル操作床反力モーメント(水平成分および鉛直成分)とコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)とを決定する補償全床反力モーメント分配器120が、歩容生成装置100に組み込まれ、該歩容生成装置100からコンプライアンス制御用目標床反力モーメントが複合コンプライアンス動作決定部104に出力される。そして、歩容生成装置100内の補償全床反力モーメント分配器120は後述するように、前記第2参考例の補償全床反力モーメント水平成分分配器110およびモデル操作床反力モーメント鉛直成分決定器111よりも複雑な処理を行う。これ以外の、制御ユニット60の機能的構成は、前記第2参考例と同一である。
図60に第3参考例における歩容生成装置100のメインルーチン処理のフローチャートを示す。
同図60おいて、S2010からS2028までは、前記第1参考例のメインフローチャート(図13)のS010からS028までの処理と同一の処理が行なわれる。なお、S028(本実施形態ではS2028)のサブルーチンである図43のフローチャートのS800における初期化においては、今回歩容初期状態は、前回修正歩容(歩容生成装置100が最終的に出力する歩容)の終端状態を今回支持脚座標系に変換したものであり、後述のS2032で決定される元歩容の終端状態は、S2028のサブルーチンのS800では用いられない。
次いでS2030に進み、コンプライアンス制御用の床反力モーメント水平成分許容範囲を決定する。この床反力モーメント水平成分許容範囲の決定方法は、第2参考例のS3032(図56)と同様である。
S2030の処理を完了した後、あるいはS2016の判断結果がNOである場合には、S2032に進み、元歩容の瞬時値(時刻tの今回値)が決定される。元歩容は、目標ZMPまわりの床反力モーメント水平成分が0になるように生成される歩容である。
この元歩容は、前記第2参考例の図56のS3032のサブルーチン処理の一部を変更したアルゴリズムによって生成される。すなわち、S3032内のサブルーチン処理(詳しくはS3032のサブルーチン処理である図57のS3414のサブルーチン処理)である図58のS3104およびS3130において、モデル操作床反力モーメント水平成分を0として(目標ZMPまわりの目標床反力モーメント水平成分を0として)、上体水平加速度αtmpが求められる。これ以外の処理は、図56のS3032の処理と同一でよい。
次いで、S2034に進み、修正歩容の瞬時値を決定する。なお、修正歩容は、歩容生成装置100から最終的に出力される目標歩容である。
S2034の処理は、図61のフローチャートで示すサブルーチン処理により行なわれ、以下にその詳細を説明する。
まずS2100からS2111までは、第2参考例で説明した図57のS3400からS3411と同一の処理が実行される。
次いで、S2112に進み、歩容パラメータを基に現在時刻での床反力モーメント水平成分許容範囲[Mxymin,Mxymax]を求める。これは、図57のS3412での床反力モーメント水平成分許容範囲[Mxymin,Mxymax]の決定と同様に行われる。
次いで、S2114に進み、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント(水平成分および鉛直成分)、コンプライアンス制御用目標床反力モーメント、上体水平加速度、上体姿勢傾斜角加速および逆位相腕振り角加速度が決定される。
S2114の詳細を、その処理を示す図62のフローチャートを用いて、以下に説明する。
まず、S2200において、修正歩容の上体水平位置と元歩容の上体水平位置との差であるモデル間上体水平位置差が求められる。この時点では、修正歩容の上体水平位置の今回値(時刻tでの値)は未だ求められていない。そこで、S2200では、修正歩容の上体水平位置の前回値(時刻t−Δtの制御周期で最終的に求められた値)と、元歩容の上体水平位置の前回値(時刻t−Δtの制御周期でS2032において求められた値)あるいは今回値(時刻tの制御周期でS2032において求められた値)とを用いて、モデル間上体水平位置差が算出される。
次いで、S2202に進み、修正歩容の上体姿勢傾斜角と元歩容の上体姿勢傾斜角との差であるモデル間上体姿勢傾斜角差が求められる。このS2202では、S2200のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の上体姿勢傾斜角の前回値と、元歩容の上体姿勢傾斜角の前回値又は今回値とを用いてモデル間上体姿勢傾斜角差が求められる。
次いで、S2204に進み、修正歩容の逆位相腕振り角と元歩容の逆位相腕振り角との差であるモデル間逆位相腕振り角差が求められる。このS2204では、S2200のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の逆位相腕振り角の前回値と、元歩容の逆位相腕振り角の前回値又は今回値とを用いてモデル間逆位相腕振り角差が求められる。
次いで、S2206に進み、モデル間上体水平位置差を基に、その差を0に収束させるために必要なモデル上体水平位置安定化床反力モーメント要求値Mpfdmdが決定される。単に修正歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントに一致させると、モデル間上体水平位置差は発散する。モデル上体水平位置安定化床反力モーメント要求値Mpfdmdは、前記上体並進モードによって修正歩容の上体水平位置を元歩容の上体水平位置に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル上体水平位置安定化床反力モーメント要求値Mpfdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、PD制御則を用いているが、PID等、他のフィードバック制御則を用いてもよい。
Mpfdmd=Kmp*モデル間上体水平位置差
+Kmpv*モデル間上体水平位置差の時間微分値
……式d28
但し、Kmp、Kmpvはフィードバックゲイン(比例ゲイン、微分ゲイン)である。
次いで、S2208に進み、モデル間上体姿勢傾斜角差を基に、その差を0に収束させるために必要なモデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdが決定される。単に修正歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントに一致させると、モデル間上体姿勢傾斜角差は0に収束しない。モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdは、上体傾斜モードによって修正歩容の上体姿勢傾斜角を元歩容の上体姿勢傾斜角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdは、例えば次式のフィードバック制御則によって決定される。
この例では、フィードバック制御則として、PD制御則を用いているが、PID等、他のフィードバック制御則を用いてもよい。
Mrfdmd=Kmr*モデル間上体姿勢傾斜角差
+Kmrv*モデル間上体姿勢傾斜角差の時間微分値
……式d29
但し、Kmr、Kmrvはフィードバックゲイン(比例ゲイン、微分ゲイン)である。
次いで、S2210に進み、モデル間逆位相腕振り角差を基に、その差を0に収束させるために必要なモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdが決定される。単に修正歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントに一致させると、モデル間逆位相腕振り角は0に収束しない。モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdは、逆位相腕振りモードによって修正歩容の逆位相腕振り角を元歩容の逆位相腕振り角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、PD制御則を用いているが、PID等、他のフィードバック制御則を用いてもよい。
Mafdmd=Ka*モデル間逆位相腕振り角差
+Kav*モデル間逆位相腕振り角差の時間微分値
……式d29b
但し、Kar、Kavはフィードバックゲイン(比例ゲイン、微分ゲイン)である。
ところで、最終的に決定された修正歩容の上体並進モードに伴って発生する床反力モーメント水平成分から元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体水平位置安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の上体傾斜運動モードに伴って発生する床反力モーメント水平成分から元歩容の上体傾斜運動モードの上体姿勢傾斜角加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体姿勢傾斜角安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の逆位相腕振りモードに伴って発生する床反力モーメント鉛直成分から元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメント鉛直成分を減じたモーメントを、モデル逆位相腕振り角安定化床反力モーメントと呼ぶ。
一方、摂動運動と摂動床反力とには線形性が近似的に成立する、すなわち、異なる摂動運動を元歩容の運動に加えた運動の床反力は、元歩容の床反力にそれぞれの摂動運動が発生する摂動床反力を加えたものにほぼ一致する。また、逆位相腕振りモードでは、床反力モーメント水平成分は変化しない。したがって、次式が近似的に成立する。
モデル操作床反力モーメント水平成分
=モデル上体水平位置安定化床反力モーメント
+モデル上体姿勢傾斜角安定化床反力モーメント
……式d30
この式d30が近似的に成立することと、逆位相腕振り角加速度に比例して床反力モーメント鉛直成分が変化することとを考慮しつつ、モデル上体水平位置安定化床反力モーメントをモデル上体水平位置安定化床反力モーメント要求値Mpfdmdに一致またはなるべく近くなるように決定し、かつ、モデル上体姿勢傾斜角安定化床反力モーメントをモデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdに一致またはなるべく近くなるように決定しつつ、かつ、モデル逆位相腕振り角安定化床反力モーメントをモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdに一致またはなるべく近くなるように決定すれば、修正歩容に適切なモデル操作床反力モーメントを発生させて、以下に示す復元条件を満足しつつ、修正歩容の上体水平加速度と上体姿勢傾斜角加速度とを、それぞれ元歩容の上体水平加速度と上体姿勢傾斜角加速度とに可能な範囲で収束させることができる。
そこで、S2210の後、S2212に進み、以下の条件(これらを復元条件と呼ぶ)をできる限り満足するようにモデル上体水平位置安定化床反力モーメント(上体並進モードの床反力モーメント)とモデル上体姿勢傾斜角安定化床反力モーメント(上体傾斜モードの床反力モーメント)とモデル逆位相腕振り角安定化床反力モーメントとを決定する。さらに、上記のモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとモデル逆位相腕振り角安定化床反力モーメントとの定義を満足するように、修正歩容の上体水平加速度と上体姿勢傾斜角加速度と逆位相腕振り角加速度とを決定する。なお、以下に示す復元条件は、番号が小さい条件ほど優先度が高いものとする。つまり相反して両立できない条件がある場合には、番号が小さい条件を優先して満足(成立)させる。ただし、復元条件1、2および3は必ず満足(成立)させる。
復元条件1)補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメントの和(これは、前記式d27bが成立する場合には、コンプライアンス制御用目標床反力モーメント水平成分に相当する)が床反力モーメント水平成分許容範囲を越えないこと。
復元条件2)修正歩容の床反力水平成分が床反力水平成分許容範囲を越えないこと。
復元条件3)修正歩容の床反力モーメント鉛直成分と補償全床反力モーメント鉛直成分Mdmdzの和(これは、コンプライアンス制御用目標床反力モーメント鉛直成分に相当する)が、床反力モーメント鉛直成分許容範囲を越えないこと。
復元条件4)モデル上体姿勢傾斜角安定化床反力モーメントが、モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdに一致またはできる限り近いこと。この条件は、修正歩容の上体姿勢傾斜角が元歩容(当初予定した歩容)の上体姿勢傾斜角に収束するための条件である。
復元条件5)モデル上体水平位置安定化床反力モーメントが、モデル上体水平位置安定化床反力モーメント要求値Mpfdmdに一致またはできる限り近いこと。この条件は、修正歩容の上体水平位置が元歩容(当初予定した歩容)の上体水平位置に収束するための条件である。
復元条件6)モデル逆位相腕振り角安定化床反力モーメントが、モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdに一致またはできる限り近いこと。この条件は、修正歩容の逆位相腕振り角が元歩容(当初予定した歩容)の逆位相腕振り角に収束するための条件である。
復元条件7)モデル上体姿勢傾斜角安定化床反力モーメント、モデル上体水平位置安定化床反力モーメントおよびモデル逆位相腕振り角安定化床反力モーメントがそれぞれ連続であること。
上記のような復元条件1〜6を満足するような上体水平加速度、上体姿勢傾斜角加速度、逆位相腕振り角加速度等を決定するS2212の処理は具体的には例えば次のように実行される。
まず、上記復元条件1、2、4および5を満足するように、モデル上体水平位置安定化床反力モーメントおよびモデル上体姿勢傾斜角安定化床反力モーメントが決定され、さらに上体水平加速度および上体姿勢傾斜角加速度が決定される。この処理の詳細は、本願出願人が先に提案したPCT/JP03/00435の技術に記載されているので、ここでは説明を省略する。
次いで、上記復元条件3および6を満足するようにモデル逆位相腕振り安定化床反力モーメントが決定され、さらに逆位相腕振り角加速度が決定される。
具体的には、上記のごとく決定された上体水平加速度および上体姿勢傾斜角加速度と元歩容の逆位相腕振り角加速度βaorgで仮に運動した場合に発生する(運動に動力学的に釣り合う)目標ZMPまわりの床反力モーメント鉛直成分を求める。以降、これを無補正時床反力モーメント鉛直成分と呼ぶ。
次いで、次式のように、無補正時床反力モーメント鉛直成分とモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdと補償全床反力モーメント鉛直成分Mdmdzとの和Msumzを求める。
Msumz=無補正時床反力モーメント鉛直成分
+Mafdmd+Mdmdz
次いで、次式により、モデル逆位相腕振り安定化床反力モーメントが決定される。
Msumz>床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント=−Mdmdz
−無補正時床反力モーメント鉛直成分
+床反力モーメント鉛直成分許容範囲上限値
Msumz<床反力モーメント鉛直成分許容範囲下限値である場合
モデル逆位相腕振り安定化床反力モーメント=−Mdmdz
−無補正時床反力モーメント鉛直成分
+床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Msumz、且つ、Msumz≦床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント
=モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmd
……式d26c
次いで、修正歩容の逆位相腕振り角加速度が次式によって求められる。
修正歩容の逆位相腕振り角加速度
=元歩容の逆位相腕振り角加速度βaorg
+モデル逆位相腕振り安定化床反力モーメント
/腕振り運動の等価慣性モーメントΔMaz
修正歩容の床反力モーメント鉛直成分は、元歩容の逆位相腕振り角加速度βaorgとモデル逆位相腕振り安定化床反力モーメントの和であることから、上式のごとくモデル逆位相腕振り安定化床反力モーメントを決定することにより、上記復元条件3が満足される。
上述したようにS2212の処理を実行した後、S2214に進み、前記式d30により、モデル操作床反力モーメント水平成分が決定される。すなわち、S2208で求めたモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとの和がモデル操作床反力モーメント水平成分として決定される。なお、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ZMPまわりの床反力モーメントを直接算出して、これをもってモデル操作床反力モーメントとしても良い。
次いで、S2216に進み、前記式d27bにより、コンプライアンス制御用目標床反力モーメント水平成分が決定される。すなわち、補償全床反力モーメント水平成分MdmdxyとS2214で求めたモデル操作床反力モーメント水平成分との和がコンプライアンス制御用目標床反力モーメント水平成分として決定される。
次いで、S2218に進み、図示する式によって、コンプライアンス制御用目標床反力モーメント鉛直成分を決定する。なお、図示する式における修正歩容に釣り合う(修正歩容の運動に動力学的に釣り合う)床反力モーメント鉛直成分は、無補正時床反力モーメント鉛直とモデル逆位相腕振り安定化床反力モーメントの和であるが、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ZMPまわりの床反力モーメント鉛直成分を直接算出しても良い。
以上により、図61のS2114の処理が終了し、次に、S2116に進む。このS2116の処理は、前記第2参考例における図57のS3416と同一であり、上体水平加速度の2階積分により上体水平位置の今回値が決定されると共に、上体姿勢傾斜角加速度の2階積分により上体姿勢傾斜角の今回値が決定される。
次に、S2118に進む。このS2118の処理は、前記第1実施形態における図57のS3418と同一であり、逆位相腕振り角加速度の2階積分により逆位相腕振り角の今回値が決定される。
次いで、図60のS2036に進んで、時刻tに制御周期Δtを加え、再び、S2014に戻り、制御周期毎のタイマー割り込みを待つ。
補足すると、第3参考例における動力学モデルによる歩容瞬時値決定においては、動力学モデルの状態量(あるいは前回、前前回の歩容瞬時値)も必要であるので、修正歩容生成用と元歩容生成用との2つの動力学モデルが必要である。第3参考例では、それらの動力学モデルは図12に示した動力学モデルである。
本実施形態においては、上記のごとく、元歩容と修正歩容とが並列的に生成され、修正歩容は、実ロボット1の姿勢(傾斜角およびヨー角)安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント(水平成分および鉛直成分)を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、前記第2参考例の作用効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止することが可能となる。また、修正歩容の上体姿勢傾斜角が元歩容(当初決定した歩容)の上体姿勢傾斜角に収束することを、修正歩容の上体水平位置が元歩容(当初決定した歩容)の上体水平位置に収束することよりも優先した(床反力水平成分許容範囲を満たす範囲で可能な限り上体並進モードの運動を調整した)ので、上体姿勢傾斜角が大きく変動することを抑制することができる。
次に第4参考例を図63〜図70を参照して説明する。なお、本第4参考例の説明で、前記第1〜第3参考例と同一構成部分もしくは同一機能部分については該第1〜第3参考例と同一の参照符号を用いて詳細な説明を省略する。
本第4参考例では、制御ユニット60の機能的構成は、前記第3参考例のもの、すなわち前記図59に示したものと同一である。但し、第4参考例では、歩容生成装置100が実行する歩容生成のアルゴリズムは、前記第3参考例のものと相違している。そして、歩容生成装置100以外の各部の処理は、前記第3参考例と同一である。
図63は、本実施形態における歩容生成装置100の処理の概要を示すブロック図である。この図63を参照して、歩容生成装置100の処理の概要を以下に説明する。なお、図63を用いて以下に説明する処理の概要は、後述する第5〜第7参考例についても同様である。また、第4参考例および後述の第5〜第7参考例では、前記図12の動力学モデルを単純化モデルと称する。
図示の如く、歩容生成装置100は歩容パラメータ決定部100aを備える。歩容パラメータ決定部100aは、目標歩容のパラメータ(目標歩容を規定するパラメータ)の値あるいは時系列テーブルを決定する。これは、後述の図65のフローチャートのS3520からS3530までの処理に相当する。
詳細は後述するが、歩容パラメータ決定部100aが決定するパラメータには、目標足平位置姿勢軌道、目標腕姿勢軌道、基準上体姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道等を規定するパラメータが含まれる他、床反力水平成分許容範囲を規定するパラメータと、ZMP許容範囲(もしくは床反力モーメント水平成分許容範囲)を規定するパラメータと、床反力モーメント鉛直成分許容範囲を規定するパラメータとが含まれる。この場合、第4参考例で設定する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲は、後述のS3526の処理で設定される単純化モデル歩容用のものと、S3530で設定される歩容補正用のものとの2種類がある。一方、ZMP許容範囲(もしくは床反力モーメント水平成分許容範囲)は、S3530の処理で設定されるフルモデル補正用(歩容補正用)のものだけである。なお、第4参考例では、S3530ではZMP許容範囲を規定するパラメータを設定するが、これは、床反力モーメント水平成分許容範囲を規定するパラメータと設定することと同等である。これは、前記第2参考例の図56のS3030に関して説明した如く、床反力モーメント水平成分を、目標床反力鉛直成分で割ったものが、ZMP(床反力中心点)の目標ZMPからのずれ量を表すものとなるからである。
ここで、第4参考例で設定するZMP許容範囲は、図64の如く設定される。詳細は、PCT/JP03/00435に詳細に記載されているのでここでは、これ以上の説明を省略する。
歩容パラメータ決定部100aで決定された歩容パラメータは目標瞬時値発生部100bに入力される。目標瞬時値発生部100bは入力された歩容パラメータに基づき、目標足平位置姿勢、目標ZMP、目標床反力鉛直成分、目標腕姿勢、目標全体重心鉛直位置、目標上体鉛直位置、床反力水平成分許容範囲、ZMP許容範囲、基準上体姿勢角および基準逆位相腕振り角の、現在時刻tにおける瞬時値を逐次算出(発生)する(図63では一部の目標瞬時値のみを記載している)。この目標瞬時値発生部100bの処理は、後述の図65のフローチャートS3532の処理のなかで実行される図57のS3400〜S3412の処理、並びに、図65のS3534の処理に相当する。なお、第4参考例では、目標瞬時値発生部100bが算出する目標瞬時値のうち、一部の瞬時値(具体的には目標上体鉛直位置の瞬時値)は仮値であり、後に修正される。また、目標瞬時値発生部100bが算出する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の瞬時値は、単純化モデル歩容用の瞬時値と歩容補正用の瞬時値とがある。
目標瞬時値発生部100bで算出(発生)された目標瞬時値(一部は仮瞬時値)は、フルモデル補正部100cに入力される。また、フルモデル補正部100cには、前記姿勢傾斜安定化制御演算部112(図59を参照)で求められる補償全床反力モーメント水平成分Mdmdxyおよび前記ヨー安定化制御演算部113(図59を参照)で求められる補償全床反力モーメント鉛直成分Mdmdzも入力される。フルモデル補正部100cは、動力学モデルとして、単純化モデル100c1とフルモデル100c2とを備える。該フルモデル補正部100cは、単純化モデル100c1に基づいて、入力値から目標上体位置姿勢および逆位相腕振り角の仮瞬時値等を決定すると共に、さらに決定された上体位置姿勢および逆位相腕振り角の仮瞬時値等をフルモデル100c2を用いて修正する。
尚、単純化モデル100c1をフルモデル補正部100c2に含ませない構成も可能である。また、フルモデル100c2は、後述するように、逆フルモデル(逆動力学フルモデル)と順フルモデル(順動力学フルモデル)とのいずれかを含む。
フルモデル補正部100cは、基本的には、次のA1〜A4の条件を満足するように、Bの処理を実行する。すなわち、フルモデル補正部100cは、
A1)フルモデル補正部100cにより生成される補正歩容の運動に釣り合う床反力モーメントに補償全床反力モーメント水平成分Mdmdxyと補償全床反力モーメント鉛直成分Mdmdzとを加えたものがフルモデル補正部100cから出力するコンプライアンス制御用床反力モーメントに一致する。
A2)真のZMP(目標ZMPのまわりにコンプライアンス制御用目標床反力モーメントを発生させることによって修正された本来の定義を満足するZMP)は、ZMP許容範囲(安定余裕が十分維持できる許容範囲)に存在する。
A3)床反力水平成分は歩容補正用の床反力水平成分許容範囲内にある。
A4)目標ZMPのまわりに発生すべきコンプライアンス制御用目標床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲内にある。
という条件を満足するように、
B)単純化モデルを用いて決定された単純化モデル歩容の上体位置姿勢を補正すると共に、目標ZMPまわりのコンプライアンス制御用目標床反力モーメントを出力する。
なお、上記条件A2は、目標ZMPまわりに発生させる床反力モーメントをZMP許容範囲に対応する床反力モーメント水平成分許容範囲内に収めることと同等である。
ここで、上記単純化モデル100c1とフルモデル100c2とについて説明しておく。単純化モデル100c1は、動力学的精度よりも、演算量低減や挙動解析のし易さに重点を置いた動力学モデルであり、動力学的に一部無視があったり(例えば、重心まわりの角運動量変化を無視したり)、矛盾があるもの(厳密さを欠くもの)でも良い。第4参考例では前記第1参考例で説明した図12の動力学モデル(前記式01〜05で記述される動力学モデル)が単純化モデル100c1として用いられる。
また、フルモデル100c2は、単純化モデル100c1とは異なるロボット動力学モデルを意味する。これは、単純化モデル100c1よりも近似精度の高いロボット動力学モデルであることが望ましい。図示例で説明すれば、第4参考例では先に述べたように前記図12に示した動力学モデルを単純化モデル100c1として用いるので、それよりも、近似精度の高い動力学モデル、例えば前記図49に示した多質点モデル(ロボット1の各リンクにそれぞれ質点を有するモデル)のようなロボット動力学モデルをフルモデル100c2として用いることが望ましい。この場合、該フルモデル100c2は、質点のまわりに慣性モーメントを設定するものであっても良い。
しかし、単純化モデル100c1とフルモデル100c2とは、必ずしもモデルの近似精度が異なる必要はない。単純化モデル100c1とフルモデル100c2とは、動力学方程式が同じで、床反力水平成分許容範囲およびまたは床反力モーメント鉛直成分許容範囲が異なっている、すなわち、単純化モデル歩容用の許容範囲と、歩容補正用(フルモデル補正用)の許容範囲とが異なっているだけでも良い。たとえば、単純化モデル100c1を用いた歩容を生成する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を大きくとり(摩擦限界を越えていても良い)、フルモデル100c2を用いて歩容を修正する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲をロボット1のスリップもしくはスピンが発生しにくいように狭く設定するだけでも良い。
尚、この明細書において、目標足平位置姿勢、目標床反力(特に、目標ZMPと目標床反力鉛直成分)に基づいて(入力して)上体位置姿勢および逆位相腕振り角を算出する(出力させる)のに使用するモデルを「順動力学モデル」と呼び、目標足平位置姿勢、目標上体姿勢、目標上体位置および逆位相腕振り角に基づいて(入力して)床反力(特に、目標ZMPもしくは目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)と床反力水平成分)を算出する(出力させる)のに使用するモデルを「逆動力学モデル」と呼ぶ。順動力学モデルの入力には、少なくとも目標床反力が含まれ、逆動力学モデルの入力には、少なくとも目標運動が含まれる。
フルモデル補正部100cが備えるフルモデル100c2は、逆動力学フルモデル(しばしば「逆フルモデル」と略称)または順動力学フルモデル(しばしば「順フルモデル」と略称)を備える。一般的には、逆動力学モデルの演算に比べ、順動力学モデルの演算は、演算量が多くなりがちである。
以上が第4参考例での歩容生成装置100における処理の概要である。
次に、第4参考例における歩容生成装置100の処理を詳説する。第4参考例における歩容生成装置100は、図65のフローチャートに示す処理を実行して、歩容を生成する。
まず、S3510からS3528までにて、前記第2参考例で説明した図56のS3010からS3028までの処理と同一の処理が実行される。なお、S3026のサブルーチンである図39のS608で決定する今回歩容の床反力水平成分許容範囲およびS610で決定する床反力モーメント鉛直成分許容範囲は、前記第1参考例〜第3参考例の場合よりも厳密に摩擦力限界を考慮せずともよく、摩擦力限界を超えるような範囲に設定してもよい。これは、後述するフルモデル補正によって、床反力水平成分および床反力モーメント鉛直成分は最終的にフルモデル補正用の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲によって制限されることとなるからである。
次いで、S3530に進み、フルモデル補正用(歩容補正用)の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とZMP許容範囲(床反力中心点許容範囲)とをそれぞれ規定するパラメータを決定する。この場合、フルモデル補正用の床反力水平成分許容範囲は、例えば前記単純化モデル歩容用の床反力水平成分許容範囲と同様、X軸方向(前後方向)、Y軸方向(左右方向)のそれぞれについて、床反力鉛直成分軌道と、前記式12とに基づいて、前記図30に示したようなパターンに設定される。そして、例えば、前記式12のka*μの値がフルモデル補正用の床反力水平成分許容範囲を規定するパラメータとして設定される。但し、この床反力水平成分許容範囲は、式12の係数kaの値を、単純化モデル歩容用の床反力水平成分許容範囲よりも小さめに設定する等して、確実に摩擦限界内の範囲に設定することが望ましい。
床反力モーメント鉛直成分許容範囲に関しても床反力水平成分許容範囲と同様に設定される。すなわち、前記式1012に基づいて、前記図41に示したようなパターンに設定される。
また、ZMP許容範囲は、前記第2参考例における図56のS3030で床反力モーメント水平成分許容範囲の設定に関して説明した場合と同様に設定される。なお、ZMP許容範囲に目標床反力鉛直成分を乗じることで、ZMP許容範囲をこれと等価な床反力モーメント水平成分許容範囲に変換してもよいことはもちろんである。
次いで、S3532に進み今回歩容瞬時値(現在時刻tの値)が前記単純化モデル(図12の動力学モデル)を用いて決定される。このS3532の処理は、前記第1参考例における図13のS030の処理と同一である。
以上説明したS3532までの処理によって生成された現在時刻tにおける歩容の瞬時値を、以降、単純化モデル歩容瞬時値という。第4参考例では、この単純化モデル歩容瞬時値は、単純化モデル(図12の動力学モデル)を用いて、ロボット1にその運動によって発生する慣性力と重力との合力が目標ZMPまわりに発生する床反力モーメント水平成分が0になるように(目標ZMPに関する動力学的平衡条件を満たすように)決定される。
この場合、単純化モデル歩容瞬時値のうちの、上体水平位置および上体姿勢傾斜角の瞬時値と、上体鉛直位置の瞬時値と、逆位相腕振り角の瞬時値とは仮瞬時値であり、後述するフルモデル補正によって補正されるものである。また、第4参考例における単純化モデル歩容瞬時値のうち、目標ZMPまわりの目標床反力モーメント水平成分の瞬時値は定常的に0であるが、後述するフルモデル補正によって目標ZMPまわりに発生させる床反力モーメント水平成分の目標値としてのコンプライアンス制御用目標床反力モーメント水平成分が生成される。
次に、S3534に進み、歩容補正用(フルモデル補正用)の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とZMP許容範囲を規定するパラメータ(S3530で設定したもの)を基に、歩容補正用の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とZMP許容範囲との瞬時値(現在時刻tの値)が求められる。
次いで、S3536に進み、フルモデルを用いて補正歩容の発生(歩容の補正)を行い、最終的な目標歩容の瞬時値が決定される。すなわち、前記図63を参照して説明したように、補正目標上体位置姿勢、補正目標逆位相腕振り角や、目標ZMPまわりの目標床反力モーメント(水平成分および鉛直成分)としてのコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)の算出(決定)などが実行される。
次いで、S3538に進み、時刻tをΔtだけ増やし、再びS3514に戻り、S3514からS3538までの処理が繰り返される。
上記S3536の処理は、第4参考例の特徴をなす部分であり、以下にその処理を詳説する。第4参考例に係る装置の歩容補正手法は、フルモデルフィードフォワード補正型である。また、逆動力学フルモデル(逆フルモデル)を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
図66は、第4参考例に係る歩容生成装置100の動作、具体的には、図65のフロー・チャートのS3536の歩容の修正手法を説明する機能ブロック図である。ただし、図66の単純化モデル200は、単に動力学モデルだけでなく、前述のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表す。したがって、図66において、単純化モデル200から先の部分がS3536の処理に相当する。
尚、歩容補正用(フルモデル補正用)の床反力水平成分許容範囲とZMP許容範囲の瞬時値を決定する処理は、図65のフローチャートの参照符号S3534を用いて示している。
実際の処理はひとつのコンピュータで実行されるので、ブロック図を離散化した後、ブロック図の上流側から下流側(歩容出力側)に向かって順に実行される。ただし、上流側に戻るフィードバック量は、前回制御周期(現在時刻tに対して時刻t−Δt)に算出した値(状態量)を用いることとする。尚、以降、前回制御周期(時刻t−Δt)に算出した値を前回値と略す。
S3536の処理が実行される毎に、ブロック図の1制御周期分の演算が実行される。
S3536では、まず、上記のごとく得られた単純化モデル歩容の目標上体姿勢角(以降、単純化モデル上体姿勢角と呼ぶ。また、このうちの傾斜角成分を単純化モデル上体姿勢傾斜角と呼ぶ。)、目標上体水平位置(以降、単純化モデル上体水平位置と呼ぶ)、目標重心位置、目標足平位置姿勢、目標腕姿勢(目標逆位相腕振り角を含む)などの運動を表す変数(これを運動変数と呼ぶ)の瞬時値と、目標ZMPの瞬時値とが前記逆動力学フルモデル(逆フルモデル)201に入力される。入力された運動変数で表される運動に釣り合う(すなわち運動によってフルモデルが発生する)床反力水平成分と目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)が、逆フルモデル201の演算処理によって算出される。なお、第4参考例では、単純化モデル歩容における目標ZMPまわりの床反力モーメント水平成分は0であるので、逆フルモデル201によって算出される目標ZMPまわりの床反力モーメント水平成分は、単純化モデル歩容の誤差としての意味を持つものである。なお、逆フルモデル201により求められた床反力水平成分と床反力モーメント水平成分と床反力モーメント鉛直成分とをそれぞれ「フルモデル床反力水平成分」、「フルモデル床反力モーメント水平成分」、「フルモデル床反力モーメント鉛直成分」と呼ぶ。また、以降、しばしば、フルモデル床反力水平成分をFfull、フルモデル床反力モーメント水平成分をMfullxy、フルモデル床反力モーメント鉛直成分をMfullz、と略す。
また、前記逆フルモデル201は、目標重心位置を満足する上体鉛直位置を算出する。さらに、図示は省略しているが、逆フルモデル201は、重心水平位置も算出する。
補足すると、フルモデルには目標全体重心鉛直位置を入力しており、また目標床反力鉛直成分は目標全体重心鉛直位置の2階微分値から求められるので、フルモデルには、特に目標床反力鉛直成分を入力する必要はない。冗長であっても演算を減らすためなどの理由で、フルモデルに目標床反力鉛直成分を入力しても良い。
ここで、歩容補正に用いられる摂動モデルについて説明する。
摂動モデルは、上体水平位置補正用摂動モデル202、上体姿勢傾斜角補正用摂動モデル203および逆位相腕振り角補正用摂動モデル231から成る。尚、摂動モデルは、このように3つのモデルに分離しないで、図12のようなひとつのモデルにしても良い。また、上体姿勢傾斜角補正用摂動モデル203は図では上体姿勢角補正用摂動モデル203と略す。
上体水平位置補正用摂動モデル202は、前記上体並進モードにおける床反力の摂動と上体水平位置の摂動との関係を表す。
上体水平位置補正用摂動モデル202は、目標床反力モーメントの補正量を入力し、これに動力学的に釣り合う目標上体水平位置の補正量を算出する。この入力(目標床反力モーメントの補正量)を、上体水平位置補正用摂動モデルモーメントMpと呼ぶ。また、上体水平位置補正用摂動モデル202の出力(目標上体水平位置の補正量)を、補正用摂動モデル上体水平位置Xcと呼ぶ。また、上体水平位置補正用摂動モデル202が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Fpと呼ぶ。
上体水平位置補正用摂動モデル202は、図67のように、支点と倒立振子質点(上体質点)とこれらを結合する伸縮自在な支持棒から成る倒立振子で表される。支点の水平位置は前記した今回歩容の支持脚座標系の原点の水平位置に一致し、支点の鉛直位置は目標ZMPの鉛直位置に一致するように支点の位置が設定されている。倒立振子質点の質量mbは、図12に示す前記単純化モデル(3質点+フライホイールのモデル)の上体質点質量と同じである。倒立振子質点の鉛直位置Zcは、単純化歩容に対応する図12に示す単純化モデルの上体質点位置の鉛直位置Zbと同一とする。
この上体水平位置補正用摂動モデル202は、前記単純化モデルにおいて、床反力モーメントの摂動ΔMyと上体質点水平位置の摂動ΔXbとの関係を表す。
そこで、My、Xb、Zb以外は定数とみなして、床反力モーメントの摂動ΔMyと上体質点水平位置の摂動ΔXbとの関係を前記式03yから求めると、次式が得られる。
Figure 2005000536
同様に、Fx、Xb以外は定数とみなして、床反力水平成分の摂動ΔFxと上体質点水平位置の摂動ΔXbの関係を前記式02xから求めると、次式が得られる。
ΔFx=mb*d2ΔXb/dt2 …式a13
上体水平加速度によって発生するΔMpとΔFpの比である上体並進モード床反力比率hは、式a12の右辺のうちの上体水平加速度によって発生する項(すなわち第2項)と式a13との比であるから、次式が得られる。
h=(Zb−Zzmp) …式a14
すなわち、上体並進モード床反力比率hは、単純化モデルの上体質点(倒立振子質点)の支点からの高さに相当する。
よって、式a12と式a14とより次式が得られる。
Figure 2005000536
一方、上体質点(倒立振子質点)に作用する重力と慣性力との合力の並進力鉛直成分に釣り合う床反力鉛直成分を上体床反力鉛直成分Fbzと呼ぶ。すなわち、上体床反力鉛直成分Fbzは、次式で定義される。
Fbz=mb*(g+d2Zb/dt2) …式a16
そして、この式a16と前記式01とから、上体床反力鉛直成分Fbzは次式となる。
Figure 2005000536
言い換えると、上体床反力鉛直成分は、床反力鉛直成分Fzと図12に示す前記単純化モデル(3質点+フライホイールのモデル)の両脚質点に作用する重力と慣性力との合力の並進力鉛直成分との和に等しい。
式a16を式a15に代入することにより、次式が得られる。
ΔMy=−Fbz*ΔXb+mb*h*d2ΔXb/dt2 …式a18
式a18のΔMyを上体水平位置補正用摂動モデルモーメントMp、ΔXbを補正用摂動モデル上体水平位置Xcに対応させることにより(式a18のΔMyに上体水平位置補正用摂動モデルモーメントMp、ΔXbに補正用摂動モデル上体水平位置Xcを代入することにより)、次式が得られる。
Mp=−Fbz*Xc+mb*h*d2Xc/dt2 …式a19
すなわち、上体水平位置補正用摂動モデル202は、式a14によって求められる上体並進モード床反力比率hと式a17によって求められる上体床反力鉛直成分Fbzを用いて、式a19で表される。
また、式a13のΔFxを上体水平位置補正用摂動モデル床反力水平成分Fpに対応させることにより、次式が得られる。
Fp=mb*d2Xc/dt2 …式a20
すなわち、式a14、式a17、式a19、式a20によって上体水平位置補正用摂動モデル202が記述される。
補足すると、ここでは、上体質点位置の摂動と上体位置(上体代表点位置)の摂動は一致するものとみなしているが、厳密には、一致するとは限らない。従って、Mp、FpとXcの関係を求めるためには、さらに上体質点水平位置と上体位置の幾何学的関係を表すモデルが必要である。
一方、上体姿勢傾斜角補正用摂動モデル203は、前記上体傾斜モードにおける床反力の摂動と上体姿勢傾斜角の摂動の関係を表す。
上体姿勢傾斜角補正用摂動モデル203は、床反力モーメント水平成分の補正量が入力され、これに動力学的に釣り合う目標上体姿勢傾斜角の補正量を算出する。この入力(床反力モーメントの補正量)を、上体姿勢傾斜角補正用摂動モデルモーメントMr(上体姿勢角補正用摂動モデルMrと略すこともある)と呼ぶ。また、上体姿勢傾斜角補正用摂動モデル203の出力(目標上体姿勢傾斜角の補正量)を補正用摂動モデル上体姿勢傾斜角θcと呼ぶ。また、上体姿勢傾斜角補正用摂動モデル203が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Frと呼ぶ。Frは前述したごとく0である。すなわち、次式が常に成立する。
Fr=0 …式a21
上体姿勢傾斜角補正用摂動モデル203は、図68のように、フライホイールで表される。補足すると、図68では、Y軸まわり回転のフライホイールのみを示したが、上体姿勢傾斜角補正用摂動モデル203は、実際には、Y軸まわり回転のフライホールだけでなく、X軸まわり回転のフラーホイールも必要とする。それらのフライホイールのイナーシャは、図12に示した前記単純化モデル(3質点モデル+フライホイール)のフライホイールFHx、FHyと同じである。この上体姿勢傾斜角補正用摂動モデル203のフライホイールの回転角度が補正用摂動モデル上体姿勢傾斜角θc、そのフライホイールによって発生する床反力モーメント水平成分が上体姿勢傾斜角補正用摂動モデルモーメントMrに相当する。なお、以下の説明では理解の便宜上、Y軸まわり回転のフライホイールを中心に説明するが、X軸まわり回転のフライホイールについても同様である。
この上体姿勢傾斜角補正用摂動モデル203(より詳しくはサジタルプレーンに関するモデル)は、前記単純化モデル(3質点+フライホイールのモデル)の動力学方程式の前記式03yにおいて、床反力モーメントの摂動ΔMyと上体姿勢傾斜角の摂動Δθbyの関係を表している。
そこで、My、θby以外は定数とみなして、床反力モーメント水平成分の摂動ΔMyと上体姿勢傾斜角の摂動Δθbyの関係を式03yから求めると、次式が得られる。
ΔMy=J*d2Δθby/dt2 …式a22
式a22のΔMyを上体姿勢傾斜角補正用摂動モデルモーメントMr、Δθbyを補正用摂動モデル上体姿勢傾斜角θcに対応させることにより、次式が得られる。
Mr=J*d2Δθc/dt2 …式a23
すなわち、上体姿勢傾斜角補正用摂動モデル203は、式a23で表される。また、上体水平位置補正用摂動モデル床反力水平成分Frは上記したごとく式a21のようになる(Fr=0)。なお、上記では、上体姿勢傾斜角補正用摂動モデル203の動力学をサジタルプレーン上で説明したが、ラテラルプレーン上での動力学も、式a23と同じ形の式で表される。
また、逆位相腕振り角補正用摂動モデル231は、前記逆位相腕振りモードにおける床反力の摂動と逆位相腕振り角の摂動との関係を表す。
逆位相腕振り角補正用摂動モデル231は、床反力モーメント鉛直成分の補正量が入力され、これに動力学的に釣り合う目標逆位相腕振り角の補正量を算出する。この入力(床反力モーメント鉛直成分の補正量)を、逆位相腕振り角補正用摂動モデルモーメントMaと呼ぶ。また、逆位相腕振り角補正用摂動モデル203の出力(目標逆位相腕振り角の補正量)を補正用摂動モデル逆位相腕振り角θcaと呼ぶ。また、逆位相腕振り角補正用摂動モデルが発生する床反力水平成分を逆位相腕振り角補正用摂動モデル床反力水平成分Faと呼ぶ。Faは前述したごとく0である。すなわち、次式が常に成立する。
Fa=0 …式a21c
逆位相腕振り角補正用摂動モデル231は、図69のように、フライホイールで表される。フライホイールのイナーシャは、図12に示した前記単純化モデル(3質点モデル+フライホイール)のフライホイールFHazと同じである。この逆位相腕振り角補正用摂動モデル231のフライホイールの回転角度が補正用摂動モデル逆位相腕振り角θca、そのフライホイールによって発生する床反力モーメント鉛直成分が逆位相腕振り角補正用摂動モデルモーメントMaに相当する。
この逆位相腕振り角補正用摂動モデル231は、前記単純化モデル(3質点+フライホイールのモデル)の動力学方程式の前記式03zにおいて、床反力モーメントの摂動ΔMzと逆位相腕振り角の摂動Δθazとの関係を表している。
そこで、Mz、θaz以外は定数とみなして、床反力モーメントの摂動ΔMzと逆位相腕振り角の摂動Δθazの関係を式03zら求めると、次式が得られる。
ΔMz=Jaz*d2Δθaz/dt2 …式a22c
式a22cのΔMzを逆位相腕振り角補正用摂動モデルモーメントMa、Δθazを補正用摂動モデル逆位相腕振り角θcaに対応させることにより、次式が得られる。
Ma=Jaz*d2Δθca/dt2 …式a23c
すなわち、逆位相腕振り角補正用摂動モデル231は、式a23cで表される。また、逆位相腕振り角補正用摂動モデル床反力水平成分Frは上記したごとく式a21cのようになる(Fa=0)。
後述するように、S3536では、最終的に、補正歩容(より詳しくは、単純化モデル歩容の一部の瞬時値を補正した目標瞬時値)が生成(出力)される。補正歩容の目標上体姿勢傾斜角(これを以降、補正目標上体姿勢傾斜角と呼ぶ)は、前記求めた単純化モデル上体姿勢傾斜角の瞬時値(S3532で求めた今回歩容の現在時刻tでの目標上体姿勢傾斜角の瞬時値)に前記補正用摂動モデル上体姿勢傾斜角θc(現在時刻tの制御周期で求められる値)を演算部204で加えることにより得られる。補正歩容の目標上体水平位置(これを以降、補正目標上体水平位置と呼ぶ)は、前記求めた単純化モデル上体水平位置の瞬時値(S3532で求めた今回歩容の現在時刻tでの目標上体水平位置の瞬時値)に補正用摂動モデル上体水平位置Xc(現在時刻tの制御周期で求められる値)を演算部205で加えることにより得られる。また、補正歩容の目標逆位相腕振り角(これを以降、補正目標逆位相腕振り角と呼ぶ)は、前記求めた単純化モデル逆位相腕振り角の瞬時値(S3532で求めた今回歩容の現在時刻tでの目標逆位相腕振り角の瞬時値)に補正用摂動モデル逆位相腕振り角θca(現在時刻tの制御周期で求められる値)を演算部232で加えることにより得られる。
補正歩容の目標床反力も修正される。具体的には、目標ZMPまわりの床反力モーメント水平成分が0でなくなり、コンプライアンス制御用目標床反力モーメント水平成分が目標値として出力される。また、目標床反力水平成分も、補正目標床反力水平成分に修正され、出力される。また、目標床反力モーメント鉛直成分も、補正目標床反力モーメント鉛直成分に修正され、出力される。
ところで、上記のごとく、補正歩容の運動は、単純化モデル歩容の運動に摂動モデルの運動(詳しくは上体水平位置補正用摂動モデル202と上体姿勢傾斜角補正用摂動モデル203の運動と逆位相腕振り角補正用摂動モデル231の運動)を加えた(合成した)運動である。
一般に、ある基準運動に、ある摂動運動を加えた運動が発生する床反力は、基準運動が発生する床反力(運動によって発生する重力と慣性力に釣り合う床反力)と摂動運動によって発生する床反力の摂動分の和で近似される。
また、上体傾斜モードが発生する床反力水平成分、上体傾斜モードが発生する床反力モーメント鉛直成分、逆位相腕振りモードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力モーメント水平成分がいずれも0であることを考慮すると、補正歩容の運動に逆フルモデル201上で釣り合う床反力モーメントに補償全床反力モーメント水平成分Mdmdxyと補償全床反力モーメント鉛直成分Mdmdzとを加えたものが補正目標床反力モーメントに一致する(前記A1の条件を満たす)ためには、以下の3つの式を満足しなければならない。
フルモデル床反力モーメント水平成分Mfullxy
+上体水平位置補正用摂動モデルモーメントMp
+上体姿勢傾斜角補正用摂動モデルモーメントMr
+補償全床反力モーメント水平成分Mdmdxy
= 補正目標床反力モーメント水平成分
…式h5
フルモデル床反力水平成分Ffull
+上体水平位置補正用摂動モデル床反力水平成分Fp
= 補正目標床反力水平成分
…式h6
フルモデル床反力モーメント鉛直成分Mfullz
+上体水平位置補正用摂動モデルモーメント鉛直成分Mpz
+逆位相腕振り角補正用摂動モデルモーメント鉛直成分Maz
+補償全床反力モーメント鉛直成分Mdmdz
= 補正目標床反力モーメント鉛直成分
…式h1006
ただし、上体水平位置補正用摂動モデルモーメント鉛直成分Mpzは、上体水平位置補正用摂動モデルの運動によって逆フルモデル201上で発生する床反力モーメント鉛直成分である。また、式h5、式h1006のモーメントは、元の(単純化モデルの)目標ZMPまわりのモーメントである。
また、補正歩容の真のZMPは、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ、単純化モデル歩容の目標ZMP(理想目標ZMP)からずれた点に変更される。
補正歩容の真のZMP=目標ZMP
+補正目標床反力モーメント/目標床反力鉛直成分
…式h7
尚、補正歩容の真のZMPのX方向(前後方向)成分を算出する場合には、補正目標床反力モーメントのY軸(左右方向軸)まわり成分を用いる。また、補正歩容の真のZMPのY方向成分を算出する場合には、補正目標床反力モーメントのX軸(前後軸)まわり成分を用いる。ただし、補正歩容の真のZMPのY方向成分を算出する場合には、式h7の右辺の「+」は「−」にしなければならない。
補足すると、補正歩容の真のZMPまわりの補正目標床反力モーメント鉛直成分を算出するようにしても良い。
補正歩容の真のZMPまわりの補正目標床反力モーメント鉛直成分は、元の目標ZMPまわりのモーメントに補正歩容の真のZMPと目標ZMPの差と式h6で求めた補正目標床反力水平成分との外積を加えたものとなる。
式h7から求められる補正歩容の真のZMPは、ZMP許容範囲内になければならない。これをZMP制約条件と呼ぶ。
また、補正目標床反力水平成分は、歩容補正用(フルモデル補正用)の床反力水平成分許容範囲内になければならない。これを床反力水平成分制約条件と呼ぶ。
また、補正目標床反力モーメント鉛直成分は、歩容補正用(フルモデル補正用)の床反力モーメント鉛直成分許容範囲内になければならない。これを床反力モーメント鉛直成分制約条件と呼ぶ。
以上のように、補正歩容は、式h5、式h6、式h1006、ZMP制約条件(式h7から得られる補正歩容の真のZMPの存在範囲条件)床反力水平成分制約条件および床反力モーメント鉛直成分制約条件を満足しなければならない。
しかし、単に、これらの式や条件を満足するだけでは、前記補正用摂動モデル上体位置と前記補正用摂動モデル上体姿勢傾斜角と前記補正用摂動モデル逆位相腕振り角が発散してしまう。
そこで、前記上体水平位置補正用摂動モデル202と前記上体姿勢傾斜角補正用摂動モデル203と前記逆位相腕振り角補正用摂動モデル231の状態量(より具体的には、補正用摂動モデル上体水平位置速度、補正用摂動モデル上体姿勢傾斜角・角速度、補正用摂動モデル逆位相腕振り角・角速度など)を基に、これらの状態量がある所定の状態に収束する(安定する)ように、補正用摂動モデル202,203,231の安定化制御を行う。
まず、上体水平位置補正用摂動モデル202の安定化制御について詳細を説明する。
上体水平位置補正用摂動モデル202を目標整定位置に収束(安定)させるための制御則を上体水平位置補正用摂動モデル制御則206と呼び、この制御則が決定するフィードバック量(操作量)を上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと呼ぶ。ここで「要求値」を付けたのは、後述するように、真のZMPが前記ZMP許容範囲内に存在し、かつ、床反力水平成分が床反力水平成分許容範囲内になるように、上記制御則で決定された値に制限が加えられて修正されるからである。制限が加えられて修正されたモーメントを、上体水平位置補正用摂動モデル安定化モーメントMpfと呼ぶ。
具体的に上体水平位置補正用摂動モデル制御則206としては、式h10を用いる。ただし、目標整定位置は、式h8で与えられる。また、mtotalは前記ロボット総重量、mbは前記上体質点質量(倒立振子質量)であり、XGfは、単純化モデル歩容の瞬間姿勢を基にフルモデルを用いて計算される重心水平位置、すなわち、前記逆フルモデルが算出する重心水平位置である。また、Kpp、Kpvはフィードバック制御のゲインである。
目標整定位置=−mtotal/mb*(XGf−XGs) …式h8
上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
=Kpp*(補正用摂動モデル上体水平位置Xc−目標整定位置)
+Kpv*補正用摂動モデル上体水平速度dXc/dt
−補正用摂動モデル上体水平位置Xc*上体床反力鉛直成分Fbz
…式h10
上体水平位置補正用摂動モデル安定化モーメント要求値MpfdmdのX軸(前後方向軸)まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はY軸方向(左右方向)成分を用いる。
上体水平位置補正用摂動モデル安定化モーメント要求値MpfdmdのY軸(左右方向軸)まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はX軸方向(前後方向)成分を用い、右辺第3項の「−」を「+」に代える。
詳細は、先に本出願人が提案したPCT/JP03/00435に記載されているので、ここではこれ以上の説明を省略する。
次に、上体姿勢傾斜角補正用摂動モデル203の安定化制御について詳細を説明する。
目標瞬時値発生部100bが出力する基準上体姿勢傾斜角(図57のS3404で求められたもの)あるいは単純化モデルによる目標上体姿勢傾斜角(図57のS3414で求められたもの)に、補正目標上体姿勢傾斜角、すなわち、単純化モデルによる目標上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角を加えたものが整定あるいは追従するように、上体姿勢傾斜角補正用摂動モデル203の状態に応じて、PI制御などのフィードバック制御則によってフィードバック量(操作量)を決定し、これを上体姿勢傾斜角補正用摂動モデル203に付加的に入力する。
この制御則を上体姿勢傾斜角補正用摂動モデル制御則207(上体姿勢角補正用摂動モデル制御則207と略すこともある)と呼び、このフィードバック量(操作量)を上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと同様の理由からである。制限が加えられて修正されたモーメントを、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfと呼ぶ。
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdを決定する上体姿勢傾斜角補正用摂動モデル制御則207は、具体的には、次式のようにすれば良い。
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmd
=Krp*(補正用摂動モデル上体姿勢傾斜角θc
−(基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角))
+Krv*補正用摂動モデル上体姿勢傾斜角速度dθc/dt
…式h11
ただし、Krp、Krvはフィードバック制御のゲインである。
なお、式h11において、(基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角)の代わりに0としてもよい。
再び、図66の機能ブロック図を用いてS3536の処理を説明すると、上記のごとく、前記上体水平位置補正用摂動モデル制御則206(式h10)によって上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdが求められる。また、前記上体姿勢傾斜角補正用摂動モデル制御則207(式h11)によって上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdが求められる。
次いで、上体水平位置補正用摂動モデル安定化モーメントMpfが0であったと仮定した場合の上体位置補正用摂動モデルの床反力推定(算出)値F0がF0演算部208により求められる。後述するように、上体水平位置補正用摂動モデル202には、フルモデル床反力モーメント水平成分Mfullxyに、上体水平位置補正用摂動モデル安定化モーメントMpfを加えられたものが入力される。したがって、F0は、上体水平位置補正用摂動モデル202にフルモデル床反力モーメント水平成分Mfullxyの符号を反転させたものだけが入力された場合に上体水平位置補正用摂動モデル202が発生する床反力である。
具体的には、次式によってF0が求められる。
F0=mb*d2Xc/dt2−1/h*Mpf …式h12
右辺第1項は、前回(時刻t−Δt)の上体水平位置補正用摂動モデル202の床反力水平成分を表す。
右辺第2項は、前回の上体水平位置補正用摂動モデル安定化モーメントMpfによって、上体水平位置補正用摂動モデル202に直接的に発生した(すなわち直達項の)床反力水平成分を表す。
すなわち、上体水平位置補正用摂動モデル202の前回の上体質点水平加速度に上体質点の質量mbを乗じた値から、前回の上体水平位置補正用摂動モデル安定化モーメントMpfを上体並進モード床反力比率hで割った値を減じることによって、Mpfが0であったと仮定した場合の上体位置補正用摂動モデルの床反力F0の推定値が求められる。
次に、前記制約(床反力水平成分制約条件およびZMP制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、目標ZMPまわりの目標床反力モーメント水平成分としてのコンプライアンス制御用目標床反力モーメントを補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたと仮定した場合に、目標ZMPまわりに発生する床反力モーメント水平成分MinがMin演算部209により求められる。この床反力モーメント水平成分を無制限時補正目標床反力モーメント水平成分Minと呼ぶ。無制限時補正目標床反力モーメント水平成分Minは、次式によって求められる。
Min=Mpfdmd+Mrfdmd+Mdmdxy …式h13
すなわち、無制限時補正目標床反力モーメント水平成分Minは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと補償全床反力モーメント水平成分Mdmdxyとを加算することにより得られる。
次いで、前記制約(床反力水平成分制約条件およびZMP制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたと仮定した場合に、発生する床反力水平成分FinがFin演算部210により求められる。この床反力水平成分を無制限時補正目標床反力水平成分Finと呼ぶ。
補正目標床反力水平成分は、前記式h6によって得られるが、前述のごとく、上体姿勢傾斜角補正用摂動モデル203の挙動によって上体姿勢傾斜角補正用摂動モデル203には床反力水平成分は発生しない、すなわちFrは0である。したがって、無制限時補正目標床反力水平成分Finは、上体水平位置補正用摂動モデル安定化モーメントMpfが0であったと仮定した場合の補正目標床反力水平成分に、上体水平位置補正用摂動モデル安定化モーメントMpfを0から上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに変更したことによって増加する床反力水平成分を加えたものになる。
ところで、上体水平位置補正用摂動モデル安定化モーメントMpfを0から上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに変更したことによって増加する床反力水平成分は、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdを上体並進モード床反力比率hで割った値になる。
したがって、無制限時補正目標床反力水平成分Finは、式h15に示すように、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdを上体並進モード床反力比率hで割った値に、前記求めたフルモデル床反力水平成分Ffullを加算し、さらに、上体水平位置補正用摂動モデル安定化モーメントMpfが0であったと仮定した場合の上体位置補正用摂動モデルの床反力の算出値F0を加算することによって得られる。
Fin=1/h*Mpfdmd+Ffull+F0 …式h15
次いで、制限手段(制限処理部)211によって、無制限時補正目標床反力モーメント水平成分Minと無制限時補正目標床反力水平成分Finとから、これらに制限を加えた値である(目標ZMPまわりの)制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdが決定される。本実施形態では、コンプライアンス制御用目標床反力モーメント水平成分は、制限補正目標床反力モーメント水平成分Mltdに一致し、補正歩容の床反力水平成分は制限補正目標床反力水平成分Fltdに一致する。
制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとは、補正歩容(コンプライアンス制御用目標床反力モーメント水平成分を含む)の真のZMPが前記ZMP許容範囲内に存在し、かつ、補正歩容の床反力水平成分が床反力水平成分許容範囲内になるように決定される。すなわち、MltdおよびFltdはZMP制約条件および床反力水平成分制約条件を満足するように決定される。
また、上記制約条件下で、上体水平位置補正用摂動モデル安定化モーメントMpは、可能な限り、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致または近い値になるように決定される。同様に、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrは、可能な限り上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致または近い値になるように決定される。これにより、前記補正用摂動モデル上体位置Xcと前記補正用摂動モデル上体姿勢傾斜角θcとを安定化し、発散することを防止する。
制限手段(制限処理部)211の詳細は、先に本出願人が提案したPCT/JP03/00435に記載されているので、ここではこれ以上の説明を省略する。
次いで、以下の式により、上体水平位置補正用摂動モデル安定化モーメントMpf、および上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfがそれぞれMpf演算部212、Mrf演算部213により求められる。
Mpf=(Fltd−Ffull−F0)*h …式h20
Mrf=Mltd−Mpf−Mdmdxy …式h21
すなわち、Mpf演算部212では、制限補正目標床反力水平成分Fltdから、フルモデル床反力水平成分Ffullを減じ、Mpが0であったと仮定した場合の上体位置補正用摂動モデル202の床反力の算出値F0を減じた値に、上体並進モード床反力比率hを乗じることにより、前記上体水平位置補正用摂動モデル安定化モーメントMpfが得られる。また、Mrf演算部213では、目標ZMPまわりの制限補正目標床反力モーメント水平成分Mltdから前記上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが得られる。
次いで、以下の式により、上体水平位置補正用摂動モデル床反力モーメントMp、および上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが求められる。
Mp=Mpf−Mfull …式h22
Mr=Mrf …式h23
すなわち、Mp演算部214にて、上体水平位置補正用摂動モデル安定化モーメントMpfからフルモデル床反力モーメント水平成分Mfullxyを減じることにより、上体水平位置補正用摂動モデル床反力モーメントMpが得られる。また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrは、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfと同一の値とされる。
次いで、上体水平位置補正用摂動モデル床反力モーメントMpが上体位置補正用摂動モデル202に入力され、その入力された床反力モーメントに釣り合う補正用摂動モデル上体位置Xcが算出される。
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが上体姿勢傾斜角補正用摂動モデル203に入力され、その入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θcが算出される。
次いで、演算部205,204にて、それぞれ次式h24、式h25に従って、補正目標上体水平位置と補正目標上体姿勢傾斜角とが決定され、これらがそれぞれ上体水平位置姿勢の最終的な目標瞬時値として出力される。
補正目標上体水平位置
=単純化モデル上体水平位置+補正用摂動モデル上体位置Xc
…式h24
補正目標上体姿勢傾斜角
=単純化モデル上体姿勢傾斜角+補正用摂動モデル上体姿勢傾斜角θc
…式h25
すなわち、単純化モデル上体水平位置に補正用摂動モデル上体位置Xcを加えることにより補正目標上体水平位置が得られ、これが最終的な目標上体水平位置として出力される。また、単純化モデル上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角θcを加えることにより補正目標上体姿勢傾斜角が得られ、これが最終的な目標上体姿勢傾斜角として出力される。
また、目標ZMPまわりのコンプライアンス制御用目標床反力モーメント水平成分として制限補正目標床反力モーメント水平成分Mltdが出力されると共に、補正目標床反力水平成分として制限補正目標床反力水平成分Fltdが出力される。
すなわち、次式h26、式h27に従って、補正目標床反力水平成分と目標ZMPまわりの補正目標床反力モーメント水平成分とがそれぞれ、床反力水平成分および床反力モーメント水平成分(目標ZMPまわりのモーメント水平成分)の最終的な目標瞬時値として決定され、これらが出力される。
コンプライアンス制御用目標床反力モーメント水平成分
=制限補正目標床反力モーメント水平成分Mltd
…式h26
補正目標床反力水平成分
=制限補正目標床反力水平成分Fltd
…式h27
S3536における以上までの処理は、本願出願人によるPCT/JP03/00435の通りであるので、ここでの説明は以上に留める。
第4参考例ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部230において、逆位相腕振り角補正用摂動モデル231への入力である逆位相腕振り角補正用摂動モデルモーメントMaと目標床反力モーメント鉛直成分が決定される。次いで、逆位相腕振り角補正用摂動モデルモーメントMaは、逆位相腕振り角補正用摂動モデル231に入力され、補正用摂動モデル逆位相腕振り角θcaが決定される。
補足すると、逆位相腕振り角補正用摂動モデルモーメント決定部230は、目標瞬時値発生部100bが出力する基準逆位相腕振り角(図57のS3404で求められたもの)あるいは単純化モデルによる目標逆位相腕振り角(図57のS3414で求められたもの)に、補正目標逆位相腕振り角、すなわち、単純化モデルによる目標逆位相腕振り角に補正用摂動モデル逆位相腕振り角を加えたものが整定あるいは追従するように、逆位相腕振り角補正用摂動モデル231の状態に応じて、PI制御などのフィードバック制御則によってフィードバック量(操作量)を決定し、これを逆位相腕振り角補正用摂動モデル231に付加的に入力する。
この制御則を逆位相腕振り角補正用摂動モデル制御則と呼び、このフィードバック量(操作量)を逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと同様の理由からである。制限が加えられて修正されたモーメントを、逆位相腕振り角補正用摂動モデル安定化モーメントMafと呼ぶ。なお、本実施形態では、このMafが、逆位相腕振り角補正用摂動モデルモーメントMaとして、逆位相腕振り角補正用摂動モデル231に入力される。
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdを決定する逆位相腕振り角補正用摂動モデル制御則は、具体的には、次式のようにすれば良い。
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmd
=Kap*(補正用摂動モデル逆位相腕振り角θca
−(基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角))
+Kav*補正用摂動モデル逆位相腕振り角速度dθca/dt
…式h30
ただし、Kap、Kavはフィードバック制御則のゲインである。
なお、式h30において、(基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角)の代わりに0としてもよい。
以下に、逆位相腕振り角補正用摂動モデルモーメント決定部230の動作についてその機能ブロック図である図70を用いて詳細を説明する。
まず、上記のごとく、前記逆位相腕振り角補正用摂動モデル制御則230a(式h30)によって逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdが求められる。
次いで、上体水平位置補正用摂動モデル202を用いた上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Mpzが、上体水平位置補正に起因する床反力モーメント鉛直成分摂動量算出部230bによって求められる。
具体的には、次式によって求められる。
Mpz=(単純モデル上体質点位置
+補正用摂動モデル上体位置Xc−目標ZMP)
*(単純モデル上体質点水平加速度
+補正用摂動モデル上体加速度d2Xc/dt2)
−(単純モデル上体質点位置 − 目標ZMP)
*(単純モデル上体質点水平加速度)
…式h31
あるいは、上式を近似した以下の式を用いても良い。
Mpz≒補正用摂動モデル上体位置Xc
*(単純モデル上体質点水平加速度
+補正用摂動モデル上体加速度d2Xc/dt2)
+(単純モデル上体質点位置−目標ZMP)
* 補正用摂動モデル上体加速度d2Xc/dt2)
…式h32
次に、前記床反力モーメント鉛直成分制約条件を無視して、逆位相腕振り角補正用摂動モデル安定化モーメントMafを、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdに一致させると共に、目標ZMPまわりの目標床反力モーメント鉛直成分としてのコンプライアンス制御用目標床反力モーメント鉛直成分を補償全床反力モーメント鉛直成分MdmdzとMafとMfullzとMpzとの総和に一致させたと仮定した場合に、目標ZMPまわりに発生する床反力モーメント鉛直成分Minzが演算部230cにより求められる。この床反力モーメント鉛直成分を無制限時補正目標床反力モーメント鉛直成分Minzと呼ぶ。無制限時補正目標床反力モーメント鉛直成分Minzは、次式によって求められる。
Minz=Mafdmd+Mdmdz+Mfullz+Mpz …式h33
すなわち、無制限時補正目標床反力モーメント鉛直成分Minzは、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdと補償全床反力モーメント鉛直成分Mdmdzとフルモデル床反力モーメント鉛直成分をMfullzと上体水平位置補正用摂動モデルモーメント鉛直成分Mpzとを加算することにより得られる。
次いで、制限手段(制限処理部)230dによって、無制限時補正目標床反力モーメント鉛直成分Minzから、これに制限を加えた値である(目標ZMPまわりの)制限補正目標床反力モーメント鉛直成分Mltdzが決定される。第4参考例では、コンプライアンス制御用目標床反力モーメント鉛直成分は、制限補正目標床反力モーメント鉛直成分Mltdzに一致する。
制限補正目標床反力モーメント鉛直成分Mltdzは、床反力モーメント鉛直成分許容範囲内になるように決定される。すなわち、Mltdzは床反力モーメント鉛直成分制約条件を満足するように決定される。
また、上記床反力モーメント鉛直成分制約条件下で、逆位相腕振り角補正用摂動モデル安定化モーメントMafは、可能な限り、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdに一致または近い値になるように決定される。これにより、前記補正用摂動モデル逆位相腕振り角θcaを安定化し、発散することを防止する。
制限手段(制限処理部)230dは、次式に示す飽和特性を持った関数である。
Minz>床反力モーメント鉛直成分許容範囲上限値である場合
Mltdz=床反力モーメント鉛直成分許容範囲上限値
Minz<床反力モーメント鉛直成分許容範囲下限値である場合
Mltdz=床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Minz、且つ、Minz≦床反力モーメント鉛直成分許容範囲上限値である場合
Mltdz=Minz
……式h34
次いで、以下の式により、逆位相腕振り角補正用摂動モデルモーメントMa(=逆位相腕振り角補正用摂動モデル安定化モーメントMaf)がMaf演算部230eにより求められる。
Ma=Mltdz−(Mdmdz+Mfullz+Mpz) …式h35
すなわち、Maf演算部230eでは、制限補正目標床反力モーメント鉛直成分Mltdzから、補償全床反力モーメント鉛直成分Mdmdzとフルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正用摂動モデルモーメント鉛直成分Mpzとを減じることによって、逆位相腕振り角補正用摂動モデル安定化モーメントMafとしての逆位相腕振り角補正用摂動モデルモーメントMaが得られる。
一方、目標ZMPまわりのコンプライアンス制御用目標床反力モーメント鉛直成分として制限補正目標床反力モーメント鉛直成分Mltdが出力される。
すなわち、次式h35に従って、目標ZMPまわりの補正目標床反力モーメント鉛直成分が床反力モーメント鉛直成分(目標ZMPまわりのモーメント鉛直成分)の最終的な目標瞬時値として決定され、これらが出力される。
コンプライアンス制御用目標床反力モーメント鉛直成分
=制限補正目標床反力モーメント鉛直成分Mltdz
…式h36
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント230の処理が行われた後、逆位相腕振り角補正用摂動モデルモーメントMaは、図66の逆位相腕振り角補正用モデル231に入力され、その入力された逆位相腕振り角補正用摂動モデルモーメントMaに釣り合う補正用摂動モデル逆位相腕振り角θcaが、式a23cを用いて(積分することによって)算出される。
次いで、演算部232にて、次式h37に従って、補正目標逆位相腕振り角が決定され、これが逆位相腕振り角の最終的な目標瞬時値として出力される。
補正目標逆位相腕振り角
=単純化モデル逆位相腕振り角
+補正用摂動モデル逆位相腕振り角θca
…式h37
すなわち、単純化モデル逆位相腕振り角に補正用摂動モデル逆位相腕振り角θcaを加えることにより補正目標逆位相腕振り角が得られる、これが最終的な目標逆位相腕振り角として出力される。
以上のごとく、S3536の歩容補正が行われる。
尚、補足すると、第4参考例は、フィードフォワード型の補正であり、また、摂動動力学モデルは厳密モデルではない。このため、上記のごとく式h5、式h6および式h1006を満足するように歩容を補正しても、厳密には、動力学平衡条件を満足するするわけではなく、近似的に動力学平衡条件を満足する。
また、第4参考例では、例えば1歩の歩容の終端(今回歩容終端)において、上体水平位置補正用摂動モデル202と上体姿勢傾斜角補正用摂動モデル203と逆位相腕振り角補正用摂動モデル231との状態量、例えば上体水平位置補正用摂動モデル202の上体質点(倒立振子質点)の水平位置や、上体姿勢傾斜角補正用摂動モデル203のフライホールの回転角や、逆位相腕振り角補正用摂動モデル231のフライホールの回転角は、単純化モデル200の状態量として追加される。つまり、今回歩容終端における単純化モデル200の状態量が、上体水平位置補正用摂動モデル202の上体運動と上体姿勢傾斜角補正用摂動モデル203と逆位相腕振り角補正用摂動モデル231との状態量を加えたものに修正される。さらに、各摂動モデル202,203,231の状態量は初期化される(例えば上体水平位置補正用摂動モデル202の上体質点(倒立振子質点)の水平位置や、上体姿勢傾斜角補正用摂動モデル203のフライホールの回転角や、逆位相腕振り角補正用摂動モデル231のフライホールの回転角が0にリセットされる)。そして、上記の如く修正した単純化モデル200の状態量を次回歩容の初期値として、次回歩容の生成が行なわれると共に、各摂動モデル202,203,231による補正用摂動モデル上体水平位置Xc、補正用摂動モデル上体姿勢傾斜角θcおよび補正用摂動モデル逆位相腕振り角θcaの算出が行なわれる。これにより各摂動モデル202,203,231の挙動の安定性をより一層高めることができる。なお、上記のような単純化モデル200の状態量の修正は、歩容の生成途中で適宜行なってもよい。逆に、上記のような単純化モデル200の状態量の修正や摂動モデルのリセットを、歩容の生成途中に行なわなくてもよい。
また、上記のような単純化モデル200の状態量の修正は、後述する第5、第6参考例においても同様に行なわれる。
第4参考例では、前記復元条件すべてを満足する。したがって、前記第3参考例と同様の作用効果を奏することができる。
さらに、第3参考例の作用効果に加え、前記復元条件を満足するように上体水平位置、上体姿勢傾斜角および逆位相腕振り角を決定する際に、演算量を比較的少ないものとすることができる。
次に第5参考例を以下に図71及び図72を参照して説明する。第5参考例に係る装置の補正手法は、前記第4参考例のものと歩容生成装置100の処理(図65のS3536の処理)のみが相違するものであり、フルモデルフィードバック補正型である。また、逆動力学フルモデル(逆フルモデル)を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
図71は、この第5参考例に係る装置の動作、具体的には、図65のフローチャートのS3536の歩容の修正手法を説明する機能ブロック図である。ただし、図71の単純化モデル200は、前記第4参考例と同様、単に動力学モデルだけでなく、図65のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表す。したがって、図71において、単純化モデル200から先の部分がS3536の処理に相当する。なお、図71の機能部分のうち、第4参考例に係る図66と同一の機能分については、図66と同一の参照符号を用い、詳細な説明を省略する。
S3536の処理以外の構成は第4参考例と同じであるので説明を省略し、以下に図71を用いてS3536の処理を詳細に説明する。
S3536では、まず、前述のごとく図65のS3532で求めた単純化モデル歩容の目標上体水平位置の瞬時値(現在時刻tの制御周期で求めた仮瞬時値)に、前回制御周期(時刻t−Δt)で後述のごとく算出した補正用摂動モデル上体水平位置Xcを演算部205により加えることにより、最終的な目標上体水平位置(補正目標上体水平位置)が求められる。また、図65のS3532で求めた単純化モデル歩容の目標上体姿勢傾斜角の瞬時値(現在時刻tの制御周期で求めた仮瞬時値)に、前回制御周期(時刻t−Δt)で算出した後述する補正用摂動モデル上体姿勢傾斜角θcを演算部204により加えることにより、最終的な目標上体姿勢傾斜角(補正目標上体姿勢傾斜角)が求められる。また、図65のS3532で求めた単純化モデル歩容の目標逆位相腕振り角の瞬時値(現在時刻tの制御周期で求めた仮瞬時値)に、前回制御周期(時刻t−Δt)で算出した後述する補正用摂動モデル逆位相腕振り角θcaを演算部232により加えることにより、最終的な目標逆位相腕振り角(補正目標逆位相腕振り角)が求められる。
そして、これらの補正目標上体水平位置、補正目標上体姿勢傾斜角および補正目標逆位相腕振り角が、それぞれ上体水平位置、上体姿勢傾斜角および逆位相腕振り角の最終的な目標瞬時値として出力される。
すなわち、前記式h24、式h25、式h37により、補正目標上体水平位置と補正目標上体姿勢傾斜角と補正目標逆位相腕振り角とが求められる。
次いで、上記の如く単純化モデル歩容を補正して得られた目標上体水平位置(補正目標上体水平位置)、目標上体姿勢傾斜角(補正目標上体姿勢傾斜角)、目標逆位相腕振り角(補正目標逆位相腕振り角)、および前述のごとく得られた単純化モデル歩容の目標重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ZMPの瞬時値とを、前記逆動力学フルモデル201に入力し、その入力された運動変数で表される運動に釣り合う(すなわち運動によって逆フルモデル201が発生する)床反力水平成分と目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)とが算出される。従って、本第5参考例では、逆フルモデル201には、単純化モデル上体水平位置、上体姿勢傾斜角、逆位相腕振り角に加えて、補正用摂動モデル上体水平位置Xcと補正用摂動モデル上体姿勢傾斜角θcと補正用摂動モデル逆位相腕振り角θcaとが追加的に入力される。以降、第4参考例と同様、逆フルモデル201により算出された床反力水平成分、床反力モーメント水平成分、床反力モーメント鉛直成分、をそれぞれフルモデル床反力水平成分Ffullxy、フルモデル床反力モーメント水平成分Mfullxy、フルモデル床反力モーメント鉛直成分Mfullzと呼ぶ。
フルモデル床反力水平成分Ffullは、補正目標床反力水平成分(現在時刻tにおける床反力水平成分の最終的な目標瞬時値)として出力される。
すなわち、以下の式により、補正目標床反力水平成分が決定されて出力される。
補正目標床反力水平成分=フルモデル床反力水平成分Ffull
…式h48
以上の処理からわかるように、本第5参考例では、フルモデル補正歩容は、単純化モデル歩容に上体水平位置補正用摂動モデル202の挙動と上体姿勢傾斜角補正用摂動モデル203の挙動と逆位相腕振り角補正用摂動モデル231の挙動とを加えたものになる。さらに、上体傾斜モードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力水平成分がいずれも0であることを考慮すると、次式が成立する。ただし、単純化モデル床反力水平成分は、単純化モデル歩容の運動によって発生する床反力を逆フルモデル201を用いて算出したものの並進力水平成分である。
フルモデル床反力水平成分Ffull
=単純化モデル床反力水平成分
+上体水平位置補正用摂動モデル床反力水平成分Fp
…式h51
次いで、上体水平位置補正用摂動モデル制御則206により、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdが決定される。本実施形態における上体水平位置補正用摂動モデル制御則206は、特願2001−133621号で本願出願人が提案した如く、設定される。例えば、次式のように該制御則206が決定される。
上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
=Kpg*重心差+Kvg*補正用摂動モデル上体水平速度dXc/dt
…式h52
ただし、重心差は、次式で求められる。
重心差=フルモデル重心水平位置−単純化モデル重心水平位置
…式h53
式h52におけるKpg、Kvgはフィードバック制御則のゲインであり、フルモデル重心水平位置、単純化モデル重心水平位置および補正用摂動モデル上体水平速度dXc/dtは、それぞれ、前回(時刻t−Δt)に後述のごとく算出したフルモデル歩容瞬時値の重心水平位置、単純化モデル歩容瞬時値の重心水平位置(単純化モデル歩容の瞬間姿勢を基に単純化モデルを用いて計算される重心水平位置XGs)、および補正用摂動モデル上体水平速度dXc/dtである。
即ち、フルモデル重心水平位置から単純化モデル重心水平位置を減算して得た重心差と摂動モデルの状態量のひとつである摂動モデル上体速度とに基づいて摂動モデル制御用フィードバック量(操作量)を演算するようにした。かかる摂動モデル制御則により、前記重心差の時間的平均値を、ほぼ0に制御することができる。
次いで、上体姿勢傾斜角補正用摂動モデル制御則207により、上体姿勢補正用摂動モデル安定化モーメント要求値Mrfdmdが決定される。これは、第4参考例と同様の制御則を用いれば良い。従って、該制御則207としては、例えば前記式h11が用いられる。
次いで、無制限時補正目標床反力モーメントMinがMin演算部209により求められる(推定される)。無制限時補正目標床反力モーメントMinは、第4参考例と同様、前記制約(ZMP制約条件および床反力水平成分制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、目標ZMPまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させた場合に、目標ZMPまわりに発生する床反力モーメント水平成分である。
無制限時補正目標床反力モーメント水平成分Minは、第4参考例と同様、前記式h13の演算によって求められる。すなわち、無制限時補正目標床反力モーメント水平成分Minは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと補償全床反力モーメント水平成分Mdmdxyとを加算することにより得られる。
さらに、Fin演算部210により、無制限時補正目標床反力水平成分Finも求められる(推定される)。無制限時補正目標床反力水平成分Finは、第4参考例と同様、前記制約(ZMP制約条件および床反力水平成分制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたとした場合に、逆フルモデル201が発生する床反力水平成分(Ffullに相当)である。
無制限時補正目標床反力水平成分Finは、第4参考例とは異なり、次式により求められる。
無制限時補正目標床反力水平成分Fin
=フルモデル床反力水平成分Ffull
+1/h
*(上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
−上体水平位置補正用摂動モデル安定化モーメントMpf)
…式h54
ただし、上体水平位置補正用摂動モデル安定化モーメントMpfは前回値(時刻t−Δtでの値)が用いられる。すなわち、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体水平位置補正用摂動モデル安定化モーメントMpfの差を求め、上体水平位置補正用摂動モデルの入力を前記差だけ増加させることに起因するフルモデル床反力水平成分Ffullの増加量を、前記差を上体並進モード床反力比率hで割ることにより推定する。さらに、これにフルモデル床反力水平成分Ffullを加えることにより、無制限時補正目標床反力水平成分Finが推定される。
次いで、第4参考例と同様の制限手段(制限処理部211)によって、無制限時補正目標床反力モーメント水平成分Minと無制限時補正目標床反力水平成分Finとから、前記制約(ZMP制約条件および床反力水平成分制約条件)を満足するように、これらに制限を加えた値である(目標ZMPまわりの)制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとが決定される。この処理手法は、第4参考例と同一である。
第5参考例においても、コンプライアンス制御用目標床反力モーメント水平成分は制限補正目標床反力モーメント水平成分Mltdに一致され、また、補正目標床反力水平成分は制限補正目標床反力水平成分Fltdにほぼ一致するので、上記のごとく制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとを決定することによって、コンプライアンス制御用目標床反力モーメント水平成分および補正目標床反力水平成分は、それぞれZMP制約条件および床反力水平成分制約条件をほぼ満足する。
次いで、Mpf演算部215によって、上体水平位置補正用摂動モデル安定化モーメントMpfが求められる。さらに詳細には、制限補正目標床反力水平成分Fltdからフルモデル床反力水平成分Ffullを減じた値にゲインKcを乗じたものを積分器215aにて積分し、さらに得られた積分値に上体並進モード床反力比率hを乗じることにより、上体水平位置補正用摂動モデル安定化モーメントMpfが求められる。すなわち、次式により、上体水平位置補正用摂動モデル安定化モーメントMpfが得られる。
Mpf=h*∫Kc(Fltd−Ffull)dt …式h55
次いで、Mrf演算部214によって、制限補正目標床反力モーメント水平成分Mltdから上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが求められる。すなわち、前記式h21により、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが得られる。
さらに、前記式h23により、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが決定される。すなわち、Mrf演算部214の出力である上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfがそのまま上体姿勢傾斜角補正用摂動モデル床反力モーメントMrとして決定される。
次いで、次式で定義されるフルモデル床反力モーメント誤差MerrがMerr演算部216により算出される。
フルモデル床反力モーメント誤差Merr
=フルモデル床反力モーメント水平成分Mfullxy
−制限補正目標床反力モーメント水平成分Mltd
…式h56
次いで、Mp演算部217により、次式に従って、上体水平位置補正用摂動モデル床反力モーメントMpが求められる。
Mp=Mpf−∫KmMerr dt …式h57
すなわち、フルモデル床反力モーメント誤差Merrに積分ゲインKmを乗じた値を積分器217aにて積分すると共に、その積分値の符号を反転する。さらに、該積分器217aの出力を上体水平位置補正用摂動モデル安定化モーメントMpfに加えることにより、上体水平位置補正用摂動モデル床反力モーメントMpが求められる。
次いで、上体水平位置補正用摂動モデル床反力モーメントMpを上体位置補正用摂動モデル202に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体位置Xcが算出される。
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrを上体姿勢傾斜角補正用摂動モデル203に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θcが算出される。
S3536における以上までの処理は、PCT/JP03/00435の通りであるので、ここでの説明は以上に留める。
第5参考例ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部230において、逆位相腕振り角モーメント補正用摂動モデルMaが決定される。
さらに逆位相腕振り角補正用摂動モデルモーメントMaが逆位相腕振り角補正用摂動モデルに入力されて、補正用摂動モデル逆位相腕振り角θcaが決定される。
以下に、第5参考例での逆位相腕振り角補正用摂動モデルモーメント決定部230の動作についてその機能ブロック図である図72を用いて詳細を説明する。
まず、逆位相腕振り角補正用摂動モデル制御則により、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdが決定される。これは、第4参考例と同様の制御則を用いれば良い。従って、該制御則としては、例えば前記式h30が用いられる。
次いで、演算部230gにおいて、フルモデル床反力モーメント鉛直成分Mfullzと補償全床反力モーメント鉛直成分Mdmdzと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdとの和から逆位相腕振り補正用摂動モデルモーメントMaの前回値(後述する積分器の出力)を減じることによって無制限時補正目標床反力モーメント鉛直成分Minzを求める。次いで、制限手段(制限処理部)230hにおいて、無制限時補正目標床反力モーメント鉛直成分Minzを床反力鉛直成分モーメント許容範囲を越えないように制限を加えることにより(すなわち図示する飽和特性関数に通して)、制限時補正目標床反力モーメント鉛直成分Mltdzを求める。次いで、フルモデル床反力モーメント鉛直成分Mfullzと補償全床反力モーメント鉛直成分Mdmdzと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdとの和を制限時補正目標床反力モーメント鉛直成分Mltdzから減じた値を積分器230iにより、積分ゲインKaで積分することにより逆位相腕振り補正用摂動モデルモーメントMaを求めて、これを出力する。また、制限時補正目標床反力モーメント鉛直成分Mltdzをコンプライアンス制御用目標床反力モーメント鉛直成分として出力する。
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部230において、逆位相腕振り補正用摂動モデルモーメントMaとコンプライアンス制御用目標床反力モーメント鉛直成分が決定される。
求めた補正用摂動モデル上体位置Xc、補正用摂動モデル上体姿勢傾斜角θc、補正用摂動モデル逆位相腕振り角θca、上体水平位置補正用摂動モデル安定化モーメントMpfおよび逆位相腕振り補正用摂動モデルモーメントMaは、前述のごとく次回制御周期(時刻t+Δt)において、前回値として用いられる。
残余の構成および処理は、第4参考例と同一である。この第5参考例によれば、第4参考例と同様の作用効果を奏することができる。
次に、第6参考例を図73および図74を参照して説明する。第6参考例は、前記第4および第5参考例で用いた逆動力学フルモデル(逆フルモデル)201に代えて、順動力学モデル(より正確には擬似順動力学モデル)を用いて歩容を修正しつつ生成する手法である。
図73は、この第6参考例に係る装置の動作を説明する機能ブロック図である。同図73に示すように、本第6参考例では、擬似順フルモデル(擬似順動力学フルモデル)222を備えている。
この擬似順フルモデル222は、上体水平位置安定化モーメント要求値Mpfdmd、上体姿勢傾斜角安定化モーメント要求値Mrfdmd、逆位相腕振り角安定化モーメント要求値Mafdmd、目標ZMP、目標床反力鉛直成分、補償全床反力モーメント水平成分Mdmdxyおよび補償全床反力モーメント鉛直成分Mdmdzと、目標足平位置姿勢および目標腕姿勢など上体3を除く部位の運動状態とを入力として、目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標ZMPまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)、および目標床反力水平成分を出力するモデルである。なお、擬似順フルモデル222の目標値入力は、前記図63を参照して説明した如く、歩容パラメータ決定部100aで決定される歩容パラメータを基に、目標瞬時値発生部100bにより生成される。
上記擬似順フルモデル222は、具体的には図74の機能ブロック図で表され、図74の破線で囲った部分が擬似順フルモデル222に相当する。なお、この機能ブロック図で前記第5参考例の図71と同一機能部分については、図71と同一の参照符号を用いている。
ここで、同図74の単純化モデル200は、単に動力学モデルだけでなく、前述の図65のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表す。また、S3532の今回歩容瞬時値(単純化モデル歩容瞬時値)の算出(決定)処理においては、前記第4参考例で説明したように目標ZMPまわりのモデル操作床反力モーメント水平成分を0として歩容の瞬時値を生成した上で、さらに第3実施形態において述べた上体姿勢傾斜角補正用摂動モデルモーメントMrに相当する単純化歩容上体姿勢傾斜角補正用モーメントMr(前回値)を発生する上体傾斜モードの摂動運動と第3実施形態において述べた上体水平位置補正用摂動モデルモーメントMpに相当する単純化モデル上体水平位置補正用モーメントMp(前回値)を発生する上体並進モードの摂動運動と第4参考例において述べた逆位相腕振り角補正用摂動モデルモーメントMaに相当する単純化モデル逆位相腕振り角補正用モーメントMa(前回値)を発生する逆位相腕振りモードの摂動運動を付加する。これにより、単純化モデル200が出力する歩容の瞬時値を補正する。
より具体的に説明すると、本第6参考例における図65のS3532の処理においては、そのサブルーチン処理である図57のS3414とS3416において、単純化モデル200で求めた上体水平加速度に、前記式03yの右辺第2項をMp(前回値)に等しいとした式、すなわちMp=mb*(Zb−Zzmp)*(d2Xb/dt2)という式に基づいて求められる上体水平加速度(d2Xb/dt2)を摂動分として加えてなる上体水平加速度を今回歩容の初期から現在時刻tまで2階積分することにより、現在時刻tにおける上体水平位置の瞬時値が求められる。また、図57のS3414において、単純化モデル200で求めた上体姿勢傾斜角加速度に、前記式03yの右辺第7項をMr(前回値)に等しいとした式、すなわち、Mr=J*d2θby/dt2という式に基づいて求められる上体姿勢傾斜角加速度(d2θby/dt2)を摂動分として加えてなる上体姿勢傾斜角加速度を今回歩容の初期から現在時刻tまで2階積分することにより、現在時刻tにおける上体姿勢傾斜角の瞬時値が求められる。また、図57のS3414において、単純化モデル200で求めた逆位相腕振り角加速度に、前記式03zの右辺第8項をMa(前回値)に等しいとした式、すなわち、Ma=Jaz*d2θaz/dt2という式に基づいて求められる逆位相腕振り角加速度(d2θaz/dt2)を摂動分として加えてなる逆位相腕振り角加速度を今回歩容の初期から現在時刻tまで2階積分することにより、現在時刻tにおける逆位相腕振り角の瞬時値が求められる。
補足すると、上体水平位置と上体姿勢傾斜角については、サジタルプレーン上の瞬時値について述べたが、ラテラルプレーン上の瞬時値も同様に求める。
図74において、単純化モデル200から先の部分がS3536の処理に相当する処理を実行する部分である。以下に図74を用いてS3536の処理を詳細に説明する。
S3536では、まず、S3032において上記の如く単純化モデル上体水平位置補正用モーメントMp(詳しくは時刻(t−Δt)の制御周期での前回値)を基に補正された単純化モデル水平上体位置が目標上体水平位置(時刻tでの上体水平位置の最終的な目標瞬時値)として出力される。また、単純化モデル上体姿勢傾斜角補正用モーメントMr(詳しくは時刻(t−Δt)の制御周期での前回値)を基に補正された単純化モデル上体姿勢傾斜角が目標上体姿勢傾斜角(時刻tでの上体姿勢傾斜角の最終的な目標瞬時値)として出力される。また、単純化モデル逆位相腕振り角補正用摂動モデルモーメントMa(詳しくは時刻(t−Δt)の制御周期での前回値)を基に補正された単純化モデル逆位相腕振り角が目標逆位相腕振り角(時刻tでの逆位相腕振り角の最終的な目標瞬時値)として出力される。
すなわち、式h100、式h101、式h102により、最終的な目標上体水平位置と目標上体姿勢傾斜角とが決定される。
目標上体水平位置=単純化モデル上体水平位置 …式h100
目標上体姿勢傾斜角=単純化モデル上体姿勢傾斜角 …式h101
目標逆位相腕振り角=単純化モデル逆位相腕振り角 …式h102
次いで、目標上体水平位置(すなわち単純化モデル上体水平位置)、目標上体姿勢傾斜角(すなわち単純化モデル上体姿勢傾斜角)、目標逆位相腕振り角(すなわち単純化モデル逆位相腕振り角)および前述のごとく得られた単純化モデル歩容の目標全体重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ZMPの瞬時値とを、前記逆動力学フルモデル(逆フルモデル)201に入力し、入力された運動変数で表される運動に釣り合う(すなわち運動によって逆フルモデル201が発生する)床反力水平成分と目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)とが算出される。以降、第5参考例と同様、これらの算出された床反力水平成分、床反力モーメント水平成分および床反力モーメント鉛直成分をそれぞれフルモデル床反力水平成分Ffull、フルモデル床反力モーメント水平成分Mfullxy、床反力モーメント鉛直成分Mfullzと呼ぶ。
第5参考例と同様、フルモデル床反力水平成分Ffullは、目標床反力水平成分(時刻tでの床反力水平成分の最終的な目標瞬時値)として出力される。
本第6参考例では、上体姿勢傾斜角補正用摂動モデルと上体水平位置補正用摂動モデルと逆位相腕振り角補正用摂動モデルとを備えないので、上体水平位置補正用摂動モデル制御則と上体姿勢傾斜角補正用摂動モデル制御則と逆位相腕振り角補正用摂動モデル制御則とに相当する処理は、後述するように、第5参考例とは異なる。
このことを除けば、上記処理以降、単純化モデル上体姿勢傾斜角補正用モーメントMrと単純化モデル上体水平位置補正用モーメントMpと単純化モデル逆位相腕振り角補正用モーメントMaとを決定するまでは、第5参考例において、上体姿勢傾斜角補正用摂動モデルモーメントMrと上体水平位置補正用摂動モデルモーメントMpと逆位相腕振り角補正用摂動モデルモーメントMaとを決定する処理と同一の処理が実行される。すなわち、Min演算部209、Fin演算部210、制限処理部211(制限手段)、Mpf演算部215、Merr演算部216、Mrf演算部217(=Mr演算部)、Mp演算部214の処理は、第5参考例と同一である。さらに、逆位相腕振り角補正用摂動モデル制御則とに相当する処理を除けば、単純化モデル逆位相腕振り角補正用モーメント決定部230の処理は、前記第5参考例における逆位相腕振り角補正用摂動モデルモーメント決定部230の処理と同一である。なお、本第6参考例では、Mr、MpおよびMaは、それぞれ第5参考例における上体姿勢傾斜角補正用摂動モデルモーメントMrと上体水平位置補正用摂動モデルモーメントMpと逆位相腕振り角補正用摂動モデルモーメントMaとにそれぞれ対応するものであるが、第5参考例のように摂動モデルに入力するものではなく、単純化モデル200に入力するものである。このため、Mr、MpおよびMaの名称を本第6参考例では、単純化モデル上体姿勢傾斜角補正用モーメント、単純化モデル上体水平位置補正用モーメント、単純化モデル逆位相腕振り角補正用モーメントと称している。
上記のごとく求められた単純化モデル上体姿勢傾斜角補正用モーメントMrと単純化モデル上体水平位置補正用モーメントMpと単純化モデル逆位相腕振り角補正用モーメントMaとは、前述のごとく次回制御周期(時刻t+Δt)に、単純化モデル歩容瞬時値の決定(生成)時に前回値として用いられる。
残余の構成及び処理は、第5参考例と同一である。
以下に、上体姿勢傾斜角安定化モーメント要求値Mrfdmdと上体水平位置安定化モーメント要求値Mpfdmdと逆位相腕振り角安定化モーメント要求値Mafdmdとの決定処理について図73を参照して説明する。
図73に示すように、第6参考例では、前述したように擬似順フルモデル222に備える単純化モデル200とは別の単純化モデル223を備えている。この単純化モデル223は、本第6参考例でのその機能は、前述した単純化モデル200と同一であり、単に動力学モデルだけでなく、前述の図65のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表すものである。なお、単純化モデル223は、実際上は、上体姿勢傾斜角の瞬時値と、上体水平位置の瞬時値とを決定できればよく、必ずしも図65のS3510からS3532の処理の全てを行なう必要はない。
以下に図73を用いて第6参考例におけるMpfdmdおよびMrfdmdの決定処理を詳細に説明する。
本第6参考例においては、単純化モデル223を用いて生成される歩容と前記擬似順動力学フルモデル222を用いて前述の通り算出される歩容との間の上体水平位置、上体姿勢傾斜角および逆位相腕振り角のそれぞれの差が演算部224,225、228により求められる。そして、これらの差に応じて、これらの差が0に収束するようにPIDなどのフィードバック制御則によって上体水平位置安定化モーメント要求値Mpfdmd、上体姿勢傾斜角安定化モーメント要求値Mrfdmdおよび逆位相腕振り角安定化モーメント要求値Mafdmdが決定される。すなわち、単純化モデル223による上体水平位置と擬似順フルモデル222による上体水平位置との差に応じて、フィードバック制御則からなる上体水平位置安定化制御則226によって、Mpfdmdが求められる。また、単純化モデル223による上体姿勢傾斜角と擬似順フルモデル222による上体姿勢傾斜角との差に応じて、フィードバック制御則からなる上体姿勢傾斜角安定化制御則227によって、Mrfdmdが求められる。また、単純化モデル223による逆位相腕振り角と擬似順フルモデル222による逆位相腕振り角との差に応じて、フィードバック制御則からなる逆位相腕振り角安定化制御則によって、Mafdmdが求められる。そして、この決定されたMpfdmd、Mrfdmd及びMafdmdが、前記擬似順動力学フルモデルにフィードバックされて入力される。
なお、第6参考例では、歩容生成装置100は、前記擬似順動力学フルモデル222への入力の一部である目標ZMP、目標床反力鉛直成分、目標足平位置姿勢および目標腕姿勢などと、前記擬似順動力学フルモデル222からの出力である目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標床反力水平成分およびコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)を最終的な今回歩容の目標瞬時値として出力する。
以上説明した第6参考例によれば、前記第5参考例と同様の作用効果を奏することができる。
なお、前記第6参考例では、上体姿勢傾斜角安定モーメント要求値Mrfdmd、上体水平位置安定化モーメント要求値Mpfdmdおよび逆位相腕振り角安定化モーメント要求値Mafdmdを擬似順フルモデル222のみに入力するようにしたが、Mrfdmd、MpfdmdおよびMafdmdを単純化モデル223に入力するようにしてもよく、あるいは、単純化モデル223と擬似順フルモデル222とに分配・供給するようにしてもよい。また、補償全床反力モーメント鉛直成分Mdmdzを単純化モデル223に入力し、このMdmdzが付加的に発生するように単純化モデル逆位相腕振り角を決定するようにしてもよい。
次に、本発明の第7参考例を図75を参照して説明する。図75は、この第7参考例に係る装置の動作、具体的には、図65のフローチャートのS3536の歩容の修正手法を説明する機能ブロック図である。なお、図75では、第4参考例もしくは第5参考例と同一機能部分については、図66又は図71と同一の参照符号を用いる。
第7参考例においては、上体水平位置補正用摂動モデル202と上体姿勢傾斜角補正用摂動モデル203と逆位相腕振り角補正用摂動モデル231とを備える。また、3つの分配器220,221,241を備える。
分配器220,221,241を定義すると、いずれも、1入力2出力の伝達ブロックであり、入力に応じて、一方の出力を決定し(例えば、入力に周波数特性、不感帯特性、飽和特性などの信号処理を行って一方の出力を決定し)、2つの出力の和が入力に一致またはほぼ一致するように、他方の出力を決定する伝達ブロックである。
分配器220には、制限補正目標床反力モーメント水平成分Mltdxyから、上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じたもの(Mr演算部214の出力)である上体姿勢傾斜角補正用モーメントMrが入力され、上体姿勢傾斜角補正用摂動モデル203に入力する上体姿勢傾斜角補正用摂動モデル入力Mriと、単純化モデル200に入力する単純化モデル上体姿勢傾斜角補正用モーメントMrsとに分配される。この時、上体姿勢傾斜角補正用摂動モデル入力Mriと単純化モデル上体姿勢傾斜角補正用モーメントMrsとの和が上体姿勢傾斜角補正用モーメントMrに一致するように、上体姿勢傾斜角補正用摂動モデル入力Mriと単純化モデル上体姿勢傾斜角補正用モーメントMrsとが決定される(出力される)。
より具体的には、上体姿勢傾斜角補正用モーメントMrに応じて、上体姿勢傾斜角補正用摂動モデル入力Mriが決定される。例えば、上体姿勢傾斜角補正用モーメントMrを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、上体姿勢傾斜角補正用摂動モデル入力Mriが決定される。また、上体姿勢傾斜角補正用モーメントMrから上体姿勢傾斜角補正用摂動モデル入力Mriを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントMrsとして決定される。さらに具体的に説明すると、第7参考例では、分配器220は、例えば、入力(上体姿勢傾斜角補正用モーメントMr=Mltd−Mpf−Mdmdxy)をローパスフィルタに通してなる低周波成分(直流分)を単純化モデル上体姿勢傾斜角補正用モーメントMrsとして出力すると共に、その入力(上体姿勢傾斜角補正用モーメントMr)からMrsを差し引いた成分が上体姿勢傾斜角補正用摂動モデル入力Mriとして出力される。この場合、低周波成分(直流分)である単純化モデル上体姿勢傾斜角補正用モーメントMrsに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Mrsが該所定値(例えば0)に維持されるようにしておく。
分配器220の出力である上体姿勢傾斜角補正用摂動モデル入力Mriは、前記上体姿勢傾斜角補正用摂動モデル203に入力され、上体姿勢傾斜角補正用摂動モデル203により補正用摂動モデル上体姿勢傾斜角θcが決定される。
分配器220のもうひとつの出力である単純化モデル上体姿勢傾斜角補正用モーメントMrsは単純化モデル200に入力される。これは、前記第6参考例における図74において、単純化モデル上体姿勢傾斜角補正用モーメントMrを単純化モデル200に入力することに相当するものである。
分配器221においては、フルモデル床反力モーメント水平成分誤差MerrにゲインKmを乗じた値を積分器217aによって積分し、さらに符号を反転した値を入力とする。
分配器221の入力は、分配器220と同様、単純化モデル200に入力する単純化モデル上体水平位置補正用モーメントMpsと、上体水平位置補正用摂動モデル202に入力する誤差補正モーメントMeとに分配される。より具体的には、積分器217aの出力に応じて、誤差補正モーメントMeが決定される。例えば、積分器217aの出力(分配器220の入力)を不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、誤差補正モーメントMeが決定される。また、積分器217aの出力から、誤差補正モーメントMeを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントMrsとして決定される。さらに具体的に説明すると、本第7参考例では、分配器221は、例えば、入力(積分器217aの出力)をローパスフィルタに通してなる低周波成分(直流分)を単純化モデル上体水平位置補正用モーメントMpsとして出力すると共に、その入力(積分器217aの出力)からMpsを差し引いた成分を誤差補正モーメントMeとして出力する。この場合、低周波成分(直流分)である単純化モデル上体水平位置補正用モーメントMpsに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Mpsが該所定値(例えば0)に維持されるようにしておく。
分配器221の出力である誤差補正モーメントMeに上体水平位置補正用モデル安定化モーメントMpfをMp演算部217bで加算することにより上体水平位置補正用摂動モデルモーメントMpが求められる。そして、上体水平位置補正用摂動モデルモーメントMpは、上体水平位置補正用摂動モデル202に入力され、上体水平位置補正用摂動モデル202により補正用摂動モデル上体水平位置Xcが決定される。
分配器221のもうひとつの出力である単純化モデル上体水平位置補正用モーメントMpsは単純化モデル200に入力される。これは、前記第6参考例の図74において、単純化モデル上体水平位置補正用モーメントMpを単純化モデル200に入力することに相当するものである。
逆位相腕振り角補正用摂動モデルモーメント決定部230は、第5参考例において用いた図72に示す逆位相腕振り角補正用摂動モデルモーメント決定部と同一である。ただし、図72の出力である逆位相腕振り角補正用摂動モデルモーメントMaは、逆位相腕振り角補正用摂動モデル231に直接入力されず、分配器241に入力される。そこで、本第7参考例では逆位相腕振り角補正用摂動モデルモーメントMaは、名称を改めて逆位相腕振り角補正用モデルモーメントMaと呼ぶ。
分配器241においては、逆位相腕振り角補正用摂動モデルモーメント決定部230が決定した逆位相腕振り角補正用モデルモーメントMaを入力とする。
分配器241の入力は、分配器220と同様、単純化モデル200に入力する単純化モデル逆位相腕振り角補正用モーメントMasと、逆位相腕振り角補正用摂動モデル231に入力する逆位相腕振り角補正用摂動モデル入力Maiとに分配される。
この時、逆位相腕振り角補正用摂動モデル入力Maiと単純化モデル逆位相腕振り角補正用モーメントMasとの和が逆位相腕振り角補正用モデルモーメントMaに一致するように、逆位相腕振り角補正用摂動モデル入力Maiと単純化モデル逆位相腕振り角補正用モーメントMasとが決定される(出力される)。
より具体的には、逆位相腕振り角補正用モデルモーメントMaに応じて、逆位相腕振り角補正用摂動モデル入力Maiが決定される。例えば、逆位相腕振り角補正用モデルモーメントMaを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、逆位相腕振り角補正用摂動モデル入力Maiが決定される。また、逆位相腕振り角補正用モデルモーメントMaから逆位相腕振り角補正用摂動モデル入力Maiを差し引いたものが、単純化モデル逆位相腕振り角補正用モーメントMasとして決定される。さらに具体的に説明すると、第7参考例では、分配器241は、例えば、入力(逆位相腕振り角補正用モデルモーメントMa)をローパスフィルタに通してなる低周波成分(直流分)を単純化モデル逆位相腕振り角補正用モーメントMasとして出力すると共に、その入力(逆位相腕振り角補正用モデルモーメントMa)からMasを差し引いた成分が逆位相腕振り角補正用摂動モデル入力Maiとして出力される。この場合、低周波成分(直流分)である単純化モデル逆位相腕振り角補正用モーメントMasに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Masが該所定値(例えば0)に維持されるようにしておく。
分配器241の出力である逆位相腕振り角補正用摂動モデル入力Maiは、前記逆位相腕振り角補正用摂動モデル231に入力され、逆位相腕振り角補正用摂動モデル231により補正用摂動モデル逆位相腕振り角θcaが決定される。
分配器241のもうひとつの出力である単純化モデル逆位相腕振り角補正用モーメントMasは単純化モデル200に入力される。これは、前記第6参考例における図74において、単純化モデル逆位相腕振り角補正用モーメントMaを単純化モデル200に入力することに相当するものである。
単純化モデル200は、前記第6参考例と同様、単純化モデル歩容瞬時値の算出(決定)処理において、目標ZMPまわりに床反力モーメント水平成分が発生しないように(モデル操作床反力モーメントを0として)歩容の瞬時値を生成した上で、単純化モデル上体姿勢傾斜角補正用モーメントMrs(前回値)を発生する上体傾斜モードの摂動運動を付加し、単純化モデル上体水平位置補正用モーメントMps(前回値)を発生する上体並進モードの摂動運動を付加し、さらに単純化モデル逆位相腕振り角補正用モーメントMasを発生する逆位相腕振りモードの摂動運動を付加して、歩容の瞬時値を補正する。
なお、本第7参考例では、図65のS3528の処理の一部である図43のS800において、前回歩容の終端状態として、前回歩容終端における単純化モデルの状態量を用いる。従って、分配器220,221,241から単純化モデルに出力されるMrs、Mps及びMasが0以外の値となる時があれば、単純化モデルは当初の挙動からずれるので、これに応じてS3528において、歩容パラメータが適宜修正される。また、前記不感帯の領域を大きく設定すると、Mrs、Mps及びMasの絶対値が小さくなるので、歩容パラメータの修正量の絶対値も小さくなる。
その他の構成及び処理は、第5参考例と同一である。より詳しくは、演算部204,205,目標上体水平位置を演算する演算部、Merr演算部216、上体姿勢傾斜角補正用摂動モデル制御則207、上体水平位置補正用摂動モデル制御則206、Min演算部209、Fin演算部210、制限処理部211、Mpf演算部215、逆位相腕振り角補正用摂動モデルモーメント決定部240の処理は、前記第5参考例と同一である。
なお、本第7参考例では、前記第4参考例で説明したように今回歩容の終端等で各摂動モデル202、203、231の状態量により単純化モデル200の状態量を修正するような処理は行なう必要はない。これは、分配器220,221,241から単純化モデル上体姿勢傾斜角補正用モーメントMrs、単純化モデル上体水平位置補正用モーメントMps及び単純化モデル逆位相腕振り角補正用モーメントMasが追加入力されるからである。
かかる本実施形態では、前記第5参考例あるいは第6参考例と同様の作用効果を奏することができる。
なお、本第7参考例では、各分配器220,221、241の2つの出力のうち一方を0とし、他方を入力に一致させるようにしても良い。
この場合、例えば分配器220の出力である単純化モデル上体姿勢傾斜角補正用モーメントMrsを0にし、分配器221の出力である単純化モデル上体水平位置補正用モーメントMpsを0にし、分配器241の出力である単純化モデル逆位相腕振り角補正用モーメントMasを0にすると、第5参考例と同一の作用効果を奏することとなる(事実上、第5参考例のものと同一構成となる)。
また、誤差補正モーメントMeに上体水平位置補正用モデル安定化モーメントMpfを加算した値を図示しない第3の分配器に入力し、その出力の一方を上体水平位置補正用摂動モデルに入力し、もう一方の出力を単純化モデル上体水平位置補正用モーメントMpsに加算しても良い。この場合、分配器221の出力である単純化モデル上体水平位置補正用モーメントMpsを0にしても良い。すなわち、分配器221を省略し、フルモデル床反力モーメント誤差MerrにゲインKmを乗じた値を積分して符号を反転した値を上体水平位置補正用モデル安定化モーメントMpfに加算した値を第3の分配器に入力しても良い。
なお、以上説明した第4〜第7参考例では、図65のS3532において、目標ZMPを満足するように、すなわち、目標ZMPまわりの床反力モーメント水平成分が0になるように、今回歩容瞬時値(目標運動の仮瞬時値)を決定するようにしたが、これに代えて、第2参考例における図56のS3032のように、目標ZMPまわりにモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値を決定するようにしてもよい。この場合には、図53に示す如く、歩容生成装置100に補償全床反力モーメント水平成分分配器110からモデル操作床反力モーメント水平成分を与えるようにすればよい。
また、以上説明した第1〜第7参考例においては、補償全床反力モーメント水平成分Mdmdxyは、上体姿勢角・角速度の代わりに、全体重心水平位置・速度など、ロボット1の他の姿勢に関する状態量に基づいて決定しても良い。
次に、本発明の第1実施形態を図76から図83を参照して説明する。
本実施形態における制御ユニット60の機能ブロック図を図76に示す。なお、本実施形態では、前記第3参考例と同一構成部分もしくは同一機能部分については第3参考例と同一の参照符号を用いる。
本実施形態では、第3参考例(図59参照)に比較して、実ロボット1の滑りの有無を判定する滑り判定部114が追加されている。また、滑り判定部114から出力される滑り判定結果が歩容生成装置100に入力される。歩容生成装置100においては、滑り判定結果が滑りありと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を狭める。また、歩容生成装置100は、滑り判定結果が滑りなしと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲に戻す。他の構成および処理に関しては、前記第3参考例と同一である。
滑り判定部114を、その処理を表すフローチャートである図79を用いて詳細に説明すると、まず、S5210において、スピン判定サブルーチンが実行される。スピン判定サブルーチンでは、そのフローチャートである図80のS5310に進み、実上体姿勢角速度および関節角指令(検出値)を基に支持脚足平22の対地角速度鉛直成分ωsupzを求める。次いでS5312に進み、足平22の6軸力センサ50の検出値(実床反力)を基に、支持脚に作用している実床反力モーメント鉛直成分の時間的な変化率である支持脚床反力モーメント鉛直成分の変化率dMsupactz/dtを求める。次いでS5314に進み、前記支持脚足平22の対地角速度鉛直成分ωsupzの絶対値がある所定の値ωeを越えているか否かを判定する。越えている場合には、S5316に進み、前記支持脚床反力モーメント鉛直成分の変化率dMsupactz/dtを前記支持脚足平の対地角速度鉛直成分ωsupzで割って符号を反転した値である、支持脚の見かけねじりばね定数Ksuptを求める。次いでS5318に進み、Ksuptがある所定の値Ksuptminよりも小さいか否かを判定し、小さい場合には、S5320に進み、スピン判定結果を、スピンありと判定し、そうでない場合には、S5322に進み、スピン判定結果を、スピンなしと判定する。また、S5314において、前記支持脚足平の対地角速度鉛直成分ωsupzの絶対値が前記所定の値ωeを越えていないと判定された場合には、S5324に進み、スピン判定結果を、スピンなしと判定する。このようにスピンの有無を判定することで、足平22などの撓み(弾性変形)によって、ωsupzの絶対値がある所定の値ωeを超えたようなときに、スピン有りと誤判定されるような事態が回避される。
以上のごとくS5210の処理を完了した後、S5212に進み、並進滑り判定サブルーチンが実行される。
並進滑り判定サブルーチンでは、そのフローチャートである図81のS5410に進み、実上体姿勢角速度、加速度検出値および関節角指令(検出値)を基に支持脚足平22の対地並進速度水平成分Vsupxyを求める。次いでS5412に進み、足平22の6軸力センサ50の検出値(実床反力)を基に、支持脚に作用している実床反力水平成分の時間的な変化率である支持脚床反力水平成分の変化率dFsupactxy/dtを求める。次いでS5414に進み、前記支持脚足平の対地並進速度水平成分Vsupxyの絶対値がある所定の値Veを越えているか否かを判定する。越えている場合には、S5416に進み、前記支持脚床反力水平成分の変化率dFsupactxy/dtを前記支持脚足平22の対地並進速度水平成分Vsupxyで割って符号を反転した値である、支持脚の見かけせん断ばね定数Ksups(=(−dFsupactxy/dt)/Vsupxy)を求める。次いでS5418に進み、Ksupsがある所定の値Ksupsminよりも小さいか否かを判定し、小さい場合には、S5420に進み、並進滑り判定結果を、並進滑りありと判定し、そうでない場合には、S5422に進み、並進滑り判定結果を、並進滑りなしと判定する。また、S5414において、前記支持脚足平の対地並進速度水平成分Vsupxyの絶対値が前記所定の値Veを越えていないと判定された場合には、S5424に進み、並進滑り判定結果を、並進滑りなしと判定する。このように並進滑りの有無を判定することで、足平22などの撓み(弾性変形)によって、Ksupsの絶対値がある所定の値Ksupsminを超えたようなときに、並進滑り有りと誤判定されるような事態が回避される。
以上のごとくS5212の処理を完了した後、S5214に進み、滑り振動判定サブルーチンが実行される。
滑り振動判定サブルーチンでは、そのフローチャートである図82のS5510に進み、足平22の6軸力センサ50の検出値(並進力水平成分および/またはモーメント鉛直成分)をバンドパスフィルタに通すことにより、滑り振動成分を抽出する。尚、足平22の6軸力センサ50の検出値の代わりに、足平22にヨーレートセンサ、加速度センサ等を備えて、その検出値を用いても良い。また、バンドパスフィルタの通過周波数帯は、足平22の足底や床面の材質などに応じてあらかじめ設定される。次いでS5512に進み、検出された滑り振動成分の大きさの絶対値がある所定の値Ampeを越えているか否かを判定する。越えている場合には、S5514に進み、滑り振動判定結果を、滑り振動ありと判定し、そうでない場合には、S5516に進み、滑り振動判定結果を、滑り振動なしと判定する。
以上のごとくS5214の処理を完了した後、S5216に進み、スピン判定結果がスピンあり、または並進滑り判定結果が並進滑りあり、または滑り振動判定結果が滑り振動ありであるならば、S5218に進み、総合判定結果である滑り判定結果を滑りありと決定し、そうでないならば、S5220に進み、総合判定結果である滑り判定結果を滑りなしと決定する。以上が、滑り判定部114の処理である。
図77に本実施形態における歩容生成装置100のメインルーチン処理のフローチャートを示す。
同図77おいて、S2310からS2332までは、第3参考例のフローチャート(図60)のS2010からS2032までの処理と同一の処理が行なわれる。
次いでS2334に進み、修正歩容瞬時値決定サブルーチンが実行される。
本実施形態では、修正歩容瞬時値決定サブルーチンでは、元歩容に近づくように目標ZMPおよび逆位相腕振り復元角加速度パターンを修正しつつ、修正された目標ZMPまわりにモデル操作床反力モーメント(水平成分および鉛直成分)が付加的に発生するように修正歩容瞬時値が決定される。ただし床反力許容範囲を滑り判定結果に応じて変更され、この点が第3参考例と相違する。
図78に修正歩容瞬時値決定サブルーチンのフローチャートを示す。修正歩容瞬時値決定サブルーチンでは、まずS5100からS5114までの処理が、第3参考例の修正歩容瞬時値決定サブルーチンである図61のS2100からS2112と同様に実行される。次いで、S5116に進み、前記滑り判定部114による滑り判定結果が滑りありであるか否かを判定し、前記滑り判定結果が滑りありの場合には、S5118に進み、許容範囲低減率attを徐々に0に近づける(実質的に連続的に減少させる)。尚、許容範囲低減率attは0から1までの値をとるものとする。S5116において前記滑り判定結果が滑りなしと判定された場合には、S5120に進み、許容範囲低減率attを徐々に1に近づける(実質的に連続的に増加させる)。
次いでS5122に進み、S5110およびS5112で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲の上限値および下限値であるFxmin,Fxmax,MzminおよびMzmaxにそれぞれ許容範囲低減率attを乗じることにより、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を狭める。以降、このS5122で決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を総称的に最終的床反力許容範囲という。尚、当然のことながら低減率が1の場合には、最終的床反力許容範囲は、S5110およびS5112で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲(以下、これらを元の床反力許容範囲ということがある)に一致し、該元の床反力許容範囲から狭まらない。
図83に、滑り判定結果に応じて、許容範囲低減率att、最終的床反力許容範囲(具体的には、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲)が変化する様子の例を示す。
滑りが発生した場合には、グリップ状態に早急に回復しないとロボット1が転倒する恐れが生じるので、滑りが発生したと判定されたならば、最終的床反力許容範囲をすばやく狭めるようにした方が良い。ただし、急激過ぎると、歩容の加速度変化が大きくなり過ぎ、衝撃などが生じるので、急激過ぎない適切な値にすべきである。
滑りがなくなったと判定されたならば、最終的床反力許容範囲を元の床反力許容範囲にすばやく戻すようにした方が良い。最終的床反力許容範囲が狭いままであると、修正歩容が元歩容から大きくずれていってしまうからである。ただし、急激過ぎると、歩容の運動の加速度変化が大きくなり過ぎ、衝撃などが生じて再び滑ってしまうので、急激過ぎない適切な値にすべきである。
次いでS5124に進み、図61のS2114と同様、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント水平成分、コンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)、上体水平加速度および上体姿勢傾斜角加速度および逆位相腕振り角加速度を決定する。
次いでS5126からS5128まで進み、図61のS2116からS2118までと同様の処理が行われる。
上記のごとく修正歩容瞬時値決定サブルーチンが実行され、次いで図77のS2336に進み、現在時刻tをΔtだけ増加して、再びS2314に戻り、歩容生成を続ける。
以上が、本実施形態における歩容生成装置100の処理である。
上記のごとく、本実施形態においては、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を滑り判定結果に応じて変更するようにしたが、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれか一方だけを変更するようにしても良い。
一般的に、足平22が床面上で平行に滑っている場合(せん断方向に滑っている場合)には、スピン方向(ヨー方向)のグリップ力も低下する。また逆に、スピン方向(ヨー方向)に滑っている場合には、足平22が床面上で平行に滑り易くなる。したがって、いずれかの滑りが検知されたならば、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の両方を狭める(0にする)方が滑りから回復する効果は高い。
以上説明した第1実施形態は、本発明の第3〜第7発明の実施形態になっている。この場合、第1実施形態における床反力水平成分が制限対象量、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差ががロボット1の状態量の偏差に相当する。また、第1実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、発明における動力学モデルは、図12の動力学モデルが相当する。また、図77のS2334で決定される修正歩容瞬時値の運動成分と床反力成分とがそれぞれ目標運動の瞬時値および目標床反力の瞬時値に相当する。
前記第1実施形態では、歩容生成装置100として前記第3参考例のものを用いたが、第3参考例の代わりに第1、第2、第4〜第7参考例のいずれのものを用いても良い。
第1参考例を用いる場合の実施形態では、例えば図13のS030で今回歩容瞬時値を決定するときに、そのサブルーチンである図45のS1411とS1412との間に図78のS5116〜S5122の処理を挿入すればよい。このようにした実施形態(第2実施形態)は、本発明のうちの第1発明、第2発明並びに第5〜第7発明の実施形態となる。この場合、第1実施形態における床反力水平成分が第1発明における制限対象量に相当し、床反力鉛直成分が第2発明における制限対象量に相当する。また、第1実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が第1発明における制限対象量の許容範囲に相当し、歩容生成用の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が第2発明における制限対象量の許容範囲に相当する。また、発明における動力学モデルは、図12の動力学モデルが相当する。また、図13のS030で決定される今回歩容瞬時値の運動成分が目標運動に相当する。また、図13のS030の中で実行される図46のS1004において、S504,S518(図26を参照)で仮に決定される運動が前記第1発明あるいは第2発明における仮運動に相当する。
また、第2参考例を用いる場合の実施形態では、例えば図56のS03032で今回歩容瞬時値を決定するときに、そのサブルーチンである図57のS3411とS3412との間に図78のS5116〜S5122の処理を挿入すればよい。このようにした実施形態(第3実施形態)は、本発明のうちの第3〜第7発明の実施形態となる。この場合、第3実施形態における床反力水平成分が制限対象量に相当し、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差が第3及び第4発明におけるロボット1の状態量の偏差に相当する。また、第3実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、発明における動力学モデルは、図12の動力学モデルが相当する。また、図56のS3034で決定される今回歩容瞬時値の運動成分と床反力成分とが第目標運動の瞬時値、目標床反力の瞬時値に相当する。なお、第3実施形態では、床反力モーメント鉛直成分補償量許容範囲を滑りの発生の判断結果に応じて可変的に設定するようにしてもよい。
また、第4参考例を用いる場合の実施形態では、例えば図65のS3536の処理(フルモデルを用いた歩容の修正処理)を実行するときに、図78のS5116〜S5122の処理を実行して、許容範囲を可変的に設定するようにすればよい。このようにした実施形態(第4実施形態)は、本発明のうちの第3〜第7発明の実施形態となる。この場合、第4実施形態における床反力水平成分が制限対象量に相当し、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差がロボット1の状態量の偏差に相当する。また、第4実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、図65のS3536で修正された歩容の運動成分および床反力成分がそれぞれ第3発明及び第4発明における目標運動の瞬時値、目標床反力の瞬時値に相当する。また、発明における動力学モデルは、逆フルモデル(各摂動モデル202,203,231を含む)が相当する。
また、第5参考例を用いる場合の実施形態では、例えば図65のS3536の処理(フルモデルを用いた歩容の修正処理)を実行するときに、図78のS5116〜S5122の処理を実行して、許容範囲を可変的に設定するようにすればよい。このようにした実施形態(第5実施形態)は、本発明のうちの第3〜第7発明の実施形態となる。この場合、第5実施形態における床反力水平成分が制限対象量に相当し、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差がロボット1の状態量の偏差に相当する。また、第5実施形態における歩容生成用の床反力、水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、図65のS3536で修正された歩容の運動成分および床反力成分がそれぞれ第3発明及び第4発明における目標運動の瞬時値、目標床反力の瞬時値に相当する。また、発明における動力学モデルは、フルモデル(各摂動モデル202,203,231を含む)が相当する。
なお、第6および第7参考例を用いる場合の実施形態は、上記第5実施形態と同様であり、第3〜第7発明の実施形態となる。
また、滑りの判定方法としては、前記第1実施形態において挙げた方式以外にも、以下のようないずれを用いても良い。あるいはこれらの結果を総合的に(論理和、積などの論理演算を用いてい)判断しても良い。
1)角速度検出器などを基に床に対する足平22の角速度を求め、この値の絶対値がある所定の値を越えたら、滑りが発生と判定する。
2)いずれかの脚体2の床反力モーメントの絶対値がある所定の値を越えたら、滑りが発生と判定する。
3)全床反力モーメント(両脚体2,2の床反力の合力のモーメント)の絶対値がある所定の値を越えたら、滑りが発生と判定する。
4)両脚支持期において、全床反力モーメントの変化率と上体姿勢角速度偏差との比に(−1)を乗じた値がある所定の値(両脚接地時ねじり剛性)よりも小さいならば、滑りが発生と判定する。
5)視覚センサや空間フィルタ等を用いた非接触型の対地速度、角速度検出器、あるいは接触型の対地速度、角速度検出器の検出値(推定値)の絶対値がある所定の値を越えたならば、滑りが発生と判定する。
次に、前記第1〜第7参考例およびこれを用いる実施形態(前記第1〜第5実施形態を含む)に係る変形態様を以下に説明する。
前記第2〜第7参考例及びこれを用いる実施形態では、補償全床反力モーメント水平成分およびを補償全床反力モーメント鉛直成分を決定するようにしたが、補償全床反力モーメント水平成分および補償全床反力モーメント鉛直成分のいずれか、もしくは両者を0に設定しても良い。ただしこの場合には、フルモデル補正は、単に単純化モデルによる目標歩容の精度を高めるために用いられ、フルモデルを用いて歩容を修正することによる上体姿勢傾斜復元効果および/または上体ヨー角(角速度)復元効果はなくなる。
前記第4〜第7参考例およびこれを用いる実施形態においては、単純化モデル200による歩容生成(単純化モデル歩容生成)には、本願出願人が先に提案した特開平5−337849号公報の第1実施例、第2実施例の歩容生成装置を用いても良い。フルモデルによる補正量を小さくすることができるので、補正された歩容が単純化モデル歩容から大きくずれることを防止できる。
前記第2参考例およびこれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyが床反力モーメント許容範囲水平成分を越えると(第4参考例以降およびそれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和が床反力モーメント許容範囲を越えると)、コンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲の上限値あるいは下限値になる。但し、補償全床反力モーメント水平成分Mdmdxy(第4参考例以降およびそれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和)が床反力モーメント水平成分許容範囲を越えていても、補償全床反力モーメント水平成分Mdmdxy(第4参考例以降およびそれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和)の増加もしくは減少に応じてコンプライアンス制御用目標床反力モーメント水平成分も増加もしくは減少するようにしても良い。コンプライアンス制御用目標床反力モーメント水平成分が床反力モーメント水平成分許容範囲に接近すると、コンプライアンス制御によって制御される実床反力モーメント水平成分が目標よりも少なめになる傾向があり、このためコンプライアンス制御用目標床反力モーメント水平成分が少々許容範囲を越えても、すぐには、足平22の本来の接地感を低下させたり、足平22の底面が浮いてしまうような不具合が発生しない場合が多いからである。
同様の理由により、床反力モーメント水平成分許容範囲をいわゆる支持多角形で表されるZMP存在可能範囲(厳密な表現では、実床反力作用点の存在許容範囲)をモーメント水平成分に換算して得られる許容範囲を越えて設定しても良い。
コンプライアンス制御によって発生する床反力モーメント水平成分に過度に期待すると、上記のごとく足平22の本来の接地感を低下させたり、足平22の底面が浮いてしまうような不具合が発生する。よって、床反力モーメント水平成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント水平成分の許容範囲であると言える。
床反力モーメント水平成分許容範囲は、歩容パラメータからのみならず、検出された実床反力にも基づいて決定しても良い。また、階段でのエッジ位置検出値など、足平22の接地領域の検出値にも基づいて決定してもよい。
一方、コンプライアンス制御によって発生する床反力モーメント鉛直成分に過度に期待すると、スピンしてしまうような不具合が発生する。よって、床反力モーメント鉛直成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント鉛直成分の許容範囲であると言える。
前記第2参考例およびこれを用いる実施形態の図56のS3028における今回歩容パラメータの修正(目標ZMPの修正)を制御周期毎に実行するように、メインフローチャートの処理を変更しても良い。
修正歩容(目標歩容)が元歩容より大きくずれてしまう場合(発散してしまう場合)には、次回歩容の歩容パラメータ修正をする頃に既に、大きくずれて過ぎてしまい(発散し過ぎてしまい)、次回歩容の歩容パラメータ修正だけでは、継続的長期的に安定な目標歩容を生成することが困難になる。今回歩容パラメータの修正(目標ZMPの修正)を制御周期毎に実行することによって、この問題をかなり解決することができる。
さらには、元歩容からのずれ具合によって、今回歩容の足平着地位置や着地時刻などを制御周期毎に変更しても良い。
具体的には、S3020からS3030までの処理を制御周期毎に実行するように処理フローを変更しておき、S3020において、次回歩容支持脚座標系(次回歩容支持脚座標系は、次の足平着地位置姿勢に対応)、次次回歩容支持脚座標系(次次回歩容支持脚座標系は、次の次の足平着地位置姿勢に対応)、今回歩容周期(今回歩容周期は、次の足平着地時刻に対応)および次回歩容周期(次回歩容周期は、定常歩容の周期に相当)の少なくともいずれかを、S3028における今回歩容パラメータの修正(特に目標ZMPの修正)が小さくなるように(すなわち、今回歩容の安定余裕が高く維持されるように)、適宜変更すれば良い。
さらには、上記以外の歩容パラメータを変更しても良い。
また、修正歩容の元歩容からのずれは、単純化モデル上体姿勢傾斜角補正用モーメントMr、単純化モデル上体水平位置補正用モーメントMpおよび単純化モデル逆位相腕振り角補正用モーメントMaなどから動力学モデルを用いて推定することができるので、Mr,MpおよびMaに応じてモデルの挙動ずれを推定し、推定された挙動ずれを基に、歩容パラメータを修正してもよい。あるいは、Mr,MpおよびMaと歩容パラメータの修正量の適正値との関係をあらかじめ求めてマップ化しておいて、Mr,MpおよびMaに応じてマップを基に歩容パラメータの修正量を決定してもよい。
また、他の実施形態(第4〜第7参考例を用いる実施形態)に対しても上記と同様に、処理フローを変更して良い。
復元条件には、前記した条件以外にも、関節角が許容範囲を越えていないか、脚などの干渉がないか、関節角速度、トルクが過大でないかなどのキネマティクス条件、ダイナミクス条件を加えても良い。
また、これに伴って、前述したごとく、今回歩容パラメータの修正(目標ZMPあるいは着地位置、時刻などの修正)を制御周期毎に実行するようにメインフローチャートの処理を変更した場合には、今回歩容の安定余裕が高く維持されるように適宜変更される歩容パラメータの値が、適切な値になるように(ある制約条件を満足するように)することも、復元条件のひとつに加えても良い。
歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻は、上位の制御装置からの指示(歩行計画決定部やオペレータからの指示など。これを当初の要求と呼ぶ。)によって決定されるので、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻に戻るべきである。そこで、歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻を記憶し、修正歩容の着地位置、着地時刻が、記憶された着地位置、着地時刻にできる限り一致または近づくことも復元条件に加えても良い。ただし、実は、前記復元条件4、5および6によって、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻に徐々に戻る作用が働くので、あえて追加する必要はない。
また、状況の変化に対応して、当初の要求を変更し、変更した要求を満足する歩容パラメータに、上記のごとく歩容の安定余裕を高く維持するために適宜変更される歩容パラメータが、できる限り一致または近づくことを復元条件に加えても良い。この場合、前記前記復元条件4、5および6は削除するべきである。
前述した各種の復元条件を満足するモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントの決定法には、制約条件下で最適値を求めるための線形計画法(シンプレックス法など)や探索法を用いれば良い。または、ファジー推論を用いても良い。
また、着地位置を変更する場合には、歩行環境の障害物なども考慮しなければならない状況も考えられる。このような状況にも対処できるようにするためには、環境認識や行動決定などの人工知能の分野に属する処理も加えて、修正歩容を決定すべきである。
モデル逆位相腕振り角安定化床反力モーメントの決定法も同様である。
前記第4〜第6参考例およびこれを用いる実施形態における制限手段(制限処理部)の前後のブロック図は、例えば本願出願人によるPCT/JP02/13593で示したように、等価変換あるいは近似変換しても良い。
この場合、上体水平位置補正用モデル安定化モーメントMpfをhで割った値をローパスフィルタに通した値を補正目標床反力水平成分(フルモデル床反力水平成分Ffull)から減じた値が上記PCT出願におけるバイアス推定値destmに相当する。したがって、例えば、前記第5〜第7参考例およびこれを用いる実施形態におけるゲインKcの積分を、時定数1/Kcの1次遅れをフィードバック要素としたポジティブフィードバック系に置き換えたりして、図84のように、近似変換をしても良い。この例では、第5〜第7参考例およびこれを用いる実施形態におけるMpf演算部215が図示の如く近似変換されている。
逆位相腕振り角補正用摂動モデルモーメントも、同様に等価変換あるいは近似変換して求めるようにしてもよい。
前記第4参考例およびこれを用いる実施形態においては、前記逆位相腕振り角補正用摂動モデルモーメントは、図70に示す機能ブロック図の代わりに、図85に示す機能ブロック図の処理を行うようにしても良い。以下に説明すると、図70では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分までも含めて、床反力モーメント鉛直成分許容範囲を越えるか否かが判定されて、逆位相腕振り角補正用モデルの挙動が決定されたが、図85に示す機能ブロック図の処理では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分は、床反力モーメント許容範囲を越えるか否かを判定する上で無視される。
図85に示す機能ブロック図の処理を詳細に説明すると、フルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Mpzと補償全床反力モーメント鉛直成分Mdmdzとの和を無制限時補正目標床反力モーメント鉛直成分Minzとし、これに図70と同様に制限を加えることにより、制限時補正目標床反力モーメント鉛直成分Mltdzを求める。制限時補正目標床反力モーメント鉛直成分Mltdzは、コンプライアンス制御用目標床反力モーメント鉛直成分として出力される。さらに、制限時補正目標床反力モーメント鉛直成分Mltdzから無制限時補正目標床反力モーメント鉛直成分Minzを減じた値、すなわち、無制限時補正目標床反力モーメント鉛直成分Minzのうちの床反力モーメント鉛直成分許容範囲を越えた分であるMaaを求める。次いで、補正用摂動モデル逆位相腕振り角θcaの前回値を基に、PD制御等を用いた逆位相腕振り角補正用摂動モデル制御則によって逆位相腕振り角補正用モデル安定化モーメント要求値Mafdmdを求め、これをMaaから減じた値(モーメント)を逆位相腕振り角補正用摂動モデルに入力し、補正用摂動モデル逆位相腕振り角θcaを得る。
Maaから補正用摂動モデル逆位相腕振り角θcaまでの伝達関数は、ローパスフィルタの伝達関数になる。
すなわち、言い換えると、逆位相腕振り角補正用モデルによる床反力モーメント鉛直成分のキャンセル(超過防止動作)を行わない場合に発生する床反力モーメント鉛直成分(無制限時床反力モーメント鉛直成分)を、床反力モーメント鉛直成分許容範囲を越えないように制限する制限手段(飽和手段)に通すことにより、コンプライアンス制御用目標床反力モーメント鉛直成分(制限時補正目標床反力モーメント鉛直成分Mltdz)を得ると共に、無制限時床反力モーメント鉛直成分を、床反力モーメント鉛直成分許容範囲を越えた分を求める不感帯手段に通した値をローパスフィルタ(すなわちハイカットフィルタ)に通すことにより、補正用摂動モデル逆位相腕振り角θcaを得る。
前記第1および第2参考例並びにこれを用いる実施形態においては、本願出願人が提案した特開平5−337849号公報に記載の構成に加え、床反力の並進力水平成分が床反力水平成分の許容範囲を越えないように、床反力水平成分と目標ZMPまわりの床反力モーメント水平成分との発生の割合が異なる2つの運動モードの挙動、例えば、上体並進運動モードの上体並進加速度と上体傾斜運動モードの上体姿勢傾斜角加速度が決定されるので、実ロボット1を、修正目標歩容(最終的に歩容生成装置100が出力する歩容)に収束させることができる。つまり、実ロボット1の姿勢を安定化させることができる。
また、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分の差がトータルの復元力になる。
また、モデル操作床反力モーメント水平成分は、ZMP存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢復元力を発生することができる。
また、床反力の並進力水平成分が、床反力水平成分の許容範囲を越えないので、ロボット1のスリップを防止できる。
また、床反力モーメント鉛直成分(コンプライアンス制御用目標床反力モーメント鉛直成分)しいては実床反力モーメント鉛直成分が、床反力モーメント鉛直成分の許容範囲を越えないので、ロボット1のスリップをより一層防止できる。
また、床反力鉛直成分が0の時期、すなわち、両脚体2,2がいずれも接地していない時期では、上体並進運動モードに依存せずに上体回転運動モードに依存した姿勢復元が行われ、床と足平22の間の摩擦力に依存せずに効果的に姿勢復元が行われる。
また、実床反力モーメントが過大になることを防止するので、足平22の本来の接地性が低下したり、足平22の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
また、1歩分の修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、定常歩容に漸近するように、今回歩容パラメータが決定または変更されるので、継続的に(長期的に)安定性が保証された歩容を生成し続けることができる。
前記第3参考例およびこれを用いる前記第1実施形態においては、上記のごとく、元歩容と修正歩容が同時に生成され、修正歩容は、実ロボット1の姿勢安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント(水平成分及び鉛直成分)を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、第2参考例の効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止できる。また、修正歩容の上体姿勢角が元歩容(当初決定した歩容)の上体姿勢角に収束することを、修正歩容の上体水平位置が元歩容(当初決定した歩容)の上体水平位置に収束することよりも優先したので、上体姿勢角が大きく変動することを抑制することができる。
前記第1〜第7参考例およびこれを用いる実施形態では、床反力水平成分許容範囲を設定するようにしたが、床反力水平成分とロボット全体重心水平加速度は、比例関係にあるので、前記各実施形態における床反力水平成分およびその許容範囲の代わりに、ロボット全体重心水平加速度およびその許容範囲を用いても構わない。また、ロボット全体重心水平軌道に近い挙動をする部位の水平加速度軌道に関するパラメータを明示的に設定しても構わない。例えば、脚体2,2の質量が上体3の質量に比べ十分に小さい場合には、上体水平加速度軌道とロボット1の全体重心水平加速度軌道は、ほぼ同じか比例関係にあるので、床反力水平成分およびその許容範囲の代わりに上体水平加速度およびその許容範囲を用いても良い。
さらに、斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分の許容範囲の代わりに、並進床反力の床面平行成分(床面に平行な成分)、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分(これは重力成分を除けば摩擦力に比例する)の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分(摩擦力)の許容範囲を設定する場合に関して説明(この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である)すると、該摩擦力は、床面の水平面に対する傾斜角度をθf(ロボット1の進行方向に向かって前下がり斜面の場合を正とする)とすると、次式c72の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式c72の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式c72の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。
摩擦力=床反力水平成分*cos(θf)−床反力鉛直成分*sin(θf)
…式c72
また、斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち摩擦力モーメントの許容範囲を設定するようにしてもよい。例えば、該摩擦力モーメントは、床面の水平面に対する傾斜角度をθf(ロボット1の進行方向に向かって前下がり斜面の場合を正とする)とすると、次式c73の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式c73の関係を用いて、床反力モーメント鉛直成分と−床反力モーメント水平成分から摩擦力モーメントを算出し、この値が摩擦力モーメントの許容範囲を越えないように処理を変更すれば良い。
摩擦力モーメント=床反力モーメント鉛直成分*cos(θf)
+床反力モーメント水平成分*sin(θf)
…式c73
また、前記第1参考例に関する変形態様で説明した如く、床反力水平成分と目標ZMPまわりの床反力モーメント水平成分とを適切な値にするために、前記の実施形態では、上体傾斜モードと上体並進モードとの2つの運動モードを用いたが、これら以外の運動モードを用いても良い。この場合、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ZMPまわりの床反力モーメントの発生の割合が異なる2つの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ZMPまわりの床反力モーメントとを発生させることができるからである。
また、上体姿勢以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ZMPまわりの床反力モーメントが発生できる運動モードを選ぶべきである。
例えば、左右の腕を同一回転方向に振りまわす運動モード、接地していない(空中に存在する)足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に0に戻すべきである。
また、3つ以上の運動モードを用いても良い。
また、選んだモードのうちの少なくとも2つは、床反力水平成分と目標ZMPまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなるからである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ZMPまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ZMPまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。運動モードの変位が小さくなるからである。
床反力モーメント鉛直成分を適切な値にするために、前記の実施形態では、逆位相腕振りモードを用いたが、これら以外の運動モードを用いても良い。例えば、前記第1参考例の変形態様について説明した如く、上体ヨー回転モードを用いたり、上体ヨー回転モードと逆位相腕振りモードとを併用しても良い。
また、床反力モーメント鉛直成分を適切な値にするために用いられる運動モードが床反力水平成分および床反力モーメント水平成分を発生しない運動モードである必要もない。例えば、遊脚を前後に振る運動モードを用いても良い。その運動モードによって発生した床反力水平成分および床反力モーメント水平成分は、上体傾斜モードと上体並進モードとの2つの運動モードを調整することによって、打ち消すことができるからである。
フルモデルを用いる参考例および実施形態では、前記単純化モデルとして、前記実施形態に用いた動力学モデル(図12のモデル)以外にも以下のモデルを用いても良い。
1)図49に示したように複数のリンクに質点を設定した非線形なモデル(多質点モデル)
2)本願出願人によるPCT公開公報WO/02/40224に示された3質点モデル
3)上体にのみ質量がある1質点モデル
4)全体重心まわりの角運動量変化によって生じる慣性力のモーメントを無視したモデル
5)重力と慣性力との合力(または床反力)と上体並進運動との関係を表す部分モデルと、上記合力と上体回転運動の関係を表す部分モデルを分離して持つ分離型モデル。例えば、図12に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図12に示すフライホイールは、上記合力と上体回転運動との関係を表す部分モデルである。
ただし、単純化モデルに単純化モデル上体姿勢傾斜角補正用モーメントが加えられる参考例および実施形態においては、上記2)、3)、および4)のモデルを用いることはできない。
尚、フルモデルは、基本的には、単純化モデルよりもより近似精度の高い動力学モデルを用いることが好ましいが、単純化モデルと同等の近似精度の動力学モデルを用いてもよい。
また、前述した各実施形態において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記各実施形態を2足移動ロボットに関して説明してきたが、1足もしくは3足以上の多脚ロボットにも本発明を適応することができる。
以上のように本発明は、2足移動ロボット等の脚式移動ロボットと床面との摩擦力が小さくなるような状況でも、ロボットの滑りの発生を抑制しつつ、該ロボットの姿勢を安定に保ち、該ロボットを円滑に移動させることができるものとして有用である。
本発明は、脚式移動ロボットの歩行のみならず、走行にも適した制御装置に関する。
脚式移動ロボット、例えば2足移動ロボットの移動動作を行わせるための歩容(目標歩容)の生成は、従来、主にロボットにスムーズな歩行動作を行なわせる歩容(歩行歩容)を生成することを主目的として行なわれてきた。しかし、近年では、脚式移動ロボットの開発が進むにつれて、該ロボットに歩行だけでなく、走行も行なわせることができる歩容を生成することが望まれている。さらには、十分な摩擦力を発生できない滑りやすい床(いわゆる低ミュー路)上でもロボットを支障なく移動させることができる歩容を生成することが望まれている。
尚、「歩容」という漢字に「歩」が入っているので歩行に限定されると誤解されやすいが、本来「歩容」とは、トロットなど、馬の走行形態を指す言葉として用いられているように、走行も含んだ概念である。
ここで、歩行と走行の特徴の違いを説明しておく。
同時に全脚が空中に存在する瞬間がある移動形態を走行と定義することが一般的ではある。しかし、この定義によって歩行と走行が明確に区別できるとは限らない。たとえば、速いジョギングでは、ほとんどの人間において、同時に全脚が空中に存在する瞬間があるが、遅いジョギングでは、かなりの人間において、常にいずれかの脚が接地している。速いジョギングは走行であるのに遅いジョギングは歩行である、と定義するのは、感覚的に少し無理がある。
図51に、典型的な走行における上体鉛直位置と床反力鉛直成分(左右の脚に作用する床反力鉛直成分の和)のパターンを示し、図52には、典型的な歩行における上体鉛直位置と床反力鉛直成分のパターンを示す。
尚、上体鉛直位置速度は、上体代表点の鉛直位置とその速度を意味する。上体水平位置速度は、上体代表点の水平位置とその速度を意味する。上体鉛直位置速度と上体水平位置速度を合わせて、上体位置速度と呼ぶ。
また、「床反力鉛直成分」は、厳密には、床反力の鉛直軸まわりのモーメント成分と区別するために、「並進床反力鉛直成分」と記述すべきであるが、言葉が長くなるので、ここでは「並進」を省略する。以降、「並進床反力水平成分」も「並進」を省略して「床反力水平成分」と記述する。
まず上体の動きを見てみると、歩行においては、支持脚の上を上体が通過する瞬間に上体は最も高く、走行においては、この瞬間に最も低い。すなわち、歩行と走行では、上体の上下動パターンの位相が反転している。
一方、床反力に関しては、歩行では比較的一定であるのに対し、走行においては、大きく変動し、支持脚の上を上体が通過する瞬間に床反力は最も大きい。また、当然のことながら、同時に全脚が空中に存在する瞬間において床反力は0になっている。より詳しく観察すると、走行では、支持脚を縮めた量にほぼ比例した大きさの床反力が発生する。言いかえると、走行では、脚をばねのように使って跳ねながら移動していると言える。
遅いジョギングでは、典型的な走行と同じ上体上下動の位相を持つ。また、遅いジョギングでは、同時に全脚が空中に存在する瞬間がない場合が多いが、その場合でも、支持脚と遊脚の切り換えが行われる瞬間において、床反力は、完全には0にならないがほぼ0になっている。
したがって、以上のように、上体の上下動や床反力のパターンの上記特徴から歩行と走行を区別した方が、遅いジョギングも走行とみなされ、感覚とも一致して、より適切と言えよう。
特に、最も特徴的な点で両者を区別するならば、走行とは、支持脚の切り換えが行われる瞬間において、床反力が0またはほぼ0になる移動形態であり、歩行は、それ以外の移動形態(床反力鉛直成分が比較的一定)であると言えよう。
ところで、本出願人は先に特許文献1(PCT公開公報WO/02/40224)において、脚式移動ロボットの床反力を含む歩容を、動力学的平衡条件(目標歩容の重力と慣性力と床反力との釣り合い条件のことである。狭義では、目標歩容の運動による重力と慣性力との合力が目標ZMPまわりに作用するモーメントの水平成分が0であること。詳細は後述する。)をほぼ満足しながら、自在かつリアルタイムに生成する技術を先に提案した。この技術や、特許文献2(特開平10−86081号公報)特許文献3(特開平10−277969号公報)などにて本出願人が提案してきた一連の脚式移動ロボットの制御装置は、歩行のみならず走行にも適用できるものである。
しかしながら、この技術においては、目標歩容の並進床反力水平成分や目標歩容のZMPまわりの床反力モーメント鉛直成分の大きさを考慮していなかった。このため、摩擦の限界を超えて、ロボットの支持脚足平の滑り(床面に並行な方向のスリップやスピン)が発生するおそれがあった。なお、スピンとは、実際のロボットのヨー角(鉛直軸まわり回転角)速度が目標ヨー角速度からずれることを言う。
摩擦係数の高い床面を歩行する場合(この場合、少なくとも1つの脚体は常時接地している)には、床反力鉛直成分が常にほぼロボットの自重相当であるので、摩擦力の限界が高い。このため、ロボットの滑りは発生しにくい。
しかるに、走行においては、床反力鉛直成分が0になる、または0に近くなる時があるので、その時には、たとえ摩擦係数が高くとも、床面の摩擦力の限界が0になるまたは0に近くなる。したがって、目標歩容の並進床反力水平成分や床反力モーメント鉛直成分が限界を超え、ロボットが滑って転倒する恐れがあった。
また、歩行の場合でも、床の摩擦係数が低い場合には、ロボットの滑りが発生して転倒する恐れがあった。
一方、本出願人は先に、例えばPCT出願PCT/JP02/13596等において、目標歩容の並進床反力水平成分が許容範囲を超えないように、目標歩容を生成したり、目標歩容において腕以外が発生するモーメント鉛直成分を打ち消すように、腕を振るようにする技術を提案した。この技術によれば、ロボットの滑りの発生を抑制できる。
しかるに、床面の状態などによっては、並進床反力水平成分の許容範囲が実際の床面の摩擦力の限界と整合しない場合もあり、その場合には、ロボットの滑りが発生する恐れがあった。そして、これを回避するために、並進床反力水平成分の許容範囲を狭めに設定すると、上体の姿勢(傾斜角)の大きく変動しやすい。また、脚を激しく振って移動する場合には、モーメント鉛直成分を打ち消すために、腕の振りも激しくなる。
PCT公開公報WO/02/40224 特開平10−86081号公報 特開平10−277969号公報
したがって、本発明の目的は、上記の問題点を解消し、歩行、走行等の歩容形態や床面の摩擦状態によらずに、ロボットの滑りの発生をより確実に防止し、より一層好適な歩容を生成することができる制御装置を提供することにある。
本発明の脚式移動ロボットの制御装置の第1発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従するようにロボットの動作を制御する制御装置において、
前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段と、
前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
所定の動力学モデル上で前記ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容の仮運動を決定する仮運動決定手段と、
前記目標歩容の仮運動により定まる前記制限対象量が前記許容範囲を逸脱したとき、前記動力学的平衡条件を満たしつつ、該制限対象量を前記許容範囲内に制限するようにロボットの重心回りの角運動量変化率を前記仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する仮運動修正手段とを備えたことを特徴とする。
この第1発明によれば、目標歩容の仮運動により定まる前記制限対象量(並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分)が前記許容範囲を逸脱したとき、該仮運動を修正して目標歩容の運動を決定する。この場合、ロボットの重心回りの角運動量変化率を前記仮運動から変化させるので、動力学的平衡条件(例えば目標ZMPまわりの床反力モーメント水平成分が0になるなどの条件)を満たしつつ、制限対象量を許容範囲内に制限することができる。なお、変化させる角運動量変化率は、基本的にはロール方向、あるいはピッチ方向の角運動両変化率でよい。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、実際のロボットの滑りの発生の有無に応じて即応的に目標運動を修正できる。この結果、実際のロボットの滑りが発生しても、直ちにその滑りを抑制するようにロボットの運動が修正される。従って、第1発明によれば、実際のロボットの滑りの発生を抑制でき、ロボットの姿勢の安定性を保つことができる。なお、滑りの発生が有ると判断されたときには、前記許容範囲は、それを狭めるように設定されるべきであり、このことは、以下に説明する第2〜第4発明においても同様である。
次に本発明の脚式移動ロボットの第2発明は、
上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従するようにロボットの動作を制御する制御装置において、
前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段と、
前記ロボットに作用させる床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
所定の動力学モデル上で前記ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容の仮運動を決定する仮運動決定手段と、
前記目標歩容の仮運動により定まる前記制限対象量が前記許容範囲を逸脱したとき、前記動力学的平衡条件を満たしつつ、該制限対象量を前記許容範囲内に制限するようにロボットの角運動量変化率を前記仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する仮運動修正手段とを備えたことを特徴とする。
この第2発明によれば、目標歩容の仮運動により定まる前記制限対象量(床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分)が前記許容範囲を逸脱したとき、該仮運動を修正して目標歩容の運動を決定する。この場合、ロボットの角運動量変化率を前記仮運動から変化させるので、動力学的平衡条件(例えば目標ZMPまわりの床反力モーメント水平成分が0になるなどの条件)を満たしつつ、制限対象量を許容範囲内に制限することができる。なお、変化させる角運動量変化率は、基本的にはヨー方向の角運動量変化率でよい。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、実際のロボットの滑りの発生の有無に応じて即応的に目標運動を修正できる。この結果、実際のロボットの滑りが発生しても、直ちにその滑り(特にスピン)を抑制するようにロボットの運動が修正される。従って、第1発明によれば、実際のロボットの滑りの発生を抑制でき、ロボットの姿勢の安定性を保つことができる。
なお、第1発明と第2発明とは、併用してもよい。この場合には、並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を1つの制限対象量とすると共に、床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分を他の1つの制限対象量とし、これらの許容範囲を滑り判断手段の判断結果に応じて可変的に設定すればよい。この場合には、いずれか一方の制限対象量が許容範囲を逸脱したときに、目標運動の仮運動を修正することが望ましい。
次に、本発明に脚式移動ロボットの制御装置の第3発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作を制御する脚式移動ロボットの制御装置において、
前記目標運動に追従して動作しているロボットの滑りの発生を判断する滑り判断手段と、
少なくとも前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
少なくとも前記決定された目標運動の瞬時値に対応するロボットの姿勢の目標状態量と該ロボットの姿勢の実状態量との偏差に基づいて、前記目標運動の新たな瞬時値を、該新たな瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する目標瞬時値決定手段とを備えたことを特徴とする。
この第3発明によれば、少なくともロボットの姿勢の状態量に関する前記偏差に基づいて、前記目標運動の新たな瞬時値を、該新たな瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量(並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分)が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する。つまり、ロボットの姿勢を所望の姿勢に保つようにしつつ、制限対象量が許容範囲を逸脱しないように(以下、この条件を、ここでの説明では姿勢/制限対象量条件ということがある)目標運動の瞬時値が決定される。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、実際のロボットの滑りの発生の有無に応じて即応的に、前記姿勢/制限対象量条件を満たすように目標運動の瞬時値を決定できる。この結果、実際のロボットの滑りが発生しても、該ロボットの姿勢を適切な姿勢に安定に保ちつつ、直ちにその滑りを抑制することができる。
また、本発明の脚式移動ロボットの制御装置の第4発明は、
上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動及び目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動及び目標床反力の瞬時値に追従させるように前記ロボットの動作を制御する脚式移動ロボットの制御装置において、
前記目標運動及び目標床反力に追従して動作しているロボットの滑りの発生を判断する滑り判断手段と、
少なくとも前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
少なくとも前記決定された目標運動及び目標床反力の瞬時値に対応するロボットの姿勢の目標状態量と該ロボットの姿勢の実状態量との偏差に基づいて、前記目標運動及び目標床反力の新たな瞬時値を、該新たな目標運動の瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する目標瞬時値決定手段とを備えたことを特徴とする。
この第4発明によれば、少なくともロボットの姿勢の状態量に関する前記偏差に基づいて、前記目標運動及び目標床反力の新たな瞬時値を、該新たな目標運動の瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量(並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分)が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する。つまり、ロボットの姿勢を所望の姿勢に保つようにしつつ、制限対象量が許容範囲を逸脱しないように(以下、この条件を、第3発明と同様に、姿勢/制限対象量条件ということがある)目標運動および目標床反力の瞬時値が決定される。そして、この場合、前記許容範囲は、前記滑り判断手段の判断結果に応じて可変的に設定されるので、前記第3発明と同様、実際のロボットの滑りの発生の有無に応じて即応的に、前記姿勢/制限対象量条件を満たすように目標運動及び目標床反力の瞬時値を決定できる。この結果、実際のロボットの滑りが発生しても、該ロボットの姿勢を適切な姿勢に安定に保ちつつ、直ちにその滑りを抑制することができる。また、この場合、目標運動と目標床反力との両者が前記姿勢/制限対象量条件によって規制されるので、効果的に滑りを抑制できる。
前記第1〜第4発明では、例えば、例えば、次のようにして、滑りの発生を判断することができる。
すなわち、前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断する(第5発明)。この場合、例えば該対地速度の絶対値が所定値よりも大きいときには、滑りの発生が有ると判断することができる。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断する(第6発明)。この場合、例えば該見かけばね定数が所定値よりも小さいときには、滑りの発生が有ると判断することができる。
あるいは、前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断する(第7発明)。この場合、前記実床反力をバンドパスフィルタに通したものは、いわゆる滑り振動が発生しているときの、実床反力の振動成分に相当するものとなる。そして、例えばこの振動成分の大きさ(絶対値)が所定値よりも大きいときには、滑り振動の発生が有ると判断することができる。
なお、滑りの発生の判断は、第5〜第7発明のいずれでも行なうことができるが、これらの第5〜第7発明の2つ以上を組み合わせて滑りの発生の判断を行なうようにしてもよい。
以下、添付図面を参照してこの発明の実施形態に係る脚式移動ロボットの制御装置を説明する。尚、脚式移動ロボットとしては2足移動ロボットを例にとる。
まず、図1〜図47を参照して、本発明の脚式移動ロボットの制御装置に関連する第1参考例を説明しておく。さらに、図53〜図58を参照して第2参考例を、図59〜図62を参照して第3参考例を、図63〜図70を参照して第4参考例を、図71及び図72を参照して第5参考例を、図73及び図74を参照して第6参考例を、図75を参照して第7参考例を説明しておく。後述する本発明の実施形態は、その機構的構成は第1参考例と同一であり、また、ロボットの歩容生成処理および制御処理の一部(具体的には許容範囲設定処理)のみが第1〜第7参考例のいずれかと相違するものである。従って、後述する実施形態の説明では、この第1〜第7参考例の説明をしばしば援用する。補足すると、図1と後述の図2、図3並びに図5〜図12を参照して説明する事項は、後述の実施形態においても同一である。
まず、第1参考例を説明する。図1は、この第1参考例に係る脚式移動ロボットとしての2足移動ロボットを全体的に示す概略図である。
図示の如く、2足移動ロボット(以下、ロボットという)1は上体(ロボット1の基体)3から下方に延設された左右一対の脚体(脚部リンク)2,2を備える。両脚体2,2は同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体3側から順に、股(腰部)の回旋(回転)用(上体3に対するヨー方向の回転用)の関節10R,10L(符号R,Lはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ)と、股(腰部)のロール方向(X軸まわり)の回転用の関節12R,12Lと、股(腰部)のピッチ方向(Y軸まわり)の回転用の関節14R,14Lと、膝部のピッチ方向の回転用の関節16R,16Lと、足首のピッチ方向の回転用の関節18R,18Lと、足首のロール方向の回転用の関節20R,20Lとから構成される。
各脚体2の足首の2つの関節18R(L),20R(L)の下部には、各脚体2の先端部を構成する足平(足部)22R(L)が取着されると共に、両脚体2,2の最上位には、各脚体2の股の3つの関節10R(L),12R(L),14R(L)を介して前記上体3が取り付けられている。上体3の内部には、詳細を後述する制御ユニット60などが格納される。なお、図1では図示の便宜上、制御ユニット60を上体3の外部に記載している。
上記構成の各脚体2においては、股関節(あるいは腰関節)は関節10R(L),12R(L),14R(L)から構成され、膝関節は関節16R(L)から構成され、足首関節は関節18R(L),20R(L)から構成される。また股関節と膝関節とは大腿リンク24R(L)で連結され、膝関節と足首関節とは下腿リンク26R(L)で連結される。
上体3の上部の両側部には左右一対の腕体5,5が取り付けられると共に、上体3の上端部には頭部4が配置される。各腕体5は、3つの関節30R(L),32R(L),34R(L)から構成された肩関節と、関節36R(L)から構成された肘関節と、関節38R(L)から構成された手首関節と、この手首関節に連結された手先部40R(L)とを備えている。なお、頭部4は、本発明の要旨と直接的な関連を有しないため詳細な説明を省略する。
上記の構成により、各脚体2の足平22R(L)は、上体3に対して6つの自由度を与えられている。そして、ロボット1の歩行等の移動中に、両脚体2,2を合わせて6*2=12個(この明細書で「*」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す)の関節を適宜な角度で駆動することで、両足平22R,22Lの所望の運動を行うことができる。これにより、ロボット1は任意に3次元空間を移動することができる。また、各腕体5は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。
図1に示す如く、各脚体2の足首関節18R(L),20R(L)の下方には足平22R(L)との間に公知の6軸力センサ50が介装されている。該6軸力センサ50は、各脚体2の足平22R(L)の着地の有無、および各脚体2に作用する床反力(接地荷重)等を検出するためのものであり、該床反力の並進力の3方向成分Fx,Fy,Fz並びにモーメントの3方向成分Mx,My,Mzの検出信号を制御ユニット60に出力する。また、上体3には、Z軸(鉛直方向(重力方向))に対する上体3の傾斜角およびその角速度、並びにZ軸回りの上体3の回転角(ヨー角)およびその角速度を検出するための姿勢センサ54が備えられ、その検出信号が該姿勢センサ54から制御ユニット60に出力される。この姿勢センサ54は、図示を省略する3軸方向の加速度センサおよび3軸方向のジャイロセンサを備え、これらのセンサの検出信号が上体3の姿勢角(傾斜角およびヨー角)およびその角速度を検出するために用いられると共に、ロボット1の自己位置姿勢を推定するために用いられる。また、詳細構造の図示は省略するが、ロボット1の各関節には、それを駆動するための電動モータ64(図3参照)と、その電動モータ64の回転量(各関節の回転角)を検出するためのエンコーダ(ロータリエンコーダ)65(図3参照)とが設けられ、該エンコーダ65の検出信号が該エンコーダ65から制御ユニット60に出力される。
さらに、図1では図示を省略するが、ロボット1の適宜な位置にはジョイスティック(操作器)73(図3参照)が設けられ、そのジョイスティック73を操作することで、直進移動しているロボット1を旋回させるなど、ロボット1の歩容に対する要求を必要に応じて制御ユニット60に入力できるように構成されている。
図2は本第1参考例における各脚体2の先端部分(各足平22R(L)を含む)の基本構成を概略的に示す図である。同図に示すように、各足平22R(L)の上方には、前記6軸力センサ50との間にばね機構70が装備されると共に、足底(各足平22R(L)の底面)にはゴムなどからなる足底弾性体71が貼られている。これらのばね機構70及び足底弾性体71によりコンプライアンス機構72が構成されている。ばね機構70は詳細は後述するが、足平22R(L)の上面部に取り付けられた方形状のガイド部材(図示省略)と、足首関節18R(L)(図2では足首関節20R(L)を省略している)および6軸力センサ50側に取り付けられ、前記ガイド部材に弾性材(ゴムやばね)を介して微動自在に収納されるピストン状部材(図示省略)とから構成されている。
図2に実線で表示された足平22R(L)は、床反力を受けていないときの状態を示している。各脚体2が床反力を受けると、コンプライアンス機構72のばね機構70と足底弾性体71とがたわみ、足平22R(L)は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構72の構造は、例えば本出願人が先に提案した特開平5−305584号公報に詳細に説明されている如く、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。
図3は制御ユニット60の構成を示すブロック図である。該制御ユニット60はマイクロコンピュータにより構成されており、CPUからなる第1の演算装置90及び第2の演算装置92、A/D変換器80、カウンタ86、D/A変換器96、RAM84、ROM94、並びにこれらの間のデータ授受を行うバスライン82を備えている。この制御ユニット60では、各脚体2の6軸力センサ50、姿勢センサ54(加速度センサおよびレートジャイロセンサ)、ジョイスティック73等の出力信号はA/D変換器80でデジタル値に変換された後、バスライン82を介してRAM84に送られる。またロボット1の各関節のエンコーダ65(ロータリーエンコーダ)の出力は、カウンタ86を介してRAM84に入力される。
前記第1の演算装置90は後述の如く目標歩容を生成すると共に、関節角変位指令(各関節の変位角もしくは各電動モータ64の回転角の指令値)を算出し、RAM84に送出する。また第2の演算装置92はRAM84から関節角変位指令と、前記エンコーダ65の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してD/A変換器96とサーボアンプ64aとを介して各関節を駆動する電動モータ64に出力する。
図4は、この第1参考例に係る脚式移動ロボットの制御装置の機能的構成を全体的に示すブロック図である。この図4中の「実ロボット」の部分以外の部分が制御ユニット60が実行する処理機能(主として第1の演算装置90及び第2の演算装置92の機能)によって構成されるものである。なお、以下の説明では、脚体2および腕体5の左右を特に区別する必要がないときは、前記符号R,Lを省略する。
以下説明すると、制御ユニット60は、ロボット1の目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置100を備えている。該歩容生成装置100は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置100が出力する目標歩容は、目標上体位置姿勢軌道(上体3の目標位置及び目標姿勢の軌道)、目標足平位置姿勢軌道(各足平22の目標位置及び目標姿勢の軌道)、目標腕姿勢軌道(各腕体5の目標姿勢の軌道)、目標全床反力中心点(目標ZMP)軌道、目標全床反力軌道から構成される。なお、脚体2や腕体5以外に上体3に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、上記歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はZ軸(鉛直軸)に対するロール方向(X軸まわり)の上体3の傾斜角とピッチ方向(Y軸まわり)の上体3の傾斜角とヨー方向(Z軸まわり)の上体3の回転角(ヨー角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。また、上体姿勢のうち、鉛直方向に対する姿勢を上体姿勢傾斜もしくは上体姿勢傾斜角ということもある。
尚、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット1の運動に係わる歩容を総称的に「運動」という。また、各足平22に作用する床反力(並進力及びモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点(全床反力の中心点の目標位置)を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分(鉛直軸(Z軸)まわりのモーメント)を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分(水平軸(X軸及びY軸)回りのモーメント)は零になる。
尚、動力学的平衡条件を満足する歩容では、ロボット1の目標運動軌道から算出されるZMP(目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点)と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ZMP軌道を与えると言っても同じことである(詳細は、本願出願人によるPCT公開公報WO/02/40224等を参照)。
このような背景から、上記PCT公開公報WO/02/40224の明細書では目標歩容を、次のように定義していた。
a)広義の目標歩容とは、1歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
b)狭義の目標歩容とは、1歩の期間の目標運動軌道とそのZMP軌道との組である。
c)一連の歩容は、いくつかの歩容がつながったものとする。
歩行においては、本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法によってロボット1の上体3の鉛直位置(上体高さ)が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が零になるようにロボット1の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、PCT公開公報WO/02/40224の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ZMPだけで十分であった。したがって、狭義の目標歩容の定義としては、上記のb)で十分であった。それに対し、本第1参考例で説明するロボット1の走行歩容(詳細は後述する)においては、床反力鉛直成分(並進床反力鉛直成分)も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット1の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のb’)を用いる。
b’)狭義の目標歩容とは、1歩の期間の目標運動軌道と、その目標ZMP軌道と目標並進床反力鉛直成分軌道とを少なくとも含む目標床反力軌道との組である。
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は上記b’)の狭義の目標歩容の意味で使用する。この場合、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。補足すると、本明細書の参考例および実施形態では、目標歩容は1歩の期間分の歩容の意味で使用するが、それは必ずしも1歩の期間分のものである必要はなく、複数歩分、あるいは1歩よりも短い(例えば半歩など)の期間分の歩容であってもよい。尚、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分(鉛直軸回り成分)は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、歩容における両脚支持期とは言うまでもなく、ロボット1がその自重を両脚体2,2で支持する期間、片脚支持期とはいずれか一方のみの脚体2でロボット1の自重を支持する期間、空中期とは両脚体2,2が床から離れている(空中に浮いている)期間を言う。片脚支持期においてロボット1の自重を支持しない側の脚体2を「遊脚」と呼ぶ。尚、本第1参考例で説明する走行歩容では、両脚支持期は無く、片脚支持期(着地期)と空中期とが交互に繰り返される。この場合、空中期では両脚体2,2とも、ロボット1の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体2、支持脚であった脚体2をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
図5に示す走行歩容を例にして、歩容生成装置100が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平10−86081号公報にも記載されているので、以下では、特開平10−86081号公報に記載されていない内容を主に説明する。
まず、図5に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット1の左右いずれか一方のみの脚体2(支持脚)の足平22が着地(接地)する片脚支持期と、両脚体2,2が空中に浮く空中期とが交互に繰り返される。図5の1番目の状態は片脚支持期の開始時(初期)の状態、2番目の状態は片脚支持期の中間時点の状態、3番目の状態は片脚支持期に続く空中期の開始時(片脚支持期の終了時)の状態、4番目の状態は空中期の中間時点の状態、5番目の状態は空中期の終了時(次の片脚支持期の開始時)の状態を示している。
この走行歩容では、ロボット1は、図5の1番目の状態で示すように、片脚支持期の開始時において支持脚(ロボット1の進行方向前側の脚体2)側の足平22のかかとで着地する。続いて、図5の2番目の状態で示すように、ロボット1は、着地した足平22(支持脚側の足平22)の底面のほぼ全面を着地させた後、図5の3番目の状態で示すように、その支持脚側の足平22(図5の3番目の状態におけるロボット1の進行方向後側の脚体2の足平22)のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了すると共に空中期が開始する。尚、片脚支持期における遊脚は、図5の1番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図5の2番目及び3番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図5の4番目の状態で示す空中期を経た後、ロボット1は、遊脚(空中期の開始直前の片脚支持期で遊脚となっていた脚体2)の足平22のかかとで着地し、次の片脚支持期が開始される。
図5の走行歩容を考慮しつつ、前記歩容生成装置100が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置100が目標歩容を生成するとき、遊脚側の足平22の着地位置姿勢(着地予定位置姿勢)や着地時刻(着地予定時刻)等の目標歩容生成用の基本的な要求値(要求パラメータ)が、前記ジョイスティック73の所要の操作等に応じて歩容生成装置100に与えられる。そして、歩容生成装置100は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置100は、上記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ(歩容パラメータという)を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。
この場合、目標足平位置姿勢軌道(より詳しくは、足平の位置及び姿勢の空間的な各成分(X軸成分等)の目標軌道)は、例えば本出願人が特許第3233450号にて提案した有限時間整定フィルタを用いて各足平22毎に生成される。この有限時間整定フィルタは、可変時定数の1次遅れフィルタ、すなわち、伝達関数が1/(1+τs)の形で表されるフィルタ(τは可変の時定数。以下、このフィルタを単位フィルタという)を複数段(本第1参考例では3段以上)、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値(>0)から減少されていき、最終的には、該残時間が0になる指定時刻にて、τの値が0になるように設定される。そして、有限時間整定フィルタには、前記指定値(より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量)に応じた高さのステップ入力が与えられる。このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を0もしくはほぼ0にすることができる。特に、単位フィルタを3段以上(3段でよい)、接続した場合には、有限時間整定フィルタの出力の変化加速度(変化速度の微分値)をも0もしくはほぼ0にすることができる。
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平22の目標位置姿勢軌道である。
上述のように生成される目標足平位置姿勢軌道は、各足平22の位置が、その初期接地状態(目標歩容の初期時刻の状態)から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を0またはほぼ0にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平22の着地瞬間における対地速度(床に固定された支持脚座標系での各足平22の位置の変化速度)が0またはほぼ0になる。したがって、走行歩容において同時に全脚体2,2が空中に存在する状態(空中期での状態)から着地しても、着地衝撃が小さくなる。
前記走行歩容においては、ロボット1に作用する重力によって空中期後半から上体3の鉛直速度は下向きになり、着地時でも下向きのままである。したがって、上記のように各足平22の着地瞬間における対地速度が0またはほぼ0になるように目標足平位置姿勢軌道を生成すると共に、後述する如く動力学的平衡条件を満たすように上体3の目標位置姿勢軌道を生成したとき、着地直前において、上体3に対する遊脚側の足平22の相対速度は、上向きになる。すなわち、走行歩容の着地瞬間では、ロボット1の目標歩容は遊脚側の脚体22を上体3側に引っ込めながら着地するような歩容となる。言い換えれば、本第1参考例での目標歩容では、ロボット1は、着地瞬間において、遊脚側の足平22の対地速度が0またはほぼ0になるように、上体3から見て該足平22を引き上げるようにして着地する。これによって、着地衝撃は小さくなり、着地衝撃が過大になるのを防止するようにしている。
また、本第1参考例では、有限時間整定フィルタは、単位フィルタを3段以上(例えば3段)、直列に接続したものであるため、着地予定時刻までに各足平22の速度(足平位置の変化速度)が0またはほぼ0になるだけでなく、各足平22は、その加速度も着地予定時刻にて0またはほぼ0になって停止する。つまり、着地瞬間における対地加速度も0またはほぼ0になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット1の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、着地予定時刻にて各足平22の対地速度を0またはほぼ0にする上では、有限時間整定フィルタの単位フィルタの段数は2段でもよいが、この場合には、着地予定時刻での各足平22の加速度は一般には0にならない。
尚、足平姿勢に関しては、各足平22が着地予定時刻にてその踵で着地した後、該足平22の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平22の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
また、本第1参考例では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の変化速度(足平位置の時間微分値)が0またはほぼ0になるように、さらには、該着地予定時刻での足平位置の変化加速度(変化速度の時間微分値)が0またはほぼ0になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平22の底面のほぼ全面が床に設置する時刻にて、各足平22の姿勢の変化速度、さらにはその変化加速度が0またはほぼ0になるように多項式などの関数が設定される。
目標床反力鉛直成分軌道は、例えば図6のように設定される。本第1参考例では、走行歩容における目標床反力鉛直成分軌道の形状(詳しくは片脚支持期での形状)は、台形状(床反力鉛直成分の増加側に凸の形状)に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ(床反力鉛直成分軌道パラメータ)が決定される。尚、走行歩容の空中期では、目標床反力鉛直成分は定常的に0に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように(値が不連続にならないように)設定するのが良い。これは床反力を制御する際のロボット1の関節の動作を滑らかにするためである。尚、「実質的に連続」というのは、アナログ的に連続な軌道(真の意味での連続な軌道)を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。
目標ZMP軌道は次のように設定される。図5の走行歩容においては、前記したように支持脚側足平22のかかとで着地し、次にその支持脚側足平22のつま先で蹴って空中に飛び上がり、最後に遊脚側足平22のかかとで着地する。したがって、片脚支持期での目標ZMP軌道は、図7の上段図に示すように、支持脚側足平22のかかとを初期位置として、次に支持脚側足平22の底面のほぼ全面が接地する期間において該足平22の前後方向の中央に移動し、その後、離床時までに支持脚側足平22のつまさきに移動するように設定される。ここで、図7の上段図は、X軸方向(前後方向)の目標ZMP軌道を示すものであり、図7の下段図はY軸方向(左右方向)の目標ZMP軌道を示すものである。尚、片脚支持期におけるY軸方向の目標ZMP軌道は、図7の下段図に示すように、Y軸方向での支持脚側脚体2の足首関節の中心位置と同じ位置に設定される。
走行歩容では、さらに片脚支持期の終了後、両脚体2,2が床から離れ、床反力鉛直成分が0になる。床反力鉛直成分が0の時、すなわち空中期には、ロボット1の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット1に作用する重力と慣性力との合力のモーメントは0であるので、目標ZMPは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が0である作用点」というZMPの条件を満たす。言いかえれば、任意の点に目標ZMPを設定しても、上記合力が目標ZMP回りに作用するモーメントの水平成分が0であるという動力学的平衡条件を満足する。したがって、目標ZMPを不連続に設定しても構わない。例えば、空中期では、目標ZMPを、離床時(片脚支持期の終了時)の目標ZMP位置から移動しないように設定し、空中期終端において、着地時の目標ZMP位置に不連続(ステップ状)に移動するように該目標ZMP軌道を設定しても構わない。しかし本第1参考例では、図7の上段図に示すように、空中期における目標ZMP軌道のX軸方向位置は、次の遊脚側脚体2の着地までに支持脚側足平22のつまさきから遊脚側足平22のかかとの着地位置まで連続的に移動するようにした。また、図7の下段図に示すように、空中期における目標ZMP軌道のY軸方向位置は、次の遊脚側脚体2の着地までに支持脚側脚体2の足首関節の中心のY軸方向位置から遊脚側脚体2の足首関節の中心のY軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ZMP軌道を連続(実質的に連続)にした。そして、後述するように、目標ZMPまわりの重力と慣性力との合力のモーメント(鉛直成分を除く)が零になるように目標歩容を生成する(より具体的には目標上体位置姿勢軌道を調整する)ようにした。モデルの近似誤差を考慮すると、生成された歩容が滑らかになるようにするために、空中期においても目標ZMP軌道を連続(実質的に連続)にしておくのが望ましい。但し、本第1参考例で用いる後述の動力学モデルでは、目標ZMPの位置によらずに、目標ZMP回りのモーメントの水平成分をある値(その値は本第1参考例では0であるが、後述の実施形態では必ずしも0ではない)にするような目標歩容を一義的に生成できるので、必ずしも目標ZMPを連続にしておく必要はない。
尚、本第1参考例では、図7に示したような目標ZMP軌道の折れ点の位置や時刻が、ZMP軌道パラメータ(目標ZMP軌道を規定するパラメータ)として設定される。また、上記したZMP軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。
ZMP軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット1の接地面を含む最小の凸多角形(いわゆる支持多角形)の中央付近に目標ZMPが存在する状態を安定余裕が高いと言う(詳細は特開平10−86081号公報を参照)。図7の目標ZMP軌道はこのような条件を満たすように設定したものである。
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。
本第1参考例では、歩容生成装置100は、目標上体姿勢だけでなく、基準上体姿勢も生成する。この基準上体姿勢は、歩容に対する要求(歩容生成装置100に対する行動計画部などの装置または外部(前記ジョイスティック73等)からの要求)にそのまま従って生成される上体姿勢である。
目標上体姿勢(以降、「基準」が付いていない場合には、目標上体姿勢を表す)は、長期的には基準上体姿勢に追従するかまたは一致するように生成される。
目標上体姿勢は、歩行においては、本願出願人によるPCT公開公報WO/02/40224の明細書に記載した実施形態のごとく通常、常に基準上体姿勢に一致させておけば良い。PCT公開公報WO/02/40224では、基準上体姿勢という概念は記載されていないが、目標上体姿勢パターンを、明示的かつ優先的に与えていたので、基準上体姿勢に目標上体姿勢が常に一致していることと同じことである。
しかし、走行など空中期がある歩容や低摩擦床面での歩行においては、単に上体水平加速度等を調整するだけでは、目標歩容の床反力水平成分と床反力モーメント鉛直成分とが許容範囲以内(あるいは摩擦限界以内)に存在するようにしつつ動力学的平衡条件を満足することができない。
そこで、本第1参考例においては、目標上体姿勢を必要に応じて基準上体姿勢から故意にずらすこととした。より具体的には、以下に説明する運動モードを複合的に発生させることにより、目標歩容の床反力水平成分や床反力モーメント鉛直成分が許容範囲以内(あるいは摩擦限界以内)に存在しつつ動力学的平衡条件を満足させるようにした。
図8のように、ロボット1のある運動状態から、上体水平加速度だけを摂動(微小変化)させると、ロボット1の全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生するロボット1の慣性力と重力との合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに(ロボット1の全体重心鉛直加速度を摂動させずに)、目標ZMPまわりの床反力モーメント水平成分(水平軸まわり成分)と床反力水平成分とを摂動させる。このようにロボット1の上体水平加速度を摂動させる運動モードを上体並進モードと呼ぶ。
言いかえると、床反力鉛直成分を変化させずに、目標ZMPまわりの床反力モーメント水平成分と床反力水平成分とを変化させる運動を上体並進モードと呼ぶ。尚、上体並進モードでは、床反力モーメント鉛直成分(鉛直軸まわり成分)も摂動するが、ここではこの点に注目しない。
この時の単位加速度当たりの床反力モーメント水平成分の変化をΔMp、単位加速度当たりの床反力水平成分の変化をΔFpとする。図8に示す状況で上体3を前方に水平加速すると、ΔMpとΔFpは図8に示す矢印の向きに作用する。
感覚的に判り易くするために、運動によって発生する慣性力と重力との合力に釣り合う床反力を用いて表現したが、慣性力と重力との合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力とは、互いに大きさが同じで向きが逆になっている。
それに対し、図9のように、ロボット1のある運動状態から、ある点Prまわりに上体傾斜角加速度(上体3の傾斜角の角加速度)を摂動させると、ロボット1の全体重心は摂動せずに、全体重心まわりの角運動量(鉛直軸まわり成分を除く)が摂動する。すなわち、点Prまわりの上体傾斜角加速度の摂動は、床反力鉛直成分と床反力水平成分とを摂動させずに、目標ZMPまわりの床反力モーメント水平成分を摂動させる。このようにロボット1の上体傾斜角加速度を摂動させる運動モードを上体傾斜モードと呼ぶ。
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ZMPまわりの床反力モーメント水平成分を変化させる運動を上体傾斜モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント水平成分の変化をΔMr、単位角加速度当たりの床反力水平成分の変化をΔFrとする。ΔFrは零である。図9に示す状況で上体3が前傾するように上体傾斜角の角加速度を発生させると、ΔMrは図9に示す矢印の向きに作用する。
また、図10のように、ロボット1のある運動状態から、ある点Pqまわりに上体ヨー角加速度(上体3の鉛直軸まわりの回転角加速度)を摂動させると、ロボット1の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。ところで、ロボット1の全体重心が摂動しなければ、角運動量鉛直成分の摂動は、作用点に依存しない。したがって、点Pqまわりの上体ヨー角加速度の摂動は、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ZMPまわりの床反力モーメント鉛直成分を摂動させる。このようにロボット1の上体ヨー角加速度を摂動させる運動モードを上体ヨー回転モードと呼ぶ。
言いかえると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を変化させずに、目標ZMPまわりの床反力モーメント鉛直成分を変化させる上体運動を上体ヨー回転モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント鉛直成分の変化をΔMbz、単位角加速度当たりの床反力水平成分の変化をΔFbとする。ΔFbは零である。図10に示す状況で上体3を矢印の向きに単位角加速度で回転させる(角加速度βb=1で回転させる)と、ΔMbzは図10に示す矢印の向きに作用する。
尚、図10に示す運動では、両腕体5,5の手先位置が支持脚座標系(床に固定された座標系)から見て変わらないように、上体3を回転させたが、上体3に対する腕体5の相対位置姿勢を変えずに、上体3と共に腕体5を回転させる運動を上体ヨー回転モードと定義しても良い。ただし、この場合には、後述する運動方程式に若干変更が必要である。
また、図11(a),(b)のように、ロボット1のある運動状態から、両腕体5,5の先端を互いに前後に逆方向に摂動させると、ロボット1の全体重心は摂動せずに、全体重心まわりの角運動量鉛直成分が摂動する。以降、この運動モードを逆位相腕振りモードと呼ぶ。言い換えると、床反力鉛直成分、床反力水平成分および床反力モーメント水平成分を摂動させずに、目標ZMPまわりの床反力モーメント鉛直成分を摂動させる腕振り運動モードを逆位相腕振りモードと呼ぶ。
右腕体5Rを前側に単位量移動させ、左腕体5Lを後ろに単位量移動させる動作を、単位角度の逆位相腕振りと呼ぶ。図11(a),(b)は、逆位相腕振り角度がθazの状態を表す。
逆位相腕振りモードの単位角加速度当たりの床反力モーメント鉛直成分の変化をΔMaz、単位角加速度当たりの床反力水平成分の変化をΔFaとする。ΔFaは零である。図11(a),(b)に示す状況で右腕体5Rを前側に加速し、左腕体5Lを後ろ側に加速する(角加速度βa>0で振る)と、図11(a)に示す矢印の向き(鉛直軸の正の向き)に床反力モーメント鉛直成分Mazが作用する。
次に、本第1参考例に用いられるロボット1の動力学モデルについて説明する。本第1参考例では単純化された(近似された)以下に示す動力学モデルを用いる。ただし、以下に示す動力学モデルに関しては、キネマティクスモデル(関節、リンクの構造や寸法を表すモデルであり、言い換えると、関節変位とリンクの位置姿勢との関係を表すモデルである。)も必要である。
図12は、本第1参考例に用いられるロボット1の動力学モデルである。図示の如く、この動力学モデルは、ロボット1の各脚体2にそれぞれ対応する2つの質点2m,2m、及び上体3に対応する質点3mからなる合計3質点と、イナーシャがあって質量のない4つのフライホイールFHx、FHy、FHbz、FHazとから構成されるモデルである。フライホイールFHx、FHy、FHbz、FHazは、それぞれX軸(前後方向軸)、Y軸(左右方向軸)、Z軸(鉛直軸)、Z軸(鉛直軸)の回りに回転可能なものである。この動力学モデルでは、デカップルド、即ち、脚体2,2の動力学(各質点2m,2mの動力学)と上体3の動力学(質点3m及びフライホイールFHx、FHyおよびFHbzの動力学)と腕体5,5の動力学(フライホイールFHazの動力学)とが相互に非干渉に構成されると共に、ロボット1全体の動力学は、それらの線形結合で表される。また、さらに、上体3の運動と床反力との関係も、上体3の並進運動(上体並進モード)と床反力との関係、上体3の傾斜運動(上体傾斜モード)と床反力との関係、上体3のヨー回転運動(上体ヨー回転モード)と床反力との関係、並びに両腕体5,5の逆位相腕振り運動(逆位相腕振りモード)と床反力との関係に分離される。具体的には、上体質点3mの水平運動によって発生する床反力は、上体3の水平方向並進運動(上体並進モード)によって発生する床反力に対応し、フライホイールFHxおよびFHyの回転運動によって発生する床反力は、上体3の傾斜角の回転運動(上体傾斜モード)によって発生する床反力に対応する。なお、フライホイールFHxの回転運動は、上体3の傾斜角のロール方向(X軸回り)の回転運動に対応し、フライホイールFHyの回転運動は、上体3の傾斜角のピッチ方向(Y軸回り)の回転運動に対応している。また、フライホイールFHbzの回転運動によって発生する床反力は、上体3のヨー回転運動(上体ヨー回転モード)によって発生する床反力に対応する。また、フライホイールFHazの回転運動によって発生する床反力は、逆位相腕振り(逆位相腕振りモード)によって発生する床反力に対応する。
尚、ロボット1の腕体の質量は上体3に含まれるものとし、上体質点3mは腕体5,5の質量を含む質量をもつ。
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。なお、各質点2m,2m,3mはそれが対応する部位の代表点であるか、あるいはその部位の位置姿勢から幾何学的に一義的に決定される点に相当する。例えば、支持脚側脚体2の質点2mの位置は、該脚体2の足平22の底面の前記代表点から所定の距離だけ上方の点とする。
Zsup:支持脚質点鉛直位置
Zswg:遊脚質点鉛直位置
Zb:上体質点鉛直位置(上体鉛直位置とは一般的には異なる。)
ZGtotal:全体重心鉛直位置
Xsup:支持脚質点X位置
Ysup:支持脚質点Y位置
Xswg:遊脚質点X位置
Yswg:遊脚質点Y位置
Xb:上体質点X位置(上体質点位置は、前記点Prから上体の前後方向にある所定の距離だけオフセットした点である。オフセットは、直立時などにおいて、厳密モデルの重心位置と、本動力学モデルの重心位置がなるべく一致するように、決定される。上体水平位置とは一般的には異なる。)
Yb:上体質点Y位置
XGtotal:全体重心水平X位置
YGtotal:全体重心水平Y位置
θbx:鉛直方向に対するX軸回りの上体傾斜角
θby:鉛直方向に対するY軸回りの上体傾斜角
θbz:上体ヨー回転角
θaz:逆位相腕振り角
mb:上体質点質量
msup:支持脚質点質量
mswg:遊脚質点質量
mtotal:ロボット総質量(=mtotal+msup+mswg)
J:上体慣性モーメント(上体傾斜モードにおける等価慣性モーメントである。すなわち、FHxおよびFHyの慣性モーメントである。実ロボット1の上体3部位の慣性モーメントとは一般的には一致しない。)
Jbz:鉛直軸まわり上体慣性モーメント(上体ヨー回転モードにおける等価慣性モーメントである。実ロボット1の上体3部位の慣性モーメントとは一般的には一致しない。)
Jaz:腕振り鉛直軸まわり慣性モーメント(スピンキャンセルのための逆位相腕振りにおける等価慣性モーメントである。すなわち、FHzの慣性モーメントである。)
Fx:床反力X成分(詳しくは並進床反力の前後方向(X軸)成分)
Fy:床反力Y成分(詳しくは並進床反力の左右方向(Y軸)成分)
Fz:床反力鉛直成分(詳しくは並進床反力の鉛直方向(Z軸)成分。本第1参考例では、これは目標並進床反力鉛直成分に等しい)
Mx:目標ZMPまわりの床反力モーメントX成分(詳しくは床反力モーメントの前後軸(X軸)まわり成分)
My:目標ZMPまわりの床反力モーメントY成分(詳しくは床反力モーメントの左右軸(Y軸)まわり成分)
Mz:目標ZMPまわりの床反力モーメントZ成分(詳しくは床反力モーメントの鉛直軸(Z軸)まわり成分)
なお、各質点2m,3mのX位置、Y位置はそれぞれ前後方向(X軸方向)の位置、左右方向(Y軸方向)の位置を意味している。また、本第1参考例では、各脚体2の質点2mの位置と、その脚体2の足平22の位置(足平22のあらかじめ定めた代表点の位置)との位置関係はあらかじめ定められており、一方の位置が決まれば、他方の位置は一義的に定まるものとされている。また、上体質点3mと、上体3の位置(上体3のあらかじめ定められた代表点の位置)との位置関係は、上体3の姿勢角(以降、上体に関しては、姿勢角とは、傾斜角とヨー角を意味するものとする。)に応じてあらかじめ定められており、一方の位置と姿勢角とが決まれば、他方の位置は一義的に定まるものとされている。
また、任意の変数Xに対して、dX/dtはXの1階微分を表わし、d2X/dt2はXの2階微分を表わす。したがって、変数Xが変位ならば、dX/dtは速度、d2X/dt2は加速度を意味する。gは重力加速度定数を示す。ここでは、gは正の値とする。
上記動力学モデルの運動方程式(動力学的平衡条件を表す式)は、式01、式02x、式02y、式03x、式03y、式03zで表される。
Fz=mb*(g+d2Zb/dt2)+msup*(g+d2Zsup/dt2)
+mswg*(g+d2Zswg/dt2) ……式01

Fx=mb*d2Xb/dt2+msup*d2Xsup/dt2+mswg*d2Xswg/dt2
……式02x

Fy=mb*d2Yb/dt2+msup*d2Ysup/dt2+mswg*d2Yswg/dt2
……式02y

Mx=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
……式03x

My=−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
……式03y

Mz=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
……式03z

また、ロボット全体重心位置には次の関係式が成立する。
ZGtotal=(mb*Zb+msup*Zsup+mswg*Zswg)/mtotal
……式04
XGtotal=(mb*Xb+msup*Xsup+mswg*Xswg)/mtotal
……式05x
YGtotal=(mb*Yb+msup*Ysup+mswg*Yswg)/mtotal
……式05y

以下に上記動力学モデルと前記ΔFp、ΔMp、ΔFr、ΔMrの関係を示す。
前記ΔFpは、式02xまたは式02yにおいて、d2Xb/dt2またはd2Yb/dt2を単位量だけ摂動させたときのFxまたはFyの摂動量であるから、次式によって求められる。
ΔFp=mb …式06
すなわち、上体並進モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力水平成分の変化ΔFpは、上記動力学モデルの上体質点3mの質量に相当する。
前記ΔMpは、式03yまたは式03xにおいて、d2Xb/dt2またはd2Yb/dt2を単位量だけ摂動させたときのMyまたはMxの摂動量であるから、次式によって求められる。
ΔMp=mb*(Zb−Zzmp) …式07
すなわち、上体並進モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力モーメント水平成分の変化ΔMpは、上記動力学モデルの上体質点質量に、上体質点3mの目標ZMPからの高さ(鉛直位置)を乗じたものになる。このときの上体質点3m及び目標ZMPの位置と、上体質点3mの運動との関係は、上体質点3mを倒立振子質点、目標ZMPを倒立振子支点に対応づけたときの倒立振子の挙動に相当する。なお、Y軸方向のΔMpは、より正確には、式07の右辺の符号を反転させたものである。
前記ΔFrは、式02xまたは式02yにおいて、d2θby/dt2を単位量だけ摂動させたときのFxまたはFyの摂動量であるから、次式によって求められる。
ΔFr=0 …式08
すなわち、上体傾斜モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力水平成分の変化ΔFrは、0である。
前記ΔMrは、式03xまたは式03yにおいて、d2θbx/dt2またはd2θby/dt2を単位量だけ摂動させたときのMxまたはMyの摂動量であるから、次式によって求められる。
ΔMr=J …式09
すなわち、上体傾斜モードの各水平軸(X軸、Y軸)方向の単位加速度当たりの床反力モーメント水平成分の変化ΔMrは、水平軸フライホイール(FHxおよびFHy)の慣性モーメントに相当する。
前記ΔMbzは、式03zにおいて、d2θbz/dt2を単位量だけ摂動させたときのMzの摂動量であるから、次式によって求められる。
ΔMbz=Jbz …式09b
すなわち、上体ヨー回転モードの単位加速度当たりの床反力モーメント成分の変化ΔMbzは、上体ヨー回転に対応するフライホイールFHbzの慣性モーメントに相当する。
前記ΔMazは、式03zにおいて、d2θaz/dt2を単位量だけ摂動させたときのMzの摂動量であるから、次式によって求められる。
ΔMaz=Jaz …式09a
すなわち、逆位相腕振りの単位角加速度当たりの床反力モーメント成分の変化ΔMazは、腕振りに対応するフライホイールFHazの慣性モーメントに相当する。
本第1参考例における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩分の目標歩容(前記狭義の意味での目標歩容)を単位として、その1歩分の目標歩容を順番に生成する。従って、本第1参考例で生成する図5の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時(次の片脚支持期の開始時)までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置100が今回歩容を新たに生成するとき、該歩容生成装置100には、ロボット1の2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値(要求)が歩容に対する要求パラメータとして入力される(あるいは歩容生成装置100が記憶装置から要求パラメータを読み込む)。そして、歩容生成装置100は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。
以下に図5の走行歩容を生成することを例にして、本第1参考例における歩容生成装置100の歩容生成処理の詳細を図13〜図46を参照しつつ説明する。図13は、その歩容生成装置100が実行する歩容生成処理のメインルーチンを示すフローチャート(構造化フローチャート)である。
まずS010において時刻tを0に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図13のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはS018に進むと共に、切り替わり目でないときはS030に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
S018に進むときは時刻tが0に初期化され、次いでS020に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本第1参考例では、歩容生成装置100にジョイスティック73等から与えらる要求パラメータは、2歩先までの遊脚側足平22の着地予定位置姿勢(足平22が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢)、着地予定時刻の要求値を含んでおり、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける1歩目の遊脚側足平22(今回歩容での遊脚側足平22)の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。
例えば図16を参照して、今回歩容(1歩目)に係わる遊脚側足平22(図では22L)の着地予定位置姿勢の要求値が、今回歩容の支持脚側足平22(図では22R)の着地位置姿勢に対して、今回歩容支持脚座標系のX軸方向(今回歩容の支持脚側足平22Rの前後方向)及びY軸方向(今回歩容の支持脚側足平22Rの左右方向)に、それぞれxnext、ynextだけ移動し、且つZ軸回り(鉛直軸回り)にθznextだけ回転させた位置姿勢であるとする。ここで、支持脚座標系は、支持脚側足平22を水平姿勢(より一般的には床面に平行な姿勢)にして該支持脚側足平22の底面のほぼ全面を床面に接触(密着)させた状態において、該支持脚側脚体2の足首中心から床面に延ばした垂線が該床面と交わる点(この点は、本第1参考例の例では支持脚側足平22の底面のほぼ全面を床面に接触させた状態では、該足平22の代表点と合致する)を原点とし、その原点を通る水平面をXY平面とするグローバル座標系(床に固定された座標系)である。この場合、X軸方向、Y軸方向は、それぞれ支持脚側足平22の前後方向、左右方向である。尚、支持脚座標系の原点は、必ずしも支持脚側足平22の底面のほぼ全面を床面に接触させた状態での該足平22の代表点(足平22の位置を代表する点)に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
このとき、次回歩容支持脚座標系は、図示のように今回歩容の遊脚側足平22Lの着地予定位置姿勢の要求値に従って該足平22を着地させた場合(足平22の代表点を着地予定位置の要求値に一致させ、且つ、足平22の姿勢(向き)を着地予定姿勢の要求値に一致させた場合)における該足平22Lの代表点(より詳しくは該代表点に合致する床上の点)を原点とし、該原点を通る水平面内における該足平22Lの前後方向、左右方向をそれぞれX’軸方向、Y’軸方向とする座標系である。
上記と同様に、2歩目の遊脚側足平22の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系(図16のX”Y”座標を参照)が定まる。また、今回歩容周期は、今回歩容の支持脚側足平22の着地予定時刻(要求値)から、1歩目(今回歩容)の遊脚側足平22の着地予定時刻(要求値)までの時間として定まり、次回歩容周期は、1歩目の遊脚側足平22の着地予定時刻(要求値)から2歩目の遊脚側足平22の着地予定時刻(要求値)までの時間として定まる。
尚、前記要求パラメータは、本第1参考例ではジョイスティック73の所要の操作によって歩容生成装置100に入力されるものであるが、あらかじめ該要求パラメータあるいはこれに対応する上記の支持脚座標系の位置姿勢及び歩容周期をロボット1の移動スケジュールとして記憶しておいても良い。あるいは、ジョイスティック73などの操縦装置からの指令(要求)とそのときまでのロボットの1の移動履歴とを基に前記次回及び次次回歩容支持脚座標系、並びに今回及び次回歩容周期を決定しても良い。
次いでS022に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、基準とする腕姿勢軌道を規定する基準腕姿勢軌道パラメータ、目標ZMP軌道を規定するZMP軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を規定するパラメータも歩容パラメータに含まれる。
尚、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界(本第1参考例では1歩毎の歩容の境界)においてロボット1の運動状態(足平位置姿勢、上体位置姿勢等の状態)に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。
周期的歩容である定常旋回歩容は、本第1参考例では、ロボット1の2歩分の歩容、すなわち今回歩容に続く第1旋回歩容と該第1旋回歩容に続く第2旋回歩容とからなる歩容を該定常旋回歩容の1周期分の歩容として、その1周期分の歩容を繰り返す歩容である。尚、ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。また、生成する目標歩容が前記図5の走行歩容であると、その目標歩容の今回歩容は、片脚支持期及び空中期を有する走行歩容であるので、定常旋回歩容の第1旋回歩容及び第2旋回歩容は、いずれも今回歩容と同様に片脚支持期と空中期とを有する歩容である。つまり、第1旋回歩容及び第2旋回歩容の基本的な歩容形態は今回歩容と同一である。
定常旋回歩容について補足すると、2足移動ロボットでは、定常旋回歩容の1周期分は、前記した狭義の意味での歩容が、少なくとも2歩分、必要である。そして、3歩以上の歩容を1周期分の歩容とする複雑な定常旋回歩容を設定することも可能である。但し、定常旋回歩容は、後述の如く、今回歩容の終端(終了時刻)における発散成分(詳細は後述する)を決定するためだけに用いられる。このため、3歩以上の歩容を1周期とする定常旋回歩容を用いることは、歩容生成の処理が煩雑となるにも関わらず、効果は少ない。そこで、本第1参考例での定常旋回歩容の1周期分の歩容を2歩分の歩容(第1及び第2旋回歩容)により構成するようにしている。尚、3足以上の脚式移動ロボットにあっては、それに応じて定常旋回歩容を定義するに足る歩容数が増加する。以下では、説明の便宜上、複数の狭義の歩容(本第1参考例では2歩分の歩容)から成る定常旋回歩容を1歩の歩容とみなす。
定常旋回歩容は、歩容生成装置100で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット1の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置100からそのまま出力されるものではない。
尚、「発散」とは、図14に示すように、2足移動ロボット1の上体3の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、2足移動ロボット1の上体3の位置が両足平22,22の位置(より具体的には、支持脚側足平22の接地面に設定されたグローバル座標系(支持脚座標系)の原点)からかけ離れていく具合を表す数値である。
本第1参考例では、目標歩容が、前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。ただし、継続的な歩容の代表例である定常歩容(歩容の軌道の不連続を発生することなく、同じパターンの歩容を繰り返すことができる周期的歩容であり、原理上、無限回繰り返しても発散しない歩容)の初期発散成分(定常歩容の初期時刻での発散成分)であっても、単純に0ではなく、定常歩容のパラメータが変われば、その初期発散成分も変わる。すなわち、歩き方あるいは走り方等の歩容形態によって、適切な発散成分が変わる。そこで、本第1参考例では、これから生成しようとする今回歩容の後に続く定常歩容が前記今回歩容に係わる要求パラメータに応じて設定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる(より一般的には、今回歩容を定常歩容に連続させもしくは近づける)ように、今回歩容を生成する。これのような歩容生成の基本的な指針は本出願人が先に提案したPCT公開公報WO/02/40224のものと同様である。
本発明の第1参考例では、PCT公開公報WO/02/40224の第1実施形態で用いたような線形な3質点動力学モデルを用いていないが、次式で定義される発散成分および収束成分の概念は、図12に示したモデルのような非線形な動力学モデルの挙動の摂動分に対しても、近似的に十分な精度で適用することができる。

発散成分=上体質点水平位置+上体質点水平速度/ω0
…式10
収束成分=上体質点水平位置−上体質点水平速度/ω0’
…式11
ただし、ここでの上体質点水平位置は、図12に示す前記動力学モデルにおいては、上体質点水平位置Xbを表す。
また、ω0、ω0’はある所定の値である。これらのω0、ω0’値はほぼ同じ値であるが、厳密には一致しない。そして、走行時では、PCT公開公報WO/02/40224の歩行歩容生成時の値に対して若干変更する必要がある。
発散成分および収束成分に関するその他の詳細は、PCT公開公報WO/02/40224に記述されているので、ここではこれ以上言及しない。
本第1参考例においては、PCT公開公報WO/02/40224に示した方式に加え、さらに、後述するように、目標床反力鉛直成分軌道を規定する歩容パラメータを設定し、この目標床反力鉛直成分を動力学的に満足するようにロボット1の全体重心鉛直位置を決定する。この場合、床反力鉛直成分の2階積分値がロボット1の全体重心鉛直位置を規定するものになるので、目標床反力鉛直成分の設定が悪いと、ロボット1の全体重心鉛直位置もしくは上体鉛直位置が高くなり過ぎたり低くなり過ぎたりする。したがって、目標床反力鉛直成分の設定方法も重要な課題である。しかし、床反力鉛直成分と上体鉛直位置との関係は、ZMPと上体水平位置との関係に似ているので、上体水平位置速度を適切にするための目標ZMP決定手法の一部を、以下の本第1参考例に示すように、少し変更するだけで、上体鉛直位置速度を適切にするための目標床反力鉛直成分の決定手法に適用することができる。
本題に戻り、S022では、図15に示すフローチャートに従って、以下の処理が行われる。
まず、S100において、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に具体的な設定方法を図16を参照して説明する。尚、以降の説明では、支持脚側の脚体2の足平22を支持脚足平と称し、遊脚側の脚体2の足平22を遊脚足平を称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻もしくはそれらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第1旋回歩容および第2旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第1旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平22は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢(=前回歩容終端遊脚足平位置姿勢)から、前記要求パラメータにおける2歩目の遊脚側足平22の着地予定位置姿勢の要求値(今回歩容の支持脚足平22の次回歩容における着地予定位置姿勢の要求値)もしくは該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(詳しくは次回歩容支持脚座標系から見た軌道)を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
尚、次回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平22を接地させたまま、つま先を下げるように該足平22を水平姿勢までピッチ方向に所定角度回転させたときの該足平の位置姿勢が次次回歩容支持脚座標系の位置姿勢に合致するように決定される。換言すれば、次回歩容終端遊脚足平位置姿勢は、前記要求パラメータにおける2歩目の遊脚側足平22の着地位置姿勢の要求値から、該足平22をすべらないように接地させたまま、つま先を持ち上げるように該足平22をピッチ方向に所定角度回転させた状態(つま先を上げてかかとを着地させた状態)での該足平22の位置姿勢である。
また、第1旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、前記次回歩容終端遊脚足平位置姿勢の場合と同様、前記次回歩容支持脚座標系もしくはこれに対応する前記要求パラメータの1歩目(今回歩容)の遊脚着地予定位置姿勢の要求値に応じて定まるものである。すなわち、該今回歩容終端遊脚足平位置姿勢は、その位置姿勢から、足平22を接地させたまま、つま先を下げるように該足平22を回転させて該足平22の底面のほぼ全面を床面に接地させたときの該足平の代表点が次回歩容支持脚座標系の原点に合致するように決定される。
第1旋回歩容終端遊脚足平位置姿勢は、今回歩容終端遊脚足平位置姿勢や次回歩容終端遊脚足平位置姿勢の決定手法と同様に、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に基づいて決定される。より具体的には、第1旋回歩容終端遊脚足平位置姿勢は、その位置姿勢から足平22を接地させたまま、すべらないように該足平22を水平姿勢まで所定角度回転させたときの足平位置姿勢が、次回歩容支持脚座標系から見た次次回歩容支持脚座標系の位置姿勢に合致するように設定される。
第1旋回歩容終端では、支持脚足平22は離床して空中にある。支持脚足平22が離床してから後の軌道を決定するために、第1旋回歩容支持脚足平着地予定位置姿勢が設定される。第1旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢に基づいて設定される。より具体的には、第1旋回歩容支持脚足平着地予定位置姿勢は、次回歩容支持脚座標系から見た次次次回歩容支持脚座標系の位置姿勢である。なお、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と次次次回歩容支持脚座標系との相対的位置姿勢関係が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように設定される。
第1旋回歩容終端支持脚足平位置姿勢は、第1旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第1旋回歩容初期支持脚足平位置姿勢から、前記第1旋回歩容支持脚足平着地予定位置姿勢に至る足平位置姿勢軌道(より詳しくは次回歩容支持脚座標系から見た軌道)を、第1旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
第2旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端支持脚足平位置姿勢とされる。第2旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端遊脚足平位置姿勢とされる。
第2旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第2旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
第1旋回歩容および第2旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第1旋回歩容及び第2旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。尚、今回歩容、第1旋回歩容および第2旋回歩容の上記以外の運動パラメータ(両脚支持期時間などの時間パラメータを含む)は、上記決定されたパラメータに応じて、歩容の条件(アクチュエータの速度が許容範囲に入っているか、可動角を超えていないか、床などと干渉していないかなど)を満足するように適宜決定する。
次に、S102に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期(第1旋回歩容の初期)と終端(第2旋回歩容の終端)とでつながるように(定常歩容の初期、終端での基準上体姿勢の姿勢角及びその角速度が一致するように)に設定されている限り、一定姿勢である必要はないが、本第1参考例では理解を容易にするため、基準上体姿勢のうちの傾斜角(鉛直方向に対する傾斜角)に係わる姿勢は、直立姿勢(鉛直姿勢)に設定される。つまり、本第1参考例では、上体3の傾斜角に関する基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本第1参考例では、基準上体姿勢のうちの傾斜角の角速度及び角加速度は0である。基準上体姿勢のうちのヨー角軌道(以降、基準ヨー角軌道とも呼ぶ)θbzは、例えば一定角速度(定常歩容の平均旋回速度)の運動にすれば良い。あるいは、後述の基準逆位相腕振り軌道の例(図18)のようにサイン波状にしても良い。ただし、定常歩容を繰り返した時に基準ヨー角およびその角速度が連続となるように設定する。
尚、本第1参考例では、目標上体姿勢のうちのヨー角軌道(以降、目標ヨー角軌道とも呼ぶ)は、基準ヨー角軌道に一致させるものとする。
次に、S104に進み、基準腕姿勢軌道パラメータが決定される。具体的には、両腕体5,5の全体の重心位置(上体3に対する相対的な重心位置)、左右の手先(両腕体5,5の先端)の左右方向の間隔、および逆位相腕振り角に関するパラメータが決定される。基準逆位相腕振り角は、たとえば図17のように左旋回する場合には、図18のように設定すれば良い。図18のように、基準逆位相腕振り角θazrefは、定常歩容を繰り返した時に歩容の境界(第2旋回歩容の終端と次の第1旋回歩容の境界)において逆位相腕振り角および角速度が共に連続になり、かつ第1旋回歩容初期における支持脚と逆位相腕振り角の相対関係が、次の第1旋回歩容初期における支持脚と逆位相腕振り角の相対関係に一致するように設定される。すなわち、第1旋回歩容の初期逆位相腕振り角速度と第2旋回歩容の終端逆位相腕振り角速度が一致し、第2旋回歩容の終端逆位相腕振り角は、定常歩容の旋回角(第1旋回歩容と第2旋回歩容の旋回角の和)に第1旋回歩容初期逆位相腕振り角を加えた値に設定される。図18では基準逆位相腕振り角θazrefをサイン波状の波形としたが、一定角速度に設定しても良い。あるいは、支持脚のヨー角と遊脚のヨー角の平均の値としても良い。
尚、本第1参考例では、目標腕姿勢の両腕体5,5の全体の重心位置(上体3に対する相対位置)は、上体3に対して一定に維持されるように設定される。
次に、S106に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第1旋回歩容および第2旋回歩容のいずれにおいても図6のように実質的に連続な(値がステップ状に飛ばない)ものとなるように床反力鉛直成分軌道パラメータが設定される。すなわち、定常旋回歩容の目標床反力鉛直成分軌道は図19のようなパターンで設定される。そのパターンでは、第1旋回歩容及び第2旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が0に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ(ピーク値)が床反力鉛直成分軌道パラメータとして設定される。
この床反力鉛直成分軌道パラメータの設定に際しては、床反力鉛直成分の歩容全期間(第1旋回歩容と第2旋回歩容両方の期間を合わせた期間で定常歩容の1周期の期間)における平均値をロボット1の自重と一致させる。すなわち、床反力鉛直成分の平均値がロボット1に作用する重力と同じ大きさで反対向きになるようにする。
上記のごとく床反力鉛直成分軌道を設定することは、定常歩容の条件を満たすために必要である。定常歩容の条件とは、支持脚座標系(支持脚側足平22の接地面に設定された座標系)から見た歩容のあらゆる状態変数(ロボット1の各部の位置、姿勢、速度等)の初期状態(第1旋回歩容の初期状態)と次の支持脚座標系(次の第1旋回歩容の支持脚座標系)から見た歩容の終端状態(第2旋回歩容の終端状態)が一致していることである(以下、この条件を定常歩容の境界条件ということがある)。したがって、定常歩容終端におけるロボット1の全体重心鉛直速度と定常歩容初期における全体重心鉛直速度との差(詳細には、第2旋回歩容終端の全体重心鉛直速度と第1旋回歩容初期の全体重心鉛直速度との差)も零でなければならない。上記差は床反力鉛直成分と重力との差の積分値(1階積分値)であるから、上記差を零にするためには、上記のごとく床反力鉛直成分軌道を設定する必要がある。
尚、本第1参考例では、床反力鉛直成分の第1旋回歩容、第2旋回歩容それぞれの期間における平均値をロボット1の自重と一致させるようにした。より具体的には、例えば第1旋回歩容及び第2旋回歩容の歩容周期に応じて各旋回歩容における床反力鉛直成分軌道の台形部分の折れ点の時刻を設定した上で、その台形部分の高さを、床反力鉛直成分の第1旋回歩容、第2旋回歩容それぞれの期間における平均値がロボット1の自重と一致するように決定した(台形の高さを未知数として、上記平均値及び自重の一致条件を表す方程式を解くことで台形の高さを求める)。
こうすることにより、第1旋回歩容終端の全体重心鉛直速度と第1旋回歩容初期の全体重心鉛直速度との差も0、第2旋回歩容終端の全体重心鉛直速度と第2旋回歩容初期の全体重心鉛直速度との差も0になる。ただし、このようにする必然性はない。例えば、第1旋回歩容と第2旋回歩容との境界あたりで上体鉛直位置が高くなり過ぎたり低くなり過ぎたりして無理な姿勢になりそうな場合には、各旋回歩容で上記平均値及び自重を一致させた状態から各旋回歩容の床反力鉛直成分軌道の台形の高さ等を修正するようにしてもよい。
次に、S108に進み、上記のごとく図19のように設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fxmin,Fxmax](より詳しくはこれを規定するパラメータ)が図20のように設定される。図20の負側の折れ線が床反力水平成分許容下限値Fxmin、正側の折れ線が床反力水平成分許容上限値Fxmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力水平成分は、床と足平22との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット1が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平22との間の摩擦係数をμとすると、Fxminは、常に−μ*床反力鉛直成分以上に、Fxmaxはμ*床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、kaは1より小さい正の定数である。
Fxmin=−ka*μ*床反力鉛直成分
Fxmax= ka*μ*床反力鉛直成分
…式12
図20の床反力水平成分許容範囲は、式12にしたがって設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図20の台形波形などの折れ点での値と時刻を設定してもよいが、式12により床反力水平成分許容範囲を決定するときには、単に式12における(ka*μ)の値をパラメータとして設定するだけでも良い。
尚、上記条件(目標歩容の床反力水平成分を常に摩擦限界以内にするという条件)を満足しているならば、他の設定方法で床反力水平成分許容範囲を設定するようにしても構わない。
次に、S109に進み、上記のごとく図19のように設定された床反力鉛直成分軌道などに応じて、床反力モーメント鉛直成分の許容範囲[Mzmin,Mzmax](より詳しくはこれを規定するパラメータ)が図21のように設定される。図21の負側の折れ線が床反力モーメント鉛直成分許容下限値Mzmin、正側の折れ線が床反力モーメント鉛直成分許容上限値Mzmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力モーメント鉛直成分は、床と足平22との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。したがって、生成された目標歩容に従って実際のロボット1が移動した時にスピンしないようにするためには、目標歩容の床反力モーメント鉛直成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力モーメント鉛直成分許容範囲を設定し、後述するように、目標歩容の床反力モーメント鉛直成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平22との間の摩擦係数をμ、モーメント鉛直成分を発生するための床と足平22との間の接触面の有効半径(あるいは床と足平22との間の接触面の目標ZMPまわりの断面2次モーメントの平方根)をrとすると、Mzminは、常に−μ*r*床反力鉛直成分以上に、Mzmaxはμ*r*床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。ただし、kaは1より小さい正の定数である。
Mzmin=−ka*μ*r*床反力鉛直成分
Mzmax= ka*μ*r*床反力鉛直成分
…式1012
図21の床反力モーメント鉛直成分許容範囲は、式1012にしたがって設定した例である。床反力モーメント鉛直成分許容範囲を規定するパラメータとして、図21の台形波形などの折れ点での値と時刻を設定してもよいが、式1012により床反力モーメント鉛直成分許容範囲を決定するときには、単に式1012における(ka*μ)の値をパラメータとして設定するだけでも良い。rは、各瞬間において目標ZMPと接地面から算出するのが良いが、定数としても構わない。
尚、上記条件(目標歩容の床反力モーメント鉛直成分を常に摩擦限界以内にするという条件)を満足しているならば、他の設定方法で床反力モーメント鉛直成分許容範囲を設定するようにしても構わない。
さらには、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を独立に設定するのではなく、床反力水平成分と床反力鉛直成分モーメントの組み合わせの許容範囲を設定するようにしても良い。なぜなら、床反力水平成分が大きくなると、床反力モーメント鉛直成分の許容範囲が狭くなり、また、床反力モーメント鉛直成分が大きくなると、床反力水平成分の許容範囲が狭くなるからである。
次に、S110に進み、第1旋回歩容および第2旋回歩容を合わせた定常歩容のZMP軌道を規定するZMP軌道パラメータが設定される。この場合、目標ZMP軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。
さらに詳細には、図5の走行歩容においては、支持脚足平22のかかとで着地した後、しばらくして該支持脚足平22の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平22のつま先だけが接地する。そして、次に支持脚足平22のつま先で蹴って空中に飛び上がり、最後に遊脚足平22のかかとで着地する。また、目標ZMPは接地面内に存在しなければならない。そこで、本第1参考例では、定常歩容の第1旋回歩容及び第2旋回歩容のそれぞれの目標ZMPのX軸方向の位置は、前記図7の上段図に示したように、支持脚足平22のかかとを初期位置として、該足平22の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ZMPは支持脚足平22の中央に移動し、該足平22がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平22のつまさきに留まるように設定される。さらにその後は、目標ZMPは、前述のごとく、次の遊脚足平22の着地までに目標ZMPが、支持脚足平22のつまさきから遊脚足平22のかかとの着地位置まで連続的に移動するように設定される。したがって、第1旋回歩容と第2旋回歩容とから成る定常歩容の目標ZMP軌道(X軸方向の軌道)は、図22のようになる。そして、この目標ZMP軌道の折れ点の時刻及び位置がZMP軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第1旋回歩容及び第2旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系及び次次回歩容支持脚座標系の位置姿勢あるいはこれらの座標系を規定する要求パラメータの1歩目及び2歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。尚、ZMP軌道のY軸方向の位置は、前記図7の下段図に示したものと同様に設定される。より詳しくは、第1旋回歩容における目標ZMPのY軸方向位置の軌道は、図7の下段図のものと同一パターンで設定され、第2旋回歩容における目標ZMPのY軸方向位置の軌道は、第1旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。
次に、S112に進み、定常歩容1歩(1周期)の初期時刻、終端時刻、期間が以下のように再定義される。
定常歩容は、その初期と終端での状態変数が連続的につながる歩容でなければならない。このような歩容の決定を容易にするために、本第1参考例では、定常歩容を決定するまでは、前述の狭義の歩容の定義とは異なり、定常歩容の1歩の初期、終端、期間を便宜上、図19のように定める。すなわち、第1旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻を定常歩容の初期時刻Tsとして設定する。なお、初期時刻Tsは、図7に示すように、支持脚足平22の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前の時刻(図7の足底全面接地期間の終了時刻もしくはその直前の時刻)に設定するのが望ましい。また、S110において設定した図22(または図7)に示す目標ZMPと時刻Tsとの関係を説明すると、第1旋回歩容において支持脚足平22の底面のほぼ全面が接地した後に、目標ZMPが支持脚足平22の中央に移動し、つま先接地状態になるまでにつま先に移動を完了した瞬間が、時刻Tsとなっているのが望ましい。このような初期時刻Tsは例えば先に設定した目標ZMP軌道パラメータに応じて設定される。上記のごとく初期時刻Tsを設定する理由は後述する。
また、図19に示すように、定常歩容の周期Tcycは第1旋回歩容と第2旋回歩容の歩容周期の和である。定常歩容の終端時刻をTeとする。Teは、TsにTcycを加えた時刻に設定される。
定常歩容が決定された時点(後述の図23のS204のループを抜けた時点)から、改めて、歩容の初期、終端等の定義を、前述の狭義の歩容の定義に戻すこととする。以下の説明では、前述の狭義の歩容の定義による初期時刻(支持脚側足平22の着地当初の時刻)を0とし、定常歩容を決定するまで用いる上記初期時刻Tsを参照符号Tsを用いて(単に「Ts」と省略することもある)本来の初期時刻0と区別する。
最後にS114に進み、定常歩容の上体姿勢角・逆位相腕振り角復元期間[Tm,Ts2]および[Tm2,Te]を設定する。補足すると、定常歩容を繰り返した時に歩容の境界において上体姿勢角および逆位相腕振り角は連続であるべきである。そのためには、定常歩容の初期上体姿勢角速度と終端上体姿勢角速度が一致し、定常歩容の初期逆位相腕振り角速度と終端逆位相腕振り角速度が一致しなければならない。前記期間は、そのようにするための、上体姿勢角軌道と逆位相腕振り角軌道を調整する期間である。
具体的には、初期時刻Tsから第1旋回歩容の空中期を経て第2旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Tmが設定される。さらに、第2旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Ts2が設定される。さらに、第2旋回歩容の空中期を経て第1旋回歩容になり、床反力鉛直成分がある所定の大きさまで増加した時刻Tm2が設定される。
図19にこれらの時刻を示す。時刻Tmは、支持脚足平22の底面のほぼ全面が接地した瞬間あるいはその直後に設定するのが望ましい。時刻Tm2も同様である。また、時刻Ts2は、前記初期時刻Ts同様、足平22の底面のほぼ全面が接地した状態からつま先接地に変わる瞬間あるいはその直前に設定するのが望ましい。
また、前記図15のS110において設定した図22の目標ZMPとこれらの時刻Tm,Ts2,Tm2との関係を説明すると、第2旋回歩容において、目標ZMPが、支持脚足平22のかかとを初期位置として、該足平22の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平22の中央に移動し始める瞬間を時刻Tmとすることが望ましい。その後、支持脚足平22のつま先だけ接地した状態になるまでに、目標ZMPがつま先に移動を完了した瞬間を、時刻Ts2とすることが望ましい。さらに次の第1旋回歩容において、目標ZMPが、支持脚足平22のかかとを初期位置として該足平22の底面のほぼ全体が接地するまでその位置に留まり、次に支持脚足平22の中央に移動し始める瞬間を時刻Tm2とすることが望ましい。
上記のごとく設定する理由は後述する。尚、上体姿勢角を復元(調整)する期間と逆位相腕振り角を復元(調整)する期間を別々に設定しても良い。
図13のS010からS022までに示す処理が行われた後、S024に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度(水平方向での初期上体位置及び初期上体速度)、初期上体鉛直位置速度(鉛直方向での初期上体位置及び初期上体速度)、初期発散成分、初期上体姿勢角、角速度、および初期逆位相腕振り角、角速度である。この初期状態の算出は、図23のフローチャートに従って、探索的に行なわれる。
図23のフローチャートにおいては、先ず、S200において、定常歩容の歩容パラメータ(前記図13のS022で設定したパラメータ)に基づいて、目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角(傾斜角とヨー角)の初期状態(初期時刻Tsでの状態)が決定される。ここで状態とは、位置や姿勢角とその変化率(時間微分)とを表す。
この場合、支持脚側の目標足平位置姿勢の初期状態は、前記図15のS100で決定した足平軌道パラメータの第1旋回歩容初期支持脚足平位置姿勢から、第2旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(次回歩容支持脚座標系から見た軌道)を時刻Tsまで有限時間整定フィルタにより生成することにより決定される。遊脚側の目標足平位置姿勢の初期状態は、次回歩容支持脚座標系から見た今回歩容初期支持脚足平位置姿勢から、第1旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道を時刻Tsまで有限時間整定フィルタにより生成することにより決定される。また、目標腕姿勢の初期状態は、図15のS104で決定した基準腕姿勢軌道パラメータに基づいて求められる時刻Tsにおける基準腕姿勢に決定される。より具体的には、目標腕姿勢の両腕体5,5の全体重心位置(上体3に対する相対位置)、左右の手先(両腕体5,5の先端部)の左右方向の間隔および逆位相腕振り角・角速度が決定される。但し、逆位相腕振り角・角速度は、後述するように、定常歩容を繰り返した時に歩容の境界で連続するように修正されるので、ここではまだ仮に決定されただけである。
また、目標上体姿勢角の初期状態は、図15のS102で決定した基準上体姿勢軌道パラメータにより定まる時刻Tsにおける基準上体姿勢(傾斜角およびヨー角)及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本第1参考例では、上体3の傾斜角に係る基準上体姿勢は鉛直姿勢であるので、目標上体姿勢のうちの傾斜角の初期状態(傾斜角及びその角速度)は0である。
また、本第1参考例では、定常歩容の目標足平位置姿勢軌道、床反力鉛直成分軌道、及び目標ZMP軌道は、それぞれ、図15のフローチャートで決定した足平軌道パラメータ、床反力鉛直成分軌道パラメータ、ZMP軌道パラメータにより互いに独立的に決定される。例えば定常歩容の瞬時瞬時の目標足平位置姿勢は、床反力鉛直成分の瞬時値に依存することなく足平軌道パラメータに応じて決定される。
次いでS202において初期上体水平位置速度の候補(すなわち初期時刻Tsでの上体水平位置速度候補)である(Xs,Vxs)(Xs:水平位置、Vxs:水平速度)が仮決めされる。ここで仮決めする候補(Xs,Vxs)は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度を仮決め候補(Xs,Vxs)とすればよい。
尚、説明を簡略にするため、サジタルプレーン上でX方向(前後方向)での定常歩容の初期状態を探索する場合を例にとるが、実際には位置・速度ともX方向(前後方向),Y方向(左右方向)を別々にあるいは同時に定常歩容の初期状態(定常歩容の前記境界条件を満たす初期状態)を探索する必要がある。
補足すると、サジタルプレーン上では、ヨー回転やモーメント鉛直成分など鉛直軸まわりに関する概念は存在しないので、少なくともヨー回転やモーメント鉛直成分に関しては、3次元空間で演算される。
探索的な決定手法としては、擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。本実施例では、最急降下法を用いる。
次いで、S204を経てS206において、定常歩容を繰り返した時に上体鉛直位置速度が連続になり、かつ、膝等の関節角が伸び過ぎたり縮み過ぎたりしないように、初期(時刻Ts)上体鉛直位置速度(Zs,Vzs)(Zs:鉛直位置、Vzs:鉛直速度)が、決定される。これについての詳細は、例えば本願出願人が先に出願したPCT/JP02/13592に記載されているので、ここでは省略する。
S206の処理の後、次いでS208に進み、定常旋回歩容が仮に生成される(この仮生成される定常旋回歩容を以降、仮歩容ということがある)。より具体的には、前記図13のS022で決定した定常歩容の歩容パラメータを基に、初期時刻Tsから終端時刻Teまでの各瞬間における目標ZMP、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲が逐次求められる。そして、求めた目標ZMPと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル(図12のモデル)を用いて、前記上体水平位置速度(Xs,Vxs)、上体鉛直位置速度(Zs,Vzs)を上体3の初期(時刻Ts)状態として、上体位置姿勢を逐次決定することによって、時刻Tsから終端時刻Teまでの歩容を生成する。また、この時、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
また、床反力モーメント鉛直成分に関する条件、すなわち、床反力モーメント鉛直成分許容範囲を満足するように、逆位相腕振り動作が決定される。
尚、この定常歩容の歩容生成は歩容生成装置100の内部で行われるだけであって、実際のロボット1を駆動するための目標値として、後述する複合コンプライアンス動作決定部104に出力されることはない。
以下に、S208の処理である逐次演算による定常歩容生成処理の詳細を説明する。
図24はその処理を示すサブルーチンフローチャートである。
以下説明すると、S300において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻kに初期時刻Tsを代入する。さらに、上体水平位置速度に、現在仮決定されている(Xs,Vxs)(図23のS202もしくは後述のS216もしくはS218で決定されたもの)が代入され、上体鉛直位置速度に、前記S206で求めた最新の(Zs,Vzs)が代入される。また、上体姿勢角には、基準上体姿勢角初期値(初期時刻Tsでの角度)が代入され、上体姿勢角速度には、基準上体姿勢角速度初期値(初期時刻Tsでの角速度)が代入される。
逆位相腕振り角には、基準初期逆位相腕振り角(初期時刻Tsでの角度)逆位相腕振り角速度には、基準初期逆位相腕振り角速度(初期時刻Tsでの角速度)が代入される。
次いで、S302を経てS304において、仮歩容生成用時刻kが歩容終端時刻以前であるか否か(k ≦ Ts + Tcycであるか否か)が判断され、その判断結果がYESである場合には、S306の歩容瞬時値決定サブルーチンに進み、歩容瞬時値が決定される。次いで歩容生成装置100の処理は、S308に進み、仮歩容生成用時刻kをΔkだけ増やした後、S304に戻る。
ここで、Δkは、仮歩容生成のインターバルであり、通常、制御周期Δtと一致させておけば良い。なお、Δkは、仮歩容の動力学的精度を落としても良いならば、演算量を低減するために、ΔkをΔtよりも長く設定しても良い。
S304の判断結果がNOである場合には、S310に進む。以上の処理により、S310に進むまでに定常歩容(仮歩容)が初期から終端まで生成される。
以下に、S306の歩容瞬時値決定サブルーチンの詳細を図25を参照して説明する。
まず図25のS400において、定常歩容パラメータ(床反力鉛直成分軌道パラメータ)を基に、前記図19に示した目標床反力鉛直成分の時刻kにおける値(今回値)が求められる。さらに、S402において、定常歩容パラメータ(ZMP軌道パラメータ)を基に、前記図22に示した目標ZMP軌道の時刻kにおける値(今回値)が求められる。
次いでS404に進み、定常歩容パラメータ(足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ)を基に、時刻kにおける目標両足平位置姿勢(支持脚側及び遊脚側の両者の目標足平位置姿勢)、基準上体姿勢および基準腕姿勢の値(今回値)が求められる。基準腕姿勢に関しては、具体的には、両腕体5,5の全体重心位置(上体3に対する相対位置)、左右の手先(両腕体5,5の先端部)の左右方向の間隔および逆位相腕振り角の値(今回値)が求められる。
尚、目標足平位置姿勢の今回値(時刻kでの値)は、前記図23のS200で初期時刻Tsでの足平位置姿勢を求めた場合と同様に求められる。
次いでS406に進み、目標床反力鉛直成分を満足する(ロボット1の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ような時刻kにおける全体重心鉛直位置速度の値(今回値)が算出される。具体的には、例えば前記図12の動力学モデルに係わる前記式01と式04とに基づいて、全体重心鉛直位置速度が算出される。すなわち、式01と式04とによれば、ロボット1の運動による全体重心鉛直加速度と重力加速度との和にロボット1の全体質量を乗算したものが床反力鉛直成分に等しいという関係式(ロボット1の全体重心の鉛直方向に関する運動方程式)が得られる。従って、この関係式と目標床反力鉛直成分とから、全体重心鉛直加速度が求められる。
尚、この関係式自体は、ロボット1のモデルに依存することなく一般的に成立するものである。そして、この求めた全体重心鉛直加速度を積分することにより、全体重心鉛直速度が算出され、さらにその全体重心鉛直速度を積分することにより、全体重心鉛直位置が算出される。これらの算出は、より一般的には、次式15および式16で表される動力学関係式(ニュートンの運動方程式を離散化した式)を用いて行なわれる。

時刻kにおける全体重心鉛直速度
=時刻(k−Δk)における全体重心鉛直速度
+((床反力鉛直成分/ロボットの全体質量)+重力加速度)*Δk
(ただし、重力加速度は負の値とする。)
…式15

時刻kにおける全体重心鉛直位置
=時刻(k−Δk)における全体重心鉛直位置
+時刻kにおける全体重心鉛直速度*Δk
…式16

次いでS408に進み、全体重心鉛直位置を満足する上体鉛直位置が算出される。具体的には、例えば前記図12のモデルに係わる式04を用いて上体鉛直位置が算出される。すなわち、支持脚側及び遊脚側の目標足平位置姿勢の今回値から、図12のモデルの支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。そして、これらの求めた支持脚質点2m及び遊脚質点2mの鉛直位置と、S407で求めた全体重心鉛直位置の今回値とを式04に適用することで、上体質点3mの鉛直位置が求められる。さらに、この求めた上体質点3mの鉛直位置と目標上体姿勢角の現在値(S404で設定された基準上体姿勢角または後述のS414で決定された前回(時刻k−Δk)の目標上体姿勢角)とから上体鉛直位置が求められる。
次いでS410に進み、前記図15のS108で決定した歩容パラメータ(床反力水平成分許容範囲を規定するパラメータ)に基づいて、図20に示した床反力水平成分許容範囲[Fxmin,Fxmax]の時刻kにおける値(今回値)が求められる。
次いでS411に進み、前記図15のS109で決定した歩容パラメータ(床反力モーメント鉛直成分許容範囲を規定するパラメータ)に基づいて、図21に示した床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]の時刻kにおける値(今回値)が求められる。
次いでS412に進み、目標ZMPに関する動力学的平衡条件(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が0であるという条件)を満足するように、目標上体水平加速度と目標上体姿勢加速度との今回値が決定される。ただし、床反力水平成分Fxが[Fxmin,Fxmax]を越えないように、上体水平加速度と上体姿勢角加速度(より詳しくは、上体傾斜角加速度)とが決定される。また、床反力モーメント鉛直成分Mzが[Mzmin,Mzmax]を越えないように、目標逆位相腕振り角加速度の今回値が決定される。
尚、上体姿勢角のうち、ヨー角は基準上体姿勢角のうちのヨー角に一致するように決定される。また、目標腕姿勢に関しては、逆位相腕振り角以外の成分は、基準腕姿勢に一致するように決定される。また、この際、上記条件を満足しつつも、目標上体傾斜角と目標逆位相腕振り角とは、それぞれ基準上体傾斜角と基準逆位相腕振り角とになるべく追従するように決定される。以下にこの詳細を説明する。
この時点において、前記の如く足平位置姿勢および上体鉛直位置の瞬時値(今回値)が決定されており、また、腕姿勢に関して、逆位相腕振り角以外の成分は、基準腕姿勢のそれに一致するように決定されている。このため、残りの上体水平位置と上体姿勢角と逆位相腕振り角とを決定すれば、ロボット1の目標運動は一義的に決定できる。したがって、すべての床反力も一義的に決定される。なお、本第1参考例では、定常歩容の目標床反力鉛直成分及び目標ZMPは、それぞれ前記図13のS022で決定した床反力鉛直成分軌道パラメータ及び目標ZMP軌道パラメータによって規定される。
ところで、歩容生成において、前記上体並進モードをあまり用いずに主に上体傾斜モードを用いることにより、目標ZMPを満足させる(目標ZMPまわりの床反力モーメントの水平成分を0にする)と、上体姿勢角が大きく振れ過ぎてしまう恐れがある。したがって、これを防ぐためには、なるべく上体並進モードを用いるべきである。しかし、上体並進モードは、床反力水平成分の変化を伴うので、床反力水平成分許容範囲が狭い場合には、上体並進モードを強く働かせるとスリップする恐れがある。この場合には、上体傾斜モードに頼るしかない。特に、前記走行歩容のように床反力水平成分許容範囲が0となる期間では、床反力水平成分を発生させるような歩容を生成することはできないので、上体傾斜モードに頼らざるを得ない。
一方、逆位相腕振り運動は、目標ZMPまわりの床反力モーメントの水平成分および床反力水平成分のいずれも変化させることなく、床反力モーメント鉛直成分のみを変化させることができるので、床反力モーメント鉛直成分が前記床反力モーメント鉛直成分許容範囲を越えないようにするために用いることができる。以上のことを考慮し、本第1参考例では、図26に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度と逆位相腕振り加速度とが決定される。尚、理解の便宜上、上体水平加速度と上体姿勢角加速度(上体3の傾斜角の角加速度)の決定に関しては、サジタルプレーン上でX方向(前後方向)での上体水平加速度および上体姿勢角加速度を決定する場合を例にとって説明するが、実際にはY方向(左右方向)の上体水平加速度および上体姿勢角加速度もX方向と同様に決定される。
まずS500において、目標上体ヨー角に時刻kでの基準上体ヨー角の値を代入する。また、腕姿勢の逆位相腕振り角・角速度成分を除き、目標腕姿勢に時刻kでの基準腕姿勢の値を代入する。
次にS502において現在時刻(定常歩容作成用タイマーの値)kが、上体姿勢角・逆位相腕振り角復元期間(定常歩容の場合、上体姿勢角・逆位相腕振り角復元期間は、時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間である。)の間にあるか否かが判定される。S502の判定結果がNOであるならば、S504に進み、YESであるならばS530に進む。
S504では、ロボット1の前回瞬時歩容状態(時刻k−1の歩容状態)から、仮に、上体傾斜モードの角加速度を0にして、上体並進モードの運動をロボット1にさせた場合に今回(時刻k)の目標ZMPを満足するために必要な上体水平加速度αtmpが求められる。このαtmpは、例えば前記図12の動力学モデルに係わる前記式03yを用いて求められる。より具体的には、例えば、現在時刻kまでに求められた目標足平位置姿勢の時系列値を用いて、現在時刻kにおける支持脚質点2m及び遊脚質点2mの鉛直加速度が求められると共に、現在時刻k(今回)の目標足平位置姿勢を用いて支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。また、現在時刻k(今回)の床反力鉛直位置を用いて上体質点3mの鉛直位置が求められると共に、現在時刻kまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻kにおける上体質点3mの鉛直加速度が求められる。そして、これらの求めた値を前記式03yに代入すると共に、同式03yのMy、d2θby/dt2を0にしてなる式を、d2Xb/dt2について解くことにより、上体質点水平加速度が上体水平加速度αtmpとして求められる。尚、より厳密な動力学モデルを用いて、目標ZMP回りの床反力モーメントの水平成分を零にするような上体水平加速度αtmpを探索的に求めるようにしてもよい。また、本第1参考例では、上体3の傾斜角に関する基準上体姿勢が鉛直姿勢で、該基準上体姿勢による上体姿勢角加速度(上体3の傾斜角の角加速度)が0であるため、上体傾斜モードの角加速度を0にして上体水平加速度αtmpを求めるようにした。但し、基準上体姿勢のうちの傾斜角が変化するように該基準上体姿勢軌道パラメータを設定した場合で、それにより定まる現在時刻kにおける基準上体姿勢角加速度(上体3の傾斜角の基準角加速度)が0でない場合には、上体傾斜モードの角加速度をその0でない基準上体姿勢角加速度の値にして、上体水平加速度αtmpを動力学モデルを用いて求める(例えば式03yのd2θby/dt2を0でない基準上体姿勢角加速度に設定して上記と同様に上体水平加速度αtmpを求める)ようにすればよい。
次に、S506に進み、上体水平加速度がαtmpの場合の時刻kにおける床反力水平成分Fxtmpが動力学モデルを用いて求められる。本第1参考例においては、前記動力学モデルの式02xを用いてFxtmpが求められる。すなわち、次式17によってFxtmpが求められる。但し、d2Xsup/dt2およびd2Xswg/dt2はそれぞれ時刻kにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。

Fxtmp = mb*αtmp+msup*d2Xsup/dt2
+mswg*d2Xswg/dt2 …式17

このようにして求められるFxtmpの例を図27に示す。図27に、Fxtmpが床反力水平成分許容範囲[Fxmin,Fxmax]を越えている部分を斜線で示す。
次に、S508に進み、上体並進モードの上体水平加速度α、これによって発生する床反力水平成分Fx、上体傾斜モードの上体角加速度βが次のように決定される(S508〜S516)。
すなわち、
Fxtmp>Fxmaxならば、S510に進み、次式によりFxが決定される。

Fx=Fxmax …式18

Fxtmp<Fxminならば、S512に進み、次式によりFxが決定される。

Fx=Fxmin …式19

それ以外、すなわち、Fxtmpが、床反力水平成分許容範囲[Fxmin,Fxmax]内に存するならば、S514に進み、次式によりFxが決定される。

Fx=Fxtmp …式20

いずれの場合においても、次いでS516に進み、次式により上体水平加速度α、上体姿勢角加速度(上体傾斜角加速度)βが決定される。

α=αtmp+(Fx−Fxtmp)/ΔFp …式21
β=(αtmp−α)*ΔMp/ΔMr …式22

ただし、ΔFp、ΔMpおよびΔMrはそれぞれ前記式06、07、および式09により決定される。
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体角加速度βを求めた後、上体並進モードと上記求めた上体角加速度βの上体傾斜モードとを合成した運動が目標ZMPを満足するように、上体並進モードの上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン(感度マトリックス)を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
さらに床反力水平成分Fxが床反力水平成分許容範囲[Fxmin,Fxmax]を厳密に越えないようにするために、S510においては、Fx=Fxmaxかつ目標ZMPまわりの床反力モーメントの水平成分が0になるように、S512においては、Fx=Fxminかつ目標ZMPまわりの床反力モーメントの水平成分が0になるように、上体水平加速度αと上体角加速度βとの組を探索的に求めても良い。
上記のように求められるFxを図28に示す。Fxは、Fxtmpの値を床反力水平成分許容範囲[Fxmin,Fxmax]から越えないように制限(飽和)させたものになっている。より詳しくは、上体並進モードのみによる上体水平加速度αtmpに応じたFxtmpが許容範囲[Fxmin,Fxmax]内にある場合には、FxtmpがそのままFxとなる。また、上体並進モードのみによる上体水平加速度αtmpに応じたFxtmpが許容範囲[Fxmin,Fxmax]の上限を超え、もしくは下限を下回った場合には、それぞれFxは、それぞれ強制的にFxmax、Fxminに制限される。特に走行歩容の空中期では、常に、Fxmax=Fxmin=0であるので、Fx=0となる。
また、上記のように求められる上体姿勢角加速度βを図29に示す。上体並進モードによって発生するFxが許容範囲[Fxmin,Fxmax]を越えないように、上体並進モードの加速度を制限したことによって不足した床反力モーメント(より詳しくは目標ZMP回りの床反力モーメントの水平成分を0にする上で必要な慣性力モーメントから、制限した上体水平運動と両脚体2,2の運動とによるモーメント成分を差し引いたモーメント)を、上体傾斜モードで補ったことになる。なお、走行歩容の空中期では、上体並進モードによる上体水平加速度αは常に0に制限されることとなるので、上体傾斜モードによる上体姿勢角加速度βのみによって、上記不足分の床反力モーメントが補われることとなる。
次に、S518に進み、仮に上体並進モードの上体水平加速度がα、上体傾斜モードの上体角加速度(上体傾斜角加速度)がβ、上体ヨー回転モードの上体加速度(上体ヨー角加速度)が基準ヨー角加速度d2θbzref/dt2、逆位相腕振り角加速度βaが基準逆位相腕振り角加速度d2θazref/dt2である運動をさせた場合の床反力モーメント鉛直成分Mztmpを求める。以降、d2θbzref/dt2をβbref、d2θazref/dt2をβarefとする。
具体的には、式03zに、式1001から式1004を代入することによって得られるMzがMztmpである。

d2Xb/dt2=αx …式1001
d2Yb/dt2=αy …式1002
d2θbz/dt2=βbref …式1003
d2θaz/dt2=βaref …式1004

ただし、αxは、上体水平加速度αのX成分、αyは、上体水平加速度αのY成分を表す。また、Xb、Ybには時刻k−1における上体水平位置を代入し、Xzmp、Yzmp、Xsup、d2Ysup/dt2、Xswg 、d2Yswg/dt2には、時刻kの値を代入するものとする。
このようにして求められるMztmpの例を図32に示す。図32に、Mztmpが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を越えている部分を斜線で示す。
次に、S520に進み、逆位相腕振り角加速度βaが次のように決定される(S520〜S528)。
すなわち、
Mztmp>Mzmaxならば、S522に進み、次式によりMzが決定される。

Mz=Mzmax …式1018

Mztmp<Mzminならば、S524に進み、次式によりMzが決定される。

Mz=Mzmin …式1019

それ以外、すなわち、Mztmpが、床反力水平成分許容範囲[Mzmin,Mzmax]内に存するならば、S526に進み、次式によりMzが決定される。

Mz=Mztmp …式1020

いずれの場合においても、次いでS528に進み、次式により逆位相腕振り角加速度βaが決定される。

βa=βaref+(Mztmp−Mz)/ΔMaz …式1021

ただし、ΔMazは式09aにより決定される。
以下にS518からS528までの処理を解説する。
上記のように求められるMzは、逆位相腕振りを含めたロボット全体の運動による床反力モーメント鉛直成分を示している。
上記処理では、このMzが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を越えないように逆位相腕振り角加速度βaが決定されている。具体的には、Mzは、図33に示すように、Mztmpの値を床反力水平成分許容範囲[Mzmin,Mzmax]から越えないように制限(飽和)させたものに決定されている。より詳しくは、Mztmpが許容範囲[Mzmin,Mzmax]内にある場合には、MztmpがそのままMzとなり、Mztmpが許容範囲[Mzmin,Mzmax]の上限を越え、もしくは下限を下回った場合には、それぞれMzは、それぞれ強制的にMzmax、Mzminに制限される。特に走行歩容の空中期では、常に、Mzmax=Mzmin=0であるので、Mz=0となる。
Mzが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を越えないようにするために、逆位相腕振りによって発生すべきモーメント鉛直成分Mazは、(Mz−Mztmp)である。Maz(= Mz−Mztmp)を図34に示す。
逆位相腕振り角加速度βaは、Mazを逆位相腕振りの等価慣性モーメントΔMazで割ったものを基準逆位相腕振り角加速度βaref(基準逆位相腕振り角を2階微分した値)に加えることによって得られる。すなわち、βaは前記式1021で求められる。逆位相腕振り角加速度βaを図35に示す。
以上のごとくS504からS528までの処理では、逆位相腕振りを含めたロボット全体の運動によって発生する床反力モーメント鉛直成分Mzが許容範囲[Mzmin,Mzmax]を越えないように(逆位相腕振り角加速度を基準逆位相腕振り角加速度βarefに一致させた場合に発生する床反力モーメント鉛直成分Mztmpが許容範囲を越えた分を打ち消す(キャンセルする)ように)、逆位相腕振り角加速度βaが決定される。
補足すると、床反力モーメント鉛直成分Mzが床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]を厳密に越えないようにするために、S504からS528までの処理の代わりに、逆位相腕振り角加速度βaを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定した方が良い。なお、探索的な決定法としては、擬似ヤコビアン(感度マトリックス)を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いれば良い。
以上が、時刻kが上体姿勢角・逆位相腕振り角復元期間の間にない場合の処理である。
S502の判定結果がYESである場合には以下の処理が行われる。まず、S530に進み、ロボット1の前回瞬時歩容状態(時刻k−1の歩容状態)から、上体傾斜モードの角加速度を0にして、上体並進モードの運動をロボット1にさせた場合に今回(時刻k)の目標ZMPを満足するために必要な上体水平加速度αが求め、これを最終的な上体水平加速度と決定する。
次に、S532に進み、上記場合に床反力水平成分Fxを求める。
次に、S534に進み、上体姿勢角加速度(上体傾斜角加速度)βを0に決定する。なお、上体ヨー角加速度は、基準上体ヨー角加速度βbref(基準上体ヨー角を2階微分した値)に決定される。
次いで最後に、S536に進み、逆位相腕振り角加速度βaに、基準逆位相腕振り角加速度βaref(基準逆位相腕振り角を2階微分した値)を代入する。
以上が、S502の判定結果がYESである場合の処理である。すなわち、この場合には、上体姿勢角加速度(上体傾斜角加速度および上体ヨー角加速度)を基準上体姿勢角加速度に、逆位相腕振り角加速度を基準逆位相腕振り角加速度に一致させる。このようにしても運動によって発生する床反力が、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれも越えないと予想されているので、このように決定しても問題ない。
S528またはS536の処理の後、図25のS414に進み、S412で求めた上体水平加速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより上体水平速度が求められ、さらにその上体水平速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより、上体水平位置(今回値)が求められる。また、S412で求めた上体姿勢角加速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより上体姿勢角速度が求められ、さらにその上体姿勢角速度を逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより、上体姿勢角(今回値)が求められる。
次にS416に進み、S412で求めた逆位相腕振り加速度βaを逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより逆位相腕振り速度が求められ、さらにこれを逐次積分する(時刻Tsから現在時刻kまで累積加算する)ことにより、逆位相腕振り角θaz(今回値)が求められる。
以上のごとく図24のS306の定常歩容瞬時値決定サブルーチンが実行された後、S308に進み、歩容生成用時刻kの値が歩容生成インターバルΔkだけ増加される。次いでS304に戻り、S304に示す条件が成立している限り、S306とS308の処理が繰り返され、S304に示す条件が成立しなくなったら、すなわち終端(時刻Te=Ts+Tcyc)まで仮歩容の生成が完了したら、S310に進む。
定常歩容では、それを繰り返したときに境界でロボット1の運動状態が不連続にならないように、初期上体姿勢角及びその角速度を決定する必要がある。
そのために、S310では、上体姿勢角速度を、時刻Teまでに、初期値(時刻Tsでの値)に戻すための上体姿勢角加速度を発生させる床反力モーメントのZMP換算値(以降、上体姿勢復元モーメントZMP換算値と呼び、ZMPrecと略す)のパターンを設定する。
これについて以下に詳細に説明する。
上体姿勢角・逆位相腕振り角復元期間(時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間)に、上体傾斜モードを用いて上体姿勢角加速度を発生させることにより、上体姿勢角速度を初期値(時刻Tsでの値)に戻すことを考える。このための上体姿勢角加速度パターンを、β(k)とする。なお、上記期間以外では、β(k)=0とする。
上体傾斜モードでは、上体姿勢角加速度β(k)を発生させようとすると、床反力モーメントβ(k)*ΔMrが発生する。この結果、その瞬間における床反力鉛直成分がFz(k)であるとすると、(目標ZMPでなく)運動から算出されるZMP(k)は、次式で求められるΔZMPだけずれる。

ΔZMP(k)=−β(k)*ΔMr/Fz(k) …式23

したがって、ΔMrのパターンとFz(k)のパターンが決まっていれば(既知であれば)、ΔZMP(k)のパターンを適当に設定することによって、式23を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を初期値(時刻Tsでの値)、すなわち基準上体姿勢軌道の初期(時刻Ts)状態における上体姿勢角速度に戻すことができる。
前記上体姿勢復元モーメントZMP換算値(ZMPrec)は、そのように適切に設定されたΔZMP(k)を意味する。前記式23を用いて上体姿勢復元モーメントZMP換算値を設定する際に、ΔMrは厳密には変動するが、近似的に一定値としても良い。定常歩容は仮に生成されるだけであり、実際のロボットをこの歩容に追従させるわけではないので、定常歩容の動力学的精度はあまり高くなくても良いからである。
図30にZMPrecの一例を示す。図30では、ZMPrecのパターンとして、時刻Tmから時刻Ts2の期間および時刻Tm2からTeまでの期間に台形パターンが形成されている。その台形部の折れ点の時刻は、時刻Tmと時刻Ts2との間の期間および時刻Tm2からTeまでの期間における目標ZMPパターンの折れ点の時刻(図22参照)に一致させてある。これは、後述するが、今回歩容の目標ZMPパターンの修正が簡単になるからである。
式23のΔZMP(k)にZMPrec(k)を代入することにより次式が得られる。

β(k)=−ZMPrec(k)*Fz(k)/ΔMr …式24

したがって、この式24で求められるβ(k)は、図31の実線で示すようになる。なお、図31の点線で示すものは、時刻Tsから時刻Tmまでの期間および時刻Tm2からTeまでの期間の上体姿勢角加速度(図29の実線示のもの)である。(以降、時刻kでの値であることが明らかな場合には、(k)を省略する場合がある。)
初期(時刻Ts)上体姿勢角は、初期(時刻Ts)基準上体姿勢角に一致させる。
また、初期上体姿勢角速度は、式37a、37bを満たすように決定する。

終端上体姿勢角−初期上体姿勢角
=床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の2階積分
+ZMPrecによって発生する上体姿勢角加速度の2階積分
+初期上体姿勢角速度*定常歩容の周期
……式37a

終端上体姿勢角速度−初期上体姿勢角速度
=床反力水平成分許容範囲を満たすように決定された上体姿勢角加速度の1階積分
+ZMPrecによって発生する上体姿勢角加速度の1階積分
……式37b

なお、式37a、37bのそれぞれの右辺第1項の積分期間は、時刻TsからTmまでの期間と、Ts2からTm2までの期間とを合わせた期間であり、右辺第2項の積分期間は、時刻TmからTs2までの期間とTm2からTeまでの期間とを合わせた期間である。
より具体的に説明すると定常歩容では、第1旋回歩容の支持脚座標系(次回歩容支持座標系)から見た初期状態姿勢角及び角速度が、それぞれ、次の第1旋回歩容の支持脚座標系(次次次回歩容支持脚座標系)から見た終端上体姿勢角および角速度に一致していなければならない。そこで、本第1参考例では、初期(時刻Ts)上体姿勢角は、初期(時刻Ts)基準上体姿勢角の値に決定し、これと、これを定常歩容におけるロボット1のトータルの旋回角(鉛直軸回りの旋回角)に応じたマトリクス(回転座標変換のマトリクス)により次回歩容支持脚座標系から見た値に座標変換したものとをそれぞれ式37aの左辺の初期上体姿勢角、終端上体姿勢角に代入する。また、式37a,37bのそれぞれの右辺第1項の積分に係る上体姿勢角加速度は、前記図26のS518で求められたものが用いられる。
そして、式37a,37bの初期上体姿勢角速度と、式37a,37bの右辺第2項の積分に係るZMPrec(図30の台形状のパターン)の台形高さを未知数として(但し、ZMPrecの台形パターンの折れ点の時刻は前記のごとくあらかじめ定める。また、第1旋回歩容のZMPrecの台形高さacyc1と第2旋回歩容のZMPrecの台形高さacyc2を同一値とする。)、それらの未知数を含む式37a,37bの連立方程式を解くことにより求められる初期上体姿勢角速度を新たな初期上体姿勢角速度として決定する。この場合、式37bの終端上体姿勢角速度は、未知数である初期上体姿勢角速度を、定常歩容の上記トータルの旋回角に応じたマトリクスにより次回歩容支持脚座標系から見た値に座標変換したものである。
次いでS312に進み、上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを基に、これによる上体水平位置・速度への影響量を求め、終端上体水平位置・速度に加算する。
この処理について解説する。なお、その詳細は、本願出願人のPCT/JP02/13592にて説明されているので、ここでは簡略な説明に留める。
時刻TsからTmの期間および時刻Ts2からTeの期間において、上記のごとく上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生するように上体姿勢角加速度βを変化させると、上体姿勢角加速度βは、次式のようになる。

β=−ZMPrec*Fz/ΔMr …式1025

上体傾斜復元モーメントを発生させない場合に目標ZMPを満足する上体水平加速度は、S532において求めたごとくαtmpであるが、上記のごとく上体姿勢角加速度βを変化させると、目標ZMPを満足するために必要な上体水平加速度αは、次式のようになる。

α=αtmp−(ΔMr/ΔMp)*β …式1026

式1025および1026より、

α=αtmp+ZMPrec*Fz/ΔMp …式1027

すなわち、上体傾斜復元モーメントZMP換算値(ZMPrec)によって、加速度が式1027の右辺第2項分だけ増加する。
式が線形であることを利用すると、上記のごとく上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平速度は、上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生させなかった場合の終端上体水平速度、すなわちS414で求めた上体水平速度の終端値に、時刻TsからTeまでの(ZMPrec*Fz/ΔMp)の1階積分を加算したものとして求められる。また、上記のごとく上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生するように上体姿勢角加速度βを変化させた場合の終端上体水平位置は、上体傾斜復元モーメントZMP換算値(ZMPrec)パターンを発生させなかった場合の終端上体水平位置、すなわちS414で求めた上体水平位置の終端値に、時刻TsからTeまでの(ZMPrec*Fz/ΔMp)の2階積分を加算したものとして求められる。
S312の処理を完了した後、S314に進み、逆位相腕振り角速度が初期と終端で一致するように逆位相腕振り復元角加速度(βarec)パターンを決定する。
具体的には、逆位相腕振り復元角加速度パターンを図36のように台形状に設定し、時刻TmからTs2までの期間の台形高さazcyc2と時刻Tm2からTeまでの期間の台形高さazcyc1を同一とし、時刻TsからTeまでのβarecの積分値と床反力モーメント鉛直成分Mzが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βaの積分値との和が0となるように台形高さazcyc1、azcyc2を決定する。なお、両区間の台形高さは、同一でなくても構わない。
補足すると、このように決定した逆位相腕振り復元角加速度パターンによって発生する床反力モーメント鉛直成分(Mazrec)は、図37のようになる。したがって、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分Mzは、最終的には、図38に示すごとく、図32のMztmpと図34のMazと図37のMazrecとの和、すなわち、図33のMzと図37のMazrecとの和になる。時刻TmからTs2までの期間および時刻Tm2からTeまでの期間においては、台形状の復元モーメントが加算されるが、これらの期間は、許容範囲が十分に広い期間に設定されているので、逆位相腕振りを含むロボットの運動によって発生する床反力モーメント鉛直成分は、許容範囲を越えることはない。
次にS316に進み、定常歩容の初期(時刻Ts)逆位相腕振り角および角速度を決定する。
具体的には、初期逆位相腕振り角速度は、以下の式によって決定する。

初期逆位相腕振り角速度
=基準初期逆位相腕振り角速度
−(βarecが0の場合の逆位相腕振り角
+βarecパターンの2階積分)/Tcyc
…式1030
ただし、上式において、βarecが0の場合の逆位相腕振り角とは、S416において求めた逆位相腕振り角(時刻Teにおける逆位相腕振り角)のことである。また、βarecの2階積分とは、図36のように設定した逆位相腕振り復元角加速度の時刻TsからTeまでの2階積分値である。また、基準初期逆位相腕振り角速度は前記基準逆位相腕振り角速度(基準逆位相腕振り角θarefの1階微分値)の時刻Tsでの値である。
初期逆位相腕振り角は、基準初期逆位相腕振り角に一致させれば良い。または、最終的に決定された逆位相腕振り角加速度(すなわち、床反力モーメント鉛直成分Mzが許容範囲を越えないようにするための前記求めた逆位相腕振り加速度βaと復元角加速度βarecの和)と上記求めた初期逆位相腕振り角速度を基に、仮に初期逆位相腕振り角を基準初期逆位相腕振り角に一致させた場合に算出される腕振り角と基準逆位相腕振り角との差の平均値または前記差の最大値と最小値の平均値を求め、求めた平均値の2分の1を基準初期逆位相腕振り角から減じた値を最終的な初期逆位相腕振り角として決定しても良い。このようにすることで、算出される腕振り角と基準逆位相腕振り角との差の絶対値が大きくなり過ぎることを防止することができる。
時刻Ts、Tm、Ts2およびTm2を前記のごとく設定した理由のひとつは、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいて、上体姿勢角速度を基準上体姿勢軌道の初期角速度に戻すように上体姿勢角加速度βを発生させても、床反力水平成分Fxが許容範囲[Fxmin,Fxmax]を越えないようにするためである。換言すれば、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ZMPを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを発生させても、床反力水平成分Fxは、許容範囲を越えることがない。
また時刻Ts、Tm、Ts2およびTm2を前記のごとく設定したもうひとつの理由は、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいて、逆位相腕振り角速度を基準逆位相腕振り角軌道の初期角速度に戻すように逆位相腕振り角加速度βaを発生させても、床反力モーメント鉛直成分Mzが許容範囲[Mzmin,Mzmax]を越えないようにするためである。換言すれば、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力モーメント鉛直成分許容範囲が十分に大きいため、逆位相腕振り角速度を戻すように逆位相腕振り角加速度βaを発生させても、床反力モーメント鉛直成分Mzは、許容範囲を越えることがない。
以上のごとく図24のS316の処理が完了した後、図23のS210に進み、生成した歩容(仮定常歩容)の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系(図17のX''',Y''' ,Z'''座標系)から見た値に変換し、その値を(Xe,Vxe)とする(Xe:終端上体水平位置、Vxe:終端上体水平速度)。
次いでS212に進み、図示の如く、初期上体水平位置速度(Xs,Vxs)と終端上体水平位置速度(Xe,Vxe)との差を算出する。この差(Xs−Xe,Vxs−Vxe)を上体水平位置速度境界条件誤差(errx,errvx)と呼ぶ。定常歩容では、前記境界条件を満たす必要があるので、(Xs,Vxs)と(Xe,Vxe)とが一致していなければならない。従って、上体水平位置速度境界条件誤差(errx,errvx)が零またはほぼ零でなければならない。本第1参考例では、以下のように、上体水平位置速度境界条件誤差(errx,errvx)がほぼ零となる(Xs,Vxs)が探索的に求められる。
次いでS214に進み、算出した上体水平位置速度境界条件誤差(errx,errvx)が、あらかじめ適宜設定された許容範囲内にあるか否かが判断される。尚、このように上体水平位置速度境界条件誤差の許容範囲を設定する代わりに、初期発散成分(Xs+Vxs/ω0)と終端発散成分(Xe+Vxe/ω0)との差、および初期収束成分(Xs−Vxs/ω0’)と終端収束成分(Xe−Vxe/ω0’)との差がそれぞれある許容範囲内にあるか否か判断するようにしても良い。ただしω0,ω0’は、前述したように、ある所定の値である。
S214の判断結果がNOであるときにはS216に進む。このS216では、(Xs,Vxs)の付近に複数(本第1参考例では2つ)の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)が決定される。ここで、ΔXs,ΔVxsは、それぞれXs,Vxsに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記S208と同様の処理によって定常歩容が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系(図17のX''',Y''' ,Z'''座標系)から見た値に変換した値(Xe+ΔXe1,Vxe+ΔVxe1),(Xe+ΔXe2,Vxe+ΔVxe2)が求められる。ここで、(Xe+ΔXe1,Vxe+ΔVxe1)は(Xs+ΔXs,Vxs)に対応する終端上体位置速度を意味し、(Xe+ΔXe2,Vxe+ΔVxe2)は(Xs,Vxs+ΔVxs)に対応する終端上体位置速度を意味している。なお、この場合の定常歩容(仮歩容)の生成処理では、上体水平位置速度以外の変数の初期状態(時刻Tsでの状態)は、例えば上体水平位置速度の初期値候補を(Xs,Vxs)とした場合と同一に設定すればよい。S216ではさらに、前記S210と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
次いでS218に進み、(Xs,Vxs)およびその付近の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対する上体水平位置速度境界条件誤差を基に、(Xs,Vxs)の次の初期値候補が探索法(擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など)により決定される。すなわち、(Xs,Vxs)およびその付近の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対する上体水平位置速度境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補(Xs,Vxs)から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、上体水平位置速度境界条件誤差をより小さくするような初期値候補(Xs,Vxs)が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補(Xs,Vxs)が決定された後、S206に戻る。
S214の判断結果がNOとなる限りは上記した処理(S206〜S218の処理)が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補(Xs,Vxs)に対応する定常歩容の生成処理(S208)におけるS300(図24参照)では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補(Xs,Vxs)に対応するS208の処理におけるS310(図24参照)で決定したものに設定される。そして、S214の判断結果がYESになると、繰り返しループ(S204)を抜けてS220に進む。なお、S204の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
S220では、本来の初期時刻0(今回歩容の終端時刻)における初期上体水平位置速度(X0,V0)と初期時刻0における初期上体鉛直位置速度(Z0、Vz0)と初期時刻0における初期上体姿勢角および角速度が求められる。
具体的には、(X0,V0)と(Z0,Vz0)は、S310において決定された上体傾斜復元モーメントZMP換算値パターン、時刻Tsにおける定常歩容の初期上体姿勢角および角速度と、S204のループを抜けた後の時刻Tsにおける上体水平位置速度(Xs,Vxs)を基に、歩容の条件を満足するように歩容を生成した場合における、第2旋回歩容から第1旋回歩容に切り換わった瞬間の時刻、すなわち、時刻k=Tcyc(時刻Te−Ts)であるときに決定される上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Tcycから始まる一歩(すなわち2度目の第1旋回歩容)の支持脚に対応する支持脚座標系(図17のX''',Y''',Z'''座標系)から見た値に変換した値に決定される。同様に、初期状態姿勢角および角速度は、時刻k=Tcyc(時刻Te−Ts)であるときに決定される上体姿勢角及び角加速度を、時刻Tcycから始まる一歩(すなわち2度目の第1旋回歩容)の支持脚に対応する支持脚座標系(図17のX''',Y''',Z'''座標系)から見た値に変換した値に決定される。
次いでS222に進み、定常歩容初期発散成分q[0]が次式から求められる。

q[0]=X0+V0/ω0 …式40
ただしω0は、発散についての解説で述べたように、ある所定の値である。
次にS224に進み、定常歩容初期発散成分q[0]が今回歩容支持脚座標系から見た値に変換され、これがq”[0]として求められる。また、初期上体鉛直位置速度(Z0,Vz0)が今回歩容支持脚座標系から見た値に変換され、これが(Z0”,Vz0”)として求められる。
補足すると、(Z0”,Vz0”)は、第2旋回歩容の支持脚座標系(図17のX”,Y”,Z”座標系)から見た第2旋回歩容終端上体鉛直位置速度に一致している。また、q”[0]も第2旋回歩容の支持脚座標系(図17のX”,Y”,Z”座標系)から見た第2旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、(Z0”,Vz0”)およびq”[0]を算出するようにしても良い。
さらに、S226に進み、本来の初期時刻0(今回歩容の終端時刻)における初期逆位相腕振り角および角速度(θaz0,ωaz0)を求め、さらに、これを今回歩容の支持脚座標系から見た値である(θaz0",ωaz0")を求める。具体的には、(θaz0,ωaz0)は、S314およびS316において決定された逆位相腕振り復元角加速度パターン、定常歩容の初期(時刻Ts)逆位相腕振り角および角速度とを基に、歩容の条件を満足するように歩容を生成した場合における(より具体的には、上体姿勢角・逆位相腕振り角復元期間以外では、床反力モーメント鉛直成分が許容範囲を越えないように、逆位相腕振り角軌道を決定し、上体姿勢角・逆位相腕振り角復元期間では、前記基準逆位相腕振り角加速度βarefと逆位相腕振り復元角加速度βarecの和が発生するように逆位相腕振り角軌道を決定した場合における)第2旋回歩容から第1旋回歩容に切り換わった瞬間の時刻、すなわち、時刻k=Tcyc(時刻Te−Ts)であるときに決定される逆位相腕振り角および角速度を、時刻Tcycから始まる一歩(すなわち2度目の第1旋回歩容)の支持脚に対応する支持脚座標系(図17のX''',Y''',Z'''座標系)から見た値に変換した値に決定される。
以上により、図13のS024の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図13のS026に進み、今回歩容の歩容パラメータを決定(一部は仮決定)する。S026では、より具体的には、図39に示すフローチャートに従って、以下の処理が行われる。
まず、S600において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。
具体的には、今回歩容初期遊脚足平位置姿勢(今回歩容遊脚足平位置姿勢の初期値)は、今回歩容支持脚座標系から見た現在遊脚位置姿勢(前回歩容終端遊脚位置姿勢)に設定される。今回歩容初期支持脚足平位置姿勢(今回歩容支持脚足平位置姿勢の初期値)は、今回歩容支持脚座標系から見た現在支持脚足平位置姿勢(前回歩容終端支持脚足平位置姿勢)に設定される。また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た次回歩容支持脚座標系(今回歩容に係わる1歩目の遊脚着床位置姿勢の要求値)に対応して決定される。すなわち、今回歩容終端遊脚足平位置姿勢から遊脚足平22を床に接触させたまま、すべらないように該足平22をその底面のほぼ全面が接地するまで回転させたときの、該足平22の代表点が今回歩容支持脚座標系から見た次回歩容支持脚座標系の原点に合致するように今回歩容終端遊脚足平位置姿勢が決定される。
今回歩容終端では、支持脚足平22は離床して空中にある。支持脚足平22が離床してから後の軌道を決定するために、支持脚足平着地予定位置姿勢を設定する。支持脚足平着地予定位置姿勢は、今回歩容支持脚座標から見た次次回歩容支持脚座標(今回歩容に係わる2歩目の遊脚足平位置姿勢の要求値)に対応して設定される。より具体的には、支持脚足平着地予定位置姿勢は、その位置姿勢から、足平22を床に接触させたまま、すべらないように該足平22をその底面のほぼ全面が床に接地するまで回転させたときの該足平22の代表点が今回歩容支持脚座標から見た次次回歩容支持脚座標の原点に合致するように設定される。
今回歩容終端支持脚足平位置姿勢は、現在支持脚位置姿勢(今回歩容初期支持脚足平位置姿勢)から、次回歩容支持脚座標系に対応する足平着地予定位置姿勢(前記要求パラメータにおける2歩目の遊脚側足平着地位置姿勢の要求値)に至る足平位置姿勢軌道を、今回歩容終端まで前記有限時間整定フィルタにより生成することにより求められる。
次いで、S602に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様に決定される。ただし、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる(今回歩容終端での基準上体姿勢角及び角速度がそれぞれ定常歩容初期の基準上体姿勢角及び角速度に一致する)ように上記パラメータが設定される。なお、本第1参考例では、傾斜角に関する基準上体姿勢は、今回歩容及び定常歩容のいずれでも定常的な鉛直姿勢である。
次いで、S604に進み、今回歩容の基準腕姿勢軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様に決定される。ただし、今回歩容の初期基準腕姿勢およびその変化率が基準腕姿勢および変化率の現在瞬間値に一致し、かつ、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように上記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定(図15のS104)の場合と同様、たとえば、両腕体5,5の全体の重心位置(上体3に対する相対位置)、左右の手先(両腕体5,5の先端)の左右方向の間隔および逆位相腕振り角に関するパラメータが決定される。尚、本第1参考例では、両腕体5,5の全体の重心位置は、上体3に対して一定に維持されるように設定される。
次いで、S606に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図6のように実質的に連続な(値がステップ状に飛ばない)軌道になるように設定される。
ただし、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。
具体的には、まず、前記図13のS024の処理(定常歩容初期状態の決定処理)で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値(Z0”,Vz0”)、すなわち、図23のS224で求めた(Z0”,Vz0”)等を基に、例えば前記式04(あるいはロボット1のキネマティクスモデル)を用いて、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。具体的には、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、S224で求めた定常歩容の上体鉛直位置Z0”に対応する図12のモデルの上体質点鉛直位置と、定常歩容初期の各足平位置を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直位置とを式04に代入することで求められる。また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、S224で求めた定常歩容の上体鉛直速度Vz0”に対応する図12のモデルの上体質点鉛直速度と、定常歩容初期の各足平鉛直速度を今回歩容支持脚座標系から見た値に変換したものに対応する支持脚側及び遊脚側の脚体質点鉛直速度とを式04の両辺を微分してなる式に代入することにより求められる。なお、この初期全体重心鉛直位置速度の算出は、より厳密なモデルを用いて行なうようにしてもよい。
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を、次式41a、41bの終端全体重心鉛直位置速度に代入すると共に、前回の目標歩容瞬時値(より厳密には、前回目標歩容の終端状態を今回歩容支持脚座標系に変換したもの)の全体重心鉛直位置および速度を、式41a、41bの初期全体重心鉛直位置および速度に代入し、式41a、41bの関係を満足するように、今回歩容の床反力鉛直成分パターン(より具体的にはパラメータ値)が決定される。ただし、式41a、41bにおける積分値は今回歩容の初期から終端までの期間の積分値とする。

終端全体重心鉛直位置−初期全体重心鉛直位置
=(床反力鉛直成分/ロボットの全体質量)の2階積分
+重力加速度の2階積分
+初期全体重心鉛直速度*1歩の時間
…式41a
終端全体重心鉛直速度−初期全体重心鉛直速度
=(床反力鉛直成分/ロボットの全体質量)の1階積分
+重力加速度の1階積分
…式41b
ただし、重力加速度は負の値とする。
より具体的には、まず、図6のような床反力鉛直成分パターンを規定する床反力鉛直成分パラメータ(折れ点の時刻等)のうちの、少なくとも2つのパラメータを独立な未知変数として、その未知変数の値を、式41a、41bからなる連立方程式を解いて決定する。
未知変数とする床反力鉛直成分パラメータには、例えば、図6の台形の高さ(床反力鉛直成分のピーク値)と幅(片脚支持期時間)とを選択すれば良い。この場合、図6の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。補足すると、未知変数を1つとすると、一般的には式41a、41bの連立方程式を満足する解が存在しない。
次いで、S608に進み、床反力水平成分許容範囲[Fxmin,Fxmax](具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ)が、定常歩容の第1旋回歩容や第2旋回歩容と同様に設定される。たとえば図40に示すようなパターンで床反力水平成分許容範囲が設定される。本第1参考例では、先にS606で決定した床反力鉛直成分パターンに応じて前記式12に基づいて床反力水平成分許容範囲が設定される。
次いで、S610に進み、床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax](具体的には該床反力モーメント鉛直成分許容範囲のパターンを規定するパラメータ)が、定常歩容の第1旋回歩容や第2旋回歩容と同様に設定される。たとえば図41に示すようなパターンで床反力モーメント鉛直成分許容範囲が設定される。本第1参考例では、先にS606で決定した床反力鉛直成分パターンに応じて前記式1012に基づいて床反力モーメント鉛直成分許容範囲が設定される
次いで、S612に進み、今回歩容のZMP軌道(具体的にはZMP軌道を規定するパラメータで、軌道の折れ点の時刻や位置)が、定常歩容の第1旋回歩容や第2旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図7に示すごとく設定される。ただし、今回歩容のZMP軌道が前記定常歩容のZMP軌道に連続してつながるように上記パラメータを設定される。つまり、今回歩容終端におけるZMPの位置が定常歩容初期のZMP位置に一致するように、ZMP軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるZMP軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のZMP軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ZMP軌道が、空中期開始時から、定常歩容初期のZMP位置まで、直線的に連続して変化するようにZMP軌道パラメータを設定すればよい。
なお、S612で決定される今回歩容のZMP軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとく設定した今回歩容のZMP軌道を、以降、今回歩容の仮目標ZMP軌道と呼ぶこととする。
最後に、S614に進み、上体姿勢角・逆位相腕振り角復元期間[Ta,Tb]が設定される。上体姿勢角・逆位相腕振り角復元開始時刻Taは、定常歩容の第2旋回歩容におけるTmに相当し、上体姿勢角・逆位相腕振り角復元修了時刻Tbは、定常歩容の第2旋回歩容におけるTs2に相当するものである。これらの時刻Ta,Tbの設定の仕方は、それぞれTmおよびTs2の設定の仕方と同様である。
図13の説明に戻って、上記のごとくS026に示す処理(今回歩容の歩容パラメータ決定処理)を行って後、次いでS028に進み、今回歩容の歩容パラメータ(ZMP軌道パラメータ)が修正され、また、逆位相腕振り角に関するパラメータが決定される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべくZMP軌道パラメータが修正され、かつ、逆位相腕振り角が定常歩容の逆位相腕振り角軌道に収束するように今回歩容の逆位相腕振り角に関するパラメータが決定される。
図42はその処理を示すサブルーチン・フロー・チャートである。
まずS700を経てS702に進み、仮目標ZMPパターンとその他の今回歩容パラメータを基に、今回歩容終端時刻までの仮今回歩容が仮生成される。
S702では、図43に示すフローチャートに従って、以下の処理が行われる。
以下説明すると、S800において、諸々の初期化が行われる。具体的には、仮歩容生成用時刻kに0が代入される。また、前回目標歩容の終端状態(より具体的には、上体水平位置速度、上体鉛直位置速度、上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢などの歩容状態の終端値)を今回歩容支持脚座標系に変換したものを、今回歩容初期状態とする。
補足すると、目標腕姿勢は、目標逆位相腕振り角・角速度を含む。
次いで、S802を経てS804において、仮歩容生成用時刻kが今回歩容終端時刻Tcurr以前であるか否か(k≦Tcurrであるか否か)が判断され、その判断結果がYESある場合には、S806の今回歩容瞬時値決定サブルーチンに進み、今回歩容の時刻kの瞬時値が決定される。S806の歩容瞬時値決定サブルーチンでは、前述のS306と同様、図25に示すごとく仮歩容を生成する。ただし、歩容パラメータとして、定常歩容パラメータの代わりに今回歩容パラメータが用いられる。
次いでS808に進み、仮歩容生成用時刻kがΔkだけ増加され、S804に戻る。
S804の判断結果がNOである場合には、図43に示すフローチャートの処理が完了する。
以上の処理により、仮の今回歩容が初期から終端まで生成される。
次いでS704に進み、上記のごとくS702で求めた今回歩容終端での上体水平位置速度(Xe,Vxe)から、終端発散成分q0[k](k=Tcurr)が図示の式(前記式10)を用いて求められる。
次いでS706に進み、今回歩容終端発散成分q0[k]と定常歩容初期発散成分q”(図23のS224で求めたもの)との差である終端発散成分誤差errqが図示の式を用いて求められる。さらに、S708に進んで、その求めた終端発散成分誤差errqが許容範囲内(0近傍の範囲)にあるか否か判断する。
S708の判断結果がNOであるときはS710に進み、a=Δa(Δaは所定の微小量)とし、図44の関係に従って現在の仮目標ZMPパターンに台形状の修正を加えた目標ZMPを基に、前記S702と同様に、終端までの仮今回歩容を計算する。ここで、図44を参照して、aは、今回歩容終端発散成分を定常歩容初期発散成分にできるだけ一致させる(今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に近づける)ために、仮目標ZMPを修正するための台形パターンの高さである。この場合、本第1参考例では、仮目標ZMPの修正は、支持脚足平22の底面のほぼ全面が接地する期間(足底全面接地期間)、すなわち、床反力水平成分許容範囲が十分に広いものとなる期間において行なうようにしており、上記台形パターンの折れ点の時刻は、足底全面接地期間における仮目標ZMPの折れ点の時刻に合わせて設定されている。なお、S710でa=Δaとするのは、現在の仮目標ZMP軌道を上記台形パターンによって微小量、修正したときの前記終端発散成分誤差errqの変化を観測するためである。
上記のようにS710にて、a=Δaとして仮目標ZMP軌道を修正したときの仮今回歩容を終端まで生成した後、さらにS712に進み、S710で求めた仮今回歩容終端での上体水平位置速度(Xe1,Vxe1)を基に、この仮今回歩容における終端発散成分q1[k]が図示の式(前記式10)を用いて求められる。
尚、S710においてΔaは、本第1参考例では、適宜に設定される微小量の定数としたが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔaを減少させるように該Δaを設定するようにしても良い。ただし、定数にしておいても、数回の繰り返し演算で終端発散成分誤差errqを許容範囲内に収めることができる。
次いでS714に進み、パラメータ感度r(Δaに対する終端発散成分誤差の変化の割合)が図示の式から求められる。さらに、S716に進み、a=−errq/r、すなわちS706で求めた終端発散成分誤差errqを、S714で求めたパラメータ感度rで割った値を高さaとする台形パターンの修正量を図44の関係に従って仮目標ZMPパターンに加えることにより、仮目標ZMPパターンが修正される(新たな仮目標ZMPパターンが決定される)。
次いでS702に戻る。そして、S708の判断結果がNOである限りは、上記したS702〜S716の処理が繰り返され、S708の判断結果がYESになったときには、その繰り返しループ(S700)を抜けてS718に進む。
S718では、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、および仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に、今回歩容の上体姿勢角軌道が定常歩容の上体姿勢角軌道に近づくように、今回歩容の上体姿勢復元モーメントZMP換算値(ZMPrec)のパターンが決定される。ここで決定するZMPrecは、後述する今回歩容瞬時値の生成処理で、床反力水平成分許容範囲が十分に大きいものとなる期間(片脚支持期内の期間)において、上体姿勢角軌道を定常歩容につながらせる(近づける)ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性(S708の条件)を維持できるように、仮目標ZMPを修正するためのものである。
このZMPrecは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図30における第2旋回歩容の期間のZMPrecの台形パターンと同様に、今回歩容のZMPrecの台形パターンを設定し、台形の頂点(折れ点)の時刻は既知とする(より具体的には台形の折れ点の時刻を目標ZMPの折れ点時刻に合わせる)と共に、台形高さを未知数とし、以下のようにZMPrecの台形高さ(パラメータ)が求められる。ただし、ZMPrecの台形パターンが立ち上がり始める時刻をTaとし、台形パターンから0に戻る時刻をTbとする。
上記のように上体姿勢復元モーメントZMP換算値パターンの未知パラメータがひとつの場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本第1参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、1歩容の中でのZMPrecパターンを複雑にし、未知パラメータを2つ以上にして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげても良いが、ZMPrecパターンがジグザグに大きく変動し過ぎる恐れがある。
以下では、算出原理を説明した後、算出手順を説明する。
前述のごとくS702でZMPrecパターンの台形高さを0として求めた仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差を求め、これをθerrとする。また、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差を求め、これをvθerrとする。
ここで、ZMPrecパターンの台形高さをある値bcurrとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第1旋回歩容が生成されると想定する。ただし、第1旋回歩容の上体姿勢復元モーメントZMP換算値ZMPrecパターンは、図24のS310において求められた第1旋回歩容のZMPrecパターン(高さが前記acyc1である図30の台形パターン)とある値b1の和であるとする。
このようにして生成された歩容をZMPrec修正歩容と呼び、その終端(第1旋回歩容の終端)上体姿勢角と角速度をそれぞれθ1、vθ1とする。
S024における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容(最終的にS310において決定された定常歩容初期上体姿勢角および角速度を初期値とし、ZMPrecパターンをS310において求められたパターン(高さがacyc1である図30の台形パターン)とした場合の定常歩容)の第1旋回歩容終端上体姿勢角と角速度をそれぞれθ1org、vθ1orgとする。
ここで、Δθ1、Δvθ1を次のように定義する。

Δθ1 =θ1−θ1org …式50
Δvθ1 =vθ1−vθ1org …式51

Δθ1およびΔvθ1は、ZMPrec修正歩容と本来の定常歩容を第1旋回歩容の終端まで生成した時点において、両者間における上体姿勢角の差及び角速度の差を意味する。もし、Δθ1およびΔvθ1が0になれば、ZMPrec修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ZMPrecパターンの台形高さを前記acyc2として第2旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθ1およびΔvθ1が0となる今回歩容台形高さbcurr、第1旋回歩容台形高さb1を求め、求めたbcurrを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット1の上体姿勢角に関する動力学モデルが図12に示すフライホイールFHx、FHyのような線形特性を持つことから、Δθ1およびΔvθ1は、今回歩容台形高さbcurr、第1旋回歩容台形高さb1、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角の差θerr、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度の差vθerrと以下の関係を持つ。

Δθ1=c11*bcurr+c12*b1+θerr+e1*vθerr …式52
Δvθ1=c21*bcurr+c22*b1+e2*vθerr …式53

だだし、c11、c12、c21、c22、e1、e2は、今回歩容、第1旋回歩容の歩容周期、上体姿勢復元モーメントZMP換算値ZMPrecパターンのパラメータ(特に時間に関するパラメータ)などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での上体姿勢角の差θerrと角速度の差Vθerrが求められる。
次いで、式52,53の係数であるc11、c12、c21、c22、e1、e2が、今回歩容、第1旋回歩容の歩容周期、上体姿勢復元モーメントZMP換算値ZMPrecパターンのパラメータ(特に時間に関するパラメータ)などを基に求められる。
次いで式52、式53の右辺が0となるように今回歩容台形高さbcurr、第1旋回歩容台形高さb1が決定される。すなわち、式52、式53の左辺を0とした連立方程式を解くことによって、bcurr、b1が求められる。
最後に、今回歩容の上体姿勢復元モーメントZMP換算値(ZMPrec)の台形パターンの台形高さが、上記求めた今回歩容台形高さbcurrに設定される。
次いでS720に進み、現在の仮目標ZMPパターン(S700の繰り返しループを抜けたときの仮目標ZMPパターン)に、S718で上記のように求めた上体姿勢復元モーメントZMP換算値パターンを加算してなるパターンが今回歩容の目標ZMPパターンとして決定される。なお、この処理は、S710においてΔaの高さの台形パターンを仮目標ZMPパターンに加える処理と同様である。
以下に仮目標ZMPパターンに上体姿勢復元モーメントZMP換算値パターンを加算した理由を述べる。
S700のループにおいて生成される仮今回歩容は、上体姿勢復元モーメントZMP換算値ZMPrecを0(ZMPrecの台形パターンの高さパラメータを0)にして生成されたものである。このようにしてS700のループで最終的に生成された仮今回歩容では、その上体位置速度は、定常歩容に連続し、もしくは近づくが、上体姿勢角は、定常歩容の上体姿勢角からずれ、場合によっては発散してしまう。
S718で求められた上体姿勢復元モーメントZMP換算値パターンは、上体姿勢角の定常歩容に対するずれを0に近づけるための上体姿勢角加速度を発生させるものである。
しかし、S700のループで最終的に得られた仮目標ZMPパターンを修正することなく、S718で求められた上体姿勢復元モーメントZMP換算値パターンに応じた上体姿勢角加速度を発生させると、動力学的平衡条件(ロボットの重力と慣性力との合力が目標ZMPに作用するモーメントが鉛直成分を除いて0になること)を満足させるために、上体水平位置軌道を前記仮今回歩容の上体水平位置軌道からずらさざるを得なくなる。そこで、本実施例では、上体水平位置軌道をS700のループで最終的に得られるものからずらさなくて済むように、ZMPrecによって仮目標ZMPパターンを修正することとした。
前記仮今回歩容の運動に加えて、S718で求めた上体姿勢復元モーメントZMP換算値パターンに対応する上体姿勢角加速度を発生させると、ZMP(運動によって発生する重力と慣性力の合力の鉛直成分を除くモーメントが0になる点)は上体姿勢復元モーメントZMP換算値だけずれる。したがって、逆に、仮目標ZMPパターンに上体姿勢復元モーメントZMP換算値パターンを加算したパターンを目標ZMPパターンとして、S718で求めた上体姿勢復元モーメントZMP換算値パターンに対応する上体傾斜モードの上体姿勢角加速度を発生させながら、目標ZMPパターンを満足する今回歩容を生成すれば、前記仮今回歩容と同じ上体並進運動となる。
以上が、仮目標ZMPパターンに上体姿勢復元モーメントZMP換算値パターンを加算したパターンを目標ZMPパターンとした理由である。
次いでS722に進み、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差および仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を基に、今回歩容の逆位相腕振り角軌道が定常歩容の逆位相腕振り角軌道に近づくように、逆位相腕振り復元角加速度パターンが決定される。このパターンの決定方法は、S718で上体姿勢復元モーメントZMP換算値パターンを決定する方法と、変数名が次のように異なること以外は、ほぼ同じである。

上体姿勢復元モーメントZMP換算値パターン→逆位相腕振り復元角加速度パターン
水平成分→モーメント鉛直成分

以下に詳細を説明する。ここで決定する逆位相腕振り復元角加速度パターンは、後述する今回歩容瞬時値の生成処理で、床反力モーメント鉛直成分許容範囲が十分に大きいものとなる期間(片脚支持期内の期間)において、逆位相腕振り角軌道を定常歩容につながらせる(近づける)ように修正するためのものである。
この逆位相腕振り復元角加速度パターンは、前記定常歩容生成処理で説明したものと同様に台形状のパターンであり、具体的には次のように決定される。すなわち、図36における第2旋回歩容の期間の逆位相腕振り復元角加速度の台形パターンと同様に、今回歩容の逆位相腕振り復元角加速度の台形パターンを設定し、台形の頂点(折れ点)の時刻は既知とする(より具体的には台形の折れ点の時刻を目標ZMPの折れ点時刻に合わせる)と共に、台形高さを未知数とし、以下のように逆位相腕振り復元角加速度の台形高さ(パラメータ)が求められる。ただし、逆位相腕振り復元角加速度の台形パターンが立ち上がり始める時刻をTaとし、台形パターンから0に戻る時刻をTbとする。
上記のように逆位相腕振り復元角加速度パターンの未知パラメータがひとつの場合には、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度の両方を定常歩容に連続につなげることは一般的にはできない。そこで、本第1参考例では、複数歩に渡って徐々に、生成される歩容の状態が定常歩容の状態に近づけるように、未知パラメータを決定することとする。
補足すると、1歩容の中での逆位相腕振り復元角加速度パターンを複雑にし、未知パラメータを2つ以上にして、今回歩容の終端において逆位相腕振り角と逆位相腕振り角速度との両者を定常歩容に連続につなげても良いが、逆位相腕振り復元角加速度パターンがジグザグに大きく変動し過ぎる恐れがある。
前述のごとくS702で逆位相腕振り復元角加速度パターンの台形高さを0として求めた仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角との差を求め、これをθazerrとする。また、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度との差を求め、これをvθzerrとする。
ここで、逆位相腕振り復元角加速度パターンの台形高さをある値bzcurrとして今回歩容が生成され、引き続いて、今回歩容と同様のアルゴリズムによって第1旋回歩容が生成されると想定する。ただし、第1旋回歩容の逆位相腕振り復元角加速度パターンは、図24のS314において求められた第1旋回歩容の逆位相腕振り復元角加速度パターン(高さが前記azcyc1である図36の台形パターン)とある値bz1の和であるとする。
このようにして生成された歩容を逆位相腕振り復元角加速度修正歩容と呼び、その終端(第1旋回歩容の終端)逆位相腕振り角と角速度をそれぞれθz1、vθz1とする。
S024における定常歩容の初期状態を求めるサブルーチンの処理が完了した時点で求められた本来の定常歩容(最終的にS314において決定された定常歩容初期逆位相腕振り角および角速度を初期値とし、逆位相腕振り復元角加速度パターンをS314において求められたパターン(高さがazcyc1である図36の台形パターン)とした場合の定常歩容)の第1旋回歩容終端逆位相腕振り角と角速度をそれぞれθz1org、vθz1orgとする。
ここで、Δθz1、Δvθz1を次のように定義する。

Δθz1 =θz1−θz1org …式1050
Δvθz1 =vθz1−vθz1org …式1051

Δθz1およびΔvθz1は、逆位相腕振り復元角加速度修正歩容と本来の定常歩容を第1旋回歩容の終端まで生成した時点において、両者間における逆位相腕振り角の差及び角速度の差を意味する。もし、Δθz1およびΔvθz1が0になれば、逆位相腕振り復元角加速度修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、逆位相腕振り復元角加速度パターンの台形高さを前記azcyc2として第2旋回歩容が生成されると、この歩容は、本来の定常歩容に一致する。
したがって、Δθz1およびΔvθz1が0となる今回歩容台形高さbzcurr、第1旋回歩容台形高さbz1を求め、求めたbzcurrを今回歩容の台形高さとして最終的に決定すれば良い。
ところで、ロボット1の逆位相腕振り角に関する動力学モデルが図12に示すフライホイールFHazのような線形特性を持つことから、Δθz1およびΔvθz1は、今回歩容台形高さbzcurr、第1旋回歩容台形高さbz1、仮今回歩容の終端逆位相腕振り角と定常歩容の初期逆位相腕振り角の差θzerr、仮今回歩容の終端逆位相腕振り角速度と定常歩容の初期逆位相腕振り角速度の差vθzerrと以下の関係を持つ。
Δθz1=cz11*bzcurr+cz12*bz1+θzerr+ez1*vθzerr
…式1052
Δvθz1=cz21*bzcurr+cz22*bz1+ez2*vθzerr
…式1053

だだし、cz11、cz12、cz21、cz22、ez1、ez2は、今回歩容、第1旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ(特に時間に関するパラメータ)などによって一義的に決定される係数である。
以上の原理に基づき、算出手順として、まず、仮今回歩容と定常歩容との境界での逆位相腕振り角の差θzerrと角速度の差vθzerrが求められる。
次いで、式1052,1053の係数であるcz11、cz12、cz21、cz22、ez1、ez2が、今回歩容、第1旋回歩容の歩容周期、逆位相腕振り復元角加速度パターンのパラメータ(特に時間に関するパラメータ)などを基に求められる。
次いで式1052、式1053の右辺が0となるように今回歩容台形高さbzcurr、第1旋回歩容台形高さbz1が決定される。すなわち、式1052、式1053の左辺を0とした連立方程式を解くことによって、bzcurr、bz1が求められる。
最後に、今回歩容の逆位相腕振り復元角加速度の台形パターンの台形高さが、上記求めた今回歩容台形高さbzcurrに設定される。
図13に戻って、上記のごとくS028において今回歩容パラメータを修正した後、あるいはS016の判断結果がNOである場合には、S030に進み、今回歩容瞬時値が決定される。
S030では、そのサブルーチンである図45の処理が実行される。
図45のS1400からS1411までは、図25のS400からS411までと同一の処理が行なわれ、次に、S1412のサブルーチンである図46のS1000〜S1018の処理が行なわれる。
具体的には、まずS1000において、目標上体ヨー角に現在時刻での基準上体ヨー角の値を代入する。また、腕姿勢逆位相腕振り角・角速度を除き、目標腕姿勢に現在時刻での基準腕姿勢の値を代入する。
次いでS1002に進み、現在時刻が、上体姿勢角・逆位相腕振り角復元期間(時刻Taから時刻Tbの期間)の間にあるか否かが判定される。S1002の判定結果がNOであるならば、S1004に進み、YESであるならばS1006に進む。
S1004では、上体傾斜角・逆位相腕振り角復元期間でない場合の上体水平加速度α、上体角加速度β、逆位相腕振り角加速度βa算出処理(図26のS504からS528)と同様の処理を行う。
S1006に進む場合では、まず、S1006において、仮に上体並進モードの運動をさせた場合に今回(時刻k)目標ZMPを満足するために必要な上体水平加速度αtmpを求める。
次いでS1008に進み、現在時刻における上体傾斜復元モーメントZMP換算値パターンの瞬間値ZMPrecを、S718において決定した上体傾斜復元モーメントZMP換算値パターンに関するパラメータを基に算出する。
次いでS1010に進み、現在時刻における逆位相腕振り復元角加速度パターンの瞬間値βarecを、S722において決定した逆位相腕振り復元角加速度パターンに関するパラメータを基に算出する。
次いでS1012に進み、図示する式によって、上体傾斜モードの上体角加速度(上体傾斜角加速度)βが決定される。
次いでS1014に進み、図示する式によって、上体水平加速度αが決定される。
次いでS1016に進み、S1010で算出した逆位相腕振り復元角加速度パターンの瞬間値βarecと基準逆位相腕振り角加速度βaref(基準逆位相腕振り角を2階微分した値)の和を目標逆位相腕振り角加速度βaに代入する。
次いでS1018に進み、上体水平加速度がαの場合の床反力水平成分Fxを求める。
次いでS1414に進み、上体水平加速度と上体姿勢角加速度を積分して上体水平速度と上体姿勢角速度(上体傾斜角速度)を算出する。これをさらに積分して、上体水平位置と上体姿勢(上体傾斜角)を決定する。なお、上体姿勢のうちの上体ヨー角は、本第1参考例では基準上体ヨー角に決定される。
次いでS1416に進み、逆位相腕振り加速度を積分して逆位相腕振り角速度を算出する。これをさらに積分して、逆位相腕振り角を決定する。
以上のごとく、図13のS030の処理が完了する。
次いでS032に進み、歩容生成用時刻tをΔtだけ増やし、S014に戻り、以上のごとく歩容生成を続ける。
以上が、歩容生成装置100における目標歩容生成処理である。
図4を参照して本第1参考例に係る装置の動作をさらに説明すると、歩容生成装置100において、上記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢(軌道)、目標腕姿勢(軌道)が、ロボット幾何学モデル(逆キネマティクス演算部)102に送出される。
また、目標足平位置姿勢(軌道)、目標ZMP軌道(目標全床反力中心点軌道)、および目標全床反力(軌道)(目標床反力水平成分と目標床反力鉛直成分)は、複合コンプライアンス動作決定部104に送られると共に、目標床反力分配器106にも送られる。そして、目標床反力分配器106で、床反力は各足平22R,22Lに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部104に送られる。
複合コンプライアンス動作決定部104から、機構変形補償付き修正目標足平位置姿勢(軌道)がロボット幾何学モデル102に送られる。ロボット幾何学モデル102は、目標上体位置姿勢(軌道)と機構変形補償付き修正目標足平位置姿勢(軌道)を入力されると、それらを満足する脚体2,2の12個の関節(10R(L)など)の関節変位指令(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の12個の関節の変位を追従制御する。また、ロボット幾何学モデル102は、目標腕姿勢を満足する腕関節の変位指定(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の腕体の12個の関節の変位を追従制御する。
ロボット1に生じた床反力(詳しくは実各足床反力)は6軸力センサ50によって検出される。その検出値は前記複合コンプライアンス動作決定部104に送られる。
また、ロボット1に生じた実上体姿勢角偏差(目標上体姿勢と実上体姿勢(上体3の実際の姿勢)との偏差)のうちの姿勢傾斜角偏差θerrx,θerry(詳しくは目標上体姿勢のうちの鉛直方向に対する傾斜角に対する実上体姿勢のうちの鉛直方向に対する傾斜角の偏差で、ロール方向(X軸回り)の姿勢傾斜角偏差がθerrxであり、ピッチ方向(Y軸回り)の姿勢傾斜角偏差がθerryである)が姿勢センサ54を介して検出され、その検出値は姿勢傾斜安定化制御演算部112に送られる。この姿勢傾斜安定化制御演算部112で、ロボット1の実上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメント水平成分が算出されて複合コンプライアンス動作決定部104に送られる。
より具体的には、本第1参考例では、補償全床反力モーメント水平成分Mdmdxyは、例えばPD制御則を用いて次式により決定される。

補償全床反力モーメント水平成分Mdmdxy
=Kθb*上体姿勢傾斜角偏差
+Kωb*上体姿勢傾斜角速度偏差
……d25
ここで、Kθb、Kωbは所定のゲインである。また、上体姿勢傾斜角速度偏差は、上体姿勢傾斜角偏差の時間微分値であり、目標上体姿勢傾斜角速度に対する実上体姿勢傾斜角速度の偏差を意味する。また、上体姿勢傾斜角偏差は、より詳しくは、ロボット1の上体3のロール方向(X軸回り)の姿勢傾斜角偏差と、ピッチ方向(Y軸回り)の姿勢傾斜角偏差とからなるベクトルである。
また、ロボット1に生じた前記実上体姿勢角偏差のうちのヨー角偏差θerrz(詳しくは実上体姿勢角偏差のうちのヨー方向(Z軸回り)の姿勢角偏差がθerrzである)が姿勢センサ54を介して検出され、その検出値はヨー安定化制御演算部113に送られる。このヨー安定化制御演算部113で、ロボット1の実上体ヨー角および/または角速度を目標上体ヨー角および/または角速度に収束させるための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメント鉛直成分が算出されて複合コンプライアンス動作決定部104に送られる。複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメントが作用するように目標床反力を修正する。
より具体的には、本第1参考例では、補償全床反力モーメント鉛直成分Mdmdzは、例えばPD制御則を用いて次式により決定される。

補償全床反力モーメント鉛直成分Mdmdz=Kθbz*上体ヨー角偏差
+Kωbz*上体ヨー角速度偏差
……d26

ここで、Kθbz、Kωbzは所定のゲインである。また、上体ヨー角速度偏差は、上体ヨー角偏差の時間微分値であり、目標上体ヨー角速度に対する実上体ヨー角速度の偏差を意味する。
補足すると、補償全床反力モーメント鉛直成分Mdmdzを前記式d26により求めるとき、足平22と床の間の鉛直軸まわり回転滑りまたは鉛直軸まわり回転振動を防止したいだけなら、Kθbzを0にすれば良い。上体ヨー角偏差までも0に近づけようとすると、実床反力モーメント鉛直成分が大きくなる傾向があるからである。
複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメント水平成分が作用するように目標床反力モーメント水平成分を修正し、さらに、目標歩容に動力学的に釣り合う目標全床反力中心点(目標ZMP)回りの目標床反力鉛直成分に補償全床反力モーメント鉛直成分を付加的に追加することによって目標床反力モーメント鉛直成分を修正する。
複合コンプライアンス動作決定部104は、修正された目標床反力に、センサ検出値などから算出される実ロボット1の状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
尚、この発明の要旨は歩容生成装置100におけるロボット1の歩容生成にあり、上記した複合コンプライアンス動作決定部104などの構成および動作は、本出願人が先に出願した特開平11−300661号公報などに詳細に記載されているので、説明を以上に留める。
S028において、今回歩容パラメータは、前述のごとく、今回歩容の終端発散成分が、定常旋回歩容の初期発散成分q[0]を今回歩容の支持脚座標系から見た値であるq”に一致するように修正される。
実は、発散成分とは、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容に収束するか否かを評価する指標である。収束する場合にちょうど、今回歩容の終端発散成分が、定常旋回初期発散成分q[0]を今回歩容の支持脚座標系から見た値であるq”に一致するように、本来、発散成分は定義されなければならない。
式10で定義した発散成分は、実は、上記の性質を近似的に満足する発散成分である。
したがって、本第1参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体水平位置が定常旋回歩容の上体水平位置に収束する(近づく)ように、今回歩容パラメータを修正した、と言える。但し、厳密には、今回歩容直後の第1旋回歩容だけは、前記の如く求めた第1旋回歩容台形高さb1,bz1によって修正された歩容にする必要がある。別の言い方をすれば、今回歩容と第1旋回歩容とを合わせた歩容を今回歩容と見なせば、本参考例においては、上記の如く歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が第2旋回歩容と第1旋回歩容とからなる定常歩容の上体姿勢角に収束し(近づき)、もしくは一致するように、今回歩容パラメータを修正した、と言える。
これは、PCT公開公報WO/02/40224のものと同様である。
特に、本第1参考例においては、その条件(今回歩容が定常歩容に近づく)を満足するように、今回歩容の歩容パラメータのうちの目標ZMPパターンを修正するようにした。図47を参照して説明すると、同図に符合Bで示す軌道は、上記したように歩容の境界において発散成分が一致するように生成した上体水平位置軌道を示す。
同図に符合Aで示す軌道は、定常旋回歩容との境界における上体水平位置速度が一致するように今回歩容を生成し、続いて定常歩容を繰り返し生成した場合の上体水平位置軌道を示す。
図示の如く、符合Bで示す軌道は、今回歩容と最初の定常旋回歩容との境界においては、一般的に符合Aで示す軌道からずれているが、その後、徐々に符合Aで示す軌道に収束し(近づき)、次の定常旋回歩容時期において符合Aで示す軌道にほぼ一致する。このように、歩容境界で発散成分のみを一致させる歩容生成手法でも、歩容境界で位置速度両方を一致させる歩容生成手法と同様、歩容の発散を防止することができる。尚、同図に符合Cで示す例は、それらを考慮せずに軌道を生成した場合の例を示す。このような場合は、生成した軌道は経時的に発散してしまう。当然、目標ZMPパターンを複雑なものにし、複数のパラメータを調整して、位置速度両方を一致させても良いが、目標ZMPパターンがジグザグになる恐れがある。なお、位置速度両方を一致させれば、発散成分も一致するから、位置速度両方を一致させる方法も発散成分を一致させる方法の特殊例であると言える。
またさらに、本第1参考例においては、動力学モデルを用いて今回歩容パラメータに従って歩容を生成し、そのまま連続して定常旋回歩容パラメータに従って歩容を繰り返し生成したとき、生成した歩容の上体姿勢角が定常旋回歩容の上体姿勢角に収束し(近づき)、もしくは一致するように、今回歩容パラメータを修正した、と言える。但し、厳密には、今回歩容直後の第1旋回歩容だけは、前記の如く求めた第1旋回歩容台形高さb1,bz1によって修正された歩容にする必要がある。
次に、本第1参考例の変形態様を以下にいくつか説明する。なお、以下に説明する変形態様は、後述の各実施形態においても同様である。
本第1参考例では、理解を容易にするために、床反力水平成分許容範囲は、前後方向(X軸方向)成分と左右方向(Y軸方向)成分それぞれ独立に設定できることとしたが、前後方向と左右方向の関係式で表した方が、よりスリップし難い歩容が生成される。
例えば、次式のようにいわゆる摩擦円を許容範囲としても良い。

(床反力水平成分のX成分)*(床反力水平成分のX成分)
+(床反力水平成分のY成分)*(床反力水平成分のY成分)
≦(ka*μ*Fz)*(ka*μ*Fz)
…式59
ただし、Fzは、目標床反力鉛直成分をμは摩擦係数、kaは1以下の正の定数を表す。
ただし、以上のように、床反力水平成分許容範囲を前後方向と左右方向の関係式で表す場合、許容範囲を同時にあるいは交互に満足するように、サジタルプレーン上での運動とラテラルプレーン上での運動を同時あるいは交互に求める必要がある。
また、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とを上記のごとく別々に設定する代わりに、床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにしても良い。床反力水平成分が大きくなるにつれ、床反力モーメント鉛直成分の摩擦限界は、小さくなる。また、床反力モーメント鉛直成分が大きくなるにつれ、床反力水平成分の摩擦限界は、小さくなる。したがって、このことを鑑みて床反力水平成分と床反力モーメント鉛直成分との組の許容範囲を設定するようにした方が、より現実の摩擦限界特性に近い許容範囲を設定することができる。具体的には、床反力水平成分の絶対値と床反力モーメント鉛直成分の絶対値との重み付き平均に対して許容範囲を設定しても良い。
前記第1参考例では、床反力水平成分と目標ZMPまわりの床反力モーメント水平成分を適切な値にするために、上体傾斜モードと上体並進モードとの2つの運動モードを用いたが、これら以外の運動モードを用いても良い。
例えば、図48のように、股関節を中心に上体姿勢を回転させると、全体重心まわりの角運動量が変化すると共に全体重心も変化する。この運動と前記上体並進モードをある所定の割合で重ね合わせると(合成すると)、前記上体傾斜モードとほとんど同じ運動になり、床反力水平成分が発生しなくなる。したがって、これを改めて前記上体傾斜モードとみなせば、本第1参考例のアルゴリズムにしたがって、同様の歩容を生成することができる。
したがって、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ZMPまわりの床反力モーメントとの発生の割合が異なるふたつの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ZMPまわりの床反力モーメントとを発生させることができるからである。
また、上体姿勢を変化させる運動モード以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ZMPまわりの床反力モーメントが発生できる運動モードを選ぶことが好ましい。
例えば、左右の腕体の先端位置を同一方向に振りまわす運動モード、接地していない(空中に存在する)足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に0に戻すべきである。なお、左右の腕体の先端位置を同一方向に振りまわす運動モードと逆位相腕振りモードとを併用してもよいことはもちろんである。
また、3つ以上の運動モードを用いても良い。
また、選択した運動モードのうちの少なくとも2つは、その運動モードによる床反力水平成分と目標ZMPまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなる(各運動モードの挙動を一義的に決定できない)からである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ZMPまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ZMPまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。このようにすると、運動モードの変位が小さくなるからである。
また、床反力モーメント鉛直成分が許容範囲を越えないようにするために(スピン力をキャンセルするために)、逆位相腕振りモードの代わりに、上体ヨー回転モードを用いても良い。上体ヨー回転モードを用いる場合には、ロボット1の上体3を腰寄りの部分(例えば図1の54の部材の下側の部分)とその上側の部分(例えば図1の54の部材の上側の部分)とに分割し、上側の部分が腰寄りの部分に対してヨー方向に(例えば上体3の体幹軸回り)に回転し得るように設けておくことが好ましい。このようにすると、脚体2,2の姿勢に影響を及ぼすことなく、上体3の上側の部分を回転させて、床反力モーメント鉛直成分を調整することができる。このようにした場合の参考例は、例えば前記第1参考例で逆位相腕振り角、その角速度およびその角加速度を決定する代わりに、上体3の上側の部分の回転角、その角速度およびその角加速度を決定するようにすればよい。この場合、両腕体5,5は、例えば上体3の上側の部分に対する相対位置を一定とすればよい。但し、上体3の上側の部分のヨー回転に加えて、両腕体5,5の逆位相腕振り動作を加えてもよいことはもちろんである。
また、床反力モーメント鉛直成分が発生するものであれば、腕、上体以外の部位を変位させる運動モードを用いても良い。
例えば、空中期において、両脚先端を前後逆方向に動かすモードを用いても良い。
あるいは、床反力モーメント鉛直成分が発生するいくつかの運動モードを併用しても良い。例えば、逆位相腕振りモードと上体ヨー回転モードを併用しても良い。
また、上体ヨー回転モードおよび逆位相腕振りモードは、全体重心位置が変わらないように(言い換えると床反力水平成分を発生させずに)床反力モーメント鉛直成分を発生させるモードであるが、全体重心位置が変わってしまう(言い換えると床反力水平成分を発生してしまう)運動でも良い。上体並進モードと組み合わせることにより、床反力水平成分を調整することができるからである。
前記第1参考例に用いた動力学モデル(図12の動力学モデル)以外にも以下のモデルを用いても良い。
1)図49に示したように複数のリンクに質点を設定した非線形なモデル(多質点モデル)。このモデルの各リンクには、イナーシャ(慣性モーメント)が設定されていてもよい。
2)本願出願人によるPCT公開公報WO/02/40224に示された3質点モデル
3)上体ヨー回転モードあるいは逆位相腕振りモードによって生じる慣性力のモーメントを無視したモデル。
4)重力と慣性力との合力(またはこれと釣り合う床反力)と上体並進運動との関係を表す部分モデルと、上記合力と上体姿勢回転運動(上体傾斜運動と上体ヨー回転運動)の関係を表す部分モデルとを分離して持つ分離型モデル。例えば、図12に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図12に示すフライホイールは、上記合力と上体姿勢回転運動との関係を表す部分モデルである。
なお、上記1)〜4)のいずれの場合でも、慣性力のモーメント鉛直成分を発生させる運動モードは必要である。
また、各処理で用いられるモデルは同一でも良いし、処理に応じて適宜、モデルを使い分けても良い。例えば、前記定常歩容は今回歩容の終端状態を決定するためだけに生成されるものであるので、その定常歩容の動力学的な精度に対する要求は、今回歩容に比べて小さい。そこで、例えば、今回歩容の生成処理では、図12の動力学モデル(3質点+フライホイールのモデル)を用いる一方、定常歩容の生成処理(特に図21のS408、S412)では、各脚体2の質量を無視し、上体3に対応する上体質点3mと、フライホールFHx、FHy、FHaz、FHbzとで構成される動力学モデル(図12のモデルで脚質点2m,2mを除去した1質点+フライホイールのモデル)を用いて定常歩容を生成するようにしてもよい。この場合の定常歩容の生成処理では、前記第1参考例において、脚質点2mの質量を0として前記図25のS408、S412の処理を行なうようにすればよい。このようにすると、定常歩容の生成処理における演算量を大幅に削減できる。
尚、前記第1参考例において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記第1参考例を2足移動ロボットに関して説明してきたが、3足以上の多脚ロボットにも応用することができる。
前記第1参考例のごとく、探索手法を用いたり、部分的に解析手法を用いたりして、定常歩容の初期状態(主に初期上体水平位置速度、初期上体鉛直位置速度および逆位相腕振り角・角速度のこと)を決定する手法の代わりに、あらかじめ、上記手法を用いて様々な定常歩容パラメータに対して計算しておき、定常歩容パラメータと定常歩容の初期状態との関係をマップ化あるいは近似式化して記憶して置き、実移動時には、マップ化あるいは近似式化された上記関係を基に、定常歩容の初期値を決定しても良い。
さらには、マップ化あるいは近似式化された上記関係と上記関数fを合成した関数をマップ化あるいは近似式化して記憶しても良い。すなわち、前記した足平軌道パラメータ、床反力鉛直成分軌道パラメータ等からなる定常歩容パラメータから、定常歩容の発散成分を直接求める関数をマップ化あるいは近似式化して記憶しても良い。例えば、複数種類の代表的な定常歩容パラメータの組のそれぞれに対して、事前に定常歩容を生成しておき、各組の定常歩容パラメータに対する定常歩容の初期状態(図13のS024で求めるもの)を求めておき、さらにその各組の定常歩容パラメータと、定常歩容初期状態との関係を表すマップをあらかじめ作成しておく。そして、目標歩容を生成する際に、決定された定常歩容パラメータの組から、上記マップに基づいて選択あるいは補間によって定常歩容初期状態を求めるようにすればよい。このようにすれば、今回歩容の生成毎に、定常歩容を生成する必要がなくなり、目標歩容生成処理の演算量を大幅に削減できる。
定常歩容につなげる(近づける)ための今回歩容の修正方法として、本第1参考例では、今回歩容の目標ZMPパラメータを修正したが、それ以外のパラメータを修正しても良い。
たとえば、今回歩容の遊脚の空中での軌道を変えても良い。また、たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、遊脚を離床後すばやく前方に移動させて遊脚重心位置を前方にずらす。こうすることにより、目標ZMPを満足するための上体水平位置は、前方により一層加速せざるを得なくなる。この結果、上体水平位置が今回歩容終端において、より一層前方に移動し、定常歩容に一致させることができる。
また、目標ZMPパラメータを修正する代わりに、今回歩容の周期を修正しても良い。たとえば、上体水平位置が定常歩容よりも後方にずれてしまいそうな場合には、今回歩容の周期を長くすれば良い。今回歩容の周期を長くすることで、上体水平位置が移動する時間が延び、それだけ前方に移動できるからである。
ただし、探索手法によって、上体水平位置等の適正値を決定するときに、目標ZMPパラメータを修正する場合では、目標ZMPの修正量にほぼ比例して、今回歩容終端上体水平位置が変化するので、上記適正値の探索回数が少なくて済む。これに対して、遊脚重心軌道や歩容の周期を修正する場合には、その修正に対して、今回歩容終端上体水平位置が、かなり非線形に変化するので、上記適正値の探索により多くの探索回数を要する。
定常歩容につなげる(近づける)ための今回歩容の修正方法として、本第1参考例では、今回歩容の目標ZMPパラメータを修正した。この方法では、場合によっては、目標ZMPパラメータの修正量(前記図34の修正量a)が過大になることがある。たとえば、その場でホッピングしている歩容からいきなり高速で移動する要求(走行要求)が与えられると、高速の定常歩容(走行の定常歩容)につなげる(近づける)ために、目標ZMPパラメータは、進行方向に対して後ろに極端に大きくずらす必要が生じる。この場合には、上記したように目標ZMPパラメータ以外の歩容パラメータも修正することが望ましい。但し、この場合では、実は、急激な加速を要求すること自体に無理があったわけであるから、要求値自身を修正しても良い。
要求値の修正を行なう場合には、例えば、とりあえず本第1参考例に示した手順に従って、要求(要求パラメータ)を満足する定常歩容を求め、この定常歩容につながるように今回歩容パラメータを決定した時点で、今回歩容の目標ZMP軌道の安定余裕が少なくなり過ぎたか否かを判定する。そして、安定余裕が少なくなり過ぎた場合(いわゆる支持多角形から目標ZMPが外れたり、支持多角形の端部付近に目標ZMPが位置するような場合)には、要求を修正するようにすれば良い。
または、あらかじめ歩容の加減速度(次回歩容初期速度−今回歩容初期速度)/今回歩容の周期)の許容範囲を設定して置き、要求(歩容周期に関する要求パラメータ)を受けた時点で、該要求に対応する加減速度を求め、その求めた加減速度が許容範囲を越えていたら、許容範囲になるように、要求を修正しても良い。
補足すると、前記ΔMp、ΔFp、ΔMr、ΔFr、ΔMazおよびΔMbzは、上記のごとく単純な動力学モデルを用いる場合には、動力学演算により解析的に求めても良いが、一般的なより複雑な動力学モデルを用いる場合には、上体3を上体並進モードで微小量だけ加速または上体傾斜モードで微小量だけ加速させた場合の床反力を求め、加速させなかった場合の床反力との差を求め、この差を上記微小量で割ることによって求めれば良い。
また、あらかじめ標準的な歩容におけるΔMp、ΔFp、ΔMr、ΔFr、ΔMaz、ΔMbzおよびΔMp/ΔMrなどのそれぞれの平均値を求めておいて、それを用いても良い。ΔMp、ΔFp、ΔMr、ΔFr、ΔMaz、ΔMbzおよびΔMp/ΔMrは、状態(姿勢とその変化率)によって変わるので、各瞬間の状態ごとに求める方法に較べて、精度は若干低下するが、上記モデルよりも複雑なモデルを用いた場合には、演算量を大幅に低減できる。
今回歩容の逆位相腕振り復元角加速度パターンの台形高さbzcurrを決定する方法として、以下の方法を用いても良い。
前記逆位相腕振り復元角加速度修正歩容(図42のS722の説明を参照)の今回歩容終端時点での逆位相腕振り角と角速度をそれぞれθzcurr、vθzcurrとし、これらと、定常歩容の逆位相腕振り角、角速度との差をΔθzcerr、Δvθzcerrとする。
歩容周期をインターバルとし、仮今回歩容の終端逆位相腕振り角、角速度と定常歩容の初期逆位相腕振り角、角速度との差θzerr、vθzerrを前回状態、bzcurrを入力、Δθzcerr、Δvθzcerrを今回状態とする離散系の状態方程式を立てて、Δθzcerr、Δvθzcerrを0に収束させるように、現代制御理論等を用いてフィードバック則を決定し、これに基づいてbzcurrを求めても良い。
今回歩容およびまたは定常歩容の逆位相腕振り復元角加速度βarecは、台形パターンとせず、各瞬間において、目標逆位相腕振り角・角速度と基準逆位相腕振り角・角速度との差などを基に、その差が0に収束するように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βarecの値を決定しても良い。
今回歩容の逆位相腕振り復元角加速度βarecは、台形パターンとせず、各瞬間において今回歩容の目標逆位相腕振り角・角速度を基に、これらが第1旋回歩容の初期逆位相腕振り角・角速度に近づくように、状態フィードバック則などを用いて、各瞬間における逆位相腕振り復元角加速度βarecを決定しても良い。
斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分許容範囲の代わりに、並進床反力の床面平行成分(床面に平行な成分)、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分(これは摩擦力に比例する)の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分(摩擦力)の許容範囲を設定する場合に関して説明(この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である)すると、該摩擦力は、床面の水平面に対する傾斜角度θf(ロボット1の進行方向に向かって前下がり斜面の場合を正とする)とすると、次式72の関係が成立する。従って、前記第1参考例と同様のアルゴリズムに歩容を生成する場合、この式72の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式72の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。

摩擦力=床反力水平成分*cos(θf)−床反力鉛直成分*sin(θf)
…式72

また、斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力モーメント鉛直成分は、式1072によって床面摩擦力法線方向モーメントに変換することができるので、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち床面摩擦力法線方向モーメントの許容範囲の許容範囲を設定するようにしてもよい。

床面摩擦力法線方向モーメント=床反力モーメント鉛直成分*cos(θf)
…式1072

今回歩容のパラメータ決定は、前記第1参考例のように前回歩容が完了した時点で行う以外に、本願出願人によるPCT公開公報WO/02/40224に記述されているように、今回歩容の生成途中で、再決定しても良い。こうすることにより、演算量は増えるが、歩容に対する要求に変更があった時に即応できるからである。
また、歩容の修正(今回歩容パラメータを再決定すること)が、今回制御周期で間に合わない場合には、とりあえず今回は、修正しない歩容あるいは暫定的に修正した歩容(探索途中の歩容であって、完全には、探索完了条件(歩容境界条件のずれが許容値以内に入っていること)を満足していない歩容)を出力し、次回制御周期までに、あるいは複数制御周期後までに(暫定的でない)適切な修正歩容にしても良い。修正された目標ZMP軌道と目標床反力鉛直成分軌道は連続であり、短時間後では、これらが急激に変化することはないので、今回歩容の目標ZMP軌道と目標床反力鉛直成分軌道が若干ぎざぎざになるだけで、ほとんど問題はない。
また、前記第1参考例では、図5の走行歩容を生成する場合を例に採って説明したが、ロボット1の歩行歩容を生成する場合でも、前記第1参考例と同様に目標歩容を生成できる。この場合には、例えば前記第1参考例において、目標床反力鉛直成分を前記図6に示したものに代えて、例えば図50に示すようなパターンで設定すればよい。この例では、床反力鉛直成分軌道は、両脚支持期では床反力鉛直成分の増加側に凸の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸の台形状に設定される。なお、台形部分の高さC1、C2の設定方法などの詳細は、例えば本願出願人によるPCT公開公報WO/03/057425/A1に詳細に説明されているのでここでの説明は省略する。


次に、以上説明した第1参考例およびその変形態様を基礎として、第2参考例を図53〜図58を参照して説明する。なお、本第2参考例の説明において、前記第1参考例と同一構成部分もしくは同一機能部分については前記第1参考例と同一の参照符号を用いて説明を省略する。特に、本第2参考例は、先にも述べたように、前記図1〜図3および図5〜図12を参照して説明した事項は、前記第1参考例と同一である。
本第2参考例が前記第1参考例と相違する点の概要を説明すると、本第2参考例では、目標上体姿勢角と実上体姿勢角の差である実上体姿勢角偏差(上体3の鉛直方向に対する傾き角の偏差およびヨー角の偏差)、及び/又はその変化率を0に近づけるために、コンプライアンス制御への目標床反力を操作することに加え、目標歩容も修正するようにした。特に、実上体姿勢偏差のうちのヨー角成分及び/又はその角速度に応じて、目標歩容に動力学的に釣り合う(目標歩容の運動の慣性力と重力との合力が目標 ZMPまわりに発生するモーメントの鉛直成分に釣り合う)目標ZMPまわりの床反力モーメントの鉛直成分も修正するようにした。
本第2参考例における制御ユニット60の機能的構成を表すブロック図を図53に示す。以下、本第2参考例における制御ユニット60の機能的構成が前記第1参考例のもの(図4のもの)と相違する点を説明する。
本第2参考例においては、姿勢傾斜安定化制御演算部112において算出される補償全床反力モーメント水平成分Mdmdxyは、補償全床反力モーメント水平成分分配器110に入力される。補償全床反力モーメント水平成分分配器110は、補償全床反力モーメント水平成分Mdmdxyを、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とに分配する。換言すれば、実上体姿勢傾斜角偏差を基に、姿勢傾斜安定化制御演算部112及び補償全床反力モーメント水平成分分配器110により、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分とが決定される。
具体的には、補償全床反力モーメント水平成分分配器110においては、まず、モデル操作床反力モーメント水平成分が次式で決定される。なお、床反力モーメント水平成分許容範囲は、後述するごとく歩容生成装置100において決定される。
Mdmdxy>床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分=−Mdmdxy
+床反力モーメント水平成分許容範囲上限値
Mdmdxy<床反力モーメント水平成分許容範囲下限値である場合
モデル操作床反力モーメント水平成分=−Mdmdxy
+床反力モーメント水平成分許容範囲下限値
床反力モーメント水平成分許容範囲下限値≦Mdmdxy、且つ、Mdmdxy≦床反力モーメント水平成分許容範囲上限値である場合
モデル操作床反力モーメント水平成分=0
……式d27a
次に、コンプライアンス制御用目標床反力モーメント水平成分が次式で決定される。
コンプライアンス制御用目標床反力モーメント水平成分
=Mdmdxy+モデル操作床反力モーメント水平成分
……式d27b
従って、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がMdmdxyに等しくなるようにそれらの床反力モーメント水平成分が決定される。
上記のような演算を行なう補償全床反力モーメント水平成分分配器110をブロック図で表すと、図54に示すようになる。
また、ヨー安定化制御演算部113において前記第1参考例と同様に決定された補償全床反力モーメント鉛直成分Mdmdz(前記式d26を参照)は、モデル操作床反力モーメント鉛直成分決定器111に入力される。モデル操作床反力モーメント鉛直成分決定器111は、補償全床反力モーメント鉛直成分Mdmdzを基に、モデル操作床反力モーメント鉛直成分を決定する。換言すれば、実上体姿勢角偏差のうちの上体ヨー角偏差を基に、ヨー安定化制御演算部113及びモデル操作床反力モーメント鉛直成分決定器111により、補償全床反力モーメント鉛直成分Mdmdzとモデル操作床反力モーメント鉛直成分とが決定される。
具体的には、モデル操作床反力モーメント鉛直成分決定器111において、モデル操作床反力モーメント鉛直成分が次式で決定される。なお、床反力モーメント鉛直成分補償量許容範囲は、後述するごとく歩容生成装置100において決定される。
Mdmdz>床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分=−Mdmdz
+床反力モーメント鉛直成分補償量許容範囲上限値
Mdmdz<床反力モーメント鉛直成分補償量許容範囲下限値である場合
モデル操作床反力モーメント鉛直成分=−Mdmdz
+床反力モーメント鉛直成分補償量許容範囲下限値
床反力モーメント鉛直成分補償量許容範囲下限値≦Mdmdz、且つ、Mdmdz≦床反力モーメント鉛直成分補償量許容範囲上限値である場合
モデル操作床反力モーメント鉛直成分=0
……式d26b
上記のような演算を行なうモデル操作床反力モーメント鉛直成分決定器111をブロック図で表すと、図55に示すようになる。従って、モデル操作床反力モーメント鉛直成分は、補償全床反力モーメント鉛直成分Mdmdzのうち、床反力モーメント鉛直成分補償量許容範囲を逸脱した分の符号を反転させたものに設定される。
コンプライアンス制御用目標床反力モーメント水平成分および補償全床反力モーメント鉛直成分Mdmdzは、複合コンプライアンス動作決定部104に送られる。
モデル操作床反力モーメント水平成分および鉛直成分は、歩容生成装置100に送られる。
尚、補償全床反力モーメント鉛直成分Mdmdzの代わりに、補償全床反力モーメント鉛直成分Mdmdzとモデル操作床反力モーメント鉛直成分との和を、コンプライアンス制御用目標値として、複合コンプライアンス動作決定部104に送っても良い。
複合コンプライアンス動作決定部104は、歩容生成装置100が生成する目標歩容の運動にロボット1の運動を追従させつつ、歩容生成装置100が生成する目標全床反力にコンプライアンス制御用目標床反力モーメント水平成分と補償全床反力モーメント鉛直成分Mdmdzを加えることによって修正される目標全床反力に実床反力が近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。
この場合、ロボット1の足平位置姿勢や床反力の全ての状態を目標に一致させることは事実上不可能であるので、前記第1参考例と同様、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。
詳細は後述するが、歩容生成装置100は、該歩容生成装置100において決定される目標ZMPまわりの床反力モーメント水平成分がモデル操作床反力モーメント水平成分となるように動力学モデルを用いて目標歩容の運動(特に上体位置姿勢軌道)を生成する。さらに、歩容生成装置100は、モデル操作床反力モーメントが0であるとして生成された目標歩容(仮目標歩容)に動力学的に釣り合う目標全床反力中心点(目標ZMP)回りの目標床反力モーメント鉛直成分にモデル操作床反力モーメント鉛直成分が付加的に発生するように目標歩容の運動(特に腕振り軌道)を修正する。
これら以外の、制御ユニット60の機能的構成は、前記第1参考例と同一である。補足すると、前記第1参考例で生成した目標歩容は、本第2参考例で、前記モデル操作床反力モーメント水平成分と、モデル操作床反力モーメント鉛直成分とを定常的に0に設定した場合に生成される目標歩容と同じである。
第2参考例における歩容生成装置100の動作(歩容生成処理)をそのメインフローチャートである図56を用いて以下に詳説する。S3010からS3028までは、前記第1参考例の図13のS010からS028と同様の処理を行う。
次いで、S3030に進み、コンプライアンス制御用の目標ZMPまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータが決定される。
なお、床反力モーメント水平成分を、床反力鉛直成分で割ったものが、ZMP(床反力中心点)の目標ZMPからのずれ量を表すものとなる。従って、床反力モーメント水平成分許容範囲を、床反力鉛直成分で割ることによって、床反力中心点に変換したZMP許容範囲(床反力中心点許容範囲)のパラメータを設定するようにしてもよい。
補足すると、S3030で決定するコンプライアンス制御用の床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分補償量許容範囲のパラメータとを基に、後述する今回歩容瞬時値決定サブルーチン(S3032のサブルーチン)において、それらの許容範囲の瞬時値が決定され、それが、前記補償全床反力モーメント水平成分分配器110およびモデル操作床反力モーメント鉛直成分決定器111における前記の処理に用いられる。
この床反力モーメント水平成分許容範囲については、本願出願人によるPCT出願PCT/JP03/00435に床反力モーメント許容範囲として設定方法が詳細に記載されているので、本明細書では、これ以上の説明を省略する。
前記床反力モーメント鉛直成分補償量は、歩容生成装置100において、仮に、床反力モーメント鉛直成分が歩容生成用の床反力モーメント鉛直成分許容範囲(これはS3026において設定される)内に制限された目標歩容を生成した場合に、目標歩容の運動が発生する床反力モーメントに付加することができる床反力モーメント鉛直成分の補償量を意味する。したがって、歩容生成用の床反力モーメント鉛直成分許容範囲が実際の摩擦限界よりも十分に狭く設定されていなければ、床反力モーメント鉛直成分補償量許容範囲を広く設定することはできない。
床反力モーメント鉛直成分補償量許容範囲は、歩容生成用の床反力モーメント鉛直成分許容範囲(前記図41を参照)と相似形に設定すれば良い。また、前記図5の走行歩容の空中期では、コンプライアンス制御用の床反力モーメント鉛直成分補償量許容範囲は、上限値が0、下限値が0の領域に設定される。
図56に戻って、上記のごとくS3030においてコンプライアンス制御用の目標ZMPまわりの床反力モーメント水平成分と床反力モーメント鉛直成分補償量の許容範囲を規定するパラメータを決定した後、あるいはS3016の判断結果がNOである場合には、S3032に進み、今回歩容瞬時値が決定される。S3032では、目標ZMPまわりに前記式d27aに従って決定されるモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値が決定される。ただし、今回歩容に釣り合う(今回歩容の運動の慣性力と重力との合力が目標ZMPまわりに発生する慣性力モーメントの鉛直成分に釣り合う)床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲を越えないように今回歩容瞬時値が決定される。
具体的には、図57、図58のフローチャートにしたがって歩容瞬時値が決定される。すなわち、S3030では、まず、図57のS3400からS3411までの処理が実行される。これらのS3400からS3411までの処理は、前述した図45のS1400からS1411までの処理と全く同一である。
次いで、S3412に進み、前記図56のS3030で決定したコンプライアンス制御用の床反力モーメント水平成分許容範囲および床反力モーメント鉛直成分補償量許容範囲のパラメータを基に、現在時刻での床反力モーメント水平成分許容範囲[Mxymin,Mxymax]と床反力モーメント鉛直成分補償量許容範囲[Mzcmin,Mzcmax]の瞬時値(現在時刻tの今回値)が求められる。
求められた床反力モーメント水平成分許容範囲は、前記補償全床反力モーメント水平成分分配器110(図53参照)に送られる。そして、この分配器110で前記式d27aにより算出されたモデル操作床反力モーメントの今回値(現在時刻tの値)が歩容生成装置100に与えられる。
また、求められた床反力モーメント鉛直成分補償量許容範囲は、前記モデル操作床反力モーメント鉛直成分決定器111(図53参照)に送られる。そして、このモデル操作床反力モーメント鉛直成分決定器111で前記式d26bにより算出されたモデル操作床反力モーメント鉛直成分の今回値(現在時刻tの値)が歩容生成装置100に与えられる。
次いで、歩容生成装置100の処理は、S3414に進み、補償全床反力モーメント分配器110から与えられたモデル操作床反力モーメント水平成分が目標ZMPまわりに発生するように、今回歩容の上体水平加速度と上体姿勢傾斜角加速とが決定される。ただし、床反力水平成分Fxが、S3410で決定された床反力水平成分許容範囲[Fxmin,Fxmax]を越えないように上体水平加速度および上体姿勢角加速度(上体傾斜角加速度)が決定される。
言い換えると、ロボット1の運動の慣性力と重力との合力が目標ZMPまわりに作用するモーメント水平成分がモデル操作床反力モーメント水平成分の符号を反転したモーメントになるように、今回歩容の上体水平加速度と上体姿勢角加速(上体傾斜角加速度)とが決定される。ただし、慣性力水平成分の符号を反転した力が床反力水平成分許容範囲[Fxmin,Fxmax]を越えないように上体水平加速度および上体姿勢傾斜角加速度が決定される。
S3414では、具体的には、図58に示すフローチャートに従って、上体水平加速度と上体姿勢角加速度とが決定される。本フローチャートは、S3104およびS3130を除いて、前記図26と同様の処理が行われる。S3104およびS3130では、図26のS504およびS530と異なり、ロボット1の前回瞬時歩容状態(時刻k−1の歩容状態)から、上体傾斜モードの角加速度を0にして(より正確には上体傾斜モードの角加速度を基準上体姿勢角加速度に一致させて)、上体並進モードの運動をロボット1にさせた場合に今回(時刻k)の目標ZMPまわりに前記モデル操作床反力モーメント水平成分が発生するために必要な上体水平加速度(S3104ではαtmp、S3130ではα)が求められる。
これ以外の処理は図26の処理と同じである。
以上のごとくS3414の処理を行った後、S3416に進み、図45のS1414と同一の処理が実行され、今回歩容の上体水平位置および上体姿勢傾斜角(詳しくはそれらの現在時刻tにおける今回値)が決定される。
次いでS3418に進み、図45のS1416と同一の処理が実行され、今回歩容の逆位相腕振り角および角速度(詳しくはそれらの現在時刻tにおける今回値)が決定される。
これにより、図56のS3032の処理が完了する。
次いで図56のS3034に進み、目標ZMPまわりにモデル操作床反力モーメント鉛直成分が付加的に発生するように、S3032で生成した今回歩容瞬時値を修正する。
具体的には、モデル操作床反力モーメント鉛直成分に対応する逆位相腕振り角加速度の修正量βaaddを次式によって求める。

逆位相腕振り角加速度の修正量βaadd
=モデル操作床反力モーメント鉛直成分
/逆位相腕振り運動の等価慣性モーメントΔMaz

さらに、βaaddを制御周期の期間積分して、逆位相腕振り角速度の修正量を求め、さらにこれを積分して逆位相腕振り角の修正量を求める。
最後に、S3032で生成した今回歩容の逆位相腕振り角および角速度にそれぞれ、逆位相腕振り角速度の修正量および逆位相腕振り角の修正量を加えることにより、今回歩容の逆位相腕振り角および角速度を修正する。
次いでS3036に進み、時刻tに制御周期Δtを加え、再び、S3014に戻り、制御周期毎のタイマー割り込みを待つ。
第2参考例では、以上のごとく、歩容生成装置100における目標歩容生成処理が行なわれ、目標上体位置姿勢、目標足平位置姿勢、目標腕姿勢(逆位相腕振り角を含む)、目標ZMPおよび目標全床反力の瞬時値が逐次決定されて出力される。
この場合、目標全床反力は、コンプライアンス制御に必要な成分だけを出力しても良い。なお、目標ZMPは、目標全床反力に含まれるが特に重要であるので、あえて出力として挙げた。また、複合コンプライアンス制御装置(図53の点線で囲った部分)に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、コンプライアンス制御に対しては、目標ZMPまわりの床反力モーメント水平成分が0になることを目標とする目標床反力(本来の意味での目標ZMPを満足する目標床反力)が、歩容生成装置100から出力される。
また、複合コンプライアンス制御装置に対しては、S3034において修正された今回歩容の床反力モーメント鉛直成分が目標値として歩容生成装置100から出力される。
以上説明した第2参考例の作用1として、目標歩容の運動は、モデル操作床反力モーメント水平成分が目標ZMPまわりに発生するように生成されつつ、実際のロボッ1の床反力は、モデル操作床反力モーメント水平成分が付加されないように制御される。したがって、差し引きモデル操作床反力モーメント水平成分の分だけ、目標歩容の運動と床反力の不平衡(アンバランス)を生じる。このことは、実ロボット1の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を0に収束させる効果に関して言えば、モデル操作床反力モーメント水平成分の符号を反転した床反力モーメント水平成分を実ロボット1に作用させることと等価である。
つまり、モデル操作床反力モーメント水平成分を適宜決定することにより、実ロボット1を、修正目標歩容(実ロボット1の上体姿勢傾斜角と目標歩容の上体姿勢傾斜角との差を0に収束させる歩容)に収束させることができる。つまり、実ロボット1の姿勢傾斜を安定化させることができる。
作用2として、モデル操作床反力モーメント水平成分の符号を反転したモーメントとコンプライアンス制御用目標床反力モーメント水平成分との和がトータルの傾斜復元力(ロボット1の実上体姿勢傾斜角を目標上体姿勢傾斜角に復元させる力)になる。すなわち、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分との差がトータルの姿勢傾斜復元力になる。
また、作用3として、モデル操作床反力モーメント水平成分は、ZMP存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢傾斜復元力を発生することができる。
また、作用4として、床反力水平成分が、床反力水平成分許容範囲を越えないように上体並進モードの上体並進加速度と上体傾斜モードの上体姿勢傾斜角加速度とが決定されるので、走行歩容における支持脚側脚体2の離床直前や着床直後など、大きな床反力水平成分を発生できない時期や、摩擦係数の小さい床をロボット1が移動する場合においてもロボット1のスリップを防止することができる。
また、作用5として、床反力の並進力鉛直成分が0の時期、すなわち、両脚がいずれも接地していない時期では、床反力水平成分の許容範囲が0に設定されることにより、前記した第2参考例のアルゴリズムにより自動的に、上体並進モードに依存せずに上体傾斜モードに依存した姿勢傾斜復元が行われ、床と足底の間の摩擦力に依存せずに姿勢復元が行われる。したがって、この時期(空中期)においても、単に、上体並進モードを修正するだけの方式と異なり、有効に姿勢傾斜復元作用が働く。なお、この時には、床反力水平成分が0になるように生成されるから、歩容の全体重心水平加速度は0となる。
また、作用6として、上記したごとく、コンプライアンス制御に対しては、モデル操作床反力モーメント水平成分は、目標床反力として出力されない。すなわち、目標ZMPまわりにモデル操作床反力モーメント水平成分を発生させるように歩容生成が行なわれても、コンプライアンス制御に対しては、目標ZMPまわりの床反力モーメント水平成分が0になることを目標とする目標床反力が、歩容生成装置100から与えられる。したがって、コンプライアンス制御による床反力制御を妨げず、コンプライアンス制御による床反力制御を適切に行うことができる。より具体的には、足平22の本来の接地性が低下したり、足平22の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
なお、後述するように、第3参考例以降でも、目標ZMPまわりのコンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲を越えないように決定される。
なお、作用1から6は、本願出願人が先に提案したPCT/JP03/00435の技術と同様である。
作用7として、目標歩容の運動は、モデル操作床反力モーメント鉛直成分が目標ZMPまわりに付加的に発生するように生成されつつ、実際のロボット1の床反力は、歩容生成装置100によりモデル操作床反力モーメント鉛直成分が付加された目標歩容に釣り合う目標床反力モーメント鉛直成分に補償全床反力モーメント鉛直成分Mdmdzを加えたものを目標値として、複合コンプライアンス制御により前記目標値に近づくように実床反力が制御される。Mdmdzが大きくなってくると、Mdmdzと逆方向のモデル操作床反力モーメント鉛直成分が目標歩容に付加されることから、複合コンプライアンス制御により前記目標値に近づくように実床反力を制御するようにしても、実床反力のモーメントの鉛直成分が過大になることがなく、その結果、実ロボット1のスピンを生じることなく、実ロボット1の上体姿勢ヨー角及び/又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び/又はヨー角速度との差を0に収束させる効果を奏することができる。
つまり、モデル操作床反力モーメント鉛直成分を適宜決定することにより、実ロボット1を、そのスピンが生じないようにしつつ、修正目標歩容(実ロボット1の上体姿勢ヨー角及び/又は上体姿勢ヨー角速度と目標歩容の上体姿勢ヨー角及び/又は上体姿勢ヨー角速度との差を0に収束させる歩容)に収束させることができる。つまり、実ロボット1のヨー回転を安定化させることができる。
作用8として、補償全床反力モーメント鉛直成分Mdmdzがトータルのヨー回転復元力になる。補償全床反力モーメント鉛直成分Mdmdzはヨー角偏差および/またはヨー角速度偏差を0に近づけるようにフィードバック制御則に基づき決定されるので、ヨー角偏差の制御的な安定性が保証されつつ、ヨー角偏差および/またはヨー角速度偏差を0に近づけることができる。
また、作用9として、モデル操作床反力モーメント鉛直成分は、床反力モーメント鉛直成分の許容範囲(あるいは摩擦限界)を無視していかなる値でも取ることが可能であるので、非常に高い姿勢ヨー回転復元力を発生することができる。
また、作用10として、コンプライアンス制御に対しては、最終的に目標床反力モーメント鉛直成分が、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲の和の範囲を越えないように決定されるので、走行歩容における支持脚側脚体2の離床直前や着床直後など、大きな床反力モーメント鉛直成分を発生できない時期や、摩擦係数の小さい床をロボット1が移動する場合においてもコンプライアンス制御による床反力制御を適切に行うことができ、ロボット1のスピンを防止することができる。より具体的には、足平22の本来の接地性が低下したり、足平22の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
また、作用11として、床反力の並進力鉛直成分が0の時期、すなわち、両脚がいずれも接地していない時期では、床反力モーメント鉛直成分許容範囲と床反力モーメント鉛直成分補償量許容範囲が0に設定されることにより、前記した本第2参考例のアルゴリズムにより自動的に、実床反力モーメント鉛直成分に依存せずに逆位相腕振りモードに依存したヨー回転復元が行われ、床と足底の間の摩擦力に依存せずにヨー回転復元が行われる。したがって、この時期(空中期)においても、単に、コンプライアンス制御の目標床反力モーメント鉛直成分を修正するだけの方式と異なり、有効にヨー回転復元作用が働く。
作用12として、目標ZMPまわりに発生するモーメント水平成分が0になるように生成したとした場合の歩容を元歩容、前記第2参考例の如く目標ZMPまわりに発生するモーメント水平成分がモデル操作床反力モーメント水平成分になり、且つ、目標ZMPまわりに発生するモーメント鉛直成分に付加的にモデル操作床反力モーメント鉛直成分が発生するように生成される歩容を修正歩容と呼ぶと、通常、元歩容と修正歩容とは異なる歩容となる。元歩容は定常歩容に漸近するように設定されているので、修正歩容は、通常、定常歩容に漸近しない歩容となる。

しかし、今回歩容(修正歩容)の生成が完了した直後に、再びS3020からS3028が実行され、修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、新たに設定される定常歩容に漸近するように、新たな今回歩容パラメータが決定されるので、継続的に(長期的に)安定性が保証された歩容を生成し続けることができる。
上記した作用12は、本願出願人が先に提案したPCT/JP03/00435の技術とほぼ同様である。但し、これに加えて本第2参考例では、次のような作用も発生する。すなわち、ヨー角回転復元のために修正された逆位相腕振り角および角速度の終端状態を新たな初期状態とした新たな今回歩容の逆位相腕振り角軌道が新たに設定される定常歩容の逆位相腕振り角軌道に漸近するように、新たな今回歩容の逆位相腕振り角軌道に関するパラメータが決定されるので、継続的に(長期的に)逆位相腕振り角の安定性が保証された歩容を生成し続けることができる。
なお、本第2参考例では、補償全床反力モーメント水平成分Mdmdxyが床反力モーメント水平成分許容範囲内の値であるときには、モデル操作床反力モーメント水平成分は0になるが、このときのモデル操作床反力モーメント水平成分を図12の動力学モデルの状態量(例えば動力学モデル上でのロボットの重心位置や、上体質点3mの位置等)に応じて設定するようにしてもよい。
また、本第2参考例では、補償全床反力モーメント鉛直成分Mdmdzが床反力モーメント鉛直成分補償量許容範囲内の値であるときには、モデル操作床反力モーメント鉛直成分補償量は0になるが、このときのモデル操作床反力モーメント鉛直成分補償量を図12の動力学モデルの状態量(例えば動力学モデル上でのロボット1の逆位相腕振り角および角速度、上体ヨー角および角速度等)に応じて設定するようにしてもよい。


次に本発明の第3参考例を図59〜図62を参照して説明する。なお、第3参考例の説明において、前記第1参考例もしくは前記第2参考例と同一構成部分もしくは同一機能部分については前記第1参考例もしくは第2参考例と同一の参照符号を用いて説明を省略する。第3参考例は、前記第1参考例で前記図1〜図3および図5〜図12を参照して説明した事項は、前記第1参考例と同一である。
第3参考例が前記第1参考例および第2参考例と相違する点の概要を説明すると、元歩容と修正歩容が同時に生成される。修正歩容は、実ロボット1の上体姿勢(傾斜角およびヨー角)の安定化のために元歩容から修正される。さらに、該修正歩容は、コンプライアンス制御により姿勢復元に必要な床反力モーメントを発生してもまだ余裕がある(目標ZMPまわりに発生可能な床反力モーメントに余裕がある)場合には、この余裕を用いて、可能な範囲で元歩容に収束するように決定される。
第3参考例における制御ユニット60の機能的構成を表すブロック図を図59に示す。第3参考例では、姿勢傾斜安定化制御演算部112が求める補償全床反力モーメント水平成分Mdmdxyは、歩容生成装置100に入力される。
また、ヨー安定化制御演算部113が求める補償全床反力モーメント鉛直成分Mdmdzも、歩容生成装置100に入力される。
そして、このMdmdxyおよびMdmdzを基にモデル操作床反力モーメント(水平成分および鉛直成分)とコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)とを決定する補償全床反力モーメント分配器120が、歩容生成装置100に組み込まれ、該歩容生成装置100からコンプライアンス制御用目標床反力モーメントが複合コンプライアンス動作決定部104に出力される。そして、歩容生成装置100内の補償全床反力モーメント分配器120は後述するように、前記第2参考例の補償全床反力モーメント水平成分分配器110およびモデル操作床反力モーメント鉛直成分決定器111よりも複雑な処理を行う。これ以外の、制御ユニット60の機能的構成は、前記第2参考例と同一である。
図60に第3参考例における歩容生成装置100のメインルーチン処理のフローチャートを示す。
同図60において、S2010からS2028までは、前記第1参考例のメインフローチャート(図13)のS010からS028までの処理と同一の処理が行なわれる。なお、S028(本実施形態ではS2028)のサブルーチンである図43のフローチャートのS800における初期化においては、今回歩容初期状態は、前回修正歩容(歩容生成装置100が最終的に出力する歩容)の終端状態を今回歩容支持脚座標系に変換したものであり、後述のS2032で決定される元歩容の終端状態は、S2028のサブルーチンのS800では用いられない。
次いでS2030に進み、コンプライアンス制御用の床反力モーメント水平成分許容範囲を決定する。この床反力モーメント水平成分許容範囲の決定方法は、第2参考例のS3032(図56)と同様である。
S2030の処理を完了した後、あるいはS2016の判断結果がNOである場合には、S2032に進み、元歩容の瞬時値(時刻tの今回値)が決定される。元歩容は、目標ZMPまわりの床反力モーメント水平成分が0になるように生成される歩容である。
この元歩容は、前記第2参考例の図56のS3032のサブルーチン処理の一部を変更したアルゴリズムによって生成される。すなわち、S3032内のサブルーチン処理(詳しくはS3032のサブルーチン処理である図57のS3414のサブルーチン処理)である図58のS3104およびS3130において、モデル操作床反力モーメント水平成分を0として(目標ZMPまわりの目標床反力モーメント水平成分を0として)、上体水平加速度αtmpが求められる。これ以外の処理は、図56のS3032の処理と同一でよい。
次いで、S2034に進み、修正歩容の瞬時値を決定する。なお、修正歩容は、歩容生成装置100から最終的に出力される目標歩容である。
S2034の処理は、図61のフローチャートで示すサブルーチン処理により行なわれ、以下にその詳細を説明する。
まずS2100からS2111までは、第2参考例で説明した図57のS3400からS3411と同一の処理が実行される。
次いで、S2112に進み、歩容パラメータを基に現在時刻での床反力モーメント水平成分許容範囲[Mxymin,Mxymax]を求める。これは、図57のS3412での床反力モーメント水平成分許容範囲[Mxymin,Mxymax]の決定と同様に行われる。
次いで、S2114に進み、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント(水平成分および鉛直成分)、コンプライアンス制御用目標床反力モーメント、上体水平加速度、上体姿勢傾斜角加速および逆位相腕振り角加速度が決定される。
S2114の詳細を、その処理を示す図62のフローチャートを用いて、以下に説明する。
まず、S2200において、修正歩容の上体水平位置と元歩容の上体水平位置との差であるモデル間上体水平位置差が求められる。この時点では、修正歩容の上体水平位置の今回値(時刻tでの値)は未だ求められていない。そこで、S2200では、修正歩容の上体水平位置の前回値(時刻t−Δtの制御周期で最終的に求められた値)と、元歩容の上体水平位置の前回値(時刻t−Δtの制御周期でS2032において求められた値)あるいは今回値(時刻tの制御周期でS2032において求められた値)とを用いて、モデル間上体水平位置差が算出される。

次いで、S2202に進み、修正歩容の上体姿勢傾斜角と元歩容の上体姿勢傾斜角との差であるモデル間上体姿勢傾斜角差が求められる。このS2202では、S2200のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の上体姿勢傾斜角の前回値と、元歩容の上体姿勢傾斜角の前回値又は今回値とを用いてモデル間上体姿勢傾斜角差が求められる。
次いで、S2204に進み、修正歩容の逆位相腕振り角と元歩容の逆位相腕振り角との差であるモデル間逆位相腕振り角差が求められる。このS2204では、S2200のモデル間上体水平位置差の算出処理の場合と同様、修正歩容の逆位相腕振り角の前回値と、元歩容の逆位相腕振り角の前回値又は今回値とを用いてモデル間逆位相腕振り角差が求められる。
次いで、S2206に進み、モデル間上体水平位置差を基に、その差を0に収束させるために必要なモデル上体水平位置安定化床反力モーメント要求値Mpfdmdが決定される。単に修正歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントに一致させると、モデル間上体水平位置差は発散する。モデル上体水平位置安定化床反力モーメント要求値Mpfdmdは、前記上体並進モードによって修正歩容の上体水平位置を元歩容の上体水平位置に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル上体水平位置安定化床反力モーメント要求値Mpfdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、PD制御則を用いているが、PID等、他のフィードバック制御則を用いてもよい。

Mpfdmd=Kmp*モデル間上体水平位置差
+Kmpv*モデル間上体水平位置差の時間微分値
……式d28
但し、Kmp、Kmpvはフィードバックゲイン(比例ゲイン、微分ゲイン)である。

次いで、S2208に進み、モデル間上体姿勢傾斜角差を基に、その差を0に収束させるために必要なモデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdが決定される。単に修正歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントに一致させると、モデル間上体姿勢傾斜角差は0に収束しない。モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdは、上体傾斜モードによって修正歩容の上体姿勢傾斜角を元歩容の上体姿勢傾斜角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の上体傾斜モードの上体姿勢傾斜角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、PD制御則を用いているが、PID等、他のフィードバック制御則を用いてもよい。

Mrfdmd=Kmr*モデル間上体姿勢傾斜角差
+Kmrv*モデル間上体姿勢傾斜角差の時間微分値
……式d29
但し、Kmr、Kmrvはフィードバックゲイン(比例ゲイン、微分ゲイン)である。

次いで、S2210に進み、モデル間逆位相腕振り角差を基に、その差を0に収束させるために必要なモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdが決定される。単に修正歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントに一致させると、モデル間逆位相腕振り角差は0に収束しない。モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdは、逆位相腕振りモードによって修正歩容の逆位相腕振り角を元歩容の逆位相腕振り角に戻すよう動作を行った時に、これに伴って発生する床反力モーメントから元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメントを減じたモーメントとしての意味を持つ。
具体的には、モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdは、例えば次式のフィードバック制御則によって決定される。この例では、フィードバック制御則として、PD制御則を用いているが、PID等、他のフィードバック制御則を用いてもよい。

Mafdmd=Ka*モデル間逆位相腕振り角差
+Kav*モデル間逆位相腕振り角差の時間微分値
……式d29b
但し、Kar、Kavはフィードバックゲイン(比例ゲイン、微分ゲイン)である。

ところで、最終的に決定された修正歩容の上体並進モードに伴って発生する床反力モーメント水平成分から元歩容の上体並進モードの上体水平加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体水平位置安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の上体傾斜運動モードに伴って発生する床反力モーメント水平成分から元歩容の上体傾斜運動モードの上体姿勢傾斜角加速度を発生させる床反力モーメント水平成分を減じたモーメントを、モデル上体姿勢傾斜角安定化床反力モーメントと呼ぶ。また、最終的に決定された修正歩容の逆位相腕振りモードに伴って発生する床反力モーメント鉛直成分から元歩容の逆位相腕振りモードの逆位相腕振り角加速度を発生させる床反力モーメント鉛直成分を減じたモーメントを、モデル逆位相腕振り角安定化床反力モーメントと呼ぶ。
一方、摂動運動と摂動床反力とには線形性が近似的に成立する、すなわち、異なる摂動運動を元歩容の運動に加えた運動の床反力は、元歩容の床反力にそれぞれの摂動運動が発生する摂動床反力を加えたものにほぼ一致する。また、逆位相腕振りモードでは、床反力モーメント水平成分は変化しない。したがって、次式が近似的に成立する。

モデル操作床反力モーメント水平成分
=モデル上体水平位置安定化床反力モーメント
+モデル上体姿勢傾斜角安定化床反力モーメント
……式d30

この式d30が近似的に成立することと、逆位相腕振り角加速度に比例して床反力モーメント鉛直成分が変化することとを考慮しつつ、モデル上体水平位置安定化床反力モーメントをモデル上体水平位置安定化床反力モーメント要求値Mpfdmdに一致またはなるべく近くなるように決定し、かつ、モデル上体姿勢傾斜角安定化床反力モーメントをモデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdに一致またはなるべく近くなるように決定しつつ、かつ、モデル逆位相腕振り角安定化床反力モーメントをモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdに一致またはなるべく近くなるように決定すれば、修正歩容に適切なモデル操作床反力モーメントを発生させて、以下に示す復元条件を満足しつつ、修正歩容の上体水平加速度と上体姿勢傾斜角加速度とを、それぞれ元歩容の上体水平加速度と上体姿勢傾斜角加速度とに可能な範囲で収束させることができる。
そこで、S2210の後、S2212に進み、以下の条件(これらを復元条件と呼ぶ)をできる限り満足するようにモデル上体水平位置安定化床反力モーメント(上体並進モードの床反力モーメント)とモデル上体姿勢傾斜角安定化床反力モーメント(上体傾斜モードの床反力モーメント)とモデル逆位相腕振り角安定化床反力モーメントとを決定する。さらに、上記のモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとモデル逆位相腕振り角安定化床反力モーメントとの定義を満足するように、修正歩容の上体水平加速度と上体姿勢傾斜角加速度と逆位相腕振り角加速度とを決定する。なお、以下に示す復元条件は、番号が小さい条件ほど優先度が高いものとする。つまり相反して両立できない条件がある場合には、番号が小さい条件を優先して満足(成立)させる。ただし、復元条件1、2および3は必ず満足(成立)させる。
復元条件1)補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメントの和(これは、前記式d27bが成立する場合には、コンプライアンス制御用目標床反力モーメント水平成分に相当する)が床反力モーメント水平成分許容範囲を越えないこと。
復元条件2)修正歩容の床反力水平成分が床反力水平成分許容範囲を越えないこと。
復元条件3)修正歩容の床反力モーメント鉛直成分と補償全床反力モーメント鉛直成分Mdmdzの和(これは、コンプライアンス制御用目標床反力モーメント鉛直成分に相当する)が、床反力モーメント鉛直成分許容範囲を越えないこと。
復元条件4)モデル上体姿勢傾斜角安定化床反力モーメントが、モデル上体姿勢傾斜角安定化床反力モーメント要求値Mrfdmdに一致またはできる限り近いこと。この条件は、修正歩容の上体姿勢傾斜角が元歩容(当初予定した歩容)の上体姿勢傾斜角に収束するための条件である。
復元条件5)モデル上体水平位置安定化床反力モーメントが、モデル上体水平位置安定化床反力モーメント要求値Mpfdmdに一致またはできる限り近いこと。この条件は、修正歩容の上体水平位置が元歩容(当初予定した歩容)の上体水平位置に収束するための条件である。
復元条件6)モデル逆位相腕振り角安定化床反力モーメントが、モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdに一致またはできる限り近いこと。この条件は、修正歩容の逆位相腕振り角が元歩容(当初予定した歩容)の逆位相腕振り角に収束するための条件である。
復元条件7)モデル上体姿勢傾斜角安定化床反力モーメント、モデル上体水平位置安定化床反力モーメントおよびモデル逆位相腕振り角安定化床反力モーメントがそれぞれ連続であること。
上記のような復元条件1〜6を満足するような上体水平加速度、上体姿勢傾斜角加速度、逆位相腕振り角加速度等を決定するS2212の処理は具体的には例えば次のように実行される。
まず、上記復元条件1、2、4および5を満足するように、モデル上体水平位置安定化床反力モーメントおよびモデル上体姿勢傾斜角安定化床反力モーメントが決定され、さらに上体水平加速度および上体姿勢傾斜角加速度が決定される。この処理の詳細は、本願出願人が先に提案したPCT/JP03/00435の技術に記載されているので、ここでは説明を省略する。
次いで、上記復元条件3および6を満足するようにモデル逆位相腕振り安定化床反力モーメントが決定され、さらに逆位相腕振り角加速度が決定される。
具体的には、上記のごとく決定された上体水平加速度および上体姿勢傾斜角加速度と元歩容の逆位相腕振り角加速度βaorgで仮に運動した場合に発生する(運動に動力学的に釣り合う)目標ZMPまわりの床反力モーメント鉛直成分を求める。以降、これを無補正時床反力モーメント鉛直成分と呼ぶ。
次いで、次式のように、無補正時床反力モーメント鉛直成分とモデル逆位相腕振り角安定化床反力モーメント要求値Mafdmdと補償全床反力モーメント鉛直成分Mdmdzとの和Msumzを求める。

Msumz=無補正時床反力モーメント鉛直成分
+Mafdmd+Mdmdz

次いで、次式により、モデル逆位相腕振り安定化床反力モーメントが決定される。

Msumz>床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント=−Mdmdz
−無補正時床反力モーメント鉛直成分
+床反力モーメント鉛直成分許容範囲上限値

Msumz<床反力モーメント鉛直成分許容範囲下限値である場合
モデル逆位相腕振り安定化床反力モーメント=−Mdmdz
−無補正時床反力モーメント鉛直成分
+床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Msumz、且つ、Msumz≦床反力モーメント鉛直成分許容範囲上限値である場合
モデル逆位相腕振り安定化床反力モーメント
=モデル逆位相腕振り角安定化床反力モーメント要求値Mafdmd
……式d26c

次いで、修正歩容の逆位相腕振り角加速度が次式によって求められる。

修正歩容の逆位相腕振り角加速度
=元歩容の逆位相腕振り角加速度βaorg
+モデル逆位相腕振り安定化床反力モーメント
/腕振り運動の等価慣性モーメントΔMaz

修正歩容の床反力モーメント鉛直成分は、元歩容の逆位相腕振り角加速度βaorgとモデル逆位相腕振り安定化床反力モーメントの和であることから、上式のごとくモデル逆位相腕振り安定化床反力モーメントを決定することにより、上記復元条件3が満足される。
上述したようにS2212の処理を実行した後、S2214に進み、前記式d30により、モデル操作床反力モーメント水平成分が決定される。すなわち、S2208で求めたモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントとの和がモデル操作床反力モーメント水平成分として決定される。なお、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ZMPまわりの床反力モーメントを直接算出して、これをもってモデル操作床反力モーメントとしても良い。
次いで、S2216に進み、前記式d27bにより、コンプライアンス制御用目標床反力モーメント水平成分が決定される。すなわち、補償全床反力モーメント水平成分MdmdxyとS2214で求めたモデル操作床反力モーメント水平成分との和がコンプライアンス制御用目標床反力モーメント水平成分として決定される。
次いで、S2218に進み、図示する式によって、コンプライアンス制御用目標床反力モーメント鉛直成分を決定する。なお、図示する式における修正歩容に釣り合う(修正歩容の運動に動力学的に釣り合う)床反力モーメント鉛直成分は、無補正時床反力モーメント鉛直成分とモデル逆位相腕振り安定化床反力モーメントの和であるが、最終的に決定される修正歩容の運動の今回瞬時値に基づいて目標ZMPまわりの床反力モーメント鉛直成分を直接算出しても良い。
以上により、図61のS2114の処理が終了し、次に、S2116に進む。このS2116の処理は、前記第2参考例における図57のS3416と同一であり、上体水平加速度の2階積分により上体水平位置の今回値が決定されると共に、上体姿勢傾斜角加速度の2階積分により上体姿勢傾斜角の今回値が決定される。
次に、S2118に進む。このS2118の処理は、前記第1実施形態における図57のS3418と同一であり、逆位相腕振り角加速度の2階積分により逆位相腕振り角の今回値が決定される。
次いで、図60のS2036に進んで、時刻tに制御周期Δtを加え、再び、S2014に戻り、制御周期毎のタイマー割り込みを待つ。
補足すると、第3参考例における動力学モデルによる歩容瞬時値決定においては、動力学モデルの状態量(あるいは前回、前前回の歩容瞬時値)も必要であるので、修正歩容生成用と元歩容生成用との2つの動力学モデルが必要である。第3参考例では、それらの動力学モデルは図12に示した動力学モデルである。
本実施形態においては、上記のごとく、元歩容と修正歩容とが並列的に生成され、修正歩容は、実ロボット1の姿勢(傾斜角およびヨー角)安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント(水平成分および鉛直成分)を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、前記第2参考例の作用効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止することが可能となる。また、修正歩容の上体姿勢傾斜角が元歩容(当初決定した歩容)の上体姿勢傾斜角に収束することを、修正歩容の上体水平位置が元歩容(当初決定した歩容)の上体水平位置に収束することよりも優先した(床反力水平成分許容範囲を満たす範囲で可能な限り上体並進モードの運動を調整した)ので、上体姿勢傾斜角が大きく変動することを抑制することができる。


次に第4参考例を図63〜図70を参照して説明する。なお、本第4参考例の説明で、前記第1〜第3参考例と同一構成部分もしくは同一機能部分については該第1〜第3参考例と同一の参照符号を用いて詳細な説明を省略する。
本第4参考例では、制御ユニット60の機能的構成は、前記第3参考例のもの、すなわち前記図59に示したものと同一である。但し、第4参考例では、歩容生成装置100が実行する歩容生成のアルゴリズムは、前記第3参考例のものと相違している。そして、歩容生成装置100以外の各部の処理は、前記第3参考例と同一である。
図63は、本実施形態における歩容生成装置100の処理の概要を示すブロック図である。この図63を参照して、歩容生成装置100の処理の概要を以下に説明する。なお、図63を用いて以下に説明する処理の概要は、後述する第5〜第7参考例についても同様である。また、第4参考例および後述の第5〜第7参考例では、前記図12の動力学モデルを単純化モデルと称する。
図示の如く、歩容生成装置100は歩容パラメータ決定部100aを備える。歩容パラメータ決定部100aは、目標歩容のパラメータ(目標歩容を規定するパラメータ)の値あるいは時系列テーブルを決定する。これは、後述の図65のフローチャートのS3520からS3530までの処理に相当する。
詳細は後述するが、歩容パラメータ決定部100aが決定するパラメータには、目標足平位置姿勢軌道、目標腕姿勢軌道、基準上体姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道等を規定するパラメータが含まれる他、床反力水平成分許容範囲を規定するパラメータと、ZMP許容範囲(もしくは床反力モーメント水平成分許容範囲)を規定するパラメータと、床反力モーメント鉛直成分許容範囲を規定するパラメータとが含まれる。この場合、第4参考例で設定する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲は、後述のS3526の処理で設定される単純化モデル歩容用のものと、S3530で設定される歩容補正用のものとの2種類がある。一方、ZMP許容範囲(もしくは床反力モーメント水平成分許容範囲)は、S3530の処理で設定されるフルモデル補正用(歩容補正用)のものだけである。なお、第4参考例では、S3530ではZMP許容範囲を規定するパラメータを設定するが、これは、床反力モーメント水平成分許容範囲を規定するパラメータと設定することと同等である。これは、前記第2参考例の図56のS3030に関して説明した如く、床反力モーメント水平成分を、目標床反力鉛直成分で割ったものが、ZMP(床反力中心点)の目標ZMPからのずれ量を表すものとなるからである。
ここで、第4参考例で設定するZMP許容範囲は、図64の如く設定される。詳細は、PCT/JP03/00435に詳細に記載されているのでここでは、これ以上の説明を省略する。
歩容パラメータ決定部100aで決定された歩容パラメータは目標瞬時値発生部100bに入力される。目標瞬時値発生部100bは入力された歩容パラメータに基づき、目標足平位置姿勢、目標ZMP、目標床反力鉛直成分、目標腕姿勢、目標全体重心鉛直位置、目標上体鉛直位置、床反力水平成分許容範囲、ZMP許容範囲、基準上体姿勢角および基準逆位相腕振り角の、現在時刻tにおける瞬時値を逐次算出(発生)する(図63では一部の目標瞬時値のみを記載している)。この目標瞬時値発生部100bの処理は、後述の図65のフローチャートS3532の処理のなかで実行される図57のS3400〜S3412の処理、並びに、図65のS3534の処理に相当する。なお、第4参考例では、目標瞬時値発生部100bが算出する目標瞬時値のうち、一部の瞬時値(具体的には目標上体鉛直位置の瞬時値)は仮値であり、後に修正される。また、目標瞬時値発生部100bが算出する床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の瞬時値は、単純化モデル歩容用の瞬時値と歩容補正用の瞬時値とがある。
目標瞬時値発生部100bで算出(発生)された目標瞬時値(一部は仮瞬時値)は、フルモデル補正部100cに入力される。また、フルモデル補正部100cには、前記姿勢傾斜安定化制御演算部112(図59を参照)で求められる補償全床反力モーメント水平成分Mdmdxyおよび前記ヨー安定化制御演算部113(図59を参照)で求められる補償全床反力モーメント鉛直成分Mdmdzも入力される。フルモデル補正部100cは、動力学モデルとして、単純化モデル100c1とフルモデル100c2とを備える。該フルモデル補正部100cは、単純化モデル100c1に基づいて、入力値から目標上体位置姿勢および逆位相腕振り角の仮瞬時値等を決定すると共に、さらに決定された上体位置姿勢および逆位相腕振り角の仮瞬時値等をフルモデル100c2を用いて修正する。
尚、単純化モデル100c1をフルモデル補正部100cに含ませない構成も可能である。また、フルモデル100c2は、後述するように、逆フルモデル(逆動力学フルモデル)と順フルモデル(順動力学フルモデル)とのいずれかを含む。
フルモデル補正部100cは、基本的には、次のA1〜A4の条件を満足するように、Bの処理を実行する。すなわち、フルモデル補正部100cは、
A1)フルモデル補正部100cにより生成される補正歩容の運動に釣り合う床反力モーメントに補償全床反力モーメント水平成分Mdmdxyと補償全床反力モーメント鉛直成分Mdmdzとを加えたものがフルモデル補正部100cから出力するコンプライアンス制御用床反力モーメントに一致する。
A2)真のZMP(目標ZMPのまわりにコンプライアンス制御用目標床反力モーメントを発生させることによって修正された本来の定義を満足するZMP)は、ZMP許容範囲(安定余裕が十分維持できる許容範囲)に存在する。
A3)床反力水平成分は歩容補正用の床反力水平成分許容範囲内にある。
A4)目標ZMPのまわりに発生すべきコンプライアンス制御用目標床反力モーメント鉛直成分が床反力モーメント鉛直成分許容範囲内にある。
という条件を満足するように、
B)単純化モデルを用いて決定された単純化モデル歩容の上体位置姿勢を補正すると共に、目標ZMPまわりのコンプライアンス制御用目標床反力モーメントを出力する。
なお、上記条件A2は、目標ZMPまわりに発生させる床反力モーメントをZMP許容範囲に対応する床反力モーメント水平成分許容範囲内に収めることと同等である。
ここで、上記単純化モデル100c1とフルモデル100c2とについて説明しておく。単純化モデル100c1は、動力学的精度よりも、演算量低減や挙動解析のし易さに重点を置いた動力学モデルであり、動力学的に一部無視があったり(例えば、重心まわりの角運動量変化を無視したり)、矛盾があるもの(厳密さを欠くもの)でも良い。第4参考例では前記第1参考例で説明した図12の動力学モデル(前記式01〜05で記述される動力学モデル)が単純化モデル100c1として用いられる。
また、フルモデル100c2は、単純化モデル100c1とは異なるロボット動力学モデルを意味する。これは、単純化モデル100c1よりも近似精度の高いロボット動力学モデルであることが望ましい。図示例で説明すれば、第4参考例では先に述べたように前記図12に示した動力学モデルを単純化モデル100c1として用いるので、それよりも、近似精度の高い動力学モデル、例えば前記図49に示した多質点モデル(ロボット1の各リンクにそれぞれ質点を有するモデル)のようなロボット動力学モデルをフルモデル100c2として用いることが望ましい。この場合、該フルモデル100c2は、質点のまわりに慣性モーメントを設定するものであっても良い。
しかし、単純化モデル100c1とフルモデル100c2とは、必ずしもモデルの近似精度が異なる必要はない。単純化モデル100c1とフルモデル100c2とは、動力学方程式が同じで、床反力水平成分許容範囲およびまたは床反力モーメント鉛直成分許容範囲が異なっている、すなわち、単純化モデル歩容用の許容範囲と、歩容補正用(フルモデル補正用)の許容範囲とが異なっているだけでも良い。たとえば、単純化モデル100c1を用いた歩容を生成する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を大きくとり(摩擦限界を越えていても良い)、フルモデル100c2を用いて歩容を修正する際の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲をロボット1のスリップもしくはスピンが発生しにくいように狭く設定するだけでも良い。
尚、この明細書において、目標足平位置姿勢、目標床反力(特に、目標ZMPと目標床反力鉛直成分)に基づいて(入力して)上体位置姿勢および逆位相腕振り角を算出する(出力させる)のに使用するモデルを「順動力学モデル」と呼び、目標足平位置姿勢、目標上体姿勢、目標上体位置および逆位相腕振り角に基づいて(入力して)床反力(特に、目標ZMPもしくは目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)と床反力水平成分)を算出する(出力させる)のに使用するモデルを「逆動力学モデル」と呼ぶ。順動力学モデルの入力には、少なくとも目標床反力が含まれ、逆動力学モデルの入力には、少なくとも目標運動が含まれる。
フルモデル補正部100cが備えるフルモデル100c2は、逆動力学フルモデル(しばしば「逆フルモデル」と略称)または順動力学フルモデル(しばしば「順フルモデル」と略称)を備える。一般的には、逆動力学モデルの演算に比べ、順動力学モデルの演算は、演算量が多くなりがちである。
以上が第4参考例での歩容生成装置100における処理の概要である。
次に、第4参考例における歩容生成装置100の処理を詳説する。第4参考例における歩容生成装置100は、図65のフローチャートに示す処理を実行して、歩容を生成する。
まず、S3510からS3528までにて、前記第2参考例で説明した図56のS3010からS3028までの処理と同一の処理が実行される。なお、S3026のサブルーチンである図39のS608で決定する今回歩容の床反力水平成分許容範囲およびS610で決定する床反力モーメント鉛直成分許容範囲は、前記第1参考例〜第3参考例の場合よりも厳密に摩擦力限界を考慮せずともよく、摩擦力限界を超えるような範囲に設定してもよい。これは、後述するフルモデル補正によって、床反力水平成分および床反力モーメント鉛直成分は最終的にフルモデル補正用の床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲によって制限されることとなるからである。
次いで、S3530に進み、フルモデル補正用(歩容補正用)の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とZMP許容範囲(床反力中心点許容範囲)とをそれぞれ規定するパラメータを決定する。この場合、フルモデル補正用の床反力水平成分許容範囲は、例えば前記単純化モデル歩容用の床反力水平成分許容範囲と同様、X軸方向(前後方向)、Y軸方向(左右方向)のそれぞれについて、床反力鉛直成分軌道と、前記式12とに基づいて、前記図30に示したようなパターンに設定される。そして、例えば、前記式12のka*μの値がフルモデル補正用の床反力水平成分許容範囲を規定するパラメータとして設定される。但し、この床反力水平成分許容範囲は、式12の係数kaの値を、単純化モデル歩容用の床反力水平成分許容範囲よりも小さめに設定する等して、確実に摩擦限界内の範囲に設定することが望ましい。
床反力モーメント鉛直成分許容範囲に関しても床反力水平成分許容範囲と同様に設定される。すなわち、前記式1012に基づいて、前記図41に示したようなパターンに設定される。
また、ZMP許容範囲は、前記第2参考例における図56のS3030で床反力モーメント水平成分許容範囲の設定に関して説明した場合と同様に設定される。なお、ZMP許容範囲に目標床反力鉛直成分を乗じることで、ZMP許容範囲をこれと等価な床反力モーメント水平成分許容範囲に変換してもよいことはもちろんである。
次いで、S3532に進み今回歩容瞬時値(現在時刻tの値)が前記単純化モデル(図12の動力学モデル)を用いて決定される。このS3532の処理は、前記第1参考例における図13のS030の処理と同一である。
以上説明したS3532までの処理によって生成された現在時刻tにおける歩容の瞬時値を、以降、単純化モデル歩容瞬時値という。第4参考例では、この単純化モデル歩容瞬時値は、単純化モデル(図12の動力学モデル)を用いて、ロボット1にその運動によって発生する慣性力と重力との合力が目標ZMPまわりに発生する床反力モーメント水平成分が0になるように(目標ZMPに関する動力学的平衡条件を満たすように)決定される。
この場合、単純化モデル歩容瞬時値のうちの、上体水平位置および上体姿勢傾斜角の瞬時値と、上体鉛直位置の瞬時値と、逆位相腕振り角の瞬時値とは仮瞬時値であり、後述するフルモデル補正によって補正されるものである。また、第4参考例における単純化モデル歩容瞬時値のうち、目標ZMPまわりの目標床反力モーメント水平成分の瞬時値は定常的に0であるが、後述するフルモデル補正によって目標ZMPまわりに発生させる床反力モーメント水平成分の目標値としてのコンプライアンス制御用目標床反力モーメント水平成分が生成される。
次に、S3534に進み、歩容補正用(フルモデル補正用)の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とZMP許容範囲を規定するパラメータ(S3530で設定したもの)を基に、歩容補正用の床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲とZMP許容範囲との瞬時値(現在時刻tの値)が求められる。
次いで、S3536に進み、フルモデルを用いて補正歩容の発生(歩容の補正)を行い、最終的な目標歩容の瞬時値が決定される。すなわち、前記図63を参照して説明したように、補正目標上体位置姿勢、補正目標逆位相腕振り角や、目標ZMPまわりの目標床反力モーメント(水平成分および鉛直成分)としてのコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)の算出(決定)などが実行される。
次いで、S3538に進み、時刻tをΔtだけ増やし、再びS3514に戻り、S3514からS3538までの処理が繰り返される。
上記S3536の処理は、第4参考例の特徴をなす部分であり、以下にその処理を詳説する。第4参考例に係る装置の歩容補正手法は、フルモデルフィードフォワード補正型である。また、逆動力学フルモデル(逆フルモデル)を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
図66は、第4参考例に係る歩容生成装置100の動作、具体的には、図65のフロー・チャートのS3536の歩容の修正手法を説明する機能ブロック図である。ただし、図66の単純化モデル200は、単に動力学モデルだけでなく、前述のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表す。したがって、図66において、単純化モデル200から先の部分がS3536の処理に相当する。
尚、歩容補正用(フルモデル補正用)の床反力水平成分許容範囲とZMP許容範囲の瞬時値を決定する処理は、図65のフローチャートの参照符号S3534を用いて示している。
実際の処理はひとつのコンピュータで実行されるので、ブロック図を離散化した後、ブロック図の上流側から下流側(歩容出力側)に向かって順に実行される。ただし、上流側に戻るフィードバック量は、前回制御周期(現在時刻tに対して時刻t−Δt)に算出した値(状態量)を用いることとする。尚、以降、前回制御周期(時刻t−Δt)に算出した値を前回値と略す。
S3536の処理が実行される毎に、ブロック図の1制御周期分の演算が実行される。
S3536では、まず、上記のごとく得られた単純化モデル歩容の目標上体姿勢角(以降、単純化モデル上体姿勢角と呼ぶ。また、このうちの傾斜角成分を単純化モデル上体姿勢傾斜角と呼ぶ。)、目標上体水平位置(以降、単純化モデル上体水平位置と呼ぶ)、目標重心位置、目標足平位置姿勢、目標腕姿勢(目標逆位相腕振り角を含む)などの運動を表す変数(これを運動変数と呼ぶ)の瞬時値と、目標ZMPの瞬時値とが前記逆動力学フルモデル(逆フルモデル)201に入力される。入力された運動変数で表される運動に釣り合う(すなわち運動によってフルモデルが発生する)床反力水平成分と目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)が、逆フルモデル201の演算処理によって算出される。なお、第4参考例では、単純化モデル歩容における目標ZMPまわりの床反力モーメント水平成分は0であるので、逆フルモデル201によって算出される目標ZMPまわりの床反力モーメント水平成分は、単純化モデル歩容の誤差としての意味を持つものである。
なお、逆フルモデル201により求められた床反力水平成分と床反力モーメント水平成分と床反力モーメント鉛直成分とをそれぞれ「フルモデル床反力水平成分」、「フルモデル床反力モーメント水平成分」、「フルモデル床反力モーメント鉛直成分」と呼ぶ。また、以降、しばしば、フルモデル床反力水平成分をFfull、フルモデル床反力モーメント水平成分をMfullxy、フルモデル床反力モーメント鉛直成分をMfullz、と略す。
また、前記逆フルモデル201は、目標重心位置を満足する上体鉛直位置を算出する。さらに、図示は省略しているが、逆フルモデル201は、重心水平位置も算出する。
補足すると、フルモデルには目標全体重心鉛直位置を入力しており、また目標床反力鉛直成分は目標全体重心鉛直位置の2階微分値から求められるので、フルモデルには、特に目標床反力鉛直成分を入力する必要はない。冗長であっても演算を減らすためなどの理由で、フルモデルに目標床反力鉛直成分を入力しても良い。
ここで、歩容補正に用いられる摂動モデルについて説明する。
摂動モデルは、上体水平位置補正用摂動モデル202、上体姿勢傾斜角補正用摂動モデル203および逆位相腕振り角補正用摂動モデル231から成る。尚、摂動モデルは、このように3つのモデルに分離しないで、図12のようなひとつのモデルにしても良い。また、上体姿勢傾斜角補正用摂動モデル203は図では上体姿勢角補正用摂動モデル203と略す。
上体水平位置補正用摂動モデル202は、前記上体並進モードにおける床反力の摂動と上体水平位置の摂動との関係を表す。
上体水平位置補正用摂動モデル202は、目標床反力モーメントの補正量を入力し、これに動力学的に釣り合う目標上体水平位置の補正量を算出する。この入力(目標床反力モーメントの補正量)を、上体水平位置補正用摂動モデルモーメントMpと呼ぶ。また、上体水平位置補正用摂動モデル202の出力(目標上体水平位置の補正量)を、補正用摂動モデル上体水平位置Xcと呼ぶ。また、上体水平位置補正用摂動モデル202が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Fpと呼ぶ。
上体水平位置補正用摂動モデル202は、図67のように、支点と倒立振子質点(上体質点)とこれらを結合する伸縮自在な支持棒から成る倒立振子で表される。支点の水平位置は前記した今回歩容の支持脚座標系の原点の水平位置に一致し、支点の鉛直位置は目標ZMPの鉛直位置に一致するように支点の位置が設定されている。倒立振子質点の質量mbは、図12に示す前記単純化モデル(3質点+フライホイールのモデル)の上体質点質量と同じである。倒立振子質点の鉛直位置Zcは、単純化歩容に対応する図12に示す単純化モデルの上体質点位置の鉛直位置Zbと同一とする。
この上体水平位置補正用摂動モデル202は、前記単純化モデルにおいて、床反力モーメントの摂動ΔMyと上体質点水平位置の摂動ΔXbとの関係を表す。
そこで、My、Xb、Zb以外は定数とみなして、床反力モーメントの摂動ΔMyと上体質点水平位置の摂動ΔXbとの関係を前記式03yから求めると、次式が得られる。

ΔMy=−mb*ΔXb*(g+d2Zb/dt2)+mb*(Zb−Zzmp)*d2ΔXb/dt2
…式a12

同様に、Fx、Xb以外は定数とみなして、床反力水平成分の摂動ΔFxと上体質点水平位置の摂動ΔXbの関係を前記式02xから求めると、次式が得られる。

ΔFx=mb*d2ΔXb/dt2 …式a13

上体水平加速度によって発生するΔMpとΔFpの比である上体並進モード床反力比率hは、式a12の右辺のうちの上体水平加速度によって発生する項(すなわち第2項)と式a13との比であるから、次式が得られる。

h=(Zb−Zzmp) …式a14

すなわち、上体並進モード床反力比率hは、単純化モデルの上体質点(倒立振子質点)の支点からの高さに相当する。
よって、式a12と式a14とより次式が得られる。

ΔMy=−mb*ΔXb*(g+d2Zb/dt2)+mb*h*d2ΔXb/dt2 …式a15

一方、上体質点(倒立振子質点)に作用する重力と慣性力との合力の並進力鉛直成分に釣り合う床反力鉛直成分を上体床反力鉛直成分Fbzと呼ぶ。すなわち、上体床反力鉛直成分Fbzは、次式で定義される。

Fbz=mb*(g+d2Zb/dt2) …式a16

そして、この式a16と前記式01とから、上体床反力鉛直成分Fbzは次式となる。
Fbz=Fz−msup*(g+d2Zsup/dt2)−mswg*(g+d2Zswg/dt2)
…式a17

言い換えると、上体床反力鉛直成分は、床反力鉛直成分Fzと図12に示す前記単純化モデル(3質点+フライホイールのモデル)の両脚質点に作用する重力と慣性力との合力の並進力鉛直成分との和に等しい。
式a16を式a15に代入することにより、次式が得られる。

ΔMy=−Fbz*ΔXb+mb*h*d2ΔXb/dt2 …式a18

式a18のΔMyを上体水平位置補正用摂動モデルモーメントMp、ΔXbを補正用摂動モデル上体水平位置Xcに対応させることにより(式a18のΔMyに上体水平位置補正用摂動モデルモーメントMp、ΔXbに補正用摂動モデル上体水平位置Xcを代入することにより)、次式が得られる。

Mp=−Fbz*Xc+mb*h*d2Xc/dt2 …式a19

すなわち、上体水平位置補正用摂動モデル202は、式a14によって求められる上体並進モード床反力比率hと式a17によって求められる上体床反力鉛直成分Fbzを用いて、式a19で表される。
また、式a13のΔFxを上体水平位置補正用摂動モデル床反力水平成分Fpに対応させることにより、次式が得られる。
Fp=mb*d2Xc/dt2 …式a20

すなわち、式a14、式a17、式a19、式a20によって上体水平位置補正用摂動モデル202が記述される。
補足すると、ここでは、上体質点位置の摂動と上体位置(上体代表点位置)の摂動は一致するものとみなしているが、厳密には、一致するとは限らない。従って、Mp、FpとXcの関係を求めるためには、さらに上体質点水平位置と上体位置の幾何学的関係を表すモデルが必要である。
一方、上体姿勢傾斜角補正用摂動モデル203は、前記上体傾斜モードにおける床反力の摂動と上体姿勢傾斜角の摂動の関係を表す。
上体姿勢傾斜角補正用摂動モデル203は、床反力モーメント水平成分の補正量が入力され、これに動力学的に釣り合う目標上体姿勢傾斜角の補正量を算出する。この入力(床反力モーメントの補正量)を、上体姿勢傾斜角補正用摂動モデルモーメントMr(上体姿勢角補正用摂動モデルMrと略すこともある)と呼ぶ。また、上体姿勢傾斜角補正用摂動モデル203の出力(目標上体姿勢傾斜角の補正量)を補正用摂動モデル上体姿勢傾斜角θcと呼ぶ。また、上体姿勢傾斜角補正用摂動モデル203が発生する床反力水平成分を上体水平位置補正用摂動モデル床反力水平成分Frと呼ぶ。Frは前述したごとく0である。すなわち、次式が常に成立する。

Fr=0 …式a21

上体姿勢傾斜角補正用摂動モデル203は、図68のように、フライホイールで表される。補足すると、図68では、Y軸まわり回転のフライホイールのみを示したが、上体姿勢傾斜角補正用摂動モデル203は、実際には、Y軸まわり回転のフライホールだけでなく、X軸まわり回転のフライホイールも必要とする。それらのフライホイールのイナーシャは、図12に示した前記単純化モデル(3質点モデル+フライホイール)のフライホイールFHx、FHyと同じである。この上体姿勢傾斜角補正用摂動モデル203のフライホイールの回転角度が補正用摂動モデル上体姿勢傾斜角θc、そのフライホイールによって発生する床反力モーメント水平成分が上体姿勢傾斜角補正用摂動モデルモーメントMrに相当する。なお、以下の説明では理解の便宜上、Y軸まわり回転のフライホイールを中心に説明するが、X軸まわり回転のフライホイールについても同様である。
この上体姿勢傾斜角補正用摂動モデル203(より詳しくはサジタルプレーンに関するモデル)は、前記単純化モデル(3質点+フライホイールのモデル)の動力学方程式の前記式03yにおいて、床反力モーメントの摂動ΔMyと上体姿勢傾斜角の摂動Δθbyの関係を表している。
そこで、My、θby以外は定数とみなして、床反力モーメント水平成分の摂動ΔMyと上体姿勢傾斜角の摂動Δθbyの関係を式03yから求めると、次式が得られる。

ΔMy=J*d2Δθby/dt2 …式a22

式a22のΔMyを上体姿勢傾斜角補正用摂動モデルモーメントMr、Δθbyを補正用摂動モデル上体姿勢傾斜角θcに対応させることにより、次式が得られる。

Mr=J*d2Δθc/dt2 …式a23

すなわち、上体姿勢傾斜角補正用摂動モデル203は、式a23で表される。また、上体水平位置補正用摂動モデル床反力水平成分Frは上記したごとく式a21のようになる(Fr=0)。なお、上記では、上体姿勢傾斜角補正用摂動モデル203の動力学をサジタルプレーン上で説明したが、ラテラルプレーン上での動力学も、式a23と同じ形の式で表される。
また、逆位相腕振り角補正用摂動モデル231は、前記逆位相腕振りモードにおける床反力の摂動と逆位相腕振り角の摂動との関係を表す。
逆位相腕振り角補正用摂動モデル231は、床反力モーメント鉛直成分の補正量が入力され、これに動力学的に釣り合う目標逆位相腕振り角の補正量を算出する。この入力(床反力モーメント鉛直成分の補正量)を、逆位相腕振り角補正用摂動モデルモーメントMaと呼ぶ。また、逆位相腕振り角補正用摂動モデル203の出力(目標逆位相腕振り角の補正量)を補正用摂動モデル逆位相腕振り角θcaと呼ぶ。また、逆位相腕振り角補正用摂動モデルが発生する床反力水平成分を逆位相腕振り角補正用摂動モデル床反力水平成分Faと呼ぶ。Faは前述したごとく0である。すなわち、次式が常に成立する。

Fa=0 …式a21c

逆位相腕振り角補正用摂動モデル231は、図69のように、フライホイールで表される。フライホイールのイナーシャは、図12に示した前記単純化モデル(3質点モデル+フライホイール)のフライホイールFHazと同じである。この逆位相腕振り角補正用摂動モデル231のフライホイールの回転角度が補正用摂動モデル逆位相腕振り角θca、そのフライホイールによって発生する床反力モーメント鉛直成分が逆位相腕振り角補正用摂動モデルモーメントMaに相当する。
この逆位相腕振り角補正用摂動モデル231は、前記単純化モデル(3質点+フライホイールのモデル)の動力学方程式の前記式03zにおいて、床反力モーメントの摂動ΔMzと逆位相腕振り角の摂動Δθazとの関係を表している。
そこで、Mz、θaz以外は定数とみなして、床反力モーメントの摂動ΔMzと逆位相腕振り角の摂動Δθazの関係を式03zら求めると、次式が得られる。

ΔMz=Jaz*d2Δθaz/dt2 …式a22c

式a22cのΔMzを逆位相腕振り角補正用摂動モデルモーメントMa、Δθazを補正用摂動モデル逆位相腕振り角θcaに対応させることにより、次式が得られる。

Ma=Jaz*d2Δθca/dt2 …式a23c

すなわち、逆位相腕振り角補正用摂動モデル231は、式a23cで表される。また、逆位相腕振り角補正用摂動モデル床反力水平成分Faは上記したごとく式a21cのようになる(Fa=0)。

後述するように、S3536では、最終的に、補正歩容(より詳しくは、単純化モデル歩容の一部の瞬時値を補正した目標瞬時値)が生成(出力)される。補正歩容の目標上体姿勢傾斜角(これを以降、補正目標上体姿勢傾斜角と呼ぶ)は、前記求めた単純化モデル上体姿勢傾斜角の瞬時値(S3532で求めた今回歩容の現在時刻tでの目標上体姿勢傾斜角の瞬時値)に前記補正用摂動モデル上体姿勢傾斜角θc(現在時刻tの制御周期で求められる値)を演算部204で加えることにより得られる。補正歩容の目標上体水平位置(これを以降、補正目標上体水平位置と呼ぶ)は、前記求めた単純化モデル上体水平位置の瞬時値(S3532で求めた今回歩容の現在時刻tでの目標上体水平位置の瞬時値)に補正用摂動モデル上体水平位置Xc(現在時刻tの制御周期で求められる値)を演算部205で加えることにより得られる。また、補正歩容の目標逆位相腕振り角(これを以降、補正目標逆位相腕振り角と呼ぶ)は、前記求めた単純化モデル逆位相腕振り角の瞬時値(S3532で求めた今回歩容の現在時刻tでの目標逆位相腕振り角の瞬時値)に補正用摂動モデル逆位相腕振り角θca(現在時刻tの制御周期で求められる値)を演算部232で加えることにより得られる。
補正歩容の目標床反力も修正される。具体的には、目標ZMPまわりの床反力モーメント水平成分が0でなくなり、コンプライアンス制御用目標床反力モーメント水平成分が目標値として出力される。また、目標床反力水平成分も、補正目標床反力水平成分に修正され、出力される。また、目標床反力モーメント鉛直成分も、補正目標床反力モーメント鉛直成分に修正され、出力される。
ところで、上記のごとく、補正歩容の運動は、単純化モデル歩容の運動に摂動モデルの運動(詳しくは上体水平位置補正用摂動モデル202と上体姿勢傾斜角補正用摂動モデル203の運動と逆位相腕振り角補正用摂動モデル231の運動)を加えた(合成した)運動である。
一般に、ある基準運動に、ある摂動運動を加えた運動が発生する床反力は、基準運動が発生する床反力(運動によって発生する重力と慣性力に釣り合う床反力)と摂動運動によって発生する床反力の摂動分の和で近似される。
また、上体傾斜モードが発生する床反力水平成分、上体傾斜モードが発生する床反力モーメント鉛直成分、逆位相腕振りモードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力モーメント水平成分がいずれも0であることを考慮すると、補正歩容の運動に逆フルモデル201上で釣り合う床反力モーメントに補償全床反力モーメント水平成分Mdmdxyと補償全床反力モーメント鉛直成分Mdmdzとを加えたものが補正目標床反力モーメントに一致する(前記A1の条件を満たす)ためには、以下の3つの式を満足しなければならない。

フルモデル床反力モーメント水平成分Mfullxy
+上体水平位置補正用摂動モデルモーメントMp
+上体姿勢傾斜角補正用摂動モデルモーメントMr
+補償全床反力モーメント水平成分Mdmdxy
= 補正目標床反力モーメント水平成分
…式h5

フルモデル床反力水平成分Ffull
+上体水平位置補正用摂動モデル床反力水平成分Fp
= 補正目標床反力水平成分
…式h6

フルモデル床反力モーメント鉛直成分Mfullz
+上体水平位置補正用摂動モデルモーメント鉛直成分Mpz
+逆位相腕振り角補正用摂動モデルモーメント鉛直成分Maz
+補償全床反力モーメント鉛直成分Mdmdz
= 補正目標床反力モーメント鉛直成分
…式h1006
ただし、上体水平位置補正用摂動モデルモーメント鉛直成分Mpzは、上体水平位置補正用摂動モデルの運動によって逆フルモデル201上で発生する床反力モーメント鉛直成分である。また、式h5、式h1006のモーメントは、元の(単純化モデルの)目標ZMPまわりのモーメントである。
また、補正歩容の真のZMPは、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ、単純化モデル歩容の目標ZMP(理想目標ZMP)からずれた点に変更される。

補正歩容の真のZMP=目標ZMP
+補正目標床反力モーメント/目標床反力鉛直成分
…式h7
尚、補正歩容の真のZMPのX方向(前後方向)成分を算出する場合には、補正目標床反力モーメントのY軸(左右方向軸)まわり成分を用いる。また、補正歩容の真のZMPのY方向成分を算出する場合には、補正目標床反力モーメントのX軸(前後軸)まわり成分を用いる。ただし、補正歩容の真のZMPのY方向成分を算出する場合には、式h7の右辺の「+」は「−」にしなければならない。
補足すると、補正歩容の真のZMPまわりの補正目標床反力モーメント鉛直成分を算出するようにしても良い。
補正歩容の真のZMPまわりの補正目標床反力モーメント鉛直成分は、元の目標ZMPまわりのモーメントに補正歩容の真のZMPと目標ZMPの差と式h6で求めた補正目標床反力水平成分との外積を加えたものとなる。
式h7から求められる補正歩容の真のZMPは、ZMP許容範囲内になければならない。これをZMP制約条件と呼ぶ。
また、補正目標床反力水平成分は、歩容補正用(フルモデル補正用)の床反力水平成分許容範囲内になければならない。これを床反力水平成分制約条件と呼ぶ。
また、補正目標床反力モーメント鉛直成分は、歩容補正用(フルモデル補正用)の床反力モーメント鉛直成分許容範囲内になければならない。これを床反力モーメント鉛直成分制約条件と呼ぶ。
以上のように、補正歩容は、式h5、式h6、式h1006、ZMP制約条件(式h7から得られる補正歩容の真のZMPの存在範囲条件)床反力水平成分制約条件および床反力モーメント鉛直成分制約条件を満足しなければならない。
しかし、単に、これらの式や条件を満足するだけでは、前記補正用摂動モデル上体位置と前記補正用摂動モデル上体姿勢傾斜角と前記補正用摂動モデル逆位相腕振り角が発散してしまう。
そこで、前記上体水平位置補正用摂動モデル202と前記上体姿勢傾斜角補正用摂動モデル203と前記逆位相腕振り角補正用摂動モデル231の状態量(より具体的には、補正用摂動モデル上体水平位置速度、補正用摂動モデル上体姿勢傾斜角・角速度、補正用摂動モデル逆位相腕振り角・角速度など)を基に、これらの状態量がある所定の状態に収束する(安定する)ように、補正用摂動モデル202,203,231の安定化制御を行う。
まず、上体水平位置補正用摂動モデル202の安定化制御について詳細を説明する。
上体水平位置補正用摂動モデル202を目標整定位置に収束(安定)させるための制御則を上体水平位置補正用摂動モデル制御則206と呼び、この制御則が決定するフィードバック量(操作量)を上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと呼ぶ。ここで「要求値」を付けたのは、後述するように、真のZMPが前記ZMP許容範囲内に存在し、かつ、床反力水平成分が床反力水平成分許容範囲内になるように、上記制御則で決定された値に制限が加えられて修正されるからである。制限が加えられて修正されたモーメントを、上体水平位置補正用摂動モデル安定化モーメントMpfと呼ぶ。
具体的に上体水平位置補正用摂動モデル制御則206としては、式h10を用いる。ただし、目標整定位置は、式h8で与えられる。また、mtotalは前記ロボット総重量、mbは前記上体質点質量(倒立振子質量)であり、XGfは、単純化モデル歩容の瞬間姿勢を基にフルモデルを用いて計算される重心水平位置、すなわち、前記逆フルモデルが算出する重心水平位置である。また、Kpp、Kpvはフィードバック制御のゲインである。

目標整定位置=−mtotal/mb*(XGf−XGs) …式h8

上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
=Kpp*(補正用摂動モデル上体水平位置Xc−目標整定位置)
+Kpv*補正用摂動モデル上体水平速度dXc/dt
−補正用摂動モデル上体水平位置Xc*上体床反力鉛直成分Fbz
…式h10

上体水平位置補正用摂動モデル安定化モーメント要求値MpfdmdのX軸(前後方向軸)まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はY軸方向(左右方向)成分を用いる。
上体水平位置補正用摂動モデル安定化モーメント要求値MpfdmdのY軸(左右方向軸)まわり成分を求める場合には、補正用摂動モデル上体水平位置速度および目標整定位置はX軸方向(前後方向)成分を用い、右辺第3項の「−」を「+」に代える。
詳細は、先に本出願人が提案したPCT/JP03/00435に記載されているので、ここではこれ以上の説明を省略する。
次に、上体姿勢傾斜角補正用摂動モデル203の安定化制御について詳細を説明する。
目標瞬時値発生部100bが出力する基準上体姿勢傾斜角(図57のS3404で求められたもの)あるいは単純化モデルによる目標上体姿勢傾斜角(図57のS3414で求められたもの)に、補正目標上体姿勢傾斜角、すなわち、単純化モデルによる目標上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角を加えたものが整定あるいは追従するように、上体姿勢傾斜角補正用摂動モデル203の状態に応じて、PI制御などのフィードバック制御則によってフィードバック量(操作量)を決定し、これを上体姿勢傾斜角補正用摂動モデル203に付加的に入力する。
この制御則を上体姿勢傾斜角補正用摂動モデル制御則207(上体姿勢角補正用摂動モデル制御則207と略すこともある)と呼び、このフィードバック量(操作量)を上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと同様の理由からである。制限が加えられて修正されたモーメントを、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfと呼ぶ。
上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdを決定する上体姿勢傾斜角補正用摂動モデル制御則207は、具体的には、次式のようにすれば良い。

上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmd
=Krp*(補正用摂動モデル上体姿勢傾斜角θc
−(基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角))
+Krv*補正用摂動モデル上体姿勢傾斜角速度dθc/dt
…式h11
ただし、Krp、Krvはフィードバック制御のゲインである。

なお、式h11において、(基準上体姿勢傾斜角−単純化モデルによる目標上体姿勢傾斜角)の代わりに0としてもよい。
再び、図66の機能ブロック図を用いてS3536の処理を説明すると、上記のごとく、前記上体水平位置補正用摂動モデル制御則206(式h10)によって上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdが求められる。また、前記上体姿勢傾斜角補正用摂動モデル制御則207(式h11)によって上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdが求められる。
次いで、上体水平位置補正用摂動モデル安定化モーメントMpfが0であったと仮定した場合の上体位置補正用摂動モデルの床反力推定(算出)値F0がF0演算部208により求められる。後述するように、上体水平位置補正用摂動モデル202には、フルモデル床反力モーメント水平成分Mfullxyに、上体水平位置補正用摂動モデル安定化モーメントMpfを加えられたものが入力される。したがって、F0は、上体水平位置補正用摂動モデル202にフルモデル床反力モーメント水平成分Mfullxyの符号を反転させたものだけが入力された場合に上体水平位置補正用摂動モデル202が発生する床反力である。
具体的には、次式によってF0が求められる。

F0=mb*d2Xc/dt2−1/h*Mpf …式h12

右辺第1項は、前回(時刻t−Δt)の上体水平位置補正用摂動モデル202の床反力水平成分を表す。
右辺第2項は、前回の上体水平位置補正用摂動モデル安定化モーメントMpfによって、上体水平位置補正用摂動モデル202に直接的に発生した(すなわち直達項の)床反力水平成分を表す。
すなわち、上体水平位置補正用摂動モデル202の前回の上体質点水平加速度に上体質点の質量mbを乗じた値から、前回の上体水平位置補正用摂動モデル安定化モーメントMpfを上体並進モード床反力比率hで割った値を減じることによって、Mpfが0であったと仮定した場合の上体位置補正用摂動モデルの床反力F0の推定値が求められる。
次に、前記制約(床反力水平成分制約条件およびZMP制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、目標ZMPまわりの目標床反力モーメント水平成分としてのコンプライアンス制御用目標床反力モーメントを補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたと仮定した場合に、目標ZMPまわりに発生する床反力モーメント水平成分MinがMin演算部209により求められる。この床反力モーメント水平成分を無制限時補正目標床反力モーメント水平成分Minと呼ぶ。無制限時補正目標床反力モーメント水平成分Minは、次式によって求められる。

Min=Mpfdmd+Mrfdmd+Mdmdxy …式h13

すなわち、無制限時補正目標床反力モーメント水平成分Minは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと補償全床反力モーメント水平成分Mdmdxyとを加算することにより得られる。
次いで、前記制約(床反力水平成分制約条件およびZMP制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたと仮定した場合に、発生する床反力水平成分FinがFin演算部210により求められる。この床反力水平成分を無制限時補正目標床反力水平成分Finと呼ぶ。
補正目標床反力水平成分は、前記式h6によって得られるが、前述のごとく、上体姿勢傾斜角補正用摂動モデル203の挙動によって上体姿勢傾斜角補正用摂動モデル203には床反力水平成分は発生しない、すなわちFrは0である。したがって、無制限時補正目標床反力水平成分Finは、上体水平位置補正用摂動モデル安定化モーメントMpfが0であったと仮定した場合の補正目標床反力水平成分に、上体水平位置補正用摂動モデル安定化モーメントMpfを0から上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに変更したことによって増加する床反力水平成分を加えたものになる。
ところで、上体水平位置補正用摂動モデル安定化モーメントMpfを0から上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに変更したことによって増加する床反力水平成分は、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdを上体並進モード床反力比率hで割った値になる。
したがって、無制限時補正目標床反力水平成分Finは、式h15に示すように、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdを上体並進モード床反力比率hで割った値に、前記求めたフルモデル床反力水平成分Ffullを加算し、さらに、上体水平位置補正用摂動モデル安定化モーメントMpfが0であったと仮定した場合の上体位置補正用摂動モデルの床反力の算出値F0を加算することによって得られる。

Fin=1/h*Mpfdmd+Ffull+F0 …式h15

次いで、制限手段(制限処理部)211によって、無制限時補正目標床反力モーメント水平成分Minと無制限時補正目標床反力水平成分Finとから、これらに制限を加えた値である(目標ZMPまわりの)制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdが決定される。本実施形態では、コンプライアンス制御用目標床反力モーメント水平成分は、制限補正目標床反力モーメント水平成分Mltdに一致し、補正歩容の床反力水平成分は制限補正目標床反力水平成分Fltdに一致する。
制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとは、補正歩容(コンプライアンス制御用目標床反力モーメント水平成分を含む)の真のZMPが前記ZMP許容範囲内に存在し、かつ、補正歩容の床反力水平成分が床反力水平成分許容範囲内になるように決定される。すなわち、MltdおよびFltdはZMP制約条件および床反力水平成分制約条件を満足するように決定される。
また、上記制約条件下で、上体水平位置補正用摂動モデル安定化モーメントMpは、可能な限り、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致または近い値になるように決定される。同様に、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrは、可能な限り上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致または近い値になるように決定される。これにより、前記補正用摂動モデル上体位置Xcと前記補正用摂動モデル上体姿勢傾斜角θcとを安定化し、発散することを防止する。
制限手段(制限処理部)211の詳細は、先に本出願人が提案したPCT/JP03/00435に記載されているので、ここではこれ以上の説明を省略する。
次いで、以下の式により、上体水平位置補正用摂動モデル安定化モーメントMpf、および上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfがそれぞれMpf演算部212、Mrf演算部213により求められる。

Mpf=(Fltd−Ffull−F0)*h …式h20

Mrf=Mltd−Mpf−Mdmdxy …式h21

すなわち、Mpf演算部212では、制限補正目標床反力水平成分Fltdから、フルモデル床反力水平成分Ffullを減じ、Mpが0であったと仮定した場合の上体位置補正用摂動モデル202の床反力の算出値F0を減じた値に、上体並進モード床反力比率hを乗じることにより、前記上体水平位置補正用摂動モデル安定化モーメントMpfが得られる。また、Mrf演算部213では、目標ZMPまわりの制限補正目標床反力モーメント水平成分Mltdから前記上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが得られる。
次いで、以下の式により、上体水平位置補正用摂動モデル床反力モーメントMp、および上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが求められる。

Mp=Mpf−Mfull …式h22
Mr=Mrf …式h23

すなわち、Mp演算部214にて、上体水平位置補正用摂動モデル安定化モーメントMpfからフルモデル床反力モーメント水平成分Mfullxyを減じることにより、上体水平位置補正用摂動モデル床反力モーメントMpが得られる。また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrは、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfと同一の値とされる。
次いで、上体水平位置補正用摂動モデル床反力モーメントMpが上体位置補正用摂動モデル202に入力され、その入力された床反力モーメントに釣り合う補正用摂動モデル上体位置Xcが算出される。
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが上体姿勢傾斜角補正用摂動モデル203に入力され、その入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θcが算出される。
次いで、演算部205,204にて、それぞれ次式h24、式h25に従って、補正目標上体水平位置と補正目標上体姿勢傾斜角とが決定され、これらがそれぞれ上体水平位置姿勢の最終的な目標瞬時値として出力される。

補正目標上体水平位置
=単純化モデル上体水平位置+補正用摂動モデル上体位置Xc
…式h24

補正目標上体姿勢傾斜角
=単純化モデル上体姿勢傾斜角+補正用摂動モデル上体姿勢傾斜角θc
…式h25

すなわち、単純化モデル上体水平位置に補正用摂動モデル上体位置Xcを加えることにより補正目標上体水平位置が得られ、これが最終的な目標上体水平位置として出力される。また、単純化モデル上体姿勢傾斜角に補正用摂動モデル上体姿勢傾斜角θcを加えることにより補正目標上体姿勢傾斜角が得られ、これが最終的な目標上体姿勢傾斜角として出力される。
また、目標ZMPまわりのコンプライアンス制御用目標床反力モーメント水平成分として制限補正目標床反力モーメント水平成分Mltdが出力されると共に、補正目標床反力水平成分として制限補正目標床反力水平成分Fltdが出力される。
すなわち、次式h26、式h27に従って、補正目標床反力水平成分と目標ZMPまわりの補正目標床反力モーメント水平成分とがそれぞれ、床反力水平成分および床反力モーメント水平成分(目標ZMPまわりのモーメント水平成分)の最終的な目標瞬時値として決定され、これらが出力される。

コンプライアンス制御用目標床反力モーメント水平成分
=制限補正目標床反力モーメント水平成分Mltd
…式h26

補正目標床反力水平成分
=制限補正目標床反力水平成分Fltd
…式h27

S3536における以上までの処理は、本願出願人によるPCT/JP03/00435の通りであるので、ここでの説明は以上に留める。
第4参考例ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部230において、逆位相腕振り角補正用摂動モデル231への入力である逆位相腕振り角補正用摂動モデルモーメントMaと目標床反力モーメント鉛直成分が決定される。次いで、逆位相腕振り角補正用摂動モデルモーメントMaは、逆位相腕振り角補正用摂動モデル231に入力され、補正用摂動モデル逆位相腕振り角θcaが決定される。
補足すると、逆位相腕振り角補正用摂動モデルモーメント決定部230は、目標瞬時値発生部100bが出力する基準逆位相腕振り角(図57のS3404で求められたもの)あるいは単純化モデルによる目標逆位相腕振り角(図57のS3414で求められたもの)に、補正目標逆位相腕振り角、すなわち、単純化モデルによる目標逆位相腕振り角に補正用摂動モデル逆位相腕振り角を加えたものが整定あるいは追従するように、逆位相腕振り角補正用摂動モデル231の状態に応じて、PI制御などのフィードバック制御則によってフィードバック量(操作量)を決定し、これを逆位相腕振り角補正用摂動モデル231に付加的に入力する。
この制御則を逆位相腕振り角補正用摂動モデル制御則と呼び、このフィードバック量(操作量)を逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdと呼ぶ。ここで「要求値」を付けたのは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと同様の理由からである。制限が加えられて修正されたモーメントを、逆位相腕振り角補正用摂動モデル安定化モーメントMafと呼ぶ。なお、本実施形態では、このMafが、逆位相腕振り角補正用摂動モデルモーメントMaとして、逆位相腕振り角補正用摂動モデル231に入力される。
逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdを決定する逆位相腕振り角補正用摂動モデル制御則は、具体的には、次式のようにすれば良い。

逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmd
=Kap*(補正用摂動モデル逆位相腕振り角θca
−(基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角))
+Kav*補正用摂動モデル逆位相腕振り角速度dθca/dt
…式h30
ただし、Kap、Kavはフィードバック制御則のゲインである。

なお、式h30において、(基準逆位相腕振り角−単純化モデルによる目標逆位相腕振り角)の代わりに0としてもよい。
以下に、逆位相腕振り角補正用摂動モデルモーメント決定部230の動作についてその機能ブロック図である図70を用いて詳細を説明する。
まず、上記のごとく、前記逆位相腕振り角補正用摂動モデル制御則230a(式h30)によって逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdが求められる。
次いで、上体水平位置補正用摂動モデル202を用いた上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Mpzが、上体水平位置補正に起因する床反力モーメント鉛直成分摂動量算出部230bによって求められる。
具体的には、次式によって求められる。

Mpz=(単純モデル上体質点位置
+補正用摂動モデル上体位置Xc−目標ZMP)
*(単純モデル上体質点水平加速度
+補正用摂動モデル上体加速度d2Xc/dt2)
−(単純モデル上体質点位置 − 目標ZMP)
*(単純モデル上体質点水平加速度)
…式h31
あるいは、上式を近似した以下の式を用いても良い。

Mpz≒補正用摂動モデル上体位置Xc
*(単純モデル上体質点水平加速度
+補正用摂動モデル上体加速度d2Xc/dt2)
+(単純モデル上体質点位置−目標ZMP)
* 補正用摂動モデル上体加速度d2Xc/dt2)
…式h32

次に、前記床反力モーメント鉛直成分制約条件を無視して、逆位相腕振り角補正用摂動モデル安定化モーメントMafを、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdに一致させると共に、目標ZMPまわりの目標床反力モーメント鉛直成分としてのコンプライアンス制御用目標床反力モーメント鉛直成分を補償全床反力モーメント鉛直成分MdmdzとMafとMfullzとMpzとの総和に一致させたと仮定した場合に、目標ZMPまわりに発生する床反力モーメント鉛直成分Minzが演算部230cにより求められる。この床反力モーメント鉛直成分を無制限時補正目標床反力モーメント鉛直成分Minzと呼ぶ。無制限時補正目標床反力モーメント鉛直成分Minzは、次式によって求められる。

Minz=Mafdmd+Mdmdz+Mfullz+Mpz …式h33

すなわち、無制限時補正目標床反力モーメント鉛直成分Minzは、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdと補償全床反力モーメント鉛直成分Mdmdzとフルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正用摂動モデルモーメント鉛直成分Mpzとを加算することにより得られる。
次いで、制限手段(制限処理部)230dによって、無制限時補正目標床反力モーメント鉛直成分Minzから、これに制限を加えた値である(目標ZMPまわりの)制限補正目標床反力モーメント鉛直成分Mltdzが決定される。第4参考例では、コンプライアンス制御用目標床反力モーメント鉛直成分は、制限補正目標床反力モーメント鉛直成分Mltdzに一致する。
制限補正目標床反力モーメント鉛直成分Mltdzは、床反力モーメント鉛直成分許容範囲内になるように決定される。すなわち、Mltdzは床反力モーメント鉛直成分制約条件を満足するように決定される。
また、上記床反力モーメント鉛直成分制約条件下で、逆位相腕振り角補正用摂動モデル安定化モーメントMafは、可能な限り、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdに一致または近い値になるように決定される。これにより、前記補正用摂動モデル逆位相腕振り角θcaを安定化し、発散することを防止する。
制限手段(制限処理部)230dは、次式に示す飽和特性を持った関数である。

Minz>床反力モーメント鉛直成分許容範囲上限値である場合
Mltdz=床反力モーメント鉛直成分許容範囲上限値
Minz<床反力モーメント鉛直成分許容範囲下限値である場合
Mltdz=床反力モーメント鉛直成分許容範囲下限値
床反力モーメント鉛直成分許容範囲下限値≦Minz、且つ、Minz≦床反力モーメント鉛直成分許容範囲上限値である場合
Mltdz=Minz
……式h34

次いで、以下の式により、逆位相腕振り角補正用摂動モデルモーメントMa(=逆位相腕振り角補正用摂動モデル安定化モーメントMaf)がMaf演算部230eにより求められる。

Ma=Mltdz−(Mdmdz+Mfullz+Mpz) …式h35

すなわち、Maf演算部230eでは、制限補正目標床反力モーメント鉛直成分Mltdzから、補償全床反力モーメント鉛直成分Mdmdzとフルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正用摂動モデルモーメント鉛直成分Mpzとを減じることによって、逆位相腕振り角補正用摂動モデル安定化モーメントMafとしての逆位相腕振り角補正用摂動モデルモーメントMaが得られる。
一方、目標ZMPまわりのコンプライアンス制御用目標床反力モーメント鉛直成分として制限補正目標床反力モーメント鉛直成分Mltdzが出力される。
すなわち、次式h36に従って、目標ZMPまわりの補正目標床反力モーメント鉛直成分が床反力モーメント鉛直成分(目標ZMPまわりのモーメント鉛直成分)の最終的な目標瞬時値として決定され、これらが出力される。

コンプライアンス制御用目標床反力モーメント鉛直成分
=制限補正目標床反力モーメント鉛直成分Mltdz
…式h36

以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部230の処理が行われた後、逆位相腕振り角補正用摂動モデルモーメントMaは、図66の逆位相腕振り角補正用モデル231に入力され、その入力された逆位相腕振り角補正用摂動モデルモーメントMaに釣り合う補正用摂動モデル逆位相腕振り角θcaが、式a23cを用いて(積分することによって)算出される。
次いで、演算部232にて、次式h37に従って、補正目標逆位相腕振り角が決定され、これが逆位相腕振り角の最終的な目標瞬時値として出力される。

補正目標逆位相腕振り角
=単純化モデル逆位相腕振り角
+補正用摂動モデル逆位相腕振り角θca
…式h37

すなわち、単純化モデル逆位相腕振り角に補正用摂動モデル逆位相腕振り角θcaを加えることにより補正目標逆位相腕振り角が得られる、これが最終的な目標逆位相腕振り角として出力される。
以上のごとく、S3536の歩容補正が行われる。
尚、補足すると、第4参考例は、フィードフォワード型の補正であり、また、摂動動力学モデルは厳密モデルではない。このため、上記のごとく式h5、式h6および式h1006を満足するように歩容を補正しても、厳密には、動力学平衡条件を満足するわけではなく、近似的に動力学平衡条件を満足する。
また、第4参考例では、例えば1歩の歩容の終端(今回歩容終端)において、上体水平位置補正用摂動モデル202と上体姿勢傾斜角補正用摂動モデル203と逆位相腕振り角補正用摂動モデル231との状態量、例えば上体水平位置補正用摂動モデル202の上体質点(倒立振子質点)の水平位置や、上体姿勢傾斜角補正用摂動モデル203のフライホールの回転角や、逆位相腕振り角補正用摂動モデル231のフライホールの回転角は、単純化モデル200の状態量として追加される。つまり、今回歩容終端における単純化モデル200の状態量が、上体水平位置補正用摂動モデル202の上体運動と上体姿勢傾斜角補正用摂動モデル203と逆位相腕振り角補正用摂動モデル231との状態量を加えたものに修正される。さらに、各摂動モデル202,203,231の状態量は初期化される(例えば上体水平位置補正用摂動モデル202の上体質点(倒立振子質点)の水平位置や、上体姿勢傾斜角補正用摂動モデル203のフライホールの回転角や、逆位相腕振り角補正用摂動モデル231のフライホールの回転角が0にリセットされる)。そして、上記の如く修正した単純化モデル200の状態量を次回歩容の初期値として、次回歩容の生成が行なわれると共に、各摂動モデル202,203,231による補正用摂動モデル上体水平位置Xc、補正用摂動モデル上体姿勢傾斜角θcおよび補正用摂動モデル逆位相腕振り角θcaの算出が行なわれる。これにより各摂動モデル202,203,231の挙動の安定性をより一層高めることができる。なお、上記のような単純化モデル200の状態量の修正は、歩容の生成途中で適宜行なってもよい。逆に、上記のような単純化モデル200の状態量の修正や摂動モデルのリセットを、歩容の生成途中に行なわなくてもよい。
また、上記のような単純化モデル200の状態量の修正は、後述する第5、第6参考例においても同様に行なわれる。
第4参考例では、前記復元条件すべてを満足する。したがって、前記第3参考例と同様の作用効果を奏することができる。
さらに、第3参考例の作用効果に加え、前記復元条件を満足するように上体水平位置、上体姿勢傾斜角および逆位相腕振り角を決定する際に、演算量を比較的少ないものとすることができる。


次に第5参考例を以下に図71及び図72を参照して説明する。第5参考例に係る装置の補正手法は、前記第4参考例のものと歩容生成装置100の処理(図65のS3536の処理)のみが相違するものであり、フルモデルフィードバック補正型である。また、逆動力学フルモデル(逆フルモデル)を用いる手法で、かつ単純化モデル歩容の入力を補正しない手法であり、かつ摂動モデルを用いる手法である。
図71は、この第5参考例に係る装置の動作、具体的には、図65のフローチャートのS3536の歩容の修正手法を説明する機能ブロック図である。ただし、図71の単純化モデル200は、前記第4参考例と同様、単に動力学モデルだけでなく、図65のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表す。したがって、図71において、単純化モデル200から先の部分がS3536の処理に相当する。なお、図71の機能部分のうち、第4参考例に係る図66と同一の機能分については、図66と同一の参照符号を用い、詳細な説明を省略する。
S3536の処理以外の構成は第4参考例と同じであるので説明を省略し、以下に図71を用いてS3536の処理を詳細に説明する。
S3536では、まず、前述のごとく図65のS3532で求めた単純化モデル歩容の目標上体水平位置の瞬時値(現在時刻tの制御周期で求めた仮瞬時値)に、前回制御周期(時刻t−Δt)で後述のごとく算出した補正用摂動モデル上体水平位置Xcを演算部205により加えることにより、最終的な目標上体水平位置(補正目標上体水平位置)が求められる。また、図65のS3532で求めた単純化モデル歩容の目標上体姿勢傾斜角の瞬時値(現在時刻tの制御周期で求めた仮瞬時値)に、前回制御周期(時刻t−Δt)で算出した後述する補正用摂動モデル上体姿勢傾斜角θcを演算部204により加えることにより、最終的な目標上体姿勢傾斜角(補正目標上体姿勢傾斜角)が求められる。また、図65のS3532で求めた単純化モデル歩容の目標逆位相腕振り角の瞬時値(現在時刻tの制御周期で求めた仮瞬時値)に、前回制御周期(時刻t−Δt)で算出した後述する補正用摂動モデル逆位相腕振り角θcaを演算部232により加えることにより、最終的な目標逆位相腕振り角(補正目標逆位相腕振り角)が求められる。
そして、これらの補正目標上体水平位置、補正目標上体姿勢傾斜角および補正目標逆位相腕振り角が、それぞれ上体水平位置、上体姿勢傾斜角および逆位相腕振り角の最終的な目標瞬時値として出力される。
すなわち、前記式h24、式h25、式h37により、補正目標上体水平位置と補正目標上体姿勢傾斜角と補正目標逆位相腕振り角とが求められる。
次いで、上記の如く単純化モデル歩容を補正して得られた目標上体水平位置(補正目標上体水平位置)、目標上体姿勢傾斜角(補正目標上体姿勢傾斜角)、目標逆位相腕振り角(補正目標逆位相腕振り角)、および前述のごとく得られた単純化モデル歩容の目標重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ZMPの瞬時値とを、前記逆動力学フルモデル201に入力し、その入力された運動変数で表される運動に釣り合う(すなわち運動によって逆フルモデル201が発生する)床反力水平成分と目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)とが算出される。従って、本第5参考例では、逆フルモデル201には、単純化モデル上体水平位置、上体姿勢傾斜角、逆位相腕振り角に加えて、補正用摂動モデル上体水平位置Xcと補正用摂動モデル上体姿勢傾斜角θcと補正用摂動モデル逆位相腕振り角θcaとが追加的に入力される。以降、第4参考例と同様、逆フルモデル201により算出された床反力水平成分、床反力モーメント水平成分、床反力モーメント鉛直成分、をそれぞれフルモデル床反力水平成分Ffullxy、フルモデル床反力モーメント水平成分Mfullxy、フルモデル床反力モーメント鉛直成分Mfullzと呼ぶ。
フルモデル床反力水平成分Ffullは、補正目標床反力水平成分(現在時刻tにおける床反力水平成分の最終的な目標瞬時値)として出力される。
すなわち、以下の式により、補正目標床反力水平成分が決定されて出力される。

補正目標床反力水平成分=フルモデル床反力水平成分Ffull
…式h48

以上の処理からわかるように、本第5参考例では、フルモデル補正歩容は、単純化モデル歩容に上体水平位置補正用摂動モデル202の挙動と上体姿勢傾斜角補正用摂動モデル203の挙動と逆位相腕振り角補正用摂動モデル231の挙動とを加えたものになる。さらに、上体傾斜モードが発生する床反力水平成分および逆位相腕振りモードが発生する床反力水平成分がいずれも0であることを考慮すると、次式が成立する。ただし、単純化モデル床反力水平成分は、単純化モデル歩容の運動によって発生する床反力を逆フルモデル201を用いて算出したものの並進力水平成分である。

フルモデル床反力水平成分Ffull
=単純化モデル床反力水平成分
+上体水平位置補正用摂動モデル床反力水平成分Fp
…式h51

次いで、上体水平位置補正用摂動モデル制御則206により、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdが決定される。本実施形態における上体水平位置補正用摂動モデル制御則206は、特願2001−133621号で本願出願人が提案した如く、設定される。例えば、次式のように該制御則206が決定される。

上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
=Kpg*重心差+Kvg*補正用摂動モデル上体水平速度dXc/dt
…式h52
ただし、重心差は、次式で求められる。

重心差=フルモデル重心水平位置−単純化モデル重心水平位置
…式h53
式h52におけるKpg、Kvgはフィードバック制御則のゲインであり、フルモデル重心水平位置、単純化モデル重心水平位置および補正用摂動モデル上体水平速度dXc/dtは、それぞれ、前回(時刻t−Δt)に後述のごとく算出したフルモデル歩容瞬時値の重心水平位置、単純化モデル歩容瞬時値の重心水平位置(単純化モデル歩容の瞬間姿勢を基に単純化モデルを用いて計算される重心水平位置XGs)、および補正用摂動モデル上体水平速度dXc/dtである。
即ち、フルモデル重心水平位置から単純化モデル重心水平位置を減算して得た重心差と摂動モデルの状態量のひとつである摂動モデル上体速度とに基づいて摂動モデル制御用フィードバック量(操作量)を演算するようにした。かかる摂動モデル制御則により、前記重心差の時間的平均値を、ほぼ0に制御することができる。
次いで、上体姿勢傾斜角補正用摂動モデル制御則207により、上体姿勢補正用摂動モデル安定化モーメント要求値Mrfdmdが決定される。これは、第4参考例と同様の制御則を用いれば良い。従って、該制御則207としては、例えば前記式h11が用いられる。
次いで、無制限時補正目標床反力モーメントMinがMin演算部209により求められる(推定される)。無制限時補正目標床反力モーメントMinは、第4参考例と同様、前記制約(ZMP制約条件および床反力水平成分制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、目標ZMPまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させた場合に、目標ZMPまわりに発生する床反力モーメント水平成分である。
無制限時補正目標床反力モーメント水平成分Minは、第4参考例と同様、前記式h13の演算によって求められる。すなわち、無制限時補正目標床反力モーメント水平成分Minは、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdと補償全床反力モーメント水平成分Mdmdxyとを加算することにより得られる。
さらに、Fin演算部210により、無制限時補正目標床反力水平成分Finも求められる(推定される)。無制限時補正目標床反力水平成分Finは、第4参考例と同様、前記制約(ZMP制約条件および床反力水平成分制約条件)を無視して、上体水平位置補正用摂動モデル安定化モーメントMpfを上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdに一致させ、かつ、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfを、上体姿勢傾斜角補正用摂動モデル安定化モーメント要求値Mrfdmdに一致させると共に、コンプライアンス制御用目標床反力モーメント水平成分を補償全床反力モーメント水平成分MdmdxyとMpfとMrfとの総和に一致させたとした場合に、逆フルモデル201が発生する床反力水平成分(Ffullに相当)である。
無制限時補正目標床反力水平成分Finは、第4参考例とは異なり、次式により求められる。

無制限時補正目標床反力水平成分Fin
=フルモデル床反力水平成分Ffull
+1/h
*(上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmd
−上体水平位置補正用摂動モデル安定化モーメントMpf)
…式h54
ただし、上体水平位置補正用摂動モデル安定化モーメントMpfは前回値(時刻t−Δtでの値)が用いられる。すなわち、上体水平位置補正用摂動モデル安定化モーメント要求値Mpfdmdと上体水平位置補正用摂動モデル安定化モーメントMpfの差を求め、上体水平位置補正用摂動モデルの入力を前記差だけ増加させることに起因するフルモデル床反力水平成分Ffullの増加量を、前記差を上体並進モード床反力比率hで割ることにより推定する。さらに、これにフルモデル床反力水平成分Ffullを加えることにより、無制限時補正目標床反力水平成分Finが推定される。
次いで、第4参考例と同様の制限手段(制限処理部211)によって、無制限時補正目標床反力モーメント水平成分Minと無制限時補正目標床反力水平成分Finとから、前記制約(ZMP制約条件および床反力水平成分制約条件)を満足するように、これらに制限を加えた値である(目標ZMPまわりの)制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとが決定される。この処理手法は、第4参考例と同一である。
第5参考例においても、コンプライアンス制御用目標床反力モーメント水平成分は制限補正目標床反力モーメント水平成分Mltdに一致され、また、補正目標床反力水平成分は制限補正目標床反力水平成分Fltdにほぼ一致するので、上記のごとく制限補正目標床反力モーメント水平成分Mltdと制限補正目標床反力水平成分Fltdとを決定することによって、コンプライアンス制御用目標床反力モーメント水平成分および補正目標床反力水平成分は、それぞれZMP制約条件および床反力水平成分制約条件をほぼ満足する。
次いで、Mpf演算部215によって、上体水平位置補正用摂動モデル安定化モーメントMpfが求められる。さらに詳細には、制限補正目標床反力水平成分Fltdからフルモデル床反力水平成分Ffullを減じた値にゲインKcを乗じたものを積分器215aにて積分し、さらに得られた積分値に上体並進モード床反力比率hを乗じることにより、上体水平位置補正用摂動モデル安定化モーメントMpfが求められる。すなわち、次式により、上体水平位置補正用摂動モデル安定化モーメントMpfが得られる。

Mpf=h*∫Kc(Fltd−Ffull)dt …式h55

次いで、Mrf演算部214によって、制限補正目標床反力モーメント水平成分Mltdから上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じることにより、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが求められる。すなわち、前記式h21により、上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfが得られる。
さらに、前記式h23により、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrが決定される。すなわち、Mrf演算部214の出力である上体姿勢傾斜角補正用摂動モデル安定化モーメントMrfがそのまま上体姿勢傾斜角補正用摂動モデル床反力モーメントMrとして決定される。
次いで、次式で定義されるフルモデル床反力モーメント誤差MerrがMerr演算部216により算出される。

フルモデル床反力モーメント誤差Merr
=フルモデル床反力モーメント水平成分Mfullxy
−制限補正目標床反力モーメント水平成分Mltd
…式h56

次いで、Mp演算部217により、次式に従って、上体水平位置補正用摂動モデル床反力モーメントMpが求められる。

Mp=Mpf−∫Km*Merr dt …式h57

すなわち、フルモデル床反力モーメント誤差Merrに積分ゲインKmを乗じた値を積分器217aにて積分すると共に、その積分値の符号を反転する。さらに、該積分器217aの出力を上体水平位置補正用摂動モデル安定化モーメントMpfに加えることにより、上体水平位置補正用摂動モデル床反力モーメントMpが求められる。
次いで、上体水平位置補正用摂動モデル床反力モーメントMpを上体位置補正用摂動モデル202に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体位置Xcが算出される。
また、上体姿勢傾斜角補正用摂動モデル床反力モーメントMrを上体姿勢傾斜角補正用摂動モデル203に入力して、入力された床反力モーメント水平成分に釣り合う補正用摂動モデル上体姿勢傾斜角θcが算出される。
S3536における以上までの処理は、PCT/JP03/00435の通りであるので、ここでの説明は以上に留める。
第5参考例ではさらに、逆位相腕振り角補正用摂動モデルモーメント決定部230において、逆位相腕振り角補正用摂動モデルモーメントMaが決定される。
さらに逆位相腕振り角補正用摂動モデルモーメントMaが逆位相腕振り角補正用摂動モデルに入力されて、補正用摂動モデル逆位相腕振り角θcaが決定される。
以下に、第5参考例での逆位相腕振り角補正用摂動モデルモーメント決定部230の動作についてその機能ブロック図である図72を用いて詳細を説明する。
まず、逆位相腕振り角補正用摂動モデル制御則により、逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdが決定される。これは、第4参考例と同様の制御則を用いれば良い。従って、該制御則としては、例えば前記式h30が用いられる。
次いで、演算部230gにおいて、フルモデル床反力モーメント鉛直成分Mfullzと補償全床反力モーメント鉛直成分Mdmdzと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdとの和から逆位相腕振り角補正用摂動モデルモーメントMaの前回値(後述する積分器の出力)を減じることによって無制限時補正目標床反力モーメント鉛直成分Minzを求める。次いで、制限手段(制限処理部)230hにおいて、無制限時補正目標床反力モーメント鉛直成分Minzを床反力鉛直成分モーメント許容範囲を越えないように制限を加えることにより(すなわち図示する飽和特性関数に通して)、制限時補正目標床反力モーメント鉛直成分Mltdzを求める。次いで、フルモデル床反力モーメント鉛直成分Mfullzと補償全床反力モーメント鉛直成分Mdmdzと逆位相腕振り角補正用摂動モデル安定化モーメント要求値Mafdmdとの和を制限時補正目標床反力モーメント鉛直成分Mltdzから減じた値を積分器230iにより、積分ゲインKaで積分することにより逆位相腕振り角補正用摂動モデルモーメントMaを求めて、これを出力する。また、制限時補正目標床反力モーメント鉛直成分Mltdzをコンプライアンス制御用目標床反力モーメント鉛直成分として出力する。
以上のごとく、逆位相腕振り角補正用摂動モデルモーメント決定部230において、逆位相腕振り角補正用摂動モデルモーメントMaとコンプライアンス制御用目標床反力モーメント鉛直成分が決定される。
求めた補正用摂動モデル上体位置Xc、補正用摂動モデル上体姿勢傾斜角θc、補正用摂動モデル逆位相腕振り角θca、上体水平位置補正用摂動モデル安定化モーメントMpfおよび逆位相腕振り角補正用摂動モデルモーメントMaは、前述のごとく次回制御周期(時刻t+Δt)において、前回値として用いられる。
残余の構成および処理は、第4参考例と同一である。この第5参考例によれば、第4参考例と同様の作用効果を奏することができる。


次に、第6参考例を図73および図74を参照して説明する。第6参考例は、前記第4および第5参考例で用いた逆動力学フルモデル(逆フルモデル)201に代えて、順動力学モデル(より正確には擬似順動力学モデル)を用いて歩容を修正しつつ生成する手法である。
図73は、この第6参考例に係る装置の動作を説明する機能ブロック図である。同図73に示すように、本第6参考例では、擬似順フルモデル(擬似順動力学フルモデル)222を備えている。
この擬似順フルモデル222は、上体水平位置安定化モーメント要求値Mpfdmd、上体姿勢傾斜角安定化モーメント要求値Mrfdmd、逆位相腕振り角安定化モーメント要求値Mafdmd、目標ZMP、目標床反力鉛直成分、補償全床反力モーメント水平成分Mdmdxyおよび補償全床反力モーメント鉛直成分Mdmdzと、目標足平位置姿勢および目標腕姿勢など上体3を除く部位の運動状態とを入力として、目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標ZMPまわりの目標床反力モーメントとしてのコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)、および目標床反力水平成分を出力するモデルである。なお、擬似順フルモデル222の目標値入力は、前記図63を参照して説明した如く、歩容パラメータ決定部100aで決定される歩容パラメータを基に、目標瞬時値発生部100bにより生成される。
上記擬似順フルモデル222は、具体的には図74の機能ブロック図で表され、図74の破線で囲った部分が擬似順フルモデル222に相当する。なお、この機能ブロック図で前記第5参考例の図71と同一機能部分については、図71と同一の参照符号を用いている。
ここで、同図74の単純化モデル200は、単に動力学モデルだけでなく、前述の図65のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表す。また、S3532の今回歩容瞬時値(単純化モデル歩容瞬時値)の算出(決定)処理においては、前記第4参考例で説明したように目標ZMPまわりのモデル操作床反力モーメント水平成分を0として歩容の瞬時値を生成した上で、さらに第4参考例において述べた上体姿勢傾斜角補正用摂動モデルモーメントMrに相当する単純化歩容上体姿勢傾斜角補正用モーメントMr(前回値)を発生する上体傾斜モードの摂動運動と第4参考例において述べた上体水平位置補正用摂動モデルモーメントMpに相当する単純化モデル上体水平位置補正用モーメントMp(前回値)を発生する上体並進モードの摂動運動と第4参考例において述べた逆位相腕振り角補正用摂動モデルモーメントMaに相当する単純化モデル逆位相腕振り角補正用モーメントMa(前回値)を発生する逆位相腕振りモードの摂動運動を付加する。これにより、単純化モデル200が出力する歩容の瞬時値を補正する。
より具体的に説明すると、本第6参考例における図65のS3532の処理においては、そのサブルーチン処理である図57のS3414とS3416において、単純化モデル200で求めた上体水平加速度に、前記式03yの右辺第2項をMp(前回値)に等しいとした式、すなわちMp=mb*(Zb−Zzmp)*(d2Xb/dt2)という式に基づいて求められる上体水平加速度(d2Xb/dt2)を摂動分として加えてなる上体水平加速度を今回歩容の初期から現在時刻tまで2階積分することにより、現在時刻tにおける上体水平位置の瞬時値が求められる。また、図57のS3414において、単純化モデル200で求めた上体姿勢傾斜角加速度に、前記式03yの右辺第7項をMr(前回値)に等しいとした式、すなわち、Mr=J*d2θby/dt2という式に基づいて求められる上体姿勢傾斜角加速度(d2θby/dt2)を摂動分として加えてなる上体姿勢傾斜角加速度を今回歩容の初期から現在時刻tまで2階積分することにより、現在時刻tにおける上体姿勢傾斜角の瞬時値が求められる。また、図57のS3414において、単純化モデル200で求めた逆位相腕振り角加速度に、前記式03zの右辺第8項をMa(前回値)に等しいとした式、すなわち、Ma=Jaz*d2θaz/dt2という式に基づいて求められる逆位相腕振り角加速度(d2θaz/dt2)を摂動分として加えてなる逆位相腕振り角加速度を今回歩容の初期から現在時刻tまで2階積分することにより、現在時刻tにおける逆位相腕振り角の瞬時値が求められる。
補足すると、上体水平位置と上体姿勢傾斜角については、サジタルプレーン上の瞬時値について述べたが、ラテラルプレーン上の瞬時値も同様に求める。
図74において、単純化モデル200から先の部分がS3536の処理に相当する処理を実行する部分である。以下に図74を用いてS3536の処理を詳細に説明する。
S3536では、まず、S3032において上記の如く単純化モデル上体水平位置補正用モーメントMp(詳しくは時刻(t−Δt)の制御周期での前回値)を基に補正された単純化モデル水平上体位置が目標上体水平位置(時刻tでの上体水平位置の最終的な目標瞬時値)として出力される。また、単純化モデル上体姿勢傾斜角補正用モーメントMr(詳しくは時刻(t−Δt)の制御周期での前回値)を基に補正された単純化モデル上体姿勢傾斜角が目標上体姿勢傾斜角(時刻tでの上体姿勢傾斜角の最終的な目標瞬時値)として出力される。また、単純化モデル逆位相腕振り角補正用摂動モデルモーメントMa(詳しくは時刻(t−Δt)の制御周期での前回値)を基に補正された単純化モデル逆位相腕振り角が目標逆位相腕振り角(時刻tでの逆位相腕振り角の最終的な目標瞬時値)として出力される。
すなわち、式h100、式h101、式h102により、最終的な目標上体水平位置と目標上体姿勢傾斜角とが決定される。

目標上体水平位置=単純化モデル上体水平位置 …式h100
目標上体姿勢傾斜角=単純化モデル上体姿勢傾斜角 …式h101
目標逆位相腕振り角=単純化モデル逆位相腕振り角 …式h102

次いで、目標上体水平位置(すなわち単純化モデル上体水平位置)、目標上体姿勢傾斜角(すなわち単純化モデル上体姿勢傾斜角)、目標逆位相腕振り角(すなわち単純化モデル逆位相腕振り角)および前述のごとく得られた単純化モデル歩容の目標全体重心位置、目標足平位置姿勢、目標腕姿勢などの運動変数の瞬時値と目標ZMPの瞬時値とを、前記逆動力学フルモデル(逆フルモデル)201に入力し、入力された運動変数で表される運動に釣り合う(すなわち運動によって逆フルモデル201が発生する)床反力水平成分と目標ZMPまわりの床反力モーメント(水平成分および鉛直成分)とが算出される。以降、第5参考例と同様、これらの算出された床反力水平成分、床反力モーメント水平成分および床反力モーメント鉛直成分をそれぞれフルモデル床反力水平成分Ffull、フルモデル床反力モーメント水平成分Mfullxy、床反力モーメント鉛直成分Mfullzと呼ぶ。
第5参考例と同様、フルモデル床反力水平成分Ffullは、目標床反力水平成分(時刻tでの床反力水平成分の最終的な目標瞬時値)として出力される。
本第6参考例では、上体姿勢傾斜角補正用摂動モデルと上体水平位置補正用摂動モデルと逆位相腕振り角補正用摂動モデルとを備えないので、上体水平位置補正用摂動モデル制御則と上体姿勢傾斜角補正用摂動モデル制御則と逆位相腕振り角補正用摂動モデル制御則とに相当する処理は、後述するように、第5参考例とは異なる。
このことを除けば、上記処理以降、単純化モデル上体姿勢傾斜角補正用モーメントMrと単純化モデル上体水平位置補正用モーメントMpと単純化モデル逆位相腕振り角補正用モーメントMaとを決定するまでは、第5参考例において、上体姿勢傾斜角補正用摂動モデルモーメントMrと上体水平位置補正用摂動モデルモーメントMpと逆位相腕振り角補正用摂動モデルモーメントMaとを決定する処理と同一の処理が実行される。すなわち、Min演算部209、Fin演算部210、制限処理部211(制限手段)、Mpf演算部215、Merr演算部216、Mrf演算部217(=Mr演算部)、Mp演算部214の処理は、第5参考例と同一である。さらに、逆位相腕振り角補正用摂動モデル制御則とに相当する処理を除けば、単純化モデル逆位相腕振り角補正用モーメント決定部230の処理は、前記第5参考例における逆位相腕振り角補正用摂動モデルモーメント決定部230の処理と同一である。なお、本第6参考例では、Mr、MpおよびMaは、それぞれ第5参考例における上体姿勢傾斜角補正用摂動モデルモーメントMrと上体水平位置補正用摂動モデルモーメントMpと逆位相腕振り角補正用摂動モデルモーメントMaとにそれぞれ対応するものであるが、第5参考例のように摂動モデルに入力するものではなく、単純化モデル200に入力するものである。このため、Mr、MpおよびMaの名称を本第6参考例では、単純化モデル上体姿勢傾斜角補正用モーメント、単純化モデル上体水平位置補正用モーメント、単純化モデル逆位相腕振り角補正用モーメントと称している。
上記のごとく求められた単純化モデル上体姿勢傾斜角補正用モーメントMrと単純化モデル上体水平位置補正用モーメントMpと単純化モデル逆位相腕振り角補正用モーメントMaとは、前述のごとく次回制御周期(時刻t+Δt)に、単純化モデル歩容瞬時値の決定(生成)時に前回値として用いられる。
残余の構成及び処理は、第5参考例と同一である。
以下に、上体姿勢傾斜角安定化モーメント要求値Mrfdmdと上体水平位置安定化モーメント要求値Mpfdmdと逆位相腕振り角安定化モーメント要求値Mafdmdとの決定処理について図73を参照して説明する。
図73に示すように、第6参考例では、前述したように擬似順フルモデル222に備える単純化モデル200とは別の単純化モデル223を備えている。この単純化モデル223は、本第6参考例でのその機能は、前述した単純化モデル200と同一であり、単に動力学モデルだけでなく、前述の図65のS3510からS3532の処理、すなわち単純化モデル歩容瞬時値の算出(決定)処理を表すものである。なお、単純化モデル223は、実際上は、上体姿勢傾斜角の瞬時値と、上体水平位置の瞬時値とを決定できればよく、必ずしも図65のS3510からS3532の処理の全てを行なう必要はない。
以下に図73を用いて第6参考例におけるMpfdmdおよびMrfdmdの決定処理を詳細に説明する。
本第6参考例においては、単純化モデル223を用いて生成される歩容と前記擬似順動力学フルモデル222を用いて前述の通り算出される歩容との間の上体水平位置、上体姿勢傾斜角および逆位相腕振り角のそれぞれの差が演算部224,225、228により求められる。そして、これらの差に応じて、これらの差が0に収束するようにPIDなどのフィードバック制御則によって上体水平位置安定化モーメント要求値Mpfdmd、上体姿勢傾斜角安定化モーメント要求値Mrfdmdおよび逆位相腕振り角安定化モーメント要求値Mafdmdが決定される。すなわち、単純化モデル223による上体水平位置と擬似順フルモデル222による上体水平位置との差に応じて、フィードバック制御則からなる上体水平位置安定化制御則226によって、Mpfdmdが求められる。また、単純化モデル223による上体姿勢傾斜角と擬似順フルモデル222による上体姿勢傾斜角との差に応じて、フィードバック制御則からなる上体姿勢傾斜角安定化制御則227によって、Mrfdmdが求められる。また、単純化モデル223による逆位相腕振り角と擬似順フルモデル222による逆位相腕振り角との差に応じて、フィードバック制御則からなる逆位相腕振り角安定化制御則によって、Mafdmdが求められる。そして、この決定されたMpfdmd、Mrfdmd及びMafdmdが、前記擬似順動力学フルモデルにフィードバックされて入力される。
なお、第6参考例では、歩容生成装置100は、前記擬似順動力学フルモデル222への入力の一部である目標ZMP、目標床反力鉛直成分、目標足平位置姿勢および目標腕姿勢などと、前記擬似順動力学フルモデル222からの出力である目標上体鉛直位置、目標上体水平位置、目標上体姿勢傾斜角、目標逆位相腕振り角、目標床反力水平成分およびコンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)を最終的な今回歩容の目標瞬時値として出力する。
以上説明した第6参考例によれば、前記第5参考例と同様の作用効果を奏することができる。
なお、前記第6参考例では、上体姿勢傾斜角安定モーメント要求値Mrfdmd、上体水平位置安定化モーメント要求値Mpfdmdおよび逆位相腕振り角安定化モーメント要求値Mafdmdを擬似順フルモデル222のみに入力するようにしたが、Mrfdmd、MpfdmdおよびMafdmdを単純化モデル223に入力するようにしてもよく、あるいは、単純化モデル223と擬似順フルモデル222とに分配・供給するようにしてもよい。また、補償全床反力モーメント鉛直成分Mdmdzを単純化モデル223に入力し、このMdmdzが付加的に発生するように単純化モデル逆位相腕振り角を決定するようにしてもよい。


次に、本発明の第7参考例を図75を参照して説明する。図75は、この第7参考例に係る装置の動作、具体的には、図65のフローチャートのS3536の歩容の修正手法を説明する機能ブロック図である。なお、図75では、第4参考例もしくは第5参考例と同一機能部分については、図66又は図71と同一の参照符号を用いる。
第7参考例においては、上体水平位置補正用摂動モデル202と上体姿勢傾斜角補正用摂動モデル203と逆位相腕振り角補正用摂動モデル231とを備える。また、3つの分配器220,221,241を備える。
分配器220,221,241を定義すると、いずれも、1入力2出力の伝達ブロックであり、入力に応じて、一方の出力を決定し(例えば、入力に周波数特性、不感帯特性、飽和特性などの信号処理を行って一方の出力を決定し)、2つの出力の和が入力に一致またはほぼ一致するように、他方の出力を決定する伝達ブロックである。
分配器220には、制限補正目標床反力モーメント水平成分Mltdxyから、上体水平位置補正用摂動モデル安定化モーメントMpfと補償全床反力モーメント水平成分Mdmdxyとを減じたもの(Mr演算部214の出力)である上体姿勢傾斜角補正用モーメントMrが入力され、上体姿勢傾斜角補正用摂動モデル203に入力する上体姿勢傾斜角補正用摂動モデル入力Mriと、単純化モデル200に入力する単純化モデル上体姿勢傾斜角補正用モーメントMrsとに分配される。この時、上体姿勢傾斜角補正用摂動モデル入力Mriと単純化モデル上体姿勢傾斜角補正用モーメントMrsとの和が上体姿勢傾斜角補正用モーメントMrに一致するように、上体姿勢傾斜角補正用摂動モデル入力Mriと単純化モデル上体姿勢傾斜角補正用モーメントMrsとが決定される(出力される)。
より具体的には、上体姿勢傾斜角補正用モーメントMrに応じて、上体姿勢傾斜角補正用摂動モデル入力Mriが決定される。例えば、上体姿勢傾斜角補正用モーメントMrを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、上体姿勢傾斜角補正用摂動モデル入力Mriが決定される。また、上体姿勢傾斜角補正用モーメントMrから上体姿勢傾斜角補正用摂動モデル入力Mriを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントMrsとして決定される。さらに具体的に説明すると、第7参考例では、分配器220は、例えば、入力(上体姿勢傾斜角補正用モーメントMr=Mltd−Mpf−Mdmdxy)をローパスフィルタに通してなる低周波成分(直流分)を単純化モデル上体姿勢傾斜角補正用モーメントMrsとして出力すると共に、その入力(上体姿勢傾斜角補正用モーメントMr)からMrsを差し引いた成分が上体姿勢傾斜角補正用摂動モデル入力Mriとして出力される。この場合、低周波成分(直流分)である単純化モデル上体姿勢傾斜角補正用モーメントMrsに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Mrsが該所定値(例えば0)に維持されるようにしておく。
分配器220の出力である上体姿勢傾斜角補正用摂動モデル入力Mriは、前記上体姿勢傾斜角補正用摂動モデル203に入力され、上体姿勢傾斜角補正用摂動モデル203により補正用摂動モデル上体姿勢傾斜角θcが決定される。
分配器220のもうひとつの出力である単純化モデル上体姿勢傾斜角補正用モーメントMrsは単純化モデル200に入力される。これは、前記第6参考例における図74において、単純化モデル上体姿勢傾斜角補正用モーメントMrを単純化モデル200に入力することに相当するものである。
分配器221においては、フルモデル床反力モーメント水平成分誤差MerrにゲインKmを乗じた値を積分器217aによって積分し、さらに符号を反転した値を入力とする。
分配器221の入力は、分配器220と同様、単純化モデル200に入力する単純化モデル上体水平位置補正用モーメントMpsと、上体水平位置補正用摂動モデル202に入力する誤差補正モーメントMeとに分配される。より具体的には、積分器217aの出力に応じて、誤差補正モーメントMeが決定される。例えば、積分器217aの出力(分配器220の入力)を不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、誤差補正モーメントMeが決定される。また、積分器217aの出力から、誤差補正モーメントMeを差し引いたものが、単純化モデル上体姿勢傾斜角補正用モーメントMrsとして決定される。さらに具体的に説明すると、本第7参考例では、分配器221は、例えば、入力(積分器217aの出力)をローパスフィルタに通してなる低周波成分(直流分)を単純化モデル上体水平位置補正用モーメントMpsとして出力すると共に、その入力(積分器217aの出力)からMpsを差し引いた成分を誤差補正モーメントMeとして出力する。この場合、低周波成分(直流分)である単純化モデル上体水平位置補正用モーメントMpsに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Mpsが該所定値(例えば0)に維持されるようにしておく。
分配器221の出力である誤差補正モーメントMeに上体水平位置補正用モデル安定化モーメントMpfをMp演算部217bで加算することにより上体水平位置補正用摂動モデルモーメントMpが求められる。そして、上体水平位置補正用摂動モデルモーメントMpは、上体水平位置補正用摂動モデル202に入力され、上体水平位置補正用摂動モデル202により補正用摂動モデル上体水平位置Xcが決定される。
分配器221のもうひとつの出力である単純化モデル上体水平位置補正用モーメントMpsは単純化モデル200に入力される。これは、前記第6参考例の図74において、単純化モデル上体水平位置補正用モーメントMpを単純化モデル200に入力することに相当するものである。
逆位相腕振り角補正用摂動モデルモーメント決定部230は、第5参考例において用いた図72に示す逆位相腕振り角補正用摂動モデルモーメント決定部と同一である。ただし、図72の出力である逆位相腕振り角補正用摂動モデルモーメントMaは、逆位相腕振り角補正用摂動モデル231に直接入力されず、分配器241に入力される。そこで、本第7参考例では逆位相腕振り角補正用摂動モデルモーメントMaは、名称を改めて逆位相腕振り角補正用モデルモーメントMaと呼ぶ。
分配器241においては、逆位相腕振り角補正用摂動モデルモーメント決定部230が決定した逆位相腕振り角補正用モデルモーメントMaを入力とする。
分配器241の入力は、分配器220と同様、単純化モデル200に入力する単純化モデル逆位相腕振り角補正用モーメントMasと、逆位相腕振り角補正用摂動モデル231に入力する逆位相腕振り角補正用摂動モデル入力Maiとに分配される。
この時、逆位相腕振り角補正用摂動モデル入力Maiと単純化モデル逆位相腕振り角補正用モーメントMasとの和が逆位相腕振り角補正用モデルモーメントMaに一致するように、逆位相腕振り角補正用摂動モデル入力Maiと単純化モデル逆位相腕振り角補正用モーメントMasとが決定される(出力される)。
より具体的には、逆位相腕振り角補正用モデルモーメントMaに応じて、逆位相腕振り角補正用摂動モデル入力Maiが決定される。例えば、逆位相腕振り角補正用モデルモーメントMaを不感帯特性、飽和特性、あるいは周波数特性を持つ信号処理を通して、逆位相腕振り角補正用摂動モデル入力Maiが決定される。また、逆位相腕振り角補正用モデルモーメントMaから逆位相腕振り角補正用摂動モデル入力Maiを差し引いたものが、単純化モデル逆位相腕振り角補正用モーメントMasとして決定される。さらに具体的に説明すると、第7参考例では、分配器241は、例えば、入力(逆位相腕振り角補正用モデルモーメントMa)をローパスフィルタに通してなる低周波成分(直流分)を単純化モデル逆位相腕振り角補正用モーメントMasとして出力すると共に、その入力(逆位相腕振り角補正用モデルモーメントMa)からMasを差し引いた成分が逆位相腕振り角補正用摂動モデル入力Maiとして出力される。この場合、低周波成分(直流分)である単純化モデル逆位相腕振り角補正用モーメントMasに関しては、不感帯特性を持たせておき、上記ローパスフィルタの出力が、ある所定値を中心とする所定範囲内に存在する状態では、Masが該所定値(例えば0)に維持されるようにしておく。
分配器241の出力である逆位相腕振り角補正用摂動モデル入力Maiは、前記逆位相腕振り角補正用摂動モデル231に入力され、逆位相腕振り角補正用摂動モデル231により補正用摂動モデル逆位相腕振り角θcaが決定される。
分配器241のもうひとつの出力である単純化モデル逆位相腕振り角補正用モーメントMasは単純化モデル200に入力される。これは、前記第6参考例における図74において、単純化モデル逆位相腕振り角補正用モーメントMaを単純化モデル200に入力することに相当するものである。
単純化モデル200は、前記第6参考例と同様、単純化モデル歩容瞬時値の算出(決定)処理において、目標ZMPまわりに床反力モーメント水平成分が発生しないように(モデル操作床反力モーメントを0として)歩容の瞬時値を生成した上で、単純化モデル上体姿勢傾斜角補正用モーメントMrs(前回値)を発生する上体傾斜モードの摂動運動を付加し、単純化モデル上体水平位置補正用モーメントMps(前回値)を発生する上体並進モードの摂動運動を付加し、さらに単純化モデル逆位相腕振り角補正用モーメントMasを発生する逆位相腕振りモードの摂動運動を付加して、歩容の瞬時値を補正する。
なお、本第7参考例では、図65のS3528の処理の一部である図43のS800において、前回歩容の終端状態として、前回歩容終端における単純化モデルの状態量を用いる。従って、分配器220,221,241から単純化モデルに出力されるMrs、Mps及びMasが0以外の値となる時があれば、単純化モデルは当初の挙動からずれるので、これに応じてS3528において、歩容パラメータが適宜修正される。また、前記不感帯の領域を大きく設定すると、Mrs、Mps及びMasの絶対値が小さくなるので、歩容パラメータの修正量の絶対値も小さくなる。
その他の構成及び処理は、第5参考例と同一である。より詳しくは、演算部204,205,目標上体水平位置を演算する演算部、Merr演算部216、上体姿勢傾斜角補正用摂動モデル制御則207、上体水平位置補正用摂動モデル制御則206、Min演算部209、Fin演算部210、制限処理部211、Mpf演算部215、逆位相腕振り角補正用摂動モデルモーメント決定部240の処理は、前記第5参考例と同一である。
なお、本第7参考例では、前記第4参考例で説明したように今回歩容の終端等で各摂動モデル202、203、231の状態量により単純化モデル200の状態量を修正するような処理は行なう必要はない。これは、分配器220,221,241から単純化モデル上体姿勢傾斜角補正用モーメントMrs、単純化モデル上体水平位置補正用モーメントMps及び単純化モデル逆位相腕振り角補正用モーメントMasが追加入力されるからである。
かかる本実施形態では、前記第5参考例あるいは第6参考例と同様の作用効果を奏することができる。
なお、本第7参考例では、各分配器220,221、241の2つの出力のうち一方を0とし、他方を入力に一致させるようにしても良い。
この場合、例えば分配器220の出力である単純化モデル上体姿勢傾斜角補正用モーメントMrsを0にし、分配器221の出力である単純化モデル上体水平位置補正用モーメントMpsを0にし、分配器241の出力である単純化モデル逆位相腕振り角補正用モーメントMasを0にすると、第5参考例と同一の作用効果を奏することとなる(事実上、第5参考例のものと同一構成となる)。
また、誤差補正モーメントMeに上体水平位置補正用モデル安定化モーメントMpfを加算した値を図示しない第3の分配器に入力し、その出力の一方を上体水平位置補正用摂動モデルに入力し、もう一方の出力を単純化モデル上体水平位置補正用モーメントMpsに加算しても良い。この場合、分配器221の出力である単純化モデル上体水平位置補正用モーメントMpsを0にしても良い。すなわち、分配器221を省略し、フルモデル床反力モーメント誤差MerrにゲインKmを乗じた値を積分して符号を反転した値を上体水平位置補正用モデル安定化モーメントMpfに加算した値を第3の分配器に入力しても良い。


なお、以上説明した第4〜第7参考例では、図65のS3532において、目標ZMPを満足するように、すなわち、目標ZMPまわりの床反力モーメント水平成分が0になるように、今回歩容瞬時値(目標運動の仮瞬時値)を決定するようにしたが、これに代えて、第2参考例における図56のS3032のように、目標ZMPまわりにモデル操作床反力モーメント水平成分が発生するように今回歩容瞬時値を決定するようにしてもよい。この場合には、図53に示す如く、歩容生成装置100に補償全床反力モーメント水平成分分配器110からモデル操作床反力モーメント水平成分を与えるようにすればよい。
また、以上説明した第1〜第7参考例においては、補償全床反力モーメント水平成分Mdmdxyは、上体姿勢角・角速度の代わりに、全体重心水平位置・速度など、ロボット1の他の姿勢に関する状態量に基づいて決定しても良い。


次に、本発明の第1実施形態を図76から図83を参照して説明する。
本実施形態における制御ユニット60の機能ブロック図を図76に示す。なお、本実施形態では、前記第3参考例と同一構成部分もしくは同一機能部分については第3参考例と同一の参照符号を用いる。
本実施形態では、第3参考例(図59参照)に比較して、実ロボット1の滑りの有無を判定する滑り判定部114が追加されている。また、滑り判定部114から出力される滑り判定結果が歩容生成装置100に入力される。歩容生成装置100においては、滑り判定結果が滑りありと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を狭める。また、歩容生成装置100は、滑り判定結果が滑りなしと判定されると、歩容パラメータを基に決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲に戻す。他の構成および処理に関しては、前記第3参考例と同一である。
滑り判定部114を、その処理を表すフローチャートである図79を用いて詳細に説明すると、まず、S5210において、スピン判定サブルーチンが実行される。スピン判定サブルーチンでは、そのフローチャートである図80のS5310に進み、実上体姿勢角速度および関節角指令(検出値)を基に支持脚足平22の対地角速度鉛直成分ωsupzを求める。次いでS5312に進み、足平22の6軸力センサ50の検出値(実床反力)を基に、支持脚に作用している実床反力モーメント鉛直成分の時間的な変化率である支持脚床反力モーメント鉛直成分の変化率dMsupactz/dtを求める。次いでS5314に進み、前記支持脚足平22の対地角速度鉛直成分ωsupzの絶対値がある所定の値ωeを越えているか否かを判定する。越えている場合には、S5316に進み、前記支持脚床反力モーメント鉛直成分の変化率dMsupactz/dtを前記支持脚足平の対地角速度鉛直成分ωsupzで割って符号を反転した値である、支持脚の見かけねじりばね定数Ksuptを求める。次いでS5318に進み、Ksuptがある所定の値Ksuptminよりも小さいか否かを判定し、小さい場合には、S5320に進み、スピン判定結果を、スピンありと判定し、そうでない場合には、S5322に進み、スピン判定結果を、スピンなしと判定する。また、S5314において、前記支持脚足平の対地角速度鉛直成分ωsupzの絶対値が前記所定の値ωeを越えていないと判定された場合には、S5324に進み、スピン判定結果を、スピンなしと判定する。このようにスピンの有無を判定することで、足平22などの撓み(弾性変形)によって、ωsupzの絶対値がある所定の値ωeを超えたようなときに、スピン有りと誤判定されるような事態が回避される。
以上のごとくS5210の処理を完了した後、S5212に進み、並進滑り判定サブルーチンが実行される。
並進滑り判定サブルーチンでは、そのフローチャートである図81のS5410に進み、実上体姿勢角速度、加速度検出値および関節角指令(検出値)を基に支持脚足平22の対地並進速度水平成分Vsupxyを求める。次いでS5412に進み、足平22の6軸力センサ50の検出値(実床反力)を基に、支持脚に作用している実床反力水平成分の時間的な変化率である支持脚床反力水平成分の変化率dFsupactxy/dtを求める。次いでS5414に進み、前記支持脚足平の対地並進速度水平成分Vsupxyの絶対値がある所定の値Veを越えているか否かを判定する。越えている場合には、S5416に進み、前記支持脚床反力水平成分の変化率dFsupactxy/dtを前記支持脚足平22の対地並進速度水平成分Vsupxyで割って符号を反転した値である、支持脚の見かけせん断ばね定数Ksups(=(−dFsupactxy/dt)/Vsupxy)を求める。次いでS5418に進み、Ksupsがある所定の値Ksupsminよりも小さいか否かを判定し、小さい場合には、S5420に進み、並進滑り判定結果を、並進滑りありと判定し、そうでない場合には、S5422に進み、並進滑り判定結果を、並進滑りなしと判定する。また、S5414において、前記支持脚足平の対地並進速度水平成分Vsupxyの絶対値が前記所定の値Veを越えていないと判定された場合には、S5424に進み、並進滑り判定結果を、並進滑りなしと判定する。このように並進滑りの有無を判定することで、足平22などの撓み(弾性変形)によって、Ksupsの絶対値がある所定の値Ksupsminを超えたようなときに、並進滑り有りと誤判定されるような事態が回避される。
以上のごとくS5212の処理を完了した後、S5214に進み、滑り振動判定サブルーチンが実行される。
滑り振動判定サブルーチンでは、そのフローチャートである図82のS5510に進み、足平22の6軸力センサ50の検出値(並進力水平成分および/またはモーメント鉛直成分)をバンドパスフィルタに通すことにより、滑り振動成分を抽出する。尚、足平22の6軸力センサ50の検出値の代わりに、足平22にヨーレートセンサ、加速度センサ等を備えて、その検出値を用いても良い。また、バンドパスフィルタの通過周波数帯は、足平22の足底や床面の材質などに応じてあらかじめ設定される。次いでS5512に進み、検出された滑り振動成分の大きさの絶対値がある所定の値Ampeを越えているか否かを判定する。越えている場合には、S5514に進み、滑り振動判定結果を、滑り振動ありと判定し、そうでない場合には、S5516に進み、滑り振動判定結果を、滑り振動なしと判定する。
以上のごとくS5214の処理を完了した後、S5216に進み、スピン判定結果がスピンあり、または並進滑り判定結果が並進滑りあり、または滑り振動判定結果が滑り振動ありであるならば、S5218に進み、総合判定結果である滑り判定結果を滑りありと決定し、そうでないならば、S5220に進み、総合判定結果である滑り判定結果を滑りなしと決定する。以上が、滑り判定部114の処理である。
図77に本実施形態における歩容生成装置100のメインルーチン処理のフローチャートを示す。
同図77おいて、S2310からS2332までは、第3参考例のフローチャート(図60)のS2010からS2032までの処理と同一の処理が行なわれる。
次いでS2334に進み、修正歩容瞬時値決定サブルーチンが実行される。
本実施形態では、修正歩容瞬時値決定サブルーチンでは、元歩容に近づくように目標ZMPおよび逆位相腕振り復元角加速度パターンを修正しつつ、修正された目標ZMPまわりにモデル操作床反力モーメント(水平成分および鉛直成分)が付加的に発生するように修正歩容瞬時値が決定される。ただし床反力許容範囲を滑り判定結果に応じて変更され、この点が第3参考例と相違する。
図78に修正歩容瞬時値決定サブルーチンのフローチャートを示す。
修正歩容瞬時値決定サブルーチンでは、まずS5100からS5114までの処理が、第3参考例の修正歩容瞬時値決定サブルーチンである図61のS2100からS2112と同様に実行される。次いで、S5116に進み、前記滑り判定部114による滑り判定結果が滑りありであるか否かを判定し、前記滑り判定結果が滑りありの場合には、S5118に進み、許容範囲低減率attを徐々に0に近づける(実質的に連続的に減少させる)。尚、許容範囲低減率attは0から1までの値をとるものとする。S5116において前記滑り判定結果が滑りなしと判定された場合には、S5120に進み、許容範囲低減率attを徐々に1に近づける(実質的に連続的に増加させる)。
次いでS5122に進み、S5110およびS5112で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲の上限値および下限値であるFxmin,Fxmax,MzminおよびMzmaxにそれぞれ許容範囲低減率attを乗じることにより、床反力水平成分許容範囲と床反力モーメント鉛直成分許容範囲を狭める。以降、このS5122で決定される床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を総称的に最終的床反力許容範囲という。尚、当然のことながら低減率が1の場合には、最終的床反力許容範囲は、S5110およびS5112で決定した床反力水平成分と床反力モーメント鉛直成分の許容範囲(以下、これらを元の床反力許容範囲ということがある)に一致し、該元の床反力許容範囲から狭まらない。
図83に、滑り判定結果に応じて、許容範囲低減率att、最終的床反力許容範囲(具体的には、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲)が変化する様子の例を示す。
滑りが発生した場合には、グリップ状態に早急に回復しないとロボット1が転倒する恐れが生じるので、滑りが発生したと判定されたならば、最終的床反力許容範囲をすばやく狭めるようにした方が良い。ただし、急激過ぎると、歩容の加速度変化が大きくなり過ぎ、衝撃などが生じるので、急激過ぎない適切な値にすべきである。
滑りがなくなったと判定されたならば、最終的床反力許容範囲を元の床反力許容範囲にすばやく戻すようにした方が良い。最終的床反力許容範囲が狭いままであると、修正歩容が元歩容から大きくずれていってしまうからである。ただし、急激過ぎると、歩容の運動の加速度変化が大きくなり過ぎ、衝撃などが生じて再び滑ってしまうので、急激過ぎない適切な値にすべきである。
次いでS5124に進み、図61のS2114と同様、床反力モーメント水平成分許容範囲と床反力モーメント鉛直成分許容範囲と床反力水平成分許容範囲との条件を満足するように、モデル操作床反力モーメント水平成分、コンプライアンス制御用目標床反力モーメント(水平成分および鉛直成分)、上体水平加速度および上体姿勢傾斜角加速度および逆位相腕振り角加速度を決定する。
次いでS5126からS5128まで進み、図61のS2116からS2118までと同様の処理が行われる。
上記のごとく修正歩容瞬時値決定サブルーチンが実行され、次いで図77のS2336に進み、現在時刻tをΔtだけ増加して、再びS2314に戻り、歩容生成を続ける。
以上が、本実施形態における歩容生成装置100の処理である。
上記のごとく、本実施形態においては、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲を滑り判定結果に応じて変更するようにしたが、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲のいずれか一方だけを変更するようにしても良い。
一般的に、足平22が床面上で平行に滑っている場合(せん断方向に滑っている場合)には、スピン方向(ヨー方向)のグリップ力も低下する。また逆に、スピン方向(ヨー方向)に滑っている場合には、足平22が床面上で平行に滑り易くなる。したがって、いずれかの滑りが検知されたならば、床反力水平成分許容範囲および床反力モーメント鉛直成分許容範囲の両方を狭める(0にする)方が滑りから回復する効果は高い。
以上説明した第1実施形態は、本発明の第3〜第7発明の実施形態になっている。この場合、第1実施形態における床反力水平成分が制限対象量、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差がロボット1の状態量の偏差に相当する。また、第1実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、発明における動力学モデルは、図12の動力学モデルが相当する。また、図77のS2334で決定される修正歩容瞬時値の運動成分と床反力成分とがそれぞれ目標運動の瞬時値および目標床反力の瞬時値に相当する。


前記第1実施形態では、歩容生成装置100として前記第3参考例のものを用いたが、第3参考例の代わりに第1、第2、第4〜第7参考例のいずれのものを用いても良い。
第1参考例を用いる場合の実施形態では、例えば図13のS030で今回歩容瞬時値を決定するときに、そのサブルーチンである図45のS1411とS1412との間に図78のS5116〜S5122の処理を挿入すればよい。このようにした実施形態(第2実施形態)は、本発明のうちの第1発明、第2発明並びに第5〜第7発明の実施形態となる。この場合、第1実施形態における床反力水平成分が第1発明における制限対象量に相当し、床反力鉛直成分が第2発明における制限対象量に相当する。また、第1実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が第1発明における制限対象量の許容範囲に相当し、歩容生成用の床反力モーメント鉛直成分許容範囲[Mzmin,Mzmax]が第2発明における制限対象量の許容範囲に相当する。また、発明における動力学モデルは、図12の動力学モデルが相当する。また、図13のS030で決定される今回歩容瞬時値の運動成分が目標運動に相当する。また、図13のS030の中で実行される図46のS1004において、S504,S518(図26を参照)で仮に決定される運動が前記第1発明あるいは第2発明における仮運動に相当する。
また、第2参考例を用いる場合の実施形態では、例えば図56のS3032で今回歩容瞬時値を決定するときに、そのサブルーチンである図57のS3411とS3412との間に図78のS5116〜S5122の処理を挿入すればよい。このようにした実施形態(第3実施形態)は、本発明のうちの第3〜第7発明の実施形態となる。この場合、第3実施形態における床反力水平成分が制限対象量に相当し、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差が第3及び第4発明におけるロボット1の状態量の偏差に相当する。また、第3実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、発明における動力学モデルは、図12の動力学モデルが相当する。また、図56のS3034で決定される今回歩容瞬時値の運動成分と床反力成分とが目標運動の瞬時値、目標床反力の瞬時値に相当する。なお、第3実施形態では、床反力モーメント鉛直成分補償量許容範囲を滑りの発生の判断結果に応じて可変的に設定するようにしてもよい。
また、第4参考例を用いる場合の実施形態では、例えば図65のS3536の処理(フルモデルを用いた歩容の修正処理)を実行するときに、図78のS5116〜S5122の処理を実行して、許容範囲を可変的に設定するようにすればよい。このようにした実施形態(第4実施形態)は、本発明のうちの第3〜第7発明の実施形態となる。この場合、第4実施形態における床反力水平成分が制限対象量に相当し、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差がロボット1の状態量の偏差に相当する。また、第4実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、図65のS3536で修正された歩容の運動成分および床反力成分がそれぞれ第3発明及び第4発明における目標運動の瞬時値、目標床反力の瞬時値に相当する。また、発明における動力学モデルは、逆フルモデル(各摂動モデル202,203,231を含む)が相当する。
また、第5参考例を用いる場合の実施形態では、例えば図65のS3536の処理(フルモデルを用いた歩容の修正処理)を実行するときに、図78のS5116〜S5122の処理を実行して、許容範囲を可変的に設定するようにすればよい。このようにした実施形態(第5実施形態)は、本発明のうちの第3〜第7発明の実施形態となる。この場合、第5実施形態における床反力水平成分が制限対象量に相当し、上体姿勢傾斜角偏差および/または上体姿勢傾斜角速度偏差がロボット1の状態量の偏差に相当する。また、第5実施形態における歩容生成用の床反力水平成分許容範囲[Fxmin,Fxmax]が制限対象量の許容範囲に相当する。また、図65のS3536で修正された歩容の運動成分および床反力成分がそれぞれ第3発明及び第4発明における目標運動の瞬時値、目標床反力の瞬時値に相当する。また、発明における動力学モデルは、フルモデル(各摂動モデル202,203,231を含む)が相当する。
なお、第6および第7参考例を用いる場合の実施形態は、上記第5実施形態と同様であり、第3〜第7発明の実施形態となる。

また、滑りの判定方法としては、前記第1実施形態において挙げた方式以外にも、以下のようないずれを用いても良い。あるいはこれらの結果を総合的に(論理和、積などの論理演算を用いてい)判断しても良い。
1)角速度検出器などを基に床に対する足平22の角速度を求め、この値の絶対値がある所定の値を越えたら、滑りが発生と判定する。
2)いずれかの脚体2の床反力モーメントの絶対値がある所定の値を越えたら、滑りが発生と判定する。
3)全床反力モーメント(両脚体2,2の床反力の合力のモーメント)の絶対値がある所定の値を越えたら、滑りが発生と判定する。
4)両脚支持期において、全床反力モーメントの変化率と上体姿勢角速度偏差との比に(−1)を乗じた値がある所定の値(両脚接地時ねじり剛性)よりも小さいならば、滑りが発生と判定する。
5)視覚センサや空間フィルタ等を用いた非接触型の対地速度、角速度検出器、あるいは接触型の対地速度、角速度検出器の検出値(推定値)の絶対値がある所定の値を越えたならば、滑りが発生と判定する。


次に、前記第1〜第7参考例およびこれを用いる実施形態(前記第1〜第5実施形態を含む)に係る変形態様を以下に説明する。
前記第2〜第7参考例及びこれを用いる実施形態では、補償全床反力モーメント水平成分およびを補償全床反力モーメント鉛直成分を決定するようにしたが、補償全床反力モーメント水平成分および補償全床反力モーメント鉛直成分のいずれか、もしくは両者を0に設定しても良い。ただしこの場合には、フルモデル補正は、単に単純化モデルによる目標歩容の精度を高めるために用いられ、フルモデルを用いて歩容を修正することによる上体姿勢傾斜復元効果および/または上体ヨー角(角速度)復元効果はなくなる。
前記第4〜第7参考例およびこれを用いる実施形態においては、単純化モデル200による歩容生成(単純化モデル歩容生成)には、本願出願人が先に提案した特開平5−337849号公報の第1実施例、第2実施例の歩容生成装置を用いても良い。フルモデルによる補正量を小さくすることができるので、補正された歩容が単純化モデル歩容から大きくずれることを防止できる。
前記第2参考例およびこれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyが床反力モーメント許容範囲水平成分を越えると(第4参考例以降およびそれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和が床反力モーメント許容範囲を越えると)、コンプライアンス制御用目標床反力モーメント水平成分は、床反力モーメント水平成分許容範囲の上限値あるいは下限値になる。但し、補償全床反力モーメント水平成分Mdmdxy(第4参考例以降およびそれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和)が床反力モーメント水平成分許容範囲を越えていても、補償全床反力モーメント水平成分Mdmdxy(第4参考例以降およびそれを用いる実施形態においては、補償全床反力モーメント水平成分Mdmdxyとモデル操作床反力モーメント水平成分との和)の増加もしくは減少に応じてコンプライアンス制御用目標床反力モーメント水平成分も増加もしくは減少するようにしても良い。コンプライアンス制御用目標床反力モーメント水平成分が床反力モーメント水平成分許容範囲に接近すると、コンプライアンス制御によって制御される実床反力モーメント水平成分が目標よりも少なめになる傾向があり、このためコンプライアンス制御用目標床反力モーメント水平成分が少々許容範囲を越えても、すぐには、足平22の本来の接地感を低下させたり、足平22の底面が浮いてしまうような不具合が発生しない場合が多いからである。
同様の理由により、床反力モーメント水平成分許容範囲をいわゆる支持多角形で表されるZMP存在可能範囲(厳密な表現では、実床反力作用点の存在許容範囲)をモーメント水平成分に換算して得られる許容範囲を越えて設定しても良い。
コンプライアンス制御によって発生する床反力モーメント水平成分に過度に期待すると、上記のごとく足平22の本来の接地感を低下させたり、足平22の底面が浮いてしまうような不具合が発生する。よって、床反力モーメント水平成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント水平成分の許容範囲であると言える。
床反力モーメント水平成分許容範囲は、歩容パラメータからのみならず、検出された実床反力にも基づいて決定しても良い。また、階段でのエッジ位置検出値など、足平22の接地領域の検出値にも基づいて決定してもよい。
一方、コンプライアンス制御によって発生する床反力モーメント鉛直成分に過度に期待すると、スピンしてしまうような不具合が発生する。よって、床反力モーメント鉛直成分許容範囲は、姿勢制御がコンプライアンス制御に期待する実床反力モーメント鉛直成分の許容範囲であると言える。
前記第2参考例およびこれを用いる実施形態の図56のS3028における今回歩容パラメータの修正(目標ZMPの修正)を制御周期毎に実行するように、メインフローチャートの処理を変更しても良い。
修正歩容(目標歩容)が元歩容より大きくずれてしまう場合(発散してしまう場合)には、次回歩容の歩容パラメータ修正をする頃に既に、大きくずれて過ぎてしまい(発散し過ぎてしまい)、次回歩容の歩容パラメータ修正だけでは、継続的長期的に安定な目標歩容を生成することが困難になる。今回歩容パラメータの修正(目標ZMPの修正)を制御周期毎に実行することによって、この問題をかなり解決することができる。
さらには、元歩容からのずれ具合によって、今回歩容の足平着地位置や着地時刻などを制御周期毎に変更しても良い。
具体的には、S3020からS3030までの処理を制御周期毎に実行するように処理フローを変更しておき、S3020において、次回歩容支持脚座標系(次回歩容支持脚座標系は、次の足平着地位置姿勢に対応)、次次回歩容支持脚座標系(次次回歩容支持脚座標系は、次の次の足平着地位置姿勢に対応)、今回歩容周期(今回歩容周期は、次の足平着地時刻に対応)および次回歩容周期(次回歩容周期は、定常歩容の周期に相当)の少なくともいずれかを、S3028における今回歩容パラメータの修正(特に目標ZMPの修正)が小さくなるように(すなわち、今回歩容の安定余裕が高く維持されるように)、適宜変更すれば良い。
さらには、上記以外の歩容パラメータを変更しても良い。
また、修正歩容の元歩容からのずれは、単純化モデル上体姿勢傾斜角補正用モーメントMr、単純化モデル上体水平位置補正用モーメントMpおよび単純化モデル逆位相腕振り角補正用モーメントMaなどから動力学モデルを用いて推定することができるので、Mr,MpおよびMaに応じてモデルの挙動ずれを推定し、推定された挙動ずれを基に、歩容パラメータを修正してもよい。あるいは、Mr,MpおよびMaと歩容パラメータの修正量の適正値との関係をあらかじめ求めてマップ化しておいて、Mr,Mp およびMaに応じてマップを基に歩容パラメータの修正量を決定してもよい。
また、他の実施形態(第4〜第7参考例を用いる実施形態)に対しても上記と同様に、処理フローを変更して良い。
復元条件には、前記した条件以外にも、関節角が許容範囲を越えていないか、脚などの干渉がないか、関節角速度、トルクが過大でないかなどのキネマティクス条件、ダイナミクス条件を加えても良い。
また、これに伴って、前述したごとく、今回歩容パラメータの修正(目標ZMPあるいは着地位置、時刻などの修正)を制御周期毎に実行するようにメインフローチャートの処理を変更した場合には、今回歩容の安定余裕が高く維持されるように適宜変更される歩容パラメータの値が、適切な値になるように(ある制約条件を満足するように)することも、復元条件のひとつに加えても良い。
歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻は、上位の制御装置からの指示(歩行計画決定部やオペレータからの指示など。これを当初の要求と呼ぶ。)によって決定されるので、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻に戻るべきである。そこで、歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻を記憶し、修正歩容の着地位置、着地時刻が、記憶された着地位置、着地時刻にできる限り一致または近づくことも復元条件に加えても良い。ただし、実は、前記復元条件4、5および6によって、修正歩容の着地位置、着地時刻は、できる限り歩容の切り変わり目で決定された(読み込まれた)着地位置、着地時刻に徐々に戻る作用が働くので、あえて追加する必要はない。
また、状況の変化に対応して、当初の要求を変更し、変更した要求を満足する歩容パラメータに、上記のごとく歩容の安定余裕を高く維持するために適宜変更される歩容パラメータが、できる限り一致または近づくことを復元条件に加えても良い。この場合、前記復元条件4、5および6は削除するべきである。
前述した各種の復元条件を満足するモデル上体水平位置安定化床反力モーメントとモデル上体姿勢傾斜角安定化床反力モーメントの決定法には、制約条件下で最適値を求めるための線形計画法(シンプレックス法など)や探索法を用いれば良い。または、ファジー推論を用いても良い。
また、着地位置を変更する場合には、歩行環境の障害物なども考慮しなければならない状況も考えられる。このような状況にも対処できるようにするためには、環境認識や行動決定などの人工知能の分野に属する処理も加えて、修正歩容を決定すべきである。
モデル逆位相腕振り角安定化床反力モーメントの決定法も同様である。
前記第4〜第6参考例およびこれを用いる実施形態における制限手段(制限処理部)の前後のブロック図は、例えば本願出願人によるPCT/JP02/13593で示したように、等価変換あるいは近似変換しても良い。
この場合、上体水平位置補正用モデル安定化モーメントMpfをhで割った値をローパスフィルタに通した値を補正目標床反力水平成分(フルモデル床反力水平成分Ffull)から減じた値が上記PCT出願におけるバイアス推定値destmに相当する。したがって、例えば、前記第5〜第7参考例およびこれを用いる実施形態におけるゲインKcの積分を、時定数1/Kcの1次遅れをフィードバック要素としたポジティブフィードバック系に置き換えたりして、図84のように、近似変換をしても良い。この例では、第5〜第7参考例およびこれを用いる実施形態におけるMpf演算部215が図示の如く近似変換されている。
逆位相腕振り角補正用摂動モデルモーメントも、同様に等価変換あるいは近似変換して求めるようにしてもよい。
前記第4参考例およびこれを用いる実施形態においては、前記逆位相腕振り角補正用摂動モデルモーメントは、図70に示す機能ブロック図の代わりに、図85に示す機能ブロック図の処理を行うようにしても良い。以下に説明すると、図70では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分までも含めて、床反力モーメント鉛直成分許容範囲を越えるか否かが判定されて、逆位相腕振り角補正用モデルの挙動が決定されたが、図85に示す機能ブロック図の処理では、逆位相腕振り角補正用モデルが復元する動作によって発生するモーメント鉛直成分は、床反力モーメント許容範囲を越えるか否かを判定する上で無視される。
図85に示す機能ブロック図の処理を詳細に説明すると、フルモデル床反力モーメント鉛直成分Mfullzと上体水平位置補正に起因する床反力モーメント鉛直成分摂動量Mpzと補償全床反力モーメント鉛直成分Mdmdzとの和を無制限時補正目標床反力モーメント鉛直成分Minzとし、これに図70と同様に制限を加えることにより、制限時補正目標床反力モーメント鉛直成分Mltdzを求める。制限時補正目標床反力モーメント鉛直成分Mltdzは、コンプライアンス制御用目標床反力モーメント鉛直成分として出力される。さらに、制限時補正目標床反力モーメント鉛直成分Mltdzから無制限時補正目標床反力モーメント鉛直成分Minzを減じた値、すなわち、無制限時補正目標床反力モーメント鉛直成分Minzのうちの床反力モーメント鉛直成分許容範囲を越えた分であるMaaを求める。次いで、補正用摂動モデル逆位相腕振り角θcaの前回値を基に、PD制御等を用いた逆位相腕振り角補正用摂動モデル制御則によって逆位相腕振り角補正用モデル安定化モーメント要求値Mafdmdを求め、これをMaaから減じた値(モーメント)を逆位相腕振り角補正用摂動モデルに入力し、補正用摂動モデル逆位相腕振り角θcaを得る。
Maaから補正用摂動モデル逆位相腕振り角θcaまでの伝達関数は、ローパスフィルタの伝達関数になる。
すなわち、言い換えると、逆位相腕振り角補正用モデルによる床反力モーメント鉛直成分のキャンセル(超過防止動作)を行わない場合に発生する床反力モーメント鉛直成分(無制限時床反力モーメント鉛直成分)を、床反力モーメント鉛直成分許容範囲を越えないように制限する制限手段(飽和手段)に通すことにより、コンプライアンス制御用目標床反力モーメント鉛直成分(制限時補正目標床反力モーメント鉛直成分Mltdz)を得ると共に、無制限時床反力モーメント鉛直成分を、床反力モーメント鉛直成分許容範囲を越えた分を求める不感帯手段に通した値をローパスフィルタ(すなわちハイカットフィルタ)に通すことにより、補正用摂動モデル逆位相腕振り角θcaを得る。
前記第1および第2参考例並びにこれを用いる実施形態においては、本願出願人が提案した特開平5−337849号公報に記載の構成に加え、床反力の並進力水平成分が床反力水平成分の許容範囲を越えないように、床反力水平成分と目標ZMPまわりの床反力モーメント水平成分との発生の割合が異なる2つの運動モードの挙動、例えば、上体並進運動モードの上体並進加速度と上体傾斜運動モードの上体姿勢傾斜角加速度が決定されるので、実ロボット1を、修正目標歩容(最終的に歩容生成装置100が出力する歩容)に収束させることができる。つまり、実ロボット1の姿勢を安定化させることができる。
また、コンプライアンス制御用目標床反力モーメント水平成分とモデル操作床反力モーメント水平成分の差がトータルの復元力になる。
また、モデル操作床反力モーメント水平成分は、ZMP存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢復元力を発生することができる。
また、床反力の並進力水平成分が、床反力水平成分の許容範囲を越えないので、ロボット1のスリップを防止できる。
また、床反力モーメント鉛直成分(コンプライアンス制御用目標床反力モーメント鉛直成分)しいては実床反力モーメント鉛直成分が、床反力モーメント鉛直成分の許容範囲を越えないので、ロボット1のスリップをより一層防止できる。
また、床反力鉛直成分が0の時期、すなわち、両脚体2,2がいずれも接地していない時期では、上体並進運動モードに依存せずに上体回転運動モードに依存した姿勢復元が行われ、床と足平22の間の摩擦力に依存せずに効果的に姿勢復元が行われる。
また、実床反力モーメントが過大になることを防止するので、足平22の本来の接地性が低下したり、足平22の底面が浮いてしまうような不具合が発生することを防止または抑制することができる。
また、1歩分の修正歩容の終端状態を新たな初期状態とした新たな今回歩容が、定常歩容に漸近するように、今回歩容パラメータが決定または変更されるので、継続的に(長期的に)安定性が保証された歩容を生成し続けることができる。
前記第3参考例およびこれを用いる前記第1実施形態においては、上記のごとく、元歩容と修正歩容が同時に生成され、修正歩容は、実ロボット1の姿勢安定化のために修正されると共に、コンプライアンス制御により姿勢復元に必要な床反力モーメント(水平成分及び鉛直成分)を発生してもまだ余裕がある場合には、この余裕を用いて、可能な範囲で元歩容に収束するようにしている。このため、第2参考例の効果に加え、当初設定した元歩容に近い、すなわち、当初の要求通りの歩容に近い歩容を生成することができる。したがって、あらかじめ設定された移動経路がある場合には、移動経路から大きくずれることを防止できる。また、修正歩容の上体姿勢角が元歩容(当初決定した歩容)の上体姿勢角に収束することを、修正歩容の上体水平位置が元歩容(当初決定した歩容)の上体水平位置に収束することよりも優先したので、上体姿勢角が大きく変動することを抑制することができる。
前記第1〜第7参考例およびこれを用いる実施形態では、床反力水平成分許容範囲を設定するようにしたが、床反力水平成分とロボット全体重心水平加速度は、比例関係にあるので、前記各実施形態における床反力水平成分およびその許容範囲の代わりに、ロボット全体重心水平加速度およびその許容範囲を用いても構わない。また、ロボット全体重心水平軌道に近い挙動をする部位の水平加速度軌道に関するパラメータを明示的に設定しても構わない。例えば、脚体2,2の質量が上体3の質量に比べ十分に小さい場合には、上体水平加速度軌道とロボット1の全体重心水平加速度軌道は、ほぼ同じか比例関係にあるので、床反力水平成分およびその許容範囲の代わりに上体水平加速度およびその許容範囲を用いても良い。
さらに、斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力水平成分許容範囲や全体重心加速度水平成分の許容範囲の代わりに、並進床反力の床面平行成分(床面に平行な成分)、すなわち摩擦力の許容範囲、あるいは全体重心加速度の床面平行成分(これは重力成分を除けば摩擦力に比例する)の許容範囲を設定するようにしてもよい。例えば、並進床反力の床面平行成分(摩擦力)の許容範囲を設定する場合に関して説明(この説明は全体重心加速度の床面平行成分の許容範囲を設定する場合でも同様である)すると、該摩擦力は、床面の水平面に対する傾斜角度をθf(ロボット1の進行方向に向かって前下がり斜面の場合を正とする)とすると、次式c72の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式c72の関係を用いて、摩擦力許容範囲を床反力水平成分許容範囲に変換することで、該床反力水平成分許容範囲を設定するようにすればよい。なお、この場合、式c72の床反力鉛直成分には、目標床反力鉛直成分を用いればよい。

摩擦力=床反力水平成分*cos(θf)−床反力鉛直成分*sin(θf)
…式c72

また、斜面移動時(傾斜した床面でロボット1を移動させるとき)の歩容生成においては、床反力モーメント鉛直成分許容範囲の代わりに、床反力モーメントの床面法線方向成分、すなわち摩擦力モーメントの許容範囲を設定するようにしてもよい。例えば、該摩擦力モーメントは、床面の水平面に対する傾斜角度をθf(ロボット1の進行方向に向かって前下がり斜面の場合を正とする)とすると、次式c73の関係が成立する。従って、前記実施形態と同様のアルゴリズムに歩容を生成する場合、この式c73の関係を用いて、床反力モーメント鉛直成分と床反力モーメント水平成分から摩擦力モーメントを算出し、この値が摩擦力モーメントの許容範囲を越えないように処理を変更すれば良い。

摩擦力モーメント=床反力モーメント鉛直成分*cos(θf)
+床反力モーメント水平成分*sin(θf)
…式c73

また、前記第1参考例に関する変形態様で説明した如く、床反力水平成分と目標ZMPまわりの床反力モーメント水平成分とを適切な値にするために、前記の実施形態では、上体傾斜モードと上体並進モードとの2つの運動モードを用いたが、これら以外の運動モードを用いても良い。この場合、運動モードのひとつが床反力水平成分を発生しない運動モードである必要もない。いかなるモードの組み合わせであっても、床反力水平成分と目標ZMPまわりの床反力モーメントの発生の割合が異なる2つの運動モードを用いさえすれば、上記例のように、任意の床反力水平成分と目標ZMPまわりの床反力モーメントとを発生させることができるからである。
また、上体姿勢以外の運動モードを用いても良い。ただし、なるべく小さい変位で大きな床反力水平成分または目標ZMPまわりの床反力モーメントが発生できる運動モードを選ぶべきである。
例えば、左右の腕を同一回転方向に振りまわす運動モード、接地していない(空中に存在する)足平の位置を摂動させる運動モードでも良い。ただし、遊脚軌道を摂動させる場合には、着地位置が変わらないように着地直前までには、摂動量を実質的に0に戻すべきである。
また、3つ以上の運動モードを用いても良い。
また、選んだモードのうちの少なくとも2つは、床反力水平成分と目標ZMPまわりの床反力モーメントとの発生比率が、互いに異なるものである必要がある。そうでないと、一般的に連立方程式の解がなくなるからである。
さらにできる限り、床反力水平成分をあまり変化させないで目標ZMPまわりの床反力モーメントを十分に大きく変化させることができる運動モードと、目標ZMPまわりの床反力モーメントをあまり変化させないで床反力水平成分を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。
言いかえると、全体重心をあまり変化させないで角運動量を十分に大きく変化させることができる運動モードと、角運動量をあまり変化させないで全体重心を十分に大きく変化させることができる運動モードとを組み合わせることが望ましい。運動モードの変位が小さくなるからである。
床反力モーメント鉛直成分を適切な値にするために、前記の実施形態では、逆位相腕振りモードを用いたが、これら以外の運動モードを用いても良い。例えば、前記第1参考例の変形態様について説明した如く、上体ヨー回転モードを用いたり、上体ヨー回転モードと逆位相腕振りモードとを併用しても良い。
また、床反力モーメント鉛直成分を適切な値にするために用いられる運動モードが床反力水平成分および床反力モーメント水平成分を発生しない運動モードである必要もない。例えば、遊脚を前後に振る運動モードを用いても良い。その運動モードによって発生した床反力水平成分および床反力モーメント水平成分は、上体傾斜モードと上体並進モードとの2つの運動モードを調整することによって、打ち消すことができるからである。
フルモデルを用いる参考例および実施形態では、前記単純化モデルとして、前記実施形態に用いた動力学モデル(図12のモデル)以外にも以下のモデルを用いても良い。
1)図49に示したように複数のリンクに質点を設定した非線形なモデル(多質点モデル)
2)本願出願人によるPCT公開公報WO/02/40224に示された3質点モデル
3)上体にのみ質量がある1質点モデル
4)全体重心まわりの角運動量変化によって生じる慣性力のモーメントを無視したモデル
5)重力と慣性力との合力(または床反力)と上体並進運動との関係を表す部分モデルと、上記合力と上体回転運動の関係を表す部分モデルを分離して持つ分離型モデル。例えば、図12に示す質点は、上記合力と上体並進運動との関係を表す部分モデルであり、図12に示すフライホイールは、上記合力と上体回転運動との関係を表す部分モデルである。
ただし、単純化モデルに単純化モデル上体姿勢傾斜角補正用モーメントが加えられる参考例および実施形態においては、上記2)、3)、および4)のモデルを用いることはできない。
尚、フルモデルは、基本的には、単純化モデルよりもより近似精度の高い動力学モデルを用いることが好ましいが、単純化モデルと同等の近似精度の動力学モデルを用いてもよい。
また、前述した各実施形態において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。
また、前記各実施形態を2足移動ロボットに関して説明してきたが、1足もしくは3足以上の多脚ロボットにも本発明を適応することができる。

産業上の利用可能性
以上のように本発明は、2足移動ロボット等の脚式移動ロボットと床面との摩擦力が小さくなるような状況でも、ロボットの滑りの発生を抑制しつつ、該ロボットの姿勢を安定に保ち、該ロボットを円滑に移動させることができるものとして有用である。
本発明の実施形態およびこれに関連する参考例における脚式移動ロボットとしての2足移動ロボットの全体構成を概略的に示す図。 図1のロボットの脚体の先端部の構造を示す図。 図1のロボットに備えた制御ユニットの構成を示すブロック図。 第1参考例における制御ユニットの機能的構成を示すブロック図。 実施形態および参考例で生成する走行歩容を説明するための図。 目標床反力鉛直成分軌道の例を示すグラフ。 目標ZMP軌道のX成分およびY成分の例を示すグラフ。 ロボットの上体並進モードを説明するための図。 ロボットの上体傾斜モードを説明するための図。 ロボットの上体ヨー回転モードを説明するための図 図11(a)はロボットの逆位相腕振りモードを平面視で説明するための図、図11(b)はロボットの逆位相腕振りモードを側面視で説明するための図。 実施形態で用いる動力学モデルを説明するための図。 第1参考例における歩容生成装置のメインルーチン処理を示すフローチャート。 ロボットの発散状態を説明するための図。 図13のS022のサブルーチン処理を示すフローチャート。 定常歩容と支持脚座標系とを説明するための図。 定常歩容の上体軌道と支持脚座標系とを例示する図。 基準逆位相腕振り角の例を示すグラフ。 定常歩容における目標床反力鉛直成分軌道の設定例を示すグラフ。 定常歩容における床反力水平成分許容範囲の設定例を示すグラフ。 定常歩容における床反力モーメント鉛直成分許容範囲の設定例を示すグラフ。 定常歩容における目標ZMP軌道の設定例を示すグラフ。 図13のS024のサブルーチン処理を示すフローチャート。 図23のS208のサブルーチン処理を示すフローチャート。 図24のS306のサブルーチン処理を示すフローチャート。 図25のS412のサブルーチン処理を示すフローチャート。 許容範囲を考慮しない床反力水平成分の例を示すグラフ。 許容範囲を考慮した床反力水平成分の例を示すグラフ。 上体傾斜角加速度の例を示すグラフ。 ロボットの上体傾斜角を復元するための上体傾斜復元モーメントZMP換算値の例を示すグラフ。 上体傾斜復元モーメントZMP換算値を加味した上体傾斜角加速度の例を示すグラフ。 許容範囲を考慮しない床反力モーメント鉛直成分の例を示すグラフ。 許容範囲を考慮した床反力モーメント鉛直成分の例を示すグラフ。 逆位相腕振りモーメントの例を示すグラフ。 図34の逆位相腕振りモーメントに対応する逆位相腕振り角加速度を示すグラフ。 逆位相腕振り角を復元するための逆位相腕振り復元角加速度の例を示すグラフ。 図36の逆位相腕振り復元角加速度に対応する逆位相腕振り復元モーメントを示すグラフ。 図33の床反力モーメント鉛直成分と図37の逆位相腕振り復元モーメントとを合成してなる床反力モーメント鉛直成分を示すグラフ。 図13のS026のサブルーチン処理を示すフローチャート。 今回歩容の床反力水平成分許容範囲の設定例を示すグラフ。 今回歩容の床反力モーメント鉛直成分許容範囲の設定例を示すグラフ。 図13のS028のサブルーチン処理を示すフローチャート。 図42のS702のサブルーチン処理を示すフローチャート。 今回歩容の仮目標ZMPとZMP修正量と修正後の目標ZMPとの例を示すグラフ。 図13のS030のサブルーチン処理を示すフローチャート。 図45のS1412のサブルーチン処理を示すフローチャート。 定常歩容と目標歩容の上体位置軌道との関係を示すグラフ。 上体傾斜モード(腰中心の上体傾斜)の他の例を示す図。 動力学モデルの他の例を説明するための図。 歩行歩容における目標床反力鉛直成分の設定例を示す図。 ロボットの走行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図。 ロボットの歩行歩容における上体鉛直方向位置と床反力鉛直成分との関係を示す図。 第2参考例における制御ユニットの機能的構成を示すブロック図。 図53に示す補償全床反力モーメント水平成分分配器の処理を示すブロック図。 図53に示すモデル操作床反力モーメント鉛直成分決定器の処理を示すブロック図。 第2参考例における歩容生成装置のメインルーチン処理を示すフローチャート。 図56のS3032のサブルーチン処理を示すフローチャート。 図57のS3414のサブルーチン処理を示すフローチャート。 第3参考例における制御ユニットの機能的構成を示すブロック図。 第3参考例における歩容生成装置のメインルーチン処理を示すフローチャート。 図60のS2034のサブルーチン処理を示すフローチャート。 図61のS2114のサブルーチン処理を示すフローチャート。 第4参考例における歩容生成装置の機能的構成を示すブロック図。 第4参考例におけるZMP許容範囲の設定例を示す図。 第4参考例における歩容生成装置のメインルーチン処理を示すフローチャート。 図65のS3536の処理を示すブロック図。 図66に示す上体水平位置摂動用モデルを説明するための図。 図66に示す上体姿勢角補正用摂動モデルの説明するための図。 図66に示す逆位相腕振り角補正用摂動モデルを説明するための図。 図66に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図。 第5参考例における図65のS3536の処理を示すブロック図。 図71に示す逆位相腕振り角補正用摂動モデルモーメント決定部の処理を示すブロック図。 第6参考例における歩容生成装置の機能的構成を示すブロック図。 図73に示す擬似順フルモデルの処理を示すブロック図。 第7参考例における図65のS3536の処理を示すブロック図。 本発明の第1実施形態における制御ユニットの機能的構成を示すブロック図。 第1実施形態における歩容生成装置のメインルーチン処理を示すフローチャート。 図77のS2334の処理を示すフローチャート。 図76に示す滑り判定部の処理を示すフローチャート。 図79のS5210のサブルーチン処理を示すフローチャート。 図79のS5212のサブルーチン処理を示すフローチャート。 図79のS5214のサブルーチン処理を示すフローチャート。 滑り判定部の判定結果と、許容範囲の低減率と、床反力許容範囲との例を示すグラフ。 第5〜第7参考例に関する変形態様の例を示すブロック図。 第4参考例に関する逆位相腕振り角補正用摂動モデルモーメント決定部の処理の変形態様の例を示すブロック図。

Claims (7)

  1. 上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従するようにロボットの動作を制御する制御装置において、
    前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段と、
    前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
    所定の動力学モデル上で前記ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容の仮運動を決定する仮運動決定手段と、
    前記目標歩容の仮運動により定まる前記制限対象量が前記許容範囲を逸脱したとき、前記動力学的平衡条件を満たしつつ、該制限対象量を前記許容範囲内に制限するようにロボットの重心回りの角運動量変化率を前記仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する仮運動修正手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
  2. 上体から延設された複数の脚体を運動させて移動する脚式移動ロボットの目標歩容を生成し、その目標歩容に追従するようにロボットの動作を制御する制御装置において、
    前記目標歩容に追従して動作している前記ロボットの滑りの発生を判断する滑り判断手段と、
    前記ロボットに作用させる床反力モーメントの鉛直成分又は該床反力モーメントの床面法線方向成分又は該ロボットの角運動量変化率の鉛直成分又は該角運動量変化率の床面法線方向成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
    所定の動力学モデル上で前記ロボットに作用する重力と慣性力との合力が所定の動力学的平衡条件を満たすように前記目標歩容の仮運動を決定する仮運動決定手段と、
    前記目標歩容の仮運動により定まる前記制限対象量が前記許容範囲を逸脱したとき、前記動力学的平衡条件を満たしつつ、該制限対象量を前記許容範囲内に制限するようにロボットの角運動量変化率を前記仮運動から変化させることにより該仮運動を修正して目標歩容の運動を決定する仮運動修正手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
  3. 上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動の瞬時値に追従させるように前記ロボットの動作を制御する脚式移動ロボットの制御装置において、
    前記目標運動に追従して動作しているロボットの滑りの発生を判断する滑り判断手段と、
    少なくとも前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
    少なくとも前記決定された目標運動の瞬時値に対応するロボットの姿勢の目標状態量と該ロボットの姿勢の実状態量との偏差に基づいて、前記目標運動の新たな瞬時値を、該新たな瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
  4. 上体から延設された脚体を運動させて移動する脚式移動ロボットの目標運動及び目標床反力の瞬時値を、少なくとも該ロボットの運動と床反力との関係を表す動力学モデルを用いて逐次決定しつつ、その決定した目標運動及び目標床反力の瞬時値に追従させるように前記ロボットの動作を制御する脚式移動ロボットの制御装置において、
    前記目標運動及び目標床反力に追従して動作しているロボットの滑りの発生を判断する滑り判断手段と、
    少なくとも前記ロボットに作用させる並進床反力の水平成分又は該並進床反力の床面平行成分又は該ロボットの全体重心加速度の水平成分又は該全体重心加速度の床面平行成分を制限対象量として、該制限対象量の許容範囲を前記滑り判断手段の判断結果に応じて可変的に設定する許容範囲設定手段と、
    少なくとも前記決定された目標運動及び目標床反力の瞬時値に対応するロボットの姿勢の目標状態量と該ロボットの姿勢の実状態量との偏差に基づいて、前記目標運動及び目標床反力の新たな瞬時値を、該新たな目標運動の瞬時値に対応して前記動力学モデルに基づき定まる前記制限対象量が前記許容範囲内に収まると共に前記偏差が0に近づくように決定する目標瞬時値決定手段とを備えたことを特徴とする脚式移動ロボットの制御装置。
  5. 前記滑り判断手段は、少なくとも接地している脚体の先端部の対地速度に基づき滑りの発生を判断することを特徴とする請求の範囲第1項〜第4項のいずれか1項に記載の脚式移動ロボットの制御装置。
  6. 前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力の時間的変化率と該脚体の先端部の対地速度とに基づき、該脚体の見かけばね定数を求める手段を備え、少なくとも該見かけばね定数に基づき滑りの発生を判断することを特徴とする請求の範囲第1項〜第4項のいずれか1項に記載の脚式移動ロボットの制御装置。
  7. 前記滑り判断手段は、少なくとも接地している脚体に作用する実床反力を、所定周波数の近傍範囲に周波数通過特性を有するバンドパスフィルタに通したものに基づき滑りの発生を判断することを特徴とする請求の範囲第1項〜第4項のいずれか1項に記載の脚式移動ロボットの制御装置。
JP2005511139A 2003-06-27 2004-06-28 脚式移動ロボットの制御装置 Expired - Fee Related JP4181175B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003185930 2003-06-27
JP2003185930 2003-06-27
PCT/JP2004/009477 WO2005000536A1 (ja) 2003-06-27 2004-06-28 脚式移動ロボットの制御装置

Publications (2)

Publication Number Publication Date
JPWO2005000536A1 true JPWO2005000536A1 (ja) 2006-08-03
JP4181175B2 JP4181175B2 (ja) 2008-11-12

Family

ID=33549677

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2005511139A Expired - Fee Related JP4181175B2 (ja) 2003-06-27 2004-06-28 脚式移動ロボットの制御装置
JP2005511135A Expired - Fee Related JP4155993B2 (ja) 2003-06-27 2004-06-28 脚式移動ロボットの制御装置
JP2005511138A Expired - Fee Related JP4126061B2 (ja) 2003-06-27 2004-06-28 脚式移動ロボットの歩容生成装置および脚式移動ロボットの制御装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2005511135A Expired - Fee Related JP4155993B2 (ja) 2003-06-27 2004-06-28 脚式移動ロボットの制御装置
JP2005511138A Expired - Fee Related JP4126061B2 (ja) 2003-06-27 2004-06-28 脚式移動ロボットの歩容生成装置および脚式移動ロボットの制御装置

Country Status (6)

Country Link
US (4) US7603234B2 (ja)
EP (10) EP2206582B1 (ja)
JP (3) JP4181175B2 (ja)
KR (3) KR101083412B1 (ja)
DE (2) DE602004031526D1 (ja)
WO (3) WO2005000534A1 (ja)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7650204B2 (en) * 2001-06-29 2010-01-19 Honda Motor Co., Ltd. Active control of an ankle-foot orthosis
US7774177B2 (en) * 2001-06-29 2010-08-10 Honda Motor Co., Ltd. Exoskeleton controller for a human-exoskeleton system
JP3679105B2 (ja) * 2001-12-28 2005-08-03 本田技研工業株式会社 脚式移動ロボットの歩容生成装置
DE60236457D1 (de) * 2001-12-28 2010-07-01 Honda Motor Co Ltd Gangerzeugungsvorrichtung für beweglichen roboter mit beinen und steuervorrichtung
EP1649983B1 (en) * 2003-06-27 2010-09-22 Honda Motor Co., Ltd. Gait generation device for legged mobile robot
EP2206582B1 (en) * 2003-06-27 2011-10-19 Honda Motor Co., Ltd. Control device of legged mobile robot
US7603199B2 (en) 2003-11-27 2009-10-13 Honda Motor Co., Ltd. Control device for mobile body
US7400108B2 (en) * 2004-04-15 2008-07-15 University Of Utah Research Foundation System and method for controlling modular robots
JP4485279B2 (ja) * 2004-08-02 2010-06-16 本田技研工業株式会社 脚式移動ロボットの歩容生成装置および制御装置
JP2006068872A (ja) * 2004-09-03 2006-03-16 Honda Motor Co Ltd 脚式移動ロボット
JP4492395B2 (ja) * 2005-03-09 2010-06-30 トヨタ自動車株式会社 脚式ロボットとその動作制御方法
US8082062B2 (en) * 2005-06-10 2011-12-20 Honda Motor Co., Ltd. Regenerative actuation in motion control
JP4812426B2 (ja) * 2005-12-27 2011-11-09 富士通株式会社 ロボット制御装置
JP4908020B2 (ja) * 2006-03-02 2012-04-04 本田技研工業株式会社 ハンド制御システム
JP2008073830A (ja) * 2006-09-25 2008-04-03 Fanuc Ltd ロボット制御装置
CA2676067C (en) 2007-01-19 2017-06-20 Victhom Human Bionics, Inc. Reactive layer control system for prosthetic and orthotic devices
ES2437323T3 (es) 2007-02-16 2014-01-10 Ono Pharmaceutical Co., Ltd. Agente terapéutico para trastornos de la micción
WO2009040885A1 (ja) * 2007-09-25 2009-04-02 Fujitsu Limited ロボット制御装置、ロボット制御方法およびロボット制御プログラム
KR101182620B1 (ko) * 2007-10-23 2012-09-14 혼다 기켄 고교 가부시키가이샤 2 족 보행 로봇
JP4950018B2 (ja) * 2007-12-25 2012-06-13 アルプス電気株式会社 座標入力装置
JP5104355B2 (ja) * 2008-02-01 2012-12-19 富士通株式会社 ロボット制御装置、ロボット制御方法およびロボット制御プログラム
FR2926971B1 (fr) * 2008-02-04 2011-02-25 Commissariat Energie Atomique Dispositif d'analyse de la marche
KR101464124B1 (ko) * 2008-06-04 2014-11-20 삼성전자주식회사 로봇 및 그 보행제어방법
US20100042357A1 (en) * 2008-08-15 2010-02-18 Oceaneering International, Inc. Manipulator Position Sensor System
FR2947236B1 (fr) 2009-06-30 2011-07-15 Aldebaran Robotics Procede pour controler la marche d'un robot mobile et robot mettant en oeuvre le procede
EP2448540B1 (en) * 2009-07-01 2019-04-24 Rex Bionics Limited Control system for a mobility aid
JP5232120B2 (ja) * 2009-10-01 2013-07-10 本田技研工業株式会社 移動体の制御装置
JP5232124B2 (ja) * 2009-10-28 2013-07-10 本田技研工業株式会社 脚式移動ロボットの制御装置
KR20110082712A (ko) * 2010-01-12 2011-07-20 삼성전자주식회사 로봇 및 그 제어방법
KR101687628B1 (ko) * 2010-01-12 2016-12-21 삼성전자주식회사 로봇의 보행 제어 장치 및 그 제어 방법
FR2958152A1 (fr) 2010-03-31 2011-10-07 Benjamin Penot Systeme d'articulation complexe pour orthese, prothese, robotique, exosquelette
KR101200191B1 (ko) * 2010-07-14 2012-11-13 서울대학교산학협력단 데이터 기반 바이페드 제어 장치 및 방법
KR101766755B1 (ko) * 2010-08-17 2017-08-10 삼성전자주식회사 보행 로봇 및 그 제어방법
KR20120024098A (ko) * 2010-09-06 2012-03-14 삼성전자주식회사 보행 로봇 및 그 제어방법
KR101760883B1 (ko) * 2010-09-09 2017-08-04 삼성전자주식회사 로봇 및 그 제어방법
US8915968B2 (en) * 2010-09-29 2014-12-23 össur hf Prosthetic and orthotic devices and methods and systems for controlling the same
US8467948B2 (en) * 2010-09-29 2013-06-18 Honda Motor Co., Ltd. Omnidirectional moving body operation system and omnidirectional moving body operation method
KR20120069924A (ko) * 2010-12-21 2012-06-29 삼성전자주식회사 보행 로봇 및 그 제어 방법
KR20120071599A (ko) * 2010-12-23 2012-07-03 삼성전자주식회사 보행 로봇 및 그 제어 방법
US8880221B2 (en) * 2011-03-21 2014-11-04 Honda Motor Co., Ltd. Damage reduction control for humanoid robot fall
US9060884B2 (en) 2011-05-03 2015-06-23 Victhom Human Bionics Inc. Impedance simulating motion controller for orthotic and prosthetic applications
US8504208B2 (en) * 2011-05-25 2013-08-06 Honda Motor Co., Ltd. Mobile object controller and floor surface estimator
FR2976700B1 (fr) * 2011-06-17 2013-07-12 Inst Nat Rech Inf Automat Procede de generation d'ordres de commande de coordination d'organes de deplacement d'une plateforme animee et generateur correspondant.
JP5752500B2 (ja) * 2011-06-27 2015-07-22 本田技研工業株式会社 軌道生成システム
JP5724855B2 (ja) * 2011-12-02 2015-05-27 トヨタ自動車株式会社 倒立移動体及び角速度センサの出力値補正方法
KR20130063230A (ko) * 2011-12-06 2013-06-14 삼성전자주식회사 보행 로봇 및 그 제어 방법
JP5945419B2 (ja) * 2012-01-10 2016-07-05 本田技研工業株式会社 脚式移動ロボットの脚体運動軌道生成装置。
US9156159B2 (en) * 2012-03-08 2015-10-13 Disney Enterprises Inc. Robot cyclic locomotion using a dynamic object
US9605952B2 (en) * 2012-03-08 2017-03-28 Quality Manufacturing Inc. Touch sensitive robotic gripper
US9044346B2 (en) 2012-03-29 2015-06-02 össur hf Powered prosthetic hip joint
JP6051021B2 (ja) * 2012-08-09 2016-12-21 日本電産サンキョー株式会社 産業用ロボットおよび産業用ロボットの制御方法
JP6065502B2 (ja) * 2012-09-28 2017-01-25 三菱商事株式会社 フラーレン誘導体及びその製造方法
KR101371756B1 (ko) * 2012-12-17 2014-03-12 현대자동차(주) 로봇의 보행제어방법
JP5642214B2 (ja) * 2013-02-15 2014-12-17 株式会社神戸製鋼所 多関節ロボットの弾性変形補償制御装置
JP5888309B2 (ja) * 2013-10-31 2016-03-22 カシオ計算機株式会社 トレーニング支援装置およびシステム、フォーム解析装置および方法、ならびにプログラム
US9772619B2 (en) * 2014-01-23 2017-09-26 Mitsubishi Electric Corporation Motor control device
US9292786B2 (en) * 2014-02-03 2016-03-22 Disney Enterprises, Inc. Universal balancing controller for lateral stabilization of bipedal robots in dynamic unstable environments
JP5897644B2 (ja) * 2014-06-02 2016-03-30 株式会社神戸製鋼所 ロボットの制御装置
US9849926B2 (en) * 2014-07-23 2017-12-26 Boston Dynamics, Inc. Predictively adjustable hydraulic pressure rails
US9308648B2 (en) * 2014-07-24 2016-04-12 Google Inc. Systems and methods for robotic self-right
US9618937B1 (en) 2014-08-25 2017-04-11 Google Inc. Slip detection using robotic limbs
US9517561B2 (en) * 2014-08-25 2016-12-13 Google Inc. Natural pitch and roll
US9387588B1 (en) * 2014-08-25 2016-07-12 Google Inc. Handling gait disturbances with asynchronous timing
US10081098B1 (en) 2014-08-25 2018-09-25 Boston Dynamics, Inc. Generalized coordinate surrogates for integrated estimation and control
US9499219B1 (en) * 2014-08-25 2016-11-22 Google Inc. Touch-down sensing for robotic devices
US9387896B1 (en) 2014-08-25 2016-07-12 Google Inc. Slip avoidance
US9623556B1 (en) * 2014-09-03 2017-04-18 X Development Llc Robotic sole joint
US9446518B1 (en) * 2014-11-11 2016-09-20 Google Inc. Leg collision avoidance in a robotic device
US9352470B1 (en) * 2014-11-11 2016-05-31 Google Inc. Yaw slip handling in a robotic device
US9519289B2 (en) * 2014-11-26 2016-12-13 Irobot Corporation Systems and methods for performing simultaneous localization and mapping using machine vision systems
US9751210B2 (en) 2014-11-26 2017-09-05 Irobot Corporation Systems and methods for performing occlusion detection
US9440353B1 (en) 2014-12-29 2016-09-13 Google Inc. Offline determination of robot behavior
US9499218B1 (en) 2014-12-30 2016-11-22 Google Inc. Mechanically-timed footsteps for a robotic device
WO2016159346A1 (ja) * 2015-04-02 2016-10-06 国立大学法人大阪大学 脚型機構体、歩行ロボット、姿勢制御方法及びプログラム
US9594377B1 (en) 2015-05-12 2017-03-14 Google Inc. Auto-height swing adjustment
US9561592B1 (en) * 2015-05-15 2017-02-07 Google Inc. Ground plane compensation for legged robots
JP6450279B2 (ja) * 2015-08-05 2019-01-09 本田技研工業株式会社 移動ロボットの目標zmp軌道の生成装置
US9586316B1 (en) 2015-09-15 2017-03-07 Google Inc. Determination of robotic step path
JP6498597B2 (ja) * 2015-12-14 2019-04-10 本田技研工業株式会社 移動ロボットの制御装置
US9778132B1 (en) * 2015-12-16 2017-10-03 X Development Llc Methods and systems for force sensor calibration
JP6483014B2 (ja) * 2015-12-25 2019-03-13 本田技研工業株式会社 移動ロボットの制御装置
US9868210B1 (en) * 2015-12-30 2018-01-16 Google Inc. Methods and systems for planning a body position of a robotic device
US9925667B1 (en) 2016-01-25 2018-03-27 Boston Dynamics, Inc. Continuous slip recovery
US9789919B1 (en) * 2016-03-22 2017-10-17 Google Inc. Mitigating sensor noise in legged robots
US9987745B1 (en) 2016-04-01 2018-06-05 Boston Dynamics, Inc. Execution of robotic tasks
US10828767B2 (en) 2016-11-11 2020-11-10 Sarcos Corp. Tunable actuator joint modules having energy recovering quasi-passive elastic actuators with internal valve arrangements
US10821614B2 (en) 2016-11-11 2020-11-03 Sarcos Corp. Clutched joint modules having a quasi-passive elastic actuator for a robotic assembly
CN109693234B (zh) * 2017-10-20 2021-08-27 深圳市优必选科技有限公司 机器人跌倒预测方法、装置、终端设备及计算机存储介质
US10780578B2 (en) * 2018-02-22 2020-09-22 Boston Dynamics, Inc. Reaching mobile robots
US10946518B2 (en) * 2018-07-24 2021-03-16 Invia Robotics, Inc. Spatiotemporal controller for controlling robot operation
US11550335B2 (en) * 2018-11-28 2023-01-10 Ubtech Robotics Corp Ltd Biped robot and its moving method and apparatus
US11241801B2 (en) 2018-12-31 2022-02-08 Sarcos Corp. Robotic end effector with dorsally supported actuation mechanism
CN110597267B (zh) * 2019-09-27 2023-01-10 长安大学 一种足式机器人的局部最优落足点选取方法
US11292126B2 (en) * 2019-10-17 2022-04-05 Disney Enterprises, Inc. Robots with robust bipedal locomotion supported with non-conventional physics
CN111651900B (zh) * 2020-06-29 2023-07-04 中国有色金属工业昆明勘察设计研究院有限公司 一种昔格达地层岩质边坡稳定性计算的拟动力上限法
CN111872941B (zh) * 2020-08-06 2021-09-07 深圳市优必选科技股份有限公司 平衡控制方法、装置、仿人机器人及可读存储介质
US11833676B2 (en) 2020-12-07 2023-12-05 Sarcos Corp. Combining sensor output data to prevent unsafe operation of an exoskeleton
CN113246123B (zh) * 2021-04-30 2022-10-18 深圳市优必选科技股份有限公司 机器人控制方法、装置、计算机可读存储介质及机器人
DE102021112485B3 (de) 2021-05-12 2022-08-11 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Balancierung eines Roboters, Verfahren zur Ganzkörpersteuerung eines Roboters, Regler sowie Roboter
CN113359800B (zh) * 2021-06-30 2024-08-09 深圳市优必选科技股份有限公司 机器人行走控制方法、装置、机器人控制设备及存储介质
CN113377113B (zh) * 2021-07-02 2022-01-04 北方工业大学 足式机器人足端轨迹规划方法、系统及控制方法、系统
US11738452B1 (en) * 2022-07-29 2023-08-29 Sarcos Corp. Sole with various compliant regions for robots
US11826907B1 (en) 2022-08-17 2023-11-28 Sarcos Corp. Robotic joint system with length adapter
US11717956B1 (en) 2022-08-29 2023-08-08 Sarcos Corp. Robotic joint system with integrated safety
US11897132B1 (en) 2022-11-17 2024-02-13 Sarcos Corp. Systems and methods for redundant network communication in a robot
US11924023B1 (en) 2022-11-17 2024-03-05 Sarcos Corp. Systems and methods for redundant network communication in a robot
CN117963038B (zh) * 2024-04-02 2024-05-28 吉林大学 一种具有缓冲与抗沉陷功能的刚柔耦合仿生机械足

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60221288A (ja) * 1984-04-13 1985-11-05 株式会社 富士電機総合研究所 圧覚認識制御装置
JP2570392B2 (ja) 1988-06-30 1997-01-08 三菱電機株式会社 車椅子乗用踏段付エスカレータ
JPH0213596A (ja) 1988-06-28 1990-01-17 Aichi Steel Works Ltd クレーンのトング装置
JPH0213784A (ja) 1988-06-30 1990-01-18 Kaneko Agricult Mach Co Ltd 乾燥施設における試料穀物の乾燥方法およびその装置
JP2581175B2 (ja) 1988-06-30 1997-02-12 三菱電機株式会社 車椅子乗用踏段付きエスカレータ
JP2548799B2 (ja) 1989-05-29 1996-10-30 日鋼特機株式会社 管の縮径成形装置
JPH034355A (ja) 1989-05-31 1991-01-10 Nec Corp データ伝送方式
US5355064A (en) * 1992-03-04 1994-10-11 Honda Giken Kogyo Kabushiki Kaisha Control system for legged mobile robot
JP3148827B2 (ja) 1992-04-30 2001-03-26 本田技研工業株式会社 脚式移動ロボットの歩行制御装置
JP3233450B2 (ja) 1992-05-22 2001-11-26 本田技研工業株式会社 指定時刻到達関数発生器
JP3269852B2 (ja) * 1992-05-29 2002-04-02 本田技研工業株式会社 脚式移動ロボットの姿勢安定化制御装置
JP3330710B2 (ja) * 1993-12-30 2002-09-30 本田技研工業株式会社 移動ロボットの位置検知および制御装置
US5644204A (en) * 1994-11-03 1997-07-01 Nagle; John Anti-slip control for a legged robot and realisitc simulation of a legged creature
JP3658147B2 (ja) 1996-07-25 2005-06-08 本田技研工業株式会社 脚式移動ロボットの歩容生成装置
JP3663034B2 (ja) 1996-07-25 2005-06-22 本田技研工業株式会社 脚式移動ロボットの歩容生成装置
JP3672406B2 (ja) * 1997-01-31 2005-07-20 本田技研工業株式会社 脚式移動ロボットの歩容生成装置
JP3629133B2 (ja) 1997-01-31 2005-03-16 本田技研工業株式会社 脚式移動ロボットの制御装置
DE69840655D1 (de) * 1997-01-31 2009-04-23 Honda Motor Co Ltd Steuerungssystem eines beweglichen Roboters mit Beinen
JP3629143B2 (ja) 1998-04-20 2005-03-16 本田技研工業株式会社 脚式移動ロボットの制御装置
EP1120203B1 (en) 1998-04-20 2011-01-19 Honda Giken Kogyo Kabushiki Kaisha Controller for legged mobile robot
JP2000352011A (ja) 1999-06-11 2000-12-19 Gakunan Koki Kk 視覚障害者用警告形道路ラインの施工方法
JP2001133621A (ja) 1999-11-08 2001-05-18 Sharp Corp カラーフィルターの製造方法および製造装置
JP4480843B2 (ja) 2000-04-03 2010-06-16 ソニー株式会社 脚式移動ロボット及びその制御方法、並びに、脚式移動ロボット用相対移動測定センサ
JP3726009B2 (ja) * 2000-05-19 2005-12-14 本田技研工業株式会社 脚式移動ロボットの床形状推定装置
US6876903B2 (en) * 2000-11-17 2005-04-05 Honda Giken Kogyo Kabushiki Kaisha Gait pattern generating device for legged mobile robot
JP3726032B2 (ja) 2001-04-27 2005-12-14 本田技研工業株式会社 脚式移動ロボットの目標運動生成装置
US7135003B2 (en) * 2001-06-29 2006-11-14 Honda Giken Kogyo Kabushiki Kaisha Feedback estimation of joint forces and joint moments
DE60231432D1 (de) 2001-12-28 2009-04-16 Honda Motor Co Ltd Steuersystem
DE60236457D1 (de) * 2001-12-28 2010-07-01 Honda Motor Co Ltd Gangerzeugungsvorrichtung für beweglichen roboter mit beinen und steuervorrichtung
JP3679105B2 (ja) * 2001-12-28 2005-08-03 本田技研工業株式会社 脚式移動ロボットの歩容生成装置
WO2003061917A1 (fr) 2002-01-18 2003-07-31 Honda Giken Kogyo Kabushiki Kaisha Dispositif de commande pour robot bipede
JP4225969B2 (ja) * 2002-04-26 2009-02-18 本田技研工業株式会社 脚式移動ロボットの制御装置および足跡決定装置
DE60332227D1 (de) * 2002-04-26 2010-06-02 Honda Motor Co Ltd System zur selbst abschätzung der lage des mobilen roboters mit beinen
EP2206582B1 (en) * 2003-06-27 2011-10-19 Honda Motor Co., Ltd. Control device of legged mobile robot

Also Published As

Publication number Publication date
EP1642689A1 (en) 2006-04-05
WO2005000536A1 (ja) 2005-01-06
DE602004031526D1 (de) 2011-04-07
KR20060024362A (ko) 2006-03-16
US7603234B2 (en) 2009-10-13
EP1642689A4 (en) 2009-01-14
EP2210713A1 (en) 2010-07-28
EP2206582B1 (en) 2011-10-19
EP1642687B1 (en) 2011-02-23
EP2353794B1 (en) 2013-01-16
KR101083417B1 (ko) 2011-11-14
EP1642688B1 (en) 2011-08-10
EP2206584A1 (en) 2010-07-14
EP2206584B1 (en) 2011-10-19
WO2005000535A1 (ja) 2005-01-06
JP4126061B2 (ja) 2008-07-30
EP2353795A1 (en) 2011-08-10
JP4155993B2 (ja) 2008-09-24
EP2208582A1 (en) 2010-07-21
JPWO2005000535A1 (ja) 2006-08-03
KR101083414B1 (ko) 2011-11-14
JP4181175B2 (ja) 2008-11-12
KR101083412B1 (ko) 2011-11-14
EP2206582A1 (en) 2010-07-14
EP1642687B9 (en) 2011-04-20
EP2210713B1 (en) 2011-11-30
JPWO2005000534A1 (ja) 2006-08-03
US20100042256A1 (en) 2010-02-18
US20060184276A1 (en) 2006-08-17
EP2206582A8 (en) 2011-03-02
DE602004031425D1 (de) 2011-03-31
EP1642688A1 (en) 2006-04-05
US8005573B2 (en) 2011-08-23
EP1642689B1 (en) 2011-02-16
EP1642687A1 (en) 2006-04-05
US7379789B2 (en) 2008-05-27
KR20060024372A (ko) 2006-03-16
EP1642688A4 (en) 2009-11-18
EP2206583A1 (en) 2010-07-14
KR20060024363A (ko) 2006-03-16
EP2206583B1 (en) 2011-10-19
US7860611B2 (en) 2010-12-28
US20060247799A1 (en) 2006-11-02
EP2208582B1 (en) 2011-12-21
EP2353794A1 (en) 2011-08-10
EP1642687A4 (en) 2009-01-21
EP2353795B1 (en) 2012-10-10
WO2005000534A1 (ja) 2005-01-06
US20060173578A1 (en) 2006-08-03

Similar Documents

Publication Publication Date Title
JP4181175B2 (ja) 脚式移動ロボットの制御装置
JP4246638B2 (ja) 脚式移動ロボットの制御装置
JP4199236B2 (ja) 脚式移動ロボットの歩容生成装置
JP3640255B2 (ja) 脚式移動ロボットの歩容生成装置
JP3679105B2 (ja) 脚式移動ロボットの歩容生成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080516

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080826

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080828

R150 Certificate of patent or registration of utility model

Ref document number: 4181175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130905

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140905

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees