一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

运动规划图生成用户界面、系统、方法和规则与流程

2022-02-20 01:09:51 来源:中国专利 TAG:


1.本公开总体上涉及机器人运动规划,尤其是涉及有助于在针对机器人的运动规划中有用的运动规划图的生成的用户界面、系统、方法和规则。


背景技术:

2.相关技术
3.运动规划是机器人控制和机器人学中的一个基本问题,包括具有可移动附加物的机器人和自动驾驶或半自动驾驶车辆。运动规划完全指定了机器人能够从起始状态或姿态到目标状态或姿态的路径,通常不会与操作环境中的任何障碍物发生碰撞,或者降低了与操作环境中的任何障碍物发生碰撞的可能性。运动规划面临的挑战涉及以相对较低的成本和非常快的速度来执行运动规划的能力,这要考虑机器人本身的运动学以及操作中的障碍物,甚至是在机器人本身的特征发生变化时。例如,此类特征可以包括当机器人持有各种尺寸的物体、更换为不同的末端执行器或更换为不同的附加物时,所考虑的机器人所占据的体积。此外,针对可存储在处理器芯片电路上的运动规划信息的数量限制,也存在挑战。


技术实现要素:

4.运动规划图工具包允许创建或生成运动规划图(在本文中可替换地称为路线图或路线图文件或点阵(lattice)),运动规划器(例如,实时机器人运动规划加速器和快速感测空间感知系统)使用该运动规划图。运动规划图工具包被实现为处理器可执行指令或应用(例如,软件和/或固件),其存储在一个或更多个非暂时性计算机或处理器可读介质上。运动规划图工具包提供了直观的用户界面,例如直观的图形用户界面(gui)。该应用允许终端用户与机器人的数字模型或虚拟模型以及机器人将在其中操作的操作环境(在本文中可替换地称为工作单元)的数字表示或虚拟表示进行交互,以生成或创建已相对于具有已知位置的对象(例如,静态对象)经过运动学检查和碰撞检查的运动规划图或路线图或点阵。运动学检查可以包括确定机器人是否能够处于或移动到定义的状态或姿态,例如基于物理几何构造或设计或机器人(例如,关节的数量、关节的位置、自由度、附加物的长度)。碰撞检查可以包括确定机器人是否能够处于或移动到定义的状态或姿态而不发生碰撞,例如不与环境中的静态对象发生碰撞。
5.系统或应用可以呈现用户界面(例如,图形用户界面),其允许对原点姿态或“种子”姿态进行指定。这样可以有利地提供演示窗口,其中呈现具有机器人和障碍物的环境的表示。用户界面能够提供工具,以允许在视觉上指定原点姿态或种子姿态,并且能够表示机器人的当前姿态、未来姿态甚至过去姿态。
6.系统或应用可以自主地生成多个附加姿态,例如相邻姿态或同一区域中的姿态、原点姿态和附加或相邻姿态形成姿态组;以及自主地生成多条边,每条边标识在包括原点姿态和附加或相邻姿态的姿态组的相应姿态对之间的转换。
7.系统或应用可以自主地执行运动学检查,例如识别机器人的自身碰撞或机器人的
不可能的姿态。
8.系统或应用可以自主地执行对每个姿态的碰撞检查。系统或应用可以自主地执行对相应的姿态对之间的每个转换的碰撞检查。
9.系统或应用可以自主地从姿态组中消除机器人在发生自身碰撞或发生与工作空间中的对象的碰撞的情况下的任何姿态。
10.一种在基于处理器的系统中提供用户界面的操作方法,可以概述为包括:提供至少一个用户界面元件,该用户界面元件允许在视觉上指定一个或更多个原点姿态或种子姿态;接收对一个或更多个原点姿态或种子姿态的指定;自主地生成多个附加姿态,例如相邻姿态或同一区域中的姿态,原点姿态和附加或相邻姿态形成姿态组;以及自主地生成多条边,每条边标识在姿态组的相应姿态对之间的转换,该姿态组包括原点姿态和附加或相邻姿态。
11.该方法还可以包括由基于处理器的系统自主地执行运动学检查。自主地执行运动学检查可以包括由基于处理器的系统基于机器人的几何构造自主地执行对自主生成的附加姿态的运动学检查。
12.该方法还可以包括自主地执行对每个姿态的碰撞检查。
13.该方法还可以包括自主地执行对相应的姿态对之间的每个转换的碰撞检查。
14.该方法还可以包括由基于处理器的系统自主地从姿态组中消除机器人发生自身碰撞或发生与工作空间中的对象碰撞的情况下的任何姿态。
15.虽然在本文中一般根据具有可移动附加物和末端执行器的机器人来描述实施方式和示例,但在此描述的各种结构、过程和技术能够应用于其他机器人,包括例如自动驾驶车辆。除非另有明确规定,本文提及的机器人包括具有可移动附加物的机器人以及自动驾驶车辆形式的机器人。虽然在本文中一般根据实时机器人运动规划加速器(mpa)来描述实施方式和示例,但其他运动规划器能够使用本文一般性描述的运动规划图、路线图或点。
附图说明
16.在附图中,相同的附图标记表示相似的元件或动作。附图中元件的大小和相对位置不一定按比例绘制。例如,各个元件的形状和角度未按比例绘制,其中一些元件被任意放大和定位以提高附图的易读性。此外,所绘制的元件的特定形状不旨在传递关于该特定元件的真实形状的任何信息,选择该特定形状仅仅是为了便于在附图中识别。
17.图1是根据一个说明性实施方式的机器人可以在其中操作的环境的示意图。
18.图2是根据一个说明性实施方式的基于处理器的系统的功能框图,该系统至少部分可操作为生成在针对可以在图1的环境中操作的机器人的运动规划中有用的运动规划图。
19.图3a是根据一个说明性实施方式的由图2的基于处理器的系统在第一时间呈现的图形用户界面的第一屏幕的屏幕截图,以先验地生成运动规划图。
20.图3b是根据一个说明性实施方式的由图2的基于处理器的系统在第二时间呈现的图形用户界面的第一屏幕的屏幕截图。
21.图3c是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的新工程对话框的屏幕截图。
22.图3d是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的碰撞部件附件对话框的屏幕截图。
23.图3e是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的末端执行器对话框的屏幕截图。
24.图3f是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的机器人检查器对话框的屏幕截图。
25.图3g是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的工作空间检查器对话框的屏幕截图。
26.图3h是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的设置原点姿态对话框的屏幕截图。
27.图3i是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的路线图区域窗口的屏幕截图,示出了具有多个原点姿态的示例性路线图区域。
28.图3j是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的屏幕截图,示出了当选择路径可见选项时,针对当前边的示例性机器人、工作空间和路径。
29.图3k是根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的屏幕截图,示出了示例性机器人、工作空间和边。
30.图4a是根据一个说明性实施方式的图1的机器人的示例运动规划图,包括已经针对其确定对应的转换将导致机器人与环境中的一个或更多个障碍物之间的碰撞的规划图的边。
31.图4b是根据一个说明性实施方式的图1的机器人的示例运动规划图,其中去除了已经针对其确定对应的转换将导致机器人与环境中的一个或更多个障碍物之间的碰撞的规划图的边。
32.图5是示出根据一个说明性实施方式的在基于处理器的系统中的操作方法的流程图。
33.图6是示出根据一个说明性实施方式的在基于处理器的系统中的操作方法的流程图,其可以用于执行图5所示的方法。
具体实施方式
34.在以下描述中,阐述了一些具体细节以提供对各个公开的实施例的充分理解。但是,相关领域的技术人员会认识到,可以在没有这些具体细节中的一个或更多个细节的情况下实践实施例,或者利用其他方法、部件、材料等实践实施例。在其他实例中,没有详细示出或描述与计算机系统、致动器系统和/或通信网络有关的公知结构,以避免不必要地模糊对实施例的描述。在其他实例中,没有详细描述用于生成一个或更多个对象的感知数据和体积表示等的公知计算机视觉方法和技术,以避免不必要地模糊对实施例的描述。
35.除非上下文另有要求,在整个说明书和所附的权利要求中,词语“包括”及其变型,例如“包括有”和“包含”应被解释为开放的、包容性的意义,即“包括但不限于”。
36.在本说明书全文中,提到“一个实施例”或者“实施例”时,指的是结合该实施例描述的特定特征、结构或者特性包括在至少一个实施例中。因此,在本说明书全文中多个地方
出现的短语“在一个实施例中”或者“在实施例中”不一定都是指同一实施例。此外,特定特征、结构或者特性可以以任何合适的方式结合在一个或更多个实施例中。
37.除非内容另有明确指示,否则在本说明书和所附权利要求中使用的单数形式“一”、“一个”以及“该”包括复数引用。还应注意,除非内容另有明确指示,否则术语“或者”通常以包括“和/或”的含义进行使用。
38.本文中提供的公开内容的标题和摘要仅出于方便考虑,不用于解释实施例的范围或意义。
39.图1示出了根据一个说明性实施方式的机器人102可以在其中操作的操作环境100。为了简洁起见,操作环境100在本文中被称为环境100。该环境表示机器人102可以在其中操作和移动的二维或三维空间。机器人102可以是任何类型的机器人,包括但不限于:笛卡尔坐标机器人(cartesian)、用于机器人装配的选择性柔顺臂(scara)、圆柱坐标机器人、delta机器人、极坐标机器人以及垂直铰接机器人。机器人还可以是汽车、飞机、无人机或能够在由环境100表示的空间中自主或半自主(即,至少部分自主)操作并移动的任何其他交通工具。环境100是机器人在其中操作的二维或三维空间,并且其不同于以下参照图4a和图4b的运动规划图引用的机器人的“配置空间”(通常被称为“c空间”),该空间在以下专利中进行了描述:于2017年6月9日提交的标题为“针对自动驾驶车辆的运动规划和可重构运动规划处理器(motion planning for autonomous vehicles and reconfigurable motion planning processors)”的申请号为pct/us2017/036880的国际专利申请,其全部内容在此通过引用并入本文;以及于2016年1月5日提交的标题为“专用机器人运动规划硬件及其制造和使用方法(specialized robot motion planning hardware and methods of making and using same)”的公开号为wo 2016/122840的国际专利申请,其全部内容也在此通过引用并入本文。配置空间通常是多维(即,大于3维)的。特别地,规划图的每个节点代表机器人的状态,其可以包括但不限于机器人的特定配置(其是机器人的特定关节位置集合的完整指定)、机器人的姿态、速度和行进方向。规划图的每条边代表机器人从一个状态到另一个状态的转换。
40.参考图1,环境100可以包括障碍物碰撞区域。这些障碍物碰撞区域可能是由于环境100中的静态对象(例如,箱子、容器、柱子、架子、建筑物、树木、岩石、家具)或动态对象(例如,其他机器人、车辆、人)造成的。例如,障碍物a 112和障碍物b 104代表在环境100中创建碰撞区域的对象,由此如果机器人102试图在相同时间在环境100内占据与障碍物a 112或障碍物b 104相同的空间,则机器人102可能与障碍物a 112或障碍物b 104发生碰撞。在各种实施例中,可以存在比图1所示的更少的或附加的对象。
41.此外,基于机器人本身的几何构造以及机器人的数量、位置和移动自由度,通常会对机器人的移动或姿态施加运动学约束。
42.运动规划所面临的挑战涉及以相对较低的成本但以非常快的速度执行运动规划的能力。与此相关的挑战是有效地表示、传递和比较被认为是被机器人102占据的空间和环境100中的障碍物。例如,如图1所示,障碍物a112当前位于机器人102前面。机器人102能够快速且有效地确定机器人臂106的哪些移动(以及机器人102的任何移动)将导致与障碍物a112的碰撞是有利的。因此,本公开提供了生成运动规划图、路线图或点阵的解决方案,以允许针对机器人102(包括自动驾驶车辆)进行运动规划,该机器人102在机器人102和一个
或更多个障碍物a112占据的环境100中操作。特别地,终端用户可以指定一个或更多个姿态,并且系统或应用可以有利地自动或自主地确定一个或更多个自主生成的附加姿态以及姿态之间的边。该系统或应用可以有利地自动或自主地执行姿态和边的运动学检查和碰撞检查。
43.虽然图1示出了代表性环境100,但是典型环境可以包括许多附加的对象和实体,包括对应于其他机器人的对象以及各种其他自然或人工的静态和动态对象和障碍物。本文中教导的构思可以以相似的方式在比所示环境更密集的环境中使用。
44.图2和以下讨论提供了对根据一个说明性实施例的合适的基于处理器的系统200的简要、一般的描述,其中可以实现各种说明和描述的运动规划系统和方法。
45.尽管不是必需的,但许多实施例将在计算机可执行指令的一般背景下描述,例如存储在计算机或处理器可读介质上并由能够执行碰撞评估和运动规划操作的一个或更多个计算机或处理器执行的程序应用模块、对象或宏。此类运动规划操作可以包括但不限于以下一项或更多项:生成与规划图的边相关联的机器人扫掠体积的一个或更多个离散化表示;确定使用多个离散化中的哪一个来生成机器人扫掠体积的离散化表示;生成机器人102将在其中进行操作的环境的离散化表示,包括环境中的障碍物;确定使用多个离散化中的哪一个来生成环境的离散化表示;确定多个规划图;存储确定的多个规划图和相应的边信息的集合;生成表示在由规划图的节点表示的状态之间转换时机器人102的至少一部分扫掠过的体积的信息;对规划图的边执行碰撞评估;为规划图提供边信息的集合;从规划图中识别一个或更多个优化的结果;对与规划图的边相关联的扫掠体积的离散化表示与机器人102将在其中进行操作的环境中的障碍物的离散化表示之间的碰撞进行碰撞检查;确定优化是否为机器人102产生了任何无碰撞路径;以及为机器人102实施运动规划。
46.图1的机器人102具有传感器,例如图2中所示的传感器282,其将感知数据发送到一个或更多个处理器,例如处理器212a。感知数据可以作为占据在当前环境中的体素或箱体(box)或其他表示的流来提供。该数据由一个或更多个诸如处理器212a之类的处理器生成(或提供给该处理器),以占用网格或其他数字表示的形式。特别地,当表示环境100中的机器人或对象(例如,障碍物)时,可以将它们的表面表示为体素(3d像素)或多边形网格(通常为三角形)。空间中的每个离散化区域被称为“体素”,等效于3d(体积)像素。在某些情况下,反而将对象表示为箱体(矩形棱柱)是有利的。由于对象的形状不是随机的,因此体素的组织方式可能存在大量结构;对象中的许多体素在3d空间中彼此紧邻。因此,将对象表示为箱体可能需要少得多的比特(即,可能只需要箱体的两个对角的x、y、z笛卡尔坐标)。此外,对箱体进行相交测试的复杂性与对体素进行相交测试的复杂性相当。
47.许多实施例可以组合多个传感器的输出,并且传感器可以提供非常精细的粒度体素化。然而,为了让机器人102有效地执行运动规划,机器人102的处理器212a可以使用较粗的体素(即,“处理器体素”)来表示机器人102在各种状态之间转换时扫掠过的3d空间中的环境和体积。因此,系统200可以相应地变换传感器282的输出。例如,传感器282的输出可以在每个轴上使用10比特精度,因此直接源自传感器282的每个体素(即,“传感器体素”)具有30比特的id,并且有2
30
个传感器体素。系统200(在设计时和运行时)针对18比特的处理器体素id在每个轴上使用6比特精度,并且有2
18
个处理器体素。因此,是每处理器体素2
12
个传感器体素。在运行时,如果系统200确定处理器体素内的任何传感器体素被占用,则系统200认
为处理器体素被占用并相应地生成占用网格或其他表示。
48.机器人102的规划图的每条边还具有与机器人102在规划图中从由该边表示的一种状态转换到另一种状态时扫掠过的3d空间中的体积相对应的一定数量的体素(或箱体)。可以针对规划图的每条边,将机器人102在规划图中从由该边表示的一种状态转换到另一种状态时扫掠过的那些体素或箱体存储在专用于规划图的片外存储器中,例如存储在规划图边信息存储器284中。在各种其他实施例中,可以针对规划图的每条边,将机器人102在规划图中从由该边表示的一种状态转换到另一种状态时扫掠过的体素或箱体存储在其他位置中,例如存储在一个或更多个专用集成电路(asic)中的片上存储器中。
49.在一个实施例中,碰撞评估是通过首先将所有障碍物体素(或箱体)流式传输到诸如处理器212a之类的处理器上来执行的。例如,表示环境100的障碍物体素(或箱体)(包括障碍物a112和障碍物b 104)可以流式传输到处理器212a中并存储在环境存储器294上。环境存储器294是处理器212a的片上存储器。在一些实施例中,环境存储器294可以是现场可编程门阵列(fpga)中的块ram(bram)。在一些实施例中,bram可以是专用的、可配置的两端口存储器单元,其包含几千比特的随机存取存储器(ram)。fpga包含几个这样的块。然后,机器人102的规划图的每条边的边信息从专用于规划图的片外存储器流式传出,例如从规划图边信息存储器284流式传出。对于每个边体素(或箱体),当它从边的扫掠体积流式传入时,如果它与任何障碍物体素(或箱体)碰撞,则处理器212a确定发生了与规划图中的该边的碰撞。
50.例如,当边体素从规划图的边x的扫掠体积流式传入时,处理器212a可以使用布尔电路来将边体素与存储在环境存储器294上的所有障碍物体素(或箱体)进行比较。如果系统200基于比较确定边体素与任何障碍物体素(或箱体)碰撞,则系统200备注发生了与边x的碰撞。该实施例改进了碰撞评估技术,因为与在规划图的所有边上并行执行碰撞评估的其他设计相比,该实施例使得能够在碰撞评估中使用大得多的规划图。特别地,这有助于克服其他设计的可存储在处理器芯片电路上的规划图信息数量有限的缺点。使用本文描述的碰撞评估方法,诸如环境存储器294之类的片上存储通常足以存储所有障碍物箱体(尽管使用体素可能不太足够)。这提供了在更便宜的片外存储中存储大型规划图和/或多个规划图的能力。例如,这提供了将大型规划图和/或多个规划图存储在规划图边信息存储器284中的能力,在一些实施例中,该规划图边信息存储器是较便宜类型的存储器,例如动态随机存取存储器(dram)。
51.在各种实施例中,此类操作可以完全在硬件电路中执行或作为软件存储在诸如系统存储器214之类的存储器中,并由一个或更多个硬件处理器212a(例如一个或更多个微处理器、数字信号处理器(dsp)、现场可编程门阵列(fpga)、专用集成电路(asic)、图形处理单元(gpu)处理器、可编程逻辑控制器(plc)、电可编程只读存储器(eeprom))执行,或作为硬件电路和存储在存储装置中的软件的组合。
52.此外,感知、规划图构建、碰撞检测和路径搜索的各种相关方面的实施方式也在以下专利中描述:于2017年6月9日提交的标题为“针对自动驾驶车辆的运动规划和可重构运动规划处理器”的申请号为pct/us2017/036880的国际专利申请、于2016年1月5日提交的标题为“专用机器人运动规划硬件及其制造和使用方法”的公开号为wo 2016/122840的国际专利申请,以及于2018年1月12日提交的标题为“有助于在具有动态对象的环境中进行自动
驾驶车辆的运动规划的装置、方法和规则(apparatus,method and article to facilitate motion planning of an autonomous vehicle in an environment having dynamic objects)”的申请号为62/616,783的美国专利申请,其全部内容通过引用并入本文。相关领域的技术人员将理解,说明性的实施例以及其他实施例可以利用其他系统结构和装置和/或其他计算系统结构和装置来实践,包括机器人、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、个人计算机(“pc”)、联网pc、小型计算机、大型计算机等。实施例或其部分(例如,在设计时和预运行时)可以在分布式计算环境中实践,其中任务或模块由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储设备或媒体中。然而,特定类型信息的存储位置和方式对于帮助改进运动规划是重要的。
53.例如,各种运动规划解决方案将路线图(即规划图)“烧录”到处理器中,路线图中的每条边对应于处理器的不可重新配置的布尔电路。将规划图“烧录”到处理器中的设计所导致的问题是:利用有限的处理器电路来存储多个或大型规划图。
54.一种解决方案提供了一种可重新配置的设计,其将规划图信息放置到存储装置中。使用这样的解决方案,规划图的每条边同样的具有信息,但这些信息存储在存储器中,而不是被烧录到电路中。每条边对应于机器人102的一个运动,并且每个运动在3d空间中扫掠过一个体积。该扫掠体积与一定数量的障碍物体素(或箱体,或者在各种实施例中可以决定用来代表障碍物的)发生碰撞。使用这样的解决方案,与这条边碰撞的体素就是存储在存储器中的信息。
55.在一些实施方式中,系统或应用可以在运行时提供多个规划图之间的动态切换(即,重新配置处理器)。例如,考虑具有能够抓取对象的末端执行器的机器人。机器人臂持有东西时与未持有东西时相比会与3d空间的不同部分发生碰撞。一个示例是机器人臂106利用末端执行器在臂的末端持有一个大球。如果机器人102持有东西,则与机器人102“未持有任何东西”时相对应的规划图不起作用。相反,即使机器人102没有持有任何东西,也可以非常保守地使用“持有东西”的规划图,但这既低效又需要使用与机器人102持有可能最大对象的场景相对应的单个规划图。相反,在各种实施例中,系统200建立与不同可能特征相对应的一系列规划图,例如,“未持有任何东西”、“持有大小为x的小球体”、“持有大小为y的直角棱柱”等。当机器人102拾取和放下东西时,处理器212a可以将这些规划图换入和换出规划图边信息存储器284。该解决方案也适用于末端执行器有时会发生变化的机器人。例如,机器人102可以处于具有第一末端执行器的布置中,该第一末端执行器具有第一组尺寸。该第一末端执行器可以替换为具有第二组尺寸的第二末端执行器。当将第一末端执行器替换为具有第二组尺寸的第二末端执行器时,机器人102将处于具有第二末端执行器的不同布置中。在第二组尺寸的尺寸与第一组尺寸的尺寸不同的情况下,当末端执行器替换时,机器人扫掠过的体积发生变化。又例如,在机器人是自动驾驶或部分自动驾驶车辆的情况下,车辆可以在第一时间段期间具有第一布置中的第一组尺寸,并且同一车辆可以在第二时间段期间具有第二布置中的第二组尺寸。例如,车辆在第一布置中可能是空的,而在第二布置中可能是满载的,这例如在它围绕弯道或曲线转弯时,会改变车辆的重量并可能改变车辆在道路上方的高度、车辆下方的间隙,甚至是车辆的轨迹。在第二组尺寸的尺寸与第一组尺寸的尺寸不同的情况下,车辆扫掠过的体积在第一布置与第二布置之间变化。同样,
在轨迹在第一布置与第二布置之间变化的情况下,车辆扫掠过的体积在布置之间变化。系统200因此将不同的规划图存储在规划图边信息存储器284中,以用于不同的末端执行器。
56.规划图可以预先生成,例如,在运行之前的配置时间期间生成。一旦生成了规划图,就可以将它们全部存储在规划图边信息存储器284中,处理器212a可以相对快速和有效地将它们换入和换出或者基于机器人102的当前特征选择使用哪一个,例如当机器人抓取特定大小的对象时。
57.如上所述,一些预处理活动可以在运行之前执行,因此,在一些实施例中,这些操作可以由远程处理设备执行,该远程处理设备经由网络接口260通过通信网络链接到基于处理器的系统200。例如,编程阶段允许机器人为感兴趣的问题做好准备。在这样的实施例中,利用广泛的预处理来避免运行时计算。可以将关于机器人102在规划图中从由路线图中的边表示的一种状态转换到另一种状态时扫掠过的3d空间中的体积的预先计算的数据存储在规划图边信息存储器284中,并且在运行期间通过处理器212a访问。系统200还可以在运行之前建立一系列规划图,其对应于机器人在运行期间可能发生的不同的可能发生变化的尺寸特征。然后,系统200将这类规划图存储在规划图边信息存储器284中。
58.在运行阶段,传感器282向处理器212a发送感知数据。感知数据可以是存在于当前环境中的体素或箱体的流,并存储在片上环境存储器294中。使用布尔电路将从环境存储器294检索到的感知数据与存储在规划图边信息存储器284中的信息进行比较,处理器212a计算哪些运动避免碰撞,并在规划图中选择机器人102要遵循的对应路径。然后,处理器212a运行并将结果路径返回到致动器系统266。
59.图2示出了诸如用于机器人102的基于处理器的系统200,其包括由处理器212a表示的一个或更多个处理器,以及一个或更多个相关联的非暂时性机器可读存储介质,例如系统存储器214、规划图边信息存储器284和与磁盘驱动器224相关联的计算机可读介质226。包括系统存储器214、规划图边信息存储器284和与磁盘驱动器224相关联的计算机可读介质226的相关联的非暂时性计算机或处理器可读存储介质经由一个或更多个通信信道(例如系统总线216)通信地耦合到处理器212a。系统总线216可以采用任何已知的总线结构或者架构,包括具有存储器控制器的存储器总线、外设总线和/或本地总线。一个或更多个传感器282和致动器系统266也经由系统总线216通信地耦合到处理器212a。这些部件中的一个或更多个还可以或替代地经由一个或更多个其他通信信道彼此通信,例如,一根或更多根并行电缆、串行电缆或能够进行高速通信的无线网络信道,例如,通用串行总线(“usb”)3.0、周边设备高速连接标准(pcie)或经由雷电接口
60.基于处理器的系统200还可以可通信地耦合到远程系统,例如,台式计算机、膝上型计算机、超便携计算机、平板计算机、智能手机、可穿戴计算机(未示出),它们经由网络接口260直接可通信地耦合或间接可通信地耦合到基于处理器的系统200的各种部件。这种远程系统可以用于编程、配置、控制或以其他方式与基于处理器的系统200和基于处理器的系统200内的各种部件连接或向其输入数据。这种连接可以通过使用因特网协议的一个或更多个通信信道,例如,一个或更多个广域网(wan),例如因特网。如上所述,运行前计算(例如,生成一系列规划图)可以由与机器人102或其他机器人分离的系统执行,而运行时计算可以在机器人102上的处理器212上执行,因为对于系统200来说重要的是,能够改变规划图以实时地对机器人102的物理尺寸的改变作出反应。
61.除非另有描述,否则图2中所示的各个方框的结构和操作为常规设计,或者在以下专利中描述:于2017年6月9日提交的标题为“针对自动驾驶车辆的运动规划和可重构运动规划处理器”的申请号为pct/us2017/036880的国际专利申请、于2016年1月5日提交的标题为“专用机器人运动规划硬件及其制造和使用方法”的公开号为wo 2016/122840的国际专利申请,以及于2018年1月12日提交的标题为“有助于在具有动态对象的环境中进行自动驾驶车辆的运动规划的装置、方法和规则”的申请号为62/616,783的美国专利申请,其全部内容通过引用并入本文。结果是,由于相关领域的技术人员将根据通过引用并入本文的参考文献来进行理解,因此不需要进一步详细地描述这些方框。
62.基于处理器的系统200可以包括一个或更多个处理单元212、系统存储器214、规划图边信息存储器284和系统总线216,该系统总线将包括系统存储器214和规划图边信息存储器284在内的各种系统部件耦合到处理单元212。在一些实施例中,规划图边信息存储器284可以是系统存储器214或者是其一部分。处理单元可以是任何逻辑处理单元,例如一个或更多个中央处理单元(cpu)212a、数字信号处理器(dsp)212b、专用集成电路(asic)、现场可编程门阵列(fpga)等。系统存储器214可以包括只读存储器(“rom”)218和随机存取存储器(“ram”)220。规划图边信息存储器284可以包括诸如dram之类的ram。基本输入输出系统(“bios”)222可以形成rom 218的一部分,其包含诸如在启动期间在基于处理器的系统200内的元件之间帮助传递信息的基本例程。
63.基于处理器的系统200可以包括磁盘驱动器224,其可以是例如用于读取和写入硬盘的硬盘驱动器、用于读取和写入可移动闪存设备的闪存驱动器、用于读取和写入可移动光盘的光盘驱动器,或用于读取和写入磁盘的磁盘驱动器。在各种不同的实施例中,基于处理器的系统200还可以包括这些磁盘驱动器的任何组合。磁盘驱动器224可以经由系统总线216与处理单元212通信。如相关领域技术人员所知,磁盘驱动器224可以包括耦合在这些驱动器与系统总线216之间的接口或控制器(未示出)。磁盘驱动器224及其相关联的计算机可读存储介质226为基于处理器的系统200提供了对计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。相关领域的技术人员将理解,可以使用能够存储计算机可访问的数据的其他类型的计算机可读介质,例如worm驱动器、raid驱动器、磁带、数字视频光盘(“dvd”)、伯努利盒式磁带(bernoulli cartridges)、ram、rom、智能卡等。
64.可以在系统存储器214中存储程序模块,例如操作系统236、一个或更多个应用程序238、其它程序或模块240和程序数据242。应用程序238可以包括使处理器212执行以下一项或更多项的指令:生成与规划图的边相关联的机器人扫掠体积的一个或更多个离散化表示;确定使用多个离散化中的哪一个来生成机器人扫掠体积的离散化表示;生成机器人将在其中操作的环境100的离散化表示,包括环境100中的障碍物;确定使用多个离散化中的哪一个来生成环境100的离散化表示;确定多个规划图;存储确定的多个规划图和相应的边信息的集合;生成表示在由规划图的节点表示的状态之间转换时机器人的至少一部分扫掠过的体积的信息;对规划图的边执行碰撞评估;为规划图提供边信息的集合;从规划图中识别一个或更多个优化的结果;对与规划图的边相关联的扫掠体积的离散化表示与机器人102将在其中操作的环境100中的障碍物的离散化表示之间的碰撞进行碰撞检查;确定优化是否为机器人产生任何无碰撞路径;以及为机器人实施运动规划。应用程序238还可以包括一个或更多个机器可读指令,其使处理器212执行本文以及通过引用并入本文的参考文献
中所描述的其他感知(经由传感器282)、规划图构建、碰撞检测和路径搜索操作。
65.应用程序238还可以包括一个或更多个机器可读指令,其使处理器212生成表示机器人102在与机器人102具有不同尺寸时对应的状态之间转换时扫掠过的不同体积的相应的规划图边信息的集合,并将多个规划图存储在与相应的规划图边信息的集合对应的规划图边信息存储器284中。
66.应用程序238还可以包括一个或更多个机器可读指令,其使处理器212执行以下操作:对于机器人102将在其中操作的环境100的第一离散化表示,在环境存储器294中供给并存储环境100的第一离散化表示的至少一部分;对于规划图的每条边,在规划图边信息存储器284中提供并存储相应的边信息的集合;以及识别对应的转换将导致机器人102的至少一部分与一个或更多个障碍物(例如环境100中的障碍物a112和障碍物b 104)中的至少一个的至少一部分之间的碰撞的规划图的任何边。
67.在本示例中使用术语“环境”来指代机器人的当前工作空间(包括障碍物)。在本示例中使用术语“任务”来指代机器人任务,其中机器人102必须在不与其环境中的障碍物碰撞的情况下从姿态a到达姿态b(可能抓取或放下某物)。本示例中使用术语“场景”来指代一类环境/任务对。例如,场景可以是“在具有3英尺桌子的环境中并且在具有给定范围内的大小和形状的障碍物x和y之间的拾取和放置任务”。可能存在符合这些标准的许多不同的任务/环境对,这取决于目标的位置以及障碍物的大小和形状。系统200可以包括经由网络接口260通过通信网络链接的一个或更多个远程处理设备。这样的一个或更多个远程处理设备可以执行一个或更多个机器可读指令,该机器可读指令使系统200生成机器人102将在其中针对各种不同场景的成对任务和环境进行操作的环境100的相应离散化表示。在示例实施例中,相应的离散化中的至少两个包括相应的体素集合。相应的离散化的体素在相应的离散化内的大小和形状中的至少一个方面可以是非均匀的。此外,相应的离散化的体素的非均匀性的相应的分布可以彼此不同。特别地,离散化可以包括相应的体素集合,其中相应的离散化的至少两个的体素在相应的离散化内的大小和形状的至少一个方面是非均匀的,以及相应的离散化的至少两个的体素的非均匀性的相应的分布彼此不同。应用程序238可以包括一个或更多个机器可读指令,其使处理器212随后评估所生成的机器人将在其中操作的环境100的相应的离散化表示的有效性,并对被评估为对特定场景最有效的所生成的相应的离散化进行存储。
68.应用程序238还可以包括一个或更多个机器可读指令,其使处理器212基于所识别的对一对机器人102将执行的任务和机器人将在其中操作的环境100进行分类的场景,来确定使用多个离散化中的哪一个来生成多个扫掠体积,所述多个扫掠体积表示机器人102在机器人的一种状态与机器人102的另一种状态之间转换时将穿过的相应区域;以及对于规划图中的多条边中的每一条,使用所确定的离散化来确定该边的相应的扫掠体积。应用程序238还可以包括一个或更多个机器可读指令,其使处理器212存储被评估为对所识别的场景最有效的机器人102将在其中操作的环境100的所确定的扫掠体积的相应的离散化表示。
69.应用程序238还可以包括一个或更多个机器可读指令,其使处理器212至少部分地基于所识别的对一对机器人102将执行的任务和机器人将在其中操作的环境100进行分类的场景,来确定使用多个离散化中的哪一个来生成环境100的离散化表示。应用程序238还可以包括一个或更多个机器可读指令,其使处理器212接收由对环境100进行感测的一个或
更多个传感器282产生的传感器信息,并且使用所确定的离散化来生成环境(包括障碍物(如果有的话))的离散化表示。所确定的离散化的多个体素在相应的离散化内的大小和形状中的至少一个方面可以是非均匀的,并且所确定的离散化的体素的非均匀性的相应的分布可以不同于多个离散化中的另一个的分布。
70.应用程序238还可以包括一个或更多个机器可读指令,其使处理器212对多个规划图,在规划图的边与机器人将在其中操作的环境中的任何障碍物之间执行碰撞检查。处理器212可以对每个规划图执行这样的碰撞检查,相应地临时更新规划图,执行优化并从更新的规划图中确定优化结果(如果有的话)是否满足令人满意的条件。如果没有满足令人满意的条件,则处理器212可以移动到下一规划图并执行相同的操作。一旦找到满足令人满意的条件的规划图,处理器212就将由满足令人满意的条件的规划图的优化结果之一识别的转换应用于机器人102。
71.应用程序238还可以包括一个或更多个机器可读指令,其使处理器212执行本文所述的各种其他方法,包括但不限于图5和图6所示的方法。
72.在各种实施例中,一个或更多个上述操作可以由系统200的一个或更多个远程处理设备执行,一个或更多个远程处理设备经由网络接口260通过通信网络链接或者由位于机器人102上的一个或更多个处理器212来链接。
73.虽然图2所示为存储在系统存储器214中,但是操作系统236、应用程序238、其他程序/模块240,以及程序数据242可以存储在磁盘驱动器224的相关联的计算机可读介质226上。
74.处理器212可以是任何逻辑处理单元,例如一个或更多个中央处理单元(cpu)、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)等。商用计算机系统的非限制性示例包括但不限于美国英特尔公司提供的celeron、core、core 2、itanium和xeon系列微处理器;美国超微半导体公司提供的k8、k10、bulldozer和bobcat系列微处理器;美国苹果电脑公司提供的a5、a6和a7系列微处理器;美国高通公司提供的snapdragon系列微处理器;以及美国甲骨文公司提供的sparc系列微处理器。除非另有描述,否则图2中所示的各个方框的结构和操作为常规设计。结果是,由于相关领域的技术人员会理解,因此本文不需要进一步详细地描述这些方框。
75.因此,为了促进避免碰撞的实现,在设计时(在运行之前),由系统200生成一个或更多个规划图,以确定机器人102在进行从一种状态到另一种状态的各种转换时占据了哪些区域。例如,机器人102的规划图的边具有与对应于区域302的机器人102扫掠过的3d空间中的体积相对应的某一数量的体素(或箱体)。对应于区域的机器人102在规划图中进行对应的转换时扫掠过的那些体素或箱体可以与规划图的边相对应地存储在专用于规划图的片外存储器中,例如存储在规划图边信息存储器284中。然后,在运行时,表示环境100的障碍物体素(或箱体),包括障碍物a 112(以及障碍物b 104),以占用网格或其他表示的形式提供(例如,流式传入)到处理器212a中,并存储在片上环境存储器294上。系统200确定哪些体素被占据(基于占用网格或其他表示),并确定不使用将与任何当前被占据的体素碰撞的任何运动。特别地,对于表示边的扫掠体积的一部分的每个边体素(或箱体),当其从规划图边信息存储器284流式传入时,处理器确定其是否与已基于占用网格或其他表示存储在环境存储器294中的任何障碍物体素(或箱体)碰撞。如果边体素(或箱体)与任何障碍物体素
(或箱体)碰撞,则系统200确定与规划图中该边发生碰撞,并将确定不使用与规划图中该边相关联的机器人102的运动。
76.例如,在执行图1所示的机器人臂106的运动之前,系统200将从规划图边存储器284开始流式传入适用的规划图的所有边的边体素(或箱体)。对于每条边,在处理器212a拿到每个边体素(或箱体)时,它将检查查看是否有边体素(或箱体)与存储在环境存储器294中的任何障碍物体素(或箱体)(包括障碍物a 112的障碍物体素)发生碰撞。扫掠区域内的任何边体素(或箱体)会导致这种碰撞,因为根据占用网格或其他表示,存储在环境存储器294中的障碍物a 112的障碍物体素(或箱体)占据该相同区域。只要处理器212a遇到与任何障碍物体素(或箱体)碰撞的边体素(或箱体),处理器212a立即就确定不使用规划图的该边。一旦完成对规划图的边的处理,处理器212a就确定了规划图内的路径,该路径将使用未被确定为与存储在环境存储器294中的障碍物体素(或箱体)碰撞的剩余边来使机器人从初始位置移动到目标位置。
77.系统200还可以做出决策,关于如何对规划图中的每个规划图表示的扫掠体积进行表示以及如何表示环境100中的障碍物。这种决策可以包括处理器212a作出的关于如何执行离散化的决策,例如,是否利用体素或箱体来表示扫掠体积、要使用的体素或箱体的形状和大小、是否采用使用了大小和/或形状不均匀的体素或箱体的离散化,以及在哪些场景中使用不同形状和/或大小的体素或箱体。在各种实施例中,上述这种作出关于如何对规划图中的每个规划图表示的扫掠体积进行表示以及如何表示环境100中的障碍物的决策的操作中的一个或更多个可以由系统200的一个或更多个远程处理设备执行,该一个或更多个远程处理设备经由网络接口260通过通信网络链接或由位于机器人102上的一个或更多个处理器212来链接。
78.特别地,系统200可以决定将机器人102的工作空间离散化为体素(稍后可以分组为箱体)。一个示例实施方式在3个维度的每个维度中执行均匀量化。然而,有利的是,在机器人的工作空间的不同部分中采用非立方体形状的体素和/或更小/更大的体素。例如,一个实施例在机器人102正前方的空间中使用较小的体素(更精细的分辨率),在机器人到达的最末端处使用较大的体素(更粗糙的分辨率)。因此,各种实施例可以使用非均匀量化和/或使用非立方体形状的体素。本公开还提供了一种用于系统200如何选择体素大小和/或形状的算法。
79.一个示例实施例使用在运行前执行的训练算法来确定哪种体素大小和形状可以更好地用于各种不同场景。系统200可以通过使用根据一个或更多个场景的给定的或生成的任务/环境对的大型集合来训练。然后,系统200选择被评估为对大训练样本集最有效的离散化。
80.例如,对于任何给定的环境/任务对,都存在一个最优离散化(或多个同样最优的离散化)。系统200可以在t个环境/任务对上测试/训练,其中t是一个较大的数,然后记录每个环境/任务对的最优离散化。这可能会导致许多不同的离散化,其中的每个离散化仅适用于一个或少数环境/任务对。在测试了所有t个环境/任务对之后,系统选择被评估为对整个样本集最有效的离散化。这种方法还涉及在每个可能的环境/任务对上尝试每种可能的离散化,这有点难于处理。
81.为了克服上述问题,系统200执行如上所述的训练,除了系统200考虑的是有限数
量的可能离散化g。例如,对于每个环境/任务对,系统记录所提供的g离散化中的哪一个被评估为最有效的。在处理了所有t个环境/任务对之后,系统200选择在大多数环境/任务对中被评估为最有效的离散化。
82.作为示例,机器人102可能面对其前面的空间箱体。系统可以确定将空间离散化成使得使用6比特来描述每个维度中的位置(即,每个轴上有26可能的位置)。这将产生2
18
个体素,所述体素中的每个都具有唯一的18比特的id。在设计时,系统200预先计算每条边的运动的扫掠体积,并将其记录为该扫掠体积中的体素id的集合。如果扫掠体积即便只是与体素部分地相交,它也会被包括在该扫掠体积中的体素id的集合中。这就是为什么使用更精细的分辨率更好。然后,在运行时,传感器282告诉处理器212a机器人102前面是什么,但以比表示预先计算的扫掠体积的体素细得多的粒度,因此系统200处理传感器输入并将哪些体素当前被占据传达给处理器212a。在一些实施例中,处理器212a处理传感器输入,在其他实施例中,存在单独的处理器,例如传感器282的处理器,其处理传感器输入并与处理器212a通信。处理器212a基于存储在环境存储器294中的信息将当前在环境中的体素或箱体与针对存储在规划图边信息存储器284中的规划图边信息的每条边所列出的体素或箱体进行比较,以确定哪些边当前发生了碰撞。在这种实施例中,重要的是在设计时使用与在运行时相同的离散化,以便能够进行比较。
83.当系统200选择使用非均匀的离散化时,系统200仍然可以使用18比特体素的id和2
18
个体素,但是体素不必为立方体(或者它们可以是立方体,但不是所有都为相同的大小)。同样,在本实施例中,系统在设计时使用与在运行时相同的离散化是重要的。当使用非均匀的离散化时,系统200使用如上所述的训练来选择每个体素的大小和形状,使得系统选择将在设计时和运行时使用的、被评估为最有效的体素大小和形状。在这种训练中使用的评估标准可以包括关于能够解决的任务的比例(例如,系统200能够找到一些无碰撞路径以实现机器人102的目的地)和找到的路径的质量。
84.运动规划图或路线图工具包允许创建或生成运动规划图(在本文中可替换地称为路线图或路线图文件),运动规划器(例如,实时机器人运动规划加速器和快速感测空间感知系统)使用该运动规划图。运动规划图工具包被实现为存储在一个或更多个非暂时性计算机或处理器可读介质上的处理器可执行指令的集合或应用(例如,软件和/或固件)。运动规划图工具包提供了直观的用户界面,例如直观的图形用户界面(gui)。该应用允许终端用户与机器人的数字模型或虚拟模型以及机器人将在其中操作的操作环境(在本文中可替换地称为工作单元)的数字表示或虚拟表示交互,以生成或创建运动学检查和碰撞检查的运动规划图或路线图。
85.为了便于理解系统、应用、用户界面和操作,下面将简要介绍一些高级概念。
86.工程是运动规划图或路线图工具包中最高级别的容器。每个工程都包含一组命名的工作空间、一组中枢(hub)、一组路线图区域和体素区域。
87.工作空间表示环境中的机器人的某个物理配置。对会导致与周围工作单元或自身发生不同碰撞可能性的机器人的物理配置的任何修改都应被视为单独的工作空间。因此,即使环境中的所有障碍物保持固定,机器人的物理特性相对于第一工作空间的物理特性的变化也对应于单独的第二工作空间。
88.工作空间各自具有其自己的路线图区域的集合。应当注意,可以复制工作空间以
便在不同的工作空间之间克隆相同的区域。当在运动规划图或路线图工具包中工作时,存在“活动工作空间”的概念。这是当前正在运动规划图或路线图工具包提供的三维视图中进行可视化的工作空间。每个工作空间还继承了在最高级别的工程中定义的所有“中枢”,并包含每个路线图区域如何连接到其他区域和中枢的设置。该设置被称为插值矩阵。在生成边时,每个路线图区域会在内部进行连接,以及基于这些设置连接到其他区域和中枢。工作空间还包含对机器人或静态场景中的哪对连杆进行了相对彼此的碰撞检查的设置。该组设置被称为碰撞矩阵。对于工程中定义的每个工作空间,用户将使系统或应用生成“占用组”或*.og文件,以在运行时使用,例如,在实时机器人运动规划加速器(mpa)上使用。
89.体素区域表示系统使用的相机的视场。仅当动态障碍物位于该区域中时,mpa才会检查和/或避免动态障碍物。存在于体素区域内的任何姿态或边都将被“体素化”;即机器人以某个姿态所占据的物理空间(或者如果处于边模式,则是边中所有中间姿态的集合)将被计算并保存为体素。每条边的体素的集合保存在“占用组”文件中,该文件在运行期间被发送到mpa硬件用于进行碰撞检查。
90.路线图区域是姿态分组。在生成边时,路线图区域中的所有姿态都连接在一起,并基于插值矩阵中的设置连接到网络中的其他区域和中枢。可以对路线图区域的尺寸、密度和位置进行配置。路线图区域中的所有姿态都植入有机器人的各种配置,这些配置被称为原点姿态,其在创建或修改路线图区域时指定。
91.中枢是在所有工作空间中共享的机器人的特定姿态。默认情况下,所有路线图区域将连接到所有中枢。中枢对于指定主姿态(home pose)和强制在多个路线图区域之间的连接非常有用。
92.在处理具有可移动附加物的机器人时,姿态是与机器人的特定关节配置相结合的末端执行器在三维空间中的特定点。在处理自动驾驶车辆时,姿态是自动驾驶车辆的三维空间中的特定点和取向。姿态具有x、y、z平移以及旋转分量,该旋转分量描述当机器人的关节为特定关节配置时,机器人的末端执行器在三维空间中的位置。如果机器人臂能够到达空间中的该点而不与其自身或静态工作空间中的其他对象发生碰撞,则姿态有效。碰撞或在运动学上不可行的姿态被认为是无效的,可以通过视觉进行指示(例如,填涂为红色)。
93.边是任意两个姿态之间的连接,表示在两个相关联的姿态之间的转换。边也具有插值类型。运动规划图或路线图工具包支持关节插值和笛卡尔插值。在关节插值模式下,通过在机器人的关节空间中在端点关节配置之间进行线性插值来计算运动。在笛卡尔插值模式下,通过在三维空间中在两个端点帧之间以自主生成的附加姿态的离散集合进行插值来计算运动。
94.在任意一种插值模式下,边可能有效或无效。与姿态的情况一样,如果边的任何部分在运动学上不可行和/或发生碰撞,则边将无效。
95.碰撞部件是简单的边界形状,其能够附接到机器人的任意位置上或附接到建模环境或场景。通常,碰撞部件用于表示在机器人拾取或放置对象时碰撞体积的变化。如果需要,碰撞部件也可以用于创建任意的排除区域(keep-out zone)。
96.碰撞矩阵定义了一组“通用机器人描述格式”(urdf)连杆对,在生成姿态和边时,应检查这些连杆对是否存在碰撞。如果两个对象永远不会碰撞,则可以将这对对象从检查中移除,这允许更快的边生成。每个工作空间存在一个碰撞矩阵,以提高系统或应用的性
能。
97.插值矩阵定义了每个路线图区域如何连接到其他区域和中枢。每个连接的选项包括关节插值、笛卡尔插值或未连接。
98.运动规划图或路线图工具包可以与机器人操作系统(ros)一起使用。ros是机器人技术中间件(即,用于机器人软件开发的软件框架的集合)。这样也可以使用宏。例如,运动规划图或路线图工具包可以与catkin一起使用,catkin是用于建立在ros中使用的包的cmake宏和相关联的代码的集合。
99.现在将参考图3a至图3k中所示的各种用户界面元素来描述操作。
100.为了开始创建运动规划图或路线图,基于处理器的系统或在基于处理器的系统上执行的应用经由多个用户界面元素接收多个初始输入的指定。
101.例如,基于处理器的系统或应用可以接收机器人的描述或数字模型,例如作为数字文件。对于正在建模的机器人,该文件定义了视觉网格、碰撞网格和运动学。数字模型可以手动创建,或者通过计算机辅助设计(cad)应用(例如,软件和/或固件)的导出过程创建。机器人的描述可以使用标准格式(例如urdf)提供。例如,有一个商用插件可以将组件转换为urdf文件。
102.又例如,如果urdf文件包含到ros包的链接,则基于处理器的系统或应用可以可选地接收到ros包的路径规范。ros_package_path是环境变量,其包含到catkin工作空间中的ros包的所有可能路径。该变量允许基于处理器的系统或应用成功定位和解析urdf文件。
103.又例如,基于处理器的系统或应用可以可选地接收一个或更多个文件,该文件包含关于未包含在urdf标准中的机器人的附加信息。附加信息可以以标准格式接收,例如“语义机器人描述文件”(srdf)格式。例如,附加信息中的一条信息可以是“碰撞矩阵”,其定义了urdf内的哪些连杆应该进行相对彼此的碰撞检查。该文件可以导入到基于处理器的系统或应用中,以提取由基于处理器的系统或应用使用的碰撞矩阵,以检查姿态和边的有效性。
104.图3a示出了根据一个说明性实施方式的由图2的基于处理器的系统在第一时间呈现的图形用户界面的第一屏幕300a,以先验地生成运动规划图。图3b示出了根据一个说明性实施方式的由图2的基于处理器的系统在第二时间呈现的图形用户界面的第一屏幕300b。
105.第一屏幕300a包括菜单栏302,其包括四个下拉菜单,即文件菜单302a、编辑菜单302b、相机菜单302c和帮助菜单302d。第一屏幕300a还包括演示窗口304,其中呈现机器人模型305和操作环境或工作空间307的三维表示。第一屏幕300a还包括一组面板,其位于演示窗口304的侧面,并且包括提供信息或允许输入或选择用户输入的各种用户界面元素。例如,面板可以包括工程面板306、检查器面板308、视图控制面板310和控制台面板312。
106.文件菜单
107.文件下拉菜单302a提供多个与文件有关的用户可选选项。
108.例如,终端用户可以从文件下拉菜单302a选择新工程菜单项。响应于从文件下拉菜单302a选择了新工程菜单项,系统或应用可以呈现“新工程”对话框314。
109.新工程对话框
110.图3c示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的新工程对话框314。
111.新工程对话框314提示用户创建新工程。新工程对话框314提供“工程名称”字段314a,以输入名称,该名称将成为工程的目录名称。新工程对话框314提供“工程路径”字段314b,以输入将在其中创建工程的目录。新工程对话框314提供“urdf路径”字段314c,以输入到要使用的urdf或*.xacro文件的路径。新工程对话框314提供“ros包路径”字段314d,以输入“package://”前缀,如果urdf使用此前缀,则指定文件路径。这可以用于指定到那些最高级别目录的路径。新工程对话框314提供一组用户可选浏览图标314e、314f、314g,其分别对应于工程路径字段314b、urdf路径字段314c和ros包路径314d,选择这些图标允许用户浏览适当的输入以选择相应的字段。
112.新工程对话框314提供“运动链开始”字段314h以从urdf指定机器人连杆,运动链将从这里开始。指定的连杆不应具有任何可移动的父关节。特别地,“运动链开始”字段可以提供可滚动的连杆列表以供选择。新工程对话框314提供运动链结束字段314i,以从运动链将结束的urdf指定机器人连杆。该连杆应该是运动链开始的子级,并且没有作为子级的可移动关节。为了使碰撞检查成为可能,对于每个姿态,机器人中的每个可移动关节必须是完全已知的。
113.文件菜单
114.返回图3a和图3b,文件下拉菜单302a可以包括用户可选“加载工程”菜单项,选择该菜单项使系统或应用加载现有工程。文件下拉菜单302a可以包括用户“保存工程”字段菜单项,选择该菜单项使系统或应用将当前工程保存在相同位置。选择将删除工程中存在的任何自动保存的文件。文件下拉菜单302a可以包括用户可选“工程另存为”菜单项,选择该菜单项使系统或应用将当前工程作为新实例复制到新位置。文件下拉菜单302a可以包括用户可选“加载场景快照”菜单项,选择该菜单项使系统或应用将从rtr-api创建的快照加载到演示窗口304中以供查看。文件下拉菜单302a可以包括用户可选“导出配置”菜单项,选择该菜单项使系统或应用导出活动工作空间的所有有效关节配置。文件下拉菜单302a可以包括用户可选“导出边”菜单项,选择该菜单项使系统或应用导出活动工作空间的所有有效边。文件下拉菜单302a可以包括用户可选“导出姿态”菜单项,选择该菜单项使系统或应用导出活动工作空间的所有有效姿态。
115.继续参考图3a和图3b,“编辑”下拉菜单302b允许用户选择“设置”菜单。“设置”菜单提供针对工程设置和工作空间设置的用户可选选项。
116.工程“设置”允许用户设置(例如,切换)自动姿态验证。自动姿态验证设置确定对路线图区域或中枢的任何更改是否会导致系统或应用自动重新计算姿态。这个过程在后台发生。如果使用非常大的运动规划图或路线图,用户可能希望禁用自动姿态验证。
117.工程设置允许用户设置(例如,切换)原点姿态是否随区域旋转。原始姿态随区域旋转的设置确定旋转路线图区域的操作方式。如果禁用原点姿态随区域旋转的设置,则路线图区域中姿态的取向将相对于世界保持固定。如果启用原点姿态随区域旋转的设置,则这些取向将随整个区域一起旋转。
118.工作空间设置允许用户设置运动链。运动链设置对系统用于碰撞检查姿态计算的运动链进行设置。一旦设置,该链就不可编辑。为了更改运动学链设置,终端用户创建新的工程。工作空间设置允许终端用户配置对urdf中的哪些连杆相对彼此进行碰撞检查。因此,终端用户可以选择禁用由于物理位置或关节限制约束而永远不会碰撞的连杆之间的碰撞
检查,从而有利地减少处理时间。配置可以经由碰撞矩阵来实现。
119.终端用户可以使系统或应用从srdf文件导入碰撞矩阵,例如经由“导入srdf”用户界面元素。
120.终端用户可以经由“插值类型矩阵”用户界面元素,使系统或应用对运动规划图或路线图如何彼此连接和/或连接到中枢进行定义。可用选项可以包括:关节、笛卡尔或未连接。
121.一个或更多个选项卡允许终端用户创建各种部件,这些部件可以附接到urdf中任意连杆的任意位置。系统或应用在执行碰撞检查时使用这些部件。部件可以采用诸如箱体、球体或圆柱体之类的多种形式中的任何形式,并且可以存储为部件库。部件的大小可以由终端用户指定或调整。
122.相机/视点菜单
123.相机或视点菜单302c允许用户切换视图,例如在透视视图模式与正交视图模式之间切换。替代地,可以选择(例如,点击)三维视图(位于右上角)中呈现的一组轴线中心处的立方体,以在相机设置之间切换。
124.帮助菜单
125.选择帮助下拉菜单302d呈现具有用户可以从中选择的各种帮助菜单项的帮助菜单。
126.演示窗口
127.演示窗口304提供加载的机器人工作单元的三维视图。终端用户可以在演示窗口304内平移、环绕和缩放。中枢、路线图区域、姿态、边和体素区域都在演示窗口304中被可视化。选择(例如,点击)对象(例如,机器人)将使该对象成为所选对象。
128.存在几种使用演示窗口304中可用的工具来操纵机器人模型305和任何路线图区域的不同方法。
129.演示窗口304包括“fk面板”用户可选图标304a,选择该图标呈现fk面板。fk面板允许终端用户指定关节角度作为输入,系统或应用会确定机器人在三维空间中的对应位置,并呈现机器人的对应的三维位置。
130.演示窗口304包括“ik面板”用户可选图标304b,选择该图标呈现ik面板。ik面板允许终端用户以三维的形式指定机器人的至少一部分(例如,末端执行器)的位置,并且系统或应用会确定机器人的对应关节的角度,以在三维空间中定位该机器人的部分,并呈现对应的关节角度。
[0131]“fk面板”和“ik面板”也只是在c空间与三维或真实世界空间之间进行转换。“fk面板”和“ik面板”还允许终端用户对末端执行器的平移和/或旋转进行微调。每次调整的增量可以改变。当前位置可以在“世界”参照系中查看,也可以在任何已定义路线图区域的参照系中查看。
[0132]
演示窗口304包括平移小部件304c。根据所选择的项目,系统或应用使平移小部件304c出现在机器人的末端执行器处,或出现在路线图区域或体素区域的原点处。平移小部件304c允许终端用户在三维(x轴、y轴或z轴)中拖动所选项目,例如通过定位指针或光标(例如,鼠标悬停)并在对应轴上选择(例如,点击)。平移小部件304c可以通过选择(例如,点击)用户可选图标(例如,“t”按钮)来启用/禁用。
[0133]
演示窗口304包括旋转小部件304d。根据所选择的项目,系统或应用使旋转小部件304d出现在机器人的末端执行器处,或出现在路线图区域的原点处。旋转小部件304d允许终端用户通过选择(例如,点击)并在选择时围绕对应的轴线拖动来围绕三个轴(x轴、y轴或z轴)旋转所选项目。旋转小部件304c可以通过选择(例如,点击)用户可选图标(例如,“r”按钮)来启用/禁用。
[0134]
演示窗口304包括缩放小部件304e。系统或应用使缩放小部件304e出现在路线图区域或体素区域的原点处。缩放小部件304e允许终端用户在三维(x、y或z)中更改所选对象的尺寸。如果缩放路线图区域,则系统或应用将根据特定区域的密度设置自主地增加和/或减少区域内的姿态数。
[0135]
演示窗口304包括关节拖动模式用户可选图标304f。当关节拖动模式激活时,平移小部件304c、旋转小部件304d和缩放小部件304e将被禁用,终端用户可以悬停(例如,鼠标悬停)在机器人表示上的可移动连杆上。当选择连杆时,系统或应用将在视觉上指示该连杆(例如,高亮连杆),并呈现表示可能的关节行程的视觉指示(例如,螺旋线)。然后,终端用户可以相对于视觉指示移动连杆的表示(例如,球),例如在螺旋上上下移动球以控制关节的位置。系统或应用根据输入更新位置。
[0136]
演示窗口304包括一组三维控件304g。终端用户可以操纵三维控件304g以使系统或应用调整演示窗口304中呈现的三维视图。例如,终端用户可以通过例如按住鼠标或其他定点设备上的按钮来平移所表示的场景。终端用户可以通过按住鼠标或其他定点设备上的另一个按键来旋转视图。终端用户可以例如经由鼠标或其他定点设备上的滚轮控制缩放。例如,演示窗口304可以包括三维控件图标304g(例如,在演示窗口304的右上角示出),终端用户可以利用指针操纵该图标,这允许终端用户快速移动到特定的轴对齐视图,以及在正交模式与透视模式之间切换。
[0137]
工程面板
[0138]
工程面板306列出当前工作空间和工程中的所有对象。选择(例如,点击)项目将使该项目成为选中的项目,并提供更多信息。
[0139]
工程面板306包括工作空间部分306a,其允许终端用户查看所有可用工作空间以及创建新工作空间。为了创建新的工作空间,终端用户在“工作空间名称”文本字段中键入名称,并选择“添加”用户可选图标306b。终端用户还可以使用“活动工作空间”下拉菜单306c来选择哪个工作空间为当前工作空间。应当注意,创建新工作空间不会使新工作空间自动成为活动工作空间。当前活动工作空间显示在演示窗口304中,工程面板306上列出的所有区域和碰撞部件都基于活动工作空间。终端用户可以通过选择(例如,点击)要克隆的工作空间,然后在检查器面板308上选择“复制”用户可选图标308a来复制已存在的工作空间。
[0140]
工程面板306包括体素区域部分306d。体素区域部分306d具有三个用户可选图标(例如,按钮),每个图标具有不同的功能。“目标”用户可选图标306e允许终端用户选择体素区域,以便检查器面板308显示关于所选的体素区域的细节,以及在演示窗口304中调出变换或缩放控件。“取景”用户可选图标306f允许终端用户在演示窗口304上切换体素区域的可见性。“体素”用户可选图标306g允许终端用户在演示窗口304上切换体素的可见性。
[0141]
工程面板306包括路线图区域部分306h。路线图区域部分306h向终端用户显示活
动工作空间中的所有可用路线图区域。在区域上进行选择(例如,点击)将在检查器面板308上和在演示窗口304中选中该区域,以便可以旋转、缩放或变换所选区域。选择(例如,点击)“添加”用户可选图标306i将使系统或应用在机器人的末端执行器的当前位置处创建新路线图区域,并调出菜单以允许终端用户添加新的原点姿态。选择(例如,点击)“导入”用户可选图标306j将使系统或应用提示终端用户选择要导入的文件。导入的路线图区域可以变换和旋转,但不能进行缩放。选择(例如,点击)“复制”用户可选图标306k将克隆所选路线图区域。
[0142]
工程面板306包括中枢部分306l。中枢部分306l显示了工程中创建的所有可用中枢。终端用户可以选择(例如,点击)条目,并且可以在检查器面板308中选择中枢。两次选择(例如,双击)项目可以使系统或应用将机器人模型移动到所选中枢所标识的姿态。可以例如通过在名称字段306m中输入名称,并选择(例如,点击)“添加”用户可选图标306n,来添加新的中枢。作为响应,系统或应用将在机器人模型的末端执行器的当前位置创建新中枢。
[0143]
工程面板306包括碰撞部件部分306o。碰撞部件部分306o呈现当前附接到机器人模型或操作环境的所有部件。选择(例如,点击)部件中的一个部件会使系统或应用呈现所选项目的检查器面板308。终端用户可以通过选择(例如,点击)“添加”用户可选图标306p来附接新部件,选择该图标使系统或应用提示终端用户命名连接、从部件库中选择要附接的部件、识别要将部件附接到的连杆,以及指定零件应如何连接到父连杆的偏移。如果部件库中没有部件,则可以经由设置面板添加部件。附加部件还会使系统或应用修改当前工作空间的碰撞矩阵。默认情况下,将不相对父连杆对碰撞部件进行碰撞检查,但会针对urdf中的所有其他连杆进行碰撞检查。如果部件附接到不在运动链中的连杆,则系统或应用仍会将其视为碰撞。如果附接部件会使无法解释的姿态无效,则终端用户可以进行检查,以确保碰撞矩阵对于新附接的部件是正确的。
[0144]
工程面板306包括姿态验证状态部分(例如,工程面板底部的蓝色条)306q。姿态验证状态部分306q提供已完成的姿态验证百分比的指示。无论何时创建或修改区域或中枢,系统或应用都会执行姿态验证。该系统或应用在后台执行此过程,在完成后,所有姿态将被识别为有效或无效。系统或应用可以使用第一视觉特征(例如,填涂为绿色)从视觉上表示有效姿态,使用第二视觉特征(例如,填涂为红色)从视觉上表示无效姿态。如果在已执行验证时修改了需要姿态生成的项目,则系统或应用将重新启动验证过程。通常,姿态验证将自动地执行,但终端用户可以经由设置面板禁用此功能,例如对于大型运动规划图或路线图。如果禁用了自动姿态验证,将在例如进度条下呈现“验证”用户可选图标(例如,绿色按钮)。
[0145]
工程面板306包括生成边用户可选图标306r。一旦图或路线图已建立且姿态验证已完成,终端用户就可以选择(例如,点击)“生成边”用户可选图标306r。选择“生成边”用户可选图标306r使系统或应用启动将当前活动工作空间中的所有姿态连接到一个连接的路线图中的过程。在此过程中,系统或应用将使用每个路线图区域和插值矩阵的设置来确定将哪些姿态彼此连接。然后,系统或应用对每个可能的连接进行碰撞检查,以确定该连接是否有效。在该过程完成之后,终端用户可能希望对边进行可视化。
[0146]
工程面板306包括“连接可见”用户可选图标306s(例如,复选框、单选按钮)。系统或应用将使用第一视觉特征(例如,蓝色)来呈现有效边,同时使用第二视觉特征(例如,红色)呈现无效边。根据当前工作空间的复杂性,系统或应用可能需要一些时间来确定有效边
并渲染这些边。
[0147]
一旦边符合要求,就可以为当前活动的工作空间生成占用文件。占用文件可以在例如运行操作期间由mpa使用。工程面板306包括生成占用用户可选图标306t(例如,复选框、单选按钮)。选择(例如,点击)生成占用用户可选图标306t使系统或应用生成当前活动工作空间的占用文件。在系统或应用中可能会提示终端用户选择占用文件的文件名。输入名称后,终端用户可以选择(例如,点击)“保存”用户可选图标。选择“保存”用户可选图标使系统或应用启动生成过程,这根据路线图的复杂性,可能需要很长时间。需要注意的是,可以为使用中的每个工作空间生成相应的占用文件。
[0148]
检查面板
[0149]
检查器面板308呈现关于当前所选对象的信息。检查器面板308可以是上下文敏感的,并且所显示的信息将根据所选对象的类型而不同。例如,检查器面板308可以在真实世界坐标参照系或经由坐标系选择用户界面(例如,下拉菜单或列表)308b选择的某个其他坐标参照系中呈现建模机器人的末端执行器的位置和取向。检查器面板308还可以显示系统或应用基于碰撞分析确定处于碰撞中的任何连杆的列表。
[0150]
视图控制面板
[0151]
视图控制面板310包括控制在演示窗口304中显示什么对象的小部件。视图控制面板310允许终端用户选择在显示体素或查看路径时进行可视化的姿态或边。
[0152]“中枢可见”用户界面元素(例如,复选框)308c允许终端用户选择(例如,如果选中)在演示窗口304中显示的工程中已创建的中枢。
[0153]“姿态可见”用户界面元素(例如,复选框)308d允许终端用户选择(例如,如果选中)在演示窗口304中显示的活动工作空间已生成的姿态。
[0154]“连接可见”用户界面元素(例如,复选框)308e允许终端用户选择(例如,如果选中)在演示窗口304中显示的活动工作空间已生成的边连接。
[0155]“路径可见”用户界面元素(例如,复选框)308f允许终端用户选择(例如,如果选中)在显示窗口304中显示的当前索引的臂将经过的路径,在显示模式为边模式的情况下。如果未选中“路径可见”用户界面元素,且显示模式为边模式,则机器人臂将沿选择的边来回移动。
[0156]“捕捉体素区域”用户界面元素(例如,切换)308g允许终端用户选择让系统或应用计算并更新体素区域的位置和尺寸,以便生成的体素区域包含机器人在运动规划图或路线图中的每个生成的边上的所有位置。
[0157]“显示模式”用户界面元件(例如,下拉菜单)308h允许终端用户在姿态模式与边模式之间进行选择,以用于在演示窗口304中的呈现。在姿态模式下,“索引”字段值的变化将使系统或应用将机器人臂跳转到指示的位置。在边模式下,索引字段值的变化将使系统或应用沿选择的边来回移动机器人的臂,或者如果选择了“路径可见”,则系统或应用将呈现末端执行器针对该边而采取的路径。
[0158]“索引”用户界面元素(例如,字段)308i允许终端用户选择哪个姿态或边是活动的,以及如何显示该姿态或边。当生成姿态或边时,以大数组的形式将其存储在系统中。
[0159]
如果快照已经从“文件”菜单加载到系统中,则“快照视图”用户界面元素(例如,下拉菜单)308j允许终端用户选择显示哪种类型的数据。
[0160]
控制台面板
[0161]
控制台面板312显示来自系统或应用的所有日志输出。控制台面板312显示来自系统的消息、警告和错误。
[0162]
图3d示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的“碰撞部件附件”对话框320。
[0163]“碰撞部件附件”对话框320包括用于指定附件名称的“附件名称”字段320a、用于选择附件部件的附件部件下拉列表和用于选择父连杆的父连杆下拉列表。“碰撞部件附件”对话框320还包括用于经由x、y、z轴坐标320b、320c、320d以及绕x、y、z轴的取向角320e、320f、320g输入三维姿态的字段。用户可选图标允许终端用户接受或取消附件。
[0164]
图3e示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的ik面板322。ik面板322可以用于指定正在建模的机器人的末端执行器的姿态。
[0165]
ik面板322包括位置字段322a、322b、322c和旋转字段322d、322e、322f,这些字段经由x、y、z轴坐标和绕x、y、z轴的取向角显示三维姿态。ik面板320包括用于每个位置和旋转字段的一对用户可选位置和旋转调整图标(例如,向上箭头、向下箭头)322g、322h、322i、322j,选择这些图标对姿态进行调整。ik面板320包括位置和旋转增量字段322k、322l,以在分别选择位置调整图标和/或旋转调整图标时设置调整位置和旋转的增量大小。ik面板322包括一组捕捉到轴的用户可选元素(例如,切换)322m,选择这些元素使系统或应用将坐标捕捉到相应的轴。ik面板322包括参照系下拉列表322n,以选择在其中进行坐标表示的参照系(例如,真实世界)。
[0166]
如前所述,检查面板308可以是上下文敏感的,并且根据当前选择的项目类型来显示信息。
[0167]
图3f示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的机器人检查器面板308-1的形式的检查器面板308。
[0168]
机器人检查器面板308-1示出了关于活动工作空间中机器人状态的信息。这些信息包括以下内容:例如来自urdf的名称308-1a,正在使用哪种网格模式308-1b绘制机器人(碰撞或视觉),以及末端执行器的姿态,例如末端执行器的x、y、z轴中的位置308-1c、308-1d、308-1e以及绕x、y、z轴的取向308-1f、308-1g、308-1h(包括在哪个坐标系中查看坐标)。“参照系选择”下拉列表308-1i允许用户选择参照系。它还包括表308-1j,其中列出了当前彼此碰撞的所有机器人连杆。此信息可以帮助快速诊断和更正当前工作空间的碰撞矩阵中的任何错误。通过点击三维面板304中的机器人上的任何可移动连杆,可以使机器人检查器面板308-1可见。
[0169]
图3g示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的“工作空间检查器”面板308-2的形式的检查器面板308。
[0170]
通过点击工程面板上想要检查的工作空间,可以使“工作空间检查器”面板308-2可见。检查器面板308-2包括:识别当前状态的“状态”字段308-2a,“复制”用户可选图标(例如,按钮)308-2b,选择该图标使系统或应用复制或克隆工作空间。检查器面板308-2包括用于ik求解的运动链的起始连杆308-2c和结束连杆308-2d的指示。检查器面板308-2还包括统计信息,其包括有效和无效姿态的数量308-2e以及有效和无效边的数量308-2f的指示。检查器面板308-2包括“配置”用户可选图标308-2g、“边”用户可选图标308-2h和“姿态”用
户可选图标308-2i,这些图标分别提供导出所生成的关节配置、边和姿态的能力。
[0171]
可以通过编辑工作空间检查器面板308中的名称字段(例如,顶部字段)来重命名工作空间。可以通过点选(例如,点击)名称字段旁边的“x”来删除工作空间。
[0172]“体素区域检查器”面板(未示出)呈现体素区域的当前坐标(x、y、z)及其当前尺寸。可以通过选择(例如,点击)工程面板上的“目标”图标来使“体素区域检查器”面板可见。
[0173]“路线图区域检查器”面板(未示出)呈现关于当前所选区域的信息,并允许终端用户更改区域中姿态的生成方式和相互连接方式。
[0174]
当缩放路线图区域时,姿态间距值确定每个姿态之间的间距。例如,如果路线图区域变大,则将以给定姿态间距值指定的间隔添加更多姿态。
[0175]“连接密度”值可以指定或控制系统或应用生成的边的数量。内部值控制在当前所选区域内的所有姿态之间生成多少边。假设根据插值矩阵将区域之间的连接设置为连接,则外部值控制在当前所选区域和所有其他区域之间生成多少边。
[0176]“内部运动类型”值确定是否将使用关节插值类型或笛卡尔插值类型来创建所选路线图区域中每个姿态之间的边。
[0177]“中枢检查器”面板(未示出)示出中枢在世界坐标系中的当前位置(x、y、z、滚动、俯仰、偏转)。转到按钮将机器人模型移动到该中枢,点击“更新姿态”按钮将使中枢的位置和关节配置成为当前机器人模型的中枢位置和关节配置。
[0178]“碰撞部件检查器”面板(未示出)示出碰撞部件的名称、其当前父部件及距其父部件的安装偏移量以及其尺寸。可以通过点击名称字段旁边的“x”按钮来删除部件。
[0179]
检查器还允许终端用户通过在对应字段中输入新数字来查看和编辑区域的位置和大小,以及管理“原点姿态”。
[0180]
图3h示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的“设置原点姿态”对话框330。
[0181]
原点姿态是描述给定路线图区域中的所有其他姿态如何植入的一组姿态。选择(例如,点击)“管理原点姿态”用户可选图标(例如,按钮)使系统或应用将机器人模型锁定到末端执行器坐标保持锁定的模式,但可以通过旋转控制小部件和/或ik窗口来围绕该点旋转。
[0182]“设置原点姿态”对话框330包括“区域名称”字段330a,用于输入或显示区域名称。“设置原点姿态”对话框330包括“转到”用户可选图标330b,选择该图标使系统或应用将项目移动到所选姿态。然后,可以通过选择(例如,点击)“添加当前姿态”用户可选图标330c来将新的原点姿态添加到路线图区域。对于添加到路线图区域的每个原点姿态,系统或应用将创建一组与区域的密度和间距参数匹配的姿态,其以对应的原点姿态的取向植入。如果启用了“姿态可见”并添加了多个原点姿态,则取向上的差异应显而易见。“设置原点姿态”对话框330包括“更新”用户可选图标330d,选择该图标使系统或应用更新原点姿态。“设置原点姿态”对话框330包括“删除”用户可选图标330e,选择该图标使系统或应用删除原点姿态。
[0183]
图3i示出了根据一个说明性实施方式的由图2的基于处理器的系统呈现的图形用户界面的演示窗口304,其示出了具有多个原点姿态344的示例性机器人340、路线图区域342。
[0184]
图3j示出了根据一个说明性实施方式的由图2的基于处理器的系统在第四时间呈现的图形用户界面的演示窗口304,其示出了当选择路径可见选项时,示例性机器人340、工作空间346和针对当前边的路径348。
[0185]
图4a是根据一个说明性实施方式的图1的机器人102的示例运动规划图400,其包括规划图400的边,已经针对该边确定对应的转换将导致机器人102与环境100中的一个或更多个障碍物之间的碰撞。图4b是根据一个说明性实施方式的示例运动规划图400,其中去除了已经针对其确定对应的转换将导致机器人102与环境100中的一个或更多个障碍物之间的碰撞的规划图400的边。规划图400的每个节点表示机器人102的状态,规划图400的每条边表示机器人102从一种状态到另一种状态的转换。例如,边410a表示在由节点408a表示的机器人102的状态与由节点408b表示的机器人102的状态之间的转换。边410i表示在由节点408c表示的机器人102的状态与由节点408d表示的机器人102的状态之间的转换。
[0186]
机器人102的规划图400的每条边具有与机器人102在规划图400中从由该边表示的一种状态转换到另一种状态时扫掠过的3d空间中的体积相对应的一定数量的体素(或箱体)。这种信息可以作为规划图边信息存储在片外规划图边信息存储器284中,使得系统200能够切换不同的规划图以适应机器人102变化的尺寸。通过使用从传感器282接收到的、表示运行时的当前环境的信息,系统200确定当前哪些体素(或箱体)被占据,并且系统200确定不使用会与任何当前被占据的体素(或箱体)碰撞的任何运动。
[0187]
在一些实施例中,通过在运行时对从传感器282接收并存储在片上环境存储器294中的、表示当前环境(和其中的障碍物)的信息与存储在规划图边信息存储器284中的规划图边信息进行比较,系统确定不使用会与任何被占据的体素(或箱体)碰撞的任何运动。基于该比较,系统200确定哪些表示转换(以及对应的运动)的规划图边会导致在机器人102与环境100中的一个或更多个障碍物之间的碰撞。作为示例,图4a示出了已被确定为表示会导致机器人102与环境100中的一个或更多个障碍物之间的碰撞的转换(以及对应的运动)的边410b、410c、410d、410e、410f、410g、410h、410i、410j、410k和410l。
[0188]
例如,为了使机器人102实现从由节点408a表示的状态移动到由节点408d表示的状态的目标,机器人102必须避免由已被确定为表示会导致机器人102与环境100中的一个或更多个障碍物之间的碰撞的转换的边410b、410c、410d、410e、410f、410g、410h、410i、410j、410k和410l表示的转换。因此,图4b示出了移除了这些边的规划图和由系统200识别的规划图400中的潜在路径416,机器人102可以循着该路径以实现从由节点408a表示的状态移动到由节点408d表示的状态的目标,而不与环境100中的一个或更多个障碍物发生碰撞。
[0189]
图5示出了根据一个说明性实施方式的在基于处理器的系统200中进行操作的方法500。在基于处理器的系统200中进行操作的方法500开始于502处,例如响应于系统的调用或启用或通电而开始。
[0190]
在504处,经由基于处理器的系统或经由基于处理器的系统执行的应用呈现用户界面。
[0191]
在506处,经由基于处理器的系统或应用接收或指定机器人模型。
[0192]
在508处,经由基于处理器的系统或应用接收或指定离散化操作环境。
[0193]
在510处,经由基于处理器的系统或应用呈现的用户界面来呈现离散化操作环境
中的机器人模型的表示。
[0194]
在512处,基于处理器的系统或应用接收指定一个或更多个种子姿态的输入,例如作为经由用户界面的输入。种子姿态可以手动输入,或作为文件或文件链接提供。
[0195]
可选地,在514处,基于处理器的系统或应用自主地执行对自主生成的种子姿态的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定种子姿态或种子姿态之间的转换(例如,边)是否违反了针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定种子姿态或种子姿态之间的转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0196]
在516处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个种子姿态和/或任何相关联的边添加到运动规划图、路线图或点阵,或添加到运动规划图、路线图或点阵的区域或子点阵。
[0197]
在518处,基于处理器的系统或应用基于种子姿态自主地生成一个或更多个附加姿态和/或相关联的边。例如,基于处理器的系统或应用可以在原点姿态的区域或子点阵中自主地生成一个或更多个相邻姿态和边。
[0198]
在520处,基于处理器的系统或应用自主地执行对自主生成的附加姿态和/或边的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定附加姿态或种子姿态与附加姿态之间的转换(例如,边)或附加姿态之间的转换是否违反了针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定附加姿态或种子姿态与附加姿态之间的转换或附加姿态之间的转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0199]
在522处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个附加姿态和/或相关联的边添加到运动规划图、路线图或点阵,或添加到运动规划图、路线图或点阵的区域或子点阵。
[0200]
在524处,系统或应用经由用户界面呈现结果。
[0201]
在526处,经由基于处理器的系统或应用接收指定对机器人模型和/或操作环境进行调整的用户输入。
[0202]
在528处,系统或应用基于指定的调整,自主地执行运动学检查和/或碰撞检查。例如,系统200基于调整自主地确定是否违反了针对正在建模的机器人的任何运动学约束。又例如,系统200识别对应的转换将导致在机器人102的至少一部分与环境中的一个或更多个障碍物中的至少一个障碍物的至少一部分之间的碰撞的第一规划图的任何边。系统可以确定在表示为第一节点的第一姿态与由第二节点表示的第二姿态之间转换(该转换表示为第一节点与第二节点之间的边)时,机器人或其一部分扫掠过的体积。
[0203]
在530处,如果没有违反运动学约束且没有检测到碰撞,则基于处理器的系统或应用更新运动规划图、路线图或点阵,或运动规划图、路线图或点阵的区域或子点阵,以表示这些调整。
[0204]
在532处,系统或应用经由用户界面呈现结果。
[0205]
用于促进运动规划的在基于处理器的系统200中进行操作的方法500在534处结束,例如直到再次启用为止。在一些实施方式中,方法500可以连续执行或作为多线程处理器上的线程执行。
[0206]
图6示出了根据一个说明性实施方式的在基于处理器的系统中进行操作的方法600,其可以用于执行图5所示的方法500。在基于处理器的系统200中进行操作的方法600开始于602处,例如响应于系统的调用或启用或通电而开始。
[0207]
在一些实施方式中,终端用户可以利用种子姿态或原点姿态设置运动规划图、路线图或点阵的两个或更多个区域或子点阵中的每一个的种子。系统或应用可以自主地为相应的区域或子点阵生成附加姿态和/或边,执行运动学和/或碰撞检查,并将经运动学和/或碰撞检查的附加姿态和/或边添加到相应的区域或子点阵。然后,系统或应用可以自主地或在终端用户的引导下,将区域或子点阵缝合在一起,以形成完全连接的运动规划图、路线图或点阵。例如,系统或应用可以生成子点阵连接姿态和/或相关联的子点阵连接边,执行运动学和/或碰撞检查,并将经运动学和/或碰撞检查的子点阵连接姿态和/或相关联的子点阵连接边添加到运动规划图、路线图或点阵。例如,系统或应用可以为特定区域创建路线图或子点阵。系统或应用可以生成到图中一个或更多个最近中枢的边,例如,将来自第一区域或子点阵的中枢点与第二区域或子点阵的中枢点直接连接。然后,系统或应用可以生成将中枢连接在一起的边,如果运动学和/或碰撞检查未检测到不可能的姿态或碰撞,则添加这些边。
[0208]
在604处,基于处理器的系统或应用接收指定运动规划图、路线图或点阵的第一区域或子点阵的一个或更多个种子姿态的输入,例如作为经由用户界面的输入。种子姿态可以手动输入,或作为文件或文件链接提供。
[0209]
可选地,在606处,基于处理器的系统或应用可选地自主地执行对种子姿态的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定种子姿态或种子姿态之间的转换是否违反针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定种子姿态或种子姿态之间的转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0210]
在608处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个种子姿态和任何相关联的边添加到运动规划图、路线图或点阵的第一区域或第一子点阵。
[0211]
在610处,基于处理器的系统或应用基于运动规划图、路线图或点阵的第一区域或第一子点阵的种子姿态自主地生成一个或更多个附加姿态和/或相关联的边。例如,基于处理器的系统或应用可以在种子姿态或原点姿态的第一区域或第一子点阵中自主地生成一个或更多个相邻姿态。
[0212]
在612处,基于处理器的系统或应用自主地执行对自主生成的附加姿态和/或边的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定附加姿态或种子姿态与附加姿态之间的转换或附加姿态之间的转换是否违反了针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定附加姿态或种子姿态与附加姿态之间的转换或附加姿态之间的转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0213]
在614处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个附加姿态和任何相关联的边添加到运动规划图、路线图或点阵的第一区域或第一子点阵。
[0214]
在616处,基于处理器的系统或应用接收为运动规划图、路线图或点阵的第二区域或子点阵指定一个或更多个种子姿态的输入,例如作为经由用户界面的输入。种子姿态可以手动输入,或作为文件或文件链接提供。
[0215]
可选地,在618处,基于处理器的系统或应用可选地自主地执行对种子姿态的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定种子姿态或种子姿态之间的转换是否违反了针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定种子姿态或种子姿态之间的转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0216]
在620处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个种子姿态和任何相关联的边添加到运动规划图、路线图或点阵的第二区域或第二子点阵。
[0217]
在622处,基于处理器的系统或应用基于运动规划图、路线图或点阵的第二区域或第二子点阵的种子姿态自主地生成一个或更多个附加姿态和/或相关联的边。例如,基于处理器的系统或应用可以在种子姿态或原点姿态的第二区域或第二子点阵中自主地生成一个或更多个相邻姿态。
[0218]
在624处,基于处理器的系统或应用自主地执行对自主生成的附加姿态和/或边的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定附加姿态或种子姿态与附加姿态之间的转换或附加姿态之间的转换是否违反了针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定附加姿态或种子姿态与附加姿态之间的转换或附加姿态之间的转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0219]
在626处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个附加姿态和任何相关联的边添加到运动规划图、路线图或点阵的第二区域或第二子点阵。
[0220]
在628处,基于处理器的系统或应用自主地生成一个或更多个子点阵连接姿态和/或相关联的子点阵连接边,以将第一区域或第一子点阵的姿态与第二区域或第二子点阵的姿态耦合,将运动规划图、路线图或点阵的两个或更多个区域或两个或更多个子点阵连接或缝合在一起。例如,基于处理器的系统或应用可以在第一区域与第二区域之间或在第一子点阵与第二子点阵之间自主地生成一个或更多个相邻姿态。
[0221]
在630处,基于处理器的系统或应用自主地执行对自主生成的子点阵连接姿态和/或子点阵连接边的运动学检查和/或碰撞检查。例如,基于处理器的系统或应用自主地确定子点阵连接姿态或子点阵连接姿态或子点阵连接转换与相应的区域或相应的子点阵的姿态或边之间的转换是否违反了针对正在建模的机器人的任何运动学约束。又例如,基于处理器的系统或应用自主地确定子点阵连接姿态或子点阵连接姿态或转换与相应的区域或相应的子点阵的姿态或边之间的子点阵连接转换是否会导致与对象(例如,环境中已知的静态对象)的任何碰撞。
[0222]
在632处,如果没有违反运动学约束并且没有检测到碰撞,则基于处理器的系统或应用将一个或更多个子点阵连接姿态和任何相关联的子点阵连接边添加到运动规划图、路线图或点阵。
[0223]
为了清楚的解释,以上示例呈现了仅具有两个区域或子点阵的实施方式。本领域技术人员将从本文的教导中认识到,可以重复相同的方法以应用于两个以上的区域或子点阵。
[0224]
用于促进运动规划的在基于处理器的系统200中进行操作的方法600在634处结束,例如直到再次启用为止。在一些实施方式中,方法600可以连续执行或作为多线程处理器上的线程执行。
[0225]
上述详细描述通过使用框图、示意图和示例阐述了设备和/或处理的各种实施例。只要这些框图、示意图和示例包含一个或更多个功能和/或操作,本领域技术人员就将理解,这些框图、流程图或示例内的每个功能和/或操作能够通过广泛的硬件、软件、固件或实际上其任何组合单独和/或共同实现。在一个实施例中,本主题可以通过布尔电路、专用集成电路(asic)和/或fpga实现。然而,本领域技术人员将认识到,本文公开的实施例能够全部或部分在标准集成电路中的各种不同实施方式中实现,作为一个或更多个计算机上运行的一个或更多个计算机程序(例如,作为一个或更多个计算机系统上运行的一个或更多个程序)、作为一个或更多个控制器(例如,微控制器)上运行的一个或更多个程序、作为固件、或者作为实际上其任何组合,并且根据本公开,为软件和/或固件设计电路和/或编写代码将完全在本领域普通技术人员的技能范围内。
[0226]
本领域技术人员将认识到,本文所述的许多方法或算法可以采用附加动作,可以省略一些动作,和/或可以以与指定顺序不同的顺序执行动作。
[0227]
此外,本领域技术人员将理解,本文教导的机制能够作为各种形式的程序产品分发,并且说明性实施例同样适用,而与用于实际执行分发的特定类型的信号承载介质无关。信号承载介质的示例包括但不限于以下内容:诸如硬盘驱动器、cd rom和计算机存储器之类的可记录类型介质。
[0228]
可以组合上述各种实施例以提供另外的实施例。本说明书中提及和/或在申请数据表中列出的所有通常指定的美国专利申请公开、美国专利申请、外国专利和外国专利申请包括但不限于:于2018年2月6日提交的标题为“在一个或更多个处理器上存储离散化环境的机器人的运动规划及其改进的操作(motion planning of a robot storing a discretized environment on one or more processors and improved operation of same)”的申请号为62/626,939的美国专利申请、于2017年6月9日提交的标题为“针对自动驾驶车辆的运动规划和可重构运动规划处理器”的申请号为pct/us2017/036880的国际专利申请、于2018年1月12日提交的标题为“有助于在具有动态对象的环境中进行自动驾驶车辆的运动规划的装置、方法和规则”的申请号为62/616,783的美国专利申请、于2016年1月5日提交的标题为“专用机器人运动规划硬件及其制造和使用方法”的公开号为wo2016/122840的国际专利申请,以及于2019年4月17日提交的标题为“运动规划图生成用户界面、系统、方法和规则”的申请号为62/835,139的美国专利申请,以上所有专利申请的全部内容通过引用并入本文。可以对根据上面详细描述的说明书的实施例做出所述和其他改变。通常,在所附权利要求中,所使用的术语不应解释为将权利要求限定为在本说明书和权利要求书中公开的具体实施例,而应该解释为包括所有可能的实施例以及此类权利要求有权获得的等同物的全部范围。因此,权利要求不受公开内容限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献