本發明涉及計算機領域,尤其涉及一種車輛路徑規劃的方法及系統。
背景技術:
目前,自動導引運輸車(AGV)做為貨到人的應用的方式,已經被廣泛應用,亞馬遜的kiva系統就是這方面的經典案例。但是在數量很大的AGV應用中,交通調度一直是非常復雜的問題,對于如何高效地提高調度效率一直是一個不斷優化的問題。
目前對于AGV路徑規劃的方法,大多采用最短路徑的方法。主要是以起始點為中心向外層層擴展,直到擴展到終點為止。Dijkstra算法能得出最短路徑的最優解,但由于它遍歷計算的節點很多,所以效率低。
在車輛很多的情況下,由于訂單分布的確定性和分布廣泛性,雖然解決車輛行走的路徑最短,但很難避免車輛路徑有過多的交叉和碰撞。車輛交叉點過多導致需要互相等待,效率低下。
技術實現要素:
本發明的一個方面提供了一種車輛路徑規劃方法,包括:將車輛行駛區域劃分成至少一個子區域,每個子區域設置有終點;計算每個子區域內的車輛行駛路徑,使得分配給每個子區域的車輛僅在該子區域內進行活動,最終到達該子區域終點。
本發明的另一個方面提供了一種車輛路徑規劃系統,包括:至少一個處理器;至少一個存儲器,存儲有可執行指令,所述指令在被所述至少一個處理器執行時,使得所述處理器:將車輛行駛區域劃分成至少一個子區域,每個子區域設置有終點;計算每個子區域內的車輛行駛路徑,使得分配給每個子區域的車輛僅在該子區域內進行活動,最終到達該子區域終點。
本發明的另一個方面提供了一種計算機可讀存儲介質,其上存儲有可執行指令,所述指令在由一個或多個處理器執行時,可以使所述一個或多個處理器執行:將車輛行駛區域劃分成至少一個子區域,每個子區域設置有終點;計算每個子區域內的車輛行駛路徑,使得分配給每個子區域的車輛僅在該子區域內進行活動,最終到達該子區域終點。
本發明的另一個方面提供了一種車輛路徑規劃系統,包括:區域劃分模塊,將車輛行駛區域劃分成至少一個子區域,每個子區域設置有終點;路徑規劃模塊,計算每個子區域內的車輛行駛路徑,使得分配給每個子區域的車輛僅在該子區域內進行活動,最終到達該子區域終點。
附圖說明
為了更完整地理解本發明及其優勢,現在將參考結合附圖的以下描述,其中:
圖1示意性示出了根據本發明實施例的車輛路徑規劃的原理示意圖。
圖2示意性示出了根據本發明實施例的車輛路徑規劃系統的應用場景。
圖3示意性示出了根據本發明實施例的車輛路徑規劃方法。
圖4示意性示出了根據本發明實施例的車輛路徑規劃系統的框圖。
圖5示意性示出了根據本發明另一實施例的車輛路徑規劃系統的框圖。
具體實施方式
根據結合附圖對本發明示例性實施例的以下詳細描述,本發明的其它方面、優勢和突出特征對于本領域技術人員將變得顯而易見。
在本發明中,術語“包括”和“含有”及其派生詞意為包括而非限制;術語“或”是包含性的,意為和/或。
在本說明書中,下述用于描述本發明原理的各種實施例知識說明,不應該以任何方式解釋為限制發明的范圍。參照附圖的下述描述用于幫助全面理解由權利要求及其等同物限定的本發明的示例性實施例。下述描述包括多種具體細節來幫助理解,但這些細節應認為僅僅是示例性的。因此,本領域普通技術人員應認識到,在不背離本發明的范圍和精神的情況下,可以對本文中描述的實施例進行多種改變和修改。此外,為了清楚和簡潔起見,省略了公知功能和結構的描述。此外,貫穿附圖,相同參考數字用于相思功能和操作。
附圖中示出了一些方框圖和/或流程圖。應理解,方框圖和/或流程圖中的一些方框或其組合可以由計算機程序指令來實現。這些計算機程序指令可以提供給通用計算機、專用計算機或其他可編程數據處理裝置的處理器,從而這些指令在由該處理器執行時可以創建用于實現這些方框圖和/或流程圖中所說明的功能/操作的裝置。
因此,本公開的技術可以硬件和/或軟件(包括固件、微代碼等)的形式來實現。另外,本公開的技術可以采取存儲有指令的計算機可讀介質上的計算機程序產品的形式,該計算機程序產品可供指令執行系統使用。在本公開的上下文中,計算機可讀介質可以是能夠包含、存儲、傳送、傳播或傳輸指令的任意介質。例如,計算機可讀介質可以包括但不限于電、磁、光、電磁、紅外或半導體系統、裝置、器件或傳播介質。計算機可讀介質的具體示例包括:磁存儲裝置,如磁帶或硬盤(HDD);光存儲裝置,如光盤(CD-ROM);存儲器,如隨機存取存儲器(RAM)或閃存;和/或有線/無線通信鏈路。
圖1示意性示出了根據本發明實施例的車輛路徑規劃的原理示意圖。
如圖1所示,矩形可以表示車輛行駛的整體區域;曲線可以表示劃分整體區域形成的子區域的邊界;五角星可以表示子區域的終點;三角形可以表示訂單分布;圓形可以表示車輛。
根據本發明的實施例,上述車輛行駛的整體區域可以是倉庫,車輛可以為自動導引運輸車(AGV)。車輛按照規劃好的路徑行駛,在倉庫中找到訂單中的商品并運送至倉庫外邊緣的終點處。在本發明實施例中,根據訂單的分布將倉庫劃分成多個子區域。劃分規則可以根據實際需要確定。例如,可以將劃分規則設置為保證每個子區域內訂單數量基本相等。這里的基本相等可以包括相等,或差值小于預設范圍的情況。根據訂單的數量為每個子區域分配車輛,為每個子區域內的車輛規劃行駛路徑,使得所述車輛只允許領取該子區域內的任務并且僅在該子區域內進行活動。每一個子區域都固定有至少一個終點,所述車輛完成該子區域的任務后最終到達終點。這樣,每個子區域內的車輛相對固定,可以避免車輛走公共的區域而導致的路徑交叉。由于訂單分布的不確定性,每個子區域內的訂單數量隨著時間的推移產生變化,這時所劃分的區域會根據一定的規則進行大小和邊界的調整,同時也會調整區域內車輛的數量。
下面參考圖2和圖3描述根據本發明實施例的車輛路徑規劃系統及車輛路徑規劃方法。
圖2示意性示出了根據本發明實施例的車輛路徑規劃系統200的應用場景。根據本發明的實施例,車輛路徑規劃系統200可以應用于規劃貨物運輸車輛在倉庫中的路徑,但本領域技術人員可以理解,車輛路徑規劃系統200也可以應用于其他應用場景的路徑規劃。如圖2所示,車輛路徑規劃系統200可以與倉儲軟件系統300、地理信息系統400、AGV控制系統500和一個或多個AGV 600進行交互。上述系統可以采用一個或多個計算機系統來實現。所述一個或多個計算機系統可以集中部署在本地,或者可以分布式地布置在多個地點,并且通過通信網絡實現交互。
圖3示意性示出了根據本發明實施例的車輛路徑規劃方法。根據本發明的實施例,該方法例如可以由車輛路徑規劃系統200實現。
該方法開始于步驟S301。
在步驟S302,從倉儲軟件系統300獲取訂單數據。所述獲取可以是車輛路徑規劃系統200從倉儲軟件系統300拉取訂單數據,也可以是倉儲軟件系統300向車輛路徑規劃系統200推送訂單數據。根據本發明實施例,所述獲取可以是定時自動獲取,也可以是根據系統管理者的指令而獲取。訂單數據例如可以包括貨物種類、型號、供貨商名稱、購買數量等,但不限于此。
在步驟S303,根據訂單數據從倉儲軟件系統300獲取相應產品的庫存數據。該庫存數據例如可以包括所訂購貨物的儲位或容器信息。例如,某一訂單訂購了一部手機,則庫存數據可以包括該手機的倉庫編號、容器或者儲位編號。
在步驟S304,根據訂單的庫存數據,從地理信息系統400獲取所訂購貨物的倉庫坐標數據、容器或儲位坐標數據。
在步驟S305,根據訂單數據、庫存數據和上述倉庫坐標數據、容器或儲位坐標數據,將整個倉庫區域劃分為多個子區域。劃分規則可以根據實際需要確定。例如,可以將劃分規則設置為保證每個子區域內訂單數量基本相等。這里的基本相等可以包括相等,或差值小于預設范圍的情況。
每個子區域設置有終點。根據本發明實施例,根據訂單數據、庫存數據、倉庫坐標數據、儲位或容器坐標數據將車輛行駛區域劃分成至少一個子區域,每個子區域設置有至少一個終點,所述終點設置在所述車輛行駛區域的外側。所述車輛行駛區域可以是整個倉庫。所述車輛可以是帶有導引裝置且具有移載功能的運輸車,例如AGV自動引導運輸車。
在本發明實施例中,所述將車輛行駛區域劃分成至少一個子區域包括將車輛行駛區域劃分成2n-1個子區域,n為正整數。所述將車輛行駛區域劃分成2n-1個子區域是根據訂單數據平分原則,保證每個子區域內的訂單數量相同。根據本發明實施例,隨著時間推移,每隔一定的時間,子區域內的訂單數量也會變化,這時所劃分的子區域會根據一定的規則進行大小和邊界的調整。根據本發明的實施例,根據倉庫的面積,確定所需子區域的數量,使用二分法根據訂單數量劃分倉庫直至達到所需的子區域數量。例如,倉庫面積為S,則所需的數量Q可以通過中間值A=S/100m2來確定,Q取A最接近的2n-1(n為正整數)的值為所需的子區域數量。例如,有倉庫面積為S=10000m2,則A=S/100m2=100,26=64,27=128,A更接近128,則所需子區域的數量Q=128。再例如,有倉庫面積為S=1600m2,則A=S/100m2=16,24=16,A=16,則所需子區域的數量Q=16。在本發明實施例中,所述使用二分法根據訂單數量劃分倉庫直至達到所需的子區域數量時,遇到訂單數量為單數,則劃分的兩個區域一個對(訂單數量/2)的值向上取整,一個對(訂單數量/2)的值向下取整,例如當該區域訂單數量為125份是,對其劃分成兩個子區域,則其中一個區域對(125/2)向下取整為62份,另一個區域對(125/2)向上取整為63份。例如,當倉庫面積為S=1600m2,則需要將倉庫劃分成16個子區域,此時訂單總數量為500份,使用二分法,先將倉庫劃分為2個子區域,每個子區域內有250份訂單;再將兩個子區域劃分為4個子區域,每個子區域內有125份訂單;繼續將4個子區域劃分為8個子區域,則其中4個子區域內有62份訂單,4個子區域有63份訂單;最后將8個子區域劃分成為16個子區域,則其中12個子區域內有31份訂單,4個子區域內有32份訂單。
在步驟S306,從AGV控制系統500獲取車輛狀態。根據本發明實施例,所述車輛狀態包括可供使用的車輛情況,所述可供使用的車輛情況可以包括所有車輛中空閑的車輛以及對于單個車輛而言是否能夠正常工作等。根據本發明的實施例,還可以從AGV控制系統500獲取車輛位置數據。
在步驟S307,為每個子區域分配車輛。根據本發明實施例,根據子區域劃分情況、可供使用的車輛情況和車輛位置數據來為每個子區域分配車輛。在本發明實施例中,根據每個子區域的訂單數據和每輛車的處理能力確定該區域需要的車輛數量。例如,所需車輛數量CQ=該區域訂單總量OQ/車輛處理能力C,優選地,對CQ進行向上取整。例如,當子區域為16個,訂單總量為500份,車輛處理能力C=10/輛,則根據步驟S4,每個子區域的訂單數為31或者32份,則該子區域所需車輛數量CQ=32/10=3.2,向上取整,則對該子區域分配4輛車,根據距離該子區域距離較近,且能夠正常工作的空閑車輛4輛分配給該子區域。根據本發明的實施例,優先向每個子區域分配該子區域內的空閑車輛,當車輛不足時,可以調用鄰近子區域內的空閑車輛。
在步驟S308,計算每個子區域內的車輛行駛路徑,使得分配給每個子區域的車輛僅在該子區域內進行活動,最終到達該子區域終點。根據本發明實施例,所述計算每個子區域內的車輛行駛路徑包括通過Dijkstra算法計算最短路徑最優解。在本發明實施例中,根據每個子區域內的訂單分布情況,車輛分配情況計算出每輛車的行駛路徑,例如某輛車在坐標A處提取貨物1,然后去坐標B處提取貨物2,最終將貨物1和貨物2送至該區域的終點。
在步驟S309,將每個子區域內的車輛行駛路徑下發到該分配給該子區域的AGV 600。這樣,該子區域的AGV 600可以根據接收的指定路徑,完成貨物搬運任務。
該方法在步驟S310處結束。
根據本發明實施例,將倉庫劃分成多個子區域,每個子區域內的車輛相對固定,可以避免車輛走公共的區域而導致的路徑交叉,減少車輛碰撞的機會,減少車輛排隊等待的時間,大大提升搬運的效率。由于訂單分布的不確定性,每個區域的訂單數量可能隨時間變化,所劃分的子區域隨著時間的推移,子區域內的訂單數量也會隨著變化。這時,可以每隔預定時間重復執行上述方法,對所劃分的子區域進行大小和邊界的調整,并調整分配給該子區域的車輛數量。或者,可以在發現訂單數量和/或分布的變化超出預定閾值時,對所劃分的子區域進行大小和邊界的調整,并調整分配給子區域的車輛數量。例如,當某個子區域的訂單數量激增或驟減時,可以進行上述調整。
圖4是示出了根據本公開實施例的圖2所示車輛路徑規劃系統200的框圖。車輛路徑規劃系統200包括處理器210,例如通用微處理器、指令集處理器和/或相關芯片組和/或專用微處理器(例如,專用集成電路(ASIC)),等等。處理器210還可以包括用于緩存用途的板載存儲器。處理器210可以是用于執行參考圖2和圖3描述的根據本發明實施例的方法流程的不同動作的單一處理單元或者是多個處理單元。
車輛路徑規劃系統200還可以包括具有非易失性或易失性存儲器形式的至少一個可讀存儲介質220,例如可以是能夠包含、存儲、傳送、傳播或傳輸指令的任意介質。例如,可讀存儲介質可以包括但不限于電、磁、光、電磁、紅外或半導體系統、裝置、器件或傳播介質。可讀存儲介質的具體示例包括:磁存儲裝置,如磁帶或硬盤(HDD);光存儲裝置,如光盤(CD-ROM);存儲器,如隨機存取存儲器(RAM)或閃存;和/或有線/無線通信鏈路。
可讀存儲介質220包括計算機程序221,該計算機程序221包括代碼/計算機可讀指令,其在由處理器210執行時使得處理器210可以執行例如上面結合圖2和3所描述的方法流程及其任何變形。
計算機程序221可被配置為具有例如包括計算機程序模塊的計算機程序代碼。例如,在示例實施例中,計算機程序221中的代碼可以包括一個或多個程序模塊,例如包括221A、模塊221B、……模塊221F。應當注意,模塊的劃分方式和個數并不是固定的,本領域技術人員可以根據實際情況使用合適的程序模塊或程序模塊組合,當這些程序模塊組合被處理器210執行時,使得處理器210可以執行例如上面結合圖2和3所描述的方法流程及其任何變形。
根據本發明的實施例,車輛路徑規劃系統200還可以包括用于從其他實體接收信號的輸入單元230、以及用于向其他實體提供信號的輸出單元240。輸入單元230和輸出單元240可以被布置為單一實體或者是分離的實體。輸入單元230和輸出單元240可以在處理器210的控制下,用于車輛路徑規劃系統200與倉儲軟件系統300、地理信息系統400、AGV控制系統500和一個或多個AGV 600之間的交互。
下面參考圖5描述根據本發明另一實施例的車輛路徑規劃系統700的框圖。與車輛路徑規劃系統200類似地,車輛路徑規劃系統700可以與倉儲軟件系統300、地理信息系統400、AGV控制系統500和一個或多個AGV 600進行交互,在此不再贅述。
如圖5所示,車輛路徑規劃系統700包括訂單數據獲取模塊710、庫存數據獲取模塊720、坐標數據獲取模塊730、區域劃分模塊740、車輛狀態獲取模塊750、車輛分配模塊760、行駛路徑計算模塊770和路徑下發模塊780。
訂單數據獲取模塊710從倉儲軟件系統300獲取訂單數據。所述獲取可以是車輛路徑規劃系統200從倉儲軟件系統300拉取訂單數據,也可以是倉儲軟件系統300向車輛路徑規劃系統200推送訂單數據。根據本發明實施例,所述獲取可以是定時自動獲取,也可以是根據系統管理者的指令而獲取。訂單數據例如可以包括貨物種類、型號、供貨商名稱、購買數量等,但不限于此。
庫存數據獲取模塊720根據訂單數據從倉儲軟件系統300獲取相應產品的庫存數據。該庫存數據例如可以包括所訂購貨物的儲位或容器信息。例如,某一訂單訂購了一部手機,則庫存數據可以包括該手機的倉庫編號、容器或儲位編號。
坐標數據獲取模塊730根據訂單的庫存數據,從地理信息系統400獲取所訂購貨物的倉庫坐標數據、容器或儲位坐標數據。
區域劃分模塊740根據訂單數據、庫存數據和上述倉庫坐標數據、容器或儲位坐標數據,將整個倉庫區域劃分為多個子區域。劃分規則可以根據實際需要確定。例如,可以將劃分規則設置為保證每個子區域內訂單數量基本相等。這里的基本相等可以包括相等,或差值小于預設范圍的情況。
每個子區域設置有終點。根據本發明實施例,根據訂單數據、庫存數據、倉庫坐標數據、儲位或容器坐標數據將車輛行駛區域劃分成至少一個子區域,每個子區域設置有至少一個終點,所述終點設置在所述車輛行駛區域的外側。所述車輛行駛區域可以是整個倉庫。所述車輛可以是帶有導引裝置且具有移載功能的運輸車,例如AGV自動引導運輸車。
在本發明實施例中,所述將車輛行駛區域劃分成至少一個子區域包括將車輛行駛區域劃分成2n-1個子區域,n為正整數。所述將車輛行駛區域劃分成2n-1個子區域是根據訂單數據平分原則,保證每個子區域內的訂單數量相同。根據本發明實施例,隨著時間推移,每隔一定的時間,子區域內的訂單數量也會變化,這時所劃分的子區域會根據一定的規則進行大小和邊界的調整。根據本發明的實施例,根據倉庫的面積,確定所需子區域的數量,使用二分法根據訂單數量劃分倉庫直至達到所需的子區域數量。例如,倉庫面積為S,則所需的數量Q可以通過中間值A=S/100m2來確定,Q取A最接近的2n-1(n為正整數)的值為所需的子區域數量。例如,有倉庫面積為S=10000m2,則A=S/100m2=100,26=64,27=128,A更接近128,則所需子區域的數量Q=128。再例如,有倉庫面積為S=1600m2,則A=S/100m2=16,24=16,A=16,則所需子區域的數量Q=16。在本發明實施例中,所述使用二分法根據訂單數量劃分倉庫直至達到所需的子區域數量時,遇到訂單數量為單數,則劃分的兩個區域一個對(訂單數量/2)的值向上取整,一個對(訂單數量/2)的值向下取整,例如當該區域訂單數量為125份是,對其劃分成兩個子區域,則其中一個區域對(125/2)向下取整為62份,另一個區域對(125/2)向上取整為63份。例如,當倉庫面積為S=1600m2,則需要將倉庫劃分成16個子區域,此時訂單總數量為500份,使用二分法,先將倉庫劃分為2個子區域,每個子區域內有250份訂單;再將兩個子區域劃分為4個子區域,每個子區域內有125份訂單;繼續將4個子區域劃分為8個子區域,則其中4個子區域內有62份訂單,4個子區域有63份訂單;最后將8個子區域劃分成為16個子區域,則其中12個子區域內有31份訂單,4個子區域內有32份訂單。
車輛狀態獲取模塊750從AGV控制系統500獲取車輛狀態。根據本發明實施例,所述車輛狀態包括可供使用的車輛情況,所述可供使用的車輛情況可以包括所有車輛中空閑的車輛以及對于單個車輛而言是否能夠正常工作等。根據本發明的實施例,車輛狀態獲取模塊750還可以從AGV控制系統500獲取車輛位置數據。
車輛分配模塊760為每個子區域分配車輛。根據本發明實施例,根據子區域劃分情況、可供使用的車輛情況和車輛位置數據來為每個子區域分配車輛。在本發明實施例中,根據每個子區域的訂單數據和每輛車的處理能力確定該區域需要的車輛數量。例如,所需車輛數量CQ=該區域訂單總量OQ/車輛處理能力C,優選地,對CQ進行向上取整。例如,當子區域為16個,訂單總量為500份,車輛處理能力C=10/輛,則根據步驟S4,每個子區域的訂單數為31或者32份,則該子區域所需車輛數量CQ=32/10=3.2,向上取整,則對該子區域分配4輛車,根據距離該子區域距離較近,且能夠正常工作的空閑車輛4輛分配給該子區域。根據本發明的實施例,優先向每個子區域分配該子區域內的空閑車輛,當車輛不足時,可以調用鄰近子區域內的空閑車輛。
行駛路徑計算模塊770計算每個子區域內的車輛行駛路徑,使得分配給每個子區域的車輛僅在該子區域內進行活動,最終到達該子區域終點。根據本發明實施例,所述計算每個子區域內的車輛行駛路徑包括通過Dijkstra算法計算最短路徑最優解。在本發明實施例中,根據每個子區域內的訂單分布情況,車輛分配情況計算出每輛車的行駛路徑,例如某輛車在坐標A處提取貨物1,然后去坐標B處提取貨物2,最終將貨物1和貨物2送至該區域的終點。
路徑下發模塊780將每個子區域內的車輛行駛路徑下發到該分配給該子區域的AGV 600。這樣,該子區域的AGV 600可以根據接收的指定路徑,完成貨物搬運任務。
根據本發明的實施例,訂單數據獲取模塊710、庫存數據獲取模塊720、坐標數據獲取模塊730、區域劃分模塊740、車輛狀態獲取模塊750、車輛分配模塊760、行駛路徑計算模塊770和路徑下發模塊780可以實現為參考圖4描述的計算機程序模塊,其在被處理器210執行時,可以實現上面描述的相應操作。在備選實施例中,訂單數據獲取模塊710、庫存數據獲取模塊720、坐標數據獲取模塊730、區域劃分模塊740、車輛狀態獲取模塊750、車輛分配模塊760、行駛路徑計算模塊770和路徑下發模塊780中的至少一項可以至少被部分地實現為硬件電路,例如現場可編程門陣列(FPGA)、可編程邏輯陣列(PLA)、片上系統、基板上的系統、封裝上的系統、專用集成電路(ASIC),或可以以用于對電路進行集成或封裝的任何其他的合理方式等硬件或固件來實現,或以軟件、硬件以及固件三種實現方式的適當組合來實現。
盡管已經參照本發明的特定示例性實施例示出并描述了本發明,但是本領域技術人員應該理解,在不背離所附權利要求及其等同物限定的本發明的精神和范圍的情況下,可以對本發明進行形式和細節上的多種改變。因此,本發明的范圍不應該限于上述實施例,而是應該不僅由所附權利要求來進行確定,還由所附權利要求的等同物來進行限定。