運行案例
啟動底盤和雷達
SSH連接OriginBot成功后,在終端中輸入如下指令,啟動機器人底盤和激光雷達:
$ros2 launch originbot_bringup originbot.launch.py
啟動軌跡跟蹤
選擇Pure Pursuit:
$ ros2 run originbot_autonomous purepursuit_node
選擇 MPC :
$ ros2 launchoriginbot_autonomous originbot_mpc.launch.py
同時,打開rviz后可以在界面中看到,有如下軌跡顯示
原理淺析
PurePuesuit 和 MPC 算法是自動駕駛中常用的控制算法,目的是為了讓規劃處的軌跡點更加平滑以及滿足車輛本身的運動學軌跡。
在Autoware和Apollo 中,這兩種算法都是有其實現方式的。可參見:
Apollo:
Autoware:
概述
在具體聊到兩種算法實現前,需要先了解到,現在主流的兩種軌跡跟蹤算法分為基于幾何的跟蹤以及基于模型的跟蹤方法。
在此次實現上基本可以視為已知坐標信息,包括(x,y,yaw)和曲率Kappa,計算出控制量轉向角,也即橫向運動量,使得小車可以在軌跡內平穩運行。
以MPC為例,圖示如下:
PurePursuit
純跟蹤算法提出“預瞄距離”的概念,根據預瞄距離尋找目標軌跡中符合條件的目標路徑點,判斷邏輯就是尋找目標軌跡上哪個點和當前車輛位置的相對距離等于預瞄距離,則該點就是當前時刻的目標點。
控制目標則是計算多大的前輪偏角,可以使當前小車位置運動到目標位置。在這個基礎上,不妨簡單看一下其中的核心點,預瞄距離是什么。
簡單來說,預瞄距離好比人開車時后找一個跟蹤參考點,比如在行駛在直道時,我們會選擇較高的速度,并且習慣考慮前方較遠的點作為跟蹤參考點;在行駛在彎道時,就會選擇減速,習慣選擇較近的點作為跟蹤參考點。
所以這個值是我們可以自己設置的一個值。這個值的設置也會極大影響小車的運動。比如在此次示例的代碼中在findCloestindex函數內,我們根據預瞄距離找到了一個最近的點
獲取到這個點之后,在根據小車本身的模型限制計算出轉角:
MPC
MPC的求解相對來說更為復雜。直接亮出代碼框架:
1、獲取車體參數。
2、選取狀態量和控制量。
3、對AB矩陣做離散化,Apollo中增加了擾動矩陣。
4、設定QR矩陣。
5、設定預測步數,并對ABQR做增廣。
6、設定相關參數的約束并獲取各傳感器的值。
7、求解控制量u,最后拿到u[0].
-
機器人
+關注
關注
211文章
28445瀏覽量
207205 -
雷達
+關注
關注
50文章
2937瀏覽量
117561 -
軌跡
+關注
關注
0文章
46瀏覽量
9297
發布評論請先 登錄
相關推薦
評論