📄 subsref.html
字号:
0080 <span class="keyword">else</span>0081 v = <span class="string">'P'</span>;0082 <span class="keyword">end</span>0083 <span class="keyword">case</span> <span class="string">'mdh'</span>,0084 v = l.mdh;0085 0086 <span class="comment">%%%%%%% joint limit support</span>0087 <span class="keyword">case</span> <span class="string">'qlim'</span>,0088 v = l.qlim;0089 <span class="keyword">case</span> <span class="string">'islimit'</span>,0090 <span class="keyword">if</span> isempty(l.qlim)0091 error(<span class="string">'no limits assigned to link'</span>)0092 <span class="keyword">end</span>0093 <span class="keyword">if</span> s(2).type ~= <span class="string">'()'</span>0094 error(<span class="string">'expecting argument for islimit method'</span>);0095 <span class="keyword">end</span>0096 q = s(2).subs{1};0097 v = (q > l.qlim(2)) - (q < l.qlim(1));0098 0099 <span class="comment">%%%%%%% dynamic parameters</span>0100 <span class="keyword">case</span> <span class="string">'G'</span>,0101 v = l.G;0102 <span class="keyword">case</span> <span class="string">'I'</span>,0103 v = l.I;0104 <span class="keyword">case</span> <span class="string">'r'</span>,0105 v = l.r;0106 <span class="keyword">case</span> <span class="string">'Jm'</span>,0107 v = l.Jm;0108 <span class="keyword">case</span> <span class="string">'B'</span>,0109 v = l.B;0110 <span class="keyword">case</span> <span class="string">'Tc'</span>,0111 v = l.Tc;0112 0113 <span class="keyword">case</span> <span class="string">'m'</span>,0114 v = l.m;0115 <span class="comment">%%%%%%% legacy parameters</span>0116 <span class="keyword">case</span> <span class="string">'dh'</span>,0117 v = [l.alpha l.A l.theta l.D l.sigma];0118 <span class="keyword">case</span> <span class="string">'dyn'</span>,0119 v = [l.alpha l.A l.theta l.D l.sigma l.m l.r(:)' diag(l.I)' l.I(2,1) l.I(2,3) l.I(1,3) l.Jm l.G l.B l.Tc(:)'];0120 <span class="keyword">otherwise</span>, disp(<span class="string">'Unknown method'</span>)0121 <span class="keyword">end</span>0122 <span class="keyword">end</span>0123 0124 0125 <span class="comment">%LINKTRAN Compute the link transform from kinematic parameters</span>0126 <span class="comment">%</span>0127 <span class="comment">% LINKTRAN(alpha, an, theta, dn)</span>0128 <span class="comment">% LINKTRAN(DH, q) is a homogeneous</span>0129 <span class="comment">% transformation between link coordinate frames.</span>0130 <span class="comment">%</span>0131 <span class="comment">% alpha is the link twist angle</span>0132 <span class="comment">% an is the link length</span>0133 <span class="comment">% theta is the link rotation angle</span>0134 <span class="comment">% dn is the link offset</span>0135 <span class="comment">% sigma is 0 for a revolute joint, non-zero for prismatic</span>0136 <span class="comment">%</span>0137 <span class="comment">% In the second case, q is substitued for theta or dn according to sigma.</span>0138 <span class="comment">%</span>0139 <span class="comment">% Based on the standard Denavit and Hartenberg notation.</span>0140 0141 <span class="comment">% Copyright (C) Peter Corke 1993</span>0142 <a name="_sub1" href="#_subfunctions" class="code">function t = linktran(a, b, c, d)</a>0143 0144 <span class="keyword">if</span> nargin == 4,0145 alpha = a;0146 an = b;0147 theta = c;0148 dn = d;0149 <span class="keyword">else</span>0150 <span class="keyword">if</span> numcols(a) < 4,0151 error(<span class="string">'too few columns in DH matrix'</span>);0152 <span class="keyword">end</span>0153 alpha = a(1);0154 an = a(2);0155 <span class="keyword">if</span> numcols(a) > 4,0156 <span class="keyword">if</span> a(5) == 0, <span class="comment">% revolute</span>0157 theta = b;0158 dn = a(4);0159 <span class="keyword">else</span> <span class="comment">% prismatic</span>0160 theta = a(3);0161 dn = b;0162 <span class="keyword">end</span>0163 <span class="keyword">else</span>0164 theta = b; <span class="comment">% assume revolute if sigma not given</span>0165 dn = a(4);0166 <span class="keyword">end</span>0167 <span class="keyword">end</span>0168 sa = sin(alpha); ca = cos(alpha);0169 st = sin(theta); ct = cos(theta);0170 0171 t = [ ct -st*ca st*sa an*ct0172 st ct*ca -ct*sa an*st0173 0 sa ca dn0174 0 0 0 1];0175 0176 <span class="comment">%MLINKTRAN Compute the link transform from kinematic parameters</span>0177 <span class="comment">%</span>0178 <span class="comment">% MLINKTRAN(alpha, an, theta, dn)</span>0179 <span class="comment">% MLINKTRAN(DH, q) is a homogeneous</span>0180 <span class="comment">% transformation between link coordinate frames.</span>0181 <span class="comment">%</span>0182 <span class="comment">% alpha is the link twist angle</span>0183 <span class="comment">% an is the link length</span>0184 <span class="comment">% theta is the link rotation angle</span>0185 <span class="comment">% dn is the link offset</span>0186 <span class="comment">% sigma is 0 for a revolute joint, non-zero for prismatic</span>0187 <span class="comment">%</span>0188 <span class="comment">% In the second case, q is substitued for theta or dn according to sigma.</span>0189 <span class="comment">%</span>0190 <span class="comment">% Based on the modified Denavit and Hartenberg notation.</span>0191 0192 <span class="comment">% Copyright (C) Peter Corke 1993</span>0193 <a name="_sub2" href="#_subfunctions" class="code">function t = mlinktran(a, b, c, d)</a>0194 0195 <span class="keyword">if</span> nargin == 4,0196 alpha = a;0197 an = b;0198 theta = c;0199 dn = d;0200 <span class="keyword">else</span>0201 <span class="keyword">if</span> numcols(a) < 4,0202 error(<span class="string">'too few columns in DH matrix'</span>);0203 <span class="keyword">end</span>0204 alpha = a(1);0205 an = a(2);0206 <span class="keyword">if</span> numcols(a) > 4,0207 <span class="keyword">if</span> a(5) == 0, <span class="comment">% revolute</span>0208 theta = b;0209 dn = a(4);0210 <span class="keyword">else</span> <span class="comment">% prismatic</span>0211 theta = a(3);0212 dn = b;0213 <span class="keyword">end</span>0214 <span class="keyword">else</span>0215 theta = b; <span class="comment">% assume revolute if no sigma given</span>0216 dn = a(4);0217 <span class="keyword">end</span>0218 <span class="keyword">end</span>0219 sa = sin(alpha); ca = cos(alpha);0220 st = sin(theta); ct = cos(theta);0221 0222 t = [ ct -st 0 an0223 st*ca ct*ca -sa -sa*dn0224 st*sa ct*sa ca ca*dn0225 0 0 0 1];</pre></div><hr><address>Generated on Sun 15-Feb-2009 18:09:29 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -