(57)【特許請求の範囲】
【請求項１】
２以上の車輪と、
前記車輪を補助する２以上の補助輪と、
倒立を維持するための倒立走行制御手段と、
前記倒立走行制御手段が算出した制御量を増減するゲイン増減手段と、
前記ゲイン増減手段によりゲインが増減された制御量に基づき駆動する駆動手段と、
移動体に設けられたセンサと、
前記センサの検出結果に基づき前記補助輪と路面との間の距離を逐次算出し、当該距離に応じて前記ゲインを逐次調整するゲイン調整手段とを有し、
前記倒立走行制御手段は、前記センサのセンサ値と目標値との偏差に応じて前記制御量を算出し、
前記ゲイン調整手段は、予め設計するゲインの上下の閾値をそれぞれＫ＿ｍａｘ，Ｋ＿ｍｉｎとし、予め与えておく前記補助輪と路面との間の距離に対する閾値であって、Ｓ１＜Ｓ２＜Ｓ３＜Ｓ４の関係を満たす４つの閾値をそれぞれＳ１、Ｓ２、Ｓ３、Ｓ４として、前記補助輪と路面との間の距離が大きくなる場合は、前記Ｓ１〜前記Ｓ３ではゲインを前記Ｋ＿ｍｉｎで一定に調整し、前記Ｓ３〜前記Ｓ４では、前記Ｋ＿ｍｉｎから前記Ｋ＿ｍａｘまでゲインを単調増加させ、前記Ｓ４以上ではゲインを前記Ｋ＿ｍａｘで一定となるように調整し、前記補助輪と路面との間の距離が小さくなる場合は、前記Ｓ４〜前記Ｓ２まではゲインを前記Ｋ＿ｍａｘで一定に調整し、前記Ｓ２〜前記Ｓ１では、前記Ｋ＿ｍａｘから前記Ｋ＿ｍｉｎまでゲインを単調減少させ、前記Ｓ１以下ではゲインを前記Ｋ＿ｍｉｎで一定となるように調整する
倒立車輪型移動体。
【請求項２】
前記センサは前記補助輪又は車体に設けられた距離センサである
ことを特徴とする請求項１記載の倒立車輪型移動体。
【請求項３】
前記ゲイン調整手段は、前記センサの検出結果に基づき前記補助輪の最下点と前記車輪の最下点又は路面との距離を算出する
ことを特徴とする請求項１記載の倒立車輪型移動体。
【請求項４】
前記補助輪に替えてストッパを有する
ことを特徴とする請求項１乃至３のいずれか１項記載の倒立車輪型移動体。
【請求項５】
２以上の車輪と、前記車輪を補助する２以上の補助輪とを有する倒立車輪型移動体の制御方法であって、
移動体に設けられたセンサのセンサ値に基づき駆動部を制御する制御量を算出する倒立走行制御工程と、
前記センサの検出結果に基づき前記補助輪と路面との間の距離を逐次算出し、当該距離に応じてゲインを逐次調整するゲイン調整工程と、
前記ゲイン調整工程にて調整されたゲインにより、前記制御量を増減するゲイン増減工程とを有し、
前記ゲイン調整工程では、予め設計するゲインの上下の閾値をそれぞれＫ＿ｍａｘ，Ｋ＿ｍｉｎとし、予め与えておく前記補助輪と路面との間の距離に対する閾値であって、Ｓ１＜Ｓ２＜Ｓ３＜Ｓ４の関係を満たす４つの閾値をそれぞれＳ１、Ｓ２、Ｓ３、Ｓ４として、前記補助輪と路面との間の距離が大きくなる場合は、前記Ｓ１〜前記Ｓ３ではゲインを前記Ｋ＿ｍｉｎで一定に調整し、前記Ｓ３〜前記Ｓ４では、前記Ｋ＿ｍｉｎから前記Ｋ＿ｍａｘまでゲインを単調増加させ、前記Ｓ４以上ではゲインを前記Ｋ＿ｍａｘで一定となるように調整し、前記補助輪と路面との間の距離が小さくなる場合は、前記Ｓ４〜前記Ｓ２まではゲインを前記Ｋ＿ｍａｘで一定に調整し、前記Ｓ２〜前記Ｓ１では、前記Ｋ＿ｍａｘから前記Ｋ＿ｍｉｎまでゲインを単調減少させ、前記Ｓ１以下ではゲインを前記Ｋ＿ｍｉｎで一定となるように調整する倒立車輪型移動体の制御方法。
【請求項６】
前記センサは前記補助輪又は車体に設けられた距離センサである
ことを特徴とする請求項５記載の倒立車輪型移動体の制御方法。
【請求項７】
前記ゲイン調整工程では、前記センサの検出結果に基づき前記補助輪の最下点と前記車輪の最下点又は路面との距離を算出する
ことを特徴とする請求項５記載の倒立車輪型移動体の制御方法。
【請求項８】
前記補助輪に替えてストッパを有する
ことを特徴とする請求項５乃至７のいずれか１項記載の倒立車輪型移動体の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２以上の車輪と車輪を補助する２以上の補助輪又はストッパとを有する倒立車輪型移動体及びその制御方法に関する。
【背景技術】
【０００２】
図８は、従来の倒立二輪型ロボットの制御部を示す図である。図８に示すように、従来の倒立走行ロボット１００は、倒立走行コントローラ１０１、駆動部１０２、モータ１０３、各種センサ１０４、及び減算器１０５を有する。倒立走行コントローラ１０１は、外部より与えられた目標状態になるよう制御量を調整する。駆動部１０２は、倒立走行コントローラ１０１からのトルクや速度の値に応じてモータ１０３を駆動する。ロボットの体幹部又は脚部に取り付けられた各種センサ１０４からのセンサ値（実状態：Ｘ１，Ｘ２，Ｘ３，・・・，Ｘｎ）は減算器１０５にて目標状態（Ｘ１＊，Ｘ２＊，Ｘ３＊，・・・，Ｘｎ＊）と比較減算され、得られた偏差が倒立走行コントローラ１０１に入力される。目標状態としては、目標となる倒立姿勢角及び角速度、車輪回転角度及び角速度などがある。
【０００３】
この倒立走行ロボット１００においては、目標状態として倒立姿勢や走行パターンが与えられると、倒立走行コントローラ１０１は、センサ１０４で計測した実状態との偏差からたとえば車輪駆動トルクや回転速度などの制御量を算出する。算出された制御量に応じて駆動部１０２がモータ１０３を駆動して倒立走行ロボット１００を動かすことで、倒立状態を維持したままでの走行を実現する。倒立コントローラ１０１は制御理論に基づき設計されてもよいし、ＰＩＤ制御などのフィードバック制御系で構成することも可能である。
【０００４】
図９は、従来の倒立二輪型ロボットの構成を示す図である。倒立二輪型ロボット１０１は、車体１１１と、車体１１１に取り付けられ、回転することで車体を持ち上げるスイングアーム１１２とを有する。スイングアーム１１２はスイングアーム軸１１３により車体１１１と結合し、床面に並行な車体１１１をスライド可能に構成されている。スイングアーム１１２のスイングアーム軸１１３とは反対側には駆動輪軸１１４が設けられている。そして、駆動軸１１４を中心に駆動輪１１５が回転駆動することで、倒立二輪型ロボット１０１を移動する。一の駆動輪１１５を補助する２つの補助輪１１６が車体１１１に設けられている。
【特許文献１】特開２００６−２０５８３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述の倒立走行ロボット１００は、図１（ｂ）のように、両補助輪１６が地面から離隔している状態にあることを前提に設計されている。したがって、図９に示すように、倒立走行ロボット１００の補助輪１１６や車体の一部が路面に接触した場合には、床反力の影響で正常に機能しない。このような状態では倒立走行コントローラ１０１で計算される制御量が適切な値でない、すなわち、補助輪１１６から伝わる床反力を想定していない。このように、倒立走行ロボット１００は、平地走行中のモデルに基づいて制御量を計算し、常にその制御量に基づいて車輪を駆動している。このため、補助輪１１６や車体の一部が地面に接地すると制御量が不適切な値となってしまい、設計者が思いもしなかった挙動を示し、暴走することになる。
【０００６】
本発明は、このような問題点を解決するためになされたものであり、補助輪や車体の一部が路面に接地した場合でも安定に姿勢を制御することができる倒立車輪型移動体及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した目的を達成するために、本発明に係る倒立車輪型移動体は、２以上の車輪と、前記車輪を補助する２以上の補助輪と、倒立を維持するための倒立走行制御手段と、前記倒立走行制御手段が算出した制御量を増減するゲイン増減手段と、前記ゲイン増減手段によりゲインが増減された制御量に基づき駆動する駆動手段と、移動体に設けられたセンサと、前記センサの検出結果に基づき前記ゲイン増減手段のゲインを調整するゲイン調整手段とを有し、前記倒立走行制御手段は、前記センサのセンサ値と目標値との偏差に応じて前記制御量を算出し、前記ゲイン調整手段は、前記センサの検出結果に基づき前記補助輪と路面との間の距離を算出し、当該距離に応じて前記ゲインを調整するものである。
【０００８】
本発明においては、センサ値と目標値との偏差に応じて駆動制御する倒立車輪型移動体において、補助輪と路面との距離を求め、この距離に応じて倒立走行制御手段が算出する制御量に乗ずるゲインの値を調整する。このことにより、補助輪と路面の距離に応じて、制御量を可変とすることができ、補助輪が地面に近づくとゲインを小さくするなどできる。
【０００９】
また、前記センサは前記補助輪又は車体に設けられた距離センサとすることができる。距離センサを使用すれば、補助輪と路面との距離を直接検出することができる。
【００１０】
さらに、前記ゲイン調整手段は、前記センサの検出結果に基づき前記補助輪の最下点と前記車輪の最下点又は路面との距離を算出することができる。これにより、距離センサを使用せずに路面間距離を求めることができる。
【００１１】
さらにまた、前記補助輪に替えてストッパを有するものとすることができる。補助輪に限らず、ストッパ等であっても同様に制御可能である。
【００１２】
本発明にかかる倒立車輪型移動体の制御方法は、２以上の車輪と、前記車輪を補助する２以上の補助輪とを有する倒立車輪型移動体の制御方法であって、移動体に設けられたセンサのセンサ値に基づき駆動部を制御する制御量を算出する倒立走行制御工程と、前記センサの検出結果に基づき前記補助輪と路面との間の距離を算出し、当該距離に応じてゲインを調整するゲイン調整工程と、前記ゲイン調整工程にて調整されたゲインにより、前記制御量を増減するゲイン増減工程とを有する。
【発明の効果】
【００１３】
本発明によれば、補助輪や車体の一部が路面に接地した場合でも安定に姿勢を制御することができる倒立車輪型移動体及びその制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、倒立走行型する二輪型のロボットに適用したものである。
【００１５】
図１（ａ）は、本実施の形態にかかる倒立走行ロボット１を示す図である。倒立走行ロボット１は、車体１１と、車体１１に取り付けられ、回転することで車体を持ち上げるスイングアーム１２とを有する。スイングアーム１２はスイングアーム軸１３により車体１１と結合し、床面に並行な車体１１をスライド可能に構成されている。スイングアーム１２のスイングアーム軸１３とは反対側には駆動輪軸１４が設けられている。そして、駆動輪軸１４を中心に駆動輪１５が回転駆動することで、倒立走行ロボット１を移動する。一の駆動輪１５を補助する２つの補助輪（又はストッパ）１６が車体１１に設けられている。
【００１６】
図２は、本実施の形態にかかる倒立走行ロボットの制御システムを示す図である。倒立走行ロボット１は、倒立走行コントローラ（安定化制御コントローラ）２１、ゲイン２２、駆動部２３、各種センサ２５、観測点高さ算出部２６、及び減算器２７を有する。
【００１７】
倒立走行コントローラ２１は、倒立を維持するためのコントローラで、外部より与えられた目標状態（Ｘ１＊，Ｘ２＊，Ｘ３＊，・・・，Ｘｎ＊）と、車体に設けられているセンサ２５の検出結果との偏差に応じて制御量を調整する。ゲイン２２は、倒立走行コントローラ２１が出力した制御量１のゲイン調整するゲイン増減手段であり、制御量２として駆動部２３に出力する。駆動部２３は、ゲイン２２からの制御量２をトルクに変換し、ロボット１の車輪駆動用モータ２４を駆動する。ロボット１の車体部に設けられた姿勢角センサや姿勢角速度センサなどのセンサ２５からのセンサ値（実状態：Ｘ１，Ｘ２，Ｘ３，・・・，Ｘｎ）は減算器２７にて目標状態（Ｘ１＊，Ｘ２＊，Ｘ３＊，・・・，Ｘｎ＊）と比較減算され、得られた偏差が倒立走行コントローラ２１に入力される。目標状態としては、目標となる倒立姿勢角及び角速度、車輪回転角度及び角速度などがある。
【００１８】
目標状態として倒立姿勢や走行パターンが与えられると、倒立走行コントローラ２１は、センサ２５で計測した実状態との偏差から、たとえば車輪駆動トルクや回転速度などの適切な制御量を算出する。算出された制御量に応じて駆動部２３がモータ２４を駆動し、ロボット１を動かすることで、倒立状態を維持したままでの走行を実現する。倒立コントローラは制御理論に基づいて設計されてもよいし、ＰＩＤなどのフィードバック制御系で構成してもよい。車体姿勢や車輪回転速度の目標状態が与えあられ、センサ２５で計測した実状態と目標状態との偏差から倒立走行コントローラが制御量１を算出する方法は、上述した従来のロボットと同様である。
【００１９】
ここで、本実施の形態にかかる倒立走行ロボット１には、観測点高さ算出部２６が設けられている。観測点高さ算出部２６は、各種センサ２５の検出結果に基づき補助輪と路面との間の距離を算出し、当該距離に応じてゲイン２２のゲインを調整するゲイン調整手段である。補助輪１６の最下点から路面までの路面間距離を逐次計算し、その距離に応じて倒立走行コントローラ２１の制御量にかけるゲインを逐次変更するためのゲイン２２に制御信号を出力する。
【００２０】
補助輪１６又は車体１１と、路面との路面間距離は、距離センサを用いて直接計測してもよいし、後述するように、その瞬間の姿勢から既知の路面との距離を推定してもよい。また、複数の点と路面との距離を検知した場合は、それらの平均値を用いてもよいし、路面に最も近い点から得られる最小値に基づきゲインを調整するなどして処理を簡略化してもよい。
【００２１】
例えば、補助輪や車体との路面間距離が予め設計した閾値を下回ったら倒立走行コントローラの制御量を低減し、逆に閾値よりも路面間距離が大きくなったら倒立コントローラの制御量を元に戻すといった制御方法が考えられる。一具体例としては、補助輪１６や車体１１から得られる路面間距離の最小値が閾値以下になったら倒立走行コントローラの制御量をゼロにし、閾値以上になったら倒立走行コントローラの制御量を低減しない、などすることができる。
【００２２】
また、距離センサ以外で路面間距離を求める例としては、センサレスで算出する方法もある。たとえば、駆動輪１５以外の観測点、たとえば補助輪１６や転倒防止ストッパ（不図示）、車体１１の一部と、少なくとも１つ以上の観測点とを予め設定し、ロボット１の姿勢から座標値を逐次計算し、その座標値と既知の路面形状から観測点高さを調整することも可能である。
【００２３】
図１に戻って、倒立走行ロボット１は、何も制御していない状態では、図１（ａ）に示すように、補助輪１６又は転倒防止ストッパなどが接地して安定な状態を維持する。倒立走行コントローラ２１が働いている間は、図１（ｂ）に示すように、駆動輪だけで倒立した状態を維持する。車体１１に設けられたセンサから車体姿勢角が得られ、駆動輪１５に設けられたセンサなどから車輪回転角が得られ、これらのセンサ値に基づき倒立走行コントローラ２１が駆動部２３を制御する。すなわち、何らかの走行指令値が与えられた際は、倒立安定状態を維持したまま司令走行パターンに応じて走行する。走行が終了したら、適切なタイミングで図１（ａ）に示す状態に戻り、倒立走行コントローラ２１をオフする。なお、ここでは、補助輪１６を設けた例について説明したが、補助輪に限定するものではなく、倒立制御を行わないときでも安定に静止状態を維持できるように設けられているストッパ等あっても同様である。
【００２４】
次に、観測点高さ算出部２６のゲイン２２の制御方法について具体的に説明する。図３は、観測点高さに応じたゲイン変更の一例を示す図である。Ｋ＿ｍａｘ，Ｋ＿ｍｉｎは、予め設計するゲインの上下の閾値であり、Ｓ１、Ｓ２、Ｓ３、Ｓ４は、予め与えておく高さに対する閾値である。なお、本例では、高さはその代表値を示す。これらの設計パラメータから補助輪高さ（代表値）に応じてゲインを調整する。たとえば、Ｋ＿ｍａｘ，Ｋ＿ｍｉｎの値はそれぞれ１、０の一定値とすればよい。本例においては、Ｓ１＜Ｓ２＜Ｓ３＜Ｓ４の関係を満たすＳ１〜Ｓ４の閾値が設定されている。
【００２５】
ゲインの調整の仕方としては、例えば次に示す２通りが挙げられる。図３では、Ｓ１〜Ｓ３がＫ＿ｍｉｎで一定であり、Ｓ３〜Ｓ４では、Ｋ＿ｍｉｎからＫ＿ｍａｘまでゲインが単調増加し、Ｓ４以上ではＫ＿ｍａｘで一定となっている。逆に観測点高さが小さくなる場合は、Ｓ４〜Ｓ２まではＫ＿ｍａｘで一定であり、Ｓ２〜Ｓ１ではＫ＿ｍａｘからＫ＿ｍｉｎにゲインが単調減少し、Ｓ１以下ではＫ＿ｍｉｎで一定となっている。第１の方法としては、このグラフ通り、ゲインが閾値Ｓ１から大きくなる場合とゲインが閾値Ｓ４から小さくなる場合とで、ゲインの調整の仕方を異ならせる方法がある。たとえば、ゲイン高さｓがｓ＝Ｓ１からＳ３＜ｓ＜Ｓ４の間まで大きくなった後に、ｓ＝Ｓ２になった場合、Ｓ３＜ｓ＜Ｓ４〜ｓ＝Ｓ２までは図３に示すグラフに従ってゲインをＫ＿ｍｉｎ一定とすることができる。
【００２６】
別の方法としては、観測点高さがｓ＝Ｓ１からＳ３＜ｓ＜Ｓ４まで大きくなった後、観測点高さｓがｓ＝Ｓ１まで減少していく場合に、図３の破線に示すように、その際のゲインを維持したままＳ１＜ｓ＜Ｓ２まで一定とし、Ｓ１＜ｓ＜Ｓ２の間からｓ＝Ｓ１に減少する場合は再びグラフを辿って単調減少するように制御することができる。
【００２７】
次に、特別なセンサを用いることなく、観測点高さ制御する方法の具体例について説明する。上述したように、距離センサなどと特別なセンサを補助輪部や車体の一部に接地する必要はない。倒立走行コントローラが適切な制御量を算出する際に必要とする車体姿勢角やロボットの姿勢（角間接角度）に基づいて既知路面情報を元に観測点高さを推定することも可能である。例えば、図１のような倒立走行ロボットの場合、角リンク長や車輪半径などを予め計測しておき、これらの値とロボットの各軸の回転角度や車体の姿勢角などから、接地点（駆動輪の最下点）と観測点（最下点）の高さの差を以下の式に基づいて逐次算出することができる。ここでは、平地を仮定して説明するが、例えば傾斜角がわかっている坂などでも同様の計算が可能である。逐次算出した１以上の補助輪高さと図３に示すグラフとから、観測点高さ算出部２６からの制御のもと、ゲイン２２は制御量２を算出する。
【００２８】
図４は、補助輪高さＺＰＲ，ＺＱＲを算出するための各種パラメータを示す図である。図４において、図中Ｏ点を原点とするＸＺ座標系での点Ｐ、Ｑ、Ｒの座標をそれぞれ下記のようになる。
【数１】
0005092683.tif 000002
【００２９】
ここで、ηは、Ｚ軸と車体１７の垂直方向とのなす角、θは、車体１７とスイングアーム１２とのなす角、Ｌはスイングアームの長さ、Ｒｓは補助輪１６の半径、Ｒｗは車輪１５の半径を示す。原点Ｏは、スイングアーム軸１３とし、垂直方向をｘ軸、水平方向をｘ軸としている。また、ｄ１は、スイングアーム軸１３と車体１７の右端部までの長さ、ｄ２は、スイングアーム軸と車体１７の左端部までの長さ、ｄ３は、右補助輪１６２と車体１７との距離、ｄ４は、左補助輪１６１と車体１７との距離を示す。
【００３０】
補助輪半径Ｒｓと駆動輪半径Ｒｗを考慮すると、補助輪高さＺＰＲ，ＺＱＲは下記のようになる。
ＺＰＲ＝（ｚｐ−Ｒｓ）−（ｚｒ−Ｒｗ）
＝（（ｄ１−Ｌｃｏｓθ）・ｓｉｎη−（ｄ３−Ｌｓｉｎθ）・ｃｏｓη）−（Ｒｓ−Ｒｗ）
ＺＱＲ＝（ｚｑ−Ｒｓ）−（ｚｒ−Ｒｗ）
＝（（ｄ２−Ｌｃｏｓθ）・ｓｉｎη−（ｄ４−Ｌｓｉｎθ）・ｃｏｓη）−（Ｒｓ−Ｒｗ）
このように、ＺＰＲ，ＺＱＲを逐次計算し、例えば、ＺＰＲ，ＺＱＲの小さい方を代表値として選び、図３に示すゲイン特性図に基づき、閾値Ｓ１〜Ｓ４と比較してゲインを更新すればよい。
【００３１】
各種センサ値と目標値との偏差に応じて駆動部２３を制御する制御量を倒立走行コントローラ２１が算出するが、この倒立走行コントローラ２１は、補助輪が路面に接地していない場合を想定して制御量を算出する。よって、補助輪が路面に接地した場合などにはこの制御量を調整する必要がある。そこで、本実施の形態においては、補助輪と路面との距離を測定又は算出しておき、この距離に応じてこの制御量のゲインを増減させる。このように、たとえば路面間距離が零の場合にはゲインも零にすることで、倒立走行ロボットの補助輪が接地した場合に得られる床反力から間違った制御量を算出することを防止することができる。
【００３２】
次に、本実施の形態にかかる倒立走行ロボットの一具体例について説明しておく。本具体例にかかる倒立走行ロボットは、倒立振子制御によって移動する倒立車輪型移動体である。この倒立走行ロボットは、地面に接地した車輪を駆動することによって、所定の位置まで移動する。さらに、ジャイロセンサ等からの出力に応じて車輪を駆動することによって、倒立状態を維持することができる。また、倒立走行ロボットは、倒立状態を維持したまま、操作者が操作する操作量に応じて移動する。
【００３３】
図５及び図６を用いて、本実施の形態の具体例にかかる倒立走行ロボット２００の構成について説明する。図５は倒立走行ロボット２００の構成を模式的に示す側面図であり、図６は倒立走行ロボット２００の構成を模式的に示す正面図である。
【００３４】
図６に示されるように、倒立走行ロボット２００は、倒立車輪型の移動体（走行体）であり、右駆動輪２１８と、左駆動輪２２０と、右スイングアーム２１７と、左スイングアーム２１９と、車体２１２と、を備えている。車体２１２は、右駆動輪２１８、及び左駆動輪２２０の上方に配置された倒立走行ロボット２００の上体部の一部である。ここで、倒立走行ロボット２００の進行方向（図６の紙面と垂直方向）を前後方向とし、水平面において前後方向に垂直な方向を左右方向（横方向）とする。よって、図６は、進行方向前側から倒立走行ロボット２００を見た図であり、図５は、左側から倒立走行ロボット２００を見た図である。
【００３５】
走行時において、右スイングアーム２１７、及び左スイングアーム２１９は、車高を調整する。さらに、一方、又は両方のスイングアームを駆動して、車体２１２の地面に対する左右の傾斜角度を調整する。例えば、水平な地面を走行中に、右駆動輪２１８のみが段差に乗り上げたり、地面が右上がりの傾斜面に変わったりしたとする。この場合、右駆動輪２１８が左駆動輪２２０よりも高くなる。このため、右スイングアーム２１７の関節を駆動して右駆動輪２１８を車体２１２の方向により近づけるようにする。これにより、右駆動輪２１８が高くなった分を吸収でき、横方向（左右方向）において車体２１２を水平にすることができる。
【００３６】
右スイングアーム２１７側端側には右マウント２２６が固定され、車軸２３０を介して右駆動輪２１８を回転可能に支持する。右駆動輪２１８は、車軸２３０を介して右輪駆動モータ２３４の回転軸Ｃ１に固定されている。右輪駆動モータ２３４は、右マウント２２６内に固定され、車輪用駆動部（アクチュエータ）として機能する。
【００３７】
左スイングアーム２１９の側端側には左マウント２２８が固定され、車軸２３２を介して左駆動輪２２０を回転可能に支持する。左駆動輪２２０は、車軸２３２を介して左輪駆動モータ２３６の回転軸Ｃ２に固定されている。左輪駆動モータ２３６は、左マウント２２８内に固定され、車輪用駆動部（アクチュエータ）として機能する。右駆動輪２１８と左駆動輪２２０は、地面と接地し、略同軸上で回転する一対の車輪である。右駆動輪２１８と左駆動輪２２０が、回転することによって、倒立走行ロボット２００が移動する。また、右輪駆動モータ２３４、及び左輪駆動モータ２３６が車輪を駆動させる駆動輪モータとなる。右マウント２２６、及び左マウント２２８が左右の駆動輪を回転可能に支持する車台となる。
【００３８】
右輪駆動モータ２３４及び左輪駆動モータ２３６（以下、モータ２３４、２３６と称することもある。）は例えば、サーボモータである。尚、車輪用アクチュエータは、電気的なモータに限らず、空圧、油圧を使用したアクチュエータでもよい。なお、以下の説明において、右駆動輪２１８と左駆動輪２２０をまとめて、駆動輪と呼ぶこともある。
【００３９】
また、右マウント２２６は、右輪エンコーダ２５２を備えている。右輪エンコーダ２５２は、右駆動輪２１８の回転量としての回転角を検出する。左マウント２２８は、左輪エンコーダ２５４を備えている。左輪エンコーダ２５４は、左駆動輪２２０の回転量としての回転角を検出する。
【００４０】
右スイングアーム２１７は、右上リンク２２１と、右スイング軸２６２と、右スイングアーム駆動モータ２６０を有している。左スイングアーム２１９は、左上リンク２２２と、左スイング軸２６６と、左スイングアーム駆動モータ２６４を有している。車体２１２の下部には、右上リンク２２１及び左上リンク２２２が固定されている。右上リンク２２１には、右スイングアーム駆動モータ２６０が固定され、右スイング軸２６２を介して、回転軸Ｃ４回りに、右スイングアーム２１７を駆動する。左スイング軸２６６には、左スイングアーム駆動モータ２６４が固定され、左スイング軸２６６を介して、回転軸Ｃ５周りに左スイングアーム２１９を駆動する。このように、右スイングアーム２１７には、回転軸Ｃ４回りに回転する回転関節が設けられ、左スイングアーム２１９には、回転軸Ｃ５回りに回転する回転関節が設けられている。右スイングアーム２１７及び左スイングアーム１９（以下、スイングアーム２１７、２１９と称することもある。）に設けられた関節をスイングアーム関節とする。
【００４１】
車体１２には、搭乗席駆動モータ２７０、ラックアンドピニオン２７２、ジャイロセンサ２４８、及び搭乗席２７４が取り付けられている。また、車体２１２には、対向して、右上リンク２２１及び左上リンク２２２が取り付けられている。
【００４２】
車体２１２の中央近傍には、ラックアンドピニオン２７２が設けられている。ラックアンドピニオンのラックは、前後方向に沿って設けられている。ラックアンドピニオン２７２によって、搭乗席２７４が支持されている。即ち、搭乗席２７４は、ラックアンドピニオン２７２を介して車体２１２に取り付けられている。搭乗席２７４は、搭乗者が座ることができる椅子の形状を有する。なお、ラックアンドピニオン２７２の代わりにボールネジなどを用いてスライドさせてもよい。
【００４３】
車体２１２の上部には、搭乗席駆動モータ２７０が固定されている。搭乗席２７４と搭乗席駆動モータ２７０は、ラックアンドピニオン２７２によって連結されている。搭乗席駆動モータ２７０は、回転軸Ｃ３回りに回転する。これにより、ラックアンドピニオン２７２のピニオンに回転力が加えられる。搭乗席駆動モータ２７０の回転運動は、ラックアンドピニオン２７２によって、直線運動に変換される。すなわち、搭乗席駆動モータ２７０を駆動すると、車体２１２に対する搭乗席２７４の位置が前後にスライドする。このとき、搭乗席２７４と搭乗者又は搭乗物との合成重心位置が、車体２１２に対して前後に変化する。なお、車体２１２に対して、搭乗席２７４と搭乗者又は搭乗物との合成重心位置を変化させる手段としては、スライド機構の他に、回転軸機構、旋回機構などで実現することも可能である。また、搭乗席駆動モータ２７０の動力をギアやベルトやプーリなどを介して、搭乗席２７４に伝達してもよい。ここで、搭乗席駆動モータ２７０によって前後に移動する構成全体を車体部２７７とする。車体部２７７には、搭乗席２７４や操作モジュール２４６等が含まれる。もちろん、車体２１２を駆動するアクチュエータを備える場合は、車体部２７７に車体２１２も含まれる。また、搭乗席駆動モータ２７０には、スライド位置を計測するためのエンコーダ（図示せず）が設けられている。
【００４４】
回転軸Ｃ３は回転軸Ｃ１及びＣ２と平行であり、回転軸Ｃ１及びＣ２の上方に位置する。回転軸Ｃ３と回転軸Ｃ１との間に右スイングアーム２１７が設けられ、回転軸Ｃ３と回転軸Ｃ２との間に左スイングアーム２１９が設けられている。右スイングアーム駆動モータ２６０は、右スイングアーム２１７を回転軸Ｃ４回りに回転させ、左スイングアーム駆動モータ２６４は、左スイングアーム２１９を回転軸Ｃ５回りに回転させる。通常の走行時には、回転軸Ｃ１〜回転軸Ｃ５は水平になっている。
【００４５】
さらに、倒立走行ロボット２００には、転倒を防止するために、２つの補助輪２５１が設けられている。補助輪２５１は、補助輪支持ブロック２５５に対して回転可能に支持されている。そして、補助輪支持ブロック２５５は車体２１２に取り付けられている。ここでは、一方の補助輪２５１は、駆動輪の前方側に配置され、他方の補助輪２５１は駆動輪の後方側に配置されている。補助輪２５１は、従動輪であり、倒立走行ロボット２００の移動にしたがって回転する。なお、本実施の形態にかかる倒立走行ロボット２００においては、この補助輪２５１の上部に感圧センサ（不図示）が取り付けられている。補助輪２５１が接地した時点でそのときの垂直方向の圧力を測定可能となっている。
【００４６】
通常の走行を開始するときには、スイングアーム関節を伸ばすことによって、補助輪２５１を離地させる。すなわち、車体２１２が上方に移動するように、スイングアーム関節を移動して、補助輪２５１を上方に移動させる。停止状態では、スイングアーム関節を縮めることによって、補助輪２５１を接地させる。すなわち、スイングアーム関節を屈曲させていくことで、車体２１２が地面に近づき、補助輪２５１が下方に移動する。このように、補助輪２５１を上下に移動させることで、補助輪２５１が接地した接地状態と、離地して二輪で走行する離地状態とを切換えることができる。このように、倒立走行ロボット２００は、立ち上がり時にスイングアームを使って、４輪の接地状態から２輪状態の離地状態へと移行していく。
【００４７】
一方の補助輪２５１の回転軸は、回転軸Ｃ１、Ｃ２よりも前側上方にあり、他方の補助輪２５１の回転軸は、回転軸Ｃ１，Ｃ２よりも後側上方にある。すなわち、補助輪２５１の一方は、駆動輪の車軸よりも前方に配置され、他方は、駆動輪の車軸よりも後方に配置される。これにより、倒立走行ロボット２００が前後に転倒するのを防止することができる。なお、補助輪以外の転倒防止部材によって、転倒を防止してもよい。例えば、前後方向に突出したストッパなどで転倒を防止することができる。
【００４８】
車体２１２には、バッテリーモジュール２４４と、センサ２５８が収納されている。センサ２５８は、例えば、光学式の障害物検知センサであり、倒立走行ロボット２００の前方に障害物を検知すると、検知信号を出力する。また、センサ２５８は、障害物センサ以外のセンサであってもよい。例えば、センサ２５８として、加速度センサを用いることも可能である。もちろん、センサ２５８として、２以上のセンサが用いられていてもよい。センサ２５８は倒立走行ロボット２００の状態に応じて変化する変化量を検出する。バッテリーモジュール２４４は、センサ２５８、ジャイロセンサ２４８、右輪駆動モータ２３４、左輪駆動モータ２３６、右スイングアーム駆動モータ２６０、左スイングアーム駆動モータ２６４、搭乗席駆動モータ２７０、及び制御部２８０等に対して電力を供給する。
【００４９】
車体２１２上には、ジャイロセンサ２４８が設けられている。ジャイロセンサ２４８は、車体２１２の傾斜角に対する角速度を検出する。ここで、車体２１２の傾斜角は、倒立走行ロボット２００の重心位置が車軸２３０、２３２の鉛直上方に伸びる軸からの傾斜度合いであり、例えば倒立走行ロボット２００の進行方向前方に車体２１２が傾斜している場合を「正」とし、倒立走行ロボット２００の進行方向後方に車体２１２が傾斜している場合を「負」として表わす。したがって、車体２１２が水平になっている状態では、傾斜角度が０°になる。そして、通常の走行時には、傾斜角度の制御目標値が０°なっている。この制御目標値に追従するように、フィードバック制御されている。また、前後方向における傾斜角度を倒立走行ロボット２００の姿勢の傾斜角度とする。
【００５０】
また、進行方向の前後方向に加えて、左右方向の傾斜角速度はロール、ピッチ、ヨーの３軸のジャイロセンサ２４８を用いて測定される。このように、ジャイロセンサ２４８は、車体２１２の傾斜角の変化を、車体２１２の傾斜角速度として測定する。もちろん、ジャイロセンサ２４８は他の箇所に取り付けられていてもよい。ジャイロセンサ２４８で測定された傾斜角速度は、倒立走行ロボット２００の姿勢の変化に応じて変化する。即ち、傾斜角速度は、車軸の位置に対する車体２１２の重心位置に応じて変化する変化量である。従って、外乱などによって、姿勢の傾斜角度が急激に変化すると、傾斜角速度の値が大きくなる。
【００５１】
搭乗席７４の側面には、操作モジュール２４６が設けられている。操作モジュール２４６には、操作レバー（図示せず）及びブレーキレバー（図示せず）が設けられている。操作レバーは、搭乗者が倒立走行ロボット２００の走行速度や走行方向を調整するための操作部材である。搭乗者は、操作レバーの操作量を調整することによって倒立走行ロボット１００の移動速度を調整することができる。また、搭乗者は、操作レバーの操作方向を調整することによって倒立走行ロボット２００の移動方向を指定することができる。倒立走行ロボット２００は、操作レバーに加えられた操作に応じて、前進、停止、後退、左折、右折、左旋回、右旋回することができる。搭乗者がブレーキレバーを倒すことによって、倒立走行ロボット２００を制動することができる。倒立走行ロボット２００の進行方向は、水平面内において、車軸２３０、２３２と垂直な方向になる。また、操作モジュール２４６には、制御モードを切換えるスイッチが設けられている。
【００５２】
さらに、搭乗席２７４の背もたれ部分には、制御部２８０が実装されている。制御部２８０は、搭乗者が操作モジュール２４６に対して行なった操作に追従して、右輪駆動モータ２３４及び左輪駆動モータ２３６を制御し、倒立走行ロボット２００の走行（移動）を制御する。制御部２８０は、操作モジュールでの操作に応じて、右輪駆動モータ２３４及び左輪駆動モータ２３６を制御する。これにより、操作モジュール２４６での操作に応じた加速度、速度指令値で右輪駆動モータ２３４及び左輪駆動モータ２３６が駆動する。
【００５３】
制御部２８０は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、通信用のインターフェースなどを有し、倒立走行ロボット２００の各種動作を制御する。そして、この制御部２８０は、例えばＲＯＭに格納された制御プログラムに従って各種の制御を実行する。制御部２８０は、操作モジュール２４６での操作に応じて、所望の加速度、及び目標速度になるように、また、倒立走行ロボット２００が倒立を維持するように、ロバスト制御、状態フィードバック制御、ＰＩＤ制御などの周知のフィードバック制御により、右輪駆動モータ２３４及び左輪駆動モータ２３６を制御する。これにより、倒立走行ロボット２００が、操作モジュール２４６での操作に応じて加減速しながら走行する。
【００５４】
すなわち、操作モジュール２４６は、搭乗者の操作によって与えられた操作量を取得し、この操作量を操作信号として、制御部２８０に出力する。そして、制御部２８０は、操作信号に基づいて、倒立走行ロボット２００の目標加速度や、目標速度を算出し、これに追従するように、倒立走行ロボット２００をフィードバック制御する。これにより、倒立走行ロボット２００を倒立させつつ、移動させることができる。
【００５５】
また、制御部２８０は、右輪駆動モータ２３４、左輪駆動モータ２３６、右スイングアーム駆動モータ２６０、左スイングアーム駆動モータ２６４、及び搭乗席駆動モータ２７０を制御する。ここで、搭乗席駆動モータ２７０が右輪駆動モータ２３４及び左輪駆動モータ２３６と協調して動作するよう、制御部２８０が制御を行う。すなわち、倒立を安定させるように、駆動輪を回転駆動するとともに搭乗席２７４をスライド移動させる。これにより、車体２１２の傾斜角度が小さくなり、倒立を安定させることができる。このようにして、搭乗席駆動モータ２７０が右スイングアーム駆動モータ２６０、左スイングアーム駆動モータ２６４、及び搭乗席駆動モータ２７０と協調して動作する。
【００５６】
次に、上記の制御を行う制御部２８０の構成について図７を用いて説明する。図７は、制御部２８０を含む制御系の構成を示すブロック図である。図７に示すように、制御部２８０は、スイングアーム制御部２８１と、駆動輪・スライド協調制御部２８２とを備えている。また、センサ類２８３は、倒立走行ロボット２００に設けられている各種センサを示すものであり、例えば、ジャイロセン２サ４８、右輪エンコーダ２５２、左輪エンコーダ２５４、センサ２５８等を含んでいる。そして、制御部２８０は、倒立制御計算を行い、制御目標値を算出する。そして、制御目標値と現在値との偏差を求める。尚、現在値は、例えば、センサ類２８３からの出力に基づいて算出することができる。そして、この偏差に所定のフィードバックゲインを乗じて、フィードバック制御を行う。
【００５７】
また、倒立走行ロボット２００には、各モータを駆動制御するアンプが設けられている。ここで、右輪駆動モータ２３４、左輪駆動モータ２３６、右スイングアーム駆動モータ２６０、左スイングアーム駆動モータ２６４、搭乗席駆動モータ２７０に設けられているアンプをそれぞれ、アンプ２３４ａ、アンプ２３６ａ、アンプ２６０ａ、アンプ２６４ａ、アンプ２７０ａとする。各アンプは、制御部２８０からの制御信号に基づいて動作する。制御部２８０は、搭乗席駆動モータ２７０のアンプ２７０ａにスライド位置やスライド力に応じた制御信号を出力する。また、モータ２３４、２３６のアンプ２３４ａ、２３６ａに車輪トルクに応じた制御信号を出力する。
【００５８】
スイングアーム制御部２８１は、右スイングアーム駆動モータ２６０、及び左スイングアーム駆動モータ２６４を制御する。例えば、スイングアーム制御部２８１は制御信号を出力して、スイングアームが伸縮するようにスイングアーム関節２６７を駆動する。これにより、補助輪２５１が接地している接地状態と、離地している離地状態とを切換えることができる。また、傾斜面を走行するときは、ジャイロセンサ２４８などの出力に基づいて、制御信号を出力する。これにより、傾斜面の角度が吸収され、車体２１２が水平になる。スイングアーム制御部２８１からの制御信号は、アンプ２６０ａ、２６４ａを介して、右スイングアーム駆動モータ２６０、左スイングアーム駆動モータ２６４に入力され、右スイングアーム駆動モータ２６０、左スイングアーム駆動モータ２６４が駆動する。なお、スイングアーム関節の回転角を検出するエンコーダを設けて、フィードバック制御してもよい。すなわち、スイングアーム関節２６７の関節角度や関節角速度に応じてフィードバック制御することができる。
【００５９】
駆動輪・スライド協調制御部２８２は、右輪駆動モータ２３４、左輪駆動モータ２３６、及び搭乗席駆動モータ２７０を協調して制御する。すなわち、駆動輪・スライド協調制御部２８２は、右輪駆動モータ２３４、左輪駆動モータ２３６、及び搭乗席駆動モータ２７０に対する制御目標値を算出する。例えば、姿勢の傾斜角度、姿勢の傾斜角速度、並びに駆動輪の回転速度、及び搭乗席２７４のスライド速度が制御目標値として算出される。車体２１２の傾斜角速度は、ジャイロセンサ２４８で測定される。そして、傾斜角速度を積分することによって、車体２１２の傾斜角度が求まる。例えば、倒立走行時には、姿勢の目標傾斜角度が０°になるようにフィードバック制御する。また、その場で停止させる場合は、目標傾斜角速度が０になるようにフィードバック制御する。
【００６０】
また、駆動輪２７８の回転速度は、右輪エンコーダ２５２、及び左輪エンコーダ２５４の出力によって、求めることができる。スライド機構２６８のスライド速度は、搭乗席駆動モータ２７０に設けられているエンコーダの出力により求めることができる。また、スライド機構２６８は、搭乗席駆動モータ２７０の回転トルクにより求めることができる。そして、これらの制御目標値と、現在値との偏差に適切なフィードバックゲインをかけることで、フィードバック制御が行われる。もちろん、駆動輪・スライド協調制御部８２による、右輪駆動モータ２３４、左輪駆動モータ２３６、及び搭乗席駆動モータ２７０の協調制御は、上記の制御に限られるものではない。
【００６１】
また、制御部２８０は、接地状態から離地状態に移行する立ち上がり時において、補助輪５１が完全に離地してから、協調制御を開始する。すなわち、スイングアームの関節角度がある角度に駆動するまで、協調制御による倒立を開始しない。したがって、スイングアームの関節角度がある角度まで駆動した後に、駆動輪とスライド機構の動作が開始する。このようにすることで、立ち上がり時における、安全性を向上することができる。すなわち、補助輪２５１が少しでも接地している段階では、倒立制御を行っても、姿勢の傾斜角度、及び傾斜角速度が変化しないおそれがある。傾斜角度や傾斜角速度が変化しない状態で、これらに基づいてフィードバック制御を行うと制御を安定させることができない。すなわち、駆動輪を駆動しても、傾斜角度や傾斜角速度が全く変化しないため、倒立制御が不安定になり、暴走してしまうことがある。しかしながら、本実施の形態に示すように、スイングアーム関節の角度を検出することで、補助輪の両方が確実に地面から離れていることを確認することができる。すなわち、補助輪２５１が完全に離地した後に協調動作を開始することで、安全に立ち上がることが可能になる。
【００６２】
このように、制御部２８０は、車体２１２の高さを変更する際において、スイングアーム関節が一定の駆動量以上、駆動したか否かを判定している。すなわち、スイングアーム関節の関節角度が一定以上になったか否かを判定している。そして、一定の駆動量以上になった後に、協調制御を開始する。すなわち、ある所定の角度以上、スイングアーム関節を駆動したら、協調制御の計算を開始する。したがって、スイングアーム関節が所定の角度になるまでは、協調制御の計算を行わない。これにより、補助輪２５１が地面に接触した状態で倒立制御が行われるのを防止することができ、より安定に倒立させることができる。
【００６３】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態にかかる倒立走行ロボット１を示す図である。
【図２】本発明の実施の形態にかかる倒立走行ロボットの制御システムを示す図である。
【図３】観測点高さに応じたゲイン変更の一例を示す図である。
【図４】補助輪高さＺＰＲ，ＺＱＲを算出するための各種パラメータを示す図である。
【図５】本発明の実施の形態の具体例にかかる倒立走行ロボットの構成を模式的に示す側面図である。
【図６】本発明の実施の形態の具体例にかかる倒立走行ロボットの構成を模式的に示す正面図である。
【図７】本発明の実施の形態の具体例にかかる制御部を含む制御系の構成を示すブロック図である。
【図８】従来の倒立二輪型ロボットの制御部を示す図である。
【図９】従来の倒立二輪型ロボットの構成を示す図である。
【符号の説明】
【００６５】
１、２００  倒立走行ロボット、１１  車体、１２  スイングアーム、
１３  スイングアーム軸、１４  駆動輪軸、１５  駆動輪、
１６  補助輪、２１  倒立走行コントローラ、２２  ゲイン、
２３  駆動部、２４  センサ、２６  算出部、２７  減算器、
２１２  車体、２１７  右スイングアーム、２１８  右駆動輪、
２１９  左スイングアーム、２２０  左駆動輪、２２１  右上リンク、
２２２  左上リンク、２２６  右マウント、２２８  左マウント、
２３０，２３２  車軸、２３４  右輪駆動モータ、
２３４ａ、２３６ａ、２６０ａ、２６４ａ、２７０ａ  アンプ、
２３６  左輪駆動モータ、２４４  バッテリーモジュール、
２４６  操作モジュール、２４８  ジャイロセンサ、２５１  補助輪、
２５２  右輪エンコーダ、２５４  左輪エンコーダ、２５５  補助輪支持ブロック、
２５８  センサ、２６０  右スイングアーム駆動モータ、
２６２  右スイング軸、２６４  左スイングアーム駆動モータ、
２６６  左スイング軸、２６７  スイングアーム関節、２６８  スライド機構、
２７０  搭乗席駆動モータ、２７２  ラックアンドピニオン、２７４  搭乗席、
２７７  車体部、２７８  駆動輪、２８０  制御部、２８１  スイングアーム制御部、
２８２  駆動輪・スライド協調制御部、２８３  センサ類
【図１】
0005092683.tif 000003
【図２】
0005092683.tif 000004
【図３】
0005092683.tif 000005
【図４】
0005092683.tif 000006
【図５】
0005092683.tif 000007
【図６】
0005092683.tif 000008
【図７】
0005092683.tif 000009
【図８】
0005092683.tif 000010
【図９】
0005092683.tif 000011