(57)【特許請求の範囲】
【請求項１】
２足歩行ロボットの歩行をマスタスレーブ制御する２足歩行ロボット制御方法であって、
操作者の右足及び左足のそれぞれから地面に対して加えられる加重を検出する加重検出ステップと、
前記検出された右足加重及び左足加重と、前記２足歩行ロボットの右足位置及び左足位置とに基づいて、前記検出された右足加重と左足加重の比が、前記２足歩行ロボットの右足加重と左足加重の比となるように目標ＺＭＰを算出する目標ＺＭＰ算出ステップと、
前記算出された目標ＺＭＰに従って前記２足歩行ロボットを制御する制御ステップと、
を備えた２足歩行ロボット制御方法。
【請求項２】
前記２足歩行ロボット制御方法は、さらに、
前記検出された右足加重と左足加重の変化から、前記操作者による一歩を検出する検出ステップと、
前記操作者による一歩が終了したときに検出された右足加重と左足加重から、当該一歩に対応する前記２足歩行ロボットの一歩分の遊脚軌道を算出する遊脚軌道算出ステップと、を備え、
前記制御ステップでは、さらに、前記算出された遊脚軌道で歩行するように前記２足歩行ロボットを制御する、
請求項１に記載の２足歩行ロボット制御方法。
【請求項３】
前記遊脚軌道算出ステップでは、前記操作者による一歩の遊脚時間に応じたサイズで前記遊脚軌道を示す遊脚軌道情報を生成してバッファに格納し、
前記制御ステップでは、前記バッファに格納された遊脚軌道情報が示す遊脚軌道に従って前記２足歩行ロボットを制御し、
前記２足歩行ロボット制御方法は、さらに、
前記検出された右足加重と左足加重の変化から、前記操作者による一歩の遊脚時間を算出する遊脚時間算出ステップを備え、
前記遊脚軌道算出ステップでは、前記算出された遊脚時間が前記遊脚軌道情報を前記バッファに格納可能な時間の上限を超えている場合、前記遊脚時間を上限におさまる時間に補正してから前記遊脚軌道情報を生成する、
請求項２に記載の２足歩行ロボット制御方法。
【請求項４】
前記２足歩行ロボット制御方法は、さらに、
前記検出された右足加重と左足加重から、前記操作者による一歩の遊脚時間を算出する遊脚時間算出ステップを備え、
前記遊脚軌道算出ステップでは、前記算出された遊脚時間が、前記２足歩行ロボットが前記操作者による一歩に対応する一歩を再現可能な時間の下限未満となっている場合、当該操作者による一歩の遊脚時間を下限におさまるに時間に補正してから前記遊脚軌道を生成する、
請求項２又は３に記載の２足歩行ロボット制御方法。
【請求項５】
前記２足歩行ロボット制御方法は、さらに、
前記検出された右足加重と左足加重から、前記操作者による一歩の遊脚時間を算出する遊脚時間算出ステップを備え、
前記遊脚軌道算出ステップでは、前記算出された遊脚時間が、前記２足歩行ロボットが前記操作者による一歩に対応する一歩を再現可能な時間の下限未満となっている場合、当該操作者による一歩を無効とする、
請求項２又は３に記載の２足歩行ロボット制御方法。
【請求項６】
前記２足歩行ロボット制御方法は、さらに、
前記２足歩行ロボットの右足及び左足のそれぞれの姿勢を、前記検出された右足加重と左足加重のそれぞれからの加重の比に応じて合成した姿勢として、前記２足歩行ロボットの鉛直軸周りの腰姿勢を算出する腰姿勢算出ステップを備え、
前記制御ステップでは、さらに、前記算出された腰姿勢となるように前記２足歩行ロボットを制御する、
請求項１乃至５のいずれか１項に記載の２足歩行ロボット制御方法。
【請求項７】
スレーブとなる２足歩行ロボットの歩行を、マスタとしてマスタスレーブ制御する２足歩行ロボット制御システムであって、
操作者の右足及び左足のそれぞれから地面に対して加えられる加重を検出する加重検出部と、
前記検出された右足加重及び左足加重と、前記２足歩行ロボットの右足位置及び左足位置とに基づいて、前記検出された右足加重と左足加重の比が、前記２足歩行ロボットの右足加重と左足加重の比となるように目標ＺＭＰを算出する目標ＺＭＰ算出部と、
前記算出された目標ＺＭＰに従って前記２足歩行ロボットを制御する制御部と、
を備えた２足歩行ロボット制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２足歩行ロボット制御方法及び２足歩行ロボット制御システムに関し、特に２足歩行ロボットをマスタスレーブ制御する技術に関する。
【背景技術】
【０００２】
特許文献１には、脚式移動ロボットをマスタスレーブ方式で操縦するためのマスタ装置を備えた脚式移動ロボットの遠隔制御システムが開示されている。このマスタ装置は、オペレータの足平部を可動に指示する足平支持機構と、足平支持機構を駆動する足平支持機構駆動装置と、オペレータの足平部への作用力を検出するマスタ側足平作用力検出手段とを設けるようにしている。また、脚式移動ロボットに、脚式移動ロボットの足平部への床からの作用力を検出するロボット側足平作用力検出手段を設けるようにしている。
【０００３】
そして、この遠隔制御システムは、オペレータの足平部への作用力とロボットの足平部への作用力とが互いに対応するように、オペレータの上体に対する足平部の目標位置及び姿勢を決定し、決定した目標位置及び姿勢に従って足平支持機構を足平支持機構駆動装置を介して制御する。また、この遠隔制御システムは、ロボットの上体に対する足平部の目標位置及び姿勢を決定し、決定した目標位置及び姿勢に従ってロボットに備えた脚部起動装置を制御する。
【０００４】
すなわち、この遠隔制御システムでは、オペレータとロボットとが互いに同じような作用力を足平部に受けるように制御が行われるようにしている。これにより、オペレータがロボットの安定性あるいは不安定さを、自己の安定性あるいは不安定さとして認識して、オペレータがロボットの安定性を保つための操縦を的確に行うことができるようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２１７１５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示の技術では、オペレータに体性感覚をフィードバックするために装置が大がかりとなってしまうという問題がある。
【０００７】
本発明は、上述のような問題を解決するためになされたものであり、簡易な構成でロボットの直観的な操作をすることができる２足歩行ロボット制御方法及び２足歩行ロボット制御システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の態様に係る２足歩行ロボット制御方法は、２足歩行ロボットの歩行をマスタスレーブ制御する２足歩行ロボット制御方法であって、操作者の右足及び左足のそれぞれから地面に対して加えられる加重を検出する加重検出ステップと、前記検出された右足加重と左足加重の比を有する加重を、前記２足歩行ロボットが生じさせた場合の目標ＺＭＰを算出する目標ＺＭＰ算出ステップと、前記算出された目標ＺＭＰに従って前記２足歩行ロボットを制御する制御ステップと、を備えたものである。これによれば、操作者が２足歩行ロボットの右足及び左足の加重を直観的に操作することができる。また、操作者の右足加重と左足加重さえ検出できればよいため、簡易な構成とすることができる。
【０００９】
また、上述の２足歩行ロボット制御方法は、さらに、前記検出された右足加重と左足加重の変化から、前記操作者による一歩を検出する検出ステップと、前記操作者による一歩が終了したときに検出された右足加重と左足加重から、当該一歩に対応する前記２足歩行ロボットの一歩分の遊脚軌道を算出する遊脚軌道算出ステップと、を備え、前記制御ステップでは、さらに、前記算出された遊脚軌道で歩行するように前記２足歩行ロボットを制御するようにしてもよい。これによれば、随時遊脚軌道を反映する必要がないため、簡便に２足歩行ロボットの操作をすることができる。
【００１０】
また、上述の２足歩行ロボット制御方法は、前記遊脚軌道算出ステップでは、前記操作者による一歩の遊脚時間に応じたサイズで前記遊脚軌道を示す遊脚軌道情報を生成してバッファに格納し、前記制御ステップでは、前記バッファに格納された遊脚軌道情報が示す遊脚軌道に従って前記２足歩行ロボットを制御し、前記２足歩行ロボット制御方法は、さらに、前記検出された右足加重と左足加重の変化から、前記操作者による一歩の遊脚時間を算出する遊脚時間算出ステップを備え、前記遊脚軌道算出ステップでは、前記算出された遊脚時間が前記遊脚軌道情報を前記バッファに格納可能な時間の上限を超えている場合、前記遊脚時間を上限におさまる時間に補正してから前記遊脚軌道情報を生成するようにしてもよい。これによれば、操作者の一歩が非常に長い場合であっても、２足歩行ロボットを適切に動作させることができる。
【００１１】
また、上述の２足歩行ロボット制御方法は、さらに、前記検出された右足加重と左足加重から、前記操作者による一歩の遊脚時間を算出する遊脚時間算出ステップを備え、前記遊脚軌道算出ステップでは、前記算出された遊脚時間が、前記２足歩行ロボットが前記操作者による一歩に対応する一歩を再現可能な時間の下限未満となっている場合、当該操作者による一歩の遊脚時間を下限におさまるに時間に補正してから前記遊脚軌道を生成するようにしてもよい。これによれば、操作者の一歩が非常に短い場合であっても、２足歩行ロボットを適切に動作させることができる。
【００１２】
また、上述の２足歩行ロボット制御方法は、前記検出された右足加重と左足加重から、前記操作者による一歩の遊脚時間を算出する遊脚時間算出ステップを備え、前記遊脚軌道算出ステップでは、前記算出された遊脚時間が、前記２足歩行ロボットが前記操作者による一歩に対応する一歩を再現可能な時間の下限未満となっている場合、当該操作者による一歩を無効とするようにしてもよい。これによれば、操作者の一歩が非常に短い場合であっても、２足歩行ロボットを適切に動作させることができる。
【００１３】
また、上述の２足歩行ロボット制御方法は、さらに、前記操作者の右足及び左足のそれぞれの姿勢を、前記検出された右足加重と左足加重のそれぞれからの加重の比に応じて合成した姿勢として、前記２足歩行ロボットの鉛直軸周りの腰姿勢を算出する腰姿勢算出ステップを備え、前記制御ステップでは、さらに、前記算出された腰姿勢となるように前記２足歩行ロボットを制御するようにしてもよい。これによれば、操作者が２足歩行ロボットの上体を直観的に操作することができる。
【００１４】
本発明の第２の態様に係る２足歩行ロボット制御システムは、スレーブとなる２足歩行ロボットの歩行を、マスタとしてマスタスレーブ制御する２足歩行ロボット制御装置であって、操作者の右足及び左足のそれぞれから地面に対して加えられる加重を検出する加重検出部と、前記検出された右足加重と左足加重の比を有する加重を、前記２足歩行ロボットが生じさせた場合の目標ＺＭＰを算出する目標ＺＭＰ算出部と、前記算出された目標ＺＭＰに従って前記２足歩行ロボットを制御する制御部と、を備えたものである。これによれば、上述の２足歩行ロボット制御方法と同様に、操作者が２足歩行ロボットの右足及び左足の加重を直観的に操作することができ、簡易な構成とすることができる。
【発明の効果】
【００１５】
上述した本発明の各態様によれば、簡易な構成でロボットの直観的な操作をすることができる２足歩行ロボット制御方法及び２足歩行ロボット制御システムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態に係るマスタスレーブ制御システムの構成図である。
【図２】実施の形態に係る安定化処理の概念を示す図である。
【図３】実施の形態に係るマスタスレーブ制御システムの処理を示すフローチャートである。
【図４】バッファの更新位置と動作遅延・安定性の関係を示す図である。
【図５】実施の形態に係る着床判定を示す図である。
【図６】実施の形態に係る離床判定を示す図である。
【図７】操作者の足運びの軌跡を示す図である。
【図８】操作者の片足を離床して着床するまでの遊脚時間のイメージを示す図である。
【図９】実施の形態に係る遊脚時間の上限及び下限を示す図である。
【図１０】実施の形態に係る遊脚軌道生成に用いるパラメータを示す図である。
【図１１】実施の形態に係る目標脚位置姿勢の更新例を示す図である。
【図１２】実施の形態に係る目標ＺＭＰの更新例を示す図である。
【図１３】実施の形態の実験結果を示す図である。
【図１４】実施の形態の実験結果を示す図である。
【図１５】予見制御ゲインの一例を示す図である。
【図１６】実施の形態に係るロボットの直観操作のイメージを示す図である。
【図１７】実施の形態に係るロボットの直観操作のイメージを示す図である。
【図１８】実施の形態に係るロボットの障害物回避のイメージを示す図である。
【図１９】実施の形態に係るロボットを操作者が座って操作する例を示す図である。
【発明を実施するための形態】
【００１７】
以下に図面を参照しながら、本発明の好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項等については、適宜、省略及び簡略化がなされている。
【００１８】
＜１．システム構成＞
まず、図１を参照して、本実施の形態に係るマスタスレーブ制御システム１の構成について説明する。図１は、本実施の形態に係るマスタスレーブ制御システム１の構成図である。
【００１９】
マスタスレーブ制御システム１は、２足歩行ロボット３（以下、単に「ロボット」とも言う）、一対のフォースプレート４、複数のモーションキャプチャ装置５、及び計測用ＰＣ（Personal Computer）６を有する。マスタスレーブ制御システム１は、２足歩行ロボット制御システムとして機能する。
【００２０】
フォースプレート４、モーションキャプチャ装置５、及び計測用ＰＣ６を含む単位は、マスタスレーブ制御におけるマスタ装置２に相当し、ロボット３は、マスタスレーブ制御におけるスレーブ装置に相当する。
【００２１】
一対のフォースプレート４は、操作者が、一方のフォースプレート４に左足を置き、他方のフォースプレート４に右足を置くように載ることで利用される。これにより、一対のフォースプレート４のそれぞれは、操作者の右足及び左足のそれぞれの足底から地面に対する加重を検出する。一対のフォースプレート４のそれぞれは、操作者の足底から地面に対する加重の検出に応じて、その加重量を示す加重情報を生成して計測用ＰＣ６に送信する。計測用ＰＣ６は、フォースプレート４から受信した加重情報をロボット３に送信する。これにより、ロボット３は、フォースプレート４のそれぞれから送信された加重情報が示す加重量から、操作者の右足及び左足のそれぞれから地面に対して加えられる加重量を認識可能となっている。
【００２２】
複数のモーションキャプチャ装置５のそれぞれは、足先に複数のマーカー７を付けた操作者を撮像し、その画像を示す画像情報を生成して計測用ＰＣ６に送信する。計測用ＰＣ６は、複数のモーションキャプチャ装置５のそれぞれから受信した画像情報が示す画像に含まれるマーカーの動きから、遊脚の足上げ高さ、及び、両足の足先の位置及び姿勢を計算する。計算用ＰＣ６は、計算した遊脚の足上げ高さ、及び、両足の足先の位置及び姿勢を示す足先位置姿勢情報をロボット３に送信する。これにより、ロボット３は、操作者の遊脚の足上げ高さ、及び、操作者の右足と左足の相対位置姿勢を認識可能となっている。
【００２３】
このように、計算用ＰＣ６は、上述の加重情報及び足先位置姿勢情報を操作情報としてロボット３に送信する。ロボット３は、このようにして得られる（１）〜（３）の操作情報を用いて、下肢マスタスレーブ操作を行う。
（１）右足及び左足のそれぞれの加重量
（２）遊脚の足上げ高さ
（３）右足と左足の相対位置姿勢
【００２４】
なお、（１）〜（３）の操作情報は、フォースプレート４が随時加重を検出して加重信号を送信すること、及び、モーションキャプチャ装置５が随時撮像して画像情報を送信することによって、計測用ＰＣ６が随時取得し、ロボット３に送信している。これらの操作情報を随時取得する時間分解能は例えば最低限２５ｍｓｅｃ程度あればよく、ロボット３側では実用上それを補間して用いるようにしている。
【００２５】
ロボット３に搭載されたＣＰＵ８（Central Processing Unit）（以下、本説明では「ロボットＣＰＵ」とも言う）は、計測用ＰＣ６から送信された操作情報が示す右足及び左足の加重量、遊脚の足上げ高さ、及び右足と左足の相対位置姿勢に基づいて、ロボット３の動きが操作者の動きをトレースした動きとなるような、ロボット３の目標ＺＭＰ、左足の目標脚位置姿勢、右足の脚目標位置姿勢、及び目標腰姿勢を算出する。
【００２６】
ロボットＣＰＵ８は、計算した情報（目標ＺＭＰ、左足の目標脚位置姿勢、右足の目標脚位置姿勢、及び目標腰位置姿勢）に基づいて、ロボット３の各関節角度を計算し、計算した関節角度となるように各関節を制御する。具体的には、ロボット３は、各関節として機能する複数のアクチュエータ（図示せず）を有している。ロボットＣＰＵ８は、各関節角度として各アクチュエータの目標角度を計算し、各アクチュエータの角度が、計算した目標角度となるように、各アクチュエータを制御する。すなわち、目標ＺＭＰ、左足の目標脚位置姿勢、右足の目標脚位置姿勢、及び目標腰姿勢となる目標角度が算出される。これにより、ロボット３の動きが操作者の動きをトレースした動きとなるようにマスタスレーブ制御が行われる。なお、ロボットＣＰＵ８は、例えば、ロボット３に搭載され、ロボット３の動作を統括的に制御するマイクロコントローラ（マイコン）に含まれる。
【００２７】
以上にマスタスレーブ制御システム１の構成について説明したが、操作者の遊脚の足上げ高さ及び足先の位置姿勢（右足の位置姿勢及び左足の位置姿勢）を取得する手段は、上述の例に限られない。上述の例では、モーションキャプチャ方式として、光学式モーションキャプチャを利用する例を説明したが、機械式又は磁気式等の他のモーションキャプチャ方式を利用するようにしてもよい。また、ＫＩＮＥＣＴ（登録商標）に代表されるような深度情報を取得できるモーションセンサを利用してもよい。
【００２８】
また、操作者の右足及び左足のそれぞれからの加重量を取得する手段についても、上述の例に限られない。例えば、操作者が力センサを備えた靴を履くことで、操作者の右足及び左足のそれぞれから力センサに加えられる力を、地面に対する加重として検出するようにしてもよい。そして、右足及び左足の力センサのそれぞれは、検出した力を示す加重情報を生成して計測用ＰＣ６に送信するようにすればよい。
【００２９】
また、計測用ＰＣ６とロボット３との間の通信の形式も、有線・無線を問わない。すなわち、計測用ＰＣ６及びロボット３のそれぞれは、有線及び無線のうち、採用した通信方式に応じた通信モジュールを備え、その通信モジュールを介して通信を行うこととなるが、その実現方法は一般的であるため、説明を省略する。
【００３０】
＜２．ロボット側の安定化処理の前提＞
本実施の形態に係る２足歩行ロボット３は、目標ＺＭＰに基づいて安定的な重心軌道を算出し、算出した重心軌道と目標脚位置姿勢及び目標腰姿勢を実現する各関節角度を算出するリアルタイム動作ができるものとする。また、このような安定化処理を短周期（数十ｍｓｅｃレベル）で逐次計算可能な処理系を有するものとする。
【００３１】
ここで、安定化処理を実現する手法として、一般的な予見制御又はモデル予測制御等を用いて重心軌道を算出すればよい。例えば、特許第３８３４６２９号公報に開示されるような予見制御を用いるようにしてもよく、特開２０１３−１８４２４８号公報に開示されるようなモデル予測制御を用いるようにしてもよい。そして、ロボットＣＰＵ８は、予見制御又はモデル予見制御を適用して算出した重心軌道から重心ヤコビアンを用いた逆運動学により各関節角度を算出する一般的な手法により、各関節角度を算出するようにすればよい。
【００３２】
本実施の形態において、この手法により安定化処理を実現するためには、ロボット３の長期的安定性を確保するために一定期間（予見期間又は予測期間ともいう）の未来の目標値（目標ＺＭＰ、左足の目標脚位置姿勢、右足の目標脚位置姿勢、及び目標腰姿勢）を保持しておく必要がある。図２に、この手法による安定化処理の概念を示す。図２に示すように、ロボット３が有するバッファ（以下、本説明では「予測期間バッファ」とも言う）に、未来の目標値を格納する。予測期間バッファは、目標ＺＭＰ、左足の目標脚位置姿勢、右足の目標脚位置姿勢、及び目標腰姿勢のそれぞれについて用意される。なお、図２では、予測期間バッファが１．６ｓｅｃ分の未来の目標値を格納可能なサイズである例を示している。
【００３３】
一般的な予見制御又はモデル予測制御では、操作者の歩行モーション又はジョイスティック等の入力に基づいて、随時、その入力から算出した目標値が予測期間バッファの末端に補充される。ロボットは、予測期間バッファの先頭から、順次、それぞれの目標値を取得し、取得した目標値に基づいて各関節角度を算出する。具体的には、ロボットは、予見制御又はモデル予測制御により、目標ＺＭＰからロボットの重心軌道を算出し、算出した重心軌道と、左足の目標脚位置姿勢、右足の目標脚位置姿勢、及び目標腰姿勢とから逆運動学により各関節角度を算出する。そして、ロボットは、算出した各関節角度となるように、各関節を制御する。すなわち、予測期間バッファは、キューとして機能する。
【００３４】
なお、未来の目標値の格納形式は、上述したようにバッファに格納する形式には限られず、多項式で保持するようにしてもよい。また、本実施の形態では、上述したように未来の目標値を保持し、その目標値を保持している期間の安定性を保証する重心軌道を比較的早い周期で逐次生成する安定化処理を有するロボット制御系を対象としており、同等の処理を実現することができるものであれば、その実現方法は、本実施の形態そのものに限られない。
【００３５】
本実施の形態では、操作情報に基づいて新たに算出した目標値を予測期間バッファの最後尾に格納するように利用することも可能であるが、新たに算出した目標値を先頭から１秒ほど未来となる位置に格納するようにしても算出される重心軌道は大きく変わらないことを確認している。これは、本実施の形態では、操作者の足の加重からロボット３の目標ＺＭＰを算出するようにしているため、そのような処理をしていないものと比較して、後述するようにロボット３のＺＭＰの遷移期間を省略することができ、操作者の動作を反映したロボットの動作を低遅延で実現することができるからである。
【００３６】
＜３．処理フロー＞
続いて、図３を参照して、本実施の形態に係るマスタスレーブ制御システム１の処理について説明する。図３は、本実施の形態に係るマスタスレーブ制御システム１の処理を示すフローチャートである。
【００３７】
（Ｓ１：ロボットの初期状態への遷移）
ロボット３は、その動作開始時に初期状態へ遷移する（Ｓ１）。具体的には、ロボットＣＰＵ８は、ロボット３の０点復帰、サーボオン、及び初期姿勢への遷移を実施し、倒立制御及び倣い制御を開始する。
【００３８】
ここで、ロボット３は、図２に示すように予測期間バッファを有しており、その予測期間バッファでは事前に更新位置が定められている。図４のパターンＡに示すように、更新位置を予測期間バッファの最後尾に設定する場合には、予測期間分（予測期間バッファの目標値を先頭から最後尾まで取得する時間：１．６秒）だけ遅れてロボット３が操作者の動作を反映した動作を実施する。また、更新位置を予測期間バッファの中間に設定すれば予測期間の半分の時間分（０．８秒）だけ遅れてロボット３が操作者の動作を反映した動作を実施する。また、図４のパターンＢに示すように、予測期間バッファの先頭に近すぎる位置を更新位置としてしまうと、ロボット３に操作者の動作が反映されるまでの遅延も短くなるが、操作者が長い一歩を実施した場合にその目標値が格納しきれなくなってしまう。よって、上述の通り、図４のパターンＣに示すように、ロボット３の動作の安定性と低遅延化を勘案し、予測期間バッファの先頭から１秒程度の期間に更新位置を設定するとよい。
【００３９】
ロボットＣＰＵ８は、このようにして事前に設定した更新位置に従って、計測用ＰＣ６から受信した操作情報に基づき算出した目標ＺＭＰ、左足の目標脚位置姿勢、右足の目標脚位置姿勢、及び目標腰姿勢を予測期間バッファに格納する。ここで、ロボットＣＰＵ８は、図４のパターンＣに示すように、更新位置における目標値と同一の目標値を予測期間バッファの末端まで埋めるものとする。
【００４０】
ここで、予測期間バッファのサイズを更新位置までのサイズとしてしまってもよい。しかしながら、ロボットＣＰＵ８の計算時間に余力があるのであれば、予測期間バッファのサイズは、上述したように、更新位置以降の未来の目標値も格納されるサイズとするとよい。そして、例えば、後述の「６．本実施の形態の変形例」で説明するように、予測期間バッファにおいて更新位置から末端に、より動的安定性を保証する目標値を算出して格納することも有効である。
【００４１】
（Ｓ２：操作状態の取得判定）
ロボットＣＰＵ８は、操作情報を途絶えずに取得できているか否かを判定する（Ｓ２）。具体的には、ロボットＣＰＵ８は、計測用ＰＣ６から操作情報を途絶えずに所定の間隔で受信することができている否かを判定する。操作者の操作情報が取得できていない場合（Ｓ２：Ｎｏ）、ロボットＣＰＵ８は、後述のＳ１８におけるエラー処理を実施する。
【００４２】
（Ｓ３：操作状態が両脚支持状態かの判定）
操作者の操作状態は、大別して両脚支持／単脚支持（片足離床）／支持なし（両足離床）の３つの状態に分けられる。ロボットＣＰＵ８は、取得した操作状態に基づいて以降の処理によって、操作者の操作状態がそれらの状態のうち、いずれの状態となっているかを判定する。
【００４３】
本実施の形態では、両脚離床状態（例えばジャンプしている状態）における動作は取り扱わないため、後述のＳ６でエラーとして判定される。ここでは、ロボットＣＰＵ８は、両脚支持状態であるかどうかを判定し、処理を分岐する。すなわち、操作者の操作情報を取得できている場合（Ｓ２：Ｙｅｓ）、ロボットＣＰＵ８は、両脚支持状態であるか否かを判定する（Ｓ３）。なお、本実施の形態における処理の開始時には、両足支持状態から処理が開始されることが好ましい。
【００４４】
ここで、両脚支持状態であるか否かは、計測用ＰＣ６から受信した加重情報が示す右足及び左足の加重に基づき、右足の加重と左足の加重の両方が、図５に示すように所定の加重閾値を超えたか否かによって判定する。ロボットＣＰＵ８は、右足の加重と左足の加重の両方が加重閾値を超えている場合、両脚支持状態であると判定する。ロボットＣＰＵ８は、右足の加重と左足の加重の両方が加重閾値を超えていない場合、両脚支持状態でないと判定する。
【００４５】
（Ｓ４：離床判定）
両脚支持状態であると判定した場合（Ｓ３：Ｙｅｓ）、ロボットＣＰＵ８は、どちらかの足が離床し、両脚支持状態から単脚支持状態に移行したか否かを判定する（Ｓ４）。
【００４６】
ここで、単脚支持状態であるか否かは、計測用ＰＣ６から受信した加重情報に基づき、操作者の右足の加重及び左足の加重のいずれか一方が、図６に示すように上述の加重閾値以下となったか否かによって判定する。ロボットＣＰＵ８は、操作者の右足の加重及び左足の加重のいずれか一方が加重閾値以下であり、かつ他方が加重閾値を超えている場合、単脚支持状態となったと判定する。ロボットＣＰＵ８は、操作者の右足の加重及び左足の加重の両方が加重閾値を超えたままである場合、単脚支持状態となっていないと判定する。操作者の片足が離床していないと判定した場合（Ｓ４：Ｎｏ）、ロボットＣＰＵ８は、後述のＳ１４における目標ＺＭＰ算出処理を実施する。この場合、両脚支持状態において目標ＺＭＰの算出が行われることになる。
【００４７】
なお、チャタリング防止のために一定時間以上、操作者の右足の加重及び左足の加重のいずれか一方が加重閾値以下の状態が続いたら離床状態と判定するようにしてもよい。また、計測した操作者の脚高さも考慮することにより判定精度を向上するようにしてもよい。具体的には、ロボットＣＰＵ８は、操作者の片足の加重が加重閾値以下となっており、かつその片足（遊脚）の足上げ高さが所定の足上げ高さ閾値を超えている場合に、単脚支持状態であると判定するようにしてもよい。また、ロボットＣＰＵ８は、片足（遊脚）の足上げ高さのみから、単脚支持状態であるか否かを判定するようにしてもよい。
【００４８】
（Ｓ５：離床状態の保持）
操作者の片足が離床し、単脚支持状態であると判定した場合（Ｓ４：Ｙｅｓ）、ロボットＣＰＵ８は、後述の処理で遊脚の着床時の遊脚位置姿勢を算出するための情報として、Ｓ４で離床を判定したタイミング、及び、右足及び左足のどちらが離床されたかを示す情報をロボット３が有する記憶装置（例えばハードディスク又はメモリ等）に保持する（Ｓ５）。そして、ロボットＣＰＵ８は、後述のＳ１４における目標ＺＭＰ算出処理を実施する。この場合、片脚支持状態において目標ＺＭＰの算出が行われることになる。
【００４９】
（Ｓ６：両脚離床の判定）
一方、両脚支持状態でないと判定した場合（Ｓ３：Ｎｏ）、ロボットＣＰＵ８は、右足及び左足の両方が離床した両足離床状態に移行したか否かを判定する（Ｓ６）。
【００５０】
ここで、両脚支持状態であるか否かは、計測用ＰＣ６から受信した加重情報に基づき、右足の加重と左足の加重の両方が、上述の閾値以下となったか否かによって判定する。ロボットＣＰＵ８は、右足の加重と左足の加重の両方が閾値以下である場合、両脚離床状態であると判定する。ロボットＣＰＵ８は、右足の加重と左足の加重の両方が閾値以下となっていない場合、両脚離床状態でないと判定する。
【００５１】
両脚離床状態であると判定した場合（Ｓ６：Ｙｅｓ）、本実施の形態では両足が地面から離れるような場合を想定していないため、ロボットＣＰＵ８は、後述のＳ１８におけるエラー処理を実施する。
【００５２】
（Ｓ７：足上げ高さ候補量の取得）
単脚支持状態途中である場合（両脚離床状態でないと判定した場合（Ｓ６：Ｎｏ））は、常に、この処理を実施する。ここでは、ロボットＣＰＵ８は、計測用ＰＣ６から受信した操作情報に基づき、操作者の遊脚の足上げ高さが離床してから最大の高さになっているか否かを判定する。最大の高さとなっている場合、ロボットＣＰＵ８は、その高さをロボット３の遊脚軌道の足上げ高さの最大の高さの候補量として記憶装置に保持する（Ｓ７）。すなわち、ロボットＣＰＵ８は、随時、計測用ＰＣ６から受信した操作情報に基づき、新たに受信した操作情報が示す遊脚の足上げ高さと、記憶装置に保持している候補量とを比較する。そして、ロボットＣＰＵ８は、新たに導出した遊脚の足上げ高さの方が、記憶部に保持している候補量よりも高い場合には、候補量を新たに導出した遊脚の足上げ高さに更新する。ロボットＣＰＵ８は、記憶装置に保持している候補量の方が、新たに導出した遊脚の足上げ高さよりも高い場合には、現在保持している候補量を維持する。これにより、図７に示すように、操作者の遊脚軌道中で最も足を高く上げた時点における高さを検出・保持できるようにしている。このようにして、最終的に候補量として残った足上げ高さの最大値は、後述のＳ１３におけるロボット３の遊脚軌道生成処理においてロボット３の足上げ高さの最大値として利用される。
【００５３】
ここで、実用上は、ロボット３の動作可能な足上げ高さを考慮して、足上げ高さの上限及び下限を予め定めておき、足上げ高さがその上限から下限までの範囲外となっている場合に、足上げ高さの候補量をその範囲内となるように丸め込むようにするとよい。
【００５４】
また、ロボット３の遊脚軌道の足上げ高さは、予め定めた固定値としてもよく、上記の方法に限定されるものではない。しかしながら、好ましくは、上述したように、検出した操作者の遊脚の足上げ高さの最大値を、ロボット３の遊脚の足上げ高さの最大値として反映することにより、操作者の意図を反映した歩行が可能となる。
【００５５】
（Ｓ８：遊脚着床判定）
単脚支持状態において、この判定が毎回実行される。ロボットＣＰＵ８は、遊脚が着床したか否かを判定する（Ｓ８）。
【００５６】
ここで、遊脚が着床したか否かは、計測用ＰＣ６から受信した操作情報が示す加重に基づき、操作者の遊脚と認識している足からの加重が、図５に示すように上述の閾値を超えたか否かによって判定する。ロボットＣＰＵ８は、操作者の遊脚と認識している足の加重が閾値を超えた場合、遊脚が着床したと判定する。ロボットＣＰＵ８は、操作者の遊脚と認識している足の加重が閾値を超えていない場合、遊脚が着床していないと判定する。遊脚が着床していないと判定（Ｓ８：Ｎｏ）、ロボットＣＰＵ８は、後述のＳ１４における目標ＺＭＰ算出処理を実施する。この場合、単脚支持状態において目標ＺＭＰの算出が行われることになる。
【００５７】
（Ｓ９：遊脚時間長の適正判定）
遊脚が着床したと判定した場合（Ｓ８：Ｙｅｓ）、この処理に入る。ロボットＣＰＵ８は、保持している離床タイミングと、着床タイミングの差分として、遊脚となっていた時間長（遊脚時間長）を算出する。図８に示すように、操作者が片足を離床して着床するまでの時間を算出することとなる。ロボットＣＰＵ８は、算出した遊脚時間長が、適正範囲か否かを判定する（Ｓ９）。
【００５８】
具体的には、ロボットＣＰＵ８は、算出した遊脚時間長が、予め定めた下限及び上限の範囲内であるか否かを判定する。下限は、ロボット３の足関節の動作性能を勘案して１歩を進める際の最低時間を事前に設定しておく。本実施の形態では、後述するように操作者の遊脚が着床したときに、その１歩に対応するロボット３の遊脚軌道（その１歩分の目標脚位置姿勢）を算出し、予測期間バッファの更新位置から先頭に遡って格納するようにしている。そのため、上限は、予測期間バッファの更新位置から先頭までの分の時間以上の遊脚軌道は格納できないため、図９に示すように予測期間バッファの更新位置から先頭までの分の時間長が、遊脚時間長の上限となる。また、遊脚時間長が下限の時間と等しい場合には、予測期間バッファにおいて更新位置から先頭に向かって下限の時間分の領域に、その遊脚の一歩に対応する目標脚位置姿勢の情報が格納されることになる。ロボットＣＰＵ８は、遊脚時間長が上限から下限までの範囲内（上限以下かつ下限以上）である場合、遊脚時間長が適正範囲であると判定し、遊脚時間長が上限から下限までの範囲外（上限よりも大きくかつ下限未満）である場合、遊脚時間長が適正範囲でないと判定する。遊脚時間長が適正範囲であると判定した場合（Ｓ９：Ｙｅｓ）、ロボットＣＰＵ８は、後述のＳ１３における遊脚軌道生成・更新処理を実施する。
【００５９】
（Ｓ１０：遊脚時間長の補正の可否判定）
遊脚時間長が適正範囲でないと判定した場合（Ｓ９：Ｎｏ）、ロボットＣＰＵ８は、遊脚時間長が補正可能か否かを判定する（Ｓ１０）。
【００６０】
具体的は、ロボットＣＰＵ８は、遊脚時間長が上限を超えている場合には、上限におさまる長さに補正すればよいので補正可能と判定する。一方、ロボットＣＰＵ８は、遊脚時間長が下限未満となっている場合には、少なくとも下限以上となる長さに補正すればよいが、予測期間バッファにおいて、１つ前の１歩に対応する遊脚軌道の情報が遊脚時間長の下限よりも更新位置側に残っている場合には、後述するＳ１３の遊脚軌道の生成・更新処理により、その一部が中途半端に上書きされてしまうことになる。そのため、ロボットＣＰＵ８は、遊脚時間長が下限未満となっている場合には、そのような状況が発生しない場合に補正可能と判定する。
【００６１】
すなわち、ロボットＣＰＵ８は、前回にＳ１３の遊脚軌道生成・更新処理を実施してから、遊脚時間長の下限時間以上の時間が経過している場合には補正可能と判定する。この場合には、前回に予測期間バッファの遊脚軌道を更新してから、少なくとも遊脚時間長の下限時間分の情報が先頭から順次取得・利用されており、予測期間バッファにおいて更新位置から遊脚時間長の下限時間分の範囲に前回の遊脚軌道の情報が格納されていないからである。よって、遊脚時間を、遊脚時間長の下限まで引き延ばすように補正したとしても、前回の遊脚軌道を上書きすることがないからである。一方、ロボットＣＰＵ８は、遊脚時間長の下限時間以上の時間が経過していない場合には、補正不可能と判定する。ロボットＣＰＵ８は、遊脚時間長が補正可能と判定した場合には（Ｓ１０：Ｙｅｓ）、Ｓ１２の処理に移行し、遊脚期間長が補正不可能と判定した場合には（Ｓ１０：Ｎｏ）、Ｓ１１の処理に移行する。
【００６２】
（Ｓ１１：遊脚判定の無効化）
遊脚期間長が補正不可能と判定した場合（Ｓ１０：Ｎｏ）、上述したように短すぎる１歩であり、かつ補正も不可能であるため、ロボットＣＰＵ８は、現在の単脚支持状態をキャンセルし、両脚支持状態に変更する。操作者の１歩は無視されることになるが、ロボット３の遊脚軌道はまだ生成していないため、特に処理を施す必要は無く、ロボットＣＰＵ８が認識する内部状態を変更するのみ（上述のように認識する操作状態の更新等）でよい。そして、ロボットＣＰＵ８は、後述のＳ１４における目標ＺＭＰ算出処理を実施する。この場合、両脚支持状態において目標ＺＭＰの算出が行われることになる。
【００６３】
（Ｓ１２：遊脚期間長の変更）
遊脚期間長が補正可能であると判定した場合（Ｓ１０：Ｙｅｓ）、ロボットＣＰＵ８は、遊脚期間長を補正する（Ｓ１２）。すなわち、ロボットＣＰＵ８は、遊脚期間長を上限及び下限の範囲内となるように補正する。具体的には、ロボットＣＰＵ８は、遊脚時間長が上限を超えている場合には、遊脚時間長を上限まで短くした時間となるように補正し、遊脚時間長が下限未満となっている場合には、遊脚時間長を下限まで長くした時間となるように補正する。
【００６４】
（Ｓ１３：遊脚軌道の生成）
ロボットＣＰＵ８は、Ｓ１の処理で事前に設定した予測期間バッファの更新位置で遊脚の踏み出しが終わるように遊脚軌道を生成する。その際、使用するパラメータを以下のように定義し、図１０に図示する。
【００６５】
ｔｓ：Ｓ９〜Ｓ１２で算出した遊脚時間長（スカラー）
ｈｓ：Ｓ７で算出した足上げ高さ（スカラー）
Ｔ１：操作者の支持脚位置姿勢（同時変換行列）
Ｔ２：操作者の着床時の遊脚位置姿勢（同時変換行列）
Ｔ３：操作者の支持脚基準での遊脚着床店相対位置姿勢（同時変換行列）
Ｔ４：ロボット３の支持脚位置姿勢（同時変換行列）
Ｔ５：離床前のロボット３の遊脚位置姿勢（同時変換行列）
Ｔ６：着床時のロボット３の遊脚位置姿勢（同時変換行列）
【００６６】
ロボットＣＰＵ８は、式１により着床時のロボット３の遊脚位置姿勢Ｔ６を算出する。
【００６７】
【数１】
0005962679.tif 000002
【００６８】
式１からも明らかなように、例えばユーザの足先に３次元磁気センサを取り付けて直接右足と左足の相対位置を検出する等することで、最初からＴ３を算出できる場合には、ロボットＣＰＵ８におけるＴ１、Ｔ２の算出は不要である。また、Ｔ３は、人の歩幅とロボット３の歩幅の違いを勘案し、操作情報から算出した値に一定のレートを乗算して変更するようにしてもよい。また、ロボット３の可動範囲及び足の大きさを考慮し、自己干渉を防止するような値に変更してもよい。
【００６９】
ロボットＣＰＵ８は、離床前のロボット３の遊脚位置姿勢Ｔ５から、遊脚時間長ｔｓで着床時のロボット３の遊脚位置姿勢Ｔ６に到達するように補間して遊脚軌道（１歩分の右足及び左足の目標脚位置姿勢）を生成し、ロボット３の予測期間バッファを更新する（Ｓ１３）。基本的には、遊脚軌道の先端と末端の速度・加速度が０となるように、５次の多項式補間で遊脚軌道を構成する各遊脚位置姿勢の目標値を補間すればよい。足上げ高さも考慮する場合には、鉛直方向に足上げ高さ分だけ足を上げて下ろすような補間が加わり、６次の多項式補間を用いる。
【００７０】
また、ロボット３に適用する実用的な遊脚軌道としては、足位置が鉛直方向に地面を離れてから前後左右方向に振り出さないと摩擦の関係上、足がつまずいたりして安定性に悪影響を及ぼす。そこで、鉛直方向（Ｚ軸方向）の遊脚軌道以外の補間軌道の開始を遅め、終了を早めることで完全に遊脚が上がってから振り出しを行うような軌跡を生成することが実用的である。本実施の形態では、この詳細な実現方法としてどのような方法を採用するかは問わない。
【００７１】
本処理により、予測期間バッファにおいて更新位置から遊脚時間長分遡った点まで遊脚に関する目標脚位置姿勢が更新される。すなわち、図１１に示すように、予測期間バッファ内の斜線部が更新される。また、図１１に網掛け部として示すように、更新位置以降から予測期間バッファの末端までは、着床時（更新位置）の情報と同じ情報で埋めておくとよい。
【００７２】
具体的には、ロボットＣＰＵ８は、図１１に示すように、生成した遊脚軌道を示す情報を、予測期間バッファにおいて更新位置から遊脚時間分遡った範囲に格納する。そして、ロボットＣＰＵ８は、予測期間バッファにおける更新位置以降の範囲については、着床時の目標脚位置姿勢の情報（遊脚軌道における最後の目標脚位置姿勢の情報）で埋める。
【００７３】
なお、遊脚が着床判定されて遊脚軌道を生成するとき以外は、各足の目標脚位置姿勢は更新位置において、１つ前の情報をそのままコピーして更新すればよい。また、予測期間バッファの先頭から目標足位置姿勢が取得されて、予測期間バッファの末端に空きができるときに、その位置に１つ前の情報をそのままコピーして格納するようにしてもよい。言い換えると、本実施の形態では、遊脚の着床判定時のみしか遊脚軌道分の目標脚位置姿勢の更新は行わない。
【００７４】
（Ｓ１４：加重操作情報から目標ＺＭＰを算出する）
ロボットＣＰＵ８は、計測用ＰＣ６から受信した操作情報に基づいてロボット３の目標ＺＭＰを、式２によって算出し、ロボット３の予測期間バッファを更新する（Ｓ１４）。なお、式２におけるｆＬ、ｆＲは、予測期間バッファ更新位置の時点でのロボット３の脚位置となる。
【００７５】
【数２】
0005962679.tif 000003
【００７６】
本処理に入る前までに、操作者の右足及び左足の加重量、及び、ロボット３の右足及び左足の脚位置姿勢（目標脚位置姿勢）は更新されているはずなので、ロボットＣＰＵ８は、加重情報が示す右足及び左足の加重量と、予測期間バッファの更新位置での目標脚位置姿勢における右足及び左足の足位置に基づき、更新位置における目標ＺＭＰを算出する。そして、図１２に示すように予測期間バッファにおける更新位置以降の全てを、算出した目標ＺＭＰの情報で埋める処理を行う。
【００７７】
具体的には、ロボットＣＰＵ８は、図１２に示すように、算出した目標ＺＭＰを示す情報を、予測期間バッファにおいて更新位置以降の全ての領域（更新位置及びそれよりも末端方向の領域）に格納する。
【００７８】
ここで、遊脚の離床判定がされている状況では、式２において離床している足の加重量（Ｆｚｌ又はＦｚｒ）は０又はほぼ０となるため、次にＳ１３で遊脚位置が変更されても、殆ど影響を受けることはない。
【００７９】
本処理により、操作者が地面に対して加えている右足及び左足の加重の比に応じて、目標ＺＭＰを算出するようにしているため、ロボット３が地面に対して加える加重の比を、直感的に操作することができる。すなわち、ロボット３の右足及び左足のそれぞれからのＺＭＰまでの距離が、操作者の右足及び左足のそれぞれの加重の比に反比例した比として決定される。言い換えると、ロボット３の右足及び左足のそれぞれの加重の比を、操作者の右足及び左足のそれぞれの加重の比とすることができる。ここで、ロボット３の足位置（例えば足先の中心）を基準として目標ＺＭＰを算出する例について説明したが、操作者の足位置及び足からの加重からＺＭＰを算出して、ロボット３においてそのＺＭＰに対応する位置を目標ＺＭＰとして算出するようにしてもよい。
【００８０】
（Ｓ１５：加重情報とロボット足姿勢から目標腰姿勢算出）
次に、ロボットＣＰＵ８は、加重情報が示す右足及び左足の加重量と、予測期間バッファの更新位置での目標脚位置姿勢における右足及び左足の足姿勢に基づいて目標腰姿勢を算出し、予測期間バッファの更新位置に格納する（Ｓ１５）。ここでは、鉛直方向（Ｚ軸方向）を軸とする回転方向の腰姿勢を算出する。具体的には、操作者が多く加重した足の向きに上肢が向くようにＺ軸周りの腰姿勢を、式３によって算出する。
【００８１】
【数３】
0005962679.tif 000004
【００８２】
他の腰姿勢に関しても適用可能であるが、動作の自然さの観点から上述のようにＺ軸周りの腰姿勢に適用することが望ましい。また、図１２に示した目標ＺＭＰの場合と同様に、予測期間バッファにおける更新位置以降の全てを、算出した目標腰姿勢の情報で埋める処理を行う。
【００８３】
具体的には、ロボットＣＰＵ８は、図１２に示す場合と同様に、算出した腰姿勢を示す情報を、予測期間バッファにおいて更新位置以降の全ての範囲に格納する。
【００８４】
このように、本処理では、腰姿勢を、操作者の左足及び右足の姿勢が反映されるロボット３の左足及び右足の姿勢のそれぞれを、操作者の左足及び右足のそれぞれの加重の比によって合成することで得られる姿勢とするようにしている。よって、本処理により、操作者が両足の加重操作でロボット３の上肢の向きを直観的に操作することができる。操作者の腰姿勢を計測せずに少ない計測情報から上肢まで操作できるので画期的である。また、腰姿勢に関しては、両脚姿勢の中間姿勢にするようにしてもよく、上述の方式に限定されるものではない。
【００８５】
（Ｓ１６：安定化処理の実行）
ロボットＣＰＵ８は、予見制御又はモデル予測制御を実行し、予測期間の全体にわたって安定な重心軌道を生成する。すなわち、ロボットＣＰＵ８は、目標ＺＭＰの予測期間バッファに格納される全ての目標ＺＭＰに基づいて、現在及び未来の目標重心位置を算出する。重心周りのモーメントを考慮し、複数段階で予見制御を実施するようにしてもよい。そして、ロボットＣＰＵ８は、算出した重心軌道と、目標脚位置姿勢を満たすように逆運動学を施し、最終的な各関節角度を算出する（Ｓ１６）。すなわち、ロボットＣＰＵ８は、算出した重心軌道と、予測期間バッファの先頭における右足の目標脚位置姿勢、左足の目標脚位置姿勢、及び目標腰姿勢と、に基づいて、現時点でロボット３がとるべき各関節角度を算出する。
【００８６】
一般にロボットの各軸アクチュエータの制御となる低レベル制御は高周期であるのに対し、予見制御などの高レベル制御は計算時間が数十ｍｓｅｃと若干遅い周期で回る。実用上、低レベル制御側では、予見制御で重心軌道として求めた数サンプル数分の重心位置を処理することになる。なお、Ｓ１６における制御は従来手法に従えばよいため、詳細な記述は省略する。
【００８７】
（Ｓ１７：各関節の制御）
ロボットＣＰＵ８は、算出した各関節角度を目標角度として各関節に対応するアクチュエータを制御する（Ｓ１７）。なお、ここで、予測期間バッファの情報は、１制御周期分消費されるので先頭の情報を排除し、新たな情報を最後尾に加える。上述したように、暫定的に予測期間バッファの末端だった情報と同じ情報を加えるようにしてもよい。
【００８８】
（Ｓ１８：エラー処理）
本実施の形態では、操作者の両足が離床したり（Ｓ６：Ｙｅｓ）、操作情報の取得が途切れたりした場合（Ｓ２：Ｎｏ）には、エラーとしてロボット３を安全に停止させる（Ｓ１８）。その場合、ロボットＣＰＵ８は、目標ＺＭＰの軌道を現在のロボット３の両足の中心に戻し、それ以降の遊脚判定及び遊脚軌道生成を行わないようにすればよい。すなわち、ロボットＣＰＵ８は、徐々にロボット３の両足の中心に戻るような目標ＺＭＰを順次生成し、予測期間バッファを更新するようにすればよい。また、予測期間バッファは、操作情報の受信が正常復帰した場合、及び、操作者の両足が再度着床したと判定した場合には通常処理の戻してもよい（図３に示す処理を再開してもよい）。
【００８９】
＜４．安定化に関して＞
本実施の形態では、図４に示すパターンＣのように、予測期間バッファにおける目標値の更新位置を最後尾とせずに中間的な位置とし、それ以降は暫定値を格納するようにしている。また、図１１に示すように遊脚軌道生成時には、予測期間バッファの更新位置から先頭に遡った範囲を更新するようにしている。そのため、ロボット３の安定化を処理する予見制御又はモデル予測制御を適用した場合に、安定を保証するための重心軌道が急峻に変化するようなことにならないかという懸念が生じる。
【００９０】
そこで、予測期間バッファ（１．６ｓｅｃ分）の最後尾を更新する場合と、予測期間バッファの先頭から１．０ｓｅｃ分後ろの位置を更新位置として更新する場合にモデル予測制御を用いて安定化を行った際の重心軌道を比較した結果をｘ、ｙ方向に関して、目標ＺＭＰと併せてグラフにプロットした結果を、図１３及び図１４として示す。実験条件は、１歩を０．８ｓｅｃ程度とし、歩幅を１０ｃｍ〜２０ｃｍ程度とした。図１３及び図１４において「COG_Z_FULL」は、更新位置を最後尾とした場合における重心軌道を示し、「COG_Z_1.0s」は、更新位置を予測期間バッファの先頭から１．０ｓｅｃ分後ろの位置とした場合における重心軌道を示している。なお、図１３では、Ｘ軸方向の重心軌道の変化を示し、図１４では、Ｙ軸方向の重心軌道の変化を示している。
【００９１】
グラフからモデル予測制御から生成される重心軌道には大きな差異は見られず、この程度の歩行においては、予測期間バッファの更新位置の差異は、ロボット３の安定性において大きな問題とはならないことが分かる。それは、予見制御においてもモデル予測制御においても未来の目標値に関して重み付けがなされ、先の未来になるほど安定化への寄与率が下がる特徴があるからである。
【００９２】
図１５に予見制御ゲインの一例を示す。このグラフから分かるように１．０秒より先の未来の目標値による影響はそれほど大きくなく、実際にシミュレータでも実人型ロボットを用いても、生成した重心軌道を用いて安定歩行ができる。
【００９３】
また、本実施の形態では、遊脚軌道は、予測期間バッファの更新位置から先頭に向かって遡るように更新しているため、予測制御バッファの先頭の直後の位置が変更される場合があるため、若干重心周りのモーメントの変化が安定化に悪影響を及ぼす懸念もある。しかしながら、より支配的な影響を及ぼす目標ＺＭＰは随時操作情報から生成したものを予測期間バッファの更新位置に反映するようにしているため、遊脚軌道の変更による影響は相対的に非常に小さい。
【００９４】
このように、本実施の形態では、図１３及び図１４に示すように、予測期間バッファの全範囲を用いた場合と比べ、殆ど遜色の無い精度で重心軌道を生成することができるため、安定化への悪影響のデメリットよりも１秒という低遅延で下肢の直観操作を可能とするメリットの方が非常に大きいといえる。
【００９５】
＜５．本実施の形態の利点＞
（１．操作者の両足荷重を用いて直観的な操作をすることができる）
本実施の形態では、操作者の右足加重及び左足加重の比に応じてロボット３の目標ＺＭＰを制御するようにしている。言い換えると、操作者の右足加重と左足加重の比を有する加重を、２足歩行ロボット３が生じさせた場合の目標ＺＭＰを算出するようにしている。そのため、図１６に示すように、操作者が自己の右足及び左足の加重量によって、ロボット３の右足及び左足の加重量を直観的に操作することができる。例えば、図１６に示すように、足元のペダルを踏むと蓋が開く仕組みになっているごみ箱（ペダルペール）を、任意の力でロボット３に踏ませる等の多彩な操作をすることができる。
【００９６】
また、本実施の形態では、操作者の右足加重及び左足加重の比と、右足及び左足の姿勢に応じてロボット３の腰姿勢を制御するようにしている。そのため、図１７に示すように、操作者が、自己の右足及び左足の加重量及び足姿勢によって、ロボット３の上体の向きを直観的に操作することができる。
【００９７】
（２．シンプルなマスタ装置構成とすることができる）
本実施の形態では、操作者の両足の加重と、遊脚の着床時の両足間の相対位置姿勢を取得できれば、ロボット３を制御することが可能である。よって、例えば特許文献１のようにロボット３の体性感覚を操作者にフィードバックする構成も必要ない。また、操作者の両足の加重と、遊脚の着床時の両足間の相対位置姿勢を計測することができれば、モーションキャプチャ装置やフォースプレートも必ずしも必要ではない。そのため、簡易な構成とすることができる。
【００９８】
（３．遊脚軌道及び着床位置の柔軟な変更が容易）
本実施の形態では、遊脚の着床のタイミングで遊脚軌道を決定するようにしている。そのため、モーションキャプチャ結果を随時遊脚軌道に反映する制御と比較して、簡便にロボット３の着床位置を制御することができる。また、モーションキャプチャ結果を随時遊脚軌道に反映する制御と比較して、自己干渉回避処理、及び、床面認識結果による着床位置の変更が非常に容易となる。例えば、モーションキャプチャ結果を随時遊脚軌道に反映する制御の場合、ロボット３が自己干渉してしまうような遊脚軌道であっても、操作者の遊脚軌道を忠実に再現するため、ロボット３が自己干渉してしまう場合がある。それに対して、本実施の形態では、操作者の操作として着床位置のみを反映しているため、自己干渉を回避した遊脚軌道を任意に導出することができる。また、例えば、モーションキャプチャ結果を随時遊脚軌道に反映する制御の場合、遊脚が着床するときに着床位置に障害物があることを認識できたとしても、既に操作者の遊脚軌道を忠実に反映した遊脚軌道でロボット３の遊脚が動いているため、着床時に急激な遊脚軌道修正をできず障害物を回避することができない場合がある。それに対して、本実施の形態では、図１８に示すように、例えば、ロボット３に周辺の環境を認識することができるセンサ等（例えばカメラ等）を搭載し、操作者の遊脚の着床に応じたロボット３の着床位置に障害物があると認識した場合は、遊脚軌道を一括して修正することができるため、障害物の回避が容易となる。
【００９９】
（４．操作レスポンスが早い）
本実施の形態では、操作者の右足加重及び左足加重の比に応じてロボット３の目標ＺＭＰを制御するようにしている。そのため、操作者が片足を上げるときには支持脚上に完全に目標ＺＭＰが移行していることになる。よって、わざわざ目標ＺＭＰを支持脚上に移行させる遷移期間を設ける必要が無くなり、システムのレスポンスを向上することができる。
【０１００】
また、本実施の形態では、予測期間バッファの更新位置を中間的な位置とすることで動的安定性を考慮しつつ１秒程度の低遅延で歩行操作を可能としている。そのため、この点によっても、未来の目標値の更新が効果的に行われることによるレスポンスの向上が図られている。
【０１０１】
（５．操作者が座りながらでも操作が可能）
本実施の形態では、Ｓ１３の遊脚軌道生成処理で説明したように、操作者の足の位置姿勢として、遊脚の着床時の支持脚と遊脚の相対位置姿勢に着目している。そのため、遊脚を上げている状態（単脚支持状態）や、両脚支持状態においては、操作者が支持している足を床でスライドさせてもロボット３の動作に何ら影響を与えない。
【０１０２】
これを利用して、図１９に示すように、操作者は座ったままで、遊脚を上げたときに支持脚を後方にスライドさせ、遊脚を前に振り出すといった動作を繰り返すことでロボット３を前進させ続けることができる。同様に、腰姿勢を変更する場合、及び、旋回動作をする場合も座ったまま支持脚をスライドさせることで操作することが可能である。
【０１０３】
これにより、操作に必要とするエリアが狭くてもロボット３を無限に広いエリアで動作させることができる。また、細かな操作をする際には、再度立ち上がり歩幅を普段の歩行の間隔で調整して操作することもできる。
【０１０４】
＜６．本実施の形態の変形例＞
（１．予測期間バッファ残部の目標ＺＭＰの修正）
上述の説明では、図１２にも示すように、予測期間バッファにおいて、目標ＺＭＰ軌道の更新位置から末端までのデータは、更新位置と同様の目標ＺＭＰで埋めて使用するようにしていた。しかしながら、以下のようにして実施するようにしてもよい。
（Ａ）更新位置以降の目標ＺＭＰを両足の中心部に徐々に戻すように補正する。
（Ｂ）これまでの目標ＺＭＰの軌跡からその先の軌跡を推定し補正する。
【０１０５】
（２．随時、操作者の遊脚動作を反映する）
上述の説明では、操作者の遊脚の着床時に遊脚軌道を算出し、予測期間バッファを一斉に書き換えるようにしていた。これに対し、随時、操作者の遊脚位置姿勢をロボット３の予測期間バッファの更新位置に反映するようにしてもよい。この場合、多項式補間により遊脚軌道を生成するのではなく、操作者の遊脚の動き通りに、ロボット３の遊脚が動くことになる。遊脚時間長の制約がなくなり、予測期間バッファの先頭に近い位置の遊脚軌道が変更されなくなる点で安定性において若干有効である。しかしながら、操作者の足位置姿勢の計測結果に高周波ノイズが混入するととたんにロボット３の関節の駆動速度が過大となってしまう。また、随時、ロボット３の自己干渉や関節角度リミットを考慮しなければならいないなど、非常に制約も大きくなってしまう。したがって、現状の計算機の能力を考慮しても、上述したように遊脚軌道をまとめて生成する手法の方が、使い勝手が良く、上述したように認識結果に応じた動作をする場合にも有効である。
【０１０６】
なお、本発明は上述の実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【０１０７】
例えば、上述の実施の形態では、２足歩行ロボットを操作対象とした場合について例示したが、これに限られない。例えば、ＣＧキャラクタを操作対象としてもよい。
【０１０８】
また、上記の実施の形態では、操作者の右足加重と左足加重の比を有する加重を、２足歩行ロボット３が生じさせた場合の目標ＺＭＰを算出するようにしているが、操作者の右足加重と左足加重の比と、２足歩行ロボット３の右足加重と左足加重の比とが完全に一致する場合に限定されない。
【０１０９】
また、上記の実施の形態では、計測用ＰＣ６が操作情報をロボット３に送信し、ロボットＣＰＵ８が受信した操作情報に基づいて目標値を算出するようにしているが、これに限られない。例えば、計測用ＰＣ６が操作情報から目標値を算出してロボット３に送信し、ロボットＣＰＵ８が受信した目標値を予測期間バッファに格納するようにしてもよい。
【０１１０】
また、上記の実施の形態では、便宜上、処理の１サイクル（Ｓ２からＳ１７まで）において、両脚支持状態の判定（Ｓ３）及び離床の判定（Ｓ４、Ｓ６）を行うように説明した。しかし、ロボット３による操作情報の受信単位を１サイクルとして、両脚支持状態の判定（Ｓ３）において１つ前のサイクルにおける操作状態を判定し、離床の判定（Ｓ４、Ｓ６）において現在のサイクルで受信した操作情報による操作状態の判定をするように処理することも当然に可能である。
【符号の説明】
【０１１１】
１  マスタスレーブ制御システム
２  マスタ装置
３  ロボット（スレーブ装置）
４  フォースプレート
５  モーションキャプチャ装置
６  計測用ＰＣ
７  マーカー
８  ロボットＣＰＵ
【図１】
0005962679.tif 000005
【図２】
0005962679.tif 000006
【図３】
0005962679.tif 000007
【図４】
0005962679.tif 000008
【図５】
0005962679.tif 000009
【図６】
0005962679.tif 000010
【図７】
0005962679.tif 000011
【図８】
0005962679.tif 000012
【図９】
0005962679.tif 000013
【図１０】
0005962679.tif 000014
【図１１】
0005962679.tif 000015
【図１２】
0005962679.tif 000016
【図１３】
0005962679.tif 000017
【図１４】
0005962679.tif 000018
【図１５】
0005962679.tif 000019
【図１６】
0005962679.tif 000020
【図１７】
0005962679.tif 000021
【図１８】
0005962679.tif 000022
【図１９】
0005962679.tif 000023