前言 #
(本文是根據 ROBOTIS 下列 youtube 教學影片,將其說明英翻中,整理而成)
PID 控制參數
PID 控制是使用你的 Dynamixel 智能馬達時的寶貴工具,可讓你根據你所要求的規格,來微調智能馬達的性能和準確性。本影片介紹了 PID 控制中使用的參數,以及一些實際範例,讓你瞭解 PID 控制是什麼以及如何使用它。
軟體: Dynamixel Wizard 2.0
智能馬達: XM540-W270-R
論壇討論: ROBOTIS 論壇
影片時段:(英文)
00:00 Intro
00:53 PID Parameters overview
01:33 Default PID Control Behavior
02:33 Proportional Gain
04:29 Integral Gain
06:01 Derivative Gain
07:06 Outro
00:00 Intro 介紹 #
PID Control 是 Proportional-Integral-Derivative Control 的簡寫(比例-積分-微分 控制)。
PID 控制是自動化程式控制中最常見的控制迴路實作。在我們的機器人使用案例中,PID 控制可以幫助我們調整 Dynamixel 智能馬達以提高其性能、平滑度、或任何其他對我們的使用很重要的移動特性。
本教程將解釋 PID 控制的三個參數中,每個控制參數對應的運動分量,以便你可以瞭解,需要調整什麼,以實作出你的馬達應用中所需的運動類型。
在開始之前,我想簡要介紹一下 PID 控制系統中使用的各個控制參數。
如果你想瞭解有關 PID 控制的特定參數的更多資訊,你可以跳過本影片,專注在你需要的資訊上。
PID Control 投影片
PID 控制是一個複雜的主題,具有廣泛的背景,及大量的理論,實作研究和範例。
提供 PID 控制理論的詳盡解釋和教學,並不在本影片的範圍內
下面的一些投影片,將包含可供進階用戶使用的補充資訊,但本影片的主要目的,仍是簡短的入門影片,作為介紹 PID 控制概念,並提供一些調整 PID 控制參數的實際效果範例。
Position/Velocity PID Control 投影片
Dynamixel 智能馬達,為基於 Velocity 速度控制和 Position 位置控制模式,實作了不同的控制迴路。
本影片討論了使用 Position 位置控制模式下的實作。
更多關於這些不同實作的區別,以及方塊圖的詳細資訊,可以在 ROBOTIS 線上手冊中找到(本文前言中有連接網址)。
00:53 PID Parameters overview PID 參數概述 #
首先的控制參數是 P 或 proportional gain 比例增益。這參數可以理解為,指定馬達去尋求 goal position 目標位置的積極度。
Proportional Parameter 投影片
PID 控制的 P 值,具體上是指根據所檢測到的誤差大小,對電流控制輸出而做的調整。
較高的 P 值會在更接近所需設定點處,進行較大的調整。
P 值設得太低,將導致馬達處於穩定狀態,卻與目標位置有較大偏差。
P 值設得太高,會由於反復過度校正,而導致不受控制的震盪。
Proportional Graph 投影片
• P 值太低
。大的靜止誤差
• P 值設定適當
。在接近目標位置前靜止,然後短週期的震盪
• P 值太大
。在目標位置附近不受控制的震盪
第二個控制參數是 I 或 intergal gain 積分增益,此增益值設定馬達的調整行為,以便來糾正隨著時間而累積的誤差。較大的 i 增益值,會對應於在更短的時間內,做出更積極的調整。
Integral Parameter 投影片
PID 控制的 I 值,是指根據由控制器檢測到的時間累積誤差量,對電流控制輸出而做的調整。
較大的 I 值,將導致於對較短週期所檢測到的誤差,進行較大的調整。
I 值設過低,將導致對於誤差狀態,無響應/或太慢響應。
I 值設過高,將導致由於對短期誤差,反復過度校正,而產生不受控制的震盪。
Integral Graph 投影片
• I 值太低
。大的靜止誤差
• I 值太大
。在目標位置附近不受控制的震盪
• I 值設定適當
。可控至的震盪會收斂於目標位置
第三個控制參數是 D 或 derivative gain 微分增益,此值可以抑制或平滑 P 跟 I 兩個控制參數的應用。所以當與 P 和 I 參數一起使用時,D 參數可進行更精細的調整。
有了以上簡短的介紹,我們可以開始課程。
Derivative Parameter 投影片
PID 控制的 D 值,根據檢測到誤差的變化率,作為 P 和 I 參數的預測修正器。
較高的 D 值將減少 P 和 I 參數的影響。系統如果沒有應用到 P 和 I 參數,D 值就對系統的行為沒有影響。
D 值設太低,不會對系統產生任何明顯的影響。
D 值設太高,會導致運動過程中,出現小的不受控制的震盪。
Derivative Graph 投影片
通常,增加 D 值會導致目標位置 overshoot 超過頭的減少。
將 D 值設太高,將導致最右邊圖表列,所看到的震盪。
01:33 Default PID Control Behavior 預設 PID 控制器行為 #
這裡讓我們以 Dynamixel-X 系列智能馬達,先快速演示一下 PID 的行為。PID 的預設值是 P gain:800,I gain:0,D gain:0。之後的影片,我會解釋,調整每一個參數的值,會對智能馬達的運動產生什麼影響。但現在,讓我們先看看 PID 預設值設定下,智能馬達的運動模式。
如你所見,預設設置會產生非常僵硬或機械化的運動曲線,在運動開始時突然開始,一旦到達目標位置,也會出現類似的突然停止。這種預設行為,對於許多應用程式來說是可以接受的,但調整 PID gain 配置可以讓你獲得更平滑的整體運動,或調整成其他配置,以提高安全性能或可靠性。
現在讓我們使用 Dynamixel Wizard 2.0 並調整這些設置,看看它們如何影響 Dynamixel 智能馬達的性能。你也可以隨時使用自己的 Dynamixel,在家中進行這些測試。
Dynamixel PID Defaults 投影片
Dynamixel 智能馬達,為基於位置和速度的控制模式,實作不同的控制迴路解決方案。每種模式的預設設置如下:
Position Control Mode
• X series • P series
。P Gain: 800 。P Gain: 31
。I Gain: 0 。I Gain: 0
。D Gain: 0 。D Gain: 0
Velocity Control Mode
• X series • P series
。P Gain: 100 。P Gain: 6,153
。I Gain: 1,920 。I Gain: 2,209
Dynamixel Wizard 投影片
Dynamixel Wizard 2.0 軟體是 ROBOTIS 推薦用來設置 Dynamixel 智能馬達的方法。
在此影片中,我會使用它來調整展示用的 PID 設定,以及產生接下來範例用的圖形。
更多 Dynamixel 2.0 資訊以及下載連接,可以在本文的前言內容中找到。
02:33 Proportional Gain 比例增益 #
P 增益,是馬達對目標位置,與其實際位置之間差異的響應的量測。換句話說,就是尋找目標位置的積極度。較高的數字意表示,馬達將更積極地嘗試去修正其當前位置,與其目標位置之間的任何差異。
現在讓我們將 P 增益設置為 80 並觀察馬達運動行為的變化。
現在我們可以看到馬達仍然在積極地開始運動,但是隨著它接近目標位置,當目標位置和現在位置之間的差異減小時,它的輸出力也開始減小。在這個低 P 增益值的情況下,如果你查看最終停止位置,你會發現馬達實際上,在離我們期望的目標位置稍近的地方停止。當現在位置和目標位置之間的差異變得太小時,馬達的運動就會減少到零。
如果我們改為將 P 增益調整為 8000 時,我們將看到之前的機械化運動曲線被放大了 100 倍。
初始加速度仍然非常突然,現在馬達繼續以最大速度移動,直到它準確到達目標位置,然後立即再次停止。這個較高的 P 值,最終的靜止位置也正好在目標位置上,因為馬達直到它到達指定的位置,才會開始減低它的運動。
記住此點,我們可以看到,改變 P 值,可以讓我們根據馬達與目標位置的距離遠近,來修改馬達調整位置的速度快慢。
較高的值,對應於越接近目標位置時的更激進的運動。而如將 P 值設得太低,可能會導致馬達在我們想要的目標位置之前停止,這也是很有用的資訊。
如果你使用自己的 Dynamixel 智能馬達來操作,請務必在下一段影片之前,將馬達的 PID 值重置為預設值。
Proportional Control 投影片
P gain 控制,是根據現在位置和所需位置之間的距離,來調整控制輸出的大小。
較高的 P 值將會更快地接近設定點。
如單獨使用 P 控制,通常會產生右圖中所示的結果。控制器已穩定其輸出,卻遠離了設定點,導致穩態誤差。
設置較低的 P 值可以產生更平滑的運動曲線,因為減低了運動開始和停止時的強度。
這在突然的強力移動,可能導致系統損壞或操作人員受傷的情況下很有用。
增加 P 值會產生突然有力的移動曲線,同時也提高尋找設定點的準確性。
Dynamixel PID Defaults 投影片
Position Control Mode
• X series • P series
。P Gain: 800 。P Gain: 31
。I Gain: 0 。I Gain: 0
。D Gain: 0 。D Gain: 0
Velocity Control Mode
• X series • P series
。P Gain: 100 。P Gain: 6,153
。I Gain: 1,920 。I Gain: 2,209
04:29 Integral Gain 積分增益 #
I 增益是對馬達隨時間累積誤差的響應的量測。
較高的 I 值,將導致馬達更積極地,更快地去解決,現在位置和目標位置之間的微小差異。如果可與較低的 P 增益值結合一起使用,可能會很幫助,因為它可允許馬達在接近或超出目標位置時,嘗試進行自我校正。
為了演示,將 P 增益設為 80 ,可觀察到馬達在很接近到目標位置前就停止。
現在,如果我們將 I 增益設為 1000,發現馬達不是在接近目標位置前停止運動,而是馬達在嘗試自我修正目標位置與其實際停止點之間的微小差異時,而來回擺動。這種震盪是 I 增益設置過高的系統中最常見的症狀。
讓我們將 P 增益調整回預設值 800。現在震盪運動消失了,如果我們注意馬達的實際位置,我們可以看到雖然它沒有立即到達我們指定的目標位置,但馬達繼續進行微小的調整,直到它準確到達指定的位置。
這可使我們瞭解,I 增益可指定馬達響應嘗試糾正錯誤的積極程度(如衝過頭或接近時停止)。重要的是,要知道錯誤的 I 增益值,可能會由於重複的過度糾正而導致圍繞目標位置的震盪動作。
如果你使用自己的 Dynamixel 智能馬達,請務必在下一段影片之前,將你的 PID 值重置為預設值。
Proportional + Integral Control 投影片
I gain 控制,是根據離開設定點的時間成比例地修改控制輸出。
將 I gain 添加到 P 控制器上,可讓系統調整和消除穩態誤差。
較高的 I 值,將導致在控制器響應之前的較短的誤差週期。
I 增益設置太高,將導致圖表上藍線所示的震盪。
Dynamixel PID Defaults 投影片
Position Control Mode
• X series • P series
。P Gain: 800 。P Gain: 31
。I Gain: 0 。I Gain: 0
。D Gain: 0 。D Gain: 0
Velocity Control Mode
• X series • P series
。P Gain: 100 。P Gain: 6,153
。I Gain: 1,920 。I Gain: 2,209
06:01 Derivative Gain 微分增益 #
D gain 可以最好地描述為,可作用於 P 和 I 增益的平滑或深度效果,來創建更平滑的運動曲線,並減少任何整體校正或其他誤差的可能性和影響。
為了看到調整 D gain 的效果。讓我們將 P gain 設置為 80,I gain 設置為 1,000。
通過這些設置,馬達會停留在所需的目標位置附近,因為它反覆的超過目標位置,並嘗試自我修正。
如果我們將 D gain 設置為 10,000,你會注意到初始運動,以及馬達試圖到達其目標位置時的震盪,都已顯著的減緩。
D gain 修改了 P 和 I gain,降低了對馬達運動影響的強度。
儘管這個範例並不是最終我們所希望出現的運動。但調整應用程式中的 D gain,可用於調整 P gain 和 I gain 的強度,以便更好地對馬達動作進行微調控制,而無須單獨的調整 P 或 I gain。
Proportional + Integral + Derivative Control 投影片
D 控制會通過抑制其他兩個控制參數的影響,來修改控制輸出。
將 D gain 添加到 PI 控制器,會導致其他兩個參數的調整強度降低。
較高的 D 值將會讓超出量減少,及有更平滑的運動曲線。但 D 增益設置過高,會導致系統不穩定,因為反而會過量的抑制其他兩個控制參數。
07:06 Outro 結尾 #
以上就是你需要瞭解的有關 PID 控制的所有訊息,以便你可以開始調整 Dynamixel 系統的運動。
如果你想瞭解更詳細的資訊,可以發 email 或訪問 ROBOTIS 論壇與論壇的其他成員進行討論。