鑒于目前網(wǎng)上對(duì)于全覆蓋路徑規(guī)劃方面的資料比較少,本次博客內(nèi)容主要分享下拖拉機(jī)在農(nóng)田里面作業(yè)的路徑規(guī)劃,以及軌跡優(yōu)化。
目錄
1. 什么是全覆蓋路徑規(guī)劃
2. 實(shí)用案例
3. 農(nóng)田作業(yè)機(jī)器人
如何獲取地圖
如何規(guī)劃出全覆蓋的路徑
如何確保規(guī)劃出來的路徑是符合車輛動(dòng)力學(xué)要求的
1. 什么是全覆蓋路徑規(guī)劃
- 遍歷工作區(qū)域內(nèi)的所有面積
- 移動(dòng)過程中要避開障礙物
- 保證覆蓋率,避免重復(fù)路徑
2. 實(shí)用案例
- 掃地機(jī)器人,割草機(jī)器人,排雷機(jī)器人,農(nóng)田作業(yè)等。
3. 農(nóng)田作業(yè)機(jī)器人
如何獲取地圖
? ? ? ? 農(nóng)田作業(yè)機(jī)器人和室內(nèi)作業(yè)機(jī)器人的區(qū)別是,農(nóng)田作業(yè)的面積是很大的,并且周邊沒有圍墻,樹木之類的,因此無法像掃地機(jī)器人那樣通過SLAM建立農(nóng)田的地圖,農(nóng)田的優(yōu)勢(shì)就是,環(huán)境比較單一,障礙物比較少或者無障礙物,這對(duì)于規(guī)劃來說也是比較友善的,因此為了獲取農(nóng)田的地塊,一般是采用GPS打點(diǎn)的形式,也就是拿著RTK模塊,去農(nóng)田邊上走一圈,就可以獲取得到農(nóng)田在地球表面的坐標(biāo)了。
如何規(guī)劃出全覆蓋的路徑
? ? ? ? 規(guī)劃全覆蓋路徑,和一般的路徑規(guī)劃是不一樣的,全覆蓋規(guī)劃不是點(diǎn)到點(diǎn)的規(guī)劃,所以一般的圖搜索算法例如A star, RRT等,都是用不上的。?
? ? ? ? 在探討如何規(guī)劃全覆蓋的作業(yè)路徑之前,首先了解下,農(nóng)業(yè)機(jī)器人在農(nóng)田內(nèi)是如何工作的,以及其工作的內(nèi)容有哪些。舉個(gè)例子,比如,深松,靶地,起壟,旋耕等,這些都是農(nóng)機(jī)比較常見的作業(yè),他們都有一些共同的特點(diǎn),主要的路徑都是直線+掉頭+直線+掉頭的形式。所以對(duì)于這種形式的全覆蓋規(guī)劃,使用高中學(xué)的幾何知識(shí)就可以完成了,首先選擇一個(gè)方向,然后找一條與該方向平行的直線,從地圖的一邊盡頭往另一邊平移,直線與邊界的交點(diǎn)就是直線路線的兩個(gè)端點(diǎn),專業(yè)一點(diǎn)的話,這種直線段被稱為壟,如下圖1所示,直線段都稱為壟, 掉頭的地方,直接將直線段的端點(diǎn)相連接即可。這是簡(jiǎn)單的的全覆蓋規(guī)劃方法了,還有一些比較復(fù)雜的地圖,比如圖2,圖3。
? ? ? ? 從一下圖中可以看到,掉頭區(qū)域出現(xiàn)很多尖角,對(duì)于阿克曼形式的移動(dòng)機(jī)器人來說,這是比較致命的,農(nóng)業(yè)拖拉機(jī)多數(shù)也是阿克曼形式的底盤,轉(zhuǎn)彎是有最大轉(zhuǎn)彎角度約束的,這種尖角形式的軌跡是不適合拖拉機(jī)正常跟隨的,因此還需要對(duì)下面的path作進(jìn)一步的軌跡優(yōu)化,是的path每一個(gè)點(diǎn)的曲率都滿足車輛動(dòng)力學(xué)要求。
圖1
圖2
圖3(地圖內(nèi)有三個(gè)障礙物,分別是圓形和矩形障礙物)
如何確保規(guī)劃出來的路徑是符合車輛動(dòng)力學(xué)要求的
對(duì)于使用差速輪作為底盤的移動(dòng)機(jī)器人,規(guī)劃出直線段軌跡后,還需要進(jìn)一步平滑,平滑軌跡的方式可以采用b樣條曲線,因?yàn)檫@種差速輪形式的機(jī)器人,在跟蹤軌跡的時(shí)候是不會(huì)受到曲線的曲率影響的,因?yàn)楫?dāng)線速度無窮小的時(shí)候,差速輪的轉(zhuǎn)彎能力無窮大,也就是原地轉(zhuǎn)彎,但是如果采用B樣條進(jìn)行擬合直線的話,有可能會(huì)出現(xiàn)平滑后的軌跡是穿過障礙物的情況,這種情況的話,可能就要使用一些優(yōu)化算法了,比如參考高飛老師的開源項(xiàng)目,ego planner,簡(jiǎn)介可以看下下面的知乎大佬寫的內(nèi)容。大體上可以知道是干嘛的。這個(gè)算法沒有加入曲率的約束,所以對(duì)于車輛來說是不行的,應(yīng)該車輛有方向盤打角約束。對(duì)于車輛的軌跡優(yōu)化,我參考的是混合A*的算法,掉頭區(qū)域可以用混合A*搜索出一條軌跡,最后再加一個(gè)平滑,?結(jié)果圖4, 圖5,后續(xù)有人感興趣的話,在更新實(shí)現(xiàn)部分內(nèi)容。https://zhuanlan.zhihu.com/p/513312955https://zhuanlan.zhihu.com/p/513312955?
?圖4? ?
?
?圖5
鴿了好久沒更新了
前面說到如何獲取地圖,一般商用階段都是手持RTK模塊,或者無人機(jī)啥的繞著田邊打點(diǎn),但是這是有硬件加持的情況,對(duì)于普通人來說如何獲取真實(shí)的地塊信息呢,可以去google earth, 在google earth不僅可以看到你的家, 還可以把你家門前的地塊經(jīng)緯度給獲取到(不準(zhǔn)就是了,不過不影響算法測(cè)試), 打開google earth,new project, new features, features可以選擇 draw line, 這個(gè)時(shí)候就可以把農(nóng)田邊界以及障礙物給勾勒出來,如下圖6, 勾勒之后,保存并輸出成kml文件即可, 地塊的經(jīng)緯度海拔信息就存放在kml文件中,讀取這個(gè)kml文件可以用python來讀方便簡(jiǎn)單。 具體的步驟如下
- 在google earth選中一塊地
- 輸出地圖經(jīng)緯度信息
- 用python解析kml文件并把經(jīng)緯度轉(zhuǎn)換成局部笛卡爾坐標(biāo)系
- 規(guī)劃算法讀取解析的地圖位置并開始規(guī)劃
- 把規(guī)劃算法的結(jié)果轉(zhuǎn)換成經(jīng)緯度坐標(biāo)系
- 按照kml的文件格式把規(guī)劃數(shù)據(jù)寫進(jìn).kml文件
- 在google earth上加載規(guī)劃的數(shù)據(jù)
圖6? ?
?分享下最近開發(fā)的規(guī)劃圖, 圖7-9 路線是不同的方向走兩次,這樣犁地估計(jì)效果更好,圖10就是只犁一次, 覆蓋率還是很高的,97%的覆蓋率
?
?圖7
?圖8
?
?圖9
圖10?
待更?。?!
REFERENCE? ? ? ?文章來源:http://www.zghlxwxcb.cn/news/detail-822460.html
Path Planning for Autonomous Vehicles in Unknown Semi-structured Environments文章來源地址http://www.zghlxwxcb.cn/news/detail-822460.html
到了這里,關(guān)于移動(dòng)機(jī)器人農(nóng)田機(jī)器人全覆蓋路徑規(guī)劃的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!