(57)【要約】      （修正有）【課題】歩行ロボット及びその制御方法に係り、スイング足の着地時に、滑りを防止する。【解決手段】複数の脚の動作状態によって、複数の脚に設けられた複数の関節部別に、ロボットが歩行するのに必要な目標角度軌跡を生成するステップＳ８１０と、複数の脚に設けられた複数の関節部別に、目標角度軌跡に追従する第１トルクを計算するステップＳ８２０と、複数の脚のうちのスイング脚に連結されたスイング足に滑りが発生したかを判断するステップＳ８３０と、判断結果によって、スイング足から感知された速度に基づいて、スイング脚の少なくとも一つの関節部に提供する最終トルクを計算するステップＳ８５０と、計算された最終トルクを前記スイング脚の各関節部に提供するステップＳ８６０と、を含む。スイング足の着地時に滑りが発生したか否かを感知し、感知結果によって、スイング脚の関節に加えられるトルクを制限することで、安定した歩行を実現できる。【選択図】図９
2013119158.tif 000002
【特許請求の範囲】
【請求項１】
複数の脚の動作状態によって、前記複数の脚に設けられた複数の関節部別に、前記ロボットが歩行するのに必要な目標角度軌跡を生成するステップと、
前記複数の脚に設けられた複数の関節部別に、前記目標角度軌跡に追従する第１トルクを計算するステップと、
前記複数の脚のうちのスイング脚に連結されたスイング足に滑りが発生したかを判断するステップと、
前記判断結果によって、前記スイング足から感知された速度に基づいて、前記スイング脚の少なくとも一つの関節部に提供する最終トルクを計算するステップと、
前記計算された最終トルクを前記スイング脚の各関節部に提供するステップと、を含む歩行ロボットの制御方法。
【請求項２】
前記スイング足に滑りが発生しなかった場合、前記計算された第１トルクを前記複数の脚に設けられた複数の関節部にそれぞれ提供するステップをさらに含む、請求項１に記載の歩行ロボットの制御方法。
【請求項３】
前記第１トルクを計算するステップは、
前記複数の脚に設けられた複数の関節部別に、ロール方向のトルク、ピッチ方向のトルク、及びヨー方向のトルクのうち少なくとも一つを計算するステップを含む、請求項１または２に記載の歩行ロボットの制御方法。
【請求項４】
前記スイング足に滑りが発生したかを判断するステップは、
前記スイング足から感知された荷重と事前に設定された基準荷重とを比較し、前記スイング足から感知された速度と事前に設定された基準速度とを比較するステップと、
前記比較結果によって、前記スイング足が滑った方向を判断するステップと、を含む、請求項１乃至３のいずれか一項に記載の歩行ロボットの制御方法。
【請求項５】
前記スイング足が滑った方向を判断するステップは、
前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の荷重が、Ｘ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の速度が、Ｘ軸に対する基準速度よりも大きい場合、前記スイング足がピッチ方向に滑ったものと判断するステップを含む、請求項４に記載の歩行ロボットの制御方法。
【請求項６】
前記最終トルクを計算するステップは、
前記スイング足がピッチ方向に滑った場合、前記スイング脚の各関節部に提供するピッチ方向の最終トルクを計算するステップを含む、請求項１乃至５のいずれか一項に記載の歩行ロボットの制御方法。
【請求項７】
前記スイング脚の各関節部に提供するピッチ方向の最終トルク（Ｆｉｎａｌ_τｐｉｔｃｈ）は、前記計算された第１トルクから獲得されたピッチ方向のトルク（τｐｉｔｃｈ）に、前記スイング足から感知されたＸ軸方向の速度（Ｖｅｌｘ）に対する前記Ｘ軸に対する基準速度（Ｖｘ）の比率（Ｖｘ／Ｖｅｌｘ）を乗じた値である、請求項６に記載の歩行ロボットの制御方法。
【請求項８】
前記スイング足が滑った方向を判断するステップは、
前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の荷重が、Ｙ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の速度が、Ｙ軸に対する基準速度よりも大きい場合、前記スイング足がロール方向に滑ったものと判断するステップを含む、請求項４に記載の歩行ロボットの制御方法。
【請求項９】
前記最終トルクを計算するステップは、
前記スイング足がロール方向に滑った場合、前記スイング脚の各関節部に提供するロール方向の最終トルクを計算するステップを含む、請求項８に記載の歩行ロボットの制御方法。
【請求項１０】
前記スイング脚の各関節部に提供するロール方向の最終トルク（Ｆｉｎａｌ_τｒｏｌｌ）は、
前記計算された第１トルクから獲得されたロール方向のトルク（τｒｏｌｌ）に、前記スイング足から感知されたＹ軸方向の速度（Ｖｅｌｙ）に対する前記Ｙ軸に対する基準速度（Ｖｙ）の比率（Ｖｙ／Ｖｅｌｙ）を乗じた値である、請求項９に記載の歩行ロボットの制御方法。
【請求項１１】
複数の脚の動作状態によって、前記複数の脚に設けられた複数の関節部別に、前記ロボットが歩行するのに必要な目標角度軌跡を生成する目標角度軌跡生成部と、
前記複数の脚に設けられた複数の関節部別に、前記目標角度軌跡に追従する第１トルクを計算するトルク計算部と、
前記複数の脚のうちのスイング脚に連結されたスイング足に滑りが発生したかを判断する歩行状態判断部と、
前記トルク計算部は、前記判断結果によって、前記スイング足から感知された速度に基づいて、前記スイング脚の少なくとも一つの関節部に提供する最終トルクを計算し、
前記計算された最終トルクを前記スイング脚の各関節部に提供する制御部と、を含む、歩行ロボット。
【請求項１２】
前記制御部は、
前記スイング足に滑りが発生しなかった場合、前記計算された第１トルクを前記複数の脚に設けられた複数の関節部にそれぞれ提供する制御部をさらに含む、請求項１１に記載の歩行ロボット。
【請求項１３】
前記トルク計算部は、
前記第１トルクを計算するとき、前記複数の脚に設けられた複数の関節部別に、ロール方向のトルク、ピッチ方向のトルク、及びヨー方向のトルクのうち少なくとも一つを計算する、請求項１１または１２に記載の歩行ロボット。
【請求項１４】
前記歩行状態判断部は、
前記スイング足から感知された荷重と事前に設定された基準荷重とを比較し、前記スイング足から感知された速度と事前に設定された基準速度とを比較して、前記スイング足が滑った方向を判断する、請求項１１乃至１３のいずれか一項に記載の歩行ロボット。
【請求項１５】
前記歩行状態判断部は、
前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の荷重が、Ｘ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の速度が、Ｘ軸に対する基準速度よりも大きい場合、前記スイング足がピッチ方向に滑ったものと判断する、請求項１４に記載の歩行ロボット。
【請求項１６】
前記トルク計算部は、
前記スイング足がピッチ方向に滑った場合、前記スイング脚の各関節部に提供するピッチ方向の最終トルクを計算する、請求項１１乃至１５のいずれか一項に記載の歩行ロボット。
【請求項１７】
前記スイング脚の各関節部に提供するピッチ方向の最終トルク（Ｆｉｎａｌ_τｐｉｔｃｈ）は、前記計算された第１トルクから獲得されたピッチ方向のトルク（τｐｉｔｃｈ）に、前記スイング足から感知されたＸ軸方向の速度（Ｖｅｌｘ）に対する前記Ｘ軸に対する基準速度（Ｖｘ）の比率（Ｖｘ／Ｖｅｌｘ）を乗じた値である、請求項１６に記載の歩行ロボット。
【請求項１８】
前記歩行状態判断部は、
前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の荷重が、Ｙ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の速度が、Ｙ軸に対する基準速度よりも大きい場合、前記スイング足がロール方向に滑ったものと判断する、請求項１４に記載の歩行ロボット。
【請求項１９】
前記トルク計算部は、
前記スイング足がロール方向に滑った場合、前記スイング脚の各関節部に提供するロール方向の最終トルクを計算する、請求項１８に記載の歩行ロボット。
【請求項２０】
前記スイング脚の各関節部に提供するロール方向の最終トルク（Ｆｉｎａｌ_τｒｏｌｌ）は、
前記計算された第１トルクから獲得されたロール方向のトルク（τｒｏｌｌ）に、前記スイング足から感知されたＹ軸方向の速度（Ｖｅｌｙ）に対する前記Ｙ軸に対する基準速度（Ｖｙ）の比率（Ｖｙ／Ｖｅｌｙ）を乗じた値である、請求項１９に記載の歩行ロボット。
【請求項２１】
前記基準荷重と前記基準速度を格納するメモリをさらに含む、請求項１４に記載の歩行ロボット。
【請求項２２】
ロボットの複数の脚のうちの前記ロボットのスイング脚に設けられた第１関節部に対する目標角度軌跡を、前記スイング脚の姿勢を示す動作状態によって生成するステップと、
前記第１関節部に対して、前記目標角度軌跡に追従する第１トルクを計算するステップと、
前記スイング脚に連結されたスイング足に滑りが発生したかを判断するステップと、
前記スイング足に滑りが発生したものと判断された場合、前記スイング足から感知された速度に基づいた第２トルクを算出して、前記スイング足の前記第１関節部に適用するステップと、を含み、
前記第２トルクは、前記第１トルクより小さい、歩行ロボットの制御方法。
【請求項２３】
前記スイング足に滑りが発生したかを判断するステップは、
前記スイング足に設けられた速度センサを用いて前記スイング足の速度を感知するステップと、
前記スイング足に設けられた力センサを用いて前記スイング足の負荷を感知するステップと、を含む、請求項２２に記載の歩行ロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、歩行ロボット及びその制御方法に係り、より詳細には、スイング足の着地時に、滑りを防止できる歩行ロボット及びその制御方法に関する。
【背景技術】
【０００２】
人間と類似した関節体系を有し、人間の作業及び生活空間で人間と共存しながら歩行するロボットの研究開発が活発に進行している。歩行ロボットは、二足又は三足以上の複数の脚を有する多足歩行ロボットで構成され、安定した歩行のために、各関節に位置した電気モータ、油圧モータなどのアクチュエータを駆動しなければならない。アクチュエータの駆動方式は、各関節の指令（ｃｏｍｍａｎｄ）角度、すなわち、指令位置を与え、それを追従制御する位置基盤のＺＭＰ（Ｚｅｒｏ  Ｍｏｍｅｎｔ  Ｐｏｉｎｔ）制御方式と、各関節の指令トルクを与え、それを追従制御するトルク基盤のＦＳＭ（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）制御方式とを挙げることができる。
【０００３】
ＺＭＰ制御方式は、ＺＭＰ拘束条件、すなわち、ＺＭＰが、支持する脚がなす支持多角形内の安全領域（片足で支持している場合にはその足の領域、両足で支持している場合には両足の領域を含む凸多角形（ｃｏｎｖｅｘ  ｐｏｌｙｇｏｎ）内で安全を考慮して小さく設定した領域を意味する）に存在しなければならないという条件を満足するように、歩行方向、歩行の幅、歩行速度などを予め設定し、この設定に対応する各脚の歩行パターンを生成し、その歩行パターンによって各脚の歩行軌跡を計算する。また、計算された歩行軌跡の逆運動学（Ｉｎｖｅｒｓｅ  Ｋｉｎｅｍａｔｉｃｓ）計算を通じて各脚の関節の角度を計算し、各関節の現在の角度及び目標角度に基づいて各関節の目標制御値を計算する。また、毎制御時間ごとにそれぞれの脚が計算された歩行軌跡を追従するようにするサーボ制御（ｓｅｒｖｏ  ｃｏｎｔｒｏｌ）を通じて具現される。すなわち、ロボットの歩行時に、各脚の位置が歩行パターンによる歩行軌跡を正確に追従するかを検出し、各脚が歩行軌跡から外れると、モータのトルクを調節し、各脚が歩行軌跡を正確に追従するように制御して歩行する方式である。
【０００４】
しかし、ＺＭＰ制御方式は、位置基盤の制御方法であるので正確な位置制御が可能な反面、ＺＭＰを制御するために各関節の正確な角度制御を行わなければならないため、高いサーボゲインを必要とする。これによって、高い電流を必要とするため、エネルギー効率が低く、関節の剛性が大きいため、周囲環境に大きな衝撃を与えることがある。また、各関節の角度を計算するためには、運動学的特異点（Ｋｉｎｅｍａｔｉｃ  Ｓｉｎｇｕｌａｒｉｔｙ）を避けなければならないので、歩行中に膝を常に曲げた姿勢を維持することになり、人間とは異なる不自然な歩行をするようになる。
【０００５】
一方、ＦＳＭ制御方式は、毎制御時間ごとに位置を追従して歩行する方式ではなく、ロボットの各動作状態（Ｓｔａｔｅ）を予め定義しておき（Ｆｉｎｉｔｅ  Ｓｔａｔｅ）、歩行時の各動作状態を参照して各関節の目標トルクを計算し、これに追従するように制御して歩行する方式で、歩行中に各関節のトルクを制御するので、低いサーボゲインが可能となり、エネルギー効率が高く、剛性が低いので、周囲環境に対して安全である。また、運動学的特異点を避ける必要がないので、人間のように膝を伸ばした状態の自然な歩行が可能である。
【０００６】
しかし、ＦＳＭ制御方式は、予め定義された動作状態に依存してロボットの歩行を制御するため、歩行制御が不適切になり、ロボットがバランスを失うことがある。したがって、歩行動作と関係なく、ロボットのバランスを取るための別途のバランシング（Ｂａｌａｎｃｉｎｇ）動作をすることになる。ロボットのバランシング動作のために、安定したバランスを具現できる指令トルクを求めなければならないが、指令トルクを求めるためには、非常に複雑な動的方程式（Ｄｙｎａｍｉｃ  Ｅｑｕａｔｉｏｎ）を解かなければならないため、現在まで６自由度の関節構造の脚を有するロボットにおいて具現できなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、スイング足の着地時に滑りが発生しても、安定した歩行が可能な歩行ロボット及びその制御方法を提供することである。
【０００８】
しかし、本発明が解決しようとする課題は、以上で言及した課題に制限されず、言及していない他の課題は、下記の記載から当業者に明確に理解されるだろう。
【課題を解決するための手段】
【０００９】
上記課題を達成するために、本発明の一実施例に係る歩行ロボットの制御方法は、複数の脚の動作状態によって、前記複数の脚に設けられた複数の関節部別に、前記ロボットが歩行するのに必要な目標角度軌跡を生成するステップと、前記複数の脚に設けられた複数の関節部別に、前記目標角度軌跡に追従する第１トルクを計算するステップと、前記複数の脚のうちのスイング脚に連結されたスイング足に滑りが発生したかを判断するステップと、前記判断結果によって、前記スイング足から感知された速度に基づいて、前記スイング脚の少なくとも一つの関節部に提供する最終トルクを計算するステップと、前記計算された最終トルクを前記スイング脚の各関節部に提供するステップと、を含む。
【００１０】
前記スイング足に滑りが発生しなかった場合、前記計算された第１トルクを前記複数の脚に設けられた複数の関節部にそれぞれ提供するステップをさらに含む。
【００１１】
前記第１トルクを計算するステップは、前記複数の脚に設けられた複数の関節部別に、ロール方向のトルク、ピッチ方向のトルク、及びヨー方向のトルクのうち少なくとも一つを計算するステップを含む。
【００１２】
前記スイング足に滑りが発生したかを判断するステップは、前記スイング足から感知された荷重と事前に設定された基準荷重とを比較し、前記スイング足から感知された速度と事前に設定された基準速度とを比較するステップと、前記比較結果によって、前記スイング足が滑った方向を判断するステップと、を含む。
【００１３】
前記スイング足が滑った方向を判断するステップは、前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の荷重が、Ｘ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の速度が、Ｘ軸に対する基準速度よりも大きい場合、前記スイング足がピッチ方向に滑ったものと判断するステップを含む。
【００１４】
前記最終トルクを計算するステップは、前記スイング足がピッチ方向に滑った場合、前記スイング脚の各関節部に提供するピッチ方向の最終トルクを計算するステップを含む。
【００１５】
前記スイング脚の各関節部に提供するピッチ方向の最終トルク（Ｆｉｎａｌ_τｐｉｔｃｈ）は、前記計算された第１トルクから獲得されたピッチ方向のトルク（τｐｉｔｃｈ）に、前記スイング足から感知されたＸ軸方向の速度（Ｖｅｌｘ）に対する前記Ｘ軸に対する基準速度（Ｖｘ）の比率（Ｖｘ／Ｖｅｌｘ）を乗じた値であることを特徴とする。
【００１６】
前記スイング足が滑った方向を判断するステップは、前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の荷重が、Ｙ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の速度が、Ｙ軸に対する基準速度よりも大きい場合、前記スイング足がロール方向に滑ったものと判断するステップを含む。
【００１７】
前記最終トルクを計算するステップは、前記スイング足がロール方向に滑った場合、前記スイング脚の各関節部に提供するロール方向の最終トルクを計算するステップを含む。
【００１８】
前記計算された第１トルクから獲得されたロール方向の最終トルク（Ｆｉｎａｌ_τｒｏｌｌ）は、前記スイング脚の各関節部に提供するロール方向のトルク（τｒｏｌｌ）に、前記スイング足から感知されたＹ軸方向の速度（Ｖｅｌｙ）に対する前記Ｙ軸に対する基準速度（Ｖｙ）の比率（Ｖｙ／Ｖｅｌｙ）を乗じた値であることを特徴とする。
【００１９】
上記課題を達成するために、本発明の一実施例に係る歩行ロボットは、複数の脚の動作状態によって、前記複数の脚に設けられた複数の関節部別に、前記ロボットが歩行するのに必要な目標角度軌跡を生成する目標角度軌跡生成部と、前記複数の脚に設けられた複数の関節部別に、前記目標角度軌跡に追従する第１トルクを計算するトルク計算部と、前記複数の脚のうちのスイング脚に連結されたスイング足に滑りが発生したかを判断する歩行状態判断部と、前記トルク計算部は、前記判断結果によって、前記スイング足から感知された速度に基づいて、前記スイング脚の少なくとも一つの関節部に提供する最終トルクを計算し、前記計算された最終トルクを前記スイング脚の各関節部に提供する制御部と、を含む。
【００２０】
前記制御部は、前記スイング足に滑りが発生しなかった場合、前記計算された第１トルクを前記複数の脚に設けられた複数の関節部にそれぞれ提供する制御部をさらに含む。
【００２１】
前記トルク計算部は、前記第１トルクを計算するとき、前記複数の脚に設けられた複数の関節部別に、ロール方向のトルク、ピッチ方向のトルク、及びヨー方向のトルクのうち少なくとも一つを計算する。
【００２２】
前記歩行状態判断部は、前記スイング足から感知された荷重と事前に設定された基準荷重とを比較し、前記スイング足から感知された速度と事前に設定された基準速度とを比較して、前記スイング足が滑った方向を判断する。
【００２３】
前記歩行状態判断部は、前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の荷重が、Ｘ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＸ軸方向の速度が、Ｘ軸に対する基準速度よりも大きい場合、前記スイング足がピッチ方向に滑ったものと判断する。
【００２４】
前記トルク計算部は、前記スイング足がピッチ方向に滑った場合、前記スイング脚の各関節部に提供するピッチ方向の最終トルクを計算する。
【００２５】
前記スイング脚の各関節部に提供するピッチ方向の最終トルク（Ｆｉｎａｌ_τｐｉｔｃｈ）は、前記計算された第１トルクから獲得されたピッチ方向のトルク（τｐｉｔｃｈ）に、前記スイング足から感知されたＸ軸方向の速度（Ｖｅｌｘ）に対する前記Ｘ軸に対する基準速度（Ｖｘ）の比率（Ｖｘ／Ｖｅｌｘ）を乗じた値であることを特徴とする。
【００２６】
前記歩行状態判断部は、前記スイング足から感知されたＺ軸方向の荷重が、Ｚ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の荷重が、Ｙ軸に対する基準荷重よりも小さく、前記スイング足から感知されたＹ軸方向の速度が、Ｙ軸に対する基準速度よりも大きい場合、前記スイング足がロール方向に滑ったものと判断する。
【００２７】
前記トルク計算部は、前記スイング足がロール方向に滑った場合、前記スイング脚の各関節部に提供するロール方向の最終トルクを計算する。
【００２８】
前記計算された第１トルクから獲得されたロール方向の最終トルク（Ｆｉｎａｌ_τｒｏｌｌ）は、前記スイング脚の各関節部に提供するロール方向のトルク（τｒｏｌｌ）に、前記スイング足から感知されたＹ軸方向の速度（Ｖｅｌｙ）に対する前記Ｙ軸に対する基準速度（Ｖｙ）の比率（Ｖｙ／Ｖｅｌｙ）を乗じた値であることを特徴とする。
【発明の効果】
【００２９】
本発明による歩行ロボット及びその制御方法によれば、次のような効果がある。
【００３０】
スイング足の着地時に滑りが発生したか否かを感知し、感知結果によって、スイング脚の関節に加えられるトルクを制限することによって、歩行ロボットの安定した歩行を実現できる。
【００３１】
また、本発明は、ＦＳＭ制御及びトルクサーボ制御基盤の歩行を行うことによって、低いサーボゲインで歩行が可能で、エネルギー消費を低減することができる。
【００３２】
また、低いサーボゲインは、各関節の低剛性を持たせるので、周囲環境との衝突時の衝撃を減少させることができる。
【００３３】
また、膝伸ばし歩行が可能な人間型歩行を具現し、ロボットの人間親和性を向上させることができる。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施例に係る歩行ロボットの外観構成図である。
【図２】図１に示された歩行ロボットの主要関節構造を示す図である。
【図３】本発明の一実施例に係る歩行ロボットの制御ブロック図である。
【図４】股関節部の回転角度測定を説明するための図である。
【図５】膝関節部の回転角度測定を説明するための図である。
【図６】足首関節部の回転角度測定を説明するための図である。
【図７】ＦＳＭ基盤の歩行時、歩行ロボットの動作状態及び各動作状態の制御動作を示す図である。
【図８】本発明の一実施例に係る歩行ロボットの制御概念を説明するための図である。
【図９】本発明の一実施例に係る歩行ロボットの制御方法を示すフローチャートである。
【発明を実施するための形態】
【００３５】
本発明の利点及び特徴、そして、それらを達成する方法は、添付の図面と共に詳細に後述している各実施例を参照すると明確になるだろう。しかし、本発明は、以下で開示する各実施例に限定されるものではなく、互いに異なる多様な形態で具現可能であり、ただし、本実施例は、本発明の開示が完全なようにし、本発明の属する技術の分野における通常の知識を有する者に発明の範疇を完全に知らせるために提供されるもので、本発明は、請求項の範疇によってのみ定義される。
【００３６】
以下、添付の図面を参照して、本発明の実施例による歩行ロボット及びその制御方法について説明する。図面において同一の図面符号は、同一の構成要素を示す。
【００３７】
図１は、本発明の一実施例に係る歩行ロボットの外観構成図である。図１に示すように、歩行ロボット１００は、上体と下体とからなる。上体は、頭１１０、首１２０、胴体１３０、腕１４０Ｒ、１４０Ｌ、手１５０Ｒ、１５０Ｌからなり、下体は、複数の脚１６０Ｒ、１６０Ｌ及び足１７０Ｒ、１７０Ｌからなる。
【００３８】
歩行ロボット１００の上体は、頭１１０と、頭１１０の下部に首１２０を介して連結された胴体１３０と、胴体１３０の上部両側に連結された二つの腕１４０Ｒ、１４０Ｌと、この二つの腕１４０Ｒ、１４０Ｌの末端にそれぞれ連結された手１５０Ｒ、１５０Ｌとからなる。
【００３９】
歩行ロボット１００の下体は、上体の胴体１３０の下部両側に連結された二つの脚１６０Ｒ、１６０Ｌと、二つの脚１６０Ｒ、１６０Ｌの末端にそれぞれ連結された足１７０Ｒ、１７０Ｌとからなる。
【００４０】
ここで、頭１１０、二つの腕１４０Ｌ、１４０Ｒ、二つの手１５０Ｌ、１５０Ｒ、二つの脚１６０Ｌ、１６０Ｒ、二つの足１７０Ｌ、１７０Ｒは、それぞれ関節を介して一定水準の自由度を有する。
【００４１】
図１に示す参照符号における“Ｒ”は、歩行ロボット１００の右側（Ｒｉｇｈｔ）を示し、“Ｌ”は、歩行ロボット１００の左側（Ｌｅｆｔ）を示す。そして、ＣＯＧ（Ｃｅｎｔｅｒ  Ｏｆ  Ｇｒａｖｉｔｙ）は、歩行ロボット１００の重心を示す。
【００４２】
図２は、図１に示された歩行ロボットの主要関節構造を示す図である。頭１１０には、周囲の映像を獲得するカメラ１１１と、使用者の音声を検出するマイクロホン１１２とが備えられる。頭１１０は、首１２０を介して胴体１３０と連結される。
【００４３】
首１２０は、複数の回転関節１２１、１２２、１２３を含む。具体的に、首関節部１２０は、ヨー方向（ｙａｗ、Ｚ軸回転）の回転関節１２１、ピッチ方向（ｐｉｔｃｈ、Ｙ軸回転）の回転関節１２２、及びロール方向（ｒｏｌｌ、Ｘ軸回転）の回転関節１２３を含み、３自由度を有する。ここで、首関節部１２０の回転関節１２１、１２２、１２３は、頭回転用モータ（図示せず）とそれぞれ連結される。
【００４４】
胴体１３０の両側には、二つの腕１４０Ｌ、１４０Ｒを連結する肩関節部１３１がそれぞれ設けられ、胸と腰との間には、胸が腰に対して回転できるようにヨー（Ｙａｗ）方向の回転関節部１３２が設けられている。
【００４５】
また、胴体１３０には、傾き感知部２２１が設置される。傾き感知部は、例えば、ポーズセンサ（ｐｏｓｅ  ｓｅｎｓｏｒ）を含むことができる。傾き感知部２２１は、鉛直軸に対する上体と二つの脚１６０Ｌ、１６０Ｒの傾きである傾斜角度及びその角速度を検出し、姿勢情報を発生させる。傾き感知部２２１は、胴体１３０だけでなく、二つの脚１６０Ｌ、１６０Ｒに設置してもよい。
【００４６】
歩行ロボット１００の二つの腕１４０Ｌ、１４０Ｒは、それぞれ上膊リンク１４１、下膊リンク１４２、肘関節部１４３、手首関節部１４４を含む。
【００４７】
それぞれの上膊リンク１４１は、肩関節部１３１を介して胴体１３０と連結され、肘関節部１４３を介して下膊リンク１４２と連結される。それぞれの下膊リンク１４２は、手首関節部１４４を介して手１５０Ｒ、１５０Ｌと連結される。
【００４８】
肘関節部１４３は、ピッチ方向の回転関節１４３ａと、ヨー方向の回転関節１４３ｂとを含み、２自由度を有する。
【００４９】
手首関節部１４４は、ピッチ方向の回転関節１４４ａと、ロール方向の回転関節１４４ｂとを含み、２自由度を有する。
【００５０】
手１５０Ｒ、１５０Ｌには、５個の指１５１が設けられ、各指１５１には、モータにより駆動される多数の関節（図示せず）が設置され得る。このような指１５１は、腕１４０Ｒ、１４０Ｌの動きに連動し、物を把持したり、特定方向を指すような多様な動作を実行する。手１５０Ｒ、１５０Ｌは、５個より多い、または少ない指を含むことができる。指の数は、特定のアプリケーション及び／または処理できる客体の特性に対して、ロボットに要求される機能によって変わることができる。
【００５１】
歩行ロボット１００の二つの脚１６０Ｒ、１６０Ｌは、それぞれ大腿リンク１６１、下腿リンク１６２、股関節部１６３、膝関節部１６４、足首関節部１６５、二つの足１７０Ｌ、１７０Ｒを含む。
【００５２】
大腿リンク１６１は、股関節部１６３を介して胴体１３０と連結され、膝関節部１６４を介して下腿リンク１６２と連結される。下腿リンク１６２は、足首関節部１６５を介して足１７０Ｌ、１７０Ｒと連結される。
【００５３】
股関節部１６３は、ヨー方向（ｙａｗ、Ｚ軸を基準に回転）の回転関節（ヒップヨージョイント）１６３ａと、ピッチ方向（ｐｉｔｃｈ、Ｙ軸を基準に回転）の回転関節１６３ｂと、ロール方向（ｒｏｌｌ、Ｘ軸を基準に回転）の回転関節（ヒップロールジョイント）１６３ｃとを含み、３自由度を有する。
【００５４】
膝関節部１６４は、ピッチ方向の回転関節１６４ａを含み、１自由度を有する。
【００５５】
足首関節部１６５は、ピッチ方向の回転関節１６５ａと、ロール方向の回転関節１６５ｂとを含み、２自由度を有する。
【００５６】
このように、それぞれの脚１６０Ｌ、１６０Ｒには、３個の関節部、すなわち、股関節部１６３、膝関節部１６４及び足首関節部１６５に対して６個の回転関節が設けられるので、二つの脚１６０Ｌ、１６０Ｒ全体に対しては１２個の回転関節が備えられる。
【００５７】
一方、足首関節部１６５と足１７０Ｌ、１７０Ｒとの間には、多軸力／トルクセンサ（Ｍｕｌｔｉ−Ａｘｉｓ  Ｆｏｒｃｅ  ａｎｄ  Ｔｏｒｑｕｅ  Ｓｅｎｓｏｒ）２２２がそれぞれ設置される。力／トルクセンサ２２２は、足１７０Ｌ、１７０Ｒから伝達される力の３方向成分（Ｆｘ、Ｆｙ、Ｆｚ）とモーメントの３方向成分（Ｍｘ、Ｍｙ、Ｍｚ）を測定することによって、足１７０Ｌ、１７０Ｒが着地したか否か、及び足１７０Ｌ、１７０Ｒに加えられる荷重を検出する。ロボット１００の二つの足１７０Ｌ、１７０Ｒの速度を検出する速度感知部２２３は、ロボットの二つの足１７０Ｌ、１７０Ｒにそれぞれ提供されることができる。
【００５８】
また、図示されていないが、歩行ロボット１００の各関節にはモータなどのようなアクチュエータが備えられる。したがって、各関節は、モータの回転により適切に回転運動を行うことによって、多様な動作を具現することができる。
【００５９】
歩行ロボット１００の動作全般を制御する歩行制御部（図３の図面符号“２３０”参照）は、ロボット１００のバランスを維持しながら、安定的で且つ自然な歩行を行うことができる。これに関するより具体的な説明のために、図３を参照する。
【００６０】
図３は、本発明の一実施例に係る歩行ロボットの制御ブロック図である。図３に示されたように、歩行ロボット１００は、感知部２２０、歩行制御部２３０及びメモリ部２４０を含むことができる。
【００６１】
感知部２２０は、ロボットの歩行による変化を感知し、感知結果を歩行制御部２３０に提供する。具体的に、感知部２２０は、ロボット１００の上体の傾きを感知する傾き感知部２２１と、ロボット１００の二つの足１７０Ｌ、１７０Ｒに加えられる荷重を感知する力／トルク感知部２２２と、ロボット１００の二つの足１７０Ｌ、１７０Ｒの速度を感知する速度感知部２２３とを含むことができる。感知部２２０は、視覚的な感知のための一つ以上のカメラ、水中音波探知機（ｓｏｎａｒ）、赤外線、ＲＦＩＤ、またはレーザ（ｌａｓｅｒ）を含むことができ、感知部２２０は、映像処理のために物体のイメージまたは映像を獲得することができる。また、感知部２２０は、オーディオセンサを含むことができる。また、感知部は、ロボットの変化を測定するためのエンコーダ、加速度計、ジャイロスコープなどを含むことができる。
【００６２】
傾き感知部２２１は、胴体１３０に設置される。傾き感知部２２１は、鉛直線に対する上体の傾きであるピッチ、ロール、ヨーの３つの方向に対する回転角度及び回転角速度を感知する。このような傾き感知部２２１は、慣性を測定するＩＭＵ（Ｉｎｅｒｔｉａｌ  Ｍｅａｓｕｒｅｍｅｎｔ  ｕｎｉｔ）で具現可能である。
【００６３】
力／トルク感知部２２２は、多軸センサで、各脚１６０Ｌ、１６０Ｒと足１７０Ｒ、１７０Ｌとの間に設けられ、足１７０Ｌ、１７０Ｒに加えられる荷重を感知する。力／トルク感知部２２２は、足１７０Ｌ、１７０Ｒに伝達される力の３方向成分（Ｆｘ、Ｆｙ、Ｆｚ）及びモーメントの３方向成分（Ｍｘ、Ｍｙ、Ｍｚ）を感知して歩行制御部２３０に提供する。
【００６４】
速度感知部２２３は、二つの足１７０Ｌ、１７０Ｒの速度を感知して歩行制御部２３０に提供する。
【００６５】
上述したような感知部２２０は、股関節部１６３、膝関節部１６４及び足首関節部１６５の回転角度を感知することもできる。ここで、各関節部１６３、１６４、１６５の回転角度は、各関節部に設けられたモータ（図示せず）の回転数を通じて分かる。各モータ（図示せず）の回転数は、各モータに連結されたエンコーダ（Ｅｎｃｏｄｅｒ、図示せず）を通じて検出可能である。
【００６６】
各関節部１６３、１６４、１６５の回転角度を測定する方法は、図４乃至図６に示された通りである。図４、図５及び図６は、それぞれ、股関節部１６３、膝関節部１６４及び足首関節部１６５の回転角度を測定する方法を説明するための図で、ロボット１００の右側面を基準に示す図である。
【００６７】
図４を参照すると、股関節部１６３が鉛直軸を基準としてピッチ方向に回転した場合（すなわち、右脚１６０Ｒをボディーの後方に伸ばしたとき）に測定される回転角度は＋θであり、その反対方向に回転した場合（すなわち、右脚１６０Ｒをボディーの前方に伸ばしたとき）に測定される回転角度は−θであることが分かる。
【００６８】
図５を参照すると、膝関節部１６４は、鉛直軸を基準としてピッチ方向にのみ回転できることが分り（すなわち、右脚１６０Ｒが後方に回転する場合）、このときに測定される回転角度は＋θであることが分かる。
【００６９】
図６を参照すると、足首関節部１６５が鉛直軸を基準としてピッチ方向に回転した場合（すなわち、右足１７０Ｒを後方に伸ばしたとき）に測定される回転角度は＋θであり、その反対方向に回転した場合（すなわち、右足１７０Ｒを前方に曲げたとき）に測定される回転角度は−θであることが分かる。
【００７０】
再び図３を参照すると、歩行制御部２３０は、感知部２２０から提供された感知結果によって、ロボット１００の全般的な歩行状態を制御する。そのために、歩行制御部２３０は、歩行状態判断部２３１、目標角度軌跡生成部２３４、トルク計算部２３５及び制御部２３６を含むことができる。
【００７１】
歩行状態判断部２３１は、ロボット１００の各足１７０Ｒ又は１７０Ｌに加えられる荷重に基づいて、足１７０Ｒ又は１７０Ｌが着地したか否かを判断する。そして、荷重が感知された足と連結されている脚を、地面を支持している‘支持脚（ｓｔａｎｃｅ  ｌｅｇ）'と判断し、荷重が感知されなかった足と連結されている脚を、地面から一定の高さ以上に離れて曲がっている‘スイング脚（ｓｗｉｎｇ  ｌｅｇ）'と判断する。具体的に、感知部２２０の力／トルク感知部２２２がロボット１００の右足１７０Ｒから荷重を感知する場合、歩行状態判断部２３１は、右足１７０Ｒが地面に着地した状態であると判断する。そして、右足１７０Ｒと連結されている右脚１６０Ｒを支持脚と判断し、左脚１６０Ｌをスイング脚と判断する。仮に、感知部２２０の力／トルク感知部２２２がロボット１００の左足１７０Ｌから荷重を感知する場合、歩行制御部２３０は左足１７０Ｌが地面に着地した状態であると判断する。そして、左足１７０Ｌと連結された左脚１６０Ｌを支持脚と判断し、右脚１６０Ｒをスイング脚と判断する。
【００７２】
このような歩行状態判断部２３１は、ＦＳＭ（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）に基盤した二つの脚の動作状態に基づいて、ロボット１００の歩行を制御する。ここで、図７を参照して、二つの脚１６０Ｌ、１６０Ｒの動作状態についてより詳細に説明する。
【００７３】
図７は、ＦＳＭ基盤の歩行時、ロボットの動作状態及び各動作状態の制御動作を示す図である。図７において、トルク基盤のＦＳＭ制御方式は、ロボット１００の動作状態を予め定義された複数個の動作状態（例えば、Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６の６個の状態）に区分する。それぞれの動作状態Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６は、歩行時にロボット１００の片脚１６０Ｌ又は１６０Ｒが取るポーズを意味し、このようなロボット１００のポーズを適宜切り替えることによって、安定した歩行がなされるようにする。
【００７４】
また、このような動作状態Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６、及び動作状態の切り替えを通じて一つの歩行モーション（ｍｏｔｉｏｎ）を構成する。
【００７５】
第１の動作状態（ｆｌｉｇｈｔ）Ｓ１は、脚１６０Ｌ又は１６０Ｒをスイング（Ｓｗｉｎｇ）するポーズである。第２の動作状態（ｌｏａｄｉｎｇ）Ｓ２は、足１７０Ｌ又は１７０Ｒを地面に下ろすポーズである。第３の動作状態（ｈｅｅｌ  ｃｏｎｔａｃｔ）Ｓ３は、足１７０Ｌ又は１７０Ｒのかかと（ｈｅｅｌ）を地面に接触させるポーズである。第４の動作状態（ｈｅｅｌ  ａｎｄ  ｔｏｅ  ｃｏｎｔａｃｔ）Ｓ４は、足１７０Ｌ又は１７０Ｒのかかと（ｈｅｅｌ）とつま先（ｔｏｅ）とを同時に地面に接触させるポーズである。第５の動作状態（ｔｏｅ  ｃｏｎｔａｃｔ）Ｓ５は、足１７０Ｌ又は１７０Ｒのつま先（ｔｏｅ）を地面に接触させるポーズである。そして、第６の動作状態（ｕｎｌｏａｄｉｎｇ）Ｓ６は、足１７０Ｌ又は１７０Ｒを地面から離すポーズに該当する。
【００７６】
それぞれの動作状態から他の動作状態に切り替えるためには、その動作状態の切り替えのための制御動作（Ｃｏｎｔｒｏｌ  Ａｃｔｉｏｎ）が要求される。
【００７７】
第１の動作状態Ｓ１から第２の動作状態Ｓ２に切り替える場合（Ｓ１→Ｓ２）、足１７０Ｌ又は１７０Ｒのかかと（ｈｅｅｌ）が地面に着くようにする制御動作（ｈｅｅｌ  ｔｏｕｃｈｅｓ  ｇｒｏｕｎｄ）が要求される。
【００７８】
第２の動作状態Ｓ２から第３の動作状態Ｓ３に切り替える場合（Ｓ２→Ｓ３）、地面に着いた足１７０Ｌ又は１７０Ｒに連結された膝関節部１６４を曲げる制御動作（ｋｎｅｅ  ｂｅｎｄｓ）が要求される。
【００７９】
第３の動作状態Ｓ３から第４の動作状態Ｓ４に切り替える場合（Ｓ３→Ｓ４）、足１７０Ｌ又は１７０Ｒのつま先（ｔｏｅ）が地面に着くようにする制御動作（ｂａｌｌ  ｏｆ  ｆｏｏｔ  ｔｏｕｃｈｅｓ  ｇｒｏｕｎｄ）が要求される。
【００８０】
第４の動作状態Ｓ４から第５の動作状態Ｓ５に切り替える場合（Ｓ４→Ｓ５）、地面に着いた足１７０Ｌ又は１７０Ｒに連結された膝関節部１６４を伸ばす制御動作（ｋｎｅｅ  ｅｘｔｅｎｄｓ）が要求される。
【００８１】
第５の動作状態Ｓ５から第６の動作状態Ｓ６に切り替える場合（Ｓ５→Ｓ６）、地面に着いた足１７０Ｌ又は１７０Ｒに連結された膝関節部１６４を完全に伸ばす制御動作（ｋｎｅｅ  ｆｕｌｌｙ  ｅｘｔｅｎｄｅｄ）が要求される。
【００８２】
第６の動作状態Ｓ６から第１の動作状態Ｓ１に切り替える場合（Ｓ６→Ｓ１）、足１７０Ｌ又は１７０Ｒのつま先（ｔｏｅ）を地面から離す制御動作（ｂａｌｌ  ｏｆ  ｆｏｏｔ  ｌｅａｖｅｓ  ｇｒｏｕｎｄ）が要求される。
【００８３】
したがって、ロボット１００は、制御動作（Ｃｏｎｔｒｏｌ  Ａｃｔｉｏｎ）の実行のために、各制御動作に対応して各関節に提供するトルクを計算し、計算されたトルクを各関節に設置されたモータなどのアクチュエータに出力して、アクチュエータを駆動させる。
【００８４】
再び図３を参照すると、歩行状態判断部２３１は、スイング脚に連結された足（以下、説明の便宜のために‘スイング足’という）が着地する場合、スイング足に滑りが発生したかを判断することができる。このとき、歩行状態判断部２３１は、スイング足から感知された荷重、及びスイング足から感知された速度に基づいて滑りが発生したか否かを判断する。ここで、図８を参照して、スイング足が滑ったか否かを判断する原理を簡単に説明する。
【００８５】
図８は、ロボットの歩行過程を示す図である。歩行時にロボット１００は、図８の（ａ）、（ｂ）、（ｃ）の順に動く。図８の（ａ）は、ロボット１００が、二つの脚１６０Ｌ、１６０Ｒで地面を支持している状態を示している。図８の（ｂ）は、ロボット１００が、左脚１６０Ｌで地面を支持し、右足１７０Ｒが地面から一定の高さｄ、すなわち、グラウンドクリアランス（ｇｒｏｕｎｄ  ｃｌｅａｒａｎｃｅ）以上になるように、右脚１６０Ｒを曲げた状態を示している。図８の（ｃ）は、ロボット１００が、曲げた右脚１６０Ｒを伸ばし、右足１７０Ｒのかかとが地面に着いた様子を示している。
【００８６】
例えば、ロボット１００の重量が５０ｋｇというとき、ロボット１００には略５００ニュートン（５００Ｎ≒重量５０ｋｇ×重力加速度９．８ｍ／ｓ２）の荷重が加えられる。したがって、図８の（ａ）のように、ロボット１００が、二つの脚１６０Ｌ、１６０Ｒで地面を支持しているときには、左脚１６０Ｌと右脚１６０Ｒにそれぞれ２５０Ｎの荷重が加えられる。その後、図８の（ｂ）のように、ロボットの左脚１６０Ｌのみで地面を支持している場合には、左脚１６０Ｌにのみ５００Ｎの荷重が加えられる。図８の（ｃ）のように、左脚１６０Ｌで地面を支持した状態で、右足１７０Ｒのかかとが地面に少し着く場合、左脚１６０Ｌに加えられていた荷重は５００Ｎから漸減し、右足１７０Ｒに加えられる荷重が漸増する。このように、右足１７０Ｒのかかとが地面に少し着いた状態で右足１７０Ｒに滑りが発生する場合、右足１７０Ｒの速度は急に増加する。
【００８７】
したがって、スイング足が地面に少し着いたとき、スイング足から感知された荷重と、スイング足から感知された速度とに基づいてスイング足が滑ったか否かを判断できる。このとき、スイング足から感知される荷重には、Ｘ軸方向の荷重、Ｙ軸方向の荷重、及びＺ軸方向の荷重が含まれる。また、スイング足から感知される速度には、Ｘ軸方向の速度、Ｙ軸方向の速度が含まれる。したがって、スイング足の各軸に対する荷重条件とスイング足の各軸に対する速度条件を適切に組み合わせて、スイング足が滑ったか否かを判断できる。スイング足が滑ったものと判断するための条件を、数式で表現すると、数式（１）及び数式（２）の通りである。
【００８８】
（ＦＴｚ＜Ｆｚ）ａｎｄ（ＦＴｘ＜Ｆｘ）ａｎｄ（Ｖｅｌｘ＞Ｖｘ）      （１）
（ＦＴｚ＜Ｆｚ）ａｎｄ（ＦＴｙ＜Ｆｙ）ａｎｄ（Ｖｅｌｙ＞Ｖｙ）      （２）
数式（１）及び数式（２）において、‘ＦＴ’は、力／トルク感知部２２２により感知された荷重を意味する。具体的に、‘ＦＴｘ’は、力／トルク感知部２２２により感知された荷重において、Ｘ軸方向の荷重を意味する。‘ＦＴｙ’は、力／トルク感知部２２２により感知された荷重において、Ｙ軸方向の荷重を意味する。そして、‘ＦＴｚ’は、力／トルク感知部２２２により感知された荷重において、Ｚ軸方向の荷重を意味する。
【００８９】
数式（１）及び数式（２）において、‘Ｆ'は、事前に指定された基準荷重を意味する。具体的に、‘Ｆｘ’は、Ｘ軸方向の荷重に対して設定される基準荷重を意味する（以下、‘Ｘ軸基準荷重'という）。‘Ｆｙ’は、Ｙ軸方向の荷重に対して設定される基準荷重を意味する（以下、‘Ｙ軸基準荷重'という）。そして、‘Ｆｚ’は、Ｚ軸方向の荷重に対して設定される基準荷重を意味する（以下、‘Ｚ軸基準荷重'という）。
【００９０】
数式（１）及び数式（２）において、‘Ｖｅｌ'は、速度感知部２２３により感知されたスイング足の速度を意味する。具体的に、‘Ｖｅｌｘ’は、スイング足のＸ軸方向の速度を意味する（以下、‘Ｘ軸感知速度'という）。‘Ｖｅｌｙ’は、スイング足のＹ軸方向の速度を意味する（以下、‘Ｙ軸感知速度'という）。
【００９１】
そして、‘Ｖ’は、事前に指定された基準速度を意味する。具体的に、‘Ｖｘ’は、Ｘ軸方向の速度に対して事前に指定される基準速度を意味する（以下、‘Ｘ軸基準速度'という）。そして、‘Ｖｙ’は、Ｙ軸方向の速度に対して事前に指定される基準速度を意味する（以下、‘Ｙ軸基準速度'という）。
【００９２】
数式（１）は、スイング足がＸ軸方向に滑ったかを判断するための条件を示している。数式（１）を参照すると、ロボット１００は、スイング足のＺ軸方向の荷重（ＦＴｚ）がＺ軸基準荷重（Ｆｚ）より小さく、スイング足のＸ軸方向の荷重（ＦＴｘ）がＸ軸基準荷重（Ｆｘ）より小さく、スイング足のＸ軸方向の速度（Ｖｅｌｘ）がＸ軸基準速度（Ｖｘ）よりも大きい場合、スイング足がＸ軸方向に滑ったと判断することが分かる。すなわち、数式（１）の三つの条件を全て満足すると、ロボット１００は、スイング足の滑りがＸ軸に沿って発生したものと判断することができる。しかし、発明はこれに制限されるものではない。例えば、数式（１）の三つの条件のうち、速度条件を含んで二つの条件を満足する場合、ロボット１００は、スイング足の滑りがＸ軸に沿って発生したものと判断することができる。
【００９３】
一方、数式（１）において、スイング足から感知されたＺ軸方向の荷重（ＦＴｚ）がＺ軸基準荷重（Ｆｚ）より小さいかを判断する部分があるが、これは、スイング足が地面にどれだけ着いた状態であるかを判別するためである。仮に、Ｚ軸基準荷重（Ｆｚ）を５０Ｎと設定したら、ロボット１００のスイング足が地面に少し着いた時に、滑りが発生したか否かを判断するものと見なすことができる。仮に、Ｚ軸基準荷重（Ｆｚ）を１００Ｎと設定したら、ロボット１００のスイング足が地面にさらに多く着いた時に、滑りが発生したか否かを判断するものと見なすことができる。このような概念は、スイング足から感知されたＸ軸方向の荷重（ＦＴｘ）がＸ軸基準荷重（Ｆｘ）よりも小さいかを判断する部分においても同一に適用される。
【００９４】
数式（２）は、スイング足がＹ軸方向に滑ったかを判断するための条件を示している。数式（２）を参照すると、ロボット１００は、スイング足から感知されたＺ軸方向の荷重（ＦＴｚ）がＺ軸基準荷重（Ｆｚ）よりも小さく、スイング足から感知されたＹ軸方向の荷重（ＦＴｙ）がＹ軸基準荷重（Ｆｙ）よりも小さく、スイング足から感知されたＹ軸方向の速度（Ｖｅｌｙ）がＹ軸基準速度（Ｖｙ）よりも大きい場合、スイング足がＹ軸方向に滑ったと判断することが分かる。すなわち、数式（２）の三つの条件を全て満足する場合、ロボット１００は、スイング足の滑りがＹ軸に沿って発生したものと判断することができる。しかし、発明はこれに制限されるものではない。例えば、数式（２）の三つの条件のうち、速度条件を含んで二つの条件を満足する場合、ロボット１００は、スイング足の滑りがＹ軸に沿って発生したものと判断することができる。
【００９５】
再び図３を参照すると、歩行状態判断部２３１は、上述したように、スイング足から感知された各軸の荷重と各軸に対する基準荷重とを比較し、スイング足から感知された各軸の速度と各軸に対する基準速度とを比較して、比較結果によって、スイング足が滑ったか否か、及びスイング足が滑った方向を判断することができる。
【００９６】
目標角度軌跡生成部２３４は、歩行状態判断部２３１で判断された各脚の動作状態に基づいて、二つの脚１６０Ｌ、１６０Ｒの各関節部１６３、１６４、１６５に対して目標角度軌跡を生成する。目標角度軌跡は、各関節部１６３、１６４、１６５の時間による角度データからノット点（ｋｎｏｔ  ｐｏｉｎｔ）を抽出し、抽出されたノット点をスプラインで滑らかに連結することによって、目標角度軌跡を生成できる。ここで、ノット点は、動作状態を行うための各関節部１６３、１６４、１６５の角度指令であって、ノット点は、各動作状態に対応する。目標角度軌跡生成部２３４で生成された目標角度軌跡はトルク計算部２３５に提供される。
【００９７】
トルク計算部２３５は、二つの脚１６０Ｌ、１６０Ｒの各関節部１６３、１６４、１６５に対して、目標角度軌跡を追従するためのトルクを計算する。各関節部１６３、１６４、１６５に対するトルクの計算は、毎制御周期ごとになされる。制御周期は、一つ以上の命令を処理または実行するための時間を示すことができる。例えば、制御周期は、関節部に設置されたアクチュエーターを駆動できるように、関節部に伝送するために算出されるトルクに対応するトルク制御信号のための時間を示すことができる。トルクは、比例微分制御（Ｐｒｏｐｏｒｔｉｏｎａｌ−Ｄｅｒｉｖａｔｉｖｅ  ｃｏｎｔｒｏｌｌｅｒ：ＰＤ）を用いて計算できる。比例微分制御によって各関節部１６３、１６４、１６５のトルクを計算する式は、下記の数式（３）の通りである。
【００９８】
τ＝ｋｐ・（θｄ−θｃ）＋ｋｄ・（ωｄ−ωｃ）      （３）
数式（３）において‘τ’は、毎制御周期におけるトルク値を意味する。数式（３）においてθｄは、毎制御周期における目標角度、θｃは、毎制御周期における現在の角度（すなわち、現在感知された角度）を意味する。そして、ωｄは、毎制御周期における目標角速度を示す。ωｄは、目標角度θｄを微分して得ることができる。ωｃは、毎制御周期における現在の角速度（すなわち、現在感知された角速度）を示し、毎制御周期における現在の角度θｃを微分して得ることができる。そして、ｋｐ及びｋｄは係数を示すが、これらの係数は、ロボットが安定した歩行をするように実験的に決定され得る。
【００９９】
上述したように、トルク計算部２３５は、数式（３）に基づいて、目標角度軌跡を追従するトルクを計算する。前述した数式（３）は、脚の各関節部に対するトルク計算方法を一般化して示したものである。したがって、トルク計算部２３５は、各関節部１６３、１６４、１６５に対するトルクを計算するとき、数式（３）を参照して、ロール方向、ピッチ方向、ヨー方向に対するトルクをそれぞれ計算する。ロール、ピッチ、ヨー方向に対するトルクは、それぞれ‘τｒｏｌｌ'、'τｐｉｔｃｈ'、‘τｙａｗ'に表示され得る。
【０１００】
その他にも、トルク計算部２３５は、歩行状態判断部２３１でスイング足が滑ったか否かを判断した結果によって、スイング脚の各関節部に提供するトルクを制限する。具体的に、トルク計算部２３５は、歩行状態判断部２３１でスイング足が滑ったと判断する場合、スイング足が滑った方向によって、スイング脚の各関節部に提供する最終トルクを計算する。スイング足がＸ軸方向に滑ったものと判断された場合、トルク計算部２３５は、スイング脚の各関節部に提供するピッチ方向に対する最終トルクを計算する。スイング足がＹ軸方向に滑ったものと判断された場合、トルク計算部２３５は、スイング脚の各関節部に提供するロール方向に対する最終トルクを計算する。各関節部に提供するピッチ方向の最終トルクを計算する式は、数式（４）の通りである。そして、各関節部に提供するロール方向の最終トルクを計算する式は、数式（５）の通りである。
【０１０１】
【数１】
2013119158.tif 000003
数式（４）において、‘Ｆｉｎａｌ_τｐｉｔｃｈ’は、関節部のピッチ方向に対する最終トルクを意味し、‘τｐｉｔｃｈ’は、関節部のピッチ方向に対するトルクを意味する。ピッチ方向に対するトルクは、数式（３）に基づいて計算される。数式（４）を参照すると、関節部のピッチ方向に対する最終トルク（Ｆｉｎａｌ_τｐｉｔｃｈ）は、該当の関節部のピッチ方向に対するトルク（τｐｉｔｃｈ）に、スイング足のＸ軸基準速度（Ｖｘ）とＸ軸感知速度（Ｖｅｌｘ）との比を乗じて計算される。数式（４）を参照すると、関節部のＸ軸感知速度（Ｖｅｌｘ）がＸ軸基準速度（Ｖｘ）より大きいほど、該当の関節部に提供されるピッチ方向の最終トルクが小さくなることが分かる。すなわち、Ｘ軸感知速度（Ｖｅｌｘ）とピッチ方向の最終トルク（Ｆｉｎａｌ_τｐｉｔｃｈ）とは、反比例の関係にある。
【０１０２】
数式（５）において、‘Ｆｉｎａｌ_τｒｏｌｌ’は、関節部のロール方向に対する最終トルクを意味し、‘τｒｏｌｌ'は、関節部のロール方向に対するトルクを意味する。ロール方向に対するトルクは、数式（３）に基づいて計算される。そして、ロール方向の最終トルクは、数式（５）に基づいて計算される。数式（５）を参照すると、関節部のロール方向に対する最終トルク（Ｆｉｎａｌ_τｒｏｌｌ）は、該当の関節部のロール方向に対するトルク（τｒｏｌｌ）に、スイング足のＹ軸基準速度（Ｖｙ）とＹ軸感知速度（Ｖｅｌｙ）との比を乗じて計算される。数式（５）を参照すると、関節部のＹ軸感知速度（Ｖｅｌｙ）がＹ軸基準速度（Ｖｙ）より大きいほど、該当の関節部に提供されるロール方向の最終トルクは小さくなることが分かる。すなわち、Ｙ軸感知速度（Ｖｅｌｙ）とロール方向の最終トルク（Ｆｉｎａｌ_τｒｏｌｌ）とは、反比例の関係にある。
【０１０３】
制御部２３６は、トルク計算部２３５で計算されたトルクを二つの脚の股関節部１６３、膝関節部１６４、足首関節部１６５に提供する。仮に、スイング足に滑りが発生したものと判断され、トルク計算部２３５でスイング脚の各関節部に対する最終トルクが計算されたら、制御部２３６は、トルク計算部２３５で計算された最終トルクを、スイング脚の股関節部１６３、膝関節部１６４、足首関節部１６５にそれぞれ提供する。
【０１０４】
股関節部１６３、膝関節部１６４及び足首関節部１６５は、制御部２３６で提供されたトルク、または最終トルクの入力を受けて、各関節部に設置されたモータなどのアクチュエータを駆動させる。その結果、ロボット１００が滑らずに自然に歩行することができる。
【０１０５】
一方、メモリ部２４０は、ロボット１００の歩行を制御するのに必要なデータやアルゴリズムを格納することができる。例えば、感知部２２０から感知されたデータ、各軸に対する基準荷重及び各軸に対する基準速度などのようにスイング足が滑ったか否かを判断するのに必要なデータ、スイング脚の各関節部に提供する最終トルクを計算するのに必要なデータやアルゴリズムを格納することができる。
【０１０６】
このようなメモリ部２４０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリのような不揮発性メモリ素子、またはＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような揮発性メモリ素子、またはハードディスク、光ディスクのような格納媒体で具現可能である。しかし、上述した例に限定されるものではなく、メモリ部２４０は、当業界に知られている任意の他の形態で具現されても良いことはもちろんである。
【０１０７】
図９は、本発明の一実施例に係るロボットの制御方法を示すフローチャートである。
【０１０８】
歩行が始まると、ロボット１００は、二つの脚に加えられる荷重に基づいて、二つの脚の動作状態を判断する（Ｓ８００）。荷重が感知された脚は支持脚と判断し、荷重が感知されなかった脚はスイング脚と判断する。このように、二つの動作状態を判断するステップは、歩行制御部２３０の歩行状態判断部２３１により行われることができる。
【０１０９】
次に、ロボット１００は、Ｓ８００ステップの判断結果に基づいて、二つの脚１６０Ｌ、１６０Ｒの各関節部に対する目標角度軌跡を生成する（Ｓ８１０）。二つの脚１６０Ｌ、１６０Ｒの各関節部に対する目標角度軌跡を生成するステップは、歩行制御部２３０の目標角度軌跡生成部２３４により行われることができる。
【０１１０】
次に、ロボット１００は、二つの脚１６０Ｌ、１６０Ｒの各関節部に対して、目標角度軌跡を追従するトルクを計算する（Ｓ８２０）。トルクは、数式（３）を用いて計算される。このとき、数式（３）は、二つの脚１６０Ｌ、１６０Ｒの各関節部に提供するトルク計算方法を一般化して示したもので、実際に各関節部に提供するトルクを計算するときには、一つの関節部に対して、ロール方向に対するトルク（τｒｏｌｌ）、ピッチ方向に対するトルク（τｐｉｔｃｈ）、及びヨー方向に対するトルク（τｙａｗ）のうち少なくとも一つが計算され得る。このように、トルクを計算するステップは、歩行制御部２３０のトルク計算部２３５により行われることができる。
【０１１１】
次に、ロボット１００は、スイング脚に連結されたスイング足が地面に着地する場合、スイング足に滑りが発生したか否かを判断する（Ｓ８３０）。そのために、スイング足から感知された荷重と事前に設定された基準荷重とを比較し、スイング足から感知された速度と事前に設定された基準速度とを比較する。そして、比較結果によって、スイング足が滑ったか否か及びスイング足が滑った方向を判断する。
【０１１２】
スイング足から感知された荷重と基準荷重とを比較するときには、スイング足から感知されたＸ軸方向の荷重とＸ軸基準荷重とを比較し、スイング足から感知されたＹ軸方向の荷重とＹ軸基準荷重とを比較する。そして、スイング足から感知されたＺ軸方向の荷重とＺ軸基準荷重とを比較する。
【０１１３】
スイング足から感知された速度と事前に設定された基準速度を比較するときには、スイング足から感知されたＸ軸方向の速度とＸ軸基準速度を比較する。そしてスイング足から感知されたＹ軸方向の速度とＹ軸基準速度を比較する。
【０１１４】
比較の結果、数式（１）又は数式（２）を満足する場合、スイング足に滑りが発生したものと判断する。仮に、数式（１）を満足すれば、スイング足が地面に着地するとき、Ｘ軸方向に滑ったものと判断する。数式（２）を満足すれば、スイング足が地面に着地するとき、Ｙ軸方向に滑ったものと判断する。このように、スイング足に滑りが発生したか否かを判断するステップは、歩行制御部２３０の歩行状態判断部２３１により行われることができる。
【０１１５】
Ｓ８３０ステップでの判断結果、スイング足に滑りが発生しなかった場合、ロボット１００は、Ｓ８２０ステップで計算されたトルクを二つの脚１６０Ｌ、１６０Ｒの各関節部に提供する（Ｓ８４０）。
【０１１６】
Ｓ８３０ステップでの判断結果、スイング足に滑りが発生した場合、スイング足が滑った方向によって、スイング脚の各関節部に提供する最終トルクを計算する（Ｓ８５０）。
【０１１７】
仮に、スイング足がＸ軸方向に滑った場合であれば、各関節部のピッチ方向に対する最終トルクを計算する。ピッチ方向に対する最終トルクは、数式（４）を用いて計算される。すなわち、Ｓ８２０ステップにおいて求められたトルクのうち、ピッチ方向に対するトルク（τｐｉｔｃｈ）に、スイング足のＸ軸基準速度（Ｖｘ）とＸ軸感知速度（Ｖｅｌｘ）との比を乗じて計算する。数式（４）によれば、ピッチ方向の最終トルクは、スイング足のＸ軸感知速度と反比例することが分かる。これは、スイング足がＸ軸方向に速く滑った場合には、スイング脚の各関節部に提供されるピッチ方向のトルクを多く制限することを意味する。そして、スイング足がＸ軸方向にゆっくりと滑った場合には、スイング脚の各関節部に提供されるピッチ方向のトルクを少なく制限することを意味する。
【０１１８】
仮に、スイング足がＹ軸方向に滑った場合であれば、各関節部のロール方向に対する最終トルクを計算する。ロール方向に対する最終トルクは、数式（５）を用いて計算される。すなわち、Ｓ８２０ステップにおいて求められたトルクのうち、ロール方向に対するトルク（τｒｏｌｌ）に、スイング足のＹ軸基準速度（Ｖｙ）とＹ軸感知速度（Ｖｅｌｙ）との比を乗じて計算する。数式（５）によれば、ロール方向の最終トルクは、スイング足のＹ軸感知速度と反比例することが分かる。これは、スイング足がＹ軸方向に速く滑った場合には、スイング脚の各関節部に提供されるロール方向のトルクを多く制限することを意味する。そして、スイング足がＹ軸方向にゆっくりと滑った場合には、スイング脚の各関節部に提供されるロール方向のトルクを少なく制限することを意味する。
【０１１９】
計算された最終トルクは、スイング脚の各関節部に提供され（Ｓ８６０）、スイング脚の各関節部に設置されたモータなどのアクチュエータを駆動させることによって、ロボットが滑らずに歩行することができるようにする。
【０１２０】
このように本発明の実施例によれば、スイング足が地面に着地するときに滑りが発生する場合、スイング脚の各関節部に提供されるトルクが制限されるので、ロボット１００は倒れずに安定的に歩行することができる。
【０１２１】
以上、本発明の一実施例に係る歩行ロボット及びその制御方法を説明した。一実施例では、ロボット１００の二つの足に速度感知部２２３が設けられたケースを例に挙げて説明した。
【０１２２】
しかし、一実施例とは異なる実施例として、ロボットの二つの足には、速度感知部２２３の代わりに加速度感知部（図示せず）を設けても良い。この場合、ロボットには、加速度感知部により感知された加速度を積分して、スイング足の速度を計算する速度計算部（図示せず）を追加で備えても良い。
【０１２３】
一実施例とは異なる実施例として、ロボット１００の二つの足に速度感知部２２３や加速度感知部を備えずに、順運動学（ｆｏｒｗａｒｄ  ｋｉｎｅｍａｔｉｃｓ）に基づいてスイング足の速度を計算しても良い。この場合、順運動学に基づいてスイング足の速度を計算するための速度計算部（図示せず）を追加で備えても良い。
【０１２４】
代案として、または以上で説明した実施例に加えて、ロボットは、計算された目標角度と、目標角度の派生を取ることによって獲得された目標速度を用いる、比例（ｐｒｏｐｏｒｔｉｏｎａｌ）、積分（ｉｎｔｅｇｒａｌ）、及び／または派生（ｄｅｒｉｖａｔｉｖｅ）コントローラを使用してトルクを計算してもよい。
【０１２５】
上述した歩行ロボット及びその制御方法は、マイクロプロセッサ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＰＳ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、またはＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）を含む一つ以上のプロセッサだけでなく、これらの一部、またはこれらと他の処理装置との組み合わせを使用することができる。
【０１２６】
上述した実施例に係る制御方法は、コンピュータにより具現される多様な作業を行うためのプログラムインストラクションを含む、非一時的なコンピュータ可読媒体に記録されることができる。前記媒体は、プログラムインストラクション、データファイル、データ構造及びこれらの組み合わせを含むことができる。媒体に記録されたプログラムインストラクションは、実施例の目的のために特別に設計及び構造化されたものであったり、コンピュータソフトウェア分野の当業者によく知らされたものであってもよい。非一時的なコンピュータ可読媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気｛じき｝テープなどを含む磁気媒体と；ＣＤ−ＲＯＭディスク及びＤＶＤのような光学媒体と；光学ディスクのような光磁気媒体（ｍａｇｎｅｔｏ−ｏｐｔｉｃａｌ  ｍｅｄｉａ）と；ＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラムインストラクションを格納及び行うように特別に構成されるハードウェアデバイスと；を含むことができる。プログラムインストラクションの例としては、コンパイラにより生成される機械コード、解釈機を使用してコンピュータにより実行される上位レベルコードを含むファイルを含むことができる。上述したハードウェアデバイスは、上述した実施例の作業、またはその反対の作業を行うための一つ以上のソフトウェアモジュールで構成されることができる。
【０１２７】
以上のように例示された図面を参照して、本発明の実施例について説明したが、本発明の属する技術の分野における通常の知識を有する者は、本発明がその技術的思想や必須の特徴を変更せずに他の具体的な形態で実施できるということを理解できるであろう。したがって、以上記述した実施形態は、すべての面で例示的なものであり、限定的なものではないと理解しなければならない。
【符号の説明】
【０１２８】
１００    歩行ロボット
１３１    肩関節部
１４３    肘関節部
１４４    手首関節部
１６３    股関節部
１６４    膝関節部
１６５    足首関節部
２２０    感知部
２２１    傾き感知部
２２２    力／トルク感知部
２２３    速度感知部
２３０    歩行制御部
２３１    歩行状態判断部
２３４    目標角度軌跡生成部
２３５    トルク計算部
２３６    制御部
２４０    メモリ部
【図１】
2013119158.tif 000004
【図２】
2013119158.tif 000005
【図３】
2013119158.tif 000006
【図４】
2013119158.tif 000007
【図５】
2013119158.tif 000008
【図６】
2013119158.tif 000009
【図７】
2013119158.tif 000010
【図８】
2013119158.tif 000011
【図９】
2013119158.tif 000012