<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>基础几何 Archives - RoboDK 博客</title>
	<atom:link href="https://robodk.com/cn/blog/tag/%E5%9F%BA%E7%A1%80%E5%87%A0%E4%BD%95/feed/" rel="self" type="application/rss+xml" />
	<link>https://robodk.com/cn/blog/tag/基础几何/</link>
	<description>工业机器人应用从未如此简单</description>
	<lastBuildDate>Wed, 11 Jul 2018 23:58:22 +0000</lastBuildDate>
	<language>en-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>回到基础——理解几何旋转与欧拉角</title>
		<link>https://robodk.com/cn/blog/%e5%87%a0%e4%bd%95%e6%97%8b%e8%bd%ac%e4%b8%8e%e6%ac%a7%e6%8b%89%e8%a7%92/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2587%25a0%25e4%25bd%2595%25e6%2597%258b%25e8%25bd%25ac%25e4%25b8%258e%25e6%25ac%25a7%25e6%258b%2589%25e8%25a7%2592</link>
					<comments>https://robodk.com/cn/blog/%e5%87%a0%e4%bd%95%e6%97%8b%e8%bd%ac%e4%b8%8e%e6%ac%a7%e6%8b%89%e8%a7%92/#comments</comments>
		
		<dc:creator><![CDATA[RoboDK China]]></dc:creator>
		<pubDate>Sat, 26 May 2018 17:07:37 +0000</pubDate>
				<category><![CDATA[知识介绍]]></category>
		<category><![CDATA[基础几何]]></category>
		<category><![CDATA[机器人基础]]></category>
		<category><![CDATA[机器人旋转]]></category>
		<category><![CDATA[欧拉角]]></category>
		<guid isPermaLink="false">https://robodk.com/cn/blog/?p=604</guid>

					<description><![CDATA[<p>在机器人学习中，几何旋转可以说是其中的难点之一。提到旋转，就不能不提到欧拉角表达方式（也会涉及到其他的表达方式例如四元数），在这里，我们希望这篇基础知识能帮你更好地理解空间旋转。 机器人几何旋转！ 我们都知道，在三维空间里，要表达位置可以使用坐标[X, Y, Z]，坐标的三个数值基于一个原点的位置。如果要表达方向的话，就要用到旋转。当你需要为机器人末端执行器的位置跟方向编程的时候，你会明白旋转不是那么容易理解。 或许你觉得，我只需要移动机器人末端到这个位置，并指向那个方向就可以了啊。在实际操作中我们可以很容易地指出那个方向。然而，当你需要使用精确的数字来描述方向的时候，这个任务就复杂了。 在表达位移的时候，我们只需要[X, Y, Z]坐标就可以了。 比如 [X, Y, Z] = [100, 1000, 1500] mm 是代表空间内唯一的一个点，它在X方向距离原点100mm，Y方向1000mm，而Z方向是1500mm。以上三个数字是这个点的唯一描述，要想到达这个点的位置，你可以先从原点沿着Z轴移动1500mm，然后在Y轴移动1000mm，最后在X轴移动100mm，调换三个平移运动的顺序并不会改变这个点的坐标值。 但是，在表达方向的时候，就不是这样了。 你可以做这个旋转：[XYZ] = [5, 45, 15]o 或者，旋转：[XY&#8217;Z&#8221;] = [-7.9, 44.7, 16.2]o &#8230; </p>
<p>The post <a href="https://robodk.com/cn/blog/%e5%87%a0%e4%bd%95%e6%97%8b%e8%bd%ac%e4%b8%8e%e6%ac%a7%e6%8b%89%e8%a7%92/">回到基础——理解几何旋转与欧拉角</a> appeared first on <a href="https://robodk.com/cn/blog">RoboDK 博客</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>在机器人学习中，几何旋转可以说是其中的难点之一。提到旋转，就不能不提到欧拉角表达方式（也会涉及到其他的表达方式例如四元数），在这里，我们希望这篇基础知识能帮你更好地理解空间旋转。<span id="more-604"></span></p>
<h6>机器人几何旋转！</h6>
<p>我们都知道，在三维空间里，要表达位置可以使用坐标[X, Y, Z]，坐标的三个数值基于一个原点的位置。如果要表达方向的话，就要用到旋转。当你需要为机器人末端执行器的位置跟方向编程的时候，你会明白旋转不是那么容易理解。</p>
<p>或许你觉得，我只需要移动机器人末端到<strong><em>这个</em></strong>位置，并指向<strong><em>那个</em></strong>方向就可以了啊。在实际操作中我们可以很容易地指出<strong>那个</strong>方向。然而，当你需要使用精确的数字来描述方向的时候，这个任务就复杂了。</p>
<p>在表达位移的时候，我们只需要[X, Y, Z]坐标就可以了。</p>
<p>比如 [X, Y, Z] = [100, 1000, 1500] mm 是代表空间内唯一的一个点，它在X方向距离原点100mm，Y方向1000mm，而Z方向是1500mm。以上三个数字是这个点的唯一描述，要想到达这个点的位置，你可以先从原点沿着Z轴移动1500mm，然后在Y轴移动1000mm，最后在X轴移动100mm，调换三个平移运动的顺序并不会改变这个点的坐标值。</p>
<p>但是，在表达方向的时候，就不是这样了。</p>
<ul>
<li>你可以做这个旋转：[XYZ] = [5, 45, 15]<span lang="EN-US" style="margin: 0px; color: #404040; font-family: 'Helvetica',sans-serif; font-size: 10.5pt;"><sup>o</sup></span></li>
<li>或者，旋转：[XY&#8217;Z&#8221;] = [-7.9, 44.7, 16.2]<span lang="EN-US" style="margin: 0px; color: #404040; font-family: 'Helvetica',sans-serif; font-size: 10.5pt;"><sup>o</sup></span></li>
<li>再或者，旋转：[ZY&#8217;Z&#8221;] = [7.9, 45.2, 5]<span lang="EN-US" style="margin: 0px; color: #404040; font-family: 'Helvetica',sans-serif; font-size: 10.5pt;"><sup>o</sup></span></li>
<li>甚至，以四元数的方式：[q1, q2, q3, q4] = [0.9, -0.1, 0.4, 0.1]</li>
</ul>
<p>而以上不同的几组数字，表达的是同一个方向！</p>
<p>这非常难以理解，因为我们的大脑无法很好地想象出物体在3D空间里旋转的样子。而那么多的机器人生产商，都各自选择使用不同的方式来定义它们的机器人旋转！这可能会让人感到头疼，就算你已经对3D几何很熟悉了。</p>
<p>机器人需要准确的指令，控制它的运动方位。这就是引入欧拉角几何法的原因，因为我们不能很好地想象“旋转”。</p>
<h6>什么是欧拉角？</h6>
<p>让我们从基础开始介绍，它是最常见的机器人“方向”的表达。欧拉角由三个数字组成，每个数字代表环绕一个坐标轴旋转的角度。欧拉角也有不同的写法跟表达方式。</p>
<p>让我们从一个坐标轴开始，想象一个指南针，它的针头就相当于围绕着Z坐标轴旋转（一般来说，在世界空间中Z坐标为与地面垂直的轴，并指向天）。我们把指南针平放在手上观察它指向的角度，这代表着以北方为零度，你目前的方向角。不论你把指南针放在哪里（地上或者桌子上），它指向的角度都是一样的。我们的指南针只有一个旋转自由度，即围绕Z轴旋转。当你引入另外两个旋转时，情况就有些复杂了。</p>
<p>另外，我们提到的四元数方向表示法，则更加让人难以用脑子想象。</p>
<h6>使用软件工具帮助理解</h6>
<p>现在，我建议你下载免费的<a href="http://robodk.com/cn/download">RoboDK软件</a>试用版，你可以使用它更好地理解旋转，观察坐标系，以及它旋转后的效果。</p>
<p>打开RoboDK软件，添加一个“参考坐标系”。你可以看到一个由红绿蓝三色组成的坐标出现在屏幕中间（约定俗成的规则是，电脑中的RGB，即红绿蓝三原色，各代表X, Y, Z这三个坐标轴）。你可以按下Alt按键，用鼠标拖动弧形的红、绿、蓝色圆弧箭头来旋转这个坐标。</p>
<h6>如何“飞行”</h6>
<p>让我们拿飞机做个比方，想象你刚添加的坐标系是一架飞机。红色的X轴是它的机头，绿色的Y轴是它的机翼。此时，使用圆弧箭头旋转坐标系可以实现以下的功能。<a href="https://robodk.com/cn/blog/wp-content/uploads/2018/04/Euler-Angles-with-World.png"><img fetchpriority="high" decoding="async" class="alignright size-medium wp-image-431" src="https://robodk.com/cn/blog/wp-content/uploads/2018/04/Euler-Angles-with-World-300x263.png" alt="欧拉角" width="300" height="263" srcset="https://robodk.com/cn/blog/wp-content/uploads/2018/04/Euler-Angles-with-World-300x263.png 300w, https://robodk.com/cn/blog/wp-content/uploads/2018/04/Euler-Angles-with-World.png 762w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<ul>
<li>移动红色圆弧箭头，围绕X轴旋转，即相当于翻滚机身（Roll）。</li>
<li>移动绿色圆弧箭头，围绕Y轴旋转，即相当于机身俯仰（Pitch）。</li>
<li>移动蓝色圆弧箭头，围绕Z轴旋转，即决定飞机头指向的方向，又叫偏航（Yaw）。</li>
</ul>
<p>如果你需要让飞机既向它的左前方、又朝着地面方向飞行的话，正确的做法不是仅仅旋转偏航（Z轴）与俯仰（Y轴）两个角度，而应当是渐渐地调整可旋转的三个角度，保证飞机能缓和地降落。</p>
<p>使用鼠标拖动，试验一下首先压低俯仰角（围绕Y轴旋转），再向左翻滚（围绕X轴旋转），最后向左偏航（围绕Z轴旋转）。这三个旋转叠加起来可以表达为旋转：[YXZ]。试着来回移动几次，熟悉互相叠加的旋转角度。双击这个参考坐标系，可以查看坐标系详情。</p>
<h6>一个方向，多种表达！</h6>
<p>使用RoboDK，完成下面的任务。在每个任务之前，重置坐标系——在坐标详情菜单中，点击最右边显示为三条平行线的按钮，然后选择“重设“。</p>
<ol>
<li>在坐标系详情菜单中点击下拉菜单，选择Staubli (deg) 旋转表达方式。</li>
<li>重置坐标系，让坐标系围绕Y轴旋转180度。你会发现此时Z轴跟X轴都反向了。</li>
<li>重置坐标系，达到同样的旋转。但是先使用一个Z轴旋转，再进行X轴旋转。</li>
<li>重置坐标系，达到同样的旋转。但是先使用一个X轴旋转，再进行Z轴旋转。</li>
</ol>
<p>你已经发现了，需要达到同样的旋转效果，可以通过不同的方式。</p>
<p>第一种方式我们可以称它为围绕Y轴的旋转：[Y]，第二种是旋转：[Z, X&#8217;]，第三种是旋转：[X, Z&#8217;]。这个 &#8216; 上标表达的是该旋转是以上一次旋转为参考，而不是以绝对（世界）坐标系为参考。</p>
<p>这就是欧拉角背后的基本概念。你可以使用不同的方式得到同一个旋转——通过不同的转轴或者不同的旋转顺序。</p>
<p>不同的机器人生产商选择了不同的方式定义旋转。比如，史陶比（Staubli）使用的是XY&#8217;Z&#8221;，爱得普（Adept）使用ZY&#8217;Z&#8221;，库卡（KUKA）使用ZY&#8217;X&#8221;而发那科（Fanuc）与安川（Motoman）则使用XYZ。另外，ABB机器人使用四元数表达旋转，而优傲（UR）机器人使用方向矢量。以上这些定义都可以用于表达几何空间中的任何旋转。</p>
<h6>测试不同的旋转定义</h6>
<p>希望这篇文章让你对3D旋转跟几何方向有了更好的理解，虽然这只是个开始。你可以在坐标系详情菜单中观察旋转角度的变化；在默认的旋转设置（Generic），即通用的XYZ定义下，试着从下拉菜单中选择不同的机器人生产商，观察不同的角度数值，更好地理解它们。</p>
<p>The post <a href="https://robodk.com/cn/blog/%e5%87%a0%e4%bd%95%e6%97%8b%e8%bd%ac%e4%b8%8e%e6%ac%a7%e6%8b%89%e8%a7%92/">回到基础——理解几何旋转与欧拉角</a> appeared first on <a href="https://robodk.com/cn/blog">RoboDK 博客</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robodk.com/cn/blog/%e5%87%a0%e4%bd%95%e6%97%8b%e8%bd%ac%e4%b8%8e%e6%ac%a7%e6%8b%89%e8%a7%92/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
