4 ROS程式設計入門 PID控制器

2021-08-11 03:10:44 字數 2290 閱讀 2565

介紹:

這篇教程是交給大家怎麼在ros裡寫乙個pid控制器,pid控制器有三部分:比例部分(p)、積分部分(i)、微分部分(d),pid的輸出是這三部分的加和。

pid可以控制機械人的位置和航向角,期望機械人向前走x公尺,x即為參考值(pid控制器的輸入期望),旋轉期望角度

φ 。

pid輸入是里程計訊息。首先你要計算當前值和目標值之間的差值。另乙個要計算的是psd控制器的干涉值(intervention)(譯者注:估計是pid輸出吧)。由於用的是離散版本pid,因此積分變為加和形式。這些都在nodepid 類中進行實現。回掉函式負責資料的收集。

輸入輸出處理

程式的輸入訊息是里程計訊息:

std_msgs/header header

uint32 seq

time stamp

string frame_id

string child_frame_id

geometry_msgs/posewithcovariance pose

geometry_msgs/pose pose

geometry_msgs/point position

float64 x

float64 y

float64 z

geometry_msgs/quaternion orientation

float64 x

float64 y

float64 z

float64 w

float64 covariance

geometry_msgs/twistwithcovariance twist

geometry_msgs/twist twist

geometry_msgs/vector3 linear

float64 x

float64 y

float64 z

geometry_msgs/vector3 angular

float64 x

float64 y

float64 z

float64 covariance

你實際需要的是位置和時間資訊。位置資訊(x,y)儲存在pose.pose.position中,time資訊儲存在header.stamp中.唯一的問題是如何得到機械人的旋轉資訊。geometry_msgs/quaternion 包含三位空間旋轉的 float64 (x,y,z,w) 四元數,我麼的機械人是在2d狀態下運動的。 φ=

2⋅arcsin(q

z)角度和距離

兩點之間的距離: d=

(y2−

y1)2

+(x2

−x1)

2−−−

−−−−

−−−−

−−−−

−−−√

(distance)

兩點之間的角度: θ=

atan

2(y2

−y1,

x2−x

1)(angle)

誤差

距離誤差 :參照公式distance

角度誤差,首先要計算真實的角度(與起始點相差的角度): φa

=φo−

φs

φa

: 實際角度 φ

o : 里程計測算角度 φ

s : 起點角度

pid(psd)控制器va

(t)=

kpe(

t)+k

dde(

t)dt

+ki∫

0te(

t)dt

(pid)

va

(t) pid輸出 e(

t)誤差 kp

是比例常數 kd

微分常量 ki

積分常量

va

(tn)

=kpe

(tn)

+kde

(tn)

−e(t

n−1)

tn−t

n−1+

ks∑i

=0ne

(ti)

⋅(tn

−tn−

1)(psd)

tn

: n次迭代 ks

對應ki

常量

PID控制器簡介

pid調節 基於誤差來消除誤差 可以認為是 誤差的過去 i 現在 p 未來 變化趨勢 d的加權和 pid控制器就是根據系統的誤差,利用比例 積分 微分計算出控制量進行控制的。pid控制的不足 1.在實際工業生產過程往往具有非線性 時變不確定,難以建立精確的數學模型,常規的pid控制器不能達到理想的控...

PID控制器開發筆記之五 變積分PID控制器的實現

在普通的pid控制演算法中,由於積分係數ki是常數,所以在整個控制過程中,積分增量是不變的。然而,系統對於積分項的要求是,系統偏差大時,積分作用應該減弱甚至是全無,而在偏差小時,則應該加強。積分係數取大了會產生超調,甚至積分飽和,取小了又不能短時間內消除靜差。因此,如何根據系統的偏差大小改變積分速度...

PID控制器的應用 控制網路爬蟲抓取速度

冬天鄉下人喜歡烤火取暖,常見的情形就是四人圍著麻將桌,桌底放一盆碳火。有人覺得火不夠大,那加點木炭吧,還不夠,再加點。片刻之後,又覺得火太大,腳都快被烤熟了,那就取出一些木碳 直到火盆裡的火剛剛合適。這樣乙個看似簡單的情形中就包括pid控制系統的四個主要過程 設定目標,測量,比較和執行。結合pid控...