50 lines
1.7 KiB
Matlab
50 lines
1.7 KiB
Matlab
function robot = get_robot(file,opt)
|
|
switch opt.robot_def
|
|
case 'direct'
|
|
ndof = 2;
|
|
% Kinematics parameters
|
|
switch opt.KM_method
|
|
case 'SDH'
|
|
case 'MDH'
|
|
robot.theta = zeros([1,ndof+1]);
|
|
robot.a = [0,1,1];
|
|
robot.d = [0,0,0];
|
|
robot.alpha = [0,0,0];
|
|
otherwise
|
|
disp('Bad opt.KM_method!')
|
|
return;
|
|
end
|
|
% Dynamics parameters
|
|
link_mass = [1,1];
|
|
axis_of_rot(:,:,1) = [0;0;1];
|
|
axis_of_rot(:,:,2) = [0;0;1];
|
|
com_pos(:,:,1) = [1/2;0;0];
|
|
com_pos(:,:,2) = [1/2;0;0];
|
|
% the inertia tensor wrt the frame oriented as the body frame and with the
|
|
% origin in the COM
|
|
link_inertia(:,:,1) = diag([1,1,1]);
|
|
link_inertia(:,:,2) = diag([1,1,1]);
|
|
% manipulator regressor
|
|
for i = 1:ndof
|
|
robot.m(i) = link_mass(i);
|
|
robot.axis(:,i) = axis_of_rot(i);
|
|
robot.com(:,i) = com_pos(i);
|
|
robot.I(:,:,i) = link_inertia(i);
|
|
robot.mc(:,i) = link_mass*com_pos(i);
|
|
% the inertia tensor wrt the frame oriented as the body frame and with the
|
|
% origin in the Joint i
|
|
com_vec2mat = vec2skewSymMat(com_pos);
|
|
robot.I_vec(:,i) = inertiaMatrix2Vector(link_inertia-...
|
|
link_mass(i)*com_vec2mat*com_vec2mat);
|
|
robot.pi(:,i) = [robot.I_vec(:,i); robot.mc(:,i); robot.m(i)];
|
|
end
|
|
case 'urdf'
|
|
robot = parse_urdf(file);
|
|
case 'mat'
|
|
robot = [];
|
|
disp('TODO mat robot define options!')
|
|
otherwise
|
|
robot = [];
|
|
disp('Bad robot define options!')
|
|
return
|
|
end |