Dynamic-Calibration/trajectory_optmzn/fourier_series_traj.m

24 lines
948 B
Matlab

function [q,qd,q2d] = fourier_series_traj(t,q0,A,B,w,N)
% -----------------------------------------------------------------------
% The function evaluates trancated Fourier series polynomial
% Inputs:
% t - time instantes at which the polynomail should be evaluated
% q0 - initial offset, should be vector (nx1)
% A - sine coefficients
% B - cosine coefficients
% w - fundamental frequency
% N - number of harmonics
% Outputs:
% q - positions i.e. value of polynomial
% qd - velocities i.e. derivative of polynomail
% q2d - accelerations i.e. second derivative of polynomial
% -----------------------------------------------------------------------
q = q0;
qd = zeros(size(q0));
q2d = zeros(size(q0));
for k = 1:N
q = q + A(:,k)/(w*k).*sin(w*k*t) - B(:,k)/(w*k).*cos(w*k*t);
qd = qd + A(:,k).*cos(w*k*t) + B(:,k)*sin(w*k*t);
q2d = q2d - A(:,k)*w*k.*sin(w*k*t) + B(:,k)*w*k*cos(w*k*t);
end