⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opttraj.m

📁 nn modelling and auto-pid controller
💻 M
字号:
function zs = optTraj(type, sigmaE, z0, ts)% zs = optTraj(type, sigmaE, z0, ts)%% computes points on an optimal trajectory for%     the game of two identical cars with the EVADER at the origin%% see techrep% draws on A.W.Merz, "The Game of Two Identical Cars", pp.324 -- 343%	Journal of Optimization Theory and Applications, 9, 5 (1972)%% inputs:%	type	{ 1, 2, 3 } type of trajectory%		  type 1, sigmaP = -sigmaE%		  type 2, sigmaP = sigmaE%		  type 3, sigmaP = 0%	sigmaE	evader's input (+-1)%	z0	vector of initial conditions (x, y, theta)%	ts	times at which to compute points%	% outputs:%	zs	vector of points on optimal trajectory%% Ian Mitchell, 4/23/01% argument checkingif(nargin < 4)  error('Arguments type, sigmaE, z0, and ts are required');endif(abs(sigmaE) ~= 1)  error('evader''s input must be +- 1');endif(length(z0) ~= 3)  error('initial conditions z0 = [ x0; y0; theta0 ]');endif(size(ts, 2) ~= 1);  error('time sequence ts must be given as a column vector');end  switch type  case 1    zs = type1(sigmaE, z0, ts);  case 2    zs = type2(sigmaE, z0, ts);  case 3    zs = type3(sigmaE, z0, ts);  otherwise    error('type = {1, 2, 3} are only trajectory types allowed');  end% handle wrap of theta > pizs(:,3) = zs(:,3) - 2 * pi * (zs(:,3) > pi - sqrt(eps));%----------------------------------------------------------------------function zs = type1(sigma, z0, ts);% computes trajectories where pursuer and evader turn opposite directionsx0 = z0(1);y0 = z0(2);theta0 = z0(3);thetas = theta0 + 2 * sigma * ts;xs = x0 * cos(ts) ...        + sigma * (1 - cos(ts) + y0 * sin(ts) + cos(thetas) ...		     - cos(theta0 + sigma * ts));ys = y0 * cos(ts) + sin(ts) ...        - sigma * (x0 * sin(ts) + sin(thetas) - sin(theta0 + sigma * ts));zs = [ xs ys thetas ];%----------------------------------------------------------------------function zs = type2(sigma, z0, ts);% computes trajectories where pursuer and evader turn the same directionx0 = z0(1);y0 = z0(2);theta0 = z0(3);thetas = theta0 * ones(size(ts));xs = x0 * cos(ts) ...        + sigma * (1 - cos(ts) + y0 * sin(ts) - cos(theta0) ...		     + cos(theta0 + sigma * ts));ys = y0 * cos(ts) + sin(ts) ...        - sigma * (x0 * sin(ts) - sin(theta0) + sin(theta0 + sigma * ts));zs = [ xs ys thetas ];%----------------------------------------------------------------------function zs = type3(sigma, z0, ts);% computes trajectories where pursuer does not turnx0 = z0(1);y0 = z0(2);theta0 = z0(3);thetas = theta0 + sigma * ts;xs = x0 * cos(ts) - ts .* sin(thetas) ...	+ sigma * (1 - cos(ts) + y0 * sin(ts));ys = y0 * cos(ts) - ts .* cos(thetas) + sin(ts) - sigma * x0 * sin(ts);zs = [ xs ys thetas ];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -