LOOK FOR SINGULAR POINTS IN JOINT SPACE
0001 % LOOK FOR SINGULAR POINTS IN JOINT SPACE 0002 0003 % Copyright (C) 2012, by Arturo Gil Aparicio 0004 % 0005 % This file is part of ARTE (A Robotics Toolbox for Education). 0006 % 0007 % ARTE is free software: you can redistribute it and/or modify 0008 % it under the terms of the GNU Lesser General Public License as published by 0009 % the Free Software Foundation, either version 3 of the License, or 0010 % (at your option) any later version. 0011 % 0012 % ARTE is distributed in the hope that it will be useful, 0013 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0015 % GNU Lesser General Public License for more details. 0016 % 0017 % You should have received a copy of the GNU Leser General Public License 0018 % along with ARTE. If not, see <http://www.gnu.org/licenses/>. 0019 0020 function singular_points = find_singular_points(param) 0021 0022 singular_points=[]; 0023 0024 q=[0 0 0 0]; 0025 0026 teta = eval(param.DH.theta); 0027 d = eval(param.DH.d); 0028 a = eval(param.DH.a); 0029 alfa = eval(param.DH.alpha); 0030 0031 %J = eval(param.J) 0032 0033 0034 q1=-pi:0.05:pi; 0035 q2=-pi:0.05:pi; 0036 0037 for i=1:length(q1), 0038 fprintf('\nIteration %d of %d', i, length(q1)) 0039 for j=1:length(q2), 0040 q=[q1(i) q2(j) 0]; 0041 J = eval(param.J); 0042 0043 val = det(J); 0044 if abs(val) < 0.0001 0045 singular_points = [singular_points q']; 0046 end 0047 end 0048 end