專利名稱:一種車載機自主導航方法
技術領域:
本發明涉及一種車輛的導航方法。
背景技術:
隨著汽車數量的大幅度增長,具有衛星定位(GPQ的車載導航設備(以下簡稱車 載機)日益得到普及。現有的車載機分為自主導航和中心導航兩大類。其中,自主導航是 指車載機內保存有電子地圖數據;需要導航時,車載機按照駕駛員輸入的目的地信息和車 輛的當前位置信息利用上述電子地圖數據規劃出導航路徑,然后分段顯示該路徑上的具體 道路信息,引導駕駛員駛向目的地。為了規劃出最短的導航路徑,通常采用Dijkstra(迪杰 斯特拉)單源最短路徑算法,采用該算法的導航過程,有以下的操作步驟步驟A',分別找出車輛當前位置(起點)和目的地(終點)所在的道路弧;把起 點道路弧添加到待考察的道路弧列表(簡稱開表);執行步驟B'。步驟B',取出開表中離起點道路弧路徑最短的道路弧作為當前道路弧;把當前 道路弧及其前趨弧信息加入到已考察的道路弧列表(簡稱閉表)中。執行步驟C'。步驟C',判斷當前道路弧是否是終點道路弧;是則執行步驟D';不是則依據當 前道路弧連接的轉向元素查找所有可達的下一條道路弧;將當前道路弧設置為所有可達的 下一條道路弧的前趨道路弧;把找到的所有可達的下一條道路弧加入到開表中;執行步驟 B',繼續向前搜索,直至推進到終點道路弧。步驟D',從閉表取出終點道路弧作為當前道路弧,開始進行回溯;把當前道路弧 添加到最短路徑弧序列開頭;在閉表里查找當前道路弧的前趨道路弧,作為當前道路弧,把 新的當前道路弧添加到最短路徑弧序列開頭,直至當前道路弧是起點道路弧,最短路徑道 路弧序列順序記錄了本最短路徑上的每一條道路弧。依據最短路徑道路弧序列在電子地圖 數據中索引與各道路弧對應的道路邊信息,統計路長并生成包含可輸出顯示的道路點信息 的詳細導航路徑。執行步驟E'。步驟E',運用詳細導航路徑進行導航顯示,引導駕駛員將車輛駛向目的地。上述車載機自主導航的過程中步驟B'和步驟C'反復循環,以計算一個道路弧 節點到其他所有相關道路弧節點的最短路徑,以起點道路弧為中心向外層層擴展,直到擴 展到終點道路弧為止。計算量非常大,且開表中存儲的中間數據量也非常大。所以目前自 主導航受車載機內嵌入式微處理器系統運行速度和內存容量的限制,多用于省內的導航, 即車載機僅保存本省的電子地圖數據,以有限的運行速度和內存容量規劃出省內的導航路 徑。目前,對于全國范圍內跨越數省的遠距離導航而言,車載機自主導航由于使用的內存量 巨大,車載機的內存容量難以滿足運算的需要;與由于計算時間長,進入導航狀態前的等待 時間長;所以不適合全國范圍內跨越數省的遠距離導航。
發明內容
本發明旨在提供一種可快速進入導航狀態且占用內存少,適合全國范圍內跨越數省的遠距離導航的車載機自主導航方法。本發明的技術方案是一種車載機自主導航方法,包含步驟A,將全國范圍的電子地圖按相同大小的矩形分割成順序編號的網格;對每 一網格內的道路弧、道路弧的轉向元素、道路邊和道路邊上的點重新編號,逐一生成對應網 格的基礎數據表;對于所有網格逐一用本網格的基礎數據表建立本網格內每一條入弧到 所有出弧的轉向元素,計算出本網格內每一條入弧到所有出弧的最短路徑的長度,將本網 格內每一條入弧到所有出弧的轉向元素及所述最短路徑的長度記錄到本網格的簡化數據 表;步驟B,將所有網格的基礎數據表和簡化數據表下載到車載機;步驟C,確定起點和終點所在的道路弧,及起點道路弧和終點道路弧所在的網格;步驟D,規劃出由起點網格內和終點網格內按對應基礎數據表導出的最短路徑、所 有中間網格內按對應簡化數據表導出的簡化最短路徑組成的簡化路徑;步驟E,按簡化路徑導航;其中,每當進入一個網格時將下一個中間網格的簡化最 短路徑轉化為按基礎數據導出的該網格內的最短路徑,供進入下一個中間網格時導航用。在優選的實施例中所述的步驟A中,具體將全國范圍的電子地圖按相同大小的 矩形分割成順序編號的網格;并對每一網格內的道路弧、道路弧的轉向元素、道路邊和道路 邊上的點重新編號,逐一生成對應網格的基礎數據表的處理,包含以下的子步驟子步驟Al,加載全國電子地圖的地圖源數據,按照規定的網格大小,對上述地圖源 數據進行切割并順序編號;計算出每個網格所覆蓋的道路弧、每一道路弧的所有轉向元素、 每一道路弧所對應的道路邊和每一道路邊上所有的點,對于每個穿越網格邊界的道路邊、 道路弧等分別切分,并在切分后的道路弧元素間生成新的轉向元素;子步驟A2,按網格編號,順序在每一個網格內對本網格內的道路弧、每一道路弧的 所有轉向元素、每一道路弧所對應的道路邊和每一道路邊上所有的點分別重新編號;依據 上述地圖源數據的拓撲關系,在每一網格內及其相鄰網格間對重新編號的道路弧、每一道 路弧的所有轉向元素、每一道路弧所對應的道路邊和每一道路邊上所有的點按新的編號建 立拓撲關系;把每一網格內的道路弧、每一道路弧的所有轉向元素、每一道路弧所對應的道 路邊和每一道路邊上所有的點,按照新的編號順序寫入本網格的基礎數據表。在優選的實施例中所述的步驟D中,具體規劃出由起點網格內和終點網格內按 對應基礎數據表導出的最短路徑、所有中間網格內按對應簡化數據表導出的簡化最短路徑 組成的簡化路徑的處理,包含以下的子步驟子步驟D1,用起點道路弧所連接的轉向元素查找出所有可達的下一條道路弧,將 起點道路弧作為這些道路弧的前趨道路弧;將這些道路弧及其前趨道路弧添加到開表中;子步驟D2,取出開表中離起點道路弧路徑最短的道路弧作為當前道路弧,把當前 道路弧及其前趨弧信息加入到閉表中;子步驟D3,若當前道路弧在起點網格,加載起點網格基礎拓撲數據表,找到所有當 前道路弧連接的轉向元素和所有可達的下一條道路弧;若當前道路弧在中間網格,加載當 前道路弧所在網格的簡化數據表,找到所有當前道路弧連接的簡化轉向元素和所有可達的 下一條道路弧;若當前道路弧在終點網格且不是終點道路弧,加載終點網格基礎數據表,找 到所有當前道路弧連接的轉向元素和所有可達的下一條道路弧;然后執行子步驟D4 ;若當前道路弧是終點道路弧,執行子步驟D5 ;子步驟D4,設置當前道路弧為所有可達的下一條道路弧的前趨道路弧,把找到的 所有可達的下一條道路弧及其前趨道路弧加入到開表中,返回執行子步驟D2 ;子步驟D5,取出閉表,把終點道路弧作為當前道路弧;子步驟D6,把當前道路弧添加到簡化路徑弧序列開頭;子步驟D7,判斷當前道路弧是否是起點道路弧,是則退出;否則在閉表里查找當 前道路弧的前趨道路弧,將該前趨道路弧作為當前道路弧,再次執行子步驟D6,繼續回溯。進而所述的步驟E中,按簡化路徑導航的處理,包含以下的子步驟子步驟E1,由簡化路徑弧序列的起點道路弧開始,置起點道路弧為當前道路弧;子步驟E2,判斷當前道路弧是否是終點道路弧,是則退出;否則由簡化路徑弧序 列取出下一條道路弧;子步驟E3,若下一條道路弧不是跨網格的弧,或者當前道路弧在起點網格或終點 網格內,則進行起點網格或終點網格內的導航顯示的擴展;否則進行中間網格的路徑擴展, 加載當前道路弧所在網格的基礎數據表,以本網格當前道路弧對應的入弧為起點道路弧, 下一條道路弧對應的出弧為終點道路弧,依據本網格的基礎數據表,利用dijkstra算法, 計算出本網格內基礎數據表示的最短路徑道路弧序列,把計算出來的道路弧序列,插入到 當前道路弧與下一條道路弧之間。計算出來的最短道路弧序列擴展了簡化路徑中間網格的 當前道路弧到跨網格的下一條道路弧之間的真實道路弧序列;子步驟E4,生成當前道路弧與下一個道路弧之間的詳細導航顯示信息,進行導航; 把下一條道路弧置為當前道路弧,返回執行子步驟E2,繼續向終點道路弧行進。本發明車載機自主導航方法,通過將全國電子地圖分割為網格化的基礎數據表, 再將每個網格的基礎數據表簡化為本網格的簡化數據表;該簡化數據表僅包含本網格內每 一條入弧到所有出弧的轉向元素和本網格內每一條入弧到所有出弧的最短路徑的長度;規 劃導航路徑時,只計算出由起點網格內和終點網格內按對應基礎數據表導出的最短路徑、 所有中間網格內按對應簡化數據表導出的簡化最短路徑組成的簡化路徑,大大簡化了所有 中間網格內最短路徑的計算量;在按簡化路徑導航的過程中,每當進入一個網格時再將下 一個中間網格的簡化最短路徑轉化為按基礎數據導出的該網格內的最短路徑,供進入下一 個中間網格時導航用;所以可快速進入導航狀態且占用內存少。以廈門到北京的導航過 程為例,按常規采用網格化地圖+di jkstra算法+嵌入式微處理器系統,得出全部導航路 徑耗費時間60秒左右,內存占用40M左右;采用本發明的優化導航方法,使用網格化地圖 +dijkstra算法+嵌入式微處理器系統,得出簡化路徑耗費時間8秒左右(這時即可開始導 航),內存占用2M-3M ;邊導航邊計算得出全部路徑總耗費時間20秒左右。在遠距離導航的 情況下,本發明可以明顯地減低硬件的開銷并提高了導航的響應速度。
圖1為本發明車載機自主導航方法一個實施例的流程圖。圖2為本發明車載機自主導航方法中對電子地圖劃分網格的示意圖。圖3為本發明車載機自主導航方法中對相鄰的兩個網格中一條道路弧進行切分 的示意圖。
圖4為圖3中相鄰的兩個網格中的那條道路弧被切分后的示意圖。圖5為圖1實施例中建立所有網格的基礎數據表的流程圖。圖6為圖1實施例中建立所有網格的簡化數據表的流程圖。圖7為本發明車載機自主導航方法中確定起點所在的道路弧的示意圖。圖8為圖1實施例中確定起點和終點所在的道路弧的流程圖。圖9為本發明車載機自主導航方法中利用網格簡化導航路徑計算的示意圖。圖10為圖1實施例中規劃導航路徑的流程圖之一。圖11為圖1實施例中規劃導航路徑的流程圖之二。圖12為本發明車載機自主導航方法中簡化最短路徑的起點網格和下一個網格的 最短路徑數據的示意圖。圖13為本發明車載機自主導航方法中車載機進入導航狀態并對起點網格的下一 個網格的最短路徑數據進行擴展后,起點網格和下一個網格的最短路徑數據的示意圖。圖14為圖1實施例中按簡化路徑導航的流程圖。
具體實施例方式本發明車載機自主導航方法包含生成全國電子地圖中每個網格的基礎數據表和 簡化數據表的過程、規劃計算簡化導航路徑的過程和按簡化導航路徑進行導航并逐一對中 間網格的簡化最短路徑作擴展的過程,這樣三個主要過程。本發明車載機自主導航方法一個實施例的流程,如圖1所示。步驟A,將全國范圍的電子地圖按相同大小的矩形分割成順序編號的網格;對每 一網格內的道路弧、道路弧的轉向元素、道路邊和道路邊上的點重新編號,逐一生成對應網 格的基礎數據表;對于所有網格逐一用本網格的基礎數據表建立本網格內每一條入弧到 所有出弧的轉向元素,計算出本網格內每一條入弧到所有出弧的最短路徑的長度,將本網 格內每一條入弧到所有出弧的轉向元素及所述最短路徑的長度記錄到本網格的簡化數據 表;步驟B,將所有網格的基礎數據表和簡化數據表下載到車載機;步驟C,確定起點和終點所在的道路弧,及起點道路弧和終點道路弧列所在的網 格;步驟D,規劃出由起點網格內和終點網格內按對應基礎數據表導出的最短路徑、所 有中間網格內按對應簡化數據表導出的簡化最短路徑組成的簡化路徑;步驟E,按簡化路徑導航;其中,每當進入一個網格時將下一個中間網格的簡化最 短路徑轉化為按基礎數據導出的該網格內的最短路徑,供進入下一個中間網格時導航用。步驟A表達了在地圖服務中心生成全國電子地圖中每個網格的基礎數據表和簡 化數據表的過程。本過程中,首先依據全國電子地圖,抽取其中所有的道路弧、每一道路弧的所有轉 向元素、每一道路弧所對應的道路邊和每一道路邊上所有的點等路徑規劃所需的地圖信 息,生成全國電子地圖的中間地圖數據。接著,對該全國電子地圖的中間地圖數據依照定義 好的的網格大小,進行逐個劃分并編號。請參看圖2 把全國電子地圖的中間地圖數據按照經度差為256"(秒)、緯度差為256"(秒)的網格大小進行切分,在緯度方向上各網格由南至北分成M行,在經度方向 各網格分成K列。而后,從編號0開始對每個網格順序編號,橫向同一行內各網格的編號在 經度方向由西到東按縱向列的順序遞增,接著由南至北縱向對新一行網格編號。任一個網格W的編號為W=(該網格所在行的行號-1)*(總列數K) +(該網格所 在列的列號-1);令經緯度的單位均為1/1 秒。圖2中全國電子地圖左下角Q點的經度為 33811200個單位、緯度為833觀00個單位;右上角T點的經度為62319360個單位、緯度為 24716800個單位;Q、T兩點間經度方向上每一行的網格個數K = 870,緯度方向上每一列的 網格個數M = 500。對于任意一個位置點,可以計算出該點與Q點的經緯度差,從而確定該點所在網 格的行號和列號,進而計算出該點所在網格的編號。對相鄰的兩個網格中一條道路弧進行切分的情形,請參看圖3和圖4 道路弧a跨 越于網格A和網格B之間。切分后道路弧a被分割為為于網格A內的道路弧al和位于網 格B內道路弧b,以及附屬于道路弧al的轉向元素ab。對網格A而言,道路弧b是一條從 本網格流出到相鄰網格的道路弧,我們稱道路弧b為網格A的一條出弧。對網格B而言,道 路弧b是一條從相鄰網格流入本網格的道路弧,我們稱道路弧b為網格B的一條入弧。接著,對于劃分好的每個網格內的中間地圖數據重新進行編號,分別打包生成對 應網格的基礎數據表。具體的操作,請參看圖5:子步驟100,開始,進入本操作流程,執行子步驟101。子步驟101,加載全國電子地圖按行政區劃分的中間地圖數據的地圖源數據。執行 子步驟102。子步驟102,按照規定的網格大小,對上述地圖源數據進行切割。其中網格是按上 述固定的經差緯差劃分并順序編號的。根據網格化地圖的邊界經緯度和固定的經差緯差, 計算出每個網格所覆蓋的道路弧、每一道路弧的所有轉向元素、每一道路弧所對應的道路 邊和每一道路邊上所有的點等拓撲元素。對于每個穿越網格邊界的拓撲元素,例如道路邊、 道路弧等分別切分,并在切分后的道路弧元素間生成新的轉向元素,建立新的拓撲關系。執 行子步驟103。子步驟103,按網格編號(網格ID),順序在當前的一個網格內對每個拓撲元素,即 本網格內的道路弧、每一道路弧的所有轉向元素、每一道路弧所對應的道路邊和每一道路 邊上所有的點等拓撲元素,分別從1開始分別重新編號,每個編號即為該拓撲元素的ID。其 中所有入弧的編號集中排在本網格其他道路弧的前面,這樣做是為了與后面生成的本網格 簡化數據表中所有入弧的編號一一對應,以便由本網格簡化數據表中一個入弧的編號唯一 地找到本網格的基礎數據表中編號相同的同一條入弧。執行子步驟104。子步驟104,依據上述地圖源數據的拓撲關系,對重新編號的道路弧、每一道路弧 的所有轉向元素、每一道路弧所對應的道路邊和每一道路邊上所有的點等拓撲元素在當前 網格內及相鄰網格間建立拓撲關系。即在保留源數據中的拓撲關系基礎上,把原先各個拓 撲元素間的索引關系由全局的拓撲元素ID改為新編號的拓撲元素ID表示。其中當前網格 內部各個拓撲元素間的索引關系用相應拓撲元素在當前網格內的ID表示,相鄰網格間各 個拓撲元素間的索引關系用相應拓撲元素在各自網格內的ID以及各自所在網格的ID聯合表示。執行子步驟105。子步驟105,把當前網格內的拓撲元素,按照新的編號順序寫入本網格的基礎數據 表。執行子步驟106。子步驟106,把當前網格的基礎數據表都保存到基礎文件;執行子步驟107。子步驟107,檢查是否處理完所有的網格,是則執行子步驟108 ;否則執行子步驟 103,繼續處理下一網格內的拓撲元素。子步驟108,結束本流程。然后利用每個網格的基礎數據表,在每個網格中,建立每個入弧到每個與本網格 相鄰網格的出弧的轉向元素;把每個入弧當做起點道路弧,每個與本網格相鄰網格的出弧 當做終點道路弧,用Dijkstra算法,計算出該網格內每一條入弧到所有出弧的最短路徑的 長度;將該網格內每一條入弧到所有出弧的轉向元素及對應的最短路徑的長度記錄到該網 格的簡化數據表。每個入弧到對應出弧的轉向元素包含的數據有該入弧的編號(ID)、該 入弧所在網格的編號(ID)、該入弧連接的出弧的編號(ID)、該出弧所在網格的的編號(ID) 和該入弧到該出弧的最短路徑的長度。具體將每個網格的基礎數據表轉化為簡化數據表的 操作,請參看圖6:子步驟200,開始,進入本流程,執行子步驟201。子步驟201,加載基礎數據文件中所有網格的基礎數據表的地址。執行子步驟 202。子步驟202,按照網格的編號(ID)順序加載一個未處理網格的基礎數據表。執行 子步驟203。子步驟203,順序取當前網格中一個入弧作為當前起點道路弧。執行子步驟204。子步驟204,在當前網格中,順序取一條與當前起點道路弧對應的出弧為當前終點 道路弧,建立當前起點道路弧到當前終點道路弧的轉向元素,根據Dijkstra算法計算當前 起點道路弧到當前終點道路弧的最短路徑,將這條最短路徑的長度和上述轉向元素一起記 入本網格的簡化數據表。上述轉向元素包含的數據有當前起點道路弧的編號(ID)、當前 起點道路弧所在網格的編號(ID)、當前起點道路弧連接的出弧的編號(當前終點道路弧 ID)、出弧(當前終點道路弧)所在網格的的編號(ID)及當前起點道路弧到當前終點道路 弧ID最短路徑的長度。執行子步驟205。子步驟205,檢查是否所有與當前起點道路弧對應的出弧都已處理完了,是則執行 子步驟206 ;否則執行子步驟204,繼續處理到達下一出弧的最短路徑。子步驟206,檢查是否當前網格的所有入弧都已處理完了,是則執行子步驟207 ; 否則執行子步驟203,繼續處理當前網格的下一入弧。子步驟207,將當前網格的簡化數據表存入簡化文件。執行子步驟208。子步驟208,判斷是否所有網格已處理完,是則執行子步驟209,否則執行子步驟 202,繼續處理下一網格內基礎數據向簡化數據的轉化。子步驟209,結束本流程。步驟B中,可以采用無線傳輸或有線傳輸或利用光盤、U盤、移動硬盤等存儲介質 將所有網格的基礎數據表和簡化數據表下載到車載機;請參看圖7 由于起點(出發點)周圍的道路弧A、道路弧B、道路弧C、道路弧D、道路弧E、道路弧F中最靠近起點的道路弧A有可能并不在出發點所在的網格內。同理,最靠 近終點的道路弧也可能不在終點所在的網格內。為了滿足Dijkstra算法的需要,必須預先 確定最靠近起點的道路弧(起點道路弧)和最靠近終點的道路弧(終點道路弧),所以需要 設置步驟C,確定起點和終點所在的道路弧,及起點道路弧和終點道路弧列所在的網格。具 體的操作,請參看圖8:子步驟300,開始,進入本流程,執行子步驟301。子步驟301,輸入導航起點和終點的經緯度信息。執行子步驟302。子步驟302,根據網格劃分規則計算起終點經緯度所在網格的編號(ID)。執行子 步驟303。子步驟303,根據網格ID加載該網格及周邊8個網格的基礎數據表。執行子步驟 304。子步驟304,分別搜索以起點和終點周圍的道路邊。即分別以起點和終點為目的 點,先以目的點的經緯度為中心確定一個搜索矩形,利用道路邊記載的外接矩形信息,找出 所有與搜索矩形相交的道路邊。利用道路邊對應的點集信息,可以計算出目的點到這些道 路邊的投影距離。若在當前搜索矩形內未找到與搜索矩形相交的道路邊,則逐步擴大搜索 矩形,直到找到投影距離在可接受的規定范圍之內的道路邊。執行子步驟305。子步驟305,利用找到的道路邊篩選出距離起點和終點投影距離最近的道路邊,按 距離起點投影距離最近的道路邊確定與該道路邊對應的道路弧作為起點道路弧;按距離終 點投影距離最近的道路邊確定與該道路邊對應的道路弧作為終點道路弧。進而確定起點道 路弧和終點道路弧列所在的網格。執行子步驟306。子步驟306,結束本流程。子步驟D表達了規劃出簡化路徑的過程。本過程中,請參看圖9 由起點網格內和 終點網格內按對應基礎數據表記載的基礎數據分別推導出起點網格內用實線表示的最短 路徑和終點網格內用實線表示的最短路徑,在所有中間網格內按對應簡化數據表記載的簡 化數據推導出用虛線表示的簡化最短路徑,上述起點網格內的最短路徑、終點網格內的最 短路徑和所有中間網格內的簡化最短路徑組成總的簡化路徑。本過程中具體的操作,請先 參看圖10 子步驟400,進入本流程,開始規劃簡化路徑上的所有道路弧,執行子步驟401。子步驟401,用起點道路弧所連接的轉向元素查找出所有可達的下一條道路弧,將 起點道路弧作為這些道路弧的前趨道路弧;將這些道路弧及其前趨道路弧添加到待考察的 道路弧列表(開表)中。加入開表中道路弧的數據包括本道路弧ID、本道路弧所在網格 ID、本道路弧到起點道路弧的最短的路徑長度代價、本道路弧的前趨道路弧ID和本道路弧 的前趨道路弧所在網格ID ;執行子步驟402。子步驟402,取出開表中離起點道路弧路徑最短的道路弧作為當前道路弧。計算某 道路弧離起點道路弧的路徑長度代價的方法為開表中前趨弧到起點弧最短的路徑長度代 價+本道路弧的道路長度代價(可從本道路弧對應的道路邊元素獲取)。執行子步驟403。子步驟403,把當前道路弧及其前趨弧信息加入到已考察的道路弧列表(閉表) 中。加入閉表中的數據包括當前道路弧ID、當前道路弧所在網格ID、前趨道路弧ID、前趨 道路弧所在網格ID。執行子步驟404。
子步驟404,依據當前道路弧所在網格ID與終點道路弧所在網格ID做對比,判斷 當前道路弧是否在終點網格。是則執行子步驟406,進行終點網格內的推進;不是則執行子 步驟405,進行起點網格或中間網格的推進處理。子步驟405,依據當前道路弧所在網格ID與起點道路弧所在網格ID做對比,判斷 當前道路弧是否在起點網格。是則執行子步驟408,在起點網格內向外推進;不是則執行子 步驟407,由中間網格向外推進。子步驟406,依據當前道路弧所在網格ID與終點道路弧所在網格ID做對比,判斷 當前道路弧是否是終點道路弧。是則執行子步驟412 ;不是則執行子步驟409,在終點網格 內繼續向終點道路弧推進。子步驟407,依據當前道路弧所在網格ID,加載當前道路弧所在網格的簡化數據 表;在簡化數據表中按當前道路弧ID找到所有當前道路弧連接的簡化轉向元素,依據這些 簡化轉向元素找到所有可達的下一條道路弧。執行子步驟410。子步驟408,依據當前道路弧所在網格ID,加載起點網格基礎拓撲數據表,在基礎 數據表中按當前道路弧ID找到所有當前道路弧連接的轉向元素,依據這些轉向元素找到 所有可達的下一條道路弧。執行子步驟410。子步驟409,依據當前道路弧所在網格ID,加載終點網格基礎數據表,在基礎數據 表中按當前道路弧ID找到所有當前道路弧連接的轉向元素,依據這些轉向元素找到所有 可達的下一條道路弧。執行子步驟410。子步驟410,設置當前道路弧為所有可達的下一條道路弧的前趨道路弧。執行子步 驟 411。子步驟411,把找到的所有可達的下一條道路弧及其前趨道路弧加入到開表中。加 入開表中的數據包括下一條道路弧ID、下一條道路弧所在網格ID、下一條道路弧到起點 道路弧的最短的路徑長度代價、下一條道路弧的前趨道路弧ID、下一條道路弧的前趨道路 弧所在網格ID。所有計算出來的前趨弧信息都必須保存下來,為最后的路徑結果回溯做準 備。執行子步驟402,繼續向終點道路弧推進。子步驟412,找到了到達終點道路弧的最短的簡化路徑上的所有道路弧,并已將它 們記錄在閉表中;本流程結束。閉表中記錄的信息包含了前趨道路弧等亢余的數據,需要加以簡化。具體的操作, 請參看圖11 子步驟500,進入本流程,開始將閉表中記錄的道路弧信息回溯為清晰的簡化路徑 弧序列,執行子步驟501。子步驟501,取出閉表,把終點道路弧作為當前道路弧,由當前道路弧開始進行回 溯。執行子步驟502。子步驟502,把當前道路弧添加到簡化路徑弧序列開頭。簡化路徑弧序列指包含粗 回溯結果路徑的道路弧和簡化道路弧序列,其中的數據,包含道路弧(或簡化道路弧)ID和 道路弧(或簡化道路弧)所在網格ID。執行子步驟503。子步驟503,判斷當前道路弧是否是起點道路弧,是則執行子步驟505,否則執行 子步驟504。子步驟504,在閉表里查找當前道路弧的前趨道路弧,將該前趨道路弧作為當前道路弧。執行子步驟502,繼續回溯。子步驟505,本流程結束。步驟E表達了按簡化路徑導航的過程。請參看圖13 若從廈門某地出發,簡化路徑 弧序列提供的簡化路徑中,在起點網格內提供了按基礎數據導出的該網格內詳細的最短路 徑,而在下一個中間網格內僅提供了按簡化數據導出的該中間網格內的簡化最短路徑。為 使車輛在中間網格內得到正確的導航,請參看圖14,每當進入一個網格時將下一個中間網 格的簡化最短路徑轉化為按基礎數據導出的該網格內的詳細導航路徑,供進入下一個中間 網格時導航用。將簡化路徑弧序列表示的簡化路徑用于導航的操作,請參看圖14 子步驟600,開始,進入本流程,執行子步驟601。子步驟601,由簡化路徑弧序列的起點道路弧開始便于導航顯示的擴展;置起點 道路弧為當前道路弧。執行子步驟602。子步驟602,判斷當前道路弧是否是終點道路弧,是則執行子步驟611 ;否則執行 子步驟603。子步驟603,由簡化路徑弧序列取出下一條道路弧。執行子步驟604。子步驟604,判斷下一條道路弧是否與當前道路弧在同一網格,以區分下一條道路 弧是否是跨網格的弧;是則執行子步驟609,進行起點網格或終點網格內的導航顯示的擴 展;否則執行子步驟605。子步驟605,判斷當前道路弧是否在起點網格或終點網格,是則執行子步驟609, 進行起點網格或終點網格內的導航顯示的擴展;否則執行子步驟606,進行中間網格的路
徑擴展。子步驟606,加載當前道路弧所在網格的基礎數據表。執行子步驟607。子步驟607,以本網格當前道路弧對應的入弧為起點道路弧,下一條道路弧對應的 出弧為終點道路弧,依據本網格的基礎數據表,利用dijkstra算法,計算出本網格內基礎 數據表示的最短路徑道路弧序列。執行子步驟608。子步驟608,把計算出來的道路弧序列,插入到當前道路弧與下一條道路弧之間。 計算出來的最短道路弧序列擴展了簡化路徑中間網格的當前道路弧到跨網格的下一條道 路弧之間的真實道路弧序列。執行子步驟609。子步驟609,在基礎數據中,每個道路弧能索引到對應的道路邊,每個道路邊能索 引到該道路邊上的點集。利用一段路徑的道路弧信息,能索引出所有該段路徑上的點,生成 當前道路弧與下一個道路弧之間的詳細導航顯示信息,進行導航。執行子步驟602。子步驟610,把下一條道路弧置為當前道路弧。執行子步驟602繼續向終點道路弧 行進。子步驟611,到達終點道路弧,本流程結束。以上所述,僅為本發明較佳實施例,不以此限定本發明實施的范圍,依本發明的技 術方案及說明書內容所作的等效變化與修飾,例如用類似貪心算法替代Dijkstra算法,進 行路徑計算,皆應屬于本發明涵蓋的范圍。
權利要求
1.一種車載機自主導航方法,包含步驟A,將全國范圍的電子地圖按相同大小的矩形分割成順序編號的網格;對每一網 格內的道路弧、道路弧的轉向元素、道路邊和道路邊上的點重新編號,逐一生成對應網格的 基礎數據表;對于所有網格逐一用本網格的基礎數據表建立本網格內每一條入弧到所有出 弧的轉向元素,計算出本網格內每一條入弧到所有出弧的最短路徑的長度,將本網格內每 一條入弧到所有出弧的轉向元素及所述最短路徑的長度記錄到本網格的簡化數據表; 步驟B,將所有網格的基礎數據表和簡化數據表下載到車載機; 步驟C,確ζ起點和終點所在的道路弧,及起點道路弧和終點道路弧所在的網格; 步驟D,規劃出由起點網格內和終點網格內按對應基礎數據表導出的最短路徑、所有中 間網格內按對應簡化數據表導出的簡化最短路徑組成的簡化路徑;步驟E,按簡化路徑導航;其中,每當進入一個網格時將下一個中間網格的簡化最短路 徑轉化為按基礎數據導出的該網格內的最短路徑,供進入下一個中間網格時導航用。
2.根據權利要求1所述的一種車載機自主導航方法,其特征在于所述的步驟A中,具 體將全國范圍的電子地圖按相同大小的矩形分割成順序編號的網格;并對每一網格內的道 路弧、道路弧的轉向元素、道路邊和道路邊上的點重新編號,逐一生成對應網格的基礎數據 表的處理,包含以下的子步驟子步驟Al,加載全國電子地圖的地圖源數據,按照規定的網格大小,對上述地圖源數據 進行切割并順序編號;計算出每個網格所覆蓋的道路弧、每一道路弧的所有轉向元素、每一 道路弧所對應的道路邊和每一道路邊上所有的點,對于每個穿越網格邊界的道路邊、道路 弧等分別切分,并在切分后的道路弧元素間生成新的轉向元素;子步驟A2,按網格編號,順序在每一個網格內對本網格內的道路弧、每一道路弧的所有 轉向元素、每一道路弧所對應的道路邊和每一道路邊上所有的點分別重新編號;依據上述 地圖源數據的拓撲關系,在每一網格內及其相鄰網格間對重新編號的道路弧、每一道路弧 的所有轉向元素、每一道路弧所對應的道路邊和每一道路邊上所有的點按新的編號建立拓 撲關系;把每一網格內的道路弧、每一道路弧的所有轉向元素、每一道路弧所對應的道路邊 和每一道路邊上所有的點,按照新的編號順序寫入本網格的基礎數據表。
3.根據權利要求1所述的一種車載機自主導航方法,其特征在于所述的步驟D中,具 體規劃出由起點網格內和終點網格內按對應基礎數據表導出的最短路徑、所有中間網格內 按對應簡化數據表導出的簡化最短路徑組成的簡化路徑的處理,包含以下的子步驟子步驟D1,用起點道路弧所連接的轉向元素查找出所有可達的下一條道路弧,將起點 道路弧作為這些道路弧的前趨道路弧;將這些道路弧及其前趨道路弧添加到開表中;子步驟D2,取出開表中離起點道路弧路徑最短的道路弧作為當前道路弧,把當前道路 弧及其前趨弧信息加入到閉表中;子步驟D3,若當前道路弧在起點網格,加載起點網格基礎拓撲數據表,找到所有當前道 路弧連接的轉向元素和所有可達的下一條道路弧;若當前道路弧在中間網格,加載當前道 路弧所在網格的簡化數據表,找到所有當前道路弧連接的簡化轉向元素和所有可達的下一 條道路弧;若當前道路弧在終點網格且不是終點道路弧,加載終點網格基礎數據表,找到所 有當前道路弧連接的轉向元素和所有可達的下一條道路弧;然后執行子步驟D4 ;若當前道 路弧是終點道路弧,執行子步驟D5 ;子步驟D4,設置當前道路弧為所有可達的下一條道路弧的前趨道路弧,把找到的所有 可達的下一條道路弧及其前趨道路弧加入到開表中,返回執行子步驟D2; 子步驟D5,取出閉表,把終點道路弧作為當前道路弧; 子步驟D6,把當前道路弧添加到簡化路徑弧序列開頭;子步驟D7,判斷當前道路弧是否是起點道路弧,是則退出;否則在閉表里查找當前道 路弧的前趨道路弧,將該前趨道路弧作為當前道路弧,再次執行子步驟D6,繼續回溯。
4.根據權利要求3所述的一種車載機自主導航方法,其特征在于所述的步驟E中,按 簡化路徑導航的處理,包含以下的子步驟子步驟E1,由簡化路徑弧序列的起點道路弧開始,置起點道路弧為當前道路弧; 子步驟E2,判斷當前道路弧是否是終點道路弧,是則退出;否則由簡化路徑弧序列取 出下一條道路弧;子步驟E3,若下一條道路弧不是跨網格的弧,或者當前道路弧在起點網格或終點網格 內,則進行起點網格或終點網格內的導航顯示的擴展;否則進行中間網格的路徑擴展,加載 當前道路弧所在網格的基礎數據表,以本網格當前道路弧對應的入弧為起點道路弧,下一 條道路弧對應的出弧為終點道路弧,依據本網格的基礎數據表,利用dijkstra算法,計算 出本網格內基礎數據表示的最短路徑道路弧序列,把計算出來的道路弧序列,插入到當前 道路弧與下一條道路弧之間。計算出來的最短道路弧序列擴展了簡化路徑中間網格的當前 道路弧到跨網格的下一條道路弧之間的真實道路弧序列;子步驟E4,生成當前道路弧與下一個道路弧之間的詳細導航顯示信息,進行導航;把 下一條道路弧置為當前道路弧,返回執行子步驟E2,繼續向終點道路弧行進。
全文摘要
本發明一種車載機自主導航方法,包含將電子地圖按相同大小的矩形分割成順序編號的網格;對每一網格內的拓撲元素重新編號,逐一生成對應網格的基礎數據表;對于所有網格用對應的基礎數據表建立本網格內每一條入弧到所有出弧的轉向元素,計算對應最短路徑的長度,記錄到本網格的簡化數據表;將所有網格的基礎數據表和簡化數據表下載到車載機;確定起點和終點所在的道路弧及所在的網格;規劃出由起點網格內和終點網格內按對應基礎數據表導出的最短路徑、所有中間網格內按對應簡化數據表導出的簡化最短路徑組成的簡化路徑;按簡化路徑導航中,提前將下一個中間網格的簡化最短路徑轉化為基礎數據的最短路徑。可快速進入導航狀態且占用內存少。
文檔編號G01C21/34GK102087113SQ200910311010
公開日2011年6月8日 申請日期2009年12月7日 優先權日2009年12月7日
發明者劉輝, 時宜, 楊一麟, 黃思志 申請人:廈門雅迅網絡股份有限公司