以下、本発明の実施形態について、図面を参照して詳細に説明する。
[第1実施形態]
図1は、第1実施形態に係る制御装置を備えるリーチ式フォークリフトの側面図である。なお、以降の説明においては「左」「右」を用いて説明するが、これらは後方から前方を見た時を基準としたときの「左」「右」に対応するものとする。図1に示すように、産業車両としてのリーチ式フォークリフト(以下、単にフォークリフトと称す)50は、前二輪従動・後一輪駆動の3輪車タイプであり、車両(機台)2の前部に収容されたバッテリを電源として走行するバッテリ車である。フォークリフト50は、車両2、及び荷役装置3を備える。
車両2は、前方へ延出する左右一対のリーチレグ4を備える。左右の前輪5は、左右のリーチレグ4にそれぞれ回転可能に支持されている。後輪6は、後一輪であって、操舵輪を兼ねた駆動輪である。車両2の後部は、立席タイプの運転席12となっている。運転席12の前側にあるインストルメントパネル9には、荷役操作のための荷役レバー10、及び前後進操作のためのアクセルレバー11が設けられている。また、インストルメントパネル9の上面にはステアリング13が設けられている。
荷役装置3は、車両2の前側に設けられる。荷役レバー10のうちのリーチレバー操作時には、リーチシリンダ22(図2参照)が伸縮駆動することによって、荷役装置3がリーチレグ4に沿って所定ストローク範囲内で前後方向に移動する。また、荷役装置3は、2段式のマスト23、リフトシリンダ24、ティルトシリンダ28(図2参照)及びフォーク25を備える。荷役レバー10のうちのリフトレバー操作時には、リフトシリンダ24が伸縮駆動することによりマスト23が上下方向にスライド伸縮し、これに連動してフォーク25が昇降する。
次に、図2を参照して、本実施形態に係るフォークリフト50の制御装置100について更に詳細に説明する。図2は、本実施形態に係る制御装置100及びそれに関わる構成要素を示すブロック構成図である。図2に示すように、制御装置100は、ステアリング13と、アクセルレバー11と、荷役レバー10と、に接続されており、これらの運転指令を受信する。なお、荷役レバー10は、リフトレバー10aと、リーチレバー10bと、ティルトレバー10cと、を備える。リフトレバー10aは、フォーク25を上下方向に移動させるリフト動作を操作するためのレバーである。リーチレバー10bは、荷役装置3を前後方向に移動させるリーチ動作を操作するためのレバーである。ティルトレバー10cは、荷役装置3を傾斜させるティルト動作を操作するためのレバーである。
制御装置100は、荷役駆動系40と、走行駆動系45と接続されており、これらに制御信号を送信する。荷役駆動系40は、荷役装置3を作動させるための駆動力を発生する駆動系である。走行駆動系45は、車両2を走行させるための駆動力を発生する駆動系である。
荷役駆動系40は、リーチシリンダ22、リフトシリンダ24、及びティルトシリンダ28へ作動油を供給することで、各シリンダ22,24,28を駆動させる。荷役駆動系40は、荷役モータ41と、バルブ部42と、を備える。荷役モータ41は、各シリンダ22,24,28へ作動油を圧送するポンプ(不図示)を駆動させるためのモータである。バルブ部42は、各シリンダ22,24,28へ供給する作動油の供給先、及び供給量をコントロールするためのバルブ群である。例えば、運転者がリフトレバー10aを操作した場合、荷役モータ41は、操作量に応じた回転数で回転し、バルブ部42は、リフトシリンダ24に対応するバルブを操作量に応じた開度で開く。このとき、バルブ部42は、リーチシリンダ22及びティルトシリンダ28に対応するバルブは閉じておく。
走行駆動系45は、走行モータ46を備える。走行モータ46は、後輪6(図1参照)へ回転力を伝達する。運転者がアクセルレバー11を操作した場合、走行モータ46は、アクセルレバー11の操作方向に基づいた回転方向にて、アクセルレバー11のアクセル開度に応じた回転数で回転する。なお、走行駆動系45は、ステアリング13の操作に基づいて、後輪6を操舵する操舵機構も備えている。
制御装置100は、フォークリフト50の運転制御を行うための装置である。制御装置100は、各操作部10,11,13の操作に基づいて、荷役駆動系40及び走行駆動系45を制御する。また、本実施形態に係る制御装置100は、フォークリフト50の運転状態を判定することができる。すなわち、制御装置100は、フォークリフト50の運転中において、当該フォークリフト50がどのような運転状態にあるかをリアルタイムに判定することができる。運転状態とは、フォークリフト50の運転者が行う荷役作業を、フォークリフト50への操作に基づいて分類して定義した作業の状態である。制御装置100は、フォークリフト50の運転状態が分類された状態遷移モデルに基づいて、運転状態を判定する。ここでは、制御装置100の具体的な構成を説明する前に、図3〜図6を参照して、状態遷移モデルについて説明する。
図3は、状態遷移モデルを示す概念図である。図3に示すように、状態遷移モデルは、荷降ろし完了状態S1と、荷無移動状態S2と、荷積み準備状態S3と、荷積み完了状態S4と、荷運搬状態S5と、荷降ろし準備状態S6と、を運転状態として分類している。状態遷移モデルは、状態S1〜S6の順で運転状態が遷移し、荷降ろし準備状態S6から荷降ろし完了状態S1へ遷移するというモデルを有する。図4(a)は、荷降ろし完了状態S1の様子を示し、図4(b)は、荷無移動状態S2の様子を示す。図5(a)は、荷積み準備状態S3の様子を示し、図5(b)は、荷積み完了状態S4の様子を示す。図6(a)は、荷運搬状態S5の様子を示し、図6(b)は、荷降ろし準備状態S6の様子を示す。ただし、図4〜図6は、各運転状態におけるフォークリフト50の動作の一例を示したものである。すなわち、各運転状態でのフォークリフト50の動作は、以下の説明のような動作に限定される訳ではなく、運転者の癖や熟練度などによって適宜変更される。すなわち、各運転状態でのフォークリフト50の動作態様は、判定条件をどのように設定するかによって定められるものである。
荷降ろし完了状態S1は、荷役装置3からの荷降ろしが完了した運転状態である。図4(a)に示すように、フォーク25で支持していた荷Wを荷降ろし位置へ載置することで、運転状態は、荷降ろし準備状態S6から、荷降ろし完了状態S1となる。なお、荷役装置3がフォーク25から荷Wを降ろした後、荷役装置3がフォーク25を荷Wから外すために位置調整を行い、車両2が荷Wからフォーク25を外すために後退する場合がある。このような状態も荷降ろし完了状態S1に含まれてもよい。
荷無移動状態S2は、荷役装置3に荷Wを積載していない状態で、車両2を荷Wの位置近くまで移動させる運転状態である。図4(b)に示すように、荷降ろし完了状態S1にてフォーク25に何も荷Wが積載されていない状態となった後、次の荷Wの位置へ向かって車両2が走行を開始することで、運転状態は荷降ろし完了状態S1から荷無移動状態S2となる。
荷積み準備状態S3は、荷無移動状態S2から荷積み完了状態S4へ遷移する間の状態であって、荷役装置3を操作して荷役装置3に荷Wを積載する準備をしている状態である。図5(a)に示すように、車両2は、荷無移動状態S2にて走行している走行状態から、次の荷Wの位置の近くまで近接すると、速度を低下させて、荷積みを行う位置にて停止状態となる。また、その際、荷役装置3は、フォーク25で荷積みを行うことができるように、当該フォーク25の位置調整を行う。このように、車両2及び荷役装置3に対して、荷積みを行うための操作が運転者によってなされることによって、運転状態は荷無移動状態S2から荷積み準備状態S3となる。
荷積み完了状態S4は、荷役装置3からの荷積みが完了した状態である。図5(b)に示すように、フォーク25に荷Wの荷重が作用していない状態から、フォーク25が荷Wを持ち上げた状態となることで、運転状態は荷積み準備状態S3から荷積み完了状態S4となる。なお、荷役装置3がフォーク25で荷Wを持ち上げた後、荷Wを載置面から離間させるためにフォーク25の位置調整を行っている場合、当該状態も荷積み完了状態S4に含まれてもよい。
荷運搬状態S5は、車両2を荷Wの運搬先まで移動させる運転状態である。図6(a)に示すように、荷積み完了状態S4にてフォーク25に荷Wが積載された状態となった後、荷Wの運搬先へ向かって車両2が走行を開始することで、運転状態は荷積み完了状態S4から荷運搬状態S5となる。
荷降ろし準備状態S6は、荷運搬状態S5から荷降ろし完了状態S1へ遷移する間の状態であって、荷役装置3を操作して荷役装置3から荷Wを運搬先へ荷降ろしする準備をしている状態である。図6(b)に示すように、車両2は、荷運搬状態S5にて走行している走行状態から、荷Wの運搬先の近くまで近接すると、速度を低下させて、荷降ろしを行う位置にて停止状態となる。また、その際、荷役装置3は、フォーク25から荷Wの荷降ろしを行うことができるように、当該フォーク25の位置調整を行う。このように、車両2及び荷役装置3に対して、荷降ろしを行うための操作が運転者によってなされることによって、運転状態は荷運搬状態S5から荷降ろし準備状態S6となる。
次に、図2を再び参照し、制御装置100の具体的な構成について説明する。制御装置100は、装置を統括的に管理するECU[ElectronicControl Unit]を備えている。ECUは、CPU[Central Processing Unit]、ROM[Read Only Memory]、RAM[Random Access Memory]、CAN[Controller Area Network]通信回路等を有する電子制御ユニットである。ECUでは、例えば、ROMに記憶されているプログラムをRAMにロードし、RAMにロードされたプログラムをCPUで実行することにより各種の機能を実現する。ECUは、複数の電子ユニットから構成されていてもよい。
図2に示すように、制御装置100は、運転状態判定部31と、演算部32と、設定部33と、学習部34と、記憶部35と、を備える。また、制御装置100には制御プログラムが組み込まれている。この制御プログラムは、制御装置100を運転状態判定部31と、演算部32と、設定部33と、学習部34と、記憶部35として機能させる。
運転状態判定部31は、上述の状態遷移モデルに基づき、フォークリフト50の運転状態を判定する。すなわち、運転状態判定部31は、運転中のフォークリフト50の運転状態が、荷降ろし完了状態S1、荷無移動状態S2、荷積み準備状態S3、荷積み完了状態S4、荷運搬状態S5、及び荷降ろし準備状態S6の何れの状態であるかを判定する。運転状態判定部31は、運転状態の判定を行うための判定パラメータを取得する。運転状態判定部31は、取得した判定パラメータの変化に基づいて、フォークリフト50の運転状態を判定する。また、運転状態判定部31は、判定パラメータに対して予め設定された判定条件に基づいて、フォークリフト50の運転状態を判定する。判定条件は、運転状態が他の運転状態へ遷移したことを判定するために設定された条件である。すなわち、運転状態判定部31は、取得した判定パラメータが変化することによって判定条件を満たした場合、フォークリフト50の運転状態が、ある運転状態から他の運転状態へ遷移したと判定する。
なお、運転状態判定部31が一度運転状態を判定しても、当該判定が誤りである場合もある。このような誤りに基づく判定を正すために、運転状態判定部31は、フィードバックのための判定条件に基づいて判定を行ってもよい。例えば、運転状態判定部31が荷無移動状態S2から荷積み準備状態S3へ遷移したことを判定した後に、フィードバック用の判定条件が満たされる。この場合、運転状態判定部31は、現在の運転状態は、荷積み準備状態S3ではなく、荷無移動状態S2であると判定する。
本実施形態において、運転状態判定部31は、判定パラメータとして、少なくとも走行駆動系指令、荷役駆動系指令、及びリフトシリンダ(油圧シリンダ)24の油圧圧力を取得する。運転状態判定部31は、走行駆動系指令の変化、荷役駆動系指令の変化、及び油圧圧力の変化に基づいて、運転状態を判定する。
走行駆動系指令は、車両2の走行駆動系45への運転指令によって生成される信号である。車両2の走行駆動系45への運転指令は、アクセルレバー11の操作がなされたときに、当該アクセルレバー11から制御装置100へ送信される。走行駆動系指令は、アクセルレバー11からの運転指令に基づいて、演算部32によって生成される。運転状態判定部31は、演算部32で生成された走行駆動系指令を取得する。運転状態判定部31は、走行駆動系指令として、例えば、走行モータ46の回転数を示す走行モータ回転数指令を用いる。走行モータ回転数指令は、アクセルレバー11の操作量に対応する。走行モータ回転数指令の値は、アクセルレバー11の操作量が大きいほど大きくなり、アクセルレバー11の操作量が小さいほど小さくなる。また、走行モータ回転数指令は、アクセルレバー11が前進側へ操作されたら前進側の値となり、アクセルレバー11が後進側へ操作されたら後進側の値となる。
荷役駆動系指令は、荷役装置3の荷役駆動系40への運転指令によって生成される信号である。荷役装置3の荷役駆動系40への運転指令は、荷役レバー10の操作がなされたときに、当該荷役レバー10から制御装置100へ送信される。荷役駆動系指令は、荷役レバー10からの運転指令に基づいて、演算部32によって生成される。運転状態判定部31は、演算部32で生成された荷役駆動系指令を取得する。運転状態判定部31は、荷役駆動系指令として、例えば、荷役モータ41の回転数を示す荷役モータ回転数指令を用いる。荷役モータ回転数指令は、荷役レバー10の操作量に対応する。通常、荷役モータ回転数指令の値は、荷役レバー10の操作量が大きいほど大きくなり、荷役レバー10の操作量が小さいほど小さくなる。荷役モータ回転数指令の値は、荷役レバー10を構成するリフトレバー10aやリーチレバー10b、ティルトレバー10cの運転指令に応じて変更される。
リフトシリンダ24の油圧圧力は、リフトシリンダ24の作動油の油圧圧力である。当該油圧圧力は、バルブ部42のうち、リフトシリンダ24の作動油の流量を制御するバルブ付近に設けられた圧力センサ(図示せず)によって取得される。当該圧力センサによって取得された油圧圧力は、制御装置100へ送信される。リフトシリンダ24の油圧圧力は、リフトシリンダ24がフォーク25を上下動させている時は、上下動させていない場合と比べて高くなる。また、リフトシリンダ24の油圧圧力は、フォーク25を上下動させていない時であっても、当該フォークリフト50が荷Wを支持しているときは、荷Wを支持していないときと比べて高くなる。
次に、図7を参照しながら、運転状態判定部31が判定パラメータを用いて、各運転状態をどのように判定するかの概要について説明する。図7(a)は、走行モータ回転数指令及び荷役モータ回転数指令の時間経過に伴う変化の態様を概略的に示すグラフである。図7(a)の上段のグラフは、走行モータ回転数指令の時間経過に伴う変化を示すグラフである。図7(a)の下段のグラフは、荷役モータ回転数指令の時間経過に伴う変化を示すグラフである。図7(b)は、荷役モータ回転数指令及び油圧圧力の時間経過に伴う変化を概略的に示すグラフである。図7(b)の上段は、荷役モータ回転数指令の時間経過に伴う変化を示すグラフである。図7(b)の下段は、リフトシリンダ24の油圧圧力の時間経過に伴う変化を示すグラフである。ただし、図7に示すグラフは、説明を行うために示された一例に過ぎず、各パラメータの時間経過に伴う変化態様は、図7に限定されるものではない。なお、判定条件の具体的な内容については、図8を参照しながら後述する。
荷無移動状態S2においては、フォークリフト50が荷Wのある場所まで移動するため、図7(a)のP1に示すように、走行モータ回転数指令が急速に立ち上がる。その一方、荷無移動状態S2においては、荷Wの積み降ろしが行われないため、荷役レバー10の操作はなされず、荷役モータ回転数指令は0である。従って、運転状態判定部31は、荷役レバー10の操作がなされない状態で車両2の車速が大きくなることに基づいて、運転状態が荷無移動状態S2であると判定することができる。
荷Wの場所にフォークリフト50が近付くと、車両2の状態は、高い車速で移動している進行状態から、車速が低下してゆき停止状態へ変化する。従って、図7(a)のP2に示すように、走行モータ回転数指令は、低下してゆき、停止状態となる。従って、運転状態判定部31は、車両2の進行状態から停止状態への変化に基づいて、運転状態が荷積み準備状態S3であると判定することができる。一方、荷Wの場所にフォークリフト50が近づくと、荷役装置3で荷積みを行うために、荷役レバー10の操作がなされる。従って、図7(a)のP3で示すように、荷役モータ回転数指令が立ち上がる。従って、運転状態判定部31は、運転状態が荷積み準備状態S3であると判定する際、荷役モータ回転数指令の立ち上がりを考慮してもよい。
荷役装置3に荷Wを積む前後においては、荷役レバー10の操作が繰り返し行われるため、図7(a)のP4に示すように、荷役モータ回転数指令が繰り返し立ち上がる。なお、図7(a)の下段のグラフでは、一回荷役モータ回転数指令が立ち上がった後は荷役モータ回転数指令が高い状態で一定となっているように示されているが、実際は、荷役モータ回転数指令の増加と減少が繰り返し行われている。一方、荷積みを行う際、車両2は、位置の微調整などを除いては、停止した状態にある。従って、図7(a)に示すように、P4に対応する時間帯では、走行モータ回転数指令は0の位置で略一定となる。ここで、荷役装置3への荷Wの荷積みがなされた場合、荷役装置3が動いていない状態においても、リフトシリンダ24の油圧圧力が高い状態となる。従って、図7(b)の時間t1の位置のように、荷役モータ回転数指令が0となっている状態で、油圧圧力が高くなっているときは、荷役装置3が荷Wを積んだ状態であるとみなすことができる。以上より、運転状態判定部31は、車両2が停止状態にあるときに、荷役装置3が荷Wを積んだ状態となったことに基づいて、運転状態が荷積み完了状態S4であると判定することができる。
荷運搬状態S5においては、フォークリフト50が荷Wを降ろす場所まで移動するため、図7(a)のP5に示すように、走行モータ回転数指令が急速に立ち上がる。その一方、荷運搬状態S5においては、荷Wの積み降ろしが行われないため、荷役レバー10の操作はなされず、荷役モータ回転数指令は0である。従って、運転状態判定部31は、荷Wが荷役装置3に積まれた状態にあるときに、荷役レバー10の操作がなされない状態で車両2の車速が大きくなることに基づいて、運転状態が荷運搬状態S5であると判定することができる。
荷Wを降ろす場所にフォークリフト50が近付くと、車両2は大きな車速で移動している進行状態から車速が低下してゆき、停止状態へ変化する。従って、図7(a)のP6に示すように、走行モータ回転数指令は、低下してゆき、停止状態となる。従って、運転状態判定部31は、車両2の進行状態から停止状態への変化に基づいて、運転状態が荷降ろし準備状態S6であると判定することができる。一方、荷Wを降ろす場所にフォークリフト50が近づくと、荷役装置3で荷降ろしを行うために、荷役レバー10の操作がなされるため、図7(a)のP7で示すように、荷役モータ回転数指令が立ち上がる。従って、運転状態判定部31は、運転状態が荷降ろし準備状態S6であると判定する際、荷役モータ回転数指令の立ち上がりを考慮してもよい。
荷役装置3から荷Wを降ろす前後においては、荷役レバー10の操作が繰り返し行われるため、図7(a)のP8に示すように、荷役モータ回転数指令が繰り返し立ち上がる。一方、荷降ろしを行う際は、フォークリフト50は、位置の微調整などを除いては、停止した状態にある。従って、図7(a)に示すように、P8に対応する時間帯では、走行モータ回転数指令は0の位置で略一定となる。ここで、荷役装置3への荷Wの荷降ろしがなされた場合、荷役装置3が動いていない状態でのリフトシリンダ24の油圧圧力は、リフトシリンダ24が動いている際の油圧圧力よりも低い状態となる。従って、図7(b)の時間t1での状態とは異なり、荷役モータ回転数指令が0となっている状態では、油圧圧力は低くなる。以上より、運転状態判定部31は、車両2が停止状態にあるときに、荷役装置3が荷Wを積んでいない状態となったことに基づいて、運転状態が荷降ろし完了状態S1であると判定することができる。
以上の点を踏まえて、図8を参照しながら、運転状態が遷移したことを判定するための判定条件の具体例について詳細に説明する。図8の左端欄は遷移元の運転状態を示し、図8の上段は遷移先の運転状態を示す。例えば、遷移元が「S1」で遷移先が「S2」の欄には「条件A1」という判定条件が設定されている。これは、運転状態が荷降ろし完了状態S1のときに「条件A1」を満たせば、運転状態が荷無移動状態S2に遷移することを示している。なお、以降に示す判定条件は、一例にすぎず、趣旨を逸脱しない限り、適宜変更されてもよい。
図8に示すように、条件A1は、荷降ろし完了状態S1から荷無移動状態S2へ遷移するための判定条件である。条件A1は、『「車速≧停止速度閾値」AND「荷役操作有り=False」』という条件である。運転状態判定部31は、走行モータ回転数指令の値から車速を把握する。停止速度閾値は、車両2が実質的に停止している場合の走行モータ回転数指令の値に設定される。荷役操作の有無の判定は、荷役モータ回転数指令が0の状態から変化したか否かによって判定される。以上より、荷降ろし完了状態S1となった後、荷役レバー10の操作がなされない状態で、車速が立ち上がることで、走行モータ回転数指令が停止速度閾値以上となった場合、運転状態判定部31は、運転状態が荷降ろし完了状態S1から荷無移動状態S2へ遷移したと判定する。
条件A2は、荷降ろし完了状態S1から荷積み準備状態S3へ遷移するための判定条件である。条件A2は、荷積み準備状態S3から荷降ろし完了状態S1へフィードバックされた後に、荷積み準備状態S3へ復帰するための判定条件である。条件A2は、『「車速<停止速度閾値」AND「S3からのフィードバック有り」』という条件である。「S3からのフィードバック有り」とは、遷移前の状態が「S3」であることを示す。すなわち、荷降ろし準備状態S6から荷降ろし完了状態S1へ遷移した場合、当該条件は満たさない。
また、条件A3は、荷降ろし完了状態S1から荷降ろし準備状態S6へ遷移するための判定条件である。条件A3は、一度、運転状態判定部31が荷降ろし完了状態S1と誤って判定した場合に、運転状態を荷降ろし準備状態S6へフィードバックするための判定条件である。条件A3は、『「車速は停止速度判定値域の範囲内」AND「荷役操作有り=True」AND「S6からのフィードバック有り」AND「アクセル操作有り」』という条件である。停止速度判定値域は、車両2が停止速度の前後の車速で走行していることを判定するための値域である。停止速度判定値域の下限値は停止速度閾値より低い値に設定され、上限値は停止速度閾値より高い値に設定される。停止速度判定値域の下限値及び上限値の設定方法は特に限定されず、停止速度閾値に所定の値を減算・加算することで設定してもよく、所定の係数を掛け合わせることで設定してもよい。「S6からのフィードバック有り」とは、遷移前の状態が「S6」であることを示す。アクセル操作の有無は、走行モータ回転数指令が0の状態から変化したか否かによって判定される。
条件B1a,B1bは、荷無移動状態S2から荷積み準備状態S3へ遷移するための判定条件である。条件B1aは、『「車速<微速閾値」AND「走行モータ逆回転指令」AND「荷への近接フラグ=True」』という条件である。微速閾値は、車両2が荷Wを積むために位置調整を行っていると判定できるような走行モータ回転数指令の値に設定され、例えば、車速が0.5km/hの時の値である。走行モータ逆回転指令とは、進行方向に対する車速を低下させるような走行モータ回転数指令が入っている状態を示す。「荷への近接フラグ」は、荷Wへ接近したかどうかを判断するためのフラグであり、進行方向への走行中に、逆方向への走行モータ回転数指令がかかることで、車速が所定量低下した場合、「True」となる。荷無移動状態S2となった後、車速が継続的に低下している状態は、車両2が荷積みの準備を行うために、進行状態から停止状態へ向かって変化している状態と言える。従って、条件B1aが満たされた場合、運転状態判定部31は、運転状態が荷無移動状態S2から荷積み準備状態S3へ遷移したと判定する。条件B1bは、『「車速<微速閾値」AND「走行モータ逆回転指令」AND「荷への近接フラグ=False」AND「荷役モータ指令有り OR S3からのフィードバック有り」』という条件である。荷無移動状態S2となった後、車速が微速閾値よりも低下し、車両2が荷積みの準備を行うために、荷役装置3を移動させる操作がなされた場合、運転状態判定部31は、運転状態が荷無移動状態S2から荷積み準備状態S3へ遷移したと判定する。なお、荷積み準備状態S3からのフィードバックがあった場合、条件B1bが満たされることで、再び荷積み準備状態S3へ遷移する。運転状態判定部31は、条件B3a,B3bの少なくとも一方の判定条件が満たされた場合に、荷積み準備状態S3への遷移を判定する。以降、同一箇所に複数の条件が設定されていた場合は、少なくとも1つの条件を満たせば遷移するものとする。
条件B2は、荷無移動状態S2から荷降ろし完了状態S1へ遷移するための判定条件である。条件B2は、一度、運転状態判定部31が荷無移動状態S2と誤って判定した場合に、運転状態を荷降ろし完了状態S1へフィードバックするための判定条件である。条件B2は、『Not(「車速<微速閾値」AND「走行モータ逆回転指令」)AND「車速<停止速度閾値」』という条件である。
条件C1は、荷積み準備状態S3から荷積み完了状態S4へ遷移するための判定条件である。条件C1は、『「荷役操作有り=True」AND「荷有判断=True」AND「車速<停止速度閾値」AND「荷への近接フラグ=False」』という条件である。「荷有判断」は、荷役モータ回転数指令が予め定めた値となっているとき(例えば0などの低い値)に、油圧圧力が指定領域(荷Wが有ると判定できるような高い圧力)内にある場合、「True」となる。荷積み準備状態S3となった後、車両2が略停止状態にあり、荷役装置3を移動させる操作がなされ、荷役装置3に荷Wがある場合、運転状態判定部31は、運転状態が荷積み準備状態S3から荷積み完了状態S4へ遷移したと判定する。
条件C2は、荷積み準備状態S3から荷降ろし完了状態S1へ遷移するための判定条件である。条件C2は、一度、運転状態判定部31が荷積み準備状態S3と誤って判定した場合に、運転状態を荷降ろし完了状態S1へフィードバックするための判定条件である。条件C2は、『「荷役操作有り=False」AND「荷への近接フラグ=False」AND「車速<停止速度閾値」』という条件である。
条件C3は、荷積み準備状態S3から荷無移動状態S2へ遷移するための判定条件である。条件C3は、一度、運転状態判定部31が荷積み準備状態S3と誤って判定した場合に、運転状態を荷無移動状態S2へフィードバックするための判定条件である。条件C3は、『「荷役操作有り=False」AND「車速>通常速度閾値」』という条件である。通常速度閾値は、車両2が通常の走行を行っていると判定できるような走行モータ回転数指令の値に設定され、例えば、車速が3.5km/hの時の値である。
条件D1a,D1bは、荷積み完了状態S4から荷運搬状態S5へ遷移するための判定条件である。条件D1aは、『「荷役操作有り=True」AND「車速>微速閾値」』という条件である。荷積み完了状態S4となった後、荷役装置3を移動させるための操作が有り、車速が微速閾値より大きくなるまで増加した場合、運転状態判定部31は、運転状態が荷積み完了状態S4から荷運搬状態S5へ遷移したと判定する。条件D1bは、『「荷役操作有り=False」AND「車速≧停止速度閾値」』という条件である。荷積み完了状態S4となった後、荷役装置3を移動させるための操作が無く、車速が停止速度閾値より大きくなるまで増加した場合、運転状態判定部31は、運転状態が荷積み完了状態S4から荷運搬状態S5へ遷移したと判定する。
条件D2a,D2bは、荷積み完了状態S4から荷降ろし準備状態S6へ遷移するための判定条件である。条件D2aは、『「荷役操作有り=True」AND「車速<微速閾値」AND「S6からのフィードバック有り」』という条件である。条件D2aは、荷降ろし準備状態S6から荷積み完了状態S4へフィードバックされた後に、荷降ろし準備状態S6へ復帰するための判定条件である。条件D2bは、『「荷役操作有り=False」AND「車速<微速閾値」AND「荷役モータ回転数指令有り」』という条件である。
条件E1a,E1b,E1cは、荷運搬状態S5から荷降ろし準備状態S6へ遷移するための判定条件である。条件E1aは、『「車速<微速閾値」AND「走行モータ逆回転指令」AND「荷への近接フラグ=True」』という条件である。荷運搬状態S5となった後、車速が継続的に低下している状態は、車両2が荷降ろしの準備を行うために、進行状態から停止状態へ向かって変化している状態と言える。従って、条件E1aが満たされた場合、運転状態判定部31は、荷運搬状態S5から荷降ろし準備状態S6へ遷移したと判定する。条件E1bは、『「車速<微速閾値」AND「走行モータ逆回転指令」AND「荷への接近フラグ=False」AND「S6からのフィードバック有り」』という条件である。条件E1bは、荷降ろし準備状態S6から荷運搬状態S5へフィードバックされた後に、荷降ろし準備状態S6へ復帰するための判定条件である。条件E1cは、『「Not(「車速<微速閾値」AND「走行モータ逆回転指令」)AND「荷役モータ指令有り」AND「車速<微速閾値」』という条件である。荷運搬状態S5となった後、車速が微速閾値よりも低下し、車両2が荷降ろしの準備を行うために、荷役装置3を移動させる操作がなされた場合、運転状態判定部31は、運転状態が荷運搬状態S5から荷降ろし準備状態S6へ遷移したと判定する。
条件F1は、荷降ろし準備状態S6から荷降ろし完了状態S1へ遷移するための判定条件である。条件F1は、『「荷役操作有り=True」AND「荷無判断=True」AND「車速<停止速度閾値」AND「荷への近接フラグ=False」』という条件である。「荷無判断」は、荷役モータ回転数指令が予め定めた値となっているとき(例えば0などの低い値)に、油圧圧力が指定領域(荷Wが無いと判定できるような低い圧力)内にある場合、「True」となる。荷降ろし準備状態S6となった後、車両2が略停止状態にあり、荷役装置3を移動させる操作がなされ、荷役装置3に荷Wが無い場合、運転状態判定部31は、運転状態が荷降ろし準備状態S6から荷降ろし完了状態S1へ遷移したと判定する。
条件F2は、荷降ろし準備状態S6から荷積み完了状態S4へ遷移するための判定条件である。条件F2は、『「荷役操作有り=False」AND「車速<停止速度閾値」AND「荷への近接フラグ=False」』という条件である。条件F3は、荷降ろし準備状態S6から荷運搬状態S5へ遷移するための判定条件である。条件F3は、『「荷役操作有り=False」AND「車速≧微速閾値」AND「荷への近接フラグ=False」』という条件である。
図2へ戻り、演算部32は、制御装置100内の各種演算を行う。演算部32は、アクセルレバー11からの運転指令に基づいて、走行駆動系指令を生成する。演算部32は、アクセルレバー11の操作量及び操作方向に応じて、走行モータ回転数指令の値を演算する。演算部32は、荷役レバー10からの運転指令に基づいて、荷役駆動系指令を生成する。演算部32は、荷役レバー10の操作量に応じて、荷役モータ回転数指令の値を演算し、バルブ部42への制御値を演算する。
設定部33は、運転状態判定部31が判定を行うための判定条件を設定する。例えば、記憶部35に熟練度に応じた複数の判定条件のデータが格納されていた場合、設定部33は、運転者の熟練度を把握し、適切な判定条件を設定することができる。
学習部34は、運転者によってなされた操作、例えばアクセルレバー11の操作量及び荷役レバー10の操作量を機械学習し、運転状態判定部31が用いる判定条件を生成する。特定の運転者によるフォークリフト50の運転が終了した場合に、運転状態判定部31による判定結果と、実際の運転状態の変化とを比較して評価する。例えば、図9に示す実線のグラフは、実際の運転状態の変化を示すグラフであり、破線のグラフは運転状態判定部31の判定結果に基づくグラフである。なお、実際の運転状態の変化は、例えば、運転中のフォークリフト50の様子を撮影しておき、映像に基づいて把握される。図9に示すように、運転状態判定部31の判定結果と実際の運転状態に異なる部分が生じる場合、学習部34は、学習によって得た情報を基にして、判定結果が実際の運転状態に近づくように、判定条件の調整を行う。これにより、学習部34は、特定の運転者の癖や熟練度に応じて判定条件の調整を行うことができる。本実施形態では、学習部34は、各判定条件の閾値などを運転者に合わせて調整してよい。
記憶部35は、制御装置100内で用いられる各種情報を格納する。記憶部35は、運転状態判定部31が判定に用いる判定条件を記憶する。記憶部35は、複数の運転者の癖や熟練度に応じた複数の判定条件を格納してよい。また、記憶部35は、学習部34が学習した学習結果を格納する。
次に、図10を参照して本実施形態に係る制御装置100の処理内容について説明する。図10は、制御装置100の処理内容を示すフローチャートである。
図10に示すように、設定部33は、判定条件の設定を行う(ステップS10)。例えば、記憶部35が運転者に応じて複数の判定条件を格納している場合、設定部33は、運転者に合わせて適切な判定条件を選択し、選択した判定条件を設定する。なお、設定部33は、運転時の入力操作などによって、どのような運転者が運転を行うかを把握することができる。なお、S10の処理は、記憶部35が複数の判定条件を格納しており、どの判定条件を用いるか決定する必要がある場合になされる処理であるため、判定条件が一つのみである場合は、S10は省略されてもよい。また、事前に設定された判定条件をそのまま用いるような場合などもS10は省略されてもよい。
その後、運転状態判定部31は、運転状態を判定するために必要な判定パラメータの取得を行う(ステップS20)。運転状態判定部31は、S20で取得した判定パラメータとS10で設定された判定条件とを比較することで、運転状態の遷移があるか否かを判定する(ステップS30)。運転状態判定部31は、S30において運転状態の遷移がないと判定した場合、現在と同じ運転状態が継続していると判断し、S20から処理を繰り返す。一方、運転状態判定部31は、S30において運転状態の遷移があると判定した場合、運転状態が新たな運転状態となったと判定する(ステップS40)。運転状態判定部31は、フォークリフト50が運転可能な状態か否かによって、フォークリフト50の運転が終了したか否かを判定する(ステップS50)。運転状態判定部31は、S50において運転が終了していないと判定した場合は、S20から再び処理を繰り返す。S50において運転が終了したと判定された場合、図10に示す処理が終了する。
例えば、現在の運転状態が荷無移動状態S2であった場合、S30において、運転状態判定部31は、条件B1a,B1b,B2の何れかの判定条件が満たされているか否かを判定する。運転状態判定部31は、S30においていずれの判定条件も満たされていないと判定した場合は、荷無移動状態S2が継続していると判断し、S20から再び処理を繰り返す。一方、運転状態判定部31は、S30において条件B1a,B1bのいずれかの判定条件がみたされていると判定した場合、S40にて運転状態が荷積み準備状態S3となったことを判定する。あるいは、運転状態判定部31は、S30において条件B2の判定条件がみたされていると判定した場合、S40にて運転状態が荷降ろし完了状態S1へフィードバックされたことを判定する。その後、運転状態判定部31が、S30において条件A1の判定条件が満たされていると判定した場合、S40において運転状態が荷無移動状態S2となったことを判定し、荷積み準備状態S3となるまで、同様の処理を繰り返す。
次に、図11及び図12を参照して、フォークリフト50の動作と運転状態の対応関係の一例について説明する。図11は、フォークリフト50の稼動状態を模擬した、作業手順の手順前半の様子を示す概略平面図である。図12は、フォークリフト50の稼動状態を模擬した、作業手順の手順後半の様子を示す概略平面図である。図11及び図12では、床にL字状のテープ61が貼られている。そのテープ61で画成された領域の内側には、荷Wが設置される棚64が設けられている。テープ61の長辺部分に沿ってコーン66が配置されている。また、テープ61の短辺部分と離間して対向する位置には、停止線62が設けられている。なお、図11及び図12に示すフォークリフト50の軌道のうち、実線は「荷無前進」状態を示し、破線は「荷有前進」状態を示し、一点鎖線は「荷有後進」状態を示し、二点鎖線は「荷無後進」状態を示す。
まず、フォークリフト50は、停止線62の位置から軌道L1に沿って荷無前進を行う。これにより、フォークリフト50は、停止線から直進して直角に曲がることで、棚64の荷Wの位置へ近接する。この場合、運転状態判定部31は、停止線62から棚64へ向かう途中の段階では、運転状態が荷無移動状態S2であると判定する。そして、運転状態判定部31は、フォークリフト50が棚64へ近接して停止状態へ変化する間に、運転状態が荷積み準備状態S3であると判定する。フォークリフト50は、棚64の荷Wの手前にて停止し、荷役装置3で荷Wを上げる。このとき、運転状態判定部31は、運転状態が荷積み完了状態S4であると判定する。その後、フォークリフト50は、軌道L2に沿って、荷Wが棚64から出るまで荷有後進を行う。そして、フォークリフト50は一旦停止し、リフト高さが走行時荷役位置となるように荷役装置3を位置調整する。
フォークリフト50は、車速を上げて、軌道L3に沿って荷有後進を行うことで、テープ61の短辺部分の位置まで荷Wを運搬する。この間に、運転状態判定部31は、運転状態が荷運搬状態S5であると判定する。フォークリフト50は、荷Wの運搬先である設置位置WPに近接するに従って車速を低下させて、荷Wが設置位置WPに到達する位置にて停止状態となる。この間に、運転状態判定部31は、運転状態が荷降ろし準備状態S6であると判定する。設置位置WPは、荷Wを床に直置きする場所として設定されており、テープ61の短辺部分に対応する位置に設けられる。フォークリフト50は、設置位置WPに荷Wを載置する。この時、運転状態判定部31は、運転状態が荷降ろし完了状態S1であると判定する。フォークリフト50は、設置位置WPに荷Wを降ろしたら、荷役装置3を荷Wから取り外せる位置まで軌道L4に沿って荷無後進を行う。そして、フォークリフト50は一旦停止し、リフト高さが走行時荷役位置となるように荷役装置3を位置調整する。フォークリフト50は、車速を上げて、軌道L5に沿って荷無後進を行うことで、停止線延長線63(停止線62を延長させたライン)の位置まで移動する。この間に、運転状態判定部31は、運転状態が荷無移動状態S2であると判定する。
次に、図12に示すように、フォークリフト50は、軌道L7に沿って荷無前進を行い、停止線68(テープ61の短辺部分を延長させたライン)で停止する。この期間中、運転状態判定部31は、運転状態が荷無移動状態S2であると判定する。フォークリフト50は、軌道L8に沿って荷無前進し、停止線68から直進して二回直角に曲がることで、荷Wへ近接する。この場合、運転状態判定部31は、停止線62から荷Wへ向かう途中の段階では、運転状態が荷無移動状態S2で維持されていると判定する。そして、運転状態判定部31は、フォークリフト50が荷Wへ近接して停止状態へ変化する間に、運転状態が荷積み準備状態S3であると判定する。フォークリフト50は、床に直置きされた荷Wの手前にて停止し、荷役装置3で荷Wを上げる。このとき、運転状態判定部31は、運転状態が荷積み完了状態S4であると判定する。
その後、フォークリフト50は、車速を上げて、軌道L9に沿って、荷有前進を行うことで、棚64の設置位置WPの位置へ近接する。この場合、運転状態判定部31は、荷Wの位置から棚64へ向かう途中の段階では、運転状態が荷運搬状態S5であると判定する。そして、運転状態判定部31は、フォークリフト50が設置位置WPへ近接して停止状態へ変化する間に、運転状態が荷降ろし準備状態S6であると判定する。フォークリフト50は、設置位置WPに荷Wを載置する。この時、運転状態判定部31は、運転状態が荷降ろし完了状態S1であると判定する。フォークリフト50は、設置位置WPに荷Wを降ろしたら、荷役装置3を荷Wから取り外せる位置まで軌道L10に沿って荷無後進を行う。そして、フォークリフト50は一旦停止し、リフト高さが走行時荷役位置となるように荷役装置3を位置調整する。フォークリフト50は、車速を上げて、軌道L11に沿って荷無後進を行うことで、停止線62の位置まで移動する。この間に、運転状態判定部31は、運転状態が荷無移動状態S2であると判定する。
次に、本実施形態に係る制御装置100、フォークリフト50、及び制御プログラムの作用・効果について説明する。
本実施形態に係るフォークリフト50の制御装置100において、運転状態判定部31は、フォークリフト50の運転状態が分類された状態遷移モデルに基づき、フォークリフト50の運転状態を判定する。このように、運転状態判定部31が、状態遷移モデルに基づいた判定を行うことで、フォークリフト50の運転状態の判定が行い易くなる。ここで、状態判定遷移モデルは、荷無移動状態S2から荷積み完了状態S4へ遷移する間の状態であって、荷役装置3を操作して荷役装置3に荷を積載する準備をしている状態である荷積み準備状態S3、を運転状態として分類している。また、状態判定遷移モデルは、荷運搬状態S5から荷降ろし完了状態S1へ遷移する間の状態であって、荷役装置3を操作して荷役装置3から荷を運搬先へ荷降ろしする準備をしている状態である荷降ろし準備状態S6、を運転状態として分類している。すなわち、運転状態判定部31は、単に荷役装置が荷積み・荷降ろしを完了した状態、及び車両2が移動している状態のみならず、荷積みの準備及び荷降ろしの準備という、運転者の意思が含まれる荷積み準備状態S3及び荷降ろし状態S6を判定することができる。これによって、運転状態判定部31は、運転者の意思を考慮して、運転状態をより詳細に判定することができる。また、発明者らは、フォークリフト50が荷積みの準備及び荷降ろしの準備を行うときは、車両2が進行状態から停止状態へ変化する点を鑑み、当該状態を考慮することで、運転状態の判定の精度を向上できることを見出した。従って、運転状態判定部31は、車両2の進行状態から停止状態への変化に基づいて、運転状態が荷積み準備状態S3及び荷降ろし準備状態S6であると判定する。これにより、運転状態判定部31は、精度良く荷積み状態及び荷降ろし状態を判定することができる。以上により、フォークリフト50の運転状態の判定の精度を高めることができる。
また、本実施形態(及び後述の第2,3実施形態)では、運転状態判定部31は、フォークリフト50に既設された機器、センサ類のみに基づく判定パラメータを用いて、判定を行っている。すなわち、制御装置100は、新たな機器やセンサを追加することなく、精度良く運転状態を判定することができる。
このように、精度良く判定されたフォークリフトの運転状態の判定結果は、様々な用途に有効に利用することができる。例えば、運転状態の判定結果は、運転状態に応じた運転支援を行うために用いられてよい。また、運転状態の判定結果は、状態遷移モデルに基づいてなされたものであるため、運転状態の遷移の仕方によって、運転者の個人差の把握や、スキルの評価に有効に利用することができる。また、このような判定結果は、機械学習用の教師データとして、作業データのラベリングに用いることができる。また、判定結果を自律走行の経路作成の強化学習に用いることができる。その他、判定結果に基づいて作業量の検出も可能となるため、判定結果を作業計画の見直しや作業の効率化など、作業現場の改善にも利用することができる。また、判定結果に基づいて連続した作業の遷移状態の検出も可能となるため、判定結果を遠隔操作時のトラブル対応など使い易い遠隔操作の技術開発支援にも利用することができる。また、遷移条件を利用した自律・自動走行経路計画の構築など、フルオートマティック作業支援の技術開発支援に判定結果を利用することもできる。
フォークリフト50の制御装置100において、運転状態判定部31は、車両2の走行駆動系45への運転指令によって生成される走行駆動系指令と、荷役装置3の荷役駆動系40への運転指令によって生成される荷役駆動系指令と、荷役装置3のリフトシリンダ24の油圧圧力と、を取得し、走行駆動系指令の変化、荷役駆動系指令の変化、及び油圧圧力の変化に基づいて、運転状態を判定する。この場合、運転状態判定部31は、特殊な判定パラメータを用いることなく、運転状態を判定することができる。
フォークリフト50は、上述の制御装置100を備えている。このフォークリフト50は、上述の制御装置100と同様な作用・効果を得ることができる。
フォークリフト50の制御プログラムは、上述の制御装置100を運転状態判定部31として機能させる。この制御プログラムは、上述の制御装置100と同様な作用・効果を得ることができる。
[第2実施形態]
第2実施形態に係る制御装置100は、合成関数を用いて運転状態の判定を行う点で、第1実施形態と主に異なる。演算部32は、荷役駆動系40への運転指令によって生成される荷役モータ41に対する荷役モータ回転数指令関数R1を演算する。また、演算部32は、走行駆動系45への運転指令によって生成される走行モータ46に対する走行モータ回転数指令関数R2を演算する。この場合、運転状態判定部31は、走行モータ回転数指令及び荷役モータ回転数指令という複数の判定パラメータを合成関数という一つの判定パラメータとして扱うことができる。
更に、演算部32は、荷役モータ回転数指令関数R1と走行モータ回転数指令関数R2と、を合成した合成関数RMを演算する。演算部32は、荷役モータ回転数指令関数R1及び走行モータ回転数指令関数R2に対して重み付けをすることで、合成関数RMを演算する。これにより、運転状態判定部31は、演算部32で演算された合成関数RMを取得し、合成関数RMの値に基づいて、運転状態を判定する。具体的には、運転状態判定部31は、演算部32で演算された合成関数RMを取得し、合成関数RMの値が負から正へ切り替わることに基づいて、運転状態を判定する。この場合、運転者の癖や熟練度等を考慮して、重み付けを調整することで、運転状態判定部31は、運転者にとってより適切な合成関数RMを用いて、運転状態を判定することができる。
例えば、荷役モータ回転数指令関数R1に対する重み付け係数をW1とし、走行モータ回転数指令関数R2に対する重み付け係数をW2とした場合、合成関数RMは、以下の数式(1)のように表される。重み付け係数をW2として、負の値が採用される。これにより、図13(a)に示すように、正側には荷役モータ回転数指令関数R1に対応するグラフが描かれ、負側には走行モータ回転数指令関数R2に対応するグラフが描かれる。そして、両関数が合成されることで、図13(b)に示すように、合成関数RMに対応するグラフが描かれる。このような合成関数RMのグラフのうち、値が負から正へ切り替わるポイントCPが、判定条件に用いられる。なお、各重み付け関数の大きさは、予め定められた値が用いられてもよく、運転者の熟練度などによって適宜調整されてもよい。すなわち、学習部34は、学習結果に基づいて、各重み付け係数を最適化することができる。なお、運転状態判定部31は、合成関数RMの値が負から正へ切り替わることに基づいて運転状態を判定するものに限定されない。例えば、重み付け係数の設定次第では、運転状態判定部31は、合成関数RMの値が正から負へ切り替わることに基づいて運転状態を判定してもよい。
RM=W1・|R1| + W2・|R2| …(1)
また、第2実施形態に係る制御装置100は、熟練度の高い運転者による運転状態を更に精度よく判定することができる。例えば、フォークリフト50が図11に示す軌道L1を移動する際、通常の熟練度の運転者は、上述のように、棚64の手前で停止し、当該位置で荷役レバー10を操作することが多い。しかしながら、熟練度の高い運転者は、軌道L1を高い車速で移動しながら、荷役レバー10を操作する。例えば、荷無移動状態S2から荷積み準備状態S3の判定条件が荷役レバー10の操作の有無を有している場合、運転状態判定部31は、熟練度の高い運転者の運転状態を精度良く判定できない可能性がある。
従って、本実施形態に係る運転状態判定部31は、フォークリフト50が左右の一方(ここでは右側)へ旋回して荷役することが定められた条件下において、ステアリング位置とアクセル開度との関係に基づいて、運転状態を判定する。フォークリフト50が旋回して荷役位置へ向かう場合、運転者の熟練度によって、旋回の動作態様は異なる。従って、運転状態判定部31は、ステアリング位置とアクセル開度との関係に基づくことで、運転者の熟練度に応じて精度よく運転状態を判定できる。
このような判定を行う場合、制御装置100は、フォークリフト50のスタート位置SP及びゴール位置GPを予め把握することで、フォークリフト50が右側へ旋回することを予め把握している。そして、制御装置100は、フォークリフト50がスタート位置SPからゴール位置GPへ到達するまでの時間のうち、ある時刻でのステアリング位置及びアクセル開度が所定の範囲内に入っていれば、フォークリフト50が旋回位置TPで旋回を行うことを把握している。フォークリフト50は、旋回位置TPで旋回を行った後は速やかにゴール位置GPの位置で停止する。従って、旋回位置TPでの旋回動作は、荷積みの準備のための動作と見なすことができる。以上により、運転状態判定部31は、ステアリング位置が予め指定された領域内に収まっており、且つアクセル開度が予め指定された領域内に収まっていることに基づいて、運転状態が荷積み準備状態S3となったことを判定できると推察される。従って、学習部34は、熟練度の高い運転者の操作を学習することで、スタート位置SPとゴール位置GPとの間の走行軌跡を推定することができる。これにより、学習部34は、熟練度の高い運転者のための判定条件(ここでは、ステアリング位置及びアクセル開度の範囲)を最適化することができる。なお、運転状態判定部31は、荷降ろし状態S6も上述の同趣旨の方法で判定することができる。
次に、図14を参照して、第2実施形態に係る制御装置100で用いられる判定条件について説明する。図14に示すように、条件G1は、荷降ろし完了状態S1から荷無移動状態S2へ遷移するための判定条件である。条件G1は、『車速>微速閾値』という条件である。
条件H1a,H1bは、荷無移動状態S2から荷積み準備状態S3へ遷移するための判定条件である。条件H1aは、『「車速<微速閾値」AND「走行から荷積降判断=True」』という条件である。荷積降判断とは、図13を参照して上述したように、合成関数RMが負から正となったときに、荷積降準備に遷移した(True)と判断することである。条件H1bは、『「車速≧微速閾値」AND「アクセル開度が指定領域内」AND「ステアリング位置が指定領域内」』という条件である。アクセル開度及びステアリング位置の条件とは、図11を参照して上述したように、アクセル開度及びステアリング位置が運転者の熟練度に応じて設定された領域内に収まっている場合に、荷積みの準備がなされたと判断する条件である。
条件H2は、荷無移動状態S2から荷降ろし完了状態S1へ遷移するための判定条件である。条件H2は、一度、運転状態判定部31が荷無移動状態S2と誤って判定した場合に、運転状態を荷降ろし完了状態S1へフィードバックするための判定条件である。条件H2は、『「車速<微速閾値」AND(「S6で荷物無フラグ=True」OR「荷役レバー操作有り」)』という条件である。「S6で荷物無フラグ=True」とは、S6にて、「荷無判断=True」となった状態である。なお、条件H2は、「荷役レバー操作有り」という条件を含んでいるが、荷役レバー10の操作がなされても、合成関数RMが負から正になっていないことを前提としている。
条件K1は、荷積み準備状態S3から荷積み完了状態S4へ遷移するための判定条件である。条件K1は、『「荷有判断=True」AND「車速<停止速度閾値」』という条件である。「荷有判断」は、荷役モータ回転数指令が予め定めた値となっているとき(例えば0などの低い値)に、油圧圧力が指定領域(荷Wが有ると判定できるような高い圧力)内にある場合、「True」となる。
条件J1は、荷積み完了状態S4から荷運搬状態S5へ遷移するための判定条件である。条件J1は、『車速>微速閾値』という条件である。
条件M1a,M1bは、荷運搬状態S5から荷降ろし準備状態S6へ遷移するための判定条件である。条件M1aは、『「車速<微速閾値」AND「走行から荷積降判断=True」』という条件である。条件E1bは、『「車速≧微速閾値」AND「アクセル開度が指定領域内」AND「ステアリング位置が指定領域内」』という条件である。
条件M2は、荷運搬状態S5から荷積み完了状態S4へ遷移するための判定条件である。条件M2は、一度、運転状態判定部31が荷運搬状態S5と誤って判定した場合に、運転状態を荷積み完了状態S4へフィードバックするための判定条件である。条件M2は、『「車速<微速閾値」AND(「S3で荷物有フラグ=True」OR「荷役レバー操作有り」)』という条件である。「S3で荷物有フラグ=True」とは、S3にて、「荷有判断=True」となった状態である。なお、条件M2は、「荷役レバー操作有り」という条件を含んでいるが、荷役レバー10の操作がなされても、合成関数RMが負から正になっていないことを前提としている。
条件N1は、荷降ろし準備状態S6から荷降ろし完了状態S1へ遷移するための判定条件である。条件N1は、『「荷無判断=True」AND「車速<停止速度閾値」』という条件である。「荷無判断」は、荷役モータ回転数指令が予め定めた値となっているとき(例えば0などの低い値)に、油圧圧力が指定領域(荷Wが無いと判定できるような低い圧力)内にある場合、「True」となる。
[第3実施形態]
第3実施形態に係る制御装置100は、運転者による操作入力を主たる判定パラメータとして運転状態の判定を行う点で、第1実施形態と主に異なる。例えば、判定パラメータとして、アクセルレバー11の操作量に対応するアクセル開度が採用される。運転状態判定部31は、アクセル開度に基づいて、車両2の進行状態から停止状態への変化を検出する。アクセル開度は、運転者の荷積み又は荷降ろしの準備の意図を反映した判定パラメータである。従って、運転状態判定部31は、アクセル開度に基づくことで、精度良く荷積み状態、又は荷降ろし状態を判定することができる。
また、判定パラメータとして、ある操作量の関数と他の操作量の関数とを合成した合成関数が用いられてもよい。例えば、運転状態判定部31は、アクセル開度によって生成されるアクセル開度関数と、全ての荷役レバー10(レバー10a,10b,10cの全て)の操作によって生成される全荷役レバー操作量関数と、を取得してよい。運転状態判定部31は、アクセル開度関数と全荷役レバー操作量関数とを合成した合成関数に基づいて運転状態を判定する。この場合、運転状態判定部31は、アクセル開度と全荷役レバー操作量という複数の判定パラメータを合成関数という一つの判定パラメータとして扱うことができる。なお、当該合成関数は、上述の数式(1)を用いて合成関数RMを作成した方法と同趣旨の方法によって作成されてよい。以下の合成関数について、全て同様である。
運転状態判定部31は、荷役装置3へ荷Wが積載されていることの判定条件として、リーチ操作量関数とリフト操作量関数との合成関数を用いる。リーチ操作量関数とは、リーチレバー10bの操作量を示す関数である。リフト操作量関数とは、リフトシリンダ24を動かすためのリフトレバー10aの操作量を示す関数である。ここでは、リフト操作量関数として、リフトシリンダ24を微上昇させるための、リフトレバー10aの操作量を示すリフト上昇の操作量関数を採用してもよい。この場合、運転状態判定部31は、リーチ操作量とリフト操作量という複数の判定パラメータを合成関数という一つの判定パラメータとして扱うことができる。なお、リフト操作量関数として、リフト上昇の操作量関数を用いるか、リフト下降の操作量関数を用いるかなどは、運転者に応じて適宜変更されてもよい。
また、運転状態判定部31は、荷役装置3へ荷Wが積載されていないことの判定条件として、リフト操作量関数とリーチ・ティルト操作量関数との合成関数を用いる。ここでは、リフト操作量関数として、リフトシリンダ24を微下降させるための、リフトレバー10aの操作量を示すリフト下降の操作量関数を採用してよい。リーチ・ティルト操作量関数とは、リーチレバー10bの操作量とティルトレバー10cの操作量との合計の操作量を示す関数である。この場合、運転状態判定部31は、リフト操作量とリーチ・ティルト操作量という複数の判定パラメータを合成関数という一つの判定パラメータとして扱うことができる。なお、リフト操作量関数として、リフト上昇の操作量関数を用いるか、リフト下降の操作量関数を用いるかなどは、運転者に応じて適宜変更されてもよい。
上述のような、荷役レバー10の操作量に基づく判定パラメータを用いる場合、学習部34は、運転者の荷役レバー10の操作量を機械学習し、運転状態判定部31が用いる判定条件を生成することが好ましい。この場合、学習部34は、運転者の荷役レバー10の操作量の傾向などを反映した判定条件を生成することができる。
次に、図15を参照して、第3実施形態に係る制御装置100で用いられる判定条件について説明する。図15に示すように、条件P1は、荷降ろし完了状態S1から荷無移動状態S2へ遷移するための判定条件である。条件P1は、『アクセル開度>微速閾値』という条件である。
条件Q1a,Q1bは、荷無移動状態S2から荷積み準備状態S3へ遷移するための判定条件である。条件Q1aは、『「アクセル開度<微速閾値」AND「走行から荷積降判断=True」』という条件である。荷積降判断とは、アクセル開度と荷役レバーの合成関数が負から正となったときに、荷積降準備に遷移した(True)と判断することである。条件Q1bは、『「アクセル開度≧微速閾値」AND「アクセル開度が指定領域内」AND「ステアリング位置が指定領域内」』という条件である。アクセル開度及びステアリング位置の条件とは、第2実施形態において図11を参照して上述したように、アクセル開度及びステアリング位置が運転者の熟練度に応じて設定された領域内に収まっている場合に、荷積みの準備がなされたと判断する条件である。
条件Q2は、荷無移動状態S2から荷降ろし完了状態S1へ遷移するための判定条件である。条件Q2は、一度、運転状態判定部31が荷無移動状態S2と誤って判定した場合に、運転状態を荷降ろし完了状態S1へフィードバックするための判定条件である。条件Q2は、『「アクセル開度<微速閾値」AND(「S6で荷物無フラグ=True」OR「荷役レバー操作有り」)』という条件である。「S6で荷物無フラグ=True」とは、S6にて、「荷無判断=True」となった状態である。なお、条件Q2は、「荷役レバー操作有り」という条件を含んでいるが、荷役レバー10の操作がなされても、Q1aでの合成関数が負から正になっていないことを前提としている。
条件R1は、荷積み準備状態S3から荷積み完了状態S4へ遷移するための判定条件である。条件R1は、『「荷有判断=True」AND「アクセル開度=0」』という条件である。「荷有判断」は、リーチ操作量関数とリフト上昇の操作量関数との合成関数の符号が負から正に変化した場合に、荷有と判定する(True)。
条件T1は、荷積み完了状態S4から荷運搬状態S5へ遷移するための判定条件である。条件T1は、『アクセル開度>0』という条件である。
条件U1a,U1bは、荷運搬状態S5から荷降ろし準備状態S6へ遷移するための判定条件である。条件U1aは、『「アクセル開度=0」AND「走行から荷積降判断=True」』という条件である。条件E1bは、『「アクセル開度>0」AND「アクセル開度が指定領域内」AND「ステアリング位置が指定領域内」』という条件である。
条件U2は、荷運搬状態S5から荷積み完了状態S4へ遷移するための判定条件である。条件U2は、一度、運転状態判定部31が荷運搬状態S5と誤って判定した場合に、運転状態を荷積み完了状態S4へフィードバックするための判定条件である。条件U2は、『「アクセル開度=0」AND(「S3で荷物有フラグ=True」OR「荷役レバー操作有り」)』という条件である。「S3で荷物有フラグ=True」とは、S3にて、「荷有判断=True」となった状態である。なお、条件U2は、「荷役レバー操作有り」という条件を含んでいるが、荷役レバー10の操作がなされても、U1aでの合成関数が負から正になっていないことを前提としている。
条件V1は、荷降ろし準備状態S6から荷降ろし完了状態S1へ遷移するための判定条件である。条件V1は、『「荷無判断=True」AND「アクセル開度=0」』という条件である。「荷無判断」は、リフト下降の操作量関数とリーチ・ティルト操作量関数との合成関数が負から正へ変化したときに、「True」となる。
本発明は、上述の実施形態に限定されるものではない。
例えば、上述の実施形態では、産業車両の一例としてリーチ式のフォークリフトを例示したが、カウンター式のフォークリフトといった、各種フォークリフトを採用してもよい。また、走行駆動系が走行モータを備えている場合を例示したが、走行駆動系がエンジンを備えている場合であってもよい。
また、上述の実施形態では、各実施形態に対応する判定パラメータを例示したが、本発明の趣旨を逸脱しない範囲で、他の判定パラメータを採用してもよい。また、判定条件も一例にすぎず、適宜変更してもよい。
実施形態では、リフトシリンダ24の圧力を検出する圧力センサの位置を、リフトシリンダ24の作動油の流量を制御するバルブ付近に設けた例を記載しているが、リフトシリンダ24の圧力を検出できれば、そのような位置に限定されない。例えば、バルブとリフトシリンダ24とを接続する油圧配管の圧力を測定してもよい。