(57)【要約】【課題】複数のＣＰＵのそれぞれで実行される、同軸二輪移動体の制御に関する処理の同期の精度を向上すること。【解決手段】本発明にかかる同軸二輪移動体は、車輪を回転させて移動する同軸二輪移動体である。同軸二輪移動体は、車輪を回転させるモータと、モータを駆動して同軸二輪移動体を制御する第１のＣＰＵと、モータを駆動して同軸二輪移動体を制御する第２のＣＰＵと、第１のＣＰＵ及び第２のＣＰＵを動作させるためのクロック信号を生成するクロック生成回路と、を備える。第１のＣＰＵ及び第２のＣＰＵは、クロック生成回路が生成したクロック信号が分配されて、それぞれに供給される。【選択図】図３
2014106874.tif 000002
【特許請求の範囲】
【請求項１】
車輪を回転させて移動する同軸二輪移動体であって、
前記車輪を回転させるモータと、
前記モータを駆動して前記同軸二輪移動体を制御する第１のＣＰＵと、
前記モータを駆動して前記同軸二輪移動体を制御する第２のＣＰＵと、
前記第１のＣＰＵ及び前記第２のＣＰＵを動作させるためのクロック信号を生成するクロック生成回路と、を備え、
前記第１のＣＰＵ及び前記第２のＣＰＵは、前記クロック生成回路が生成したクロック信号が分配されて、それぞれに供給されることを特徴とする、
同軸二輪移動体。
【請求項２】
前記クロック生成回路は、前記クロック信号として第１のクロック信号を生成する第１のクロック生成回路であり、
前記同軸二輪移動体は、さらに、前記第１のＣＰＵ及び前記第２のＣＰＵを動作させるための第２のクロック信号を生成する第２のクロック生成回路を備え、
前記第１のＣＰＵ及び前記第２のＣＰＵは、前記第２のクロック生成回路が生成した第２のクロック信号が分配されて、それぞれに供給され、
前記第１のＣＰＵ及び前記第２のＣＰＵは、前記第１のクロック生成回路に関する異常が検出された場合、前記第１のクロック信号に代わり、前記第２のクロック信号に基づいて動作を開始する、
請求項１に記載の同軸二輪移動体。
【請求項３】
前記第１のＣＰＵは、
前記第１のクロック信号に基づいて時間を計測する第１のタイマと、
前記第２のクロック信号に基づいて時間を計測する第２のタイマと、を有し、
前記第１のＣＰＵは、前記第１のクロック生成回路に関する異常として、前記第１のタイマが計測する時間と前記第１のタイマが計測する時間との差が所定の閾値以上であることを検出する、
請求項２に記載の同軸二輪移動体。
【請求項４】
前記同軸二輪移動体は、さらに、前記第１のＣＰＵ及び前記第２のＣＰＵの少なくとも１つを監視するウォッチドックタイマを有し、
前記ウォッチドックタイマは、前記第１のクロック生成回路に関する異常として、前記第１のＣＰＵ及び前記第２のＣＰＵの少なくとも１つの動作停止を検出する、
請求項２に記載の同軸二輪移動体。
【請求項５】
前記第１のＣＰＵは、前記第１のクロック生成回路に関する異常として、前記第２のＣＰＵとの通信の途絶を検出する、
請求項２に記載の同軸二輪移動体。
【請求項６】
前記同軸二輪移動体は、さらに、
前記同軸二輪移動体の動作に関する物理量を第１のセンサ値として検出する第１のセンサと、
前記第１のセンサと同一の物理量を第２のセンサ値として検出する第２のセンサと、を備え、
前記第１のＣＰＵは、前記第１のセンサが検出した第１のセンサ値に基づいて前記モータを駆動に用いる第１の指令値を算出し、
前記第２のＣＰＵは、前記第２のセンサが検出した第２のセンサ値に基づいて前記モータを駆動に用いる第２の指令値を算出し、
前記第２のＣＰＵは、前記第２の指令値を前記第１のＣＰＵに送信し、
前記第１のＣＰＵは、前記第１のクロック生成回路に関する異常として、前記第１の指令値と前記第２のＣＰＵから送信された第２の指令値と差が所定の閾値以上であることを検出する、
請求項２に記載の同軸二輪移動体。
【請求項７】
前記同軸二輪移動体は、さらに、
前記同軸二輪移動体の動作に関する物理量を第１のセンサ値として検出する第１のセンサと、
前記第１のセンサと同一の物理量を第２のセンサ値として検出する第２のセンサと、を備え、
前記第１のＣＰＵは、前記第１のセンサが検出した第１のセンサ値に基づいて前記モータを駆動に用いる第１の指令値を算出し、
前記第２のＣＰＵは、前記第２のセンサが検出した第２のセンサ値に基づいて前記モータを駆動に用いる第２の指令値を算出し、
前記第２のＣＰＵは、前記第２の指令値を前記第１のＣＰＵに送信し、
前記第１のＣＰＵは、前記第１の指令値と前記第２のＣＰＵから送信された第２の指令値と差が所定の閾値以上であるか否かを判定し、
前記第１のＣＰＵ及び前記第２のＣＰＵは、前記第１のＣＰＵによって前記第１の指令値と前記第２の指令値と差が所定の閾値以上であると判定された場合、前記同軸二輪移動体の制動制御を実施する、
請求項１乃至６のいずれか１項に記載の同軸二輪移動体。
【請求項８】
前記同軸二輪移動体は、さらに、
前記モータを駆動して前記同軸二輪移動体を制御する第３のＣＰＵと、
前記第３のＣＰＵを動作させるための第３のクロック信号を生成する第３のクロック生成回路と、を備え、
前記第１のＣＰＵ、前記第２のＣＰＵ及び前記第３のＣＰＵは、前記第２のクロック生成回路が生成した第２のクロック信号が分配されて、それぞれに供給され、
前記第３のＣＰＵは、
前記第３のクロック信号に基づいて時間を計測する第３のタイマと、
前記第２のクロック信号に基づいて時間を計測する第４のタイマと、を有し、
前記第１のＣＰＵは、前記第１のクロック生成回路に関する異常として、前記第３のタイマが計測する時間と前記第４のタイマが計測する時間との差が所定の閾値未満である場合に、前記第１のタイマが計測する時間と前記第２のタイマが計測する時間との差が所定の閾値以上であることを検出する、
請求項３項に記載の同軸二輪移動体。
【請求項９】
前記第１のＣＰＵ及び前記第２のＣＰＵから情報を取得し、取得した情報を前記同軸二輪移動体の外部に送信する外部通信ＣＰＵと、
前記第１のＣＰＵと前記第２のＣＰＵとの間で情報を伝達するＣＰＵ間通信路と、
前記第１のＣＰＵ及び前記第２のＣＰＵのそれぞれと、前記外部通信ＣＰＵとの間で情報を伝達する外部通信路と、を備え、
前記第１のＣＰＵは、前記ＣＰＵ間通信路における前記第２のＣＰＵからの通信の途絶と、前記外部通信路における前記第２のＣＰＵからの通信の途絶とを判定し、判定結果に対応する前記同軸二輪移動体の制御を実施する、
請求項１乃至８のいずれか１項に記載の同軸二輪移動体。
【請求項１０】
前記第１のＣＰＵは、前記ＣＰＵ間通信路及び前記外部通信路のうち、前記ＣＰＵ間通信路のみで前記第２のＣＰＵからの通信の途絶を検出した場合、前記ＣＰＵ間通信路を介して前記第２のＣＰＵに送信していた情報を、前記ＣＰＵ間通信に代えて前記外部通信路を介して前記第２のＣＰＵに送信しつつ、前記同軸二輪移動体を制御する、
請求項９に記載の同軸二輪移動体。
【請求項１１】
前記同軸二輪移動体は、さらに、光及び音のうち、少なくとも１つによる外部への通知を行う通知部を備え、
前記第１のＣＰＵは、前記ＣＰＵ間通信路及び前記外部通信路のうち、前記外部通信路のみで前記第２のＣＰＵからの通信の途絶を検出した場合、前記通知部による外部への通知を実施しつつ、前記同軸二輪移動体の制御を継続する、
請求項９項に記載の同軸二輪移動体。
【請求項１２】
前記同軸二輪移動体は、さらに、
前記第１のＣＰＵと前記第２のＣＰＵとの間で情報を伝達するＣＰＵ間通信路と、
前記ＣＰＵ間通信路よりも少ない信号線数で構成され、前記第２のＣＰＵから前記第１のＣＰＵに情報を伝達する信号通信路と、を備え、
前記第１のＣＰＵは、前記ＣＰＵ間通信路における前記第２のＣＰＵからの通信の途絶と、前記信号通信路における前記第２のＣＰＵからの通信の途絶とを判定し、判定結果に対応する前記同軸二輪移動体の制御を実施する、
請求項１乃至８のいずれか１項に記載の同軸二輪移動体。
【請求項１３】
前記同軸二輪移動体は、さらに、光及び音のうち、少なくとも１つによる外部への通知を行う通知部を備え、
前記第１のＣＰＵは、前記ＣＰＵ間通信路及び前記信号通信路のうち、前記信号通信路のみで前記第２のＣＰＵからの通信の途絶を検出した場合、前記通知部による外部への通知を実施しつつ、前記同軸二輪移動体の制御を継続する、
請求項１２に記載の同軸二輪移動体。
【請求項１４】
モータを駆動することで車輪を回転させて移動する同軸二輪移動体の制御方法であって、
第１のＣＰＵ及び第２のＣＰＵを動作させるためのクロック信号を生成するステップと、
前記生成されたクロック信号を分配して、前記第１のＣＰＵ及び前記第２のＣＰＵのそれぞれに供給するステップと、
前記第１のＣＰＵ及び前記第２のＣＰＵが供給されたクロック信号に基づいて、前記モータを駆動して前記同軸二輪移動体を制御するステップと、
を備えた制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同軸二輪移動体及びその制御方法に関し、特に、複数のＣＰＵで同軸二輪移動体を制御する技術に関する。
【背景技術】
【０００２】
特許文献１〜３には、多重化されたＣＰＵによって制御される車両が開示されている。例えば、特許文献１に開示の個人輸送車は、ＡグループとＢグループの冗長コンポーネントのそれぞれに属するＡプロセッサとＢプロセッサによって、２つの車輪のそれぞれと連結された２つのモータを制御する。
【０００３】
しかしながら、多重化されたＣＰＵのそれぞれで実行する処理のタイミングは、それぞれのＣＰＵに供給されるクロックに依存する。したがって、別々のクロックで動作するＣＰＵは、クロックの精度及びクロックの供給開始タイミングのズレ等によって、それぞれのＣＰＵで実行する処理を完全に同期することは困難である。同軸二輪移動体の安定性を向上する上で、複数のＣＰＵのそれぞれで実行される、同軸二輪移動体の制御に関する処理を同期して実行することは非常に重要である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００３／０１４６０２５号公報
【特許文献２】国際公開第２０１１／０８９６５６号
【特許文献３】特開２００９−１８７５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上述した知見に基づいてなされたものであって、複数のＣＰＵのそれぞれで実行される、同軸二輪移動体の制御に関する処理の同期の精度を向上することができる同軸二輪移動体及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様にかかる同軸二輪移動体は、車輪を回転させて移動する同軸二輪移動体であって、前記車輪を回転させるモータと、前記モータを駆動して前記同軸二輪移動体を制御する第１のＣＰＵと、前記モータを駆動して前記同軸二輪移動体を制御する第２のＣＰＵと、前記第１のＣＰＵ及び前記第２のＣＰＵを動作させるためのクロック信号を生成するクロック生成回路と、を備え、前記第１のＣＰＵ及び前記第２のＣＰＵは、前記クロック生成回路が生成したクロック信号が分配されて、それぞれに供給されることを特徴とするものである。
【０００７】
本発明の第２の態様にかかる制御方法は、モータを駆動することで車輪を回転させて移動する同軸二輪移動体の制御方法であって、第１のＣＰＵ及び第２のＣＰＵを動作させるためのクロック信号を生成するステップと、前記生成されたクロック信号を分配して、前記第１のＣＰＵ及び前記第２のＣＰＵのそれぞれに供給するステップと、前記第１のＣＰＵ及び前記第２のＣＰＵが供給されたクロック信号に基づいて、前記モータを駆動して前記同軸二輪移動体を制御するステップと、を備えたものである。
【発明の効果】
【０００８】
上述した本発明の各態様によれば、複数のＣＰＵのそれぞれで実行される、同軸二輪移動体の制御に関する処理の同期の精度を向上することができる同軸二輪移動体及びその制御方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る倒立二輪車の概要構成を示す図である。
【図２】実施の形態１に係る制御装置の構成を示すブロック図である。
【図３】実施の形態１に係るクロック生成回路とＣＰＵの接続関係を示す図である。
【図４】実施の形態１に係る制御装置の故障診断処理のフローチャートである。
【図５Ａ】実施の形態１の効果を説明するための図である。
【図５Ｂ】実施の形態１の効果を説明するための図である。
【図６】実施の形態１に係るクロック生成回路の故障診断処理のフローチャートである。
【図７】実施の形態２に係る制御装置の構成を示すブロック図である。
【図８】実施の形態２に係るＣＰＵと外部通信ＣＰＵの接続関係を示す図である。
【図９】実施の形態２に係る制御装置の故障診断処理のフローチャートである。
【図１０】実施の形態３に係るＣＰＵ間の接続関係を示す図である。
【図１１】実施の形態３に係る制御装置の故障診断処理のフローチャートである。
【図１２】他の実施の形態に係るクロック生成回路とＣＰＵの接続関係を示す図である。
【図１３】他の実施の形態に係る制御装置の第１故障診断処理のフローチャートである。
【図１４】他の実施の形態に係る制御装置の第２故障診断処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以下に図面を参照しながら、本発明の好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項等については、適宜、省略及び簡略化がなされている。
【００１１】
＜発明の実施の形態１＞
図１を参照して、実施の形態１にかかる倒立二輪車１の概要構成について説明する。図１は、実施の形態１にかかる倒立二輪車１の概要構成を示す図である。
【００１２】
倒立二輪車１は、ステップカバー３に搭乗した搭乗者が、倒立二輪車１の前後方向に荷重を作用させた際における、前後方向への倒立二輪車１の姿勢角（ピッチ角）をセンサを利用して検出し、この検出結果に基づいて、倒立二輪車１の倒立状態を維持するように左右の車輪２を駆動するモータを制御する。すなわち、倒立二輪車１は、ステップカバー３に搭乗した搭乗者が前方に荷重を作用させて倒立二輪車１を前方に傾斜させると、倒立二輪車１の倒立状態を維持するように前方に加速し、搭乗者が後方に荷重を作用させて倒立二輪車１を後方に傾斜させると、倒立二輪車１の倒立状態を維持するように後方に加速するように、左右の車輪２を駆動するモータを制御する。倒立二輪車１は、制御の安定性を確保するために、モータを制御する制御系が２重化されている。
【００１３】
なお、これらのモータの制御は、倒立二輪車１に搭載された制御装置１０によって行われる。
【００１４】
続いて、図２を参照して、実施の形態１にかかる制御装置１０の構成について説明する。図２を参照して、実施の形態１にかかる制御装置１０の構成を示すブロック図である。
【００１５】
制御装置１０は、マイクロコントローラ１１、１２（以下、「マイコン」とも呼ぶ）、インバータ１３〜１６、モータ１７、１８、回転角センサ１９〜２２、及びジャイロセンサセンサ２３、２４、及びクロック生成回路２５、２６を有する。
【００１６】
制御装置１０は、倒立二輪車１の制御の安定性を確保するために、その制御系を、０系の制御系と１系の制御系とに二重化させた二重系システムとなっている。０系の制御系は、マイコン１１、インバータ１３、１４、回転角センサ１９、２０、及びジャイロセンサ２３を含む。１系の制御系は、マイコン１２、インバータ１５、１６、回転角センサ２１、２２、及びジャイロセンサ２４を含む。
【００１７】
マイコン１１、１２のそれぞれは、ジャイロセンサセンサ２３、２４のそれぞれから出力される角速度信号に基づいて、上述したように、倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御するＥＣＵ（Electronic Control Unit）である。マイコン１１、１２のそれぞれは、ＣＰＵ（Central Processing Unit）及び記憶部を有し、記憶部に格納されたプログラムを実行することによって、本実施の形態におけるマイコン１１、１２のそれぞれとしての処理を実行する。すなわち、マイコン１１、１２のそれぞれの記憶部に格納されるプログラムは、本実施の形態におけるマイコン１１、１２のそれぞれにおける処理を、ＣＰＵに実行させるためのコードを含む。なお、記憶部は、例えば、このプログラムや、ＣＰＵにおける処理に利用される各種情報を格納することができる任意の記憶装置を含んで構成される。記憶装置は、例えば、メモリ等である。
【００１８】
マイコン１１は、モータ１７を制御する指令値をインバータ１３に出力する。また、マイコン１１は、モータ１８を制御する指令値をインバータ１４に出力する。マイコン１２は、モータ１７を制御する指令値をインバータ１５に出力する。また、マイコン１２は、モータ１８を制御する指令値をインバータ１６に出力する。具体的には、マイコン１１、１２のそれぞれは、ジャイロセンサ２３、２４のそれぞれから出力される角速度信号が示す倒立二輪車１のピッチ軸周りの角速度（ピッチ角速度）を積分することで倒立二輪車１の前後方向の姿勢角（ピッチ角）を算出し、算出した姿勢角に基づいて倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御する指令値を生成する。
【００１９】
ここで、制御装置１０は、ジャイロセンサ２３、２４に代えて、倒立二輪車１の前後方向の姿勢角（ピッチ角）を検出し、検出した姿勢角を示す姿勢角信号をマイコン１１、１２のそれぞれ出力する姿勢角センサを有するようにしてもよい。姿勢角センサは、例えば、加速度センサ及びジャイロセンサによって、倒立二輪車１の姿勢角を検出するように構成される。そして、マイコン１１、１２のそれぞれは、姿勢角センサから出力された姿勢角信号が示す姿勢角に基づいて、倒立状態を維持するようにモータ１７、１８を制御する指令値を生成するようにしてもよい。
【００２０】
また、マイコン１１、１２のそれぞれは、回転角センサ１９、２１のそれぞれから出力される、モータ１７の回転角を示す回転角信号に基づいて、モータ１７をフィードバック制御するように、インバータ１３、１５のそれぞれに対する指令値を生成する。また、マイコン１１、１２のそれぞれは、回転角センサ２０、２２のそれぞれから出力される、モータ１８の回転角を示す回転角信号に基づいて、モータ１８をフィードバック制御するように、インバータ１４、１６のそれぞれに対する指令値を生成する。
【００２１】
インバータ１３は、マイコン１１から出力された指令値に基づいて、ＰＷＭ（Pulse Width Modulation）制御を行うことで、モータ１７を駆動する駆動電流を生成してモータ１７に供給する。インバータ１４は、マイコン１１から出力された指令値に基づいて、ＰＷＭ制御を行うことで、モータ１８を駆動する駆動電流を生成してモータ１８に供給する。インバータ１５は、マイコン１２から出力された指令値に基づいて、ＰＷＭ制御を行うことで、モータ１７を駆動する駆動電流を生成してモータ１７に供給する。インバータ１６は、マイコン１２から出力された指令値に基づいて、ＰＷＭ制御を行うことで、モータ１８を駆動する駆動電流を生成してモータ１８に供給する。
【００２２】
モータ１７、１８のそれぞれは、二重巻線のモータである。モータ１７は、インバータ１３から供給される駆動電流と、インバータ１５から供給される駆動電流とに基づいて駆動される。モータ１７を駆動することによって、倒立二輪車１の左側の車輪２が回転する。モータ１８は、インバータ１４から供給される駆動電流と、インバータ１６から供給される駆動電流とに基づいて駆動される。モータ１８を駆動することによって、倒立二輪車１の右側の車輪２が回転する。
【００２３】
回転角センサ１９は、モータ１７の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１１に出力する。回転角センサ２０は、モータ１８の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１１に出力する。回転角センサ２１は、モータ１７の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１２に出力する。回転角センサ２２は、モータ１８の回転角を検出し、検出した回転角を示す回転角信号を生成してマイコン１２に出力する。
【００２４】
ジャイロセンサ２３、２４のそれぞれは、搭乗者がステップカバー３に対して、倒立二輪車１の前後方向に荷重を作用させた際における、倒立二輪車１の前後方向に対する角速度（ピッチ軸周りの角速度、ピッチ角速度）を検出し、検出した角速度を示す角速度信号をマイコン１１、１２のそれぞれに出力する。このように、制御装置１０は、倒立二輪車１の動作に関する物理量として、倒立二輪車１のピッチ角速度又はモータ１７、１８の回転角等を検出する各種センサ１９〜２４を有する。
【００２５】
クロック生成回路２５、２６のそれぞれは、クロック信号を生成して、マイコン１１及びマイコン１２の両方に供給する。クロック生成回路２５は、通常利用される現用のクロック生成回路として動作する。クロック生成回路２６は、クロック生成回路２５が故障した場合における予備用（故障診断用、代替用）のクロック生成回路として動作する。マイコン１１、１２のそれぞれは、クロック生成回路２５から供給されるクロック信号に基づいて動作し、各種処理を実行する。マイコン１１、１２のそれぞれは、クロック生成回路２５が故障した場合には、クロック生成回路２５に代えて、クロック生成回路２６から供給されるクロック信号に基づいて動作し、各種処理を実行する。
【００２６】
例えば、クロック生成回路２６は、一般的な発信器とし、クロック生成回路２５は、外部発信器として、２つのクロック生成回路２５、２６からマイコン１１、１２のそれぞれにクロック信号を供給する。具体的には、クロック生成回路２６が生成したクロック信号は、マイコン１１、１２のそれぞれのクロック信号入力ポートを介してマイコン１１、１２のそれぞれに入力されるようにする。また、クロック生成回路２５が生成したクロック信号は、マイコン１１、１２のそれぞれの割り込み信号入力ポートをクロック信号入力ポートとして流用することで、それぞれの割り込み信号入力ポートを介してマイコン１１、１２のそれぞれに入力されるようにする。なお、クロック生成回路２５を、一般的な発信器とし、クロック生成回路２６を、外部発信器とするようにしてもよい。
【００２７】
続いて、図３を参照して、実施の形態１にかかるマイコン１１、１２における処理同期方法の概要について説明する。図３は、実施の形態１にかかるクロック生成回路２５、２６とＣＰＵ１１０、１２０の接続関係を示す図である。
【００２８】
マイコン１１、１２のそれぞれは、上述したように、倒立二輪車１の制御に関する各種処理を実行するＣＰＵ１１０、１２０のそれぞれを有する。ＣＰＵ１１０、１２０のそれぞれは、所定の一定時間（処理インターバル時間）経過する毎に所定の処理を実行する。例えば、ＣＰＵ１１０、１２０のそれぞれは、所定の処理として、センサ（ジャイロセンサ２３、２４及び回転角センサ１９〜２２）のそれぞれからセンサ値（角速度信号及び回転角信号）を取得するセンサ取得処理、取得したセンサ値（角速度信号及び回転角信号のそれぞれが示すピッチ角速度及びモータ１７、１８の回転角）に基づいて指令値を算出する姿勢制御（モータ出力計算）処理、及び、算出した指令値をインバータ１３〜１６のそれぞれに出力するモータ出力処理等を実行する。なお、これらの処理は、それぞれ同一タイミングで一定時間間隔毎に実施されるようにしてもよく、それぞれ異なるタイミングで一定時間間隔毎に実施されるようにしてもよい。また、これらの処理の実行間隔は、それぞれ同一時間間隔であってもよく、異なる時間間隔であってもよい。
【００２９】
ここで、ＣＰＵ１１０は、ＣＰＵ１１０における処理のタイミングを生成するタイマ１１１、１１２を有する。また、ＣＰＵ１２０は、ＣＰＵ１２０における処理のタイミングを生成するタイマ１２１、１２２を有する。タイマ１１１、１１２、１２１、１２２のそれぞれは、カウンタ値として時間を計測するカウンタ（図示せず）を内蔵する。
【００３０】
タイマ１１１、１２１のそれぞれは、クロック生成回路２５からのクロック信号Ｃｌｋに基づいて、カウンタのカウンタ値を更新する。タイマ１２１、１２２のそれぞれは、クロック生成回路２６からのクロック信号Ｃｌｋに基づいて、カウンタのカウンタ値を更新する。タイマ１１１、１１２、１２１、１２２のそれぞれは、例えば、クロック信号の立ち上がりエッジの入力タイミングで、カウンタのカウンタ値を更新する。なお、タイマ１１１、１１２、１２１、１２２のそれぞれは、例えば、クロック信号の立ち下がりエッジの入力タイミングで、カウンタのカウンタ値を更新するものであってもよい。
【００３１】
ＣＰＵ１１０、１２０のそれぞれは、クロック生成回路２５が正常に動作している場合には、そのクロック信号が供給されるタイマ１１１、１２１のそれぞれが計測する時間に基づいて、上述した一定時間間隔毎の処理を実行する。具体的には、ＣＰＵ１１０、１２０のそれぞれは、タイマ１１１、１２１のそれぞれのカウンタに対して、カウンタ値の初期値を設定する。タイマ１１１、１２１のそれぞれは、クロック信号に基づいてカウンタのカウンタ値を初期値からカウントダウンしていき、カウンタ値がアンダーフローしたとき（０からさらに−１した値となったとき）に割り込み信号をＣＰＵ１１０、１２０のそれぞれの内部で発生させる。これにより、割り込み信号が、カウンタ値の初期値に応じた一定時間間隔毎に発生する。すなわち、ＣＰＵ１１０、１２０のそれぞれが設定するカウンタ値の初期値は、所望の一定時間を計測するように予め定められている。ＣＰＵ１１０、１２０のそれぞれは、タイマ１１１、１２１のそれぞれからの割り込み信号に基づいて、一定時間間隔毎に処理を実行する。例えば、割り込み信号が１ｍｓ毎に発生し、１０ｍｓ毎に実行する必要がある処理がある場合、ＣＰＵ１１０、１２０のそれぞれは、割り込み信号の発生に応じて動作して割り込み信号の発生回数をカウントすることで、１０回の割り込み信号の発生をカウントする毎に、その処理を実行するようにする。また、タイマ１１１、１２１のそれぞれは、カウンタ値がアンダーフローしたときに、カウンタのカウンタ値を初期値に初期化するとともに、初期値からのカウントダウンを再開する。
【００３２】
ＣＰＵ１１０、１２０のそれぞれは、クロック生成回路２５に関する故障が検出された場合には、予備用のクロック生成回路２６からのクロック信号が供給されるタイマ１２１、１２２のそれぞれが計測する時間に基づいて、上述した一定時間間隔毎の処理を実行する。すなわち、ＣＰＵ１１０、１２０のそれぞれは、タイマ１１２、１２２のそれぞれからの割り込み信号に基づいて、一定時間間隔毎に処理を実行する。なお、具体的な動作は、上述したＣＰＵ１１０、１２０とタイマ１１１、１２１とによって行われる動作と同様となるため、詳細な説明は省略する。
【００３３】
また、制御装置１０は、ＣＰＵ１１０とＣＰＵ１２０とを接続するＣＰＵ間通信路２００を有する。ＣＰＵ１１０とＣＰＵ１２０とは、ＣＰＵ間通信路２００を介して相互に情報を送受信しつつ、倒立二輪車１の倒立制御を実施する。
【００３４】
ここで、クロック生成回路２５とＣＰＵ１１０、１２０のそれぞれとは、クロック生成回路２５から延び、ＣＰＵ１１０、１２０のそれぞれに向かって分岐するクロック信号線によって相互に接続される。これにより、クロック生成回路２５から出力されたクロック信号は、このクロック信号線を介して分配されてＣＰＵ１１０、１２０のそれぞれに供給される。また、クロック生成回路２６と、ＣＰＵ１１０、１２０のそれぞれとは、クロック生成回路２６から延び、ＣＰＵ１１０、１２０のそれぞれに向かって分岐する信号線によって相互に接続される。これにより、クロック生成回路２６から出力されたクロック信号は、このクロック信号線を介して分配されてＣＰＵ１１０、１２０のそれぞれに供給される。
【００３５】
ここで、好ましくは、クロック生成回路２５から出力されたクロック信号が同一タイミングでＣＰＵ１１０、１２０のそれぞれに到達するように、クロック生成回路２５とＣＰＵ１１０、１２０のそれぞれとを接続するクロック信号線は、クロック生成回路２５からＣＰＵ１１０までの長さと、クロック生成回路２５からＣＰＵ１２０までの長さとが同一となるように構成される。同様に、好ましくは、クロック生成回路２６から出力されたクロック信号が同一タイミングでＣＰＵ１１０、１２０のそれぞれに到達するように、クロック生成回路２６とＣＰＵ１１０、１２０のそれぞれとを接続するクロック信号線は、クロック生成回路２６からＣＰＵ１１０までの長さと、クロック生成回路２６からＣＰＵ１２０までの長さとが同一となるように構成される。
【００３６】
このような構成によって、ＣＰＵ１１０、１２０のそれぞれは、クロック生成回路２５又は２６から供給される、同一のクロック信号に基づいて動作する。すなわち、ＣＰＵ１１０、１２０のそれぞれは、同一のクロック信号によって計測した時間に基づいて、上述の処理を実行する。したがって、本実施の形態によれば、ＣＰＵ１１０、１２０のそれぞれが、倒立二輪車１の制御に関する処理を同期して実行することが可能となる。
【００３７】
続いて、図４を参照して、実施の形態１にかかる制御装置１０の故障診断処理について説明する。図４は、実施の形態１にかかる制御装置１０の故障診断処理を示すフローチャートである。以下、ＣＰＵ１１０が処理を実行する場合について説明するが、ＣＰＵ１２０においても同様の処理が実行される。
【００３８】
ＣＰＵ１１０は、タイマ１１１（ＣＰＵ１２０の場合はタイマ１２１）のそれぞれで計測される時間が、センサ取得処理及びモータ出力計算処理タイミングとなったとき、それらの処理を開始し（Ｓ１）、センサからのセンサ値の取得、及びモータに出力する指令値の計算を行う（Ｓ２）。上述したように、ＣＰＵ１１０、１２０のそれぞれは、同一のクロック信号に基づいて動作するため、ＣＰＵ１１０、１２０のそれぞれで実行されるセンサ取得処理及びモータ出力計算処理は、同じタイミングで実行される。
【００３９】
具体的には、ＣＰＵ１１０は、センサ取得処理として、回転角センサ１９、２０のそれぞれから出力される回転角信号と、ジャイロセンサ２３から出力される角速度信号を取得する。そして、ＣＰＵ１１０は、モータ出力計算処理として、回転角センサ１９から取得した回転角信号が示すモータ１７の回転角と、ジャイロセンサ２３から取得した角速度信号が示すピッチ角速度に基づいて、インバータ１３に出力する指令値を計算する。また、ＣＰＵ１１０は、モータ出力計算処理として、回転角センサ２０から取得した回転角信号が示すモータ１８の回転角と、ジャイロセンサ２３から取得した角速度信号が示すピッチ角速度に基づいて、インバータ１４に出力する指令値を計算する。
【００４０】
また、ＣＰＵ１２０が実行する場合、ＣＰＵ１２０は、センサ取得処理として、回転角センサ２１、２２のそれぞれから出力される回転角信号と、ジャイロセンサ２４から出力される角速度信号を取得する。そして、ＣＰＵ１２０は、モータ出力計算処理として、回転角センサ２１から取得した回転角信号が示すモータ１７の回転角と、ジャイロセンサ２４から取得した角速度信号が示すピッチ角速度に基づいて、インバータ１５に出力する指令値を計算する。また、ＣＰＵ１２０は、モータ出力計算処理として、回転角センサ２２から取得した回転角信号が示すモータ１８の回転角と、ジャイロセンサ２４から取得した角速度信号が示すピッチ角速度に基づいて、インバータ１６に出力する指令値を計算する。
【００４１】
ＣＰＵ１１０は、モータ出力処理の前に通信を行う（Ｓ３）。具体的には、ＣＰＵ１１０は、計算した指令値を他方のＣＰＵ１２０に送信する。ＣＰＵ１１０は、他方のＣＰＵ１２０から送信された指令値と、自身が計算した指令値とを比較する（Ｓ４）。ＣＰＵ１１０は、比較した指令値の差が所定の閾値未満である場合、指令値が一致すると判定し、比較した指令値の差が所定の閾値以上である場合、指令値が一致しないと判定する。例えば、指令値の差を絶対値で扱う場合、閾値は０以上の任意の実数である。
【００４２】
ここで、ＣＰＵ１１０、１２０のそれぞれが他方のＣＰＵ１１０又は１２０に送信して比較する情報は、指令値のようにセンサ値から算出した情報に限られず、センサ値であってもよい。例えば、ＣＰＵ１１０、１２０のそれぞれは、センサ取得処理において、ジャイロセンサ２３、２４のそれぞれから取得した角速度信号が示すピッチ角速度を示すピッチ角速度情報を他方のＣＰＵ１１０又は１２０に送信するようにしてもよい。そして、ＣＰＵ１１０は、ジャイロセンサ２３から取得した角速度信号が示すピッチ角速度と、他方のＣＰＵ１２０から送信されたピッチ角速度情報が示すピッチ角速度（ジャイロセンサ２４で検出したピッチ角速度）とを比較する。これによれば、ジャイロセンサ２３又はジャイロセンサ２４が故障していることを検出することができる。すなわち、比較したピッチ角速度が一致しいと判定した場合、ジャイロセンサ２３又はジャイロセンサ２４が故障していることになる。ＣＰＵ１１０は、上述と同様に、比較したピッチ角速度の差が所定の閾値以上である場合、ピッチ角速度が一致しないと判定する。
【００４３】
また、センサ１９、２１のそれぞれから取得した回転角信号と、センサ２０、２２のそれぞれから取得した回転角信号について同様の処理を実施するようにしてもよい。これによれば、センサ１９又はセンサ２１、もしくは、センサ２０又はセンサ２２が故障していることを検出することができる。
【００４４】
しかしながら、好ましくは、上述したようにモータ出力処理のタイミングで指令値を送受信して比較することで、センサ以外にも、ＣＰＵ及びその周辺装置の動作確認もすることができる。例えば、本実施の形態では、ＣＰＵ１１０、１２０のそれぞれが、同一のクロック信号に基づいて同一タイミングでセンサ値を取得するため、センサに故障がなければ、ＣＰＵ１１０、１２０のそれぞれで、同一のセンサ値が取得される。しかし、マイコン１１、１２のＲＡＭ（Random Access Memory）及びＲＯＭ（Read Only Memory）等が故障している場合、ＣＰＵ１１０、１２０のそれぞれが、同一のセンサ値に基づいて指令値を計算したとしても、指令値が一致しないことがある。それに対して、モータ出力処理のタイミングで指令値を比較することで、それを検出することができる。なお、ＲＡＭは、指令値を計算する際に、その演算内容が格納されるメモリを想定しており、ＲＯＭは、指令値を計算する際に、それに用いるパラメータが予め格納されているメモリを想定している。
【００４５】
比較した指令値が一致すると判定した場合（Ｓ５：Ｙｅｓ）、ＣＰＵ１１０は、処理を継続する（Ｓ６）。例えば、ＣＰＵ１１０は、モータ出力処理として、計算した指令値をインバータ１３、１４及びインバータ１５、１６のそれぞれに出力する。
【００４６】
比較した指令値が一致しないと判定した場合（Ｓ５：Ｎｏ）、何らかの故障が発生していることになる（Ｓ７）。この場合は、指令値の算出に用いるセンサ値を提供する回転角センサ１９〜２２及びジャイロセンサ２３、２４等のいずれかが故障しており、ＣＰＵ１１０、１２０のそれぞれで算出された指令値が不一致となっていることになる。そのため、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ停止させる安全制御（制動制御）を実施する。また、安全制御を実施する場合は、さらに、ＣＰＵ１１０が、安全制御の実施を指示する指示情報をＣＰＵ１２０に送信するようにし、ＣＰＵ１２０も、その指示情報の受信に応じて安全制御を実施するようにしてもよい。
【００４７】
以上に説明したように、本実施の形態では、ＣＰＵ１１０が利用する時間（タイマ１１１又は１１２のカウンタ値）と、ＣＰＵ１２０が利用する時間（タイマ１２１又は１２２のカウンタ値）を同期することができる。そのため、ＣＰＵ１１０とＣＰＵ１２０のそれぞれで実行される、倒立二輪車１の制御に関する処理の同期の精度を向上することができる。ここで、上述した故障診断処理を例に挙げて、その効果について説明する。
【００４８】
例えば、図５Ａに示すように、ＣＰＵ１１０とＣＰＵ１２０が同期して処理を実行することができていない場合には、ＣＰＵ１１０が判断するセンサ取得処理の実行タイミングＡＴ０１〜ＡＴ０９と、ＣＰＵ１２０が判断するセンサ取得処理の実行タイミングＡＴ１１〜ＡＴ１９とがズレてしまう。この場合、上述の故障診断処理において、ＣＰＵ１１０がセンサから取得するセンサ値と、ＣＰＵ１２０がセンサからセンサ値と差が大きくなってしまう。そのため、ＣＰＵ１１０、１２０のそれぞれでセンサ値から算出する指令値の差も大きくなってしまう。この場合、ステップＳ５において指令値が一致しないと誤判定してしまうことを防止するために、上述の閾値を大きくとる必要がある。しかしながら、その閾値を大きくとってしまうと、故障を検出する精度が低下してしまう。また、ＣＰＵ１１０、１２０のそれぞれは、それぞれの差の大きい指令値に基づいて、ズレたタイミングでモータ出力処理を行うため、倒立二輪車１がぎくしゃくした動きとなってしまい、制御の効率が悪くなってしまう。
【００４９】
それに対して、本実施の形態によれば、図５Ｂに示すように、ＣＰＵ１１０とＣＰＵ１２０が同期して処理を実行することができるため、ＣＰＵ１１０が判断するセンサ取得処理の実行タイミングＡＴ０１〜ＡＴ０９と、ＣＰＵ１２０が判断するセンサ取得処理の実行タイミングＡＴ１１〜ＡＴ１９とを同期することができる。よって、上述の故障診断処理において、ＣＰＵ１１０がセンサから取得するセンサ値と、ＣＰＵ１２０がセンサからセンサ値と差を低減することができる。そのため、ＣＰＵ１１０、１２０のそれぞれでセンサ値から算出する指令値の差も低減することができる。これによれば、ステップＳ６において、上述の閾値を大きくとる必要がないため、故障を検出する精度を向上することができる。また、ＣＰＵ１１０、１２０のそれぞれは、それぞれの差を低減した指令値に基づいて、同一のタイミングでモータ出力処理を行うことができるため、倒立二輪車１の制御の安定性を向上することができ、制御の効率も向上することができる。
【００５０】
このように、制御系が多重化された倒立二輪車１では、倒立二輪車１を安定して倒立制御するためには、それぞれの制御系が同時に、センサ取得処理、モータ出力計算処理、及びモータ出力処理を実施する必要があるというシビアな要求がある。これに対して、本実施の形態によれば、倒立二輪車１（同軸二輪移動体）を倒立制御する複数の制御系（ＣＰＵ）間において処理の同期を可能にすることで、このシビアな要求を満足することができる。すなわち、本実施の形態によれば、倒立二輪車１の制御の安定性の向上という点で顕著な効果を奏することができる。
【００５１】
続いて、図６を参照して、実施の形態１にかかるクロック生成回路２５の故障診断処理について説明する。図６は、実施の形態１にかかるクロック生成回路２５の故障診断処理を示すフローチャートである。ＣＰＵ１１０、１２０のそれぞれは、以下に説明する動作を、例えば、所定の一定時間間隔毎に実施する。以下、ＣＰＵ１１０が処理を実行する場合について説明するが、ＣＰＵ１２０においても同様の処理が実行される。
【００５２】
ＣＰＵ１１０は、クロック生成回路２５から供給されるクロック信号Ｃｌｋに基づいた割り込みが定期的に発生しているか否かを確認する（Ｓ１１）。
【００５３】
具体的には、ＣＰＵ１１０は、タイマ１１１のカウンタ値と、タイマ１１２のカウンタ値とを比較する。ＣＰＵ１１０は、比較したカウンタ値の差が所定の閾値未満である場合、カウンタ値が一致すると判定し、比較したカウンタ値の差が所定の閾値以上である場合、カウンタ値が一致しないと判定する。例えば、カウンタ値の差を絶対値で扱う場合、閾値は０以上の任意の整数である。ＣＰＵ１１０は、カウンタ値が一致しないと判定した場合、割り込みが定期的に発生していないと判定する。ＣＰＵ１１０は、カウンタ値が一致すると判定した場合、割り込みが定期的に発生していると判定する。
【００５４】
ここで、好ましくは、ＣＰＵ１１０は、タイマ１１１のカウンタ値のカウントダウンが、タイマ１１２のカウンタ値よりも遅れる形で、カウンタ値が一致しないと判定した場合に、割り込みが定期的に発生していないと判定するようにするとよい。すなわち、ＣＰＵ１１０は、カウンタ値が一致しない場合であっても、タイマ１１１のカウンタ値のカウントダウンが、タイマ１１２のカウンタ値よりも進んでいるときには、割り込みが定期的に発生していると判定するとよい。タイマ１１１のカウンタ値のカウントダウンが、タイマ１１２のカウンタ値よりも遅れているときの方が、タイマ１１１のカウンタ値のカウントダウンが正常に行われておらず、所望の一定時間間隔で定期的に割り込み信号を発生することができていない蓋然性が高いからである。
【００５５】
また、ＣＰＵ１２０が実行する場合、ＣＰＵ１２０は、タイマ１２１のカウンタ値と、タイマ１２２のカウンタ値とを比較する。なお、具体的な判定方法については、上述したＣＰＵ１１０が実行する場合と同様であるため、詳細な説明は省略する。
【００５６】
ＣＰＵ１１０は、通信時に、ＣＰＵ１１０、１２０の両方が動作しているか否かと、ＣＰＵ１１０、１２０のそれぞれの動作タイミングが一致しているか否かを確認する（Ｓ１２）。
【００５７】
具体的には、ＣＰＵ１１０は、他方のＣＰＵ１２０との通信において、他方のＣＰＵ１１２０からの通信の途絶を検出した場合、他方のＣＰＵ１２０が動作しておらず、ＣＰＵ１１０、１２０の両方が動作していないと判定する。ＣＰＵ１１０は、他方のＣＰＵ１２０との通信において、他方のＣＰＵ１２０からの通信の途絶を検出していない場合、他方のＣＰＵ１２０が動作しており、ＣＰＵ１１０、１２０の両方が動作していると判定する。
【００５８】
この通信として、例えば、図４のステップＳ３における通信を利用してもよく、その他の任意の通信を利用してもよい。例えば、図４のステップＳ３において、ＣＰＵ１１０は、他方のＣＰＵ１２０から指令値が送信されなかった場合に、他方のＣＰＵ１２０からの通信が途絶したと判定するようにしてもよい。また、例えば、ＣＰＵ１１０、１２０のそれぞれが、他方のＣＰＵ１１０又は１２０に所定の一定時間（ハートビートインターバル時間）間隔毎にハートビート信号を送信するようにし、ＣＰＵ１１０は、他方のＣＰＵ１２０から、所定の規定時間（ハートビートインターバル時間よりも長い時間）の間、ハートビート信号が送信されなかった場合に、他方のＣＰＵ１２０からの通信が途絶したと判定するようにしてもよい。
【００５９】
また、ＣＰＵ１１０は、図４のステップＳ５において、比較した指令値が一致しないと判定した場合、ＣＰＵ１１０、１２０のそれぞれの動作タイミングが一致していないと判定し、比較した指令値が一致すると判定した場合、ＣＰＵ１１０、１２０のそれぞれの動作タイミングが一致していると判定する。ここで、センサ等が故障しており、指令値が一致しなくなっていることも考えられる。したがって、好ましくは、ＣＰＵ１１０は、自ＣＰＵ１１０に含まれるタイマ１１１、タイマ１１２のそれぞれのカウンタ値が一致せず、かつ、比較した指令値が一致しないと判定した場合に、ＣＰＵ１１０、１２０のそれぞれの動作タイミングが一致していないと判定するようにするとよい。なお、ＣＰＵ１１０は、比較したカウンタ値の差が所定の閾値未満である場合、カウンタ値が一致すると判定し、比較したカウンタ値の差が所定の閾値以上である場合、カウンタ値が一致しないと判定する。例えば、カウンタ値の差を絶対値で扱う場合、閾値は０以上の任意の整数である。
【００６０】
ＣＰＵ１１０は、クロック生成回路２５に関する故障が発生しているか否かを判定する（Ｓ１３）。具体的には、上述したステップＳ１１、Ｓ１２の確認結果に基づいた、以下の（１）〜（３）の少なくとも１つの判定基準によって、クロック生成回路２５に関する故障が発生しているか否かを判定するようにする。
【００６１】
（１）ＣＰＵ１１０は、ステップＳ１１において、割り込みが定期的に発生していないと判定した場合には、クロック生成回路２５に関する故障が発生していると判定する。この場合、クロック生成回路２５、又は、クロック生成回路２５とＣＰＵ１１０を接続するクロック信号線が故障しており、正常にクロック信号が供給されていない可能性があるからである。また、ＣＰＵ１１０は、ステップＳ１１において、割り込みが定期的に発生していると判定した場合には、クロック生成回路２５に関する故障が発生していないと判定する。
【００６２】
（２）ＣＰＵ１１０は、ステップＳ１２において、ＣＰＵ１１０、１２０の両方が動作していないと判定した場合、クロック生成回路２５に関する故障が発生していると判定する。この場合、クロック生成回路２５と、他方のＣＰＵ１２０とを接続するクロック信号線が故障しており、他方のＣＰＵ１２０に正常にクロック信号が供給されていない可能性があるからである。また、ＣＰＵ１１０は、ステップＳ１２において、ＣＰＵ１１０、１２０の両方が動作していると判定した場合、クロック生成回路２５に関する故障が発生していないと判定する。
【００６３】
（３）ＣＰＵ１１０は、ステップＳ１２において、ＣＰＵ１１０、１２０のそれぞれの動作タイミングが一致していないと判定した場合、クロック生成回路２５に関する故障が発生していると判定する。この場合、クロック生成回路２５と、ＣＰＵ１１０又は１２０とを接続するクロック信号線が故障しており、ＣＰＵ１１０又は１２０にクロック信号が供給されていない可能性があるからである。また、ＣＰＵ１１０は、ステップＳ１２において、ＣＰＵ１１０、１２０のそれぞれの動作タイミングが一致していると判定した場合、クロック生成回路２５に関する故障が発生していないと判定する。
【００６４】
なお、上記の（１）〜（３）の２つ以上の判定基準を利用する場合は、それらうちのいずれかの判定基準において、クロック生成回路２５に関する故障が発生していると判定される場合、クロック生成回路２５に関する故障が発生している（Ｓ１３：Ｙｅｓ）と判定するようにすればよい。
【００６５】
クロック生成回路２５に関する故障が発生していると判定した場合（Ｓ１３：Ｙｅｓ）、ＣＰＵ１１０は、その動作に用いるクロック生成回路を、クロック生成回路２５から代替用のクロック生成回路２６に切り替える（Ｓ１４）。これは、例えば、ＣＰＵ１１０が、その動作に用いるクロック信号を、クロック生成回路２５からのクロック信号から、代替用のクロック生成回路２６からのクロック信号に切り替えるとともに、クロック信号の切り替えを指示する切替指示信号を他方のＣＰＵ１２０に出力するようにする。そして、ＣＰＵ１２０は、ＣＰＵ１１０からの切替指示信号の出力に応じて、その動作に用いるクロック信号を、クロック生成回路２５からのクロック信号から、代替用のクロック生成回路２６からのクロック信号に切り替えるようにすればよい。これにより、ＣＰＵ１１０、１２０のそれぞれで利用するクロック生成回路を同時に切り替える。また、このときに、ＣＰＵ１１０、１２０のそれぞれで、処理のタイミングの計測（割り込み回数のカウント）をリセットすることで、処理の同期タイミングのズレも防止するようにしてもよい。
【００６６】
これにより、ＣＰＵ１１０、１２０のそれぞれは、代替用のクロック生成回路２６から供給されるクロック信号に基づいて動作するタイマ１１２、１２２のそれぞれが計測する時間に基づいての処理を継続する。また、この場合、クロック生成回路２５に関する故障が発生していることになるため、ＣＰＵ１１０、１２０のそれぞれは、クロック生成回路２６から供給されるクロック信号に基づいて、倒立二輪車１の安全制御を行うようにしてもよい。
【００６７】
クロック生成回路２５に関する故障が発生していないと判定した場合（Ｓ１３：Ｎｏ）、現用のクロック生成回路２５での処理を継続する（Ｓ１５）。
【００６８】
ここで、ステップＳ１１における割り込みが定期的に発生しているか否かの確認は、ウォッチドックタイマを利用して確認するようにしてもよい。具体的には、制御装置１０がＣＰＵ１１０、１２０を監視するウォッチドックタイマを有するようにする。ＣＰＵ１１０、１２０のそれぞれは、割り込み信号の発生に応じて動作する毎に、動作していることを通知する通知信号をウォッチドックタイマに送信するようにする。そして、ウォッチドックタイマは、ＣＰＵ１１０又はＣＰＵ１２０の動作停止を検出した場合、割り込みが定期的に発生していないと判定する。この場合、ステップＳ１４では、ウォッチドックタイマが、割り込みが定期的に発生していないと判定した場合に、切替指示信号をＣＰＵ１１０、１２０のそれぞれに出力するようにすればよい。なお、ウォッチドックタイマは、所定の規定時間（割り込み信号が発生する間隔よりも長い時間）の間、ＣＰＵ１１０又は１２０からの通知信号が送信されなかった場合、そのＣＰＵが動作停止していると判定する。ここで、ウォッチドックタイマは、ＣＰＵ１１０、１２０のうち、いずれか１つを監視するようにしてもよいが、好ましくは、上述したようにＣＰＵ１１０、１２０の両方を監視することで、クロック生成回路２５に関する故障の検出精度を向上することができる。また、制御装置１０は、ＣＰＵ１１０、１２０のそれぞれに対応するように、２つのウォッチドックタイマを有するようにしてもよい。
【００６９】
以上に説明したように、本実施の形態では、ＣＰＵ１１０及びＣＰＵ１２０は、クロック生成回路２５又は２６が生成したクロック信号が分配されて、それぞれに供給される。これによれば、ＣＰＵ１１０及びＣＰＵ１２０は、同一のクロック信号に基づいて動作することになるため、ＣＰＵ１１０、１２０のそれぞれで実行される、倒立二輪車１（同軸二輪移動体）の制御に関する処理の同期の精度を向上することができる。
【００７０】
＜発明の実施の形態２＞
続いて、本発明の実施の形態２について説明する。本実施の形態２にかかる倒立二輪車１の概要構成については、図１を参照して説明した実施の形態１にかかる倒立二輪車１の概要構成と同様であるため、その説明を省略する。
【００７１】
続いて、図７を参照して、実施の形態２にかかる制御装置１０の構成について説明する。図７を参照して、実施の形態２にかかる制御装置１０の構成を示すブロック図である。
【００７２】
本実施の形態２に係る制御装置１０は、実施の形態１に係る制御装置１０と比較して、さらに、外部通信ＣＰＵ２７及び通信モジュール２８を有する。
【００７３】
外部通信ＣＰＵ２７は、外部端末（図示せず）と無線通信又は有線通信を行うゲートウェイとなるＣＰＵである。外部通信ＣＰＵ２７は、マイコン１１、１２のそれぞれと通信可能に接続されている。外部通信ＣＰＵ２７は、マイコン１１、１２から倒立二輪車１の状態を示す状態情報の出力を受ける。外部通信ＣＰＵ２７は、受け取った状態情報を、通信モジュール２８を介して外部端末に送信する。また、外部通信ＣＰＵ２７は、外部端末から通信モジュール２８を介して受信した情報を、マイコン１１、１２に転送することも可能である。倒立二輪車１の状態は、例えば、センサ値、故障の検出状況、及び、マイコン１１、１２がセンサ値に基づいて算出した走行距離又は走行速度等である。
【００７４】
ここで、外部端末は、制御装置１０と無線通信又は有線通信によって通信可能な情報処理装置である。また、外部端末は、例えば、液晶パネル等の表示装置を有しており、倒立二輪車１から受信した状態情報が示す倒立二輪車１の状態を表示装置に表示する。外部端末は、例えば、パーソナルコンピュータ、タブレット端末、又はスマートフォン等である。制御装置１０と外部端末との間の通信には、無線通信及び有線通信のいずれを採用してもよい。無線通信を採用した場合には、その通信方式として、無線通信における任意の通信方式を採用するようにしてよい。有線通信を採用した場合にも、その通信方式として、有線通信における任意の通信方式を採用するようにしてよい。
【００７５】
通信モジュール２８は、外部通信ＣＰＵ２７から出力された情報を、採用された通信方式に従った形式に変換して外部端末に送信する。通信モジュール２８は、外部端末から受信した情報を、制御装置１０において処理可能な形式に変換して外部通信ＣＰＵ２７に出力する。
【００７６】
続いて、図８を参照して、実施の形態２にかかる故障箇所特定方法の概要について説明する。図８は、実施の形態２にかかるＣＰＵ１１０、１２０と外部通信ＣＰＵ２７の接続関係を示す図である。
【００７７】
マイコン１１、１２のそれぞれは、上述したように、倒立二輪車１の制御に関する各種処理を実行するＣＰＵ１１０、１２０のそれぞれを有する。ＣＰＵ１１０、１２０のそれぞれは、他方のＣＰＵ１１０又は１２０による自ＣＰＵ１１０又は１２０の故障を検出可能とさせるために、所定の一定時間（ハートビートインターバル時間）経過する毎に、ＣＰＵ間通信路２００を介してハートビート信号を他方のＣＰＵ１１０又は１２０に送信する。そして、ＣＰＵ１１０、１２０のそれぞれは、所定の規定時間（ハートビートインターバル時間よりも長い時間）の間、ＣＰＵ間通信路２００を介して他方のＣＰＵ１１０又は１２０からハートビート信号を受信しなかった場合、ＣＰＵ間通信路２００における通信断が発生したと判定する。
【００７８】
また、本実施の形態２にかかる制御装置１０は、ＣＰＵ１１０、１２０のそれぞれと、外部通信ＣＰＵ２７とを接続する外部通信路２１０を有する。すなわち、ＣＰＵ１１０、１２０のそれぞれと、外部通信ＣＰＵ２７とは、外部通信路２１０を介して相互に情報を送受信することができる。
【００７９】
ここで、外部通信路２１０の接続形態として、例えば、以下の（１）〜（３）のうち、いずれかの接続形態をとることができる。
（１）外部通信ＣＰＵ２７、ＣＰＵ１１０、及びＣＰＵ１２０を相互にバス結合
（２）外部通信ＣＰＵ２７とＣＰＵ１１０をリンク結合、外部通信ＣＰＵ２７とＣＰＵ１２０をリンク結合
（３）外部通信ＣＰＵ２７とＣＰＵ１１０をリンク結合、外部通信ＣＰＵ２７とＣＰＵ１２０をリンク結合、ＣＰＵ１１０とＣＰＵ１２０とをリンク結合
【００８０】
（１）の接続形態では、外部通信ＣＰＵ２７、ＣＰＵ１１０、及びＣＰＵ１２０がバス結合される。この接続形態の場合、外部通信ＣＰＵ２７、ＣＰＵ１１０、及びＣＰＵ１２０は、相互に通信することができる。また、あるＣＰＵが送信した情報は、他の全てのＣＰＵによって取得される。すなわち、ＣＰＵが送信した情報は、ブロードキャストで送信される。具体的には、ＣＰＵ１１０が送信した情報は、外部通信ＣＰＵ２７及びＣＰＵ１２０によって受信される。ＣＰＵ１２０が送信した情報は、外部通信ＣＰＵ２７及びＣＰＵ１１０によって受信される。外部通信ＣＰＵ２７が送信した情報は、ＣＰＵ１１０及びＣＰＵ１２０によって受信される。
【００８１】
（２）の接続形態では、外部通信ＣＰＵ２７とＣＰＵ１１０がリンク接続され、外部通信ＣＰＵ２７とＣＰＵ１２０がリンク接続される。この接続形態の場合、外部通信ＣＰＵ２７は、ＣＰＵ１１０、１２０のそれぞれと通信することができるが、ＣＰＵ１１０とＣＰＵ１２０は、通信することができない。具体的には、ＣＰＵ１１０は、外部通信ＣＰＵ２７及びＣＰＵ１２０のうち、外部通信ＣＰＵ２７のみに情報を送信することができる。ＣＰＵ１２０は、外部通信ＣＰＵ２７及びＣＰＵ１１０のうち、外部通信ＣＰＵ２７のみに情報を送信することができる。外部通信ＣＰＵ２７は、ＣＰＵ１１０とＣＰＵ１２０の両方に情報を送信することができる。なお、この接続形態の場合は、外部通信ＣＰＵ２７がＣＰＵ１１０、１２０のそれぞれから送信された情報を他方のＣＰＵ１１０又は１２０に転送することで、ＣＰＵ１１０とＣＰＵ１２０との間で通信を行うことが可能である。
【００８２】
（３）の接続形態では、外部通信ＣＰＵ２７とＣＰＵ１１０がリンク接続され、外部通信ＣＰＵ２７とＣＰＵ１２０がリンク接続され、ＣＰＵ１１０とＣＰＵ１２０がリンク接続される。この接続形態の場合、外部通信ＣＰＵ２７、ＣＰＵ１１０、及びＣＰＵ１２０は、相互に通信することができる。具体的には、ＣＰＵ１１０は、外部通信ＣＰＵ２７とＣＰＵ１２０の両方に情報を送信することができる。ＣＰＵ１２０は、外部通信ＣＰＵ２７とＣＰＵ１１０の両方に情報を送信することができる。外部通信ＣＰＵ２７は、ＣＰＵ１１０とＣＰＵ１２０の両方に情報を送信することができる。すなわち、この接続形態の構成は、ＣＰＵ１１０とＣＰＵ１２０とが２本の通信路（ＣＰＵ間通信路２００と、外部通信路２１０におけるリンク接続）で接続されている構成と等価となる。
【００８３】
以上に説明した（１）〜（３）の接続形態によれば、ＣＰＵ１１０とＣＰＵ１２０は、ＣＰＵ間通信路２００の他に、外部通信路２１０を介しても相互に通信を行うことが可能である。本実施の形態２では、ＣＰＵ１１０、１２０のそれぞれは、ハートビート信号を他方のＣＰＵ１１０又は１２０に外部通信路２１０にも送受信する。これによって、ＣＰＵ間通信路２００におけるハートビート信号の通信断を検出した場合に、それがＣＰＵ間通信路２００の故障によって発生しているのか、他方のＣＰＵ１１０、１２０の故障によって発生しているのかを切り分け可能となる。
【００８４】
続いて、図９を参照して、実施の形態２にかかる制御装置１０の故障診断処理について説明する。図９は、実施の形態２にかかる制御装置１０の故障診断処理を示すフローチャートである。以下、ＣＰＵ１１０が処理を実行する場合について説明するが、ＣＰＵ１２０においても同様の処理が実行される。
【００８５】
ＣＰＵ１１０は、ＣＰＵ間通信路２００の通信断が発生しているか否かを判定する（Ｓ２１）。具体的には、ＣＰＵ１１０は、上述した所定の規定時間以上、他方のＣＰＵ１２０からＣＰＵ間通信路２００を介したハートビート信号を受信していない場合、ＣＰＵ間通信路２００の通信断が発生していると判定する。また、ＣＰＵ１１０は、所定の規定時間内に、他方のＣＰＵ１２０からＣＰＵ間通信路２００を介したハートビート信号を受信している場合、ＣＰＵ間通信路２００の通信断が発生していないと判定する。また、他の通信を利用して、ＣＰＵ間通信路２００の通信断を検出するようにしてもよい。例えば、図４のステップＳ３において、ＣＰＵ１１０は、他方のＣＰＵ１２０から指令値が送信されなかった場合に、ＣＰＵ間通信路２００の通信断が発生していると判定するようにしてもよい。
【００８６】
ＣＰＵ間通信路２００の通信断が発生していると判定した場合（Ｓ２１：Ｙｅｓ）、ＣＰＵ１１０は、外部通信路２１０の通信断が発生しているか否かを判定する（Ｓ２２）。具体的には、ＣＰＵ１１０は、所定の規定時間以上、他方のＣＰＵ１２０から外部通信路２１０を介したハートビート信号を受信していない場合、外部通信路２１０の通信断が発生していると判定する。また、ＣＰＵ１１０は、所定の規定時間内に、他方のＣＰＵ１２０から外部通信路２１０を介したハートビート信号を受信している場合、外部通信路２１０の通信断が発生していないと判定する。また、他の通信を利用して、ＣＰＵ間通信路２００の通信断を検出するようにしてもよい。
【００８７】
外部通信路２１０の通信断が発生していると判定した場合（Ｓ２２：Ｙｅｓ）、ＣＰＵ間通信路２００及び外部通信路２１０の両方で他方のＣＰＵ１１０又は１２０との通信が途絶していることになるため、他方のＣＰＵ１２０が動作していないことになる。この場合、ＣＰＵ１１０は、自ＣＰＵ１１０のみで倒立二輪車１を倒立制御しつつ走行させる制御を継続する、又は、安全制御を実施する（Ｓ２３）。なお、これらの制御のうち、いずれを実施するかは、予め任意に定めるようにしてよい。
【００８８】
外部通信路２１０の通信断が発生していないと判定した場合（Ｓ２２：Ｎｏ）、ＣＰＵ間通信路２００及び外部通信路２１０のうち、ＣＰＵ間通信路２００のみで通信断が発生していることになるため、ＣＰＵ間通信路２００が故障していることになる。この場合、ＣＰＵ１１０は、外部通信路２１０を利用して他方のＣＰＵ１１０、１２０と通信をしつつ、倒立二輪車１を倒立制御しつつ走行させる制御を継続する、又は、安全制御を実施する（Ｓ２４）。なお、これらの制御のうち、いずれを実施するかは、予め任意に定めるようにしてよい。例えば、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する場合は、さらに、外部通信路２１０の通信断が発生したときに、安全制御を実施するようにしてもよい。また、安全制御を実施する場合は、さらに、ＣＰＵ１１０が、安全制御の実施を指示する指示情報を、外部通信路２１０を介してＣＰＵ１２０に送信するようにし、ＣＰＵ１２０も、その指示情報の受信に応じて安全制御を実施するようにしてもよい。
【００８９】
ＣＰＵ間通信路２００の通信断が発生していないと判定した場合（Ｓ２１：Ｎｏ）、他方のＣＰＵ１１０、１２０が正常に動作していることになる。すなわち、２つのＣＰＵ１１０、１２０は、正常に動作していることになる（Ｓ２５）。この場合、ＣＰＵ１１０は、外部通信路２１０の通信断が発生しているか否かを判定する（Ｓ２６）。
【００９０】
外部通信路２１０の通信断が発生していると判定した場合（Ｓ２６：Ｙｅｓ）、ＣＰＵ間通信路２００及び外部通信路２１０のうち、外部通信路２１０のみで通信断が発生していることになるため、外部通信路２１０が故障していることになる。この場合、倒立二輪車１は、正常動作することができ、外部端末との通信ができないだけの状態である。そのため、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する（Ｓ２７）。また、ＣＰＵ１１０は、安全制御（制動制御）を実施するようにしてもよく、倒立二輪車１を倒立制御しつつ走行させる制御を継続しつつ、光及び音等の少なくとも１つを利用して、外部端末との通信ができない旨をユーザに通知するようにしてもよい。
【００９１】
ここで、ユーザへの通知に関しては、例えば、光を出力する発光装置、及び、音を出力する出音装置のうち、少なくとも１つを倒立二輪車１に有するようにする。そして、ＣＰＵ１１０、１２０のそれぞれが、ユーザへの通知を指示する指示信号を発光装置及び出音装置の少なくとも１つに出力し、発光装置及び出音装置が、指示信号の出力に応じて光及び音の少なくとも１つを出力するようにすればよい。発光装置は、例えば、ライトであり、出音装置は、例えば、スピーカーである。発光装置及び出音装置は、通知部として機能する。また、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する場合は、さらに、ＣＰＵ間通信路２００の通信断が発生したときに、安全制御を実施するようにしてもよい。また、安全制御を実施する場合は、さらに、ＣＰＵ１１０が、安全制御の実施を指示する指示情報を、ＣＰＵ間通信路２００を介してＣＰＵ１２０に送信するようにし、ＣＰＵ１２０も、その指示情報の受信に応じて安全制御を実施するようにしてもよい。
【００９２】
外部通信路２１０の通信断が発生していないと判定した場合（Ｓ２６：Ｎｏ）、外部端末との通信機能が正常に動作していることになる（Ｓ２８）。すなわち、２つのＣＰＵ１１０、１２０、ＣＰＵ間通信路２００、及び外部通信路２１０は、いずれも正常である。そのため、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する。
【００９３】
以上に説明したように、本実施の形態２では、ＣＰＵ１１０、１２０のそれぞれは、ＣＰＵ間通信路２００における他方のＣＰＵ１１０又は１２０からの通信の途絶と、外部通信路２１０における他方のＣＰＵ１１０又は１２０からの通信の途絶とを判定し、判定結果に対応する倒立二輪車１（同軸二輪移動体）の制御を実施するようにしている。
【００９４】
これによれば、他方のＣＰＵ１１０又は１２０、ＣＰＵ間通信路２００、及び外部通信路２１０のうち、いずれが故障しているのかを特定し、特定した故障箇所に適した倒立二輪車１の制御を実施することができる。
【００９５】
また、本実施の形態２では、外部に情報を送信するために設けられている外部通信路２１０を流用して、外部通信路２１０を介したＣＰＵ１１０及びＣＰＵ１２０間の通信も確認することで故障箇所を特定可能としている。したがって、新たな通信路を設けることなく、故障箇所を特定可能としているため、コストの増大を抑制することができる。
【００９６】
＜発明の実施の形態３＞
続いて、本発明の実施の形態３について説明する。本実施の形態３にかかる倒立二輪車１の概要構成については、図１を参照して説明した実施の形態１にかかる倒立二輪車１の概要構成と同様であるため、その説明を省略する。また、実施の形態３にかかる制御装置１０の構成についても、図２を参照して説明した実施の形態１にかかる倒立二輪車１の概要構成と同様であるため、その説明を省略する。
【００９７】
続いて、図１０を参照して、実施の形態３にかかる故障箇所特定方法の概要について説明する。図１０は、実施の形態３にかかるＣＰＵ１１０、１２０間の接続関係を示す図である。
【００９８】
マイコン１１、１２のそれぞれは、上述したように、倒立二輪車１の制御に関する各種処理を実行するＣＰＵ１１０、１２０のそれぞれを有する。ＣＰＵ１１０、１２０のそれぞれは、他方のＣＰＵ１１０又は１２０による自ＣＰＵ１１０又は１２０の故障を検出可能とさせるために、所定の一定時間（ハートビートインターバル時間）経過する毎に、ＣＰＵ間通信路２００を介してハートビート信号を他方のＣＰＵ１１０又は１２０に送信する。そして、ＣＰＵ１１０、１２０のそれぞれは、所定の規定時間（ハートビートインターバル時間よりも長い時間）の間、ＣＰＵ間通信路２００を介して他方のＣＰＵ１１０又は１２０からハートビート信号を受信しなかった場合、ＣＰＵ間通信路２００における通信断が発生したと判定する。
【００９９】
また、本実施の形態３にかかる制御装置１０は、ＣＰＵ１１０とＣＰＵ１２０を接続する信号通信路２２０、２２１を有する。信号通信路２２０、２２１は、ＣＰＵ間通信路２００よりも少ない所定数の信号線により構成される。信号通信路２２１は、ＣＰＵ１２０からＣＰＵ１１０への一方向に電気信号（情報）を送信可能な通信路である。信号通信路２２０は、ＣＰＵ１１０からＣＰＵ１２０への一方向に電気信号（情報）を送信可能な通信路である。
【０１００】
ここで、信号通信路２２０、２２１の構成として、例えば、以下の（１）及び（２）のうち、いずれかの構成をとることができる。
（１）Ｈｉ又はＬｏの値を表現可能な１本の信号線
（２）第１の電圧と第２の電圧をアナログ値で表現可能な数本（例えば３本）の信号線
【０１０１】
（１）の構成では、ＣＰＵ１１０、１２０のそれぞれは、所定の一定時間（信号切替時間）経過することに、信号通信路２２０又は２２１を介して他方のＣＰＵ１１０又は１２０に送信する電気信号の値をＨｉ及びＬｏの間で相互に切り替える。
【０１０２】
（２）の構成では、ＣＰＵ１１０、１２０のそれぞれは、所定の一定時間（信号切替時間）経過する毎に、信号通信路２２０又は２２１を介して他方のＣＰＵ１１０又は１２０に通知する電気信号（アナログ値）を第１の電圧（例えば３Ｖ）と第２の電圧（例えば５Ｖ）との間で相互に切り替える。また、厳密には、制御装置１０は、信号通信路２２０のＣＰＵ１１０側にＤＡ変換器（図示せず）を有し、信号通信路２２０のＣＰＵ１２０側にＡＤ変換器（図示せず）を有している。ＣＰＵ１１０からＣＰＵ１２０に送信される情報は、ＤＡ変換器を介してアナログ値に変換されてＣＰＵ１１０から送信され、ＡＤ変換器を介してデジタル値に変換されたＣＰＵ１２０で受信される。また、制御装置１０は、信号通信路２２１のＣＰＵ１２０側にＤＡ変換器（図示せず）を有し、信号通信路２２１のＣＰＵ１１０側にＡＤ変換器（図示せず）を有している。ＣＰＵ１２０からＣＰＵ１１０に送信される情報は、ＤＡ変換器を介してアナログ値に変換されてＣＰＵ１２０から送信され、ＡＤ変換器を介してデジタル値に変換されたＣＰＵ１１０で受信される。
【０１０３】
以上に説明したように、ＣＰＵ１１０、１２０それぞれは、ＣＰＵ１１０とＣＰＵ１２０間通信路２００の他に、信号通信路２２０、２２１によっても他方のＣＰＵ１１０又は１２０に対して通信を行うことが可能である。これによって、ＣＰＵ間通信路２００におけるハートビート信号の通信断を検出した場合に、それがＣＰＵ間通信路２００の故障によって発生しているのか、他方のＣＰＵ１１０、１２０の故障によって発生しているのかを切り分け可能となる。
【０１０４】
続いて、図１１を参照して、実施の形態にかかる制御装置１０の故障診断処理について説明する。図１１は、実施の形態にかかる制御装置１０の故障診断処理を示すフローチャートである。以下、ＣＰＵ１１０が処理を実行する場合について説明するが、ＣＰＵ１２０においても同様の処理が実行される。
【０１０５】
ＣＰＵ１１０は、ＣＰＵ間通信路２００の通信断が発生しているか否かを判定する（Ｓ３１）。ここでの判定方法については、図９のステップＳ２１で説明した方法と同様であるため、説明を省略する。
【０１０６】
ＣＰＵ間通信路２００の通信断が発生していると判定した場合（Ｓ３１：Ｙｅｓ）、ＣＰＵ１１０は、信号通信路２２１（ＣＰＵ１２０の場合は信号通信路２２０）の電気信号が停止しているか否かを判定する（Ｓ３２）。具体的には、ＣＰＵ１１０は、所定の規定時間（信号切替時間よりも長い時間）以上、他方のＣＰＵ１２０によって信号通信路２２１の電気信号の値が切り替えられていない場合、信号通信路２２１の電気信号が停止していると判定する。また、ＣＰＵ１１０は、所定の規定時間（信号切替時間よりも長い時間）内に、他方のＣＰＵ１２０によって信号通信路２２１の電気信号の値が切り替えられている場合、信号通信路２２１の電気信号が停止していないと判定する。
【０１０７】
信号通信路２２１の電気信号が停止していると判定した場合（Ｓ３２：Ｙｅｓ）、ＣＰＵ間通信路２００及び信号通信路２２１の両方で他方のＣＰＵ１２０からの通信が途絶していることになるため、他方のＣＰＵ１２０が動作していないことになる。この場合、ＣＰＵ１１０は、自ＣＰＵ１１０のみで倒立二輪車１を倒立制御しつつ走行させる制御を継続する、又は、安全制御（制動制御）を実施する（Ｓ３３）。なお、これらの制御のうち、いずれを実施するかは、予め任意に定めるようにしてよい。
【０１０８】
信号通信路２２１の電気信号が停止していないと判定した場合（Ｓ３２：Ｎｏ）、ＣＰＵ間通信路２００及び信号通信路２２１のうち、ＣＰＵ間通信路２００のみで通信断が発生していることになるため、ＣＰＵ間通信路２００が故障していることになる。この場合、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する、又は、安全制御（制動制御）を実施する（Ｓ３４）。なお、これらの制御のうち、いずれを実施するかは、予め任意に定めるようにしてよい。例えば、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する場合は、さらに、信号通信路２２１（ＣＰＵ１２０の場合は信号通信路２２０）の通信断が発生したときに、安全制御（制動制御）を実施するようにしてもよい。また、安全制御を実施する場合は、さらに、ＣＰＵ１１０が、安全制御の実施を指示する指示情報として上述の第１の電圧及び第２の電圧とは異なる電圧値を、信号通信路２２０を介してＣＰＵ１２０に送信するようにし、ＣＰＵ１２０も、その指示情報の受信に応じて安全制御を実施するようにしてもよい。
【０１０９】
ＣＰＵ間通信路２００の通信断が発生していないと判定した場合（Ｓ３１：Ｎｏ）、他方のＣＰＵ１２０が正常に動作していることになる。すなわち、２つのＣＰＵ１１０、１２０は、正常に動作していることになる（Ｓ３５）。この場合、信号通信路２２１（ＣＰＵ１２０の場合は信号通信路２２０）の電気信号が停止しているか否かを判定する（Ｓ３６）。
【０１１０】
信号通信路２２１の電気信号が停止していると判定した場合（Ｓ３６：Ｙｅｓ）、ＣＰＵ間通信路２００及び信号通信路２２１のうち、信号通信路２２１のみで通信断が発生していることになるため、信号通信路２２１が故障していることになる。この場合、倒立二輪車１は、正常動作することができ、ＣＰＵ１１０、１２０間の電気信号が動作していないだけの状態である。そのため、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する（Ｓ３７）。また、ＣＰＵ１１０は、安全制御（制動制御）を実施するようにしてもよく、倒立二輪車１を倒立制御しつつ走行させる制御を継続しつつ、光及び音等の少なくとも１つを利用して、電気信号が動作していない旨をユーザに通知するようにしてもよい。なお、ユーザへの通知の具体的な通知方法については、図９のステップＳ３７で説明した方法と同様であるため、詳細な説明は省略する。また、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する場合は、さらに、ＣＰＵ間通信路２００の通信断が発生したときに、安全制御（制動制御）を実施するようにしてもよい。また、安全制御を実施する場合は、さらに、ＣＰＵ１１０が、安全制御の実施を指示する指示情報を、ＣＰＵ間通信路２００を介してＣＰＵ１２０に送信するようにし、ＣＰＵ１２０も、その指示情報の受信に応じて安全制御を実施するようにしてもよい。
【０１１１】
信号通信路２２１の電気信号が停止していないと判定した場合（Ｓ３６：Ｎｏ）、ＣＰＵ１１０、１２０間の電気信号が正常に動作していることになる（Ｓ３８）。すなわち、２つのＣＰＵ１１０、１２０、ＣＰＵ間通信路２００、及び信号通信路２２０、２２１は、いずれも正常である。そのため、ＣＰＵ１１０は、倒立二輪車１を倒立制御しつつ走行させる制御を継続する。
【０１１２】
以上に説明したように、本実施の形態３では、ＣＰＵ１１０、１２０のそれぞれは、ＣＰＵ間通信路２００における他方のＣＰＵ１１０又は１２０からの通信の途絶と、信号通信路２２０又は２２１における他方のＣＰＵ１１０又は１２０からの通信の途絶とを判定し、判定結果に対応する倒立二輪車１（同軸二輪移動体）の制御を実施するようにしている。
【０１１３】
これによれば、他方のＣＰＵ１１０又は１２０、ＣＰＵ間通信路２００、及び信号通信路２２０、２２１のうち、いずれが故障しているのかを特定し、特定した故障箇所に適した倒立二輪車１の制御を実施することができる。
【０１１４】
また、本実施の形態３では、ＣＰＵ間通信路２００よりも少ない信号線数で構成される信号通信路２２０、２２１によって、ＣＰＵ１１０及びＣＰＵ１２０間の通信も確認することで故障箇所を特定可能としている。したがって、新たにＣＰＵ間通信路２００と同等の通信路を設ける場合と比較して、コストの増大を抑制することができる。
【０１１５】
＜発明の他の実施の形態＞
以上に説明した本実施の形態１〜３では、本発明を制御系が２重化された２重系システムに適用した場合について例示したが、３重系又は４重系等の多重系システムに適用することも可能である。ここで、３重系システムに適用した場合に、クロック生成回路とＣＰＵとを以下に説明するような接続関係とした構成とすることで、処理の同期を実現しつつ、共通原因故障を回避して、堅牢性を向上したシステムを構築することもできる。
【０１１６】
すなわち、図１２に示すように、３重系システムを構成してもよい。この場合、制御装置１０は、実施の形態１に係る制御装置１０と比較して、さらに、マイコン９０及びクロック生成回路９１を有する。この場合、制御装置１０は、マイコン９０の制御系に対応するジャイロセンサ、インバータ、及び回転角センサを同様に有するようにする必要があることは自明であるため、詳細な説明は省略する。
【０１１７】
マイコン９０は、マイコン１１、１２と同様に、センサ（ジャイロセンサ及び回転角センサ）からのセンサ値に基づいて、倒立二輪車１の倒立状態を維持するようにモータ１７、１８を制御するＥＣＵである。
【０１１８】
クロック生成回路９１は、クロック信号を生成して、マイコン９０に供給する。クロック生成回路９１は、通常利用される現用のクロック生成回路として動作する。マイコン９０は、クロック生成回路９１から供給されるクロック信号に基づいて動作し、各種処理を実行する。マイコン９０は、クロック生成回路９１が故障した場合には、クロック生成回路９１に代えて、クロック生成回路２６から供給されるクロック信号に基づいて動作し、各種処理を実行する。例えば、クロック生成回路９１は、外部発信器として、マイコン９０にクロック信号を供給する。
【０１１９】
マイコン９０は、倒立二輪車１の制御に関する各種処理を実行するＣＰＵ９００を有する。ＣＰＵ９００は、ＣＰＵ９００における処理のタイミングを生成するタイマ９０１、９０２を有する。タイマ９０１は、クロック生成回路９１からのクロック信号Ｃｌｋに基づいて、カウンタのカウンタ値を更新する。タイマ９０２は、クロック生成回路９１からのクロック信号Ｃｌｋに基づいて、カウンタのカウンタ値を更新する。ＣＰＵ９００は、タイマ９０１又は９０２からの割り込み信号に基づいて、一定時間間隔毎に処理を実行する。なお、具体的な動作は、上述したＣＰＵ１１０、１２０とタイマ１１１、１１２、１２１、１２２とによって行われる動作と同様となるため、詳細な説明は省略する。
【０１２０】
また、制御装置１０は、ＣＰＵ１２０とＣＰＵ９００とを接続するＣＰＵ間通信路２０１を有する。ＣＰＵ間通信路２０１は、例えば、所定数の信号線により構成される。ＣＰＵ１２０とＣＰＵ９００は、ＣＰＵ間通信路２０１を介して相互に情報を送受信しつつ、倒立二輪車１の倒立制御を実施する。
【０１２１】
クロック生成回路９１とＣＰＵ９００とは、クロック信号線によって相互に接続される。これにより、クロック生成回路９１から出力されたクロック信号は、このクロック信号線を介してＣＰＵ９００のそれぞれに供給される。また、図１２に示す構成では、クロック生成回路２６と、ＣＰＵ１１０、１２０、９００のそれぞれとは、クロック生成回路２６から延び、ＣＰＵ１１０、１２０、９００のそれぞれに向かって分岐する信号線によって相互に接続される。これにより、クロック生成回路２６から出力されたクロック信号は、このクロック信号線を介して分配されてＣＰＵ１１０、１２０、９００のそれぞれに供給される。
【０１２２】
ここで、好ましくは、クロック生成回路２６から出力されたクロック信号が同一タイミングでＣＰＵ１１０、１２０、９００のそれぞれに到達するように、クロック生成回路２６とＣＰＵ１１０、１２０、９００のそれぞれとを接続するクロック信号線は、クロック生成回路２６からＣＰＵ１１０までの長さと、クロック生成回路２６からＣＰＵ１２０までの長さと、クロック生成回路２６からＣＰＵ９００までの長さが同一となるように構成される。
【０１２３】
以下、説明の明確化のため、ＣＰＵ１１は「ＣＰＵ−Ａ」とも呼び、ＣＰＵ１２は「ＣＰＵ−Ｂ」とも呼び、ＣＰＵ９０は「ＣＰＵ−Ｃ」とも呼び、クロック生成回路２５は「ＣＬＫ１」とも呼び、クロック生成回路９１は「ＣＬＫ２」とも呼び、クロック生成回路２６は「ＣＬＫ（代替用）」とも呼ぶ。
【０１２４】
続いて、図１３を参照して、他の実施の形態にかかる制御装置１０の第１の故障診断処理について説明する。図１３は、他の実施の形態にかかる制御装置１０の第１の故障診断処理を示すフローチャートである。
【０１２５】
ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、所定の一定時間間隔毎にＣＬＫ（代替用）を利用して故障診断をしつつ、倒立二輪車１の制御に関する処理を同期して実行する（Ｓ４１）。具体的には、故障診断として、ＣＰＵ−Ａは、タイマ１１１のカウンタ値とタイマ１１２のカウンタ値を比較し、ＣＰＵ−Ｂは、タイマ１２１のカウンタ値とタイマ１２２のカウンタ値を比較し、ＣＰＵ−Ｃは、タイマ９０１のカウンタ値とタイマ９０２のカウンタ値を比較する。
【０１２６】
ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、ＣＬＫ１とＣＬＫ（代替用）との間の故障診断結果が正常であり、ＣＬＫ２とＣＬＫ（代替用）との間の故障診断結果が異常であると判定した場合、ＣＬＫ２が故障したと判断する（Ｓ４２）。具体的には、ＣＰＵ−Ａが、タイマ１１１のカウンタ値とタイマ１１２のカウンタ値が一致していると判定し（又は、ＣＰＵ−Ｂが、タイマ１２１のカウンタ値とタイマ１２２のカウンタ値が一致していると判定し）、かつ、ＣＰＵ−Ｃが、タイマ９０１のカウンタ値とタイマ９０２のカウンタ値が一致していないと判定した場合がこれに該当する。この場合、ＣＬＫ２によって更新されるタイマ９０１のカウンタ値のみが他のカウンタ値と一致していないことになるからである。なお、この判定は、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれが、それぞれのカウンタ値の比較結果をＣＰＵ間通信路２００、２０１を介して相互に送受信して、それぞれのＣＰＵで行うようにしてもよく、いずれか１つのＣＰＵが、他のＣＰＵからカウンタ値の比較結果をＣＰＵ間通信路２００、２０１を介して受信して、そのＣＰＵのみで判定するようにしてもよい。
【０１２７】
このように判定した場合、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、その動作に用いるクロック生成回路を、ＣＬＫ１又はＣＬＫ２からＣＬＫ（代替用）に切り替えて、倒立二輪車１の制御に関する処理の同期実行を継続する（Ｓ４３）。これは、例えば、上記の判定したＣＰＵ−Ａ、ＣＰＵ−Ｂ、又はＣＰＵ−Ｃが、その動作に用いるクロック信号を、ＣＬＫ１又はＣＬＫ２からのクロック信号から、ＣＬＫ（代替用）からのクロック信号に切り替えるとともに、クロック信号の切り替えを指示する切替指示信号をＣＰＵ間通信路２００、２０１を介して他の２つのＣＰＵに出力するようにする。そして、他のＣＰＵのそれぞれは、切替指示信号の出力に応じて、その動作に用いるクロック信号を、ＣＬＫ１又はＣＬＫ２からのクロック信号から、ＣＬＫ（代替用）からのクロック信号に切り替えるようにすればよい。これにより、ＣＰＵ１１０、９００のそれぞれで利用するクロック生成回路を同時に切り替える。また、このときに、ＣＰＵ１１０、１２０、９００のそれぞれで、処理のタイミングの計測（割り込み回数のカウント）をリセットすることで、処理の同期タイミングのズレも防止するようにしてもよい。
【０１２８】
また、この場合、ＣＬＫ２の故障が発生していることになるため、ＣＰＵ１１０、１２０、９００のそれぞれは、ＣＬＫ（代替用）から供給されるクロック信号に基づいて、倒立二輪車１の安全制御を行うようにしてもよい（Ｓ４４）。
【０１２９】
なお、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、ＣＬＫ１とＣＬＫ（代替用）との間の故障診断結果が異常であり、ＣＬＫ２とＣＬＫ（代替用）との間の故障診断結果が正常であると判定した場合、ＣＬＫ１が故障したと判断することになる。具体的には、ＣＰＵ−Ａが、タイマ１１１のカウンタ値とタイマ１１２のカウンタ値が一致していないと判定し（又は、ＣＰＵ−Ｂが、タイマ１２１のカウンタ値とタイマ１２２のカウンタ値が一致していないと判定し）、かつ、ＣＰＵ−Ｃが、タイマ９０１のカウンタ値とタイマ９０２のカウンタ値が一致していると判定した場合がこれに該当する。
【０１３０】
このように判定した場合も、上述と同様の処理（代替用のクロック生成回路２６に切り替え）を行うため、詳細な説明は省略する。
【０１３１】
続いて、図１４を参照して、他の実施の形態にかかる制御装置１０の第２の故障診断処理について説明する。図１４は、他の実施の形態にかかる制御装置１０の第２の故障診断処理を示すフローチャートである。
【０１３２】
ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、所定の一定時間間隔毎にＣＬＫ（代替用）を利用して故障診断をしつつ、倒立二輪車１の制御に関する処理を同期して実行する（Ｓ５１）。具体的な故障診断方法については、図１３のステップＳ４１と同様であるため、説明を省略する。
【０１３３】
ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、ＣＬＫ１とＣＬＫ（代替用）との間の故障診断結果が異常であり、ＣＬＫ２とＣＬＫ（代替用）との間の故障診断結果が異常であると判定した場合、ＣＬＫ（代替用）が故障したと判断する（Ｓ５２）。具体的には、ＣＰＵ−Ａが、タイマ１１１のカウンタ値とタイマ１１２のカウンタ値が一致していないと判定し（又は、ＣＰＵ−Ｂが、タイマ１２１のカウンタ値とタイマ１２２のカウンタ値が一致していないと判定し）、かつ、ＣＰＵ−Ｃが、タイマ９０１のカウンタ値とタイマ９０２のカウンタ値が一致していないと判定した場合がこれに該当する。この場合、ＣＬＫ（代替用）によって更新される全てのカウンタ値（タイマ１１２のカウンタ値、タイマ１２２のカウンタ値、及びタイマ９０２のカウンタ値）が他のカウンタ値と一致していないことになるからである。具体的な判定方法については、図１３のステップＳ４２と同様であるため、説明を省略する。
【０１３４】
このように判定した場合、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、ＣＬＫ（代替用）を利用した故障診断を中断して、倒立二輪車１の制御に関する処理の同期実行を継続する（Ｓ５３）。また、この場合、ＣＬＫ（代替用）の故障が発生していることになるため、ＣＰＵ１１０、１２０、９００のそれぞれは、上述と同様に、ＣＬＫ１、ＣＬＫ２のそれぞれから供給されるクロック信号に基づいて、倒立二輪車１の安全制御を行うようにしてもよい（Ｓ４４）。
【０１３５】
なお、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、及びＣＰＵ−Ｃのそれぞれは、上述した各カウンタ値の比較において、比較したカウンタ値の差が所定の閾値未満である場合、カウンタ値が一致すると判定し、比較したカウンタ値の差が所定の閾値以上である場合、カウンタ値が一致しないと判定する。例えば、カウンタ値の差を絶対値で扱う場合、閾値は０以上の任意の整数である。
【０１３６】
以上に説明したように、他の実施の形態では、ＣＬＫ１、ＣＬＫ２、及びＣＬＫ（代替用）によって更新されるタイマのカウンタ値のそれぞれを相互に比較するようにしているため、故障しているクロック生成回路を正確に特定することが可能である。
【０１３７】
例えば、上記処理では、クロック生成回路２５に関する異常として、クロック生成回路９１に対応するタイマ９０１が計測する時間（カウンタ値）と、クロック生成回路２６に対応するタイマ９０１が計測する時間（カウンタ値）との差が所定の閾値未満である場合に、クロック生成回路２５に対応するタイマ１１１又は１２１が計測する時間（カウンタ値）と、クロック生成回路２６に対応するタイマ１１２又は１２２が計測する時間（カウンタ値）との差が所定の閾値以上となったことを検出するようにしている。これによれば、クロック生成回路２５に対応するタイマ１１１又は１２１が計測する時間（カウンタ値）のみが不一致となっていることもって判定をしているため、クロック生成回路２５に関する異常が発生しているとの判定結果の正確性が保障される。
【０１３８】
また、他の実施の形態に係る構成によれば、共通原因故障を回避することができる。例えば、実施の形態１では、クロック生成回路２５が故障し、突然、全くクロック信号が出力されなくなってしまった場合には、ＣＰＵ１１０、１２０の両方が動作することができず、クロック生成回路の切り替えも行うことができなくなってしまう。それに対して、他の実施の形態によれば、ＣＰＵ９００によってＣＰＵ１１０、１２０の両方の停止（クロック生成回路２５からクロック信号が全く供給されなくなってしまう故障）を検出して、クロック生成回路の切り替えを実施することが可能となる。
【０１３９】
これは、例えば、ＣＰＵ１１０、１２０のそれぞれが、ＣＰＵ間通信路２００、２０１を介してＣＰＵ９００にハートビート信号を送信するようにし、ＣＰＵ９００が、ＣＰＵ１１０、１２０の両方から、所定の規定時間（ハートビートインターバル時間よりも長い時間）の間、ハートビート信号が送信されなかった場合に、ＣＰＵ１１０、１２０の両方が停止していると判定するようにする。そして、ＣＰＵ９００は、ＣＰＵ１１０、１２０の両方の停止を検出した場合に、上述の処理と同様に、ＣＰＵ１１０、１２０、及び９００のそれぞれで動作するクロック生成回路をクロック生成回路２６に切り替えるようにすればよい。なお、異常に説明した処理では、ＣＰＵ１１０とＣＰＵ９００の間で信号又は情報を送受信する場合には、ＣＰＵ１２０が転送を行うことで、ＣＰＵ１１０とＣＰＵ９００が相互に信号又は情報をＣＰＵ間通信路２００、２０１を介して送受信することができるようにすればよい。
【０１４０】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【０１４１】
上記実施の形態では、本発明の適用対象とする同軸二輪移動体が、２つの車輪を有する倒立二輪車１である場合について例示したが、車輪の数は、これに限られない。本発明の適用対象とする同軸二輪移動体は、例えば、車輪の数が１つ又は３つ以上の同軸二輪移動体であってもよい。
【０１４２】
上記実施の形態では、ＣＰＵ１１０及びＣＰＵ１２０の両方が故障診断処理を実施するようにしているが、いずれか一方のみが実施するようにしてもよい。しかしながら、好ましくは、本実施の形態で説明したようにＣＰＵ１１０及びＣＰＵ１２０の両方で故障診断処理を実施するようにすることで、故障の検出精度を向上することができる。
【０１４３】
上記実施の形態２、３では、先にＣＰＵ間通信路２００の通信断が発生しているか否かを判定する場合について例示しているが、先に外部通信路２１０又は信号通信路２２０、
２２１の通信断が発生しているか否かを判定するようにしてもよい。すなわち、ＣＰＵ間通信路２００と外部通信路２１０（又は信号通信路２２０、２２１）の両方で通信断が発生している場合には、他方のＣＰＵが故障していると判断し、ＣＰＵ間通信路２００のみで通信断が発生している場合には、ＣＰＵ間通信路２００が故障していると判断し、外部通信路２１０（又は信号通信路２２０、２２１）のみで通信断が発生している場合には、外部通信路２１０（又は信号通信路２２０、２２１）が故障していると判断するようにしていれば、通信路の判定順序は特に制限されるものではない。
【符号の説明】
【０１４４】
１  倒立二輪車
２  車輪
３  ステップカバー
１０  制御装置
１１、１２、９０  マイクロコントローラ
１３、１４、１５、１６  インバータ
１７、１８  モータ
１９、２０、２１、２２  回転角センサ
２３、２４  ジャイロセンサ
２５、２６、９１  クロック生成回路
２７  外部通信ＣＰＵ
２８  通信モジュール
１１０、１２０、９００  ＣＰＵ
１１１、１１２、１２１、１２２、９０１、９０２  タイマ
２００、２０１  ＣＰＵ間通信路
２１０  外部通信路
２２０、２２１  信号通信路
【図１】
2014106874.tif 000003
【図２】
2014106874.tif 000004
【図３】
2014106874.tif 000005
【図４】
2014106874.tif 000006
【図５Ａ】
2014106874.tif 000007
【図５Ｂ】
2014106874.tif 000008
【図６】
2014106874.tif 000009
【図７】
2014106874.tif 000010
【図８】
2014106874.tif 000011
【図９】
2014106874.tif 000012
【図１０】
2014106874.tif 000013
【図１１】
2014106874.tif 000014
【図１２】
2014106874.tif 000015
【図１３】
2014106874.tif 000016
【図１４】
2014106874.tif 000017