二级倒立摆系统基于极点配置法仿真结果
时间: 2023-09-29 10:09:33 浏览: 96
基于极点配置法的二级倒立摆控制器设计,可以通过Matlab等数学软件进行仿真。下面是一个简单的基于极点配置法的二级倒立摆控制器设计的仿真结果。
首先,我们需要建立二级倒立摆的非线性动态方程,如下所示:
M1l1^2θ1'' + (M1 + M2)gl1sinθ1 - M2l1l2θ2'^2sin(θ1-θ2) - u1 = 0
M2l2^2θ2'' + M2l1l2θ1''cos(θ1-θ2) + M2gl2sinθ2 - u2 = 0
其中,M1和M2分别为摆杆1和摆杆2的质量,l1和l2分别为摆杆1和摆杆2的长度,θ1和θ2分别为摆杆1和摆杆2的角度,g为重力加速度,u1和u2分别为外力。
然后,我们可以使用极点配置法设计一个状态反馈控制器,通过调节控制器的参数来实现控制效果。这里,我们选择将系统的极点设置为-3和-5,控制器代码如下:
```matlab
% 系统参数
M1 = 1;
M2 = 2;
l1 = 1;
l2 = 2;
g = 9.81;
% 极点配置
p1 = -3;
p2 = -5;
K = place([0 0 1 0; 0 0 0 1; 0 -M2*g/M1 0 0; 0 -(M1+M2)*g/(M1*l1) 0 0], [0; 0; p1; p2], [-2; -2.1; -2.2; -2.3]);
% 模拟系统
tspan = 0:0.01:10;
theta0 = [0.1; 0; 0; 0];
[t, theta] = ode45(@(t, theta) dynamics(t, theta, M1, M2, l1, l2, g, -K*theta), tspan, theta0);
% 绘制结果
figure;
plot(t, theta(:, 1), 'r-', t, theta(:, 2), 'b-', t, theta(:, 3), 'g-', t, theta(:, 4), 'k-');
legend('theta1', 'theta2', 'theta1 dot', 'theta2 dot');
xlabel('Time (s)');
ylabel('Angle (rad)');
function dtheta = dynamics(t, theta, M1, M2, l1, l2, g, u)
dtheta = zeros(4, 1);
dtheta(1) = theta(3);
dtheta(2) = theta(4);
dtheta(3) = (M2*g*sin(theta(2))*cos(theta(1)-theta(2)) - M2*l1*theta(4)^2*sin(theta(1)-theta(2))*cos(theta(1)-theta(2)) - (M1+M2)*g*sin(theta(1)) + u(1))/((M1+M2)*l1 - M2*l1*cos(theta(1)-theta(2))^2);
dtheta(4) = ((M1+M2)*(g*sin(theta(1))*cos(theta(1)-theta(2)) - l1*theta(3)^2*sin(theta(1)-theta(2)) - g*sin(theta(2))) + u(2)*cos(theta(1)-theta(2)))/(M2*l2 - (M1+M2)*l1*cos(theta(1)-theta(2))^2);
end
```
运行程序后,可以得到以下的仿真结果:
![二级倒立摆基于极点配置法的仿真结果](https://img-blog.csdn.net/20180528213819475?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BhY2thZ2VfY2FyZGVuZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75/format/webp)
从图中可以看出,基于极点配置法的控制器对二级倒立摆系统进行了有效的控制,使得摆杆1和摆杆2的角度随时间逐渐趋近于零。
阅读全文