集成式障碍物检测和有效负载定心传感器系统的制作方法

文档序号:17825862发布日期:2019-06-05 22:38阅读:214来源:国知局
集成式障碍物检测和有效负载定心传感器系统的制作方法

本申请要求于2016年9月15日提交的第15/265,925号美国申请的优先权和权益,所述申请的全部内容以引用方式并入本文。



背景技术:

自主机器人通常用于在仓库或类似环境中执行任务。此类任务可以包括移动物品、货架、盒子或其他存储容器;给(例如,其他自主机器人的)击球手再充电;以及其他任务。自主机器人的使用具有许多优点。例如,仓库中的物品可以更紧密地堆放在一起,因为机器人可以被设计成所需要的空间比人类执行类似任务所需的空间更少。较大和较重的物品可以存储在仓库中,因为机器人可以运输比人类可以运输的物品更重的物品。同样,由于使用自主机器人,与操作仓库相关联的劳动力成本也降低了。

附图说明

参考以下附图可以更好地理解本公开的许多方面。附图中的部件不一定按比例绘制,而是强调清楚地示出本公开的原理。此外,在附图中,相似的附图标记在全部几个视图中指定对应的部件。

图1是本公开的各种实施例的示例性实施方式的图。

图2是本公开的各种实施例的示例性实施方式的图。

图3是根据各种本公开的各种实施例的联网环境的图。

图4a至图4c描绘了根据本公开的各种实施例的示出实施为图3的联网环境中的机器人驱动单元的部分的功能性的一个示例的流程图。

图5a至图5c描绘了根据本公开的各种实施例的示出实施为在图3的联网环境中执行的应用程序的部分的功能性的一个示例的流程图。

图6是根据各种本公开的各种实施例的一个示意框图,所述框图提供在图3的联网环境中采用的计算环境的一个示例性图示。

具体实施方式

自主机器人通常用于在仓库或类似环境中执行任务。这些自主机器人通常具有许多传感器以允许它们执行其功能。例如,自主机器人可以具有用于收集数据以确定自主机器人的位置的摄像头。自主机器人还可以使用第二摄像头来检测当前在自主机器人的路径中的物体以便避免碰撞。自主机器人还可以使用单独的摄像头来识别要运输的物品或物品所在的存储单元。

公开了用于运输物品仓库或类似环境的机器人驱动单元的各种实施例。机器人驱动单元被配置为使用集成传感器系统来进行障碍物检测和避障以及有效负载定心。在其他版本的机器人驱动单元中,可以使用单独的传感器系统来执行这些功能。例如,可以使用一个摄像头来执行障碍物检测,同时有效负载定心可以依赖于单独的摄像头。然而,图像处理技术的改进和摄像头技术的改进使得将同一摄像头用于多种功能成为可能。在机器人驱动单元的构造中使用较少的摄像头降低了成本。然而,需要不同的技术来使用同一摄像头执行避障和有效负载定心功能。

从图1开始,描绘了机器人驱动单元(“rdu”)100的示例。rdu100可以将其自身定位在存储单元103下方。存储单元103可以包括可以在仓库环境中使用以存储多个物品的各种存储货架、架子、托盘、箱子、容器或类似的存储装置。在将其自身定位在存储单元103下方之后,rdu100可以将存储单元103升起离开地面,从而允许rdu将存储单元103移动到新位置。

rdu100还可以包括各种图像捕获装置,诸如摄像头、三维摄像头、点云扫描仪或类似装置。例如,rdu100可以包括一个或多个前视图像捕获装置106。前视图像捕获装置106通常可以安装在rdu100前方。然而,前视图像捕获装置106可以安装在rdu100的顶部、侧面或其他表面上并且被定位成面向前方。然而,在一些实施例中,第二后视图像捕获装置107可以安装在rdu100上。在这些实施例中,后视图像捕获装置107通常可以安装在rdu100的后部。然而,后视图像捕获装置107也可以安装在rdu100的顶部、侧面或其他表面上并且被定位成面向rdu100的后部。rdu100还可以包括一个或多个下视图像捕获装置109。下视图像捕获装置109可以位于rdu100的底盘或底部。然而,在其他实施例中,下视图像捕获装置109可以位于rdu100上的其他位置并被且定位成面向下。

rdu100还可以包括附加电路,诸如处理器、存储器和网络接口。这些部件使得rdu100能够以自主方式进行操作。例如,存储器可以是可由处理器执行以使rdu100执行特定任务的数据和机器可读指令两者。rdu100的存储器在本文中被定义为包括易失性和非易失性存储器两者以及数据存储部件。易失性部件是在断电时不保留数据值的那些部件。非易失性部件是在断电时保留数据的那些部件。因此,rdu100的存储器可以包括各种类型的随机存取存储器(ram)、只读存储器(rom)、硬盘驱动器、固态驱动器、usb随身碟、经由记忆卡读取器访问的记忆卡、经由相关软盘驱动器访问的软盘、经由光盘驱动器访问的光盘、经由适当的磁带驱动器访问的磁带,或其他存储器部件,或这些存储器部件的任何两者或更多者的组合。另外地,ram可以包括例如静态随机存取存储器(sram)、动态随机存取存储器(dram)或磁性随机存取存储器(mram)以及其他此类装置。rom可以包括例如可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或其他类似的存储器装置。而且,处理器可以表示多个处理器或多个处理器核心,并且存储器可以表示分别在并行处理电路中操作的多个存储器。处理器可以是电气的或某种其他可用结构。网络接口可以对应于允许rdu100与另一个装置(诸如远程计算装置(例如,服务器))保持数据通信的任何光学或电气装置。例如,网络接口可以对应于电气电子工程师协会(“ieee”)802.11(即“wi-fi”)接口、微波联网接口、短程无线接口(例如,蓝牙)或其他网络接口。

进入图2,提供了rdu100的操作的示例性图示。在此,rdu100将其自身定位在存储单元103下方。然后,rdu100在存储单元103下方旋转以生成存储单元103附近的全景图像。在rdu100仅具有前视图像捕获装置106或后视图像捕获装置107的实施例中,rdu100可以旋转360度。全景图像可以包括单个图像、重叠并且可以拼接在一起以形成单个图像的一系列图像,一系列图像捕获rdu100的可视邻近区域的相邻部分、视频或其他表示。在rdu100具有前视图像捕获装置106和后视图像捕获装置107两者的实施例中,rdu100可以更少地旋转(例如,旋转180度)。在生成全景图像之后,rdu100然后可以识别存储单元103的至少两个支腿并且基于所识别的两个支腿来确定其相对于存储单元103的中心的位置。如果rdu100确定其偏离中心,则rdu100可以在尝试升起并移动存储单元103之前将其自身在存储单元103下方居中。

在一些情况下,rdu100还可以识别全景图像内的存储单元基准点316以便确定存储单元103的标识或存储单元103的内容物。存储单元基准点316可以位于存储单元103的支腿上。然而,存储单元基准点316可以放置在其他可见位置中,或者多个存储单元基准点316可以固定到存储单元103。

参考图3,示出了根据各种实施例的联网环境300。联网环境300包括计算环境303和机器人驱动单元100,它们经由网络306彼此进行数据通信。网络306可以包括因特网、内联网、外联网、广域网(wan)、局域网(lan)或者两个或更多个此类网络的任何组合。例如,此类网络可以包括有线网络(例如,有线电视网路、以太网、光纤网络、电话网络、数字用户线路网络或其他有线网络技术)或无线网络(例如,卫星网络、ieee802.11“wi-fi”网络、网状网络、蜂窝网络或其他无线网络技术)。

计算环境303可以包括服务器计算机或提供计算能力的任何其他系统。另选地,计算环境303可以采用可以被布置在例如一个或多个服务器组或计算机组或其他布置中的多个计算装置。此类计算装置可以位于单个安装部分中,或者可以分布在许多不同的地理位置中。例如,计算环境303可以包括共同形成被托管的计算资源、网格计算资源或任何其他分布式计算布置的多个计算装置。在一些情况下,计算环境303可以对应于弹性计算资源,其中处理资源、网络资源、存储资源或其他计算相关资源的分配容量可以随时间变化。

而且,各种数据存储在计算环境303可访问的数据存储区309中。可以明白,数据存储区309可以表示多个数据存储区309,诸如关系数据库、键值存储区、分层数据库、面向对象的数据库、逗号或制表符分隔的文本文件、配置文件以及可能的其他数据存储区。例如,存储在数据存储区309中的数据与以下描述的各种应用或功能实体的操作相关联。存储在数据存储区309中的数据包括例如地面基准点313、存储单元103和存储单元基准点316、仓库地图319以及可能的其他数据。

地面基准点313对应于位于地面上且其上编码有标识符的标记。每个地面基准点313对应于仓库地图319上的唯一位置,从而允许rdu100基于一个或多个附近的地面基准点313来确定其位置。地面基准点313可以包括条形码或其他易于成像的光学、机器可读的数据表示。条形码可以包括例如线性条形码或二维条形码。二维条形码的示例包括矩阵式条形码,诸如sparqcode的快速响应(“qr”)码、圆形条形码(例如,“shotcode”),或用于以二维形状光学编码数据的其他方案。

关于每个存储单元103的信息也可以存储在数据存储区309中。该信息可以包括存储单元103的内容物、存储单元103的位置以及可能的其他数据。存储单元基准点316也可以与每个存储单元103相关联。存储单元基准点316对应于位于存储单元103上且其上编码有标识符的标记。每个存储单元基准点316可以用于唯一地识别存储单元基准点316所附接的存储单元103。例如,rdu100可以通过扫描存储单元基准点316以获得存储单元103的标识符并查询数据存储区309来识别存储单元103以及存储单元103的内容物。

仓库地图319存储仓库或类似结构的空间表示。例如,仓库地图319可以包括关于相应仓库中的结构的位置、仓库内的特定区域或区(例如,应存储有存储单元103的位置)、单独物品或实体的位置(例如,单独的存储单元103或rdu100的当前位置)的数据以及可能的其他数据。该数据可以按多种格式存储,诸如笛卡尔坐标系、极坐标系或其他适当的二维或三维坐标系。

根据各种实施例,可以在计算环境303中执行各种应用程序和/或其他功能性。在计算环境303上执行的部件可以包括rdu调度应用程序321、驱动代理322、路径生成应用程序323,以及本文未详细讨论的其他应用程序、服务、过程、系统、引擎或功能性。

rdu调度应用程序321用于组织一个或多个rdu100的操作。例如,rdu调度应用程序321可以命令rdu100将特定存储单元103移动到新位置,至少部分地基于从rdu100接收的包含存储单元103的标识符的消息来验证rdu100已经检索到正确的存储单元103,以及可能的其他功能。

在一些实施例中,可以执行驱动代理322以充当用于rdu100的控制器。驱动代理322可以从rdu100接收或查询数据,诸如传感器读数或数据。然后,驱动代理322可以确定要由rdu100执行的适当动作,并向rdu100发送导致rdu100执行所述动作的一个或多个指令。在一些情况下,可以执行驱动代理322的单独实例以控制每个rdu100。在其他情况下,可以执行单个驱动代理322以控制或以其他方式管理多个rdu100的动作。

执行路径生成应用程序323以至少部分地基于由rdu100提供的信息来识别并提供到rdu100的两个点之间的路径。路径生成应用程序323可以使用各种方法来确定rdu100的仓库地图319上的两个点之间的路径。此类方法可以包括依赖于地面基准点313在仓库内的放置的基于网格的方法,诸如任意角度路径规划方法、a*图遍历方法或类似方法。路径生成应用程序323还可以在生成路径时考虑已知障碍物的存在。这些障碍物可能是永久的(例如,墙壁、柱子、排水斜槽或其他建筑物特征)或临时的(例如,落在地板上的物品、被禁用的rdu100或其他障碍物)。

然后,提供对联网环境300的各种部件的操作的一般描述。首先,rdu100接近存储单元103并在存储单元103下方移动。然后,rdu100使用下视图像捕获装置109来捕获地面基准点313的图像,并使其自身在地面基准点313上居中。随后,rdu100围绕地面基准点313旋转就位以通过前视图像捕获装置106来捕获全景图像。在捕获全景图像之后,rdu100识别全景图像中的存储单元103的多个支腿,并测量从存储单元103的多个支腿中的每一者到地面基准点313的距离。然后,rdu100可以计算存储单元103的中心相对于地面基准点313的位置,并确定它是否相对于存储单元103偏离中心。如果rdu100相对于存储单元103偏离中心,则rdu100可以调整其位置使得rdu100位于存储单元103的中心下方。在将其自身在存储单元103下方居中之后,rdu100然后升起存储单元103。

在一些情况下,rdu100还可以识别全景图像中的存储单元基准点316。如果rdu100这样做,则它可以从存储单元基准点316的图像中提取存储单元103的标识符,并通过网络306向rdu调度应用程序321发送包含存储单元103的标识符的请求。rdu100可以执行该步骤以验证它正在与正确的存储单元103交互。然后,rdu调度应用程序321可以经由网络306提供响应以向rdu100指示rdu100是否在正确的存储单元103下方或正与正确的存储单元103交互。

然后,在升起存储单元103之后,rdu100可以开始将存储单元103移动到新位置。在移动存储单元103之前,rdu100可以首先使用前视图像捕获装置106来捕获图像。然后,当rdu100与存储单元103一起运动时,rdu100可以使用前视图像捕获装置106来周期性地捕获附加图像。在移动时,rdu100可以将最近捕获图像与一个或多个先前捕获的图像进行比较以便确保存储单元103安全地移动。例如,rdu100可以测量出现在图像中的存储单元103的一个或多个支腿的位置变化以确定存储单元是否已经改变在rdu100的顶部上的位置或定向。同样地,rdu100可以确定在存储单元103的一个或多个支腿出现在先前图像中但是没有一个支腿出现在当前图像中的情况下,存储单元103从rdu100上掉落。在这种情况下,rdu100可以向rdu调度应用程序321发送警报以指示存储单元103已经掉落。作为另一个示例,rdu100可以测量存储单元103的单独支腿在图像之间的竖直位移量。基于这些测量值,rdu100可以确定存储单元103在运输期间是否摇摆以及存储单元103是否处于倾斜和掉落的危险中。rdu100可以调整其速度或从路径生成应用程序323请求新路径以便防止摇摆存储单元103掉落。

当rdu100处于运动中时,rdu100还可以分析通过前视图像捕获装置106捕获的图像以检测并识别rdu100所遵循的路径中的潜在障碍物。障碍物可以包括其他rdu100、人、存储单元103或rdu100的路径中的任何其他意外物体。响应于识别出障碍物,rdu100可以通过网络306向路径生成应用程序323发送对新路径的请求。然后,rdu100可以遵循由路径生成应用程序323提供的新路径,所述新路径将rdu100引导到其最终目的地。

然而,在一个或多个可选实施例中,这些功能中的一者或多者可以可选地由驱动代理322来实施。例如,驱动代理322可以命令rdu100接近存储单元103并在存储单元103下方移动。在rdu100已经指示已经在存储单元103下方移动之后,驱动代理322可以命令rdu100使用下视图像捕获装置109来捕获地面基准点313的图像。然后,驱动代理322可以命令rdu100将其自身在地面基准点313上居中。然后,rdu100可以在其自身居中并请求附加指令之后向驱动代理322报告。然后,驱动代理322可以命令rdu100围绕地面基准点313旋转就位以通过前视图像捕获装置106来捕获全景图像。然后,rdu100可以将捕获的图像提供给驱动代理322。然后,驱动代理322可以处理图像以识别全景图像中的存储单元103的多个支腿,并测量从存储单元103的多个支腿中的每一者到地面基准点313的距离。然而,在一些情况下,驱动代理322可以请求图像处理应用程序执行这些计算。然后,驱动代理322可以然后计算存储单元103的中心相对于地面基准点313的位置,并确定rdu100是否相对于存储单元103偏离中心。如果rdu100相对于存储单元103偏离中心,则驱动代理322可以命令rdu100调整其位置使得rdu100位于存储单元103的中心下方。在rdu100将其自身在存储单元103下方居中之后,驱动代理322然后可以命令rdu100升起存储单元103。

在一些情况下,驱动代理322还可以识别全景图像中的存储单元基准点316。如果驱动代理322这样做,则它可以从存储单元基准点316的图像中提取存储单元103的标识符,并向rdu调度应用程序321发送包含存储单元103的标识符的请求。驱动代理322可以执行该步骤以便验证rdu100正与正确的存储单元103交互。然后,rdu调度应用程序321可以提供响应以向驱动代理322指示rdu100是否在正确的存储单元103下方或正与正确的存储单元103交互。

然后,驱动代理322可以命令rdu100在升起存储单元103之后开始将存储单元103移动到新位置。在移动存储单元103之前,驱动代理322可以首先命令rdu100使用前视图像捕获装置106来捕获图像。驱动代理322可以进一步命令rdu100当rdu100与存储单元103一起运动时使用前视图像捕获装置106来周期性地捕获附加图像。然后,当rdu100运动时,rdu100可以将这些图像中的一者或多者提供给驱动代理322。然后,驱动代理322可以将最近捕获图像与一个或多个先前捕获的图像进行比较以确保存储单元103安全地移动。例如,驱动代理322可以测量出现在图像中的存储单元103的一个或多个支腿的位置变化以确定存储单元是否已经改变rdu100的顶部上的位置或定向。同样地,驱动代理322可以确定存储单元103的一个或多个支腿出现在先前图像中但是没有一个支腿出现在当前图像中的情况下,然后存储单元103从rdu100上掉落。在这种情况下,驱动代理322可以向rdu调度应用程序321发送警报以指示存储单元103已经掉落并向rdu100发送停止的指令。作为另一个示例,驱动代理322可以测量存储单元103的单独支腿在图像之间的竖直位移量。基于这些测量值,驱动代理322可以确定存储单元103在运输期间是否摇摆以及存储单元103是否处于倾斜和掉落的危险中。然后,驱动代理322可以命令rdu100调整其速度。可选地,驱动代理333可以从路径生成应用程序323请求新路径以便防止正摇摆的存储单元103掉落。

当rdu100处于运动中时,驱动代理322还可以分析通过前视图像捕获装置106捕获的图像以检测并识别rdu100所遵循的路径中的潜在障碍物。障碍物可以包括其他rdu100、人、存储单元103或rdu100的路径中的任何其他意外物体。响应于识别出障碍物,驱动代理322可以向路径生成应用程序323发送对新路径的请求。然后,驱动代理322可以命令rdu100遵循由路径生成应用程序323提供的新路径以使rdu100到达其最终目的地。

接下来参考图4a至图4c,示出了根据各种实施例的提供rdu100的一部分的操作的一个示例的流程图。应当理解,图4a至图4c的流程图仅提供了可以用于实施如本文所述的rdu100的部分的操作的许多不同类型的功能布置的示例。作为替代方案,图4a至图4c的流程图可以被视为描绘根据一个或多个实施例的在rdu100中实施的方法的要素的示例。

从框403开始,rdu100接近存储单元103。例如,rdu100可以沿预定或预定义路径(例如,沿存储单元行之间的定义通道)接近存储单元103。例如,rdu100可以响应于从rdu调度应用程序321接收的指令而接近存储单元103。

接下来参考框406,rdu100在存储单元103下方移动。虽然最初将其自身定位在存储单元103下方,但是rdu100可以使用前视图像捕获装置106来捕获一个或多个图像。然后,rdu100可以执行图像分析以识别存储单元103的支腿以便在rdu100在存储单元103下方移动时避免撞击存储单元103的支腿。rdu100还可以执行图像分析以识别其他障碍物,诸如地板上的物品、箱子或盒子,这要求rdu100在rdu100在存储单元103下方移动时改变其接近。

移到框409,rdu100使用下视图像捕获装置107来捕获地面基准点313的图像。在一些情况下,rdu100可以执行图像分析以识别捕获图像中的地面基准点313。如果在捕获图像中未识别出地面基准点313,则rdu100可以尝试捕获地面基准点313的另一个图像,或者可以在捕获另一个图像之前稍微将其自身重新定位在存储单元103下方,以防地面基准点313最初在下视图像捕获装置109的视野外。

前进到框413,rdu100将其自身放置在相对于地面基准点313的预定位置处。例如,rdu100在其识别捕获图像中的地面基准点313之后可以使其自身在地面基准点313的顶部居中。为了准确地定位其自身,当rdu100移动时,rdu100可以使用下视图像捕获装置109来重复捕获一系列图像。这允许rdu100通过确定它是朝向还是远离地面基准点313移动以及是否需要任何校正来引导其自身。

接下来参考框416,rdu100在使用前视图像捕获装置106捕获全景图像(例如,单个图像、一系列重叠图像、一系列相邻图像、视频或其他视觉表示)的同时自身旋转。在一些情况下,rdu100可以在捕获rdu100周围区域的全景图像的同时旋转多达360度(即,一整圈)。然而,在其他情况下,如果不需要完整的360度旋转,则rdu100可以旋转较短圆弧。

在一些情况下,rdu100可以结合前视图像捕获装置106使用后视图像捕获装置107。在这些情况下,可以使用较短的旋转圆弧捕获较大的全景图像。例如,当后视图像捕获装置107与前视图像捕获装置106结合使用时,rdu100可以在仅旋转180度的同时通过组合利用后视图像捕获装置107获得的全景图像与从前视图像捕获装置106获得的全景图像来捕获360度全景图像。

移动到框419,rdu100识别下方当前定位有rdu100的存储单元103的一个或多个支腿。例如,rdu100可以使用各种计算机视觉技术来识别先前在框416中捕获的全景图像中的存储单元103的一个或多个支腿。然后,如进一步描述的,rdu100可以存储所述存储单元103的支腿相对于其自身以及相对于存储单元103的位置以便在运输存储单元103时防止事故。

在一些实施例中,rdu100还可以在框419处识别固定到存储单元103的一个或多个存储单元基准点316。然后,rdu100可以提取在一个或多个存储单元基准点316中编码的信息,并将其发送到rdu调度应用程序321以确认rdu100在正确的存储单元103下方。如果rdu100在正确的存储单元103下方,则所述过程将继续前进到框423。如果rdu100不在正确的存储单元103下方,则rdu100可以移动到正确的存储单元103(例如,基于由rdu调度应用程序321提供的新位置)并重新开始所述过程。

前进到框423,rdu100计算从存储单元103的每个支腿到rdu100当前在其上方居中的地面基准点313的距离。这可以通过几种方式来实现。这些方法中的任何一种或多种方法可以在本公开的各种实施例中使用。

例如,如果前视图像捕获装置106是三维摄像头,则距离信息可能已经嵌入在框416中捕获的全景图像中了。在这些情况下,可以从全景图像中提取从前视图像捕获装置106到支腿的距离的值。调整从前视图像捕获装置到存储单元103的支腿的距离的值以补偿rdu100的尺寸。

在前视图像捕获装置106包括二维摄像头的示例中,可以使用其他方法。例如,安装到rdu100的测距仪可以用于测量存储单元103的支腿与rdu100之间的距离。可以调整从前视图像捕获装置106到存储单元103的支腿的距离的值以补偿rdu100的尺寸。

接下来参考图4b的框426,rdu100计算存储单元103的中心的位置。这可以通过确定存储单元103的支腿的相对位置并计算存储单元103的中心相对于存储单元103的支腿的位置应位于何处来完成。例如,rdu100可以使用三角测量或类似方法来识别存储单元103的中心相对于存储单元103的两个或更多个支腿的位置的位置。

移动到框429,rdu100确定它当前是否在存储单元103下方居中,或者rdu100是否定位成相对于存储单元103的中心位于偏离中心。这可以将地面基准点313的位置与先前在框426处计算的存储单元103的中心进行比较来确定。如果地面基准点313的位置不能与存储单元103的中心的位置匹配,则rdu100可以确定相对于存储单元103的位置偏离中心,因为rdu100当前在地面基准点313上方居中。在这种情况下,所述过程前进到框433。然而,如果地面基准点313的位置与存储单元103的中心的位置匹配,则所述过程跳到框436。

前进到框433,rdu100在存储单元103下方移动以将其自身相对于存储单元103的中心重新定位。在一些情况下,rdu100在移动之后可以通过重复框416至429中的一者或多者来确认它位于存储单元103的中心。如果rdu100保持偏离中心,则rdu将会再次朝向存储单元103的中心的位置移动并重复所述过程直到rdu100在存储单元103下方居中。

接下来参考框436,rdu100升起存储单元103。例如,rdu100可以使用集成升降机或类似机构将存储单元103抬离地面。

移动到框439,rdu100然后通过前视图像捕获装置106来捕获另一个图像。捕获的图像可以在所述过程中稍后使用以确保在rdu100移动时安全地搬运存储单元103。

前进到图4c的框443,rdu100携带存储单元103沿路径移动。在一些情况下,当rdu100最初被调度到存储单元103时,rdu100可能先前已经从rdu调度应用程序321接收到所述路径。在其他情况下,rdu100可以在该阶段从路径生成应用程序323请求路径。在这些情况下,来自rdu100的请求可以包括rdu100的当前位置和先前从rdu调度应用程序321接收的rdu100的目的地。

接下来参考框446,rdu100使用前视图像捕获装置106来捕获第二图像。

移动到框449,rdu100将在框439处捕获的图像与在框446处捕获的图像进行比较以确定存储单元103在运输期间是否已在rdu100上移位。然而,如果rdu100已经在框446的先前迭代中捕获了图像,则rdu100可以将当前图像与在先前迭代中捕获的图像进行比较。在任一情况下,可以使用许多方法来确定存储单元103的移位。取决于本公开的特定实施例,这些方法可以单独使用或组合使用。

在第一种方法中,rdu100可以将通过前视图像捕获装置106获得的两个图像进行比较以识别存储单元103的位置在rdu100顶部上的横向移位。例如,当存储单元103搁置在rdu100的顶部上时,rdu100可以在第一图像中识别位于rdu100前方的存储单元103的一个或多个支腿。然后,rdu100可以将第一图像中的存储单元103的支腿的位置与第二图像中的存储单元103的支腿的相应位置进行比较。如果存储单元的支腿的位置向左或向右移位,则rdu100可以确定rdu100顶上的存储单元103已经相应地向左或向右或前后移位

在第二种方法中,rdu100可以将通过前视图像捕获装置106获得的两个图像进行比较以识别存储单元103的位置的竖直移位。例如,rdu100可以在第一图像中识别存储单元103的一个或多个支腿,并且类似地在第二图像中识别存储单元103的一个或多个支腿。在每个图像中,rdu100可以识别存储单元103的支腿的区别特性(例如,支腿的底部、支腿的侧面上的标记等)。如果一个图像中的存储单元103的支腿的区别特性处于不同于(例如,高于或低于)其他图像的竖直高度处,则rdu100可以确定存储单元103正在发生竖直位移。此类竖直位移可以包括摇摆、倾斜、推撞或其他竖直位移。

此时,所述过程可以沿两条路径分支。在第一分支中,rdu100确定存储单元103在rdu100移动的同时没有移位,并且所述过程前进到框453。在第二分支中,rdu100确定存储单元103已经移位(例如,竖直位移、水平位移或两者),并且所述过程前进到框459。

前进到框453,rdu100确定其路径中是否存在障碍物。rdu100可以例如处理先前在框446处捕获的图像以使用各种计算机视觉技术来识别障碍物。这些技术可以包括潜在物体的边缘检测、潜在物体的灰度级或梯度匹配,以及类似方法。如果没有检测到障碍物,则所述过程循环回到框443,并且再次重复框443至449的过程。然而,如果检测到障碍物,则所述过程前进到框456。

接下来参考框456,rdu100从路径生成应用程序323请求或以其他方式获得新路径。可以使用网络接口通过网络306发送请求。对新路径的请求可以包括rdu100的当前位置、阻挡当前路径的障碍物的本质、阻挡当前路径的障碍物的位置,以及可能的其他信息。作为响应,rdu100从路径生成应用程序323接收遵循其目的地的新路径。rdu100更新其内部路线选择以遵循新路径。所述过程循环回到框443,并且当rdu100遵循其新路径时再次重复框443至449的过程。

然而,如果在框449处,所述过程转而前进到框459,则rdu100确定rdu100继续与存储单元103一起移动是否安全。该确定可以至少部分地基于各种因素。例如,rdu100可以至少部分地基于竖直位移或水平位移是否超过与存储单元103倾斜和掉落的不可接受的可能性相关的预定义阈值允许位移量来确定存储单元103倾斜和从rdu100上掉落的可能性。竖直或水平位移的下限阈值也可以用于考虑存储单元103的移动,所述移动虽然不太可能导致存储单元103掉落,但是有可能改变存储单元103内的物品的布置,这可能导致损坏存储单元103中的物品或者导致物品103的位置在存储单元中移位(例如,从存储单元103中掉出,在存储单元103的货架上移动位置等)。类似地,rdu100可以基于一系列图像来确定当rdu100移动时在存储单元103中引起的摇摆的量或程度。如果摇摆的量或程度超过预定义阈值水平,则rdu100可以确定存储单元103的摇摆有可能导致不允许存储在存储单元103中的物品的位置移位。

此时所述过程可以再次分支。如果rdu100确定与存储单元103一起移动仍然是安全的,则所述过程循环回到框443并重复其自身。然而,如果rdu100确定移动不再安全,则所述过程前进到框463。

前进到框463,rdu100停止移动以便防止进一步损坏存储单元103中的物品或者防止存储单元103更加摇摆或倾斜。为了停止移动,rdu100可以逐渐减速以便避免突然停止而导致存储单元103由于惯性而移位、倾斜或翻倒。

接下来参考框466,rdu100向rdu调度应用程序321发送警报。所述警报可以包括诸如rdu100的当前位置、rdu100停止的原因、存储单元103的状态(例如,仍然位于rdu100的顶部、从rdu100上掉落,或其他状态)的信息以及潜在的其他信息。该信息将会允许rdu调度应用程序321向rdu100发送帮助(例如,技术人员)。所述过程随后结束。

接下来参考图5a至图5c,示出了根据各种实施例的提供驱动代理322的一部分的操作的一个示例的流程图。应当理解,图5a至图5c的流程图仅提供了可以用于实施如本文所述的驱动代理322的部分的操作的许多不同类型的功能布置的示例。作为替代方案,图5a至图5c的流程图可以被视为描绘根据一个或多个实施例的在驱动代理322中实施的方法的要素的示例。

从框503开始,驱动代理322命令rdu100接近存储单元103。例如,驱动代理322可以命令rdu100沿预定或预定义路径(例如,沿存储单元行之间的定义通道)接近存储单元103。

接下来参考框506,驱动代理322向rdu100发送一个或多个命令或指令以在存储单元103下方移动。在一些情况下,当rdu100将其自身定位在存储单元103下方时,驱动代理322可以向rdu100发送一个或多个命令或指令以使用前视图像捕获装置106来捕获一个或多个图像。然后,rdu100可以向驱动代理322发送图像以执行图像分析以识别存储单元103的支腿以便向rdu100发送进一步的移动指令,以在rdu100在存储单元103下方移动时使rdu100避免撞击到存储单元103的支腿。驱动代理322还可以执行图像分析以识别其他障碍物,诸如地板上的物品、箱子或盒子,这要求rdu100在rdu100在存储单元103下方移动时改变其接近。

移动到框509,驱动代理322可以向rdu100发送一个或多个命令或指令以使用下视图像捕获装置107来捕获地面基准点313的图像,将捕获的图像发送到驱动代理322。在一些情况下,驱动代理322可以执行图像分析以识别捕获图像中的地面基准点313。如果在捕获图像中未识别出地面基准点313,则驱动代理322可以命令rdu100尝试捕获地面基准点313的另一个图像,或者在捕获另一个图像之前稍微将其自身重新定位在存储单元103下方,以防地面基准点313最初在下视图像捕获装置109的视野外。

前进到框513,驱动代理322可以指导或命令rdu100将其自身置于相对于地面基准点313的预定位置处。例如,在驱动代理322识别捕获图像中的地面基准点313之后,驱动代理322可以命令rdu100将其自身在地面基准点313的顶部上居中。为了准确地定位rdu100,当rdu100移动时,驱动代理322可以命令rdu100使用下视图像捕获装置109重复捕获一系列图像,并将这些图像发送到驱动代理322。这允许驱动代理322通过确定它是朝向还是远离地面基准点313移动以及是否需要任何校正来引导rdu100。

接下来参考框516,驱动代理322可以命令rdu100在使用前视图像捕获装置106捕获全景图像(例如,单个图像、一系列重叠图像、一系列相邻图像、视频或其他视觉表示)的同时自身旋转。在一些情况下,驱动代理322可以在捕获rdu100周围区域的全景图像的同时命令rdu100旋转多达360度(即,一整圈)。然而,在其他情况下,如果不需要完整的360度旋转,则驱动代理322可以命令rdu100旋转较短圆弧。

在一些情况下,驱动代理322可以进一步命令rdu100结合前视图像捕获装置106使用后视图像捕获装置107。在这些情况下,可以使用较短的旋转圆弧捕获较大的全景图像。例如,当后视图像捕获装置107与前视图像捕获装置106结合使用时,rdu100可以在仅旋转180度的同时通过组合利用后视图像捕获装置107获得的全景图像与从前视图像捕获装置106获得的全景图像来捕获360度全景图像。

移动到框519,驱动代理322可以至少部分地基于从rdu100接收的图像来识别下方当前定位有rdu100的存储单元103的一个或多个支腿。例如,驱动代理322可以使用各种计算机视觉技术来识别先前在框516中捕获的全景图像中的存储单元103的一个或多个支腿。然后,如进一步描述的,驱动代理322可以存储所述存储单元103的支腿相对于rdu100的位置以及相对于存储单元103的位置以便在运输存储单元103时防止事故。

在一些实施例中,驱动代理322还可以在框519处识别固定到存储单元103的一个或多个存储单元基准点316。然后,驱动代理322可以提取在一个或多个存储单元基准点316中编码的信息,并将其发送到rdu调度应用程序321以确认rdu100在正确的存储单元103下方。如果rdu100在正确的存储单元103下方,则所述过程将继续前进到框523。如果rdu100不在正确的存储单元103下方,则驱动代理322可以向rdu100发送命令或指令以移动到正确的存储单元103(例如,基于由rdu调度应用程序321提供的新位置)并重新开始所述过程。

前进到框523,驱动代理322计算从存储单元103的每个支腿到rdu100当前在其上方居中的地面基准点313的距离。这可以通过几种方式来实现。这些方法中的任何一种或多种方法可以在本公开的各种实施例中使用。

例如,如果前视图像捕获装置106是三维摄像头,则距离信息可能已经嵌入在框516中捕获的全景图像中了。在这些情况下,可以从全景图像中提取从前视图像捕获装置106到支腿的距离的值。调整从前视图像捕获装置到存储单元103的支腿的距离的值以补偿rdu100的尺寸。

在前视图像捕获装置106包括二维摄像头的示例中,可以使用其他方法。例如,安装到rdu100的测距仪可以用于测量存储单元103的支腿与rdu100之间的距离。可以调整从前视图像捕获装置106到存储单元103的支腿的距离的值以补偿rdu100的尺寸。

接下来参考图4b的框526,驱动代理322计算存储单元103的中心的位置。这可以通过确定存储单元103的支腿的相对位置并计算存储单元103的中心相对于存储单元103的支腿的位置应位于何处来完成。例如,驱动代理322可以使用三角测量或类似方法来识别存储单元103的中心相对于存储单元103的两个或更多个支腿的位置的位置。

移动到框529,驱动代理322确定rdu100当前是否在存储单元103下方居中,或者rdu100是否定位成相对于存储单元103的中心位于偏离中心。这可以将地面基准点313的位置与先前在框526处计算的存储单元103的中心进行比较来确定。如果地面基准点313的位置不能与存储单元103的中心的位置匹配,则驱动代理322可以确定rdu100相对于存储单元103的位置偏离中心,因为rdu100当前在地面基准点313上方居中。在这种情况下,所述过程前进到框533。然而,如果地面基准点313的位置与存储单元103的中心的位置匹配,则所述过程跳到框536。

前进到框533,驱动代理322指导或命令rdu100在存储单元103下方移动以相对于存储单元103的中心重新定位其自身。在一些情况下,驱动代理322在移动之后可以通过重复框516至529中的一者或多者来确认rdu100位于存储单元103的中心。如果rdu100保持偏离中心,则驱动代理322可以命令rdu100再次朝向存储单元103的中心的位置移动。驱动代理322可以重复所述过程直到rdu100在存储单元103下方居中。

接下来参考框536,驱动代理322命令rdu100升起存储单元103。作为响应,rdu100可以使用集成升降机或类似机构来将存储单元103抬离地面。

移动到框539,驱动代理322然后指导或命令rdu100通过前视图像捕获装置106来捕获另一个图像。然后,rdu100捕获图像并作为响应而将所述图像提供给驱动代理322。捕获的图像可以在所述过程中稍后使用以确保在rdu100移动时安全地搬运存储单元103。

前进到图4c的框543,驱动代理322命令rdu100携带存储单元103沿路径移动。在一些情况下,驱动代理322向rdu100供应路径。当rdu100最初被调度到存储单元103时,可能先前已经从rdu调度应用程序321接收到所述路径。在其他情况下,驱动代理322可以在该阶段从路径生成应用程序323请求路径并将路径供应给rdu100。在这些情况下,来自rdu100的请求可以包括rdu100的当前位置和先前从rdu调度应用程序321接收的rdu100的目的地。

接下来参考框546,驱动代理322命令rdu100使用前视图像捕获装置106来捕获第二图像。作为响应,rdu100捕获第二图像并将其提供给驱动代理322。

移动到框549,驱动代理322将在框539处捕获的图像与在框546处捕获的图像进行比较以确定存储单元103在运输期间是否已在rdu100上移位。然而,如果rdu100已经在框546的先前迭代中捕获了图像,则驱动代理322可以将当前图像与在先前迭代中捕获的图像进行比较。在任一情况下,可以使用多种方法来确定存储单元103的移位。取决于本公开的特定实施例,这些方法可以单独使用或组合使用。

在第一种方法中,驱动代理322可以将通过前视图像捕获装置106获得的两个图像进行比较以识别存储单元103的位置在rdu100顶部上的横向移位。例如,当存储单元103搁置在rdu100的顶部上时,驱动代理322可以在第一图像中识别位于rdu100前方的存储单元103的一个或多个支腿。然后,驱动代理322可以将第一图像中的存储单元103的支腿的位置与第二图像中的存储单元103的支腿的相应位置进行比较。如果存储单元的支腿的位置向左或向右移位,则驱动代理322可以确定rdu100顶上的存储单元103已经相应地向左或向右或前后移位

在第二种方法中,驱动代理322可以将通过前视图像捕获装置106获得的两个图像进行比较以识别存储单元103的位置的竖直移位。例如,驱动代理322可以在第一图像中识别存储单元103的一个或多个支腿,并且类似地在第二图像中识别存储单元103的一个或多个支腿。在每个图像中,驱动代理322可以识别存储单元103的支腿的区别特性(例如,支腿的底部、支腿的侧面上的标记等)。如果一个图像中的存储单元103的支腿的区别特性处于不同于(例如,高于或低于)其他图像的竖直高度处,则驱动代理322可以确定存储单元103正在发生竖直位移。此类竖直位移可以包括摇摆、倾斜、推撞或其他竖直位移。

此时,所述过程可以沿两条路径分支。在第一分支中,驱动代理322确定存储单元103在rdu100移动的同时没有移位,并且所述过程前进到框553。在第二分支中,驱动代理322确定存储单元103已经移位(例如,竖直位移、水平位移或两者),并且所述过程前进到框559。

前进到框553,驱动代理322确定rdu100的路径中是否存在障碍物。驱动代理322可以例如处理先前在框546处捕获的图像以使用各种计算机视觉技术来识别障碍物。这些技术可以包括潜在物体的边缘检测、潜在物体的灰度级或梯度匹配,以及类似方法。如果没有检测到障碍物,则所述过程循环回到框543,并且再次重复框543至549的过程。然而,如果检测到障碍物,则所述过程前进到框556。

接下来参考框456,驱动代理322从路径生成应用程序323请求或以其他方式获得新路径。对新路径的请求可以包括rdu100的当前位置、阻挡当前路径的障碍物的本质、阻挡当前路径的障碍物的位置,以及可能的其他信息。作为响应,驱动代理322从路径生成应用程序323接收rdu100遵循其目的地的新路径。然后,驱动代理322开始向rdu100发出命令以遵循新路径。所述过程循环回到框543,并且当rdu100遵循新路径时再次重复框543至549的过程。

然而,如果在框549处,所述过程转而前进到框559,则驱动代理322确定rdu100继续与存储单元103一起移动是否安全。该确定可以至少部分地基于各种因素。例如,驱动代理322可以至少部分地基于竖直位移或水平位移是否超过与存储单元103倾斜和掉落的不可接受的可能性相关的预定义阈值允许位移量来确定存储单元103倾斜和从rdu100上掉落的可能性。竖直或水平位移的下限阈值也可以用于考虑存储单元103的移动,所述移动虽然不太可能导致存储单元103掉落,但是有可能改变存储单元103内的物品的布置,这可能导致损坏存储单元103中的物品或者导致物品103的位置在存储单元中移位(例如,从存储单元103中掉出,在存储单元103的货架上移动位置等)。类似地,驱动代理322可以基于一系列图像来确定当rdu100移动时在存储单元103中引起的摇摆的量或程度。如果摇摆的量或程度超过预定义阈值水平,则驱动代理322可以确定存储单元103的摇摆有可能导致不允许存储在存储单元103中的物品的位置移位。

此时所述过程可以再次分支。如果驱动代理322确定rdu100与存储单元103一起移动仍然是安全的,则所述过程循环回到框543并重复其自身。然而,如果驱动代理322确定rdu100移动不再安全,则所述过程前进到框563。

前进到框563,驱动代理322命令rdu100停止移动以便防止进一步损坏存储单元103中的物品或者防止存储单元103更加摇摆或倾斜。为了停止移动,驱动代理322可以命令rdu100逐渐减速以便避免突然停止而导致存储单元103由于惯性而移位、倾斜或翻倒。

接下来参考框566,驱动代理322向rdu调度应用程序321发送警报。所述警报可以包括诸如rdu100的当前位置、rdu100停止的原因、存储单元103的状态(例如,仍然位于rdu100的顶部、从rdu100上掉落,或其他状态)的信息以及潜在的其他信息。该信息将会允许rdu调度应用程序321向rdu100发送帮助(例如,技术人员)。所述过程随后结束。

参考图6,示出了根据本公开的实施例的计算环境303的示意框图。计算环境303包括一个或多个计算装置600。每个计算装置600包括至少一个处理器电路,例如具有处理器603和存储器606,这两者都耦合到本地接口609。为此目的,每个计算装置600可以包括例如至少一个服务器计算机或类似装置。可以明白,本地接口609可以包括例如具有伴随地址的数据总线/控制总线或其他总线结构。

数据和可由处理器603执行的若干部件两者存储在存储器606中。具体地,rdu调度应用程序321、路径生成应用程序323以及可能的其他应用程序存储在存储器606中并且可由处理器603执行。数据存储区309和其他数据也可以存储在存储器606中。另外地,操作系统可以存储在存储器606中并且可由处理器603执行。

应当理解,可以明白的是,可以存在存储在存储器606中并且可由处理器执行的其他应用程序603。在本文讨论的任何部件以软件形式实施的情况下,可以采用多种编程语言中的任何一种,诸如例如c、c++、c#、objectivec、perl、php、visualruby、或其他编程语言。

许多软件部件存储在存储器606中并且可由处理器603执行。在这方面,术语“可执行”表示处理器603最终可运行的形式的程序文件。可执行程序的示例可以是例如可以按加载到存储器606的随机存取部分中并且由处理器603运行的格式转换成机器代码的编译程序;可以按诸如能够加载到存储器606的随机存取部分中并且由处理器603执行的目标代码的正确格式来表达的源代码;或者可以由另一个可执行程序解释以在存储器606的随机存取部分中生成指令以由处理器603执行的源代码;等等。可执行程序可以存储在存储器606的任何部分或部件中,包括例如随机存取存储器(ram)、只读存储器(rom)、硬盘驱动器、固态驱动器、usb随身碟、记忆卡、诸如致密光盘(cd)或数字多功能光盘(dvd)等光盘、软盘、磁带或其他存储器部件。

存储器606在本文中被定义为包括易失性和非易失性存储器两者以及数据存储部件。易失性部件是在断电时不保留数据值的那些部件。非易失性部件是在断电时保留数据的那些部件。因此,存储器606可以包括例如随机存取存储器(ram)、只读存储器(rom)、硬盘驱动器、固态驱动器、usb随身碟、经由记忆卡读取器访问的记忆卡、经由相关软盘驱动器访问的软盘、经由光盘驱动器访问的光盘、经由适当的磁带驱动器访问的磁带,或其他存储器部件,或这些存储器部件的任何两者或更多者的组合。另外地,ram可以包括例如静态随机存取存储器(sram)、动态随机存取存储器(dram)或磁性随机存取存储器(mram)以及其他此类装置。rom可以包括例如可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或其他类似的存储器装置。

而且,处理器603可以表示多个处理器603或多个处理器核心,并且存储器606可以表示分别在并行处理电路中操作的多个存储器606。在此类情况下,本地接口609可以是促进多个处理器603中的任何两者之间、任何处理器603与存储器606中的任一者之间、或任何两个存储器606之间等的通信的适当网络。本地接口609可以包括被设计为协调该通信(包括例如执行负载平衡)的附加系统。处理器603可以是电气的或某种其他可用结构。

虽然rdu调度应用程序321、驱动代理322、路径生成应用程序323以及本文描述的其他各种系统可以在由如上面讨论的通用硬件执行的软件或代码中体现,但是作为替代方案,这也可以在专用硬件中或在软件/通用硬件和专用硬件的组合中体现。如果体现在专用硬件中,则它们各自可以被实施为采用许多技术中的任一种或其组合的电路或状态机。这些技术可以包括但不限于具有用于在施加一个或多个数据信号时实施各种逻辑功能的逻辑门的分立逻辑电路、具有适当逻辑门的专用集成电路(asic)、现场可编程门阵列(fpga)或其他部件等。此类技术通常为所属领域技术人员所熟知,因此在此不再详述。

图4a至图4c的流程图示出了rdu100的部分的实施方式的功能性和操作。如果体现在软件中,则每个框都可以表示包括用于实施一个或多个指定逻辑功能的程序指令的代码的模块、代码段或部分。所述程序指令可以体现为以下形式:源代码,所述源代码包括以编程语言编写的人类可读语句;或机器代码,所述机器代码包括可由合适的执行系统(诸如包括在rdu100中的处理器)识别的数字指令。所述机器代码可以从源代码转换而来等。如果体现在硬件中,则每个框都可以表示用于实施一个或多个指定逻辑功能的电路或许多互连电路。

虽然图4a至图4c的流程图示出了特定执行顺序,但是应当理解,执行顺序可以不同于所描绘的顺序。例如,两个或更多个框的执行顺序可以相对于所示的顺序被扰乱。而且,在图4a至图4c中连续示出的两个或更多个框可以同时执行或部分同时执行。此外,在一些实施例中,可以跳过或省略图4a至图4c中所示的一个或多个框。另外地,为了增强实用性、计费、性能测量或提供故障排除帮助等,可以向本文所述的逻辑流添加任何数量的计数器、状态变量、警告信号或消息。应当理解,所有此类变化都在本公开的范围内。

图5a至图5c的流程图示出了驱动代理322的部分的实施方式的功能性和操作。如果体现在软件中,则每个框都可以表示包括用于实施一个或多个指定逻辑功能的程序指令的代码的模块、代码段或部分。所述程序指令可以体现为以下形式:源代码,所述源代码包括以编程语言编写的人类可读语句;或机器代码,所述机器代码包括可由合适的执行系统(诸如计算机系统或其他系统中的处理器603)识别的数字指令。所述机器代码可以从源代码转换而来等。如果体现在硬件中,则每个框都可以表示用于实施一个或多个指定逻辑功能的电路或许多互连电路。

虽然图5a至图5c的流程图示出了特定执行顺序,但是应当理解,执行顺序可以不同于所描绘的顺序。例如,两个或更多个框的执行顺序可以相对于所示的顺序被扰乱。而且,在图5a至图5c中连续示出的两个或更多个框可以同时执行或部分同时执行。此外,在一些实施例中,可以跳过或省略图5a至图5c中所示的一个或多个框。另外地,为了增强实用性、计费、性能测量或提供故障排除帮助等,可以向本文所述的逻辑流添加任何数量的计数器、状态变量、警告信号或消息。应当理解,所有此类变化都在本公开的范围内。

而且,本文描述的包括软件或代码的任何逻辑或应用程序(包括rdu调度应用程序321、驱动代理322和路径生成应用程序323)可以体现在任何非暂时性计算机可读介质中以供指令执行系统(诸如例如计算机系统或其他系统中的处理器603)使用或与所述指令执行系统结合使用。在这个意义上,所述逻辑可以包括例如包括指令和声明的语句,所述指令和声明可以从计算机可读介质取得并且由指令执行系统执行。在本公开的上下文中,“计算机可读介质”可以是可以包含、存储或维护本文描述的供指令执行系统使用或与指令执行系统结合使用的逻辑或应用程序的任何介质。

计算机可读介质可以包括许多物理介质中的任何一种,诸如例如磁性介质、光学介质或者半导体介质。合适的计算机可读介质的更具体示例包括但不限于磁带、磁性软盘、磁性硬盘驱动器、记忆卡、固态驱动器、usb随身碟或光盘。而且,计算机可读介质可以是随机存取存储器(ram),其包括例如静态随机存取存储器(sram)和动态随机存取存储器(dram)或磁性随机存取存储器(mram)。另外地,计算机可读介质可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))或其他类型的存储器装置。

此外,本文描述的任何逻辑或应用程序(包括rdu调度应用程序321、驱动代理322和路径生成应用程序323)可以通过各种方式实施和构造。例如,所描述的一个或多个应用程序可以被实施为单个应用程序的模块或部件。此外,本文描述的一个或多个应用程序可以在共享或单独的计算装置或其组合中执行。例如,本文描述的多个应用程序可以在同一计算装置600中执行,或者在同一计算环境303中的多个计算装置中执行。

除非另外具体说明,否则诸如短语“x、y或z中的至少一者”的析取语言在上下文中通常应理解为用于呈现物品、项等可以是x、y或z或其任意组合(例如,x、y和/或z)。因此,此类析取语言通常并不意图并且不应暗示某些实施例要求至少一个x、至少一个y或至少一个z各自都存在。

本公开的实施例可以根据以下条款来描述。

条款1.一种系统,其包括:下视摄像头;前视摄像头;处理器;以及存储机器可读指令的存储器,所述机器可读指令在由所述处理器执行时使所述系统至少:在存储单元下方移动;使用所述下视摄像头来捕获位于地面上的基准点的图像;使所述系统在所述基准点上居中;将所述系统围绕所述基准点旋转就位;当所述系统旋转时通过所述前视摄像头来捕获全景图像;识别所述全景图像中的所述存储单元的多个支腿;至少部分地基于所述全景图像中的所述多个支腿来对所述存储单元的所述中心相对于所述基准点的位置进行三角测量;确定所述系统相对于所述存储单元居中;升起所述存储单元;响应于使所述系统升起所述存储单元而使用所述前视摄像头来捕获所述存储单元的至少两个所述多个支腿的第一图像;将所述存储单元移动到新位置;当所述系统处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的所述至少两者的第二图像;测量所述存储单元的所述多个支腿中的所述至少两者在所述第二图像中相对于所述第一图像的位置变化;以及至少部分地基于所述位置变化来确定所述存储单元改变了在所述系统的顶部上的位置或定向。

条款2.如条款1所述的系统,其中所述前视摄像头包括被配置为捕获点云的三维摄像头,并且所述全景图像包括点云。

条款3.如条款1或2所述的系统,其中所述下视摄像头位于所述系统的底表面上。

条款4.一种机器人驱动单元,其包括:前视摄像头;下视摄像头;处理器;存储器;以及包括存储在所述存储器中的机器可读指令的应用程序,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元:在存储单元下方移动;使用所述下视摄像头来捕获位于地面上的基准点的图像;将所述机器人驱动单元相对于所述基准点定位;将所述机器人驱动单元旋转就位;通过所述前视摄像头来捕获全景图像;识别所述全景图像中的所述存储单元的多个支腿;测量从所述存储单元的所述多个支腿中的每一者到所述基准点的距离;计算在所述存储单元下方相对于所述基准点的位置;确定所述机器人驱动单元相对于所述存储单元下方的所述计算位置不在适当位置;行进到所述存储单元下方的所述计算位置;以及升起所述存储单元。

条款5.如前述条款中任一项所述的机器人驱动单元,其还包括网络接口,并且其中:所述基准点包括第一基准点;并且所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元:在所述全景图像中识别所述存储单元的所述多个支腿中的一者上的第二基准点;从所述第二基准点中提取所述存储单元的标识符;以及经由所述网络接口向远程计算装置发送请求,其中所述请求包括所述存储单元的所述标识符。

条款6.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元:响应于使所述机器人驱动单元升起所述存储单元而使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的至少两者的第一图像;将所述存储单元移动到新位置;当所述机器人驱动单元处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的所述至少两者的第二图像;测量所述存储单元的所述多个支腿中的所述至少两者在所述第二图像中相对于所述第一图像的位置变化;以及至少部分地基于所述位置变化来确定所述存储单元改变了在所述机器人驱动单元的顶部上的位置或定向。

条款7.如前述条款中任一项所述的机器人驱动单元,其还包括网络接口,并且其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元:响应于使所述机器人驱动单元升起所述存储单元而使用所述前视摄像头来捕获第一图像;确定所述存储单元的所述多个支腿中的至少两者位于所述第一图像中;将所述存储单元移动到新位置;当所述机器人驱动单元处于运动中时使用所述前视摄像头来捕获第二图像;确定所述第二图像中缺少所述存储单元的所述多个支腿中的所述至少两者;以及经由所述网络接口向远程计算系统发送警报,其中所述警报指示所述存储单元已从所述机器人驱动单元上掉落。

条款8.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元:当所述机器人驱动单元处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的至少两者的第一图像;当所述机器人驱动单元处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的所述至少两者的第二图像;以及测量所述存储单元的所述多个支腿中的所述至少两者在所述第二图像中相对于所述第一图像的竖直位置变化。

条款9.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元至少部分地基于所述存储单元的所述多个支腿中的所述至少两者的所述竖直位置变化来计算所述存储单元将会翻倒的可能性。

条款10.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元计算当所述机器人驱动单元处于运动中时所述存储单元的摇摆量。

条款11.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元计算当机器人驱动单元处于运动中时所述存储单元的竖直位移量。

条款12.如前述条款中任一项所述的机器人驱动单元,其中所述下视摄像头位于所述机器人驱动单元的所述底表面上。

条款13.如前述条款中任一项所述的机器人驱动单元,其中所述前视摄像头包括被配置为捕获点云的三维摄像头。

条款14.如前述条款中任一项所述的机器人驱动单元,其中所述全景图像包括所述点云。

条款15.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元:移动所述存储单元;使用所述前视摄像头来捕获图像;以及识别所述图像中阻挡所述机器人驱动单元的当前路径的障碍物。

条款16.如前述条款中任一项所述的机器人驱动单元,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述机器人驱动单元响应于识别出所述图像中的所述障碍物而从远程计算装置请求所述机器人驱动单元的新路径。

条款17.一种系统,其包括:计算装置,所述计算装置包括处理器和存储器;机器人驱动单元(rdu),所述rdu经由网络与所述计算装置进行数据通信并且包括前视摄像头和下视摄像头;以及包括存储在所述存储器中的机器可读指令的应用程序,所述机器可读指令在由所述处理器执行时使计算装置至少:命令所述rdu在存储单元下方移动;命令所述rdu使用所述下视摄像头来捕获位于地面上的基准点的图像;命令所述rdu将其自身相对于所述基准点定位;命令所述rdu旋转就位;命令所述rdu通过所述前视摄像头来捕获全景图像;从所述rdu接收所述全景图像识别所述全景图像中的所述存储单元的多个支腿;测量从所述存储单元的所述多个支腿中的每一者到所述基准点的距离;计算在所述存储单元下方相对于所述基准点的位置;确定所述rdu相对于所述存储单元下方的所述计算位置不在适当位置;命令所述rdu行进到所述存储单元下方的所述计算位置;以及命令所述rdu升起所述存储单元。

条款18.如前述条款中任一项所述的系统,其中所述基准点包括第一基准点,并且所述应用程序包括第一应用程序,所述第一应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述计算装置至少:在所述全景图像中识别所述存储单元的所述多个支腿中的一者上的第二基准点;从所述第二基准点中提取所述存储单元的标识符;以及向第二应用程序发送请求,其中所述请求包括所述存储单元的所述标识符。

条款19.如前述条款中任一项所述的系统,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述计算装置至少:命令所述rdu响应于所述rdu升起所述存储单元而使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的至少两者的第一图像;命令所述rdu将所述存储单元移动到新位置;命令所述rdu在所述rdu处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的所述至少两者的第二图像;从所述rdu接收所述第一图像和所述第二图像;测量所述存储单元的所述多个支腿中的所述至少两者在所述第二图像中相对于所述第一图像的位置变化;以及至少部分地基于所述位置变化来确定所述存储单元改变了在所述rdu的顶部上的位置或定向。

条款20.如前述条款中任一项所述的系统,其中所述应用程序还包括存储在所述存储器中的机器可读指令,所述机器可读指令在由所述处理器执行时使所述计算装置至少:命令所述rdu在所述rdu处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的至少两者的第一图像;命令所述rdu在所述rdu处于运动中时使用所述前视摄像头来捕获所述存储单元的所述多个支腿中的所述至少两者的第二图像;以及测量所述存储单元的所述多个支腿中的所述至少两者在所述第二图像中相对于所述第一图像的竖直位置变化。

应强调,本公开的上述实施例仅仅是为了清楚地理解本公开的原理而阐述的实施方式的可能实例。在实质上未脱离本公开的精神和原理的情况下,可以对上述一个或多个实施例进行许多变化和修改。所有此类修改和变化都意图包括在本公开的范围内并且由以下权利要求保护。

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