Tuning MISO PI Controller for SIMO System

6 ビュー (過去 30 日間)
Hannes
Hannes 2023 年 10 月 5 日
コメント済み: Hannes 2023 年 10 月 7 日
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 ω.
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
Sam Chak 2023 年 10 月 6 日
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?
Hannes
Hannes 2023 年 10 月 7 日
The dynamic system model is quite simple:
The Pose of the robot in 2D is defined as , with , where d is the lateral deviation from the center of the lane (), ϕ is the heading deviation from the center of the lane (), is the velocity or the robot and (as you already stated correctly) is the angular velocity controlled by the two PIs.
The real-world system & HW already came with the Implementation of the PI Controllers as above, because in order to stay within the driving lane boundaries, control of d & ϕ is needed, hence a form of 'two-input-one-output' controller. Why they decided on using two PIs and adding their output I don't know.
Hope this clarifies it a bit more - thanks for your answer!

サインインしてコメントする。

回答 (1 件)

Sam Chak
Sam Chak 2023 年 10 月 7 日
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

カテゴリ

Help Center および File ExchangeAerospace Applications についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by