⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsref.html

📁 Robot tool box - provides many functions that are useful in robotics including such things as kinem
💻 HTML
📖 第 1 页 / 共 2 页
字号:
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 &gt; l.qlim(2)) - (q &lt; 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) &lt; 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) &gt; 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) &lt; 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) &gt; 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> &copy; 2003</address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -