%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS Returns a data structure containing the parameters of the ABB IRB1600iD. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Authors:Daniel Vivancos Unica Jose David Martinez Exposito Maria Jose Martinez Liza %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0002 % PARAMETERS Returns a data structure containing the parameters of the 0003 % ABB IRB1600iD. 0004 % 0005 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0006 % Authors:Daniel Vivancos Unica 0007 % Jose David Martinez Exposito 0008 % Maria Jose Martinez Liza 0009 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0010 0011 0012 % Copyright (C) 2012, by Arturo Gil Aparicio 0013 % 0014 % This file is part of ARTE (A Robotics Toolbox for Education). 0015 % 0016 % ARTE is free software: you can redistribute it and/or modify 0017 % it under the terms of the GNU Lesser General Public License as published by 0018 % the Free Software Foundation, either version 3 of the License, or 0019 % (at your option) any later version. 0020 % 0021 % ARTE is distributed in the hope that it will be useful, 0022 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0023 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0024 % GNU Lesser General Public License for more details. 0025 % 0026 % You should have received a copy of the GNU Leser General Public License 0027 % along with ARTE. If not, see <http://www.gnu.org/licenses/>. 0028 0029 0030 function robot = parameters() 0031 0032 robot.name= 'ABB_IRB1600ID'; 0033 0034 %Path where everything is stored for this robot 0035 robot.path = 'robots/abb/IRB1600ID'; 0036 0037 robot.DH.theta= '[q(1) q(2)-pi/2 q(3) q(4) q(5) q(6)+pi]'; 0038 robot.DH.d='[0.4865 0 0 0.640 0 0.2]'; 0039 robot.DH.a='[0.15 0.7 0.11 0 0 0]'; 0040 robot.DH.alpha= '[-pi/2 0 -pi/2 pi/2 -pi/2 0]'; 0041 robot.J=[]; 0042 0043 0044 robot.inversekinematic_fn = 'inversekinematic_irb1600id(robot, T)'; 0045 0046 %number of degrees of freedom 0047 robot.DOF = 6; 0048 0049 %rotational: 0, translational: 1 0050 robot.kind=['R' 'R' 'R' 'R' 'R' 'R']; 0051 0052 %minimum and maximum rotation angle in rad 0053 robot.maxangle =[-pi pi; %Axis 1, minimum, maximum 0054 deg2rad(-90) deg2rad(150); %Axis 2, minimum, maximum 0055 deg2rad(-238) deg2rad(79); %Axis 3 0056 deg2rad(-155) deg2rad(155); %Axis 4 0057 deg2rad(-90) deg2rad(135); %Axis 5 0058 deg2rad(-200) deg2rad(200)]; %Axis 6 0059 0060 %maximum absolute speed of each joint rad/s or m/s 0061 robot.velmax = [deg2rad(180); %Axis 1, rad/s 0062 deg2rad(180); %Axis 2, rad/s 0063 deg2rad(180); %Axis 3, rad/s 0064 deg2rad(320); %Axis 4, rad/s 0065 deg2rad(380); %Axis 5, rad/s 0066 deg2rad(460)];%Axis 6, rad/s 0067 robot.accelmax=robot.velmax/0.1; % 0.1 is here an acceleration time 0068 0069 % end effectors maximum velocity 0070 robot.linear_velmax = 2.5; %m/s 0071 0072 %base reference system 0073 robot.T0 = eye(4); 0074 0075 %INITIALIZATION OF VARIABLES REQUIRED FOR THE SIMULATION 0076 %position, velocity and acceleration 0077 robot=init_sim_variables(robot); 0078 0079 % GRAPHICS 0080 robot.graphical.has_graphics=1; 0081 robot.graphical.color = [255 102 51]./255; 0082 %for transparency 0083 robot.graphical.draw_transparent=0; 0084 %draw DH systems 0085 robot.graphical.draw_axes=1; 0086 %DH system length and Font size, standard is 1/10. Select 2/20, 3/30 for 0087 %bigger robots 0088 robot.graphical.axes_scale=1; 0089 %adjust for a default view of the robot 0090 robot.axis=[-2 2 -2 2 0 1.2]; 0091 %read graphics files 0092 robot = read_graphics(robot); 0093 0094 0095 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0096 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0097 0098 %DYNAMICS 0099 0100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0101 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0102 0103 0104 robot.has_dynamics=1; 0105 0106 %consider friction in the computations 0107 robot.dynamics.friction=0; 0108 0109 %link masses (kg) 0110 %Tenemos que repartir 250kg (peso total robot IRB1600ID entre los 6 eslabones) 0111 %Utilizando como material Aluminio, los datos obtenidos del programa Inventor seran: 0112 0113 robot.dynamics.masses=[0 109.440 28.242 31.079 6.936 1.430 0.249] 0114 %COM of each link with respect to own reference system 0115 robot.dynamics.r_com=[0.052 -0.012 0.343; %(rx, ry, rz) link 1 0116 0.150 0.791 -0.183;%(rx, ry, rz) link 2 0117 1.172 0.140 0.017; %(rx, ry, rz) link 3 0118 1.296 0.063 0.561; %(rx, ry, rz) link 4 0119 1.296 0.870 0.027; %(rx, ry, rz) link 5 0120 0 1.296 0.966];%(rx, ry, rz) link 6 0121 0122 %Inertia matrices of each link with respect to its D-H reference system. 0123 % Ixx Iyy Izz Ixy Iyz Ixz, for each row 0124 robot.dynamics.Inertia=[0 0 0 0 0 0; 0125 2.305 2.696 3.802 0 0 0; 0126 .0700 1.765 1.784 0 0 0; 0127 0.267 0.324 0.332 0 0 0; 0128 0.297 0.290 .023 0 0 0; 0129 .008 .002 .008 0 0 0; 0130 0 0 0 0 0 0]; 0131 %Los momentos de Inercia y los centros de gravedad quedan corregidos de los 0132 %obtenidos del programa Inventor para ser ajustados al sistema de 0133 %coordenadas designado en nuestro robot. 0134 0135 0136 robot.motors=load_motors([5 5 5 4 4 4]); 0137 %Speed reductor at each joint 0138 robot.motors.G=[300 300 300 300 300 300];