40 lines
1.2 KiB
Matlab
40 lines
1.2 KiB
Matlab
% function robot = verify_regressor(robot, opt)
|
|
% verify: If full regressor dynamics is the same as basic dynamics
|
|
ndof = robot.ndof;
|
|
% Dynamics parameters
|
|
link_mass = robot.m;
|
|
com_pos = robot.com;
|
|
link_inertia = robot.I;
|
|
|
|
q_sym = sym('q%d',[ndof,1],'real');
|
|
% for i =1:ndof
|
|
% robot_pi(:,i)=[link_mass(i);link_mass(i)*robot.com_pos_R1;inertiaMatrix2Tensor(link_inertia(:,:,i))];
|
|
% end
|
|
% regressor = standard_regressor_R1000(q_sym);
|
|
robot_pi_vector = reshape(robot.pi,[10*ndof,1]);
|
|
tau=robot.regressor.K*robot_pi_vector;
|
|
%% R1000
|
|
tau_mat = standard_dynamics_R1000(q_sym);
|
|
%% Check if screw method is equal to regressor
|
|
isequal(simplify(tau),simplify(tau_mat))
|
|
% %% Numerical
|
|
% clear pi;
|
|
% ndof = robot.ndof;
|
|
% time = 0:0.01:2;
|
|
% f=1;
|
|
% q_J = sin(2*pi*f*time);
|
|
% qd_J = (2*pi*f)*cos(2*pi*f*time);
|
|
% qdd_J = -(2*pi*f)^2*sin(2*pi*f*time);
|
|
% q=[q_J;-q_J];
|
|
% qd=[qd_J; -qd_J];
|
|
% qdd=[qdd_J; -qdd_J];
|
|
% g = [0; 0; -9.8];
|
|
% robot_pi1=[1;1/2;0;0;1+1/4;0;0;1+1/4;0;1+1/4];
|
|
% robot_pi2=[1;1/2;0;0;1+1/4;0;0;1+1/4;0;1+1/4];
|
|
% % pi2=zeros([10,1]);
|
|
% robot_pi=[robot_pi1;robot_pi2];
|
|
% tau = zeros([2,100]);
|
|
% for i = 1:length(q_J)
|
|
% regressor = standard_regressor_Two_bar(q(:,i),qd(:,i),qdd(:,i));
|
|
% tau(:,i)=regressor*robot_pi;
|
|
% end |