(57)【要約】【課題】転倒時の衝撃力がより小さくなるように転倒中に動作を実行し、転倒による破損を抑制することができる歩行ロボットを提供することを目的とする。【解決手段】本発明の歩行ロボット１０は、歩行ロボット１０が転倒するか否かを判定する判定手段と、歩行ロボットが転倒すると判定されたときに、転倒中における各脚部の駆動パターンを複数生成する生成手段と、生成された駆動パターン毎に、その駆動パターンにしたがって各脚部を駆動して転倒したときに歩行ロボット１０に加わる衝撃力の予測値を算出する衝撃力算出手段と、複数の駆動パターンのうち、算出された衝撃力の予測値が最も小さい駆動パターンを選択する選択手段と、駆動パターンが選択されたときに、選択された駆動パターンにしたがって各脚部を制御する制御手段を有している。【選択図】図４
2008093762.tif 000002
【特許請求の範囲】
【請求項１】
本体に接続された２以上の脚部を駆動することによって歩行するロボットであって、
歩行ロボットが転倒するか否かを判定する判定手段と、
歩行ロボットが転倒すると判定されたときに、転倒中における各脚部の駆動パターンを複数生成する生成手段と、
生成された駆動パターン毎に、その駆動パターンにしたがって各脚部を駆動して転倒したときに歩行ロボットに加わる衝撃力の予測値を算出する衝撃力算出手段と、
複数の駆動パターンのうち、算出された衝撃力の予測値が最も小さい駆動パターンを選択する選択手段と、
駆動パターンが選択されたときに、選択された駆動パターンにしたがって各脚部を制御する制御手段と、を有することを特徴とする歩行ロボット。
【請求項２】
本体に接続された腕部をさらに有し、
生成手段は、脚部及び腕部の駆動パターンを複数生成し、
衝撃力算出手段は、生成された駆動パターン毎に、その駆動パターンにしたがって脚部及び腕部を駆動して転倒したときに歩行ロボットに加わる衝撃力の予測値を算出し、
制御手段は、駆動パターンが選択されたときに、選択された駆動パターンにしたがって脚部及び腕部を制御することを特徴とする請求項１に記載の歩行ロボット。
【請求項３】
本体の傾斜角を検出する傾斜角センサをさらに有し、
判定手段は、傾斜角センサが検出した本体の傾斜角に基づいて、歩行ロボットが転倒するか否かを判定することを特徴とする請求項１または２に記載の歩行ロボット。
【請求項４】
本体の目標傾斜角を算出する目標傾斜角算出手段をさらに有し、
制御手段は、駆動パターンが選択されていないときは、本体が目標傾斜角に傾斜するように脚部を制御し、
判定手段は、傾斜角センサが検出した本体の傾斜角と目標傾斜角とのずれが所定角度以上となったときに歩行ロボットが転倒すると判定することを特徴とする請求項３に記載の歩行ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、本体に接続された２以上の脚部を駆動することによって歩行するロボットに関する。
【背景技術】
【０００２】
本体に接続された２以上の脚部を駆動することによって歩行するロボットが知られている。このような歩行ロボットは、転倒しないように脚部の駆動を制御しながら歩行する。しかしながら、このような歩行ロボットは、外力等が作用することによって倒立状態を維持することができず、転倒してしまう場合がある。歩行ロボットが転倒すると、歩行ロボットが破損することがあり、問題となる。
かかる問題を解決する歩行ロボットとして、特許文献１の歩行ロボットが知られている。この歩行ロボットは、床反力センサ、加速度センサを有しており、それらのセンサの検出値に基づいて歩行ロボットが転倒するか否かを判定する。転倒すると判定したときは、床面に対する支持多角形の面積変化量を最小とするとともに転倒時（すなわち、床面への衝突時）における支持多角形の面積（接触面積）を最大にするように、転倒中における各部の駆動パターンを生成する。そして、生成した駆動パターンにしたがって歩行ロボットの各部を制御する。このように、生成した駆動パターンを転倒中に実行することで、転倒時に歩行ロボットに加わる衝撃力をより小さくし、歩行ロボットの破損を抑制することができるとされている。
【特許文献１】特開２００４−１０６１９４
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述した歩行ロボットは、歩行ロボットが転倒すると判定したときに、歩行ロボットの支持多角形の面積変化量を最小とするとともに転倒時における支持多角形の面積を最大とするように、転倒中における駆動パターンを生成する。しかしながら、歩行ロボットの転倒は突発的に発生することが多く、転倒開始時の歩行ロボットの姿勢はさまざまである。したがって、転倒時に歩行ロボットに加わる衝撃力はさまざまな要因によって異なることとなる。このため、上述したように生成した駆動パターンにしたがって各部を制御しても、転倒時の衝撃力がそれほど小さくならず、歩行ロボットが破損してしまうことがあった。
【０００４】
本発明は、上記した実情に鑑みてなされたものであり、転倒時の衝撃力がより小さくなるように転倒中に動作を実行し、転倒による破損を抑制することができる歩行ロボットを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の歩行ロボットは、本体に接続された２以上の脚部と、歩行ロボットが転倒するか否かを判定する判定手段と、歩行ロボットが転倒すると判定されたときに、転倒中における各脚部の駆動パターンを複数生成する生成手段と、生成された駆動パターン毎に、その駆動パターンにしたがって各脚部を駆動して転倒したときに歩行ロボットに加わる衝撃力の予測値を算出する衝撃力算出手段と、複数の駆動パターンのうち、算出された衝撃力の予測値が最も小さい駆動パターンを選択する選択手段と、駆動パターンが選択されたときに、選択された駆動パターンにしたがって各脚部を制御する制御手段を有している。
この歩行ロボットでは、判定手段によって歩行ロボットが転倒すると判定されると、まず、生成手段が転倒中における脚部の駆動パターンを複数生成する。次に、衝撃力算出手段は、生成した駆動パターン毎に、その駆動パターンにしたがって脚部を駆動して転倒したときに歩行ロボットに加わる衝撃力の予測値を算出する。すると、選択手段が衝撃力の予測値が最も小さい駆動パターンを選択し、制御手段が選択された駆動パターンで各脚部を駆動する。この歩行ロボットでは、生成手段によって複数の駆動パターンが生成され、衝撃力算出手段が各駆動パターンについて衝撃力の予測値を算出しているので、選択手段は転倒時に歩行ロボットに加わる衝撃力が最も小さくなる駆動パターンを正確に選択することができる。したがって、制御手段が選択された駆動パターンにしたがって脚部を駆動することで、転倒時に歩行ロボットに加わる衝撃力が小さくなり、歩行ロボットの破損を抑制することができる。
【０００６】
上述した歩行ロボットは、本体に接続された腕部をさらに有し、生成手段は、脚部及び腕部の駆動パターンを複数生成し、衝撃力算出手段は、生成された駆動パターン毎に、その駆動パターンにしたがって脚部及び腕部を駆動して転倒したときに歩行ロボットに加わる衝撃力の予測値を算出し、制御手段は、駆動パターンが選択されたときに、選択された駆動パターンにしたがって脚部及び腕部を制御することが好ましい。
このような構成によれば、腕部を駆動して転倒時の衝撃力がより小さくなる駆動パターンが生成手段によって生成される。したがって、そのように生成された駆動パターンから衝撃力の予測値が最も小さい駆動パターンを選択し、選択した駆動パターンに基づいて脚部及び腕部を制御することで、より転倒時の衝撃力を小さくすることができる。
【０００７】
上述した歩行ロボットは、本体の傾斜角を検出する傾斜角センサをさらに有し、判定手段は、傾斜角センサが検出した本体の傾斜角に基づいて、歩行ロボットが転倒するか否かを判定することが好ましい。
このような構成によれば、好適に歩行ロボットが転倒するか否かを判定することができる。
【０００８】
上述した歩行ロボットは、本体の目標傾斜角を算出する目標傾斜角算出手段をさらに有し、制御手段は、駆動パターンが選択されていないときは、本体が目標傾斜角に傾斜するように脚部を制御し、判定手段は、傾斜角センサが検出した本体の傾斜角と目標傾斜角とのずれが所定角度以上となったときに歩行ロボットが転倒すると判定することが好ましい。
このような構成によれば、より好適に歩行ロボットが転倒するか否かを判定することができる。
【発明を実施するための最良の形態】
【０００９】
本発明の一実施形態に係る歩行ロボット１０について図面を参照して説明する。図１は、歩行ロボット１０の概略斜視図を示している。図１に示すように、歩行ロボット１０は、本体１１と、本体１１に接続された頭部１２、右腕部１３、左腕部１４、右脚部１５、左脚部１６によって構成されている。
頭部１２は、本体１１と首関節２０を介して接続されている。首関節２０は、頭部１２を本体１１に対してヨー軸周りに相対回転させる。
右腕部１３は、本体１１と２つの肩関節２１、２２を介して接続されている。肩関節２１は、右腕部１３を本体１１に対してロール軸周りに相対回転させる。肩関節２２は、右腕部１３を本体１１に対してピッチ軸周りに相対回転させる。したがって、肩関節２１を駆動することで右腕部１３を前後方向に振ることができ、肩関節２２を駆動することで右腕部１３を左右方向に振ることができる。また、右腕部１３は、複数のパーツが関節１８（肘関節，手首関節）を介して接続されることによって構成されている。
左腕部１４は、本体１１と２つの肩関節２３、２４を介して接続されている。肩関節２３は、左腕部１４を本体１１に対してロール軸周りに相対回転させる。肩関節２４は、左腕部１４を本体１１に対してピッチ軸周りに相対回転させる。したがって、肩関節２３を駆動することで左腕部１４を前後方向に振ることができ、肩関節２４を駆動することで左腕部１４を左右方向に振ることができる。また、左腕部１４は、複数のパーツが関節１８（肘関節，手首関節）を介して接続されることによって構成されている。
右脚部１５は、本体１１と股関節２５、２６を介して接続されている。右脚部１５は、一端が本体１１と股関節２５、２６を介して接続された上腿部１５ａ、その上腿部１５ａの他端と膝関節２７を介して接続された下腿部１５ｂ、その下腿部１５ｂの他端と２つの足首関節２８、２９を介して接続された足平１５ｃによって構成されている。股関節２５は、上腿部１５ａを本体１１に対してピッチ軸周りに相対回転させる。股関節２６は、上腿部１５ａを本体１１に対してロール軸周りに相対回転させる。膝関節２７は、下腿部１５ｂを上腿部１５ａに対してピッチ軸周りに相対回転させる。足首関節２８は、足平１５ｃを下腿部１５ｂに対してピッチ軸周りに相対回転させる。足首関節２９は、足平１５ｃを下腿部１５ｂに対してロール軸周りに相対回転させる。
左脚部１６は、本体１１と２つの股関節３０、３１を介して接続されている。左脚部１６は、一端が本体１１と股関節３０、３１を介して接続された上腿部１６ａ、その上腿部１６ａの他端と膝関節３２を介して接続された下腿部１６ｂ、その下腿部１６ｂの他端と足首関節３３，３４を介して接続された足平１６ｃによって構成されている。股関節３０は、上腿部１６ａを本体１１に対してピッチ軸周りに相対回転させる。股関節３１は、上腿部１６ａを本体１１に対してロール軸周りに相対回転させる。膝関節３２は、下腿部１６ｂを上腿部１６ａに対してピッチ軸周りに相対回転させる。足首関節３３は、足平１６ｃを下腿部１６ｂに対してピッチ軸周りに相対回転させる。足首関節３４は、足平１６ｃを下腿部１６ｂに対してロール軸周りに相対回転させる。
上述したように、歩行ロボット１０は、多数の関節によって複数のパーツが接続されることによって構成されている。歩行ロボット１０は、各関節を駆動することによって種々の動作を実行する。例えば、右脚部１５の股関節２５、２６、膝関節２７、足首関節２８、２９と、左脚部１６の股関節３０、３１、膝関節３２、足首関節３３，３４を所定の駆動パターンにしたがって駆動させることで、歩行ロボット１０は歩行する。
【００１０】
図２は、歩行ロボット１０の制御系のブロック図を示している。図２に示すように、歩行ロボット１０は、各関節を制御する制御装置４０と、本体１１の傾斜角を検出する傾斜角センサ５０を備えている。また、図２に示すように、各関節は、関節を駆動するモータと、関節の角度を検出するエンコーダを備えている。
【００１１】
図２に示すように、首関節２０はモータ２０ａを備えている。モータ２０ａは制御装置４０と電気的に接続されている。モータ２０ａは、制御装置４０から入力される制御指令値にしたがって駆動する。これによって、首関節２０の角度が変更される。また、モータ２０ａには、エンコーダ２０ｂが設置されている。エンコーダ２０ｂは、制御装置４０と電気的に接続されている。エンコーダ２０ｂは、モータ２０ａの回転量から、首関節２０の角度を検出する。すなわち、エンコーダ２０ｂは、歩行ロボット１０が直立している状態（図１の状態）における首関節２０の角度に対する角度（変化量）を検出する。エンコーダ２０ｂが検出した首関節２０の角度は、制御装置４０に出力される。
同様に、他の関節（肩関節２１〜２４、股関節２５、２６、３０、３１、膝関節２７、３２、足首関節２８、２９、３３、３４、各関節１８）も、図２に示すように対応するモータ（モータ１８、２１〜３４）とエンコーダ（エンコーダ１８、２１〜３４）を備えている。各モータは制御装置４０から入力される制御指令値にしたがって駆動され、対応する関節の角度を変更する。各エンコーダは、対応する関節の角度（歩行ロボット１０が直立している状態における関節の角度に対する角度変化量）を検出し、制御装置４０に出力する。
【００１２】
傾斜角センサ５０は、本体１１に設置されている。傾斜角センサ５０は、２軸ジャイロセンサであり、鉛直方向に対するピッチ軸方向の本体１１の傾斜角Ｐと、鉛直方向に対するロール軸方向の本体１１の傾斜角Ｒを検出する。傾斜角センサ５０は、傾斜角Ｐについては本体１１の前方向への傾きをプラスとして検出し、傾斜角Ｒについては本体１１の右方向への傾きをプラスとして検出する。傾斜角センサ５０は制御装置４０と接続されている。傾斜角センサ５０が検出した本体１１の傾斜角Ｐ、Ｒは制御装置４０に出力される。
【００１３】
制御装置４０は、ＣＰＵ、ＲＯＭ、ＲＡＭ等によって構成されている。制御装置４０は、傾斜角センサ５０と、各関節のモータ及びエンコーダと接続されている。制御装置４０は、傾斜角センサ５０が検出する本体１１の傾斜角Ｐ、Ｒを読取り、読取った傾斜角Ｐ、Ｒに基づいて、歩行ロボット１０が転倒するか否かを判定する。制御装置４０は、歩行ロボット１０が転倒すると判定しない限り、所定の動作パターンにしたがって各関節に制御指令値を出力する。これによって、歩行ロボット１０の各関節が制御され、歩行ロボット１０が所定の動作を実行する。また、制御装置４０は、歩行ロボット１０が転倒すると判定すると、転倒動作パターンを生成し、その転倒動作パターンにしたがって歩行ロボット１０の各関節を制御する。
【００１４】
制御装置４０が歩行ロボット１０の各関節に制御指令値を出力し、各関節を制御する処理について説明する。各関節に制御指令値を出力する際には、制御装置４０は、まず、歩行ロボット１０に実行させる動作を規定する動作パターンを生成する。動作パターンを生成すると、制御装置４０は、生成した動作パターンに基づいて図３のフローチャートを所定周期で実行し、各関節に制御指令値を出力する。
【００１５】
ステップＳ２では、制御装置４０は、生成した動作パターンに基づいて、今回の周期における歩行ロボット１０の各関節の目標角度を算出する。次に、制御装置４０は、算出した各関節の目標角度から、本体１１の目標傾斜角ＡＰ、ＡＲを算出する（ステップＳ４）。制御装置４０は、目標傾斜角ＡＰについては本体１１の前方向への傾きをプラスとして算出し、目標傾斜角ＡＲについては本体１１の右方向への傾きをプラスとして算出する。
【００１６】
目標傾斜角ＡＰ、ＡＲを算出すると、制御装置４０は、各関節のエンコーダが検出する各関節の現在の角度を読取る。そして、読取った各関節の現在の角度と算出した各関節の目標角度に基づいて、各関節のモータに制御指令値を出力する（ステップＳ６）。これによって、各関節が駆動し、各関節の角度が目標角度と略一致する角度に変更される。また、外力が作用する等、歩行ロボット１０に異常がない限り、各関節の角度が目標角度に制御されることで、本体１１の傾斜角が目標傾斜角と略一致する傾斜角となる。各関節を駆動すると、制御装置４０は、傾斜角センサ５０から本体１１の現在の傾斜角Ｐ、Ｒを読取る。そして、読取った傾斜角Ｐと目標傾斜角ＡＰとの差分値ΔＰと、読取った傾斜角Ｒと目標傾斜角ＡＲとの差分値ΔＲをそれぞれ算出する。そして、以下の計算式によって、本体１１の目標傾斜角と現在の傾斜角のずれ量Δθを算出する（ステップＳ８）。
【００１７】
【数１】
2008093762.tif 000003
【００１８】
制御装置４０は、傾斜角ずれ量Δθを算出すると、算出した傾斜角ずれ量Δθが角度αよりも大きいか否かを判定する（ステップＳ１０）。すなわち、上述したように、通常、歩行ロボット１０の各関節の角度が目標角度に制御されると、本体１１の傾斜角が目標傾斜角と略一致する。したがって、傾斜角ずれ量Δθは略０となる。しかし、歩行ロボット１０に外力が作用したり、脚部が障害物に乗り上げている場合等には、本体１１の傾斜角ずれ量Δθが大きくなる。傾斜角ずれ量Δθが所定の角度よりも大きくなると、歩行ロボット１０は転倒してしまう。したがって、傾斜角ずれ量Δθが角度αよりも大きいか否かを判定することで、歩行ロボット１０が転倒するか否かを判定することができる。
【００１９】
制御装置４０は、傾斜角ずれ量Δθが角度αよりも小さいと判定すると、図３の処理を終了する。制御装置４０は、傾斜角ずれ量Δθが角度αよりも大きいと判定されない限り、図３の処理を所定周期で繰り返し実行する。したがって、歩行ロボット１０の各関節の角度が生成した動作パターンにしたがって所定周期で変更され、歩行ロボット１０がその動作パターンにしたがって動作を実行する。
【００２０】
また、制御装置４０は、傾斜角ずれ量Δθが角度αよりも大きいと判定すると、転倒動作処理を実行する（ステップＳ１２）。すなわち、傾斜角ずれ量Δθが角度αよりも大きいということは、歩行ロボット１０が転倒し始めていることを示している。したがって、制御装置４０は歩行ロボット１０が転倒するまでの間（すなわち、足平１５ｃ、１６ｃ以外の部分が床面と接触するまでの間）に、転倒動作処理を実行する。ステップＳ１２では、制御装置４０は、図４に示すサブルーチンを実行することで転倒動作処理を実行する。
【００２１】
図４のステップＳ２０では、制御装置４０は、ステップＳ１０で算出した差分値ΔＰ、ΔＲに基づいて、歩行ロボット１０の転倒方向を特定する。制御装置４０は、まず、以下の計算式によって本体１１の傾斜角のずれ方向ψを算出する。
ψ＝ａｔａｎ（ｔａｎΔＰ／ｔａｎΔＲ）
上式で算出されるずれ方向ψは、目標傾斜角に対する本体１１の傾斜角のずれの方向を表している。すなわち、図５に示すように、縦軸をｔａｎΔＰとし、横軸をｔａｎΔＲとする座標系を考えると、縦軸のプラス方向が本体１１の前方向を示し、横軸のプラス方向が本体１１の右方向を示すこととなる。この座標系に所定の座標（ｔａｎΔＲ１，ｔａｎΔＰ１）をプロットすると、上式により算出されるずれ方向ψ１は、横軸（すなわち、本体１１の右方向）からの角度を示すこととなる（図５参照）。例えば、ずれ方向ψが０°の場合は本体１１の傾斜角が目標傾斜角に対して右方向にずれていることを表し、ずれ方向ψが９０°の場合は本体１１の傾斜角が目標傾斜角に対して前方向にずれていることを表している。
【００２２】
制御装置４０は、ずれ方向ψを算出すると、算出したずれ方向ψに基づいて、歩行ロボット１０が何れの方向に転倒中であるかを特定する。制御装置４０は、以下のように歩行ロボット１０の転倒方向を特定する。
・−２２．５°≦ψ＜２２．５°の場合は、右方向に転倒中であると特定する。
・２２．５°≦ψ＜６７．５°の場合は、右前方向に転倒中であると特定する。
・６７．５°≦ψ＜１１２．５°の場合は、前方向に転倒中であると特定する。
・１１２．５°≦ψ＜１５７．５°の場合は、左前方向に転倒中であると特定する。
・１５７．５°≦ψ＜２０２．５°の場合は、左方向に転倒中であると特定する。
・２０２．５°≦ψ＜２４７．５°の場合は、左後方向に転倒中であると特定する。
・２４７．５°≦ψ＜２９２．５°の場合は、後方向に転倒中であると特定する。
・２９２．５°≦ψ＜３３７．５°の場合は、右後方向に転倒中であると特定する。
【００２３】
転倒方向を特定すると、制御装置４０は、歩行ロボット１０の目標重心位置を設定する（ステップＳ２２）。
このとき、制御装置４０は、目標重心位置を、ロボット内座標系（歩行ロボット１０の前後方向の位置をｘ座標、左右方向の位置をｙ座標とした座標系）により設定する。また、制御装置４０は、現在の重心位置に対する相対座標（すなわち、現在の重心位置を原点（０，０）とした座標）によって目標重心位置を設定する。
具体的には、まず、制御装置４０は、目標重心位置を設定する方向を決定する。目標重心位置を設定する方向は、ステップＳ２２で特定した転倒方向と逆方向に決定される。例えば、ステップＳ２２で特定した転倒方向が前方向であった場合、制御装置４０は目標重心位置を設定する方向を後方向に決定する。次に、制御装置４０は、現在の重心位置から決定した方向に水平距離βだけ離れた位置を目標重心位置として設定する。例えば、特定された転倒方向が前方向である場合は、制御装置４０は、現在の重心位置より後方向に水平距離βだけ離れた位置を目標重心位置に設定する（すなわち、座標（−β，０）を目標重心位置に設定する）。この場合、図６に示す点線６０が設定された目標重心位置となる（ｚ座標が設定されていないので、目標重心位置は線として設定される）。なお、図６では、左方向をロボット内座標系のｘ方向としているので、歩行ロボット１０が直立しているように見えるが、実際には転倒中であるので、歩行ロボット１０は前方向に傾いている。また、例えば、特定された転倒方向が右前方向である場合は、制御装置４０は、現在の重心位置から左後方向に水平距離βだけ離れた位置に目標重心位置を設定する（すなわち、座標（−β／√２，−β／√２）を目標重心位置に設定する）。
【００２４】
目標重心位置を設定すると、制御装置４０は、右脚部１５と左脚部１６の目標姿勢を３つ生成する（ステップＳ２４）。
【００２５】
すなわち、まず、制御装置４０は、右脚部１５と左脚部１６のうち、どちらの脚部を軸として転倒しているかを特定する。制御装置４０は、歩行ロボット１０の現在の姿勢が、脚部１５、１６のうち一方の脚部だけを接地している姿勢である場合には、その接地している脚部を軸として転倒していると特定する。また、制御装置４０は、歩行ロボット１０の現在の姿勢が、脚部１５、１６の両方を接地している姿勢である場合には（実際に両方の脚部を接地していなくても、目標関節角から予測される現在の姿勢が両方の脚部を接地する姿勢であれば、両方の脚部を接地している姿勢であると判定される）、ステップＳ２０で特定した転倒方向に近い方の脚部を軸として転倒していると特定する。
【００２６】
軸となる脚部を特定すると、制御装置４０は、特定した脚部の各関節の目標角度を算出する。このとき、制御装置４０は、図７に示す各駆動規則Ａ〜Ｆにしたがった３つの目標姿勢を算出する。
駆動規則Ａ〜Ｃは、歩行ロボット１０が前後方向に転倒するときの駆動規則であり、股関節（２５または３０）、膝関節（２７または３２）、足首関節（２８または３３）の駆動比率をそれぞれ規定している。駆動規則Ｄ〜Ｆは、歩行ロボット１０が左右方向に転倒するときの駆動規則であり、股関節（２６または３１）と足首関節（２９または３４）の駆動比率をそれぞれ規定している。駆動比率は、図７に示すように、１つの駆動規則で規定されているすべての駆動比率を加算すると１００になるように規定されている。各駆動比率は、各駆動規則で規定されている関節のうち、その関節をどの程度駆動させて歩行ロボット１０の重心位置を目標重心位置に移動させるかを示している。
制御装置４０は、ステップＳ２０で歩行ロボット１０が前方向または後方向に転倒すると判定したときは、特定した脚部の目標姿勢として、駆動規則Ａに基づいた第１の目標姿勢（すなわち、駆動規則Ａに基づいて股関節と、膝関節と、足首関節の目標角度を規定した目標姿勢）と、駆動規則Ｂに基づいた第２の目標姿勢と、駆動規則Ｃに基づいた第３の目標姿勢の３つを算出する。制御装置４０は、ステップＳ２０で歩行ロボット１０が左右方向に転倒すると判定したときは、特定した脚部の目標姿勢として、駆動規則Ｄに基づいた第１の目標姿勢と、駆動規則Ｅに基づいた第２の目標姿勢と、駆動規則Ｆに基づいた第３の目標姿勢の３つを算出する。制御装置４０は、ステップＳ２０で歩行ロボット１０が斜め方向（すなわち、右前方向、左前方向、右後方向、左後方向）に転倒すると判定したときは、特定した脚部の目標姿勢として、駆動規則Ａ及びＤに基づいた第１の目標姿勢と、駆動規則Ｂ及びＥに基づいた第２の目標姿勢と、駆動規則Ｃ及びＦに基づいた第３の目標姿勢の３つを算出する。各駆動規則に基づいて目標姿勢を算出する際には、制御装置４０は、駆動規則により駆動比率が規定されている各関節についてはそれらの関節の駆動量が駆動比率に応じた駆動量となり、かつ、重心位置が目標重心位置となるように目標角度を算出する。また、制御装置４０は、駆動比率が規定されていない各関節（例えば、ステップＳ２０で歩行ロボット１０が前方向に転倒すると判定した場合であって特定した脚部が右脚部１５であった場合、駆動規則Ａだけが適用されるので、股関節２６と足首関節２９の駆動比率が規定されない）についてはそれらの関節の現在の角度を目標角度とする。このように、特定した脚部の各関節の目標角度が算出されることによって、特定した脚部の目標姿勢が算出される。
【００２７】
特定した脚部の第１目標姿勢〜第３目標姿勢を算出すると、制御装置４０は、他方の脚部の目標姿勢を算出する。他方の脚部の目標姿勢は、所定のアルゴリズムにより、特定した脚部の目標姿勢に応じて算出される。このとき、制御装置４０は、他方の脚部の目標姿勢として、特定した脚部の第１目標姿勢、第２目標姿勢、第３目標姿勢のそれぞれに対応する３つの目標姿勢を算出する。これによって、右脚部１５及び左脚部１６の各関節の目標角度を規定した第１目標姿勢〜第３目標姿勢がそれぞれ算出される。
例えば、ステップＳ２０で歩行ロボット１０が前方向に転倒すると判定され、図６に示すように目標重心位置が設定されている場合、右脚部１５及び左脚部１６の第１目標姿勢（駆動規則Ａにしたがった目標姿勢）は図８に示すように算出され、第２目標姿勢（駆動規則Ｂにしたがった目標姿勢）は図９に示すように算出され、第３目標姿勢（駆動規則Ｃにしたがった目標姿勢）は図１０に示すように算出される。
【００２８】
制御装置４０は、両脚部の第１目標姿勢〜第３目標姿勢を算出すると、それらの目標姿勢に対応させて右腕部１３及び左腕部１４の目標姿勢を算出する（ステップＳ２６）。すなわち、まず、制御装置４０は、歩行ロボット１０の転倒方向に近い腕部を特定する。なお、歩行ロボット１０の転倒方向が前方向及び後方向で有る場合は、右腕部１３と左腕部１４の両方が特定される。腕部を特定すると、制御装置４０は、特定しなかった腕部の各関節（肩関節、肘関節、手首関節）の目標角度を０°に決定する。また、制御装置４０は、特定した腕部の関節１８（肘関節及び手首関節）の目標角度を０°に決定する。次に、制御装置４０は、特定した腕部の肩関節からその腕部側の脚部の接地部までの距離Ｌを、両脚部の目標姿勢毎に算出する。例えば、図８〜１０に示すように両脚部の目標姿勢が算出されている場合、第１目標姿勢における距離Ｌとして図８のＬ１が算出され、第２目標姿勢における距離Ｌとして図９のＬ２が算出され、第３目標姿勢における距離Ｌとして図１０のＬ３が算出される。
【００２９】
次に、制御装置４０は、以下の計算式によって、転倒方向における本体１１と特定した腕部との目標角度φを決定する。目標角度φは、第１目標姿勢〜第３目標姿勢のそれぞれに対応した角度φ１〜φ３の３つの角度が求められる。
φ＝ａｃｏｓ（Ｋ／ｌ）
ここで、上式のＫは、腕部を真っ直ぐに伸ばしたときの腕部の先端から肩関節までの距離を示している（右腕部１３と左腕部１４の距離Ｋは同一である）。上式により算出される角度φは、歩行ロボット１０が脚部１５、１６を目標姿勢にしたがって駆動して転倒したときに、腕部が床面と略垂直に接触するための肩関節の角度である。例えば、図１１に示すように、脚部１５、１６を目標姿勢となるように駆動して転倒する場合は、角度φは、特定した腕部が床面と略垂直に接触するための本体１１と特定した腕部との角度となる。このように特定した腕部が床面と略垂直に接触すると、腕部により転倒時の衝撃力が分散し、床面から歩行ロボット１０に加わる衝撃力が比較的小さくなるとともに、床面との接触時に歩行ロボット１０の各部が破損し難い。制御装置４０は、角度φ１〜φ３を算出すると、転倒方向において本体１１と特定した腕部との角度がφ１〜φ３となるように、両脚部の第１目標姿勢〜第３目標姿勢に対応する肩関節２１〜２４の目標角度をそれぞれ算出する。これによって両脚部の第１目標姿勢〜第３目標姿勢に対応する両腕部の第１目標姿勢〜第３目標姿勢が算出される。以下では、両脚部の目標姿勢と両腕部の目標姿勢を合わせて、歩行ロボット１０の目標姿勢という（両脚部の第１目標姿勢と両腕部の第１目標姿勢を合わせて歩行ロボット１０の目標姿勢Ａ、両脚部の第２目標姿勢と両腕部の第２目標姿勢を合わせて歩行ロボット１０の目標姿勢Ｂ、両脚部の第３目標姿勢と両腕部の第３目標姿勢を合わせて歩行ロボット１０の目標姿勢Ｃという）。例えば、図８に示すように両脚部の目標姿勢が算出されている場合、図１２に示すように歩行ロボット１０の目標姿勢が算出される。また、ステップＳ２０で歩行ロボット１０が右方向に転倒すると判定された場合には、例えば図１３に示すように歩行ロボット１０の目標姿勢が算出される。
【００３０】
制御装置４０は、歩行ロボット１０の目標姿勢Ａ〜Ｃを算出すると、それらの目標姿勢Ａ〜Ｃに対応する転倒動作パターンＡ〜Ｃを算出する（ステップＳ２８）。転倒動作パターンＡ〜Ｃは、その転倒動作パターンの実行後に、歩行ロボット１０が対応する目標姿勢となるように算出される。
【００３１】
転倒動作パターンＡ〜Ｃを算出すると、制御装置４０は、歩行ロボット１０がそれらの転倒動作パターンＡ〜Ｃにしたがって動作を実行しながら転倒したときに、歩行ロボット１０に加わる衝撃力の予測値Ｆ１〜Ｆ３をシミュレーションにより算出する（ステップＳ３０）。
すなわち、まず、制御装置４０は、データ上で仮想的な空間を作成し、その空間内に歩行ロボット１０の３次元形状を示す３次元形状データ９０を作成する。次に、制御装置４０は、水平で平坦な床面を示す床面データ９２を作成し、その床面データ９２上に図１４に示すように３次元形状データ９０を配置する。次に、制御装置４０は、傾斜角センサ５０から本体１１の現在の傾斜角を読取るとともに、各関節のエンコーダから各関節の現在の角度を読取る。そして、読取った本体１１の傾斜角と各関節の角度に応じて、三次元形状データ９０が示す状態を変更する（すなわち、３次元形状データ９０の本体１１を示すパーツを読取った傾斜角に傾斜させ、３次元形状データ９０の各関節の角度を読みとった各関節の角度に変更する）。これによって、歩行ロボット１０の現在の状態、例えば、図１５に示すような歩行ロボット１０の現在の床面上での状態が再現される。次に、制御装置４０は、歩行ロボット１０の３次元形状データの各パーツに、そのパーツの質量を示す質量データを付与する。
次に、制御装置４０は、３次元形状データ９０の各関節の角度をステップＳ２８で算出した転倒動作パターンＡにしたがって変更するとともに、所定のアルゴリズムにしたがって自然法則により作用する重力やモーメント等を仮想的な空間内で再現する。これによって、歩行ロボット１０が転倒動作パターンＡを実行して転倒する状態がシミュレーションされる。制御装置４０は、このシミュレーションにより、転倒時に床面と最初に接触する歩行ロボット１０の部位を特定し、その部位に加わる衝撃力の予測値Ｆ１を算出する。すなわち、歩行ロボット１０が転倒動作パターンＡを実行して転倒したときに、歩行ロボット１０に加わる衝撃力の予測値Ｆ１が算出される。次に、制御装置４０は、衝撃力の予測値Ｆ１の算出と同様にして、転倒動作パターンＢ及びＣの実行時の衝撃力の予測値Ｆ２、Ｆ３を順に算出する。
【００３２】
転倒動作パターンＡ〜Ｃのそれぞれの実行時の衝撃力Ｆ１〜Ｆ３の予測値を算出すると、制御装置４０は、算出した衝撃力の予測値が最も小さい転倒動作パターンを選択する（ステップＳ３２）。次に、制御装置４０は、選択した転倒動作パターンにしたがって所定周期で各関節のモータに制御指令値を出力する（ステップＳ３４）。これによって、歩行ロボット１０の各関節が選択した転倒動作パターンにしたがって駆動され、歩行ロボット１０が選択した転倒動作パターンを実行しながら転倒していく。このとき、歩行ロボット１０は、制御装置４０が選択した転倒動作パターンを実行しているので、ステップＳ３０で制御装置４０が実行したその転倒動作パターンについてのシミュレーションと略同様にして転倒していく。したがって、歩行ロボット１０が完全に転倒し、歩行ロボット１０の足平１５ｃ、１６ｃ以外の部位が床面と接触すると、その部位にシミュレーションで算出された衝撃力の予測値と略同一の衝撃力が加わる。上述したように、歩行ロボット１０は、衝撃力の予測値が最も小さい転倒動作パターンを実行しているので、このとき歩行ロボット１０に加わる衝撃力は非常に小さい。したがって、この歩行ロボット１０は、転倒した時に破損し難い。制御装置４０は、歩行ロボット１０に選択した動作パターンを実行させると、図４の処理を終了し、歩行ロボット１０の各関節のモータを停止させる。
【００３３】
以上に説明したように、本実施形態の歩行ロボット１０は、歩行ロボット１０が転倒すると判定すると、転倒中における脚部の転倒動作パターンを複数生成する。そして、生成した転倒動作パターン毎に、転倒動作パターンにしたがって各関節を駆動して転倒したときに歩行ロボット１０に加わる衝撃力の予測値を算出する。そして、衝撃力の予測値が最も小さい転倒動作パターンを選択し、選択した転倒動作パターンにしたがって各関節を駆動する。したがって、転倒時に歩行ロボット１０に加わる衝撃力が小さくなり、歩行ロボット１０の破損が抑制される。
【００３４】
また、上述した歩行ロボット１０は、腕部１３、１４も駆動する転倒動作パターンを生成し、転倒時にその転倒動作パターンにしたがって腕部１３、１４を駆動する。したがって、より転倒時の衝撃力を小さくすることができ、歩行ロボット１０の破損がより抑制される。
【００３５】
また、上述した歩行ロボット１０は、傾斜角センサ５０が検出した本体１１の傾斜角Ｐ、Ｒと、目標傾斜角ＡＰ、ＡＲの差分値に基づいて、歩行ロボット１０が転倒するか否かを判定する。したがって、好適に歩行ロボット１０が転倒するか否かを判定することができる。
【００３６】
なお、上述した歩行ロボット１０は、二足歩行ロボットであったが、本発明の技術は３つ以上の脚部を駆動して歩行する歩行ロボットに適用することもできる。このような歩行ロボットにおいて本発明を実施しても、転倒時の破損を抑制することができる。
【００３７】
また、上述した歩行ロボット１０は、制御装置４０が、傾斜角ずれψの大きさに基づいて歩行ロボット１０が転倒するか否かを判定したが、本発明はこのような実施形態に限られない。例えば、差分値ΔＰ、ΔＲまたは傾斜角ずれψ等の変化量に基づいて歩行ロボット１０が転倒するか否かを判定してもよい。
【００３８】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例をさまざまに変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００３９】
【図１】歩行ロボット１０の斜視図。
【図２】歩行ロボット１０の制御系を示すブロック図。
【図３】歩行ロボット１０の通常時の動作処理を示すフローチャート。
【図４】歩行ロボット１０の転倒時の動作処理を示すフローチャート。
【図５】歩行ロボット１０の転倒方向の説明図。
【図６】歩行ロボット１０の目標重心位置の説明図。
【図７】各関節の転倒時の駆動規則を示す図。
【図８】歩行ロボット１０の脚部の目標姿勢の例を示す図。
【図９】歩行ロボット１０の脚部の目標姿勢の例を示す図。
【図１０】歩行ロボット１０の脚部の目標姿勢の例を示す図。
【図１１】肩関節の目標角度φの説明図。
【図１２】歩行ロボット１０の目標姿勢の例を示す図。
【図１３】歩行ロボット１０の目標姿勢の例を示す図。
【図１４】シミュレーション時の３次元形状データ９０の説明図。
【図１５】シミュレーション時の３次元形状データ９０の説明図。
【符号の説明】
【００４０】
１０：歩行ロボット
１１：本体
１２：頭部
１３：右腕部
１４：左腕部
１５：右脚部
１５ａ：上腿部
１５ｂ：下腿部
１５ｃ：足平
１６：左脚部
１６ａ：上腿部
１６ｂ：下腿部
１６ｃ：足平
１８：関節
２０：首関節
２０ａ：モータ
２０ｂ：エンコーダ
２１〜２４：肩関節
２５、２６、３０、３１：股関節
２７、３２：膝関節
２８、２９、３３、３４：足首関節
４０：制御装置
５０：傾斜角センサ
【図１】
2008093762.tif 000004
【図２】
2008093762.tif 000005
【図３】
2008093762.tif 000006
【図４】
2008093762.tif 000007
【図５】
2008093762.tif 000008
【図６】
2008093762.tif 000009
【図７】
2008093762.tif 000010
【図８】
2008093762.tif 000011
【図９】
2008093762.tif 000012
【図１０】
2008093762.tif 000013
【図１１】
2008093762.tif 000014
【図１２】
2008093762.tif 000015
【図１３】
2008093762.tif 000016
【図１４】
2008093762.tif 000017
【図１５】
2008093762.tif 000018