0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

基于過(guò)Python+matplotlib數(shù)據(jù)可視化路徑規(guī)劃算法實(shí)現(xiàn)

新機(jī)器視覺(jué) ? 來(lái)源:新機(jī)器視覺(jué) ? 2023-11-09 15:03 ? 次閱讀

這里我們通過(guò)Python編程+matplotlib數(shù)據(jù)可視化來(lái)實(shí)現(xiàn)路徑規(guī)劃算法,這里我們主要實(shí)現(xiàn)A Star算法、D Star算法、Dijkstra算法、RRT算法在2D空間下3D空間下的實(shí)現(xiàn)。

A Star算法的設(shè)計(jì)與實(shí)現(xiàn)

Astar潛在地搜索圖中一個(gè)很大的區(qū)域。和Dijkstra一樣,Astar能用于搜索最短路徑。和BFS一樣,Astar能用啟發(fā)式函數(shù)引導(dǎo)它自己。在簡(jiǎn)單的情況中,它和BFS一樣快。

程序入口部分我們指定起始點(diǎn)和目標(biāo)點(diǎn),通過(guò)調(diào)用定義的Astar類來(lái)進(jìn)行路徑錄規(guī)劃,最后通過(guò)plot進(jìn)行可視化繪制顯示,如圖所示。

393bee1e-7eab-11ee-939d-92fbcf53809c.png

類的初始化內(nèi)容如下,主要是傳入參數(shù)以plot點(diǎn)坐標(biāo)和算法類型。這里以dict的方式存儲(chǔ),plot通過(guò)關(guān)鍵字進(jìn)行索引找尋數(shù)據(jù),如圖所示。

39543352-7eab-11ee-939d-92fbcf53809c.png

通過(guò)A Star算法搜索路徑點(diǎn)并加入顯示,如圖所示。

396fabd2-7eab-11ee-939d-92fbcf53809c.png

最終路徑求解如下,如圖所示。

3988787e-7eab-11ee-939d-92fbcf53809c.png

在A Star算法的3D空間路徑搜索部分,我們添加全部所有的方位點(diǎn)Direction,這里對(duì)所有的求解方位,如圖所示。

399dbbb2-7eab-11ee-939d-92fbcf53809c.png

其余部分內(nèi)容和2D A Star求解一樣,這是增加了求解實(shí)現(xiàn)描述顯示,求解效果如下,如圖所示。

39b95f02-7eab-11ee-939d-92fbcf53809c.png

39d1175a-7eab-11ee-939d-92fbcf53809c.png

D Star算法的設(shè)計(jì)與實(shí)現(xiàn)

D Star算法對(duì)在移動(dòng)環(huán)境中的尋路也比較高效,向當(dāng)前節(jié)點(diǎn)遷移時(shí),可以只考察最近路線上的結(jié)點(diǎn)以及相鄰節(jié)點(diǎn)的變化狀況,包括機(jī)器人尋路等結(jié)果。

這里我們依舊是指定起始點(diǎn)和目標(biāo)點(diǎn),通過(guò)調(diào)用DStar類的方式實(shí)現(xiàn)算法的驗(yàn)證和分析,如圖所示。

39eec016-7eab-11ee-939d-92fbcf53809c.png

類的構(gòu)造函數(shù)部分,調(diào)用Plotting類實(shí)現(xiàn)圖表的圖表的初始化構(gòu)造,并聲明相關(guān)閾值變量存儲(chǔ)區(qū),如圖所示。

3a0285ec-7eab-11ee-939d-92fbcf53809c.png

這部分是算法的實(shí)現(xiàn)核心,主要是“貪心策略”迭代找尋更優(yōu)的求解。如果發(fā)現(xiàn)比當(dāng)前更短的路徑,則進(jìn)行迭代,這里可能向前迭代,也可能向后迭代。D Star算法核心實(shí)現(xiàn)如圖所示

3a166a80-7eab-11ee-939d-92fbcf53809c.png

Dstar算法對(duì)2D空間的求解如圖所示:

3a2e5172-7eab-11ee-939d-92fbcf53809c.png

D Star算法對(duì)3D空間的求解如如圖所示:

3a49b714-7eab-11ee-939d-92fbcf53809c.png

Dijkstra算法的設(shè)計(jì)與實(shí)現(xiàn)

Dijkstra算法也可以算是用貪心思路進(jìn)行的,首先把從起點(diǎn)到每個(gè)節(jié)點(diǎn)之間的一段距離都保存留下來(lái)并尋找一個(gè)到v的,之后松弛一下再重新尋找到v的,所謂的放松方式就是,先遍歷一下把剛才發(fā)現(xiàn)的相距比較近的一點(diǎn)作為中轉(zhuǎn)站會(huì)不會(huì)更近,如果還更近就再調(diào)節(jié)一段距離,這樣當(dāng)把所有的節(jié)點(diǎn)都找遍了以后,就保存并留下了從起點(diǎn)到其他每個(gè)節(jié)點(diǎn)之間的最短距離。

和前兩個(gè)一樣,在指定起始點(diǎn)和目標(biāo)點(diǎn)之后,調(diào)用定義的Dijkstra類實(shí)現(xiàn)路徑的搜索規(guī)劃,最終通過(guò)plot類進(jìn)行可視化顯示。圖可函數(shù)如圖所示。

3a66fb6c-7eab-11ee-939d-92fbcf53809c.png

Dijkstra算法較為較為簡(jiǎn)單,這是依據(jù)數(shù)據(jù)結(jié)構(gòu)的基本構(gòu)造進(jìn)行實(shí)現(xiàn),核心代碼如如圖所示。

3a7b315e-7eab-11ee-939d-92fbcf53809c.png

Dijkstra算法2D路徑規(guī)劃如如圖所示。

3a968026-7eab-11ee-939d-92fbcf53809c.png

Dijkstra算法3D路徑規(guī)劃效果如圖所示:

3aae988c-7eab-11ee-939d-92fbcf53809c.png

RRT算法的設(shè)計(jì)與實(shí)現(xiàn)

RRT(快速尋找隨機(jī)樹(shù))是一個(gè)很普通的辦法,無(wú)所謂任何機(jī)器人種類、無(wú)所謂自由度是多少、也無(wú)所謂約束有多繁復(fù),都可以使用。

并且它的基本原理非常簡(jiǎn)潔,這是其在機(jī)器人應(yīng)用領(lǐng)域受歡迎的主要因素之一。但是它的缺陷也非常突出,它得到的路通常質(zhì)量都不會(huì)非常好,例如可能具有棱角,不平滑,通常也遠(yuǎn)離最優(yōu)路線。

RRT算法是基于抽樣路徑規(guī)劃,它在3D空間下的路徑規(guī)劃效果較好。核心功能函數(shù)如圖所示。

3ac1f148-7eab-11ee-939d-92fbcf53809c.png

RRT算法在3D空間下規(guī)劃效果如圖所示。

3ae1a204-7eab-11ee-939d-92fbcf53809c.png

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 路徑規(guī)劃
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    15303
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84283

原文標(biāo)題:路徑規(guī)劃算法實(shí)現(xiàn)

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)可視化Python-matplotlib概述

    數(shù)據(jù)可視化(二):Python-matplotlib
    發(fā)表于 07-22 14:58

    python數(shù)據(jù)可視化的方法和代碼

    Python數(shù)據(jù)可視化匯總
    發(fā)表于 10-14 14:59

    Python數(shù)據(jù)可視化專家的七個(gè)秘密

    分享 Python數(shù)據(jù)可視化專家的七個(gè)秘密
    發(fā)表于 05-15 06:43

    python數(shù)據(jù)可視化之畫折線圖

    python數(shù)據(jù)可視化之畫折線圖,散點(diǎn)圖
    發(fā)表于 05-27 08:09

    Python數(shù)據(jù)可視化

    Python數(shù)據(jù)可視化:網(wǎng)易云音樂(lè)歌單
    發(fā)表于 07-19 08:30

    基于路徑跟蹤方法的路徑規(guī)劃算法

    為解決拖掛式移動(dòng)機(jī)器人系統(tǒng)路徑規(guī)劃算法精準(zhǔn)性低、穩(wěn)定性差和無(wú)法考慮系統(tǒng)間安全性等的問(wèn)題,提出一種基于路徑跟蹤方法的路徑規(guī)劃算法。該
    發(fā)表于 12-04 14:18 ?6次下載
    基于<b class='flag-5'>路徑</b>跟蹤方法的<b class='flag-5'>路徑</b><b class='flag-5'>規(guī)劃算法</b>

    Python拉勾網(wǎng)數(shù)據(jù)采集與可視化

    本文是先采集拉勾網(wǎng)上面的數(shù)據(jù),采集的是Python崗位的數(shù)據(jù),然后用Python進(jìn)行可視化。主要涉及的是爬蟲&
    的頭像 發(fā)表于 03-13 14:18 ?3200次閱讀
    <b class='flag-5'>Python</b>拉勾網(wǎng)<b class='flag-5'>數(shù)據(jù)</b>采集與<b class='flag-5'>可視化</b>

    相比Matplotlib 可視化神器Altair登場(chǎng)

    語(yǔ)言的開(kāi)發(fā)者使用最多的是 matplotlib,一個(gè)很強(qiáng)大的可視化庫(kù),不過(guò)它的局限也非常嚴(yán)重,制作交互式圖表也是一件難事。
    的頭像 發(fā)表于 05-23 14:49 ?2856次閱讀
    相比<b class='flag-5'>Matplotlib</b> <b class='flag-5'>可視化</b>神器Altair登場(chǎng)

    水下航行器自主巡航的路徑規(guī)劃算法實(shí)現(xiàn)

    路徑規(guī)劃算法是自主水下航行器(AUV)完成水下自主巡航的核心算法之一。分別綜述了基于環(huán)境建模和路徑搜索兩類AUⅣ路徑
    發(fā)表于 04-09 16:01 ?8次下載
    水下航行器自主巡航的<b class='flag-5'>路徑</b><b class='flag-5'>規(guī)劃算法</b><b class='flag-5'>實(shí)現(xiàn)</b>

    Python數(shù)據(jù)可視化編程實(shí)戰(zhàn)

    Python數(shù)據(jù)可視化編程實(shí)戰(zhàn)資料免費(fèi)下載。
    發(fā)表于 06-01 14:37 ?29次下載

    嵌入式GIS中最優(yōu)路徑規(guī)劃算法研究與實(shí)現(xiàn)

    嵌入式GIS中最優(yōu)路徑規(guī)劃算法研究與實(shí)現(xiàn)(嵌入式開(kāi)發(fā)項(xiàng)目經(jīng)理)-嵌入式GIS中最優(yōu)路徑規(guī)劃算法研究與實(shí)現(xiàn)
    發(fā)表于 07-30 12:49 ?4次下載
    嵌入式GIS中最優(yōu)<b class='flag-5'>路徑</b><b class='flag-5'>規(guī)劃算法</b>研究與<b class='flag-5'>實(shí)現(xiàn)</b>

    A星路徑規(guī)劃算法完整代碼資料匯總

    A星路徑規(guī)劃算法完整代碼資料匯總
    發(fā)表于 12-03 17:16 ?11次下載

    使用Python來(lái)收集、處理和可視化人口數(shù)據(jù)

    如何使用Python這一流行的編程語(yǔ)言來(lái)收集、處理和可視化印度和中國(guó)的人口數(shù)據(jù)呢?本文將向你介紹一些基本的步驟和技巧,幫助你掌握Python進(jìn)行可視
    的頭像 發(fā)表于 06-21 17:08 ?1275次閱讀
    使用<b class='flag-5'>Python</b>來(lái)收集、處理和<b class='flag-5'>可視化</b>人口<b class='flag-5'>數(shù)據(jù)</b>

    分享10個(gè)適用于多個(gè)學(xué)科的Python數(shù)據(jù)可視化庫(kù)

    matplotlibPython可視化程序庫(kù)的泰斗。經(jīng)過(guò)十幾年它任然是Python使用者最常用的畫圖庫(kù)。它的設(shè)計(jì)和在1980年代被設(shè)計(jì)的商業(yè)
    的頭像 發(fā)表于 08-14 10:40 ?738次閱讀
    分享10個(gè)適用于多個(gè)學(xué)科的<b class='flag-5'>Python</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>可視化</b>庫(kù)

    Python 可視化如何配色

    我們?cè)诶?b class='flag-5'>Python進(jìn)行數(shù)據(jù)可視化時(shí),有著大量的高質(zhì)量庫(kù)可以用,比如: Matplotlib 、 seaborn 、 Plotly 、 Bokeh 、 ggplot 等等。但圖表好不
    的頭像 發(fā)表于 10-30 15:43 ?456次閱讀
    <b class='flag-5'>Python</b> <b class='flag-5'>可視化</b>如何配色