(57)【要約】【課題】サーボ制御において、センサ異常を、より高速に検出すること。【解決手段】本発明にかかる倒立二輪車は、車輪を回転させるモータと、モータにおける所定の物理量をセンサ値として検出する第１のセンサと、モータにおける第１のセンサが検出する物理量と同一種類の物理量をセンサ値として検出する第２のセンサと、第１のセンサが検出したセンサ値に基づくモータの第１の出力値と、第１の出力値の目標値との偏差である第１の偏差に基づいて、モータをサーボ制御することで倒立二輪車を制御する制御部を備える。制御部は、第１の偏差と、第２のセンサが検出したセンサ値に基づくモータの第２の出力値と第２の出力値の目標値との偏差である第２の偏差との偏差の大きさが、所定の閾値以上であると判定した場合、第１のセンサ又は第２のセンサの異常に応じた制御として予め定められた異常時制御を実施する。【選択図】図３
2014159188.tif 000002
【特許請求の範囲】
【請求項１】
車輪を回転させて移動する倒立二輪車であって、
前記車輪を回転させるモータと、
前記モータにおける所定の物理量をセンサ値として検出する第１のセンサと、
前記モータにおける前記第１のセンサが検出する物理量と同一種類の物理量をセンサ値として検出する第２のセンサと、
前記第１のセンサが検出したセンサ値に基づく前記モータの第１の出力値と、前記第１の出力値の目標値との偏差である第１の偏差に基づいて、前記モータをサーボ制御することで前記倒立二輪車を制御する制御部と、を備え、
前記制御部は、前記第１の偏差と、前記第２のセンサが検出したセンサ値に基づく前記モータの第２の出力値と前記第２の出力値の目標値との偏差である第２の偏差との偏差の大きさが、所定の閾値以上であると判定した場合、前記第１のセンサ又は前記第２のセンサの異常に応じた制御として予め定められた異常時制御を実施する、
倒立二輪車。
【請求項２】
前記制御部は、
さらに、前記第２の偏差に基づいて、前記モータをサーボ制御し、
前記異常時制御として、前記第１の偏差が前記第２の偏差よりも大きい場合、前記第１のセンサを切り離して前記倒立二輪車の制御を実施するとともに、前記第１の偏差が前記第２の偏差よりも大きくない場合、前記第２のセンサを切り離して前記倒立二輪車の制御を実施する、
請求項１に記載の倒立二輪車。
【請求項３】
前記第１のセンサ及び前記第２のセンサは、前記所定の物理量として、前記モータのトルクを検出し、
前記制御部は、
前記第１のセンサが検出した前記モータのトルクを、前記第１の出力値とし、
前記第２のセンサが検出した前記モータのトルクを、前記第２の出力値とし、
前記第１の偏差又は前記第２の偏差が所定のトルク偏差閾値以上であると判定した場合、前記倒立二輪車を停止させる降車制御を実施する、
請求項１又は２に記載の倒立二輪車。
【請求項４】
前記制御部は、前記第１の偏差又は前記第２の偏差が所定のトルク偏差閾値以上である状態が、所定の時間以上継続したと判定した場合、前記降車制御を実施する、
請求項３に記載の倒立二輪車。
【請求項５】
前記第１のセンサ及び前記第２のセンサは、前記所定の物理量として、前記モータの回転角を検出し、
前記制御部は、
前記第１のセンサが検出した前記モータの回転角に基づいて算出した前記モータの角速度を、前記第１の出力値とし、
前記第２のセンサが検出した前記モータの回転角に基づいて算出した前記モータの角速度を、前記第２の出力値とし、
前記第１の偏差又は前記第２の偏差が所定の速度偏差閾値以上であると判定した場合、前記第１の偏差又は前記第２の偏差が所定の速度偏差閾値未満である場合よりも前記モータの角速度を低下させる過回転防止制御、前記倒立二輪車を停止させる降車制御、又は、前記サーボ制御における制御ゲインを下げるゲイン低下制御を実施する、
請求項１又は２に記載の倒立二輪車。
【請求項６】
前記制御部は、
前記第１の偏差又は前記第２の偏差が所定の速度偏差閾値以上である状態が、所定の時間以上継続したと判定した場合、前記降車制御又は前記ゲイン低下制御を実施し、
前記第１の偏差又は前記第２の偏差が所定の速度偏差閾値以上である状態が、所定の時間以上継続していないと判定した場合、前記過回転防止制御を実施する、
請求項５に記載の倒立二輪車。
【請求項７】
前記車輪は、第１の車輪であり、
前記モータは、前記第１の車輪を回転させる第１のモータであり、
前記倒立二輪車は、前記第１の車輪及び第２の車輪を回転させて移動するものであり、
前記倒立二輪車は、さらに、
前記第２の車輪を回転させる第２のモータと、
前記第２のモータにおける前記第１のセンサが検出する物理量と同一種類の物理量をセンサ値として検出する第３のセンサと、
前記第２のモータにおける前記第１のセンサが検出する物理量と同一種類の物理量をセンサ値として検出する第４のセンサと、を備え、
前記制御部は、さらに、
前記第１の偏差に基づいて、前記第１のモータをサーボ制御するとともに、前記第３のセンサが検出したセンサ値に基づく前記モータの第３の出力値と、前記第３の出力値の目標値との偏差である第３の偏差に基づいて、前記第２のモータをサーボ制御することで、前記倒立二輪車を倒立制御し、
前記第３の偏差と、前記第４のセンサが検出したセンサ値に基づく前記モータの第４の出力値と前記第４の出力値の目標値との偏差である第４の偏差との偏差の大きさが、所定の閾値以上であると判定した場合、前記第３のセンサ又は前記第４のセンサの異常に応じた制御として予め定められた異常時制御を実施する、
請求項１に記載の倒立二輪車。
【請求項８】
モータにおける所定の物理量をセンサ値として検出する第１のセンサから取得したセンサ値に基づくモータの第１の出力値と、前記第１の出力値の目標値との偏差である第１の偏差に基づいて、前記モータをサーボ制御することで車輪を回転させて移動する倒立二輪車の制御方法であって、
前記モータにおける前記第１のセンサが検出する物理量と同一種類の物理量をセンサ値として検出する第２のセンサからセンサ値を取得するステップと、
前記第１の偏差と、前記第２のセンサから取得したセンサ値に前記第２のセンサが検出したセンサ値に基づく前記モータの第２の出力値と前記第２の出力値の目標値との偏差である第２の偏差との偏差の大きさが、所定の閾値以上であると判定した場合、前記第１のセンサ又は前記第２のセンサの異常に応じた制御として予め定められた異常時制御を実施するステップと、
を備えた制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、倒立二輪車及びその制御方法に関し、特にサーボ制御により倒立二輪車を制御する技術に関する。
【背景技術】
【０００２】
特許文献１に開示されるように、人間を運ぶための車両が検討されてきている。特許文献１に開示の個人用輸送車は、シャフトフィードバックセンサによって提供された位置信号から微分機によってシャフトの回転速度を算出し、フィードバック制御を行っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４１６２９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本願出願人は、搭乗者を搭乗させて移動する倒立二輪車のサーボ制御（フィードバック制御）において、以下に説明する課題を見出した。図１１、１２を参照して、その課題について説明する。なお、以下に説明する内容は、本願出願人が新たに検討した内容であって、従来技術を説明するものではない。
【０００５】
図１１に示すように、サーボ制御では、センサが検出したセンサ値によって得られる現在の制御対象からの出力値と、出力値の目標値との偏差に基づいて、制御対象を制御する指令値を決定する。倒立二輪車においては、車輪を回転させるためのモータが制御対象となり、そのモータからの出力値と、その出力値の目標値との偏差に基づいて、出力値を目標値に近づけるようにモータを制御することで、倒立二輪車の倒立状態の維持が図られる。しかし、センサが故障して正しいセンサ値を取得できなくなっている場合、そのセンサ値から正しい出力値を得ることもできないため、その出力値と目標値との偏差に基づいて決定される指令値を、どんなに出力しても制御が安定しない。したがって、サーボ制御においては、センサの故障を速やかに検出し、対応することが重要である。
【０００６】
ここで、センサの故障を検出する手法として、目標値と出力値との偏差を観測して、その偏差が一定の閾値以上となり、目標値と出力値との乖離が発生した場合に、センサが故障していると判定する手法が考えられる。
【０００７】
しかし、この手法では、図１２に示すように、センサが故障していないが、外乱によって出力値が大きくなってしまった場合に、センサの故障として誤検出しないようにするために、閾値を大きめにとる必要があり、故障を検出するまでの高速性に欠けるという課題があった。
【０００８】
本発明は、上述した知見に基づいてなされたものであって、サーボ制御において、センサ異常を、より高速に検出することが可能となる倒立二輪車及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様にかかる倒立二輪車は、車輪を回転させて移動する倒立二輪車であって、前記車輪を回転させるモータと、前記モータにおける所定の物理量をセンサ値として検出する第１のセンサ第２のセンサと、前記第１のセンサが検出したセンサ値に基づく前記モータの第１の出力値と、前記第１の出力値の目標値との偏差である第１の偏差に基づいて、前記モータをサーボ制御することで前記倒立二輪車を制御する制御部と、を備え、前記制御部は、前記第１の偏差と、前記第２のセンサが検出したセンサ値に基づく前記モータの第２の出力値と前記第２の出力値の目標値との偏差である第２の偏差との偏差の大きさが、所定の閾値以上であると判定した場合、前記第１のセンサ又は前記第２のセンサの異常に応じた制御として予め定められた異常時制御を実施するものである。
【００１０】
本発明の第２の態様にかかる制御方法は、モータにおける所定の物理量をセンサ値として検出する第１のセンサから取得したセンサ値に基づくモータの第１の出力値と、前記第１の出力値の目標値との偏差である第１の偏差に基づいて、前記モータをサーボ制御することで車輪を回転させて移動する倒立二輪車の制御方法であって、前記モータにおける前記第１のセンサが検出する物理量と同一種類の物理量をセンサ値として検出する第２のセンサからセンサ値を取得するステップと、前記第１の偏差と、前記第２のセンサから取得したセンサ値に前記第２のセンサが検出したセンサ値に基づく前記モータの第２の出力値と前記第２の出力値の目標値との偏差である第２の偏差との偏差の大きさが、所定の閾値以上であると判定した場合、前記第１のセンサ又は前記第２のセンサの異常に応じた制御として予め定められた異常時制御を実施するステップと、を備えたものである。
【発明の効果】
【００１１】
上述した本発明の各態様では、第２のセンサは、モータにおける第１のセンサが検出する物理量と同一の物理量をセンサ値として検出するようにしている。そのため、モータに対する外乱の影響は、第１のセンサのセンサ値にも第２のセンサのセンサ値にも同様に反映されるので、第１のセンサ及び第２のセンサが正常であれば、外乱の有無に関わらず、第１のセンサのセンサ値に基づく第１の偏差と、第２のセンサのセンサ値に基づく第２の偏差は、常にほぼ同一の値となる。すなわち、第１の偏差と第２の偏差の偏差は、常に非常に小さな値となる。したがって、上述した本発明の各態様によれば、第１の偏差と第２の偏差の偏差に対する閾値を小さな値としても、外乱によってセンサ異常を誤検出することがないため、閾値を小さな値として、センサ異常による第１の偏差と第２の偏差の偏差の拡大を高速に検出することが可能となる。
【００１２】
すなわち、上述した本発明の各態様によれば、サーボ制御において、センサ異常を、より高速に検出することが可能となる倒立二輪車及びその制御方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る倒立二輪車の概要構成を示す図である。
【図２】実施の形態１に係る制御装置の構成を示すブロック図である。
【図３】実施の形態１に係るＣＰＵとサーボモータとの接続関係を示す図である。
【図４】実施の形態１に係るサーボ制御のモデルを示す図である。
【図５Ａ】０系のＣＰＵにおける目標値と現在値との関係の一例を示す図である。
【図５Ｂ】１系のＣＰＵにおける目標値と現在値との関係の一例を示す図である。
【図５Ｃ】０系の偏差と１系の偏差との偏差の一例を示す図である。
【図６】実施の形態１に係る制御装置による故障診断処理を示すフローチャートである。
【図７】実施の形態１に係る制御装置による故障診断処理を示すフローチャートである。
【図８】実施の形態２に係る制御装置の構成を示すブロック図である。
【図９】実施の形態２に係るＣＰＵとサーボモータとの接続関係を示す図である。
【図１０】実施の形態２に係る制御装置による故障診断処理を示すフローチャートである
【図１１】サーボ制御のモデルの一例を示す図である。
【図１２】目標値と出力値との関係の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下に図面を参照しながら、本発明の好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項等については、適宜、省略及び簡略化がなされている。
【００１５】
以下、実施の形態１では、サーボ制御として、トルクサーボ制御を実施する例について説明し、実施の形態２では、サーボ制御として、速度サーボ制御を実施する例について説明する。
【００１６】
＜発明の実施の形態１＞
図１を参照して、本実施の形態１にかかる倒立二輪車１の概要構成について説明する。図１は、本実施の形態１にかかる倒立二輪車１の概要構成を示す図である。
【００１７】
倒立二輪車１は、ハンドル４を把持してステップカバー３に搭乗した搭乗者が、倒立二輪車１の前後方向に荷重を作用させた際における、前後方向への倒立二輪車１の姿勢角（ピッチ角）をセンサを利用して検出し、この検出結果に基づいて、倒立二輪車１の倒立状態を維持するように左右の車輪２を駆動するモータを制御する。すなわち、倒立二輪車１は、ステップカバー３に搭乗した搭乗者が前方に荷重を作用させて倒立二輪車１を前方に傾斜させると、倒立二輪車１の倒立状態を維持するように前方に加速し、搭乗者が後方に荷重を作用させて倒立二輪車１を後方に傾斜させると、倒立二輪車１の倒立状態を維持するように後方に加速するように、左右の車輪２を駆動するモータを制御する。倒立二輪車１は、制御の安定性を確保するために、モータを制御する制御系が２重化されている。
【００１８】
なお、これらのモータの制御は、倒立二輪車１に搭載された制御装置１０によって行われる。
【００１９】
続いて、図２を参照して、本実施の形態１にかかる制御装置１０の構成について説明する。図２は、本実施の形態１にかかる制御装置１０の構成を示すブロック図である。
【００２０】
制御装置１０は、マイクロコントローラ１１、１２（以下、「マイコン」とも呼ぶ）、インバータ１３〜１６、モータ１７、１８、トルクセンサ１９〜２２、及びジャイロセンサ２３、２４を有する。トルクセンサ１９〜２２は、トルクを直接計測するストレインゲージを用いても良いし、モータ電流を計測し、トルクを関節計測してもよい。
【００２１】
制御装置１０は、倒立二輪車１の制御の安定性を確保するために、その制御系を、０系の制御系と１系の制御系とに二重化させた二重系システムとなっている。０系の制御系は、マイコン１１、インバータ１３、１４、トルクセンサ１９、２０、及びジャイロセンサ２３を含む。１系の制御系は、マイコン１２、インバータ１５、１６、トルクセンサ２１、２２、及びジャイロセンサ２４を含む。
【００２２】
マイコン１１、１２のそれぞれは、ジャイロセンサ２３、２４のそれぞれから出力される角速度信号に基づいて、上述したように、倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御するＥＣＵ（Electronic Control Unit）である。マイコン１１、１２のそれぞれは、ＣＰＵ（Central Processing Unit）及び記憶部を有し、記憶部に格納されたプログラムを実行することによって、本実施の形態におけるマイコン１１、１２のそれぞれとしての処理を実行する。すなわち、マイコン１１、１２のそれぞれの記憶部に格納されるプログラムは、本実施の形態におけるマイコン１１、１２のそれぞれにおける処理を、ＣＰＵに実行させるためのコードを含む。なお、記憶部は、例えば、このプログラムや、ＣＰＵにおける処理に利用される各種情報を格納することができる任意の記憶装置を含んで構成される。記憶装置は、例えば、メモリ等である。
【００２３】
マイコン１１は、モータ１７を制御する指令値をインバータ１３に出力する。また、マイコン１１は、モータ１８を制御する指令値をインバータ１４に出力する。マイコン１２は、モータ１７を制御する指令値をインバータ１５に出力する。また、マイコン１２は、モータ１８を制御する指令値をインバータ１６に出力する。具体的には、マイコン１１、１２のそれぞれは、ジャイロセンサ２３、２４のそれぞれから出力される角速度信号が示す倒立二輪車１のピッチ軸周りの角速度（ピッチ角速度）を積分することで倒立二輪車１の前後方向の姿勢角（ピッチ角）を算出し、算出した姿勢角に基づいて倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御する指令値を生成する。
【００２４】
ここで、制御装置１０は、ジャイロセンサ２３、２４に代えて、倒立二輪車１の前後方向の姿勢角（ピッチ角）を検出し、検出した姿勢角を示す姿勢角信号をマイコン１１、１２のそれぞれ出力する姿勢角センサを有するようにしてもよい。姿勢角センサは、例えば、加速度センサ及びジャイロセンサによって、倒立二輪車１の姿勢角を検出するように構成される。そして、マイコン１１、１２のそれぞれは、姿勢角センサから出力された姿勢角信号が示す姿勢角に基づいて、倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御する指令値を生成するようにしてもよい。
【００２５】
また、マイコン１１、１２のそれぞれは、トルクセンサ１９、２１のそれぞれから出力される、モータ１７のトルクを示すトルク信号に基づいて、モータ１７をサーボ制御（フィードバック制御）するように、インバータ１３、１５のそれぞれに対する指令値を生成する。また、マイコン１１、１２のそれぞれは、トルクセンサ２０、２２のそれぞれから出力される、モータ１８のトルクを示すトルク信号に基づいて、モータ１８をサーボ制御（フィードバック制御）するように、インバータ１４、１６のそれぞれに対する指令値を生成する。
【００２６】
インバータ１３は、マイコン１１から出力された指令値に基づいて、ＰＷＭ（Pulse Width Modulation）制御を行うことで、モータ１７を駆動する駆動電流を生成してモータ１７に供給する。インバータ１４は、マイコン１１から出力された指令値に基づいて、ＰＷＭ制御を行うことで、モータ１８を駆動する駆動電流を生成してモータ１８に供給する。インバータ１５は、マイコン１２から出力された指令値に基づいて、ＰＷＭ制御を行うことで、モータ１７を駆動する駆動電流を生成してモータ１７に供給する。インバータ１６は、マイコン１２から出力された指令値に基づいて、ＰＷＭ制御を行うことで、モータ１８を駆動する駆動電流を生成してモータ１８に供給する。
【００２７】
モータ１７、１８のそれぞれは、二重巻線のモータである。モータ１７は、インバータ１３から供給される駆動電流と、インバータ１５から供給される駆動電流とに基づいて駆動される。モータ１７を駆動することによって、倒立二輪車１の左側の車輪２が回転する。モータ１８は、インバータ１４から供給される駆動電流と、インバータ１６から供給される駆動電流とに基づいて駆動される。モータ１８を駆動することによって、倒立二輪車１の右側の車輪２が回転する。
【００２８】
トルクセンサ１９は、モータ１７のトルクを検出し、検出したトルクを示すトルク信号を生成してマイコン１１に出力する。トルクセンサ２０は、モータ１８のトルクを検出し、検出したトルクを示すトルク信号を生成してマイコン１１に出力する。トルクセンサ２１は、モータ１７のトルクを検出し、検出したトルクを示すトルク信号を生成してマイコン１２に出力する。トルクセンサ２２は、モータ１８のトルクを検出し、検出したトルクを示すトルク信号を生成してマイコン１２に出力する。
【００２９】
ジャイロセンサ２３、２４のそれぞれは、搭乗者がステップカバー３に対して、倒立二輪車１の前後方向に荷重を作用させた際における、倒立二輪車１の前後方向に対する角速度（ピッチ軸周りの角速度、ピッチ角速度）を検出し、検出した角速度を示す角速度信号をマイコン１１、１２のそれぞれに出力する。
【００３０】
続いて、図３〜図５Ｃを参照して、本実施の形態１にかかる故障診断方法について説明する。図３は、本実施の形態１にかかるＣＰＵ１１０、１２０とサーボモータ１７０、１８０との接続関係を示す図である。図４は、実施の形態１にかかるサーボ制御のモデルを示す図である。
【００３１】
図３に示すように、マイコン１１、１２のそれぞれは、上述したように、倒立二輪車１の制御に関する各種処理を実行するＣＰＵ１１０、１２０のそれぞれを有する。制御装置１０は、ＣＰＵ１１０とＣＰＵ１２０とを接続するＣＰＵ間通信路２００を有する。ＣＰＵ１１０とＣＰＵ１２０とは、ＣＰＵ間通信路２００を介して相互に情報を送受信しつつ、倒立二輪車１の倒立制御を実施する。また、制御装置１０は、サーボモータ１７０として、モータ１７及びトルクセンサ１９、２１を有し、サーボモータ１８０として、モータ１８及びトルクセンサ２０、２２を有する。
【００３２】
以下、左モータ１７のトルクを検出するトルクセンサ１９、２１の故障を診断する例を挙げて、故障診断方法の概要について説明する。０系のＣＰＵ１１０及び１系のＣＰＵ１２０のそれぞれは、図４に示すモデルのように、モータ１７のサーボ制御及びトルクセンサ１９、２１の故障診断を行う。
【００３３】
０系のＣＰＵ１１０は、所定の一定時間間隔毎に、トルクセンサ１９から出力されたトルク信号を取得する。ＣＰＵ１１０は、下記の式（１）によって、左モータ１７のトルクの目標値と、取得したトルク信号が示す左モータ１７のトルクとの偏差を算出する。ＣＰＵ１１０は、算出した偏差を利用したＰＩＤ制御によって左モータ１７に対する指令値を算出し、インバータ１３に出力する。また、このとき、ＣＰＵ１１０は、算出した偏差を示す偏差情報を、ＣＰＵ間通信路２００を介して他系のＣＰＵ１２０に出力する。
【００３４】
同様に、１系のＣＰＵ１２０は、所定の一定時間間隔毎に、トルクセンサ２１から出力されたトルク信号を取得する。ＣＰＵ１２０は、下記の式（１）によって、左モータ１７のトルクの目標値と、取得したトルク信号が示す左モータ１７のトルクとの偏差を算出する。ＣＰＵ１１０は、算出した偏差を利用したＰＩＤ制御によって左モータ１７に対する指令値を算出し、インバータ１５に出力する。また、このとき、ＣＰＵ１１０は、算出した偏差を示す偏差情報を、ＣＰＵ間通信路２００を介して他系のＣＰＵ１２０に出力する。
【００３５】
すなわち、本実施の形態１では、トルクセンサ１９〜２２からのトルク信号が示すトルクを、制御対象であるモータ１７、１８からの出力値として扱う。
【００３６】
偏差  ＝  目標値  −  現在値（現在の出力値）  ・・・  （１）
【００３７】
そして、ＣＰＵ１１０は、下記の式（２）によって、自身が算出した偏差（０系の偏差）と、他系のＣＰＵ１２０から出力された偏差情報が示す偏差（１系の偏差）との偏差を算出する。ＣＰＵ１１０は、算出した「偏差の偏差」の大きさが、所定の閾値以上となる場合、トルクセンサ１９又はトルクセンサ２１が故障していると判定する。
【００３８】
同様に、ＣＰＵ１２０は、下記の式（２）によって、自身が算出した偏差（１系の偏差）と、他系のＣＰＵ１１０から出力された偏差情報が示す偏差（０系の偏差）との偏差を算出する。ＣＰＵ１２０は、算出した「偏差の偏差」の大きさが、所定の閾値以上となる場合、トルクセンサ１９又はトルクセンサ２１が故障していると判定する。
【００３９】
なお、「偏差の偏差」の大きさが、所定の閾値以上となるか否かは、偏差の偏差が、所定の上限閾値以上、又は、所定の下限閾値以下となるか否かによって判定するようにしてもよく、「偏差の偏差」の絶対値が、所定の閾値以上となるか否かによって判定するようにしてもよい。また、「偏差の偏差」は、式（２）に示すように、０系の偏差から１系の偏差を減算したものに限られず、１系の偏差から０系の偏差を減算したものとしてもよい。
【００４０】
偏差の偏差  ＝  ０系の偏差  −  １系の偏差  ・・・  （２）
【００４１】
図５Ａ〜Ｃを参照して、上記の故障診断方法における故障検出の高速性について説明する。図５Ａは、０系のＣＰＵ１１０における、目標値と現在値（トルクセンサ１９で検出したトルク）との関係の一例を示す図である。図５Ｂは、１系のＣＰＵ１２０における、目標値と現在値（トルクセンサ２１で検出したトルク）との関係の一例を示す図である。
【００４２】
図５Ａ及び図５Ｂに示すように、左モータ１７に対してトルクの外乱がかかった場合には、そのトルクがトルクセンサ１９及びトルクセンサ２１の両方で検出される。すなわち、トルクセンサ１９及びトルクセンサ２１が正常に動作している場合には、左モータ１７に対してトルクの外乱がかかっているか否かに関わらず、トルクセンサ１９とトルクセンサ２１とで、ほぼ同一のトルクが検出され、ＣＰＵ１１０及びＣＰＵ１２０のそれぞれで算出される偏差も、ほぼ同一のものが算出される。よって、上記の「偏差の偏差」は、常に、非常に小さな値をとる。
【００４３】
一方、トルクセンサ１９及びトルクセンサ２１の少なくともいずれか一方が故障し、正常にトルクを検出することができなくなってしまった場合には、トルクセンサ１９とトルクセンサ２１とで異なるトルクが検出され、ＣＰＵ１１０及びＣＰＵ１２０のそれぞれで算出される偏差も異なるものが算出される。よって、上記の「偏差の偏差」も、大きな値をとる。
【００４４】
以上に説明したように、トルクセンサ１９、２１が正常であれば、０系の偏差と１系の偏差がほぼ同じ値となるため、「偏差の偏差」は、その算出過程において偏差と偏差を減算することによって、トルクの外乱の分の偏差が相殺されて、常に、非常に小さな値をとる。その一方で、トルクセンサ１９、２１が故障して正常なトルクを検出することができなくなってしまった場合には、０系の偏差と１系の偏差が全く異なる値となってしまうため、「偏差の偏差」は、正又は負の方向に大きな値をとる。
【００４５】
したがって、本実施の形態１における故障診断方法によれば、図５Ｃに示すように、「偏差の偏差」に対する閾値を非常に小さな値としても、外乱による影響でトルクセンサ１９、２１の故障を誤検出することがなくなる。そして、閾値を非常に小さな値とすることができるため、「偏差の偏差」が閾値を超えることによる、トルクセンサ１９、２１の故障を高速に検出することが可能となる。
【００４６】
以上に説明した故障診断は、右モータ１８に対しても実施するが、上述した左モータ１７に対する故障診断方法と同様であるため、その説明は省略する。すなわち、この場合、０系のＣＰＵ１１０は、０系の偏差として、右モータ１８のトルクの目標値と、トルクセンサ２０から出力されたトルク情報が示す右モータ１８のトルクとの偏差を算出することになる。また、１系のＣＰＵ１２０は、１系の偏差として、右モータ１８のトルクの目標値と、トルクセンサ２２から出力されたトルク情報が示す右モータ１８のトルクとの偏差を算出することになる。
【００４７】
続いて、図６及び図７を参照して、実施の形態１にかかる制御装置１０による故障診断処理について説明する。図６及び図７は、実施の形態１にかかる制御装置１０による故障診断処理を示すフローチャートである。
【００４８】
ここでは、ＣＰＵ１１０、１２０が、左モータ１７のトルクを検出するトルクセンサ１９、２１に関する故障診断処理を例に挙げて説明するが、上述したように右モータ１８のトルクを検出するトルクセンサ２０、２２に関しても同様に故障診断処理を並行して実施することが可能である。まず、図６を参照して説明する。
【００４９】
０系のＣＰＵ１１０及び１系のＣＰＵ１２０のそれぞれは、所定の一定時間間隔毎に、０系の偏差と、１系の偏差の偏差を算出する（Ｓ１）。具体的には、０系のＣＰＵ１１０は、左モータ１７のトルクの目標値と、トルクセンサ１９から出力されたトルク信号が示す左モータ１７のトルクとの偏差を、０系の偏差として算出するとともに、その偏差を示す偏差情報を、１系のＣＰＵ１２０に出力する。１系のＣＰＵ１２０は、左モータ１７のトルクの目標値と、トルクセンサ２１から出力されたトルク信号が示す左モータ１７のトルクとの偏差を、１系の偏差として算出するとともに、その偏差を示す偏差情報を、０系のＣＰＵ１１０に出力する。そして、０系のＣＰＵ１１０は、算出した０系の偏差と、１系のＣＰＵ１２０から出力された偏差情報が示す１系の偏差との偏差を算出する。１系のＣＰＵ１２０は、算出した１系の偏差と、０系のＣＰＵ１１０から出力された偏差情報が示す０系の偏差との偏差を算出する。
【００５０】
なお、右モータ１８に対応するトルクセンサ２０、２２に関する故障診断処理では、ＣＰＵ１１０は、０系の偏差として、右モータ１８に対するトルクの目標値と、トルクセンサ２０から出力されたトルク信号が示す右モータ１８のトルクとの偏差を算出することになる。また、ＣＰＵ１２０は、１系の偏差として、右モータ１８に対するトルクの目標値と、トルクセンサ２２から出力されたトルク信号が示す右モータ１８のトルクとの偏差を算出することになる。
【００５１】
ＣＰＵ１１０、１２０のそれぞれは、算出した「偏差の偏差」の大きさが、所定の閾値以上となるか否かを判定する（Ｓ２）。
【００５２】
ＣＰＵ１１０、１２０のそれぞれは、「偏差の偏差」の大きさが、所定の閾値未満であると判定した場合（Ｓ２：Ｎｏ）、偏差が大きくなっていてもそのトルクを外乱であると推定し、偏差の量に応じた制御を実施する（Ｓ３）。なお、このステップＳ３の処理については、図７を参照して後述する。
【００５３】
ＣＰＵ１１０、１２０のそれぞれは、「偏差の偏差」の大きさが、所定の閾値以上であると判定した場合（Ｓ２：Ｙｅｓ）、０系の偏差が１系の偏差よりも大きいか否かを判定する（Ｓ４）。
【００５４】
ＣＰＵ１１０、１２０のそれぞれは、０系の偏差が１系の偏差よりも大きくない（０系の偏差が１系の偏差以下である）と判定した場合（Ｓ４：Ｎｏ）、１系のトルクセンサ２１が故障していると判定する。この場合、ＣＰＵ１１０、１２０のそれぞれは、１系のトルクセンサ２１が属するサーボモータ１７０を切り離して、倒立二輪車１の制御を続行する（Ｓ５）。具体的には、ＣＰＵ１１０、１２０のそれぞれは、サーボモータ１７０及びサーボモータ１８０のうち、サーボモータ１８０（右モータ１８）のみをサーボ制御することによって、倒立二輪車１の制御を続行する。
【００５５】
また、ＣＰＵ１１０、１２０のそれぞれは、故障していると判定したトルクセンサ２１が属するサーボモータ１７０全体を切り離さずに、故障していると判定したトルクセンサ２１のみを切り離すようにしてもよい。具体的には、ＣＰＵ１１０は、トルクセンサ１９で検出されたトルクを示すトルク情報を生成してＣＰＵ１２０に出力し、ＣＰＵ１２０は、ＣＰＵ１１０から出力されたトルク情報が示す左モータ１７のトルクに基づいて、左モータ１７のサーボ制御を続行するようにしてもよい。また、故障していると判定したトルクセンサ２１が属する１系の制御系を切り離して、０系の制御系のみで、倒立二輪車１の制御を続行するようにしてもよい。
【００５６】
また、故障に関する部分（サーボモータ１７０、トルクセンサ２１、又は１系の制御系）を切り離して（縮退して）の倒立二輪車１の制御への切り替えは、先にトルクセンサ２１の故障を検出したＣＰＵが、トルクセンサ２１の故障を通知する通知情報を他系のＣＰＵに出力し、それを受けた他系のＣＰＵも実施するようにすることで、ＣＰＵ１１０、１２０で同期して開始するようにしてもよい。
【００５７】
また、故障に関する部分を切り離して続行する制御として、倒立二輪車１を倒立制御しつつ継続して走行させる制御を行うようにしてもよく、倒立二輪車１を倒立制御しつつ停止させる降車制御を行うようにしてもよい。
【００５８】
なお、右モータ１８に対応するトルクセンサ２０、２２に関する故障診断処理では、０系の偏差が１系の偏差よりも大きくないと判定した場合（Ｓ４：Ｎｏ）、１系のトルクセンサ２２が故障していると判定することになる。この場合、切り離し対象となる部分は、故障していると判定したトルクセンサ２２、それが属するサーボモータ１８０、又は、それが属する１系の制御系となる。また、故障していると判定したトルクセンサ２２のみを切り離した場合、ＣＰＵ１１０は、トルクセンサ２０で検出されたトルクを示すトルク情報を生成してＣＰＵ１２０に出力し、ＣＰＵ１２０は、ＣＰＵ１１０から出力されたトルク情報が示す右モータ１８のトルクに基づいて、右モータ１８のサーボ制御を続行するようにすればよい。
【００５９】
ＣＰＵ１１０、１２０のそれぞれは、０系の偏差が１系の偏差よりも大きいと判定した場合（Ｓ４：Ｙｅｓ）、０系のトルクセンサ１９が故障していると判定する。この場合、ＣＰＵ１１０、１２０のそれぞれは、０系のトルクセンサ１９が属するサーボモータ１７０を切り離して、倒立二輪車１の制御を続行する（Ｓ６）。具体的には、ＣＰＵ１１０、１２０のそれぞれは、サーボモータ１７０及びサーボモータ１８０のうち、サーボモータ１８０（右モータ１８）のみをサーボ制御することによって、倒立二輪車１の制御を続行する。
【００６０】
また、ＣＰＵ１１０、１２０のそれぞれは、故障していると判定したトルクセンサ１９が属するサーボモータ１７０全体を切り離さずに、故障していると判定したトルクセンサ１９のみを切り離すようにしてもよい。具体的には、ＣＰＵ１２０は、トルクセンサ２１で検出されたトルクを示すトルク情報を生成してＣＰＵ１１０に出力し、ＣＰＵ１１０は、ＣＰＵ１２０から出力されたトルク情報が示す左モータ１７のトルクに基づいて、左モータ１７のサーボ制御を続行するようにしてもよい。また、故障していると判定したトルクセンサ１９が属する０系の制御系を切り離して、１系の制御系のみで、倒立二輪車１の制御を続行するようにしてもよい。
【００６１】
また、故障に関する部分（サーボモータ１７０、トルクセンサ１９、又は０系の制御系）を切り離して（縮退して）の倒立二輪車１の制御への切り替えは、先にトルクセンサ１９の故障を検出したＣＰＵが、トルクセンサ１９の故障を通知する通知情報を他系のＣＰＵに出力し、それを受けた他系のＣＰＵも実施するようにすることで、ＣＰＵ１１０及びＣＰＵ１２０で同期して開始するようにしてもよい。
【００６２】
また、故障に関する部分を切り離して続行する制御として、倒立二輪車１を倒立制御しつつ継続して走行させる制御を行うようにしてもよく、倒立二輪車１を倒立制御しつつ停止させる降車制御を行うようにしてもよい。
【００６３】
なお、右モータ１８のトルクを検出するトルクセンサ２０、２２に関する故障診断処理では、０系の偏差が１系の偏差よりも大きいと判定した場合（Ｓ４：Ｙｅｓ）、０系のトルクセンサ２０が故障していると判定することになる。この場合、切り離し対象となる部分は、故障していると判定したトルクセンサ２０、それが属するサーボモータ１８０、又はそれが属する０系の制御系となる。また、故障していると判定したトルクセンサ２０のみを切り離した場合、ＣＰＵ１２０は、トルクセンサ２２で検出されたトルクを示すトルク情報を生成してＣＰＵ１１０に出力し、ＣＰＵ１１０は、ＣＰＵ１２０から出力されたトルク情報が示す右モータ１８のトルクに基づいて、右モータ１８のサーボ制御を続行するようにすればよい。
【００６４】
続いて、図７を参照して説明する。上述したように図６のステップＳ２において、「偏差の偏差」の大きさが、所定の閾値未満であると判定した場合（Ｓ２：Ｎｏ）、ＣＰＵ１１０及びＣＰＵ１２０のそれぞれは、以下に説明する図７に示す処理を実施する。
【００６５】
ＣＰＵ１１０、１２０のそれぞれは、算出した偏差（トルク偏差）が大きいか判定する処理（Ｓ１１）として、トルク偏差が所定の閾値Ｘ以上であるか否かを判定する（Ｓ１２）。すなわち、ＣＰＵ１１０であれば、０系の偏差について判定し、ＣＰＵ１２０であれば、１系の偏差について判定する。なお、ＣＰＵ１１０、１２０のそれぞれが、０系の偏差と１系の偏差の両方について判定をするようにしてもよい。
【００６６】
ＣＰＵ１１０、１２０のそれぞれは、トルク偏差が所定の閾値Ｘ以上でないと判定した場合（Ｓ１２：Ｎｏ）、そのまま通常の倒立二輪車１の倒立制御を続行する（Ｓ１３）。
【００６７】
ＣＰＵ１１０、２０のそれぞれは、トルク偏差が所定の閾値Ｘ以上でない（トルク偏差が所定の閾値Ｘ未満である）と判定した場合（Ｓ１２：Ｙｅｓ）、トルク偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続しているか否かを判定する（Ｓ１４）。
【００６８】
ＣＰＵ１１０、１２０のそれぞれは、トルク偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していないと判定した場合（Ｓ１４：Ｎｏ）、段差の飛び降り、段差への乗り上げ、又は人に押された等による一時的なトルク偏差の増加と推定し、そのまま通常の倒立二輪車１の倒立制御を続行する（Ｓ１５）。
【００６９】
ＣＰＵ１１０、１２０のそれぞれは、トルク偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していると判定した場合（Ｓ１４：Ｙｅｓ）、トルクセンサ１９又はトルクセンサ２１が故障しており、トルク制御で対応不可能な程度のトルク偏差が発生していると推定し、倒立二輪車１を倒立制御しつつ停止させる降車制御を実施する（Ｓ１６）。
【００７０】
また、上述と同様に、故障に関する部分を切り離して、倒立二輪車１の制御を続行するようにしてもよい。すなわち、ＣＰＵ１１０が、トルク偏差（０系の偏差）が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していると判定した場合には（Ｓ１４：Ｙｅｓ）、そのトルク偏差の算出に利用されたトルクを検出したトルクセンサ１９が故障していると判定し、トルクセンサ１９、それが属するサーボモータ１７０、又はそれが属する０系の制御系を切り離して倒立二輪車１の制御を続行するようにしてもよい。ＣＰＵ１２０が、トルク偏差（１系の偏差）が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していると判定した場合には（Ｓ１４：Ｙｅｓ）、そのトルク偏差の算出に利用されたトルクを検出したトルクセンサ２１が故障していると判定し、トルクセンサ２１、それが属するサーボモータ１７０、又はそれが属する１系の制御系を切り離して倒立二輪車１の制御を続行するようにしてもよい。
【００７１】
なお、右モータ１８に対応するトルクセンサ２０、２２に関する故障診断処理では、ＣＰＵ１１０は、トルク偏差（０系の偏差）が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していると判定した場合には（Ｓ１４：Ｙｅｓ）、そのトルク偏差の算出に利用されたトルクを検出したトルクセンサ２０が故障していると判定し、トルクセンサ２０、それが属するサーボモータ１８０、又はそれが属する０系の制御系を切り離して倒立二輪車１の制御を続行することになる。また、ＣＰＵ１２０は、トルク偏差（１系の偏差）が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していると判定した場合には（Ｓ１４：Ｙｅｓ）、そのトルク偏差の算出に利用されたトルクを検出したトルクセンサ２２が故障していると判定し、トルクセンサ２２、それが属するサーボモータ１８０、又はそれが属する１系の制御系を切り離して倒立二輪車１の制御を続行することになる。
【００７２】
以上に説明したように、本実施の形態１では、制御部（例えばマイコン１１、１２）が、第１のセンサ（例えばトルクセンサ１９又はトルクセンサ２０）が検出したセンサ値に基づくモータ（例えば左モータ１７又は右モータ１８）の第１の出力値（トルク）と、第１の出力値の目標値との偏差である第１の偏差（例えば０系の偏差）と、第２のセンサ（例えばトルクセンサ２１又はトルクセンサ２２）が検出したセンサ値に基づくモータ（例えば左モータ１７又は右モータ１８）の第２の出力値（トルク）と前記第２の出力値の目標値との偏差である第２の偏差（例えば１系の偏差）との偏差の大きさが、所定の閾値以上であると判定した場合、第１のセンサ又は第２のセンサの異常に応じた制御として予め定められた異常時制御を実施するようにしている。
【００７３】
これによれば、トルクの外乱がかかっているか否かに関わらず、「偏差の偏差」が、センサが故障していない場合には小さな値をとり、センサが故障している場合には大きな値をとることから、閾値を小さな値として、センサの異常を誤検出せずに、センサの異常を高速に検出して、それに応じた異常時制御を実施することができる。
【００７４】
＜発明の実施の形態２＞
続いて、実施の形態２について説明する。実施の形態２にかかる倒立二輪車１の概要構成については、図１を参照して説明した実施の形態１にかかる倒立二輪車１の概要構成と同様であるため、説明を省略する。
【００７５】
図８を参照して、本実施の形態２にかかる制御装置１０の構成について説明する。図８は、本実施の形態２にかかる制御装置１０の構成を示すブロック図である。なお、図２を参照して説明した実施の形態１にかかる制御装置１０の構成要素と同様の処理を実施するものについては、同一の符号を付し、適宜説明を省略する。
【００７６】
実施の形態２にかかる制御装置１０は、実施の形態１にかかる制御装置１０と比較して、マイコン１１、１２に代えて、マイコン２５、２６を有し、トルクセンサ１９〜２２に代えて、回転角センサ２７〜３０を有する。
【００７７】
マイコン２５、２６のそれぞれは、マイコン１１、１２と同様に、ジャイロセンサセンサ２３、２４のそれぞれから出力される角速度信号に基づいて、上述したように、倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御するＥＣＵである。
【００７８】
ただし、本実施の形態２にかかるマイコン２５、２６は、回転角センサ２７、２８のそれぞれから出力される、モータ１７の回転角を示す回転角信号に基づいて、モータ１７をサーボ制御（フィードバック制御）するように、インバータ１３、１５のそれぞれに対する指令値を生成する。また、マイコン２５、２６のそれぞれは、回転角センサ２９、３０のそれぞれから出力される、モータ１８の回転角を示す回転角信号に基づいて、モータ１８をサーボ制御（フィードバック制御）するように、インバータ１４、１６のそれぞれに対する指令値を生成する。より具体的には、マイコン２５、２６は、回転角信号が示す回転角を微分することでモータ１７、１８の角速度を算出し、算出した角速度に基づいて、速度サーボ制御を行う。
【００７９】
回転角センサ２７は、モータ１７の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１１に出力する。回転角センサ２８は、モータ１８の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１１に出力する。回転角センサ２９は、モータ１７の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１２に出力する。回転角センサ３０は、モータ１８の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１２に出力する。なお、回転角センサ２７〜３０として、例えばエンコーダ又はレゾルバ等のモータ１７、１８の回転角を検出可能なセンサのうち、任意のものを利用するようにしてよい。
【００８０】
よって、本実施の形態２にかかる制御装置１０では、図９に示すように、サーボモータ１７０として、モータ１７及び回転角センサ２７、２９を有し、サーボモータ１８０として、モータ１８及び回転角センサ２８、３０を有する。また、マイコン２５、２６のそれぞれは、上述したように、倒立二輪車１の制御に関する各種処理を実行するＣＰＵ２５０、２６０のそれぞれを有する。ＣＰＵ２５０、２６０は、トルクセンサ１９〜２２のそれぞれから出力されるトルク信号に代えて、回転角センサ２７〜３０から出力される回転角信号を利用して、ＣＰＵ１１０、１２０と同様の故障診断処理を実施する。
【００８１】
すなわち、左モータ１７に対応する回転角センサ２７、２９に関する故障診断処理では、０系のＣＰＵ２５０は、０系の偏差として、上記の式（１）によって、左モータ１７の角速度の目標値と、回転角センサ２７から出力された回転角信号が示す左モータ１７の回転角から算出された左モータ１７の角速度との偏差を算出することになる。１系のＣＰＵ２６０は、１系の偏差として、上記の式（１）によって、左モータ１７の角速度の目標値と、回転角センサ２９から出力された回転角信号が示す左モータ１７の回転角から算出された左モータ１７の角速度との偏差を算出することになる。
【００８２】
また、右モータ１８に対応する回転角センサ２８、３０に関する故障診断処理では、０系のＣＰＵ２５０は、０系の偏差として、上記の式（１）によって、右モータ１８の角速度の目標値と、回転角センサ２８から出力された回転角信号が示す右モータ１８の回転角から算出された右モータ１８の角速度との偏差を算出することになる。１系のＣＰＵ２６０は、１系の偏差として、上記の式（１）によって、右モータ１８の角速度の目標値と、回転角センサ３０から出力された回転角信号が示す右モータ１８の回転角から算出された右モータ１８の角速度との偏差を算出することになる。
【００８３】
すなわち、本実施の形態２では、回転角センサ２７〜３０からの回転角信号が示す回転角から算出した角速度を、制御対象であるモータ１７、１８からの出力値として扱う。
【００８４】
そして、ＣＰＵ２５０、２６０のそれぞれは、上述と同様に式（２）によって、偏差の偏差を算出し、その大きさが所定の閾値以上となるか否かによって、回転角センサ２７〜３０の故障を検出する。
【００８５】
続いて、図６及び図１０本実施の形態２にかかる制御装置１０による故障診断処理について説明する。ここで、本実施の形態２にかかる制御装置１０による故障診断処理は、上述したように、偏差として、トルクに代えて速度の偏差を算出すること以外は、図６を参照して説明した実施の形態１にかかる制御装置１０による故障診断処理と同様であるため、詳細な説明は省略する。
【００８６】
すなわち、左モータ１７に対応する回転角センサ２７、２９に関する故障診断処理で、０系の偏差が１系の偏差よりも大きくないと判定した場合（Ｓ４：Ｎｏ）、１系の回転角センサ２９が故障していると判定することになる。この場合、切り離し対象となる部分は、故障していると判定した回転角センサ２９、それが属するサーボモータ１７０、又はそれが属する１系の制御系となる。また、故障していると判定した回転角センサ２９のみを切り離した場合、ＣＰＵ１１０は、回転角センサ２７で検出された回転角を示す回転角情報を生成してＣＰＵ１２０に出力し、ＣＰＵ１２０は、ＣＰＵ１１０から出力された回転角情報が示す左モータ１７の回転角に基づいて、左モータ１７のサーボ制御を続行する。
【００８７】
左モータ１７の回転角に対応する回転角センサ２７、２９に関する故障診断処理で、０系の偏差が１系の偏差よりも大きいと判定した場合（Ｓ４：Ｙｅｓ）、０系の回転角センサ２７が故障していると判定することになる。この場合、切り離し対象となる部分は、故障していると判定した回転角センサ２７、それが属するサーボモータ１７０、又はそれが属する０系の制御系となる。また、故障していると判定した回転角センサ２７のみを切り離した場合、ＣＰＵ１２０は、回転角センサ２９で検出された回転角を示す回転角情報を生成してＣＰＵ１１０に出力し、ＣＰＵ１１０は、ＣＰＵ１２０から出力された回転角情報が示す左モータ１７の回転角に基づいて、左モータ１７のサーボ制御を続行する。
【００８８】
なお、右モータ１８に対応する回転角センサ２８、３０に関する故障診断処理で、０系の偏差が１系の偏差よりも大きくないと判定した場合（Ｓ４：Ｎｏ）、１系の回転角センサ３０が故障していると判定することになる。この場合、切り離し対象となる部分は、故障していると判定した回転角センサ３０、それが属するサーボモータ１８０、又はそれが属する１系の制御系となる。また、故障していると判定した回転角センサ３０のみを切り離した場合、ＣＰＵ１１０は、回転角センサ２８で検出された回転角を示す回転角情報を生成してＣＰＵ１２０に出力し、ＣＰＵ１２０は、ＣＰＵ１１０から出力された回転角情報が示す右モータ１８の回転角に基づいて、右モータ１８のサーボ制御を続行するようにすればよい。
【００８９】
右モータ１８に対応する回転角センサ２８、３０に関する故障診断処理では、０系の偏差が１系の偏差よりも大きいと判定した場合（Ｓ４：Ｙｅｓ）、０系の回転角センサ２８が故障していると判定することになる。この場合、切り離し対象となる部分は、故障していると判定した回転角センサ２８、それが属するサーボモータ１８０、又はそれが属する０系の制御系となる。また、故障していると判定した回転角センサ２８のみを切り離した場合、ＣＰＵ１２０は、回転角センサ３０で検出された回転角を示す回転角情報を生成してＣＰＵ１１０に出力し、ＣＰＵ１１０は、ＣＰＵ１２０から出力された回転角情報が示す右モータ１８の回転角に基づいて、右モータ１８のサーボ制御を続行するようにすればよい。
【００９０】
ここで、本実施の形態２では、図６のステップＳ２において、「偏差の偏差」の大きさが、所定の閾値未満であると判定した場合（Ｓ２：Ｎｏ）、ＣＰＵ１１０及びＣＰＵ１２０のそれぞれは、以下に説明する図１０に示す処理を実施する。
【００９１】
ＣＰＵ１１０、１２０のそれぞれは、算出した偏差（速度偏差）が大きいか判定する処理（Ｓ２１）として、速度偏差が所定の閾値Ｘ以上であるか否かを判定する（Ｓ２２）。
【００９２】
ＣＰＵ１１０、１２０のそれぞれは、速度偏差が所定の閾値Ｘ以上でない（速度偏差が所定の閾値Ｘ未満である）と判定した場合（Ｓ２２：Ｎｏ）、そのまま通常の倒立二輪車１の倒立制御を続行する（Ｓ２３）。
【００９３】
ＣＰＵ１１０、１２０のそれぞれは、速度偏差が所定の閾値Ｘ以上であると判定した場合（Ｓ２２：Ｙｅｓ）、速度偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続しているか否かを判定する（Ｓ２４）。
【００９４】
ＣＰＵ１１０、１２０のそれぞれは、速度偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していないと判定した場合（Ｓ２４：Ｎｏ）、段差の飛び降りによって左モータ１７が空転することによる一時的な速度偏差の増加と推定する。この場合、ＣＰＵ１１０、１２０のそれぞれは、スリップ防止制御を実施する（Ｓ２５）。
【００９５】
具体的には、ＣＰＵ１１０、１２０のそれぞれは、スリップ防止制御として、通常よりも左モータ１７の角速度を下げるように左モータ１７を制御する。この制御として、通常制御時（速度偏差が閾値Ｘ以上でない場合の制御時）に算出される指令値よりも、左モータ１７の角速度が低くなる指令値を算出するようにサーボ制御を行う。例えば、ＣＰＵ１１０、１２０のそれぞれは、角速度の目標値の上限値として、通常制御時の上限値よりも所定値低い上限値を設定することで、左モータ１７の角速度が下がる指令値を生成するようにしてもよい。これによれば、左モータ１７が過回転の状態で着地してしまい、着地時に倒立二輪車１が不安定となることを防止することができる。
【００９６】
なお、右モータ１８に対応する回転角センサ２８、３０に関する故障診断処理では、ＣＰＵ１１０、１２０のそれぞれは、速度偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していないと判定した場合（Ｓ２４：Ｎｏ）、同様にして、右モータ１８の角速度を下げるように右モータ１８を制御する。
【００９７】
ＣＰＵ１１０、１２０のそれぞれは、速度偏差が所定の閾値Ｘ以上である状態が、所定の時間Ｙ以上継続していると判定した場合（Ｓ２４：Ｙｅｓ）、倒立二輪車１が、壁又は人等にぶつかって（押されて）おり、進行方向に進むことができていないと推定する。この場合、ＣＰＵ１１０及びＣＰＵ１２０のそれぞれは、倒立二輪車１を倒立制御しつつ継続して走行させる制御をサーボ制御における制御ゲインを下げて行う、又は、倒立二輪車１を倒立制御しつつ停止させる降車制御を行う（Ｓ２６）。これによれば、壁等にぶつかって進むことができない状況で、さらに進もうとして壁を押し続けることで無駄に倒立二輪車１の電力を消費することを抑制することができる。
【００９８】
以上に説明したように、本実施の形態２では、制御部（例えばマイコン２５、２６）が、第１のセンサ（例えば回転角センサ２７又は回転角センサ２９）が検出したセンサ値に基づくモータ（例えば左モータ１７又は右モータ１８）の第１の出力値（回転角に基づいて算出した角速度）と、第１の出力値の目標値との偏差である第１の偏差（例えば０系の偏差）と、第２のセンサ（例えば回転角センサ２８又は回転角センサ３０）が検出したセンサ値に基づくモータ（例えば左モータ１７又は右モータ１８）の第２の出力値（回転角に基づいて算出した角速度）と前記第２の出力値の目標値との偏差である第２の偏差（例えば１系の偏差）との偏差の大きさが、所定の閾値以上であると判定した場合、第１のセンサ又は第２のセンサの異常に応じた制御として予め定められた異常時制御を実施するようにしている。
【００９９】
これによれば、速度の外乱がかかっているか否かに関わらず、「偏差の偏差」が、センサが故障していない場合には小さな値をとり、センサが故障している場合には大きな値をとることから、閾値を小さな値として、センサの異常を誤検出せずに、センサの異常を高速に検出して、それに応じた異常時制御を実施することができる。すなわち、本発明は、トルクサーボ制御及び速度サーボ制御等の任意のサーボ制御に適用することが可能である。
【０１００】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【０１０１】
上記の実施の形態では、ＣＰＵ１１０、１２０（又はＣＰＵ２５０、２６０）の両方が故障診断処理を実施するようにしているが、いずれか一方のみが故障診断処理を実施するようにしてもよい。しかしながら、好ましくは、ＣＰＵ１１０、１２０（又はＣＰＵ２５０、２６０）の両方が故障診断処理を実施するようにすることで、より故障検出の即応性を向上することができる。
【０１０２】
また、上記の実施の形態では、ＣＰＵ１１０、１２０（又はＣＰＵ２５０、２６０）のそれぞれが、他系のＣＰＵに対して偏差情報を受け渡すことで、偏差の偏差を算出するようにしているが、他系のＣＰＵが偏差の偏差を算出することができる情報であれば、これに限られない。例えば、実施の形態１では、ＣＰＵ１１０、１２０のそれぞれが、トルクセンサから取得したトルクを示すトルク情報を他系のＣＰＵに対して出力し、それを受け取った他系のＣＰＵが、目標値とトルク情報が示すトルクとの偏差を算出し、他系の偏差として利用するようにしてもよい。例えば、実施の形態２では、ＣＰＵ２５０、２６０のそれぞれが、回転角センサから取得した回転角を示す回転角情報を他系のＣＰＵに対して出力し、それを受け取った他系のＣＰＵが、目標値と回転角情報が示す回転角から算出した角速度との偏差を算出し、他系の偏差として利用するようにしてもよい。
【０１０３】
また、上記の実施の形態では、本発明を制御系が２重化された倒立二輪車に適用した例について説明したが、制御系が２重化されていない単一の制御系を有する倒立二輪車についても適用することが可能である。例えば、この場合、１つのモータに対してトルクセンサ又は速度センサのみを、故障診断用に更にもう１つ備えるようにすることで、偏差の偏差を算出可能とし、上記と同様に故障診断を実施するようにしてもよい。
【符号の説明】
【０１０４】
１  倒立二輪車
２  車輪
３  ステップカバー
４  ハンドル
１０  制御装置
１１、１２、２５、２６  マイコン
１３、１４、１５、１６  インバータ
１７、１８  モータ
１９、２０、２１、２２  トルクセンサ
２３、２４  ジャイロセンサ
２７、２８、２９、３０  回転角センサ
１１０、１２０、２５０、２６０  ＣＰＵ
１７０、１８０  サーボモータ
２００  ＣＰＵ間通信路
【図１】
2014159188.tif 000003
【図２】
2014159188.tif 000004
【図３】
2014159188.tif 000005
【図４】
2014159188.tif 000006
【図５Ａ】
2014159188.tif 000007
【図５Ｂ】
2014159188.tif 000008
【図５Ｃ】
2014159188.tif 000009
【図６】
2014159188.tif 000010
【図７】
2014159188.tif 000011
【図８】
2014159188.tif 000012
【図９】
2014159188.tif 000013
【図１０】
2014159188.tif 000014
【図１１】
2014159188.tif 000015
【図１２】
2014159188.tif 000016