CN112601641B - 用于机器人运动规划的碰撞检测 - Google Patents
用于机器人运动规划的碰撞检测 Download PDFInfo
- Publication number
- CN112601641B CN112601641B CN201980055188.0A CN201980055188A CN112601641B CN 112601641 B CN112601641 B CN 112601641B CN 201980055188 A CN201980055188 A CN 201980055188A CN 112601641 B CN112601641 B CN 112601641B
- Authority
- CN
- China
- Prior art keywords
- robot
- environment
- obstacles
- data structure
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 190
- 238000001514 detection method Methods 0.000 title abstract description 160
- 230000002085 persistent effect Effects 0.000 claims abstract description 127
- 230000001052 transient effect Effects 0.000 claims abstract description 108
- 238000000034 method Methods 0.000 claims description 154
- 230000009466 transformation Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000000844 transformation Methods 0.000 claims description 7
- 230000015654 memory Effects 0.000 abstract description 27
- 238000004422 calculation algorithm Methods 0.000 abstract description 16
- 230000006870 function Effects 0.000 abstract description 10
- 210000001503 joint Anatomy 0.000 description 22
- 230000007613 environmental effect Effects 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 239000012636 effector Substances 0.000 description 4
- 241001465754 Metazoa Species 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000001953 sensory effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 210000002310 elbow joint Anatomy 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241000207875 Antirrhinum Species 0.000 description 1
- 241000879777 Lynx rufus Species 0.000 description 1
- 235000014676 Phragmites communis Nutrition 0.000 description 1
- 102000055788 SPARC family Human genes 0.000 description 1
- 108700015859 SPARC family Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1664—Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
- B25J9/1666—Avoiding collision or forbidden zones
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1671—Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40438—Global, compute free configuration space, connectivity graph is then searched
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40475—In presence of moving obstacles, dynamic environment
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Manipulator (AREA)
Abstract
用于机器人运动规划的碰撞检测有利地采用机器人、机器人将在其中操作的环境中的持久障碍物和瞬时障碍物的数据结构表示。数据结构可以采取分层数据结构(例如八叉树、体或盒的集合(例如,轴对齐的包围盒(AABB)的树、有向(非轴对齐的)包围盒的树或球体树))或非分层数据结构(例如欧几里得距离场)的形式,这能够提高计算效率、降低存储器要求和较低功耗。碰撞检测能够采取独立函数的形式,提供能够在执行各种不同运动规划算法中的任何一种时采用的布尔结果。
Description
技术领域
本公开内容总体涉及机器人运动规划,并且具体地,涉及经由处理器电路执行碰撞检测以产生运动规划从而驱动机器人等的系统和方法。
背景技术
相关技术的描述
运动规划是机器人控制和机器人技术中的基本问题。运动计划完全指定机器人从起始状态到目标状态能够遵循但通常不与操作环境中的任何障碍物碰撞或者与操作环境中的任何障碍物碰撞的可能性降低的路径。对运动规划的挑战涉及即使在环境的特性改变时也能够以非常快的速度执行运动规划。例如,诸如环境中的一个或更多个障碍物的位置或形状的特性可能随时间而改变。又例如,诸如机器人自身的一部分的位置或形状的特性可能随着时间而改变,例如臂工具的端部或端部执行器能够具有抓握配置和未抓握配置。挑战还包括使用相对低成本的设备、以相对低的能量消耗和有限的存储量(例如存储器电路,诸如在处理器芯片电路上的存储器电路)来执行运动规划。
发明内容
使用各种各样的算法来解决运动规划问题。这些算法中的每一个通常需要能够确定机器人的给定姿势或从一个姿势到另一个姿势的运动是否导致与机器人自身或与环境中的障碍物的碰撞。
本文描述的碰撞检测硬件、软件和/或固件能够确定或计算单个机器人姿势或从一个姿势(例如开始姿势)到另一个姿势(例如结束姿势)的机器人运动是否导致机器人与其自身或与机器人操作的当前环境中的任何障碍物碰撞。环境可以包括障碍物,即呈现碰撞风险的物体(例如无生命物体、包括人和其他动物的有生命的物体)。环境可以包括或者可以不包括一个或更多个目标物体,即机器人要与之接合的物体。对于障碍物中的一些,在配置运动规划器的模型或计算电路的时间(该时间被命名为配置时间),由障碍物占据的相应体积是已知的,并且期望通过机器人操作的整个过程(被命名为运行时间的时间)中保持固定或不变。这些障碍物被命名为持久障碍物,因为在配置时间期间障碍物占据的体积是已知的,并且预期在运行时间期间保持固定或不变。对于其他障碍物,障碍物占据的相应体积在配置时是未知的,并且仅在运行时确定。因为在配置时间期间(多个)障碍物占据的体积是未知的,因此这些障碍物被命名为瞬时障碍物。由这些暂时障碍物中的一个或更多个占据的相应体积可以是固定的或不移动的或随时间不改变的,并且被命名为静态障碍物。由这些暂时障碍物中的一个或更多个占据的相应体积可以是移动的或随时间改变的,并且被命名为动态障碍物。
本文描述的碰撞检测硬件、软件和/或固件能够被实现为由各种不同的运动规划算法调用或触发的子例程或函数,运动规划算法例如概率道路图(PRM)、快速探测随机树(RRT)、RRT*、双向RRT等算法。本文描述的碰撞检测硬件、软件和/或固件还能够用于通过快速评估许多候选抓握姿势来加速抓握规划。
本文描述的各实施方式通常采用两个或三个配置时间输入:i)机器人的运动学模型;ii)所述环境中的持久障碍物的表示,其在配置具有它们在环境中占据的已知体积;以及可选地运动细分粒度值或规格。机器人的运动学模型包括对机器人的多个关节中的任何关节的约束(例如肘关节的最小和最大角度)、从机器人的每个连杆到机器人的相应母连杆的变换、机器人的每个关节的轴线、以及机器人的每个连杆的几何形状的规格。
本文描述的各实施方式通常采用两个或三个运行时间输入:a)开始姿势;b)可选地,结束姿势(如果运动正在被评估);以及环境中的在运行时具有它们在环境中占据的已知体积,并且在配置时未知它们在环境中占据的体积的瞬时障碍物的表示。瞬时障碍物可以是静态的(即,在相关或运行时间段期间固定或不移动或不改变形状)或动态的(即,在相关或运行时间段的至少一部分期间移动或改变形状)。对于具有数量D个自由度的机器人,姿势可以被指定为D元组,其中元组的每个元素指定该自由度(关节)的位置或旋转。
用于碰撞检测的高效硬件的实施能够经由仔细关注表示物体、姿势和/或运动的数据结构的选择来实现。良好选择的数据结构能够有利地减少存储所需的存储器的量、碰撞检测所需的硬件的量、执行碰撞检测的延时以及功耗。本文中描述了多个可能合适的示例性数据结构,尽管本领域技术人员将认识到,基于本文的教导可以使用其他结构。存在多种选项,每种选项与碰撞检测的延时、构造数据结构的延时、以及数据结构对所表示的物体的几何结构的适合性之间的相应权衡相关联。
一种用于机器人运动规划的基于处理器的系统的至少一个部件的操作方法可以概括为包括:对于机器人的至少第一数量的姿势中的每一个,通过至少一组电路至少部分地基于机器人的数据结构表示来确定机器人的任何部分是否将与机器人的另一部分碰撞;对于机器人的至少第二数量的姿势中的每一个,通过至少一组电路至少部分地基于环境中的一组持久障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何持久障碍物碰撞,所述数据结构表示包括第一数量的障碍物的表示,对于第一数量的障碍物,所述环境中由第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的;对于所述机器人的至少第三数量的姿势中的每一个,通过至少一组电路至少部分地基于所述环境中的一组瞬时障碍物的数据结构表示来确定机器人的任何部分是否将与环境中的任何瞬时障碍物碰撞,数据结构表示包括环境中的第二数量的障碍物的表示(如果有),对于第二数量的障碍物,在所述环境中由第二数量的障碍物中的每一个占据的相应体积在运行时间的至少一部分期间是已知的,并且对于第二数量的障碍物,在所述环境中由障碍物中的每一个占据的相应体积在配置时间是未知的;以及提供表示是否已经针对姿势中的至少一个检测到碰撞的信号。
至少部分地基于机器人的数据结构表示来确定机器人的任何部分是否将与机器人的另一部分碰撞可以包括确定在第一姿势中,机器人附肢的至少一部分是否将与机器人附肢的另一部分碰撞。至少部分地基于机器人的数据结构表示来确定机器人的任何部分是否将与机器人的另一部分碰撞可以包括确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与机器人附肢的另一部分碰撞。至少部分地基于环境中的一组持久障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何持久障碍物碰撞可以包括确定在第一姿势中,机器人附肢的至少一部分是否将与环境中的任何持久障碍物碰撞。至少部分地基于环境中的一组持久障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何持久障碍物碰撞可以包括确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与环境中的任何持久障碍物碰撞。至少部分地基于环境中的一组瞬时障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何瞬时障碍物碰撞可以包括确定在第一姿势中,机器人附肢的至少一部分是否将与环境中的任何瞬时障碍物碰撞。至少部分地基于环境中的一组瞬时障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何瞬时障碍物碰撞可以包括确定在第一姿势与第二姿势之间移动时机器人附肢的至少一部分是否将与环境中的任何瞬时障碍物碰撞。
该方法可以进一步包括在配置时间期间,对于由运动学模型表示的机器人,生成机器人的数据结构表示;以及对于所述环境,生成所述环境中的一组持久障碍物的数据结构表示,数据结构表示包括第一数量的障碍物的表示,对于第一数量的障碍物,所述环境中由第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的。生成环境中的一组持久障碍物的数据结构表示可包括生成包围体的分层结构。生成包围体的分层结构可包括生成以三角形网格作为叶节点的包围盒的分层结构。生成包围体的分层结构可以包括生成球体的分层结构。生成包围体的分层结构可以包括生成k叉球体树。生成包围体的分层结构可包括产生轴对齐包围盒的分层结构。生成包围体的分层结构可以包括生成有向包围盒的分层结构。生成所述环境中的所述一组持久障碍物的所述数据结构表示可以包括生成八叉树,所述八叉树存储表示环境中的一组持久障碍物的体素占用信息。生成机器人的数据结构表示可以包括生成k叉树。生成机器人的数据结构表示可以包括针对机器人的多个连杆中的每一个生成相应的k叉树。生成机器人的数据结构表示可以包括针对机器人的多个连杆中的每一个生成相应的8叉树。生成机器人的数据结构表示可以包括针对机器人的多个连杆中的每一个生成树深度等于或大于四的相应8叉树。生成机器人的数据结构表示可以包括针对机器人的多个连杆中的每一个生成相应的k叉树,其中k叉树的每个节点是球体,如果球体的任何部分被占用,则相应球体被识别为被占用。
该方法可以进一步包括在运行时间期间,对于环境生成环境中的一组瞬时障碍物的数据结构表示,所述数据结构表示包括瞬时障碍物的表示(如果有),对于该瞬时障碍物的表示,在所述环境中由第二数量的障碍物中的每一个占据的相应体积在运行时间的至少某个部分期间是已知的,并且对于该瞬时障碍物,在所述环境中由障碍物中的每一个占据的相应体积在配置时间是未知的,并且确定机器人的任何部分是否将与机器人的另一部分碰撞,确定机器人的任何部分是否将与环境中的任何持久障碍物碰撞,以及确定机器人的任何部分是否将与环境中的任何瞬时障碍物碰撞都在运行时间期间进行。
该方法还可以包括接收表示环境中的瞬时障碍物(如果有)的传感器信息;以及将传感器信息转换成占用信息,并且生成环境中的一组瞬时障碍物的数据结构表示,可以包括根据占用信息生成环境中的一组瞬时障碍物的数据结构表示。
该方法还可以包括接收运动学模型,该运动学模型表示具有多个连杆和多个关节的机器人附肢形式的机器人,关节在相应的连杆对之间;接收表示所述环境中的一组持久障碍物的相应位置的占用信息;以及接收表示要在运动规划中采用的运动细分粒度的至少一个值。
接收运动学模型、接收占用信息和接收表示运动细分粒度的至少一个值可以全部在配置时间期间进行,并且还可以包括在配置时间期间,基于机器人的运动学模型生成机器人的数据结构表示;以及在配置时间期间,生成环境中的一组持久障碍物的数据结构表示,数据结构表示包括第一数量的障碍物的表示,对于第一数量的障碍物,在配置时间,环境中由第一数量的障碍物中的每一个占据的相应体积是已知的。
所述方法可进一步包括在运行时间期间生成环境中的一组瞬时障碍物的数据结构表示,所述数据结构表示包括瞬时障碍物(如果有)的表示,对于所述瞬时障碍物,在运行时间的至少一部分期间,环境中由第二数量的障碍物中的每一个占据的相应体积是已知的,且对于所述瞬时障碍物,在配置时间,环境中由障碍物中的每一个占据的相应体积是未知的。
机器人可以包括机器人附肢,并且还可以包括针对机器人附肢在机器人附肢的第一姿势与机器人附肢的第二姿势之间的运动,计算机器人附肢的多个中间姿势,直到C空间中多对连续相邻姿势之间的尺寸满足针对运动细分粒度所接收的的值为止,其中多个中间姿势在机器人附肢的C空间中在机器人附肢的第一与第二姿势之间。计算机器人附肢的多个中间姿势可以包括对于机器人附肢的关节中的每一个,在第一姿势和第二姿势中的关节的相应位置和方向之间进行插值以获得第n个中间姿势;以及对于机器人附肢的关节中的每一个,在针对相应的第i次迭代的相应对最近相邻姿势中的关节的相应位置和方向之间迭代地插值,直到达到结束条件。
结束条件可以是满足运动细分粒度以获得第n个中间姿势的连续相邻姿势之间的距离,并且还可以包括对于迭代的次数,确定是否已经达到结束条件。
该方法还可以包括对于多个姿势中的每一个,对运动学机器人模型执行正向运动学计算以计算机器人附肢的每个连杆的多个变换,将姿势或运动从C空间映射到自由空间(例如三维环境)。
以下中的任何一个或更多个可以基于分层表示或欧几里得距离场表示:确定机器人的任何部分是否将与机器人的另一部分碰撞、确定机器人的任何部分是否将与任何持久障碍物碰撞、或确定机器人的任何部分是否将与任何瞬时障碍物碰撞。
一种生成用于机器人运动规划的碰撞评估的系统可以概括为包括:至少一个处理器;至少一种非暂时性处理器可读介质,其存储处理器可执行指令或数据中的至少一者,所述处理器可执行指令或数据在由所述至少一个处理器执行时,使得所述至少一个处理器:对于机器人的至少第一数量的姿势中的每一个,至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞;对于所述机器人的至少第二数量的姿势中的每一个,至少部分地基于所述环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述机器人在其中操作的环境中的任何持久障碍物碰撞,所述数据结构表示包括第一数量的障碍物的表示,对于所述第一数量的障碍物,所述环境中由所述第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的;对于所述机器人的至少第三数量的姿势中的每一个,至少部分地基于所述环境中的一组瞬时障碍物的数据结构表示来确定机器人的任何部分是否将与环境中的任何瞬时障碍物碰撞,所述数据结构表示包括环境中的第二数量的障碍物的表示(如果有),对于所述第二数量的障碍物,环境中由第二数量的障碍物中的每一个占据的相应体积在运行时间的至少一部分期间是已知的,并且对于第二数量的障碍物,所述环境中由障碍物中的每一个占据的相应体积在所述配置时间是未知的;以及提供表示是否已经针对姿势中的至少一个检测到碰撞的信号。
为了至少部分地基于机器人的数据结构表示来确定机器人的任何部分是否将与机器人的另一部分碰撞,至少一个处理器可以确定在第一姿势中,机器人附肢的至少一部分是否将与机器人附肢的另一部分碰撞。为了至少部分地基于机器人的数据结构表示来确定机器人的任何部分是否将与机器人的另一部分碰撞,至少一个处理器可以确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与机器人附肢的另一部分碰撞。为了至少部分地基于环境中的一组持久障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何持久障碍物碰撞,至少一个处理器可以确定在第一姿势中,机器人附肢的至少一部分是否将与环境中的任何持久障碍物碰撞。为了至少部分地基于环境中的一组持久障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何持久障碍物碰撞,至少一个处理器可以确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与环境中的任何持久障碍物碰撞。为了至少部分地基于环境中的一组瞬时障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何瞬时障碍物碰撞,至少一个处理器可以确定在第一姿势中,机器人附肢的至少一部分是否将与环境中的任何瞬时障碍物碰撞。为了至少部分地基于环境中的一组瞬时障碍物的数据结构表示来确定机器人的任何部分是否将与机器人在其中操作的环境中的任何瞬时障碍物碰撞,至少一个处理器可以确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与环境中的任何瞬时障碍物碰撞。
处理器可执行指令或数据中的至少一者的执行还可以使得至少一个处理器在配置时间期间,对于由运动学模型表示的机器人,生成机器人的数据结构表示;以及对于对所述环境,生成所述环境中的一组持久障碍物的所述数据结构表示,数据结构表示包括第一数量的障碍物的表示,对于第一数量的障碍物,所述环境中由第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的。为了产生环境中的一组持久障碍物的数据结构表示,至少一个处理器可生成包围体的分层结构。为了生成包围体的分层结构,至少一个处理器可生成以三角形网格作为叶节点的包围盒的分层结构。为了生成包围体的分层结构,至少一个处理器可以生成球体的分层结构。为了生成包围体的分层结构,至少一个处理器可以生成k叉球体树。为了生成包围体的分层结构,至少一个处理器可产生轴对齐包围盒的分层结构。为了生成包围体的分层结构,至少一个处理器可生成有向包围盒的分层结构。为了生成环境中的一组持久障碍物的数据结构表示,至少一个处理器可以生成八叉树,该八叉树存储表示环境中的一组持久障碍物的体素占用信息。为了生成机器人的数据结构表示,至少一个处理器可以生成k叉树。为了生成机器人的数据结构表示,至少一个处理器可以针对机器人的多个连杆中的每一个生成相应的k叉树。为了生成机器人的数据结构表示,至少一个处理器可以针对机器人的多个连杆中的每一个生成相应的8叉树。为了生成机器人的数据结构表示,至少一个处理器可以针对机器人的多个连杆中的每一个生成树深度等于或大于四的相应8叉树。为了生成机器人的数据结构表示,至少一个处理器可以针对机器人的多个连杆中的每一个生成相应的k叉树,其中k叉树的每个节点是球体,如果相应球体的任何部分被占用,则k叉树的每个节点被识别为被占用。
处理器可执行指令或数据中的至少一者的执行还可以使得至少一个处理器在运行时间期间,对于环境生成环境中的一组瞬时障碍物的数据结构表示,数据结构表示包括瞬时障碍物的表示(如果有),对于该瞬时障碍物的表示,在运行时间的至少某个部分期间,在所述环境中由第二数量的障碍物中的每一个占据的相应体积是已知的,并且对于该瞬时障碍物的表示,在所述环境中由每个障碍物占据的相应体积在配置时间处是未知的,并且确定机器人的任何部分是否将与机器人的另一部分碰撞,确定机器人的任何部分是否将与环境中的任何持久障碍物碰撞,以及确定机器人的任何部分是否将与环境中的任何瞬时障碍物碰撞都在运行时间期间进行。
处理器可执行指令或数据中的至少一者的执行还可以使得至少一个处理器接收表示环境中的瞬时障碍物(如果有)的传感器信息;以及将传感器信息转换成占用信息,并且为了生成环境中的一组瞬时障碍物的数据结构表示,至少一个处理器可以根据该占用信息生成环境中的一组瞬时障碍物的数据结构表示。
处理器可执行指令或数据中的至少一者的执行还可以使得至少一个处理器接收运动学模型,该运动学模型表示以具有多个连杆和多个关节的机器人附肢形式的机器人,其中关节在相应的连杆对之间;接收表示环境中的一组持久障碍物的相应位置的占用信息;以及接收表示要在运动规划中采用的运动细分粒度的至少一个值。
运动学模型、占用信息和表示运动细分粒度的至少一个值可以全部在配置时间期间被接收,并且处理器可执行指令或数据中的至少一者的执行可以进一步使得至少一个处理器基于机器人的运动学模型在配置时间期间来生成机器人的数据结构表示;以及在配置时间期间,生成环境中的一组持久障碍物的数据结构表示,数据结构表示包括第一数量的障碍物的表示,对于第一数量的障碍物,在配置时间中,环境中由第一数量的障碍物中的每一个占据的相应体积是已知的。
处理器可执行指令或数据中的至少一者的执行还可以使得在运行时间期间,至少一个处理器生成环境中的一组瞬时障碍物的数据结构表示,数据结构表示包括瞬时障碍物(如果有)的表示,对于该瞬时障碍物,在运行时间的至少一部分期间,环境中由第二数量的障碍物中的障碍物中的每一个占据的相应体积是已知的,并且对于该瞬时障碍物,在配置时间,环境中由障碍物中的每一个占据的相应体积是未知的。
机器人可以包括机器人附肢,并且处理器可执行指令或数据中的至少一者的执行还可以使得至少一个处理器针对机器人附肢在机器人附肢的第一姿势与机器人附肢的第二姿势之间的运动,计算机器人附肢的多个中间姿势,直到C空间中的多对连续相邻姿势之间的尺寸满足针对运动细分粒度所接收的值为止,其中多个中间姿势在机器人附肢的C空间中在机器人附肢的第一姿势与机器人附肢的第二姿势之间。为了计算机器人附肢的多个中间姿势,对于机器人附肢的关节中的每一个,至少一个处理器可以在第一姿势和第二姿势中的关节的相应位置和方向之间进行插值以获得第n个中间姿势;并且对于机器人附肢的关节中的每一个,可以在针对相应的第i次迭代的相应对最近相邻姿势中的关节的相应位置和方向之间进行迭代地插值,直到达到结束条件。
所述结束条件可以是满足运动细分粒度以获得第n个中间姿势的连续相邻姿势之间的距离,并且所述处理器可执行指令或数据中的至少一者的执行还可以使得所述至少一个处理器针对所述迭代的次数确定是否已经达到所述结束条件。
处理器可执行指令或数据中的至少一者的执行还可以使得至少一个处理器针对多个姿势中的每一个,对运动学机器人模型执行正向运动学计算,以计算机器人附肢的每个连杆在C空间与自由空间之间的多个变换。
可以基于分层表示或欧几里得距离场表示来确定以下中的任何一个或更多个:i)机器人的任何部分是否将与机器人的另一部分碰撞,ii)机器人的任何部分是否将与任何持久障碍物碰撞,或者iii)机器人的任何部分是否将与任何瞬时障碍物碰撞。
处理器可执行指令或数据中的至少一者在由至少一个处理器执行时可以进一步使至少一个处理器执行本文描述的方法中的任何方法。
附图说明
在附图中,相同的附图标记表示相似的元件或动作。附图中元件的大小和相对位置不一定按比例绘制。例如,各种元件的形状和角度不是按比例绘制的,并且这些元件中的一些被任意放大和定位以提高附图的易读性。此外,所绘制的元件的特定形状不旨在传递关于特定元件的实际形状的任何信息,并且仅被选择用于在附图中容易识别。
图1是根据一个所示实施方式的机器人、机器人控制系统(包括驱动器、运动规划系统和碰撞检测系统)以及其他部件的示意图,机器人在机器人可以操作的环境中,该环境包括多个障碍物(其中一些障碍物是持久的,而其他障碍物是暂时的),并且可选地包括多个目标物体。
图2是根据一个所示实施方式的图1的机器人控制系统的功能框图。
图3是根据一个所示实施方式的图1的碰撞检测系统的功能框图。
图4是根据一个所示实施方式的图1的机器人和环境的配置空间(C空间)的示意图,其具有环境中的障碍物的表示,并且包括其边缘表示机器人的姿势之间的无碰撞路径的规划图或道路图。
图5是示出根据一个所示实施方式的在碰撞检测系统中采用机器人运动学模型、环境中的持久障碍物和环境中的瞬时障碍物的数据结构表示来执行碰撞检测或预测的高层操作方法的流程图,可经由运动规划系统在运动规划中采用碰撞检测。
图6是示出根据一个所示实施方式的在碰撞检测系统中用于通过由运动学模型表示的机器人的数据结构表示的生成来促进运动规划和运动规划的产生的操作方法的低层流程图。
图7A是示出根据一个所示实施方式的在碰撞检测系统中通过生成包围体的分层结构来表示环境中的持久物体来促进运动规划和运动规划的产生的低层操作方法的流程图。
图7B是示出根据一个所示实施方式的在碰撞检测系统中通过生成以三角形网格作为叶节点的包围盒的分层结构来表示环境中的持久物体以促进运动规划和运动规划的产生的低层操作方法的流程图。
图7C是示出根据一个所示实施方式的在碰撞检测系统中通过生成球体的分层结构来表示环境中的持久物体以促进运动规划和运动规划的产生的低层操作方法的流程图。
图7D是示出根据一个所示实施方式的在碰撞检测系统中通过生成k叉球体树来表示环境中的持久物体以促进运动规划和运动规划的产生的低层操作方法的流程图。
图7E是示出根据一个所示实施方式的在碰撞检测系统中通过生成轴对齐包围盒的分层结构来表示环境中的持久物体以促进运动规划和运动规划的产生的低层操作方法的流程图。
图7F是示出根据一个所示实施方式的在碰撞检测系统中通过生成有向边界盒的分层结构来表示环境中的持久物体以促进运动规划和运动规划的产生的低层操作方法的流程图。
图7G是示出根据一个所示实施方式的在碰撞检测系统中通过生成存储体素占用信息的八叉树来表示环境中的持久物体以促进运动规划和运动规划的产生的低层操作方法的流程图。
图8是示出根据一个所示实施方式的在碰撞检测系统200中通过接收环境的传感器数据、将传感器数据转换成占用信息以及生成表示环境中的瞬时物体的数据结构来促进运动规划和运动规划的产生的低层操作方法800的流程图。
图9是示出根据一个所示实施方式的在碰撞检测系统中通过计算机器人附肢的在机器人附肢的两个运动姿势之间的中间姿势来促进运动规划和运动规划的产生的低层操作方法900的流程图。
图10是示出根据一个所示实施方式的在碰撞检测系统中通过执行迭代循环来确定中间姿势以促进运动规划和运动规划的产生的低层操作方法1000的流程图。
图11是示出根据一个所示实施方式的在碰撞检测系统中采用正向运动学来计算机器人的变换以促进运动规划和运动规划的产生的低层操作方法1000的流程图。
图12是示出根据一个所示实施方式的在碰撞检测系统中通过对处于某一姿势的机器人的一部分与机器人的另一部分的自碰撞的评估来促进运动规划和运动规划的产生的低层操作方法1000的流程图。
图13是示出根据一个所示实施方式的在碰撞检测系统中通过对从一个姿势移动到另一姿势时机器人的一部分与机器人的另一部分的自碰撞的评估来促进运动规划和运动规划的产生的低层操作方法1000的流程图。
图14A是根据一个所示实施方式的表示为三角形网格的机器人附肢的一部分的等距视图。
图14B-14E是根据一个所示实施方式的描绘为在深度为4的球体树的连续层中表示的图14A的机器人附肢的一部分的等距视图。
图15A是根据一个所示实施例的环境的等距视图,在该环境中,具有由三角形网格表示的机器人附肢的机器人与多个障碍物(例如杆)一起执行任务。
图15B是根据一个所示实施例的图15A的环境的等距视图,其中机器人附肢的表示已被转换成球体树。
具体实施方式
在以下描述中,阐述了某些具体细节以便提供对各种公开的实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有一个或更多个这些具体细节的情况下,或者可以利用其他方法、部件、材料等来实践实施例。在其他实例中,没有详细地示出或描述与计算机系统、致动器系统和/或通信网络相关联的公知结构,以避免不必要地模糊对实施例的描述。在其他实例中,没有详细地描述用于生成一个或更多个物体等的感知数据和体积表示的公知的计算机视觉方法和技术,以避免不必要地模糊对实施例的描述。
除非上下文另有要求,否则在整个说明书和所附权利要求书中,词语“包括”及其变型,例如“包括”和“含有”应当被解释为开放的、包括性的含义,即“包括但不限于”。
在整个说明书中对“一种实施方式”或“实施方式”或“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在至少一个实施方式中或至少一个实施例中。因此,在本说明书中的各个地方出现的短语“一种实施方式”或“实施方式”或“在一个实施例中”或“在实施例中”不一定全部指同一实施方式或实施例。此外,特定特征、结构或特性可以以任何合适的方式组合在一种或更多种实施方式或实施例中。
如本说明书和所附权利要求书中所使用的,除非内容另外明确指出,否则没有数量词修饰的名词包括复数个指代物。还应当注意,除非内容另外明确指出,否则术语“或”以其包括“和/或”的含义使用。
如在本说明书和所附权利要求中所使用的,当在是否会发生碰撞或导致碰撞的上下文中使用时,术语确定、正在确定和被确定意味着:关于给定姿势或两个姿势之间经由多个中间姿势的移动是否将导致机器人的一部分与某个物体(例如机器人的另一部分、持久障碍物、瞬时障碍物、或除当前目标物体之外的某个物体)之间的碰撞做出评估或预测。
本文提供的公开内容的标题和摘要仅是为了方便,而不是解释实施例的范围或含义。
图1示出了根据一个所示实施例的机器人102可以在其中操作的操作环境100。为了简洁起见,在本文中,操作环境100被称为环境100。环境100表示机器人102可以在其中操作和移动的二维或三维空间。注意,环境100不同于机器人的“配置空间”或“C空间”,这将在下面参考图4进行描述。
环境100能够包括表示可能碰撞的区域的障碍物106a-106n(统称为106)。术语障碍物106用于指示表示碰撞风险的物体(例如无生命的物体、包括人和其他动物的有生命的物体)。
这些障碍物106a、106b、106c中的一些可以采取静态障碍物或静态物体(即,在相关的时间段或运行时间期间不移动(即,平移、旋转)或改变形状的障碍物或物体,例如,建筑物、树、岩石、家具、基座106a、106b、支撑柱106c、搁板)的形式。这些障碍物中的一些可以采取环境100中的动态障碍物或动态物体106d、106e、106f(即,在相关时间段或运行时间的至少一部分期间移动(即,平移、旋转)或改变形状的障碍物或物体,例如,其他机器人、容器106d、106e、交通工具或交通工具形式的机器人106f、人、动物、滚动或移动物品106g)的形式。例如,一组基座106a、106b和支撑柱106c可以是固定的,或者可以在相关的时间段(例如运行时间)内不移动或改变形状,因此被认为是静态障碍物106。又例如,一组容器106d、106e和例如交通工具(例如轮式自推进式自主驱动手推车)形式的另一机器人106f可以在相关时间段(例如运行时间)期间移动或改变形状(例如倾斜),且因此被认为是动态障碍物106。
对于障碍物106a-106c中的一些,由障碍物占据的相应体积在配置模型或计算电路的时间(命名为配置时间)是已知的,并且预期在命名为运行时间的时间在机器人操作过程中保持固定或不变。这些障碍物106a-106c被命名为持久障碍物,因为在配置时间期间障碍物占据的体积是已知的并且预期在运行时间期间保持固定或不变。对于其他障碍物106d-106f,障碍物占据的相应体积在配置时间未知,并且仅在运行时间确定。因为在配置时间期间障碍物占据的体积是未知的,因此这些障碍物106d-106f被命名为瞬时障碍物。
环境100可以可选地包括机器人102意图与之交互(例如通过抓握目标物体108、移动目标物体108、以其他方式接合目标物体108以执行某一定义的任务或操作)的一个或更多个目标物体108。目标物体108通常不被认为是障碍物,但是在一些实施方式中例如在存在机器人将顺序地接合的多个目标物体108的情况下可以构成障碍物。一些实施方式可以不包括任何目标物体,机器人102在各种姿势之间移动而不与任何物体交互或接合任何物体。
图1示出了具有有限数量的障碍物106和目标物体108的代表性环境100。典型的环境可包括许多附加障碍物106和目标物体108,包括对应于其他机器人的物体和各种其他自然或人工静态和动态障碍物106或目标物体108。一些环境可完全省略目标物体108,或甚至省略动态障碍物106。在比所示环境更密集的环境中,可以以类似的方式采用本文教导的概念。
机器人102可以是任何类型的机器人,包括但不限于:笛卡尔、用于机器人组件的选择性顺应臂(SCARA)、圆柱形、三角形、极坐标和垂直铰接。机器人还可以是汽车、飞机、无人机或能够自主地或半自主地(即,至少部分自主地)操作并且在由环境100表示的空间中移动的任何其他交通工具。在所示的实施方式中,机器人102包括基座110、一组连杆112a、112b(仅两个被标识,统称为112)和一组关节114(仅一个被标识),关节114中的每个都物理地耦合相应的一对连杆112。机器人102还能够包括一个或更多个致动器(例如电动机、步进电机、螺线管、电磁体、液压活塞、气动活塞、液压阀、气动阀、用于真空系统、液压系统、气动系统的泵或压缩机)116(仅一个被标识),所述致动器驱动一个连杆112a相对于另一个连杆112B或相对于基座110的移动。机器人102还可以包括臂端部工具118的端部或端部执行器,例如具有可相对的指、钩或真空端口的抓紧器,以物理地接合环境100中的目标物体108。
环境100可以包括环境传感器系统120,该环境传感器系统可以包括一个或更多个环境传感器122a、122b、122c(示出了三个,统称为122)和集线器或环境传感器系统控制器124。
环境传感器122能够采用多种形式或类型中的任何一种,例如:一个或更多个数字相机122a、一个或更多个运动传感器或雷达122b、一个或更多个麦克风122c、一个或更多个重量传感器或载荷传感器(未示出)、一个或更多个电眼(例如IR光源和IR传感器)(未示出)、一个或更多个编码器(例如位置编码器、旋转编码器、Reed开关)(未示出)、一个或更多个温度传感器(未示出)、湿度传感器(未示出)和/或一个或更多个压力传感器(未示出),仅举几例。传感器检测环境的特性,包括障碍物、目标物体、机器人和/或环境中的其他物体的特性(例如位置、方向、形状、占用、移动、速度)。传感器122能够有线地、光学地、无线地向集线器或环境传感器系统控制器124提供信号。这些信号中的至少一些可以可选地编码或以其他方式表示感知数据。
集线器或环境传感器系统控制器124可以包括电路,例如一个或更多个处理器和/或一个或更多个非暂时性处理器可读介质(例如非易失性存储器、易失性存储器、旋转存储介质),并且可以执行例如由非暂时性处理器可读介质存储的一组或更多组处理器可执行指令。集线器或环境传感器系统控制器124可以通信地耦合(例如有线、光学、无线地)至传感器122中的一个或更多个以接收感测的信息,例如感知数据。在一些实施方式中,由一个或更多个处理器执行处理器可执行指令可以使得集线器或环境传感器系统控制器124处理或预处理所接收的感测信息中的一些或全部。
机器人控制系统126可以通信地耦合(例如有线地、光学地、无线地)至集线器或环境传感器系统控制器124以从中接收信息。信息可以包括环境100中的瞬时障碍物132的表示。机器人控制系统126可以通信地耦合(例如有线地、光学地、无线地)至计算机或终端134以接收运动细分粒度值或规格136的指示。
机器人控制系统126可以包括若干部件,所述部件通常是不同的,但是在一些实施方式中,可以在公共电路板、处理器或其他电路中组合。例如,一组驱动器136可包括用于通信地耦合至致动器116以驱动致动器来使机器人102采用或移动至限定姿势的电路。例如,驱动器能够包括对电动机、步进电机、螺线管、电磁体、液压活塞、气动活塞、液压阀、气动阀、用于真空系统、液压系统、气动系统的泵或压缩机中的任何一个或更多个进行驱动的电机控制器和类似电路。
机器人控制系统126可以包括运动规划系统138。运动规划系统138可以是机器人102的组成部分,与机器人102分离且不同,或者是一个或更多个部分可以在机器人上,同时一个或更多个其他部分可以与机器人分离(即,非机载)。运动规划系统138可以包括电路,例如一个或更多个处理器和/或一个或更多个非暂时性处理器可读介质(例如非易失性存储器、易失性存储器、旋转存储介质),并且可以执行例如由非暂时性处理器可读介质存储的一组或更多组处理器可执行指令。运动规划系统138可以生成用于使机器人102优选地在不与障碍物106碰撞的情况下执行特定任务的运动规划,例如在一系列连续姿势之间移动。运动规划系统138可以通信地耦合(例如有线地、光学地、无线地)至驱动器136以向其提供指令,所述指令使机器人遵循或执行运动规划。
机器人控制系统126可以包括或访问碰撞检测系统140。碰撞检测系统140可以包括电路,例如一个或更多个处理器和/或一个或更多个非暂时性处理器可读介质(例如非易失性存储器、易失性存储器、旋转存储介质),并且可以执行例如由非暂时性处理器可读介质存储的一组或更多组处理器可执行指令。如本文别处详细示出和描述的,碰撞检测系统140有利地采用机器人的运动学模型、环境中的持久障碍物和环境中的瞬时障碍物的数据结构表示来确定或检测机器人在各种姿势中或在姿势之间移动时与环境100中的障碍物106的碰撞。数据结构可以有利地采取分层数据结构(例如八叉树、体或盒的集合(例如轴对齐的边界盒(AABB)的树、有向(非轴对齐的)包围盒的树或球体的树)、其他树结构)或非分层数据结构(例如欧几里得距离场)的形式。如本文所说明的,碰撞检测系统140可以在确定或检测碰撞时采用运动细分粒度值或规格136。
碰撞检测系统140可以通信地耦合(例如有线、光学、无线地)至集线器或环境传感器系统控制器124以接收:机器人102的运动学模型128的表示、环境100中的持久障碍物130的表示以及环境100中的瞬时障碍物132的表示。在至少一些实施方式中,碰撞检测系统140以非分层格式接收运动学模型128、持久障碍物130的表示和/或瞬时障碍物132的表示中的一个、更多个或全部。在那些实施方式中,碰撞检测系统140可以在一些情况下有利地将运动学模型128、持久障碍物130的表示和/或瞬时障碍物132的表示中的一个、更多个或全部变换成分层格式或分层数据结构。在一些实施方式中,碰撞检测系统140可以在一些情况下有利地将运动学模型128、持久障碍物130的表示和/或瞬时障碍物132的表示中的一个、更多个或全部变换成非分层格式或分层数据结构,例如欧几里得距离场表示。在其他实施方式中,碰撞检测系统140以分层格式接收运动学模型128、持久障碍物130的表示和/或瞬时障碍物132的表示中的一个、更多个或全部,并且不执行任何变换。在其他实施方式中,碰撞检测系统140以非分层格式接收运动学模型128、持久障碍物130的表示和/或瞬时障碍物132的表示中的一个、更多个或全部,并且不执行任何变换。在更进一步的实施方式中,碰撞检测系统140以分层格式接收运动学模型128、持久障碍物130的表示和/或瞬时障碍物132的表示中的一个、更多个或全部,并将其转换为非分层格式(例如EDF)。
碰撞检测系统140可以通信地耦合(例如有线地、光学地、无线地)至计算机或终端134以接收运动细分粒度值或规格136。替选地,运动细分粒度值或规格136可以由碰撞检测系统140预先存储或从一些其他源接收。
在所示的实施方式中,目标物体108经由交通工具106f,例如自主自推进轮式或履带式机器人交通工具或手推车(例如机器人)被运输通过环境100的一部分。注意,能够采用其他交通工具,包括空中交通工具(例如旋翼飞行器或四轴飞行器、空中无人机)和/或水上交通工具(例如船、潜水艇、水上无人机)。机器人102的任务可以是从交通工具106f取回目标物体108并且在不与环境中的障碍物106a-106f中的任何障碍物碰撞的情况下将目标物体108放置到容器106d、106e中的选定容器中。替选地,机器人102的任务可以是从容器106d、106e中的选定容器取回目标物体108并且在不与环境中的障碍物106a至106f中的任何障碍物碰撞的情况下将目标物体108放置到交通工具106f上。任务的执行采用运动规划,而运动规划又采用碰撞检测。
对运动规划的挑战涉及以相对低的成本但以非常快的速度并且随着环境或甚至机器人的特性改变而频繁地执行运动规划的能力。例如,障碍物可以在配置之后进入环境,或者可以在环境中移动(例如平移、旋转)或者在配置之后或者甚至在机器人102运行时间期间的操作或移动期间改变形状。又例如,这样的特性可以包括但不限于,当机器人102正握持各种大小的目标物体108时、当改变到不同的端部执行器118时或当改变到不同的机器人附肢时,被机器人102的一部分(例如臂工具的端部或端部执行器108)所占据的体积。因此,对于运动规划来说,考虑那些变化以便执行任务是有利的。与此相关的是对有效地表示、传达和比较被认为由环境100中的障碍物106以及甚至机器人102占据的空间的挑战。因此,本公开提供了促进运动规划并且特别是碰撞检测的技术,使得机器人102能够成功地在真实世界环境中执行任务。
根据一个示出的实施方式,图2和以下讨论提供了对适当机器人控制系统200的简要的概括性描述,其中可以实现各种示出和描述的运动规划系统和方法。
尽管不是必需的,但是许多实施方式将在计算机可执行指令的一般情况下描述,诸如存储在计算机或处理器可读介质上并由可执行碰撞评估和运动规划操作的一个或更多个计算机或处理器执行的程序应用模块、物体或宏。这样的运动规划操作可以包括但不限于将基于运动学模型128(图1)的机器人几何形状的表示、持久障碍物130(图1)的表示和/或瞬时障碍物132(图1)的表示中的一个、更多个或全部生成或变换成数据结构格式(例如分层格式、非分层格式)。这样的运动规划操作可以包括但不限于:使用机器人的数据结构表示、环境中持久障碍物(如果存在)的数据结构表示和/或环境中瞬时障碍物(如果存在)的数据结构表示来确定或检测或预测机器人的各种姿势的碰撞或机器人在姿势之间的运动。这可以可选地基于运动细分粒度值或规格134。在一些实施例中,运动规划操作可以包括但不限于确定一个或更多个规划图、运动规划或道路图;存储所确定的规划图、运动规划或道路图,和/或提供规划图、运动规划或道路图以控制机器人的操作。
如前所述,多个传感器282可以向一个或更多个处理器,例如处理器212a,提供感知数据和/或其他感测信息。感知数据可以作为表示在当前时间(例如预配置时间、配置时间、运行时间)在环境中哪些体素或子体积(例如盒)被占用的流来提供。该数据可以以占用网格的形式被提供给一个或更多个处理器,诸如处理器212a。具体地,当表示环境100中的机器人或物体(例如障碍物106、目标物体108)时,可以将它们的表面表示为体素(3D像素)或多边形网格(通常为三角形)。每个离散的空间区域被称为“体素”,相当于3D(体积)像素。在一些情况下,将物体表示为盒(矩形棱柱)是有利的。由于物体不是随机成形的事实,因此在如何组织体素方面可能存在大量的结构;在3D空间中,物体中的许多体素彼此紧邻。因此,将物体表示为盒可能需要少得多的位(即,可能仅需要盒的两个对角的x、y、z笛卡尔坐标)。此外,对盒进行交集测试与对体素进行交集测试在复杂性方面相当。
至少一些实施方式可以组合多个传感器的输出端,并且传感器可以提供非常精细粒度的体素化。然而,为了使机器人102高效地执行运动规划,机器人102的处理器212a可以使用较粗糙的体素(即,“处理器体素”)来表示环境和当在各姿势或状态之间进行转换时机器人102所扫过的3D空间中的体积。因此,系统200可相应地变换传感器282的输出。例如,传感器282的输出端可以在每个轴上使用10位精度,因此直接源自传感器282的每个体素(即,“传感器体素”)具有30位ID,并且存在230个传感器体素。对于18位处理器体素ID,系统200可以(在配置时间和运行时间)在每个轴上使用6位精度,并且将存在218个处理器体素。因此,例如,每个处理器体素可以有212个传感器体素。在运行时,如果系统200确定处理器体素内的任何传感器体素都被占用,则系统200认为处理器体素被占用并且相应地生成占用网格。
在一个实施方式中,响应于由运动规划系统138进行的函数调用或类似处理来执行碰撞评估,并且向其返回布尔值。该碰撞检测系统可以有利地经由一个或更多个现场可编程门阵列(FPGA)和/或一个或更多个专用集成电路(ASIC)来实现,以执行碰撞检测,同时实现低延时、相对低的功耗、较低的成本(例如与动态随机存取存储器(DRAM)的使用相比)并且增加能够处理的信息量。
在各种实施例中,这样的操作可以完全在硬件电路中执行,或者作为存储在存储器诸如系统存储器214中的软件来执行,并且由一个或更多个硬件处理器212a来执行,一个或更多个硬件处理器例如一个或更多个微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、图形处理单元(GPU)处理器、编程逻辑控制器(PLC)、电可编程只读存储器(EEPROM),或者作为硬件电路和存储在存储器中的软件的组合。
此外,也在2017年6月9号提交的名称为“MOTION PLANNING FOR AUTONOMOUSVEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”的编号为PCT/US2017/036880的国际专利申请、在2016年1月5号提交的名称为“SPECIALIZED ROBOT MOTIONPLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”的编号为WO2016/122840的国际专利申请公开以及在2018年1月12号提交的名称为“APPARATUS,METHOD ANDARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN ANENVIRONMENT HAVING DYNAMIC OBJECTS”的编号为62/616,783的美国专利申请中描述感知、规划图构建、碰撞检测和路径搜索的各个方面的实施方式。相关领域的技术人员将理解,所示实施方式以及其他实施方式能够用其他系统结构和装置和/或其他计算系统结构和装置来实践,包括机器人、手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、个人计算机(“PC”)、联网PC、小型计算机、大型计算机等的那些。能够在分布式计算环境中对实施方式或实施例或者实施方式或实施例的部分(例如在配置时和运行时)进行实践,在该分布式计算环境中,由通过通信网络链接的远程处理设备来执行任务或模块。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备或介质中。然而,在哪里以及如何存储某些类型的信息对于帮助改进运动规划是重要的。
例如,各种运动规划解决方案将道路图(即,规划图)“烤”到处理器中,并且道路图中的每个边缘对应于处理器的不可重新配置的布尔电路。将规划图“烤”到处理器的设计造成的问题是,有限的处理器电路无法存储多个或大的规划图,并且通常不可重新配置以用于不同的机器人。
一种解决方案提供了将规划图信息放置到存储器中的可重新配置的设计。这种方法将信息存储在存储器中而不是被烤到电路中。另一种方法采用模板化可重配置电路来代替存储器。
如上所述,可以在配置时间期间,即在运行时间之前来捕获、接收、输入或提供一些信息。在运行时间期间,传感器282将感知数据发送到处理器212a。感知数据可以是存在于当前环境中并且存储在片上环境存储器294中的体素或盒的流。然后可以针对整个环境执行碰撞检测,包括针对任何姿势或姿势之间的移动,确定机器人的任何部分是否将与机器人的另一部分、与环境中的持久障碍物或与环境中的瞬时障碍物碰撞或被预测为与机器人的另一部分碰撞、与环境中的持久障碍物或与环境中的瞬时障碍物。碰撞检测有利地使用数据结构表示来执行碰撞检测分析,并且通常返回简单的布尔值作为输出。
图2示出了机器人控制系统200,例如用于机器人102的机器人控制系统,其包括由处理器212a表示的一个或更多个处理器,以及一个或更多个相关联的非暂时性机器可读存储介质,例如系统存储器214、碰撞检测系统284和与磁盘驱动器224相关联的计算机可读介质226。相关联的非暂时性计算机或处理器可读存储介质——包括系统存储器214、碰撞检测系统284的存储器或寄存器以及与磁盘驱动器224相关联的计算机可读介质226——经由一个或更多个通信信道例如系统总线216通信地耦合至处理器212a。系统总线216能够采用任何已知的总线结构或架构,包括具有存储器控制器的存储器总线、外围总线和/或局部总线。一个或更多个传感器282和致动器系统266也经由系统总线216通信地耦合至处理器212a。一个或更多个这样的部件也可以或替代地经由一个或更多个其他通信信道或经由Thunderbolt彼此通信,所述其他通信信道例如,一个或更多个并行线缆、串行线缆、或能够高速通信的无线网络信道,例如,通用串行总线(“USB”)3.0、快速外围部件互连(PCIe)。
机器人控制系统200还可以可通信地耦合至远程系统,例如,台式计算机、膝上型计算机、超便携式计算机、平板计算机、智能电话、可穿戴计算机,统称为134(图1),所述远程系统经由网络接口260直接可通信地耦合或间接可通信地耦合至机器人控制系统200的各种部件。这种远程系统可用于对机器人控制系统200和机器人控制系统200内的各种部件进行编程、配置、控制或其他接合或者将数据输入至所述机器人控制系统和机器人控制系统200内的各种部件。这样的连接可以通过一个或更多个通信信道,例如一个或更多个广域网(WAN),例如使用因特网协议的因特网。如上所述,可以由与机器人102或其他机器人分离的系统执行预运行计算(例如规划图族的生成),而运行时计算可以在机器人102上的处理器212上执行。
在2017年6月9号提交的名称为“MOTION PLANNING FOR AUTONOMOUS VEHICLESAND RECONFIGURABLE MOTION PLANNING PROCESSORS”的编号为PCT/US2017/036880的国际专利申请、在2016年1月5号提交的名称为“SPECIALIZED ROBOT MOTION PLANNINGHARDWARE AND METHODS OF MAKING AND USING SAME”的编号为WO2016/122840的国际专利申请公开;和/或在2018年1月12号提交的名称为“APPARATUS,METHOD AND ARTICLE TOFACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVINGDYNAMIC OBJECTS”的编号为62/616,783的美国专利申请对图2中所示的各种盒的构造和操作进行描述。因为相关领域的技术人员根据通过引用并入本文的参考文献将理解这些块,因此不需要进一步详细描述它们。
机器人控制系统200可以包括一个或更多个处理单元212、系统存储器214、碰撞检测系统284和耦合各种系统部件的系统总线216。在一些实施方式中,碰撞检测系统284可以采取一个或更多个不同处理器的形式,例如一个或更多个FPGA或ASIC。处理器212a可以是任何逻辑处理单元,例如一个或更多个中央处理单元(CPU)212a、数字信号处理器(DSP)212b、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。系统存储器214可以包括只读存储器(“ROM”)218和随机存取存储器(“RAM”)220。基本输入/输出系统(“BIOS”)222能够形成ROM218的一部分,并且包括例如在启动期间帮助在机器人控制系统200内的元件之间传送信息的基本例程。
机器人控制系统200可以包括磁盘驱动器224,其可以是例如用于对硬盘进行读写的硬盘驱动器、用于对可移动闪存设备进行读写的闪存驱动器、用于对可移动光盘进行读写的光盘驱动器、或者用于对磁盘进行读写的磁盘驱动器。在各种不同实施例中,机器人控制系统200还可包括此类磁盘驱动器的任何组合。磁盘驱动器224可以经由系统总线216与处理单元212通信。如相关领域的技术人员所知,磁盘驱动器224可以包括耦合在这些驱动器和系统总线216之间的接口或控制器(未示出)。磁盘驱动器224及其相关联的计算机可读介质226为机器人控制系统200提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。相关领域的技术人员将理解,可以使用能够存储计算机可访问的数据的其他类型的计算机可读介质,诸如WORM驱动器、RAID驱动器、磁带盒、数字视频盘(“DVD”)、伯努利盒式磁带、RAM、ROM、智能卡等。
程序模块(例如操作系统236、一个或更多个应用程序238、其他程序或模块240和程序数据242)能够存储在系统存储器214中。应用程序238可以包括使处理器212执行以下各项中的一项或多项的指令:生成机器人将在其中操作的环境100(包括环境100中的障碍物106和/或目标物体108)的离散化表示;生成规划图、运动规划或道路图,包括要求或以其他方式获得碰撞评估的结果;和/或存储所确定的多个规划图、运动计划或道路图。如本文和通过引用并入本文的参考文献中所描述的,应用程序238还可以包括一个或更多个机器可读指令集,所述机器可读指令集使得处理器212执行感知(经由传感器282)、规划图构建、碰撞检测和路径搜索的其他操作。
在本示例中使用术语“环境”来指代机器人的当前工作空间,包括障碍物。在本示例中使用术语“任务”来指代机器人任务,其中,机器人102必须在不与其环境中的障碍物碰撞的情况下从姿势A到达姿势B(可能抓取或松开或放下物品或者取回或放置物品)。在本示例中使用术语“场景”用于指代环境/任务对的类别。例如,场景可以是“在具有3英尺桌子的环境中在具有给定范围中的大小和形状的x和y障碍物之间拾取和放置任务”。根据目标的位置以及障碍物的大小和形状,可以有许多不同的任务/环境对符合这种标准。系统200可包括经由网络接口260通过通信网络链接的一个或更多个远程处理设备。这样的一个或更多个远程处理设备可以执行一个或更多个机器可读指令集,所述机器可读指令集使得系统200生成环境100的相应离散化表示,在该环境中,机器人102将针对各种不同场景的任务和环境对进行操作。在示例实施例中,相应离散化表示中的至少两个包括相应的体素集。所述相应离散化表示的体素在所述相应离散化内的大小和形状中的至少一者上可为非均匀的。此外,相应离散化的体素的非均匀性的相应分布可以彼此不同。特别地,离散化可以包括相应的体素集,其中相应离散化中的至少两种的体素在相应离散化内的大小和形状中的至少一个方面是非均匀的,并且相应离散化中的至少两个的体素的非均匀性的相应分布彼此不同。应用程序238可以包括一个或更多个机器可读指令集,所述机器可读指令集使得处理器212随后对所生成的表示机器人将在其中操作的环境100的相应离散化的有效性进行评估,并且存储所生成的被评估为对于特定场景最有效的相应离散化。
应用程序238可以另外地包括一个或更多个机器可读指令集,其使得碰撞检测系统284针对机器人将在其中操作的环境中的任何障碍物执行碰撞检查。碰撞检测系统284可以使用本文别处描述的各种结构和技术来执行这种碰撞检测。
应用程序238可以另外地包括一个或更多个机器可读指令集,其使得212执行本文描述的各种其他方法,包括但不限于图5至13中所示的那些。
在各种实施例中,上述操作中的一个或更多个可以由系统200的一个或更多个远程处理设备执行,或者由一个或更多个处理器212或碰撞检测系统284执行,所述远程处理设备经由网络接口260通过通信网络链接。
虽然在图2中示为被存储在系统存储器214中,但是操作系统236、应用程序238、其他程序/模块240和程序数据242可被存储在磁盘驱动器224的相关联的计算机可读介质226上。
处理器212和碰撞检测系统284可以是任何逻辑处理单元,诸如一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等,商业上可获得的计算机系统的非限制性示例包括但不限于美国Intel公司提供的Celeron、Core2、Itanium和Xeon系列的微处理器;由美国Advanced Micro Devices提供的K8、K10、Bulldozer和Bobcat系列微处理器;由美国苹果计算机公司提供的A5、A6和A7系列微处理器;由Qualcomm提供的Snapdragon系列微处理器;以及由美国Oracle公司提供的SPARC系列微处理器。
图3示出了碰撞检测系统300的各种硬件模块或单元的逻辑表示,其能够用于根据本文所述的各种方法或处理来执行碰撞检测。
正向运动学模块或硬件单元302将姿势(配置空间或C空间中的D元组)作为输入,并且提供自由空间中的机器人的每个连杆的相应平移和旋转作为输出。
Epsilon边缘模块或硬件单元304接收两个姿势作为输入,并在这两个姿势之间执行递归细分以寻找或计算先前姿势对之间的数个(例如多个)中间姿势。继续细分并产生中间姿势,直到相邻姿势之间的距离小于定义的epsilon容差值。例如在将不对两个姿势之间的运动进行评估的情况下,epsilon边缘模块或单元的使用可以是可选的。
插值模块或硬件单元306接收两个姿势作为输入,并且计算两个姿势之间的新姿势。插值模块或单元306可以是epsilon边缘模块或硬件单元304的一部分。
机器人自碰撞检测模块或硬件单元308检测机器人中不同连杆之间的碰撞,注意,相邻连杆之间不可能发生碰撞。该硬件可以有利地被优化以确定表示机器人的两个连杆中的相应连杆的两个球体树是否交叠。
持久环境碰撞检测模块或硬件单元310检测机器人的任何部分与机器人在其中操作的环境中的持久物体或障碍物之间的碰撞。该硬件可以有利地被优化以确定表示机器人的连杆的球体树是否与表示环境中的持久物体的欧几里得距离场碰撞。
瞬时环境碰撞检测模块或硬件单元312检测机器人的任何部分与机器人在其中操作的环境中的瞬时物体或障碍物之间的碰撞。该硬件可以有利地被优化以确定表示机器人的连杆的球体树是否与表示环境中的持久物体的一组轴对齐的包围盒交叠。
碰撞检测模块或硬件单元308、310、312中的任何一个或优选地全部能够采用可以提高计算效率和功率效率的定点硬件(即,电路)。虽然被图示为一组模块或单元,但是操作系统可以包括前述模块或硬件单元中的每一个的可以有利地并行操作的多个副本或实例。例如,一旦插值单元产生新的姿势,就可以并行地检查该姿势的自碰撞以及与持久和瞬时物体的碰撞。此外,碰撞检查能够有利地在许多碰撞检测单元上并行进行。
图4示出了机器人的“配置空间”或“C空间”400,以及机器人的运动规划图或道路图402。配置空间400通常是多维的(即,大于3维)。表示了各障碍物404a、404b、404c(示出了四个,仅有三个被标识,统称为404)。
规划图或道路图402包括多个节点406a、406b、406c、406d、……、406n(示出了十一个,仅五个被标识,统称为406),所述多个节点表示机器人的相应状态,该状态可以包括但不限于机器人的特定配置(其是机器人的特定关节位置集合的完整规格)、姿势、速度和机器人的航向。状态之一可以例如是或表示开始状态406a。状态之一可以例如是或表示结束或目标状态406n。规划图或道路图402包括多个边缘408a、408b、408c、408d、……、408n(示出了十一个,仅有五个被标识,统称为408)。规划图或道路图402的每个边408表示机器人从一个状态到另一个状态的转变。在2017年6月9号提交的名称为“MOTION PLANNING FORAUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”的编号为PCT/US2017/036880的共同转让的国际专利申请中,以及在2016年1月5号提交的名称为“SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USINGSAME”的编号为WO2016/122840的共同转让的国际专利申请公开中,描述了适合于运动规划和生成道路图402的一些结构和方法。
使用各种各样的算法来解决运动规划问题。这些算法中的每一个都需要能够确定:给定的姿势或者从一个姿势到另一个姿势的运动是否导致碰撞。
本文描述的碰撞检测硬件、软件和/或固件能够确定或计算单个机器人姿势或从一个姿势(例如开始姿势)到另一个姿势(例如结束姿势)的机器人运动是否导致机器人的一部分与机器人的另一部分或与机器人在其中操作的当前环境中的任何物体碰撞。环境通常包括障碍物,并且可以包括或者可以不包括机器人将有意参与执行任务(例如抓握和移动目标物体)的一个或更多个目标物体。如前所述,对于一些障碍物,在配置模型或计算电路的时间(该时间被命名为配置时间),障碍物占据的相应体积是已知的,并且期望在机器人操作的整个过程(被命名为运行时间的时间)中保持不变。因为物体占据的体积在配置时间期间是已知的,并且预期在运行时间期间保持不变,因此这些障碍物被命名为持久障碍物。对于其他障碍物,障碍物占据的相应体积在配置时是未知的,并且仅在运行时确定。因为在配置时间期间障碍物占据的体积是未知的,因此这些障碍物被命名为瞬时障碍物。由这些暂时障碍物中的一个或更多个占据的相应体积可以是固定的或不移动的或随时间不变,并且被命名为静态障碍物。由这些暂时性物体中的一个或更多个占据的相应体积可以是移动的或随时间改变的,并且被命名为动态障碍物。
本文描述的碰撞检测硬件、软件和/或固件能够实现为由各种运动规划算法调用或触发的子程序或函数,各种运动规划算法例如概率道路图(PRM)、快速探测随机树(RRT)、RRT*、双向RRT等算法。本文描述的碰撞检测硬件、软件和/固件还能够用于通过快速评估许多候选抓握姿势来加速抓握规划。
本文描述的各实施方式通常采用两个或三个配置时间输入:i)机器人的运动学模型;ii)所述环境中的持久障碍物或物体的表示;以及可选地运动细分粒度值或规格。机器人的运动学模型包括对机器人的多个关节中的任何关节的约束(例如肘关节的最小和最大角度)、从机器人的每个连杆到机器人的相应母连杆的变换、机器人的每个关节的轴线、以及机器人的每个连杆的几何形状的规格。
本文描述的各实施方式通常采用两个或三个运行时间输入:a)开始姿势;b)可选地,结束姿势(如果运动正在被评估);以及c)环境中的在运行时已知但在配置时未知的瞬时障碍物或物体的表示。瞬时障碍物或物体可以是静态的(即,在相关或运行时间段期间固定或不移动或不改变形状)或动态的(即,在相关或运行时间段的至少一部分期间移动或改变形状)。对于具有数量D个自由度的机器人,姿势可以被指定为D元组,其中元组的每个元素指定该自由度(关节)的位置或旋转。
如前所述,用于碰撞检测的高效硬件的实施能够经由仔细关注表示物体、姿势和/或运动的数据结构的选择来实现。良好选择的数据结构能够有利地减少存储所需的存储器的量、碰撞检测所需的硬件的量、执行碰撞检测的延时以及功耗。这里提供的描述提供了多个可能合适的示例性数据结构,尽管本领域技术人员将认识到,基于这里的教导可以使用其他结构。存在多种选项,每种选项都与延时和准确性之间的相应权衡相关联。
在图5-13中示出并在下面讨论了碰撞检测系统的多个操作过程或方法。
图5是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的高层操作方法500的流程图。运动计划可以由机器人执行,例如具有一个或更多个机器人附肢的机器人,每个机器人附肢包括一个或更多个连杆、一对连杆之间的关节以及一个或更多个致动器。方法500有利地允许在运行时间期间考虑在环境中发生的变化(例如障碍物的引入、障碍物的移除、障碍物的位置、方向或形状的变化)。
方法500在502处开始,例如响应于经由调用例程或模块的调用,或者响应于接收到信号或检测到向碰撞检测系统200施加功率而开始。
在504处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件接收表示机器人(例如表示具有多个连杆和多个关节的机器人附肢,其中关节在各对连杆之间)的运动学模型。运动学模型能够是任何已知的或待开发的格式。
在506处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件接收表示环境中的一组持久障碍物的占用信息。占用信息可以例如表示由环境中的一组持久障碍物中的每个持久障碍物占用的相应体积。占用信息可以是任何已知的或待开发的格式。占用信息可以由一个或更多个传感器生成,或者可以经由计算机或甚至由人来定义或指定。占用信息通常在配置时间之前或期间被接收。
可选地,在508处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件接收表示要在运动规划中采用的运动细分粒度的至少一个值或规格。运动细分粒度定义了对于特定问题可接受的最大间隔。运动细分粒度可以例如基于问题的类型、场景的类型、机器人的类型和/或特定机器人来预先定义或指定。替选地,运动细分粒度可以由用户经由任何常见输入设备(例如键盘、小键盘、计算机鼠标、触摸屏显示器、麦克风)来提供或指定。
在510处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件至少部分地基于机器人的运动学模型来生成机器人的数据结构表示。数据结构表示包括对多个连杆和关节的表示。在本文别处讨论各种合适的数据结构和技术,例如各种分层数据结构(例如树数据结构)或非分层数据结构(例如EDF数据结构)。
在512处,基于处理器的系统(例如碰撞检测系统200)的至少一个部件生成机器人将在其中操作的环境中的一组持久性物体的数据结构表示。数据结构表示包括对多个障碍物的表示,这些障碍物在配置时间在环境中具有已知的固定位置和方向,并且因为假设这些物体从配置时间到运行时间在环境中持续存在于已知的位置和方向,因此被命名为持久的。在本文别处讨论各种合适的数据结构,例如各种分层数据结构(例如树数据结构)或非分层数据结构(例如EDF数据结构)和技术。
在514处,基于处理器的系统(例如碰撞检测系统200)的至少一个部件接收表示环境中的一组瞬时障碍物的相应位置的占用信息。占用信息通常由一个或更多个传感器生成,所述一个或更多个传感器被定位和定向为感测机器人将在其中或者在其中操作的环境。占用信息可以是任何已知的或待开发的格式。占用信息通常在配置时间之后的运行时间期间被接收。
在516处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成机器人将在其中操作的环境中的一组瞬时物体的数据结构表示。数据结构表示包括多个瞬时障碍物(如果有的话)的表示,这些瞬时障碍物在运行时间的至少某一部分期间在环境中具有已知的位置和方向,并且在配置时间在环境中不具有已知的固定位置或方向。如下所述,可以基于由一个或更多个传感器产生的传感器数据来生成环境中的一组瞬时物体的数据结构表示,所述一个或更多个传感器被定位和定向为在运行时间或在运行时期间感测环境的物理特性。在本文别处讨论各种合适的数据结构,例如各种分层数据结构(例如树数据结构)或非分层数据结构(例如EDF数据结构)和技术。
在518处,对于机器人的至少第一数量的姿势中的每一个,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件至少部分地基于机器人的数据结构表示来确定或评估或预测机器人的任何部分是否将与机器人的另一部分碰撞。用于确定是否会导致碰撞的特定技术可以至少部分地取决于所采用的数据结构的类型和/或部分地基于用于表示机器人的一个或更多个几何形状的特定类型。在本文别处描述,例如在以下阐述的各种其他方法和示例的讨论中描述用于确定是否会导致碰撞的各种技术。
在520处,对于机器人的至少第二数量的姿势中的每一个,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件至少部分地基于环境中的一组持久障碍物的数据结构表示来确定或评估或预测机器人的任何部分是否将与机器人在其中操作的环境中的任何持久障碍物碰撞。如上所述,持久障碍物的数据结构表示包括多个障碍物的表示,这些障碍物在配置时间已知为在机器人执行任务的操作期间(例如运行时间)占据在整个后续时段中不期望移动或改变的相应体积。用于确定是否会导致碰撞的具体技术可以至少部分地取决于所采用的数据结构的类型和/或部分地基于用于表示持久障碍物和机器人的一个或多个几何形状的特定类型。在本文别处描述,例如在以下阐述的各种其他方法和示例的讨论中描述用于确定是否会导致碰撞的各种技术。
在522处,对于机器人的至少第三数量的姿势中的每一个,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件至少部分地基于环境中的一组瞬时物体的数据结构表示来确定或评估或预测机器人的任何部分是否将与环境中的任何瞬时障碍物碰撞。如上所述,瞬时障碍物的数据结构表示包括环境中的多个障碍物的表示(如果有的话),其在运行时间的至少一部分期间在环境中占据已知体积(例如位置、方向、形状和大小),并且其在配置时间不具有瞬时障碍物在环境中占据的已知体积。用于确定是否将导致碰撞的具体技术可以至少部分地取决于所采用的数据结构的类型和/或部分地基于用于表示瞬时障碍物和机器人的一个或多个几何形状的特定类型。在本文别处描述,例如在以下阐述的各种其他方法和示例的讨论中描述用于确定是否会导致碰撞的各种技术。
在524处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件提供表示是否已针对姿势中的至少一个检测到碰撞的信号。该信号优选地表示布尔值(例如:0,1;真、假;是、否)。因此,方法500能够用作由另一例程或调用函数调用或触发的子例程或函数,例如经由根据定义的应用编程接口(API)的调用。
方法500可以在526处终止,例如直到再次被调用或触发。替选地,方法500可以连续地执行,或者例如作为多线程处理器上的多个线程执行。
图6是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法600的流程图。方法600可以在执行方法500(图5)时执行,例如在至少部分地基于表示机器人的运动学模型来生成机器人的表示510(图5)时执行。
在602处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成由运动学模型表示的机器人的数据结构表示。例如,对于机器人的每个连杆,碰撞检测系统200生成相应的树,例如树深度等于或大于四的树(例如8叉树)作为机器人的分层表示。又例如,对于机器人的每个连杆,碰撞检测系统200可以生成相应的k叉树,其中k叉树的每个节点是球体,如果相应球体的任何部分被占据,则每个节点被识别为被占据。
图7A是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700a的流程图。方法700a可以在执行方法500(图5)时执行,例如在生成在机器人将在其中操作的环境中的一组持久障碍物的数据结构表示512(图5)时执行。
在702处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成表示环境中的持久障碍物的包围体的分层结构。例如,碰撞检测系统200生成轴对齐包围盒(AABB)的树、有向(非轴对齐)包围盒的树或球体树。注意,这些树型数据结构中的任何一个的叶子能够是与数据结构的其他节点不同的形状,例如,除了可以采取三角形网格形式的根节点之外,所有节点都是AABB。
图7B是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700b的流程图。方法700b可以在执行方法700a(图7)时执行,例如在产生表示机器人将在其中操作的环境中的持久障碍物的包围体的分层结构702(图7)时执行。
在704处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成具有三角形网格作为叶节点的包围盒的分层结构,所述包围盒表示环境中的持久障碍物。如上所述,树型数据结构的叶子可以是与数据结构的其他节点不同的形状,例如,除了可以采取三角形网格形式的根节点之外,所有节点都是AABB。
图7C是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700c的流程图。方法700c可以在执行方法700a(图7)时执行,例如在产生表示机器人将在其中操作的环境中的持久障碍物的包围体的分层结构时702(图7)执行。
在706处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成表示环境中的持久障碍物的球体的分层结构。使用球体作为包围体有助于快速比较(即,在计算上容易确定球体是否彼此交叠)。
图7D是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700d的流程图。方法700d可以在执行方法700a(图7)时执行,例如在产生表示机器人将在其中操作的环境中的持久障碍物的包围体的分层结构702(图7)时执行。
在708处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成表示环境中的持久障碍物的k叉球体树。如上所述,使用球体作为包围体有助于快速比较(即,在计算上容易确定球体是否彼此交叠)。
图7E是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700e的流程图。方法700e可在执行方法700a(图7)时执行,例如在产生表示机器人将在其中操作的环境中的一组持久障碍物的包围体的分层结构702(图7)时执行。
在710处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成表示环境中的持久障碍物的轴对齐包围盒(AABB)的分层结构。
图7F是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700F的流程图。方法700F可在执行方法700a(图7)时执行,例如在产生表示机器人将在其中操作的环境中的持久障碍物的包围体的分层结构702(图7)时执行。
在712处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成表示环境中的持久障碍物的有向包围盒的分层结构。
图7G是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法700g的流程图。方法700g可以在执行方法500(图5)时执行,例如在生成机器人将在其中操作的环境中的一组持久障碍物的数据结构表示512(图5)时执行。
在714处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件生成存储表示环境中的持久障碍物的体素占用信息的八叉树。
图8是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法800的流程图。方法800可在执行方法500(图5)时执行,例如在产生机器人将在其中操作的环境中的一组瞬时障碍物的数据结构表示516(图5)时执行。
在802处,基于处理器的系统(例如碰撞检测系统140、200)或集线器或环境传感器系统控制器124(图1)中的至少一个部件来接收表示环境中的瞬时障碍物的传感器导出信息。尽管通常经由集线器或环境传感器系统控制器124(图1)被路由至碰撞检测系统200,但是传感器数据可以直接从一个或更多个传感器接收。一些或所有传感器信息可以采取原始或预处理数据的形式,并且可以以任何现有或以后创建的格式或模式来格式化。
在804处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件或集线器或环境传感器系统控制器124(图1)将传感器信息转换成占用信息。占用信息可以以任何现有或以后重新创建的格式或模式来格式化。
在806处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件根据占用信息生成环境中的瞬时障碍物的数据结构表示。如本文所讨论的,可以采用多种分层表示类型中的任何一种,包括各种树结构。替选地,可采用各种非分层表示,例如欧几里得距离场(EDF)表示。参照图7A-7G讨论的用于生成持久障碍物的分层和/或非分层表示的各种操作和相应的分层和/或非分层表示可以用于生成瞬时障碍物的分层和/或非分层表示。为了简明起见,本文不再重复。
图9是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法900的流程图。方法900可以在执行方法500(图5)时执行,例如在确定机器人的任何部分是否将与机器人的另一部分碰撞518、确定机器人的任何部分是否将与任何持久障碍物碰撞520、或确定机器人的任何部分是否将与任何瞬时障碍物碰撞522(图5)时执行。
在902处,针对机器人附肢在第一姿势与第二姿势之间的运动,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件计算机器人附肢的多个中间姿势。例如,碰撞检测系统200可以计算在机器人的C空间中机器人附肢的第一与第二姿势之间的多个中间姿势,直到连续相邻姿势对之间的尺寸满足所接收的运动细分粒度的值。
图10是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法1000的流程图。方法1000可在执行方法500(图5)时执行,例如在计算机器人附肢的多个中间姿势902(图9)时执行。
方法1000可以例如响应于经由调用例程或模块的调用,或者响应于接收到信号或检测到向基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件施加功率而在1002开始。
在1004处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件对机器人附肢的关节中的每一个执行迭代循环。
在迭代循环中,在1006处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件在第一与第二姿势中关节的相应位置之间进行插值以获得第n个中间姿势。
在1008处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件为了相应迭代在相应最近相邻姿势对的关节的相应位置之间迭代地插值。
在1010处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定是否达到结束条件。结束条件可以是例如连续相邻的姿势之间的距离满足指定的运动细分粒度值或规格。结束条件可以例如附加地或可替换地包括可以完成的迭代的最大次数。响应于确定已经满足结束条件,控制传递到1012。否则,控制返回到1008。
方法1000可以在1012终止,例如直到再次被调用或触发。替选地,方法1000可连续地执行,或例如作为多线程处理器上的多个线程执行。
换句话说,算法以初始的姿势对(例如姿势A和姿势Z)开始。在初始姿势对(例如姿势A和姿势Z)之间找到第一中间姿势(例如姿势M)。随后,在初始姿势对的一个姿势(例如姿势A)与第一中间姿势(例如姿势M)之间找到第二中间姿势(例如姿势F)。可选地,在初始姿势对的另一姿势(例如姿势Z)与第一中间姿势(例如姿势M)之间找到第三中间姿势(例如姿势V)。然后,该算法能够基于连续找到的姿势迭代地重复以找到最接近的相邻姿势对之间的姿势。
图11是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法1100的流程图。方法1100可在执行方法500(图5)时执行,例如在计算机器人附肢的多个中间姿势902(图9)时执行。
在1102处,对于多个姿势中的每一个,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件对运动学机器人模型执行正向运动学计算,以计算机器人附肢的每个连杆从C空间到自由空间的多个变换。
图12是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法1200的流程图。方法1200可在执行方法500(图5)时执行,例如在计算机器人附肢的多个中间姿势902(图9)时执行。
在1202处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定机器人附肢的至少一部分在一个姿势中是否将与机器人附肢的另一部分碰撞。可以采用用于确定机器人附肢的至少一部分在一个姿势中是否将与机器人附肢的另一部分碰撞的各种技术和算法,包括但不限于本文描述的那些。
在1204处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定机器人附肢的至少一部分在一个姿势中是否将与环境中的任何持久障碍物碰撞。可以采用用于确定机器人附肢的至少一部分在一个第一姿势中是否将与环境中的任何持久障碍物碰撞的各种技术和算法,包括但不限于本文描述的那些。
在1206处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定机器人附肢的至少一部分在一个姿势中是否将以与环境中的任何瞬时障碍物碰撞。可以采用用于确定机器人附肢的至少一部分在一个第一姿势中是否将与环境中的任何瞬时障碍物碰撞的各种技术和算法,包括但不限于本文描述的那些。
图13是示出根据一个所示实施例的在基于处理器的系统(例如机器人控制系统126、碰撞检测系统140、200)中执行用于运动规划和运动规划的产生的碰撞检测或评估或预测的低层操作方法1300的流程图。方法1300可在执行方法500(图5)时执行,例如在计算机器人附肢的多个中间姿势902(图9)时执行。
在1302处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定机器人附肢的至少一部分在经由机器人附肢从一个姿势移动到另一姿势时将通过的多个中间姿势而在一个姿势(例如第一姿势)与另一姿势(例如第二姿势)之间移动时是否将与机器人附肢的另一部分碰撞。
在1304处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定机器人附肢的至少一部分在经由机器人附肢从一个姿势移动到另一姿势时将通过的多个中间姿势而在一个姿势(例如第一姿势)与另一姿势(例如第二姿势)之间移动时是否将与环境中的任何持久障碍物碰撞。
在1306处,基于处理器的系统(例如碰撞检测系统140、200)的至少一个部件确定机器人附肢的至少一部分在经由机器人附肢从一个姿势移动到另一姿势时将通过的多个中间姿势而在一个姿势(例如第一姿势)与另一姿势(例如第二姿势)之间移动时是否将是否将与环境中的任何瞬时障碍物碰撞。
示例
能够用例如八叉树、盒的集合或欧几里得距离场(EDF)中的任何一个来有效地表示各种几何形状。
八叉树是存储体素占用数据的分层数据结构。树结构允许碰撞检测根据需要仅下降到树结构的固有分层中,从而增加碰撞检测过程的计算效率。八叉树的一个好处是固有的分层。当然,还有分层的并且可能合适的其他数据结构。
盒的集合可以采取各种形式,例如:轴对齐的包围盒(AABB)的树、有向(非轴对齐)包围盒的树或球体树。注意,这些树型数据结构中的任何一个的叶子能够是与数据结构的其他节点不同的形状,例如,除了可以采取三角形网格形式的根节点之外,所有节点都是AABB。选择包围体表示伴随着构建对应数据结构所需的延时与计算碰撞的延时之间的折衷,例如包括在碰撞检测完成之前需要遍历树的多少。例如,使用球体作为包围体便于快速比较(即,在计算上容易确定球体是否彼此交叠)。例如,如本文别处所述,优选地使用k叉球体树来表示机器人的每个连杆。在一些实施方式中,表示环境的体素能够被一起分组到AABB集合中。这可以充分简化体素数据,使得在某些情况下,比使用八叉树在计算上更快并且存储器更有效。
EDF将工作空间离散化为3D体素网格,并且每个体素的值编码到该工作空间中的最近障碍物的距离。工作空间包括机器人在机器人的任何姿势中可能到达的所有空间。
在典型的问题中,存在三种类型的项目,其被表示为:i)机器人,ii)持久障碍物,和iii)暂时障碍物。可以选择任何上述几何形状来表示这些项目中的任何一个。
机器人
机器人能够被建模为由关节连接的连杆的树。对于单个机器人附肢或臂,该“树”通常是一元的,但能够更一般,例如,具有两个或更多子连杆的连杆。
为了有效地表示机器人并且在计算上方便的简单的碰撞检测,可以有利地优选利用相应的k叉球体树来表示机器人的每个连杆。例如,每个连杆可以用相应的深度为4的8叉树表示,总共585个球体。
k叉树是其中每个父节点具有k个子节点的树。例如,k叉树可以采取k叉球体树的形式,其中,k叉球体树的每个节点是球体,如果该球体的任何部分被占用,则认为该球体被占用。考虑由三角形网格表示的机器人连杆。树的根将是包围整个连杆的球体。k个子节点将是一起覆盖连杆几何结构的所有组成三角形的球体,并且由于它们是球体,因此它们必然也将彼此交叠。这些子节点中的每一个具有k个子节点等。对于采用深度为4的8叉树的实施方式,其导致585个球体来表示连杆:1为根,8为根的子节点,64表示下一层,512表示叶层,如图14A-14E所示,如下所述。
图14A示出了根据一个所示实施方式的被表示为三角形网格1400的机器人附肢的一部分。
如通过图14B、14C、14D和14E的序列所示,在该示例中,深度为4的球体树的形式的数据结构将用于近似地表示机器人附肢。
特别地,图14B、14C、14D和14E分别描绘了球体树的4个连续的层。在图14B中所示的第一层处,单个球体1402包围整个机器人附肢1400。在图14C中所示的第二层处,八个球体1404(未单独标识)包围整个机器人附肢1400。在图14D所示的第三层处,六十四个球体1406(未单独标识)包围整个机器人附肢1400。在图14D所示的第三层,五百一十二个球体1406(未单独标识)包围整个机器人附肢1400。
障碍物
对于在整个运行时间内将在环境中占据一致或不变的体积以及在配置时间已知占据体积的障碍物,优选的是用欧几里得距离场来表示那些持久的障碍物。
对于在运行时间期间将在环境中占据不一致或变化的体积或者配置时间期间不知道在运行时间期间是否存在的障碍物,由一个或更多个传感器来捕获表征被占据的体积(例如位置、大小)的特定信息(如果有),并且根据该捕获信息进行辨别。虽然在大多数情况下采用的特定传感器技术可能无关紧要,但是将以某种限定的格式(例如点云)来提供传感器数据。基于处理器的系统能够将接收到的传感器数据或信息变换成占用网格。优选地,使用轴对齐包围盒来表示例如在列表中或在树结构中,或在八叉树中的障碍物。
图15A示出了根据一个示出实施例的环境1500,其中,具有机器人附肢1504的机器人1502利用多个障碍物1506a、1506b、1506c(例如杆)执行任务,其中,机器人附肢1504的几何形状由三角形网格表示。
图15B示出了根据一个所示实施例的图15A的环境1500,其中,机器人附肢1504的几何形状的表示已经被转换成球体树。
注意,一旦机器人附肢几何形状被转换成球体树,并且场景被转换成EDF,则该场景看起来像图15B中所描绘的那样。注意,距离场是用在距离为零的每个位置处的体素来绘制的。
过程
下面阐述了用于与运动(例如两个姿势之间的移动)相关联的碰撞检查的示例过程。
基于处理器的系统(例如碰撞检测系统140、200)计算第一姿势(例如开始)与第二姿势(例如结束姿势)之间的大量姿势。这能够例如通过在关节位置之间进行插值来完成。例如,具有两个关节的机器人的开始姿势可以在关节位置(30,60)处,并且结束姿势在关节位置(40,80)处。可以在起始姿势与结束姿势之间中途的关节位置(35,70)处生成中间姿势。中间姿势的生成可以迭代地发生。例如,可以生成该中间姿势与开始姿势和结束姿势之间的一个或更多个姿势,例如分别在关节位置(32.5,65)和关节位置(37.5,75)处。该插值能够迭代地继续,直到达到结束条件,例如,在开始和结束姿势之间存在足够数量的姿势的条件。可以使用运动细分粒度的输入来定义结束条件。例如,如果姿势之间的距离小于运动细分粒度值,则满足结束条件并且迭代停止。另外,最大迭代次数可以被定义为结束条件,例如以强制执行延时约束。
对于每个姿势,基于处理器的系统(例如碰撞检测系统140、200)对机器人模型执行正向运动学计算以计算机器人连杆中的每一个从C空间到自由空间的变换。
对于每个姿势,基于处理器的系统(例如碰撞检测系统140、200)计算该姿势是否将导致任何自碰撞或与环境中的障碍物的碰撞。如果运动中的任何姿势(例如,开始姿势、结束姿势、中间姿势)将导致碰撞,则该运动将导致碰撞条件,并且碰撞检测系统返回适当的布尔值(例如COLLISION)。如果在运动中没有姿势(例如,开始姿势、结束姿势、中间姿势)将导致碰撞,则运动将导致碰撞条件,并且碰撞检测系统返回适当的布尔值(例如NOCOLLISION)。
在某种程度上这些操作能够交叠(流水线化)。通常,在对已经生成的姿势进行碰撞检查之前,不需要等待所有姿势都已经生成。此外,如果确定姿势将导致碰撞,则不需要继续检查运动中的其他姿势,因为这将不改变特定运动的结果。
碰撞检测
即使在树结构中,碰撞检测最终也致力于确定两个形状是否相交。树是维持一组形状以检查交集的特别方便的方式。碰撞检测能够在树结构的根处开始,并且向下工作(即,朝向叶节点)。如果在任何层上都没有交集,则机器人和障碍物不相交,过程结束。如果在非叶节点层存在交集,则碰撞评估过程向下进行到树结构的下一层。如果在叶层存在交集,则机器人和障碍物相交。
两球体碰撞测试
下面提供的示例性伪代码示出了确定两个球体之间是否存在碰撞的测试操作。
bool SpheresCollision(Sphere a,Sphere b):return Distance(a.center,b.center)<a.radius+b.radius
球体和轴对齐包围盒(AABB)碰撞测试
紧接在下面提供的示例性伪代码示出了确定在球体与轴对齐包围盒之间是否存在碰撞的测试操作。
AABB范围字段是盒沿每个轴的半维的3向量表示。clamp()函数将第一参数约束在第二和第三参数之间。
两球体碰撞测试
由于数据结构的固有分层特性,因此能够快速确定表示为树的物体(例如机器人、障碍物)是否碰撞。下面提供的示例性伪代码示出了用于确定在两个球体树之间是否存在碰撞的测试操作的递归算法。
函数DescendTreeA对下降规则进行编码以决定在该迭代中是否应进一步探索树A或树B。
球体树和欧几里得距离场碰撞测试
球体树与距离场之间的碰撞检查类似于两个SphereTree的情况。再次,一旦球体树已经被评估到足够的分辨率就利用该树的固有分层特性退出。紧接在下面提供的示例性伪代码示出了确定在球体树和距离场之间是否存在碰撞的测试操作。
前面的详细描述已经通过使用框图、示意图和示例阐述了设备和/或过程的各种实施例。只要这些框图、示意图和示例包含一个或更多个功能和/或操作,本领域技术人员将理解,在这些框图、流程图或示例内的每个功能和/或操作能够由各种各样的硬件、软件、固件或几乎其任何组合单独地和/或共同地实现。在一个实施例中,本主题可以经由布尔电路、专用集成电路(ASIC)和/或FPGA来实现。然而,本领域技术人员将认识到,本文公开的实施例可以作为在一个或更多个计算机上运行的一个或更多个计算机程序(例如作为在一个或更多个计算机系统上运行的一个或更多个程序),作为在一个或更多个控制器(例如微控制器)上运行的一个或更多个程序,作为在一个或更多个处理器(例如微处理器)上运行的一个或更多个程序,作为固件,或者作为其几乎任何组合,全部地或部分地以各种不同实现方式实现在标准集成电路中,并且根据本公开来设计电路和/或编写用于软件和/或固件的代码将完全在本领域普通技术人员的能力之内。
本领域技术人员将认识到,本文阐述的许多方法或算法可以采用附加动作,可以省略一些动作,和/或可以按照与指定的顺序不同的顺序来执行动作。
此外,本领域技术人员将理解,本文教导的机制能够在硬件中实现,例如在一个或更多个FPGA或ASIC中实现。
上述各种实施例能够组合以提供另外的实施例。在本说明书中提及的和/或在申请数据表中列出的所有共同转让的美国专利申请公开、美国专利申请、外国专利和外国专利申请,包括但不限于,2017年6月9号提交的名称为“MOTION PLANNING FOR AUTONOMOUSVEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”的编号为PCT/US2017/036880的国际专利申请,2016年1月5号提交的名称为“SPECIALIZED ROBOT MOTIONPLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”的编号为WO2016/122840的国际专利申请公开;2018年1月12号提交的名称为“APPARATUS,METHOD AND ARTICLE TOFACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVINGDYNAMIC OBJECTS”的编号为62/616,783的美国专利申请;2018年2月6号提交的名称为“MOTION PLANNING OF A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MOREPROCESSORS AND IMPROVED OPERATION OF SAME”的编号为62/626,939的美国专利申请;以及2018年8月23号提交的名称为“COLLISION DETECTION USEFUL IN MOTION PLANNING FORROBOTICS”的编号为62/722,067的美国专利申请,其全部内容通过引用并入本文。根据以上详细描述,能够对实施例进行这些和其他改变。通常,在所附权利要求中,所使用的术语不应被解释为将权利要求限制为说明书和权利要求中公开的具体实施例,而应被解释为包括所有可能的实施例以及这些权利要求享有的全部等效范围。因此,权利要求不受本公开内容的限制。
Claims (60)
1.一种用于机器人运动规划的基于处理器的系统的至少一个部件的操作的方法,所述方法包括:
对于机器人的至少第一数量的姿势中的每一个,通过至少一组电路至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞,所述机器人的数据结构表示具有分层树结构的形式;
对于所述机器人的至少第二数量的姿势中的每一个,通过至少一组电路至少部分地基于所述机器人在其中操作的环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何持久障碍物碰撞,所述数据结构表示包括第一数量的障碍物的表示,对于所述第一数量的障碍物,在所述环境中由所述第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的;
对于所述机器人的至少第三数量的姿势中的每一个,通过至少一组电路至少部分地基于所述环境中的一组瞬时障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞,所述数据结构表示包括所述环境中存在时第二数量的障碍物的表示,对于所述第二数量的障碍物,在所述环境中由所述第二数量的障碍物中的每一个占据的相应体积在运行时间的至少部分期间是已知的,并且对于所述第二数量的障碍物,在所述环境中由所述障碍物中的每一个占据的相应体积在所述配置时间是未知的;以及
提供表示是否已经针对所述姿势中的至少一个检测到碰撞的信号。
2.根据权利要求1所述的方法,其中,至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞包括确定在第一姿势中,机器人附肢的至少一部分是否将与所述机器人附肢的另一部分碰撞。
3.根据权利要求1所述的方法,其中,至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞包括确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与所述机器人附肢的另一部分碰撞。
4.根据权利要求1所述的方法,其中,至少部分地基于所述机器人在其中操作的环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何持久障碍物碰撞包括确定在第一姿势中,机器人附肢的至少一部分是否将与所述环境中的任何持久障碍物碰撞。
5.根据权利要求1所述的方法,其中,至少部分地基于所述机器人在其中操作的环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何持久障碍物碰撞包括确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与所述环境中的任何持久障碍物碰撞。
6.根据权利要求1所述的方法,其中,至少部分地基于所述机器人在其中操作的环境中的一组瞬时障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞包括确定在第一姿势中,机器人附肢的至少一部分是否将与所述环境中的任何瞬时障碍物碰撞。
7.根据权利要求1所述的方法,其中,至少部分地基于所述机器人在其中操作的环境中的一组瞬时障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞包括确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与所述环境中的任何瞬时障碍物碰撞。
8.根据权利要求1所述的方法,还包括:
在配置时间期间,
对于由运动学模型表示的机器人,生成所述机器人的数据结构表示;以及
对于所述环境,生成所述环境中的一组持久障碍物的数据结构表示,所述数据结构表示包括第一数量的障碍物的表示,对于所述第一数量的障碍物,在所述环境中由所述第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的。
9.根据权利要求8所述的方法,其中,生成所述环境中的一组持久障碍物的数据结构表示包括生成包围体的分层结构。
10.根据权利要求9所述的方法,其中,生成包围体的分层结构包括生成以三角形网格作为叶节点的包围盒的分层结构。
11.根据权利要求9所述的方法,其中,生成包围体的分层结构包括生成球体的分层结构。
12.根据权利要求9所述的方法,其中,生成包围体的分层结构包括生成k叉球体树。
13.根据权利要求9所述的方法,其中,生成包围体的分层结构包括生成轴对齐的包围盒的分层结构。
14.根据权利要求9所述的方法,其中,生成包围体的分层结构包括生成有向包围盒的分层结构。
15.根据权利要求8所述的方法,其中,生成所述环境中的一组持久障碍物的数据结构表示包括生成八叉树,所述八叉树存储表示所述环境中的一组持久障碍物的体素占用信息。
16.根据权利要求8所述的方法,其中,生成所述机器人的数据结构表示包括生成k叉树。
17.根据权利要求8所述的方法,其中,生成所述机器人的数据结构表示包括针对所述机器人的多个连杆中的每一个生成相应的k叉树。
18.根据权利要求8所述的方法,其中,生成所述机器人的数据结构表示包括针对所述机器人的多个连杆中的每一个生成相应的8叉树。
19.根据权利要求8所述的方法,其中,生成所述机器人的数据结构表示包括针对所述机器人的多个连杆中的每一个生成树深度等于或大于四的相应8叉树。
20.根据权利要求8所述的方法,其中,生成所述机器人的数据结构表示包括针对所述机器人的多个连杆中的每一个生成相应的k叉树,其中,所述k叉树的每个节点是球体,如果球体的任何部分被占用,则相应球体被识别为被占用。
21.根据权利要求1所述的方法,还包括:
在所述运行时间期间,
对于所述环境,生成所述环境中的一组瞬时障碍物的数据结构表示,所述数据结构表示包括存在时所述瞬时障碍物的表示,对于所述瞬时障碍物,在所述环境中由所述第二数量的障碍物中的每一个占据的相应体积在所述运行时间的至少部分期间是已知的,并且对于所述瞬时障碍物,在所述环境中由所述障碍物中的每一个占据的相应体积在所述配置时间是未知的,以及
其中,确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞、确定所述机器人的任何部分是否将与环境中的任何持久障碍物碰撞以及确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞全部在所述运行时间期间进行。
22.根据权利要求21所述的方法,还包括:
接收表示所述环境中存在时瞬时障碍物的传感器信息;以及
将所述传感器信息转换成占用信息,并且其中:
生成所述环境中的一组瞬时障碍物的数据结构表示包括根据所述占用信息生成所述环境中的一组瞬时障碍物的数据结构表示。
23.根据权利要求1所述的方法,还包括:
接收运动学模型,所述运动学模型表示具有多个连杆和多个关节的机器人附肢形式的机器人,所述关节在相应的连杆对之间;
接收表示所述环境中的一组持久障碍物的相应位置的占用信息;以及
接收表示要在运动规划中采用的运动细分粒度的至少一个值。
24.根据权利要求23所述的方法,其中,接收所述运动学模型、接收所述占用信息和接收表示运动细分粒度的至少一个值全部在所述配置时间期间进行,并且所述方法还包括:
在所述配置时间期间,基于所述机器人的运动学模型生成所述机器人的数据结构表示;以及
在所述配置时间期间,生成所述环境中的一组持久障碍物的数据结构表示,所述数据结构表示包括所述第一数量的障碍物的表示,对于所述第一数量的障碍物,在所述配置时间,在所述环境中由所述第一数量的障碍物中的每一个占据的相应体积。
25.根据权利要求24所述的方法,还包括:
在所述运行时间期间生成所述环境中的一组瞬时障碍物的数据结构表示,所述数据结构表示包括存在时所述瞬时障碍物的表示,对于所述瞬时障碍物,在所述运行时间的至少部分期间,在所述环境中由所述第二数量的障碍物中的每一个占据的相应体积是已知的,并且对于所述瞬时障碍物,在所述配置时间,在所述环境中由所述障碍物中的每一个占据的相应体积是未知的。
26.根据权利要求1所述的方法,其中,所述机器人包括机器人附肢,并且所述方法还包括:
针对所述机器人附肢在所述机器人附肢的第一姿势与所述机器人附肢的第二姿势之间的运动,计算所述机器人附肢的多个中间姿势,直到所述机器人附肢的C空间中多对连续相邻姿势之间的尺寸满足针对运动细分粒度所接收的值为止,所述多个中间姿势在所述C空间中在所述机器人附肢的第一姿势与第二姿势之间。
27.根据权利要求26所述的方法,其中,计算所述机器人附肢的多个中间姿势包括:
对于所述机器人附肢的多个关节中的每一个,在所述第一姿势与所述第二姿势中的关节的相应位置和方向之间进行插值以获得第n个中间姿势;以及
对于所述机器人附肢的关节中的每一个,在相应的第i次迭代的相应对最近相邻姿势中的关节的相应位置和方向之间迭代地插值,直到达到结束条件。
28.根据权利要求27所述的方法,其中,所述结束条件是满足运动细分粒度以获得第n个中间姿势的连续相邻姿势之间的距离,并且所述方法还包括:
对于迭代的次数,确定是否已经达到所述结束条件。
29.根据权利要求26所述的方法,还包括:
对于多个姿势中的每一个,对运动学机器人模型执行正向运动学计算以计算机器人附肢的每个连杆的多个变换。
30.根据权利要求1至29中任一项所述的方法,其中,以下中的至少一个包括基于分层表示或欧几里得距离场表示中的至少一个的确定:确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞、确定所述机器人的任何部分是否将与任何持久障碍物碰撞、或者确定所述机器人的任何部分是否将与任何瞬时障碍物碰撞。
31.一种生成用于机器人运动规划的碰撞评估的系统,所述系统包括:
至少一个处理器;
至少一种非暂时性处理器可读介质,其存储处理器可执行指令或数据中的至少一者,所述处理器可执行指令或数据在由所述至少一个处理器执行时,使得所述至少一个处理器:
对于机器人的至少第一数量的姿势中的每一个,至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞,所述机器人的数据结构表示具有分层树结构的形式;
对于所述机器人的至少第二数量的姿势中的每一个,至少部分地基于所述机器人在其中操作的环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何持久障碍物碰撞,所述数据结构表示包括第一数量的障碍物的表示,对于所述第一数量的障碍物,在所述环境中由所述第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的;
对于所述机器人的至少第三数量的姿势中的每一个,至少部分地基于所述环境中的一组瞬时障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞,所述数据结构表示包括所述环境中存在时第二数量的障碍物的表示,对于所述第二数量的障碍物,在所述环境中由所述第二数量的障碍物中的每一个占据的相应体积在运行时间的至少部分期间是已知的,并且对于所述第二数量的障碍物,在所述环境中由所述障碍物中的每一个占据的相应体积在所述配置时间是未知的;以及
提供表示是否已经针对所述姿势中的至少一个检测到碰撞的信号。
32.根据权利要求31所述的系统,其中,为了至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞,所述至少一个处理器确定在第一姿势中,机器人附肢的至少一部分是否将与所述机器人附肢的另一部分碰撞。
33.根据权利要求31所述的系统,其中,为了至少部分地基于所述机器人的数据结构表示来确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞,所述至少一个处理器确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与所述机器人附肢的另一部分碰撞。
34.根据权利要求31所述的系统,其中,为了至少部分地基于所述机器人在其中操作的环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何持久障碍物碰撞,所述至少一个处理器确定在第一姿势中,机器人附肢的至少一部分是否将与所述环境中的任何持久障碍物碰撞。
35.根据权利要求31所述的系统,其中,为了至少部分地基于所述机器人在其中操作的环境中的一组持久障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何持久障碍物碰撞,所述至少一个处理器确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与所述环境中的任何持久障碍物碰撞。
36.根据权利要求31所述的系统,其中,为了至少部分地基于所述机器人在其中操作的环境中的一组瞬时障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞,所述至少一个处理器确定在第一姿势中,机器人附肢的至少一部分是否将与所述环境中的任何瞬时障碍物碰撞。
37.根据权利要求31所述的系统,其中,为了至少部分地基于所述机器人在其中操作的环境中的一组瞬时障碍物的数据结构表示来确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞,所述至少一个处理器确定在第一姿势与第二姿势之间移动时,机器人附肢的至少一部分是否将与所述环境中的任何瞬时障碍物碰撞。
38.根据权利要求31所述的系统,其中,所述处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
在配置时间期间,
对于由运动学模型表示的机器人,生成所述机器人的数据结构表示;以及
对于所述环境,生成所述环境中的一组持久障碍物的数据结构表示,所述数据结构表示包括第一数量的障碍物的表示,对于所述第一数量的障碍物,在所述环境中由所述第一数量的障碍物中的每一个占据的相应体积在配置时间是已知的。
39.根据权利要求38所述的系统,其中,为了生成所述环境中的一组持久障碍物的数据结构表示,所述至少一个处理器生成包围体的分层结构。
40.根据权利要求39所述的系统,其中,为了生成包围体的分层结构,所述至少一个处理器生成以三角形网格作为叶节点的包围盒的分层结构。
41.根据权利要求39所述的系统,其中,为了生成包围体的分层结构,所述至少一个处理器生成球体的分层结构。
42.根据权利要求39所述的系统,其中,为了生成包围体的分层结构,所述至少一个处理器生成k叉球体树。
43.根据权利要求39所述的系统,其中,为了生成包围体的分层结构,所述至少一个处理器生成轴对齐的包围盒的分层结构。
44.根据权利要求39所述的系统,其中为了生成包围体的分层结构,所述至少一个处理器生成有向包围盒的分层结构。
45.根据权利要求38所述的系统,其中,为了生成所述环境中的一组持久障碍物的数据结构表示,所述至少一个处理器生成八叉树,所述八叉树存储表示所述环境中的一组持久障碍物的体素占用信息。
46.根据权利要求38所述的系统,其中,为了生成所述机器人的数据结构表示,所述至少一个处理器生成k叉树。
47.根据权利要求38所述的系统,其中,为了生成所述机器人的数据结构表示,所述至少一个处理器针对所述机器人的多个连杆中的每一个生成相应的k叉树。
48.根据权利要求38所述的系统,其中,为了生成所述机器人的数据结构表示,所述至少一个处理器针对所述机器人的多个连杆中的每一个生成相应的8叉树。
49.根据权利要求38所述的系统,其中,为了生成所述机器人的数据结构表示,所述至少一个处理器针对所述机器人的多个连杆中的每一个生成树深度等于或大于四的相应8叉树。
50.根据权利要求38所述的系统,其中,为了生成所述机器人的数据结构表示,所述至少一个处理器针对所述机器人的多个连杆中的每一个生成相应的k叉树,其中,所述k叉树的每个节点是球体,如果球体的任何部分被占用,则相应球体被识别为被占用。
51.根据权利要求31所述的系统,其中,所述处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
在所述运行时间期间,
对于所述环境,生成所述环境中的一组瞬时障碍物的数据结构表示,所述数据结构表示包括存在时所述瞬时障碍物的表示,对于所述瞬时障碍物,在所述环境中由所述第二数量的障碍物中的每一个占据的相应体积在所述运行时间的至少部分期间是已知的,并且对于所述瞬时障碍物,在所述环境中由所述障碍物中的每一个占据的相应体积在所述配置时间是未知的,以及
其中,确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞、确定所述机器人的任何部分是否将与环境中的任何持久障碍物碰撞、以及确定所述机器人的任何部分是否将与所述环境中的任何瞬时障碍物碰撞全部在所述运行时间期间进行。
52.根据权利要求51所述的系统,其中,所述处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
接收表示所述环境中存在时瞬时障碍物的传感器信息;以及
将所述传感器信息转换成占用信息,并且其中:
为了生成所述环境中的一组瞬时障碍物的数据结构表示,至少一个处理器根据所述占用信息生成所述环境中的一组瞬时障碍物的数据结构表示。
53.根据权利要求31所述的系统,其中,所述处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
接收运动学模型,所述运动学模型表示具有多个连杆和多个关节的机器人附肢形式的机器人,所述关节在相应的连杆对之间;
接收表示所述环境中的一组持久障碍物的相应位置的占用信息;以及
接收表示要在运动规划中采用的运动细分粒度的至少一个值。
54.根据权利要求53所述的系统,其中,所述运动学模型、所述占用信息和表示运动细分粒度的至少一个值全部在所述配置时间期间被接收,并且其中,处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
在所述配置时间期间,基于所述机器人的运动学模型生成所述机器人的数据结构表示;以及
在所述配置时间期间,生成所述环境中的一组持久障碍物的数据结构表示,所述数据结构表示包括所述第一数量的障碍物的表示,对于所述第一数量的障碍物,在所述配置时间,在所述环境中由所述第一数量的障碍物中的每一个占据的相应体积是已知的。
55.根据权利要求54所述的系统,其中,处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
在所述运行时间期间生成所述环境中的一组瞬时障碍物的数据结构表示,所述数据结构表示包括存在时所述瞬时障碍物的表示,对于所述瞬时障碍物,在所述运行时间的至少部分期间,在所述环境中由所述第二数量的障碍物中的每一个占据的相应体积是已知的,并且对于所述瞬时障碍物,在所述配置时间,在所述环境中由所述障碍物中的每一个占据的相应体积是未知的。
56.根据权利要求31所述的系统,其中,所述机器人包括机器人附肢,并且其中,处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
针对所述机器人附肢在所述机器人附肢的第一姿势与所述机器人附肢的第二姿势之间的运动,计算所述机器人附肢的多个中间姿势,直到所述机器人附肢的C空间中多对连续相邻姿势之间的尺寸满足针对运动细分粒度所接收的值为止,所述多个中间姿势在所述C空间中在所述机器人附肢的第一姿势与第二姿势之间。
57.根据权利要求56所述的系统,其中,为了计算所述机器人附肢的多个中间姿势,所述至少一个处理器:
对于所述机器人附肢的多个关节中的每一个,在所述第一姿势与所述第二姿势中的关节的相应位置和方向之间进行插值以获得第n个中间姿势;以及
对于所述机器人附肢的关节中的每一个,在相应的第i次迭代的相应对最近相邻姿势中的关节的相应位置和方向之间迭代地插值,直到达到结束条件。
58.根据权利要求57所述的系统,其中,所述结束条件是满足运动细分粒度以获得第n个中间姿势的连续相邻姿势之间的距离,并且其中,对所述处理器可执行指令或数据中的至少一者的执行进一步使得所述至少一个处理器:
对于迭代的次数,确定是否已经达到所述结束条件。
59.根据权利要求56所述的系统,其中,所述处理器可执行指令或数据中的至少一者的执行还使得所述至少一个处理器:
对于多个姿势中的每一个,对运动学机器人模型执行正向运动学计算以计算机器人附肢的每个连杆的多个变换。
60.根据权利要求31至59中任一项所述的系统,其中,以下中的至少一个包括基于分层表示或欧几里得距离场表示中的至少一个的确定:确定所述机器人的任何部分是否将与所述机器人的另一部分碰撞、确定所述机器人的任何部分是否将与任何持久障碍物碰撞、或者确定所述机器人的任何部分是否将与任何瞬时障碍物碰撞。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862722067P | 2018-08-23 | 2018-08-23 | |
US62/722,067 | 2018-08-23 | ||
PCT/US2019/045270 WO2020040979A1 (en) | 2018-08-23 | 2019-08-06 | Collision detection useful in motion planning for robotics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112601641A CN112601641A (zh) | 2021-04-02 |
CN112601641B true CN112601641B (zh) | 2024-03-08 |
Family
ID=69591254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980055188.0A Active CN112601641B (zh) | 2018-08-23 | 2019-08-06 | 用于机器人运动规划的碰撞检测 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210178591A1 (zh) |
EP (1) | EP3820656A4 (zh) |
JP (1) | JP7141665B2 (zh) |
CN (1) | CN112601641B (zh) |
TW (1) | TW202014821A (zh) |
WO (1) | WO2020040979A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7181092B2 (ja) | 2016-06-10 | 2022-11-30 | デューク・ユニバーシティ | 自律型車両用動作計画及び再構成可能な動作計画プロセッサ |
WO2019139815A1 (en) | 2018-01-12 | 2019-07-18 | Duke University | Apparatus, method and article to facilitate motion planning of an autonomous vehicle in an environment having dynamic objects |
TWI822729B (zh) | 2018-02-06 | 2023-11-21 | 美商即時機器人股份有限公司 | 用於儲存一離散環境於一或多個處理器之一機器人之運動規劃及其改良操作之方法及設備 |
PL3769174T3 (pl) | 2018-03-21 | 2022-10-24 | Realtime Robotics, Inc. | Planowanie przemieszczania robota do różnych środowisk i zadań oraz jego ulepszone działanie |
WO2019183868A1 (en) * | 2018-03-29 | 2019-10-03 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to improve resource utilization for binary tree structures |
EP3894144A4 (en) * | 2018-12-12 | 2022-07-27 | INTEL Corporation | FPGA-BASED ACCELERATION USING OPENCL ON FCL IN ROBOT MOTION PLANNING |
US11634126B2 (en) | 2019-06-03 | 2023-04-25 | Realtime Robotics, Inc. | Apparatus, methods and articles to facilitate motion planning in environments having dynamic obstacles |
US20220274256A1 (en) * | 2019-08-02 | 2022-09-01 | Dextrous Robotics, Inc. | A robotic system for picking and placing objects from and into a constrained space |
US11673265B2 (en) | 2019-08-23 | 2023-06-13 | Realtime Robotics, Inc. | Motion planning for robots to optimize velocity while maintaining limits on acceleration and jerk |
TW202146189A (zh) | 2020-01-22 | 2021-12-16 | 美商即時機器人股份有限公司 | 於多機器人操作環境中之機器人之建置 |
JP2023518071A (ja) * | 2020-03-18 | 2023-04-27 | リアルタイム ロボティクス, インコーポレーテッド | ロボットの動作計画に有用なロボット操作環境のデジタル表現 |
WO2021211420A1 (en) * | 2020-04-14 | 2021-10-21 | Realtime Robotics, Inc. | Configuration of robot operational environment including layout of sensors |
CN114061580B (zh) * | 2020-05-22 | 2023-12-29 | 梅卡曼德(北京)机器人科技有限公司 | 基于对称程度的机器人抓取方法、装置、电子设备及介质 |
US11597078B2 (en) * | 2020-07-28 | 2023-03-07 | Nvidia Corporation | Machine learning control of object handovers |
US20220063099A1 (en) * | 2020-09-03 | 2022-03-03 | Fanuc Corporation | Framework of robotic online motion planning |
CN112504290A (zh) * | 2020-11-06 | 2021-03-16 | 北京航迹科技有限公司 | 确定最近道路边界的方法、装置、设备和存储介质 |
CN113296498B (zh) * | 2021-04-12 | 2022-09-27 | 山东科技大学 | 一种基于自适应分辨率八叉树地图的改进rrt路径规划方法 |
CN112987799B (zh) * | 2021-04-16 | 2022-04-05 | 电子科技大学 | 一种基于改进rrt算法的无人机路径规划方法 |
CN113246859B (zh) * | 2021-05-28 | 2023-04-07 | 深圳天联星科技有限公司 | 具有驾驶辅助系统警示的电子后视镜 |
CN113362363B (zh) * | 2021-06-18 | 2022-11-04 | 广东工业大学 | 一种基于视觉slam的图像自动标注方法、装置及存储介质 |
EP4281935A1 (en) * | 2021-08-19 | 2023-11-29 | Samsung Electronics Co., Ltd. | Method and system for generating an animation from a static image |
US11845184B2 (en) | 2022-04-18 | 2023-12-19 | Dextrous Robotics, Inc. | System and/or method for grasping objects |
CN115933688B (zh) * | 2022-12-28 | 2024-03-29 | 南京衍构科技有限公司 | 一种多机器人协同工作避障方法、系统、设备及存储介质 |
CN117773911B (zh) * | 2023-11-03 | 2024-05-17 | 广东工业大学 | 一种复杂环境下工业机器人避障方法 |
CN117562661B (zh) * | 2024-01-15 | 2024-03-22 | 深圳惟德精准医疗科技有限公司 | 检测机械臂碰撞的方法及相关产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103722565A (zh) * | 2014-01-23 | 2014-04-16 | 哈尔滨工业大学 | 仿人机器人自碰撞监控系统及监控方法 |
CN104407616A (zh) * | 2014-12-03 | 2015-03-11 | 沈阳工业大学 | 基于免疫网络算法的移动机器人动态路径规划方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6089742A (en) * | 1989-11-01 | 2000-07-18 | Warmerdam; Thomas P. H. | Method and apparatus for controlling robots and the like using a bubble data hierarchy placed along a medial axis |
US5347459A (en) * | 1993-03-17 | 1994-09-13 | National Research Council Of Canada | Real time collision detection |
EP1972415B1 (en) * | 2007-03-23 | 2019-01-02 | Honda Research Institute Europe GmbH | Robots with collision avoidance functionality |
JP5017379B2 (ja) * | 2008-01-22 | 2012-09-05 | パナソニック株式会社 | ロボットアーム |
US9403275B2 (en) * | 2014-10-17 | 2016-08-02 | GM Global Technology Operations LLC | Dynamic obstacle avoidance in a robotic system |
US10723024B2 (en) * | 2015-01-26 | 2020-07-28 | Duke University | Specialized robot motion planning hardware and methods of making and using same |
US10303180B1 (en) * | 2017-04-20 | 2019-05-28 | X Development Llc | Generating and utilizing non-uniform volume measures for voxels in robotics applications |
JP6897376B2 (ja) * | 2017-07-11 | 2021-06-30 | トヨタ自動車株式会社 | 移動計画装置、移動ロボット、および移動計画プログラム |
JP6879464B2 (ja) * | 2017-08-02 | 2021-06-02 | オムロン株式会社 | 干渉判定方法、干渉判定システム及びコンピュータプログラム |
-
2019
- 2019-08-06 WO PCT/US2019/045270 patent/WO2020040979A1/en unknown
- 2019-08-06 US US17/270,597 patent/US20210178591A1/en active Pending
- 2019-08-06 CN CN201980055188.0A patent/CN112601641B/zh active Active
- 2019-08-06 JP JP2021509212A patent/JP7141665B2/ja active Active
- 2019-08-06 EP EP19851097.6A patent/EP3820656A4/en active Pending
- 2019-08-23 TW TW108130161A patent/TW202014821A/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103722565A (zh) * | 2014-01-23 | 2014-04-16 | 哈尔滨工业大学 | 仿人机器人自碰撞监控系统及监控方法 |
CN104407616A (zh) * | 2014-12-03 | 2015-03-11 | 沈阳工业大学 | 基于免疫网络算法的移动机器人动态路径规划方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202014821A (zh) | 2020-04-16 |
JP7141665B2 (ja) | 2022-09-26 |
EP3820656A4 (en) | 2021-08-25 |
WO2020040979A1 (en) | 2020-02-27 |
US20210178591A1 (en) | 2021-06-17 |
JP2021534985A (ja) | 2021-12-16 |
EP3820656A1 (en) | 2021-05-19 |
CN112601641A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112601641B (zh) | 用于机器人运动规划的碰撞检测 | |
Han et al. | Dynamic obstacle avoidance for manipulators using distance calculation and discrete detection | |
EP3250347B1 (en) | Specialized robot motion planning hardware and methods of making and using same | |
US20200398428A1 (en) | Motion planning for multiple robots in shared workspace | |
CN111989195B (zh) | 在一个或更多个处理器上存储离散化环境的机器人的运动规划及其改进的操作 | |
JP6869230B2 (ja) | 物体を認識する方法およびシステム | |
JP2021160080A (ja) | 距離場による高速ロボット運動の最適化 | |
JP2023512954A (ja) | マルチロボット運用環境におけるロボットの構成 | |
WO2022031232A1 (en) | Method and device for point cloud based object recognition | |
US20240009845A1 (en) | Systems, methods, and user interfaces employing clearance determinations in robot motion planning and control | |
WO2021188566A1 (en) | Digital representations of robot operational environment, useful in motion planning for robots | |
US20230342967A1 (en) | Configuration of robot operational environment including layout of sensors | |
US20230286156A1 (en) | Motion planning and control for robots in shared workspace employing staging poses | |
Hyun et al. | Bendable Cuboid Robot Path Planning with Collision Avoidance using Generalized $ L_p $ Norms | |
Operator | LiDAR Based System for Tracking Loader | |
Rowlands | Robotic Control for the Manipulation of 3D Deformable Objects | |
WO2023196240A1 (en) | Motion planning and control for robots in shared workspace employing look ahead planning | |
Benitez et al. | Key Elements for Motion Planning Algorithms | |
Nak-seung et al. | Bendable Cuboid Robot Path Planning with Collision Avoidance using Generalized Lp Norms | |
Mukherjee | A Computation Optimization Method in Computer Mediated Teleoperation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |