📄 tr2eul.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of tr2eul</title> <meta name="keywords" content="tr2eul"> <meta name="description" content="TR2EUL Convert a homogeneous transform matrix to Euler angle form"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="./m2html.css"></head><body><a name="_top"></a><div><a href="./index.html">Home</a> > <a href="index.html">.</a> > tr2eul.m</div><!--<table width="100%"><tr><td align="left"><a href="./index.html"><img alt="<" border="0" src="./left.png"> Master index</a></td><td align="right"><a href="index.html">Index for . <img alt=">" border="0" src="./right.png"></a></td></tr></table>--><h1>tr2eul</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="./up.png"></a></h2><div class="box"><strong>TR2EUL Convert a homogeneous transform matrix to Euler angle form</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="./up.png"></a></h2><div class="box"><strong>function euler = tr2eul(m) </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="./up.png"></a></h2><div class="fragment"><pre class="comment">TR2EUL Convert a homogeneous transform matrix to Euler angle form [PHI THETA PSI] = TR2EUL(M) Returns a vector of roll/pitch/yaw angles corresponding to M, either a rotation matrix or the rotation part of a homogeneous transform. The 3 angles correspond to rotations about the Z, Y and Z axes respectively. See also: <a href="eul2tr.html" class="code" title="function T = eul2tr(phi, theta, psi)">EUL2TR</a>, <a href="tr2rpy.html" class="code" title="function rpy = tr2rpy(m)">TR2RPY</a></pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="./up.png"></a></h2>This function calls:<ul style="list-style-image:url(./matlabicon.gif)"><li><a href="tr2eul.html" class="code" title="function euler = tr2eul(m)">tr2eul</a> TR2EUL Convert a homogeneous transform matrix to Euler angle form</li></ul>This function is called by:<ul style="list-style-image:url(./matlabicon.gif)"><li><a href="tr2eul.html" class="code" title="function euler = tr2eul(m)">tr2eul</a> TR2EUL Convert a homogeneous transform matrix to Euler angle form</li></ul><!-- crossreference --><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="./up.png"></a></h2><div class="fragment"><pre>0001 <span class="comment">%TR2EUL Convert a homogeneous transform matrix to Euler angle form</span>0002 <span class="comment">%</span>0003 <span class="comment">% [PHI THETA PSI] = TR2EUL(M)</span>0004 <span class="comment">%</span>0005 <span class="comment">% Returns a vector of roll/pitch/yaw angles corresponding to M, either a rotation</span>0006 <span class="comment">% matrix or the rotation part of a homogeneous transform.</span>0007 <span class="comment">% The 3 angles correspond to rotations about the Z, Y and Z axes respectively.</span>0008 <span class="comment">%</span>0009 <span class="comment">% See also: EUL2TR, TR2RPY</span>0010 0011 <span class="comment">% Copyright (C) 1993-2008, by Peter I. Corke</span>0012 <span class="comment">%</span>0013 <span class="comment">% This file is part of The Robotics Toolbox for Matlab (RTB).</span>0014 <span class="comment">%</span>0015 <span class="comment">% RTB is free software: you can redistribute it and/or modify</span>0016 <span class="comment">% it under the terms of the GNU Lesser General Public License as published by</span>0017 <span class="comment">% the Free Software Foundation, either version 3 of the License, or</span>0018 <span class="comment">% (at your option) any later version.</span>0019 <span class="comment">%</span>0020 <span class="comment">% RTB is distributed in the hope that it will be useful,</span>0021 <span class="comment">% but WITHOUT ANY WARRANTY; without even the implied warranty of</span>0022 <span class="comment">% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>0023 <span class="comment">% GNU Lesser General Public License for more details.</span>0024 <span class="comment">%</span>0025 <span class="comment">% You should have received a copy of the GNU Leser General Public License</span>0026 <span class="comment">% along with RTB. If not, see <http://www.gnu.org/licenses/>.</span>0027 0028 <a name="_sub0" href="#_subfunctions" class="code">function euler = tr2eul(m)</a>0029 0030 s = size(m);0031 <span class="keyword">if</span> length(s) > 2,0032 euler = [];0033 <span class="keyword">for</span> i=1:s(3),0034 euler = [euler; <a href="tr2eul.html" class="code" title="function euler = tr2eul(m)">tr2eul</a>(m(:,:,i))];0035 <span class="keyword">end</span>0036 <span class="keyword">return</span>0037 <span class="keyword">end</span>0038 0039 euler = zeros(1,3);0040 0041 <span class="comment">% Method as per Paul, p 69.</span>0042 <span class="comment">% phi = atan2(ay, ax)</span>0043 <span class="comment">% Only positive phi is returned.</span>0044 <span class="keyword">if</span> abs(m(1,3)) < eps & abs(m(2,3)) < eps,0045 <span class="comment">% singularity</span>0046 euler(1) = 0;0047 sp = 0;0048 cp = 1;0049 euler(2) = atan2(cp*m(1,3) + sp*m(2,3), m(3,3));0050 euler(3) = atan2(-sp * m(1,1) + cp * m(2,1), -sp*m(1,2) + cp*m(2,2));0051 <span class="keyword">else</span>0052 euler(1) = atan2(m(2,3), m(1,3));0053 sp = sin(euler(1));0054 cp = cos(euler(1));0055 euler(2) = atan2(cp*m(1,3) + sp*m(2,3), m(3,3));0056 euler(3) = atan2(-sp * m(1,1) + cp * m(2,1), -sp*m(1,2) + cp*m(2,2));0057 <span class="keyword">end</span></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 + -