本発明の一実施形態を図1〜図17を参照して説明する。図1及び図2に示すように本実施形態の倒立振子型車両(以降、単に車両1という)は、基体2(車体又は機体ともいう)と、それぞれ基体2に取り付けられ、床面上を移動可能な第1の移動動作部3及び第2の移動動作部4と、基体2の上部に設けられた乗員搭乗部5とを備える。
第1の移動動作部3は、図2に示す円環状の芯体(以下、環状芯体6という)と、この環状芯体6の円周方向(軸心回り方向)に等角度間隔で並ぶようにして環状芯体6に装着された複数の円環状のローラ7とを備えている。各ローラ7は、その回転軸心を環状芯体6の円周方向に向けて環状芯体6に外挿されている。そして、各ローラ7は、環状芯体6の軸心回りに環状芯体6と一体に回転可能とされていると共に、環状芯体6の横断面の中心軸(環状芯体6の軸心を中心とする円周軸)回りに回転可能とされている。
これらの環状芯体6及び複数のローラ7を有する第1の移動動作部3は、環状芯体6の軸心を床面と平行に向けた状態で、ローラ7(環状芯体6の下部に位置するローラ7)を床面に接地させる。この接地状態で、環状芯体6がその軸心回りに回転駆動されることで、環状芯体6及び各ローラ7の全体が輪転し、それにより第1の移動動作部3が環状芯体6の軸心と直交する方向に床面上を移動する。また、上記接地状態で、各ローラ7がその回転軸心回りに回転駆動されることで、第1の移動動作部3が環状芯体6の軸心方向に移動する。更に、環状芯体6の回転駆動と各ローラ7の回転駆動とが同時に行なわれることで、環状芯体6の軸心方向及びこれに直交する方向に対して傾斜する方向に第1の移動動作部3が移動する。
これにより、第1の移動動作部3は、床面上を全方向に移動することが可能となっている。以降の説明では、図1及び図2に示すように、第1の移動動作部3の移動方向のうち、環状芯体6の軸心と直交する方向をX軸方向、環状芯体6の軸心方向をY軸方向とし、鉛直方向をZ軸方向とする。なお、前方向をX軸の正方向、左方向をY軸の正方向、上方向をZ軸の正方向とする。
第1の移動動作部3は基体2に組み付けられている。より詳しくは、基体2は、床面に接地させた第1の移動動作部3の下部を除く部分の周囲を覆うように設けられている。そして、第1の移動動作部3の環状芯体6が、その軸心回りに回転自在に基体2に取り付けられている。基体2は、第1の移動動作部3の環状芯体6の軸心を支点として、その軸心回り(Y軸回り)に傾動自在とされていると共に、第1の移動動作部3と共に床面に対して傾くことで、第1の移動動作部3の接地部を支点として、環状芯体6の軸心と直交するX軸回りに傾動自在とされている。従って、基体2は、鉛直方向に対して2軸回りに傾動自在とされている。
基体2の内部には、図2に示すように、第1の移動動作部3を移動させる駆動力を発生する第1の駆動装置8が搭載されている。この第1の駆動装置8は、環状芯体6を回転駆動する駆動源としての電動モータ8aと、各ローラ7を回転駆動する駆動源としての電動モータ8bとから構成される。そして、電動モータ8a、8bは、それぞれ図示を省略する動力伝達機構を介して環状芯体6、各ローラ7に回転駆動力を付与するようにしている。なお、この動力伝達機構は公知の構造のものでよい。
なお、第1の移動動作部3は、上記の構造と異なる構造のものであってもよい。例えば、第1の移動動作部3及びその駆動系の構造として、国際公開公報WO/2008/132778や国際公開公報WO/2008/132779にて本出願人が提案した構造のものを採用してもよい。
基体2には、乗員搭乗部5が組み付けられている。乗員搭乗部5は、乗員が着座するシートとして構成されており、基体2の上端部に固定されている。乗員搭乗部5は、乗員がその前後方向をX軸方向、左右方向をY軸方向に向けて着座することを可能にしている。また、乗員搭乗部5は、基体2に固定されているので、鉛直方向に対して基体2と一体に傾動自在とされている。
基体2には、更に乗員搭乗部5に着座した乗員がその足を載せる一対の足載せ部9、9と、乗員が把持する一対の把持部10、10とが組み付けられている。足載せ部9、9は、基体2の両側部の下部に突設されている。なお、図1及び図2では、一方側(右側)の足載せ部9の図示は省略されている。把持部10、10は、乗員搭乗部5の両側にX軸方向(前後方向)に延在して配置されたバー状のものであり、それぞれ、基体2から延設されたロッド11を介して基体2に固定されている。
第2の移動動作部4は、本実施形態では、所謂、オムニホイールとして構成されている。第2の移動動作部4は、同軸心の一対の環状芯体(図示省略)と、各環状芯体に、回転軸心を環状芯体の円周方向に向けて回転自在に外挿された複数の樽状のローラ13とを備える公知の構造のものである。
第2の移動動作部4は、その一対の環状芯体の軸心をX軸方向(前後方向)に向けて第1の移動動作部3の後方に配置され、ローラ13を床面に接地させている。
なお、上記一対の環状芯体の一方側のローラ13と、他方側のローラ13とは、環状芯体の周方向に位相をずらして配置されており、一対の環状芯体の回転時に、一対の環状芯体の一方側のローラ13と、他方側のローラ13とのうちのいずれか一方が床面に接地するようになっている。
第2の移動動作部4は、基体2に連結されている。より詳しくは、第2の移動動作部4は、オムニホイール(一対の環状芯体及び複数のローラ13の全体)の上側部分を覆うと共にオムニホイールの一対の環状芯体をその軸心回りに回転自在に軸支する筐体14を備えており、筐体14から基体2側に延設されたアーム15が第1の移動動作部3の環状芯体6の軸心回りに揺動し得るように基体2に軸着されている。
そして、第2の移動動作部4は、アーム15の揺動によって第1の移動動作部3の環状芯体6の軸心回りに基体2に対して揺動自在とされ、これにより、第1の移動動作部3と第2の移動動作部4との両方を接地させたまま、乗員搭乗部5を基体2と共にY軸回りに傾動させることが可能となっている。
なお、アーム15を第1の移動動作部3の環状芯体6の軸心部に軸着して、第1の移動動作部3にアーム15を介して第2の移動動作部4を連結するようにしてもよい。また、第2の移動動作部4は、床面に押し付けられるようにバネ等により付勢されていてもよい。
また、基体2には、アーム15の揺動範囲を制限する一対のストッパ16、16が設けられており、アーム15は、ストッパ16、16の間の範囲内で揺動することが可能となっている。これにより、第1の移動動作部3の環状芯体6の軸心回りでの第2の移動動作部4の揺動範囲、ひいては、基体2及び乗員搭乗部5のX軸回りの傾動範囲が制限されて、基体2及び乗員搭乗部5が乗員の後ろ側に過大に傾くことが防止されるようになっている。なお、本実施形態では、基体2が後傾してアーム15が上側のストッパ16に当接する基体2の角度は−25degとなっている。
また、アーム15は、基体2から突出した揺動端側の位置にてY方向に延在する回転軸により構成される屈曲部15aを介して互いに連結され、かつ直線状を保つようにばね付勢された2つの部材から構成されており、基体2が後傾してアーム15が上側のストッパ16に当接した後に、アーム15が屈曲部15aで屈曲することで、基体2の更なる後傾が許容されるようになっている。基体2が後傾してアーム15の屈曲角度が大きくなると、第2の移動動作部4のローラ13以外の部分が床面に接地することになり、基体2はそれ以上後傾できなくなる。
上記のように、第2の移動動作部4は、その一対の環状芯体の回転と、ローラ13の回転とのうちの一方又は両方を行うことで、第1の移動動作部3と同様に、床面上をX軸方向及びY軸方向を含む全方向に移動することが可能となっている。より詳しくは、環状芯体の回転によって、第2の移動動作部4がY軸方向(左右方向)に移動可能とされ、ローラ13の回転によって、X軸方向(前後方向)に移動可能とされている。
また、第2の移動動作部4の筐体14には、第2の移動動作部4を駆動する第2の駆動装置としての電動モータ17が取り付けられている。この電動モータ17は、第2の移動動作部4の一対の環状芯体を回転駆動するように一対の環状芯体に連結されている。
従って、本実施形態では、第2の移動動作部4のX軸方向での移動は、第1の移動動作部3のX軸方向での移動に追従して従動的に行われる。また、第2の移動動作部4のY軸方向での移動は、電動モータ17により第2の移動動作部4の一対の環状芯体を回転駆動することによって行われる。
以上が本実施形態における車両1の機構的な構成である。
図1及び図2には図示を省略したが、本実施形態の車両1の基体2には、車両1の動作制御(第1の移動動作部3及び第2の移動動作部4の動作制御)のための構成要素として、図3に示したように、CPU、RAM、ROM等を含む電子回路ユニットにより構成される制御装置20と、基体2の3軸(X、Y及びZ)方向の加速度を検出する加速度センサ70と、3軸回りの角速度を検出する角速度センサ71(ジャイロセンサ等)と、電動モータ8aの回転速度Nm_xを検出する回転速度センサ72a(エンコーダ等)と、電動モータ8bの回転速度Nm_yを検出する回転速度センサ72bと、電動モータ17の回転速度Nm_cを検出する回転速度センサ73とが搭載されている。
そして、制御装置20には、加速度センサ70、角速度センサ71、回転速度センサ72a、回転速度センサ72b、及び回転速度センサ73の各検出信号が入力されるようになっている。
制御装置20は、加速度センサ70及び角速度センサ71の検出信号から、基体2の傾斜角度の計測値を、公知の手法を用いて取得する。この手法としては、例えば特許4181113号にて本出願人が提案した手法を採用することができる。
なお、本実施形態における基体2の傾斜角度は、より詳しくは、車両1と、車両1に既定の姿勢(標準姿勢)で搭乗した乗員とを併せた全体の重心が、第1の移動動作部3の接地部の直上(鉛直方向上方)に位置する状態での基体2の姿勢を基準(ゼロ)とする傾斜角度(Y軸回り方向の傾斜角度とX軸回り方向の傾斜角度との組)である。
また、制御装置20は、角速度センサ71の検出信号に基づいて、車両1のヨー軸回りの角速度の計測値を取得する。
制御装置20は、実装されるプログラム等により実現される機能として、上記のように計測値を取得する機能の他、第1の駆動装置8を構成する電動モータ8a、8bを制御することで第1の移動動作部3の移動動作を制御する第1制御処理部24と、第2の駆動装置としての電動モータ17を制御することで第2の移動動作部4の移動動作を制御する第2制御処理部25とを備えている。
第1制御処理部24は、後述する演算処理を実行することで、第1の移動動作部3の移動速度(詳しくは、X軸方向の並進速度とY軸方向の並進速度との組)の目標値である第1目標速度を逐次算出し、第1の移動動作部3の実際の移動速度を、第1目標速度に一致させるように電動モータ8a、8bの回転速度Nm_xyを制御する。
電動モータ8a、8bのそれぞれの回転速度Nm_x、Nm_yと、第1の移動動作部3の実際の移動速度との関係はあらかじめ定められており、第1の移動動作部3の第1目標速度に応じて、各電動モータ8a、8bの回転速度Nm_xyの目標値が設定されるようになっている。そして、第1制御処理部24は、電動モータ8a、8bの回転速度Nm_xyを第1目標速度に応じて設定される目標値にフィードバック制御することで、第1の移動動作部3の実際の移動速度を第1目標速度に制御する。
また、第2制御処理部25は、後述する演算処理を実行することで、第2の移動動作部4の移動速度(詳しくは、Y軸方向の並進速度)の目標値である第2目標速度を逐次算出し、Y軸方向での第2の移動動作部4の実際の移動速度を、第2目標速度に一致させるように電動モータ17の回転速度Nm_xyを制御する。
第1の移動動作部3の場合と同様に、電動モータ17の回転速度Nm_xyと、Y軸方向での第2の移動動作部4の実際の移動速度との関係はあらかじめ定められており、第2の移動動作部4の第2目標速度に応じて、電動モータ17の回転速度Nm_xyの目標値が設定されるようになっている。そして、第2制御処理部25は、電動モータ17の回転速度Nm_xyを第2目標速度に応じて設定される目標値にフィードバック制御することで、第2の移動動作部4のY軸方向の実際の移動速度を第2目標速度に制御する。
なお、本実施形態では、第2の移動動作部4のX軸方向の移動は、第1の移動動作部3のX軸方向の移動に追従して従動的に行なわれるため、X軸方向での第2の移動動作部4の移動速度の目標値を設定する必要はない。
本明細書の実施形態の説明では、第1の移動動作部3の速度は、特にことわらない限り、第1の移動動作部3の接地点の移動速度を意味する。同様に、第2の移動動作部4の速度は、特にことわらない限り、第2の移動動作部4の接地点の移動速度を意味する。
次に、上記第1制御処理部24及び第2制御処理部25による処理を更に詳細に説明する。まず、図4〜図14を参照して、第1制御処理部24による処理について説明する。
第1制御処理部24は、図4に示すように、その主要な機能部として、車両系全体重心の速度を推定する重心速度推定部31と、車両1とその乗員搭乗部5に搭乗した乗員とを併せた全体の重心(以降、車両系全体重心という)の目標速度を決定する重心目標速度演算部32と、推定した車両系全体重心の速度を目標速度に追従させつつ、基体2の姿勢を安定化するように第1の移動動作部3の移動速度の目標値を決定する姿勢制御演算部34と、姿勢制御演算部34が第1の移動動作部3の移動速度の目標値を決定する際に用いる、基体2の傾斜角度の目標値である目標傾斜指令M_cmd_xyを決定する目標傾斜指令演算部35とを備える。そして、第1制御処理部24は、これらの各機能部の処理を、制御装置20の所定の演算処理周期で実行する。
なお、本実施形態では、車両系全体重心というのは、車両1の代表点の一例としての意味を持つものである。従って、車両系全体重心の速度というのは、その代表点の並進移動速度を意味するものである。
ここで、第1制御処理部24の各機能部の処理を具体的に説明する前に、その処理の基礎となる事項を説明しておく。車両系全体重心の動力学的な挙動(詳しくは、Y軸方向から見た挙動と、X軸方向から見た挙動)は、近似的に、図5に示すような倒立振子モデルの挙動により表現される。第1制御処理部24による処理のアルゴリズムは、この挙動を基礎として構築されている。
なお、図5の参照符号を含めて、以降の説明では、添え字"_x"はY軸方向から見た場合の変数等の参照符号を意味し、添え字"_y"はX軸方向から見た場合の変数等の参照符号を意味する。また、図5では、Y軸方向から見た場合の倒立振子モデルと、X軸方向から見た場合の倒立振子モデルとを併せて図示するために、Y軸方向から見た場合の変数の参照符号に括弧を付さないものとし、X軸方向から見た場合の変数の参照符号に括弧を付している。
Y軸方向から見た車両系全体重心の挙動を表す倒立振子モデルは、Y軸方向と平行な回転軸心を有して床面上を輪転自在な仮想的な車輪61_x(以降、仮想車輪61_xという)と、仮想車輪61_xの回転中心から延設されて、仮想車輪61_xの回転軸回りに(Y軸回り方向に)揺動自在なロッド62_xと、このロッド62_xの先端部(上端部)である基準部Ps_xに連結された質点Ga_xとを備える。
この倒立振子モデルでは、質点Ga_xの運動が、Y軸方向から見た車両系全体重心の運動に相当し、鉛直方向に対するロッド62_xの傾斜角度θb_x(Y軸回り方向の傾斜角度)が、基体2のY軸回り方向の傾斜角度に一致するものとされる。また、第1の移動動作部3のX軸方向の並進運動が、仮想車輪61_xの輪転によるX軸方向の並進運動に相当するものとされる。
そして、仮想車輪61_xの半径r_xと、基準部Ps_x及び質点Ga_xの床面からの高さh_xとは、あらかじめ設定された既定値(一定値)とされる。
同様に、X軸方向から見た車両系全体重心の挙動を表す倒立振子モデルは、X軸方向と平行な回転軸心を有して床面上を輪転自在な仮想的な車輪61_y(以降、仮想車輪61_yという)と、仮想車輪61_yの回転中心から延設されて、仮想車輪61_yの回転軸回りに(X軸回り方向に)揺動自在なロッド62_yと、このロッド62_yの先端部(上端部)である基準部Ps_yに連結された質点Ga_yとを備える。
この倒立振子モデルでは、質点Ga_yの運動が、X軸方向から見た車両系全体重心の運動に相当し、鉛直方向に対するロッド62_yの傾斜角度θb_y(X軸回り方向の傾斜角度)が、基体2のX軸回り方向の傾斜角度に一致するものとされる。また、第1の移動動作部3のY軸方向の並進運動が、仮想車輪61_yの輪転によるY軸方向の並進運動に相当するものとされる。
そして、仮想車輪61_yの半径r_yと、基準部Ps_y及び質点Ga_yの床面からの高さh_yとは、あらかじめ設定された既定値(一定値)とされる。なお、X軸方向で見た基準部Ps_y及び質点Ga_yの床面からの高さh_yは、Y軸方向で見た基準部Ps_x及び質点Ga_xの床面からの高さh_xと同じである。そこで、以降、h_x=h_y=hとおく。
ここで、Y軸方向から見た場合の上記基準部Ps_xと質点Ga_xとの位置関係について補足すると、基準部Ps_xの位置は、乗員搭乗部5に搭乗(着座)した乗員が、乗員搭乗部5(基体2)に対して予め定められた中立姿勢のまま不動であると仮定した場合における車両系全体重心の位置に相当している。従って、この場合には、質点Ga_xの位置は、基準部Ps_xの位置に一致する。
このことは、X軸方向から見た場合の上記基準部Ps_yと質点Ga_yとの位置関係についても同様である。
ただし、実際には、乗員搭乗部5に搭乗した乗員が、その上体等を基体2(即ち、乗員搭乗部5)に対して動かすことで、実際の車両系全体重心のX軸方向の位置及びY軸方向の位置は、一般には、それぞれ基準部Ps_x、Ps_yの位置から水平方向にずれることとなる。そして、車両1を走行させるために乗員が上体を進みたい方向に傾けると、この水平方向へのずれ量が大きくなる。このため、図5では、質点Ga_x、Ga_yの位置をそれぞれ基準部Ps_x、Ps_yの位置からずらした状態で示している。
上記のような倒立振子モデルで表現される車両系全体重心の挙動は、次式(1a)、(1b)、(2a)、(2b)により表現される。この場合、式(1a)、(1b)は、Y軸方向で見た挙動、式(2a)、(2b)は、X軸方向で見た挙動を表している。
Vb_x=Vw1_x+h・ωb_x ......(1a)
dVb_x/dt=(g/h)・(θb_x・(h−r_x)+Ofst_x)+ωz・Vb_y ......(1b)
Vb_y=Vw1_y+h_y・ωb_y ......(2a)
dVb_y/dt=(g/h)・(θb_y・(h−r_y)+Ofst_y)−ωz・Vb_x ......(2b)
ここで、Vb_xは、車両系全体重心のX軸方向の速度(並進速度)、θb_xは基体2のY軸回り方向の傾斜角度、Vw1_xは、仮想車輪61_xのX軸方向の移動速度(並進速度)、ωb_xはθb_xの時間的変化率(=dθb_x/dt)、Ofst_xは車両系全体重心のX軸方向の位置(質点Ga_xのX軸方向の位置)の、基準部Ps_xの位置からのX軸方向のずれ量、Vb_yは、車両系全体重心のY軸方向の速度(並進速度)、Vw1_yは、仮想車輪61_yのY軸方向の移動速度(並進速度)、θb_yは基体2のX軸回り方向の傾斜角度、ωb_yはθb_yの時間的変化率(=dθb_y/dt)、Ofst_yは車両系全体重心のY軸方向の位置(質点Ga_yのY軸方向の位置)の、基準部Ps_yの位置からのY軸方向のずれ量である。また、ωzは車両1の旋回時のヨーレート(ヨー軸回り方向の角速度)、gは重力加速度定数である。
なお、θb_x、ωb_xの正方向は、車両系全体重心がX軸の正方向(前向き)に傾く方向、θb_y、ωb_yの正方向は、車両系全体重心がY軸の正方向(左向き)に傾く方向である。また、ωzの正方向は、車両1を上方から見た場合に、反時計回り方向である。
式(1a)の右辺第2項(=h・ωb_x)は、基体2のY軸回り方向の傾動によって生じる基準部Ps_xのX軸方向の並進速度成分、式(2a)右辺第2項(=h・ωb_y)は、基体2のX軸回り方向の傾動によって生じる基準部Ps_yのY軸方向の並進速度成分である。
式(1a)におけるVw1_xは、詳しくは、ロッド62_xに対する(換言すれば基体2に対する)相対的な仮想車輪61_xの周速度である。このため、Vw1_xには、床面に対する仮想車輪61_xの接地点のX軸方向の移動速度(床面に対する第1の移動動作部3の接地点のX軸方向の移動速度)に加えて、ロッド62_xの傾動に伴う速度成分(=r_x・ωb_x)が含まれている。このことは、式(1b)におけるVw1_yについても同様である。
また、式(1b)の右辺の第1項は、車両系全体重心のX軸方向の位置(質点Ga_xのX軸方向の位置)の、仮想車輪61_xの接地部(Y軸方向から見た第1の移動動作部3の接地部)の鉛直上方位置からのずれ量(=θb_x・(h−r_x)+Ofst_x)に応じて仮想車輪61_xの接地部に作用する床反力(図5のF)のX軸方向成分(図5のF_x)によって車両系全体重心に発生するX軸方向の加速度成分、式(1b)の右辺の第2項は、ωzのヨーレートでの旋回時に車両1に作用する遠心力によって発生するX軸方向の加速度成分である。
同様に、式(2b)の右辺の第1項は、車両系全体重心のY軸方向の位置(質点Ga_yのY軸方向の位置)の、仮想車輪61_yの接地部(X軸方向から見た第1の移動動作部3の接地部)の鉛直上方位置からのずれ量(=θb_y・(h−r_y)+Ofst_y)に応じて仮想車輪61_yの接地部に作用する床反力(図5のF)のY軸方向成分(図5のF_y)によって車両系全体重心に発生するY軸方向の加速度成分、式(2b)の右辺の第2項は、ωzのヨーレートでの旋回時に車両1に作用する遠心力によって発生するY軸方向の加速度成分である。
上記のように、式(1a)、(1b)により表現される挙動(X軸方向で見た挙動)は、ブロック線図で表現すると、図6に示すように表される。図中の1/sは積分演算を表している。
そして、図6における参照符号Aを付した演算部の処理が、式(1a)の関係式に該当しており、参照符号Bを付した演算部の処理が、式(1b)の関係式に該当している。
なお、図6中のh・θb_xは、近似的には、図5に示したDiff_xに一致する。
一方、式(2a)、(2b)により表現される挙動(Y軸方向で見た挙動)を表現するブロック線図は、図6中の添え字"_x"を"_y"に置き換え、参照符号Cを付した加算器への入力の一つである図中下側の加速度成分(遠心力によって発生する加速度成分)の符号"+"を"−"に置き換えることによって得られる。
本実施形態では、第1制御処理部24の処理のアルゴリズムは、上記のように車両系全体重心の基準部Ps_x、Ps_yからのずれ量と、遠心力とを考慮した車両系全体重心の挙動モデル(倒立振子モデル)に基づいて構築されている。
以上を前提として、第1制御処理部24の処理をより具体的に説明する。なお、以降の説明では、Y軸方向から見た挙動に関する変数の値と、X軸方向から見た挙動に関する変数の値との組を添え字"_xy"を付加して表記する場合がある。
図4を参照して、第1制御処理部24は、制御装置20の各演算処理周期において、まず、重心速度推定部31の処理を実行する。
重心速度推定部31は、倒立振子モデルにおける式(1a)、(2a)に表される幾何学的な(運動学的な)関係式に基づいて、車両系全体重心の速度の推定値Vb_estm1_xyを算出する。
具体的には、図4のブロック線図に示したように、第1の移動動作部3の実際の並進速度Vw1_act_xyの値と、基体2の傾斜角度θb_xyの実際の時間的変化率(傾斜角速度)ωb_act_xyに、車両系全体重心の高さhを乗じてなる値とを加えることにより、車両系全体重心の速度の推定値Vb_estm1_xyを算出する。
即ち、車両系全体重心のX軸方向の速度の推定値Vb_estm1_xとY軸方向の速度の推定値Vb_estm1_yとがそれぞれ、次式(3a)、(3b)により算出される。
Vb_estm1_x=Vw1_act_x+h・ωb_act_x ......(3a)
Vb_estm1_y=Vw1_act_y+h・ωb_act_y ......(3b)
ただし、車両系全体重心の位置の基準部Ps_xyの位置からのずれ量Ofst_xy(以降、重心ずれ量Ofst_xyという)の時間的変化率は、Vb_estm1_xyに比べ十分に小さく無視できるものとした。
上記演算におけるVw1_act_x、Vw1_act_yの値としては、本実施形態では、前回の演算処理周期で姿勢制御演算部34により決定された第1の移動動作部3の移動速度の目標値Vw1_cmd_x、Vw1_cmd_y(前回値)が用いられる。
ただし、例えば、電動モータ8a、8bのそれぞれの回転速度Nm_x、Nm_yを回転速度センサ72a、72bにより検出し、それらの検出値から推定したVw1_act_x、Vw1_act_yの最新値(換言すれば、Vw1_act_x、Vw1_act_yの計測値の最新値)を式(3a)、(3b)の演算に用いるようにしてもよい。
また、ωb_act_x、ωb_act_yの値としては、本実施形態では、加速度センサ70及び角速度センサ71の検出信号に基づく基体2の傾斜角度θbの計測値の時間的変化率の最新値(換言すれば、ωb_act_x、ωb_act_yの計測値の最新値)が用いられる。
第1制御処理部24は上記の如く重心速度推定部31の処理を実行した後、次に、図4に示す重心目標速度演算部32にて重心ずれ推定部32aの処理を実行することで、車両系全体の重心ずれ量Ofst_xyの推定値である重心ずれ量推定値Ofst_estm_xyを決定する。
この重心ずれ推定部32aの処理は、図7のブロック線図により示される処理である。なお、図7は、重心ずれ量推定値Ofst_estm_xyのうちのX軸方向の重心ずれ量推定値Ofst_estm_xの決定処理を代表的に表している。
図7の処理を具体的に説明すると、重心ずれ推定部32aは、加速度センサ70及び角速度センサ71の検出信号から得られた基体2のY軸回り方向の実際の傾斜角度θb_act_xの計測値(最新値)と、角速度センサ71の検出信号から得られた車両1の実際のヨーレートωz_actの計測値(最新値)と、重心速度推定部31により算出された車両系全体重心のY軸方向の速度の第1推定値Vb_estm1_y(最新値)と、前回の演算処理周期で決定したX軸方向の重心ずれ量推定値Ofst_estm_x(前回値)とを用いて、式(1b)の右辺の演算処理を演算部32a1で実行することにより、車両系全体重心のX軸方向の並進加速度の推定値DVb_estm_xを算出する。
更に重心ずれ推定部32aは、車両系全体重心のX軸方向の並進加速度の推定値DVb_estm_xを積分する処理を演算部32a2で実行することにより、車両系全体重心のX軸方向の速度の第2推定値Vb_estm2_xを算出する。次いで、重心ずれ推定部32aは、車両系全体重心のX軸方向の速度の第2推定値Vb_estm2_x(最新値)と、第1推定値Vb_estm1_x(最新値)との偏差を算出する処理を演算部32a3で実行し、この偏差に所定値のゲイン(−Kp)を乗じる処理を演算部32a4で実行することにより、X軸方向の重心ずれ量推定値Ofst_estm_xの最新値を決定する。
Y軸方向の重心ずれ量推定値Ofst_estm_yの決定処理も上記と同様に実行される。具体的には、この決定処理を示すブロック線図は、図7中の添え字"_x"と"_y"とを入れ替え、加算器32a5への入力の一つである図中右側の加速度成分(遠心力によって発生する加速度成分)の符号"+"を"−"に置き換えることによって得られる。
このような重心ずれ推定部32aの処理によって、重心ずれ量推定値Ofst_estm_xyを逐次更新しつつ決定することによって、Ofst_estm_xyを実際の値に収束させるように決定することができる。
第1制御処理部24は、次に、図4に示す重心目標速度演算部32にて重心ずれ影響量算出部32bの処理を実行することによって、重心ずれ影響量Vofs_xyを算出する。
重心ずれ影響量Vofs_xyは、後述する姿勢制御演算部34において、車両系全体重心の位置が倒立振子モデルにおける基準部Ps_xyの位置からずれることを考慮せずにフィードバック制御を行った場合の車両系全体重心の目標速度に対する実際の重心速度のずれを表す。
具体的には、この重心ずれ影響量算出部32bは、新たに決定された重心ずれ量推定値Ofst_estm_xyの各成分に、(Kth_xy/(h-r_xy))/Kvb_xyという値を乗じることにより、重心ずれ影響量Vofs_xyを算出する。
なお、Kth_xyは、後述する姿勢制御演算部34の処理において、基体2の傾斜角度をゼロ(目標傾斜指令M_cmd_xy)に近づけるように機能する操作量成分を決定するためのゲイン値である。また、Kvb_xyは、後述する姿勢制御演算部34の処理において、車両系全体重心の重心目標速度Vb_cmd_xyと車両系全体重心の速度の第1推定値おけるVb_estm1_xyとの偏差をゼロに近づけるように機能する操作量成分を決定するためのゲイン値である。
第1制御処理部24は、次に、図4に示す重心目標速度演算部32にて重心目標速度決定部32cの処理を実行することによって、重心ずれ影響量算出部32bにより決定された重心ずれ影響量Vofs_xyに基づいて、重心目標速度Vb_cmd_xyを算出する。この重心目標速度決定部32cは、重心ずれ影響量Vofs_xyの値に関する不感帯処理を実行することで、車両系全体の重心ずれに応じた重心目標速度Vb_cmd_xyを決定する。
具体的には、本実施形態では、重心目標速度演算部32は、X軸方向の重心ずれ影響量Vofs_xの大きさがゼロ近辺の所定の範囲である不感帯A内の値(比較的ゼロに近い値)である場合には、X軸方向の重心目標速度Vb_cmd_xをゼロにする。一方、X軸方向の重心ずれ影響量Vofs_xの大きさが不感帯Aから逸脱した所定の範囲である中間領域B内の値である場合には、重心目標速度演算部32は、X軸方向の重心目標速度Vb_cmd_xを、Vofs_xと同極性で、その大きさがVofs_xの大きさの増加に伴い大きくなるように決定する。ただし、重心目標速度Vb_cmd_xの値は、所定の上限値(>0)と下限値(≦0)との間の範囲内に制限され、X軸方向の重心ずれ影響量Vofs_xの大きさが所定の値を越える飽和領域C内の値である場合には、所定の上限値又は下限値に決定される。
Y軸方向の重心目標速度Vb_cmd_yの決定処理も上記と同様である。
なお、第1の移動動作部3の第1の駆動装置8としての電動モータ8a、8bのそれぞれの回転速度Nm_x、Nm_yを、所定の許容範囲から逸脱しないようにするために、重心目標速度演算部32が図示しないリミット処理部を有し、目標速度V1_xとV1_yとの組み合わせを制限してなる車両系全体重心の目標速度としての重心目標速度Vb_cmd_xy(Vb_cmd_x、Vb_cmd_yの組)を決定するリミット処理を実行してもよい。
リミット処理では、例えば、重心目標速度決定部32cで求められた重心目標速度Vb_cmd_x、Vb_cmd_yの組が、重心目標速度Vb_cmd_xの値を縦軸、目標速度V1_yの値を横軸とする座標系上で所定の領域(例えば8角形状の領域)内に在る場合には、その重心目標速度Vb_cmd_xyがそのまま重心目標速度Vb_cmd_xyとして決定される。一方、重心目標速度決定部32cで求められた重心目標速度Vb_cmd_x、Vb_cmd_yの組が、上記座標系上の所定の領域から逸脱している場合には、当該所定の領域の境界上の組に制限したものが、重心目標速度Vb_cmd_xyとして決定される。
以上のように、重心ずれ影響量Vofs_xy(又は、重心ずれ)に基づいて、重心目標速度Vb_cmd_xyが決定されるので、乗員は、上体の姿勢の変化(体重移動)によって、車両1を操縦することができる。
重心目標速度演算部32の処理を実行した後、第1制御処理部24は、次に、姿勢制御演算部34の処理を実行する。この姿勢制御演算部34は、図4のブロック線図で示す処理によって、第1の移動動作部3の移動速度(並進速度)の目標値である第1目標速度Vw1_cmd_xyを決定する。
より詳しくは、姿勢制御演算部34は、まず、重心目標速度Vb_cmd_xyの各成分から、重心ずれ影響量Vofs_xyの各成分を減じる処理を演算部34aで実行することにより重心ずれ補償後重心目標速度Vb_cmpn_cmd_xy(最新値)を決定する。
補償後重心目標速度Vb_cmpn_cmd_xyは、例えば、図8に示す表のように決定される。具体的に説明すると、図4の重心目標速度決定部32c中のグラフに示す不感帯A内の小さな値の重心ずれ影響量Vofs_xyが重心目標速度決定部32cに入力された場合には、重心目標速度Vb_cmd_xyが0に決定され、重心ずれ補償後重心目標速度Vb_cmpn_cmd_xy(基体2の傾斜角度に対応する量)が重心ずれ影響量Vofs_xyと逆の極性となる。これにより、例えば、乗員が上体を前方に多少動かした場合でも、基体2が後傾し、車両系全体としては静止状態が維持される。
一方、図4の重心目標速度決定部32c中のグラフに示す中間領域B内の値の重心ずれ影響量Vofs_xyが重心目標速度決定部32cに入力された場合には、重心ずれ影響量Vofs_xyと逆の極性で、一定の値の重心ずれ補償後重心目標速度Vb_cmpn_cmd_xyが決定される。これにより、例えば、乗員が上体の前方への移動量を増やしていた場合には、基体2が多少の後傾状態を維持したまま上体の移動量に応じた速度で車両1が前進する。この場合、乗員の動作に応じた補償後重心目標速度Vb_cmpn_cmd_xyとするためには、中間領域BでのVofs_xyの増加に対するVb_cmd_xyの増加率は1が好ましい。すなわち、図4の重心目標速度決定部32c中のグラフにおける中間領域Bの傾きは1が好ましい。
重心目標速度決定部32cに入力される重心ずれ影響量Vofs_xyの値が飽和領域Cの値に達した場合には、重心目標速度Vb_cmd_xyが制限されて一定の値となるため、重心ずれ補償後重心目標速度Vb_cmpn_cmd_xyは重心ずれ影響量Vofs_xyと逆の極性で、重心ずれ影響量Vofs_xyの値の大きさに応じて大きくなる。これにより、車両1が前進中の場合であれば、重心ずれ影響量Vofs_xyの値に応じて基体2の後傾角度が大きくなり、乗員は加速のための上体移動動作を行いにくくなる。
次いで、姿勢制御演算部34は、上記演算部34aと、詳細を後述する重心目標速度0機能部34bと、積分演算を行う積分演算部34cとを除く演算部の処理によって、第1の移動動作部3の接地点の並進加速度の目標値である目標並進加速度DVw1_cmd_xyのうちのX軸方向の目標並進加速度DVw1_cmd_xと、Y軸方向の目標並進加速度DVw1_cmd_yとをそれぞれ次式(4a)、(4b)の演算により算出する。
DVw1_cmd_x=Kvb_x・(Vb_cmpn_cmd_x−Vb_estm1_x)
−Kth_x・θb_act_x−Kw_x・ωb_act_x ......(4a)
DVw1_cmd_y=Kvb_y・(Vb_cmpn_cmd_y−Vb_estm1_y)
−Kth_y・θb_act_y−Kw_x・ωb_act_y ......(4b)
式(4a)、(4b)におけるKvb_xy、Kth_xy、Kw_xyはあらかじめ設定された所定のゲイン値である。
また、式(4a)の右辺の第1項は、車両系全体重心のX軸方向の重心ずれ補償後重心目標速度Vb_cmpn_cmd_xy(最新値)と第1推定値Vb_estm1_x(最新値)との偏差に応じたフィードバック操作量成分、第2項は、基体2のY軸回り方向の実際の傾斜角度θb_act_xの計測値(最新値)に応じたフィードバック操作量成分、第3項は、基体2のY軸回り方向の実際の傾斜角速度ωb_act_xの計測値(最新値)に応じたフィードバック操作量成分である。そして、X軸方向の目標並進加速度DVw1_cmd_xは、これらのフィードバック操作量成分の合成操作量として算出される。
なお、式(4a)の右辺の第2項で用いられる、基体2のY軸回り方向の実際の傾斜角度θb_act_xの計測値は、車両1の設計上の重心位置と実際の重心位置とのずれを補正するための傾斜角などの補正角度を加味した値である。また、式(4b)の右辺の第2項で用いられる、基体のX軸回り方向の実際の傾斜角度θb_act_yの計測値は、式(4a)と同様に車両1の設計上の重心位置と実際の重心位置とのずれを補正するための傾斜角や、旋回中に車両1の軌跡が外側に膨らまないように基体2を内側に傾けるために、遠心力に釣り合わせるための傾斜角などの補正角度を加味した値である。図4のブロック線図では、図の右側から入力されて実際の傾斜角度θb_act_xの計測値を減じる処理に用いられる補正信号M0_xyが、この補正角度に相当する。後述するように、この補正角度と通知用傾斜指令M_xyとが加算されることで目標傾斜指令M_cmd_xyがつくり出され、目標傾斜指令M_cmd_xyが傾斜角度θb_act_xyから減じられることで傾斜角度θb_act_xyが補正される。
同様に、式(4b)の右辺の第1項は、車両系全体重心のY軸方向の重心ずれ補償後重心目標速度Vb_cmpn_cmd_y(最新値)と第1推定値Vb_estm1_y(最新値)との偏差に応じたフィードバック操作量成分、第2項は、基体2のX軸回り方向の実際の傾斜角度θb_act_yの計測値(最新値)に応じたフィードバック操作量成分、第3項は、基体2のX軸回り方向の実際の傾斜角速度ωb_act_yの計測値(最新値)に応じたフィードバック操作量成分である。そして、Y軸方向の目標並進加速度DVw1_cmd_yは、これらのフィードバック操作量成分の合成操作量として算出される。
次いで、姿勢制御演算部34は、積分演算部34cによって、目標並進加速度DVw1_cmd_xyの各成分を積分することによって、第1の移動動作部3の第1目標速度Vw1_cmd_xy(最新値)を決定する。
そして、第1制御処理部24は、上記のように決定した第1目標速度Vw1_cmd_xyに従って第1の移動動作部3の第1の駆動装置8としての電動モータ8a、8bを制御する。より詳しくは、第1制御処理部24は、第1目標速度Vw1_cmd_xyにより設定される各電動モータ8a、8bの回転速度の目標値に、実際の回転速度Nm_xy(計測値)を追従させるように、フィードバック制御処理により各電動モータ8a、8bの電流指令値を決定し、この電流指令値に従って、各電動モータ8a、8bの通電を行う。
以上の処理により、重心目標速度Vb_cmd_xyが一定値であって、車両1の運動が整定し、車両1が一定速度で直進している状態においては、車両系全体重心は、第1の移動動作部3の接地点の真上に存在する。この状態では、基体2の実際の傾斜角度θb_act_xyは、式(1b)、(2b)に基づいて、−Ofst_xy/(h−r_xy)、即ち重心位置のずれを戻す角度の値となる。また、基体2の実際の傾斜角速度ωb_act_xyはゼロ、目標並進加速度DVw1_cmd_xyはゼロとなる。このことと、図4のブロック線図から、Vb_estm1_xyとVb_cmd_xyとが一致することが導き出される。
即ち、第1の移動動作部3の第1目標速度Vw1_cmd_xyは、基本的には、車両系全体重心の重心目標速度Vb_cmd_xyと第1推定値Vb_estm1_xyとの偏差をゼロに収束させるように決定される。
次に、目標傾斜指令演算部35の処理について詳細に説明する。
目標傾斜指令演算部35は、乗員が過度に上体等を移動させることで電動モータ8a、8bによる車両1の推進能力を超えて車両系全体重心のずれ量が大きくなることを抑制するために、目標傾斜指令M_cmd_xyに重畳させるべき通知用傾斜指令M_xyを算出する通知機能部35aと、通知機能部35aで算出された通知用傾斜指令M_xyを、上記補正信号M0_xyに加える処理を実行する演算部35bとを備えている。
そして、姿勢制御演算部34は、演算部35bで合算された値を目標傾斜指令M_cmd_xy(=通知用傾斜指令M_xy+M0_xy)としてこの目標傾斜指令M_cmd_xyを基体2の実際の傾斜角度θb_act_xyの計測値から減じる処理を演算部34dで実行することで、第1の移動動作部3の接地点の並進加速度の目標値である目標並進加速度DVw1_cmd_xyを算出するための上記式(4a)、(4b)で用いる基体2の傾斜角度θb_act_xyを補正する。補正された基体2の傾斜角度θb_act_xyは、基体2の傾斜角度をゼロ(目標傾斜指令M_cmd_xy)に近づけるように機能する操作量成分を決定するためのゲイン値Kth_xyを乗じられた後に、基体2の傾斜角度θb_act_xに応じたフィードバック操作量として用いられるため、通知用傾斜指令M_xy及び補正信号M0_xyは、第1の移動動作部3の目標並進加速度DVw1_cmd_xyに重畳することになる。
以下、通知機能部35aについて詳細に説明する。通知機能部35aは、基体2に振動(振動的な傾斜角度)を与えることで通知を行うための通知用の傾斜振動指令M1_xyを算出する第1通知機能部35a1と、基体2に単発的な比較的大きな傾斜角度を与えることで通知を行うための通知傾斜角度指令M2_xyを算出する第2通知機能部35a2と、傾斜振動指令M1_xyと通知傾斜角度指令M2_xyとに基づいて通知用傾斜指令M_xyを算出する演算部35a3とを備える。
具体的には、図4のブロック線図に示したように、通知機能部35aには、重心速度推定部31で算出された車両系全体重心の速度の推定値Vb_estm1_xy、加速度センサ70及び角速度センサ71の検出信号から得られた基体2の実際の傾斜角度θb_act_xy、角速度センサ71の検出信号から得られた車両1の実際のヨーレートωz_act、及び電動モータ8a、8bの回転速度Nm_xy等が入力されている。
第1通知機能部35a1の処理は、図9に示される処理である。なお、図9は、通知用の傾斜振動指令M1_xyのうちのX軸方向の通知用の傾斜振動指令M1_xの設定処理を代表的に表している。
図9の処理を具体的に説明すると、第1通知機能部35a1は、車両系全体重心の速度の推定値Vb_estm1_xに基づいて第1振動係数K1_xを設定する処理を第1振動係数設定部41で実行する。第1振動係数設定部41は、Vb_estm1_xが所定の値a以下である場合には、第1振動係数K1_xを0に設定し、Vb_estm1_xが所定の値aよりも大きな所定の値b以上である場合には、第1振動係数K1_xを1に設定する。また、Vb_estm1_xが所定の値aより大きく所定の値b未満である場合には、第1振動係数設定部41は、第1振動係数K1_xを、Vb_estm1_xの大きさの増加に応じて大きくなるように0から1の範囲で設定する。
本実施形態では、第1振動係数設定部41が判定のために用いる値aは6km/hに、値bは9km/hにそれぞれ設定されている。これらの値は、車両1が自立制御を継続しづらくなる値よりも小さく、車両系全体重心の速度の推定値Vb_estm1_xにおいては、6km/h以下の領域が自立制御を問題なく行うことができる自立制御適応範囲Rとなる。そして、第1振動係数設定部41では、Vb_estm1_xが所定の値aより大きく所定の値b未満である場合、第1振動係数K1_xは、Vb_estm1_xの値aとの差、即ち自立制御適応範囲Rからの乖離量に比例して(図9に示すグラフにおいて直線的に)大きくなるように設定される。
また、第1通知機能部35a1は、車両1の実際のヨーレートωz_actに基づいて、車両1が非旋回状態にあることを示す非旋回信号S1を生成する処理を第1旋回状態判定部42aで実行すると共に、ωz_actに基づいて、車両1が旋回状態にあることを示す旋回信号S2を生成する処理を第2旋回状態判定部42bで実行する。
具体的に説明すると、第1旋回状態判定部42aは、ωz_actの絶対値が所定の値a以下の場合には、車両1が非旋回状態にあることを示す非旋回信号S1を1に設定し、ωz_actの絶対値が所定の値aよりも大きい場合には、非旋回信号S1を0に設定する。一方、第2旋回状態判定部42bは、ωz_actの絶対値が所定の値a以上の場合には、車両1が旋回状態にあることを示す旋回信号S2を1に設定し、ωz_actの絶対値が所定の値a未満の場合には、旋回信号S2を0に設定する。第1旋回状態判定部42a及び第2旋回状態判定部42bが判定のために用いる値aは同一の値であり、本実施形態では値aは12deg/sに設定されている。
次いで、第1通知機能部35a1は、非旋回信号S1に基体2の実際の傾斜角度θb_act_xを乗じる処理を第1演算部43aで実行すると共に、旋回信号S2に基体2の実際の傾斜角度θb_act_xを乗じる処理を第2演算部43bで実行する。従って、第1演算部43a及び第2演算部43bで算出される値のどちらか一方は0になり、他方は基体2の実際の傾斜角度θb_act_xの値になる。
続いて第1通知機能部35a1は、第1演算部43aにて算出された値(0又はθb_act_x)に基づいて第2振動係数K2_xを生成する処理を第2振動係数設定部44で実行すると共に、第2演算部43bにて算出された値(θb_act_x又は0)に基づいて第3振動係数K3_xを生成する処理を第3振動係数設定部45で実行する。
具体的には、第2振動係数設定部44は、入力された値(0又はθb_act_x)が負の所定の値a以上である場合、即ち基体2の後傾角度が値aの絶対値以下である場合には、第2振動係数K2_xを0に設定し、入力された値が負の所定の値aよりも小さな所定の値b以下である(基体2の後傾角度が値bの絶対値以上である)場合には、第2振動係数K2_xを1に設定する。また、入力された値が所定の値aより小さく値bよりも大きい場合には、第2振動係数設定部44は、第2振動係数K2_xを、入力された値の絶対値の増大に応じて大きくなるように0から1の範囲で設定する。
本実施形態では、第2振動係数設定部44が判定のために用いる値aは−9.7degに、値bは−15.5degにそれぞれ設定されている。なお、これらの値a、bの絶対値は、基体2の後傾によってアーム15が上側のストッパ16に当接するストッパ角度(−25deg)の絶対値よりも小さいため、アーム15が上側のストッパ16に当接する前に第2振動係数K2_xが1になる。
また、第2振動係数設定部44が判定のために用いるこれらの値a、bは、車両1が自立制御を継続しづらくなる負の値よりも大きく(絶対値が小さく)、非旋回状態にある基体2の実際の傾斜角度θb_act_xにおいては、−9.7deg以上の領域が自立制御を問題なく行うことができる自立制御適応範囲Rとなる。そして、第2振動係数設定部44では、入力された値が所定の値aより小さく値bよりも大きい場合、第2振動係数K2_xは、入力された値の値aとの差、即ち自立制御適応範囲Rからの乖離量に比例して(図9に示すグラフにおいて直線的に)大きくなるように設定される。
一方、第3振動係数設定部45は、入力された値(θb_act_x又は0)が負の所定の値a以上である場合、即ち基体2の後傾角度が値aの絶対値以下である場合には、第3振動係数K3_xを0に設定し、入力された値が負の所定の値aよりも小さな所定の値b以下である(基体2の後傾角度が値bの絶対値以上である)場合には、第3振動係数K3_xを1に設定する。また、入力された値が所定の値aより小さく値bよりも大きい場合には、第3振動係数設定部45は、第3振動係数K3_xを、入力された値の絶対値の増大に応じて大きくなるように0から1の範囲で設定する。
第2振動係数設定部44が設定する第2振動係数K2_xは、車両1が非旋回状態にある時に乗員の過度な重心移動を通知するための指令値であるのに対し、第3振動係数設定部45が設定する第3振動係数K3_xは、車両1が旋回状態にある時に乗員の過度な重心移動を通知するための指令値である。そして、旋回時は、遠心力によって基体2が後方に傾きやすく、非旋回時と同じ判定閾値が用いられると通知用或いは警告用の傾斜指令が出やすくなる。そのため、本実施形態では、第3振動係数設定部45が判定のために用いる値a及び値bはそれぞれ、第2振動係数設定部44に設定された値a及び値b以下(絶対値が第2振動係数設定部44に設定された値a及び値bの絶対値以上)とされ、本実施形態では、−11.5deg及び−15.5degに設定されている。
第3振動係数設定部45が判定のために用いるこれらの値a、bは、車両1が自立制御を継続しづらくなる負の値よりも大きく(絶対値が小さく)、旋回状態にある基体2の実際の傾斜角度θb_act_xにおいては、−11.5deg以上の領域が自立制御を問題なく行うことができる自立制御適応範囲Rとなる。そして、第3振動係数設定部45では、入力された値が所定の値aより小さく値bよりも大きい場合には、第3振動係数K3_xは、入力された値の値aとの差、即ち自立制御適応範囲Rからの乖離量に比例して(図9に示すグラフにおいて直線的に)大きくなるように設定される。
また、第1通知機能部35a1は、電動モータ8aの回転速度Nm_xに基づいて第4振動係数K4_xを生成する処理を第4振動係数設定部46で実行する。具体的には、第4振動係数設定部46は、Nm_xが所定の値a以下である場合には、第4振動係数K4_xを0に設定し、Nm_xが所定の値aよりも大きな所定の値b以上である場合には、第4振動係数K4_xを1に設定する。一方、Nm_xが所定の値aより大きく所定の値b未満である場合には、第4振動係数設定部46は、第4振動係数K4_xを、Nm_xの大きさの増加に応じて大きくなるように0から1の範囲で設定する。
本実施形態では、第1振動係数設定部41が判定のために用いる値aは8000rpmに、値bは10000rpmにそれぞれ設定されている。これらの値は、車両1が自立制御を継続しづらくなる値よりも小さく、電動モータ8aの回転速度Nm_xにおいては、8000rpm以下の領域が自立制御を問題なく行うことができる自立制御適応範囲Rとなる。そして、第4振動係数設定部46では、Nm_xが所定の値aより大きく所定の値b未満である場合、第3振動係数K3_xは、Nm_xの値aとの差、即ち自立制御適応範囲Rからの乖離量に比例して(図9に示すグラフにおいて直線的に)大きくなるように設定される。
これらの処理の後、第1通知機能部35a1は、第1〜第4振動係数K1_x〜K4_xに基づいて振動係数K_xを生成する処理を最大値選択部47で実行する。具体的には、最大値選択部47は、供給された第1〜第4振動係数K1_x〜K4_xの中から最も大きな値を選択し、選択した値を振動係数K_x(0≦K_x≦1)として設定する。
次に、第1通知機能部35a1は、振動係数K_xに基づいて通知用の基体2の振動の振幅G_xを算出する処理を振幅設定部48で実行する。具体的には、振幅設定部48は、通知用振動の最大振幅(基体2の最大振動角度)として設定された値に振動係数K_xを乗算することで通知用振動の振幅G_xを算出する。本実施形態では、通知用振動の最大振幅は6degに設定されており、振幅設定部48が乗算した値の小数点以下を切り上げることで、振動係数K_xが0より大きい場合の振幅G_xの最小値が1degとされる。振動係数K_xが1の時の振幅G_xは6degとなる。
なお、振動係数K_xが0より大きくなった場合に、振幅G_xのベース値として1degが設定され、このベース値に対し、通知用振動の最大振幅の6degからベース値の1degを減じた5degに対して振動係数K_xを乗算した値を加えて通知用振動の振幅G_xを算出するようにしてもよい。
そして第1通知機能部35a1は、振幅設定部48が算出した振幅G_xに対し、正弦波発生部49から供給される正弦波Sを乗じる処理を演算部50で実行することで、基体2に対する振動通知用のX軸方向の通知用の傾斜振動指令M1_xを設定する。正弦波発生部49は、Sin(ωt)で表される所定の周波数の正弦波Sを発生させる。但し、ω:周波数、t:時間(s)である。本実施形態では、正弦波Sの周波数は、一般的に人が不快に感じるとされる4Hz(即ち、ω=2π・4)に設定されている。
従って、最大値選択部47で選択された振動係数K_xが1である場合、第1通知機能部35a1は、振幅G_xが6deg(波高が12deg)で周波数4Hzの通知用の傾斜振動指令M1_xを出力する。
第1通知機能部35a1が行う処理は、図10のフローチャートのように表される。第1通知機能部35a1は、このフローに示す処理を所定の制御周期で実行する。図を参照して具体的に説明すると、第1通知機能部35a1はまず、車両系全体重心の速度の推定値Vb_estm1_xが所定の値aより大きいか否か、基体2の実際の傾斜角度θb_act_xが負の所定の値aよりも小さいか否か、及び電動モータ8aの回転速度Nm_xが所定の値aよりも大きいか否かを判定する(ステップST1)。
ステップST1の判定で3つの判定のすべてが満たされない場合(No)、第1通知機能部35a1は図10に示すルーチンを終了する。一方、ステップST1の判定で3つの条件のうちのいずれか1つでも満たされている場合(Yes)、第1通知機能部35a1は、振幅設定部48の処理として、ステップST1で満たされた判定パラメータ(Vb_estm1_x、θb_act_x又はNm_x)の各判定閾値である値aからの乖離量に比例した振幅G_xを算出する(ステップST2)。次いで、第1通知機能部35a1は、正弦波発生部49の処理として、周波数4Hzの正弦波Sを算出し(ステップST3)、演算部50の処理として正弦波Sに振幅G_xを乗じ、目標傾斜指令M_cmd_xyに重畳させるべき傾斜振動指令M1_xを出力して(ステップST4)、図10に示すルーチンを終了する。
Y軸方向の通知用の傾斜振動指令M1_yの設定処理も図9及び図10を参照して説明したものと同様である。
次に、図4に示された第2通知機能部35a2について説明する。第2通知機能部35a2の処理は、図11に示される処理である。なお、図11は、通知用の通知傾斜角度指令M2_xyのうちのX軸方向の通知傾斜角度指令M2_xの設定処理を代表的に表している。
図11の処理を具体的に説明すると、第2通知機能部35a2は、まず基体2の実際の傾斜角度θb_act_xを2階時間微分する処理を演算部51で実行することで、基体2の傾斜角加速度α_xを算出する。次いで、第2通知機能部35a2は、基体2の傾斜角加速度α_xに基づいて目標通知傾斜角度M2_tgt_xを設定する処理を通知角度指令値設定部52で実行する。具体的には、通知角度指令値設定部52は、α_xが負の所定の値aよりも小さい(絶対値が大きい)場合には、乗員が急激に上体を前方に移動させた動作の反力が基体2に加わったものと捉え、通知傾斜角度指令M2_xを出力させるべく、目標通知傾斜角度M2_tgt_xを所定の通知用角度に設定する。一方、α_xが所定の値aよりも大きな場合、通知角度指令値設定部52は目標通知傾斜角度M2_tgt_xを0degに設定する。
本実施形態では、通知角度指令値設定部52が判定のために用いる値aは−40deg/s2に設定され、通知用角度は−6degに設定されている。この値aは、車両1が自立制御を継続しづらくなる値よりも小さく、基体2の傾斜角加速度α_xにおいては、−40deg/s2以上の領域が自立制御を問題なく行うことができる自立制御適応範囲Rとなる。
その後、第2通知機能部35a2は、目標通知傾斜角度M2_tgt_xを、時定数Tを所定の値に変更可能なローパスフィルタ53に通すことで通知傾斜角度指令M2_xを算出する。本実施形態では、目標通知傾斜角度M2_tgt_xが−6degである場合、ローパスフィルタ53の時定数Tは、適度な速さで基体2の傾斜角度θb_act_xを通知用角度に至らせて有効に通知を行うことができる値として、0.1secに設定されている。なお、この時定数Tで通知傾斜角度指令M2_xが与えられた時の基体2の傾斜角加速度α_xの絶対値は、値aの絶対値よりも大きく、通知傾斜角度指令M2_xが比較的大きな傾斜角度に設定された−6degに達するまで、目標通知傾斜角度M2_tgt_xが継続的にローパスフィルタ53に入力される。
基体2の実際の傾斜角度θb_act_xが通知用角度の−6degに達するか、又は基体2の実際の傾斜角度θb_act_xが−25deg(アーム15が上側のストッパ16に当接するストッパ角度)に達すると、通知角度指令値設定部52で算出される目標通知傾斜角度M2_tgt_xは0degになる。目標通知傾斜角度M2_tgt_xが0degである場合、第2通知機能部35a2は、即座に基体2が元の傾斜角度に戻るように、ローパスフィルタ53の時定数Tを0.05secに設定する。
第2通知機能部35a2が行う通知傾斜角度による通知処理の概要は、図12のフローチャートのように表される。この図を参照して説明すると、第2通知機能部35a2は、基体2の傾斜角加速度α_xが所定の値aよりも小さい(負の場合絶対値が大きい)か否かを判定する(ステップST11)。基体2の傾斜角加速度α_xが所定の値a以上の場合には(No)、この判定がYesになるまでステップST11の処理を行う。基体2の傾斜角加速度α_xが所定の値aよりも小さくなり、ステップST11の判定がYesになると、第2通知機能部35a2は、目標通知傾斜角度M2_tgt_xを−6degに設定し、ローパスフィルタ53の時定数Tを0.1secに設定した上で、通知傾斜角度指令M2_xを出力する処理(ステップST12)を開始する。これにより、基体2は後傾を開始する。
その後、ステップST13にて実行する、通知傾斜角度指令M2_xが目標通知傾斜角度M2_tgt_xの値である−6degになったこと、及び基体2の実際の傾斜角度θb_act_xがストッパ角度である−25degになったことの2つの判定条件の両方が満たされない状態ではステップST13の判定がNoとなり、第2通知機能部35a2はステップST12の処理を継続する。
ローパスフィルタ53の時定数Tに応じた時間の経過により、通知傾斜角度指令M2_xが−6degになるか、基体2の傾斜角加速度α_xが値aよりも小さくなった時の基体2の傾斜角度θb_act_xが大きかった状態で通知傾斜角度指令M2_xが出力されたこと等に起因して、基体2の実際の傾斜角度θb_act_xが−25degになり、ステップST13で実行する2つの判定条件の少なくとも一方が満たされてその判定がYesとなると、第2通知機能部35a2は、目標通知傾斜角度M2_tgt_xを0degに設定し、ローパスフィルタ53の時定数Tを0.05secに設定した上で、通知傾斜角度指令M2_xを出力する処理(ステップST14)を開始する。これにより、車両1は後傾した基体2を元に戻す動作を開始する。
その後、ステップST15にて実行する、通知傾斜角度指令M2_xが目標通知傾斜角度M2_tgt_xの値である0degになったか否かの判定条件が満たされない状態ではステップST15の判定がNoとなり、第2通知機能部35a2はステップST12の処理を継続する。
ローパスフィルタ53の時定数Tに応じた時間の経過により、通知傾斜角度指令M2_xが0degになり、ステップST15の判定がYesとなると、第2通知機能部35a2は、通知傾斜角度指令M2_xによる通知終了フラグFfを1に設定し(ステップST16)、スタートに戻る。
Y軸方向の通知傾斜角度指令M2_yの設定処理も図11及び図12を参照して説明したものと同様である。
図4に示す通知機能部35aは、以上のようにして第1通知機能部35a1で算出された傾斜振動指令M1_xyと、第2通知機能部35a2で算出された通知傾斜角度指令M2_xyとを加算する処理を演算部35a3で実行することにより、目標並進加速度DVw1_cmd_xy(基体2の目標傾斜指令M_cmd_xyに応じた量)に重畳させる通知用傾斜指令M_xyを算出する。
次に、図4に示した重心目標速度0機能部34bについて説明する。重心目標速度0機能部34bは、基体2の後傾によってアーム15が上側のストッパ16に当接した状況となった場合には、この状況が生じる前に乗員の急な上体移動によって通知傾斜角度指令M2_xによる通知が行われていることが想定され、アーム15がストッパ16に当接した状況を早期に脱するためには補償後重心目標速度Vb_cmpn_cmd_xを0に設定して車両1の傾斜角度を直立に近付けることが最も効果的であることから、一時的に補償後重心目標速度Vb_cmpn_cmd_xの値を変更する機能を果たす。つまり、重心目標速度0機能部34bは、ストッパ16によってY軸回りの傾斜角度が規制されるために、X軸方向の補償後重心目標速度Vb_cmpn_cmd_xのみを変更するものである。
他の実施形態として、X軸回りの傾斜角度が、例えば足載せ部9等の基体2の一部によって規制される場合に、重心目標速度0機能部34bがY軸方向の補償後重心目標速度Vb_cmpn_cmd_yをも変更することも可能である。
図13を参照して説明すると、重心目標速度0機能部34bは、一時的に補償後重心目標速度Vb_cmpn_cmd_xの値を変更するための減速目標速度DD_xを設定する減速目標速度設定部55と、並列に設けられた第1ライン56及び第2ライン57と、第1ライン56に設けられたローパスフィルタ58と、補償後重心目標速度Vb_cmpn_cmd_xを第1ライン56に入力させる状態と減速目標速度DD_xを第2ライン57に入力させる状態とを切り替える切替部59とを備える。
重心目標速度0機能部34bは、加速度センサ70及び角速度センサ71の検出信号から得られた基体2のY軸回り方向の実際の傾斜角度θb_act_xの計測値と、演算部34a(図4)で算出された補償後重心目標速度Vb_cmpn_cmd_xと、上記通知終了フラグFfとに基づいて、減速目標速度DD_xを設定する処理を減速目標速度設定部55で実行する。具体的には、減速目標速度設定部55は、基体2の傾斜角度θb_act_xがストッパ角度である−25degになると、減速目標速度DD_xを0に設定し、通知終了フラグFfが1になると、減速目標速度DD_xを補償後重心目標速度Vb_cmpn_cmd_xの値に設定する。
また、重心目標速度0機能部34bは、基体2の傾斜角度θb_act_xが−25degになると、減速目標速度DD_xを第1ライン56に入力させ、後述する所定のタイミングで、補償後重心目標速度Vb_cmpn_cmd_xを第2ライン57に入力させる処理を切替部59で実行する。切替部59が補償後重心目標速度Vb_cmpn_cmd_xを第2ライン57に入力させる通常時には、補償後重心目標速度Vb_cmpn_cmd_xがそのまま重心目標速度0機能部34bから出力される。一方、切替部59が減速目標速度DD_xを第1ライン56に入力させる減速処理時には、減速目標速度DD_xをローパスフィルタ58に通した出力値MM_xが、重心目標速度0機能部34bから補償後重心目標速度Vb_cmpn_cmd_xとして出力される。
ローパスフィルタ58は、時定数Tを変更可能なものとされている。重心目標速度0機能部34bは、基体2の傾斜角度θb_act_xが−25degになると、ローパスフィルタ58の時定数Tを所定の値(本実施形態では、0.3sec)に設定し、この時定数Tに応じた変化速度でローパスフィルタ58の出力値MM_xを入力値である減速目標速度DD_xの値に近づける処理を実行する。その後、通知終了フラグFfが1になると、重心目標速度0機能部34bは、ローパスフィルタ58の時定数Tを所定の値(本実施形態では、0.3sec)に設定し、この時定数Tに応じた変化速度で出力値MM_xを入力値である補償後重心目標速度Vb_cmpn_cmd_xの値に近づける処理を実行する。
更に、重心目標速度0機能部34bは、通知終了フラグFfが1になった時点から所定時間(本実施形態では0.5sec)が経過すると、補償後重心目標速度Vb_cmpn_cmd_xを第1ライン56に入力させる処理を切替部59で実行する。
重心目標速度0機能部34bが行う処理の概要は、図14のフローチャートのように表される。図を参照して説明すると、重心目標速度0機能部34bは、基体2の傾斜角度θb_act_xがストッパ角度である−25degになっているか否かを判定する(ステップST21)。基体2の傾斜角度θb_act_xが−25degよりも大きい(プラス側である)場合には(No)、この判定がYesになるまでステップST21の処理を行う。基体2の傾斜角度θb_act_xが−25degになり、ステップST21の判定がYesになると、重心目標速度0機能部34bは、減速目標速度DD_xを0m/sに設定し、ローパスフィルタ53の時定数Tを0.3secに設定した上で、ローパスフィルタ58の出力値MM_xを補償後重心目標速度Vb_cmpn_cmd_xとして出力する処理(ステップST22)を開始する。これにより、車両1は基体2の傾斜角度を0に戻すように動作する。
その後、ステップST23にて実行する、通知終了フラグFfが1になったことが満たされない状態ではステップST23の判定がNoとなり、重心目標速度0機能部34bはステップST22の処理を継続する。
図12を参照して説明した通知傾斜角度による通知処理の終了により通知終了フラグFfが1になり、ステップST23での判定がYesとなると、重心目標速度0機能部34bは、減速目標速度DD_xを補償後重心目標速度Vb_cmpn_cmd_xの値に設定し、ローパスフィルタ53の時定数Tを0.3secに設定した上で、ローパスフィルタ58の出力値MM_xを補償後重心目標速度Vb_cmpn_cmd_xとして出力する処理(ステップST24)を開始する。これにより、車両1は基体2を直立状態から元の補償後重心目標速度Vb_cmpn_cmd_xによる傾斜角度へ戻す動作を開始する。
その後、ステップST25にて実行する、通知終了フラグFfが1になった時点から0.5sが経過したか否かの判定条件が満たされるまではステップST25の判定がNoとなり、重心目標速度0機能部34bはステップST22の処理を継続する。
通知終了フラグFfが1になった時点から0.5sが経過してステップST25の判定がYesとなると、重心目標速度0機能部34bは、通知終了フラグFfを0に戻し(ステップST26)、演算部34a(図4)で算出された補償後重心目標速度Vb_cmpn_cmd_xをそのまま出力する処理(ステップST27)を開始し、スタートに戻る。
このように、基体2の傾斜角度がストッパ角度の−25degになった場合に(ステップST31:Yes)、重心目標速度0機能部34bが減速目標速度DD_xを0m/sに設定する、即ち基体2の傾斜角度が0となるように補償後重心目標速度Vb_cmpn_cmd_xを設定することにより、基体2の傾斜角度が0度に向かい、車両1は基体2がストッパ角度に傾斜した状態を早期に脱することができる。
また、重心目標速度0機能部34bが、ステップST22において、時定数Tを0.3secに設定してローパスフィルタ58の出力値MM_xを補償後重心目標速度Vb_cmpn_cmd_xとして出力し、第2通知機能部35a2が設定した通知用傾斜指令の処理完了を示す通知終了フラグFfが1となった場合に(ST23:Yes)、時定数Tを0.3secに設定して基体2の傾斜角度を元の角度に戻すように補償後重心目標速度Vb_cmpn_cmd_xをそのまま出力する処理(ST24)を開始することで、基体2の動作が円滑に行われる。
以上が、本実施形態における第1制御処理部24の処理の詳細である。
次に、このように構成された第1制御処理部24の処理による作用効果について説明する。
図15は、図4に示した第1通知機能部35a1の処理による効果説明図であり、(A)は傾斜振動指令M1_xが設定されない比較例について、(B)は本発明に係る傾斜振動指令M1_xが設定される例について、それぞれ横軸に時間をとり、縦軸には下段に角度をとって傾斜振動指令M1_xを、上段上側に速度、上段下側に角度をとって基体2の速度と傾斜角度とを示している。
(A)に示す比較例では、傾斜振動指令M1_xが設定されておらず、即ち0degとされており、基体2の前進速度の増大に応じて基体2の後方への傾斜角度が増大している(絶対値が大きくなっている)だけである。
一方、(B)に示す本発明では、基体2の前進速度が増大して所定の値aに設定された6km/hになった2secの時点で、周波数4Hzの振動波として傾斜振動指令M1_xが設定され、前進速度の増大に応じて振幅が大きくなり、前進速度の減少に応じて振幅が小さくなっている。なお、基体2の前進速度が6km/h以下になった後にも傾斜振動指令M1_xが設定されているのは、基体2の傾斜角度が所定の値aに設定された−9.7degよりも小さい(絶対値が大きい)ためであり、基体2の傾斜角度が−9.7deg以上になる7.5secの時点で傾斜振動指令M1_xは設定されなくなる。
このような傾斜振動指令M1_xが設定されると、上段に示す基体2の傾斜角度は傾斜振動指令M1_xの振動に応じて振動的に変化する。即ち、基体2に振動的な傾斜角変化が現れる。そして、傾斜振動指令M1_xが車両系全体重心の速度の推定値Vb_estm1_xや基体2の傾斜角度θb_act_xのそれぞれの自立制御適応範囲Rからの乖離量に応じ、乖離量に比例して大きくなるように設定されることから、基体2の振動的な傾斜変化角度もこれらの乖離量に応じて大きくなっている。そのため、車両1が自立制御を継続しづらくなる前に、比較的小さな角度変化で乗員に確実に通知を認識させることができる。
また、車両1の挙動変化による通知として、傾斜振動指令M1_xがこれらの車両状態量のそれぞれの自立制御適応範囲Rからの乖離量に比例した振幅を有する振動的な基体2の傾斜角変化によって通知が行われることにより、乗員が通知を認識せずに加速動作を続けた場合であっても、基体2の傾斜振動の振幅が大きくなることで、通知が確実に乗員に認識される。更に、傾斜振動指令M1_xが正弦波として設定されることで、基体2を円滑に振動させることができるうえ、4Hzという一般的に人が不快に感じやすいとされる周波数に設定されていることにより、乗員が振動を感じやすくなっている。
また、本実施形態では、目標傾斜指令M_cmd_xyに重畳される傾斜振動指令M1_xを設定するための車両1の状態情報として、車両系全体重心の速度の推定値Vb_estm1_xy、基体2の傾斜角度θb_act_xy、及び電動モータ8aの回転速度Nm_xが含まれ、これら3つの値のうちの少なくとも1つがそれぞれに定められた自立制御適応範囲Rを外れた場合に(図16の例では、基体2の前進速度が6km/hになった時点、図10のフロー図では、ステップST1の判定がYesとなった時点で)、姿勢制御演算部34が傾斜振動指令M1_xの目標傾斜指令M_cmd_xyへの重畳を開始する(図10のフロー図では、ステップST2)。そのため、車両1の自立制御が困難になる様々な要因によって制御が継続しづらくなる前に、乗員が通知を認識することができる。
更に、これら3つの値の全てがそれぞれに定められた自立制御適応範囲R内に戻った場合に(図15の例では、基体2の傾斜角度が−9.7deg以上になった時点、図10のフロー図では、ステップST1の判定がNoとなった時点で)、姿勢制御演算部34が傾斜振動指令M1_xの目標傾斜指令M_cmd_xyへの重畳を終了する。そのため、自立制御が困難になることが確実に防止される。
図16は、図4に示した第1通知機能部35a1及び第2通知機能部35a2の処理による効果説明図であり、図15と同様に、(A)は傾斜振動指令M1_x及び通知傾斜角度指令M2_xが設定されない比較例について、(B)は本発明に係る傾斜振動指令M1_x及び通知傾斜角度指令M2_xが共に設定される例について、それぞれ横軸に時間をとり、縦軸には下段に角度をとって傾斜振動指令M1_x及び通知傾斜角度指令M2_xを、上段上側に速度、上段下側に角度をとって基体2の速度と傾斜角度とを示している。
(A)に示す比較例では、図15(A)と同様に、傾斜振動指令M1_x及び通知傾斜角度指令M2_xが共に設定されておらず、即ち0degとされており、基体2の前進速度の増大に応じて基体2の後方への傾斜角度が増大している(絶対値が大きくなっている)だけである。
一方、(B)に示す本発明では、基体2の前進速度が増大して所定の値aに設定された6km/hになった6sec付近の時点で、周波数4Hzの振動波として傾斜振動指令M1_xが設定され、前進速度の増大に応じて振幅が大きくなり、その後、基体2の傾斜角加速度α_xが判定用の所定の値aである−40deg/s2を超えた7sec付近の時点で、−6degの通知傾斜角度指令M2_xが設定されている。通知傾斜角度指令M2_xは、通知用角度(この例では−4deg)になった後に0に向けて小さくなっている。
この例では、通知傾斜角度指令M2_xが通知用角度になった後にも、基体2の傾斜角度はストッパ角度である−25degに達しておらず、重心目標速度0機能部34bの機能は働いていないが、搭乗者は通知を認識してその後、基体2の速度を低下させており、基体2の傾斜角度が−9.7deg以上になる11secの時点で傾斜振動指令M1_xは設定されなくなる。
このように通知傾斜角度指令M2_xが設定されると、上段に示す基体2の傾斜角度は乗員の入力に反対向きのモーメントを与えるために基体2を後傾させる。そのため、車両1が自立制御を継続しづらくなる前に、乗員に確実に通知を認識させることができる。
また、本実施形態では、目標傾斜指令M_cmd_xyに重畳される通知傾斜角度指令M2_xを設定するための車両1の状態情報として、基体2の傾斜角加速度α_xが含まれ、基体2の傾斜角加速度α_xが自立制御適応範囲Rを外れた場合に(図16の例では、α_xが−40deg/s2を超えた7sec付近の時点、図12のフロー図では、ステップST11の判定がYesとなった時点で)、姿勢制御演算部34が時定数を0.1secに設定して基体2を通知傾斜角度の−6deg(図16では−4deg)とする通知傾斜角度指令M2_xを設定し(図12のフロー図では、ステップST12)、通知傾斜角度指令M2_xが通知傾斜角度の−6degになった場合に(図12のステップST13の判定がYesとなった時点で)、時定数を0.05secに設定して基体2を元の角度に戻す通知傾斜角度指令M2_xを設定する(図12のステップST14)。そのため、乗員が驚いてバランスを失わない適度の変化速度で、短時間で単発的に基体2を大きく傾斜させ、安全かつ確実に通知を乗員に認識させることができる。
次に、図3に示した第2制御処理部25の処理について図17を参照して説明する。第2制御処理部25は、その処理を概略的に言えば、車両系全体重心等の車両1の代表点もしくは第1の移動動作部3のY軸方向(乗員の左右方向)における実際の運動状態もしくは目標の運動状態、又は運動状態に関する乗員の動作状態に基づいて、車両1を旋回させることの要求(以降、旋回要求という)の有無、あるいは旋回要求の度合いを判断する。
本実施形態では、旋回要求の有無、あるいは旋回要求の度合いを判断する指標として、重心速度推定部31で算出される車両系全体重心のY軸方向の移動速度の推定値Vb_estm1_yが用いられる。なお、Vb_estm1_yは、基準部Ps_yのY軸方向の移動速度に一致するので、基体2に対して固定された代表点のY軸方向の移動速度の観測値としての意味を持つものである。
そして、第2制御処理部25は、旋回要求が有ると判断される場合には、車両1の旋回を行なわせるために、第2の移動動作部4のY軸方向の第2目標速度Vw2_cmd_yを、第1の移動動作部3のY軸方向の第1目標速度Vw1_cmd_yと異ならせるように決定する。
このような第2制御処理部25の処理は、具体的には次のように行なわれる。すなわち、図17を参照して、第2制御処理部25は、まず、処理部81の処理を実行する。処理部81には、重心速度推定部31で算出される車両系全体重心のY軸方向の移動速度の推定値Vb_estm1_y(最新値)が入力される。そして、処理部81は、Vb_estm1_yに応じて、不感帯処理後速度Vw1a_yを決定する。
ここで、車両1の乗員が、車両1を右側又は左側に旋回させようとする場合には、通常、乗員は、乗員は自身の上体を、右側又は左側に傾けることで、自身の重心を車両1の右側又は左側にずらすようにする。このとき、第1制御処理部24の制御処理によって決定される第1の移動動作部3の左右方向の第1目標速度Vw1_cmd_yは、基本的には、右向き又は左向きの移動速度となる。
ただし、乗員が車両1を旋回させることを意図していない場合であっても、乗員の上体のふらつきによって、乗員自身の重心が右側又は左側に多少ずれる場合もある。そこで、処理部81は、図17中に示すグラフの特性で、不感帯処理後速度Vw1a_yをVb_estm1_yに応じて決定する。具体的には、Vb_estm1_yの絶対値が比較的小さく、Vb_estm1_yが、ゼロを中心とする所定範囲Δa内の値である場合(Vb_estm1_yの絶対値があらかじめ定めた所定値以下である場合)には、処理部81は、旋回要求が無いものとみなして、Vw1a_yをゼロとする。
また、Vb_estm1_yの絶対値が比較的大きいものとなっており、Vb_estm1_yが、所定範囲Δa外の値である場合(Vb_estm1_yの絶対値があらかじめ定めた所定値よりも大きい場合)には、処理部81は、旋回要求が有るものとみなして、Vw1a_yをゼロでない値に設定する。
具体的には、処理部81は、Vw1a_yの絶対値が、既定の上限値以下で、Vb_estm1_yの絶対値の増加に伴い増加していくように、Vw1a_yをVb_estm1_yに応じて決定する。この場合、Vw1a_yの極性(向き)は、Vb_estm1_yと同じとされる。後述するように、旋回中心を望ましい位置に設定するためには、Vb_estm1_yの増加に対するVw1a_yの増加率は1が好ましい。すなわち、図17のグラフにおける不感帯と飽和領域とを除く領域では傾きは1が好ましい。
次いで、第2制御処理部25は、処理部82の処理を実行する。この処理部82は、Vw1a_yを、第1の移動動作部3の接地部と旋回中心とのX軸方向の距離L3で除算することによって、車両1の旋回角速度(ヨー軸周り方向の角速度)の目標値である目標旋回角速度ωz_cmd_gcを決定する。この場合、処理部82は、上記距離L3を、車両1の代表点としての車両系全体重心のX軸方向の実際の移動速度の推定値Vb_estm1_x(最新値)に応じて設定する。
なお、上記旋回中心は、より詳しくは、第1の移動動作部3と一体に床面上を並進移動する座標系で見た車両1の全体のヨー軸周り方向の回転中心を意味する。
本実施形態では、車両1の旋回は、第1の移動動作部3の接地部の後方側(ひいては、乗員搭乗部5に搭乗した乗員の後方側)の床面上の点を旋回中心として、車両1がヨー軸まわり方向に旋回するように行なわれる。そして、その旋回中心と第1の移動動作部3の接地部との間のX軸方向の距離L3は、Vb_estm1_xがゼロである場合には、旋回中心が第2の移動動作部4の接地部近辺の位置になるように設定される。例えば、L3は、第1の移動動作部3の接地部と第2の移動動作部4の接地部との間の距離に一致もしくはほぼ一致するように設定される。
また、Vb_estm1_xが正の場合、すなわち前への移動である場合、Vb_estm1_xの大きさ(絶対値)が大きくなるに伴い、旋回中心が第2の移動動作部4の接地部側から、第1の移動動作部3の接地部側に近づいてくるように(ひいては、旋回中心のX軸方向の位置が、乗員搭乗部5に搭乗した乗員の直下の位置(乗員を床面に投影した位置)に近づいてくるように)L3が設定される。すなわち、Vb_estm1_xの大きさ(絶対値)が大きくなるに伴い、L3が小さくなっていくように設定される。ただし、L3は、既定の下限値(>0)以上の距離に制限される。
なお、Vb_estm1_xが負の場合、すなわち後ろへの移動である場合には、L3はVb_estm1_xがゼロの場合の値と同一にするか、Vb_estm1_xの大きさ(絶対値)が大きくなるに伴い、L3が大きくなるように設定されることが好ましい。
処理部82は、このようにVb_estm1_xに応じて決定した距離L3によって、Vw1a_yを除算することにより、目標旋回角速度ωz_cmd_gcを決定する。なお、ωz_cmd_gcは、Vw1a_yが左向きの速度である場合には、左周り(反時計周り)の角速度であり、Vw1a_yが右向きの速度である場合には、右周り(時計周り)の角速度である。
次いで、第2制御処理部25は、処理部83の処理を実行する。処理部83は、処理部82で決定された目標旋回角速度ωz_cmd_gcに、第1の移動動作部3の接地部と第2の移動動作部4の接地部との間の既定の距離Lの(−1)倍の値(=−L)を乗じることによって、目標旋回角速度ωz_cmd_gcで車両1の旋回行なった場合における第2の移動動作部4の、第1の移動動作部3に対するY軸方向の相対移動速度ΔVw2_cmd_yを算出する。
このように決定される第2の移動動作部4のY軸方向の相対移動速度ΔVw2_cmd_yは、ωz_cmd_gc=0である場合(旋回要求が無い場合)にはゼロとなる。また、ΔVw2_cmd_yは、ωz_cmd_gcが左周りの旋回角速度である場合には、右向きの速度、ωz_cmd_gcが右周りの旋回角速度である場合には、左向きの速度である。従って、旋回要求がある場合のΔVw2_cmd_yは、Vw1a_y又はVb_estm1_yと逆向きの速度である。
次いで、第2制御処理部25は、処理部84の処理を実行する。この処理部84は、第2の移動動作部4のY軸方向の相対移動速度ΔVw2_cmd_yを、第1制御処理部24で決定された第1の移動動作部3のY軸方向の第1目標速度Vw1_cmd_y(最新値)に加えることにより、第2の移動動作部4のY軸方向の第2目標速度Vw2_cmd_yの基本値Vw2_cmda_y(最新値)を決定する。
そして、第2制御処理部25は、上記の如く決定した第2目標速度Vw2_cmd_xyに従って第2の移動動作部4の駆動装置としての電動モータ17を制御する。より詳しくは、第2制御処理部25は、第2目標速度Vw2_cmd_xyにより規定される電動モータ17の回転速度Nm_cの目標値に、実際の回転速度Nm_c(計測値)を追従させるように、フィードバック制御処理により電動モータ17の電流指令値を決定し、この電流指令値に従って、電動モータ17の通電を行う。
第2制御処理部25の制御処理は、以上の如く実行される。これにより、第2の移動動作部4のY軸方向の第2目標速度Vw2_cmd_yは、基本的には、相対移動速度ΔVw2_cmd_yを、第1の移動動作部3のY軸方向の第1目標速度Vw1_cmd_y(最新値)に加えた速度に決定される。
車両系全体重心のY軸方向の移動速度の推定値Vb_estm1_yの絶対値が十分に小さく、旋回要求が無いと判断される状況では、ΔVw2_cmd_y=0となるので、第2の移動動作部4のY軸方向の第2目標速度Vw2_cmd_yは、基本的には、第1の移動動作部3のY軸方向の第1目標速度Vw1_cmd_yと一致するように決定される。
一方、車両系全体重心のY軸方向の移動速度の推定値Vb_estm1_yの絶対値が比較的大きく、旋回要求が有ると判断される状況では、ΔVw2_cmd_yは、Vb_estm1_yと逆向きの速度に決定される。このため、第2の移動動作部4のY軸方向の第2目標速度Vw2_cmd_yは、基本的には、第1の移動動作部3のY軸方向の第1目標速度Vw1_cmd_yと同じ向きで、Vw1_cmd_yよりも小さい大きさの速度(ゼロもしくはゼロに近い速度)に決定されるか、又は第1の移動動作部3のY軸方向の第1目標速度Vw1_cmd_yと逆向きの速度に決定される。
以上説明した本実施形態の車両1では、乗員搭乗部5に搭乗した乗員の身体の動きに伴う基体2の前後方向(X軸方向)の傾動に応じて出力される前進・後進指令に応じてX軸方向での車両1の並進移動を行うことができる。
以上で具体的実施形態の説明を終えるが、本発明は上記実施形態に限定されることなく幅広く変形実施することができる。例えば、車両1に対する操作指令を乗員の重心移動だけで行うのではなく、車両1がジョイスティック等の操作部材を備えていてもよい。また、車両1は旋回走行を円滑に行うために第2の移動動作部4を備えているが、第2の移動動作部4を備えていない構成であってもよい。また、上記実施形態では、X軸方向及びY方向の両方向について通知用傾斜指令M_xyを設定し、更に両方向について傾斜振動指令M1_xy及び通知傾斜角度指令M2_xyを設定し、それぞれ目標傾斜指令M_cmd_xyに重畳させているが、どちらか一方のみとする形態や、X軸方向の車両1の状態情報が所定の自立制御適応範囲Rを外れた場合に、Y軸方向の通知用傾斜指令M_yを設定してY軸方向の目標傾斜指令M_cmd_xyに重畳させる形態、その逆にY軸方向の車両1の状態情報が所定の自立制御適応範囲Rを外れた場合に、X軸方向の通知用傾斜指令M_xを設定してX軸方向の目標傾斜指令M_cmd_xyに重畳させる形態なども可能である。更に、X軸方向やY軸方向の車両1の状態情報が所定の自立制御適応範囲Rを外れた場合に、ヨー軸まわり方向の通知用傾斜指令M_yとして設定し、目標旋回角速度ωz_cmd_gcに重畳させる形態としてもよい。但し、この場合、通知用傾斜指令Mのうちヨー軸まわり方向の傾斜振動指令M1は設定しても構わないが、ヨー軸まわり方向の通知傾斜角度指令は転倒を招く虞があるため好ましくない。この他、各部材や部位の具体的構成や配置、数量、角度等の数値、具体的制御態様などは、本発明の趣旨を逸脱しない範囲であれば適宜変更可能である。一方、上記実施形態に示した車両1の制御装置20の各構成や要素は全てが必須ではなく、適宜選択することができる。