色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

自動駕駛路徑規(guī)劃:A*(Astar)算法

3D視覺工坊 ? 來源:CSDN ? 2023-03-24 11:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 最佳優(yōu)先搜索(Best-First Search)

最佳優(yōu)先搜索(BFS),又稱A算法,是一種啟發(fā)式搜索算法(Heuristic Algorithm)。[不是廣度優(yōu)先搜索算法( Breadth First Search , BFS )]BFS算法在廣度優(yōu)先搜索的基礎(chǔ)上,用啟發(fā)估價(jià)函數(shù)對將要被遍歷到的點(diǎn)進(jìn)行估價(jià),然后選擇代價(jià)小的進(jìn)行遍歷,直到找到目標(biāo)節(jié)點(diǎn)或者遍歷完所有點(diǎn),算法結(jié)束。要實(shí)現(xiàn)最佳優(yōu)先搜索我們必須使用一個(gè)優(yōu)先隊(duì)列(priority queue)來實(shí)現(xiàn),通常采用一個(gè)open優(yōu)先隊(duì)列和一個(gè)closed集,open優(yōu)先隊(duì)列用來儲存還沒有遍歷將要遍歷的節(jié)點(diǎn),而closed集用來儲存已經(jīng)被遍歷過的節(jié)點(diǎn)。1.1 最佳優(yōu)先搜索的過程最佳優(yōu)先搜索的過程可以被描述為:1、將根節(jié)點(diǎn)放入優(yōu)先隊(duì)列open中。2、從優(yōu)先隊(duì)列中取出優(yōu)先級最高的節(jié)點(diǎn)X。3、根據(jù)節(jié)點(diǎn)X生成子節(jié)點(diǎn)Y:X的子節(jié)點(diǎn)Y不在open隊(duì)列或者closed中,由估價(jià)函數(shù)計(jì)算出估價(jià)值,放入open隊(duì)列中。X的子節(jié)點(diǎn)Y在open隊(duì)列中,且估價(jià)值優(yōu)于open隊(duì)列中的子節(jié)點(diǎn)Y,將open隊(duì)列中的子節(jié)點(diǎn)Y的估價(jià)值替換成新的估價(jià)值并按優(yōu)先值排序。X的子節(jié)點(diǎn)Y在closed集中,且估價(jià)值優(yōu)于closed集中的子節(jié)點(diǎn)Y,將closed集中的子節(jié)點(diǎn)Y移除,并將子節(jié)點(diǎn)Y加入open優(yōu)先隊(duì)列。4、將節(jié)點(diǎn)X放入closed集中。5、重復(fù)過程2,3,4直到目標(biāo)節(jié)點(diǎn)找到,或者open為空,程序結(jié)束。bbab03a2-c9b7-11ed-bfe3-dac502259ad0.pngBFS不能保證找到一條最短路徑。然而,它比Dijkstra算法快的多,因?yàn)樗昧艘粋€(gè)啟發(fā)式函數(shù)(heuristic function)快速地導(dǎo)向目標(biāo)結(jié)點(diǎn)。這篇博客對BFS進(jìn)行了詳細(xì)的介紹用的是羅馬尼亞度假問題https://blog.csdn.net/weixin_46582817/article/details/115217489bbc88d82-c9b7-11ed-bfe3-dac502259ad0.png ? ?

2. A-Star算法

1968年發(fā)明的A*算法就是把啟發(fā)式方法(heuristic approaches)如BFS,和常規(guī)方如Dijsktra算法結(jié)合在一起的算法。A-Star算法是一種靜態(tài)路網(wǎng)中求解最短路徑最有效的直接搜索方法,也是解決許多搜索問題的有效算法。?和Dijkstra一樣,A*能用于搜索最短路徑。?和BFS一樣,A*能用啟發(fā)式函數(shù)引導(dǎo)它自己。左圖為Astar算法效果圖,右圖為Dijkstra算法效果圖bc1bf17a-c9b7-11ed-bfe3-dac502259ad0.pngAstar算法與Dijkstra算法的效果差不多,但Astar算法訪問的節(jié)點(diǎn)數(shù)明顯比Dijkstra算法少得多,說明其速度更快,運(yùn)行時(shí)間更短。 2.1 Astar算法所屬分類 A*算法在最短路徑搜索算法中分類為:?直接搜索算法:直接在實(shí)際地圖上進(jìn)行搜索,不經(jīng)過任何預(yù)處理;?啟發(fā)式算法:通過啟發(fā)函數(shù)引導(dǎo)算法的搜索方向;?靜態(tài)圖搜索算法:被搜索的圖的權(quán)值不隨時(shí)間變化(后被證明同樣可以適用于動態(tài)圖的搜索 ) 2.2 Astar算法基本概念 A*算法啟發(fā)函數(shù)表示為:f(n)=g(n)+h(n)?f(n) 是從初始狀態(tài)經(jīng)由狀態(tài)n到目標(biāo)狀態(tài)的代價(jià)估計(jì)?g(n) 是在狀態(tài)空間中從初始狀態(tài)到狀態(tài)n的實(shí)際代價(jià)?h(n) 是從狀態(tài)n到目標(biāo)狀態(tài)的最佳路徑的估計(jì)代價(jià)(對于路徑搜索問題,狀態(tài)就是圖中的節(jié)點(diǎn),代價(jià)就是距離)Astar算法是啟發(fā)式搜索算法,啟發(fā)式搜索是在狀態(tài)空間中對每一個(gè)搜索的位置進(jìn)行評估,得到最好的位置,再從這個(gè)位置進(jìn)行搜索直到目標(biāo)。這樣可以省略大量無謂的搜索路徑,提高效率。在啟發(fā)式搜索中,對位置的估價(jià)是十分重要的。采用了不同的估價(jià)可以有不同的效果。啟發(fā)函數(shù)(Heuristics Function)(估價(jià)函數(shù)):H為啟發(fā)函數(shù),也被認(rèn)為是一種試探。由于在找到唯一路徑前,不確定在前面會出現(xiàn)什么障礙物,計(jì)算H的算法(例如,H可采用傳統(tǒng)的曼哈頓距離)具體根據(jù)實(shí)際場景決定父節(jié)點(diǎn)(parent):在路徑規(guī)劃中用于回溯的節(jié)點(diǎn)。搜索區(qū)域(The Search Area):前面圖中的搜索區(qū)域被劃分為了簡單的二維數(shù)組,數(shù)組每個(gè)元素對應(yīng)一個(gè)小方格,也可以將區(qū)域等分成是五角星,矩形等,通常將一個(gè)單位的中心點(diǎn)稱之為搜索區(qū)域節(jié)點(diǎn)(Node)。開放列表(Open List):將路徑規(guī)劃過程中待檢測的節(jié)點(diǎn)存放于Open List中。關(guān)閉列表(Close List):將路徑規(guī)劃過程中已經(jīng)檢查過的節(jié)點(diǎn)放在Close List。 2.3 啟發(fā)函數(shù)單調(diào)性的推導(dǎo) 單調(diào)性:單調(diào)性是Astar算法非常重要的一個(gè)性質(zhì),它決定了在用Astar算法進(jìn)行路徑搜索時(shí),一定能找到一條最優(yōu)路徑。設(shè)父節(jié)點(diǎn)的坐標(biāo)為(x0,y0),它的任意一個(gè)子節(jié)點(diǎn)的坐標(biāo)為(xi,yi),所以對兩者之間的h(x),就一定滿足bc4127ce-c9b7-11ed-bfe3-dac502259ad0.png ?在Astar算法的運(yùn)行過程中,后繼的f(x)值時(shí)大于當(dāng)前f(x)的值,即f(x)在之后對子節(jié)點(diǎn)的搜索擴(kuò)展是單調(diào)遞增的,不會像人工勢場法一樣出現(xiàn)局部極小值,因此使用Astar算法規(guī)劃出的路徑一定是最優(yōu)路徑.2.4 設(shè)計(jì)代價(jià)函數(shù)時(shí)所需注意的點(diǎn)在使用A*算法的過程中,啟發(fā)代價(jià)的值必須盡量接近于真實(shí)值(盡量選取能取到的最大值,這樣可以提升搜索效率),以保證規(guī)劃出的路徑盡可能地與實(shí)際地圖環(huán)境相符合。根據(jù)所需的模型選擇不同的啟發(fā)代價(jià)的計(jì)算方法時(shí),同樣必須保證啟發(fā)代價(jià)所得的估計(jì)值小于真實(shí)值。 2.5 代價(jià)函數(shù)的選擇 2.5.1 曼哈頓距離 曼哈頓距離函數(shù)在標(biāo)準(zhǔn)坐標(biāo)系中,表示起始和目標(biāo)兩節(jié)點(diǎn)的絕對值總和,其估計(jì)值就是從當(dāng)前點(diǎn)做水平和垂直運(yùn)動,到達(dá)目標(biāo)點(diǎn)的成本的估計(jì),因此,曼哈頓距離函數(shù)中,兩點(diǎn)的距離如下bc64454c-c9b7-11ed-bfe3-dac502259ad0.pngK——相鄰兩節(jié)點(diǎn)之間的距離,即單位距離;
(x1,y1)——起始節(jié)點(diǎn)的坐標(biāo);
(x2,y2)——目標(biāo)節(jié)點(diǎn)的坐標(biāo);
bc7a8078-c9b7-11ed-bfe3-dac502259ad0.png ?2.5.2 歐幾里得距離 歐幾里得距離又稱為歐式距離,它是衡量兩點(diǎn)之間距離遠(yuǎn)近的最常用的方法之一。歐幾里得距離函數(shù)的值可以直接看作起始節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),在歐式空間中的直線距離,其表達(dá)式如下所示bca67926-c9b7-11ed-bfe3-dac502259ad0.pngK——相鄰兩節(jié)點(diǎn)之間的距離,即單位距離;
(xi,yi)——當(dāng)前節(jié)點(diǎn)的坐標(biāo);
(xk,yk)——目標(biāo)節(jié)點(diǎn)的坐標(biāo);
bcbcb3ee-c9b7-11ed-bfe3-dac502259ad0.png歐幾里德距離函數(shù)作為啟發(fā)代價(jià)的計(jì)算方法時(shí),雖然尋徑時(shí)搜索空間增加從而導(dǎo)致搜索效率的降低,但其所得的估計(jì)值最小;而在使用曼哈頓距離函數(shù)時(shí),雖然尋徑需要遍歷的柵格空間少于歐幾里得距離函數(shù),搜索效率較高,但這種方法得到的估計(jì)值與歐幾里得距離函數(shù)相比,距離真實(shí)值更遠(yuǎn)。 2.6 確定最終路徑 已經(jīng)確定了目標(biāo)節(jié)點(diǎn)的坐標(biāo)為,根據(jù)此目標(biāo)節(jié)點(diǎn)的位置,和先前設(shè)置的方向存儲函數(shù)之中的方向,從目標(biāo)節(jié)點(diǎn)利用方向反推至起始節(jié)點(diǎn)。具體實(shí)現(xiàn)的示意圖如下 bcdabc7c-c9b7-11ed-bfe3-dac502259ad0.png ?2.7 路徑平滑 我們需要對規(guī)劃出的路徑進(jìn)行平滑處理,將路徑的轉(zhuǎn)折處轉(zhuǎn)化為平滑的曲線,使之更加符合無人車的實(shí)際運(yùn)動路徑。主要有基于B樣條曲線的路徑優(yōu)化方法,基于Dubins圓的路徑優(yōu)化方法,和基于Clothoid曲線的路徑優(yōu)化方法,基于貝塞爾曲線的路徑平滑算法。bd01ee64-c9b7-11ed-bfe3-dac502259ad0.png紅色為未平滑路徑,綠色方塊為最終路徑,黃色為貝塞爾曲線擬合得到,藍(lán)色為spcrv函數(shù)平滑得到。 2.8 Astar算法的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):相對于需要將所有節(jié)點(diǎn)展開搜尋的算法,A*算法最大的優(yōu)點(diǎn)就是引入了啟發(fā)信息作為向目標(biāo)點(diǎn)移動的決策輔助,所以不再需要遍歷整個(gè)地圖,降低了計(jì)算復(fù)雜度,減少了時(shí)間損耗少。缺點(diǎn):基于柵格法來分割地圖,精度越高,柵格分的就越小,就會使工作量幾何式的增長。估價(jià)函數(shù)選取的不合理也有可能導(dǎo)致無法規(guī)劃出最優(yōu)路徑。距離估計(jì)與實(shí)際值越接近,估價(jià)函數(shù)取得就越好。估價(jià)函數(shù)f(n)在g(n)一定的情況下,會或多或少的受距離估計(jì)值h(n)的制約,節(jié)點(diǎn)距目標(biāo)點(diǎn)近,h值小,f值相對就小,能保證最短路的搜索向終點(diǎn)的方向進(jìn)行,明顯優(yōu)于Dijkstra算法的毫無方向的向四周搜索。 2.9 Astar算法流程 bd1bdb80-c9b7-11ed-bfe3-dac502259ad0.png如下圖所示,綠色是起點(diǎn)A,紅色是終點(diǎn)B,一系列藍(lán)色是障礙物,從A移動到B,繞過障礙。bd52cf0a-c9b7-11ed-bfe3-dac502259ad0.png1、用方格(三角形、五角形)劃分空間,簡化搜索區(qū)域。空間被劃分為二維數(shù)組,數(shù)組中每個(gè)元素代表空間中的一個(gè)方格,可被標(biāo)記為可行或不可行。未來的路徑就是一系列可行方塊的集合。Nodes的概念涵蓋了一系列可行方塊(或其它方塊)2、將起點(diǎn)A放到Openlist中,Openlist存放著一系列需要檢查的節(jié)點(diǎn)(方塊)3、給Openlist中每個(gè)節(jié)點(diǎn)賦值F=G+H (起點(diǎn)為0,橫向和縱向的移動代價(jià)為 10 ,對角線的移動代價(jià)為 14)4、檢查Openlist,選取F值最小的節(jié)點(diǎn)(此處為A點(diǎn))。5、將A點(diǎn)從Openlist中刪除,放入Closelist中(Closelist中存放不可尋點(diǎn),即已被訪問過的點(diǎn)),把A點(diǎn)臨近節(jié)點(diǎn)放入Openlist中,并將A點(diǎn)設(shè)為臨近節(jié)點(diǎn)的父節(jié)點(diǎn)。bd747646-c9b7-11ed-bfe3-dac502259ad0.png6、給Openlist中每個(gè)節(jié)點(diǎn)賦值,選取F值最小的節(jié)點(diǎn)設(shè)為當(dāng)前節(jié)點(diǎn)Node,(若當(dāng)前節(jié)點(diǎn)Node為終點(diǎn),則尋路結(jié)束,若Openlist中沒有可尋節(jié)點(diǎn),則尋路失?。?/span>bd905e24-c9b7-11ed-bfe3-dac502259ad0.png7、檢查當(dāng)前節(jié)點(diǎn)Node周圍臨近節(jié)點(diǎn)。忽略Closelist中的節(jié)點(diǎn)和不可行節(jié)點(diǎn)(障礙),如果臨近節(jié)點(diǎn)在Openlist中,則對比一下是否從當(dāng)前節(jié)點(diǎn)到臨近節(jié)點(diǎn)的G值比原G值(直接到臨近節(jié)點(diǎn)的實(shí)際代價(jià)值)小,若是,把當(dāng)前節(jié)點(diǎn)作為父節(jié)點(diǎn)。否,不做改動。如果臨近節(jié)點(diǎn)不在Openlist中,將其加入到Openlist中,將當(dāng)前節(jié)點(diǎn)設(shè)為它的父節(jié)點(diǎn)。8、若上步驟中新節(jié)點(diǎn)未造成任何改動,將新節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),重復(fù)6,7)中的步驟,直到找到目標(biāo)節(jié)點(diǎn)。bdd04840-c9b7-11ed-bfe3-dac502259ad0.png尋找到目標(biāo)節(jié)點(diǎn)bdf18820-c9b7-11ed-bfe3-dac502259ad0.png9、從目標(biāo)節(jié)點(diǎn)回溯可以找到初始點(diǎn),從而確定路徑be2c75de-c9b7-11ed-bfe3-dac502259ad0.png上述描述路徑的圖片有些錯誤,具體步驟如下圖所示。be58a62c-c9b7-11ed-bfe3-dac502259ad0.jpg ? ?

3. 其他Astar算法

3.1 Astar——三維地圖規(guī)劃 3.1.1 3D-Astar原理三維柵格地圖,顧名思義不是簡單的二維平面,它必須得有三維方向,也就是高度方向上的拓展。柵格地圖在XY水平面上的柵格的投影顏色不盡相同,柵格黃色程度越高,表明此處的高度越高。be8c0e2c-c9b7-11ed-bfe3-dac502259ad0.png為了使啟發(fā)代價(jià)的值應(yīng)該盡量接近于真實(shí)值,三維柵格地圖中仍然選用歐幾里得距離作為估價(jià)函數(shù)計(jì)算啟發(fā)代價(jià)的計(jì)算方法。但本次實(shí)驗(yàn)所處的環(huán)境為三維避障空間,因此相較于二維空間的路徑規(guī)劃,我們將公式做三維化推廣,具體形式如下:beec7e60-c9b7-11ed-bfe3-dac502259ad0.pngh(n)——當(dāng)前節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的啟發(fā)代價(jià)值;g(n-1)——當(dāng)前節(jié)點(diǎn)到它的父節(jié)點(diǎn)之間的路徑代價(jià);D(n-1, n)——當(dāng)前節(jié)點(diǎn)與它的子節(jié)點(diǎn)之間的代價(jià)值。g(n-1)與二維規(guī)劃中的距離代價(jià)計(jì)算方法一致,但D(n-1, n)在計(jì)算時(shí)用父節(jié)點(diǎn)與子節(jié)點(diǎn)之間的距離值除以三維避障環(huán)境中設(shè)定的柵格可通行程度,h(n)也是用當(dāng)前節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的啟發(fā)代價(jià)值除以地圖環(huán)境中預(yù)先設(shè)定的柵格可通行程度。 3.1.2 基于MATLAB實(shí)現(xiàn)3D-Astar 這里是代碼的GitHub地址:https://github.com/ybmasmiling/Astar_3Dbf08935c-c9b7-11ed-bfe3-dac502259ad0.pngbf6db6e2-c9b7-11ed-bfe3-dac502259ad0.png ?3.2 距離與能量復(fù)合Astar算法 經(jīng)典Astar算法路徑規(guī)劃是取兩節(jié)點(diǎn)間曼哈頓距離作為距離估計(jì)為最優(yōu)原則搜索路徑,從而得到最短路徑。搜索路徑的過程中并沒有考慮實(shí)際道路坡度和道路滾動阻力系數(shù)對行駛車輛最短路徑搜索的影響,也沒有考慮在道路上行駛的能量損耗問題,即經(jīng)典Astar算法搜索的最短路徑并非符合實(shí)際車輛行駛的最優(yōu)路徑。 3.2.1 最短路徑啟發(fā)函數(shù)最短路徑啟發(fā)函數(shù):bf91a976-c9b7-11ed-bfe3-dac502259ad0.pngbfadf342-c9b7-11ed-bfe3-dac502259ad0.png ?最終得到的最短路徑啟發(fā)函數(shù)如下式:bfcddd92-c9b7-11ed-bfe3-dac502259ad0.png ?3.2.2 最短道路損耗功啟發(fā)函數(shù) 道路損耗功啟發(fā)函數(shù):bfee5ef0-c9b7-11ed-bfe3-dac502259ad0.pngc0185cfa-c9b7-11ed-bfe3-dac502259ad0.png ?最終得到的最短道路損耗功啟發(fā)函數(shù)如下式:c04d098c-c9b7-11ed-bfe3-dac502259ad0.png ?3.2.3 綜合啟發(fā)函數(shù) 綜合啟發(fā)函數(shù):c06723da-c9b7-11ed-bfe3-dac502259ad0.pngc07dca86-c9b7-11ed-bfe3-dac502259ad0.png綜合式啟發(fā)函數(shù)統(tǒng)一最短路徑啟發(fā)函數(shù)和最小道路額外功函數(shù),不同的權(quán)重大小決定最短路徑啟發(fā)函數(shù)和最小道路額外功函數(shù)在綜合式啟發(fā)函數(shù)中所占不同的比重。 3.3 雙向Astar算法 傳統(tǒng)A算法在大環(huán)境中搜索,存在著搜索效率低的問題。傳統(tǒng)A算法是從起點(diǎn)開始向終點(diǎn)搜索,直到尋到可行路徑停止搜索,在搜索路徑的前期階段遠(yuǎn)g(n)小于h(n),搜索時(shí)橫向搜索范圍窄,縱向搜索范圍寬,搜索速度快,在搜索的后期階段g(n)遠(yuǎn)大于h(n),搜索時(shí)縱向搜索范圍窄,橫向搜索范圍寬,搜索速度慢;**而改進(jìn)后的雙向A搜索算法分別從起點(diǎn)和終點(diǎn)開始搜索,當(dāng)搜索到相同的當(dāng)前節(jié)點(diǎn)時(shí),搜索結(jié)束。**相比于傳統(tǒng)A算法,雙向A*搜索算法都處于g(n)遠(yuǎn)小于h(n)階段,一定程度上提高了算法的搜索效率,縮短搜索時(shí)間。c0a5815c-c9b7-11ed-bfe3-dac502259ad0.png ? ?

4. MATLAB實(shí)現(xiàn)Astar算法

4.1 defColorMap.m 用于初始化地圖參數(shù)
function [field,cmap] = defColorMap(rows, cols)
cmap = [1 1 1; ...    % 1-白色-空地
  0 0 0; ...      % 2-黑色-靜態(tài)障礙
  1 0 0; ...      % 3-紅色-動態(tài)障礙
  1 1 0;...      % 4-黃色-起始點(diǎn) 
  1 0 1;...      % 5-品紅-目標(biāo)點(diǎn)
  0 1 0; ...      % 6-綠色-到目標(biāo)點(diǎn)的規(guī)劃路徑  
  0 1 1];       % 7-青色-動態(tài)規(guī)劃的路徑


% 構(gòu)建顏色MAP圖
colormap(cmap);


% 定義柵格地圖全域,并初始化空白區(qū)域
field = ones(rows, cols);


% 障礙物區(qū)域
obsRate = 0.3;
obsNum = floor(rows*cols*obsRate);
obsIndex = randi([1,rows*cols],obsNum,1);
field(obsIndex) = 2;



4.2 getChildNode.m 用于獲取子節(jié)點(diǎn)信息
function childNodes = getChildNode(field,closeList, parentNode)
% 選取父節(jié)點(diǎn)周邊8個(gè)節(jié)點(diǎn)作為備選子節(jié)點(diǎn),線性化坐標(biāo)
% 排除超過邊界之外的、位于障礙區(qū)的、位于closeList中的


[rows, cols] = size(field);
[row_parentNode, col_parentNode] = ind2sub([rows, cols], parentNode);
childNodes = [];
closeList = closeList(:,1);


% 第1個(gè)子節(jié)點(diǎn)(右節(jié)點(diǎn))
childNode = [row_parentNode, col_parentNode+1];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
    if ~ismember(childNode_LineIdx, closeList)
      childNodes(end+1) = childNode_LineIdx;
    end
  end
end


% 第2個(gè)子節(jié)點(diǎn)(右上節(jié)點(diǎn))
childNode = [row_parentNode-1, col_parentNode+1];
child_brother_node_sub1 = [row_parentNode-1, col_parentNode];
child_brother_node_sub2 = [row_parentNode, col_parentNode+1];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    if ~(field(child_brother_node_sub1(1), child_brother_node_sub1(2)) == 2 & field(child_brother_node_sub2(1), child_brother_node_sub2(2)) == 2)
      childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
      if ~ismember(childNode_LineIdx, closeList)
        childNodes(end+1) = childNode_LineIdx;
      end
    end  
  end
end




% 第3個(gè)子節(jié)點(diǎn)(上節(jié)點(diǎn))
childNode = [row_parentNode-1, col_parentNode];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
    if ~ismember(childNode_LineIdx, closeList)
      childNodes(end+1) = childNode_LineIdx;
    end
  end
end




% 第4個(gè)子節(jié)點(diǎn)(左上)
childNode = [row_parentNode-1, col_parentNode-1];
child_brother_node_sub1 = [row_parentNode-1, col_parentNode];
child_brother_node_sub2 = [row_parentNode, col_parentNode-1];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    if ~(field(child_brother_node_sub1(1), child_brother_node_sub1(2)) == 2 & field(child_brother_node_sub2(1), child_brother_node_sub2(2)) == 2)
      childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
      if ~ismember(childNode_LineIdx, closeList)
        childNodes(end+1) = childNode_LineIdx;
      end
    end 
  end
end




% 第5個(gè)子節(jié)點(diǎn)(左節(jié)點(diǎn))
childNode = [row_parentNode, col_parentNode-1];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
    if ~ismember(childNode_LineIdx, closeList)
      childNodes(end+1) = childNode_LineIdx;
    end
  end
end




% 第6個(gè)子節(jié)點(diǎn)(左下)
childNode = [row_parentNode+1, col_parentNode-1];
  child_brother_node_sub1 = [row_parentNode, col_parentNode-1];
  child_brother_node_sub2 = [row_parentNode+1, col_parentNode];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    if ~(field(child_brother_node_sub1(1), child_brother_node_sub1(2)) == 2 & field(child_brother_node_sub2(1), child_brother_node_sub2(2)) == 2)
      childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
      if ~ismember(childNode_LineIdx, closeList)
        childNodes(end+1) = childNode_LineIdx;
      end
    end 
  end
end




% 第7個(gè)子節(jié)點(diǎn)(下)
childNode = [row_parentNode+1, col_parentNode];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2
    childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2));
    if ~ismember(childNode_LineIdx, closeList)
      childNodes(end+1) = childNode_LineIdx;
    end
  end
end




% 第8個(gè)子節(jié)點(diǎn)(右下)
childNode = [row_parentNode+1, col_parentNode+1];
  child_brother_node_sub1 = [row_parentNode, col_parentNode+1];
  child_brother_node_sub2 = [row_parentNode+1, col_parentNode];
if ~(childNode(1) < 1 || childNode(1) > rows ||...
    childNode(2) < 1 || childNode(2) > cols)
  if field(childNode(1), childNode(2)) ~= 2 
    if ~(field(child_brother_node_sub1(1), child_brother_node_sub1(2)) == 2 & field(child_brother_node_sub2(1), child_brother_node_sub2(2)) == 2)
      childNode_LineIdx = sub2ind([rows, cols], childNode(1), childNode(2)); 
      if ~ismember(childNode_LineIdx, closeList)
        childNodes(end+1) = childNode_LineIdx;
      end
    end
  end
end
4.3 Astar.m 主程序
% 基于柵格地圖的機(jī)器人路徑規(guī)劃算法
% A*算法
clc
clear
close all


%% 柵格界面、場景定義
% 行數(shù)和列數(shù)
rows = 20;
cols = 20;
[field,cmap] = defColorMap(rows, cols);


% 起點(diǎn)、終點(diǎn)、障礙物區(qū)域
startPos = 2;
goalPos = rows*cols-2;
field(startPos) = 4;
field(goalPos) = 5;


%% 預(yù)處理


% 初始化closeList
parentNode = startPos;
closeList = [startPos,0];


% 初始化openList
openList = struct;
childNodes = getChildNode(field,closeList,parentNode);
for i = 1:length(childNodes)
  [row_startPos,col_startPos] = ind2sub([rows, cols],startPos);
  [row_goalPos,col_goalPos] = ind2sub([rows, cols],goalPos);  
  [row,col] = ind2sub([rows, cols],childNodes(i));


  % 存入openList結(jié)構(gòu)體
  openList(i).node = childNodes(i);
  openList(i).g = norm([row_startPos,col_startPos] - [row,col]); % 實(shí)際代價(jià)采用歐式距離
  openList(i).h = abs(row_goalPos - row) + abs(col_goalPos - col); % 估計(jì)代價(jià)采用曼哈頓距離
  openList(i).f = openList(i).g + openList(i).h;
end


% 初始化path
for i = 1:rows*cols
  path{i,1} = i; % 線性索引值
end
for i = 1:length(openList)
  node = openList(i).node;
  path{node,2} = [startPos,node];
end 


%% 開始搜索
% 從openList開始搜索移動代價(jià)最小的節(jié)點(diǎn)
[~, idx_min] = min([openList.f]); 
parentNode = openList(idx_min).node;


% 進(jìn)入循環(huán)
while true 
  
  % 找出父節(jié)點(diǎn)的8個(gè)子節(jié)點(diǎn),障礙物節(jié)點(diǎn)用inf,
  childNodes = getChildNode(field, closeList,parentNode);
  
  % 判斷這些子節(jié)點(diǎn)是否在openList中,若在,則比較更新;沒在則追加到openList中
  for i = 1:length(childNodes)
    
    % 需要判斷的子節(jié)點(diǎn)
    childNode = childNodes(i);
    [in_flag,idx] = ismember(childNode, [openList.node]);
      
    % 計(jì)算代價(jià)函數(shù)
    [row_parentNode,col_parentNode] = ind2sub([rows, cols], parentNode);
    [row_childNode,col_childNode] = ind2sub([rows, cols], childNode);
    [row_goalPos,col_goalPos] = ind2sub([rows, cols],goalPos);
    g = openList(idx_min).g + norm( [row_parentNode,col_parentNode] -...
      [row_childNode,col_childNode]);
    h = abs(row_goalPos - row_childNode) + abs(col_goalPos - col_childNode); % 采用曼哈頓距離進(jìn)行代價(jià)估計(jì)
    f = g + h;
    
    if in_flag  % 若在,比較更新g和f    
      if f < openList(idx).f
        openList(idx).g = g;
        openList(idx).h = h;
        openList(idx).f = f;
        path{childNode,2} = [path{parentNode,2}, childNode];
      end
    else     % 若不在,追加到openList
      openList(end+1).node = childNode;
      openList(end).g = g;
      openList(end).h = h;
      openList(end).f = f;
      path{childNode,2} = [path{parentNode,2}, childNode];
    end
  end
    
  % 從openList移出移動代價(jià)最小的節(jié)點(diǎn)到closeList
  closeList(end+1,: ) = [openList(idx_min).node, openList(idx_min).f];
  openList(idx_min)= [];


  % 重新搜索:從openList搜索移動代價(jià)最小的節(jié)點(diǎn)
  [~, idx_min] = min([openList.f]);
  parentNode = openList(idx_min).node;
  
  % 判斷是否搜索到終點(diǎn)
  if parentNode == goalPos
    closeList(end+1,: ) = [openList(idx_min).node, openList(idx_min).f];
    break
  end
end


%% 畫路徑
% 找出目標(biāo)最優(yōu)路徑
path_target = path{goalPos,2};
for i = 1:rows*cols
   if ~isempty(path{i,2}) 
    field((path{i,1})) = 7;
   end
end
field(startPos) = 4;
field(goalPos) = 5;
field(path_target(2:end-1)) = 6;


% 畫柵格圖
image(1.5,1.5,field);
grid on;
set(gca,'gridline','-','gridcolor','k','linewidth',2,'GridAlpha',0.5);
set(gca,'xtick',1:cols+1,'ytick',1:rows+1);
axis image;
hold on;
[y0,x0] = ind2sub([rows,cols], path_target);
y = y0 + 0.5;
x = x0 + 0.5;
plot(x,y,'-','Color','r','LineWidth',2.5);
hold on;
points = [x',y'];
M = 10;
[x1,y1] = bezir_n(points, M);
plot(x1,y1,'-','Color','y','LineWidth',2.5);
hold on;
values = spcrv([[x(1) x x(end)];[y(1) y y(end)]],3);
plot(values(1,:),values(2,:),'b','LineWidth',2.5);
4.4 算法效果 c0c13e60-c9b7-11ed-bfe3-dac502259ad0.png運(yùn)行總時(shí)間c0e880ce-c9b7-11ed-bfe3-dac502259ad0.png柵格地圖大?。?0x20)c10671ce-c9b7-11ed-bfe3-dac502259ad0.png柵格地圖大?。?0x30)c1294f8c-c9b7-11ed-bfe3-dac502259ad0.png柵格地圖大小(40x40)可以看到Astar算法對于柵格地圖越大的情況,搜索時(shí)間越長,其速度相比Dijkstra有優(yōu)勢(尤其是在地圖比較大的時(shí)候,優(yōu)勢更明顯)。但其總耗時(shí)較長,不適用于實(shí)時(shí)的路徑規(guī)劃,不適用于局部路徑規(guī)劃,適用于全局路徑規(guī)劃。

5. python實(shí)現(xiàn)Astar算法

可以參考這篇文章https://www.jianshu.com/p/5704e67f40aa這篇文章介紹了Astar以及后續(xù)的變種算法python 版本的偽代碼(來源:https://brilliant.org/wiki/a-star-search/)如下:
make an openlist containing only the starting node
make an empty closed list
  while (the destination node has not been reached):
    consider the node with the lowest f score in the open list
    if (this node is our destination node) :
      we are finished 
    if not:
      put the current node in the closed list and look at all of its neighbors
      for (each neighbor of the current node):
        if (neighbor has lower g value than current and is in the closed list) :
          replace the neighbor with the new, lower, g value 
          current node is now the neighbor's parent      
        else if (current g value is lower and this neighbor is in the open list ) :
          replace the neighbor with the new, lower, g value 
          change the neighbor's parent to our current node


        else if this neighbor is not in both lists:
          add it to the open list and set its g

6. Java實(shí)現(xiàn)Astar算法

可以參考這篇文章:https://www.jianshu.com/p/950233af52df

7. 實(shí)踐案例—基于ROS實(shí)現(xiàn)Astar與DWA算法

本項(xiàng)目以Astar算法作為全局路徑規(guī)劃算法,DWA作為局部路徑規(guī)劃算法,實(shí)現(xiàn)效果如下。(具體原理與算法代碼解釋與說明會在之后的文章附上)
審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4719

    瀏覽量

    95898
  • Open
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    11272
  • 自動駕駛
    +關(guān)注

    關(guān)注

    790

    文章

    14388

    瀏覽量

    171387

原文標(biāo)題:自動駕駛路徑規(guī)劃:A*(Astar)算法

文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    自動駕駛路徑規(guī)劃技術(shù)之A-Star算法

    Astar算法與Dijkstra算法的效果差不多,但Astar算法訪問的節(jié)點(diǎn)數(shù)明顯比Dijkstra算法
    發(fā)表于 03-23 12:26 ?3886次閱讀

    FPGA在自動駕駛領(lǐng)域有哪些應(yīng)用?

    是FPGA在自動駕駛領(lǐng)域的主要應(yīng)用: 一、感知算法加速 圖像處理:自動駕駛中需要通過攝像頭獲取并識別道路信息和行駛環(huán)境,這涉及到大量的圖像處理任務(wù)。FPGA在處理圖像上的運(yùn)算速度快,可并行性強(qiáng),且功耗
    發(fā)表于 07-29 17:09

    自動駕駛的到來

    得益于2025規(guī)劃,中國整車廠與Tier1目前對于自動駕駛有極大的熱忱及投入,有機(jī)會在這個(gè)領(lǐng)域?qū)崿F(xiàn)彎道超車。目前的顧慮在于法規(guī)政策的制定,以及中國特色的交通情況帶給自動駕駛的挑戰(zhàn)。安全問題  目前主要
    發(fā)表于 06-08 15:25

    AI/自動駕駛領(lǐng)域的巔峰會議—國際AI自動駕駛高峰論壇

    由南德意志出版及活動有限公司舉辦的 國際AI自動駕駛高峰論壇 將于 2017年11月28/29日 在 德國慕尼黑 舉辦,中德聯(lián)合股份公司作為中國獨(dú)家合作伙伴,誠邀您撥冗蒞臨!【活動背景】AI
    發(fā)表于 09-13 13:59

    即插即用的自動駕駛LiDAR感知算法盒子 RS-Box

    RS-LiDAR-Algorithms 感知算法。經(jīng)過與多個(gè)自動駕駛汽車研發(fā)團(tuán)隊(duì)的聯(lián)合調(diào)試打磨,RS-LiDAR-Algorithms 目前已經(jīng)可以駕馭常見的大部分自動駕駛場景,其以內(nèi)測為主的階段性使命已經(jīng)完成。速騰
    發(fā)表于 12-15 14:20

    UWB主動定位系統(tǒng)在自動駕駛中的應(yīng)用實(shí)踐

    3萬美元以上,相當(dāng)于一輛中級車的價(jià)格。自動駕駛四大核心技術(shù)分別為環(huán)境感知、高精度定位、路徑規(guī)劃、控制執(zhí)行。其中環(huán)境感知技術(shù)是最基礎(chǔ)、最重要的一環(huán)。通過環(huán)境感知,可實(shí)時(shí)、可靠且準(zhǔn)確地識別出車輛行駛
    發(fā)表于 12-14 17:30

    如何讓自動駕駛更加安全?

    等功能。關(guān)于自動駕駛的應(yīng)用,產(chǎn)業(yè)界存在兩種不同的轉(zhuǎn)型路徑。第一種是傳統(tǒng)汽車制造商的“漸進(jìn)演化”路線,即在傳統(tǒng)的汽車上逐漸新增一些自動駕駛的功能,最終過渡到完全自動駕駛的階段。另外一種是
    發(fā)表于 05-13 00:26

    你知道有哪幾種常見的車輛路徑規(guī)劃算法嗎?

    如何去提高汽車的主動安全性和交通安全性?從算法上解讀自動駕駛是如何實(shí)現(xiàn)的?有哪幾種常見的車輛路徑規(guī)劃算法
    發(fā)表于 06-17 10:56

    自動駕駛系統(tǒng)設(shè)計(jì)及應(yīng)用的相關(guān)資料分享

    作者:余貴珍、周彬、王陽、周亦威、白宇目錄第一章 自動駕駛系統(tǒng)概述1.1 自動駕駛系統(tǒng)架構(gòu)1.1.1 自動駕駛系統(tǒng)的三個(gè)層級1.1.2 自動駕駛系統(tǒng)的基本技術(shù)架構(gòu)1.2
    發(fā)表于 08-30 08:36

    自動駕駛技術(shù)的實(shí)現(xiàn)

    的帶寬有了更高的要求。從而使用以太網(wǎng)技術(shù)及中央域控制(Domain)和區(qū)域控制(Zonal)架構(gòu)是下一代車載網(wǎng)絡(luò)的發(fā)展方向。然而對于自動駕駛技術(shù)的實(shí)現(xiàn),涉及到感知、規(guī)劃、執(zhí)行三個(gè)層面。由于車輛行...
    發(fā)表于 09-03 08:31

    自動駕駛汽車四種常用的路徑規(guī)劃算法解析

    自動駕駛汽車的路徑規(guī)劃算法最早源于機(jī)器人的路徑規(guī)劃研究,但是就工況而言卻比機(jī)器人的路徑
    發(fā)表于 03-08 17:29 ?1.8w次閱讀

    解析自動駕駛汽車路徑規(guī)劃算法

    車輛自主駕駛系統(tǒng)從本質(zhì)上講是一個(gè)智能控制機(jī)器,其研究內(nèi)容大致可分為信息感知、行為決策及操縱控制三個(gè)子系統(tǒng)。路徑規(guī)劃是智能車輛導(dǎo)航和控制的基礎(chǔ),是從軌跡決策的角度考慮的,可分為局部路徑
    發(fā)表于 07-28 09:04 ?5277次閱讀

    自動駕駛中基于圖搜索的常用路徑規(guī)劃算法介紹

    自動駕駛汽車從A點(diǎn)行駛到B點(diǎn),需要軌跡規(guī)劃算法來進(jìn)行全局規(guī)劃,而具體都有哪些算法呢?這篇文章想和大家分享一下一類最常用的軌跡
    的頭像 發(fā)表于 04-25 18:02 ?3876次閱讀
    <b class='flag-5'>自動駕駛</b>中基于圖搜索的常用<b class='flag-5'>路徑</b><b class='flag-5'>規(guī)劃算法</b>介紹

    自動駕駛路徑規(guī)劃

    路徑規(guī)劃自動駕駛技術(shù)中最重要的部分,之前的文章有一些這方面的介紹,但是并不全面和系統(tǒng): 初探路徑規(guī)劃:主要從? 帶約束的多項(xiàng)式擬合;貝賽爾
    發(fā)表于 06-01 15:12 ?0次下載
    <b class='flag-5'>自動駕駛</b>之<b class='flag-5'>路徑</b><b class='flag-5'>規(guī)劃</b>

    自動駕駛軌跡規(guī)劃路徑規(guī)劃總結(jié)

    接下來的幾篇文章將主要圍繞著全局路徑規(guī)劃的常見算法展開。全局路徑規(guī)劃與局部路徑
    發(fā)表于 06-07 14:23 ?0次下載
    <b class='flag-5'>自動駕駛</b>軌跡<b class='flag-5'>規(guī)劃</b>之<b class='flag-5'>路徑</b><b class='flag-5'>規(guī)劃</b>總結(jié)
    主站蜘蛛池模板: 制服丝袜亚洲中文综合懂色 | 国产色视频播放网站www | 国产色网址 | 91精品国产一区二区三区蜜臀 | 久久九九国产精品 | avtt在线播放 | 丰满少妇高潮惨叫久久久一 | 久久网站视频 | 日韩精品在线观 | 亚洲国产成人无码网站大全 | 日韩特黄一级欧美毛片特黄 | 欧美交换国产一区内射 | 亚洲欧美高清一区二区三区 | www.自拍偷拍 | 色老大视频 | jizz另类| 国产欧美日韩三级 | 国产手机在线αⅴ片无码观看 | 欧美一二三区在线观看 | 蜜桃精品在线观看 | 性一交一乱一伧国产女士spa | 久久精品综合视频 | 精品国产一区二区三区麻豆仙踪林 | 91在线资源 | 国产人妻久久精品二区三区老狼 | 老太婆性杂交视频 | 成人无码av一区二区 | 日本黄色免费 | 精品国产一区二区三区四区 | 91最新在线视频 | 一起艹在线观看 | 日韩精品影视 | 含羞草91大少妇 | 91好色视频 | 91一区二区在线观看 | 四虎看黄 | 亚洲高清在线视频 | 久久婷婷五月综合97色一本一本 | 国产吞精囗交免费视频网站 | 欧美精品一区视频 | 免费观看又色又爽又黄的崩锅 | 久久精品国产亚洲精品2020 | av在线网页 | 亚洲爽妇网 | 中国孕妇变态孕交xxxx | 日韩三区在线观看 | 国产黄a| 麻豆人妻少妇精品无码专区 | 天堂伊人网 | 亚洲理论在线 | 成人快色 | av第下页 | 国产毛片欧美毛片久久久 | 日本精品在线视频 | 久久精视频 | 久久久久久久女女女又又 | 夜夜躁狠狠躁日日躁aab苏桃 | 精品国产美女福到在线不卡 | 亚洲影视在线 | 91亚洲成人 | www免费黄色 | 亚洲影视在线 | 玖玖精品国产 | 国产剧情一区在线 | wwwxxx日本免费 | 小柔好湿好紧太爽了国产网址 | 91成人免费视频 | 韩国无码无遮挡在线观看 | 国产三级毛片 | 77777_亚洲午夜久久多人 | 九色婷婷 | 影音先锋中文字幕资源 | 丰满少妇弄高潮了www | 亚洲欧美精选 | 国产午夜福利亚洲第一 | 精品久久中文 | 老熟妇性老熟妇性色 | 又黄又爽又色qq群 | 免费又黄又裸乳的视频 | 亚洲自拍偷拍网 | 老牛嫩草二区三区观影体验 | 国产高清av在线播放 | 99在线视频观看 | 一本本月无码- | 国产精品久久久久久久免费观看 | 天堂中文在线资源 | 伊人黄色| 国产亚洲精品久久久久秋 | 国产女主播一区二区 | 精品卡一卡二卡3卡高清乱码 | 国产免费叼嘿网站免费 | 国内偷拍第一页 | 五月天激情国产综合婷婷婷 | 人妻人人澡人人添人人爽 | 999zyz玖玖资源站在线观看 | 欧美亚洲国产视频 | 好了av四色综合网站 | 日本在线成人 | 91a视频 | 久久精品国产亚洲77777 | 国产卡一卡二卡三无线 | 国产精品人妻系列21p | 国产人成高清在线视频99最全资源 | 少妇把腿扒开让我爽爽视频 | 久久久久区 | 中文字幕一级 | 欧美成人一区二区三区片免费 | 黑料视频在线观看 | av播放在线| 乱人伦中文视频在线 | av最新资源 | 激情综合五月网 | 国产艳妇av在线观看果冻传媒 | 天天综合一区 | 日韩欧美aaaa羞羞影院 | 亚洲日本国产精华液 | 精品少妇一区二区三区日产乱码 | 欧美丰满少妇xxxx性 | 香蕉99久久国产综合精品宅男自 | 亚洲aⅴ精品一区二区三区91 | 日韩av网址在线观看 | 岛国成人在线 | 性猛交xxxx | 久久天天东北熟女毛茸茸 | 国产一级精品视频 | 国产精品久久高潮呻吟粉嫩av | 中文字幕网址在线 | 国产综合久久久久鬼色 | 91中出| 免费的a级片 | 欧美激情综合色综合啪啪五月 | 亚洲中文字幕无码久久精品1 | 一级做a免费看 | 欧洲美女与动zooz | 刚添一下她就呻吟起来的视频 | 91精品国产乱码久久 | 日韩狠狠 | 亚洲不卡在线视频 | 亚洲成人毛片 | 国产高清免费看 | 国产69精品久久久久男男系列 | 精品国产一区三区 | 精品久久香蕉国产线看观看亚洲 | 男人边吃奶边做好爽免费视频 | 国产最猛性xxxx| 国产一区二区三区视频在线播放 | 一出一进一爽一粗一大视频 | 理论av| 国产一区日本 | 六月天婷婷 | 国产情侣小视频 | а√天堂资源中文在线官网九色 | 草草影院国产 | 黄色高清免费 | 午夜福利试看120秒体验区 | 青草青视频 | 三级毛片在线播放 | 人妻无码久久一区二区三区免费 | 亚洲天堂伦理 | 狠狠色狠狠色综合日日92 | 久久久久久国产精品免费免费男同 | 日本高清三区 | 夜夜躁很很躁日日躁2020 | 另类国产ts人妖高潮系列视频 | 最新一区二区三区 | 国产又黄又爽 | 成人免费视频网站 | 无码国产精品一区二区色情男同 | 日本色网址 | 黄色小视频链接 | 午夜福利理论片高清在线观看 | 丁香美女社区 | 国产乱老熟视频网88av | 侵犯の奶水授乳羞羞游戏 | 中文字幕专区高清在线观看 | 国产性生活毛片 | 国产精品区免费视频 | 秋霞三区| 91二区| 97在线视频免费 | 久热国产精品视频 | 国产伦理精品一区二区三区观看体验 | 国产一区二区三区内射高清 | 国产精品又黄又爽又色无遮挡 | 男女下面进入的视频免费午夜 | 亚洲一二区视频 | 999偷拍精品视频 | 国产一区二区三区 | 亚洲哺乳偷拍哺乳偷拍 | 国产色视频一区二区三区 | 97免费人妻无码视频 | 亚洲色图综合网 | 亚洲国产成人久久精品大牛影视 | 国产香港明星裸体xxxx视频 | 国产三级短视频 | 另类 欧美 日韩 国产 在线 | 久久久无码人妻精品无码 | 人妻另类 专区 欧美 制服 | 成人午夜视频免费观看 | 日韩欧美视频在线免费观看 | 国产精品日韩一区二区三区 | 欧美性精品 | 国产精品96久久久久久久 | 亚洲一区二三区 | 成年人网站在线免费观看 | 亚洲综合在线第一页 | 97干在线视频 | xxx一区| 91久久久www播放日本观看 | 欧美不卡影院 | 一区二区三区无码视频免费福利 | 三级全黄视频 | 99久热在线精品996热是什么 | 国产精品久久久久9999爆乳 | www.好了av.com | 亚洲成人精品久久久 | 红杏aⅴ成人免费视频 | 亚洲天堂久久久 | 国产性猛交xxxx免费看久久 | 欧美精品成人影院 | 午夜成人理论无码电影在线播放 | 肉体粗喘娇吟国产91 | jzzijzzij日本成熟丰满 | 琪琪亚洲精品午夜在线 | 国产盗摄一区二区 | 国产无人区卡一卡二卡三网站 | 亚洲精品乱码久久久久红杏 | 日韩精品一区二区在线播放 | 奇米成人网 | 青青草原精品99久久精品66 | 日本一区二区在线免费观看 | 白嫩丰满少妇xxxxx性视频 | 蜜桃狠狠色伊人亚洲综合网站 | youjizzcom自拍| 乱人伦xxxx国语对白 | 免费黄色小视频网站 | 羞羞视频2023 | 天堂在线www天堂 | 久久九九热 | 亚洲爱爱图 | 男男成人高潮片免费网站 | 国产精品久久国产精品99 gif | 日本三级韩国三级欧美三级 | 按摩师高h荡肉呻吟在线观看 | 日本三级少妇 | 天天躁日日躁狠狠躁视频2021 | 欧亚一级片| 岛国福利视频 | 97婷婷狠狠成为人免费视频 | 亚洲国产成人在线观看 | 亚洲视频在线观看网址 | wwwxx欧美| 69re视频| 50部乳奶水在线播放 | 性色av免费 | 无限看片在线版免费视频大全 | 新婚若妻侵犯中文字幕 | 国产精品久久久久久久福利竹菊 | 久久久久久久久无码精品亚洲日韩 | 蜜桃精品久久久久久久免费影院 | 男人猛躁进女人免费视频夜月 | 久久不卡影院 | 色呦呦免费观看 | 亚洲情se| 国产特级毛片aaaaaaa高清 | 女人喂男人奶水做爰视频 | 高清国产一区二区 | 日韩精品在线观看一区 | 激情久久一区 | 亚洲无卡视频 | 免费一级特黄特色的毛片 | 摸摸大奶子 | 伊人久久九 | 91在线中文 | 日韩精品射精管理在线观看 | 少妇综合网| 激情内射亚洲一区二区三区爱妻 | 色久天堂| 成人在线视频网 | 国产偷v国产偷v精品视频 | 国产91啦| 欧美区在线 | 天天综合网网欲色 | 在线播放成人av | 草草影院最新网址 | 在线观看国产欧美 | 亚洲欧美日韩久久精品第一区 | av淘宝国产在线观看 | 啪啪69xxⅹ偷拍 | 人妻系列无码专区av在线 | 天堂av中文在线 | av片手机在线观看 | 成人激情四射网 | 亚洲乱码日产精品bd在线 | 羞羞色视频 | 黄色一级免费大片 | 成人免费观看黄a大片夜月小说 | 亚洲一区二区三区影院 | 玩弄japan白嫩少妇hd小说 | 偷拍网亚洲| 亚洲一久久久久久久久 | 成人美女黄网站色大色费全看在线观看 | 天天摸天天干天天操 | 奇米国产 | 美女自卫慰免费视频www免费 | 特大黑人娇小亚洲女喉交 | 91橘梨纱中出体验在线观看 | 欧美国产日韩在线观看 | 欧美精品一区二区三区视频 | 日本高清在线一区二区三区 | 久久久999久久久 | 美女啪网站 | 国产三香港三韩国三级古装 | 亚洲精品图片一区15p | 久久免费黄色网址 | 欧美成人亚洲 | 色综合久久88色综合天天人守婷 | 日欧一片内射va在线影院 | 99精产国品一二三产品香蕉 | 国产精品igao视频网入口 | 成人福利网 | 香蕉久久人人爽人人爽人人片av | 久久久日韩精品一区二区三区 | 中国美女一级黄色片 | 女十八免费毛片视频 | 粉嫩av一区二区三区四区五区 | 国产成人精品综合在线观看 | 亚洲国产精品精华液999 | 草草视频在线播放 | 国产精品对白刺激久久久 | 欧美一区二区三区在线观看视频 | 黑人巨大精品欧美一区二区免费 | 国产欧美精品国产国产专区 | 国产精品成人3p一区二区三区 | 99热这里只有精品最新地址获取 | 国产成人精品在线 | 国产精品自拍视频 | 中文毛片无遮挡高潮免费 | 国产精品成人va在线播放 | 福利一区福利二区 | 国产91 在线播放 | 无码骚夜夜精品 | 亚洲天堂视频在线观看 | 亚洲精品一区二区久久 | 国产精品一区二区在线观看网站 | 无毒的av网站 | 日韩区在线观看 | 最新国产精品久久精品 | 性高潮久久久久久 | 国产福利酱国产一区二区 | 无遮挡啪啪摇乳动态图 | 欧美乱妇高清无乱码在线观看 | 国产女人高潮视频在线观看 | 精品国偷自产在线视频 | 久久久无码精品亚洲日韩按摩 | 日韩精品区 | 精品香蕉一区二区三区 | 91成人精品一区二区三区四区 | 人妻系列无码专区无码中出 | 欧美成人一区二免费视频 | 日本高清va在线播放 | 日本肉体bbbbbb肉交内谢 | 真人做爰免费毛片视频 | 国产福利萌白酱在线观看视频 | 亚洲激情婷婷 | 无码专区aaaaaa免费视频 | 无套在线观看 | 99精品视频在线观看 | 欧美成人影院亚洲综合图 | 日本亲子乱子伦xxxx50路 | 中文成人精品久久一区 | 亚洲视频小说 | 69xx网站 | aaaaa女高潮免费视频 | 精品久久久久久久久久久 | 夜夜躁狠狠躁日日 | 成人性生交大片免费看冫视频 | 男人的天堂日韩 | 免费毛儿一区二区十八岁 | 日.本人xxxxxxxxx19| 亚洲精选一区 | 日本特黄特黄刺激大片 | 动漫精品啪啪h一区二区网站 | 婷婷丁香综合网 | 久久久久三级 | 97久久精品人人爽人人爽蜜臀 | 欧美 日韩 国产 亚洲 色 | 国产精品久久久久久久久久软件 | vr成人啪啪影视 | 成人影片在线播放 | 成年美女黄网站色大免费全看 | 91看片在线播放 | 午夜视频色 | 亚洲三级欧美 | 欧美日韩精品一区二区三区蜜桃 | 国产黄色大片在线观看 | 成人影片一区免费观看 | 精品亚洲成人 | 污片在线看 | 国产麻豆精东果冻传媒 | 男人天堂网站 | 欧美亚洲色图视频 | 久久e热 | 欧美www视频 | 中文字幕av免费专区 | 国产成人午夜高潮毛片 | 91精品国产综合久久久蜜臀九色 | 青青草手机视频在线观看 | 国产免费播放 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产伦精品一区二区三区免费 | 久久国产精品波多野结衣av | 日本一区视频在线观看 | 精品视频导航 | 又大又黄又爽视频一区二区 | 亚洲天堂网站在线 | 狠狠五月深爱婷婷网 | 成人一区二区三区四区 | 淫妹妹影院| 中文字幕第88页 | 少妇高跟鞋做爰20p 少妇和黑人老外做爰av | 成人性生交免费大片 | 黄色大片黄色大片 | 性欧美videos另类极品小说 | 九九爱国产 | 91视频免费在观看 | 国产乱子伦视频在线观看 | 人妖另类巨茎双性人欧美视频 | 少妇与和尚h乱ⅹh | 国产欧美日韩视频在线观看 | 国产午夜精品理论片 | 日韩乱码在线观看 | 性一交一乱一色一视频 | 人人做| 嫩草国产 | 日韩av成人网 | 国产视频麻豆 | 亚洲va码欧洲m码 | 深爱激情av| 999在线视频 | 日韩中文字幕在线视频 | 超高清欧美videossex4 | 国产精品有码无码av在线播放 | 国产亚洲在线观看 | 国产成人综合久久久久久 | 国产娇小hdxxxx乱 | 国偷自产av一区二区三区 | 99色| 亚洲成a人v | 欧美 在线 | 日韩一区在线播放 | 毛片网站免费观看 | 美女一区二区视频 | 久久免费高清视频 | 成人无码av一区二区 | 青青草大香焦在线综合视频 | 性欧美色图 | 成人在线视频一区二区 | 亚洲狠狠色丁香婷婷综合 | 日韩一区二区在线观看视频 | 在线播放亚洲 | 天天爽天天爽 | 欧美成人三级在线播放 | 91国内精品| 欧美品牌jizzhd欧美 | 亚洲一区二区在线视频观看 | 一本本月无码- | 黄色a一级视频 | 欧美一级片观看 | 国产一区二区三区小说 | 熟妇五十路六十路息与子 | 日本我不卡 | 一区二区精品国产 | 自拍偷拍av| 中文字幕成人精品久久不卡 | 欧美亚洲专区 | 欧美日日摸夜夜添夜夜添 | 国产午夜精品免费一区二区三区视频 | 国产一级视频在线观看 | 欧美一级黄色录像 | 五姑娘在线观看高清版 | 亚洲男人皇宫 | 色视频在线观看 | 成人男同av在线观 | av人摸人人人澡人人超碰妓女 | 婷婷伊人综合亚洲综合网 | 精品国产乱码久久久久久移动网络 | 欧美午夜性春猛交xxxx明星 | 97超碰在线免费 | 黄色特级片 | 亚洲国产午夜精品理论片在线播放 | www麻豆视频| 婷婷久久综合网 | 老子午夜精品无码 | 国产对白老熟女正在播放 | 快好爽射给我视频 | 日本免费黄色网址 | 丰满少妇作爱视频免费观看 | 亚洲第一极品精品无码 | 国偷自产中文字幕亚洲手机在线 | 亚洲国产成人在线 | 日本丰满大乳奶做爰 | 在线不卡日本v二区到六区 免费又黄又爽又猛的毛片 特级西西人体444www高清大胆 | 一级片视频播放 | 丁香花小说手机在线观看免费 | 99久久久无码国产精品免费 | 乱熟女高潮一区二区在线 | 午夜免费福利 | 国产精品99久久久 | 国产调教夫妻奴av | 国产69久久精品成人看动漫 | 欧美精品日韩在线观看 | 四虎永久在线精品免费网址 | 亚洲精品乱码久久久久久不卡 | 初开小嫩苞一区二区三区四区 | 国产乡下妇女做爰 | 亚洲色无码播放 | 成在人线av | 天堂av在线中文 | 美日韩一区二区三区 | 美女131mm久久爽爽免费 | 天天干天天色天天射 | 丰满少妇在线观看资源站 | 婷婷综合五月 | 精品乱 | 国产精品av一区二区 | 日韩毛片免费无码无毒视频观看 | 右手影院亚洲欧美 | 亚洲国产精品激情在线观看 | 国产资源在线视频 | 久久久久逼 | 69日本xxxxxxxx96| 久久久久久亚洲精品不卡4k岛国 | 人善性zzzzzo另类 | 激情一区二区 | 18禁女裸乳扒开免费视频 | 永久免费看片在线 | 日韩亚洲国产欧美 | 亚洲免费资源 | 麻豆一区二区三区精品视频 | 成熟丰满熟妇高潮xxxxx视频 | 国产美女极度色诱视频www | 一级片视频在线观看 | 91国产丝袜在线播放动漫 | 午夜毛片视频 | 蜜桃av噜噜 | 国产在线国产 | 国产男女无遮挡猛进猛出 | 久久精品99国产精品亚洲 | 久久国产精品免费视频 | 又嫩又硬又黄又爽的视频 | 黑人好猛厉害爽受不了好大撑 | 免费黄色在线网站 | 中文字幕一区二区三区有限公司 | 制服丝袜手机在线 | 色噜噜狠狠色综合成人网 | 亚洲国产精品一区二区久久恐怖片 | 国产一精品久久99无吗一高潮 | 午夜成人1000部免费视频 | 国产午夜视频 | 国产美a三级三级看三级 | 超碰97成人 | av午夜久久蜜桃传媒软件 | 亚洲vs天堂| 91视频免费视频 | av在线手机观看 | 国产丰满农村老妇女乱 | 中国亚州女人69内射少妇 | 国产精品久久久久久久久免费相片 | 欧美特级黄色录像 | 国产嫩草在线观看 | av动漫精品 | 欧美wwwwwwxxxxxx| 国产欧美日韩另类在线专区 | 亚洲无线看 | 99国产偷伦视频在线观看 | 自拍偷拍亚洲一区 | 中文人妻无码一区二区三区在线 | 精品一卡2卡三卡4卡免费网站 | 公么大龟弄得我好舒服秀婷视频 | 中文字幕www | 五月天狠狠干 | 久久影院一区 | 亚洲视频一区二区在线 | 日产91精品卡2卡三卡四 | 久久精品国产亚洲a | 欧美激情乱人伦 | 亚洲人成人无码www 国产亚洲精品久久久久秋霞 | 国产a一区| 韩日视频在线观看 | 欧美一区二区三区色 | 能在线观看的av网站 | 欧美日韩在线观看一区 | 999精品视频在线观看 | 天天躁夜夜躁狠狠躁2021牛牛 | 忘忧草在线社区www中国中文 | 久久久久99精品成人片三人毛片 | 亚洲自拍偷拍图 | 99精品一区二区 | 日本精品一二三 | 国产精品二区视频 | 成年女人黄网站色视频免费97 | 1000部禁片18勿进又色又爽 | 国产高清精品软件丝瓜软件 | 黑人巨大人精品欧美三区 | 在线涩涩免费观看国产精品 | 久久美| 一本到视频 | 亚洲系列中文字幕 | 禁欲天堂| 理论片午午伦夜理片影院 | 在线欧美中文字幕农村电影 | 欧美极品少妇xxx | www在线观看免费视频 | 欧美日韩免费一区二区 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品