📄 agvlin.m
字号:
function [M,N]=agvlin(x,u,vw,flag)% Linearization of AGV modelpersistent kappa xout A0 F0 C0 G0 % Make variables static% Check if variables should be initailizedif nargin==1 kenc = 800/(2*pi); % Encoder gain Ng=36; % Gear factor kappa = 0.5/(Ng*kenc); xout = zeros(6,1); A0 = diag([1 1 1 1 1 1]); F0 = zeros(6,2); C0 = zeros(3,6); C0(1,1) = 1; C0(2,2) = 1; C0(3,3) = 1; G0 = []; returnend% Linearize state equation if flag==0, x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4); x5 = x(5); x6=x(6); u = u + vw(1:2); s = kappa*(x4*u(1) + x5*u(2)); t = kappa*(x4*u(1) - x5*u(2))/x6; phi = x3+t; a = kappa*u(1); b = kappa*u(2); alpha = kappa*x4; beta = kappa*x5; sinp = sin(phi); cosp = cos(phi); ssinp = s*sinp; scosp = s*cosp; ax6 = a/x6; bx6 = b/x6; stx6 = s*t/x6; alpx6 = alpha/x6; betx6 = beta/x6; M=A0; N=F0; M(1,3) = -ssinp; M(1,4) = a*cosp - ax6*ssinp; M(1,5) = b*cosp + bx6*ssinp; M(1,6) = stx6*sinp; M(2,3) = scosp; M(2,4) = a*sinp + ax6*scosp; M(2,5) = b*sinp - bx6*scosp; M(2,6) = -stx6*cosp; M(3,4) = 2*a/x6; M(3,5) = -2*b/x6; M(3,6) = -2*t/x6; N(1,1) = alpha*cosp - alpx6*ssinp; N(1,2) = beta*cosp + betx6*ssinp; N(2,1) = alpha*sinp + alpx6*scosp; N(2,2) = beta*sinp - betx6*scosp; N(3,1) = 2*alpx6; N(3,2) = -2*betx6;% Linearize output equation elseif flag==1, M=C0; N=G0;elseif flag==2, M=C0(1:2,:); N=eye(2);end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -