(57)【特許請求の範囲】
【請求項１】
車両の走行路を複数のノードと該ノードを結ぶ複数のリンクで表した地図データを記憶する地図データ記憶手段と、
センサにより検出される車輪の回転数と車両の旋回角に基づいて車両の走行位置を推定する走行位置推定手段と、
前記地図データの前記ノードの位置及びリンクの方向と前記推定位置に基づいて、前記車両が走行していると推定される現在のリンクにおける両端のノードのうち、前記車両の推定位置に近い方のノードにつながるリンクを候補リンクとして探索し、前記車両が旋回するとき、該候補リンクの中で前記車両の推定位置と距離の最も近いリンクを現在の走行位置を示すリンクと推定し、前記車両の推定走行方向と同じ方向のリンクが存在しない場合には、前記候補リンクの末端のノードにつながる第２の候補リンクを探索し、該第２の候補リンクの中で前記車両の推定位置と距離の最も近いリンクを現在の走行位置を示すリンクと推定するリンク推定手段と、
前記推定位置から求められる前記車両の推定走行方向を示すデータを、前記リンク推定手段により推定されたリンクの方向と一致するように修正する修正手段とを備えることを特徴とする車両の走行方向の傾き修正装置。
【請求項２】
走行路を複数のノードと該ノードを結ぶ複数のリンクで表した地図データを地図データ記憶手段に記憶し、
センサにより検出される車輪の回転数と車両の旋回角に基づいて車両の走行位置を推定し、
前記地図データの前記ノードの位置及びリンクの方向と前記推定位置に基づいて、前記車両が走行していると推定される現在のリンクにおける両端のノードのうち、前記車両の推定位置に近い方のノードにつながるリンクを候補リンクとして探索し、前記車両が旋回するとき、該候補リンクの中で前記車両の推定位置と距離の最も近いリンクを現在の走行位置を示すリンクと推定し、前記車両の推定走行方向と同じ方向のリンクが存在しない場合には、前記候補リンクの末端のノードにつながる第２の候補リンクを探索し、該第２の候補リンクの中で前記車両の推定位置と距離の最も近いリンクを現在の走行位置を示すリンクと推定し、
前記推定位置から算出される前記車両の推定走行方向を示すデータを、推定されたリンクの方向と一致するように修正することを特徴とする車両の走行方向の傾き修正方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、車両の走行方向の傾き修正装置及びその修正方法に関する。
【０００２】
【従来の技術】
工場、倉庫などにおいて、予め決められた走行路を走行して荷物を搬送する搬送システムが導入されている。この搬送システムは、複数台の運搬車と、それらの運行状況を把握するサーバ装置とから構成されている。
【０００３】
運搬車の現在位置は、例えば運搬車の内部のコントローラが車輪の回転数と車輪の外形寸法から走行距離を、また角速度センサの出力から旋回角を算出し、スタート地点の位置データと算出した走行距離と旋回角とから現在位置を推定している。また、上記のようにして車両の走行位置を推定するシステムでは、走行路の途中に予め位置データの分かっている基準点を設け、運搬車のセンサなどで基準点を検出することで位置データを補正することも行われている。
【０００４】
【発明が解決しようとする課題】
しかしながら、屈曲した走行路を走行する場合などには、走行距離と旋回角とから算出した位置データの誤差が累積されて、推定位置から算出される車両の走行方向を示す傾きが実際の通路からずれてしまうことがある。
【０００５】
本発明の課題は、車両の傾きを走行路に合わせて修正できるようにすることである。
【０００６】
【課題を解決するための手段】
本発明の車両の走行方向の傾き修正装置は、車両の走行路を複数のノードと該ノードを結ぶ複数のリンクで表した地図データを記憶する地図データ記憶手段と、センサにより検出される車輪の回転数と車両の旋回角に基づいて車両の走行位置を推定する走行位置推定手段と、前記地図データの前記ノードの位置及びリンクの方向と前記推定位置に基づいて、前記車両が走行していると推定される現在のリンクにおける両端のノードのうち、前記車両の推定位置に近い方のノードにつながるリンクを候補リンクとして探索し、前記車両が旋回するとき、該候補リンクの中で前記車両の推定位置と距離の最も近いリンクを現在の走行位置を示すリンクと推定し、前記車両の推定走行方向と同じ方向のリンクが存在しない場合には、前記候補リンクの末端のノードにつながる第２の候補リンクを探索し、該第２の候補リンクの中で前記車両の推定位置と距離の最も近いリンクを現在の走行位置を示すリンクと推定するリンク推定手段と、前記推定位置から求められる前記車両の推定走行方向を示すデータを、前記リンク推定手段により推定されたリンクの方向と一致するように修正する修正手段とを備える。
【０００７】
この発明によれば、車両の推定走行方向を示すデータを走行路に適合するように修正することができる。
【０００８】
このように構成することで、車両の傾きの修正が必要なリンクを指定して修正を行うことができるので修正処理を効率的に実行させることができる。
上記の発明において、前記リンク推定手段は、車両の推定位置に近い方のノードにつながるリンクを候補リンクとして探索し、該候補リンクの中で車両の推定位置と距離の最も近いリンクを次のリンクと推定するようにしても良い。
【０００９】
また、前記リンク推定手段は、車両の推定位置に近い方のノードにつながるリンクを候補リンクとして探索し、該候補リンクの中に該当するリンクが存在しない場合、あるいは該候補リンクの中に車両の傾きと一致するリンクが存在しない場合には、前記候補リンクの末端のノードにつながる第２の候補リンクを探索し、該第２の候補リンクの中で車両の推定位置と距離の最も近いリンクを次のリンクと推定するようにしても良い。
【００１０】
上記のように構成することで、車両の走行しているリンクを的確に探し出すことができる。
上記の発明において、前記傾き修正手段は、リンクの方向が水平かまたは垂直かにより車両の傾きに９０°を加算し、水平または垂直の軸を基準とした角度に変換して修正角度を算出するようにしても良い。
【００１１】
このように構成することで、垂直及び水平のいずれの方向に走行している場合でも、同じ処理で車両の傾きとリンクのなす角度を求めることができるので、垂直方向、水平方向のそれぞれの場合について別のプログラムを作成する必要がなく処理プログラムが簡素になる。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。実施の形態の車両は、決められた走行路を走行する運搬車、フォークリフト等である。車両は、図示していないが、車輪の回転数を検出するセンサと、搬送車の旋回角を検出する角速度センサと、それらのセンサの出力から現在位置を推定するコントローラ等からなる。また、車両は、走行路の地図データを保持し、コントローラが車両の推定位置から算出される傾き（車両の推定位置から算出される車両の進行方向を示す角度）を地図データのノードとリンクとに基づいて修正する機能を有している。
【００１３】
図１は、走行路を複数のノードとノードを結ぶリンクで表したときのノードとリンクを示す図である。ノードは通路が交差する点を示し、ノードとノードを結ぶ通路をリンクと呼んでいる。もちろん、通路の交差する点以外の位置をノードとして定義しても良い。
【００１４】
ノードは、ＩＤ番号、位置座標、ノードにつながるリンクの数、ノードにつながるリンクＩＤ番号等で定義される。リンクは、ＩＤ番号、リンクの両端のノードのＩＤ番号、リンクが表す通路の幅、リンクが表す通路の長さ、リンクの属性（垂直、水平）等で定義される。
【００１５】
本実施の形態では、車両の傾きの修正を行うリンクを指定できるようになっている。傾きの修正を行うリンクの指定方法としては、例えば、１６ビットの各ビット位置とリンクＩＤとを対応させて”１”または”０”のデータをＥＥＰＲＯＭ等に書き込み、現在のリンクＩＤと、記憶されているリンクＩＤのデータとを比較し、対応するビットが”１”のリンクを走行しているときには傾きを修正し、対応するビットが”０”のリンクでは傾きの修正を行わないようにする。
【００１６】
図１に示すように、ノードＮ０には、Ｌ０，Ｌ１，Ｌ２，Ｌ３の４本のリンクがつながっている。リンクＬ０の両端は、ノードＮ０とノードＮ０−１に接続されている。リンクＬ１の両端は、ノードＮ０とノードＮ１に接続されている。リンクＬ２の両端は、ノードＮ０とノードＮ２に接続されている。
【００１７】
上述したように、車両がそのとき走行しているリンクを推定することで、そのリンクに接続するノードを特定し、さらにそのノードに接続するリンクを特定することができる。従って、次に進むリンクを特定するために、車両の推定位置に近いノードのＩＤ番号を地図データから取得し、さらに取得したＩＤ番号のノードに接続するリンクのＩＤ番号を候補リンクのＩＤ番号として取得する。そして、それら候補リンクの中で車両の進行方向と一致し、かつ距離の近いリンクのＩＤ番号を選択する。これにより、車両が次に進むリンクを特定することができる。
【００１８】
図２（Ａ）は、車両が直進する場合の候補リンクの探索方法の説明図である。今、車両の推定位置が、図２（Ａ）のＰ０の位置で、現在のリンクがリンクＬ０、推定位置がリンクＬ０の中点よりノードＮ１寄りであるとすると、推定位置に近い方のノードＮ１を選択し、そのノードＮ１に接続されるリンクＬ１，Ｌ２，Ｌ３を候補リンクとして選択する。あるいは、車両の進行方向と現在のリンクＬ０とから前方のノードがノードＮ１であることが分かるので、そのノードＮ１につながるリンクＬ１，Ｌ２，Ｌ３を候補リンクとして選択する。
【００１９】
図２（Ａ）の例では、車両は垂直方向に進んでいるので、垂直方向の属性を有するリンクＬ２を次に進むべきリンクと推定する。そして、推定位置がノードＮ１を越えたなら、現在のリンクをＬ０からＬ２に変更する。なお、垂直方向とは、図１〜図３の紙面の縦方向を、水平方向は紙面の横方向を意味する。
【００２０】
図２（Ｂ）は、車両が右方向に旋回するときのリンクの探索方法（旋回１の候補リンク探索方法）の説明図である。
今、車両が、図２（Ｂ）の垂直方向に走行した後、右方向に旋回しＰ地点にいて、それ以前に走行していた通路がリンクＬ０であることが分かっているとする。リンクＬ０の上側の末端のノードＮ０につながるリンクが候補リンクとして探索される。その結果、候補リンクとしてリンクＬ１，Ｌ２，Ｌ３が選ばれる。これらの候補リンクの中で、水平方向の属性を有するリンクはリンクＬ１，Ｌ３の２つであるが、車両の推定位置との距離が最も近いのはリンクＬ１であるので、リンクＬ１が現在のリンクと推定される。
【００２１】
次に、図３は、上述した旋回１の候補リンクの探索方法で候補リンクがみつからなかった場合の探索方法（旋回２の候補リンク探索方法）の説明図である。
車両が、図３のリンクＬ０を走行した後、右方向に旋回しＰ地点にいるものとする。それ以前に走行していた通路がリンクＬ０であることが分かっているので、最初に、リンクＬ０の延長上で、末端のノードＮ０につながるリンクＬ１が候補リンクとして探索される。しかしながら、リンクＬ１の方向は車両の走行方向と一致しないので、次に、リンクＬ１の末端のノードで、ノードＮ０以外のノードであるノードＮ１が選択される。そして、ノードＮ１につながるリンクとしてリンクＬ３とリンクＬ２が候補リンクとして選ばれ、それらのリンクの中で車両の推定位置Ｐに近いリンクＬ２が現在のリンクと推定される。旋回後にそのリンクＬ２の方向と一致するように車両の傾きを修正する。
【００２２】
次に、図４は、車両の位置推定処理及びマップマッチングによる傾きの修正処理のフローチャートである。
初めにヨーレイト（角速度）信号の加工と車速信号の取り込みを行う（図４、Ｓ１２）。
【００２３】
次に、車両の運動状態、つまり車両が直進しているか、旋回中か、停止しているかを判断する（Ｓ１３）。
車両が光ビーコンから放射される光信号の受信エリア内にあるときには、受信したデータに基づいて車両の推定位置を修正する（Ｓ１４）。
【００２４】
ステップＳ１３の車両の運動状態の判断で、停止中と判断されたときには、ヨーレートの基準値を更新する（Ｓ１５）。さらに、現在位置を停止位置として不揮発性のメモリ等に記録する（Ｓ１６）。これは、車両の電源がオフされた場合に、位置情報が失われないようにするためである。
【００２５】
次に、マップマッチング、つまり地図データとの照合において、車両の傾きを補正するときに使用されるヨーレートデータをリセットする（Ｓ１７）。最後に、位置情報を、車両の走行軌跡を記録するサーバに出力する（Ｓ１８）。
ステップＳ１３の車両の運動状態の判断で、車両が走行中であると判断された場合には、ステップＳ１９に進み、傾きの修正に用いる変数を初期化する。そして、全体の処理を５回実行するごとに１回の割合でマップマッチングによる角度修正を行う（Ｓ２０）。この角度修正処理では、車両の傾きが、後述するステップＳ２３で求められるリンクの方向と一致するように修正される。なお、傾きの修正は、指定されたリンク上で、車両が直進している場合に行う。
【００２６】
さらに、車両の傾きと単位時間当たりの走行距離とを示す移動ベクトルを推定する（Ｓ２１）。移動ベクトルに基づいて車両の推定位置を更新する（Ｓ２２）。
また、マップマッチングにより現在どのリンクを走行しているかを推定する（Ｓ２３）。そして、上述したステップＳ１８に進み、更新した位置情報をサーバに出力する。
【００２７】
上記の処理により、走行路をリンクとノードで表した地図データと車両の推定位置とを照合して走行中のリンク（通路）を推定し、そのリンクの方向と一致するように車両の傾きを修正することで、地図データにマッチするように車両の傾きを修正することができる。
【００２８】
次に、ノードとリンクで表した地図データと照合して車両の傾きを修正する処理の一例を、図５、図７〜図１０のフローチャート及び図６の傾き角の算出方法の説明図を参照して説明する。
車両の速度を示す変数ＳＰＤの絶対値が所定の設定値より大きいか否かを判別する（図５，Ｓ３１）。
【００２９】
変数ＳＰＤの絶対値が設定値以下のときは（Ｓ３１，ＮＯ）、タイマの値ｔｍに「０」を設定し（Ｓ３２）、処理を終了する。
他方、変数ＳＰＤの絶対値が設定値より大きいときには（Ｓ３１，ＹＥＳ）、傾きの修正を行うタイミングか否かを判別する（Ｓ３３）。例えば、全体の処理の実行回数が一定回数に達したとき車両の傾きの修正を行うようにし、実行回数が一定回数に達したか否かにより修正タイミングか否かを判断する。
【００３０】
車両の傾きを修正するタイミングであれば（Ｓ３３，ＹＥＳ）、ステップＳ３４に進み、車両が直進しているときの過去のヨーレートデータの値が一定範囲内のデータ数をカウントし、カウント結果を変数”ｓｔｒａｉｇｈｔ＿ｃｎｔ”の値として設定する。
【００３１】
次に、タイマｔｍの値が、タイマの設定値未満か否かを判別する（Ｓ３５）。タイマｔｍの値が所定の設定値未満のときは（Ｓ３５，ＹＥＳ）、ステップＳ３６に進みｔｍの値をカウントアップする。
他方、タイマｔｍの値が所定の設定値以上のときには（Ｓ３５，ＮＯ）、ステップＳ３７に進み、ヨーレートセンサから出力されるラジアンで表された角速度から得られる車両の傾き（推定位置の変化から算出されるＸ軸またはＹ軸に対する角度）を、少数点以下２位までのｄｅｇで表される角度に変換する。
【００３２】
次に、車両の傾きを修正する指定リンクをチェックし（Ｓ３８）、現在のリンクが車両の傾きの修正を行う指定リンクか否かを判別する（Ｓ３９）。
指定リンクのときには（Ｓ３９，ＹＥＳ）、ステップＳ４０に進み直進か否かを判別する。現在走行しているリンクが指定リンクでないとき、あるいは指定リンクであっても直進中ではないときには、そこで処理を終了する。
【００３３】
他方、走行中のリンクが指定リンクで、かつ直進中のときには、ステップＳ４１に進み、現リンクの属性が垂直か否かを判別する。
現在のリンクの属性が垂直のときは（Ｓ４１，ＹＥＳ）、車両の傾きに「９０°」を加算する（Ｓ４２）。そして、加算した結果が「３６０°」を超える場合には、その値に「−３６０°」を加算する（Ｓ４３）。その後、ステップＳ４４に進む。他方、現リンクが水平のときには、そのままステップＳ４４に進む。
【００３４】
ステップＳ４４では、傾き角に「−９０°」を加算した値を変数”ｄｉｆｆ１”の値として、傾き角に「−２７０°」を加算した値を変数”ｄｉｆｆ２”の値として設定する（Ｓ４４）。
次に、変数”ｄｉｆｆ１”または変数”ｄｉｆｆ２”が「０」か否かを判別する（Ｓ４５）。
【００３５】
変数”ｄｉｆｆ１”と変数”ｄｉｆｆ２”が「０」でないときには（Ｓ４５，ＮＯ）、ステップＳ４６に進み、”ｄｉｆｆ１”の絶対値より”ｄｉｆｆ２”の絶対値の方が大きいか否かを判別する。
”ｄｉｆｆ２”の絶対値が”ｄｉｆｆ１”の絶対値より大きいときには（Ｓ４６，ＹＥＳ）、ステップＳ４７に進み、絶対値の小さい”ｄｉｆｆ１”の値に一定の係数”ｒａｔｅ”を乗算して車両の傾きを修正する。ここで、”ｒａｔｅ”は車両の傾きを徐々に修正するための一定の係数である。傾きを徐々に修正することにより、傾きが過修正となるのを防止し、傾きを目標とするリンクの方向と一致するように滑らかに、かつ正確に修正することができる。
【００３６】
また、”ｄｉｆｆ２”の絶対値が”ｄｉｆｆ１”の絶対値と等しいか、それより小さいときには（Ｓ４６，ＮＯ）、ステップＳ４８に進み、ｄｉｆｆ２の値に”ｒａｔｅ”の値を乗算して傾きを修正する。
ここで、図６は、車両の傾き角の補正方法の説明図である。
【００３７】
図６（Ａ）は、リンクの方向が水平の場合の例を示している。図６（Ａ）の反時計方向を正としたときに、車両の傾きが「８０°」の場合、傾き角「８０°」に「−９０°」を加算して得られる「−１０°」を”ｄｉｆｆ１”として求め、傾き角「８０°」に「−２７０°」を加算して得られる「−１９０°」を”ｄｉｆｆ２”として求め、両者の絶対値を比較する。この場合、ｄｉｆｆ１の絶対値「１０°」の方が小さいので、傾き角が「９０°」になるようにｄｉｆｆ１の値「１０°」だけ傾き角を修正することで、車両の傾きを水平のリンクの方向と一致させることができる。
【００３８】
図６（Ｂ）、（Ｃ）は、リンクの方向が垂直の場合の例を示している。図６（Ｂ）は、車両の傾きが「１０°」の例を示している。この場合、リンクが垂直であるので、図５のステップＳ４２の処理で、傾きに「９０°」を加算した値「１００°」が算出される。その後、上述したリンクが水平の場合と同様に、傾き「１００°」に「−９０°」と「−２７０°」をそれぞれ加算した値を、ｄｉｆｆ１，ｄｉｆｆ２として求め、両者の絶対値を比較する。この場合、ｄｉｆｆ１が「１０°」、ｄｉｆｆ２が「−１７０°」で、ｄｉｆｆ１の絶対値の方が小さい。従って、車両の元の傾き「１０°」をｄｉｆｆ１の値の「１０°」だけ修正することで傾きが「０°」となり、車両の傾きを垂直のリンクの方向と一致させることができる。
【００３９】
図６（Ｃ）は、車両の傾きが「３４０°」の例を示している。この場合、傾き「３４０°」に「９０°」を加算すると「３６０°」を超えてしまうので、加算結果に「−３６０°」を加算して、傾きとして「７０°」を求める。その後、上述したのと同様に算出した傾き「７０°」に「−９０°」と「−２７０°」をそれぞれ加算した値を、ｄｉｆｆ１，ｄｉｆｆ２として求め、両者の絶対値を比較する。この場合、ｄｉｆｆ１の絶対値の方が小さいので、車両の元の傾き「３４０°」をｄｉｆｆ１の値「−２０°」だけ修正することで、傾きが「０°」となり、車両の傾きを垂直のリンクの方向と一致させることができる。
【００４０】
このように、リンクが垂直の場合も、車両の傾きに「９０°」を加算して、水平方向の軸を基準とした傾き角に変換し、９０°と２７０°との角度差ｄｉｆｆ１，ｄｉｆｆ２を求めることで、垂直のリンクの方向と一致させるための修正角度を求めることができる。従って、リンクが水平の場合と垂直の場合の両方の傾きの修正角度を、同じ９０°と２７０°を基準にして算出することができるので、リンクが水平、垂直の何れの場合でも傾きを修正するためのプログラムを共通にできるのでプログラムが簡素になる。
【００４１】
なお、傾きが負の値となる場合には、その絶対値をとって上記と同じ演算により傾きの修正角度を算出することができる。
次に、候補リンクの探索処理を図７〜図１０を参照して説明する。最初に、車両の現在位置がマップマッチングを行う領域か否かを判別する（図７，Ｓ５１）。現在位置がマップマッチングを行わない領域のときには（Ｓ５１，ＹＥＳ）、ステップＳ５２に進み、現在のリンクを示す”ｌｎｋＮｏｗ”に、存在しないリンクＩＤである”ＬＩＮＫ＿ＩＤ＿ＮＵＭ”を設定する。これにより候補リンクの探索処理は実行されない。
【００４２】
現在位置がマップマッチングを行う領域であるときには（Ｓ５１，ＮＯ）、ステップＳ５３に進み、現在のリンク（”ｌｎｋＮｏｗ”）が”ＬＩＮＫ＿ＩＤ＿ＮＵＭ”か否か、すなわち現在のリンクが不明か否かを判別する。
”ｌｎｋＮｏｗ”が”ＬＩＮＫ＿ＩＤ＿ＮＵＭ”であると判別された場合（Ｓ５３，ＹＥＳ）、すなわち、現在のリンクが不明のときには、ステップＳ５４に進み、地図データの全てのノード及びリンクを検索して、車両の推定位置に近いリンクを推定する。
【００４３】
”ｌｎｋＮｏｗ”が”ＬＩＮＫ＿ＩＤ＿ＮＵＭ”ではないと判別された場合（Ｓ５３，ＮＯ）、すなわちリンクが不明でないときには、図８のステップＳ６１に進む。ステップＳ６１では、現在のリンク上の最近傍のノード、つまりリンクの末端のノードを地図データから選択する。
【００４４】
次に、旋回中か否かを判断するために、「０」以外のヨーレートデータが一定割合以上あるか否かを調べ（Ｓ６２）、車両が旋回中か否かを判断する（Ｓ６３）。
旋回中のときには（Ｓ６３，ＹＥＳ）、ステップＳ６４に進み候補リンクの探索を行う。このステップＳ６４では、前述した図２（Ｂ）で説明した旋回１の候補リンクの探索方法で探索を行う。
【００４５】
次に、候補リンクが検出されたか否かを判別する（Ｓ６５）。上記の探索方法で候補リンクが探索できなかったときには（Ｓ６５，ＹＥＳ）、ステップＳ６６に進み、図３で説明した旋回２の候補リンクの探索方法で探索を行う。そして、次のステップＳ６７で、候補リンクが検出されたか否かを判別する。
【００４６】
候補リンクが検出されなかったときには（Ｓ６７，ＹＥＳ）、ステップＳ６８に進み、地図データの全てのノードとリンクを調べ、推定位置に近いリンクを探す。そして、リンクの更新状態を示す”ｌｎｋ＿ｕｐｄａｔｅ”に初期状態であることを示す”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”を設定する（Ｓ６９）。
【００４７】
ステップＳ６５またはステップＳ６７の候補リンクの探索で候補リンクが検出された場合には（Ｓ６５またはＳ６７、ＮＯ）、ステップＳ７０に進み、車両の推定位置と”ｌｎｋＮｏｗ”で指定されるリンクとの間の距離を算出する。また、車両の推定位置と候補リンクとの距離を算出する（Ｓ７１）。そして、距離の近い方のリンクのリンクＩＤを”ｌｎｋＮｏｗ”に設定する（Ｓ７２）。その後、上述したステップＳ６９に進み”ｌｎｋ＿ｕｐｄａｔｅ”に初期状態であることを示す”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”を設定する。
【００４８】
ステップＳ６３において、車両が旋回していないと判別されたとき（Ｓ６３，ＮＯ）、すなわち、車両が直進しているときには、図９のステップＳ８１に進む。ステップＳ８１では、車両の推定位置がノードから一定範囲内か否かを判別する。
【００４９】
推定位置がノードから一定範囲内であるときには（Ｓ８１，ＹＥＳ）、ステップＳ８２に進み”ｌｎｋ＿ｕｐｄａｔｅ”の内容を判別する。
ステップＳ８２において、”ｌｎｋ＿ｕｐｄａｔｅ”が初期状態を示す”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”と判別された場合には、ステップＳ８３に進み属性が水平または垂直の候補リンクを探索する。候補リンクの探索は、例えば、図２（Ａ）で説明した探索方法で行う。そして、候補リンクが検出されたか否かを判別する（Ｓ８４）。
【００５０】
候補リンクが検出されたときには（Ｓ８４，ＹＥＳ）、候補リンクＩＤを保持する（Ｓ８５）。そして、”ｌｎｋ＿ｕｐｄａｔｅ”に、候補リンクが検出されたことを示す”ＬＮＫ＿ＵＰＤＴ＿ＲＥＡＤＹ＿ＳＴＲＡＩＧＨＴ”を設定する（Ｓ８６）。
【００５１】
候補リンクが検出されなかったときには（Ｓ８４，ＮＯ）、ステップＳ８７に進み”ｌｎｋ＿ｕｐｄａｔｅ”に候補リンクが存在しないことを示す”ＬＮＫ＿ＵＰＤＴ＿ＮＯ”を設定する。
ステップＳ８２において”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＲＥＡＤＹ＿ＳＴＲＡＩＧＨＴ”であると判別された場合には、ステップＳ８８に進み推定位置がノードを越えたか否かを地図データを参照して判別する。
【００５２】
ノードを越えているときには（Ｓ８８，ＹＥＳ）、リンクＩＤを候補リンクＩＤに変更する（Ｓ８９）。その後、”ｌｎｋ＿ｕｐｄａｔｅ”に、リンクを更新したことを示す”ＬＮＫ＿ＵＰＤＴ＿ＯＫ＿ＳＴＲＡＩＧＨＴ”を設定する（Ｓ９０）。
【００５３】
ステップＳ８２において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＯＫ＿ＳＴＲＡＩＧＨＴ”であると判別された場合には、ステップＳ９１に進み前後進の切り換えが行われたか否かを判別する
前後進の切り換えが行われているときには（Ｓ９１，ＹＥＳ）、ステップＳ９２に進み、”ｌｎｋ＿ｕｐｄａｔｅ”にリンクの更新が行われていない初期状態であることを示す”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”を設定する。
【００５４】
ステップＳ８２において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＮＯ”であると判別された場合には、ステップＳ９３に進み、前後進の切り換えが行われたか否かを判別する。
ステップＳ８２において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＩＮＴＥＲＡＲＥＡ”であると判別された場合、またはステップＳ９３において前後進の切り換えが行われたと判別された場合には、ステップＳ９４に進み”ｌｎｋ＿ｕｐｄａｔｅ”に”ＬＮＫ＿ＵＰＤＴ＿ＩＧＮＯＲＥ”を設定する。
【００５５】
ステップＳ８２において”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＩＧＮＯＲＥ”であると判別された場合には、ステップＳ９５に進み、前後進の切り換えが行われたか否かを判別する。
前後進の切り換えが行われた場合には（Ｓ９５，ＹＥＳ）、ステップＳ９６に進み、”ｌｎｋ＿ｕｐｄａｔｅ”に”ＬＮＫ＿ＵＰＤＴ＿ＮＯ”を設定する。
【００５６】
ステップＳ８１において、車両の推定位置がノードの一定範囲外と判別された場合には（Ｓ８１，ＮＯ）、図１０のステップＳ１０１に進み、”ｌｎｋ＿ｕｐｄａｔｅ”の内容を判別する。
ステップＳ１０１において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＲＥＡＤＹ＿ＳＴＲＡＩＧＨＴ”であると判別された場合、すなわち候補リンクが存在するときには、ステップＳ１０２に進み車両がノードを越えたか否かを判別する。
【００５７】
ノードを越えたときには（Ｓ１０２，ＹＥＳ）、ステップＳ１０３に進みリンクＩＤを候補リンクＩＤに変更してリンクを更新する。リンクを更新したなら、次のステップＳ１０４で”ｌｎｋ＿ｕｐｄａｔｅ”に”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”を設定する。また、ノードを越えていないときも（Ｓ１０２，ＮＯ）、ステップＳ１０４の処理を実行する。
【００５８】
ステップＳ１０１において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＮＯ”と判別された場合、すなわち候補リンクが探索できなかった場合には、ステップＳ１０５に進み、”ｌｎｋ＿ｕｐｄａｔｅ”に”ＬＮＫ＿ＵＰＤＴ＿ＩＮＴＥＲＡＲＥＡ”を設定する。
【００５９】
ステップＳ１０１において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”であると判別された場合には、ステップＳ１０６に進み車両の推定位置が現在のリンクの外側、つまりリンクの幅を外れているか否かを判別する。推定位置がリンクを外れている場合には（Ｓ１０６，ＹＥＳ）、ステップＳ１０８に進み、車両の推定位置と地図データの全てのノード及びリンクとを比較し、現在走行しているリンクを推定する。そして、推定したリンクのリンクＩＤを現在のリンクとして設定する（Ｓ１０９）。これによりリンクの更新が終了したので、”ｌｎｋ＿ｕｐｄａｔｅ”に”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”を設定する（Ｓ１１０）。
【００６０】
ステップＳ１０１において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ＬＮＫ＿ＵＰＤＴ＿ＩＮＴＥＲＡＲＥＡ”であると判別された場合には、ステップＳ１０７に進み現在のリンクの両端のノードから一定距離以上離れているか否かを判別する。
両端のノードから一定距離以上離れている場合には（Ｓ１０７，ＹＥＳ）、現在のリンクから次のリンクを推定することができないので、上述したステップＳ１０８に進み車両の推定位置と地図データの全てのノード及びリンクとを比較して現在のリンクを推定する。その後、上述したステップＳ１０９及びＳ１１０の処理を実行する。
【００６１】
ステップＳ１０１において、”ｌｎｋ＿ｕｐｄａｔｅ”が”ｄｅｆａｕｌｔ”、つまり上述したいずれのデータでもなかった場合には、ステップＳ１１１に進み、”ｌｎｋ＿ｕｐｄａｔｅ”に”ＬＮＫ＿ＵＰＤＴ＿ＩＮＩＴ”を設定する。上述した実施の形態によれば、ノードとリンクにより表された地図データと車両の推定位置とに基づいて現在のリンクを推定し、そのリンクの方向と一致するように車両の傾きを修正することで、推定位置の誤差等による車両の傾きのずれを修正することができる。
【００６２】
また、傾きの修正を行うリンクを任意に指定できるので、一定距離ごと、あるいは車両の傾きを正確に修正したい地点で修正を行うことができ、修正処理を必要以上に行う必要がなくなり、処理時間を短縮できる。
さらに、傾きを修正する際に修正量に係数を乗算して修正を徐々に行うようにしたので、過修正となるのを防止でき、車両の傾きを的確に修正できる。
【００６３】
本発明は、上述した実施の形態に限らず、以下のように構成しても良い。
上述した実施の形態は車両が傾き修正機能を有する場合について説明したが、サーバが車両の走行しているリンクを推定する機能を有し、車両の推定位置データと推定したリンクとに基づいて車両に傾きの修正を指示するようにしても良い。
【００６４】
上述した実施の形態では、リンクが垂直、水平の属性データを保持しているが、さらにノードがリンクの方向を示す属性データを保持するようにしても良い。その場合、ノードの座標を中心にしてリンクの方向を上下、左右の方向を示すデータを保持すれば、複数の候補リンクが存在する場合にリンクの絞り込みをより簡単に行うことができる。
【００６５】
本発明は、構内運搬車に限らず、部品運搬車、その他の車両に適用できる。
【００６６】
【発明の効果】
本発明によれば、車両の走行方向の傾きの誤差を修正することができる。
【図面の簡単な説明】
【図１】実施の形態の地図データのノードとリンクを示す図である。
【図２】図２（Ａ）、（Ｂ）は、候補リンクの探索方法の説明図である。
【図３】候補リンクの探索方法の説明図である。
【図４】車両の位置推定処理及び傾きの修正処理のフローチャートである。
【図５】傾きの修正処理のフローチャートである。
【図６】車両の傾き角の算出方法の説明図である。
【図７】候補リンクの探索処理のフローチャート
【図８】候補リンクの探索処理のフローチャート
【図９】候補リンクの探索処理のフローチャート
【図１０】候補リンクの探索処理のフローチャート
【符号の説明】
Ｎ０、Ｎ２、Ｎ３      ノード
Ｌ１、Ｌ２、Ｌ３      リンク
【図１】
0004193389.tif 000002
【図２】
0004193389.tif 000003
【図３】
0004193389.tif 000004
【図４】
0004193389.tif 000005
【図５】
0004193389.tif 000006
【図６】
0004193389.tif 000007
【図７】
0004193389.tif 000008
【図８】
0004193389.tif 000009
【図９】
0004193389.tif 000010
【図１０】
0004193389.tif 000011