使用来自机器人的相机的相机图像的检测边缘和从环境的三维模型取得的检测边缘来定位环境中的机器人的制作方法

文档序号:14943314发布日期:2018-07-13 21:40阅读:347来源:国知局

可以编程机器人来执行各种任务,诸如自主或半自主导航、操纵物体(例如,重新定位物体、变动物体,和/或拾取物体并且将其移动到不同的位置)、运输物体(不必操纵那些物体)、监视环境条件、充当“轮子上的视频会议”等。

如果机器人不知道它在何处,则机器人难以准确地执行各种任务。机器人定位旨在解析环境中的机器人的姿态(位置和取向),从而使机器人能够知道它在何处。已经提出了各种机器人定位技术。例如,航位推算法使用来自机器人的一个或多个里程计的传感器读数,连同三角法和运动学方程来确定机器人如何移动并且基于该确定,更新机器人的姿态。此外,例如,一些机器人定位技术利用具有整个环境中的已知位置的主动信标(例如红外线、声音)和/或被动信标(例如反射器),以使得机器人的传感器能够感测这些信标并且三角测量或以其他方式确定机器人相对于所感测的信标的姿态,因此,确定其在环境中的姿态。这些和/或其他机器人定位技术具有一个或多个缺陷,诸如定位精度、计算成本、与在环境中放置信标或其他地标相关联的成本,和/或与执行定位技术所必需的传感器相关联的成本。会存在上述技术和/或其他技术的附加和/或替选的缺陷。



技术实现要素:

本公开涉及使用机器人的相机来捕获机器人环境的图像,检测图像中的边缘,并且基于所检测的图像中的边缘与从机器人的环境的三维(“3d”)模型取得的边缘的比较,定位机器人。如本文所使用的,在环境中“定位机器人”是指相对于一些参考坐标系,诸如所谓的“世界坐标系”,确定环境中的机器人的姿态。如本文所使用的,“姿态”既指位置又指取向。例如,机器人的所确定的姿态可以定义机器人的六个自由度的值。

作为根据本文所述的技术的机器人定位的一个示例,由环境中的机器人的相机捕获相机图像。将边缘检测器应用于相机图像以检测相机图像中的相机图像边缘。边缘检测器可以采用一个或多个边缘检测技术,例如canny边缘检测算法。

进一步识别环境中的机器人的相机的估计姿态。在一些实施方式中,估计的姿态可以是使用其他机器人定位技术(例如,在本文所述的机器人定位技术的第一迭代中)确定的姿态和/或可以基于在本文所述的机器人定位技术的在前迭代期间确定的机器人相机的姿态。

所估计的姿态被用来根据环境的三维模型来渲染从估计的姿态的视点的环境的模型图像。换言之,渲染的模型图像是具有与估计姿态同一位置和取向的渲染图像的视点的模型的渲染图像。在一些实施方式中(例如,当相机图像为二维图像时),“根据3d模型渲染模型图像”是指将3d模型的一部分转换成该部分的二维图像(例如,具有一个或多个颜色和/或灰度通道的图像)。在一些实施方式中(例如,当相机图像包括深度通道和一个或多个颜色和/或灰度通道时),“由3d模型渲染模型图像”是指将3d模型的一部分转换为包括深度通道和一个或多个颜色和/或灰度通道的“2.5d”图像。可以使用各种渲染技术,诸如光栅化、光线投射、辐射度和/或光线追踪。

边缘检测器还被应用于渲染的模型图像以检测模型图像的模型图像边缘。然后,基于相机图像边缘与模型图像边缘的比较来确定机器人的相机的当前姿态(即,当捕获相机图像时的相机的姿态)。例如,可以确定一个或多个相机图像边缘与一个或多个对应的模型图像边缘之间的欧几里德距离,并且利用这些距离来确定姿态。例如,距离的方向和/或量值可以被用来根据被用来生成模型图像的估计姿态取得机器人的相机的姿态。换言之,可以通过鉴于(由相机在其实际姿态下拍摄的)相机图像中的边缘与(从估计姿态的视点渲染的)模型图像之间的差异来修改估计姿态,确定相机的当前姿态。

然后,使用相机的所确定的当前姿态来在环境中定位机器人。例如,在一些实施方式中,可以通过将相机的当前姿态指派为机器人的当前姿态(例如,机器人的当前姿态可以与相机的当前姿态相同)来定位机器人。此外,例如,在一些实施方式中,机器人的姿态可以相关于与相机的姿态不同的参考点,并且可以已知相机的姿态和机器人的姿态之间的相对差异。在这些实施方式中的一些实施方式中,可以通过使用该已知的相对差异,将相机的所确定的姿态变换成机器人的姿态来定位机器人。

在基于一个或多个相机图像边缘与一个或多个模型图像边缘的比较来确定机器人的相机的当前姿态的一些实施方式中,可以从3d模型来渲染环境的一个或多个附加模型图像——每个附加模型图像具有来自不同候选姿态的视点。可以将边缘检测器应用于每个附加模型图像,并且基于具有相对于一个或多个相机图像边缘满足一些阈值的一个或多个边缘的附加模型图像的候选姿态来确定姿态。例如,可以将具有附加模型图像的边缘和机器人图像边缘之间的最小差量的附加模型图像的候选姿态选择为该姿态。在一些实施方式中,可以基于相机图像边缘与基于估计的姿态所渲染的模型图像的模型图像边缘之间的差异来确定用于生成附加模型图像的候选姿态(例如,由这些差异指示的一个或多个最可能的候选姿态)。

每次使用来自机器人的相机的新捕获的图像并且使用基于相机的紧接在前(immediatelypreceding)确定的当前姿态的“估计姿态”,执行上述示例机器人定位的多次迭代。在一些实施方式中,可以将机器人的相机的紧接在前当前姿态用作估计的姿态。在一些其他实施方式中,可以基于以下来确定估计姿态:基于来自机器人的一个或多个附加传感器的传感器数据来修改机器人的相机的紧接在前当前姿态。例如,可以利用来自惯性测量单元、一个或多个里程计和/或一个或多个其他传感器的传感器数据来确定紧接在前姿态的可能变化。可以将该可能变化应用于紧接在前姿态,并将结果用作下一迭代的估计姿态。

在一些实施方式中,可以提供一种方法,包括:由环境中的机器人的相机捕获相机图像;将边缘检测器应用于所述相机图像以检测所述相机图像的相机图像边缘。该方法进一步包括识别所述环境中的所述相机的估计姿态以及根据所述环境的电子存储的三维模型渲染来从所述估计姿态的视角的所述环境的模型图像。该方法进一步包括将所述边缘检测器应用于所述环境的模型图像以检测所述模型图像的模型图像边缘以及基于所述相机图像边缘与所述模型图像边缘的比较来确定所述环境中的所述相机的当前姿态。该方法进一步包括基于所述相机的当前姿态来定位所述环境中的所述机器人。

本文公开的技术的该方法和其他实施方式可以分别可选地包括一个或多个下述特征。

在一些实施方式中,所述环境中的所述相机的估计姿态是基于所述相机的紧接在前姿态。所述相机的所述紧接在前姿态可以基于由所述相机捕获的在前相机图像的在前相机图像边缘与从在前估计姿态的视角渲染的在前模型图像的在前模型图像边缘的比较来确定。在那些实施方式中的一些实施方式中,所述环境中的所述相机的所述估计姿态是基于根据来自所述机器人的一个或多个附加传感器——诸如惯性测量单元传感器的传感器数据,修改所述紧接在前姿态来确定的。

在一些实施方式中,该方法进一步包括:在捕获所述相机图像之后,由所述相机捕获附加相机图像;将边缘检测器应用于所述附加相机图像以检测所述附加相机图像的附加相机图像边缘;基于所述环境中的所述相机的所确定的估计姿态,确定所述环境中的所述相机的附加估计姿态;根据所述环境的电子存储的三维模型来渲染从所述附加估计姿态的视角的所述环境的附加模型图像;将所述边缘检测器应用于所述环境的附加模型图像以检测所述附加模型图像的附加模型图像边缘;以及基于所述附加相机图像边缘与所述附加模型图像边缘的比较来确定所述环境中的所述相机的新当前姿态。在那些实施方式中的一些实施方式中,基于所述环境中的所述相机的所确定的当前姿态来确定所述附加估计姿态包括将所述附加估计姿态定义为所述环境中的所述相机的所确定的当前姿态。在那些实施方式中的一些其他实施方式中,该方法进一步包括从所述机器人的一个或多个附加传感器接收传感器数据;以及基于所述相机的所确定的当前姿态来确定所述附加估计姿态包括基于所述相机的所确定的当前姿态并且基于所述传感器数据来确定所述附加估计姿态。

在一些实施方式中,基于所述相机图像边缘与所述模型图像边缘的比较来确定所述环境中的所述相机的当前姿态包括:确定所述相机图像边缘和所述模型图像边缘之间的差异;以及基于所述差异来确定所述相机的当前姿态。

在一些实施方式中,基于所述相机图像边缘与所述模型图像边缘的比较来确定所述环境中的所述相机的当前姿态包括:确定所述相机图像边缘和所述模型图像边缘之间的差异;基于所述差异来确定所述相机的候选姿态;根据所述环境的电子存储的三维模型渲染来渲染从所述候选姿态的视角的环境的附加模型图像;将所述边缘检测器应用于所述环境的附加模型图像以从所述附加模型图像提取附加模型图像边缘;确定所述附加相机图像边缘与所述附加模型图像边缘之间的附加差异;以及如果所述附加差异满足阈值,则将所述候选姿态用作所述相机的当前姿态。

在一些实施方式中,由所述相机的单个传感器捕获所述相机图像。在那些实施方式中的一些实施方式中,相机是单眼相机。

在一些实施方式中,机器人的图形处理器单元执行该方法的一个或多个步骤。

在一些实施方式中,环境的三维模型是计算机辅助设计模型。

在一些实施方式中,当前姿态是六自由度姿态。

在一些实施方式中,可以提供一种方法,该方法包括:由环境中的机器人的相机捕获相机图像;由所述机器人的一个或多个处理器将边缘检测器应用于所述相机图像以检测所述相机图像的相机图像边缘;识别所述环境中的所述相机的估计姿态;基于所述环境的电子存储的三维模型,确定从所述估计姿态的视角的所述环境的模型边缘;基于所述相机图像边缘与所述模型边缘的比较来确定所述环境中的所述相机的当前姿态;以及基于所述相机的当前姿态来定位所述环境中的所述机器人。

其他实施方式可以包括存储指令的至少一个非瞬时计算机可读存储介质,该指令可由处理器执行以实现诸如上文所述的一个或多个方法的方法。又一实施方式可以包括机器人和/或计算机系统,包括存储器和一个或多个处理器,处理器用来执行存储在存储器中的指令以实现一个或多个模块或引擎,所述模块或引擎单独或共同地执行诸如上述一个或多个方法的方法。

应当意识到,上述概念和本文更详细所述的附加概念的所有组合均被认为是本文公开的主题的一部分。例如,本公开所附的要求保护的主题的所有组合被认为是本文公开的主题的一部分。

附图说明

图1示出了示例机器人、示例定位系统以及环境的示例三维模型。

图2示出了检测由机器人的相机捕获的图像中的边缘并且基于所检测的图像中的边缘与从机器人的环境的三维模型取得的边缘的比较来定位机器人的示例。

图3示出了根据各个实施方式的示例方法。

图4示意性地示出机器人的示例架构。

具体实施方式

图1示出了示例机器人130、示例定位系统150以及环境的示例三维(“3d”)模型170。机器人130是移动的并且可以访问室内环境——诸如建筑物(例如仓库、制造工厂、办公楼)、附近建筑物群中的一个或多个建筑物、多层办公室或其他建筑物的一个或多个楼层等——的一个或多个部分。可以在室内环境中提供附加和/或替选的机器人,诸如在一个或多个方面不同于图1所示的机器人130的附加机器人。例如,在一些实施方式中,可以将移动远程即席(telepresence)机器人、移动叉车机器人和/或人形机器人提供为唯一的机器人和/或与其他机器人一起提供。一个或多个提供的附加和/或替选的机器人可以体现下文所述的定位系统150的单独实例和/或可以与定位系统150(或定位系统150的单独实例)通信。

机器人130包括底座133,底座133具有设置在其相对侧上的用于机器人130的行动的轮子。底座133可以包括例如用于驱动机器人130的轮子以实现用于机器人130的移动的期望方向、速度和/或加速度的一个或多个马达。

机器人130还包括相机131。在一些实施方式中,相机131可以是包括单个传感器(例如电荷耦合器件(ccd))的单眼相机,并且基于由传感器感测的物理属性,生成均包括定义颜色值和/或灰度值的多个数据点的图像。例如,单眼相机可以生成包括红色、蓝色和/或绿色通道的图像。每个通道可以对图像的多个像素中的每一个定义值,诸如对图像的每个像素从0到255的值。在一些实施方式中,相机131可以是包括两个或更多个传感器的立体相机,每个传感器处于不同的有利位置。在那些实施方式中的一些实施方式中,立体相机基于由两个传感器感测的特性来生成图像,每个图像包括定义深度值和颜色值和/或灰度值的多个数据点。例如,立体相机可以生成包括深度通道和红色、蓝色和/或绿色通道的图像。在一些实施方式中,相机131可以是立体相机,但是可以仅使用其中的一个传感器来生成不包括深度通道的图像。

机器人130还包括一个或多个处理器,该一个或多个处理器例如向致动器和/或致动器的其他操作组件提供控制命令、根据本文所述的技术定位机器人、至少部分地基于根据本文所述的技术确定的机器人的当前姿态来生成对于各种任务的控制命令等。例如,机器人130的一个或多个处理器可以向驱动机器人130的轮子的伺服马达提供控制命令以将机器人130自主和/或半自主地导航到环境中的各个位置。此外,例如,机器人130的一个或多个处理器可以实现定位系统150的全部或多个方面和/或执行图3的方法300的全部或多个方面。本文提供了各种机器人的结构和功能的一些示例的附加描述。

机器人130还包括具有对应的末端执行器135a和135b的机器人臂134a和134b,每个末端执行器135a和135b采取具有两个相对的“手指”或“足趾”的夹持器的形式。可以自主地、半自主地和/或基于经由用户的计算设备由用户提供的控制命令来控制机器人臂134a、134b和末端执行器135a、135b。例如,可以自主地控制机器人臂134b以将末端执行器135b定位在物体的附近,并且可以自主地控制末端执行器135b以抓取物体。在那些实施方式中的一些实施方式中,机器人130的处理器可以生成控制机器人臂134b和/或末端执行器135b的控制命令,并且生成那些控制命令至少部分地受根据本文所述的技术确定的机器人130的当前姿态影响。

在一些实施方式中,定位系统150的全部或多个方面可以由机器人130实现。在一些实施方式中,定位系统150的全部或多个方面可以由与机器人130通信的一个或多个计算系统实现。各种模块或引擎可以作为软件、硬件或两者的任意组合而实现为定位系统150的一部分。例如,在图1中,定位系统150包括模型图像渲染引擎152、边缘检测器154、姿态确定引擎156和估计姿态确定引擎158。

模型图像渲染引擎152被配置为根据环境的3d模型170,渲染从所识别的机器人130的相机131的估计姿态的视角的环境的模型图像。换言之,模型图像渲染引擎152以与估计的姿态相同的位置和取向的渲染图像的视角来渲染模型图像。被用来在给定迭代中渲染模型图像的相机131的估计姿态可以是在指定迭代中,由估计姿态确定引擎158确定的估计姿态。如本文所述,在一些实施方式中,相机131的估计姿态可以是使用其他机器人定位技术(例如,在本文所述的机器人定位技术的第一迭代中)确定的姿态和/或可以基于在本文所述的机器人定位技术的先前迭代(例如,紧接在前迭代)期间确定的相机131的姿态。

模型图像渲染引擎152可以使用各种渲染技术来渲染来自环境的3d模型170的模型图像,诸如光栅化、光线投射、辐射度和/或光线追踪。可以根据诸如计算成本、期望速度(例如,为实现“实时”渲染)等的各种标准来可选地选择特定渲染技术和/或用于渲染技术的参数。

环境的3d模型170定义环境的至少一些结构、那些结构的尺寸以及那些结构之间的空间关系。因此,环境的3d模型170是环境结构的可测量精确模型。环境的3d模型170可以用各种细节水平来定义。例如,在一些实施方式中,3d模型可以是使用计算机辅助设计(“cad”)软件生成的相对粗略的cad模型。在那些实施方式中的一些实施方式中,环境的3d模型170可以是作为室内环境的设计过程的一部分创建的和/或基于室内环境的其他建筑设计所创建的室内环境的3d建筑设计。在一些实施方式中,可以基于来自一个或多个机器人或其他自动化代理的一个或多个传感器的传感器数据来生成环境的3d模型170。例如,可以基于“融合”来自已经在整个室内环境中导航的一个或多个机器人的一个或多个3d激光扫描仪的3d激光扫描来生成环境的3d模型170。

在一些实施方式中,环境的3d模型170可以建模室内环境的固定结构,诸如室内环境的墙壁、门、窗户、天花板和/或地板以及这些固定结构之间的空间关系(例如,窗户在墙上之处,墙壁与天花板相接之处)。在一些实施方式中,环境的3d模型170可以进一步模拟非固定结构,诸如室内环境的搁架、家具和/或图片。在一些实施方式中,可以从环境的3d模型170中省略环境的一个或多个固定结构和/或非固定结构。在一些实施方式中,可以以向量图形格式,将环境的3d模型170定义为多个形状(例如,多边形),可选地具有所定义的形状中的一个或多个形状的一个或多个特征,诸如材料、颜色等。

边缘检测器154被配置为检测图像的一个或多个边缘。图像中的边缘是满足边缘检测器154的一个或多个阈值的图像的亮度和/或深度的不连续性(例如,在2.5d图像的情况下)。图像的不连续性可以对应于例如深度不连续性、表面取向的不连续性、材料性质(例如,颜色、纹理)的变化和/或照明的变化。例如,边缘检测器154可以检测图像中对应于两堵墙壁相接、天花板与墙壁相接、墙壁中的开口、窗框、墙壁的颜色变化等的边缘。

边缘检测器154可以检测由机器人130的相机131捕获的相机图像中的边缘,并且还可以检测由模型图像渲染引擎152生成的模型图像中的边缘。边缘检测器154可以利用一种或多种技术来检测图像中的边缘。例如,边缘检测器可以采用一个或多个边缘检测算法,诸如canny边缘检测算法。

姿态确定引擎156被配置为:基于从相机131的相机图像提取的边缘,与当捕获相机131的相机图像时,由模型图像渲染引擎152从机器人130的相机131的估计姿态的视点,生成的模型图像提取的边缘的比较,确定相机131的当前姿态。

姿态确定引擎156进一步被配置为基于相机131的所确定的当前姿态来确定机器人的当前姿态(即,定位机器人)。例如,在一些实施方式中,姿态确定引擎156可以将相机131的当前姿态指派为机器人的当前姿态。此外,例如,在一些实施方式中,相机131的姿态和机器人的姿态之间的相对差异可以是已知的,并且姿态确定引擎156可以使用该已知的相对差异,将相机131的姿态变换成机器人的姿态。在那些实施方式中的一些实施方式中,相机131可以静态地安装在机器人130上,相机131的姿态和机器人的姿态之间的相对差异可以是静态的,并且使用固定变换来将相机131的姿态变换成机器人的姿态。在一些其它实施方式中,相机131可动态地耦合到机器人130(例如,在可致动臂或其他组件上),基于应用机器人运动学来确定当前相对差异,并且基于当前相对差异确定的机器人姿态的当前变换,相机131的姿态和机器人的姿态之间的相对差异可以是“已知的”。

在一些实施方式中,姿态确定引擎156可以确定一个或多个相机图像边缘与模型图像的一个或多个匹配边缘之间的一个或多个欧几里得距离,并且使用这些距离来确定相机131的当前姿态。例如,可以利用距离的方向和/或量值来从被用来生成模型图像的估计姿态取得当前姿态。换言之,可以通过根据(在该相机姿态下由相机捕获的)相机图像和(从估计姿态渲染的)模型图像的边缘之间的距离的取向和/或量值修改估计姿态来确定当前姿态。在一些实施方式中,姿态确定引擎156可以将最小二乘拟合应用于所确定的欧几里得距离。在那些实施方式中的一些实施方式中,姿态确定引擎156可以基于通过由最小二乘拟合确定的差的平方和来修改估计姿态,确定相机的当前姿态。在确定给定相机图像边缘和匹配模型图像边缘之间的一个或多个欧几里得距离的一些实施方式中,通过在沿那些边缘的多个点处测量,确定多个欧几里德距离。

作为一个示例,假定姿态确定引擎156确定相机图像边缘和匹配模型边缘之间没有(或名义(nominal))差异。在这样的示例中,姿态确定引擎156可以确定相机的当前姿态与被用来渲染模型图像的估计姿态相同。作为另一示例,假定姿态确定引擎156确定相机图像边缘和匹配模型边缘之间的相对小的差异。在这样的示例中,姿态确定引擎156可以基于以下来确定相机的当前姿态:通过基于那些相对小的差异的量和取向,修改被用来渲染模型图像的估计姿态。

在一些实施方式中,姿态确定引擎156基于模型边缘和相机边缘之间的一个或多个差异满足阈值来确定模型图像中的模型边缘与相机图像中的相机边缘匹配。该阈值可以是:例如模型边缘的像素的阈值百分比处于相机边缘的像素的阈值像素数目内和/或两个边缘之间的最小均方距离小于阈值像素数目。在一些实施方式中,姿态确定引擎156可以过滤或以其他方式忽略其确定不“匹配”任何模型边缘的相机边缘(例如,大于来自任何模型边缘的阈值像素数目)。例如,如果椅子或其他物体存在于相机图像中,但未在环境的3d模型170中建模,则与椅子相对应的相机边缘可能与任何模型边缘不匹配-并且姿态确定引擎156可以过滤与椅子相对应的边缘。

在确定相机的给定当前姿态的一些实施方式中,模型图像渲染引擎152可以渲染来自环境的3d模型170的环境的一个或多个附加模型图像-每个附加模型图像具有不同候选姿态的视点。边缘检测器154可以检测每个附加模型图像中的边缘,并且姿态确定引擎156可以基于边缘相对于匹配相机图像边缘满足某个阈值的模型图像的候选姿态来确定相机131的当前姿态。例如,可以将具有边缘与机器人图像边缘之间的最小差量的模型图像的候选姿态选择为当前姿态。在一些实施方式中,姿态确定引擎156可以基于相机图像边缘和从估计的姿态的视点的原始模型图像边缘之间的差异,确定被用来生成附加模型图像的候选姿态。例如,在一些实施方式中,引擎156可以基于差异来确定相机131的候选姿态,并且将该候选姿态提供给模型图像渲染引擎152以从该候选姿态渲染附加模型图像。边缘检测器154可以检测附加模型图像的模型边缘,并且姿态确定引擎156作为“校验”,可以将那些模型边缘与相机边缘比较以确保应当基于候选姿态来确定相机的当前姿态(例如以确保那些模型边缘和相机边缘之间存在足够接近的匹配)和/或生成可以被用来生成另外的附加图像的进一步的候选姿态,所述另外的附加图像可以被用来进一步细化相机的当前姿态。

估计姿态确定引擎158被配置成将相机131的估计姿态提供给模型图像渲染引擎152,以使得模型图像渲染引擎152能够从该估计姿态的视角渲染模型图像。在一些实施方式中,估计姿态可以基于在所提出的机器人定位技术的先前迭代期间确定的相机131的当前姿态。例如,当所提出的机器人定位技术以相对高的频率(例如,30hz或60hz)迭代时——其中每次迭代基于来自相机131的新相机图像,在所提出的机器人定位技术的紧接在前迭代期间相机131的所确定的姿态可以提供相机131的实际姿态的相当接近的估计。

在一些实施方式中,估计姿态确定引擎158可以将相机131的紧接在前姿态用作估计姿态。在一些其它实施方式中,估计姿态确定引擎158可以基于以下来确定估计姿态:基于来自机器人130的一个或多个附加传感器的传感器数据来修改相机131紧接在前姿态。例如,可以利用来自惯性测量单元、一个或多个里程表和/或一个或多个其他传感器的传感器数据来确定相机131的紧接在前姿态的可能变化。该可能变化可以应用于紧接在前姿态,并且该结果被用作用于下一迭代的估计姿态。

在一些实施方式中,估计姿态确定引擎158可以使用其他定位技术来确定估计姿态。例如,当机器人130意外地(例如由人类)移动、初始“上电”(例如,在“休眠”期间之后或在电池电量用尽之后),和/或以其他方式初始不知道其在环境中的姿态时,引擎158可以使用其他定位技术来确定用于本文所述的定位技术的初始迭代的估计姿态。

尽管机器人130、定位系统150和环境的3d模型170在图1中单独地示出,这并不意味着限制。在各个实施方式中,定位系统150和/或环境的3d模型170的一个或多个方面可以在机器人130上实现。例如,引擎152、154、156和/或158中的一个或多个的全部或多个方面可以经由机器人130的硬件(例如,处理器)来实现。此外,例如,环境的3d模型170的全部或多个方面可以被存储在机器人130的存储器中。在机器人130和系统150的一个或多个方面是单独的组件的实施方式中,它们可以通过一个或多个有线或无线网络或使用其他无线技术,诸如无线电、蓝牙,红外等通信。在环境的3d模型170的一个或多个方面与机器人130分开的实施方式中,机器人130可以使用一个或多个有线或无线网络或使用其他无线技术来访问环境的3d模型170。例如,机器人130可以周期性地访问远程存储的环境的3d模型170,以检索和本地存储(例如,缓存)位于机器人的当前姿态的阈值距离内的环境的3d模型170的一个或多个部分。

图2示出了检测由机器人(例如图1的机器人130)的相机捕获的相机图像101中的边缘,并且基于将所检测的图像中的边缘与从环境的3d模型170取得的边缘的比较来定位机器人的示例。

在图2中,模型图像渲染引擎152使用环境的3d模型170来渲染2d模型图像。模型图像渲染引擎152从由估计姿态确定引擎158提供的机器人的相机的估计姿态的视角渲染图像。如本文所述,估计姿态可以基于根据图2的示例来定位机器人的先前迭代的相机姿态。例如,可以将紧接在前迭代的相机的当前姿态105用作估计姿态。此外,例如,估计姿态确定引擎158可以根据来自一个或多个附加机器人传感器135的传感器数据来修改紧接在前迭代的相机的当前姿态105并且将这样的修改用作估计姿态。在一些实施方式中,估计姿态确定引擎158可以与来自在前迭代的当前相机姿态独立地使用来自一个或多个附加机器人传感器135的传感器数据,来生成估计姿态(例如,在图2的示例的初始迭代中)。

边缘检测器154从模型图像渲染引擎152接收2d模型图像,并且还从机器人的相机接收相机图像101。边缘检测器154从相机图像101提取相机图像边缘,从模型图像提取模型图像边缘,并且将相机图像边缘和模型图像边缘提供给姿态确定引擎156。

如本文所述,姿态确定引擎156基于相机图像边缘与模型图像边缘的比较,确定机器人的相机的当前姿态105。姿态确定引擎156进一步基于相机的当前姿态105来确定机器人的当前姿态107。例如,姿态确定引擎156可以将相机的当前姿态105用作机器人的当前姿态107,或者可以基于虑及机器人与机器人的相机之间的相对姿态差异的变换,将相机的当前姿态105变换为机器人的当前姿态107。

在一些实施方式中,姿态确定引擎156可以可选地确定机器人109的相机的一个或多个候选姿态(例如,如上所述),并且将这些候选姿态109提供给模型图像渲染引擎152。在那些实施方式中,引擎152可以根据环境的3d模型170生成一个或多个附加2d模型图像,其中,每个附加2d模型图像来自对应的候选姿态的角度。边缘检测器154可以检测附加模型图像中的边缘,并且姿态确定引擎156可以基于边缘满足相对于相机图像边缘的某个阈值的附加模型图像的候选姿态来确定相机的当前姿态105和机器人的当前姿态107。

可以将机器人的当前姿态107提供给机器人的机器人任务引擎160和/或用来执行一个或多个机器人任务的机器人的另一组件。例如,机器人任务引擎160可以将机器人的当前姿态107用于生成在执行任务时提供给机器人的致动器的一个或多个控制命令。相机的当前姿态105可以被提供给估计姿态确定引擎158并且引擎158可以将相机的当前姿态105用来确定用于图2的示例的下一迭代的估计姿态。

可以执行上述图2的示例的多次迭代,每次使用来自机器人的相机的新捕获的相机图像101和使用基于紧接在前确定的相机的当前姿态105而由引擎158确定的“估计姿态”。例如,机器人的相机可以每秒捕获多个图像(例如,每秒30帧或每秒60帧),并且每次接收到新图像时,根据图2的示例来更新相机的当前姿态105。此外,每次更新相机的当前姿态时,可以根据估计姿态来更新当前姿态,该估计姿态是由引擎158根据相机的紧接在前在前姿态而确定的。在一些实施方式中,可以实时地执行图2的示例。例如,基于在由机器人相机捕获新图像前机器人相机最近捕获的图像,可以确定机器人的当前姿态。

图3描绘了根据各个实施方式的,示出确定环境中的机器人的相机的姿态的示例方法300的流程图。为了方便起见,参考执行操作的系统来描述流程图的操作。该系统可以包括各个计算机系统和/或机器人的各个组件,诸如图1的定位系统150、图1的相机131和/或图4的处理器402。此外,尽管以特定顺序示出方法300的操作,但这并不意味着限制。可以重新排序、省略或添加一个或多个操作。

在框302处,由环境中的机器人的相机捕获图像。例如,可以由机器人的单眼相机捕获图像。

在框304处,系统将边缘检测器应用于相机图像来检测相机图像中的相机图像边缘。该系统可以利用一种或多种技术来检测图像中的边缘,诸如canny边缘检测技术。

在框306处,系统识别环境中的相机的估计姿态。在一些实施方式中,系统可以基于方法300的先前迭代的在框312中确定的相机的姿态来确定估计姿态。例如,可以将紧接在前迭代的当前相机姿态用作估计姿态。此外,例如,系统可以根据来自一个或多个附加机器人传感器的传感器数据来修改紧接在前迭代的当前相机姿态。在一些实施方式中,系统可以使用与来自在前迭代的当前相机姿态无关的、来自一个或多个附加机器人传感器的传感器数据,以生成估计姿态(例如,在方法300的初始迭代中)。

在框308处,系统根据环境的3d模型,渲染从所估计的姿态的视角的环境的模型图像。换言之,系统渲染具有与估计姿态相同位置和取向的渲染图像的视点的模型图像。系统可以使用各个渲染技术来渲染来自环境的3d模型的模型图像,例如光栅化、光线投射、辐射度和/或光线追踪。

在框310处,系统将边缘检测器应用于模型图像以检测模型图像中的模型图像边缘。

在框312处,系统基于相机图像边缘与模型图像边缘的比较来确定环境中的相机的姿态。例如,系统可以确定框304的一个或多个相机图像边缘与框310的一个或多个匹配模型图像边缘之间的欧几里德距离,并且使用这些距离来确定相机的当前姿态。例如,系统可以使用距离的方向和/或量值来从被用来生成框308的模型图像的估计姿态取得当前状态。在一些实施方式中,系统可以渲染来自环境的3d模型的境的一个或多个附加模型图像-每个附加模型图像具有不同候选姿态的视点。系统可以检测每个附加模型图像中的边缘,并且系统可以基于边缘满足相对于匹配相机图像边缘的某个阈值的模型图像的候选姿态来确定相机的当前姿态。

在框314处,系统基于在框312处确定的环境中的相机的姿态来定位环境中的机器人。例如,系统可以通过将框312的相机的当前姿态指派为机器人的当前姿态(例如,机器人的当前姿态与相机的当前姿态相同)来定位机器人。此外,例如,在一些实施方式中,机器人的姿态可以相对于与相机的姿态不同的参考点,并且相机的姿态和机器人的姿态之间的相对差异可以是已知的。在那些实施方式中的一些实施方式中,系统可以通过使用该已知的相对差异,将相机的所确定的姿态变换成机器人的姿态来定位机器人。

在一些实施方式中,还可以对由机器人的附加相机捕获的附加图像执行框302、304、306、308、310和/或312(例如,面对与该相机不同方向或以其他方式具有与该相机不同的视野的附加相机),并且系统可以基于以下在框314定位机器人:基于(附加相机的)附加图像在框312处确定的姿态和/或基于根据(相机的)图像在框314处确定的姿态。

例如,可以对由机器人的第一相机捕获的第一图像执行框302、304、306、308、310和312中的每一个,以及对在接近捕获第一图像的时间(例如在500毫秒内)的时间,由机器人的第二相机捕获的第二图像,执行框302、304、306、308、310和312中的每一个。在这样的示例中,在框314处,系统可以基于对第一图像的在框312处确定的姿态和/或对第二图像的在框312处确定的姿态来定位机器人。例如,系统可以基于在框312处确定的仅一个姿态——诸如基于(对应的相机图像边缘和对应的模型图像边缘之间的)最大匹配边缘的数量确定的姿态和/或满足一些附加或替选标准的姿态——来定位机器人。此外,例如,系统可以基于对第一图像的在框312处确定的姿态和对第二图像的在框312处确定的姿态的其他组合的平均值来定位机器人。考虑到来自多个相机的多个图像来定位机器人的一些实施方式在一些情景下——诸如当其中一个相机捕获没有或具有很少边缘的图像(例如,白墙)而另一个相机捕获包括更多边缘数目的图像时,可以导致改进的机器人定位。

图4示意性地描绘机器人的示例架构。机器人400可以采取各种形式,包括但不限于远程即席机器人、人形、动物形式、轮式设备、潜水器、无人飞行器(“uav”)等等。在各个实施方式中,机器人400可以包括处理器402。处理器402可以采取各种形式,诸如一个或多个中央处理单元、一个或多个图形处理器单元(“gpu”)、一个或多个现场可编程门阵列(“fpga”)、一个或多个专用集成电路(“asic”)、一个或多个所谓的“实时控制器”等等。

在各个实施方式中,处理器402可以例如经由一个或多个总线410可操作地与一个或多个致动器404a-n和/或一个或多个传感器408a-m耦合。传感器408a-m可以采取各种形式,包括但不限于相机、深度传感器、压力传感器、压力波传感器(例如麦克风)、接近传感器、加速度计、陀螺仪、温度计、气压计等。虽然传感器408a-m被描绘为与机器人400集成,但这并不意味着限制。在一些实施方式中,一个或多个传感器408a-m可以位于机器人400的外部,例如作为独立单元。

处理器402可以向致动器404a-n提供控制命令以完成一个或多个任务。那些控制命令包括将致动器404a-n引导到驱动轮和/或其他组件以使得机器人400能够自主地、半自主地和/或响应于在计算设备处的用户界面输入,而由计算设备提供的控制命令来遍历一个或多个路径的命令。处理器402可以至少部分地基于根据本文所述的技术确定的机器人的姿态来生成一个或多个控制命令。

此外,在一些实施方式中,处理器402可以实现定位系统150的一个或多个(例如全部)方面。在一些实施方式中,处理器包括实现定位系统150的一个或多个(例如,全部)方面的至少一个gpu。处理器402与存储器417通信。在一些实施方式中,存储器417存储环境的3d模型的全部或多个方面,并且处理器402可以从存储在存储器417中的3d模型渲染模型图像。存储器417可以包括例如用于在程序执行期间存储指令和数据的随机存取存储器(ram)和/或存储固定指令和/或数据的只读存储器(rom)。

网络接口子系统415为外部网络接收接口,并且耦合到一个或多个其他计算机系统中的一个或多个对应的接口设备,诸如包括环境的3d模型的全部或部分的计算设备和/或实现定位系统150的一个或多个方面的计算设备。

尽管本文已经描述和示出了若干实施方式,但是可以利用用于执行功能和/或获得结果和/或本文所述的一个或多个优点的各种其他装置和/或结构,并且将这样的变化和/或改进中的每一个视为在本文所述的实施方式的范围内。更一般地,本文所述的所有参数、尺寸、材料和配置意指示例性的,并且实际参数、尺寸、材料和/或配置将取决于使用这些教导的特定应用。本领域技术人员将认识到,或仅仅使用不多于常规实验就能够确定本文所述的具体实施方式的许多等同。因此,应理解到,上述实施方式仅通过示例的方式呈现,并且在所附权利要求书及其等同的范围内,可以以与具体描述和要求保护的方式不同的方式来实现实施方式。本公开的实施方式针对本文所述的每个单独的特征、系统、物品、材料、套件和/或方法。此外,如果这些特征、系统、物品、材料、工具包和/或方法不会相互不兼容,则两个或更多个这样的特征、系统、物品、材料、工具包和/或方法的任意组合都包括在本公开的范围内。

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