信息处理方法和系统

申请号 CN201410559692.3 申请日 2014-10-20 公开(公告)号 CN104555219B 公开(公告)日 2017-04-12
申请人 国际商业机器公司; 发明人 郭尚青; C·P·琼斯; J·伦施纳; N·E·马斯特斯; J·A·奥拉维克; R·A·雷伊; M·R·索德斯;
摘要 本 发明 的各 实施例 涉及信息处理方法和系统。提供了一种在受处理器控制的垂直可调节低摩擦传送模 块 的表面上对对象进行排序的方式。接收在 水 平方向上对多个对象进行排序的 请求 ,其中对象中的每个对象被指派排序 位置 。多个垂直可调节低摩擦传送模块集合被选择。垂直可调节低摩擦传送模块被以栅格阵形排列在表面上,其中所选择的传送模块集合中的每个所选择的传送模块集合在不同对象下面。多个所选择传送模块集合被垂直地调节以使得对象中的每个对象独立于其他对象而移动同时避免在表面上形成的二维或者更多维的其他对象。移动的结果是对象中的每个对象根据每个对象的相应排序位置而被移动到相应于其他对象的位置。
权利要求

1.一种由包括一个或多个处理器和存储器的信息处理系统实现的、在受所述处理器控制的多个垂直可调节低摩擦传送模组成的栅格阵形表面上对多个对象进行排序的信息处理方法,所述方法包括:
接收在平方向上对所述多个对象进行排序的请求,其中所述多个对象中的每个对象被指派排序位置
从在所述表面上以栅格阵形排列的多个垂直可调节低摩擦传送模块中选择多个垂直可调节低摩擦传送模块集合,其中所述传送模块集合中的每个传送模块集合在所述多个对象中的不同对象下面;以及
垂直地调节所述多个传送模块集合以使得所述多个对象中的每个对象独立于其他对象而移动,同时避免在所述表面上形成的二维或更多维的其他对象,以使得所述多个对象中的每个对象根据每个对象的相应排序位置而被移动到相应于所述其他对象的位置。
2.根据权利要求1所述的方法,其中所述对象中的每个对象最初被以线阵形定位在所述表面上,并且其中所述多个对象根据每个对象的相应排序位置而被移动到所述线阵形中的不同位置。
3.根据权利要求2所述的方法,其中所述表面中存在靠近最初的所述线阵形的足够区域,以使得每个对象能够被放置在不与所述对象中的另一对象共享的行上,其中所述方法还包括:
移动所述对象中的一个或多个对象,以使得每个对象在所述表面上占据唯一行;
移动所述对象中的一个或多个对象,以使得每个对象在所述表面上占据唯一列,其中每个对象的列对应于所述对象的相应排序位置;以及
将所述对象中的一个或多个对象移动到公共行,以使得所述多个对象根据所述每个对象的相应排序位置而处于所述线阵形中。
4.根据权利要求2所述的方法,还包括:
选择一个或多个对象的第一集合和一个或多个对象的第二集合,其中对象的所述第一集合邻近一个或多个对象的所述第二集合;
标识与一个或多个对象的所述第一集合相对应的第一排序位置和与一个或多个对象的所述第二集合相对应的第二排序位置;
比较所述第一排序位置和所述第二排序位置;
响应于所述第一排序位置大于所述第二排序位置而将一个或多个对象的所述第一集合与一个或多个对象的所述第二集合交换,其中所述交换包括在所述表面上将对象的所述第一集合移动到对象的所述第二集合之后;
重复地执行所述选择、所述标识、所述比较和所述交换直到每个对象根据每个对象的相应排序位置而处于所述线阵形中为止。
5.根据权利要求1所述的方法,其中所述对象中的每个对象最初被以二维栅格阵形定位在所述表面上,并且其中所述多个对象根据每个对象的相应排序位置而被移动到所述二维栅格阵形中的不同位置。
6.根据权利要求5所述的方法,其中所述表面中存在靠近最初的所述二维栅格阵形的足够区域,以使得每个对象能够被放置在不与所述对象中的另一对象共享的列上,其中所述方法还包括:
移动所述对象中的一个或多个对象,以使得每个对象在所述表面上占据唯一列;
基于所述对象的相应排序位置来标识对应于每个对象的期望行;
移动所述对象中的一个或多个对象,以使得每个对象在该对象的所标识的期望行处;
以及
在所述行中的每个行内交换所述对象中的一个或多个对象,以使得所述对象中的每个对象在该对象的相应排序位置处。
7.根据权利要求5所述的方法,还包括:
交换所述对象中的一个或多个对象,以使得所述对象中的每个对象在基于该对象的相应排序位置的行处;以及
交换所述对象中的一个或多个对象,以使得所述对象中的每个对象在基于该对象的相应排序位置的列处。
8.一种信息处理系统,包括:
一个或多个处理器;
存储器,耦合到所述处理器中的至少一个处理器;
由所述处理器中的至少一个处理器控制的多个垂直可调节低摩擦传送模块,其中所述多个垂直可调节低摩擦传送模块以栅格阵形被排列在表面上,多个对象跨所述表面被移动;以及
指令集合,存储在所述存储器中并且由所述处理器中的至少一个处理执行以使用所述垂直可调节低摩擦传送模块来跨所述表面对所述对象排序,其中所述指令集合执行以下动作:
接收在水平方向上对所述多个对象进行排序的请求,其中所述多个对象中的每个对象被指派排序位置;
从在所述表面上以栅格阵形排列的多个垂直可调节低摩擦传送模块中选择多个垂直可调节低摩擦传送模块集合,其中所述传送模块集合中的每个传送模块集合在所述多个对象中的不同对象下面;以及
垂直地调节所述多个传送模块集合以使得所述多个对象中的每个对象独立于其他对象而移动,同时避免在所述表面上形成的二维或更多维的其他对象,以使得所述多个对象中的每个对象根据每个对象的相应排序位置而被移动到相应于所述其他对象的位置。
9.根据权利要求8所述的信息处理系统,其中所述对象中的每个对象最初被以线阵形定位在所述表面上,并且其中所述多个对象根据每个对象的相应排序位置而被移动到所述线阵形中的不同位置。
10.根据权利要求9所述的信息处理系统,其中所述表面中存在靠近最初的所述线阵形的足够区域,以使得每个对象能够被放置在不与所述对象中的另一对象共享的行上,并且其中所述指令集合执行进一步的动作,包括:
移动所述对象中的一个或多个对象,以使得每个对象在所述表面上占据唯一行;
移动所述对象中的一个或多个对象,以使得每个对象在所述表面上占据唯一列,其中每个对象的列对应于所述对象的相应排序位置;以及
将所述对象中的一个或多个对象移动到公共行,以使得所述多个对象根据所述每个对象的相应排序位置而处于所述线阵形中。
11.根据权利要求9所述的信息处理系统,其中所述指令集合执行进一步的动作,包括:
选择一个或多个对象的第一集合和一个或多个对象的第二集合,其中对象的所述第一集合邻近一个或多个对象的所述第二集合;
标识与一个或多个对象的所述第一集合相对应的第一排序位置和与一个或多个对象的所述第二集合相对应的第二排序位置;
比较所述第一排序位置和所述第二排序位置;
响应于所述第一排序位置大于所述第二排序位置而将一个或多个对象的所述第一集合与一个或多个对象的所述第二集合交换,其中所述交换包括在所述表面上将对象的所述第一集合移动到对象的所述第二集合之后;
重复地执行所述选择、所述标识、所述比较和所述交换直到每个对象根据每个对象的相应排序位置而处于所述线阵形中为止。
12.根据权利要求8所述的信息处理系统,其中所述对象中的每个对象最初被以二维栅格阵形定位在所述表面上,并且其中所述多个对象根据每个对象的相应排序位置而被移动到所述二维栅格阵形中的不同位置。
13.根据权利要求12所述的信息处理系统,其中所述表面中存在靠近最初的所述二维栅格阵形的足够区域,以使得每个对象能够被放置在不与所述对象中的另一对象共享的列上,并且其中所述指令集合执行进一步的动作,包括:
移动所述对象中的一个或多个对象,以使得每个对象在所述表面上占据唯一列;
基于所述对象的相应排序位置来标识对应于每个对象的期望行;
移动所述对象中的一个或多个对象,以使得每个对象在该对象的所标识的期望行处;
以及
在所述行中的每个行内交换所述对象中的一个或多个对象,以使得所述对象中的每个对象在该对象的相应排序位置处。
14.根据权利要求12所述的信息处理系统,其中所述指令集合执行进一步的动作,包括:
交换所述对象中的一个或多个对象,以使得所述对象中的每个对象在基于该对象的相应排序位置的行处;以及
交换所述对象中的一个或多个对象,以使得所述对象中的每个对象在基于该对象的相应排序位置的列处。

说明书全文

信息处理方法和系统

技术领域

[0001] 本发明的各实施例涉及信息处理方法和系统。

背景技术

[0002] 对象的高效移动、存储和取回是几乎普遍的挑战,但是在其中货箱或者货板被接收到、存储特定时间然后被取回并分派的仓库的情境下被特别好地例示出。在现代仓库中,仓库库存和存储计划通常在仓库管理系统(WMS)中被计算机化,但是所存储的对象的实际存储和取回是物理的、经常为手动的过程。存在用来在仓库环境内移动对象的多种当前方式。最基本地,WMS可以向人提供将被存储或者取回的对象的位置,并且人可以驾驶铲车到指定位置。该方式具有若干缺点。首先,需要相对大数目的个人去执行重复存储和取回对象的相对单调任务。这可以导致大量的人员成本以及由疲劳和厌倦引起的增加的人失误率。此外,某一时间仓库地面上的铲车的数目是有限的,因为操作者在主路径拥塞的情况下难以高效地寻找备选路径。另外,仓库的架子和对象在传统上被标记以供人操作者参考。标记是有点麻烦的并且在自动化系统中通常是不必要的。更高级的系统利用机器人铲车来执行对被管理对象的存储和取回。机器人铲车集成有WMS以自动地将对象从进入月台(dock)带到存储位置,或者从存储位置带到外出月台。机器人铲车的使用消除了人失误和疲劳的问题,而且将人员成本限制为维护铲车所需的个人。此外,因为机器人铲车与分派系统不断通信,所以它们能够动态地寻找未被其他机器人铲车堵塞的路径,从而允许较之人操作的铲车的密度上的增加。然而,机器人铲车是复杂的,并且需要大量的维护和专用部件来维修。
此外,铲车需要一定量的空间来进行机动, 所以正被移动的对象的密度是有限的。传送带是用来传送对象的另一传统方法,特别是在工厂和运输设施中。传送带提供了沿着固定路径从一点到另一点的自动对象移动。然而,作为固定系统,传送带通常缺乏在其他系统中找到的灵活性,因为传送带的布局需要大量时间和努来改变,而且需要潜在的漫长工作停止。

发明内容

[0003] 提供了一种在受处理器控制的垂直可调节低摩擦传送模的表面上对对象进行排序的方式。接收在平方向上对多个对象进行排序的请求,其中对象中的每个对象被指派排序位置。多个垂直可调节低摩擦传送模块集合被选择。垂直可调节低摩擦传送模块被以栅格阵形排列在表面上,其中所选择的传送模块集合中的每个所选择的传送模块集合在不同对象下面。多个所选择传送模块集合被垂直地调节以使得对象中的每个对象独立于其他对象而移动同时避免在表面上形成的二维或者更多维的其他对象。移动的结果是对象中的每个对象根据每个对象的相应排序位置而被移动到相应于其他对象的位置。在第二变型中,在垂直方向和水平方向两者上对多个对象进行排序的请求被接收到,其中所选择的垂直可调节低摩擦传送模块一致地移动以适应该排序请求。再一次地,移动的结果是对象中的每个对象根据每个对象的相应排序位置而被移动到相应于其他对象的位置。
[0004] 前述是概要并因而必然包含细节的简化、概括和省略;结果,本领域技术人员将认识到该概要仅是例示性的并且不是旨在以任何方式进行限制。仅由权利要求限定的本发明的其他方面、创造性特征和优点在下面陈述的非限制详细描述中将变得明显。附图说明
[0005] 通过参考附图,本发明可得到更好理解,并且其许多目的、特征和优点对本领域技术人员变得明显,在附图中:
[0006] 图1是在此描述的方法可被实现在其中的数据处理系统的框图
[0007] 图2提供了在图1中示出的信息处理系统环境的扩展以例示出在此描述的方法可被在在联网环境中操作的各种信息处理系统上执行;
[0008] 图3是示出了能够在许多不同方向上移动对象的传送球栅的示图;
[0009] 图4A是示出了将在图3中示出的传送球栅中提供传送球中的两个传送球的两个传送球外壳的示图;
[0010] 图4B是示出了在图3中示出的传送球栅内的三个传送球外壳被激活以在特定方向上移动对象的激活的示图;
[0011] 图5是示出了被执行以使用传送球栅来移动对象的步骤的流程图
[0012] 图6是示出了被执行以使用传送球栅发起对象的移动的步骤的流程图;
[0013] 图7是示出了在使用传送球栅移动对象时执行的步骤的流程图;
[0014] 图8是示出了在正被使用传送球栅移动的对象的受控停止期间执行的步骤的流程图;
[0015] 图9是示出了在每个传送球单元处执行的用来处理在该单元处接收到的命令的处理的流程图;
[0016] 图10是示出了用来使用传送球栅对一组对象执行一维排序的处理的流程图;
[0017] 图11是示出了在不受约束的栅格环境中正被按照一维排序进行排序的该组对象的第一示图;
[0018] 图12是示出了在不受约束的栅格环境中正被按照一维排序进行排序的该组对象的第二示图;
[0019] 图13是示出了用来在受约束的栅格环境中使用传送球栅对一组对象执行一维排序的处理的流程图;
[0020] 图14是示出了用来使用传送球栅交换两个对象的处理的流程图;
[0021] 图15是示出了在受约束的栅格环境中正被按照一维排序进行排序的该组对象的示图;
[0022] 图16是示出了用来使用传送球栅对一组对象执行二维排序的处理的流程图;
[0023] 图17是示出了用来使对象散开以便执行二维排序的处理的流程图;
[0024] 图18是示出了用来将对象移动到二维排序中的正确行的处理的流程图;
[0025] 图19是示出了用来在二维排序中对对象进行分组的处理的流程图;
[0026] 图20是示出了用来在二维排序中压紧(pack)对象的行的处理的流程图;
[0027] 图21是示出了被散开并且然后移动到正确行的该组对象的第一示图;
[0028] 图22是示出了被分组并压紧以完成二维排序的第二示图。

具体实施方式

[0029] 在这里使用的术语仅是出于描述特定实施例的目的并且不是旨在限制本公开内容。如在这里使用的,单数形式“一个”、“一种”和“该”旨在也包括复数形式,除非情境清楚地指示其他。还将理解术语“包括”和/或“包含”当在本说明书中被使用时指定被陈述特征、整体、步骤、操作、元素和/或组件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或其群组的存在或者添加。
[0030] 下面的权利要求中的所有装置或步骤加功能元素的对应结构、材料、动作和等价物旨在包括用于结合如具体要求保护的其他要求保护的元件执行功能的任何结构、材料或者动作。本公开内容的描述为了例示和描述目的而已被呈现,但是并非旨在是穷尽无遗的或者将本公开内容限制于所公开的形式。在不脱离本公开内容的范围 和精神的情况下许多修改和变型对本领域普通技术人员将是显然的。实施例被选择和描述以便最佳地说明本公开内容的原理和实际应用,并且以使得本领域普通技术人员中的其他本领域普通技术人员能够理解用于具有适合预期的特定用途的各种修改的各种实施例的公开内容。
[0031] 所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0032] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件的情境中,计算机可读存储介质可以是任何可包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0033] 计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或其任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发 送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0034] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0035] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明各方面操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”程序设计语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后者的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0036] 下面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。将会理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0037] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0038] 这些计算机程序指令也可被加载到计算机、其他可编程数据处 理装置或者其他设备上以使得一系列操作步骤在该计算机、其他可编程装置或者其他设备上被执行以产生计算机实现的过程,以使得在该计算机或者其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个方框中指定的功能/动作的过程。
[0039] 以下详细描述将总体上遵循如在上面陈述的公开内容的概要,从而在必要时进一步说明并扩展本公开内容的各种方面和实施例的定义。
[0040] 以下详细描述将总体上遵循如在上面陈述的公开内容的概要,从而在必要时进一步说明并扩展本公开内容的各种方面和实施例的定义。为此,本详细描述首先陈述适于实现与本发明相关联的软件和/或硬件技术的图1中的计算环境。联网环境在图2中被例示为基本计算环境的扩展,以强调现代计算技术可以跨多个分立设备被执行。
[0041] 图1例示了信息处理系统100,其是能够执行在此描述的计算操作的计算机系统的简化示例。信息处理系统100包括被耦合到处理器接口总线112的一个或多个处理器110。处理器接口总线112将处理器110连接到也被称为存储控制器集线器(MCH)的北桥115。北桥115连接到系统存储器120并且为处理器110提供用来访问系统存储器的手段。图形控制器
125也连接到北桥115。在一个实施例中,PCI快速总线118将北桥115连接到图形控制器125。
图形控制器125连接到显示设备130,诸如计算机监视器。
[0042] 北桥115和南桥135使用总线119相互连接。在一个实施例中,总线是在北桥115与南桥135之间在每个方向上以高速传送数据的直接媒体接口(DMI)总线。在另一实施例中,外围组件互连(PCI)总线连接北桥和南桥。也被称为I/O控制器集线器(ICH)的南桥135是一种芯片,其总体上实现相比由北桥提供的能力以更慢速度操作的能力。南桥135通常提供用于连接各种组件的各种总线。这些总线例如包括PCI和PCI快速总线、ISA总线、系统管理总线(SMBus或者SMB)和/或低管脚计数(LPC)总线。LPC总线经常连接低带 宽设备,诸如引导ROM 196和“遗留(legacy)”I/O设备(使用“超级I/O”芯片)。“遗留”I/O设备(198)例如可以包括串行和并行端口、键盘鼠标和/或软盘控制器。LPC总线还将南桥135连接到可信平台模块(TPM)195。南桥135中经常包括的其他组件包括直接存储器访问(DMA)控制器、可编程中断控制器(PIC)和存储设备控制器,存储设备控制器使用总线184将南桥135连接到非易失性存储设备185,诸如硬盘驱动。
[0043] 快速卡(ExpressCard)155是将可热拔插设备连接到信息处理系统的插槽。快速卡155支持PCI快速和USB连通性两者,这是因为其使用通用串行总线(USB)和PCT快速总线两者连接到南桥135。南桥135包括向连接到USB的设备提供USB连通性的USB控制器140。这些设备包括网络摄影机(相机)150、红外(IR)接收器148、键盘和轨迹板144以及提供无线个人区域网(PAN)的蓝牙设备146。USB控制器140还向其他各种USB连接的设备142提供USB连通性,USB连接的设备142诸如是鼠标、可移动非易失性存储设备145、调制解调器、网络卡、ISDN连接器、传真、打印机USB集线器以及许多其他类型的USB连接的设备。虽然可移动非易失性存储设备145被示出为USB连接的设备,但是可移动非易失性存储设备145可以使用诸如火线接口等的不同接口被连接。
[0044] 无线局域网(LAN)设备175经由PCI或PCI快速总线172连接到南桥135。LAN设备175通常实现全部使用相同协议来在信息处理系统100与另一计算机系统或设备之间进行无线通信的空中调制技术的IEEE 802.11标准之一。光存储设备190使用串行ATA(SATA)总线188连接到南桥135。串行ATA适配器和设备通过高速串行链路通信。串行ATA总线还将南桥135连接到其他形式的存储设备,诸如硬盘驱动。诸如声卡之类的音频电路160经由总线158连接到南桥135。音频电路160还提供诸如端口162、光数字输出和头戴式机插口164、内部扬声器166和内部麦克168中的音频线路输入和光数字音频之类的功能。以太网控制器170使用诸如PCI 或PCI快速总线之类的总线而连接到南桥135。以太网控制器170将信息处理系统100连接到计算机网络,诸如局域网(LAN)、因特网和其他公共和私有计算机网络。
[0045] 虽然图1示出了一个信息处理系统,但是信息处理系统可采用许多形式。例如,信息处理系统可采用台式机、服务器、便携式、膝上型、笔记本或者其他外形的计算机或者数据处理系统。此外,信息处理系统可采用其他外形,诸如个人数字助理(PDA)、游戏设备、ATM机、便携式电话设备、通信设备或者包括处理器和存储器的其他设备。
[0046] 在图1中示出并且在此被描述为提供安全功能的可信平台模块(TPM 195)只是硬件安全模块(HSM)的一个示例。因此,在此描述并要求保护的TPM包括任何类型的HSM,包括但不限于符合可信计算组(TCG)标准并且题为“可信平台模块(TPM)规范版本1.2”的硬件安全设备。TPM是可被并入诸如在图2中概述的那些的任何数目的信息处理系统的硬件安全子系统。
[0047] 图2提供了在图1中示出的信息处理系统环境的扩展以例示出在此描述的方法可在联网环境中操作的各种信息处理系统上被执行。信息处理系统的类型的范围从诸如手持计算机/移动电话210之类的小型手持设备到诸如大型机计算机270之类的大型主机系统。手持计算机210的示例包括个人数字助理(PDA)、个人娱乐设备,诸如MP3播放器、便携式电视机和紧凑盘播放器。信息处理系统的其他示例包括笔或平板计算机220、膝上型或笔记本计算机230、工作站240、个人计算机系统250和服务器260。未在图2中单独示出的其他类型的信息处理系统由信息处理系统280表示。如所示,各种信息处理系统可以使用计算机网络
200而被联网在一起。可被用来使各种信息处理系统互连的计算机网络的类型包括局域网(LAN)、无线局域网(WLAN)、因特网、公共交换电话网络(PSTN)、其他无线网络,以及可被用来使信息处理系统互连的任何其他网络拓扑。信息处理系统中的许多信息处理系统包括非易失性数据存储 库,诸如硬盘驱动和/或非易失性存储器。在图2中示出的信息处理系统中的一些信息处理系统描绘分离的非易失性数据存储库(服务器260利用非易失性数据存储库265,大型机计算机270利用非易失性数据存储库275,并且信息处理系统280利用非易失性数据存储库285)。非易失性数据存储库可以是位于各种信息处理系统外部的组件或者可以位于信息处理系统之一的内部。此外,可移动非易失性存储设备145可以使用诸如将可移动非易失性存储设备145连接到信息处理系统的USB端口或者其他连接器的各种技术在两个或更多个信息处理系统之间被共享。
[0048] 图3-图9描绘了可被在如在图1-图2中示出的信息处理系统和计算机网络上执行的方法。对象需要被跨各种环境中的表面移动。在这里描述的方式使该过程自动化并且使诸如大货板、容器和货箱之类的对象的移动更加安全和更加高效。这一方式可伸缩以与小区域移动到大区域移动一起工作。其也可以针对正被移动的对象的大小而伸缩。以这种方式,这一方式不但可以移动诸如电子组件之类的极小对象,而且可以移动像运输容器一样的大对象。这一方式可被并入到自动或自动化的仓库系统中。然而,这一方式不限于此类应用,这是因为其可以在各种环境中被使用,诸如造船厂、移动卡车内部或者其中对象需要跨表面被移动的其他环境。
[0049] 被覆盖以大量垂直可调节低摩擦传送模块的表面被提供。垂直可调节低摩擦传送模块可以是在单元顶部的具有能够支撑重量的自由旋转球的传送球单元,在模块顶部的突出轴承集合,可以旋转的圆形按钮集合,或者当在斜面上倾斜时对象可在其上滑动的任何低摩擦表面。每个垂直可调节低摩擦传送模块位于能够通过计算机控制(例如,受如在图1所示的信息处理系统控制)被升高或者降低的外壳中。传送模块被确定大小并被布置在栅格中以使得正被移动的对象将置于相对大量的传送模块上。为了移动对象,该对象下面的传送模块被升高一变化量以创建具有在跨表面的期望水平行进方向上的向下坡度的斜面。坡度被逐渐增加直到对象开始在期望水平 方向上滚“下山”为止。当对象滚到新的传送模块上时,它们被升高以保持斜面,并且与此同时,不再支撑对象的传送模块被返回缺省降低位置(例如,与表面一样高或者在表面下面,等等)。以这种方式,对象可被流畅地跨表面移动,仿佛整个表面被倾斜一样。这一方式还限制了系统故障情况下的潜在损坏。长距离移动可通过传送模块的升高和降低的同步协调而被控制以提供受控的移动停止和方向改变。
[0050] 图3是示出了能够在许多不同方向上移动对象的传送球栅的示图。图3提供了诸如可在其中对象被跨表面移动的仓库或者其他环境中找到的表面300的顶视图。传送球栅310是以栅格式样布置的许多分离的垂直可调节低摩擦传送模块(325)的栅格。在一个实施例中,基于正被跨表面移动的对象的类型(例如,小对象、大对象等),诸如矩形式样、偏移式样等的任何栅格式样可被用来实现具有垂直可调节低摩擦传送模块的特定式样和间距的栅格。传送模块如在这里更详细描述地被升高和降低以便跨表面300水平地移动对象320。传感器330检测对象320的位置以标识为了移动对象而应当被升高和降低的特定传送模块。在一个实施例中,基于在对象320下面和附近的传送模块的移动(升高和降低),可以在沿着表面300的几乎任何水平方向上移动对象320。在对象320处散发的箭头描绘对象320沿着表面300的可能水平移动路径。
[0051] 图4A是示出了将提供在图3中示出的传送球栅中的传送球中的两个传送球的两个传送球外壳的示图。传送模块325是如所示能够在外壳内向上和向下移动的垂直可调节低摩擦模块。在一个实施例中,通过线性致动器执行垂直高度调节420。在另一实施例中,通过伺服电机和联动装置(linkage)来执行垂直高度调节。在另一实施例中,调节垂直可调节低摩擦传送模块的高度使用在每个传送模块中包括的液压升降组件被执行。传感器330被包括在传送模块中以感测传送模块顶部的对象。在一个实施例中,传感器330是能够感测在外壳的孔中照射的光的光敏型。当光被对象阻挡时,传感器被 触发。在一个实施例中,垂直可调节低摩擦传送模块的不活动位置在表面之下,以使得车辆和其他形式的运输也可以在表面上发生,其中当传送模块不活动时传送模块的低摩擦特性不会阻碍这种运输。
[0052] 图4B是示出了在图3中示出的传送球栅内的三个传送球外壳被激活以在特定方向上移动对象的激活的示图。这三个垂直可调节低摩擦传送模块被标记为451、452和453并且被用来描绘通过改变各传送模块的高度而被产生的斜面。在对象的期望水平方向(移动)朝着对象前侧的情况下,对应于各传送模块的高度调节器420被升高以便使对象320的后侧被升高到大于对象320的前侧的高度。尽管仅三个传送模块被示出,但是许多传送模块集合将实际参与(engage)并被升高至不同高度以创建斜面。
[0053] 传送模块451、452和453将被升高至不同高度从而创建如所示的斜面。当对象320在所示的水平方向上移动时,对象前面的附加传送模块将被升高以接收对象并且传送模块451、452和453将被升高至不同的高度以将斜面保持在沿着对象的水平路径的更远位置处。
当传送模块不再在对象下面时(例如,当对象完全通过传送模块451等时),传送模块被降低到如先前在图4A中示出的其初始不参与(disengage)位置。在一个实施例中,在垂直可调节低摩擦传送模块的上表面处的低摩擦方面400由在任意方向上滚动的传送球单元提供。在另一实施例中,突出轴承集合(例如,球轴承等)提供在传送模块的上表面处的低摩擦方面
400。在另一实施例中,圆形按钮集合提供传在送模块的上表面处的低摩擦方面400。如在这里更详细描述地,前侧传送模块可被提高以便向对象320的水平移动提供受控停止。
[0054] 图5是示出了被执行以使用传送球栅来移动对象的步骤的流程图。处理在500处开始,于是在步骤510处,过程的操作者(例如,另一过程,人操作者等)选择将被移动的对象(例如,仓库表面上的对象等)。在步骤520处,操作者选择对象将被在其上移动的水 平方向。在一个实施例中,水平方向是任意方向(例如,北、南、东、西、东北、西北、东南、西南、任意指南针度设置等)。此外,在步骤520处,移动的目的地被选择(例如,南边一百英尺等)。一系列的移动方向和目的地可被提供以穿越表面(例如,以避免其他对象等)
[0055] 在步骤525处,过程选择在对象下面的垂直可调节低摩擦传送模块。在预定义过程530处,信号被发送给所选择的传送模块以发起对象的移动(见图9和用于“发起”处理细节的对应文本)。移动的发起将通过升高所选择的传送模块并且从而升高对象来将对象升高到对象下面的传送模块上。对象的移动通过从对象下面的传送模块标识一个或多个后侧传送模块集合以及从对象下面的传送模块标识一个或多个前侧传送模块集合的过程被完成。
后侧传送模块集合朝着与由操作者选择的水平方向相反(远离)的对象的后侧,并且前侧传送模块集合朝着朝着水平方向的对象的前面。如在这里使用的,对象的“前侧”指对象面向对象正被移动的方向的一侧并且不指对象的实际正面,并且同样地,对象的“后侧”指对象背离对象正被移动的方向的一侧并且不指对象的实际背面。
[0056] 在步骤540中,处理选择在所选择的移动路径的方向上位置接近(例如,靠近,等等)对象的传送模块(例如,对象在选择的方向上将穿过其上的下一传送模块)。在预定义过程550中,信号被发送给接近对象的所选择的传送模块从而指令所选择的传送模块准备接收对象(例如,通过从不参与位置升高到允许对象移动到所选择的传送模块上方的低垂直位置)。关于传送模块的“准备接收”处理的处理细节见图9和对应文本。
[0057] 在预定义过程560处,在操作者所选择的方向上初始化移动(处理细节见图6和对应文本)。在一个实施例中,在对象前侧下方的传送模块被降低的同时,对象后侧下方的传送模块被升高,以便轻柔地创建斜面,对象将在该斜面上水平地移动跨越表面。在另一实施例中,所标识的后侧传送模块集合被升高至一个或多个垂直高度 的第一集合,并且所标识的前侧传送模块集合被(从不参与位置)升高至一个或多个垂直高度的第二集合,其中垂直高度的第一集合的平均值高于垂直高度的第二集合的平均值。当从侧面看时,对象将看起来在斜面上并且将由于重力以及由传送模块的上表面所提供的低摩擦而在所选择的水平方向上移动。
[0058] 在移动已被初始化之后,使用在预定义过程570中示出的处理(处理细节见图7和对应文本)来继续在所选择的水平方向上的移动。当对象在移动时,关于对象是否处于刚好在所选择的目的地之前的位置处,处理重复地进行检查(判定575)。判定575重复地循环回到预定义过程570,直到对象位于受控停止应当开始的目的地处为止。当对象到达受控停止应当开始的目的地处时(其基于执行受控停止所需的距离而可以在操作者所选择的实际目的地之前),判定575分叉到“是”分支以使对象停止。在预定义过程570处,对象到达受控停止(处理细节见图8和对应文本)。
[0059] 关于操作者是否正在请求改变对象的方向和/或目的地做出判定(判定580)。如果操作者正在请求改变对象的方向和/或目的地,则判定580分叉到“是”分支,该分支循环回去以接收下一移动方向和目的地。这一循环继续进行,直到对象位于最终目的地为止,此时判定580分叉到“否”分支并且处理在595处结束。
[0060] 图6是示出了被执行以使用传送球栅发起对象的移动的步骤的流程图。移动初始化处理在600处开始,于是在步骤610处,针对期望移动速度或者预定义移动速度取回增加高度。更大的增量高度产生更陡的斜面和更快的水平移动速度,而更小的增量高度产生更浅的斜面和更慢的水平移动速度。在步骤615处,更低的高度值被初始化为初始高度值,并且在步骤620处,升高高度值也被初始化为初始高度值。在一个实施例中,初始高度值是在正被产生的斜面的最低高度与正被产生的斜面的最高高度之间的中点值。
[0061] 在步骤625处,从前到后标识单元下面的传送模块集合(例如,线等)的数目,其中前方是水平移动的方向。在步骤630处,通过 将传送模块集合的总数除以二来确定中点集合。两个并行过程(640和670)以过程640进行操作以使前侧传送模块从初始高度降低并且过程670进行操作以使后侧单元从初始高度升高开始。
[0062] 过程640从中点到对象的前方降低前侧传送模块。在步骤645处,最接近中点的传送模块的第一集合(例如,线)被选择。在步骤650处,通过使当前更低高度减去增量高度来针对所选择的前侧传送模块集合计算降低的高度设置。在预定义过程655处,处理通过信号通知每个所选择的传送模块将其高度降低为计算出的更低高度值(针对用来将传送模块设置为数字高度值的处理细节见图9和对应文本)。关于是否存在要降低的更多前侧传送模块集合做出判定(判定660)。如果存在要降低的更多前侧传送模块(例如,最前传送模块集合尚未被达到),则判定660分叉到“是”分支,该分支循环回去以选择下一前侧传送模块集合(例如,线)并且这些被选择的传送模块被设置为甚至更低的高度,因为更低高度值被进一步降低增量高度值。对另外前侧传送模块集合的这一循环和重复降低继续进行,直到不再有前侧传送模块要处理为止,此时判定660分叉到“否”分支从而退出过程640。
[0063] 过程670从中点到对象的后方使后侧传送模块升高。如先前描述的,过程670与用来使前侧传送模块降低的过程640同时(并行)发生。在步骤675处,最接近中点的传送模块的第一集合(例如,线)被选择。在步骤680处,通过使当前升高高度增加增量高度来针对所选择的后侧传送模块集合计算升高的高度设置。在预定义过程685处,处理通过信号通知每个所选择的传送模块将其高度升高为计算出的升高高度值(针对用来将传送模块设置为数字高度值的处理细节见图9和对应文本)。关于是否存在要升高的更多后侧传送模块集合做出判定(判定690)。如果存在要升高的更多后侧传送模块(例如,最后传送模块集合尚未被达到),则判定690分叉到“是”分支,该分支循环回去以选择下一后侧传送模块集合(例如,线)并且这些被选择的传送模块被设置为甚至更高的高度,因为升 高高度值被进一步增加增量高度值。对另外后侧传送模块集合的这一循环和重复升高继续进行,直到不再有后侧传送模块要处理为止,此时判定690分叉到“否”分支从而退出过程670。
[0064] 在前侧传送模块已被降低为其初始值并且后侧传送模块已被升高为其初始值之后,如上所述,斜面将已被创建,对象在由操作者选择的水平方向上在该斜面上移动。处理然后在695处返回到调用例程(见图5)。
[0065] 图7是示出了在使用传送球栅移动对象时执行的步骤的流程图。处理在700处开始,于是在步骤710处,用于期望速度的增量高度被取回。在一个实施例中,增量高度是操作者在确定对象将行进的水平速度时选择的,而在另一实施例中,增量高度是固定的预定高度以使得对象以大致相同的速度跨表面行进。在步骤720处,从对象的后侧开始的传送模块的第一集合(例如,线)被选择,其中对象的前侧朝着对象正在移动跨越表面的方向。
[0066] 在预定处理730处,过程向所选择的传送模块发送信号以使当前高度增加增量高度值(“增加(INCREASE)”处理细节见图9和对应文本)。关于正被移动的对象下面当前是否存在更多传送模块做出判定(判定740)。如果对象下面存在更多传送模块,则判定740分叉到“是”分支,其循环回去以选择下一传送模块集合(例如,线)并使其递增,其中下一集合是当与先前选择的传送模块集合比较时朝着对象前方的下一集合。这一循环继续进行,直到对象下面没有更多传送模块为止,此时判定740分叉到“否”分支以进行进一步的移动处理。
[0067] 在步骤750处,当前位置接近(例如,靠近)对象并且在对象前方的传送模块被选择(例如,对象接下来将在其选择的移动方向上穿过其上方的传送模块)。在预定义过程760处,在步骤750处选择的传送模块被用信号通知准备通过升高到斜面的最低可使用水平来接收对象(“准备接收”处理细节见图9和对应文本)。当对象在期望水平方向上移动时,将已被升高至斜面的最高水平的在对 象后方的传送模块将最终不再在对象下面,因为对象完全通过这些传送模块上方。在步骤770处,现在位于对象后面并且不再在对象下面的这些传送模块被选择。在预定义过程780处,在步骤770处选择的传送模块被用信号通知完全缩回到未参与位置(“完全缩回”处理细节见图9和对应文本)。处理然后在795处返回到调用例程(见图5)。
[0068] 图8是示出了在正使用传送球栅被移动的对象的受控停止期间执行的步骤的流程图。受控停止处理在800处开始,于是在步骤810处,针对期望的停止速度或者预定义的停止速度取回增量高度。更大的增量高度产生更快的停止时间,而更少的增量高度产生更慢的停止时间。
[0069] 在步骤815处,从前到后确定单元下面的传送模块集合(例如,线等)的数目,其中前方是水平移动的方向。在步骤820处,通过将传送模块集合的总数除以二来确定中点集合。两个并行过程(825和850)以过程825进行操作以使前侧传送模块从其当前高度升高并且过程850进行操作以使后侧单元从其当前高度降低开始。
[0070] 过程825从中点到对象的前方升高前侧传送模块。在步骤830处,最接近中点的传送模块的第一集合(例如,线)被选择。在预定义过程835处,处理信号通知每个所选择的传送模块将其高度升高增量高度值(针对“增加”处理细节见图9和对应文本)。关于是否存在要升高的更多前侧传送模块集合做出判定(判定840)。如果存在要升高的更多前侧传送模块(例如,最前传送模块集合尚未被达到),则判定840分叉到“是”分支,该分支循环回去以选择下一前侧传送模块集合(例如,线)并且这些被选择的传送模块被递增地升高增量高度值。对另外前侧传送模块集合的这一循环和重复升高继续进行,直到不再有前侧传送模块要处理为止,此时判定840分叉到“否”分支从而退出过程825。
[0071] 过程850从中点到对象的后方使后侧传送模块降低。在步骤855处,最接近中点的传送模块的第一集合(例如,线)被选择。在预 定义过程860处,处理信号通知每个所选择的传送模块将其高度降低增量高度值(针对“减少(DECRESE)”处理细节见图9和对应文本)。关于是否存在要降低的更多后侧传送模块集合做出判定(判定865)。如果存在要降低的更多后侧传送模块(例如,最后传送模块集合尚未被达到),则判定865分叉到“是”分支,该分支循环回去以选择下一后侧传送模块集合(例如,线)并且这些被选择的传送模块被递增地降低增量高度值。对另外后侧传送模块集合的这一循环和重复降低继续进行,直到不再有后侧传送模块要处理为止,此时判定865分叉到“否”分支从而退出过程850。
[0072] 在过程825和850已经执行以如上所述使前侧传送模块升高并使后侧传送模块降低之后,在步骤870处,高度被计算为是最后选择的(最前方的)前侧传送模块的高度。在步骤875处,因为对象很可能仍在移动,因此过程选择对象水平移动方向上的传送模块。在预定义过程880中,在步骤875处选择的传送模块被用信号通知将其水平升高至在步骤870中示出的高度值(用来将传送模块升高至特定高度的处理细节见图9和对应文本)。
[0073] 关于对象是否已经停止移动做出判定(判定885)。如果对象尚未停止移动,则判定885分叉到“否”分支,该分支循环回去以如上所述使前侧传送模块进一步升高并使后侧传送模块进一步降低。这一循环继续进行,直到对象已经停止移动为止,此时判定885分叉到“是”分支。在预定义过程890处,在对象下面和附近(例如,靠近)的所有传送模块被用信号通知完全缩回,这使对象降低至表面(“完全缩回”处理细节见图9和对应文本)。处理然后在
895处返回到调用例程(见图5)。
[0074] 图9是示出了在每个传送球单元处执行的用来处理在该单元处接收到的命令的处理的流程图。在一个实施例中,每个传送模块包括用来按照主控制器指示控制特定传送模块的操作的处理器(主控制操作见图5)。处理在900处开始,于是在步骤910处,传送模块栅格配置设置被从栅格设置存储器区域920取回。在步骤925处, 传送模块等待下一请求到达该模块(例如,从在图5-图8中示出的过程之一接收到的信号,等等)。关于请求是否已被接收到做出判定(判定930)。判定930分叉到“否”分支并且继续循环回到步骤925直到请求被接收到为止。当请求被接收到时,判定930分叉到“是”分支,于是在步骤935处,过程从存储器区域940取回传送模块的当前高度。
[0075] 基于传送模块接收到的请求的类型做出判定(判定950,诸如多分支(select-case)指令)。如果“发起”请求被接收到,则判定950分叉到“发起”分支,于是在步骤960处,传送模块将其水平升高至针对在对象下面的所有传送模块设置的统一水平。如果“准备接收”请求被接收到,那么判定950分叉到“准备接收”分支,于是在步骤965处,传送模块将其水平升高至作为用来使对象移动的斜面的最低高度的最低可使用水平(例如,半英寸,等等)。如果数值高度值(例如,5英寸,等等)请求被接收到,则判定950分叉到“数值高度值”分支,于是在步骤970处,传送模块将其水平升高至在请求中指示的高度(例如,5英寸,等等)。如果“增加”或者“减少”请求被接收到,则判定950分叉到“增加”或者“减少”分支,于是在步骤975中,传送模块使其当前高度升高增加量或者降低减少量。最终,如果“完全缩回”请求被接收到,则判定950分叉到“完全缩回”分支,于是在步骤980处,传送模块被完全降低至不参与位置(例如,与表面一样高或在表面下面,等等)。
[0076] 在步骤990处,基于请求的处理而将传送模块的当前高度保存在存储器区域940中。处理然后循环回到步骤925以等待接收来自控制模块的下一请求(例如,见图5-图8,等等)。
[0077] 图10是示出了用来使用传送球栅对一组对象执行一维排序的处理的流程图。使用如在在先附图中示出的受处理器控制的垂直可调节低摩擦传送模块的表面,多组对象可以诸如按照排序次序被排列。次序颠倒的对象可被移动并且按照排序次序被排列。对象的一维排序(诸如单行阵形中的对象)在图10中被示出。处理在1000处开 始,于是在步骤1005处,过程接收到将驻留在表面上的一组对象排序为排序的单行阵形的请求。在步骤1010处,过程标识要排序的行中的对象的数目。在一个实施例中,对象的数目使用先前描述的、在地面表面中包括的传感器被确定。在步骤1015处,过程标识地面表面上接近正被排序的对象行的可用“空”空间。关于地面上是否有足够空空间供每个对象具有其自己的行做出判定(判定1020)。如果地面上没有足够空空间供每个对象具有其自己的行,则判定1020分叉到“否”分支,于是在预定义过程1025处,过程被执行以使用最小量空间来对对象的行进行排序(处理细节见图13和对应文本)并且处理在1030处结束。另一方面,如果地面表面上有足够空空间供每个对象具有其自己的行,则判定1020分叉到“是”分支以进行进一步处理。
[0078] 在步骤1035中,过程通过对象排序值执行对行中的对象的虚拟排序以成为期望次序。对象的期望次序被存储在存储器区域1040中。例如,正被运输的对象可能具有与正被运输的对象中的每个对象相关联的邮政编码,而用户希望使对象按照邮政编码次序被排序以使得它们可以按照类似于对象将被如何递送到其相应目的地的次序被装载到用于运输的卡车上。在步骤1045处,行中的第一个对象被选择(该行的第一列)。在步骤1050中,所选择的对象的期望次序被从存储器区域1040中取回并且期望次序被存储在变量OBJ_POSITION中。在步骤1055中,所选择的对象的新行(NEW_ROW)被设置为OBJ_POSITION。使用在图11和图12中示出的示例,如果所选择的第一对象应当是行中的第四个对象,则该对象被移动到第四行。在预定义过程1060处,传送球控制例程被用来将在所选择的行和列(行=1,列=1)处的对象移动到新行(例如,行4和同一列,例如,列1——关于传送球控制例程的处理细节见图5和对应文本)。关于行中是否有更多对象要移动做出判定(判定1065)。如果行中有更多对象要移动,则判定1065分叉到“是”分支,该分支循环回去以选择行中的下一对象(例如,在行1的列2 中的对象2)并且过程将新选择的对象移动到与新选择的对象排序位置相对应的行。使用来自图11和图12的示例,第二对象的排序位置为五,所以第二对象将被移动到第五行、第二列。这一循环继续进行,直到所有对象已被选择并被移动到其唯一的行指派为止,如在图11中的步骤2中示出的那样。注意,过程循环到下一对象并且开始适当移动而不管前一对象的移动是否已经完成,这是因为所有对象可以跨地面表面同时移动。一旦所有对象已被移动到其正确行,则判定1065分叉到“否”分支以开始将对象移动到其正确列位置。在步骤1070处,第一对象被选择(例如,图11的步骤2中示出的对象D)。在预定义过程1075处,所选择的对象被移动到与其排序位置相对应的列。如在图12的步骤3中所示,对象D被移动到第四列位置。关于是否有附加对象要选择和移动做出判定(判定1078)。如果有附加对象要选择和移动,则判定1078分叉到“是”分支,该分支循环回去以选择并移动下一对象。这一循环继续进行直到所有对象已被选择并移动到适当列为止,诸如在图2的步骤3中提供的示例中所示。当所有对象已被选择并移动到适当列时,判定1078分叉到“否”分支以进行进一步处理。再次注意,因为每个对象先前被移动到其自己的行,因此对象因为将不会发生碰撞而可被同时移动。接下来,对象被从其临时行移动回到公共行,在公共行处它们现在将是按照排序次序。在步骤1080处,第一对象被选择,并且在预定义过程1085处,所选择的对象被移动到第一(公共)行。关于是否有附加对象要移动到公共行做出判定(判定
1090)。如果有附加对象要移动到公共行,则判定1090分叉到“是”分支,该分支循环回去以选择下一对象并将其移动到公共行。这一循环继续进行,直到所有对象都在公共行(例如,行一)上并且现在是按照排序次序为止。图12的步骤4示出了正被移动到公共行的对象的示例。再次,因为每个对象在其自己的列中,因此对象可以使用传送球栅被同时移动到公共行并且将不会发生碰撞。处理然后在1095处结束。
[0079] 图11是示出在不受约束的栅格环境中正被按照一维排序进行排 序的一组对象的第一示图。示出用来使对象如在图11和图12所示移动的逻辑的流程图先前在图10中被呈现。步骤1(1110)示出了对象在受一个或多个处理器控制的垂直可调节低摩擦传送模块的表面上的初始排列。如所示,对象为乱序并且当前是按照D-E-B-A-C次序而希望次序是A-B-C-D-E。步骤2(1020)示出了正在基于对象的相对排序位置将对象移动到其自己的行。这里,对象A因为已经驻留在第一行中而未被移动,对象B被移动到第二行,对象C被移动到第三行,对象D被移动到第四行,并且对象E被移动到第五行。
[0080] 图12是示出了在不受约束的栅格环境中正被按照一维排序进行排序的一组对象的第二示图。步骤3(1130)示出了正被移动到第一列的对象A,正被移动到第二列的对象B,正被移动到第三列的对象C,正被移动到第四列的对象D,以及正被移动到第五列的对象E。在最终步骤即步骤4(1140)中,对象被移动回到公共行,在公共行处它们现在按照排序次序出现。对象A已经在第一行中故其未被移动,对象B被从行二向下移动一行到行一,对象C被从行三向下移动两行到行一,对象D被从行四向下移动三行到行一,并且对象E被从行五向下移动四行到行一。
[0081] 图13是示出了用来在受约束的栅格环境中使用传送球栅对一组对象执行一维排序的处理的流程图。处理在1300处开始,于是在步骤1305中,变量被初始化,其中长度(Length)被设置为正被排序的对象的数目,交换(Swaps)被设置为假(FALSE)以指示尚未发生交换,并且开始(Start)列被设置为一。正在使用最小量空间被排序的一行对象的示例在图15的元素1500中被示出。在所示出的实施例中,用来交换对象的最小量空间是邻近正被排序的一行对象的一行空空间。在步骤1310到步骤1395中示出的过程中,基于针对对象期望的排序位置来重复地将相邻对象彼此比较。如果对象为乱序,则通过将具有更低排序位置的对象移动到具有更高排序位置的对象右边来交换对象。元素1500到元素1580提供了发生的按照正确排序位置对对象进行排序的交换的示例。
[0082] 返回到图13,在步骤1310处第一变量(i)被设置为开始列,并且在步骤1315处,第二变量(j)被设置为邻近列(i+1)。关于驻留在列(i和j)处的对象是否处于不正确次序做出判定(判定1320)。如果第一对象(驻留在列(i)处的对象)具有大于邻近对象(例如,在第一对象右侧的对象)的排序位置值,则对象需要被交换以便处于正确次序。如果对象需要被交换,则判定1320分叉到“是”分支,于是在预定义过程1325处这两个对象使用受处理器控制的垂直可调节低摩擦传送模块被在表面上物理地交换(关于对象交换的处理细节见图14和对应文本)。此外,在步骤1330处,Swap标志被设置为真(TRUE)以指示行中的对象已被交换。在另一方面,如果由于左边的对象低于或者等于其右边的对象而不需要交换两个对象,则判定1320分叉到“否”分支,从而绕开预定义过程1325和步骤1330。
[0083] 在步骤1335处,在比较中使用的第一对象的位置被递增二。如果开始位置是一,则递增后的第一位置是三,然后是五,然后是七,诸如此类。在一个实施例中,开始位置在第一位置和第二位置之间摆动(oscillate)以使得被比较的对象有规律地改变。当开始位置是二时,递增后的第一位置是四,然后是六,然后是八,诸如此类。关于递增后的第一位置是否处于或超过正被排序的行中的最后对象做出判定(判定1340)。如果递增后的第一位置尚未处于或者超过正被排序的行中的最后对象,则判定1340分叉到“否”分支,于是处理循环回来以比较下一对对象的排序位置并且如上所述如果需要则交换对象。这一循环继续进行直到递增后的第一位置处于或者超过正被排序的行中的最后对象为止,此时判定1340分叉到“是”分支。
[0084] 关于Swaps标志是否仍被设置为假做出判定(判定1345),假指示没有对象需要被交换并且行处于正确(排序)次序。如果Swaps标志不是假,即指示一对或多对对象曾被交换,则判定1345分叉到“否”分支以继续排序处理。在步骤1350处,Swaps标志被重置为 假以初始化下一运行。关于用来选择多对对象的开始列当前是否被设置为列一做出判定(判定1355)。如果开始列当前被设置为列一,则判定1355分叉到“是”分支,于是在步骤1360处,开始列被设置为列二。相反地,如果开始列当前未被设置为列一(而是被设置为列二),则判定
1355分叉到“否”分支,于是在步骤1365处开始列被设置为列一。以这种方式,当开始列被设置为列一时,第一列和第二列中的对象被比较并且如果需要则被交换,然后第三列和第四列中的对象被比较并且如果需要则被交换,诸如此类。同样地,当开始列被设置为列二时,第二列和第三列中的对象被比较并且如果需要则被交换,然后第三列和第四列中的对象被比较并且如果需要则被交换,诸如此类。在步骤1370处,处理在循环回去以执行比较和潜在交换的下一迭代之前等待在表面上正被交换的对象的物理移动完成。注意,在迭代期间,多对对象可以处于被交换的过程中,其中作为正被交换的一对对象而同时移动的此类对象将不会与位于该对左边或者右边的对象碰撞。
[0085] 回到判定1345,如果行中的对象在没有任何交换被执行的情况下被处理(Swaps标志仍被设置为假),则对象处于正确排序次序并且判定1345分叉到“是”分支,于是处理在1395结束。
[0086] 图14是示出了用来使用传送球栅交换两个对象的处理的流程图。交换对象例程被提供标识出将被交换的两个对象(i和j)的参数。处理在1400处开始,于是在预定义过程1410处,当交换水平排列的对象时,对象之一(例如,对象(j))被诸如向上或者向下移动到邻近空位置(传送球控制例程的处理细节见图5和对应文本)。在步骤1420处,过程等待对象移动完成。一旦对象已被移动到邻近空点,则右边对象(已被向上或者向下移动到邻近空行的对象(对象(j))被向左移动(预定义过程1430)并且左边对象(对象(i))被向右移动(预定义过程1440)。在步骤1450处,过程等待两个对象的移动完成。在预定义过程1460处,最初曾被移动到邻近空空间的对象(例如,对象(j))被移动回到和与之相比较和相交换的对 象(例如,对象(i))相同的行。在所示出的示例中,对象(j)被向下移动一个位置以邻近对象(i)。在步骤1470中,过程等待直到对象(j)移动到邻近对象(i)的位置为止,此时例程在
1495处返回到调用例程(例如,见图13)。
[0087] 图15是示出了在受约束的栅格环境中的正被按照一维排序进行排序的一组对象的示图,其中只有两个行可用来执行排序。
[0088] 排列1500示出了表面上的未排序对象的初始排列。开始列被指示为第一列。第一对对象(列一和列二)处于正确次序并且无需被交换。第二对对象(列三和列四)未处于正确次序并且需要被交换。第三对对象(列五和列六)处于正确次序并且无需被交换,并且最后一对对象(列七和列八)未处于正确次序并且需要被交换。用于交换需要被交换的对(第二对和第四对)的交换细节在1510中被示出。从初始排列1500,被确定用于交换的对中的最右对象被移动到如在排列1515中示出的传送栅格表面上的邻近空点。排列1520示出了对中的最右对象被向左移动一个位置并且最左对象被向右移动一个位置。排列1525示出了交换的结果,其中第二对和第四对对象现在被相应于该对中的另一对象按照正确排序次序排列。
[0089] 排列1525然后被分析,但是开始列现在是第二列,以使得第一对对象驻留在第二列和第三列中,第二对在第四列和第五列中,诸如此类。这里,所有的对(第一对、第二对和第三对)被标识为需要相应的成对对象被交换,其结果被在排列1530中示出。排列1530然后被分析,其中开始列现在是第一列,以使得第一对对象驻留在第一列和第二列中,诸如此类。这里,再一次,所有对的对象被标识为需要被交换,其结果在排列1540中被示出。排列1540被分析,其中开始列是第二列并且将第二对和第三对标识为需要交换的分析导致排列
1550。排列1550被分析,其中开始列是第一列并且将第二对和第三对标识为需要交换的分析导致排列1560。排列1560被分析,其中开始列是第二列并且将所有的对(第一对、第二对和第三对)标识为需要交换的分析导致排列1570。排列1570被分析,其中 开始列是第一列并且将第二对和第四对标识为需要交换的分析导致排列1580。当排列1580被分析时,没有交换被标识,从而导致水平排列中的每个对象的排序位置被实现。
[0090] 如在图10-图15中示出的对象的一维排序和排列是在如在这里示出和描述的受处理器控制的垂直可调节低摩擦传送模块的表面上如何可以对物理对象进行排序的一个示例。本领域技术人员将领会到,许多不同方法可被用来以线性方式对对象进行排序和排列,其中方法经常基于环境和应用(诸如被例行地排序和排列的对象的大小和数目)被选择。
[0091] 图16是示出了用来使用传送球栅对一组对象执行二维排序的处理的流程图。处理在1600处开始,于是在步骤1610处,过程接收到将对象的栅格或者矩阵排序为相同矩阵模式的请求。在图16-图22中示出并描述的示例中,四乘四的对象矩阵诸如可被装载在货板上并被装载到卡车或者火车上。使用大得多的对象矩阵的其他应用可以利用在图16-图22中示出的技术以及在图10-图15中示出并描述的线性排序技术来管理更大的对象矩阵。此外,在步骤1610处,邻近未排序矩阵的空空间被分配。在一个实施例中,四倍的列栅格空间(空空间)被分配以对四乘四矩阵进行排序并且两倍的列栅格空间(空空间)也被分配以对矩阵进行排序。在预定义处理1620处,矩阵中的对象跨所分配的表面区域被物理地散开(处理细节见图17和对应文本)。此外,具有示出跨可用表面区域散开的对象的排列2110的示例在图21中被示出。
[0092] 在步骤1630处,当前对象矩阵(存储器区域1625)通过排序值(例如,邮政编码,等等)被虚拟地排序为在存储器区域1635中存储的行和列的排序矩阵。在预定义过程1640中,已经跨可用表面区域散开的对象根据在存储器区域1635中存储的排序矩阵被移动到其正确行(处理细节见图18和对应文本,此外见图21,排列2120示出了已被移动到其正确行的对象)。在预定义处理1650处,对象被分组在一起以准备进行排序(处理细节见图19和对应文本,此外见 图22,排列2200示出了在其正确行中被分组在一起的对象)。对象现在驻留在每隔一个行上以使得空的邻近空间可用于对每个行内的对象进行排序。当前行被设置为第二行(其中第一行是空的)。在预定义过程1670处,对所选择的行(行二,处理细节见图13和对应文本)执行一维排序。当前行被增量二以考虑到在步骤1675处的空行。关于当前行是否仍在正被排序的对象矩阵中做出判定(判定1680)。如果当前行在正被排序的对象矩阵中,则判定1680分叉到“是”分支,该分支循环回去以使用预定义过程1670执行对当前行(例如,行四,等等)的一维排序并且使当前行递增二。这一循环继续进行,直到增量后的行不再在正被排序的矩阵中为止。各种行的排序结果可以在图22中的排列2210中见到。当所有行已被排序时,判定1680分叉到“否”分支,于是在预定义过程1690处,行被压紧到其中曾发现未排序矩阵的同一空间中(处理细节见图20和对应文本,由此得到的压紧行还见图22的排列2220)。处理然后在1695处结束。
[0093] 图17是示出了用来使对象散开以便执行二维排序的处理的流程图。处理在1700处开始,于是在步骤1710处,行被初始化为原始矩阵中的最后(最高)行并且列被初始化为原始矩阵中的最后(最高)列。从最外面的对象开始允许这些对象被首先移动而不导致与其他对象的任何碰撞。当矩阵中的内部对象被移动时,它们外部的邻近对象将已经开始跨表面移动,从而避免与原始矩阵的内部对象碰撞。在步骤1720处,用于所选择对象(初始化为最后一个列和最后一个行处的对象)的新行(NEW_ROW)被设置为乘以二(例如,4 x 2=8)的行。在步骤1730处,用于所选择对象的新列(NEW_COL)被设置为乘以四(例如,4 x 4=16)的对象的当前列。在预定义过程1740处,所选择的对象被移动到所标识的新的行和列(例如,行8,列16)。传送球控制处理细节见图5和对应文本。在步骤1750处,当前行被递减一。关于当前行是否等于零并且因而在矩阵外部做出判定(判定1760)。如果当前行尚未等于零,则处理循环回到 步骤1720以从原始矩阵选择下一对象并使其移动。这一循环继续进行直到行号被递减零为止,此时判定1760分叉到“是”分支。在步骤1770处,当前列被递减一。关于当前列是否等于零并且因而在矩阵外部做出判定(判定1780)。如果当前行尚未等于零,则处理循环回到步骤1720以从原始矩阵选择下一对象并使其移动。这一循环继续进行直到列号被递减为零为止,此时判定1780分叉到“是”分支并且处理在1795处返回到调用例程(见图16)。
[0094] 图18是示出了用来将对象移动到二维排序中的正确行的处理的流程图。处理在1800处开始,于是在步骤1810处,当前行被初始化为二,这是因为对象已被移动到从行二开始的每隔一个行。在步骤1820处,当前列被初始化为行的一半(例如,行二除以二产生列一,等等)。在步骤1830处,过程选择当前驻留在当前行和当前列(例如,行二,列一,等等)处的对象。在步骤1840处,从排序对象矩阵存储器区域1635取回用于所选择对象的正确行。在预定义过程1850中,所选择对象在停留在同一列中的同时被从其当前行移动到其如在步骤
1840处标识的正确行。在步骤1860处,当前列被递增四,这是因为对象驻留在行内的每隔四列处。关于当前列是否在正被用于存储对象的表面区域的参数内做出判定(判定1870)。如果当前列正被用于存储对象,则判定1870分叉到“是”分支,该分支循环回去以取回驻留在当前行和当前列处的用于对象的正确行并且将对象移动到正确行,如上面所述。这一循环继续进行直到当前列被递增为超出为存储来自矩阵的对象而设置的界限为止,此时判定
1870分叉到“否”分支。
[0095] 在步骤1880处,当前行被增加二,这是因为对象在每隔一个行处驻留。关于递增后的当前行是否在用于存储来自矩阵的对象的行的界限之外做出判定(判定1890)。如果当前(递增后的)行正被用于存储来自对象矩阵的对象,则判定1890分叉到“是”分支,该分支循环回到步骤1820,其将当前列初始化为当前行的一半(例如,如果递增后的当前行是四,则当前列被初始化为二)。当前驻留在 当前选择的行上的对象然后如上所述根据在存储器区域1635中存储的排序对象矩阵而被移动到其相应的正确行。这一循环继续进行,直到当前行被递增为超出为存储来自矩阵的对象而设置的界限为止,此时判定1890分叉到“否”分支并且处理在1895处返回到调用例程(见图16)。
[0096] 图19是示出了用来在二维排序中对对象进行分组的处理的流程图。处理在1900处开始,于是在1910处,行被初始化为二,这是因为对象驻留在以行二开始的每隔一个行上。在步骤1920处,列被初始化为一。被发现的下一对象将被移动之处的新列(NEW_COL)在步骤
1925处被初始化为一。关于对象是否当前驻留在所选择的行和列处做出判断(判定1940)。
如果对象在所选择的行和列处,则对象在预定义过程1950处被水平地移动到新列(NEW_COL),并且在步骤1960处,新列被递增一。在另一方面,如果对象不是当前驻留在所选择的行和列处,则判定1940分叉到“否”分支从而绕过预定义过程1950和步骤1960。
[0097] 在步骤1970处,所选择的列被递增一。关于所选择的列是否在对象矩阵中做出判定(判定1975)。如果该列在矩阵中,则判定1975分叉到“否”分支,该分支循环回去以检查对象是否驻留在所选择的行和列处并且将对象相应地移动到新的列(NEW_COL)位置。这一循环继续进行直到所选择的列不在矩阵中为止,此时判定1975分叉到“是”分支。在步骤1980处,所选择的行被递增二,这是因为对象此时驻留在每隔一个行上。关于所选择的行是否在对象矩阵中做出判定(判定1990)。如果所选择的行在矩阵中,则判定1990分叉到“否”分支,该分支循环回去以将所选择的列初始化为一(步骤1920)、检查对象是否驻留在所选择的行和列处并且将对象相应地移动到新的列(NEW_COL)位置。这一循环继续进行直到所选择的行不在矩阵中为止,此时判定1990分叉到“是”分支于是处理在1995处返回到调用例程(见图16)。
[0098] 图20是示出了用来在二维排序中压紧对象的行的处理的流程 图。处理在2000处开始,于是在步骤2010处新的行(NEW_ROW)被初始化为一。在步骤2020处,所选择的行被初始化为二。在步骤2030处,驻留在所选择的行处的对象的整个行被选择,并且在预定义过程2040中,所选择的行中的每个对象被移动到新行(NEW_ROW)。
[0099] 在步骤2050处,新行(NEW_ROW)被递增一,并且在步骤2060处,所选择的行被递增二,这是因为对象驻留在每隔一个行上。关于递增后的行是否在用于存储矩阵的行的界限之外做出判定(判定2070)。如果所选择的行不在用于存储矩阵的行的界限之外,则判定2070分叉到“否”分支,该分支循环回去以如上所述选择行并使之移动。行的这一循环和移动继续进行直到所选择的行在用于存储矩阵的行的界限之外为止,此时判定2070分叉到“是”分支于是处理在2095处返回到调用例程(见图2095)。
[0100] 图21是示出了被散开并且然后移动到正确行的一组对象的第一示图。排列2100示出了栅格或者矩阵式样中的未排序对象的初始排列。在图17中示出的处理被用来将对象从排列2100传到排列2110。在图18中示出的处理被用来将对象从它们在排列2110中的相应位置移动到它们如在排列2120中示出的正确行。
[0101] 图22是示出了被分组并压紧以完成二维排序的第二示图。在图19中示出的处理被用来将来自在图21中示出的排列2120的对象分组为在图22中示出的排列2200。在排列2200中示出的经分组对象使用在图13中示出的线性排序例程被排序,从而产生如在排列2210中出现的经排序对象。最终,在图20中示出的处理被用来将来自排列2210的对象压紧为在2220中示出的经压紧和经排序的排列。
[0102] 本发明的优选实施方式之一是客户端应用,即代码模块中的指令(程序代码)集合或者其他功能描述性材料,该代码模块例如可能驻留在计算机的随机访问存储器中。在被计算机要求之前,指令集合可被存储在另一计算机存储器中,例如存储在硬盘驱动中或存储在诸如光盘(最终用于CD ROM)或磁盘(最终用于磁盘驱动) 的可移动存储器中。因此,本发明可被实现为用于在计算机中使用的计算机程序产品。此外,尽管所描述的各种方法被便利地实现在被软件选择性地激活或者重新配置的通用计算机中,本领域普通技术人员还将认识到此类方法可能以硬件实现、以固件实现或者以被构造为执行所需方法步骤的更加专用的装置实现。功能描述性材料是给予机器功能性的信息。功能描述性材料包括但不限于计算机程序、指令、规则、事实、可计算函数的定义、对象和数据结构。
[0103] 虽然本发明的特定实施例已被示出和描述,但是本领域技术人员将会清楚基于这里的教导可以在不脱离本发明及其更广方面的情况下做出改变和修改。因此,所附权利要求将在其范围内包含在本发明的真实精神和范围内的所有此类改变和修改。另外,本领域技术人员将理解如果希望具体数目的所介绍的权利要求要素,则这种意图将在权利要求中明确陈述,并且在没有这种陈述的情况下不存在这种限制。对于非限制示例,作为对理解的辅助,后附的权利要求包含对介绍性短语“至少一个”和“一个或多个”的使用以介绍权利要求要素。然而,这种短语的使用不应当被解释为暗示通过不定冠词“一个”介绍的权利要求要素将包含这样介绍的权利要求要素的任何特定权利要求限制为仅包含一个这种要素的发明,即使当同一权利要求包括介绍性短语“一个或多个”或者“至少一个”以及诸如“一个”的不定冠词也是如此;这同样适用于权利要求中对定冠词的使用。
QQ群二维码
意见反馈