一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

来源:https://www.cnblogs.com/qingdeng123/archive/2019/03/24/10590762.html
-Advertisement-
Play Games

一、環境需求 二、怎樣使用 三、本地化 3.1擴展卡爾曼濾波本地化 3.2無損卡爾曼濾波本地化 3.3粒子濾波本地化 3.4直方圖濾波本地化 四、映射 4.1高斯網格映射 4.2光線投射網格映射 4.3k均值物體聚類 4.4圓形擬合物體形狀識別 五、SLAM 5.1迭代最近點匹配 5.2EKF SL ...


一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

一、環境需求

二、怎樣使用

三、本地化

3.1擴展卡爾曼濾波本地化

3.2無損卡爾曼濾波本地化

3.3粒子濾波本地化

3.4直方圖濾波本地化

四、映射

4.1高斯網格映射

4.2光線投射網格映射

4.3k均值物體聚類

4.4圓形擬合物體形狀識別

五、SLAM

5.1迭代最近點匹配

5.2EKF SLAM

5.3FastSLAM 1.0

5.4FastSLAM 2.0

5.5基於圖的SLAM

六、路徑規劃

6.1動態視窗方式

6.2基於網格的搜索

迪傑斯特拉演算法

A*演算法

勢場演算法

6.3模型預測路徑生成

路徑優化示例

查找表生成示例

6.4狀態晶格規劃

均勻極性採樣(Uniform polar sampling)

偏差極性採樣(Biased polar sampling)

路線採樣(Lane sampling)

6.5隨機路徑圖(PRM)規劃

6.6Voronoi路徑圖規劃

6.7快速搜索隨機樹(RRT)

基本RRT

RRT*

基於Dubins路徑的RRT

基於Dubins路徑的RRT*

基於reeds-shepp路徑的RRT*

Informed RRT*

批量Informed RRT*

閉合迴路RRT*

LQR-RRT*

6.8三次樣條規劃

6.9B樣條規劃

6.10Eta^3樣條路徑規劃

6.11貝濟埃路徑規劃

6.12五次多項式規劃

6.13Dubins路徑規劃

6.14Reeds Shepp路徑規劃

6.15基於LQR的路徑規劃

6.16Frenet Frame中的最優路徑

七、路徑跟蹤

7.1姿勢控制跟蹤

7.2純追跡跟蹤

7.3史坦利控制

7.4後輪反饋控制

7.5線性二次regulator(LQR)轉向控制

7.6線性二次regulator(LQR)轉向和速度控制

7.7模型預測速度和轉向控制

八、項目支持

一、環境需求

Python 3.6.x

numpy

scipy

matplotlib

pandas

cvxpy 0.4.x

二、怎樣使用

安裝必要的庫;

克隆本代碼倉庫;

執行每個目錄下的python腳本;

如果你喜歡,則收藏本代碼庫:)

三、本地化

3.1 擴展卡爾曼濾波本地化

私信小編001 獲取源文件以及PDF!

該演算法利用擴展卡爾曼濾波器(Extended Kalman Filter, EKF)實現感測器混合本地化。

藍線為真實路徑,黑線為導航推測路徑(dead reckoning trajectory),綠點為位置觀測(如GPS),紅線為EKF估算的路徑。

紅色橢圓為EKF估算的協方差。

相關閱讀:

概率機器人學

http://www.probabilistic-robotics.org/

3.2 無損卡爾曼濾波本地化

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

該演算法利用無損卡爾曼濾波器(Unscented Kalman Filter, UKF)實現感測器混合本地化。

線和點的含義與EKF模擬的例子相同。

相關閱讀:

利用無差別訓練過的無損卡爾曼濾波進行機器人移動本地化

https://www.researchgate.net/publication/267963417_Discriminatively_Trained_Unscented_Kalman_Filter_for_Mobile_Robot_Localization

3.3 粒子濾波本地化

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

該演算法利用粒子濾波器(Particle Filter, PF)實現感測器混合本地化。

藍線為真實路徑,黑線為導航推測路徑(dead reckoning trajectory),綠點為位置觀測(如GPS),紅線為PF估算的路徑。

該演算法假設機器人能夠測量與地標(RFID)之間的距離。

PF本地化會用到該測量結果。

相關閱讀:

概率機器人學

http://www.probabilistic-robotics.org/

3.4 直方圖濾波本地化

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

該演算法是利用直方圖濾波器(Histogram filter)實現二維本地化的例子。

紅十字是實際位置,黑點是RFID的位置。

藍色格子是直方圖濾波器的概率位置。

在該模擬中,x,y是未知數,yaw已知。

濾波器整合了速度輸入和從RFID獲得距離觀測數據進行本地化。

不需要初始位置。

相關閱讀:

概率機器人學

http://www.probabilistic-robotics.org/

四、映射

4.1 高斯網格映射

本演算法是二維高斯網格映射(Gaussian grid mapping)的例子。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

4.2 光線投射網格映射

本演算法是二維光線投射網格映射(Ray casting grid map)的例子。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

4.3 k均值物體聚類

本演算法是使用k均值演算法進行二維物體聚類的例子。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

4.4 圓形擬合物體形狀識別

本演算法是使用圓形擬合進行物體形狀識別的例子。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

藍圈是實際的物體形狀。

紅叉是通過距離感測器觀測到的點。

紅圈是使用圓形擬合估計的物體形狀。

五、SLAM

同時本地化和映射(Simultaneous Localization and Mapping,SLAM)的例子。

5.1 迭代最近點匹配

本演算法是使用單值解構進行二維迭代最近點(Iterative Closest Point,ICP)匹配的例子。

它能計算從一些點到另一些點的旋轉矩陣和平移矩陣。相關閱讀:

機器人運動介紹:迭代最近點演算法

https://cs.gmu.edu/~kosecka/cs685/cs685-icp.pdf

5.2 EKF SLAM

這是基於擴展卡爾曼濾波的SLAM示例。

藍線是真實路徑,黑線是導航推測路徑,紅線是EKF SLAM估計的路徑。

綠叉是估計的地標。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

相關閱讀:

概率機器人學

http://www.probabilistic-robotics.org/

5.3 FastSLAM 1.0

這是用FastSLAM 1.0進行基於特征的SLAM的示例。

藍線是實際路徑,黑線是導航推測,紅線是FastSLAM的推測路徑。

紅點是FastSLAM中的粒子。

黑點是地標,藍叉是FastLSAM估算的地標位置。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

相關閱讀:

概率機器人學

http://www.probabilistic-robotics.org/

5.4 FastSLAM 2.0

這是用FastSLAM 2.0進行基於特征的SLAM的示例。

動畫的含義與FastSLAM 1.0的情況相同。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

相關閱讀:

概率機器人學

http://www.probabilistic-robotics.org/

Tim Bailey的SLAM模擬

http://www-personal.acfr.usyd.edu.au/tbailey/software/slam_simulations.htm

5.5 基於圖的SLAM

這是基於圖的SLAM的示例。

藍線是實際路徑。

黑線是導航推測路徑。

紅線是基於圖的SLAM估算的路徑。

黑星是地標,用於生成圖的邊。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

相關閱讀:

基於圖的SLAM入門

http://www2.informatik.uni-freiburg.de/~stachnis/pdf/grisetti10titsmag.pdf

六、路徑規劃

6.1 動態視窗方式

這是使用動態視窗方式(Dynamic Window Approach)進行二維導航的示例代碼。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

相關閱讀:

用動態視窗方式避免碰撞

https://www.ri.cmu.edu/pub_files/pub1/fox_dieter_1997_1/fox_dieter_1997_1.pdf

6.2 基於網格的搜索

迪傑斯特拉演算法

這是利用迪傑斯特拉(Dijkstra)演算法實現的基於二維網格的最短路徑規劃。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

動畫中青色點為搜索過的節點。

A*演算法

下麵是使用A星演算法進行基於二維網格的最短路徑規劃。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

動畫中青色點為搜索過的節點。

啟發演算法為二維歐幾裡得距離。

勢場演算法

下麵是使用勢場演算法進行基於二維網格的路徑規劃。

一文洞悉Python必備50種演算法!資深大牛至少得掌握25種!

 

動畫中藍色的熱區圖顯示了每個格子的勢能。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡潔的web框架Bottle 簡介 Bottle是一個非常簡潔,輕量web框架,與django形成鮮明的對比,它只由一個單文件組成,文件總共只有3700多行代碼,依賴只有python標準庫。但是麻雀雖小五臟俱全,基本的功能都有實現,很適合做一些小的web應用 開始使用 首先使用pip install ...
  • 超級開心啊!!!!!!!!!!!!! win10 打開cmd Installing with get-pip.py To install pip, securely download get-pip.py. [1]: curl https://bootstrap.pypa.io/get-pip.py ...
  • 一,File類:文件的創建和刪除 1.File(String pathname):pathname是指路徑名稱。用法 File file = new File("d:/1.txt "); 2.File(String parent, String child):parent是父路徑字元串,child是 ...
  • 許多公司網站被黑被進犯,首要牽扯到的便是網站的開發言語,包含了代碼言語,以及資料庫言語,現在大多數網站都是運用的PHP,JAVA,.net言語開發,資料庫運用的是mysql,oracle等資料庫,那麼網站被進犯了該怎樣辦?運營一個網站,總被進犯是時有發生的,特別一些公司網站,以及個人建站,都是沒有專 ...
  • 新聞 "Amazon.Lambda.RuntimeSupport發佈" "Forge 3.0架構" "Blazor 0.9.0試驗版發佈" "通過微軟游戲棧實現更多應用" "介紹ASP.NET Core中的gRPC" "Mac上的Visual Studio 2019 8.0版本預覽4" "FlexS ...
  • 說明 操作系統:Windows 10 Python 版本:3.7x 虛擬環境管理器:virtualenv 代碼編輯器:VS Code 環境搭建 打開 執行下述操作 Hello World 在 目錄下創建一個 __init__.py ,示例代碼如下所示: 在 目錄下創建一個 manage.py 文件, ...
  • 前言:由於對面向對象思想認識的不夠深刻,所以這一單元的作業寫的是非常不oo的,從代碼結構來看,結構也顯得有些混亂,,沒有一個清晰的設計。 作業分析 第一次作業 反思 1. 輸入 對於三次的作業其實大部分的難點就是在判斷輸入的合法性上,對於第一次作用來說,最初的想法還是用一整個正則表達式來判斷輸入,但 ...
  • ~~「前言」為防止在某巨巨的毒瘤idea 紫荊花之“店" 面前一臉懵,特滾來補此題。~~ ~~我還是太naive了。~~ 「題義」給出一棵單點度數很小的無根帶邊權、點權的樹,每次詢問在所有點權在\[l,r\]的點到c的距離之和。 「分析」考慮建立點分樹,分治結構每個點都儲存對應分治範圍(簡稱範圍)內 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...