prima prova bracctio
Dependencies: Eigen MX64_senzaCorrente
ARAP180.cpp
00001 #include "ARAP180.h" 00002 #include "ARM_parameters.h" 00003 00004 //***************************************************************************** 00005 00006 ARAP180::ARAP180(){ 00007 00008 q_sat_max(0) = M_PI/2; 00009 q_sat_max(1) = M_PI; 00010 q_sat_max(2) = M_PI; 00011 q_sat_max(3) = M_PI/4; 00012 q_sat_max(4) = M_PI; 00013 q_sat_max(5) = M_PI/4; 00014 00015 q_sat_min(0) = -M_PI/2; 00016 q_sat_min(1) = -M_PI/6; 00017 q_sat_min(2) = -0.1; 00018 q_sat_min(3) = -M_PI; 00019 q_sat_min(4) = -M_PI; 00020 q_sat_min(5) = -M_PI/4; 00021 00022 ID[0] = 1; 00023 ID[1] = 2; 00024 ID[2] = 3; 00025 ID[3] = 4; 00026 ID[4] = 5; 00027 00028 operatingMode[0] = 3; 00029 operatingMode[1] = 3; 00030 operatingMode[2] = 3; 00031 operatingMode[3] = 3; 00032 operatingMode[4] = 3; 00033 00034 enableVal[0] = 1; 00035 enableVal[1] = 1; 00036 enableVal[2] = 1; 00037 enableVal[3] = 1; 00038 enableVal[4] = 1; 00039 00040 motorSign(0) = 1; 00041 motorSign(1) = -1; 00042 motorSign(2) = 1; 00043 motorSign(3) = 1; 00044 motorSign(4) = -1; 00045 motorSign(5) = 1; 00046 00047 offsets(0) = 0.0; 00048 offsets(1) = 0.0; 00049 offsets(2) = 0.0; 00050 offsets(3) = 0.0; 00051 offsets(4) = 0.0; 00052 offsets(5) = 0.0; 00053 00054 dxl_port = new UARTSerial_half(PB_9,PB_8,PF_13, 1000000); 00055 mx_MotorChain = new MX(ID, sizeof(ID)/sizeof(int), 1000000, dxl_port); 00056 } 00057 00058 00059 void ARAP180::initArmMotors(){ 00060 mx_MotorChain->SyncOperatingMode(operatingMode, -1); 00061 00062 //Accelleration init 00063 printf("\n Inizializzo i profili di Accelerazione "); 00064 setMaxAcc(100); 00065 00066 00067 00068 printf("\n Inizializzo i profili di Velocita' "); 00069 setMaxVel(20); 00070 00071 mx_MotorChain->SyncTorqueEnable(enableVal, -1); 00072 printf("Motori inizializzati!!\r\n"); 00073 00074 00075 } 00076 00077 00078 void ARAP180::setMaxVel(float maxVel){ 00079 00080 float Vel_profile[5] = {maxVel,maxVel,maxVel,maxVel,maxVel}; 00081 mx_MotorChain->SyncProfileVel(Vel_profile); 00082 00083 } 00084 00085 void ARAP180::setMaxAcc(float maxAcc){ 00086 00087 float Acc_profile[5] = {maxAcc,maxAcc,maxAcc,maxAcc,maxAcc}; 00088 mx_MotorChain->SyncProfileAccel(Acc_profile); 00089 00090 00091 } 00092 00093 00094 void ARAP180::setJointPos(Vector6f q){ 00095 00096 00097 float Goal_position[5]; 00098 00099 Goal_position[0] = utilities::rad2deg(q(0)) * motorSign(0) + offsets(0); 00100 Goal_position[1] = utilities::rad2deg(q(1)) * motorSign(1) + offsets(1); 00101 Goal_position[2] = utilities::rad2deg(q(2)) * motorSign(2) + offsets(2); 00102 Goal_position[3] = utilities::rad2deg(q(3)) * motorSign(3) + offsets(3); 00103 Goal_position[4] = utilities::rad2deg(q(4)) * motorSign(4) + offsets(4); 00104 00105 00106 mx_MotorChain->SyncSetGoal(Goal_position); 00107 00108 00109 } 00110 00111 00112 Vector6f ARAP180::getJointPos(){ 00113 00114 Vector6f getPosConverted = Vector6f::Zero(); 00115 float getPos[5]; 00116 00117 mx_MotorChain->SyncGetPosition(getPos); 00118 00119 00120 getPosConverted(0) = utilities::deg2rad(getPos[0] - offsets(0)) * motorSign(0); 00121 getPosConverted(1) = utilities::deg2rad(getPos[1] - offsets(1)) * motorSign(1); 00122 getPosConverted(2) = utilities::deg2rad(getPos[2] - offsets(2)) * motorSign(2); 00123 getPosConverted(3) = utilities::deg2rad(getPos[3] - offsets(3)) * motorSign(3); 00124 getPosConverted(4) = utilities::deg2rad(getPos[4] - offsets(4)) * motorSign(4); 00125 getPosConverted(5) = (0.0 - offsets(4)) * motorSign(5); 00126 00127 return getPosConverted; 00128 00129 } 00130 00131 00132 00133 00134 00135 00136 //Dyrect Kinematics Matrix Te 00137 Matrix4f ARAP180::forwardKinematics(Vector6f q){ 00138 00139 Matrix4f A0 = Matrix4f::Zero(); 00140 float q1 = q[0]; 00141 float q2 = q[1]; 00142 float q3 = q[2]; 00143 float q4 = q[3]; 00144 float q5 = q[4]; 00145 float q6 = q[5]; 00146 float t2 = cos(q1); 00147 float t3 = cos(q5); 00148 float t4 = cos(q6); 00149 float t5 = sin(q1); 00150 float t6 = sin(q2); 00151 float t7 = sin(q5); 00152 float t8 = sin(q6); 00153 float t9 = q2*-1.0; 00154 float t10 = q2*1.0; 00155 float t12 = -q2; 00156 float t13 = -q3; 00157 float t11 = a2*t6; 00158 float t14 = t3*t5; 00159 float t15 = t2*t3*1.0; 00160 float t16 = q3+q4+t9; 00161 float t17 = q2+t13; 00162 float t19 = q3+q4+t12; 00163 float t18 = cos(t17); 00164 float t20 = sin(t17); 00165 float t21 = cos(t16); 00166 float t22 = sin(t16); 00167 float t23 = cos(t19); 00168 float t24 = sin(t19); 00169 float t25 = a3*t18; 00170 float t26 = a3i*t20*-1.0; 00171 float t27 = a3i*t20*1.0; 00172 float t28 = a4*t23*1.0; 00173 float t29 = d5*t24*-1.0; 00174 float t30 = d5*t24*1.0; 00175 float t31 = t2*t7*t21; 00176 float t32 = t5*t7*t21*-1.0; 00177 float t33 = t5*t7*t21*1.0; 00178 float t34 = t14+t31; 00179 float t35 = t15+t32; 00180 float t36 = a1+t11+t25+t26+t28+t29; 00181 A0(0,0) = t4*t34+t2*t8*t22; 00182 A0(0,1) = t8*t34*-1.0+t2*t4*t22; 00183 A0(0,2) = t5*t7*-1.0+t2*t3*t23; 00184 A0(0,3) = t2*t36; 00185 A0(1,0) = t4*t35*-1.0+t5*t8*t22; 00186 A0(1,1) = t8*t35+t4*t5*t22; 00187 A0(1,2) = t2*t7+t14*t23; 00188 A0(1,3) = t5*t36; 00189 A0(2,0) = t8*t23*-1.0+t4*t7*t24; 00190 A0(2,1) = t4*t23*-1.0-t7*t8*t24*1.0; 00191 A0(2,2) = t3*t24; 00192 A0(2,3) = a3*t20*-1.0+a4*t24*1.0-a3i*t18*1.0+d5*t23+a2*cos(q2); 00193 A0(3,3) = 1.0; 00194 00195 return A0; 00196 } 00197 00198 //Jacobian matrix J 00199 Matrix6f ARAP180::jacobianMatrix(Vector6f q){ 00200 00201 Matrix6f A0 = Matrix6f::Zero(); 00202 float q1 = q[0]; 00203 float q2 = q[1]; 00204 float q3 = q[2]; 00205 float q4 = q[3]; 00206 float q5 = q[4]; 00207 float q6 = q[5]; 00208 float t2 = cos(q1); 00209 float t3 = cos(q2); 00210 float t4 = cos(q5); 00211 float t5 = sin(q1); 00212 float t6 = sin(q2); 00213 float t7 = sin(q5); 00214 float t12 = -q2; 00215 float t13 = -q3; 00216 float t8 = t2*-1.0; 00217 float t9 = t2*1.0; 00218 float t10 = a2*t3; 00219 float t11 = a2*t6; 00220 float t15 = q2+t13; 00221 float t17 = q3+q4+t12; 00222 float t14 = a1+t11; 00223 float t16 = cos(t15); 00224 float t18 = sin(t15); 00225 float t19 = cos(t17); 00226 float t20 = sin(t17); 00227 float t21 = a3*t16; 00228 float t22 = a3i*t16*-1.0; 00229 float t23 = a3i*t16*1.0; 00230 float t24 = a3*t18*-1.0; 00231 float t25 = a3*t18*1.0; 00232 float t26 = a3i*t18*-1.0; 00233 float t27 = a3i*t18*1.0; 00234 float t28 = d5*t19; 00235 float t29 = a4*t19*1.0; 00236 float t30 = a4*t20*1.0; 00237 float t31 = d5*t20*-1.0; 00238 float t32 = d5*t20*1.0; 00239 float t33 = t28+t30; 00240 float t34 = t14+t21+t26; 00241 float t35 = t29+t34; 00242 float t40 = t22+t24+t33; 00243 float t36 = t2*t35; 00244 float t37 = t5*t35; 00245 float t41 = t10+t40; 00246 float t42 = t31+t35; 00247 float t38 = -t36; 00248 float t39 = -t37; 00249 float t43 = t2*t42; 00250 float t44 = t5*t42; 00251 float t45 = t38+t43; 00252 float t46 = t39+t44; 00253 A0(0,0) = -t44; 00254 A0(0,1) = t2*t41; 00255 A0(0,2) = -t8*(t23+t25-t33); 00256 A0(0,3) = t8*t33; 00257 A0(0,4) = t19*(t37-t44)-t5*t20*t28*1.0; 00258 A0(1,0) = t43; 00259 A0(1,1) = t5*t41*1.0; 00260 A0(1,2) = t5*(t23+t25-t33); 00261 A0(1,3) = -t5*t33; 00262 A0(1,4) = -t19*(t36-t43)+t9*t20*t28; 00263 A0(2,1) = -t2*(t43-a1*t2)-t5*(t44-a1*t5)*1.0; 00264 A0(2,2) = t5*(t44-t5*t14)+t9*(t43-t2*t14); 00265 A0(2,3) = t5*(t44-t5*t34)+t9*(t43-t2*t34); 00266 A0(2,4) = t5*t20*(t36-t43)*-1.0+t9*t20*(t37-t44); 00267 A0(3,1) = t5*-1.0; 00268 A0(3,2) = t5; 00269 A0(3,3) = t5; 00270 A0(3,4) = t8*t20; 00271 A0(3,5) = t5*t7*-1.0+t2*t4*t19; 00272 A0(4,1) = t2; 00273 A0(4,2) = t8; 00274 A0(4,3) = t8; 00275 A0(4,4) = t5*t20*-1.0; 00276 A0(4,5) = t2*t7+t4*t5*t19; 00277 A0(5,0) = 1.0; 00278 A0(5,4) = t19; 00279 A0(5,5) = t4*t20; 00280 return A0; 00281 } 00282 00283 Vector6f ARAP180::backwardKinematics(Matrix4f Td, Vector6f q_init, float Tsam, int n_max_iter, float max_pError, float max_oError ,float _Kp, float _Ko){ 00284 00285 00286 Matrix3f Kp = _Kp*Matrix3f::Identity(); 00287 Matrix3f Ko = _Ko*Matrix3f::Identity(); 00288 00289 Vector6f q = Vector6f::Zero(); 00290 00291 Vector6f dq = Vector6f::Zero(); 00292 Vector6f dp = Vector6f::Zero(); 00293 Matrix6f W_inv = Matrix6f::Identity(); 00294 00295 //Set destination frame 00296 00297 Matrix4f Te = Matrix4f::Zero(); 00298 Matrix6f J = Matrix6f::Zero(); 00299 Matrix6f pinvJ = Matrix6f::Zero(); 00300 Matrix6f J_T = Matrix6f::Zero(); 00301 Matrix3f L = Matrix3f::Zero(); 00302 Matrix3f pinvL = Matrix3f::Zero(); 00303 Vector3f vp = Vector3f::Zero(); 00304 Vector3f vo = Vector3f::Zero(); 00305 Vector6f v = Vector6f::Zero(); 00306 00307 00308 int n_iter = 0; 00309 00310 float pError = 0.0; 00311 float oError = 0.0; 00312 q = q_init; 00313 Te = forwardKinematics(q); 00314 J = jacobianMatrix(q); 00315 00316 00317 Vector3f ep = Td.block(0,3,3,1) - Te.block(0,3,3,1); 00318 Vector3f eo = utilities::rotationMatrixError(Td, Te); 00319 00320 pError = ep.norm(); //L_2 norm of vector 00321 oError = eo.norm(); 00322 00323 while(n_iter<n_max_iter && (pError>max_pError || oError>max_oError)){ 00324 00325 L = utilities::L_matrix(Td.block(0,0,3,3), Te.block(0,0,3,3)); 00326 //FullPivLU<Matrix3d> Core_L(L); 00327 pinvL = L.inverse(); 00328 00329 00330 //vp = dp.block(0,0,3,1) + Kp*ep; 00331 vp = Kp*ep; 00332 00333 vo = pinvL*(L.transpose()*dp.block(3,0,3,1) + Ko*eo); 00334 //vo = (Ko*eo); 00335 v << vp[0], vp[1], vp[2], vo[0], vo[1], vo[2]; 00336 00337 //J_T = J.transpose(); 00338 00339 00340 // If we need a weighted pinv 00341 //FullPivLU<Matrix6d> Core_J(J*W_inv*J_T); 00342 //pinvJ = W_inv*J_T*Core_J.inverse(); 00343 00344 //FullPivLU<Matrix6d> Core_J(J); 00345 00346 pinvJ = J.inverse(); 00347 00348 dq = pinvJ*v; 00349 00350 00351 q += dq*Tsam; 00352 00353 00354 Te = forwardKinematics(q); 00355 00356 00357 J = jacobianMatrix(q); 00358 00359 00360 ep = Td.block(0,3,3,1) - Te.block(0,3,3,1); 00361 eo = utilities::rotationMatrixError(Td, Te); 00362 00363 pError = ep.norm(); //L_2 norm of vector 00364 oError = eo.norm(); 00365 n_iter++; 00366 } 00367 //cout << "posError: " << pError << " orError: " << oError << endl; 00368 00369 00370 return q; 00371 00372 00373 } 00374 00375 Vector6f ARAP180::jointSaturation(Vector6f q){ 00376 00377 00378 Vector6f q_sat = q; 00379 for(int i = 0; i<6; i++){ 00380 00381 if(q_sat(i) > q_sat_max(i)){ q_sat(i) = q_sat_max(i);} 00382 if(q_sat(i) < q_sat_min(i)){ q_sat(i) = q_sat_min(i);} 00383 00384 } 00385 00386 00387 00388 return q_sat; 00389 00390 00391 } 00392 00393 00394 // Inertia matrix B 00395 00396 Matrix6f ARAP180::inertiaMatrix(Vector6f q){ 00397 00398 Matrix6f A0 = Matrix6f::Zero(); 00399 float q1 = q[0]; 00400 float q2 = q[1]; 00401 float q3 = q[2]; 00402 float q4 = q[3]; 00403 float q5 = q[4]; 00404 float q6 = q[5]; 00405 00406 float t2 = cos(q2); 00407 float t3 = cos(q3); 00408 float t4 = cos(q4); 00409 float t5 = cos(q5); 00410 float t6 = cos(q6); 00411 float t7 = sin(q2); 00412 float t8 = sin(q3); 00413 float t9 = sin(q4); 00414 float t10 = sin(q5); 00415 float t11 = sin(q6); 00416 float t12 = q3+q4; 00417 float t13 = q4+q6; 00418 float t14 = a1*a1; 00419 float t15 = a2*a2; 00420 float t16 = a3*a3; 00421 float t17 = a4*a4; 00422 float t18 = a3i*a3i; 00423 float t19 = d5*d5; 00424 float t20 = q2*2.0; 00425 float t21 = q3*2.0; 00426 float t22 = q4*2.0; 00427 float t32 = -d5; 00428 float t33 = -q2; 00429 float t35 = -q3; 00430 float t37 = -q4; 00431 float t39 = -q5; 00432 float t40 = -q6; 00433 float t23 = cos(t20); 00434 float t24 = a2*t2; 00435 float t25 = a3i*t4; 00436 float t26 = a2*t7; 00437 float t27 = a3*t9; 00438 float t28 = a4*t11; 00439 float t29 = cos(t12); 00440 float t30 = q5+t13; 00441 float t31 = sin(t12); 00442 float t34 = -t20; 00443 float t36 = -t21; 00444 float t38 = -t22; 00445 float t41 = a3*mpx4*t4; 00446 float t42 = a2*mpy3*t3; 00447 float t43 = a2*mpx3*t8; 00448 float t45 = a3i*mpx4*t9; 00449 float t46 = mass4*t16; 00450 float t47 = mass5*t16; 00451 float t48 = mass6*t16; 00452 float t49 = mass5*t17; 00453 float t50 = mass6*t17; 00454 float t51 = mass4*t18; 00455 float t52 = mass5*t18; 00456 float t53 = mass6*t18; 00457 float t54 = mass6*t19; 00458 float t56 = d5*mpy6*t6*2.0; 00459 float t58 = a3*a4*mass5*t4; 00460 float t59 = a3*a4*mass6*t4; 00461 float t60 = a2*a3i*mass4*t3; 00462 float t61 = a2*a3i*mass5*t3; 00463 float t62 = a2*a3i*mass6*t3; 00464 float t65 = a2*a3*mass4*t8; 00465 float t66 = a2*a3*mass5*t8; 00466 float t67 = a2*a3*mass6*t8; 00467 float t68 = a4*a3i*mass5*t9; 00468 float t69 = a4*a3i*mass6*t9; 00469 float t71 = a3*t4*t11; 00470 float t72 = d5*t6*t10; 00471 float t73 = a3i*t9*t11; 00472 float t75 = q2+t35; 00473 float t76 = q4+t40; 00474 float t83 = t12+t33; 00475 float t86 = t13+t39; 00476 float t87 = q5+q6+t37; 00477 float t108 = a2*mpx4*t3*t9; 00478 float t109 = a2*mpx4*t4*t8; 00479 float t111 = d5*mpy6*t5*t11; 00480 float t113 = t20+t35; 00481 float t115 = a2*d5*mass6*t3*t4; 00482 float t116 = a2*a4*mass5*t3*t9; 00483 float t117 = a2*a4*mass5*t4*t8; 00484 float t118 = a2*a4*mass6*t3*t9; 00485 float t119 = a2*a4*mass6*t4*t8; 00486 float t121 = a2*d5*mass6*t8*t9; 00487 float t150 = a2*mpy6*t3*t4*t6; 00488 float t153 = a2*mpy6*t6*t8*t9; 00489 float t167 = a2*mass6*t3*t4*t32; 00490 float t182 = a2*mpy6*t3*t9*t10*t11; 00491 float t183 = a2*mpy6*t4*t8*t10*t11; 00492 float t197 = q6-t12*2.0+t20; 00493 float t44 = mpy6*t28; 00494 float t55 = t41*2.0; 00495 float t57 = t45*2.0; 00496 float t63 = a2*t29; 00497 float t64 = d5*mass6*t25; 00498 float t70 = d5*mass6*t27; 00499 float t74 = -t25; 00500 float t77 = -t27; 00501 float t78 = -t41; 00502 float t80 = -t42; 00503 float t81 = cos(t75); 00504 float t82 = -t56; 00505 float t84 = t12+t34; 00506 float t85 = q5+t76; 00507 float t88 = -t43; 00508 float t89 = -t45; 00509 float t91 = sin(t75); 00510 float t92 = t58*2.0; 00511 float t93 = t59*2.0; 00512 float t95 = t68*2.0; 00513 float t96 = t69*2.0; 00514 float t98 = -t46; 00515 float t99 = -t47; 00516 float t100 = -t48; 00517 float t101 = -t49; 00518 float t102 = -t50; 00519 float t103 = -t51; 00520 float t104 = -t52; 00521 float t105 = -t53; 00522 float t106 = -t54; 00523 float t107 = mpy6*t6*t25; 00524 float t110 = mpy6*t6*t27; 00525 float t112 = mpy6*t72; 00526 float t114 = t20+t36; 00527 float t120 = t6*t10*t25; 00528 float t122 = t6*t10*t27; 00529 float t123 = -t58; 00530 float t125 = -t59; 00531 float t127 = mass6*t25*t32; 00532 float t129 = -t65; 00533 float t130 = -t66; 00534 float t131 = -t67; 00535 float t132 = -t68; 00536 float t134 = -t69; 00537 float t136 = cos(t83); 00538 float t137 = mass6*t27*t32; 00539 float t139 = sin(t83); 00540 float t141 = -t73; 00541 float t145 = cos(t113); 00542 float t148 = sin(t113); 00543 float t154 = mpy6*t10*t71; 00544 float t159 = mpy6*t10*t73; 00545 float t160 = -t108; 00546 float t161 = -t109; 00547 float t169 = -t116; 00548 float t170 = -t117; 00549 float t171 = -t118; 00550 float t172 = -t119; 00551 float t185 = -t153; 00552 float t196 = q6-t12+t113; 00553 float t198 = t25+t27+t32; 00554 float t203 = q5+t197; 00555 float t79 = -t55; 00556 float t90 = -t57; 00557 float t94 = t64*2.0; 00558 float t97 = t70*2.0; 00559 float t124 = -t92; 00560 float t126 = -t93; 00561 float t133 = -t95; 00562 float t135 = -t96; 00563 float t140 = sin(t84); 00564 float t142 = t107*2.0; 00565 float t143 = t110*2.0; 00566 float t144 = t10*t44*2.0; 00567 float t146 = cos(t114); 00568 float t147 = q3+t84; 00569 float t149 = sin(t114); 00570 float t151 = a3*t81; 00571 float t152 = a3i*t81; 00572 float t155 = a3*t91; 00573 float t156 = a3i*t91; 00574 float t157 = mpy6*t6*t74; 00575 float t162 = mpy6*t6*t77; 00576 float t165 = a4*t136; 00577 float t166 = d5*t136; 00578 float t168 = a4*t139; 00579 float t173 = d5*t139; 00580 float t174 = t6*t10*t74; 00581 float t175 = t6*t10*t77; 00582 float t176 = t154*2.0; 00583 float t178 = t159*2.0; 00584 float t186 = -t154; 00585 float t188 = t12+t84; 00586 float t191 = mpy6*t10*t141; 00587 float t195 = t32*t139; 00588 float t202 = q5+t196; 00589 float t206 = mpy6*t5*t11*t198; 00590 float t207 = d5+t63+t74+t77; 00591 float t128 = -t94; 00592 float t138 = -t97; 00593 float t158 = -t142; 00594 float t163 = -t143; 00595 float t164 = -t144; 00596 float t177 = cos(t147); 00597 float t179 = q6+t147; 00598 float t180 = sin(t147); 00599 float t184 = -t152; 00600 float t187 = -t176; 00601 float t189 = -t155; 00602 float t190 = -t156; 00603 float t192 = -t178; 00604 float t193 = cos(t188); 00605 float t194 = q6+t188; 00606 float t200 = q5+t40+t147; 00607 float t204 = q5+t40+t188; 00608 float t208 = t166+t168; 00609 float t209 = -t206; 00610 float t210 = mpy6*t5*t11*t207; 00611 float t214 = t28+t71+t72+t141+t174+t175; 00612 float t218 = -mpy6*t5*t11*(t152+t155-t168+t32*t136); 00613 float t225 = t45+t56+t64+t68+t69+t70+t78+t101+t102+t106+t121+t123+t125+t144+t150+t154+t157+t160+t161+t162+t167+t169+t170+t171+t172+t182+t183+t185+t191; 00614 float t181 = q5+t179; 00615 float t199 = q5+t194; 00616 float t201 = t39+t179; 00617 float t205 = t39+t194; 00618 float t211 = mpy6*t5*t11*t208; 00619 float t212 = -t210; 00620 float t213 = t184+t189+t208; 00621 float t216 = mpy6*t214; 00622 float t217 = a1+t26+t151+t165+t190+t195; 00623 float t224 = t41+t49+t50+t54+t58+t59+t82+t89+t107+t110+t127+t132+t134+t137+t159+t164+t186; 00624 float t226 = t56+t57+t60+t61+t62+t79+t80+t88+t94+t95+t96+t97+t98+t99+t100+t101+t102+t103+t104+t105+t106+t121+t124+t126+t129+t130+t131+t144+t150+t158+t160+t161+t163+t167+t169+t170+t171+t172+t176+t182+t183+t185+t192; 00625 float t215 = t24+t213; 00626 float t220 = mpy6*t10*t11*t217; 00627 float t221 = mpy6*t5*t6*t217; 00628 float t219 = mpy6*t5*t11*t215; 00629 float t223 = -t220; 00630 float t222 = -t219; 00631 A0(0,0) = t41+t42+t43+t46/2.0+t47/2.0+t48/2.0+t49/2.0+t50/2.0+t51/2.0+t52/2.0+t53/2.0+t54/2.0+t58+t59-t60-t61-t62+t65+t66+t67+t89+t127+t132+t134+t137+mass2*t14+mass3*t14+(mass3*t15)/2.0+mass4*t14+(mass4*t15)/2.0+mass5*t14+(mass5*t15)/2.0+mass6*t14+(mass6*t15)/2.0+(t46*t146)/2.0+(t47*t146)/2.0+(t48*t146)/2.0-(t51*t146)/2.0-(t52*t146)/2.0-(t53*t146)/2.0+(t49*t193)/2.0+(t50*t193)/2.0-(t54*t193)/2.0+(a3*mpy6*cos(t30))/4.0-(a3*mpy6*cos(t85))/4.0-(a3*mpy6*cos(t86))/4.0+(a3*mpy6*cos(t87))/4.0+(a3*mpy6*cos(t181))/4.0-(a3*mpy6*cos(t200))/4.0+(a4*mpy6*cos(t199))/4.0-(a3*mpy6*cos(t201))/4.0+(a3*mpy6*cos(t202))/4.0+(a4*mpy6*cos(t203))/4.0-(a4*mpy6*cos(t204))/4.0-(a4*mpy6*cos(t205))/4.0+(a3i*mpy6*cos(t13))/2.0+(a3i*mpy6*cos(t76))/2.0-(a3i*mpy6*cos(t179))/2.0-(a3i*mpy6*cos(t196))/2.0+(d5*mpy6*cos(t194))/2.0+(d5*mpy6*cos(t197))/2.0+(a3*mpy6*sin(t13))/2.0+(a3*mpy6*sin(t76))/2.0+(a3*mpy6*sin(t179))/2.0+(a4*mpy6*sin(t194))/2.0-(a3*mpy6*sin(t196))/2.0-(a4*mpy6*sin(t197))/2.0-(a3i*mpy6*sin(t30))/4.0+(a3i*mpy6*sin(t85))/4.0+(a3i*mpy6*sin(t86))/4.0+(a3i*mpy6*sin(t87))/4.0+(a3i*mpy6*sin(t181))/4.0-(a3i*mpy6*sin(t200))/4.0-(a3i*mpy6*sin(t201))/4.0-(a3i*mpy6*sin(t202))/4.0+(a1*mpy6*cos(q2+q5+q6-t12))/2.0-(d5*mpy6*sin(t199))/4.0+(d5*mpy6*sin(t203))/4.0+(d5*mpy6*sin(t204))/4.0+(d5*mpy6*sin(t205))/4.0+(a2*mpy6*sin(q5+q6-t12+t20))/4.0+(a1*mpy6*cos(q5+q6+t83))/2.0-(a1*mpy6*cos(q5+t40+t83))/2.0-(a1*mpy6*cos(q6+t39+t83))/2.0+(a2*mpy6*sin(q5+q6+t12))/4.0-(a2*mpy6*sin(q5+q6+t84))/4.0-(a2*mpy6*sin(q5+t12+t40))/4.0-(a2*mpy6*sin(q6+t12+t39))/4.0+(a2*mpy6*sin(q5+t40+t84))/4.0+(a2*mpy6*sin(q6+t39+t84))/4.0+(a2*mpy6*sin(t12+t39+t40))/4.0+a1*mass3*t26*2.0+a1*mass4*t26*2.0+a1*mass5*t26*2.0+a1*mass6*t26*2.0+a1*mass4*t151*2.0+a1*mass5*t151*2.0+a1*mass6*t151*2.0-a1*mass4*t156*2.0-a1*mass5*t156*2.0-a1*mass6*t156*2.0+a1*mass5*t165*2.0+a1*mass6*t165*2.0-a1*mass6*t173*2.0+a1*mpx2*t7*2.0+a2*mpx4*t31+a1*mpx3*t81*2.0+a1*mpx4*t136*2.0-a2*mpx4*t140+a2*mpx3*t148+a3*mpx4*t177-a1*mpy2*t2*2.0+a1*mpy3*t91*2.0-a2*mpy3*t145+a3i*mpx4*t180+d5*mass6*t63+(a2*mpy6*cos(q6-t12+t20))/2.0-(mass3*t15*t23)/2.0-(mass4*t15*t23)/2.0-(mass5*t15*t23)/2.0-(mass6*t15*t23)/2.0+mpy6*t6*t32-a1*mpy6*sin(q2+q6-t12)+(a4*mpy6*cos(q5+q6))/2.0-(a2*mpy6*cos(q6+t12))/2.0-(a4*mpy6*cos(q5+t40))/2.0+(a2*mpy6*cos(q6+t84))/2.0-(a2*mpy6*cos(t12+t40))/2.0+a1*mpy6*sin(q6+t83)+a2*a4*mass5*t31+a2*a4*mass6*t31-a2*a4*mass5*t140-a2*a4*mass6*t140+a2*a3*mass4*t148+a2*a3*mass5*t148+a2*a3*mass6*t148+a3*a4*mass5*t177+a3*a4*mass6*t177+a2*a3i*mass4*t145+a2*a3i*mass5*t145+a2*a3i*mass6*t145-a3*a3i*mass4*t149-a3*a3i*mass5*t149-a3*a3i*mass6*t149+a4*a3i*mass5*t180+a4*a3i*mass6*t180+a3i*d5*mass6*t177+a3*mass6*t32*t180+a2*mass6*t32*cos(t84)+a4*mass6*t32*sin(t188); 00632 A0(0,1) = t222; 00633 A0(0,2) = t218; 00634 A0(0,3) = t211; 00635 A0(0,4) = t223; 00636 A0(0,5) = t221; 00637 A0(1,0) = t222; 00638 A0(1,1) = t42*2.0+t43*2.0+t46+t47+t48+t49+t50+t51+t52+t53+t54+t55-t60*2.0-t61*2.0-t62*2.0+t65*2.0+t66*2.0+t67*2.0+t82+t90+t92+t93+t108*2.0+t109*2.0+t115*2.0+t116*2.0+t117*2.0+t118*2.0+t119*2.0-t121*2.0+t128+t133+t135+t138+t142+t143-t150*2.0+t153*2.0+t164+t178-t182*2.0-t183*2.0+t187+mass3*t15+mass4*t15+mass5*t15+mass6*t15; 00639 A0(1,2) = t226; 00640 A0(1,3) = t225; 00641 A0(1,4) = t212; 00642 A0(1,5) = -t44-mpy6*t71+mpy6*t73+t10*t107+t10*t110-t10*t150+t10*t153+mpy6*t6*t10*t32-a2*mpy6*t3*t9*t11-a2*mpy6*t4*t8*t11; 00643 A0(2,0) = t218; 00644 A0(2,1) = t226; 00645 A0(2,2) = t46+t47+t48+t49+t50+t51+t52+t53+t54+t55+t82+t90+t92+t93+t128+t133+t135+t138+t142+t143+t164+t178+t187; 00646 A0(2,3) = t224; 00647 A0(2,4) = t209; 00648 A0(2,5) = t216; 00649 A0(3,0) = t211; 00650 A0(3,1) = t225; 00651 A0(3,2) = t224; 00652 A0(3,3) = t49+t50+t54+t82+t164; 00653 A0(3,4) = t111; 00654 A0(3,5) = t44+t112; 00655 A0(4,0) = t223; 00656 A0(4,1) = t212; 00657 A0(4,2) = t209; 00658 A0(4,3) = t111; 00659 A0(5,0) = t221; 00660 A0(5,1) = -mpy6*(t214+a2*t3*t9*t11+a2*t4*t8*t11+a2*t3*t4*t6*t10-a2*t6*t8*t9*t10); 00661 A0(5,2) = t216; 00662 A0(5,3) = mpy6*(t28+t72); 00663 return A0; 00664 } 00665 00666 00667 00668 // Inertia matrix B 00669 Vector6f ARAP180::gravityVector(Vector6f q){ 00670 00671 Vector6f A0 = Vector6f::Zero(); 00672 float q1 = q[0]; 00673 float q2 = q[1]; 00674 float q3 = q[2]; 00675 float q4 = q[3]; 00676 float q5 = q[4]; 00677 float q6 = q[5]; 00678 00679 float t2 = sin(q2); 00680 float t3 = sin(q6); 00681 float t4 = -q2; 00682 float t5 = -q3; 00683 float t6 = -q4; 00684 float t7 = -q5; 00685 float t8 = -q6; 00686 float t9 = q2+t5; 00687 float t11 = q3+q4+t4; 00688 float t10 = cos(t9); 00689 float t12 = sin(t9); 00690 float t13 = cos(t11); 00691 float t14 = q6+t11; 00692 float t15 = sin(t11); 00693 float t19 = q6+t6+t9; 00694 float t21 = q5+t8+t11; 00695 float t16 = q5+t14; 00696 float t17 = sin(t14); 00697 float t20 = q5+t19; 00698 float t22 = t7+t14; 00699 float t23 = sin(t19); 00700 float t25 = cos(t21); 00701 float t27 = mpx3*t10*9.814; 00702 float t28 = mpy3*t12*9.814; 00703 float t29 = a3*mass4*t10*9.814; 00704 float t30 = a3*mass5*t10*9.814; 00705 float t31 = a3*mass6*t10*9.814; 00706 float t32 = a3i*mass4*t12*9.814; 00707 float t33 = a3i*mass5*t12*9.814; 00708 float t34 = a3i*mass6*t12*9.814; 00709 float t35 = mpx4*t13*9.814; 00710 float t36 = a4*mass5*t13*9.814; 00711 float t37 = a4*mass6*t13*9.814; 00712 float t38 = d5*mass6*t15*9.814; 00713 float t18 = cos(t16); 00714 float t24 = cos(t20); 00715 float t26 = cos(t22); 00716 float t39 = -t38; 00717 float t40 = mpy6*t17*4.907; 00718 float t42 = mpy6*t23*4.907; 00719 float t45 = mpy6*t25*2.4535; 00720 float t41 = mpy6*t18*2.4535; 00721 float t43 = -t42; 00722 float t44 = mpy6*t24*2.4535; 00723 float t46 = mpy6*t26*2.4535; 00724 float t47 = -t45; 00725 float t48 = -t46; 00726 A0(1) = -t27-t28-t29-t30-t31+t32+t33+t34-t35-t36-t37+t38-t40-t41+t42-t44+t45+t46-mpx2*t2*9.814+mpy2*cos(q2)*9.814-a2*mass3*t2*9.814-a2*mass4*t2*9.814-a2*mass5*t2*9.814-a2*mass6*t2*9.814; 00727 A0(2) = t27+t28+t29+t30+t31-t32-t33-t34+t35+t36+t37+t39+t40+t41+t43+t44+t47+t48; 00728 A0(3) = t35+t36+t37+t39+t40+t41+t43+t44+t47+t48; 00729 A0(4) = mpy6*t3*(sin(q5+t6+t9)-sin(q5+t11))*4.907; 00730 A0(5) = mpy6*(t3*t13*9.814-t15*cos(q6)*sin(q5)*9.814); 00731 return A0; 00732 } 00733 00734 00735 Vector6f ARAP180::frictionVector(Vector6f dq){ 00736 00737 Vector6f A0 = Vector6f::Zero(); 00738 float dq1 = dq[0]; 00739 float dq2 = dq[1]; 00740 float dq3 = dq[2]; 00741 float dq4 = dq[3]; 00742 float dq5 = dq[4]; 00743 float dq6 = dq[5]; 00744 00745 A0(0) = Fv1*dq1+Fs1*((dq1/fabs(dq1))); 00746 A0(1) = Fv2*dq2+Fs2*((dq2/fabs(dq2))); 00747 A0(2) = Fv3*dq3+Fs3*((dq3/fabs(dq3))); 00748 A0(3) = Fv4*dq4+Fs4*((dq4/fabs(dq4))); 00749 A0(4) = Fv5*dq5+Fs5*((dq5/fabs(dq5))); 00750 A0(5) = Fv6*dq6+Fs6*((dq6/fabs(dq6))); 00751 return A0; 00752 00753 } 00754 00755 Vector6f ARAP180::stiffnessVector(Vector6f q){ 00756 00757 Vector6f A0 = Vector6f::Zero(); 00758 float q1 = q[0]; 00759 float q2 = q[1]; 00760 float q3 = q[2]; 00761 float q4 = q[3]; 00762 float q5 = q[4]; 00763 float q6 = q[5]; 00764 00765 A0(1) = O2+K2*q2; 00766 A0(2) = O3+K3*q3; 00767 A0(3) = O4+K4*q4; 00768 return A0; 00769 00770 } 00771 00772 /* 00773 Matrix6f ARAP180::coriolisCentrifugalMatrix(Vector6f q, Vector6f dq){ 00774 00775 Matrix6f A0 = Matrix6f::Zero(); 00776 float q1 = q[0]; 00777 float q2 = q[1]; 00778 float q3 = q[2]; 00779 float q4 = q[3]; 00780 float q5 = q[4]; 00781 float q6 = q[5]; 00782 float dq1 = dq[0]; 00783 float dq2 = dq[1]; 00784 float dq3 = dq[2]; 00785 float dq4 = dq[3]; 00786 float dq5 = dq[4]; 00787 float dq6 = dq[5]; 00788 00789 float t2 = cos(q2); 00790 float t3 = cos(q3); 00791 float t4 = cos(q4); 00792 float t5 = cos(q5); 00793 float t6 = cos(q6); 00794 float t7 = sin(q2); 00795 float t8 = sin(q3); 00796 float t9 = sin(q4); 00797 float t10 = sin(q5); 00798 float t11 = sin(q6); 00799 float t12 = q3+q4; 00800 float t13 = q4+q6; 00801 float t14 = q5+q6; 00802 float t15 = a2*a2; 00803 float t16 = a3*a3; 00804 float t17 = a4*a4; 00805 float t18 = a3i*a3i; 00806 float t19 = d5*d5; 00807 float t20 = q2*2.0; 00808 float t21 = q3*2.0; 00809 float t22 = q4*2.0; 00810 float t36 = -q2; 00811 float t38 = -q3; 00812 float t40 = -q4; 00813 float t42 = -q5; 00814 float t43 = -q6; 00815 float t23 = cos(t20); 00816 float t24 = cos(t21); 00817 float t25 = cos(t22); 00818 float t26 = sin(t20); 00819 float t27 = sin(t21); 00820 float t28 = sin(t22); 00821 float t29 = cos(t12); 00822 float t30 = cos(t13); 00823 float t31 = q6+t12; 00824 float t32 = q5+t13; 00825 float t33 = sin(t12); 00826 float t34 = sin(t13); 00827 float t35 = sin(t14); 00828 float t37 = -t20; 00829 float t39 = -t21; 00830 float t41 = -t22; 00831 float t45 = t12+t14; 00832 float t48 = a4*dq4*t5; 00833 float t49 = d5*dq2*t11*2.0; 00834 float t50 = d5*dq3*t11*2.0; 00835 float t51 = d5*dq4*t11*2.0; 00836 float t52 = dq6*t5*t6; 00837 float t54 = dq5*t10*t11; 00838 float t55 = q2+t38; 00839 float t56 = q4+t43; 00840 float t57 = q5+t43; 00841 float t61 = t12+t36; 00842 float t63 = q3+q5+t36; 00843 float t65 = t12+t43; 00844 float t67 = t13+t42; 00845 float t68 = t14+t40; 00846 float t72 = a3i*dq2*mpx4*t4*2.0; 00847 float t73 = a3i*dq3*mpx4*t4*2.0; 00848 float t74 = a3i*dq4*mpx4*t4*2.0; 00849 float t75 = a3*dq2*mpx4*t9*2.0; 00850 float t76 = a3*dq3*mpx4*t9*2.0; 00851 float t77 = a3*dq4*mpx4*t9*2.0; 00852 float t81 = d5*dq6*mpy6*t11*2.0; 00853 float t82 = t20+t38; 00854 float t98 = d5*dq2*mpy6*t11*-2.0; 00855 float t103 = q3+t14+t36; 00856 float t116 = a4*a3i*dq2*mass5*t4*2.0; 00857 float t117 = a4*a3i*dq2*mass6*t4*2.0; 00858 float t118 = a4*a3i*dq3*mass5*t4*2.0; 00859 float t119 = a4*a3i*dq3*mass6*t4*2.0; 00860 float t120 = a4*a3i*dq4*mass5*t4*2.0; 00861 float t121 = a4*a3i*dq4*mass6*t4*2.0; 00862 float t122 = a3*d5*dq2*mass6*t4*2.0; 00863 float t123 = a3*d5*dq3*mass6*t4*2.0; 00864 float t124 = a3*d5*dq4*mass6*t4*2.0; 00865 float t125 = a3*a4*dq2*mass5*t9*2.0; 00866 float t126 = a3*a4*dq2*mass6*t9*2.0; 00867 float t127 = a3*a4*dq3*mass5*t9*2.0; 00868 float t128 = a3*a4*dq3*mass6*t9*2.0; 00869 float t129 = a3*a4*dq4*mass5*t9*2.0; 00870 float t130 = a3*a4*dq4*mass6*t9*2.0; 00871 float t131 = a3i*d5*dq2*mass6*t9*2.0; 00872 float t132 = a3i*d5*dq3*mass6*t9*2.0; 00873 float t133 = a3i*d5*dq4*mass6*t9*2.0; 00874 float t134 = a4*dq2*t6*t10*2.0; 00875 float t135 = a4*dq3*t6*t10*2.0; 00876 float t136 = a4*dq4*t6*t10*2.0; 00877 float t137 = a2*dq2*mpx4*t3*t4*2.0; 00878 float t138 = a2*dq3*mpx4*t3*t4*2.0; 00879 float t139 = a2*dq4*mpx4*t3*t4*2.0; 00880 float t140 = a3*dq2*mpy6*t4*t6*2.0; 00881 float t141 = a3*dq3*mpy6*t4*t6*2.0; 00882 float t142 = a3*dq4*mpy6*t4*t6*2.0; 00883 float t143 = d5*dq5*mpy6*t5*t6*2.0; 00884 float t145 = a4*dq2*mpy6*t5*t11*2.0; 00885 float t147 = a4*dq3*mpy6*t5*t11*2.0; 00886 float t151 = a4*dq5*mpy6*t5*t11*2.0; 00887 float t152 = a4*dq6*mpy6*t6*t10*2.0; 00888 float t153 = a3i*dq2*mpy6*t4*t11*2.0; 00889 float t154 = a3i*dq2*mpy6*t6*t9*2.0; 00890 float t155 = a3i*dq3*mpy6*t4*t11*2.0; 00891 float t156 = a3i*dq3*mpy6*t6*t9*2.0; 00892 float t157 = a3i*dq4*mpy6*t4*t11*2.0; 00893 float t158 = a3i*dq4*mpy6*t6*t9*2.0; 00894 float t159 = a3i*dq6*mpy6*t4*t11*2.0; 00895 float t160 = a2*dq2*mpx4*t8*t9*2.0; 00896 float t161 = a2*dq3*mpx4*t8*t9*2.0; 00897 float t162 = a2*dq4*mpx4*t8*t9*2.0; 00898 float t163 = a3*dq2*mpy6*t9*t11*2.0; 00899 float t164 = a3*dq3*mpy6*t9*t11*2.0; 00900 float t165 = a3*dq4*mpy6*t9*t11*2.0; 00901 float t166 = a3*dq6*mpy6*t9*t11*2.0; 00902 float t175 = a3i*dq1*t2*t3*t10; 00903 float t176 = a3*dq1*t2*t8*t10; 00904 float t177 = a3*dq1*t3*t7*t10; 00905 float t188 = a3i*dq1*t7*t8*t10; 00906 float t215 = a4*dq3*mpy6*t6*t10*-2.0; 00907 float t217 = a4*dq4*mpy6*t6*t10*-2.0; 00908 float t229 = a2*a4*dq2*mass5*t3*t4*2.0; 00909 float t230 = a2*a4*dq2*mass6*t3*t4*2.0; 00910 float t231 = a2*a4*dq3*mass5*t3*t4*2.0; 00911 float t232 = a2*a4*dq3*mass6*t3*t4*2.0; 00912 float t233 = a2*a4*dq4*mass5*t3*t4*2.0; 00913 float t234 = a2*a4*dq4*mass6*t3*t4*2.0; 00914 float t235 = a2*d5*dq2*mass6*t3*t9*2.0; 00915 float t236 = a2*d5*dq2*mass6*t4*t8*2.0; 00916 float t237 = a2*d5*dq3*mass6*t3*t9*2.0; 00917 float t238 = a2*d5*dq3*mass6*t4*t8*2.0; 00918 float t239 = a2*d5*dq4*mass6*t3*t9*2.0; 00919 float t240 = a2*d5*dq4*mass6*t4*t8*2.0; 00920 float t241 = a2*a4*dq2*mass5*t8*t9*2.0; 00921 float t242 = a2*a4*dq2*mass6*t8*t9*2.0; 00922 float t243 = a2*a4*dq3*mass5*t8*t9*2.0; 00923 float t244 = a2*a4*dq3*mass6*t8*t9*2.0; 00924 float t245 = a2*a4*dq4*mass5*t8*t9*2.0; 00925 float t246 = a2*a4*dq4*mass6*t8*t9*2.0; 00926 float t250 = a3i*dq5*mpy6*t4*t5*t6*2.0; 00927 float t252 = a2*dq2*mpy6*t3*t6*t9*2.0; 00928 float t253 = a2*dq2*mpy6*t4*t6*t8*2.0; 00929 float t254 = a2*dq3*mpy6*t3*t6*t9*2.0; 00930 float t255 = a2*dq3*mpy6*t4*t6*t8*2.0; 00931 float t256 = a2*dq4*mpy6*t3*t6*t9*2.0; 00932 float t257 = a2*dq4*mpy6*t4*t6*t8*2.0; 00933 float t258 = a3*dq2*mpy6*t4*t5*t11*2.0; 00934 float t260 = a2*dq6*mpy6*t3*t4*t11*2.0; 00935 float t261 = a3*dq3*mpy6*t4*t5*t11*2.0; 00936 float t263 = a3*dq4*mpy6*t4*t5*t11*2.0; 00937 float t265 = a3*dq5*mpy6*t4*t5*t11*2.0; 00938 float t266 = a3*dq5*mpy6*t5*t6*t9*2.0; 00939 float t267 = a3*dq6*mpy6*t4*t6*t10*2.0; 00940 float t270 = a3i*dq2*mpy6*t5*t9*t11*2.0; 00941 float t273 = a3i*dq3*mpy6*t5*t9*t11*2.0; 00942 float t276 = a3i*dq4*mpy6*t5*t9*t11*2.0; 00943 float t278 = a3i*dq5*mpy6*t5*t9*t11*2.0; 00944 float t279 = a3i*dq6*mpy6*t6*t9*t10*2.0; 00945 float t281 = a2*dq6*mpy6*t8*t9*t11*2.0; 00946 float t287 = d5*dq1*t2*t3*t4*t10; 00947 float t288 = a4*dq1*t2*t3*t9*t10; 00948 float t289 = a4*dq1*t2*t4*t8*t10; 00949 float t290 = a4*dq1*t3*t4*t7*t10; 00950 float t291 = d5*dq1*t2*t8*t9*t10; 00951 float t292 = d5*dq1*t3*t7*t9*t10; 00952 float t293 = d5*dq1*t4*t7*t8*t10; 00953 float t298 = a4*dq1*t7*t8*t9*t10; 00954 float t306 = q2+q5-t12; 00955 float t307 = q2+q6-t12; 00956 float t310 = t12-t14; 00957 float t315 = a3i*dq4*mpy6*t4*t10*t11*-2.0; 00958 float t319 = a3*dq4*mpy6*t9*t10*t11*-2.0; 00959 float t335 = a3i*dq1*t2*t3*t5*t6*2.0; 00960 float t336 = a3*dq1*t2*t5*t6*t8*2.0; 00961 float t337 = a3*dq1*t3*t5*t6*t7*2.0; 00962 float t338 = a3i*dq1*t5*t6*t7*t8*2.0; 00963 float t344 = a2*dq2*mpy6*t3*t4*t10*t11*2.0; 00964 float t345 = a2*dq3*mpy6*t3*t4*t10*t11*2.0; 00965 float t346 = a2*dq4*mpy6*t3*t4*t10*t11*2.0; 00966 float t347 = a2*dq5*mpy6*t3*t5*t9*t11*2.0; 00967 float t348 = a2*dq5*mpy6*t4*t5*t8*t11*2.0; 00968 float t349 = a2*dq6*mpy6*t3*t6*t9*t10*2.0; 00969 float t350 = a2*dq6*mpy6*t4*t6*t8*t10*2.0; 00970 float t360 = a2*dq2*mpy6*t8*t9*t10*t11*2.0; 00971 float t361 = a2*dq3*mpy6*t8*t9*t10*t11*2.0; 00972 float t362 = a2*dq4*mpy6*t8*t9*t10*t11*2.0; 00973 float t364 = q6-t12+t20; 00974 float t398 = d5*dq1*t2*t3*t4*t5*t6*2.0; 00975 float t399 = a4*dq1*t2*t3*t5*t6*t9*2.0; 00976 float t400 = a4*dq1*t2*t4*t5*t6*t8*2.0; 00977 float t401 = a4*dq1*t3*t4*t5*t6*t7*2.0; 00978 float t403 = d5*dq1*t2*t5*t6*t8*t9*2.0; 00979 float t404 = d5*dq1*t3*t5*t6*t7*t9*2.0; 00980 float t405 = d5*dq1*t4*t5*t6*t7*t8*2.0; 00981 float t408 = a4*dq1*t5*t6*t7*t8*t9*2.0; 00982 float t474 = a4*dq1*mpy6*t3*t4*t5*t6*t7*-2.0; 00983 float t481 = d5*dq1*mpy6*t2*t5*t6*t8*t9*-2.0; 00984 float t44 = cos(t32); 00985 float t46 = sin(t31); 00986 float t47 = sin(t32); 00987 float t53 = cos(t45); 00988 float t58 = cos(t55); 00989 float t59 = cos(t56); 00990 float t60 = -t49; 00991 float t62 = q5+t55; 00992 float t64 = t12+t37; 00993 float t66 = q5+t56; 00994 float t69 = sin(t55); 00995 float t70 = sin(t56); 00996 float t71 = sin(t57); 00997 float t78 = mpy6*t49; 00998 float t79 = mpy6*t50; 00999 float t80 = mpy6*t51; 01000 float t83 = t20+t39; 01001 float t84 = a2*dq1*mpx4*t29; 01002 float t85 = -t72; 01003 float t86 = -t73; 01004 float t87 = -t74; 01005 float t88 = cos(t61); 01006 float t90 = cos(t63); 01007 float t93 = cos(t67); 01008 float t94 = cos(t68); 01009 float t95 = -t75; 01010 float t96 = -t76; 01011 float t97 = -t77; 01012 float t99 = -t81; 01013 float t100 = q5+t61; 01014 float t101 = t31+t36; 01015 float t102 = t14+t55; 01016 float t104 = t31+t37; 01017 float t105 = t12+t57; 01018 float t106 = t31+t42; 01019 float t107 = sin(t61); 01020 float t109 = sin(t63); 01021 float t111 = sin(t65); 01022 float t113 = sin(t67); 01023 float t114 = sin(t68); 01024 float t115 = -t54; 01025 float t144 = d5*mpy6*t52*2.0; 01026 float t146 = mpy6*t134; 01027 float t148 = mpy6*t135; 01028 float t149 = mpy6*t11*t48*2.0; 01029 float t150 = mpy6*t136; 01030 float t167 = cos(t82); 01031 float t170 = sin(t82); 01032 float t172 = a2*a4*dq1*mass5*t29; 01033 float t173 = a2*a4*dq1*mass6*t29; 01034 float t174 = a2*d5*dq1*mass6*t33; 01035 float t179 = -t116; 01036 float t180 = -t117; 01037 float t181 = -t118; 01038 float t182 = -t119; 01039 float t183 = -t120; 01040 float t184 = -t121; 01041 float t185 = -t122; 01042 float t186 = -t123; 01043 float t187 = -t124; 01044 float t190 = -t125; 01045 float t191 = -t126; 01046 float t192 = -t127; 01047 float t193 = -t128; 01048 float t194 = -t129; 01049 float t195 = -t130; 01050 float t196 = -t133; 01051 float t197 = -t135; 01052 float t198 = -t136; 01053 float t202 = cos(t103); 01054 float t205 = t36+t45; 01055 float t206 = t37+t45; 01056 float t209 = sin(t103); 01057 float t212 = -t142; 01058 float t214 = -t147; 01059 float t218 = -t151; 01060 float t219 = -t152; 01061 float t220 = -t154; 01062 float t221 = -t156; 01063 float t222 = -t158; 01064 float t223 = -t159; 01065 float t226 = -t160; 01066 float t227 = -t166; 01067 float t251 = a3i*mpy6*t4*t52*2.0; 01068 float t259 = t10*t140; 01069 float t262 = t10*t141; 01070 float t264 = t10*t142; 01071 float t268 = a3*mpy6*t9*t52*2.0; 01072 float t269 = t10*t153; 01073 float t271 = t10*t154; 01074 float t272 = t10*t155; 01075 float t274 = t10*t156; 01076 float t275 = t10*t157; 01077 float t277 = t10*t158; 01078 float t280 = t10*t163; 01079 float t282 = t10*t164; 01080 float t283 = t10*t165; 01081 float t295 = -t235; 01082 float t296 = -t236; 01083 float t297 = -t175; 01084 float t299 = -t241; 01085 float t300 = -t242; 01086 float t301 = -t177; 01087 float t304 = -t188; 01088 float t308 = t55+t57; 01089 float t309 = q6+t42+t55; 01090 float t312 = -t260; 01091 float t313 = -t265; 01092 float t314 = -t267; 01093 float t316 = -t278; 01094 float t317 = -t279; 01095 float t322 = cos(t306); 01096 float t323 = cos(t307); 01097 float t326 = cos(t310); 01098 float t327 = q2-t310; 01099 float t328 = t57+t61; 01100 float t332 = sin(t306); 01101 float t351 = mpy6*t11*t175*2.0; 01102 float t352 = mpy6*t338; 01103 float t356 = mpy6*t11*t176*2.0; 01104 float t357 = mpy6*t11*t177*2.0; 01105 float t363 = mpy6*t11*t188*2.0; 01106 float t365 = q6-t12+t82; 01107 float t366 = -t12+t364; 01108 float t369 = -t335; 01109 float t372 = -t337; 01110 float t373 = -t290; 01111 float t374 = -t338; 01112 float t376 = -t291; 01113 float t387 = mpy6*t335; 01114 float t388 = mpy6*t336; 01115 float t389 = mpy6*t337; 01116 float t393 = -t344; 01117 float t411 = t20-t310; 01118 float t414 = t82-t310; 01119 float t416 = sin(t364); 01120 float t419 = mpy6*t11*t298*2.0; 01121 float t434 = -t401; 01122 float t445 = -t403; 01123 float t449 = mpy6*t398; 01124 float t450 = mpy6*t399; 01125 float t451 = mpy6*t400; 01126 float t452 = mpy6*t401; 01127 float t454 = mpy6*t11*t287*2.0; 01128 float t455 = mpy6*t403; 01129 float t456 = mpy6*t404; 01130 float t457 = mpy6*t405; 01131 float t459 = mpy6*t11*t288*2.0; 01132 float t460 = mpy6*t11*t289*2.0; 01133 float t461 = mpy6*t11*t290*2.0; 01134 float t462 = mpy6*t408; 01135 float t463 = mpy6*t11*t291*2.0; 01136 float t464 = mpy6*t11*t292*2.0; 01137 float t465 = mpy6*t11*t293*2.0; 01138 float t89 = cos(t62); 01139 float t91 = cos(t64); 01140 float t92 = cos(t66); 01141 float t108 = sin(t62); 01142 float t110 = sin(t64); 01143 float t112 = sin(t66); 01144 float t168 = cos(t83); 01145 float t169 = q3+t64; 01146 float t171 = sin(t83); 01147 float t178 = a3i*t58; 01148 float t189 = a3*t69; 01149 float t199 = cos(t100); 01150 float t200 = cos(t101); 01151 float t201 = cos(t102); 01152 float t203 = cos(t105); 01153 float t204 = cos(t106); 01154 float t207 = sin(t100); 01155 float t208 = sin(t102); 01156 float t210 = sin(t104); 01157 float t211 = d5*t88; 01158 float t213 = a4*t107; 01159 float t216 = -t149; 01160 float t224 = cos(t205); 01161 float t225 = cos(t206); 01162 float t228 = sin(t205); 01163 float t248 = q3+t104; 01164 float t285 = q3+t206; 01165 float t294 = -t174; 01166 float t303 = t12+t64; 01167 float t320 = t31+t64; 01168 float t324 = cos(t308); 01169 float t325 = cos(t309); 01170 float t329 = t42+t101; 01171 float t330 = t57+t64; 01172 float t331 = t42+t104; 01173 float t333 = sin(t308); 01174 float t334 = sin(t309); 01175 float t339 = a1*dq1*mpy3*t58*2.0; 01176 float t340 = a1*dq1*mpx3*t69*2.0; 01177 float t342 = (a2*dq1*mpy6*t46)/2.0; 01178 float t358 = a1*dq1*mpx4*t107*2.0; 01179 float t359 = (a2*dq1*mpy6*t53)/4.0; 01180 float t377 = t45+t64; 01181 float t379 = cos(t327); 01182 float t380 = cos(t328); 01183 float t384 = sin(t327); 01184 float t385 = sin(t328); 01185 float t409 = cos(t365); 01186 float t410 = cos(t366); 01187 float t415 = -t12+t411; 01188 float t417 = sin(t365); 01189 float t418 = sin(t366); 01190 float t420 = cos(t411); 01191 float t423 = cos(t414); 01192 float t425 = (a2*dq1*mpy6*t111)/2.0; 01193 float t428 = sin(t414); 01194 float t433 = t52+t115; 01195 float t466 = -t419; 01196 float t467 = t64+t105; 01197 float t468 = t64+t106; 01198 float t478 = a1*dq1*mpy6*t323; 01199 float t480 = -t454; 01200 float t482 = -t459; 01201 float t483 = -t460; 01202 float t484 = -t464; 01203 float t485 = -t465; 01204 float t519 = (a2*dq1*mpy6*t326)/4.0; 01205 float t545 = (a2*dq1*mpy6*t416)/2.0; 01206 float t247 = cos(t169); 01207 float t249 = sin(t169); 01208 float t284 = cos(t248); 01209 float t286 = sin(t248); 01210 float t302 = -t178; 01211 float t305 = -t189; 01212 float t311 = a2*dq1*mpx4*t91; 01213 float t318 = cos(t303); 01214 float t321 = sin(t303); 01215 float t341 = cos(t285); 01216 float t343 = sin(t285); 01217 float t353 = a1*dq1*mass4*t189*2.0; 01218 float t354 = a1*dq1*mass5*t189*2.0; 01219 float t355 = a1*dq1*mass6*t189*2.0; 01220 float t367 = a2*a4*dq1*mass5*t91; 01221 float t368 = a2*a4*dq1*mass6*t91; 01222 float t370 = a1*dq1*mpy6*t200; 01223 float t371 = a2*d5*dq1*mass6*t110; 01224 float t375 = cos(t320); 01225 float t378 = sin(t320); 01226 float t381 = cos(t329); 01227 float t382 = cos(t330); 01228 float t383 = cos(t331); 01229 float t386 = sin(t329); 01230 float t390 = a1*dq1*mass4*t178*2.0; 01231 float t391 = a1*dq1*mass5*t178*2.0; 01232 float t392 = a1*dq1*mass6*t178*2.0; 01233 float t395 = cos(t377); 01234 float t396 = -t358; 01235 float t397 = sin(t377); 01236 float t402 = a1*dq1*mass6*t211*2.0; 01237 float t406 = a1*dq1*mass5*t213*2.0; 01238 float t407 = a1*dq1*mass6*t213*2.0; 01239 float t412 = t57+t169; 01240 float t413 = t42+t248; 01241 float t424 = cos(t415); 01242 float t429 = sin(t415); 01243 float t430 = a3*a3i*dq1*mass4*t168*2.0; 01244 float t431 = a3*a3i*dq1*mass5*t168*2.0; 01245 float t432 = a3*a3i*dq1*mass6*t168*2.0; 01246 float t435 = dq1*mass4*t16*t171; 01247 float t436 = dq1*mass5*t16*t171; 01248 float t437 = dq1*mass6*t16*t171; 01249 float t438 = dq1*mass4*t18*t171; 01250 float t439 = dq1*mass5*t18*t171; 01251 float t440 = dq1*mass6*t18*t171; 01252 float t469 = (a2*dq1*mpy6*t203)/4.0; 01253 float t470 = (a2*dq1*mpy6*t204)/4.0; 01254 float t471 = (a2*dq1*mpy6*t210)/2.0; 01255 float t488 = cos(t467); 01256 float t489 = cos(t468); 01257 float t492 = sin(t467); 01258 float t493 = sin(t468); 01259 float t495 = (a2*dq1*mpy6*t225)/4.0; 01260 float t496 = (d5*dq2*mpy6*t224)/2.0; 01261 float t497 = (d5*dq3*mpy6*t224)/2.0; 01262 float t498 = (d5*dq4*mpy6*t224)/2.0; 01263 float t499 = (a1*dq1*mpy6*t228)/2.0; 01264 float t500 = (a4*dq2*mpy6*t228)/2.0; 01265 float t501 = (a4*dq3*mpy6*t228)/2.0; 01266 float t502 = (a4*dq4*mpy6*t228)/2.0; 01267 float t506 = a3*dq1*mpy6*t409; 01268 float t507 = a4*dq1*mpy6*t410; 01269 float t509 = a3i*dq1*mpy6*t417; 01270 float t510 = d5*dq1*mpy6*t418; 01271 float t524 = (d5*dq2*mpy6*t379)/2.0; 01272 float t525 = (d5*dq2*mpy6*t380)/2.0; 01273 float t527 = (d5*dq3*mpy6*t379)/2.0; 01274 float t528 = (d5*dq3*mpy6*t380)/2.0; 01275 float t530 = (d5*dq4*mpy6*t379)/2.0; 01276 float t531 = (d5*dq4*mpy6*t380)/2.0; 01277 float t533 = (a1*dq1*mpy6*t384)/2.0; 01278 float t534 = (a1*dq1*mpy6*t385)/2.0; 01279 float t536 = (a4*dq2*mpy6*t384)/2.0; 01280 float t537 = (a4*dq2*mpy6*t385)/2.0; 01281 float t539 = (a4*dq3*mpy6*t384)/2.0; 01282 float t540 = (a4*dq3*mpy6*t385)/2.0; 01283 float t542 = (a4*dq4*mpy6*t384)/2.0; 01284 float t543 = (a4*dq4*mpy6*t385)/2.0; 01285 float t551 = (a2*dq1*mpy6*t420)/4.0; 01286 float t554 = (a3i*dq1*mpy6*t423)/2.0; 01287 float t559 = (a3*dq1*mpy6*t428)/2.0; 01288 float t394 = -t311; 01289 float t421 = cos(t412); 01290 float t422 = cos(t413); 01291 float t426 = sin(t412); 01292 float t427 = sin(t413); 01293 float t441 = a3i*dq1*mpx4*t247*2.0; 01294 float t442 = -t367; 01295 float t443 = -t368; 01296 float t444 = -t402; 01297 float t446 = a3*dq1*mpx4*t249*2.0; 01298 float t447 = -t406; 01299 float t448 = -t407; 01300 float t453 = a3*dq1*mpy6*t284; 01301 float t458 = a3i*dq1*mpy6*t286; 01302 float t472 = a4*a3i*dq1*mass5*t247*2.0; 01303 float t473 = a4*a3i*dq1*mass6*t247*2.0; 01304 float t475 = a3*d5*dq1*mass6*t247*2.0; 01305 float t476 = a3*a4*dq1*mass5*t249*2.0; 01306 float t477 = a3*a4*dq1*mass6*t249*2.0; 01307 float t479 = a3i*d5*dq1*mass6*t249*2.0; 01308 float t486 = a4*dq1*mpy6*t375; 01309 float t487 = d5*dq1*mpy6*t378; 01310 float t490 = -t469; 01311 float t491 = -t470; 01312 float t494 = -t471; 01313 float t503 = a4*d5*dq1*mass6*t318*2.0; 01314 float t504 = dq1*mass5*t17*t321; 01315 float t505 = dq1*mass6*t17*t321; 01316 float t508 = dq1*mass6*t19*t321; 01317 float t511 = -t495; 01318 float t512 = -t496; 01319 float t513 = -t499; 01320 float t514 = -t500; 01321 float t516 = (a3i*dq1*mpy6*t341)/2.0; 01322 float t518 = (a3*dq1*mpy6*t343)/2.0; 01323 float t522 = (a2*dq1*mpy6*t382)/4.0; 01324 float t523 = (a2*dq1*mpy6*t383)/4.0; 01325 float t526 = (d5*dq2*mpy6*t381)/2.0; 01326 float t529 = (d5*dq3*mpy6*t381)/2.0; 01327 float t532 = (d5*dq4*mpy6*t381)/2.0; 01328 float t535 = (a1*dq1*mpy6*t386)/2.0; 01329 float t538 = (a4*dq2*mpy6*t386)/2.0; 01330 float t541 = (a4*dq3*mpy6*t386)/2.0; 01331 float t544 = (a4*dq4*mpy6*t386)/2.0; 01332 float t547 = -t536; 01333 float t549 = (d5*dq1*mpy6*t395)/2.0; 01334 float t550 = (a4*dq1*mpy6*t397)/2.0; 01335 float t556 = (d5*dq1*mpy6*t424)/2.0; 01336 float t561 = (a4*dq1*mpy6*t429)/2.0; 01337 float t562 = -t551; 01338 float t564 = (d5*dq1*mpy6*t488)/2.0; 01339 float t565 = (d5*dq1*mpy6*t489)/2.0; 01340 float t566 = (a4*dq1*mpy6*t492)/2.0; 01341 float t567 = (a4*dq1*mpy6*t493)/2.0; 01342 float t515 = -t503; 01343 float t517 = -t487; 01344 float t520 = -t504; 01345 float t521 = -t505; 01346 float t546 = -t526; 01347 float t548 = -t538; 01348 float t552 = (a3i*dq1*mpy6*t421)/2.0; 01349 float t553 = (a3i*dq1*mpy6*t422)/2.0; 01350 float t555 = -t549; 01351 float t557 = (a3*dq1*mpy6*t426)/2.0; 01352 float t558 = (a3*dq1*mpy6*t427)/2.0; 01353 float t560 = -t550; 01354 float t563 = -t556; 01355 A0(0,0) = a1*dq2*mass4*t178*-2.0-a1*dq2*mass5*t178*2.0+a1*dq3*mass4*t178*2.0-a1*dq2*mass6*t178*2.0+a1*dq3*mass5*t178*2.0+a1*dq3*mass6*t178*2.0-a1*dq2*mass4*t189*2.0-a1*dq2*mass5*t189*2.0+a1*dq3*mass4*t189*2.0-a1*dq2*mass6*t189*2.0+a1*dq3*mass5*t189*2.0+a1*dq3*mass6*t189*2.0+a1*dq2*mass6*t211*2.0+a1*dq2*mass5*t213*2.0-a1*dq3*mass6*t211*2.0+a1*dq2*mass6*t213*2.0-a1*dq3*mass5*t213*2.0-a1*dq4*mass6*t211*2.0-a1*dq3*mass6*t213*2.0-a1*dq4*mass5*t213*2.0-a1*dq4*mass6*t213*2.0+a1*dq2*mpx2*t2*2.0+a2*dq3*mpx3*t3-a3*dq4*mpx4*t9+a2*dq3*mpx4*t29+a2*dq4*mpx4*t29-a1*dq2*mpx3*t69*2.0+a1*dq3*mpx3*t69*2.0+a2*dq2*mpx4*t91*2.0-a2*dq3*mpx4*t91-a2*dq4*mpx4*t91+a1*dq2*mpx4*t107*2.0-a1*dq3*mpx4*t107*2.0-a1*dq4*mpx4*t107*2.0+a2*dq2*mpx3*t167*2.0-a2*dq3*mpx3*t167+a3*dq2*mpx4*t249*2.0-a3*dq3*mpx4*t249*2.0-a3*dq4*mpx4*t249+a1*dq2*mpy2*t7*2.0-a2*dq3*mpy3*t8+(a3*dq4*mpy6*t30)/2.0+(a3*dq6*mpy6*t30)/2.0-(a4*dq5*mpy6*t35)/2.0-(a4*dq6*mpy6*t35)/2.0+(a2*dq3*mpy6*t46)/2.0+(a2*dq4*mpy6*t46)/2.0+(a2*dq6*mpy6*t46)/2.0-(a3*dq4*mpy6*t47)/4.0-(a3*dq5*mpy6*t47)/4.0-(a3*dq6*mpy6*t47)/4.0+a1*dq2*mpy3*t58*2.0+(a2*dq3*mpy6*t53)/4.0-a1*dq3*mpy3*t58*2.0+(a2*dq4*mpy6*t53)/4.0+(a2*dq5*mpy6*t53)/4.0+(a2*dq6*mpy6*t53)/4.0+(a3*dq4*mpy6*t59)/2.0-(a3*dq6*mpy6*t59)/2.0+(a4*dq5*mpy6*t71)/2.0-(a4*dq6*mpy6*t71)/2.0+(a2*dq3*mpy6*t111)/2.0+(a2*dq4*mpy6*t111)/2.0-(a2*dq6*mpy6*t111)/2.0+(a3*dq4*mpy6*t112)/4.0+(a3*dq4*mpy6*t113)/4.0+(a3*dq5*mpy6*t112)/4.0+(a3*dq4*mpy6*t114)/4.0-(a3*dq5*mpy6*t113)/4.0-(a3*dq6*mpy6*t112)/4.0-(a3*dq5*mpy6*t114)/4.0+(a3*dq6*mpy6*t113)/4.0-(a3*dq6*mpy6*t114)/4.0+a2*dq2*mpy3*t170*2.0-a2*dq3*mpy3*t170-a1*dq2*mpy6*t200+a1*dq3*mpy6*t200+a1*dq4*mpy6*t200+a1*dq6*mpy6*t200-(a2*dq3*mpy6*t203)/4.0-(a2*dq3*mpy6*t204)/4.0-(a2*dq4*mpy6*t203)/4.0-(a2*dq4*mpy6*t204)/4.0-(a2*dq5*mpy6*t203)/4.0+(a2*dq5*mpy6*t204)/4.0+(a2*dq6*mpy6*t203)/4.0-(a2*dq6*mpy6*t204)/4.0+a2*dq2*mpy6*t210-(a2*dq3*mpy6*t210)/2.0-(a2*dq4*mpy6*t210)/2.0-(a2*dq6*mpy6*t210)/2.0+(a2*dq2*mpy6*t225)/2.0-(a2*dq3*mpy6*t225)/4.0+(a1*dq2*mpy6*t228)/2.0-(a2*dq4*mpy6*t225)/4.0-(a1*dq3*mpy6*t228)/2.0-(a2*dq5*mpy6*t225)/4.0-(a1*dq4*mpy6*t228)/2.0-(a2*dq6*mpy6*t225)/4.0-(a1*dq5*mpy6*t228)/2.0-(a1*dq6*mpy6*t228)/2.0-a3*dq2*mpy6*t284+a3*dq3*mpy6*t284+(a3*dq4*mpy6*t284)/2.0+(a3*dq6*mpy6*t284)/2.0-a1*dq2*mpy6*t323+a1*dq3*mpy6*t323+a1*dq4*mpy6*t323-a1*dq6*mpy6*t323+(a2*dq3*mpy6*t326)/4.0+(a2*dq4*mpy6*t326)/4.0-(a2*dq5*mpy6*t326)/4.0-(a2*dq6*mpy6*t326)/4.0+(a3*dq2*mpy6*t343)/2.0-(a3*dq3*mpy6*t343)/2.0-(a3*dq4*mpy6*t343)/4.0-(a3*dq5*mpy6*t343)/4.0-(a3*dq6*mpy6*t343)/4.0-a4*dq2*mpy6*t375+a4*dq3*mpy6*t375+a4*dq4*mpy6*t375+(a4*dq6*mpy6*t375)/2.0-(a2*dq2*mpy6*t382)/2.0-(a1*dq2*mpy6*t384)/2.0-(a2*dq2*mpy6*t383)/2.0+(a2*dq3*mpy6*t382)/4.0-(a1*dq2*mpy6*t385)/2.0+(a1*dq3*mpy6*t384)/2.0+(a2*dq3*mpy6*t383)/4.0+(a2*dq4*mpy6*t382)/4.0-(a1*dq2*mpy6*t386)/2.0+(a1*dq3*mpy6*t385)/2.0+(a1*dq4*mpy6*t384)/2.0+(a2*dq4*mpy6*t383)/4.0+(a2*dq5*mpy6*t382)/4.0+(a1*dq3*mpy6*t386)/2.0+(a1*dq4*mpy6*t385)/2.0-(a1*dq5*mpy6*t384)/2.0-(a2*dq5*mpy6*t383)/4.0-(a2*dq6*mpy6*t382)/4.0+(a1*dq4*mpy6*t386)/2.0+(a1*dq5*mpy6*t385)/2.0-(a1*dq6*mpy6*t384)/2.0+(a2*dq6*mpy6*t383)/4.0-(a1*dq5*mpy6*t386)/2.0-(a1*dq6*mpy6*t385)/2.0+(a1*dq6*mpy6*t386)/2.0+(a4*dq2*mpy6*t397)/2.0-(a4*dq3*mpy6*t397)/2.0-(a4*dq4*mpy6*t397)/2.0-(a4*dq5*mpy6*t397)/4.0-(a4*dq6*mpy6*t397)/4.0-a3*dq2*mpy6*t409+a3*dq3*mpy6*t409+(a3*dq4*mpy6*t409)/2.0-a4*dq2*mpy6*t410+a4*dq3*mpy6*t410-(a3*dq6*mpy6*t409)/2.0+a4*dq4*mpy6*t410-a2*dq2*mpy6*t416-(a4*dq6*mpy6*t410)/2.0+(a2*dq3*mpy6*t416)/2.0+(a2*dq4*mpy6*t416)/2.0+(a2*dq2*mpy6*t420)/2.0-(a2*dq6*mpy6*t416)/2.0-(a2*dq3*mpy6*t420)/4.0-(a2*dq4*mpy6*t420)/4.0+(a2*dq5*mpy6*t420)/4.0+(a2*dq6*mpy6*t420)/4.0-(a3*dq2*mpy6*t426)/2.0-(a3*dq2*mpy6*t427)/2.0+(a3*dq3*mpy6*t426)/2.0-(a3*dq2*mpy6*t428)/2.0+(a3*dq3*mpy6*t427)/2.0+(a3*dq4*mpy6*t426)/4.0+(a3*dq3*mpy6*t428)/2.0+(a3*dq4*mpy6*t427)/4.0+(a3*dq5*mpy6*t426)/4.0+(a3*dq4*mpy6*t428)/4.0-(a3*dq5*mpy6*t427)/4.0-(a3*dq6*mpy6*t426)/4.0-(a4*dq2*mpy6*t429)/2.0-(a3*dq5*mpy6*t428)/4.0+(a3*dq6*mpy6*t427)/4.0+(a4*dq3*mpy6*t429)/2.0-(a3*dq6*mpy6*t428)/4.0+(a4*dq4*mpy6*t429)/2.0-(a4*dq5*mpy6*t429)/4.0-(a4*dq6*mpy6*t429)/4.0-(a4*dq2*mpy6*t492)/2.0-(a4*dq2*mpy6*t493)/2.0+(a4*dq3*mpy6*t492)/2.0+(a4*dq3*mpy6*t493)/2.0+(a4*dq4*mpy6*t492)/2.0+(a4*dq4*mpy6*t493)/2.0+(a4*dq5*mpy6*t492)/4.0-(a4*dq5*mpy6*t493)/4.0-(a4*dq6*mpy6*t492)/4.0+(a4*dq6*mpy6*t493)/4.0-a3i*dq4*mpx4*t4-a3i*dq2*mpx4*t247*2.0+a3i*dq3*mpx4*t247*2.0+a3i*dq4*mpx4*t247-(a3i*dq4*mpy6*t34)/2.0-(a3i*dq6*mpy6*t34)/2.0-(a3i*dq4*mpy6*t44)/4.0-(a3i*dq5*mpy6*t44)/4.0-(a3i*dq6*mpy6*t44)/4.0-(a3i*dq4*mpy6*t70)/2.0+(a3i*dq6*mpy6*t70)/2.0+(a3i*dq4*mpy6*t92)/4.0+(a3i*dq4*mpy6*t93)/4.0+(a3i*dq5*mpy6*t92)/4.0-(a3i*dq4*mpy6*t94)/4.0-(a3i*dq5*mpy6*t93)/4.0-(a3i*dq6*mpy6*t92)/4.0+(a3i*dq5*mpy6*t94)/4.0+(a3i*dq6*mpy6*t93)/4.0+(a3i*dq6*mpy6*t94)/4.0-a3i*dq2*mpy6*t286+a3i*dq3*mpy6*t286+(a3i*dq4*mpy6*t286)/2.0+(a3i*dq6*mpy6*t286)/2.0-(a3i*dq2*mpy6*t341)/2.0+(a3i*dq3*mpy6*t341)/2.0+(a3i*dq4*mpy6*t341)/4.0+(a3i*dq5*mpy6*t341)/4.0+(a3i*dq6*mpy6*t341)/4.0+a3i*dq2*mpy6*t417-a3i*dq3*mpy6*t417-(a3i*dq4*mpy6*t417)/2.0+(a3i*dq2*mpy6*t421)/2.0+(a3i*dq6*mpy6*t417)/2.0+(a3i*dq2*mpy6*t422)/2.0-(a3i*dq3*mpy6*t421)/2.0-(a3i*dq2*mpy6*t423)/2.0-(a3i*dq3*mpy6*t422)/2.0-(a3i*dq4*mpy6*t421)/4.0+(a3i*dq3*mpy6*t423)/2.0-(a3i*dq4*mpy6*t422)/4.0-(a3i*dq5*mpy6*t421)/4.0+(a3i*dq4*mpy6*t423)/4.0+(a3i*dq5*mpy6*t422)/4.0+(a3i*dq6*mpy6*t421)/4.0-(a3i*dq5*mpy6*t423)/4.0-(a3i*dq6*mpy6*t422)/4.0-(a3i*dq6*mpy6*t423)/4.0+d5*dq6*mpy6*t11+d5*dq2*mpy6*t378-d5*dq3*mpy6*t378-d5*dq4*mpy6*t378-(d5*dq6*mpy6*t378)/2.0+(d5*dq2*mpy6*t395)/2.0-(d5*dq3*mpy6*t395)/2.0-(d5*dq4*mpy6*t395)/2.0-(d5*dq5*mpy6*t395)/4.0-(d5*dq6*mpy6*t395)/4.0-d5*dq2*mpy6*t418+d5*dq3*mpy6*t418+d5*dq4*mpy6*t418-(d5*dq6*mpy6*t418)/2.0+(d5*dq2*mpy6*t424)/2.0-(d5*dq3*mpy6*t424)/2.0-(d5*dq4*mpy6*t424)/2.0+(d5*dq5*mpy6*t424)/4.0+(d5*dq6*mpy6*t424)/4.0-(d5*dq2*mpy6*t488)/2.0-(d5*dq2*mpy6*t489)/2.0+(d5*dq3*mpy6*t488)/2.0+(d5*dq3*mpy6*t489)/2.0+(d5*dq4*mpy6*t488)/2.0+(d5*dq4*mpy6*t489)/2.0+(d5*dq5*mpy6*t488)/4.0-(d5*dq5*mpy6*t489)/4.0-(d5*dq6*mpy6*t488)/4.0+(d5*dq6*mpy6*t489)/4.0+dq2*mass3*t15*t26+dq2*mass4*t15*t26+dq2*mass5*t15*t26+dq2*mass6*t15*t26-dq2*mass4*t16*t171-dq2*mass5*t16*t171+dq3*mass4*t16*t171+dq2*mass4*t18*t171-dq2*mass6*t16*t171+dq3*mass5*t16*t171+dq2*mass5*t18*t171-dq3*mass4*t18*t171+dq3*mass6*t16*t171+dq2*mass6*t18*t171-dq3*mass5*t18*t171-dq3*mass6*t18*t171+dq2*mass5*t17*t321+dq2*mass6*t17*t321-dq3*mass5*t17*t321-dq3*mass6*t17*t321-dq4*mass5*t17*t321-dq2*mass6*t19*t321-dq4*mass6*t17*t321+dq3*mass6*t19*t321+dq4*mass6*t19*t321+a1*a2*dq2*mass3*t2*2.0+a1*a2*dq2*mass4*t2*2.0+a1*a2*dq2*mass5*t2*2.0+a1*a2*dq2*mass6*t2*2.0+a2*a3*dq3*mass4*t3+a2*a3*dq3*mass5*t3+a2*a3*dq3*mass6*t3-a3*a4*dq4*mass5*t9-a3*a4*dq4*mass6*t9+a2*a4*dq3*mass5*t29+a2*a4*dq3*mass6*t29+a2*a4*dq4*mass5*t29+a2*a4*dq4*mass6*t29+a2*a4*dq2*mass5*t91*2.0+a2*a4*dq2*mass6*t91*2.0-a2*a4*dq3*mass5*t91-a2*a4*dq3*mass6*t91-a2*a4*dq4*mass5*t91-a2*a4*dq4*mass6*t91+a2*a3*dq2*mass4*t167*2.0+a2*a3*dq2*mass5*t167*2.0-a2*a3*dq3*mass4*t167+a2*a3*dq2*mass6*t167*2.0-a2*a3*dq3*mass5*t167-a2*a3*dq3*mass6*t167+a3*a4*dq2*mass5*t249*2.0+a3*a4*dq2*mass6*t249*2.0-a3*a4*dq3*mass5*t249*2.0-a3*a4*dq3*mass6*t249*2.0-a3*a4*dq4*mass5*t249-a3*a4*dq4*mass6*t249+a2*a3i*dq3*mass4*t8-a4*a3i*dq4*mass5*t4+a2*a3i*dq3*mass5*t8-a4*a3i*dq4*mass6*t4+a2*a3i*dq3*mass6*t8-a3*a3i*dq2*mass4*t168*2.0-a2*a3i*dq2*mass4*t170*2.0-a3*a3i*dq2*mass5*t168*2.0+a3*a3i*dq3*mass4*t168*2.0-a2*a3i*dq2*mass5*t170*2.0+a2*a3i*dq3*mass4*t170-a3*a3i*dq2*mass6*t168*2.0+a3*a3i*dq3*mass5*t168*2.0-a2*a3i*dq2*mass6*t170*2.0+a2*a3i*dq3*mass5*t170+a3*a3i*dq3*mass6*t168*2.0+a2*a3i*dq3*mass6*t170-a4*a3i*dq2*mass5*t247*2.0-a4*a3i*dq2*mass6*t247*2.0+a4*a3i*dq3*mass5*t247*2.0+a4*a3i*dq3*mass6*t247*2.0+a4*a3i*dq4*mass5*t247+a4*a3i*dq4*mass6*t247-a3*d5*dq4*mass6*t4-a2*d5*dq3*mass6*t33-a2*d5*dq4*mass6*t33-a2*d5*dq2*mass6*t110*2.0+a2*d5*dq3*mass6*t110+a2*d5*dq4*mass6*t110+a3*d5*dq2*mass6*t247*2.0-a3*d5*dq3*mass6*t247*2.0-a3*d5*dq4*mass6*t247+a4*d5*dq2*mass6*t318*2.0-a4*d5*dq3*mass6*t318*2.0-a4*d5*dq4*mass6*t318*2.0+a3i*d5*dq4*mass6*t9+a3i*d5*dq2*mass6*t249*2.0-a3i*d5*dq3*mass6*t249*2.0-a3i*d5*dq4*mass6*t249; 01356 A0(0,1) = t311*2.0+t339-t340-t353-t354-t355+t358+t367*2.0+t368*2.0-t370-t371*2.0-t390-t391-t392+t402+t406+t407-t430-t431-t432-t435-t436-t437+t438+t439+t440-t441+t446-t453-t458-t472-t473+t475+t476+t477-t478+t479-t486+t487-t497-t498+t499-t501-t502+t503+t504+t505-t506-t507-t508+t509-t510-t516+t518+t527+t528-t529+t530+t531-t532-t533-t534-t535-t539+t540-t541-t542+t543-t544+t549+t550+t552+t553-t554+t556-t557-t558-t559-t561-t564-t565-t566-t567+a1*dq1*mpx2*t2*2.0+a2*dq1*mpx3*t167*2.0+a1*dq1*mpy2*t7*2.0+a2*dq1*mpy3*t170*2.0+a2*dq1*mpy6*t210-(a3*dq3*mpy6*t208)/2.0-(a3*dq3*mpy6*t209)/2.0+(a2*dq1*mpy6*t225)/2.0+(a3*dq3*mpy6*t333)/2.0-(a3*dq3*mpy6*t334)/2.0-(a2*dq1*mpy6*t382)/2.0-(a2*dq1*mpy6*t383)/2.0-a2*dq1*mpy6*t416+(a2*dq1*mpy6*t420)/2.0-(a3i*dq3*mpy6*t201)/2.0+(a3i*dq3*mpy6*t202)/2.0+(a3i*dq3*mpy6*t324)/2.0-(a3i*dq3*mpy6*t325)/2.0+dq1*mass3*t15*t26+dq1*mass4*t15*t26+dq1*mass5*t15*t26+dq1*mass6*t15*t26+a1*a2*dq1*mass3*t2*2.0+a1*a2*dq1*mass4*t2*2.0+a1*a2*dq1*mass5*t2*2.0+a1*a2*dq1*mass6*t2*2.0+a2*a3*dq1*mass4*t167*2.0+a2*a3*dq1*mass5*t167*2.0+a2*a3*dq1*mass6*t167*2.0-a2*a3i*dq1*mass4*t170*2.0-a2*a3i*dq1*mass5*t170*2.0-a2*a3i*dq1*mass6*t170*2.0; 01357 A0(0,2) = t84+t172+t173+t294-t339+t340+t342+t353+t354+t355+t359+t370+t371+t390+t391+t392+t394+t396+t425+t430+t431+t432+t435+t436+t437-t438-t439-t440+t441+t442+t443+t444-t446+t447+t448+t453+t458+t472+t473-t475-t476-t477+t478-t479+t486+t490+t491+t494+t498+t502+t506+t507+t508-t509+t510+t511+t512+t513+t514+t515+t516+t517-t518+t519+t520+t521+t522+t523+t524+t525-t530-t531+t532+t533+t534+t535+t537+t542-t543+t544+t545+t546+t547+t548-t552-t553+t554+t555+t557+t558+t559+t560+t561+t562+t563+t564+t565+t566+t567+a2*dq1*mpx3*t3-a2*dq1*mpx3*t167-a2*dq1*mpy3*t8-a2*dq1*mpy3*t170-(a3*dq2*mpy6*t208)/2.0-(a3*dq2*mpy6*t209)/2.0+(a3*dq2*mpy6*t333)/2.0-(a3*dq2*mpy6*t334)/2.0-(a3i*dq2*mpy6*t201)/2.0+(a3i*dq2*mpy6*t202)/2.0+(a3i*dq2*mpy6*t324)/2.0-(a3i*dq2*mpy6*t325)/2.0+a2*a3*dq1*mass4*t3+a2*a3*dq1*mass5*t3+a2*a3*dq1*mass6*t3-a2*a3*dq1*mass4*t167-a2*a3*dq1*mass5*t167-a2*a3*dq1*mass6*t167+a2*a3i*dq1*mass4*t8+a2*a3i*dq1*mass5*t8+a2*a3i*dq1*mass6*t8+a2*a3i*dq1*mass4*t170+a2*a3i*dq1*mass5*t170+a2*a3i*dq1*mass6*t170; 01358 A0(0,3) = t84+t172+t173+t294+t342+t359+t370+t371+t394+t396+t425+t442+t443+t444+t447+t448+t453/2.0+t458/2.0+t478+t486+t490+t491+t494+t497+t501+t506/2.0+t507+t508-t509/2.0+t510+t511+t512+t513+t514+t515+t517+t519+t520+t521+t522+t523+t524+t525-t527-t528+t529+t533+t534+t535+t537+t539-t540+t541+t545+t546+t547+t548+t555+t560+t561+t562+t563+t564+t565+t566+t567-a3*dq1*mpx4*t9-a3*dq1*mpx4*t249+(a3*dq1*mpy6*t30)/2.0-(a3*dq1*mpy6*t47)/4.0+(a3*dq1*mpy6*t59)/2.0+(a3*dq1*mpy6*t112)/4.0+(a3*dq1*mpy6*t113)/4.0+(a3*dq1*mpy6*t114)/4.0-(a3*dq1*mpy6*t343)/4.0+(a3*dq1*mpy6*t426)/4.0+(a3*dq1*mpy6*t427)/4.0+(a3*dq1*mpy6*t428)/4.0-a3i*dq1*mpx4*t4+a3i*dq1*mpx4*t247-(a3i*dq1*mpy6*t34)/2.0-(a3i*dq1*mpy6*t44)/4.0-(a3i*dq1*mpy6*t70)/2.0+(a3i*dq1*mpy6*t92)/4.0+(a3i*dq1*mpy6*t93)/4.0-(a3i*dq1*mpy6*t94)/4.0+(a3i*dq1*mpy6*t341)/4.0-(a3i*dq1*mpy6*t421)/4.0-(a3i*dq1*mpy6*t422)/4.0+(a3i*dq1*mpy6*t423)/4.0-a3*a4*dq1*mass5*t9-a3*a4*dq1*mass6*t9-a3*a4*dq1*mass5*t249-a3*a4*dq1*mass6*t249-a4*a3i*dq1*mass5*t4-a4*a3i*dq1*mass6*t4+a4*a3i*dq1*mass5*t247+a4*a3i*dq1*mass6*t247-a3*d5*dq1*mass6*t4-a3*d5*dq1*mass6*t247+a3i*d5*dq1*mass6*t9-a3i*d5*dq1*mass6*t249; 01359 A0(0,4) = t2*t8*t9*t152-a4*dq1*mpy6*t5*t11-a1*dq6*mpy6*t6*t10*2.0-a3*dq1*mpy6*t4*t5*t11-a2*dq6*mpy6*t6*t7*t10*2.0+a3i*dq1*mpy6*t5*t9*t11-a3*dq6*mpy6*t2*t3*t6*t10*2.0-a2*dq1*mpy6*t3*t5*t9*t11-a2*dq1*mpy6*t4*t5*t8*t11-a3*dq6*mpy6*t6*t7*t8*t10*2.0-a3i*dq6*mpy6*t2*t6*t8*t10*2.0+a3i*dq6*mpy6*t3*t6*t7*t10*2.0-a1*dq1*mpy6*t2*t3*t4*t5*t11*2.0-a4*dq6*mpy6*t2*t3*t4*t6*t10*2.0+a1*dq1*mpy6*t2*t5*t8*t9*t11*2.0-a1*dq1*mpy6*t3*t5*t7*t9*t11*2.0-a1*dq1*mpy6*t4*t5*t7*t8*t11*2.0-a4*dq6*mpy6*t3*t6*t7*t9*t10*2.0-a4*dq6*mpy6*t4*t6*t7*t8*t10*2.0-a2*dq1*mpy6*t3*t4*t5*t11*t26+a2*dq1*mpy6*t3*t5*t9*t11*t23+a2*dq1*mpy6*t4*t5*t8*t11*t23+a2*dq1*mpy6*t5*t8*t9*t11*t26-a3*dq1*mpy6*t4*t5*t11*t23*t24-a3*dq1*mpy6*t4*t5*t11*t26*t27+a3*dq1*mpy6*t5*t9*t11*t23*t27-a3*dq1*mpy6*t5*t9*t11*t24*t26-a4*dq1*mpy6*t5*t11*t23*t24*t25+a4*dq1*mpy6*t5*t11*t23*t27*t28-a4*dq1*mpy6*t5*t11*t24*t26*t28-a4*dq1*mpy6*t5*t11*t25*t26*t27-a3i*dq1*mpy6*t4*t5*t11*t23*t27+a3i*dq1*mpy6*t4*t5*t11*t24*t26-a3i*dq1*mpy6*t5*t9*t11*t23*t24-a3i*dq1*mpy6*t5*t9*t11*t26*t27+d5*dq6*mpy6*t2*t3*t6*t9*t10*2.0+d5*dq6*mpy6*t2*t4*t6*t8*t10*2.0-d5*dq6*mpy6*t3*t4*t6*t7*t10*2.0+d5*dq6*mpy6*t6*t7*t8*t9*t10*2.0+d5*dq1*mpy6*t5*t11*t23*t24*t28+d5*dq1*mpy6*t5*t11*t23*t25*t27-d5*dq1*mpy6*t5*t11*t24*t25*t26+d5*dq1*mpy6*t5*t11*t26*t27*t28; 01360 A0(0,5) = d5*dq1*mpy6*t11-a4*dq1*mpy6*t6*t10-a1*dq5*mpy6*t6*t10*2.0-a3*dq1*mpy6*t9*t11-a3i*dq1*mpy6*t4*t11+a2*dq1*mpy6*t3*t4*t11-a3*dq1*mpy6*t4*t6*t10-a2*dq5*mpy6*t6*t7*t10*2.0-a2*dq1*mpy6*t8*t9*t11+a3i*dq1*mpy6*t6*t9*t10-a1*dq1*mpy6*t2*t3*t9*t11*2.0-a1*dq1*mpy6*t2*t4*t8*t11*2.0+a1*dq1*mpy6*t3*t4*t7*t11*2.0-a3*dq5*mpy6*t2*t3*t6*t10*2.0-a2*dq1*mpy6*t3*t6*t9*t10-a2*dq1*mpy6*t4*t6*t8*t10-a1*dq1*mpy6*t7*t8*t9*t11*2.0-a3*dq5*mpy6*t6*t7*t8*t10*2.0-a2*dq1*mpy6*t3*t4*t11*t23-a2*dq1*mpy6*t3*t9*t11*t26-a2*dq1*mpy6*t4*t8*t11*t26+a2*dq1*mpy6*t8*t9*t11*t23-a3*dq1*mpy6*t4*t11*t23*t27+a3*dq1*mpy6*t4*t11*t24*t26-a3*dq1*mpy6*t9*t11*t23*t24-a3*dq1*mpy6*t9*t11*t26*t27-a4*dq1*mpy6*t11*t23*t24*t28-a4*dq1*mpy6*t11*t23*t25*t27+a4*dq1*mpy6*t11*t24*t25*t26-a4*dq1*mpy6*t11*t26*t27*t28-a3i*dq5*mpy6*t2*t6*t8*t10*2.0+a3i*dq5*mpy6*t3*t6*t7*t10*2.0+a3i*dq1*mpy6*t4*t11*t23*t24+a3i*dq1*mpy6*t4*t11*t26*t27-a3i*dq1*mpy6*t9*t11*t23*t27+a3i*dq1*mpy6*t9*t11*t24*t26-d5*dq1*mpy6*t11*t23*t24*t25+d5*dq1*mpy6*t11*t23*t27*t28-d5*dq1*mpy6*t11*t24*t26*t28-d5*dq1*mpy6*t11*t25*t26*t27-a1*dq1*mpy6*t2*t3*t4*t6*t10*2.0-a4*dq5*mpy6*t2*t3*t4*t6*t10*2.0+a1*dq1*mpy6*t2*t6*t8*t9*t10*2.0-a1*dq1*mpy6*t3*t6*t7*t9*t10*2.0-a1*dq1*mpy6*t4*t6*t7*t8*t10*2.0+a4*dq5*mpy6*t2*t6*t8*t9*t10*2.0-a4*dq5*mpy6*t3*t6*t7*t9*t10*2.0-a4*dq5*mpy6*t4*t6*t7*t8*t10*2.0-a2*dq1*mpy6*t3*t4*t6*t10*t26+a2*dq1*mpy6*t3*t6*t9*t10*t23+a2*dq1*mpy6*t4*t6*t8*t10*t23+a2*dq1*mpy6*t6*t8*t9*t10*t26-a3*dq1*mpy6*t4*t6*t10*t23*t24-a3*dq1*mpy6*t4*t6*t10*t26*t27+a3*dq1*mpy6*t6*t9*t10*t23*t27-a3*dq1*mpy6*t6*t9*t10*t24*t26-a4*dq1*mpy6*t6*t10*t23*t24*t25+a4*dq1*mpy6*t6*t10*t23*t27*t28-a4*dq1*mpy6*t6*t10*t24*t26*t28-a4*dq1*mpy6*t6*t10*t25*t26*t27-a3i*dq1*mpy6*t4*t6*t10*t23*t27+a3i*dq1*mpy6*t4*t6*t10*t24*t26-a3i*dq1*mpy6*t6*t9*t10*t23*t24-a3i*dq1*mpy6*t6*t9*t10*t26*t27+d5*dq5*mpy6*t2*t3*t6*t9*t10*2.0+d5*dq5*mpy6*t2*t4*t6*t8*t10*2.0-d5*dq5*mpy6*t3*t4*t6*t7*t10*2.0+d5*dq5*mpy6*t6*t7*t8*t9*t10*2.0+d5*dq1*mpy6*t6*t10*t23*t24*t28+d5*dq1*mpy6*t6*t10*t23*t25*t27-d5*dq1*mpy6*t6*t10*t24*t25*t26+d5*dq1*mpy6*t6*t10*t26*t27*t28; 01361 A0(1,0) = mpy6*t433*(t211+t213+t302+t305+a2*t2)*-2.0; 01362 A0(1,1) = t81+t87+t97+t133+t138+t139+t142-t161-t162+t183+t184+t187+t194+t195+t218+t219+t222+t223+t227+t231+t232+t233+t234-t237-t238-t239-t240-t243-t244-t245-t246+t254+t255+t256+t257+t260+t275+t278+t279-t281+t283+t313+t314-t345-t346-t347-t348-t349-t350+t361+t362+a2*dq3*mpx3*t3*2.0-a2*dq3*mpy3*t8*2.0+a2*a3*dq3*mass4*t3*2.0+a2*a3*dq3*mass5*t3*2.0+a2*a3*dq3*mass6*t3*2.0+a2*a3i*dq3*mass4*t8*2.0+a2*a3i*dq3*mass5*t8*2.0+a2*a3i*dq3*mass6*t8*2.0; 01363 A0(1,2) = t74+t77+t99+t120+t121+t124+t129+t130+t137-t139+t151+t152+t158+t159+t162+t166+t196+t212+t226+t229+t230-t233-t234+t239+t240+t245+t246+t252+t253-t256-t257+t265+t267+t281+t295+t296+t299+t300+t312+t315+t316+t317+t319+t346+t347+t348+t349+t350+t360-t362+t393+a2*dq2*mpx3*t3*2.0-a2*dq2*mpy3*t8*2.0+a2*a3*dq2*mass4*t3*2.0+a2*a3*dq2*mass5*t3*2.0+a2*a3*dq2*mass6*t3*2.0+a2*a3i*dq2*mass4*t8*2.0+a2*a3i*dq2*mass5*t8*2.0+a2*a3i*dq2*mass6*t8*2.0; 01364 A0(1,3) = t73+t76+t85+t95+t99+t118+t119+t123+t127+t128+t131-t132+t137-t138+t140-t141+t151+t152+t156+t159+t161+t166+t179+t180+t185+t190+t191+t220+t226+t229+t230-t231-t232+t237+t238+t243+t244+t252+t253-t254-t255+t265+t267+t269+t280+t281+t295+t296+t299+t300+t312+t316+t317+t345+t347+t348+t349+t350+t360-t361+t393-a3*dq3*mpy6*t9*t10*t11*2.0-a3i*dq3*mpy6*t4*t10*t11*2.0; 01365 A0(1,4) = -t144-t145+t147+t149+t251-t258+t261+t263+t268+t270-t273-t276-t351+t356-t357-t363+t419+t454+t459+t460-t461-t463+t464+t465-a2*mpy6*t3*t4*t52*2.0+a2*mpy6*t8*t9*t52*2.0+a2*dq1*mpy6*t2*t10*t11*2.0-a2*dq2*mpy6*t3*t5*t9*t11*2.0-a2*dq2*mpy6*t4*t5*t8*t11*2.0+a2*dq3*mpy6*t3*t5*t9*t11*2.0+a2*dq3*mpy6*t4*t5*t8*t11*2.0+a2*dq4*mpy6*t3*t5*t9*t11*2.0+a2*dq4*mpy6*t4*t5*t8*t11*2.0; 01366 A0(1,5) = t78-t143+t148+t150-t153+t155+t157-t163+t164+t165+t250+t262+t264+t266+t271+t352+t387+t389+t452+t455+t10*t254+t10*t255+t10*t256+t10*t257-d5*dq3*mpy6*t11*2.0-d5*dq4*mpy6*t11*2.0-a4*dq2*mpy6*t6*t10*2.0-a2*dq1*mpy6*t2*t5*t6*2.0+a2*dq2*mpy6*t3*t4*t11*2.0-a2*dq3*mpy6*t3*t4*t11*2.0-a2*dq4*mpy6*t3*t4*t11*2.0-a3*dq2*mpy6*t4*t6*t10*2.0-a2*dq2*mpy6*t8*t9*t11*2.0+a2*dq3*mpy6*t8*t9*t11*2.0+a2*dq4*mpy6*t8*t9*t11*2.0-a3i*dq3*mpy6*t6*t9*t10*2.0-a3i*dq4*mpy6*t6*t9*t10*2.0-a2*dq5*mpy6*t3*t4*t5*t6*2.0-a3*dq1*mpy6*t2*t5*t6*t8*2.0-a2*dq2*mpy6*t3*t6*t9*t10*2.0-a2*dq2*mpy6*t4*t6*t8*t10*2.0+a2*dq5*mpy6*t5*t6*t8*t9*2.0-a4*dq1*mpy6*t2*t3*t5*t6*t9*2.0-a4*dq1*mpy6*t2*t4*t5*t6*t8*2.0-a4*dq1*mpy6*t5*t6*t7*t8*t9*2.0-d5*dq1*mpy6*t2*t3*t4*t5*t6*2.0-d5*dq1*mpy6*t3*t5*t6*t7*t9*2.0-d5*dq1*mpy6*t4*t5*t6*t7*t8*2.0; 01367 A0(2,0) = mpy6*t433*(t178+t189-t211-t213)*-2.0; 01368 A0(2,1) = t74+t77+t99+t120+t121+t124+t129+t130+t151+t152+t158+t159+t166+t196+t212+t265+t267+t315+t316+t317+t319; 01369 A0(2,2) = t81+t87+t97+t133+t142+t183+t184+t187+t194+t195+t218+t219+t222+t223+t227+t275+t278+t279+t283+t313+t314; 01370 A0(2,3) = t72+t75+t81+t86+t96+t116+t117+t122+t125+t126-t131+t132-t140+t141+t154+t181+t182+t186+t192+t193+t218+t219+t221+t223+t227+t272+t278+t279+t282+t313+t314-a3*dq2*mpy6*t9*t10*t11*2.0-a3i*dq2*mpy6*t4*t10*t11*2.0; 01371 A0(2,4) = t144+t145+t214+t216-t251+t258-t261-t263-t268-t270+t273+t276+t351-t356+t357+t363+t461+t463+t466+t480+t482+t483+t484+t485; 01372 A0(2,5) = t79+t80+t98+t143+t146+t153-t155-t157+t163-t164-t165+t215+t217-t250+t259-t266+t274+t277+t388+t449+t450+t451+t456+t457+t462+t474+t481-a3*dq3*mpy6*t4*t6*t10*2.0-a3*dq4*mpy6*t4*t6*t10*2.0-a3i*dq2*mpy6*t6*t9*t10*2.0-a3*dq1*mpy6*t3*t5*t6*t7*2.0-a3i*dq1*mpy6*t2*t3*t5*t6*2.0-a3i*dq1*mpy6*t5*t6*t7*t8*2.0; 01373 A0(3,0) = mpy6*t433*(t211+t213)*2.0; 01374 A0(3,1) = t86+t96+t99+t132+t141+t151+t152+t181+t182+t186+t192+t193+t221+t272+t282; 01375 A0(3,2) = t81+t85+t95+t131+t140+t179+t180+t185+t190+t191+t218+t219+t220+t269+t280; 01376 A0(3,3) = mpy6*(-d5*dq6*t11+a4*dq5*t5*t11+a4*dq6*t6*t10)*-2.0; 01377 A0(3,4) = t144+t145+t214+t216+t461+t463+t466+t480+t482+t483+t484+t485; 01378 A0(3,5) = t79+t80+t98+t143+t146+t215+t217+t449+t450+t451+t456+t457+t462+t474+t481; 01379 A0(4,0) = mpy6*t11*(-a3*dq2*t89+a3*dq2*t90+a3*dq3*t89-a3*dq3*t90+a4*dq2*t199-a4*dq3*t199-a4*dq4*t199-a4*dq2*t322+a4*dq3*t322+a4*dq4*t322+a3i*dq2*t108+a3i*dq2*t109-a3i*dq3*t108-a3i*dq3*t109-d5*dq2*t207+d5*dq3*t207+d5*dq4*t207-d5*dq2*t332+d5*dq3*t332+d5*dq4*t332-a2*dq2*sin(q2+q5)+a2*dq2*sin(q2+t42)); 01380 A0(4,1) = mpy6*t11*(t48+t176+t287+t288+t289+t292+t293+t297+t298+t301+t304+t373+t376+a4*dq3*t5+a2*dq1*t2*t10+a3*dq3*t4*t5-a3i*dq3*t5*t9)*-2.0; 01381 A0(4,2) = mpy6*t11*(t48+t176+t287+t288+t289+t292+t293+t297+t298+t301+t304+t373+t376-a4*dq2*t5-a3*dq2*t4*t5+a3i*dq2*t5*t9)*2.0; 01382 A0(4,3) = mpy6*t11*(a4*dq2*t5*-2.0+a4*dq3*t5*2.0-a4*dq1*t199+a4*dq1*t322+d5*dq1*t207+d5*dq1*t332); 01383 A0(5,0) = mpy6*t5*t6*(dq2*t178+dq2*t189-dq2*t211+dq3*t211-dq2*t213+dq4*t211+dq3*t213+dq4*t213+dq3*t302+dq3*t305-a2*dq2*t2)*-2.0; 01384 A0(5,1) = mpy6*(t50+t51+t197+t198+t336+t369+t372+t374+t398+t399+t400+t404+t405+t408+t434+t445-a3*dq3*t9*t11*2.0-a3i*dq3*t4*t11*2.0+a2*dq1*t2*t5*t6*2.0-a3*dq3*t4*t6*t10*2.0+a3i*dq3*t6*t9*t10*2.0); 01385 A0(5,2) = -mpy6*(t51+t60+t134+t198+t336+t369+t372+t374+t398+t399+t400+t404+t405+t408+t434+t445+a3*dq2*t9*t11*2.0+a3i*dq2*t4*t11*2.0+a3*dq2*t4*t6*t10*2.0-a3i*dq2*t6*t9*t10*2.0); 01386 A0(5,3) = -mpy6*(t50+t60+t134+t197+t398+t399+t400+t404+t405+t408+t434+t445); 01387 return A0; 01388 } 01389 */ 01390 01391 01392 01393
Generated on Mon Jul 18 2022 17:05:26 by 1.7.2