(57)【特許請求の範囲】
【請求項１】
車体を倒立状態に維持しながら走行することが可能な走行体であり、
車体と、
車体に対して回転自在であるとともに、略同軸上に配置されている一対の駆動輪と、
各駆動輪に対して夫々トルクを与える駆動源と、
車体を倒立状態に維持するための第１トルク指令値を前記駆動源へ出力する第１制御部と、
走行体を走行させるための第２トルク指令値を前記駆動源へ出力する第２制御部と、
前記駆動源が駆動輪に与えるトルク状態の異常を検出する異常検出部と、
異常検出部によって、前記異常が検出された場合に、第１制御部による第１トルク指令値の出力を維持したまま第２制御部による第２トルク指令値の出力を停止させる異常時処理部と、
を備えていることを特徴とする走行体。
【請求項２】
異常検出部は、駆動輪の回転数に基づく信号、車体の傾斜角に基づく信号、トルク指令値の大きさに基づく信号のうち、少なくとも一つの信号の値が予め定められた許容範囲外である場合に、「駆動源が駆動輪に与えるトルク状態の異常」と判断することを特徴とする請求項１に記載の走行体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車体を倒立状態に維持しながら走行することが可能な走行体に関する。
【背景技術】
【０００２】
車体を倒立状態に維持しながら走行することが可能な走行体が開発されている。この走行体は、車体と、車体に対して回転自在であるとともに略同軸上に配置されている一対の駆動輪と、駆動源を備えており、駆動源が夫々の駆動輪にトルクを与えることによって走行する。
ここで「車体が倒立状態にある」とは、駆動輪にトルクを適切に付与し、車体が鉛直方向に対してなす傾斜角の絶対値がある一定の値を超えて増加しないように保たれている状態にある、ことをいう。
倒立型走行体は、車体をコンパクトに構成することができ、小回りがきくという利点を有する。倒立型走行体は、荷物や人を狭い場所で移動させるのに便利である。
しかしそのような倒立型走行体は、一対の駆動輪で接地している状態が不安定であり、走行体の駆動系に関するなんらかの異常が発生した場合に、車体を倒立状態に維持しておくことが困難になるという不安定要素を持っている。そこで、走行体の駆動系に関するなんらかの異常が発生した場合に対応する技術が望まれている。
特許文献１には、倒立型走行体に故障（異常）が検出された場合に、車体が転倒する前に車体の速度を減速させる技術が開示されている。
【０００３】
特許文献１の技術では、故障が検出されると、輸送車（倒立型走行体）の目標速度を徐々に減少して最終的にはゼロに設定する。特許文献１の技術では、特許文献１の図２に示されているように、２系統の制御系を並列に用意しておく。いずれか一方の制御系が故障した場合には（異常が発生した場合には）、正常に作動している他方の制御系によって輸送車を徐々に減速させて停止させる。特許文献１の技術では、一方の制御系の故障に備えて、それと同等の制御系を用意しておく。いわゆる冗長制御系が構築されている。これによりどちらか一方の制御系に異常が発生した場合には、他方の正常な制御系を利用して輸送車（倒立型走行体）を徐々に減速して停止させることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００４−５１０６３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の従来の技術では、一方の制御系に異常が発生した場合には、他方の制御系を利用して倒立型走行体を徐々に減速して停止させることができる。
しかしながら、例えば駆動源（具体的にはモータ）や、モータに駆動電流を供給するアンプに異常が発生した場合には、意図した異常処理を実施することができない。異常となったモータやアンプで、倒立型走行体を走行させ続ける制御を続行する（減速するとはいえ、減速中も倒立型走行体を走行させ続ける制御を続行する）ために、意図したように走行させ続けられないことが起こる。
例えば駆動源（具体的にはモータ）やモータに駆動電流を供給するアンプ等のように、２系統が用意されている制御系とは別の部分で異常が発生しても、走行速度を徐々に減速する制御を行わずとも転倒を回避することができる倒立型走行体を実現する技術が必要とされている。
【課題を解決するための手段】
【０００６】
倒立型走行体では、走行体の制御部が、車体を倒立状態に維持するためのトルク指令値（第１トルク指令値）と走行体を走行させるためのトルク指令値（第２トルク指令値）の両トルク指令値をモータなどの駆動源に対して出力しなければならない。
ここで例えば駆動源に異常が発生し、駆動源が出力できる駆動力が半減したとする。この状態で走行体の制御部が駆動源に対して第１トルク指令値と第２トルク指令値の両者を出力しても、駆動源では第１トルク指令値と第２トルク指令値が加算されたトルク指令値に相当するトルクを発生できなくなる可能性がある。駆動源に与えられるトルク指令値は、第１トルク指令値と第２トルク指令値の加算値であるため、駆動源が出力するトルクの一部は車体を倒立状態に維持するためでなく、走行体を走行させ続けるために利用される。車体を倒立状態に維持するためのトルク（第１トルク指令値に基づくトルク）だけなら駆動源で発生することができても、さらにその上に走行体を走行させ続けるために必要なトルク（第２トルク指令値に基づくトルク）までは発生できない事態が生じる。あるいは、倒立状態を維持するだけのトルクを発生することが困難であっても、車体の転倒を遅らせるのに有用なトルクを駆動源が発生できる可能性がある。車体が転倒するまでの時間を引き延ばすことができれば、その間に補助輪を出す等の措置を講じて転倒を防止することができる。
【０００７】
そこで本発明では、倒立型走行体の駆動源が駆動輪に与えるトルク状態の異常を検出が検出された場合に、第２トルク指令値の出力を停止する。車体を倒立状態に維持するのに必要な第１トルク指令値で駆動源を制御する。こうすることによって、駆動源が出力可能なトルクの全てを、車体を倒立状態に維持するためのトルクに利用できる。よって転倒を回避する、若しくは転倒までの時間を引き延ばすことができる。車体が転倒するまでの時間を引き延ばすことができれば、その間に補助輪を出す等の措置を講じて転倒を防止することができる。
第２トルク指令値の出力を停止しても、走行体には慣性が作用するために、急停止することはない。第１制御器は、慣性によって進み続ける車体を倒立状態に維持するための第１トルク指令値を計算する。第２トルク指令値の出力を停止することは、走行体を積極的に進めるためのトルクまでは加えないという意味であり、走行体を急停止させる結果を作り出すものでない。走行体は、慣性によって進み続ける間は、駆動源が出力可能なトルクを車体を倒立状態に維持するために利用する。
なお、車体を倒立状態に維持するための制御を行っている最中には、車体を倒立状態に維持するように駆動輪が回転する。その結果として、このとき、駆動輪の回転角度の制御は特に行う必要はない。従って走行体の位置は許容できる範囲で変化することもある。
【０００８】
本発明は、車体を倒立状態に維持しながら走行することが可能な走行体に具現化できる。この走行体は、車体と、一対の駆動輪と、駆動源と、第１制御部と、第２制御部と、異常検出部と、異常時処理部を備える。
一対の駆動輪は、車体に対して回転自在であるとともに、略同一軸上に配置されている。
駆動源は、具体的には各駆動輪に対して夫々トルクを与える機能を備えている。
第１制御部は、具体的には車体を倒立状態に維持するための第１トルク指令値を駆動源へ出力する機能を備えている。
第２制御部は、具体的には走行体を走行させるための第２トルク指令値を駆動源へ出力する機能を備えている。
異常検出部は、具体的には駆動源が駆動輪に与えるトルク状態の異常を検出する機能を備えている。
異常時処理部は、異常検出部によって、前記異常が検出された場合に第２制御部による第２トルク指令値の出力を停止させる機能を備えている。
【０００９】
第１制御部と第２制御部は別個の装置として独立して設けられてもよいし、一つの制御装置内で第１制御部が実行すべき制御系と第２制御部が実行すべき制御系が独立している構成であってもよい。また、１つの制御用コンピュータが、第１制御部が実行すべき処理のプログラムと第２制御部が実行すべき処理のプログラムを独立して、あるいは経時的に切り替えて実行するものであってもよい。
異常検出部は、例えば車体を倒立状態に維持する制御を実行中であるにも関わらず、あるセンサが一定時間、一定の値を出力し続けている状態を検出し、異常と判断する機能を備えていてもよい。
また、異常検出部が検出する駆動源が駆動輪に与えるトルク状態の異常とは、例えば車輪の回転角を検出するエンコーダの異常を検出するものや駆動源の異常や駆動に関係するギヤの異常を検出するものであってよい。または車体の鉛直上方に対する傾斜角が許容された範囲を超えたことを検出するものであってもよい。さらに車体に鉛直方向の加速度を検出する加速度センサが設けられており、その加速度センサの出力値が所定範囲を超えたことを異常として検出するものであってもよい。上記例のように「駆動源が駆動輪に与えるトルク状態の異常を検出する異常検出部」とは、別言すれば、走行体に設けられおり、車体を倒立状態に維持しながら走行体を走行させる制御を実行するのに必要なセンサの出力値および／または制御部内で計算されるトルク指令値の少なくともひとつが予め設定された許容範囲を超えたことを検出する装置のことである。
【００１０】
上記構成の走行体は、車体を倒立状態に維持するための第１トルク指令値を駆動源へ出力する第１制御部と、走行体を走行させるための第２トルク指令値を駆動源へ出力する第２制御部を独立して備えている。そして異常検出部によって異常が検出された場合には、異常時処理部が第２制御部による第２トルク指令値の出力を停止させる。これによって駆動源は出力可能なトルクの全てを車体を倒立状態に維持するためのトルクとして駆動輪に与えることができる。
【００１１】
上記構成によって、駆動源が駆動輪に与えるトルク状態の異常の内容が何であれ、異常が検出された場合には駆動源は車体を倒立状態に維持するためのトルクだけを駆動輪に与えるように走行体を制御することができる。換言すれば、異常が検出された場合には、走行体の駆動源を、車体を倒立状態に維持することを唯一の目的にして動作させる。駆動源が出力可能なトルクを車体を倒立状態に維持するためだけに使うことができる。これにより車体を倒立状態に維持できる可能性が生じる。倒立状態を維持できなくとも転倒するまでの時間を引き延ばすことができる可能性が生じる。転倒するまでの時間を引き延ばすことができればその間に補助輪を出すなどの転倒防止策を講じることができる。その結果車体の転倒を防止することができる。
【００１２】
本発明の走行体はさらに、車体に対して上下に移動可能であり、前記駆動輪が接地する接地面に当接することによって停止した車体を支持する支持部材と、支持部材を、速度を調整可能に上下に移動させる支持部材移動部を備えることが好ましい。
ここで支持部材とは補助輪でもよいし、単なる棒状の部材でもよい。
支持部材移動部が支持部材を速度を調整可能に上下に移動させる機能を備えることによって、場合に応じて支持部材を下方に移動させるまでの時間を変化させる作用を生じさせる。
【００１３】
また、異常検出部によって前記異常が検出された場合に、前記支持部材移動部が、車体を支持するために前記支持部材を下方に移動させる速度を、停止した車体を支持するために支持部材を下方に移動させる速度よりも速くすることが好ましい。
ここで通常の走行時には、支持部材移動部は、支持部材が接地面と接触しないように支持部材を接地面から所定距離だけ上方に移動させている。異常が検出されていない場合における走行停止動作時には、支持部材移動部によって支持部材はゆっくりと下方へ移動させられる。支持部材をゆっくり下方へ移動させることによって車体が揺れることを低減させる作用を生じさせる。しかし異常が検出された場合は車体が転倒する可能性がある。そこで支持部材移動部は、支持部材を通常の走行停止動作時よりも高速に下方に移動させるように指示を出力する。車体の転倒前に支持部材を接地面に対して車体を支持可能な位置に移動させる作用を生じさせることができる。よって車体の転倒を防止することができる。
【００１４】
第１制御部は、支持部材が下方に移動した後に、駆動源へ出力する第１トルク指令値を支持部材が前記接地面に当接する方向に車体を傾斜させるための第３トルク指令値に変更することが好ましい。
その際の第３トルク指令値は予め設定された値であってよい。
【００１５】
車体を倒立状態に維持する制御では、車体の傾斜角などを検出してフィードバック制御が行われている。全ての駆動輪が正常にフィードバック制御できなくなった場合でも、駆動源に予め設定されたトルクを出力させることができる可能性はある。駆動源が予め設定されたトルク指令値通りに動作するならば、異常が検出された場合に、第１制御部が駆動源に出力する車体を倒立状態に維持するための第１トルク指令値を支持部材が接地面に当接する方向に車体を傾斜させる第３トルク指令値に変更することによって、車体を支持部材側へ傾斜させることができる。その結果、駆動輪と支持部材が接地面に当接して車体が接地面に対して支持される。車体が転倒することを防止することができる。
【００１６】
異常検出部は、駆動輪の回転数に基づく信号、車体の傾斜角に基づく信号、トルク指令値の大きさに基づく信号のうち、少なくとも一つの信号の値が予め定められた許容範囲外である場合に、「駆動源が駆動輪に与えるトルク状態の異常」と判断するものであってよい。
【発明の効果】
【００１７】
本願発明によれば、車体と、夫々の車軸が略同一の直線上に配置された少なくとも２つの駆動輪を有しており、車体を倒立状態に維持しながら走行可能な走行体に対して、異常が発生した場合に走行速度を徐々に減速する制御を行わなくとも車体の転倒を防止することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】実施例の走行体の構成を示す模式図である。
【図２】走行体が駆動輪で接地した状態を示す模式図である。
【図３】走行体が駆動輪と補助輪で接地した状態を示す模式図である。
【図４】走行体の制御構成を示すブロック図である。
【図５】走行体の制御の処理を示すフローチャート図である。
【図６】退避モードの制御の処理を示すフローチャート図である。
【発明を実施するための形態】
【００１９】
実施例の主要な特徴を列記する。
（第１形態）  夫々の駆動輪にトルクを与える駆動源は、夫々の駆動輪に対して夫々独立にトルクを与える一対の駆動源で構成されていることが好ましい。一対の駆動源で構成されていれば、いずれかの駆動源に異常が発生した場合、正常に動作する駆動源だけで車体が倒立するまでの時間を引き延ばすことができるからである。
【実施例】
【００２０】
図面を参照して実施例を詳細に説明する。図１は、本実施例の走行体１０の全体構成を模式的に示している。走行体１０は、車体１２と、車体１２に設けられている第１駆動輪３４と第２駆動輪４４と補助輪２６を備えている。第１駆動輪３４と第２駆動輪４４は、同一の第１車軸Ｃ１の回りに回転可能となっている。
補助輪２６は、補助輪支持部材３０の一方の端部で第２車軸Ｃ２の回りに回転可能に支持されている。補助輪支持部材３０の他方の端部は、補助輪移動部２８を介して車体１２に連結されている。補助輪移動部２８は、走行体１０を第１駆動輪３４と第２駆動輪４４で接地する倒立状態に制御する場合には補助輪２６を図１に２点鎖線で示す位置に移動させる。走行体を駆動輪３４と４４で接地させた状態を「車体１２が倒立状態である」という表現を用いる。また、補助輪２６を図１に２点鎖線で示す位置に移動させた状態を「補助輪２６が倒立姿勢位置にある」と称することにする。
一方、走行体１０を駆動輪３４と４４と補助輪２６で接地させる場合には補助輪２６を図１に実線で示す位置に移動させる。補助輪２６を図１に実線で示した位置に移動させて、走行体１０を第１駆動輪３４と第２駆動輪４４と補助輪２６で接地可能な状態にあるときを「補助輪２６が三輪姿勢位置にある」と称することにする。
走行体１０には、人が着席可能な搭乗シート２２が設けられている。走行体１０は、人を乗せて走行することができる。
走行体１０は、第１駆動輪３４を駆動する第１モータ３２と、第２駆動輪４４を駆動する第２モータ４２と、両モータ３２、４２に電力を供給するバッテリモジュール４０を備えている。走行体１０では、各駆動輪３４、４４のそれぞれに駆動源であるモータ３２、４２が用意されており、各駆動輪３４、４４のそれぞれが独立して駆動する構成となっている。また、第１モータ３２には第１モータ３２が過熱状態となって仕様上の最大トルクが出力できなくなることを検出するための第１温度センサ３５が備えられている。同様に第２モータ４２にも第２温度センサ４５が備えられている。
【００２１】
走行体１０は、第１モータ３２、第２モータ４２および補助輪移動部２８の動作を制御する制御モジュール１４と、走行体１０の搭乗者が操作する操作モジュール２０を備えている。制御モジュール１４は、走行体１０の搭乗者が操作モジュール２０に加えた操作に追従して、第１モータ３２と第２モータ４２と補助輪移動部２８の動作を制御する。制御モジュール１４はまた、車体１２を倒立状態に維持する制御も行う。
【００２２】
走行体１０は、車体１２の傾斜角速度を検出するジャイロ３８と、走行体の上下方向の加速度を検出する加速度センサ３９と、第１駆動輪３４の回転角を検出する第１エンコーダ３６と、第２駆動輪４４の回転角を検出する第２エンコーダ４６を備えている。車体１２の傾斜角速度とは、車体１２の傾斜角の変化速度である。車体１２の傾斜角とは、車体１２の第１車軸Ｃ１回りの回転角を、鉛直方向に対する傾きによって示すものである。本実施例では、駆動輪３４と４４を除いた走行体１０の重心が第１車軸Ｃ１の鉛直上方に位置する状態を傾斜角の基準（傾斜角がゼロ）とし、車体１２が図１に実線で示した補助輪２６の側に傾く方向を傾斜角の正方向とする。なお、車体１２に搭乗者が乗った場合には搭乗者を含み、駆動輪３４と４４を除いた走行体１０の重心の位置を「走行体の重心位置」とする。
また、各駆動輪３４、４４の回転角とは、各駆動輪３４、４４の車体１２に対する相対回転角である。
また加速度センサ３９は車体の上下方向の加速度を検出する。加速度センサの出力の変化が許容範囲を超えた場合に走行体１０が想定外の悪路（凸凹道）を走行していることを検出するためである。
【００２３】
操作モジュール２０には、操作レバー１８が設けられている。操作レバー１８は、搭乗者が走行体１０の走行速度や走行方向を調整するための操作部材である。搭乗者は、操作レバー１８の操作量を調整することによって走行体１０の走行速度を調整することができる。また搭乗者は、操作レバー１８の操作方向を調整することによって走行体１０の走行方向を調整することができる。走行体１０は、操作レバー１８に加えられた操作に応じて、前進、停止、後退、左折、右折、左旋回、右旋回することができる。
【００２４】
図２は、走行体１０が両駆動輪３４、４４で接地した倒立状態を模式的に示している。図２に示すように倒立状態では、補助輪２６は補助輪移動部２８と補助輪支持部材３０によって車体１２の内側上方に移動されている。即ち図２の補助輪２６は倒立姿勢位置にある。
【００２５】
図２中のθ２は第２駆動輪４４の回転角を示している。第２駆動輪４４の回転角θ２は車体１２備えられた第２エンコーダ４６によって検出される。なお、第１駆動輪３４（図２には図示を省略）の回転角をθ１と記すことがある。第１駆動輪３４の回転角θ１は、車体１２備えられた第１エンコーダ３６（図２には図示を省略）によって検出される。
【００２６】
図２において、符号Ｇは駆動輪３４、３４を除いた走行体１０の重心位置を示す。ηは車体１２の傾斜角を表している。車体１２の傾斜角ηは、第１車軸Ｃ１と駆動輪３４、３４を除いた走行体１０の重心位置Ｇを結ぶ直線Ｌと第１車軸Ｃ１を通る鉛直線Ｓとがなす角度である。そして重心位置Ｇが第１車軸Ｃ１を通る鉛直線Ｓ上に位置する状態を傾斜角の基準（傾斜角がゼロ）とし、車体１２が図１に実線で示した補助輪２６の側に傾く方向を傾斜角の正方向とする。傾斜角ηは車体１０に備えられたジャイロ３８（図２では図示を省略）が検出する車体の角速度ｄηを積分して求められる。
ここで、図２に示すように傾斜角ηが正の値であると、重力によって重心位置Ｇ回りに作用するモーメントにより車体１２は何も制御しなければ図２の紙面上で右側へ転倒してしまう。傾斜角ηが負の値の場合でも車体１２は何も制御しなければ図２の紙面上で左側へ転倒してしまう。
走行体１０の制御モジュール１４は、車体１２が転倒しないように駆動輪３４、４４にトルクを与えるモータ３２、４２を制御する。具体的には車体１２が傾斜している方向へ駆動輪３４、４４を進めるように制御する。そうすると走行体１０の運動によって重心位置Ｇを第１車軸Ｃ１の鉛直上方に戻すようにモーメントが作用する。制御モジュール１４は、車体１２の傾斜角ηがゼロとなるように上記制御を常に行うことによって車体１２を倒立状態に維持することができる。
即ち、「車体が倒立状態にある」とは、接地面に対して車体を支持する部材が主として略同軸上に配置されている一対の駆動輪であり、その駆動輪にトルクを適切に付与し、車体が鉛直方向に対してなす傾斜角の絶対値がある一定の値を超えて増加しないように保たれている状態にある、ことをいう。
【００２７】
図３は、走行体１０が両駆動輪３４、４４と補助輪２８で接地した状態を模式的に示している。この状態を三輪接地状態と称する。図２に示すように三輪接地状態では、補助輪２６は補助輪移動部２８と補助輪支持部材３０によって倒立状態の補助輪２６の位置よりも車体１２の下方に移動されている。即ち三輪接地状態となる場合には補助輪２６は三輪姿勢位置に移動する。
このときは重心位置Ｇの接地面への投影点が駆動輪３４、４４の接地点と補助輪２６の接地点で構成される領域内にあるので車体１２は転倒することはない。別言すれば、車体は駆動輪３４、４４の接地点と補助輪２６の接地点（これら３つの接地点は一つの直線上には並ばない３点となる）で接地面に対して支持されるので転倒することはない。
【００２８】
走行体１０は、三輪接地状態を維持しながら、走行、旋回、静止することもできる。ここで、図３中のηｚは、走行体１０が水平面上において三輪接地状態をとるときの車体１２の傾斜角を示している。この角度ηｚを、補助輪予定接地傾斜角ということがある。実際に走行体１０が三輪接地状態となる場合の車体１２の傾斜角は、走行面の傾斜や凹凸によって変化することから、常に補助輪予定接地傾斜角ηｚになるとは限られない。
【００２９】
次に走行体１０の制御系について説明する。図４に、図１に示した走行体１０のブロック図を示す。なお、制御モジュール１４は、例えば搭乗シート２２のリクライニング角度など走行体１０について様々な制御を行うが図４の制御モジュール１４内には駆動に関する部分のみを示してある。
制御モジュール１４内には、安定化用制御部５０と走行用制御部５２と異常検出部５８と異常時処理部６０が備えられている。
【００３０】
安定化用制御部５０は、車体１２に備えられたジャイロ３８から車体の角速度ｄηを取得する。また車体に備えられた第１エンコーダ３６から第１駆動輪３４の回転角θ１を取得する。さらに車体に備えられた第２エンコーダ４６から第２駆動輪４４の回転角θ２を取得する。
安定化用制御部５０は、取得した車体の傾斜角速度ｄηを積分して車体の傾斜角ηを計算する。また駆動輪３４、４４の回転角θ１、θ２を微分して駆動輪３４、４４の回転角速度ｄθ１、ｄθ２を計算する。
安定化用制御部５０は、車体１２の傾斜角ηと傾斜角速度ｄηおよび駆動輪３４、４４の回転角θ１、θ２と回転角速度ｄθ１、ｄθ２から、図２で説明したように車体１２を倒立状態に維持するために駆動輪３４、４４が発生すべきトルクを計算してそのトルク指令値（安定化用トルク指令値と称する）を第１モータ３２と第２モータ４２へ出力する。ここで安定化用制御部５０が第１モータ３２へ与える安定化用トルク指令値をτＳ１と称する。同様に安定化用制御部５０が第２モータ４２へ与える安定化用トルク指令値をτＳ２と称する。なお、図４に示した（τＥ１）と（τＥ２）の意味については後述する。
安定化用制御部５０は、車体１２の傾斜角速度ｄηと駆動輪３４、４４の回転角θ１、θ２を取得してモータ３２、４２への安定化用トルク指令値を出力するフィードバック制御系が構成されている。図４に符号５６で示す線がフィードバックループを表す。
【００３１】
一方、制御モジュール１４内の走行用制御部５２は、搭乗者が操作した操作レバー１８からの信号に基づいて、走行体１０を搭乗者の意図する方向へ走行させるためにモータ３２、４２が発生すべきトルク（走行用トルク指令値）を計算する。走行用制御部５２が出力するτＭ１は第１モータ３２への走行用トルク指令値であり、τＭ２は第２モータ４２への走行用トルク指令値である。
【００３２】
安定化用トルク指令値τＳ１と走行用トルク指令値τＭ１は加算器５４ａで加算されて第１モータ３２へ出力される。安定化用トルク指令値τＳ２と走行用トルク指令値τＭ２は加算器５４ｂで加算されて第２モータ４２へ出力される。夫々のモータ３２、４２は、安定化用トルク指令値と走行用トルク指令値の加算値を最終的なトルク指令値として駆動輪３４、４４を駆動する。
【００３３】
走行用制御部５２は、操作レバー１８の操作量に基づいて走行用トルク指令値τＭ１、τＭ２を計算してモータ３２、４２に出力している。
一方安定化用制御部５０は、車体１２の傾斜角速度ｄηと駆動輪３４、４４の回転角θ１、θ２をフィードバックして車体１２の倒立状態を維持するための安定化用トルク指令値τＳ１、τＳ２を計算してモータ３２、４２に出力している。
即ち本実施例の走行体１０の安定化用制御部５０は、走行用制御部５２の出力する走行用トルク指令値τＭ１、τＭ２に関わらず、常に車体１２の倒立状態を維持するようにフィードバック制御が行われている。このことは別言すれば、安定化用制御部５０は、走行用トルク指令値τＭ１、τＭ２による車体１２の傾斜角ηの変化をいわば外乱による変化と捉えて車体１２の倒立状態を維持するように制御を行っている。本実施例では、安定化用制御部５０が走行用トルク指令値によって生じる車体１２の傾斜角ηの変化を一種の外乱として扱うことで、安定化用制御部５０と走行用制御部５２を独立した制御系として構築することを可能にしている。
【００３４】
制御モジュール１４に備えられた異常検出部５８は、安定化用制御部５０および走行用制御部５２内の各信号を監視し、各信号の値に異常がないかをチェックする。即ち、異常検出部５８は、駆動源が駆動輪に与えるトルク状態の異常を検出する。ここで各信号の値とは、例えば、操作レバー１８からの信号の値、ジャイロ３８からの車体傾斜角速度ｄηの値、エンコーダ３６、４６からの駆動輪３４、４４の回転角θ１、θ２の値、又は安定化用制御部５０内で計算される車体傾斜角η、駆動輪３４、４４の回転角速度ｄθ１、ｄθ２、安定化用制御部５０内で計算される安定化用トルク指令値τＳ１、τＳ２、走行用制御部５２内で計算される走行用トルク指令値τＭ１、τＭ２などである。また、安定化用制御部５０で駆動輪３４、４４の回転角速度ｄθ１、ｄθ２を微分して駆動輪３４、４４の回転角加速度ｄｄθ１、ｄｄθ２を計算し、計算された回転角加速度ｄｄθ１、ｄｄθ２の値についても異常がないかチェックすることも好適である。
なお、異常検出部５８が取得する操作レバー１８からの信号の値、走行用制御部５２内で計算される走行用トルク指令値τＭ１、τＭ２は、図４において走行用制御部５２から異常検出部５８へ向って伸びている矢印で示される。また、異常検出部５８が取得する車体傾斜角速度ｄη、車体傾斜角η、駆動輪３４、４４の回転角θ１、θ２、駆動輪３４、４４の回転角速度ｄθ１、ｄθ２および回転角加速度ｄｄθ１、ｄｄθ２、安定化用制御部５０内で計算される安定化用トルク指令値τＳ１、τＳ２は図４において安定化用制御部５０から異常検出部５８へ向って伸びている矢印で示される。
また、その他にも、異常検出部５８は、第１モータ３２の温度を検出する第１温度センサ３５や第２モータ４２の温度を検出する第２温度センサ４５の検出値や車体１２に備えられた加速度センサ３９の出力も取得する。なお、図４において第１温度センサ３５から「丸印内に１」と表現されている記号（以下（１）と記載する）へ伸びている線は、異常検出部５８へ矢印が伸びている（１）に対応する。即ち、第１温度センサ３５から異常検出部５８へ信号線が接続されていることを示している。図４における「丸印内に２」の記号および「丸印内に３」の記号も同様に各信号が異常検出部５８へ接続されていることを示している。
異常検出部５８が取得した夫々の値には許容範囲が設けられており、異常検出部５８は、ある信号の値がその許容範囲を超えた場合に異常であると判断する。また、夫々の値の許容範囲は、他の信号の値に依存して変化するものであってもよい。例えば、加速度センサ３９が検出する車体１２の上下方向の加速度の値が大きくなるにつれて車体傾斜角ηの許容範囲が小さくなるように設定されていてもよい。車体１２の上下方向の加速度が大きくなるにつれて車体１２を倒立状態に維持することが難しくなるからである。
なお、走行体１０の上下方向の加速度の変動幅が許容範囲を超えた場合とは、走行体が予期しない悪路を走行している状態であると推定される。本実施例では、走行体１０の上下方向の加速度の変動幅が許容範囲を超えた場合なども「駆動源が駆動輪に与えるトルク状態の異常」の概念に含まれる。
【００３５】
何らかの異常が検出された場合、異常検出部５８は車体１２の転倒を防止するように安定化用制御部５０、走行用制御部５２および補助輪駆動源２８に対して指示を与える。何らかの異常が検出された場合に異常検出部５８が各機器に指示を与える処理を退避モード処理と称することにする。具体的には走行用制御部５２に対して走行用トルク指令値の出力を停止するように指示を与え、補助輪移動部２８に対して補助輪２６を三輪姿勢位置に移動させるように指示を与える。退避モード処理については次に図５と図６に基づいて詳細に説明する。
【００３６】
図５は通常時（異常が検出されていないとき）のサンプリング毎の制御モジュール１４内での処理の流れを説明するフローチャート図である。
通常時には制御サンプリング毎にステップＳ１００で走行体１０の駆動に関わる状態量を取得する。ここで状態量とは具体的にはジャイロ３８が検出する車体１２の傾斜角速度ｄηやエンコーダ３６、４６が検出する駆動輪３４、４４の回転角θ１、θ２である。またステップＳ１００では、取得した車体傾斜角速度ｄηから車体傾斜角ηを求める計算および取得した回転角θ１、θ２から回転角速度ｄθ１、ｄθ２や回転角加速度ｄｄθ１、ｄｄθ２を計算する処理も含まれる。計算によって求められた車体傾斜角η、回転角速度ｄθ１、ｄθ２も「状態量」に含まれる。また、異常検出部５８が取得する温度センサ３５、４５の検出値や車体１２に備えられた加速度センサ３９の出力も「状態量」として取得する。ステップＳ１００の処理はジャイロ３８、エンコーダ３６、４６、温度センサ３５、４５、加速度センサ３９および安定化用制御部５０によって実行される。
次にステップＳ１０２で操作レバー１８から出力される操作量を取得する。次にステップＳ１０４では、ステップＳ１０２で取得した操作量に基づいて走行体１０を走行（旋回を含む）させるための走行用トルク指令値τＭ１、τＭ２を計算する。ステップＳ１０２とステップＳ１０４の処理は図４に示す走行用制御部５２によって実行される。
次にステップＳ１０６ではステップＳ１００で取得した状態量に基づいて車体１２を倒立状態に維持するための安定化用トルク指令値τＳ１、τＳ２を計算する。ステップＳ１０６の処理は図４に示す安定化用制御部５０によって実行される。
次にステップＳ１０８で各信号の値が異常でないかをチェックする。この処理は図４に示す異常検出部５８によって実行される。異常か否か判断する対象となる物理量は、ステップＳ１００で取得した状態量、ステップＳ１０２で取得した操作量の他に、ステップＳ１０４で計算された走行用トルク指令値τＭ１、τＭ２の値およびステップＳ１０６で計算された安定化用トルク指令値τＳ１、τＳ２の値も含まれる。
異常が検出されなかった場合（ステップＳ１０８：ＮＯ）には次にステップＳ１１０で各モータ３２、４２に対してトルク指令値が出力される。第１モータ３２へのトルク指令値は安定化用トルク指令値τＳ１と走行用トルク指令値τＭ１を加算したものであり、第２モータ４２へのトルク指令値は安定化用トルク指令値τＳ２と走行用トルク指令値τＭ２を加算したものである。夫々のモータ３２、４２がトルク指令値に追従して動作することによって、走行体１０は倒立状態を維持しながら操作レバー１８の操作量に応じて走行することができる。以上の処理をサンプリング毎に繰り返す。
一方ステップＳ１０８で何らかの異常が検出された場合にはステップＳ１１２に移り、車体１２の転倒を防止するための退避モード処理が行われる。このとき、図４に示す異常検出部５８から異常時処理部６０へ異常があったことが通知される。
【００３７】
図６に退避モード処理のフローチャート図を示す。
退避モードではまずステップＳ２００で走行用トルク指令値の出力を停止する。この処理は図４の異常時処理部６０から走行用制御部５２に走行用トルク指令値の出力を停止するように指示が出力されることによって実行される。
次にステップＳ２０２では検出された異常が左右の駆動系が共に異常であるか否かを判断する。これは異常検出部５８が検出した異常の種類によって判断される。例えば、第１エンコーダ３２が検出する第１駆動輪３４の回転角速度ｄθ１の値が異常、即ち、ｄθ１の値が予め設定されている許容範囲外であれば、第１駆動輪３４側の駆動系のみが異常であると判断できる。一方、駆動輪３４、４４の回転角速度ｄθ１、ｄθ２の値が共に許容範囲外であれば、左右の駆動系ともに異常であると判断できる。
なお、ステップＳ２０２において左右の駆動系が共に異常であるか、又は片方の駆動系のみが異常であるか判断できない場合には、より安全な対処を行うべく左右輪の駆動系ともに異常であると判断する。例えば操作レバー１８（図４参照）からの出力値が異常であった場合などは左右輪のいずれかが異常であるか判断できないのでその場合にはステップＳ２０２は左右輪の駆動系が共に異常であると判断する。なお、上記判断は図４に示す異常時処理部６０によって実行される。
【００３８】
ステップＳ２０２で左右輪の駆動系が共に異常であると判断された場合（ステップＳ２０２：ＹＥＳ）は次にステップＳ２０４で補助輪２６を最速で三輪姿勢位置まで移動させる。即ち、図１に２点鎖線で示した補助輪２６の位置から車体１２の下方へ補助輪２６を最速で移動させる。この処理は図４のブロック図において、異常時処理部６０から補助輪移動部２８へ指示が出力されることによって行われる。なお「補助輪２６を最速で三輪姿勢位置まで移動させる」とは、正常時の補助輪２６の移動速度よりも速い速度であることを意味する。正常時は、走行体１０が図２に示した倒立状態から図３に示した三輪接地状態へ移行する場合、補助輪２６はゆっくりした速度で移動される。補助輪２６の移動中に倒立状態の車体１２ができるだけ揺れないようにするためである。異常時は車体１２が転倒する前に補助輪２６を下方へ移動させる必要があるため、正常時よりも早い速度で補助輪２６を車体下方へ移動させる。
【００３９】
次にステップＳ２０６では、補助輪２８の移動が完了したか否かを判断する。補助輪２６の移動が完了していない場合（ステップＳ２０６：ＮＯ）には、ステップＳ２０８で安定化制御を行う。ここで安定化制御とは、図５に示したステップＳ１００とステップＳ１０６とステップＳ１１０を行う処理を意味する。即ち、ステップＳ１００で状態量を取得し、ステップＳ１０６で安定化用トルク指令値を計算し、ステップＳ１１０で安定化用トルク指令値をモータへ出力する処理である。ステップＳ２０６で左右の駆動系共に異常が検知された場合でも、補助輪２６が三輪姿勢位置に移動するまでは、車体１２を倒立状態に維持する制御を試みるためである。これは次の理由により効果が期待できる処理である。即ち、前述したようにステップＳ２０２において、左右の駆動系が共に異常であるか、又は片方の駆動系のみが異常であるか判断できない場合には、より安全な対処を行うべく左右輪の駆動系ともに異常であると判断する。このとき、実際には第１モータ３２と第２モータ４２の駆動系の少なくとも一方が正常である可能性もある。少なくとも一方の駆動系が実際には正常であるならば、ステップＳ２０８の安定化制御によって、車体１２を倒立状態に維持できる、あるいは車体１２が転倒するまでの時間を引き延ばすことができるからである。例えば操作レバー１８からの出力値が異常であった場合には、ステップＳ２０８の安定化制御が有効に作用する。
また、ステップＳ２０８の安定化処理では、図２において駆動輪３４、４４を除く走行体１０の重心位置Ｇが第１車軸Ｃ１を通る鉛直線Ｓ上に位置するように安定化用トルク指令値を計算して出力することが好ましい。安定化用制御部５０によって、重心位置Ｇが第１車軸Ｃ１を通る鉛直線Ｓ上に位置するように駆動輪３４、４４が制御されれば、走行体１０の速度もゼロとなり、車体１２を最も転倒の可能性が低い状態にすることができるからである。
【００４０】
ステップＳ２０６で補助輪２６の移動が完了したと判断された場合（ステップＳ２０６：ＹＥＳ）には、次にステップＳ２１０で安定化用制御部５０が出力する安定化用トルク指令値（図４に示すτＳ１、τＳ２に相当する）を、予め設定されているトルク指令値（図４に示すτＥ１、τＥ２に相当する）に変更する。そしてステップＳ２１２で変更されたトルク指令値（図４に示すτＥ１、τＥ２）をモータ３２、４２に対して出力する。
ここで予め設定されているトルク指令値（図４に示すτＥ１、τＥ２）とは、補助輪２６の側へ車体１２を傾斜させるトルク指令値である。例えば図２に示す状態においては、予め設定されているトルク指令値（図４に示すτＥ１、τＥ２）とは駆動輪３４、４４を図２の紙面上で左周りに回転させるトルクである。図２において駆動輪３４、４４を図４の紙面上で左周りに回転させると車体１２はより右側、即ち補助輪２６の側へ傾斜する。これによって、車体１２が補助輪２６とは反対側へ傾斜することを防止することができる。ステップＳ２１０、２１２の処理は、フィードバックなしに行うことができるので例えばエンコーダ３６、４６の出力値が異常であっても可能である。
そしてステップＳ２１４で車体１２が補助輪２６側へ傾斜するまで予め決められたトルク指令値（図４に示すτＥ１、τＥ２）を出力し続ける（ステップＳ２１４：ＮＯ）。そしてステップＳ２１４で車体１２が補助輪２６の側へ傾斜していると判断されれば（ステップＳ２１４：ＹＥＳ）、ステップＳ２１６で制御を停止して終了する。
ステップＳ２１４における「車体１２が補助輪２６側へ傾斜するまで」とはより厳密には車体１２の傾斜角ηが正の値をとるまで、という意味である。図２を参照して説明すると、車体１２の傾斜角ηが正の値をとるとは、重心位置Ｇが第１車軸Ｃ１を通り鉛直上方に伸びる線Ｓよりも補助輪２６側に位置することを意味する。ひとたび重心位置Ｇが第１車軸Ｃ１を通り鉛直上方に伸びる線Ｓよりも補助輪２６側に位置すれば、あとは制御を停止しても重力により車体１２は補助輪２６の側に傾斜し続ける。補助輪２６が三輪姿勢位置に移動完了していれば、車体１２はやがて三輪接地状態となる。車体１２の転倒を防止することができる。
【００４１】
一方、ステップＳ２０２で検出された異常が左右輪の駆動系両方の異常ではない場合（ステップＳ２０２：ＮＯ）、ステップＳ２２０に移り補助輪２６を下方へ移動させる（補助輪２６を三輪姿勢位置に移動させる）。左右輪のいずれか一方が正常に機能する場合（即ちステップＳ２０２：ＮＯ）には、正常に機能する側の駆動系だけで車体１２を倒立状態に維持する安定化制御を続行する。これにより車体１２が転倒するまでの時間を引き延ばすことができる。従ってステップＳ２２０で補助輪２６を移動させる際の速度は正常時の移動速度でよい。その方が補助輪２６の移動が車体１２の傾斜角に与える影響を少なくすることができるからである。
補助輪２６の移動が完了するまでの間（ステップＳ２２２：ＮＯ）は、ステップＳ２２４で安定化制御を続行する。ステップＳ２２４の安定化制御はステップＳ２０８の安定化制御と同じであるので説明を省略する。但しステップＳ２２４では、いずれか一方の駆動系は正常であるため、安定化制御を続行することによって正常な駆動系により車体を倒立状態に維持できる可能性は高い。なお、ステップＳ２２４における安定化処理では、異常が検出された側の駆動輪をロックしておき（車体１２に対する回転角を固定しておき）、正常に動作する側の駆動系だけで安定化制御を行うことも好適である。
補助輪２６の移動が完了した場合（ステップＳ２２２：ＹＥＳ）、ステップＳ２２６で補助輪着地制御を行う。補助輪着地制御とは、車体傾斜角ηを正方向（補助輪２６の側）に徐々に大きくしていき、円滑に補助輪２６を接地させる制御である。この制御により補助輪２６の接地時の衝撃を低減することができる。
ステップＳ２２６の補助輪着地制御が終了したらステップＳ２１６により制御を停止して処理を終了する。
【００４２】
図６のフローチャートに基づいて説明したように、駆動装置に関する異常が検出された場合には退避モード処理を行うことによって車体の転倒を防止することができる。
本実施例では車体の駆動系に冗長制御系を構成することなく、異常検出時に車体の転倒を防止することができる。これは、車体の倒立状態を維持するための安定化用制御部と走行体を走行させるための走行用制御部を独立して構成し、異常検出時には走行用制御部による走行用トルク指令値の出力を停止することによって達成される。
さらに異常検出時には、駆動輪とともに接地面に対して車体を支持する補助輪を通常時よりも早い速度で下方へ移動させることによって、車体が転倒する前に補助輪を三輪姿勢位置に移動させることができる。車体が転倒する前に補助輪を最速で三輪姿勢位置に移動させることによって車体が傾斜しても三輪接地状態とすることができる。
また、異常検出時に補助輪がある側へ車体を傾斜させるように予め設定されたトルク指令値を安定化用制御部が出力することによって、異常発生時に車体を三輪接地状態にすることができる。
【００４３】
なお、本実施例において、補助輪２６と補助輪支持部材３０が請求項の「支持部材」の一態様に相当し、補助輪移動部２８が請求項の「支持部材移動部」の一態様に相当する。
また、第１モータ３２と第２モータ４２が請求項の「駆動源」の一態様に相当する。安定化用制御部５０が請求項の「第１制御部」の一態様に相当し、走行用制御部５２が請求項の「第２制御部」の一態様に相当する。また、安定化用制御部５０が出力する安定化用トルク指令値τＳ１、τＳ２が請求項の「第１トルク指令値」の一態様に相当し、走行用制御部５２が出力する走行用トルク指令値τＭ１、τＭ２が請求項の「第２トルク指令値」の一態様に相当する。
さらに、異常検出時に図６のステップＳ２１０で行われる、安定化用制御部５０が出力する安定化用トルク指令値（図４に示すτＳ１、τＳ２に相当する）を、予め設定されているトルク指令値（図４に示すτＥ１、τＥ２に相当する）に変更する際の予め設定されているトルク指令値（図４に示すτＥ１、τＥ２）が請求項の「第３トルク指令値」の一態様に相当する。
【００４４】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
例えば操作レバー１８の代わりに搭乗者の体重移動を検出するセンサを設け、体重の移動量に基づいて走行用制御部５２が走行用のトルク指令値を計算してもよい。
また、図４に示した安定化用制御部５０と走行用制御部５２は独立した別個の制御器として構成してもよいし、一つの制御装置内で安定化用制御系と走行用制御系が独立している構成であってもよい。また、１つの制御用コンピュータが、安定化用制御用プログラムと走行用制御用プログラムを独立して、あるいは経時的に切り替えて実行するものであってもよい。同様に制御モジュール１４内の異常検出部５８や異常時処理部６０も夫々独立した回路として構成してもよいし、安定化用制御用プログラムと走行用制御用プログラムを実行する同じ制御用コンピュータ内のサブルーチンとして構成されてもよい。
【００４５】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００４６】
１０：走行体
１２：車体
１４：制御モジュール
１８：操作レバー
２０：操作モジュール
２２：搭乗シート
２６：補助輪
２８：補助輪移動部
３２、４２：モータ
３４、４４：駆動輪
３５、４５：温度センサ
３６、４６：エンコーダ
３８：ジャイロ
３９：加速度センサ
４０：バッテリモジュール
５０：安定化用制御部（第１制御部）
５２：走行用制御部（第２制御部）
５４ａ、５４ｂ：加算器
５８：異常検出部
６０：異常時処理部
【図１】
0005360178.tif 000002
【図２】
0005360178.tif 000003
【図３】
0005360178.tif 000004
【図４】
0005360178.tif 000005
【図５】
0005360178.tif 000006
【図６】
0005360178.tif 000007