确定包裹放置位置的系统和方法
文献发布时间:2023-06-19 09:29:07
背景技术
对象(诸如包裹)的运输和存储通常要求包裹由装载操作员(也称为装载员)手动地装载到集装箱(例如,拖车、运输集装箱等)中。当用包裹装载集装箱时,装载员通常寻求使集装箱内空间的利用最大化,以减少处理包裹所需的集装箱的数量(以及与每一个集装箱相关联的成本)。通常由装载员在装载过程期间评估空间的利用,因此,基于装载员的经验,空间的利用可能有很大差异。向装载员提供自动化协助以评估空间的利用和选择包裹放置位置的尝试可能会受到包裹和集装箱的可变大小和形状的阻碍,并且难以获得集装箱的当前状态的精确机器可用表示。
附图说明
附图(其中类同的附图标记在全部单独的视图中表示相同的或功能类似的要素)连同下面的详细描述被并入于此并形成说明书的一部分,并用来进一步阐述包括所要求保护的发明的构思的实施例,以及解释那些实施例的各种原理和优势。
图1是包裹放置系统的示意图。
图2是图1的系统中的计算设备的某些内部部件的框图。
图3是确定用于包裹的放置位置的方法的流程图。
图4描绘了用于执行图3的方法的框310的方法的实施例。
图5描绘了在图4的方法中所采用的噪声过滤。
图6描绘了用于执行图3的方法的框315和320的方法的实施例。
图7描绘了图6的方法的执行结果。
图8描绘了用于执行图3的方法的框335的方法的实施例。
图9描绘了图8的方法的执行结果。
本领域技术人员将理解附图中的要素出于简化和清楚而示出,并且不一定按比例绘制。例如,附图中的要素中的一些要素的尺寸可以相对于其他要素被放大以帮助提升对本发明的实施例的理解。
已在附图中通过常规符号在合适位置对装置和方法构成进行了表示,所述表示仅示出与理解本发明的实施例有关的那些特定细节,以免因得益于本文的描述对本领域技术人员显而易见的细节而混淆本公开。
具体实施方式
本文所公开的示例针对一种在成像控制器中确定包裹的放置位置的方法。该方法包括:获取表示包裹空间的深度数据;检测表示被遮挡物阻挡的该包裹空间的面积的该深度数据的被遮挡部分;检取表示在该遮挡物不存在的情况下的该包裹空间的该面积的所存储的无阻挡深度数据;用该无阻挡深度数据替换该被遮挡部分以成修补深度数据;基于该修补深度数据来获取该包裹空间内用于放置包裹的位置;以及呈现该位置的指示。
本文所公开的附加示例针对一种用于确定包裹的放置位置的计算设备,该计算设备包括:通信接口,该通信接口耦合到数据捕获设备;存储器;以及成像控制器,该成像控制器连接到该存储器和该通信接口,该成像控制器被配置为:获取表示包裹空间的深度数据;检测表示被遮挡物阻挡的该包裹空间的面积的该深度数据的被遮挡部分;检取表示在该遮挡物不存在的情况下的该包裹空间的该面积的所存储的无阻挡深度数据;用该无阻挡深度数据替换该被遮挡部分以生成修补深度数据;基于该修补深度数据来获取该包裹空间内用于放置包裹的位置;以及呈现该位置的指示。
图1描绘了根据本公开的教导的包裹放置系统100。该系统100包括经由通信链路107与成像设备103和反馈设备106通信的计算设备101。在所示的示例中,该系统100被部署在包裹空间110中用于装载包裹。该包裹空间110包括集装箱,该集装箱具有侧壁、天花板、地板、后壁和装载端。该包裹空间110包括包裹壁112,该包裹壁112包括已装载的包裹114-1、114-2等(统称为已装载的包裹114,一般是指已装载包裹114)、集装箱的后壁、或已装载包裹114和后壁的组合,如成像设备103可见的。该包裹空间110可以进一步包括多个暂存或排队的包裹116-1、116-2等(统称为包裹116,一般是指包裹116)。装载员108在包裹空间110中,阻挡包裹壁112的一部分。因此,成像设备103被定位在装载端以捕获表示包裹空间110的图像数据和深度数据。例如,成像设备103可以被定位在集装箱中,或在面向包裹壁112的集装箱的后门处。
更具体地,成像设备103被部署以捕获包裹空间110的图像数据和深度数据,并且与计算设备101通信以供后处理。设备103包括图像传感器104(例如,一个或多个数码照相机)和深度传感器105(例如,一个或多个光检测和测距(LIDAR)传感器或一个或多个深度照相机,包括那些采用结构光模式的深度照相机,诸如红外光和/或立体图像传感器)。替代地或另外,可以基于成像设备103的光学器件的焦距来确定深度。在本示例中,设备103,特别是深度传感器105被配置为捕获深度数据(也称为帧或深度数据集),该深度数据包括对应于包裹114或包裹116或其他对象(诸如将包裹放置在包裹空间110中的装载员108)的多个深度测量。每一个测量限定从深度传感器105到包裹空间110的图像数据(本文也称为帧或图像数据集)。设备103可以是具有集成的深度传感器105和图像传感器104的深度照相机。在其他实施例中,图像传感器104和深度传感器105可以被实现为独立的传感器而不是集成的设备103。
计算设备101可以是台式计算机、膝上型计算机、服务器、自助服务终端或其他合适的设备。在其他示例中,计算设备101包括移动计算设备,诸如平板电脑、智能电话等。计算设备101包括专用成像控制器,诸如处理器120,该专用成像控制器被专门设计为控制成像设备103以捕获数据(例如,上文提及的深度数据和/或图像数据)、经由通信接口124获取所捕获的数据并将该所捕获的数据存储在存储器122中的储存库132中。计算设备101进一步被配置成对所捕获的数据执行各种后处理操作,以检测所捕获的数据中的某些结构特征(诸如装载员108)。下面将更详细地讨论由计算设备101对所捕获的数据的后处理。
处理器120与非瞬态计算机可读存储介质(诸如上文提及的存储器122)互连,该非瞬态计算机可读存储介质上存储有用于执行设备101的控制以捕获数据的计算机可读指令,以及上文提及的后处理功能,如下面进一步详细讨论的。存储器122包括易失性存储器(例如,随机存取存储器或RAM)和非易失性存储器(例如,只读存储器或ROM、电可擦除可编程只读存储器或EEPROM、闪存存储器)的组合。处理器120和存储器122各自包括一个或多个集成电路。在实施例中,处理器120包括一个或多个中央处理单元(CPU)和/或图形处理单元(GPU)。在实施例中,替代地或者除了成像控制器/处理器120和存储器122之外,专门设计的集成电路(诸如现场可编程门阵列(FPGA))被设计为执行本文所描述的功能。如本领域技术人员将认识到的,成像设备103还包括与控制器120通信的一个或多个控制器或处理器和/或FPGA,其具体被配置为控制设备103的数据捕获方面。反馈设备106还包括与控制器120通信的一个或多个控制器或处理器和/或FPGA,其具体被配置为呈现(例如,显示)从计算设备101接收的位置指示。反馈设备106可以是移动计算设备(诸如平板电脑,智能电话),或者可以是计算设备101外围的显示器(诸如监视器)。
计算设备101还包括上文提及的与处理器120互连的通信接口124。通信接口124包括合适的硬件(例如,发射器、接收器、网络接口控制器等),从而允许计算设备101经由链路107与其他计算设备(特别是设备103和反馈设备106)进行通信。链路107可以是直接链路,或者是穿越一个或多个网络(包括局域网和广域网)的链路。基于需要计算设备101进行通信的网络或其他链路的类型来选择通信接口124的特定部件。
存储器122存储了多个应用,每一个应用包括可由处理器120执行的多个计算机可读指令。处理器120执行上文提及的指令将计算设备101配置为执行本文所描述的各种动作。存储在存储器122中的应用包括控制应用128,该控制应用128也可以被实现为一系列逻辑上不同的应用。通常,经由执行控制应用128或其子部件,处理器120被配置为实现各种功能。如经由执行控制应用128配置的处理器120在本文也称为控制器120。如现在将显而易见的是,以下描述的由控制器120实现的功能中的一些或全部也可以由预先配置的硬件元件(例如,一个或多个专用集成电路(ASIC))来执行,而不是通过由处理器120执行控制应用128来执行。
在本示例中,具体地,经由处理器120执行控制应用128来配置计算设备101,以处理由设备103捕获的图像和深度数据,以检测和替换包裹空间110中的遮挡(诸如装载员108),以及确定放置包裹116的位置。
存储器122将图像数据和深度数据存储在储存库132中。对于由图像传感器104和/或深度传感器105捕获的每一个帧(即,形成点云的深度测量集和表示包裹空间110的图像像素集),成像设备103与计算设备101相接以将当前图像数据和当前深度数据存储在储存库132中。储存库132还存储用于修补被遮挡部分的无阻挡深度数据和无阻挡图像数据,如下面将进一步描述的。储存库132还存储已装载的包裹114和要装载的包裹116的包裹元数据。包裹元数据包括包裹尺寸、重量、目的地等。
根据(例如,由设备103)所采用的用于捕获深度数据的深度传感器,该深度数据可以采取多种形式。例如,设备103可以包括深度照相机,诸如包括结构化投光器(例如,该结构化投光器将红外光的图案投射到包裹空间上)的立体照相机。在此类示例中,设备103捕捉深度数据集。该深度数据集各自都包括深度测量数组(例如,以米或其他合适单位表示的深度值数组)。该数组还可以包含映射到深度值的强度值(例如,值的数组,其中每一个值的范围为0到255),而不是深度值本身。因此,该深度数据限定3D点云。类似地,根据(例如,由设备103)所采用的用于捕获图像数据的图像传感器,该图像数据可以采取多种形式。例如,图像传感器104可以捕捉图像数据集,每一个都包括像素数组,其中每个像素包含图像值(例如,RGB颜色值)。
在一些示例中,设备103可以被配置为分别使用图像传感器104和深度传感器105同时捕获图像数据和深度数据。设备103可以进一步被配置为在储存库132中存储图像数据和深度数据的关联。例如,储存库132可以存储来自图像数据像素数组的图像像素到来自深度数据数组的深度像素的映射。在一些示例中,该映射可以是像素数组之间的一对一映射,而在其他示例中,根据图像传感器104和深度传感器105相应的分辨率,该映射可以是一对多映射或多对一映射。更一般地,深度数据和图像数据彼此配准,使得给定深度测量通过其在深度测量数组中的位置对应于(即,表示包裹空间110的相同部分)图像数据中的已知图像像素或像素组。
现在转向图2,在描述应用128确定包裹放置位置的操作之前,将更详细地描述应用128的某些部件。对于本领域技术人员将显而易见的是,在其他示例中,应用128的部件可以被分离到不同的应用中,或者被组合到其他部件的集合中。图2中示出的部件中的一些或全部还可以被实现为专用硬件部件,诸如一个或多个ASIC或FPGA。例如,在一个实施例中,为了提高可靠性和处理速度,图2的部件中的至少一些被直接编程到成像控制器120中,该成像控制器120可以是具有专门设计为优化从成像设备103接收的大量传感器数据的图像处理的电路和存储器配置的FPGA或ASIC。在此类实施例中,下面讨论的控制应用128中的一些或全部是FPGA或ASIC芯片。
控制应用128包括预处理器200,该预处理器200被配置为获取表示包裹空间110的图像数据和深度数据,并对所捕获的数据执行过滤操作。控制应用128还包括被配置为检测和替换所捕获的数据的被遮挡部分的遮挡处理器204。控制应用128还包括包裹放置模块208,该包裹放置模块208被配置为裁剪包裹杂波,生成2D占据矩阵,并且基于该占据矩阵生成用于放置包裹的位置。包裹的放置位置针对负载质量和稳定性以及包裹空间110内的空间而优化。控制应用128还包括输出模块212,该输出模块212被配置为呈现包裹的放置位置的指示。
现在将更详细地描述控制应用128的功能。转到图3,示出了确定用于包裹的放置位置的方法300。将结合方法300在系统100上的执行并参考图2所示的部件来描述方法300。换句话说,在下面的讨论中,包裹是包裹116,并且要确定的放置位置是包裹空间110中的位置。在其他示例中,可以经由方法300的执行来确定用于在其他包裹空间中其他包裹的放置位置。
在框303处,控制器120,特别是预处理器200被配置为接收要装载的包裹116的条形码扫描。条形码扫描可以对应于包裹116的包裹标识符。例如,装载员108可以操作条形码扫描仪来扫描与包裹116相关联的条形码。在其他示例中,预处理器200可以接收包裹116的包裹标识符的不同指示。例如,包裹标识符可以被手动地输入、从列表中选择、经由相对应的读取设备从读取RFID(射频标识)或NFC(近场通信)标签接收包裹标识符,或者以其他方式被提供给预处理器200。在一些示例中,条形码扫描仪或其他包裹标识符提供者可以与反馈设备106集成(例如,智能电话的条形码扫描应用或包裹管理应用)。预处理器200被配置为在储存库132中查找标识符并且获取与包裹标识符相关联的并存储在该储存库132中的包裹元数据,诸如包裹重量、尺寸、目的地等。在其他示例中,包裹元数据可以远程存储(诸如在远程服务器上),并且计算设备101可以被配置为从远程服务器请求包裹元数据。
在框305处,控制器120,特别是预处理器200,被配置为获取分别由图像传感器104和深度传感器105捕获并对应于包裹空间110的图像数据和深度数据。换句话说,在本示例中,深度数据对应于包裹空间110,该包裹空间110包含已装载包裹114、要装载的暂存或排队的包裹116、集装箱以及装载员108或包裹空间110中的任何其他遮挡,其中已装载包裹114与包裹壁112相关联。例如,在框305处获取的深度数据由成像设备103捕获并存储在储存库132中。因此,在以上示例中,预处理器200被配置为通过从储存库132中检索数据来获取深度数据。在其他示例中,预处理器200被配置为控制设备103捕获图像数据和深度数据。
然后,控制应用128被配置为行进到框310。在框310处,预处理器200被配置为对深度数据执行一个或多个预处理操作。在本示例中,预处理操作包括校准深度数据、噪声过滤、以及丢弃具有高比例的缺失深度值的深度数据集。
参考图4,描绘了执行预处理操作的方法400。
在框405处,预处理器200确定缺失的深度数据的比例。缺失的深度数据可以包括数组中未获取深度值的深度测量(例如,由于阻挡物足够靠近传感器105从而阻止传感器105获取读数),或者数组中被丢弃的深度测量。例如,当装载员或其他遮挡靠近传感器105时,获取的深度值可以低于预定义的最小阈值距离,因此被推定为不精确并被丢弃。
在框410处,当该比例高于预定义阈值(例如,50%-60%)时,预处理器200被配置为丢弃该深度数据并返回到方法300的框305以获得新的深度数据。当该比例低于该预定义阈值时,预处理器200被配置为行进到框415。
在框415处,预处理器200被配置为校准深度数据并旋转点云,使得包裹壁112的平面垂直于成像设备103的视角。在本示例中,预处理器200使用随机样本共识(RANSAC)平面拟合的两次迭代。在第一次迭代中,将RANSAC平面拟合应用于在框305处获取的深度数据的全部集合,以获取表示定义集装箱的主平面(即,集装箱侧壁、地板和天花板)的大致位置的深度数据的子集。在第二次迭代中,将RANSAC平面拟合应用于该深度数据的子集,以获取更精确的平面拟合。然后,预处理器200确定一个或多个平面(例如,后壁的平面)的角度,并将该角度与预设角度(例如,与深度传感器105成90度)进行比较以确定旋转角度。然后,预处理器200以该旋转角度旋转点云。因此,在本示例中,后壁的平面被旋转以与照相机角度正交。
在框420处,预处理器200被配置为从深度数据中过滤噪声。具体地,对于点云中的给定点,预处理器200选择用于应用半径离群值过滤器的半径和点阈值数量。对于给定点,预处理器200确定在以给定点为中心并具有所选半径的球体内的点云中是否至少存在至少该阈值数量的点。当给定点在球体具有所选半径的点云中不具有至少该阈值数量的点时,将该给定点确定为噪声,并丢弃该深度值。在一些示例中,在框405之前执行框420处的噪声过滤,以在考虑到丢弃的噪声的情形下确定缺失的深度数据的比例。
在本示例中,预处理器200进一步被配置为基于所选点的深度值来改变半径离群值过滤器的参数,以计入与深度传感器105的距离。对于更靠近深度传感器105的点,半径更小,点阈值数量更高。对于更远离深度传感器105的点,半径更大,点阈值数量更低。
图5示出了通过预处理器200的可变半径离群值过滤器的应用。具体地,可变半径离群值过滤器应用于包裹空间510中的第一点512-1和第二点512-2。在图5的示例中,第一点512-1靠近包裹壁,而第二点512-2靠近包裹空间的装载端,因此点512-1比点512-2离深度传感器105更远。
图5进一步描绘了分别包含第一点512-1和第二点512-2的点云的区域514-1和区域514-2的放大图示。由于区域514-1比区域514-2离深度传感器105更远,因此区域514-1的点云填充更稀疏,并且具有比区域514-2的点云的深度像素密度更低的深度像素密度。即,区域514-1的点云中的每一个点表示比区域514-2的点云中的点更大的物理区域。因此,改变半径离群值过滤器516-1和516-2,以适应深度数据粒度上的差异并保持类似的噪声过滤质量。例如,点512-1的半径离群值滤波器516-1可以具有8cm的半径r
返回图3,控制应用128随后被配置为行进到框315。在框315处,控制器120,更具体地是遮挡处理器204,被配置为确定是否检测到预处理深度数据的被遮挡部分。被遮挡部分表示被遮挡物(具体地,装载员108)遮挡的包裹空间的面积。当检测到被遮挡部分时,控制应用128行进到框320。在框320处,遮挡处理器204被配置为用未被阻挡的数据替换被遮挡部分以生成修补数据。
现在转到图6,示出了检测和替换被遮挡部分的方法600。具体地,遮挡处理器204被配置为使用在框310处生成的预处理深度数据来执行方法600。方法600的执行导致图7所示的图像数据和深度数据结果的序列700。因此,将串联描述图6的方法600和图7的序列700。
在框605处,遮挡处理器204被配置为获得由图像传感器104捕获并且对应于包裹空间110的图像数据705。在本示例中,图像数据705表示包括包裹114、包裹116和装载员108的包裹空间。例如,在框605处获取的图像数据705由图像传感器104与由深度传感器105捕获的深度数据同时捕获并存储在储存库132中。因此,在以上示例中,遮挡处理器204被配置为通过从储存库132中检取数据来获取图像数据。
在框610处,遮挡处理器204被配置为裁剪在框605处获得的图像数据705以生成经裁剪的图像数据710。具体地,遮挡处理器204可以根据遮挡处理器204的遮挡检测器预期的宽高比来裁剪图像数据705。通过裁剪图像数据并计入遮挡检测器的宽高比,可以减少图像数据的形状失真和收缩。
在一些示例中,遮挡处理器204可以被配置为确定是否在先前帧中检测到先前遮挡。例如,遮挡处理器204可以引用存储在储存库132中的先前深度数据。当检测到先前遮挡时,遮挡处理器204将裁剪中心设置为先前遮挡的中心。遮挡处理器204基于先前遮挡的尺寸、预定义的最小填充量和遮挡检测器预期的宽高比来设置裁剪尺寸。例如,对于以3帧每秒(fps)捕获帧的系统,最小填充量可以是100像素。以3fps的帧速率,并且基于人类在该时间内可以移动的最大距离,该最小填充量允许遮挡处理器204安全地假设装载员108将保留在经裁剪的图像数据710中。在其他示例中,以不同帧速率操作的系统可以具有不同的最小填充量,该最小填充量被定义以允许装载员108将保留在经裁剪的图像数据710中的假设。在一些示例中,最小填充量也可以基于先前遮挡的深度值而变化。因此,遮挡处理器204通过方法300的连续执行经由捕获单独的帧(例如,移动到包裹空间110中的不同位置的装载员)来跟踪遮挡。遮挡跟踪允许遮挡处理器204根据遮挡检测器预期的宽高比提供经裁剪的图像数据710,同时将该遮挡保持在经裁剪的图像数据内。
在图7的示例中,经裁剪的图像数据710跟踪先前遮挡,因此以表示先前遮挡的中心的点711为中心。裁剪尺寸基于先前遮挡进行设置,并用至少最小填充量来填充。裁剪尺寸可以被进一步填充以满足遮挡检测器预期的宽高比。
在其他示例中,遮挡处理器204可以根据预定义的默认尺寸并基于所捕获的图像数据的中心来裁剪图像数据。例如,当系统初始化时,当没有检测到先前遮挡时(例如,因为装载员108移出成像设备103的视场之外),或者当以其他方式不使用遮挡跟踪时(例如,当图像/深度数据很少被捕获时),遮挡处理器204根据围绕所捕获的图像数据的中心的预定义默认尺寸并根据遮挡检测器预期的宽高比来裁剪图像数据。例如,对于分辨率为1920×1080的图像传感器,预定义默认尺寸可以是1000×1000像素。
在框615处,遮挡处理器204将经裁剪的图像数据710提供给遮挡检测器,以生成近似于遮挡位置的初步区域715。遮挡检测器接受具有预定义分辨率的图像数据。因此,基于预定义的分辨率裁剪在块610处生成的裁剪图像数据710。在一些示例中,可以将经裁剪的图像数据710裁剪以具有相同的宽高比,因此在框615处,遮挡处理器204可以在将经裁剪的图像数据710提供给遮挡检测器之前缩小经裁剪的图像数据710。在其他示例中,可以将经裁剪的图像数据710裁剪为遮挡检测器可接受的预定义分辨率。在图7的示例中,由初步区域715标识的遮挡是装载员702。
遮挡检测器可以包括GPU,该GPU采用机器学习算法在包裹空间110中生成表示遮挡的初步区域,具体地是装载员108。例如,遮挡检测器可以采用卷积神经网络,诸如YOLO(你只看一次)或被配置来标识人体图形的Darknet。在一些示例中,可以专门训练神经网络或其他合适的机器学习算法以在诸如包裹空间110的装载环境内标识装载员108。在一些示例中,初步区域715可以包括两个或多个部分,每一个部分表示由遮挡检测器标识的人体图形。
当在框615处没有检测到遮挡时,控制应用128被配置为行进到方法300的框325,如下面将进一步描述的。当检测到遮挡并且由遮挡处理器204生成初步区域715时,控制应用128行进到框620。
在框620处,遮挡处理器204检取对应于初步区域715内的图像数据的深度数据720的子集。例如,遮挡处理器204可以查找存储在储存库132中的图像数据到深度数据的映射,以检取深度数据720。
在框625处,遮挡处理器204从深度数据720的子集检测被遮挡部分725。具体地,遮挡处理器204通过将深度数据720与定义预期遮挡的结构属性的预定义遮挡标识符进行比较,来选择深度数据720的聚类。在图7的示例中,遮挡标识符可以包括人体图形的平均高度、宽度和深度范围,以选择表示装载员108的聚类。例如,遮挡处理器204可以在第一阶段中采用欧几里德聚类来在点云的子集720内找到候选聚类。在第二阶段,遮挡处理器204将候选聚类的属性与遮挡标识符进行比较以进行选择。具体地,遮挡处理器204根据预定义的最小和最大高度、宽度和深度以及根据聚类中的最小点数来选择聚类。例如,遮挡处理器204可以选择单个聚类,该单个聚类具有在1米(m)和2m之间的高度、在0.5m和1m之间的宽度以及在0.5m和1m之间的深度。在其他示例中,遮挡处理器204可以根据人体部位选择多于一个聚类(例如,头部聚类、躯干聚类和一个或多个肢体聚类)。因此,所选聚类(即,被遮挡部分725)近似于人体图形。在本示例中,被遮挡部分725被显示为框,但是,在其他示例中,遮挡部分725可以是由所选聚类表示的区域。
当初步区域715包括两个或更多个部分时,遮挡处理器204被配置为在每一个部分中选择表示人体图形的近似的聚类。换句话说,遮挡处理器204检查初步区域的每一个部分中的装载员702。当在框625处没有选择聚类时(即,初步区域内没有聚类满足阈值遮挡标识符值),遮挡处理器204在方法300的框315处确定没有检测到遮挡并且行进到方法300的框325。
在框630处,遮挡处理器204检取表示不存在遮挡的包裹空间的区域(即,包含装载员108的区域)的所存储的无阻挡深度数据。例如,遮挡处理器204可以检取存储在储存库132中的无阻挡深度数据。下面将进一步详细讨论无阻挡深度数据的更新。具体地,假设成像设备103相对于包裹空间110是静止的,因此假设像素数组中具有相同像素坐标的像素表示包裹空间的相同区域。因此,遮挡处理器204被配置为检取与被遮挡部分725具有相同像素坐标的无阻挡深度数据的部分730。在一些示例中,遮挡处理器204可以进一步检取与无阻挡深度数据730相关联的所存储的无阻挡图像数据,例如,如由图像数据到存储在储存库132中的深度数据的映射所定义的。在本示例中,该部分730包括被装载员108占据的包裹114。
在框635处,遮挡处理器204将被遮挡部分725替换为无阻挡深度数据的部分730,以生成修补深度数据735。在遮挡处理器204检取无阻挡图像数据的情况下,遮挡处理器204将与被遮挡部分相关联的图像数据替换为无阻挡图像数据736。因此,遮挡处理器204生成表示在不存在遮挡的情况下的包裹空间的修补深度数据和图像数据。然后,控制应用128被配置为行进到方法300的框330。
回到图3,当在框315处,特别是在方法600的框615处没有检测到遮挡时,控制应用128被配置为行进到框325。在框325处,控制器120,特别是遮挡处理器204,被配置为确定是否在阈值数量的先前深度数据组中检测到遮挡。特别地,在捕获当前深度数据之前,控制器120(例如,从先前帧中)获取多个先前深度数据集。当对于当前深度数据未检测到遮挡并且对于阈值数量的多个先前深度数据集未检测到遮挡时,控制应用128被配置为行进到框330。例如,在未检测到装载员108的5秒之后(即,以3fps的帧速率的阈值数量的15个深度数据集),假设装载员108不在包裹空间110中。在框330处,遮挡处理器204将当前深度数据(即,最初捕获的未检测到遮挡的深度数据,或修补数据,如下面进一步描述的)存储为无阻挡深度数据。附加地,当前图像数据可以被存储为无阻挡图像数据。
例如,如果在框315处,遮挡处理器204产生假阴性结果(即,遮挡处理程序204没有检测到遮挡,但是存在遮挡),方框325提供检查以降低将假阴性结果保存为更新的无阻挡数据的可能性,并保持该无阻挡深度数据的完整性。具体地,如果在先前帧中检测到遮挡,则该遮挡不太可能已经完全离开成像设备103的视场(例如,在3fps的帧速率下,装载员不能足够快地移动以在一个帧中存在而在下一个帧中不存在),因此,控制应用128行进到框305以获取新的深度数据。另一方面,如果在框325处,对于阈值数量的深度数据的集合没有检测到遮挡,则可以合理地假设不存在遮挡(例如,装载员确实离开了成像设备103的视场),因此,控制应用128行进到框330以将当前深度数据存储为无阻挡深度数据。
在一些示例中,可以基于最近检测到的遮挡到帧边缘的距离和/或捕获深度数据的频率来改变阈值数量的先前深度数据集。例如,如果装载员靠近帧的边缘,则离开成像设备103的视场所需的帧数小于如果装载员在帧的中心时离开成像设备103的视场所需的帧数。
在上述示例中,方法300仍然可以导致假阴性被保存为无阻挡数据的一些实例(即,在装载员可视为无阻挡数据的情况下保存帧),导致用“脏的”无阻挡数据修补后面的图像。但是,随着时间的推移,装载员在包裹空间内的移动将导致“脏的”无阻挡数据被干净的无阻挡数据修补。
在其他示例中,在框330处,遮挡处理器204仅用修补的数据来更新无阻挡数据。换句话说,没有检测到装载员的帧不被假设为表示无阻挡数据。在该示例中,方法300可以包括初始化步骤,以将第一所捕获的深度数据和图像数据存储为无阻挡数据,其中假设第一帧是无阻挡的。例如,初始化步骤可以在计算设备101通电时执行。初始化步骤可以进一步包括显示消息,例如在反馈设备106上,以指示装载员远离拖车以捕获第一无阻挡帧。因此,使用无阻挡数据来修补后续帧的被遮挡部分,并且修补图像(即,将被遮挡部分替换为无阻挡数据)被存储为用于未来帧的无阻挡数据。
在框335处,控制器120,特别是包裹放置模块208,获取在框303处扫描的包裹的位置。
现在转到图8,描绘了一种获取包裹的位置的方法800。具体地,包裹放置模块208被配置为使用来自框330的无阻挡深度数据735来执行方法800。方法800的执行导致图7所示的图像数据和深度数据结果的序列900。因此,将串联描述图8的方法800和图9的序列900。
在框805处,包裹放置模块208检测无阻挡深度数据的包裹杂波部分。在本示例中,无阻挡深度数据表示包括包裹壁112的包裹空间110和包裹杂波部分905。包裹放置模块208检测包裹空间的包裹壁112,例如在包裹空间110的点云上使用k均值聚类算法来标识点云中的不同对象(例如,包裹116或包裹壁112)。然后,基于对象的质量来标识包裹壁112。例如,包裹壁112可以被标识为具有最高深度值、最大对象或其他合适标识符的对象或对象组。包裹放置模块208还被配置为设置距离阈值。例如,包裹放置模块208可以定义表示从k均值聚类中标识的包裹壁112的单个距离值。例如,距离值可以是与包裹壁112相关联的点的平均深度值,或者是与包裹壁112相关联的点的最小距离值。然后,包裹放置模块208基于包裹壁的距离值和距离填充值来设置距离阈值。例如,距离填充值可以是预定义的测量值(例如,包裹壁前5cm)。在其他示例中,距离填充值可以是可变的,例如,点云中所有点的计算标准差。在该示例中,距离填充值可以通过考虑点云中的所有其他点来调节包裹壁112与深度传感器105的距离。包裹放置模块208标识距离小于距离阈值的无阻挡深度数据的点。这些点定义了包裹杂波部分905。在一些示例中,包裹杂波部分905可以包括暂存和排队的包裹。在其他示例中,包裹杂波部分905可以包括集装箱的部分,该集装箱包括侧壁、地板和天花板。
在框810处,包裹放置模块208裁剪掉包裹杂波部分905以生成经裁剪的深度数据910。由于包裹将被装载在包裹壁112处或包裹壁112附近,因此包裹杂波部分提供与放置包裹无关的外部数据。因此,包裹放置模块208生成聚焦于包裹壁的经裁剪的深度数据910,以在框815处进行处理。
在框815处,包裹放置模块208基于经裁剪的深度数据910生成2D占据矩阵。例如,包裹放置模块208可以提取经裁剪的深度数据910中每一个点的深度测量,以生成2D深度图(即,占据矩阵)。然后,包裹放置模块208将包裹壁112分割成占据矩阵的区域915。例如,可以使用均值漂移分割函数在2D空间中检测区域915。具体地,均值漂移分割函数在2D占据矩阵中标识不同的对象。在图9的示例中,区域915-1对应于包裹114-1,区域915-2对应于包裹114-2,并且区域915-3对应于没有任何已装载包裹114堆叠在前面的集装箱的后壁的部分。每一个区域915被变形以闭合孔并消除噪声,例如通过应用形态腐蚀操作并随后进行膨胀操作。然后将区域915拟合成3个或更多个线段的多边形。包裹放置模块208标识表示用于包裹放置的平面的基本水平线段916。
在框820处,包裹放置模块208获取包裹空间内用于放置包裹的位置。特别地,考虑到包裹的元数据(例如,在框303处获取的包裹尺寸、重量、目的地等),包裹放置模块208使用占据矩阵,区域915和水平线段916以获取用于放置包裹的位置。
返回图3,控制应用128随后被配置为行进到框340。在框340处,控制器120,特别是输出模块被配置为呈现在框335处获取的位置的指示。
特别地,输出模块212被配置为与反馈设备106通信以呈现指示。在一些示例中,反馈设备可以包括智能电话、平板电脑、可穿戴设备等,并且呈现指示包括在设备上显示增强现实图像。也就是说,设备106显示无阻挡图像数据,并在框335处生成的位置中覆盖视觉指示,诸如轮廓或数字渲染的包裹。在其他示例中,反馈设备106可以是被配置为将指示投射到包裹空间中的可操纵定点设备。例如,可操纵定点设备可以可移动地耦合到用于导航的帧,并且输出模块212可以被配置为控制和指导可操纵定点设备的移动。因此,可操纵定点设备还包括显示元件(诸如投影仪、多个激光指针等),以将包裹(诸如轮廓或数字渲染的包裹)的指示直接投射到包裹空间110中的位置上。在又进一步示例中,反馈设备106可以包括音频设备,例如,连接到计算设备101,或与平板电脑、智能手机、可穿戴设备等集成的扬声器。输出模块212可以被配置为控制扬声器以提供音频通信作为指示。
构想对上述系统和方法的变型。例如,系统100可以部署在这样的环境中,其中从公共包裹供应中来填充多个集装箱,每一个集装箱具有各自的包裹空间110。在此类部署中,系统可以包括多个成像设备,每一个成像设备被配置为捕获各自集装箱的数据。此外,计算设备101可以被配置为并行地处理来自多个集装箱的所捕获的数据,并且从集装箱中的任何一个中选择给定包裹的放置位置。
换句话说,在框303的执行之后,计算设备101可以被配置为并行执行框305-框330的多个实例(每集装箱一个实例)。计算设备101可以进一步配置为在完成框305-框330的并行实例之后,基于多个不同的深度映射,对在框303处扫描的单个包裹执行框335和框340。因此,可以从多个集装箱中的任何一个中选择和指示包裹的位置。因此,在框340处呈现的指示不仅可以包括给定包裹空间110内的选定位置,而且还可以包括将包裹放置在哪一个包裹空间的标识符(例如,预定义集装箱标识符集合中的一个)。
在进一步实施例中,数据捕获设备可以被安装到装载员108上,而不是像前面提到的那样位于集装箱的装载端处或装载端附近。例如,装载员可以配备增强现实设备,该增强现实设备不仅包括显示器,还包括深度照相机或其他合适的传感器(例如,并入有深度传感器和照相机的平视显示器)。设备101被配置为获取装载员的位置(更具体地,增强现实设备的位置),以及由该设备捕获的深度数据和图像数据。此类设备可以补充或替换上文提及的固定成像设备103。
在上述说明书中已经描述了具体实施例。然而,本领域普通技术人员理解,可以做出各种修改和改变而不脱离如下权利要求书所阐述的本发明的范围。因此,说明书和附图被认为是图示性的而非限制性的意义,并且所有此类修改都旨在被包括在本教导的范围内。
这些益处、优势、问题解决方案以及可能使任何益处、优势或解决方案发生或变得更为突出的任何(多个)要素不被解释成任何或所有权利要求的关键的、必需的或必要的特征或要素。本发明仅由所附权利要求书限定,包括在本申请处于待审状态期间做出的任何修改以及授权公告的这些权利要求的所有等效物。
此外,在该文档中,诸如第一和第二、顶部和底部等之类的关系术语可以单独地用来将一个实体或动作与另一个实体或动作区别开,而不一定要求或暗示此类实体或动作之间具有任何实际的此类关系或顺序。术语“包括”、“包括有”、“具有”、“具备”、“包含”、“包含有”、“涵盖”、“涵盖有”或它们的任何其他变型旨在覆盖非排他性包括,以使包括、具有、包含、涵盖一要素列表的过程、方法、物品或装置不仅包括那些要素还可包括对该过程、方法、物品或装置未明确列出的或固有的其他要素。以“包括一”、“具有一”、“包含一”、“涵盖一”开头的要素,在没有更多约束条件的情形下,不排除在包括、具有、包含、涵盖该要素的过程、方法、物品或装置中有另外的相同要素存在。术语“一”和“一个”被定义为一个或更多个,除非本文中另有明确声明。术语“基本上”、“大致上”、“近似”、“约”或这些术语的任何其他版本被定义为如本领域内技术人员理解的那样接近,并且在一个非限制性实施例中,这些术语被定义为在10%以内,在另一实施例中在5%以内,在另一实施例中在1%以内,而在另一实施例中在0.5%以内。本文中使用的术语“耦合的”被定义为连接的,尽管不一定是直接连接的也不一定是机械连接的。以某种方式“配置”的设备或结构至少以该种方式进行配置,但也可以以未列出的方式进行配置。
将会理解,一些实施例可以包括一个或多个通用或专用处理器(或“处理设备”),诸如微处理器、数字信号处理器、定制的处理器和现场可编程门阵列(FPGA)以及唯一存储的程序指令(包括软件和固件两者),该唯一存储的程序指令控制一个或多个处理器以连同某些非处理器电路实现本文所描述的方法和/或装置的一些、多数或全部功能。替代地,一些或全部功能可以由不具有存储程序指令的状态机来实现,或者在一种或多种专用集成电路(ASIC)中实现,其中,每一种功能或某些功能的某些组合被实现为定制逻辑。当然,也可以使用这两种方法的组合。
此外,实施例可以实现为计算机可读存储介质,该计算机可读存储介质具有存储在其上的计算机可读代码,用于对(例如,包括处理器的)计算机编程以执行如本文所描述和要求保护的方法。此类计算机可读存储介质的示例包括但不限于硬盘、CD-ROM、光存储设备、磁存储设备、ROM(只读存储器)、PROM(可编程只读存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)以及闪存。此外,预期本领域普通技术人员虽然做出由例如,可用时间、当前技术和经济考虑促动的可能显著的努力以及许多设计选择,但在得到本文所公开的概念和原理指导时,将容易地能以最少的试验产生此类软件指令和程序以及IC。
本公开的摘要被提供以允许读者快速地明确本技术公开的性质。提交该摘要,并且理解该摘要将不用于解释或限制权利要求书的范围或含义。另外,在上述具体实施方式中,可以看出出于使本公开整体化的目的,各种特征在各种实施例中被编组到一起。这种公开方法不应被解释为反映要求保护的实施例与各项权利要求中明确记载的相比需要更多的特征的任何图。相反,如以下权利要求所反映,发明主题在于少于单个公开的实施例的全部特征。因此,以下权利要求由此被并入具体实施方式中,其中各个权利要求作为单独要求保护的主题代表其自身。
- 确定包裹放置位置的系统和方法
- 借助至少两种不同的位置确定方法确定便携式操作设备的位置的方法以及电子位置确定系统