View Categories

PID tuning for Dynamixel 智能馬達

4 min read

前言 #

(本文章是根據 ROBOTIS 下列 youtube 教學影片,將其說明英翻中,整理而成。)

PID Tuning

PID 調整可讓用戶微調他們的 Dynamixel 智能馬達行為,以便更好地滿足他們的應用需求。 本影片提供了關於手動調整 Dynamixel 智能馬達的 PID 過程的解釋、演練和一些有用的指南。 另外,還有一些額外的提示和技巧!

軟體: Dynamixel Wizard 2.0 
智能馬達: XM430-W210-R 
論壇討論: ROBOTIS 論壇 

影片時段:(英文)
00:00 Intro
01:10 PID Tuning Process Flow
02:42 Default Settings
03:20 Proportional Gain
05:06 Integral Gain
06:09 Derivative Gain
07:38 Tips and Tricks
09:15 Outro

00:00 Intro 介紹 #

今天,我將向你展示如何使用 Dynamixel Wizard 來調整 Dynamixel 智能馬達的 PID 設置。
PID 控制是自動化控制的一個重要方面,在我們的案例中,它可讓我們調整馬達的運動行為,以更好地符合我們的系統和使用。

為了演示這些調整方法,我將使用一個簡單的示範系統,系統是由一個智能馬達,移動一個有負重的手臂所組成。雖然這個 Dynamixel 系統是一個簡化的示範,但使用的方法仍然沿用於現實世界的實際系統上。

如果你打算使用自己的 Dynamixel 智能馬達,請務必仔細調整你的 PID 設置,並確保你可能執行的任何測試運動,都有一個安全的軌跡。對你的 PID gain 進行較大調整,可能會在你的馬達中產生干擾或震盪輸出。

這些震盪和你可能用來測試的任何不安全運動,可能會損壞你的系統或傷害到你自己或旁人。出於這個原因,在調整 PID 設置,以及在下控制指令動作,尤其是對於複雜或有潛在危險的系統時,最好謹慎行事。

PID Control 投影片
PID 控制是一個複雜的主題,具有廣泛的背景,及大量的理論,實作研究和範例。

本影片簡要介紹了手動調整 Dynamixel 智能馬達的 PID 設置的基本過程。

在影片的最後,我還分享了一些對 PID 調整有用的補充訊息。

Example Methodology 投影片
今天調整的示範系統,如右圖顯示,是一個馬達和有負重的手臂。

本次調整配置的細節,並不適用於其他系統。但調整這個簡單系統的通用方法和過程,是可以應用於更複雜的專案上。

ROBOTIS Warning 投影片
不安全的 PID gains 或運動,可能導致不受控制的震盪或碰撞。

01:10 PID Tuning Process Flow 調整流程 #

手動 PID 調整,最好通過依照一個預先定義的流程圖來完成,該流程可能會根據你所需的性能特徵,以及你的應用不同而改變。

但是對於本次解說,我選擇依照右側圖表中描述的過程。接下來的投影片將會更詳細介紹此過程,然後我將按照流程指引,調整我的示範 Dynamixel 系統。

此過程的第一步是調整 P gain 。首先,我將執行一些測試以查看系統的性能,並根據結果,將增加或減少 P gain,如下圖所示。

當你的系統產生出,沒有其他不良性能特徵的穩態誤差時,就表示可以繼續調整 I gain。對於 I gain,執行相同的一般過程,但是你要看的結果會略有不同。一旦你將不良特性減少到較小或可接受的過衝量,你就可以繼續調整 D gain。

對於 D gain,你再次執行相同的過程,但這一次的數值,最終會比平均稍大一些,因為 D gian 往往對每個增量,會產生比較小的影響。

一旦得到了你需要的性能,你就完成了此次調整。可是請記住,在調整 P,I gain 時,你必須回到流程中的該步驟,並再次調整所有後續 gains。

PID Tuning
手動 PID 調整,最好通過依照一個預先定義的流程圖來完成。

我比較喜歡依照右側圖表中描述的過程。(由上中下三個 Tuning 圖表組合)

接下來的投影片將會更詳細介紹此過程。

turtlebot3 pid control
turtlebot3 pid control
Tuning Flow: Proportional Gain 投影片
turtlebot3 pid control
Tuning Flow: Integral Gain 投影片
turtlebot3 pid control
Tuning Flow: Derivative Gain 投影片

02:42 Default Settings 預設設置 #

在我們開始進行調整之前,讓我們檢查一下 Dynamixel 智能馬達在預設 P gain:800 和 I gain:0 下的運動行為。
如你所見,這些預設值會產生具有快速響應、高過衝、短震盪週期和馬達穩定後穩態過衝誤差的運動。
為了展示 PID 調整的好處,我將調整 gains,以減低來達到沒有震盪、沒有穩態誤差,和更平滑響應的運動曲線。
現在我們已經了解了預設行為的樣子以及我們想要實現的目標,我們可以開始了

PID Tuning Flow
通常,在調整 PID 設置時,最好從 P 開始,然後到 I,最後調整 D。
任何時候你在此流程中調整回較早的 gain 時,也必須再調整接續的 gain。

turtlebot3 pid control

03:20 Proportional Gain 比例增益 #

調整 PID gains時,通常最好從調整 P 值開始。

P 值通常對運動曲線的整體影響最大,因此通常最好從這裡開始調整,並使用其他 gains 來進行微調。對智能馬達進行調整,希望達成的主要目標之一,是減低 overshoot 過衝。我們應該首先降低 P gain。

讓我們將 p gain 設置為 700 ,並再次檢查我們的圖表。正如我們所看到的,性能上大致相似,但比以前慢了一點。對於我們的應用需求來說仍然不夠好。

這次讓我們嘗試 600,仍然不是我們想要的。產生相當多的 overshoot 過衝。 我們需要更降低一點。

讓我們嘗試 400 P gain,這次更接近我們正在尋找的性能,具有更低的 overshoot 過衝,以及更少的激烈移動。

還要記住,在測試你的 PID 設置時,馬達所產生的運動,可能會根據它們的位置和負載發生顯著變化。在我們的範例下,當承重臂在水平位置時,以現在的 PID 設置,馬達是無法到達其目標位置。對於我們的示範,這種 undershooting 行為是可以接受的,我們可以通過增加 I gain 來糾正穩態誤差。

對於其他系統,動態負載和其他馬達的運動,會對系統性能產生不同的影響。出於這個原因,重要的是,在各種位置和各種運動中測試你的所有 PID 設置,以確保它們在盡可能多的情況下產生可接受的結果。

一些高級系統甚至可能需要根據負載或位置,進行動態 PID 調整以獲得最佳結果。目前,我對這個 P gain 設置的性能非常滿意。現在是我們調整 I gain 的時候了。

turtlebot3 pid control
Parameter Increase Reference 投影片
turtlebot3 pid control
Dynamixel Wizard - P Gain

Dynamic Loads 投影片
右圖中藍框顯示的部分,可看出承重臂處於水平位置時的輸出。在此位置,馬達無法以當前 gains 設置到達目標位置。

動態負載或更換條件,會對你的 PID 調整設置的效率,產生很大影響。 驗證你的 gains 設置是否在盡可能多的條件下,產生可接受的結果,是非常重要。

turtlebot3 pid control

05:06 Integral Gain 積分增益 #

調整 I gain 可以讓我們消除由純 P 控制器產生的穩態誤差。這也會導致更快的響應時間,因為馬達離開目標位置越遠,其輸出速度就會增加。不幸的是,這也有引入更多 overshoot 過衝的副作用。

讓我們從 500 的保守 I gain 值開始。現在,我們可以看到馬達在每次運動中都會 overshoot 過衝。 馬達在穩定之前,仍然圍繞在目標位置震盪,但現在它可以更準確地穩定在目標位置上,消除了我們在使用純 P 控制時看到的穩態誤差。

讓我們再次測試 I gain 設置為 1,000。現在馬達有很大的 overshoot 過衝,但我們也可以看到,在穩定前的震盪已經顯著減少,也讓到達的時間更快。

我喜歡現在這種積極的 I gain 表現的性能,因此可以繼續進行最終的 PID 增益設置,即 D 值。

turtlebot3 pid control
Parameter Increase Reference 投影片
turtlebot3 pid control
Dynamixel Wizard - I Gain

06:09 Derivative Gain 微分增益 #

調整 D gain 值,可讓我們通過抑制其他 gains 設置的影響,來微調馬達的行為。

先設為保守的 D gain:500 值,讓我們看看這對馬達有什麼影響。似乎對我們馬達的性能沒有太大的影響,比如在穩定之前,減少震蕩的大小和持續的時間。

讓我們看看當我們將 D gain 提高到 5,000 時的動作是什麼樣的。以這個 D gain 設置 ,當馬達接近目標位置時,我們會看到很大的 overshoot 過衝,然後緩慢地回到目標位置,完全沒有任何振盪。

我認為用這個 D gain 來穩定在目標位置上花費的時間有點太長了。所以我會把它降到 2,000 並再次測試。仍然有大量的 overshoot 過衝,偶爾會有小震盪,但穩定速度要快得多。

我對這個 PID 調整的性能非常滿意,但讓我們與預設設置進行比較,以更好地了解差異。
使用新的 PID 調整設置,可能需要稍長的時間才能到達目標位置,但幾乎完全消除了震盪,並且最終位置的準確性得到了顯著提高。

調整 PID 設置,可以幫助在你自己的 Dynamixel 系統中獲得類似的結果,或者可以調整不同的性能特徵,使馬達表現更符合你的使用案例。在結束前,我想和大家分享一些 PID 優化技巧和補充訊息,我想你可能會覺得很有幫助。

Parameter Increase Reference 投影片
turtlebot3 pid control
Dynamixel Wizard - D Gain
turtlebot3 pid control
Tuned vs Default 比較圖

PID Optimization
調整 PID 設置,可以優化與馬達運動有關的各種參數。

PID 調整,幾乎可以針對跟馬達運動有關的任何重點,這裡列出了一些最常用的。

• Time to Goal 到達目標位置的時間
• Zero Overshoot 零過衝
• Smooth Motions 流暢的動作
• Trajectory Tracking 軌跡的追蹤
• Disturbance Rejection 抗干擾

07:38 Tips and Tricks 提示與技巧 #

儘管調整 P,I gain 會依據你的 Dynamixel 系統的具體配置,而產生不同的結果。但仍有一些有用的經驗法則,可以幫助你預測調整特定參數後,會產生什麼樣的結果。

對於 P gain,降低它,通常會導致移動速度降低,和目標位置的 undershoot 早停增加。如果增加它,會導致更快的運動,和增加尋找目標位置的準確性。對 Dynamixel 智能馬達的使用情況,非常高的 P gain ,將會因為有力的運動和不斷的小調整,而導致齒輪和馬達的磨損增加。

增加 I gain,會導致 overshoot 過衝,以及穩定前的振盪顯著的增加。
降低 I gain 會降低 overshoot 過衝的可能性,但也會使穩態誤差持續更長時間。

從低 gain 值開始,並向上調整 gain 值,通常比從高 gain 值開始,然後向下調整要來的容易許多。

當要調整一系列由連桿機構連接的馬達,例如機器手臂時,從最遠端的馬達,也就是最靠近末端執行器的馬達開始,然後朝著底座方向的馬達,順序調整。

進階用戶也可能有興趣查看我們的線上手冊,了解有關 Dynamixel 如何實現其 PID 控制迴路的更多信息。

Dynamixel 智能馬達,在位置控制及速度控制模式,有實作了稍微不同的迴路。我們線上手冊中提供的控制圖,會讓進階用戶更好地了解,如何最大限度地提高其 PID 調整的性能。以上就是你需要了解有關調整 PID gains 的所有訊息。

Parameter Increase Reference 投影片
turtlebot3 pid control
P Gain 投影片
turtlebot3 pid control
I Gain 投影片

Tune Upwards 投影片
從較低的 gain 開始,並向上調整,可以更輕鬆地進行調整。 從小幅調整開始,直到你知道系統將如何響應大的變動。 一旦你知道不同的變化會產生什麼樣的結果,就可以進行較大的調整。

以這種方式進行調整,還可以降低由於調整過程中的不穩定性,而造成損壞或傷害的風險。

Linkage Tuning 投影片
機器手臂和其他串接馬達型的系統,應該從末端執行器開始調整,直到底座。

每當對靠近底座的馬達進行調整時,也應重新調整靠近末端執行器的馬達。

Position/Velocity Control Loops 投影片
Dynamixel 智能馬達,為基於速度和位置的控制模式,實現不同的控制迴路。

通過影片前言中的連接,可以在 ROBOTIS 線上手冊中,找到有關這些實現差異的更多資訊,以及對方塊控制圖的詳細了解。

turtlebot3 pid control

09:15 Outro 結尾 #

ROBOTIS emanual
ROBOTIS 線上手冊提供所有 ROBOTIS 產品的全面性技術文件。

ROBOTIS 線上手冊位置:
emanual.robotis.com

ROBOTIS Github
ROBOTIS 在 Github 上維護了幾個開源專案。要獲得與這些專案相關的幫助和故障排除,可以在 repo 上提問。
ROBOTIS Github 存儲庫位置:
github.com/ROBOTIS-GIT

ROBOTIIS Community Forum
ROBOTIS 社群論壇是討論你的 Dynamixel 專案,以及一般機器人技術的好地方。,也是向社群成員尋求技術建議和幫助的好地方。
ROBOTIS 論壇位置:
forum.robotis.com