专用机器人运动规划硬件及其制造和使用方法与流程

文档序号:11282503阅读:259来源:国知局
专用机器人运动规划硬件及其制造和使用方法与流程

相关申请的交叉引用

本申请要求于2015年1月26日提交的美国临时专利申请序列号62/107,755的优先权,其全部内容通过引用并入本文,包括任何图形、表格和附图。



背景技术:

当今许多最令人兴奋的计算机应用是机器人技术。机器人的最新进展大大拓展了机器人改变人们生活方式的机会。机器人正在为广泛的现实应用开发,包括保健、个人援助、通用制造、搜索和救援以及军事行动。与机器人在严格控制的环境(例如在环境静止并且先验已知的装配线)上操作的传统机器人应用不同,这些应用需要机器人执行运动规划。

运动规划是确定机器人如何实现目标的过程。例如,机器人可能希望移动其臂以触及所期望的物体而不与其自身或任何其它物体相碰撞。执行运动规划以导航和操纵物体的能力对于处理没有严格控制或设计的自然环境至关重要。机器人首先感知关于其周围的物理世界的信息,然后计算机确定如何控制物理机器人,以便机器人可以在该感知的环境中导航。

在许多情况下,对机器人实用性的一个主要制约因素是他们在有障碍的环境中执行实时运动规划的能力。运动规划算法往往是计算密集型的,需要对每个运动进行大量的碰撞检查。用于碰撞检测的现有技术通常依靠运行在一个或多个通用处理器和/或图形处理单元(gpu)上的软件中实现。然而,通用处理器上的运行检测软件对于实时运动规划并不太快,并且/或对于许多目标应用程序来说太耗电(如果使用gpu)。



技术实现要素:

提供专业的机器人运动规划硬件及其制造和使用方法。所描述的硬件可以解决实时运动规划的挑战。所描述的系统和方法可以采用特定的机器人并且生产能够对该机器人执行实时运动规划的低功率、低成本的硬件架构。

本文描述的机器人运动规划硬件可通过使用软件工具来设计,所述软件工具使用用于特定机器人的所接收到的机器人描述和接收的场景描述以生成概率路线图(prm)。然后,对于prm的每个边缘,软件工具为该边缘的碰撞检测单元生成一个设计。碰撞检测单元被实现为一种计算电路,以计算与该边缘相对应的运动是否与障碍点或表面相撞。特定机器人由其碰撞几何形状、每个关节的自由度及其关节限度来定义;并且在机器人描述中提供该信息。场景描述可以包括用于固定场景、障碍物的分布、启动机器人姿态的分布以及目标姿态的分布的参数。

对于特定机器人,可以提供一个运动规划硬件包括配置成并行处理输入的多个碰撞检测单元,每个碰撞检测单元具有用于其概率路线图的相应边缘的电路。电路可以包括布尔逻辑门和/或查找表。为了执行机器人运动规划,机器人在其运动规划硬件处接收从机器人的传感器系统捕获的环境数据和目标位置数据,并在运动规划硬件的每个碰撞检测单元处,输出一条指令判断对应于碰撞检测单元的概率路线图的边缘与环境数据中识别的障碍物的一部分是否碰撞。运动规划硬件的输出用于去除可能导致在环境中的碰撞的概率路线图的边缘。然后,可以执行概率路线图的图形搜索,以识别机器人的当前位置与沿概率路线图的剩余边缘的目标位置之间的最短路径。

本发明内容旨在以简化的形式介绍一些概念,这些概念在下面的详细描述中进一步描述。本发明内容不旨在标识所要求保护的对象的主要特征或基本特征,也不旨在用于限制所要求保护的对象的范围。

附图说明

参考以下附图可以更好地理解本公开的许多方面。虽然结合这些附图描述了几个实现和示例,但是本公开不限于本文公开的实现和示例。

图1a-1c示出了使用一概率路线图的运动规划。

图2示出了通过从第一位置到第二位置的运动产生的扫描体积。

图3示出了示例性运动规划过程。

图4示出了用于生成运动规划硬件设计的一过程,这可以由在计算设备上执行的软件工具来执行。

图5示出了机器人运动规划硬件架构的一高级概述。

图6是示例运动规划硬件的一高级示意图。

图7是符号文本,用于一个示例性边缘配置,以馈送到电路生成软件。

图8示出了用于机器人运动规划硬件的示例性生成电路的一部分。

具体实施方式

提供专业的机器人运动规划硬件及其制造和使用方法。所描述的硬件可以应对实时运动规划的挑战。所描述的系统和方法可以采用特定的机器人并且生产能够对该机器人执行实时运动规划的低功率、低成本的硬件架构。

图1a-1c示出了使用一概率路线图的运动规划。如背景技术中所提到的,运动规划是指用于识别机器人为了从一个位置移动到另一个位置直到机器人达到期望位置的运动过程。由于关节式机器人由一组通过关节连接的刚体形成,运动规划确定从一个姿态到另一姿态的运动,直到达到目标姿态。

关节式机器人的姿态可以通过将位置分配给其所有关节来描述。所有这种关节位置的空间称为机器人的配置空间(通常称为c空间),表示为q。q中的某些配置(关节位置)会导致与机器人环境或机器人本身的一个障碍物碰撞;q的剩余部分称为自由空间。

机器人运动规划问题包括从一些起始配置q0到一组目标配置中的任何配置g,找到通过自由空间的一条路径,如图1a所示。参考图1a,c空间100可以包括障碍物碰撞区域102,104和自由空间110。可以通过自由空间110从起始配置122到目标配置组124中的配置来找到路径120。

解决运动规划问题的常用方法是构建概率路线图(prm),如kavrakiet在“高维配置空间中路径规划的概率路线图”(1996年8月,566-580期,4号,12卷,ieee机器人与自动化学报)中所述,其全部内容通过引用并入本文。prm由图形组成,其中每个节点是c空间中的一个点,如果一对点之间的直接移动可能没有碰撞则相互连接,如图1b所示。参考图1b,在配置空间100的自由空间110中示出了节点130和边缘140(连接两个节点的线)的prm。

给定点(q0,g),可以通过尝试从每个节点到q0和g找到无碰撞的连接,然后在它们之间的图形中找到路径,找到一个运动规划。如图1c中所示,其中可以发现从q0到g的路径150将是无碰撞的。

如上所述,通过确定配置空间中的两点之间的直线路径(表示每个机器人接头从一个位置到另一个位置的直接移动)是否与障碍物相冲突来构造prm,此被称为“碰撞检测”。可以通过构建每个机器人运动的扫描体积的几何模型来进行碰撞检测。扫描体积是指当从一个位置移动到另一个位置时,机器人通过该空间(三维)移动的空间。

图2示出了通过从第一位置到第二位置的运动产生的扫描体积。在示例性运动中,具有第一刚体201的一条手臂在第一接头203处连接到一个底座202,且当手臂在位置1和位置2之间移动时,通过第二接头205连接到第一刚性体201的第二刚体204形成一种体积,称为“扫描体积”210。

图3示出了一示例性运动规划过程。参考图3,整个运动规划过程300具有两部分:离线部分和实时部分。初始的离线部分从创建prm(301)开始。这个步骤可以在机器人的运动规划硬件设计完成之前进行,但是专用于特定的机器人。为了在操作301中创建prm,从机器人的c空间对节点进行采样,并且如果边缘被确定为不引起自碰撞,则将边缘添加在采样节点之间。也就是说,例如当机器人从由一个节点表示的配置移动到由另一个节点表示的配置时,如果移动将导致臂与机器人碰撞,则边缘不包括在初始prm图中。

可以图形数据结构的形式存储的prm可根据一些效用函数可选地被精简(或“缩减”)去除某些边缘。初始(和可选精简的)prm仅在除了机器人本身之外没有其他障碍的自由空间中具有边缘。该prm可以存储在机器人的存储系统中,以便在运动规划期间使用。该prm可以用于该特定机器人的运动规划硬件的设计(下面更详细地描述)。

然后,实时地使用创建离线的prm(并且其可存储在机器人的存储系统上),由于感知环境中的障碍物不在自由空间中的边缘被禁用(302)。机器人运行过程中,机器人将机器人环境分析并传送到运动规划硬件。应当理解,机器人捕获和分析的环境不一定只在机器人当前位置和目标位置之间的直接路径中。机器人可以仅在迂回的路线中具有有效的路径(并且该路径甚至可能不在目标姿态的总视线内)。机器人可以包括或与任何可以检测和分析环境的传感器系统通信。例如,机器人可以具有能够接收红色、绿色、蓝色和深度信息(例如,经由红外线)的一个或多个相机传感器。作为另一示例,相机(或其他传感器)可以位于环境中的一个或多个位置,例如在环境中的墙壁、天花板、地板和/或物体(如桌子,盒子等)上。从环境中的传感器获取的环境信息可以通过有线或无线方式传输到机器人。

可以分析从传感器输入接收的数据,以识别环境中的物体,将其视为障碍物。物体识别可以被包括在提供给运动规划硬件的环境信息中。在某些情况下,对象由体素(例如3d像素)的值表示。在另一种情况下,在环境中检测到的对象可以表示为由三角形组成的网格模型,其中三角形的每个顶点以其3d坐标进行描述。当然,在某些实现中可以使用其他表示,例如概率占用网格或八进制字符串。

一旦将环境信息提供给运动规划硬件,运动规划硬件可以通过首先以prm中的所有机器人运动首先检测障碍物的一部分(由机器人以某种方式表示)的碰撞来开始禁止prm的边缘,从而导致与障碍物的碰撞。例如,环境的图像捕获可以识别机器人环境中的灯(或其他对象)。灯(或至少其表面)的3d坐标可以馈入硬件进行并行分析。

在硬件中,为prm的每个边缘提供碰撞检测单元。每个碰撞检测单元可以将搏击体积视为具有单个布尔函数,以确定扫描体积是否与3d空间中的特定点相撞。也就是说,每个碰撞检测单元可以由一个布尔函数f(对象边缘)的逻辑组成,如果对象表面上的点(由传感器系统感知到)与该机器人运动相碰撞,则该逻辑将评估为真。该布尔函数的示例符号文本如图7所示。布尔函数具有多个输入等同于用于描述3d空间中的点的位数。在实施例中,15位用于描述3d空间中的一个点(每个轴为5位),因此15个输入被提供用于执行布尔函数的电路。

对于典型的环境和应用,描述3d空间中的点的坐标不必非常精细。机器人运动规划比确定两个物体是否碰撞的物理模拟要求要小得多;物理模拟需要准确地知道物体是否碰撞,而机器人运动规划只需要避免碰撞,即使这是保守操作(例如,消除保守的路径,即使该路径可能是无碰撞的)。通过保守地预测两个物体何时会发生碰撞,可以以少数位进行计算。例如,可以使用5位定点算术进行计算,而不是进行更昂贵的32位浮点运算。为了说明较低分辨率如何在典型环境下仍然足够,考虑可以在1立方米盒子周围导航的具有手臂的机器人。仅使用5位来描述坐标,每个维度上的点的位置仍然可以解析为1米/25,约为3.1厘米。

一旦执行了碰撞检测,如果机器人在由这些边缘连接的节点对之间移动,导致碰撞的prm的边缘可以使用碰撞检测的结果被禁用。例如,每个碰撞检测单元的输出可以是单个位、标志或其他标记,用于判断是否存在由该碰撞检测单元表示的边缘与障碍物的一部分之间的碰撞。运动规划硬件的输出用于去除可能导致环境碰撞的概率路线图的边缘。

通过移除可能引起碰撞的边缘,剩余边缘可用于确定法定运动计划(304)。例如,如果与该边缘相对应的电路指令不存在碰撞,则机器人可以通过将概率路线图的图形数据结构的边缘识别为有效来确定法定运动计划。然后,可以在图形上执行图形搜索。运动规划硬件处理器或在机器人上运行的软件可以使用有效边缘(从碰撞检测单元的输出表示为无碰撞)来选择路径。例如,可以使用迪杰斯特拉最短路径算法,或者可以使用贝尔曼-福特算法。

如图3所示,运动规划处理300的一部分被预先进行离线执行,使得在机器人在环境中操作时可以实时地进行关于运动规划的决定。这种运动规划的实时决策能力是由于使用了特殊的机器人运动规划硬件。

图4示出了用于生成运动规划硬件设计的一个过程,其可以由在计算设备(例如通用计算机)上运行的软件工具来执行。这里描述的机器人运动规划硬件可以使用软件工具来设计,以使用接收到的机器人描述用于特定机器人401和接收到的方案描述402以生成prm(403)。然后,对于prm的每个边缘,软件工具产生一个设计用于该边缘(404)的碰撞检测单元。为边缘的碰撞检测单元生成的示例设计如图7所示。碰撞检测单元是一种电路,由逻辑门和/或查找表组成,其检测prm中的边缘(对应于扫描体积)与环境中存在的障碍物(例如,空间中的3d点)之间的碰撞。该软件工具可以输出一种描述碰撞检测单元电路的电路设计文件405。根据实施例,电路设计文件405可以以各种文件格式实现,使得该文件适合于用于对现场可编程门阵列(fpga)进行编程,用于直接或间接用于集成电路制造的布局软件,或与用于创建硬件处理器的其他设计软件结合使用。

通过机器人描述401和场景402的两个输入,运动规划硬件设计考虑并且可以适应的大范围可能的机器人和环境类别。

特定机器人由其碰撞几何形状,每个关节的自由度及其关节限制来定义;并且在机器人描述404中提供这样的信息。在一些情况下,机器人描述401可以以行业标准的统一机器人描述格式(urdf)文件的形式提供。urdf文件指定机器人的碰撞几何形状,其显示几何(通常为了可视化目的而不同),以及每个关节的自由度以及关节限制,几乎可以从机器人制造商获得。当然,可以使用现在或以后已知的其他标准化形式。

因为运动规划硬件是为特定的机器人设计的,所以可以实现高效的处理器。由于运动规划硬件不需要为任意的机器人执行一般的运动规划,所以产生了一些这样的效率。例如,如果一个场景涉及两个臂长为3英尺长的机器人,那么处理器需要针对这两个特定的臂来规划运动,并且不需要考虑离机器人3英尺更远的物体。此外,通过将处理器调整到特定的机器人,即使在处理器设计之前,也可以离线执行许多昂贵计算(例如,高功率使用或低速度)。例如,仅依赖于机器人本身的等式结果(例如,用于确定是否移动一个机器人臂将导致与另一个机器人手臂的碰撞的计算)可以被预先计算,并且这些预计算的结果嵌入到处理器中。离线执行这些计算的能力避免了在现场执行这些时间密集和/或处理密集型计算。

场景描述402可以包括参数用于固定场景(例如,地板、墙壁、工作空间大小、在一定高度的桌子),障碍物(位置、大小和形状)的分布、启动机器人姿态的分布和目标姿态的分布。如本文所使用的,“场景”是指一类环境,例如“桌上带有对象的桌面”或“具有对象的书架”。一个场景包括障碍物数量及其位置、大小和形状的分布。一个场景还包括机器人启动姿态和目标姿态与各种机器人部件位置的分布。在任何给定的时间,机器人需要对从一个场景中抽出的一个任务执行运动规划。例如,如果场景是“3英尺高的桌子上的对象”,给出了障碍物数量、障碍物位置、障碍物大小/形状以及机器人启动和目标姿态的分布情况,则预计机器人不需要能够将其手臂移到桌子下方。作为另一个例子,在许多情况下,机器人不可能将其手臂移到自身后面。这种场景的先验知识节省了资源(并且致力于更多的硬件)来解决预期的运动规划问题。如果在给定的环境中有多个场景是可能的,那么在场景发生变化时,可以利用有效地实现可能场景的并集的复合场景,或重新配置机器人运动规划硬件。

该软件工具可以执行某些优化,以输出紧凑的设计,以适应例如fpga,但也很有可能为从场景中提取的问题来制定计划。应当理解,机器人运动规划硬件的实现可以被实现为专用集成电路(asic),fpga或其他电路。

例如,软件工具可以可选地缩减在步骤403中生成的prm的边缘以减少prm中的边缘总数。该可选过程(406)可以根据贡献因子包括创建问题实例和缩减边缘。贡献因子是初始prm中的边缘有助于找到问题实例的最小解决路径的程度。如果一个边缘不是频繁地或者是参与最小解决路径,那么它可以被去除。

在某些情况下,来自场景描述402的场景描述用于生成多个具体的问题实例。可以基于在prm中找到路径的失败容限来选择问题实例的数量。例如,可能产生数十、数百、数千或更多的问题实例。问题实例是指在场景描述402中由场景描述生成的情景/障碍物/开始/目标元组。问题实例表示满足给定情景的约束的一个运动规划问题。对于每个问题实例,评估该实例以确定prm中的每个边缘对找到最小解决路径有多大的贡献(例如,由估计概率定义的边缘的有用性,其中边缘是解决从场景中提取的问题所必需的)。实际上,软件工具使用每个问题实例描述的环境/场景来运行运动规划硬件的仿真。

在一种情况下,边缘的缩减可以基于边缘的平均贡献,使得保持满足或超过阈值的那些边缘以及不去除那些边缘。在另一种情况下,边缘可以通过平均贡献进行排序,并且仅保留前十、百、千或其他数量的边缘(处理器的边缘预算的数量)。在许多情况下,可以迭代地删除最少的“有用”边缘,直到达到总边缘预算。也可以并入使用无任何背景任务知识来稀释和缩减路线图的可用算法。虽然缩减过程可能非常计算昂贵,但它只需要在每个机器人/场景计算一次,并且脱机执行。

如果c空间中的点被随机抽样,则概率地完成prm的使用。随着算法对c空间中的更多点进行采样,找到路径解决方案的概率趋向于1。然而,通过将prm固定在处理器设计中,特别是在给出硬件和prm边缘的固定预算时,可能会遇到无法找到路径解决方案的情况。为了在使用固定的prm处理器设计时最小化这种情况,生成prm的过程(例如,软件工具)可以包含满足给定情景约束的样本运动规划问题的模拟。此外,可以并入场景特定的抽样策略。例如,预期在特定场景中有帮助的样本(例如指令在桌子上方进行抽样以处理可能涉及在桌子上或附近的操作的任务)可以被特别地并入。关于可选过程406描述这些模拟。

另一最佳优化可以包括减少实施碰撞检测单元(407)的门数。例如,可以使用布尔最小化。

在一个实现中,用于建模机器人运动的klampt开源软件用于产生机器人和场景特定的prm(在操作403中)。可以使用优化步骤406和/或407来优化该prm以适合于fpga。如上所述,一旦prm被缩减(例如,在过程406中),缩减后的prm可用于产生一组碰撞检测单元电路(如操作404中所述)。然后可以优化碰撞检测单元电路,以使用布尔最小化(例如,使用espresso逻辑最小化器)来减少门数(407)。可以根据软件工具生成的设计,为所需的机器人/场景配置(并重新配置)fpga。

在步骤406和/或407期间可以执行许多额外的优化。例如,可包含一个机器人的c空间战略采样,以进一步优化设计。典型算法随机选择点,以便提供有关找到路径的概率保证。然而,某些实施策略性地在c空间中采样点以最小化执行碰撞检测所必需的硬件和/或利用特定机器人的预期场景。给定一个固定硬件和功率预算,如果碰撞检测单元较小并且消耗更少的功率,则可以在硬件中表示更大的prm(具有更多样本,因此具有更多运动选项)。为了减小碰撞检测单元的尺寸和功率,观察到并非所有的机器人运动都将具有相同大小的电路来确定与物体/障碍物的碰撞。因此,可以选择c空间中的点,以获得扫描体积,其电路更适合于本地逻辑最小化(即,需要更小的电路)。此外,可以选择c空间中的点,以便于交叉碰撞检测单元的全局逻辑优化。如在下面的图7所示的示例中,可以使用15位来描述3d空间中的点,这意味着具有215个条目的真值表。由于这些真值表中的大多数将是稀疏的,所以可以有效地计算布尔函数(例如,对扫描体积使用边界框),并且可以预期导致相对较小的电路(当使用例如espresso逻辑最小值进行优化时)。实际上,实验发现,大多数的真值表可以被优化为只有几十个逻辑门。

除了本地优化每个碰撞检测单元的逻辑(例如,通过使用espresso)之外,可以全局优化交叉碰撞检测单元。许多动作都将具有相似的真值表,并且可以利用这种相似性来优化全局。使用espresso进行的初步实验和3维空间中非常简单的机器人手臂发现,许多常见的子表达式可以被考虑用于全局优化。尽管实验配置仅限于在16个碰撞检测单元之间进行优化(由于实验中使用的espresso逻辑最小值),实际上可以在任意数量的碰撞检测单元中进行全局优化。

战略抽样的另一个机会(从而优化)针对的是机器人将面临的情况以已知的形式出现,以起始点、目标和障碍物的分布形式。例如,在许多情况下,机器人更有可能被要求产生一个计划,以将其夹持器放置在其前面的工作空间中,而不是在其自身肩部上方和后方的区域。类似地,在许多情况下,障碍物更可能出现在工作空间区域或工作区域的远侧,而不是直接在机器人手肘前面。在某些情况下,障碍可能很小,而在其他情况下,障碍可能很大。关于场景的这种粗略的先前信息在许多现实世界的应用中很容易描述。在这种情况下,我们可以自适应地将我们的样本放置在,例如提供更简单的配置覆盖,其中机器人的手臂在肩膀后面。

图5示出了机器人运动规划硬件架构的一高级概述。参考图5,用于运动规划的高级架构500,涉及机器人规格501、运动规划目标502、障碍物数据503、碰撞检测结果504和运动计划505。具体地,机器人运动规划硬件510使用机器人规格501、运动规划目标502和障碍物数据503来生成碰撞检测结果504和运动计划505。如上所述,机器人规格501(甚至运动规划目标502)可以离线地使用来生成用于实时运动规划的硬件。可以经由接口520将机器人运动规划硬件510的输出提供给机器人,使得机器人可以对运动计划505起作用。

图6是示例运动规划硬件的一高级示意图。机器人运动规划硬件可以是一个专用运动规划处理器600。运动规划处理器包括一个碰撞检测单元(例如,601,602,603...,60x),用于机器人的每个可能的运动(或至少由软件工具产生的prm中的每个运动)和路径计算单元610。

处理器的输入描述了环境中的障碍和路径目标(运动规划目标)612。障碍物信息611由碰撞检测单元接收。在优选实施例中,所有碰撞检测单元并行运行。然而,在一些实现中,碰撞检测单元可以被分时复用以服务于多个机器人运动。运动规划目标612和碰撞检测单元601,602,603...,60x的输出被提供给路径计算单元610,其中执行图形搜索以识别用于实现目标的路径。处理器的输出是路径613,和可选地是碰撞检测信息。

参考图6,对于特定机器人,可以提供一个运动规划硬件,其包括被配置为并行处理输入的多个碰撞检测单元,每个碰撞检测单元具有一个电路,具有逻辑门和/或查找表,用于其概率路线图的相应边缘。为了执行机器人运动规划,机器人在其运动规划硬件处接收从机器人的传感器系统捕获的环境数据和目标位置数据,并在运动规划硬件的每个碰撞检测单元处输出一条指令,关于对应于碰撞检测单元的概率路线图的边缘是否与所接收的数据中标识的障碍物的一部分发生碰撞。运动规划硬件的输出用于去除可能导致环境碰撞的概率路线图的边缘。然后,可以执行概率路线图的图形搜索以识别沿着概率路线图的剩余边缘的最短路径。

可以包括对碰撞检测电路的附加输入,例如用于处理某些机器人运动,例如但不限于抓握、夹紧、推动、移动及其组合。根据机器人规格,可以通过机器人主体的各个部分执行某些动作。可能的机器人运动可以被建模并结合到硬件设计中。例如,对于特定机器人可以抓住对象并与对象一起移动(例如在常见的“拾取和放置”任务中)的情况,机器人抓握中的对象可以非常粗略地被建模为立方体。然后,处理器可以被配置为激活每只手中包含的多个对象尺寸中的一个。这将增加少量的输入到碰撞检测电路,但是大大增强了计划器的灵活性。

运动规划所需的大部分计算工作涉及检测运动是否会导致碰撞。如前所述,碰撞检测在计算上是昂贵的。然而,通过使用所描述的运动规划硬件并行地执行某些处理,可以同时检测针对大量障碍物的大量机器人运动的碰撞。

有利地,运动规划硬件不需要在通用cpu或gpu中找到的通用硬件,因为运动规划硬件不需要读取和解码指令,执行ieee-754兼容浮点运算或者在通用处理器中消耗硬件和能量的各种其他功能。实际上,由于实现运动规划目标所需的精度是先验已知的,所以硬件可以被定制成以恰好的粒度来执行操作,即使它恰好是不寻常的宽度(例如,9位固定点)。

图7是符号文本,用于生成馈送到电路生成软件的一个示例性边缘配置。在图7中,示出了单个边缘的逻辑。在这个例子中,被发现有可能与该边缘碰撞的障碍物一部分(表示为空间中的3d点)由x轴为5位、y轴为5位、z轴为5位,总计15位所表示。每个位都有两个可能的值:一个由字母(例如,a)表示,另一个由非字母(例如,!a)表示。符号文本中反映出70个碰撞。电路生成软件然后使用and,or,not,nand和nor门和/或查找表来实现符号文本。在某些情况下,可以通过将部分或全部门转换为nor或nand逻辑来优化(减少)门数。

图8示出了用于机器人运动规划硬件的示例性生成电路的一部分。参考图8,一个运动规划硬件边缘逻辑,例如边缘-1800的边缘逻辑,可以包括具有表示障碍物的每个部分的逻辑门812的一个布尔电路810,其中单个边缘(扫描体积)将会or门814oring障碍物部分的布尔逻辑表示相碰撞,例如由图7的符号文本描述的,以输出一个位。可以包括一个触发器820以存储布尔电路810的单位输出的值,使得在需要时可以在输出端读取适当的值。为每个边缘提供边缘逻辑(例如,边缘-1800的边缘逻辑和边缘-2830的边缘逻辑),使得当接收到表示障碍物的一部分的输入时,用于所有边缘的运动规划硬件边缘逻辑可以并行处理该输入。

图9示出了可并入本文描述的机器人运动规划硬件的示例性机器人的一框图。参考图9,机器人900可以包括传感器系统910、致动器系统920、处理系统930、存储系统940和机器人运动规划硬件950。尽管未示出,机器人900可以包括用于根据需要向各种部件供电的电力系统。可以使用电池,或者电力系统可以包括有线(例如,交流适配器和插头)和无线装置(例如,使用换能器和充电存储装置)用于供电。应当理解,机器人900可以包括图中未示出的其他系统和部件,为了简单起见,这些系统和部件已从图中省略。

传感器系统910可以是任何合适的传感器系统可以检测和分析环境。示例传感器系统包括但不限于光学、微波、声学和其他以摄像机、图像传感器、红外传感器、超声波收发器、麦克风、力传感器、电容传感器、加速度计、陀螺仪和温度传感器形式的传感器。传感器系统910可以包括用于来自传感器的信号的一些处理和/或控制该传感器的硬件。传感器系统910可以包括机器人本地的部件以及可能远离机器人的部件。例如,在一些情况下,传感器系统910可以包括可位于环境中的传感器,其输出可以在机器人处本地分析或者被远离机器人处分析并被传送到机器人以用于运动规划(以及其他可用的应用程序)。在一些情况下,传感器系统910的一个或多个传感器位于机器人本身上。

致动器系统920可以包括用于移动机器人部件的致动器和马达。作为一些示例,致动器系统920可以涉及气动、电动、热、磁或机械致动。

处理系统930可以包括一个或多个处理器,以根据存储在存储系统940上的软件的指令来变换或操纵数据。处理系统930的处理器的示例包括通用中央处理单元、专用处理器和逻辑设备,以及任何其它类型的处理设备,组合或其变型。处理系统930可以或者包括在系统级芯片(soc)中,附带一个或多个其他组件,例如网络连接组件、传感器、视频显示组件等。

存储系统940可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性,可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其他数据。存储系统940的存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、cd、dvd、闪存、磁带盒、磁带、磁盘存储器或其他磁存储设备,或任何其它合适的存储介质。在任何情况下存储介质(或介质)都不是传播信号或载波。存储系统940可以被实现为单个存储设备,但也可以交叉彼此共同定位或分布的多个存储设备或子系统来实现。存储系统940可以包括能够与处理系统930通信的附加元件,例如控制器。

各种软件应用和数据可以存储在存储系统940上。例如,机器人操作系统可以存储在存储系统940上。在一些情况下,一个或多个概率路线图可以存储在存储系统940上的图形数据结构中。

机器人运动规划硬件950是基于机器人900规格的专用硬件。运动规划硬件950可以被设计和实现,例如,关于图4-6所描述的。在某些情况下,机器人运动规划硬件950可以体现在fpga上或作为asic。在一些情况下,运动规划硬件950可以包括存储系统940的子系统。

实施例

运动规划处理器是为kinova的6度jaco-2手臂设计的。机器人的传感器系统涉及多个kinect-2模块,以实现环境的可视化。对于示例实现,运动规划处理器专门设计用于通过机器人的i/o端口控制并连接到机器人。来自开源机器人基金会的机器人操作系统(ros)软件生态系统用于控制机器人并与运动规划处理器进行接口。ros生态系统用于从kinect-2模块的输出中解释环境中的对象,并将由机器人上运行的ros软件生成的信号传递给运动规划处理器。

通过本地和/或全局优化(例如关于图4所描述的),发现在5000个碰撞检测单元的量级上可以适应高容量fpga。此外,可以将直接从kinect-2模块(没有进一步处理)获取的3d点(识别障碍物)流入处理器,进一步优化硬件。

示例性的替代实施方式

对于网格模型/三角形实施方式,由于每个三角形具有三个顶点,所以每个顶点都可以用其3d坐标进行描述。

在碰撞检测单元包括用于计算三角形碰撞的电路的情况下,机器人可以将物体三角形流动到运动规划硬件和被配置成检测机器人运动是否会引起与这些物体三角形碰撞的碰撞检测单元。在该示例性实施方式中,每个碰撞检测单元负责图中的一个边缘,其代表一个可能的机器人运动。机器人运动对应于在执行该运动的过程中被扫描的3d空间中的体积。在此,碰撞检测单元可以将扫描体积表示为由三角形组成的船体,并且可以为每个三角形存储九个k位数字。然后,为了检测与传入对象三角形的碰撞,碰撞检测单元执行多个计算以确定三角形是否相交。例如,碰撞检测单元可以比较每个对象三角形边缘与每个机器人三角形并比较每个机器人三角形边缘与每个对象三角形。机器人三角形和对象三角形之间的每个比较涉及大量的计算,包括点产品和交叉产品。对于执行24点产品和7个交叉产品的情况,硬件使用114个乘法器和69个加法器。通过对三角形施加约束-机器人三角形边缘的最小长度和障碍物边缘的最大长度,该实施方式可以被优化以将计算简化到单个比较(单向而不是双向比较)。

据估计,这些具有扫描体积的三角形存储、乘法器和加法器的这些碰撞检测单元中的大约100个可适用于现代大容量fpga。由于该数量远少于图形中边缘的数量,所以大尺寸碰撞检测装置适用于具有比现代大容量fpga中更多处理能力的机器人(或在可以使用少于100个边缘的路线图的环境中)。使用分时复用来增加这种碰撞检测单元的数量时,存储带宽将需要足以处理边缘状态之间的内容切换,使得能够足够快地读取新边缘的三角形状态。

应当理解的是,本文描述的示例和实施例仅用于说明目的,并且对本领域技术人员将提出其各种修改或改变,并且将被包括在本申请的精神和范围内。本领域技术人员将容易地理解,本发明很好地适用于实现目的并获得所提及的目的和优点以及其中固有的目的和优点。本实施例以及本文描述的方法目前代表优选实施例,是示例性的,并不意图限制本发明的范围。本领域技术人员将想到其中的变化和其它用途,这些变化包括在由权利要求书的范围限定的本发明的精神内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1