Compare commits
No commits in common. "e2e7406f4a64c2adf2150da310cf9f544dc8adfc" and "3833315adb109e2d8742fa142cd7a8c9e4f3e02b" have entirely different histories.
e2e7406f4a
...
3833315adb
|
|
@ -13,7 +13,7 @@ link_mass = robot.m;
|
||||||
com_pos = robot.com;
|
com_pos = robot.com;
|
||||||
link_inertia = robot.I;
|
link_inertia = robot.I;
|
||||||
|
|
||||||
thetalist = [zero_;q_J;zero_;q_J;zero_;q_J;zero_;zero_;zero_]';
|
thetalist = [zero_;zero_;zero_;q_J;zero_;zero_;zero_;zero_;zero_]';
|
||||||
dthetalist = [zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_]';
|
dthetalist = [zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_]';
|
||||||
ddthetalist = [zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_]';
|
ddthetalist = [zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_;zero_]';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,15 +40,11 @@ switch opt.LD_method
|
||||||
dv_skew(:,:,i) = vec2skewSymMat(dv(:,i));
|
dv_skew(:,:,i) = vec2skewSymMat(dv(:,i));
|
||||||
w_l(:,:,i) = vec2linearSymMat(w(:,i));
|
w_l(:,:,i) = vec2linearSymMat(w(:,i));
|
||||||
dw_l(:,:,i) = vec2linearSymMat(dw(:,i));
|
dw_l(:,:,i) = vec2linearSymMat(dw(:,i));
|
||||||
% hack: because we only know the com in the world frame
|
|
||||||
% the inv of rotation is beacause we want to the com in
|
|
||||||
% our defined frame. R*com is the wrong result
|
|
||||||
robot.pi(2:4,i) = robot.Home.R(:,:,i)'*robot.pi(2:4,i);
|
|
||||||
% size of matrix A is 6*10, need to -1
|
% size of matrix A is 6*10, need to -1
|
||||||
robot.regressor.A(:,:,i) = [dv(:,i),dw_skew(:,:,i)+w_skew(:,:,i)*w_skew(:,:,i),zeros(3,6); ...
|
robot.regressor.A(:,:,i) = [dv(:,i),dw_skew(:,:,i)+w_skew(:,:,i)*w_skew(:,:,i),zeros(3,6); ...
|
||||||
zeros(3,1),-dv_skew(:,:,i),dw_l(:,:,i)+w_skew(:,:,i)*w_l(:,:,i)];
|
zeros(3,1),-dv_skew(:,:,i),dw_l(:,:,i)+w_skew(:,:,i)*w_l(:,:,i)];
|
||||||
%? match screw method
|
%? match screw method
|
||||||
% robot.regressor.A(:,:,i) = Adjoint(RpToTrans(robot.TW(1:3,1:3,i),[0;0;0]))'*robot.regressor.A(:,:,i);
|
robot.regressor.A(:,:,i) = Adjoint(RpToTrans(robot.TW(1:3,1:3,i),[0;0;0]))'*robot.regressor.A(:,:,i);
|
||||||
end
|
end
|
||||||
% construct matrix U, size: [6*n,10*n]
|
% construct matrix U, size: [6*n,10*n]
|
||||||
% U_ = sym(zeros([6*ndof,10*ndof]));
|
% U_ = sym(zeros([6*ndof,10*ndof]));
|
||||||
|
|
@ -71,11 +67,10 @@ switch opt.LD_method
|
||||||
for i = 1:ndof
|
for i = 1:ndof
|
||||||
delta_(i,6*i) = 1;
|
delta_(i,6*i) = 1;
|
||||||
|
|
||||||
%FIXME: use link type, hack now
|
% %FIXME: use link type
|
||||||
if(i==ndof)
|
% if(i==ndof)
|
||||||
delta_(i,6*i) = 0;
|
% delta_(i,6*i) = 0;
|
||||||
delta_(ndof,6*(ndof-1)+3) = 1;
|
% end
|
||||||
end
|
|
||||||
end
|
end
|
||||||
robot.regressor.K = delta_*robot.regressor.U;
|
robot.regressor.K = delta_*robot.regressor.U;
|
||||||
if(opt.debug)
|
if(opt.debug)
|
||||||
|
|
|
||||||
|
|
@ -152,9 +152,6 @@ switch opt.robot_def
|
||||||
[0;-1;0;cross(-[0;-1;0],co(:,8))]...
|
[0;-1;0;cross(-[0;-1;0],co(:,8))]...
|
||||||
[0;0;0;1;0;0]];
|
[0;0;0;1;0;0]];
|
||||||
robot.theta = zeros([ndof,1]);
|
robot.theta = zeros([ndof,1]);
|
||||||
% robot.theta(2) = pi/4;
|
|
||||||
% robot.theta(4) = 1;
|
|
||||||
% robot.theta(6) = 1;
|
|
||||||
otherwise
|
otherwise
|
||||||
disp('Bad opt.KM_method!')
|
disp('Bad opt.KM_method!')
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ switch opt.KM_method
|
||||||
robot.vel.w = V(1:3,:);
|
robot.vel.w = V(1:3,:);
|
||||||
robot.vel.v = V(4:6,:);
|
robot.vel.v = V(4:6,:);
|
||||||
robot.vel.dw = Vd(1:3,:);
|
robot.vel.dw = Vd(1:3,:);
|
||||||
robot.vel.dv = Vd(4:6,2:end);
|
% robot.vel.dv = Vd(4:6,:);
|
||||||
% robot.vel.dv=[zeros(2,robot.ndof);-robot.gravity(end)*ones(1,robot.ndof)];
|
robot.vel.dv=[zeros(2,robot.ndof);-robot.gravity(end)*ones(1,robot.ndof)];
|
||||||
case 'SDH'
|
case 'SDH'
|
||||||
case 'MDH'
|
case 'MDH'
|
||||||
switch opt.Vel_method
|
switch opt.Vel_method
|
||||||
|
|
|
||||||
18
untitled3.m
18
untitled3.m
|
|
@ -1,18 +0,0 @@
|
||||||
R = robot.kine.R;
|
|
||||||
P = robot.kine.t;
|
|
||||||
F1 = Adjoint(RpToTrans(RotX(pi/4),[1;2;3]))*robot.regressor.A(:,:,end)*robot.pi(:,end)
|
|
||||||
F2 = robot.regressor.A(:,:,end-1)*robot.pi(:,end-1)+F1
|
|
||||||
|
|
||||||
FF1 = Adjoint(TransInv(RpToTrans(RotX(pi/4),[1;2;3])))'*F_Simpack(end,:,1)'
|
|
||||||
FF2 = F_Simpack(end-1,:,1)'+FF1
|
|
||||||
%%
|
|
||||||
F1 = robot.regressor.A(:,:,end)*robot.pi(:,end);
|
|
||||||
F3 = robot.regressor.A(:,:,end-2)*robot.pi(:,end-2);
|
|
||||||
%%
|
|
||||||
F_Simpack(end,:,1)
|
|
||||||
F_Simpack(end-2,:,1)
|
|
||||||
%%
|
|
||||||
robot_pi_vecoter = reshape(robot.pi,[90,1]);
|
|
||||||
F = robot.regressor.U*robot_pi_vecoter;
|
|
||||||
FF = reshape(F,[6,9])
|
|
||||||
F_Simpack(:,:,1)
|
|
||||||
Loading…
Reference in New Issue