Tuning MISO PI Controller for SIMO System
6 ビュー (過去 30 日間)
古いコメントを表示
Hi!
I am currently trying to tune a two-input-one-output PI controller for my one-input-two-output system of a differential drive robot:

The System & Controller are modelled from a real world application:
The system input is the angular velocity ω, and through a simple forward kinematics model the outputs are the lateral deviation d from the center of the lane & the heading deviation ϕ. The error values (
&
) are then fed into two PI controllers for which their outputs are added to obtain ω.
&
) are then fed into two PI controllers for which their outputs are added to obtain ω.As this is my first attempt with simulink I coud not find a suitable resource for tuning my Controller, could someone help me out?
Thanks in advance!
2 件のコメント
Sam Chak
2023 年 10 月 6 日
Hi @Hannes
Could you please demonstrate the dynamics of the unicycle, including the mathematical details of the control actions
and
? Based on your Simulink model, it seems that ω is defined as
. Additionally, could you explain why you need two PI controllers?
回答 (1 件)
Sam Chak
2023 年 10 月 7 日
Hi @Hannes
I've examined the Simulink model depicting the unicycle dynamics that is somewhat vaguely displayed under the block mask. The complete dynamics can be articulated as follows:
Through mathematical analysis, it becomes evident that the use of double PI controllers is unnecessary if your sole objective is to maintain the unicycle's trajectory along the x-axis in a straight line. In this scenario, a relatively straightforward nonlinear PD controller is more than sufficient for stabilizing the motion of the unicycle:
.Should one assume the small angle approximation (
), the controller can be approximated as a linear PD controller:
.If I find myself with some spare time, I might consider constructing the Simulink model.
tspan = linspace(0, 10, 10001);
x0 = [0 1 0]; % starting point (x0, y0) = (0, 1)
[t, x] = ode45(@odefcn, tspan, x0);
% Trajectory of Unicycle
figure(1), plot(x(:,1), x(:,2), 'linewidth', 1.5, 'color', '#50c0d9'), grid on, ylim([-1.2 1.2])
xlabel('x / unit'), ylabel('y / unit'), title('Trajectory of Unicycle')
% Angular velocity of Unicycle orientation
figure(2), plot(t, x(:,3), 'linewidth', 1.5, 'color', '#f1a861'), grid on, xlabel('t'),
ylabel('Angular velocity, \omega'), title('Angular velocity of Unicycle orientation')
% Equations of Motion for a Unicycle
function xdot = odefcn(t, x)
xdot = zeros(3, 1);
% Parameters
v = 1; % parameter related to the pedaling speed
yref = 0; % reference coordinate
% Controller, (omega, ω)
Kp = 1; % proportional gain
Kd = 2; % derivative gain
omega = - Kp*(x(2) - yref)/(v*cos(x(3))) - Kd*tan(x(3));
% Unicycle dynamics
xdot(1) = v*cos(x(3)); % dx/dt
xdot(2) = v*sin(x(3)); % dy/dt
xdot(3) = omega; % dθ/dt, rate of steering angle
end
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Aerospace Applications についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






