<?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/%e6%9c%ba%e6%a2%b0%e8%87%82%e8%b7%af%e5%be%84%e8%a7%84%e5%88%92/feed/" rel="self" type="application/rss+xml" />
	<link>https://robodk.com/cn/blog/tag/机械臂路径规划/</link>
	<description>工业机器人应用从未如此简单</description>
	<lastBuildDate>Tue, 16 Jun 2020 02:43:17 +0000</lastBuildDate>
	<language>en-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>RoboDK的PRM运动规划器</title>
		<link>https://robodk.com/cn/blog/prm%e8%bf%90%e5%8a%a8%e8%a7%84%e5%88%92%e5%99%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=prm%25e8%25bf%2590%25e5%258a%25a8%25e8%25a7%2584%25e5%2588%2592%25e5%2599%25a8</link>
					<comments>https://robodk.com/cn/blog/prm%e8%bf%90%e5%8a%a8%e8%a7%84%e5%88%92%e5%99%a8/#respond</comments>
		
		<dc:creator><![CDATA[RoboDK China]]></dc:creator>
		<pubDate>Tue, 16 Jun 2020 02:43:15 +0000</pubDate>
				<category><![CDATA[RoboDK功能]]></category>
		<category><![CDATA[知识介绍]]></category>
		<category><![CDATA[PRM运动规划]]></category>
		<category><![CDATA[机械臂路径规划]]></category>
		<guid isPermaLink="false">https://robodk.com/cn/blog/?p=1013</guid>

					<description><![CDATA[<p>在工作中，我们并不总能保证自己的工作空间是整洁与自由开放的。这对于机器人的工作空间也是一样的道理。 有时候机器人真正可以工作的区域就是比我们原来计划的要小；或者有时候这个空间的正中间还有一根弄不走的柱子；又或者是一大堆无处可放置的箱子…… 只要你的机器人在工作时有可能与环境内的其他物体发生碰撞，我们的运动规划器就能够帮上你的忙。只需使用一个按键，你就可以在RoboDK的PRM运动规划器中创建出一条避免碰撞的机器人路径。 那么它是如何工作的呢？下面我们就来解读一下它的运作原理，以及你需要在什么时候用到这个功能。 PRM是什么意思？ RoboDK的运动规划器采用了一种叫做“PRM”的算法。这些字母的全称是“Probabilistic Roadmap”（概率路线图）。这是一种很常见的运动规划类型，我们稍后会作详细介绍。 对于机器人而言，有很多种不同的路径规划算法都能够适用，包括复杂的、简单的，以及极为精准的。如果你对运动规划器完全不熟悉，可以参考我们上一篇文章——运动规划基础。 以下就是PRM三个字母的具体解释： （编者注：我们在上一篇博文中介绍过配置空间） 字母P意为概率性的——“配置空间”内的点（即规划者用来确认机器人在工作空间内可以到达的一系列点） 由规划者随机选择。这样随机的配置即为“概率性的”，它相对立于“统一的”配置，即这些点被规律性地规划于整个工作空间中。 字母RM意为路径图。PRM算法是通过首先创建一个机器人工作空间的“路线图”来完成的。这个地图就像是你手机上的GPS导航一样。一开始的时候，你得花一些时间去生成这个地图，一旦生成后，你就不用再进行任何计算，而是可以很快捷地查询地图了。 结合这两者来说，PRM运动规划器具有以下两种属性： 它总能为你找到机器人可行的轨迹（如果该路线存在的话）。 它能够保存配置空间的路线图，让你更快速地进行查询。 这也是为什么PRM规划器如此受欢迎的两点原因。 PRM是如何运作的？ 不像别的一些运动规划器，PRM算法把其工作划分成了两个阶段。在你使用RoboDK的这个规划器以前，你需要设置几个参数。 设置阶段 有三个参数，是你需要在使用这个规划器以前手动设置的。以下是在RoboDK中的设置方法及各项介绍： 样本数量（Number of samples）——你需要选择一个“样本”数量，让规划器在“建设阶段”（见下文）可以在机器人的工作空间中进行定位。样本越少，意味着建设阶段的任务完成越快，但这也会使路线图变得更为粗糙。 样本的连线数（Edges per sample）——每个样本拥有“连线”的最大数量。每条连线都连接着两个样本。同样地，连线数越少，意味着建设阶段越快，但这也会使路线图变得更为粗糙。 机器人步进角度（Robot step (deg)）——当PRM算法在建设阶段运行时，它每次会小距离地移动机器人。这个距离就取决于机器人步进的设置。步进越大，意味着建设阶段越快，然而这样也会出现规划器无法注意到潜在碰撞的风险。 &#8230; </p>
<p>The post <a href="https://robodk.com/cn/blog/prm%e8%bf%90%e5%8a%a8%e8%a7%84%e5%88%92%e5%99%a8/">RoboDK的PRM运动规划器</a> appeared first on <a href="https://robodk.com/cn/blog">RoboDK 博客</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>在工作中，我们并不总能保证自己的工作空间是整洁与自由开放的。这对于机器人的工作空间也是一样的道理。</p>



<span id="more-1013"></span>



<p>有时候机器人真正可以工作的区域就是比我们原来计划的要小；或者有时候这个空间的正中间还有一根弄不走的柱子；又或者是一大堆无处可放置的箱子……</p>



<p>只要你的机器人在工作时有可能与环境内的其他物体发生碰撞，我们的运动规划器就能够帮上你的忙。只需使用一个按键，你就可以在RoboDK的PRM运动规划器中创建出一条避免碰撞的机器人路径。</p>



<p>那么它是如何工作的呢？下面我们就来解读一下它的运作原理，以及你需要在什么时候用到这个功能。</p>



<h3 class="wp-block-heading">PRM是什么意思？</h3>



<p>RoboDK的运动规划器采用了一种叫做“PRM”的算法。这些字母的全称是“<a href="https://en.wikipedia.org/wiki/Probabilistic_roadmap">Probabilistic Roadmap</a>”（概率路线图）。这是一种很常见的运动规划类型，我们稍后会作详细介绍。</p>



<p>对于机器人而言，有很多种不同的路径规划算法都能够适用，包括复杂的、简单的，以及极为精准的。如果你对运动规划器完全不熟悉，可以参考我们上一篇文章——<a href="https://robodk.com/cn/blog/运动规划基础/">运动规划基础</a>。</p>



<p>以下就是PRM三个字母的具体解释：</p>



<p><em>（编者注：我们在上一篇<a href="https://robodk.com/cn/blog/运动规划基础/">博文</a>中介绍过<strong>配置空间</strong>）</em></p>



<p>字母P意为概率性的——“配置空间”内的点（即规划者用来确认机器人在工作空间内可以到达的一系列点） 由规划者随机选择。这样随机的配置即为“概率性的”，它相对立于“统一的”配置，即这些点被规律性地规划于整个工作空间中。</p>



<p>字母RM意为路径图。PRM算法是通过首先创建一个机器人工作空间的“路线图”来完成的。这个地图就像是你手机上的GPS导航一样。一开始的时候，你得花一些时间去生成这个地图，一旦生成后，你就不用再进行任何计算，而是可以很快捷地查询地图了。</p>



<p>结合这两者来说，PRM运动规划器具有以下两种属性：</p>



<ol class="wp-block-list" type="1"><li>它总能为你找到机器人可行的轨迹（如果该路线存在的话）。</li><li>它能够保存配置空间的路线图，让你更快速地进行查询。</li></ol>



<p>这也是为什么PRM规划器如此受欢迎的两点原因。</p>



<h3 class="wp-block-heading">PRM是如何运作的？</h3>



<p>不像别的一些运动规划器，PRM算法把其工作划分成了两个阶段。在你使用RoboDK的这个规划器以前，你需要设置几个参数。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="575" src="https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-1-1024x575.png" alt="" class="wp-image-1036" srcset="https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-1-1024x575.png 1024w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-1-300x168.png 300w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-1-768x431.png 768w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-1.png 1031w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">设置阶段</h4>



<p>有三个参数，是你需要在使用这个规划器以前手动设置的。以下是在RoboDK中的设置方法及各项介绍：</p>



<ol class="wp-block-list" type="1"><li>样本数量（Number of samples）——你需要选择一个“样本”数量，让规划器在“建设阶段”（见下文）可以在机器人的工作空间中进行定位。样本越少，意味着建设阶段的任务完成越快，但这也会使路线图变得更为粗糙。</li><li>样本的连线数（Edges per sample）——每个样本拥有“连线”的最大数量。每条连线都连接着两个样本。同样地，连线数越少，意味着建设阶段越快，但这也会使路线图变得更为粗糙。</li><li>机器人步进角度（Robot step (deg)）——当PRM算法在建设阶段运行时，它每次会小距离地移动机器人。这个距离就取决于机器人步进的设置。步进越大，意味着建设阶段越快，然而这样也会出现规划器无法注意到潜在碰撞的风险。</li></ol>



<p>设置好这几项以后，你就可以点击“更新线路图”，并进入建设阶段了。</p>



<h4 class="wp-block-heading">阶段1：建设（缓慢）</h4>



<p>规划的第一阶段是要生成路线图。这可能会耗费很长时间（以100个样本和每个样本25个连线来计算，这大概需要15-30分钟）。而这就是规划器在建设阶段背后的运作方式：</p>



<ol class="wp-block-list" type="1"><li>规划器把一个“样本”放置在机器人工作区域内的自由空间中。</li><li>算法会对这个样本及其周围样本的路径进行测试。它通过设定的“机器人步进角度”来移动机器人，并检测是否有碰撞的情况。如果这个路径是可行的，它将把这作为一条“连线”加入到路线图当中。</li><li>当规划器对这个样本的测试达到最大连线数值时，它就会继而处理下一个样本。</li></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-2-1024x576.png" alt="" class="wp-image-1037" srcset="https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-2-1024x576.png 1024w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-2-300x169.png 300w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-2-768x432.png 768w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-2.png 1047w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>现在你知道为什么这需要花很长时间了吧——因为这个算法需要测试许多的样本。但好在只要路线图创建完成，你就不用再费心进行计算了（除非你在环境中加入了新的物件）。</p>



<h4 class="wp-block-heading">阶段2：查询（快速）</h4>



<p>查询阶段正是你在使用运动规划器时常会用到的。你需要在规划器中设定两个目标（开始目标和结束目标）。规划器将会通过存档的路线图，在它们之间创建出一条免碰撞的轨迹。</p>



<p>以下就是规划器在这一阶段背后的运作方式：</p>



<ol class="wp-block-list" type="1"><li>你需要选择两个目标，并让规划器连接它们。</li><li>如果其中一个目标并不存在于已有的路线图上，规划器会把其新增为新的样本，并在这个新的点和周围已有的样本之间，对其创建一系列连线。</li><li>之后规划器会通过路线图来找到两个目标之间最短的路径。</li></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="577" src="https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-3-1024x577.png" alt="" class="wp-image-1038" srcset="https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-3-1024x577.png 1024w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-3-300x169.png 300w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-3-768x433.png 768w, https://robodk.com/cn/blog/wp-content/uploads/2020/06/RoboDK-PRM-Planner-3.png 1137w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>通过使用细节充分的路线图，你就可以通过一个按键，创建出复杂而且免碰撞的机器人路径了。</p>



<h3 class="wp-block-heading">我在什么情况下需要运动规划器？</h3>



<p>通常，在RoboDK中最简单的运动编程方式，还是通过标准的关节运动、线性运动或圆弧运动<a href="https://robodk.com/doc/cn/Robot-Programs.html#ProgInstructions">指令</a>来进行手动规划。这仍然是让机器人在两个目标之间移动的最快捷的方法。</p>



<p>然而，这些标准方法只适用于两个目标之间皆是自由空间的情况下。如果在两点间有任何物体，你可能就需要花费很多时间来设定中间的机器人目标，以避免碰撞以及机器人极限或奇异状态。</p>



<p>运动规划器让你得以使这一过程自动化。它会自动帮你找到一个好的运动计划，以在目标之间无碰撞地移动机器人。</p>



<p>然而，这当然还需要你按需权衡。因为在规划器为你找到可用路径之前，你必须先消耗大量时间以等待“建设阶段”的完成。不过，大部分情况下，这样的等待还是值得的。一旦你做好了前期设定，你就可以一边去做别的事情，一边等待它自己完工了。</p>



<figure><iframe loading="lazy" width="510" height="498" src="https://player.youku.com/embed/XNDcwNzM1OTU2MA==" frameborder="0" 'allowfullscreen'=""></iframe></figure>
<strong>（如视频不能正确加载请点击<a href="https://v.youku.com/v_show/id_XNDcwNzM1OTU2MA">链接</a>至优酷观看）</strong>



<p></p>
<p>The post <a href="https://robodk.com/cn/blog/prm%e8%bf%90%e5%8a%a8%e8%a7%84%e5%88%92%e5%99%a8/">RoboDK的PRM运动规划器</a> appeared first on <a href="https://robodk.com/cn/blog">RoboDK 博客</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robodk.com/cn/blog/prm%e8%bf%90%e5%8a%a8%e8%a7%84%e5%88%92%e5%99%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
