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

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

 

1、環境需求python

2、怎樣使用算法

3、本地化app

3.1擴展卡爾曼濾波本地化優化

3.2無損卡爾曼濾波本地化動畫

3.3粒子濾波本地化.net

3.4直方圖濾波本地化3d

4、映射orm

4.1高斯網格映射htm

4.2光線投射網格映射blog

4.3k均值物體聚類

4.4圓形擬合物體形狀識別

5、SLAM

5.1迭代最近點匹配

5.2EKF SLAM

5.3FastSLAM 1.0

5.4FastSLAM 2.0

5.5基於圖的SLAM

6、路徑規劃

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、路徑跟蹤

7.1姿式控制跟蹤

7.2純追跡跟蹤

7.3史坦利控制

7.4後輪反饋控制

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

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

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

8、項目支持

1、環境需求

Python 3.6.x

numpy

scipy

matplotlib

pandas

cvxpy 0.4.x

2、怎樣使用

安裝必要的庫;

克隆本代碼倉庫;

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

若是你喜歡,則收藏本代碼庫:)

3、本地化

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、映射

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種!

 

藍圈是實際的物體形狀。

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

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

5、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、路徑規劃

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種!

 

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

相關文章
相關標籤/搜索