亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? autopilot.m

?? A Quadrotor simulation that is performed in MATLAB and SIMULINK
?? M
字號:
function y = autopilot(uu,C)
%
% autopilot for quadrotor
% 
% Modification History:
%   1/21/08 - RWB
%   1/31/08 - RWB
%   2/5/08 - RWB
%   2/6/08 - GTR

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% get states and commands
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  [t, xhat,commands] = get_states_commands(uu,C);
  
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% implement autopilot modes

  %---------------------------------------------------------------
% regulate altitude based on size of object in image
  u_z = sat(altitude_hold(xhat.pz-commands.pz, t, C),2,-2);
  F_thrust = C.m*(C.g - u_z)/cos(xhat.phi)/cos(xhat.theta);

% rotate positions and commanded positions into body frame:
R = [...
    cos(xhat.psi), sin(xhat.psi);...
    -sin(xhat.psi), cos(xhat.psi)];
tmp = R*[xhat.px; xhat.py];
xhat.px = tmp(1);
xhat.py = tmp(2);
tmp = R*[commands.px; commands.py];
commands.px = tmp(1);
commands.py = tmp(2);


%---------------------------------------------------------------
% regulate pitch angle to drive x-axis error to zero
  theta_max = 10*pi/180;  % maximum commanded pitch angle
  u_x  = longitudinal_position_hold(xhat.px-commands.px, xhat.pxdot, t, C);
  decouple_x = u_x/(C.g - u_z);
  theta_c  = sat(atan(decouple_x),theta_max,-theta_max);
  Tq = pitch_attitude_hold(xhat.theta, theta_c, xhat.q, t, C);

%---------------------------------------------------------------
% regulate roll angle to drive y-axis error to zero
  phi_max = 10*pi/180;  % maximum commanded roll angle
  u_y  = lateral_position_hold(xhat.py-commands.py, xhat.pydot, t, C);
  decouple_y = u_y*cos(xhat.theta)/(C.g - u_z);
  phi_c = sat(atan(decouple_y),phi_max,-phi_max);
  Tp = roll_attitude_hold(xhat.phi, phi_c, xhat.p, t, C);

%---------------------------------------------------------------
% regulate heading to align with orientation of object in image
% don't adjust heading if x or y error is too large
%   M = .05;
%   if (abs(xhat.px-commands.px)<=M) & (abs(xhat.py-commands.py)<=M)
      Tr = heading_hold(xhat.psi, commands.psi, xhat.r, t, C);
%   else
%       Tr = -C.yaw_kd*xhat.r;
%   end
  

% control output
pwm = [...
    1/4/C.kmotor_lift, 0, 1/2/C.l/C.kmotor_lift, 1/4/C.kmotor_drag;...
    1/4/C.kmotor_lift, -1/2/C.l/C.kmotor_lift, 0, -1/4/C.kmotor_drag;...
    1/4/C.kmotor_lift, 0, -1/2/C.l/C.kmotor_lift, 1/4/C.kmotor_drag;...
    1/4/C.kmotor_lift, 1/2/C.l/C.kmotor_lift, 0, -1/4/C.kmotor_drag;...
    ]*[F_thrust; Tp; Tq; Tr];

% desired states (for visulation and debugging)
xd = [...
        commands.px;...      % xerror: position error along body x-axis
        commands.py;...      % yerror: position error along body y-axis
        commands.pz;...      % zerror:  position error along body z-axis (in pixels)
        0;...                % u: desired velocity along body x-axis
        0;...                % v: desired velocity along body v-axis
        0;...                % w: desired velocity along body z-axis
        phi_c;...            % phi:   desired roll angle
        theta_c;...          % theta: desired pitch angle
        commands.psi;...     % psi:   desired heading
        0;...                % desired roll rate  
        0;...                % desired pitch rate
        0;...                % desired yaw rate
    ];

% output
xhat_ = [...
    xhat.px;...
    xhat.py;...
    xhat.pz;...
    xhat.pxdot;...
    xhat.pydot;...
    xhat.pzdot;...
    xhat.phi;... 
    xhat.theta;...
    xhat.psi;...
    xhat.p;...
    xhat.q;...
    xhat.r;...
    ];
y = [pwm; xd; xhat_];



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Autopilot functions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% roll_attitude_hold
%  - regulate roll_attitude
%  - produces desired roll rate
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function torque = roll_attitude_hold(phi, phi_c, p, t, C);
  persistent uik1;
  persistent udk1;
  persistent errork1;
  persistent phik1;
  % initialize persistent variables at beginning of simulation
  if t<C.Ts, 
      uik1    = 0; 
      errork1 = 0;
  end
 
  % error equation
  error = phi_c - phi;

  % proportional term
  up = C.roll_kp * error;
  
  % integral term
  ui = uik1 + C.roll_ki * C.Ts/2 * (error + errork1);
  
  % derivative term
  ud = -C.roll_kd*p;
  
  % implement PID control
  torque = up + ui + ud;

  % update stored variables
  uik1    = ui; 
  errork1 = error;
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% lateral_position_hold
%  - regulate lateral position
%  - produces desired roll command
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function u_y  = lateral_position_hold(error, pydot, t, C)
  persistent uik1;
  persistent errork1;
  persistent vhatk1;
  % initialize persistent variables at beginning of simulation
  if t<C.Ts, 
      uik1    = 0; 
      errork1 = 0;
      vhatk1 = 0;
  end
 
  % proportional term
  up = -C.y_kp * error;
  
  % integral term
  ui = uik1 + C.y_ki * C.Ts/2 * (error + errork1);
  
  % dirty derivative of pe to get vhat
  vhat = (2*C.tau-C.Ts)/(2*C.tau+C.Ts)*vhatk1 + (2/(2*C.tau+C.Ts))*(error - errork1);
  ud = -C.y_kd*vhat;
%  ud = -C.y_kd*pydot;

  
  % implement PID control
  u_y = up + ui + ud;
  
  % saturate the roll command
  %u_y = sat(u_y, 20*pi/180, -20*pi/180);
  
  % update stored variables
  uik1    = ui; 
  errork1 = error;
  vhatk1  = vhat;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% pitch_attitude_hold
%  - regulate pitch attitude
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function torque = pitch_attitude_hold(theta, theta_c, q, t, C)
  persistent uik1;
  persistent udk1;
  persistent errork1;
  persistent thetak1;
  % initialize persistent variables at beginning of simulation
  if t<C.Ts, 
      uik1    = 0; 
      errork1 = 0;
  end
 
  % error equation
  error = theta_c - theta;

  % proportional term
  up = C.pitch_kp * error;
  
  % integral term
  ui = uik1 + C.pitch_ki * C.Ts/2 * (error + errork1);
  
  % derivative term
  ud = -C.pitch_kd*q;
  
  
  % implement PID control
  torque = up + ui + ud;

  % update stored variables
  uik1    = ui; 
  errork1 = error;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% longitudinal_position_hold
%  - regulate longitudinal position
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function u_x  = longitudinal_position_hold(error, pxdot, t, C)
  persistent ui;
  persistent errork1;
  persistent vhatk1;
  % initialize persistent variables at beginning of simulation
  if t<C.Ts, 
      ui    = 0; 
      errork1 = 0;
      vhatk1 = 0;
  end
 
  % proportional term1
  up = C.x_kp * error;
  
  % integral term
  ui = ui + C.x_ki * C.Ts/2 * (error + errork1);
  
  % dirty derivative of pe to get vhat
  vhat = (2*C.tau-C.Ts)/(2*C.tau+C.Ts)*vhatk1 + (2/(2*C.tau+C.Ts))*(error - errork1);
  ud = C.x_kd*vhat;
%  ud = C.x_kd*pxdot;

  
  % implement PID control
  u_x = up + ui + ud;
  
  % saturate the roll command
  %u_x = sat(u_x, 20*pi/180, -20*pi/180);

  % update stored variables
  errork1 = error;
  vhatk1 = vhat;
  

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% altitude hold
%  - regulate altitude
%  - produces force command
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function F = altitude_hold(error, t, C)
  persistent uik1;
  persistent error_k1;
  persistent error_dot_k1;
  % initialize persistent variables at beginning of simulation
  if t<C.Ts, 
      uik1       = 0; 
      error_k1 = 0;
      error_dot_k1 = 0;
  end
  
  % proportional term
  up = C.h_kp * error;
  
  % integral term
  ui = uik1 + C.h_ki * C.Ts/2 * (error + error_k1);
  
  % dirty derivative of error
  error_dot = (2*C.tau-C.Ts)/(2*C.tau+C.Ts)*error_dot_k1 ...
     + (2/(2*C.tau+C.Ts))*(error - error_k1);
  ud = C.h_kd * error_dot;
  
  % implement PID control
  F = up + ui + ud;
  
  

  % saturate the force command
  %F = sat(F, 20*pi/180, -20*pi/180);

  % update stored variables
  uik1       = ui; 
  error_k1 = error;
  error_dot_k1 = error_dot;

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% heading_hold
%  - regulate heading
%  - produces torque about the yaw axis
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function torque = heading_hold(psi, psi_c, r, t, C)
  persistent uik1;
  persistent errork1;
  % initialize persistent variables at beginning of simulation
  if (t<=C.Ts) | isempty(uik1), 
      uik1    = 0; 
      errork1 = 0;
  end
 
  % error equation
  error = psi_c - psi;

  % proportional term
  up = C.yaw_kp * error;
  
  % integral term
  ui = uik1 + C.yaw_ki * C.Ts/2 * (error + errork1);
  
  % derivative term
  ud = -C.yaw_kd*r;
  
  
  % implement PID control
  torque = up + ui + ud;

  % update stored variables
  uik1    = ui; 
  errork1 = error;

  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% sat
%   - saturation function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function out = sat(in, up_limit, low_limit)
  if in > up_limit,
      out = up_limit;
  elseif in < low_limit;
      out = low_limit;
  else
      out = in;
  end
  
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% use real states
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [t, x, commands] = get_states_commands(uu,C)
  NN = 0;
  t        = uu(1+NN);

  NN = NN + 1;
  commands.px  = uu(1+NN);
  commands.py  = uu(2+NN);
  commands.pz  = uu(3+NN);
  commands.psi = uu(4+NN);

  NN = NN + 4;
  x.px     = uu(1+NN);
  x.py     = uu(2+NN);
  x.pz     = uu(3+NN);
  x.pxdot  = uu(4+NN);
  x.pydot  = uu(5+NN);
  x.pzdot  = uu(6+NN);
  x.phi    = uu(7+NN);
  x.theta  = uu(8+NN);
  x.psi    = uu(9+NN);
  x.p      = uu(10+NN);
  x.q      = uu(11+NN);
  x.r      = uu(12+NN);
  
  
  
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情在线播放| 亚洲欧美一区二区三区国产精品| 91美女视频网站| 成人91在线观看| 91麻豆自制传媒国产之光| 99精品国产视频| 91麻豆国产香蕉久久精品| 91女人视频在线观看| 91网站黄www| 91精品国产综合久久精品性色| 欧美午夜一区二区三区免费大片| 欧美日韩一区高清| 欧美本精品男人aⅴ天堂| 久久久久久久久伊人| 欧美国产日韩亚洲一区| 国产精品免费看片| 亚洲国产精品一区二区久久恐怖片| 亚洲高清免费观看| 韩国av一区二区三区| 成人激情黄色小说| 欧美精品久久久久久久多人混战| 欧美区一区二区三区| 久久精品一区二区三区不卡| 依依成人精品视频| 美日韩一区二区| 国产欧美日韩精品在线| 欧美r级电影在线观看| 国产精品水嫩水嫩| 久久国产精品区| 欧美亚洲动漫精品| xnxx国产精品| 亚洲成人中文在线| 不卡在线观看av| 久久久久久久久久久久久女国产乱| 一区二区国产盗摄色噜噜| 国产精品99久久久久久久女警| 欧美日本韩国一区二区三区视频 | 极品少妇一区二区| 欧美日韩中文另类| 夜夜嗨av一区二区三区中文字幕| 成人丝袜18视频在线观看| 日韩精品最新网址| 日本vs亚洲vs韩国一区三区二区 | 9191国产精品| 亚洲h在线观看| 欧美日韩一区不卡| 日本午夜一本久久久综合| 正在播放一区二区| 天堂蜜桃91精品| 精品国产乱子伦一区| 韩国精品免费视频| 久久亚洲精精品中文字幕早川悠里| 日韩国产精品久久| 欧美成人国产一区二区| 成人免费看片app下载| 国产精品国产精品国产专区不蜜 | 精品一区二区在线视频| 亚洲精品一区二区三区影院| 国产精品18久久久久久久网站| 久久综合中文字幕| 91电影在线观看| 日韩 欧美一区二区三区| 国产日韩欧美综合一区| 91久久久免费一区二区| 婷婷综合另类小说色区| 欧美哺乳videos| 欧美日韩精品一区二区天天拍小说| 日产国产高清一区二区三区| 国产精品久久久久久久久动漫| 色悠久久久久综合欧美99| 久久国产精品无码网站| 日日欢夜夜爽一区| 欧美国产日韩亚洲一区| 2020国产精品自拍| 91精品国产高清一区二区三区| 国产成人福利片| 九九精品视频在线看| 婷婷开心久久网| 婷婷亚洲久悠悠色悠在线播放| 99re66热这里只有精品3直播| 精品区一区二区| 欧美日韩国产综合久久| 一本到不卡免费一区二区| 国产91丝袜在线18| 国产自产视频一区二区三区| 久久av资源站| 九九视频精品免费| 久久不见久久见免费视频7| 日韩高清不卡一区二区三区| 日韩 欧美一区二区三区| 亚洲h在线观看| 加勒比av一区二区| 成人手机在线视频| 成人免费的视频| av不卡一区二区三区| 欧美三级日韩在线| 91精品国产麻豆国产自产在线| 色8久久精品久久久久久蜜| 91免费在线看| 日韩精品专区在线影院重磅| 精品理论电影在线观看| 国产精品色婷婷| 亚洲国产日韩a在线播放| 国产一区二区影院| 欧美在线观看一二区| 精品美女一区二区| 中文字幕一区二区三区蜜月| 亚洲444eee在线观看| 粉嫩av一区二区三区在线播放 | 欧美日韩一区在线观看| 日韩一区二区在线观看| 1000部国产精品成人观看| 久久成人18免费观看| 欧美日韩五月天| 中文字幕字幕中文在线中不卡视频| 婷婷综合在线观看| 91福利在线播放| 国产精品每日更新| 韩国在线一区二区| 日韩视频123| 视频一区二区三区入口| 欧美色综合久久| 亚洲福利一二三区| 91国偷自产一区二区开放时间| 国产欧美日韩激情| 国产美女精品在线| 91精品国产综合久久久蜜臀粉嫩| 国产精品短视频| 成+人+亚洲+综合天堂| 欧美国产日韩精品免费观看| 丰满亚洲少妇av| 亚洲女性喷水在线观看一区| 91理论电影在线观看| 亚洲精品欧美激情| 色综合久久久久| 亚洲综合一区在线| 欧美丰满高潮xxxx喷水动漫| 日韩中文字幕亚洲一区二区va在线| 91福利视频在线| 美女尤物国产一区| 欧美激情在线一区二区三区| 99久久777色| 黄色日韩三级电影| 国产精品久久久久桃色tv| 日本高清视频一区二区| 蜜桃av一区二区在线观看| 久久综合九色综合久久久精品综合 | 国产精品福利电影一区二区三区四区| 国产999精品久久| 亚洲色图视频网站| 美女视频黄 久久| 成人免费视频一区| 亚洲欧洲成人精品av97| 欧美人妖巨大在线| 国产精品一卡二卡在线观看| 中文字幕五月欧美| 欧美日韩一区二区三区在线看| 蜜臀91精品一区二区三区| 久久久精品免费观看| 欧亚洲嫩模精品一区三区| 日韩精品午夜视频| 亚洲色图制服丝袜| 久久精品综合网| 欧美日本一区二区在线观看| 国内精品自线一区二区三区视频| 亚洲视频一二区| 欧美精品一区视频| 欧美高清dvd| 欧美视频精品在线| 色域天天综合网| av激情综合网| 岛国一区二区三区| 久久国产精品露脸对白| 日本成人在线不卡视频| 亚洲自拍另类综合| 成人免费小视频| 国产精品久久免费看| 国产清纯白嫩初高生在线观看91| 日韩欧美一级精品久久| 日韩欧美一二三区| 久久久亚洲午夜电影| 久久久www成人免费毛片麻豆| 26uuu欧美日本| 久久免费看少妇高潮| 国产色产综合色产在线视频| 久久噜噜亚洲综合| 国产精品毛片久久久久久| 国产精品乱子久久久久| 亚洲欧美国产三级| 午夜影院久久久| 久久国产精品99久久人人澡| 久久99在线观看| 国产99久久久国产精品潘金| 99久久久免费精品国产一区二区| 国产成人精品免费一区二区| 91免费国产在线观看| 日韩午夜电影在线观看| 国产精品女同互慰在线看| 亚洲一区二区三区四区的| 日本一道高清亚洲日美韩|