Coursera自动驾驶课程第6讲:Vehicle Longitudinal Control
在上一講《Coursera自動駕駛課程第5講:Vehicle Dynamic Modeling》中我們了解了汽車運(yùn)動學(xué)和動力學(xué)模塊。
本講我們繼續(xù)學(xué)習(xí)新的模塊:汽車縱向控制。具體地,我們將學(xué)習(xí)PID控制算法,看看該算法是如何在自動駕駛汽車中應(yīng)用的。
B站視頻鏈接:https://www.bilibili.com/video/BV1WE411D74g?p=1
文章目錄
- 1. Proportional Integral Derivative Control
- 1.1 Overview
- 1.2 PID Controller (重點(diǎn))
- 1.3 Second Order System
- 2. Longitudinal Speed Control with PID
- 2.1 Vehicle Longitudinal cruise control
- 2.2 High & Low-level controller
- 3. Feedforward Speed Control
- 3.1 Feedback vs. Feedforward Control
- 3.2 Vehicle Speed Control
1. Proportional Integral Derivative Control
1.1 Overview
在上一節(jié),我們學(xué)習(xí)了如何基于自行車模型開發(fā)汽車運(yùn)動學(xué)和動力學(xué)模型。
在下圖中,汽車運(yùn)動學(xué)和動力學(xué)模型通過捕獲駕駛員輸入的命令(例如轉(zhuǎn)向和剎車),以及外界擾動進(jìn)行響應(yīng)。 然后,控制器通過傳感器感知汽車當(dāng)前的狀態(tài)向量并隨后生成執(zhí)行器信號來調(diào)節(jié)車輛狀態(tài)。
對于縱向控制,控制器通過調(diào)節(jié)油門和制動命令以匹配汽車行駛所需的速度。下面 讓我們看一個(gè)典型的反饋控制回路。
Plant或Process模型將執(zhí)行器信號作為輸入,輸出為系統(tǒng)狀態(tài)變量。 然后傳感器對系統(tǒng)狀態(tài)變量進(jìn)行測量,然后Estimators進(jìn)行估計(jì)。 系統(tǒng)將估計(jì)值與所需參考輸入進(jìn)行比較,并將誤差傳遞給控制器,以上就是一個(gè)完整的反饋控制回路。
下面我們介紹狀態(tài)轉(zhuǎn)移函數(shù)。
傳遞函數(shù)G是在拉普拉斯域中定義的系統(tǒng)輸入U(xiǎn)和輸出Y之間的關(guān)系,它是復(fù)數(shù)域變量S的函數(shù)。
Y(s)=G(s)U(s)s=σ+jωY(s)= G(s)U(s)\\ s = \sigma + j\omega Y(s)=G(s)U(s)s=σ+jω
1.2 PID Controller (重點(diǎn))
PID控制包含三項(xiàng):
- 與誤差eee成比例的比例項(xiàng)KPK_{P}KP?,
- 與誤差積分成比例的積分項(xiàng)KIK_IKI?,
- 與誤差導(dǎo)數(shù)成比例的導(dǎo)數(shù)項(xiàng)KDK_DKD?。
下面直接給出其時(shí)間域公式:
u(t)=KPe(t)+KI∫01e(t)dt+KDe˙(t)u(t) = K_{P}e(t)+K_I\int_0^1 e(t)dt + K_D\dot{e}(t)u(t)=KP?e(t)+KI?∫01?e(t)dt+KD?e˙(t)
對其進(jìn)行拉普拉斯轉(zhuǎn)換,轉(zhuǎn)換后的形式為:
U(s)=Gc(s)E(s)=(KP+KIs+KDs)E(s)=(KDs2+KPs+KIs)E(s)U(s) = G_c(s)E(s) = (K_P + \frac{K_I}{s}+K_Ds)E(s) = (\frac{K_Ds^2 + K_Ps + K_I}{s})E(s)U(s)=Gc?(s)E(s)=(KP?+sKI??+KD?s)E(s)=(sKD?s2+KP?s+KI??)E(s)
下面我們來討論狀態(tài)轉(zhuǎn)移函數(shù)Gc(s)G_c(s)Gc?(s)的一些特性:
- PID傳遞函數(shù)在原點(diǎn)處包含一個(gè)單極,
- 還包含含零二階分子,可以通過選擇適當(dāng)?shù)脑鲆嬷祵⑵浞胖迷趶?fù)平面上的任何位置。
有多種算法可以調(diào)節(jié)PID增益,其中,齊格勒·尼科爾斯(Ziegler Nichols)是最受歡迎的算法之一。
對于系統(tǒng)響應(yīng),我們定義幾個(gè)評價(jià)指標(biāo):
- 將Rise Time (上升時(shí)間)定義為達(dá)到所需參考值90%所需要的時(shí)間。
- Overshoot為系統(tǒng)輸出超出此參考的最大百分比。
- Settling Time(穩(wěn)定時(shí)間)是指系統(tǒng)輸出穩(wěn)定在參考值范圍的5%之內(nèi)所需時(shí)間,
- Steady State Error(穩(wěn)態(tài)誤差)是穩(wěn)態(tài)下輸出與參考值之間的誤差。
比例項(xiàng)KpK_pKp?的增加會導(dǎo)致Overshoot的增加,相應(yīng)地上升時(shí)間會減少。 類似地,由于微分項(xiàng)KdK_dKd?對誤差的變化率做出反應(yīng),因此增大KdK_dKd?會導(dǎo)致Overshoot減小和穩(wěn)定時(shí)間減少。最后,KIK_IKI?的增加可以消除穩(wěn)態(tài)誤差。 下面的表格總結(jié)了以上特性。
1.3 Second Order System
現(xiàn)在,讓我們看一下圖中所示的著名的二階彈簧質(zhì)量阻尼模型。
系統(tǒng)受到輸入力FFF的作用,模型的輸出為物體位移xxx。 質(zhì)量塊MMM通過具有常數(shù)KKK的彈簧和具有阻尼系數(shù)bbb的阻尼器連接墻面。 現(xiàn)在將方程轉(zhuǎn)換為Laplace域,最終我們得到圖中的狀態(tài)轉(zhuǎn)移函數(shù)G(s)G(s)G(s)。
為了評估系統(tǒng)特性,我們使用單位階躍輸入來激勵(lì)系統(tǒng)。 此時(shí)系統(tǒng)響應(yīng)為開環(huán)響應(yīng),因?yàn)榇藭r(shí)沒有控制器應(yīng)用于系統(tǒng)。 我們得到的系統(tǒng)響應(yīng)如下圖:
如果將控制器添加到模型中,并且模型的輸出與所需的參考信號進(jìn)行比較,則系統(tǒng)的響應(yīng)稱為閉環(huán)響應(yīng)。
下圖給出了幾種不同PID控制器的階躍響應(yīng)。
水平虛線表示所需輸出,控制器的目標(biāo)是使實(shí)際輸出接近該參考值。在第一個(gè)示例中,階躍響應(yīng)為純比例控制。在PPP控制器響應(yīng)中,我們看到上升時(shí)間快,明顯的過沖和延長的振蕩。增加微分控制可改善過沖和建立時(shí)間方面的階躍響應(yīng),但會降低上升時(shí)間。相反,添加積分項(xiàng)可保持較短的上升時(shí)間,并且能夠減少振蕩和過沖,從而也縮短了建立時(shí)間
下面我們給出PIDPIDPID控制器:
GPID(s)=(KP+KDs+KIs)G_{PID}(s) = (K_P + K_Ds + \frac{K_I}{s})GPID?(s)=(KP?+KD?s+sKI??)
系統(tǒng)響應(yīng)如圖右所示,系統(tǒng)通過PID控制可以以更快的速度接近參考點(diǎn)而沒有任何過沖。
2. Longitudinal Speed Control with PID
2.1 Vehicle Longitudinal cruise control
在上一節(jié),我們介紹了PID控制原理。 在本節(jié),我們將PID控制應(yīng)用于車輛縱向控制。
現(xiàn)在讓我們仔細(xì)研究一下車輛控制架構(gòu)。 我們可以將整個(gè)架構(gòu)分為四部分,如下左圖所示:
- 第一部分是環(huán)境感知。車輛通過傳感器對周圍環(huán)境進(jìn)行感知,并為系統(tǒng)生成輸入?yún)⒖肌?/li>
- 第二部分,路徑生成和速度生成。路徑和速度是我們控制器所需的參考輸入。
- 第三部分,車輛橫向和縱向控制,目的是最大程度地減小實(shí)際和參考路徑與速度之間的誤差。-
- 最后,控制器發(fā)出信號,執(zhí)行器執(zhí)行相應(yīng)命令。正如我們在上一節(jié)中所看到的,包括用于橫向控制的轉(zhuǎn)向以及用于縱向控制的油門和制動命令。
下面讓我們看一個(gè)車輛縱向控制的例子。
目前汽車控制中最常用的控制應(yīng)用就是巡航控制。通常巡航控制系統(tǒng)主要功能就是:通過節(jié)氣門或制動命令維持車輛速度。
通??刂破骺梢苑譃閮蓚€(gè)級別:高級控制器和低級控制器。盡管低級控制器對于控制任務(wù)有時(shí)候不是必需的。高級控制器根據(jù)車輛參考速度和實(shí)際速度之差,生成所需的加速度以減小速度差。低級控制器獲取車輛加速度,并產(chǎn)生節(jié)氣門命令或制動命令來最終控制車速。
2.2 High & Low-level controller
High-level controller
高級控制器根據(jù)速度差確定需要的加速度大小。 高級別控制器的輸入是速度差,輸出是車輛的期望加速度。
根據(jù)PID原理我們所需的加速度可以寫成:
x¨des=KP(x˙ref?x˙)+KI∫01(x˙ref?x˙)dt+KDd(x˙ref?x˙)dt\ddot{x}_{des} = K_{P}(\dot{x}_{ref}-\dot{x})+K_I\int_0^1 (\dot{x}_{ref}-\dot{x})dt + K_D\frac{d\left(\dot{x}_{r e f}-\dot{x}\right)}{d t}x¨des?=KP?(x˙ref??x˙)+KI?∫01?(x˙ref??x˙)dt+KD?dtd(x˙ref??x˙)?
Low-level controller
在設(shè)計(jì)低級控制器時(shí),我們會進(jìn)行一些假設(shè)以簡化問題:
- 僅考慮節(jié)氣門命令(無制動命令, 在巡航控制中,僅需要油門即可控制車輛速度)。
- 變矩器鎖定(齒輪3+),假設(shè)我們以三檔或更高檔位操作,從而變矩器被鎖定,這意味著來自發(fā)動機(jī)的扭矩直接通過變速器而不會造成損失。
- 輪胎滑移率較小,縱向控制柔和。
低級控制器通過增加或減小發(fā)動機(jī)產(chǎn)生的扭矩來產(chǎn)生期望的加速度。將期望的加速度轉(zhuǎn)換為扭矩需求,然后將扭矩需求轉(zhuǎn)換為節(jié)氣門角度指令。
在下面的仿真結(jié)果圖中,我們看到根據(jù)PID控制實(shí)際車速如何隨時(shí)間變化,實(shí)際車速最終達(dá)到所需的參考速度。
3. Feedforward Speed Control
3.1 Feedback vs. Feedforward Control
在上一小節(jié),我們了解了如何構(gòu)建用于縱向速度跟蹤的反饋控制器,我們使用PID來生成加速命令,并使用一個(gè)低級控制器來定義油門和制動器命令。
現(xiàn)在,讓我們看一下Feedvack圖和Feedforward圖。
Feedback圖是一個(gè)典型的閉環(huán)結(jié)構(gòu),將輸出與參考信號做比較。 并將兩者之差輸入到反饋控制器中。Feedforward圖是一個(gè)開環(huán)結(jié)構(gòu),其中參考信號直接饋入前饋控制器。
在許多應(yīng)用中,通常前饋回路和反饋回路會結(jié)合使用以提高控制器性能。 右圖為一個(gè)典型的反饋、前饋控制工作原理圖。
反饋和前饋控制器均用于控制系統(tǒng)的主要原因是前饋控制器在產(chǎn)生參考輸出以實(shí)現(xiàn)特定跟蹤響應(yīng)時(shí)會提供預(yù)測響應(yīng),尤其是在所需輸入為非零時(shí)。反饋控制器會修正響應(yīng),從而消除由于干擾而引起的控制誤差。由于這種互補(bǔ)關(guān)系,反饋和前饋控制的組合被廣泛使用。
3.2 Vehicle Speed Control
現(xiàn)在,讓我們看一下反饋和前饋控制器如何用于汽車縱向速度控制。
在左圖中,參考速度是前饋控制器的輸入,速度差是反饋控制器的輸入。 兩個(gè)控制器均產(chǎn)生兩個(gè)車輛控制信號,即節(jié)氣門和制動命令。
讓我們看一下從前饋查詢表中開發(fā)執(zhí)行器命令所需的步驟。
- 在示例中,根據(jù)車輛速度和車輪角速度之間的運(yùn)動關(guān)系,我們可以計(jì)算所需的車輪角速度。同時(shí)我們也可以通過建模模塊中定義的運(yùn)動關(guān)系來計(jì)算與所需車輪角速度相對應(yīng)的發(fā)動機(jī)RPM。
- 然后,假設(shè)汽車處于穩(wěn)態(tài)運(yùn)行狀態(tài),發(fā)動機(jī)扭矩必須等于作用在車輛上的總負(fù)載扭矩。負(fù)載扭矩的來源是空氣阻力,滾動阻力和車輛重力阻力。我們可以使用車輛的當(dāng)前狀態(tài)來計(jì)算載扭矩。
- 現(xiàn)在,我們有了所需的發(fā)動機(jī)扭矩,并且可以將其與RPM中的當(dāng)前發(fā)動機(jī)運(yùn)行速度結(jié)合起來,求出所需扭矩對應(yīng)的節(jié)氣門位置。
讓我們比較一下組合的前饋反饋法與PID控制法之間的效果。
我們使用了與上一小節(jié)相同的模擬參數(shù)。 隨著參考速度的變化,可以看見由于PID控制器是對其誤差進(jìn)行修正,因此其響應(yīng)會滯后于前饋方法。
總結(jié),本講我們學(xué)習(xí)了 :
- 經(jīng)典控制概念并定義了PID控制器。
- 建立了一個(gè)PID控制器來對汽車縱向速度控制。
- 結(jié)合使用前饋控制來改善速度控制性能。
總結(jié)
以上是生活随笔為你收集整理的Coursera自动驾驶课程第6讲:Vehicle Longitudinal Control的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apollo进阶课程 ⑮丨Apollo自
- 下一篇: 交行信用卡额度一般是多少 额度查询的五种