3 控制器设计
原文鏈接
控制器設(shè)計
基于roll, pitch, yaw的傳遞函數(shù)表達(dá)的系統(tǒng)的線性數(shù)學(xué)模型
使用Matlab仿真工具設(shè)計了一個閉環(huán)控制器。
首先,在Matlab腳本里面定義系統(tǒng)模型的常量。
%% Constants d = 0.45; % diameter quadrocopter l = sqrt(d^2/8); % distance between one rotor and center of mass m = 1.0024; % mass of quadrocopter g = 9.81; % gravitational acceleration kPWM = 7.8502; % proportional constant omega/PWMJxx = 0.01046412; % mass moment of inertia xb Jyy = 0.010746965; % mass moment of inertia yb Jzz = 0.020576095; % mass moment of inertia zbbT = 7.90261e-06; % proportional coefficient blade thrust/(omega^2) bH = 1.66057e-7; % proportional coefficient blade torque/(omega^2)% system gains k_phi = l*bT*kPWM*sqrt(m*g*bT)/Jxx; k_theta = l*bT*kPWM*sqrt(m*g*bT)/Jyy; k_psi = bH*kPWM*sqrt(m*g*bT)/Jzz;Z變換
在設(shè)計控制器之前,考慮到要控制的系統(tǒng)是離散的,所以需要變換到z域。傳感器MPU-9150的測量頻率是50Hz,是整個系統(tǒng)中最慢的部分,所以由它來定義控制系統(tǒng)的采樣頻率。
%% Z-transform % sample time T_sample = 1/50;% LTI-System of quadcopters phi (roll) Gs_phi_s = tf(k_phi,[1 0 0]);% transfer function continuous to discrete Gs_phi_z = c2d(Gs_phi_s, T_sample);PD極點配置
第一步,通過離散z域的極點配置,設(shè)計了控制器中四旋翼的roll變化部分。在復(fù)z平面實軸上的0.83處有3個穩(wěn)定極點,用它們來設(shè)計閉環(huán)控制系統(tǒng)。在下面的Matlab腳本里面還做了關(guān)于控制器傳遞函數(shù)中的多項式的計算。
%% Pole-placement % desired poles d_phi = [0.83 0.83 0.83];[Gs_phi_z_num, Gs_phi_z_den] = tfdata(Gs_phi_z,'v'); Gs_phi_z_num = Gs_phi_z_num(2:end); [Gc_phi_z_num, Gc_phi_z_den] = placepole(Gs_phi_z_num, Gs_phi_z_den, d_phi);% controller Gc_phi_z = tf(Gc_phi_z_num,Gc_phi_z_den,T_sample);閉環(huán)控制系統(tǒng)的復(fù)極點-零點映射圖(pole-zero map)表明,所有的極點的實部,都是指定的0.83。
這樣的閉環(huán)系統(tǒng),用matlab仿真結(jié)果如下,是一個建立時間大約為1s的階梯響應(yīng)。
設(shè)計的控制器
和一個一般傳函形式的離散PD控制器是等價的
上式可以寫成
為了能在飛行測試中常規(guī)調(diào)整控制器參數(shù),控制器設(shè)計成PD參數(shù)形式。
比較上面幾個式子,可以找到轉(zhuǎn)換關(guān)系
這些參數(shù)可以輕易地在測試飛行器的過程中調(diào)整。
%% PID controller % Controller coefficients a_phi = fliplr(Gc_phi_z_den(2:end)); b_phi = fliplr(Gc_phi_z_num);% PD-Parameters P_phi = (b_phi(1)+b_phi(2))/(a_phi(1)+1); N_phi = (a_phi(1)+1)/T_sample; D_phi = (b_phi(2)-(b_phi(1)+b_phi(2))/(a_phi(1)+1))*T_sample/(a_phi(1)+1);同樣的流程用于pitch和yaw。值得注意的是,對于yaw,要控制的是角速度,而不是角度。所以,在相應(yīng)的極點配置下,最終模型就是一個簡單的P控制器。
控制器輸出
As the controller outputs for controlling the quadcopter’s attitude are summarized by
控制飛行器姿態(tài)的飛控輸出可以總結(jié)為以下形式
每個PWM信號代表一個電機(jī),計算的時候,要考慮懸停所需要的PWM信號部分。
仿真
閉環(huán)控制系統(tǒng)在Matlab的仿真器里面仿真,仿真模型包括AttitudeControl描述控制器,以及MM代表四旋翼的非線性數(shù)學(xué)模型。考慮到控制系統(tǒng)的離散形式,零階極點元素也輸入了模型中。
子系統(tǒng)AttitudeControl包含3個PID控制器,利用輸出來精確計算輸入。
閉環(huán)控制系統(tǒng)中每個角度的階躍響應(yīng)如下所示。第三個圖看起來不太一箱,是因為它控制的是角速度,而不是角度。
拓展成PID控制器
第一次飛行測試發(fā)現(xiàn),由于飛機(jī)的質(zhì)心和幾何中心不重合,導(dǎo)致飛機(jī)側(cè)翻。所以,控制器需要一個額外積分部分加以擴(kuò)展。離散的PID控制器模型如下表示:
轉(zhuǎn)換分?jǐn)?shù)形式,得到
這就得到了分子和分母的多項式形式。這些多項式以數(shù)組的形式,送給控制算法。
積分增益I通過實驗確定。
Implementation
數(shù)字控制器在Infineon XMC-4500上面實現(xiàn)了,在AttitudeController.c 和 AttitudeController.h兩個文件中。
控制器代碼的實現(xiàn)細(xì)節(jié),可以在5. Software找到。
總結(jié)
- 上一篇: java移位简介
- 下一篇: ROS入门教程(一)