CN102711935A - 玩具系统和定位系统 - Google Patents

玩具系统和定位系统 Download PDF

Info

Publication number
CN102711935A
CN102711935A CN2010800510818A CN201080051081A CN102711935A CN 102711935 A CN102711935 A CN 102711935A CN 2010800510818 A CN2010800510818 A CN 2010800510818A CN 201080051081 A CN201080051081 A CN 201080051081A CN 102711935 A CN102711935 A CN 102711935A
Authority
CN
China
Prior art keywords
toy
symbol
sensor
path
sequence
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.)
Granted
Application number
CN2010800510818A
Other languages
English (en)
Other versions
CN102711935B (zh
Inventor
阿拉斯泰尔·特里克特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Liberation Consulting Ltd
Original Assignee
Liberation Consulting Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Liberation Consulting Ltd filed Critical Liberation Consulting Ltd
Publication of CN102711935A publication Critical patent/CN102711935A/zh
Application granted granted Critical
Publication of CN102711935B publication Critical patent/CN102711935B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63HTOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
    • A63H11/00Self-movable toy figures
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F9/00Games not otherwise provided for
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63HTOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
    • A63H18/00Highways or trackways for toys; Propulsion by special interaction between vehicle and track
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63HTOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
    • A63H18/00Highways or trackways for toys; Propulsion by special interaction between vehicle and track
    • A63H18/16Control of vehicle drives by interaction between vehicle and track; Control of track elements by vehicles
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63HTOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
    • A63H33/00Other toys
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • G06F3/0317Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B5/00Electrically-operated educational appliances
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63HTOYS, e.g. TOPS, DOLLS, HOOPS OR BUILDING BLOCKS
    • A63H2200/00Computerized interactive toys, e.g. dolls

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Human Computer Interaction (AREA)
  • Toys (AREA)

Abstract

一种玩具系统,包括一个表面(1),其设置有位置编码信息;以及一个玩具(2、20)设置成可移动通过所述表面(1),所述玩具(2、20)包括至少一个传感器(4),其读取所述位置编码信息;处理部件(3)设置为处理由所述传感器(4)读出的所述位置编码信息,以在所述表面(1)根据所述位置编码信息确定所述玩具(2、20)的位置。

Description

玩具系统和定位系统
技术领域
本发明涉及玩具系统、定位系统,以及相关的方法。
背景技术
有或者没有致动器驱动附件、灯和/或语言能力的动力玩具是本领域熟知的。通常它们通过马达获得动力,并构造成类似于人形、动物、车辆及其他普通游戏物品。
通常,玩具的运行是被预先确定的,仅为用户设有很少改变其行为的选项,这样孩子们可能很快就觉得厌烦。认识到这点,已经记述的玩具(例如US5697829、US6012961、US 6645037和US6902461)可以为儿童的独立操作而被编程。不幸的,这是一个需要抽象思维的复杂过程,以将虚拟世界的程序步骤和玩具在现实世界中的移动联系起来。这使得它们不合适许多孩子,特别是年幼的孩子。
因此,需要有一种可以被教会新“移动”及其他动作的玩具(例如,臂/头部移动、语言等),它们可以仅仅通过孩子在现实世界中进行控制并以肢体动作表示给玩具孩子想要它做什么。这种玩具具有易接近和可被非常幼小的孩子操作的优势,并且通过使得孩子的游戏更具有变化更有趣,来持续保持孩子的兴趣。
这样的玩具同样具有教育孩子的优势。孩子学习世界的一种方法是通过游戏及其他玩耍方式施加自身的设想并隐式的(implicitly)观测其行动的结果。“哑”玩具经常在这些设想中作为道具或演员,为了娱乐孩子经常会一再重复。这种重复进一步地促进了学习过程,每次设想的重复会有更多新发现。如此一种作为一个互动型的活动演员的玩具,其角色可以快速的在孩子的游戏中被教会,并一再重放该部分,支援并鼓励了学习过程。
这种玩具的一个简单实例由P.A.Frei先生在US6354842中给出,其描述了一种具有运动录制和重放能力的滚动玩具(rolling toy)。在录制模式中用户推动该设备通过其身处的任何表面(例如地板)的路径,滚动其固定在下部的两个轮子。光学编码器监控每个轮子的旋转,通过内存储器以一个时间序列的形式存储这些检测到的转动以完成录制。
当该玩具被设置为重放状态,主板上的处理器产生驱动信号以将电机连接轮子,以引起轮子的旋转(如通过传感器的测量)以匹配存储器中存储的转动录制的时间序列。以这种方法所述玩具的移动被复现。
尽管这种方式使得儿童容易为玩具“展示”去做什么,但其具有三个关键的缺点。
首先,所述用于确定玩具路径的定位方法没有基于外部参照(externalreference)。由于仅监控了轮子的旋转,所述玩具没有途径感觉其相对于环境或其它玩具的位置。这种方法阻止了创造可自主地与环境或其它玩具互动的玩具。
其次,由于上文所述,从录制开始,所述玩具的定位与定向不能为所述玩具所知。在重放状态中,用户必须保证该玩具处于正好相同的起动位置和方向,否则结尾位置将不会相同。特别是对于幼小的孩子而言,这会是一个艰巨的任务,阻止了使用者之间便利交换录制。即使一个来自记录启动定向小的角偏差,也能引起玩具经过一个长路径移动到所述路径的末端时显着地偏离路线。这导致用户不抱幻想,特别是如果他们试图让两个或更多这种玩具会面(meet)或协调一致时。
第三,在录制或重放期间,该玩具在轮子和地面之间打滑(slippage),从而是很脆弱的。该打滑导致玩具所认为自己已移动的距离(根据轮的旋转)跟实际上玩具的移动距离(根据于地面)是不同的。这些误差的积累潜在地导致了在完成路径时的大误差,导致用户进一步的失望。
对于以上的明显的缺点,Frei先生没有提供任何可选择的位置传感方法的建议。他建议通过利用大的10瓦电机、电池或自重来抵消打滑,但是这明显有以下缺点:影响了所述玩具的轻便性,孩子在训练模式中移动玩具所需的精力,并且影响了玩具的制造、装运和存货成本。
US6459955记述了一种家用清洁机器人,其使用了一个用于定位的外部参照部件。然而,记述的该部件是昂贵的,其涉及成像(例如利用建筑的顶灯或阴影作为导航的标记),或者采用发射信号进行三角测量。这使得它们先天的不合适用于玩具。
最后,US6491566描述了一队自驱动的从属机器人,其可以是通过一个中央控制器通过一个场传感器收集到的中央取得的定位感应信息控制。记述的这种利用摄影机向下拍摄的场传感器,其相应的花销使得它们先天的不合适玩具市场。此外,该发明整体利用一中央控制器通过用户控制多个玩具。没有记载(乃至预想)训练玩具如何行动或允许玩具利用训练特性自主活动的方法。
在本发明涉及的方面,现有的利用编码的表面进行位置感应的技术具有若干缺陷,主要是关于实施成本。
US4009377描述了窗口序列(windowing-sequences)如何可用于采用打印的条型码获得、追踪和恢复单个(一维)坐标轴,条型码反射出来的光线以诸如是光敏晶体管的传感器检测。窗口序列(a.k.a.de Bruijn序列、m序列、伪随机序列)中,W序列符号(W是窗口长度)的每一个子序列在整个序列中是独一无异的,故在该序列中具有一个独一无异的位置。因此,如果所述序列的每个符号代表一个坐标,则在该坐标的空间的传感器位置可以仅根据检测W相邻符号而判定。
将位置编码印刷到表面上,并用单个光敏晶体管(或类似元件)感应它们,为位置感应玩具提供了一种潜在的可承受的解决方案,但这是假定其可以被延至二维,并假定电子线路采样并数字化所述传感器的输出的成本需要足够地低。
US5442147描述了如何将一维的窗口序列合并成二维矩阵的值,二维矩阵的值可以被编码为一个打印在一表面上的正方形的着色栅格。该正方形被三个光敏元件检测,其中每个有一个不同的滤色器,其输出通过摸拟数字转换器(ADC)数字化。该正方形必须至少用六种颜料着色(因此所述传感器的移动可以以任何方向追踪),该摸拟数字转换器必须有合理高的分辨率,以区别并数字化反射自多彩正方形的红色-绿色-蓝色(RGB)光元素。这些因素使得对于玩具而言,其传感器和相应的电子线路较昂贵。更明显的,该方法仅能处理一个传感器的反转(相对于一个坐标轴),至少直到该反转被确定也是如此,这样使它的制造不适于自由形式的玩耍,因为玩具的路径可以有快速地连续多次反转。
US7553537和US7079112都描述了将表面上的颜色或密度用来直接将坐标位置代码化。关键的障碍是密度或颜色的数量一定要跟编码位置的数量相同。这使标码的打印变得复杂,而且要求摸拟数字转换器具有高分辨率,以识别因颜色或密度的变化而造成的微细差别。当然,坐标空间越大,问题越严重。因此,在所述玩具移动经过表面时,特别是如果通向传感器的光的路径有任何长度偏差,则数字化的误差更容易出现,因为这将影响所述传感器的光感程度。出现这种情况的原因,可以例如是通过折曲所述玩具的底盘,这是因为玩具移动时用户的手施于其上的压力有变化。
其它的技术,例如US4686329、US5343031和US6032861,以及许多授予Anoto AB和Silverbrook Research Pty有限公司的专利,利用打印在表面的丰富内容的二维标码将位置代码化。这些都要求一个复杂的多传感器矩阵来将标码进行解码,例如,一个或多个线性传感器阵列或电荷耦合装置(CCD)以二维成像。这种传感器和电子线路处理它们的信号所需的成本,使得它们不适合本发明。
发明内容
本发明提供一种玩具系统和定位系统以及相关的方法,具体在下述权利要求中进行描述。
附图说明
本发明的实施例将仅通过举例来被记述,参照下述附图,其中:
图1是玩具系统的共同特征(实线)和可选特征(虚线)的框图。
图2是玩具系统用于《著名人士》应用的示意图。表面编码和有些机构的细节没有示出。
图3(a)是图3(b)中A-A截面的侧视的可选变速器9的工作原理图。
图3(b)是图3(a)中B-B截面的前视的可选变速器9的工作原理图。
图4是所述《著名人士》应用在某些方面(没有示出所有功能)运行的概要流程图。
图5是冠军玩具之一的示意图(表面及其他玩具未示出)。
图6(a)图示了举刀前臂81和刀100的两种状态(包括前臂甲83在内的某些特征已经省略)。
图6(b)图示了举刀臂80和刀100的五个方向(包括前臂甲83在内的某些特征已经省略)。
图7图示了受训者110冠军的区域栅格112。
图8图示了教练111的定向栅格116。
图9(a)、(b)和(c)说明了用于冠军应用的训练阶段程序的运行流程图。所述流程图通过圆圈内的字母连接符相互通连。
图10(a)、(b)、(c)、和(d)提供了受训者110和教练111展开的路径和行动的实例,其可能在冠军应用的训练阶段的某些部分捕获,然后变为一个事件系列。
图11(a)、(b)和(c)是冠军应用的战斗阶段程序运行的流程图。所述流程图通过圆圈内的字母连接符相互通连。
图12是用于教练111在冠军应用的训练阶段期间运行的对练程序的概要流程图。
图13图示了在已经发展的社会仿真式玩具中的感情状态、刺激源、行为和知识的典型互动。
图14图示了更大范围的感情状态、刺激源、行为、知识和态度,这通过将本玩具系统的教导施加在社会仿真玩具上而变得可能。
图15是本玩具系统的Wuggles应用示意图。表面的编码未示出。
图16提供了可爱猫头鹰(Wise Old Owl)玩具的前视图和侧视图。
图17图示了如何将正交的两幅线性部件叠加编码为两个座标轴。注意显示的序列编码仅仅是例证性的。它没有预计描述任何特定序列的编码,任何需要的特定特性可以通过所述方法公开在此处。
图18是定位编码表面1的一角的部分的示意图。注意该显示的序列编码仅仅是例证性的。
图19显示了符号线300或301可以是如何宽度编码的,并示范了如何符号代码化坐标位置的窗口。背景307没有显示。
图20图示了感应点4的关键性部件(没有必要示出所有特征)。
图21(a)和(b)如何用一第三材料打底形成正方形310,可能用来解决前景线性部件301或300遮蔽背景的线性部件300或301。图21(a)示出了具有深色背景307的正方形310应该如何着色,图21(b)示出了具有浅色背景307时它们应该如何着色。
图22(a)、(b)和(c)示出了符号线组302和303的可供选择布置方案,以及表面1可选择的形状。注意该序列编码的显示仅仅是例证性的。交叉的正方形310和背景307没有显示。
图23显示了定位传感系统内部的主程序回路的初始化和运行的流程图。
图24显示了子程序AcquirePosition361运行的流程图。
图25显示了子程序TrackPosition362运行的流程图。
图26显示了子程序StartRecovery377运行的流程图。
图27(a)、(b)和(c)示出了数据结构Scores()、RecTree()和NewScrs()的结构和含意,其用于所述定位传感系统内部的子程序StartRecovery377和RecoverPosition363。
图28示出了在5次良好的定位符号检测产生5个新层后,数据结构Scores()和RecTree()的结构和含义。
图29(a)显示了当可能移动时用RecTree()被动模式定位计分,也就是说通过子程序RecoverPosition363进行计分。
图29(b)显示了用于填充被动模式定位的子程序RecoverPosition363的常数矩阵RecTBL()的数据。
图30(a)、(b)和(c)图示了被动模式定位的子程序RecoverPosition363运行的流程图。该流程图通过字母连接记号环绕在流程图上。
图31(a)和31(b)图解了形成在RecTree()正确路径的末端是如何分支的,图31(c)示出了如何用比传感器340支持的实际轨迹更少的反转量进行分支。
图32示出了如何在可移动的物体在自主模式旋转探测期间,用传感器340的方向改变相关的坐标轴。注意该显示的序列编码仅仅是例证性的。正方形310和背景307的交叉没有显示。
图33示出了确定所述可移动物体的旋转方向时产生的误差边缘。注意显示的序列编码仅仅是例证性的。交叉正方形310和背景307没有显示。
图34(a)显示了可能用来修改填充RecTBL()常数矩阵的数据,当其用于自主模式定位的RecoverPosition363子程序时。图34(b)示出了编制图34(b)数据时考虑的移动。
图35(a)和(b)示范了通过嵌入定向标记到那些序列302或303中,将符号-行序列进行编码从而定向。注意显示的序列编码仅仅是例证性的。背景307没有显示。
具体实施方式
玩具系统
各种不同的玩具和游戏可以由下文总体描述的方法衍生出。为了进一步的帮助理解,随后会提供这种玩具特定的实例。
如下所述的玩具分享以下的共同特征,其图示在图1中。
1)玩具可以滚过一个或多个的表面1、表面1全部或部分地被位置编码。若多个表面1被采用,玩具(们)可以设置部件以从一个表面1移动到另一个表面1。
表面1至少代码化为一维,以使大致标示为4的对所述标码敏感的感应点的相对或绝对坐标可以被判定。笛卡儿坐标、极坐标或其它任何座标的装置可以被采用。本文件总体不是限制性的,但为了方便起见,表面1的代码是二维笛卡尔坐标。表面1的编码和解码可以采用本领域已知的方式,其可以同样不受限制地依赖任何作用:光学的、电学的、磁的、静电的、热力的或声波的,或者任何可以传递能量的作用方式或力,或任何利用粗糙性或其它地形影响(topographical effect)的编码。
2)一个基座2,其可以或不可以从安装在基座2上的机身分离。机身可以是适于所述玩具系统的应用的任何人、动物、外星人、虚构的、车辆、结构或其它形式。基座2包括:
a)一个或多个感应点4,其可在感应点4移动过表面1时感知表面1上的各个标码。
b)解码部件8(连同感应点4、处理部件3和存储部件15)能够通过感应点4感知所述标码后捕获、调整、和数字化感应点4的输出信号以提取所述标码的值。例如,本领域公知的解码部件8可以包括一个采样和保持放大器(SHA),继之以一简单的数字转换器(原生的摸拟数字转换器)。
c)支撑部件6允许玩具自由地移动过表面1,或靠其自身的动力驱动并行驶过表面1(如果设置有后文所述的驱动部件5),同时保持感应点4相对于所述表面1的标码适当的布置,以使其有效操作。例如,支撑部件6可能是旋转部件,诸如玩具的基座2向下凸出的轮子、踏步板或球体。
d)动力部件16为玩具提供动力,动力转换部件将动力部件16与所述玩具进行可能需要的连接和分离。
3)如现在的记述,基座2将通常容纳一处理部件3和控制部件11。然而,在某些实施例中这些部件可能被放入一个中央设备中,中央设备与所述玩具相连接,以使这些部件可以共用于多个玩具,蕴涵有明显的成本节约。
a)处理部件3(例如微控制器、微处理器、数字信号处理器、系统单晶片设备等等)连接存储部件15(例如ROM、RAM、PROM、EPROM、EEPROM、闪存等等)。处理部件3能控制所述玩具内的系统,以利用感应点4和解码部件8的标码输出确定和追踪玩具的位置和运动,并为该特定的玩具执行一个游戏或动作。
b)控制部件11可能通过机械开关、声音认别指令、手势认别、远程控制或其它任何本领域已知的部件提供,由此用户可控制所述设备的运行与作用(如下文所述)。控制部件11由于玩具的其它作用亦会隐含地存在。例如,玩具的定位能力,如通过其接近表面1上特定的部件、或通过知悉玩具停止移动、或当声音输入到所述玩具的声频部件13(如果有的话,见后文)在一段时间内下降到某个程度时,可能用来控制玩具的运行。
如下所述的玩具与玩具系统一起建立,其具有一个叫做被动模式的概念运行方式。它们可以同样具有一个叫做主动模式的第二概念运行方式。
在被动模式中所述玩具自由地绕所述表面1被推动。被动模式具有一个子模式,其能够感知并记录用户在特定时间段引起的玩具活动的数据。这些动作记录存储在存储部件15中的数据结构里,其捕获了动作以及动作的时间和/或顺序。
动作记录可以包括在玩具被所述用户推过编码的表面1时检测到的方向、位置、速度、路径或其它任何与玩具的移动(或缺少移动)相关的数据。它亦可以包括通过所述用户起动(或缺少起动)的玩具功能的数据。这可以包括,例如,在玩具的路径中功能被启动/停用的点;功能的识别;功能起动的强度和持续时间;功能的内容;和/或任何其它起动该功能的相关参数。
需要明白的是这些功能可以包括任何致动器10、指示器12、声音合成、声音重放或记述于此处或本领域可能已知的的其它功能。
举例来说,环境数据可以包括或源自于(其不限于此):关于玩具的倾向、位置、移动或功能起动的数据(可以或不可以被归入动作记录中);和/或关于玩具相对表面1或其环境特征的位置的数据;和/或关于其它玩具或被动附件33(如下所述)的倾向、位置、移动或功能起动的数据。通常,这些数据将已经与动作记录存在关系(诸如相对时间关系)。该关系可能根据玩具涉及的游戏或动作所限定并确定。
在被动模式和主动模式之间,玩具可以进入一个处理阶段(自动的或被用户驱动)以分析在被动模式期间捕获的动作记录及其相应的环境数据。这阶段的输出是一系列的行动序列,各行动序列具有他们自己相应的环境数据(如果有的话)。玩具无论涉及哪个游戏或动作,这些行动序列会用于主动模式以控制玩具的移动和活动(此处叫做《扮演》或《重放》该行动序列)。此外,行动序列和任何相应的环境数据可由玩具供应者或其它的许可人员创造,以装备在玩具中、或供下载至玩具中、或供插入玩具中。
举例来说:作为其最简单的方式,处理阶段可以在动作记录和行动序列之间产生一对一变换。这在将行动记录按照原样重放是有用的。可选择的,所述变换可以包含一个修正处理,例如允许加速或降速重放,或用本领域技术人员了解的其它方法作出改变。
在一个更复杂的程度上,处理阶段可以处理和/或分析一个或多个动作记录和它们的环境数据(来自一个或多个玩具)以及这些记录和数据的不同部分之间的关系;亦可以根据玩具涉及的游戏或动作的算法,以得到或产生行动序列和相应的环境数据(如果有的话)。在这实例中,动作记录和行动序列之间的关系可以或不可以被行动序列所辨别,而且关系不一定是一对一的,亦可以是一对多或多对一,或多对多的。
处理阶段同样可以在被动模式和主动模式之间出现一次或多次。例如,额外的环境数据可以在主动模式期间收集,而这些数据可以例如是与主动模式最近扮演的特定行动序列的《成功》与否(对该游戏而言)有关。利用这新的环境数据,本系统可以对行动序列和/或其原始的动作记录进行再加工、或利用该行动序列和/或其原始的动作记录为基础以产生整个新的行动序列和相应的环境数据(如果有的话)。这样,玩具可以例如是随着时间进行学习并进化。
现在对主动模式进行说明,其中,玩具可以靠其自身的动力绕表面1移动(例如通过将旋转部件结合到它们相应的首要推进器上),和/或激活其功能。这在处理部件3的控制下自主的发生,并被通过处理部件3可能扮演的特定行动序列支配。在某些玩具中,可以仅仅涉及重放用户选定的行动序列。而在其它玩具中,玩具可以在任何给定时间自动的决定使用哪一个行动序列,并且根据其涉及的游戏或动作重复进行。这些决定是通过游戏或动作的规则或参数所管限的算法而作出。例如,某些实施例中行动序列的选择可能基于选定行动序列的环境数据以及玩具相对其涉及的游戏或动作的环境之间的某些限定关系。例如,这可以是在玩具需要选择其下一个行动序列以使其继续参与游戏或动作的时候或之前的环境。
与本玩具系统一起建立的某些玩具可以同样合并以下任何或所有特征(或其它任何本领域已知的特征)。这些在图1的框图以虚线形成的块表示。
某些实施例可以具有致动器10,以控制可移动附件的位置和/或排列,可移动附件的例子包括人形、动物形或机器人形的玩具的臂部、手部、头部、主体、尾部、翼部、鳍部、翅部、腿部或面部特征。当然,如果玩具代表一车辆、结构或其它物体,致动器10可以控制物体中的机构(例如铲、门、钻头、导弹、推进器等等)。清楚的是,这些致动器10和附件有多方面和多种用途的设计。
某些实施例可以包含指示器12,其设置来显示图象,或发光、发热、发声、振动或作出某些其它的作用。
某些实施例可以包括声频部件13(包括例如扩音器的声频输出部件,如果需要的话,还可以包括例如麦克风的声频输入部件)。这可以提供语言合成;和/或语言录音和/或重放,或对语言的修改和再生;和/或语言识别。
致动器10、指示器12和声频部件13可自主的通过处理部件3控制,和/或它们可通过控制部件11控制。如上文记述,关于该使用的数据可包括在动作记录、环境数据和/或行动序列当中。
某些实施例可以包括驱动部件5,其被处理部件3控制,亦有可能被控制部件11控制。在这些实施例中,支撑部件6为旋转部件,其部分或全部可连接驱动部件5以致玩具可以自主的驱动它自己绕表面1活动。驱动部件5可以同样分别地操作玩具上的致动器10。驱动部件5可以例如是电动机、电磁线圈或任何其它首要推进器,其具有适当的驱动电路以提供在处理部件3和首要推进器之间的控制接口。
某些实施例可以包含机械转换部件(例如可选变速器9),以连接驱动部件5并能选择性的将来自驱动部件5的动力重新引导到一个或多个可能的选择目标,例如旋转部件和/或致动器10。
某些实施例可以具有被动的稳定部件7(例如滚球、惰轮、滑轨),其设置在玩具基座2上以配合支撑部件6增强玩具的稳定性。
某些实施例亦可以包括通信部件14,其例如利用红外线、无线、有线或其它收发器实施。相同或不同的通信部件14可以允许玩具之间彼此沟通和互动;和/或它可以允许玩具通连一计算机(从此连接因特网),从而允许行动序列的上传或下载。这允许使用者与其它使用者通过因特网的网页分享它们的行动序列,这样会增加玩具的乐趣。这亦可以允许玩具装备软件,这样可以允许行动序列被建立、检视、编辑、管理、产生或操控,并下载到玩具中。通信部件14的形式亦可以是可移去的存储器,其会允许数据在玩具之间有形地传递。
在某些实施例中,表面1可以进一步的包含图形、工艺图或其它与应用或玩具商标有关的特征,只要它们不干涉表面1的位置编码部件便可。在这些实施例中,数据可传递到或在存储部件15中,以使玩具可赋予含意(与所述图形相关)到表面1的各个区域上。例如,如果表面1的部分代表一玩耍区域,提供到存储部件15的数据会包含该玩耍区域的表面1坐标,以致玩具会通过比较自己的位置而知道它已经进入其中。
表面1可以是独立的,或可以是玩具特定的较大结构的其中一部分,诸如一竞技场。它可与玩具分别提供,或与玩具一并提供。亦可提供描述了某些图示或其它的覆盖图以重叠在表面1上。这些覆盖图和表面1可以同样通过电子装置供给用户,使用户可以在家打印表面1或覆盖物。
某些实施例可以包含离去部件,其能够确定玩具或其感应点4是否已经移动或即将移动至表面1的位置编码部分之外。某些实施例可以包含提起部件(能确定玩具是否从表面1上提起)和固定部件(能确定玩具是否被用户握住并让其不能够自由自主的移动)作为其控制部件11的部分。
某些实施例可以包含附加传感器,其通过本领域已知的技术建立,玩具可使用附加传感器捕获关于其环境和/或其与该环境之间的关系的详细情况。
某些实施例可以允许玩具为了不同的游戏或应用被重新设置,这可以通过用本领域已知的任何多种方式全部或部分地置换玩具的特定部分(例如,处理部件3、存储部件15、主体、附属部分、附件33、表面1等等)、和/或通过将新建数据和程序插入处理部件3和存储部件15中来实现。
被动附件33不是自我驱动的,其可在某些实施例的玩具系统上提供。某些附件可能真正地静态的,其它的也许已有位置感应和通信部件14,以使它们可以确定并传播它们的位置和识别数据至玩具或其它物体。被动物体可能常规是静止的(例如建筑、家具等等),或它们可能被玩具根据游戏或动作而驱动(例如车辆、飞机、冰球、球等等)。
本玩具系统可能施加于各式各样的游戏、活动和应用中,其可包括但不限于:赛车、运动、谜题、策略、冒险、知识、桌游或其它竞争性的基于点和/或位置定位的游戏或教育游戏、活动或应用。在这些游戏、活动或应用中,玩具可能单独作用或是团队合作的。
为了图解玩具系统的范围(不限制扩大其应用的可能性),现在提供为几个种类的玩具而设的示范性实施例:角色扮演、竞赛性、社会模拟和知识性的。角色扮演和竞赛的玩具都具有主动和被动模式的运行。角色扮演玩具实质上记录并重放玩具的路径和活动。竞赛的玩具在第一阶段学习行为,并自主的在一与其它玩具进行竞赛的第二阶段中适应那些已学习的行为。社会仿真玩具主要是自主的,故通常在主动模式中使用预编程于其中的行动序列。知识性的玩具,跟其它不同的是,它没有自我驱使而仅具有被动模式的运行。它们实质上作用为定点设备,提供其点到的表面1部件的相关信息。
这些不仅仅是玩具可能的应用种类。例如,玩具系统可以不仅仅成为一种游戏或专门应用的一部分,而可以为车辆或机器人结构提供定位能力。可选择的,它可以为一在计算机中进行的游戏仅提供定位(例如定点)输入。
每个实施例可以包含如上所述的共同特征,并且如需要则可以合并任何需要的特征以及本领域公知的特征。因此,下文集中说明在玩具系统的特定于实施例中的细节。省略的方面可以同样包括(但不限于):任何可能结合于玩具中的玩具制造者公知的特性、特征和技术;电子和机械结构的构造和安装细节;以及各种《部件》的实施和组织方式,等等。
角色扮演:著名人士
《著名人士》是为初露头角的经理人设计的玩具套装。玩具系统的编码表面1用作舞台,自我推进并有位置意识的玩具则作为演员们。如图2所示,所述套装具有一个或多个玩具底座2,其具有可拆装的玩具主体20。所提供的(或分别销售的)玩具主体20代表不同的人形、动物、车辆、物体等。
在套装的一个《衣橱》部件中,提供了可替换的夹住式服装及其他试衣,其大致指示为21,可以附着于玩具上。同样,一个《扮装》部件提供夹住式脸,或者独立的夹住式脸部特征和发型,这些都大致指示为22,或其它适合于不同的主体的装饰物。在《著名人士》的一个可选择实施例中,人形的表面可由空白且容易擦干净的材料制成,使用户可利用《扮装》部件中提供的蜡笔或干擦记号笔等创造他们特有的面孔。
被动附件33,诸如图2所示的马,可提供于一《道具》部件中,或分别地提供给剧院套装。被动附件33可以是任何物品的方式,包括但不限于:车辆、船舶、飞机、建筑、篮子、战斧、植物、动物等等。
一个《布景》部件亦可以提供若干独立的垂直支柱31,其具有夹子能保持板32(例如纸张、卡片或塑料)用作布景的背景幕。预打印的布景板32可在玩具套装中提供,或是所述《布景》部件可以包含彩色铅笔、油漆或其它记号笔以及空白图幅32,让用户创造他们自己的背景幕。
如果它不与使用的位置编码系统发生干涉,表面1可以打印成看似是舞台,或它可以被打印成场地布景以加强戏剧效果。具有不同的艺术加工的额外表面1,可以与玩具套装分开销售。
两个共轴、独立的轮子中的每个都可以被连接至一个关联的首要推进器,其突出在玩具基座2下并提供支撑部件6。一个滚球同样突出在玩具基座2下,以提供稳定部件7。这些部件共同保持玩具稳定在表面1上。
在玩具基座2中,两个感应点4在基座2的前端和后部(即在所述轮的轮轴的前部和尾部),允许玩具确定在表面1的两点的位置,以及其相对于纵轴的方向。在其它的实施例中,可以仅仅提供一个感应点4,其方位可以通过比较X和γ交叉的坐标的方位和比率来确定。
另外,亦利用固定在基座2的边缘的红外收发器23提供通信部件14,从而允许玩具与一个计算机交换行动序列,并与表面1上的其它演员进行通信。由于第一玩具(或用户的手)可能阻挡第二玩具和第三玩具之间的通信,某些实施例可以包括小的反射挡板30,其排列在表面1的边缘周围,以将通信反射回到表面1的区域,从而为第二玩具和第三玩具之间的通信提供多个可供选择的通道。
可选择的,单个红外收发器23可以固定在玩具面向上处,以代替固定在基座2周围的红外收发器23,其能够将自天花板的红外线传送反射至其它玩具,以及接收那些其它玩具自天花板反射的红外线传送。进一步的实施例可以通过依赖一个通信协议来解决这些问题,其中第一玩具《听到》第二和第三玩具的传送,如果第三个玩具因丢失那些传送而作出请求,第一玩具可以重复第二玩具的传送。当然,任何本领域用于在移动结点之间安排、建立并操作通信网络的常规技术也可以使用。
在玩具基座2中亦有一可选的变速器9,其可操作地将两个主推进器连接到两个轮子上,或连接到若干对致动器的一个输出轴上。这些对子中的一个与一连接器34连接,并连接固定在玩具基座2的前边缘上的致动器驱动插座35。根据这些,玩具可以与另一玩具连接/分离,或与诸如车或飞机的被动附件33连接/分离,例如使得玩具《进入》所述附件,《驱动》它,然后离开它。同样,致动器驱动插座35允许玩具为与其连接的附件33提供原动力,例如将在其它情况下被动的飞机附件33的推进器转动。
还有一个固定在玩具基座2的前边缘上的轮驱动插座36,将玩具的轮转动传递至与其连接的被动附件33。例如,如图2所示的马与驱动插座35和36都接合。当玩具移动并轮旋转时,该运动通过轮驱动插座36传递到马的腿部,以模拟一个行走运动。如果致动器驱动插座35被选定并被驱动,则马的头部将在一个抬头运动中前后移动。
当一个身体被安装在玩具基座2上时,其余的致动器输出轴可以与在身体内的机构(例如可以凸轮、齿轮、杆、皮带、联动装置等形成)接合,以移动与该机身类型相联系的附属部分。举例来说,在一人形身体上,所述机构可以驱动诸如手臂、头部或五官(眼睛和嘴)等的附属部分。所述机构同样可以驱动安装在躯壳上的连接器或驱动插座。例如,身体的手部可以包含设计成能允许玩具捡起和放下例如是财宝箱的被动物体的连接器。
在某些实施例中,当身体被安装在基座2上时,在身体内的机构可以关联到与轮关系的旋转。例如腿部可以被驱动,以致它们在轮旋转时看起来像《行走》。
以类似的方法,当身体附于玩具基座2上时,身体内的指示器12电连接处理部件3和控制部件11,并被处理部件3和控制部件11控制。
可选变速器9通过一变速主推进器42驱动(以与用于驱动轮的主推进器48、49相区分),其可以以本领域公知的任何方式所构造。举例来说,一个可能的实施方式现参照图3(a)和图3(b)描述,图中示意性的显示了一个变速器的左视图(图3(a)-图3(b)中的A-A剖视图)和前端(图3(b)-图3(a)中的B-B剖视图)。注意这是一个示意性的示例,仅仅显示齿轮是如何连接在一起传递动力的,其不是按比例的,并已省略诸如轮齿、轴、支架、凸起部等关键细节。
一个选择器轮40通过一个蜗轮41(选择器-蜗杆)(往任一方向)驱动,蜗轮位于变速器主推进器42的输出轴上。一个惰轮43自由地绕安装在选择器轮40上的轴旋转。惰轮43永久性和驱动齿轮44相啮合,驱动齿轮44附着于轴45,轴45附着于另一驱动齿轮46,其通过在两个主推进器48或49之一的输出轴的蜗轮47(所述驱动-蜗杆)驱动。惰轮43可以通过选择器轮40的旋转来移动,如此惰轮43与若干输出齿轮50之一(挑选的)相接合,其然后可以由主推进器48或49驱动。这些不同的位置的惰轮43以实线轮廓线43和虚线轮廓线43A和43B显示。
输出齿轮50各驱动一个蜗轮51(致动器-蜗杆),其在致动器输出轴53、54和55下面与齿轮52相接合,其各自形成了每个输出轴对53、54和55的一半。整个排列(除所述选择器-轮40、选择器-蜗杆41和变速器主推进器42以外,这些均为两个一半所共有)在选择器-轮40的的一侧作镜像排列,如图3(b)所示,以选择性的将另一个主推进器48或49连接至其它轮或每个输出轴对53、54和55的另一半。
一个小齿轮56可以滑入并与驱动-蜗杆47相接合。该齿轮可在轮-轴57之一轴向滑动,并与轮-轴57旋转连接,以使齿轮56被驱动时,轮-轴57和轮亦同样被驱动。齿轮56的滑动由变速器主推进器42驱动(连接未示出),以致所述轮可以当所述致动器输出轴对53、54或55的任一被选择时分离。可选择的,来自可选变速器9的输出齿轮50之一可以连接到所述轮上(图示未示出)。在这配置中轮正如任何其它致动器10一样被选择。
选择器-轮的边缘设有选择指示器孔,以在惰轮43与输出齿轮50之一相啮合时(这些选择指示器部件中没有一个在图3(a)或(b)中示出),允许光从光源(例如LED)上射下来以触发光传感器(例如光敏晶体管)。通过改变这些位置的选择指示器孔的尺寸,处理部件3可以参考传感器的输出能级确定何时及哪个输出齿轮50被选中。可选择的,为避免摸拟数字转换器的成本,额外的较小孔可以提供在选择指示器孔(现在是常数直径)的两面,以使其数目和排列被编码为识别其所包围的选择指示器孔。
处理部件3可以相似的方式或其它任何本领域已知的方式确定致动器10何时返回其起始位置。例如,一个指示轮(未示出)的边缘上的凹槽可以安装在致动器输出轴53、54或55上。当致动器输出轴53、54或55在它们的起始位置时,其可用于接合微动开关(未示出)。为了节省成本,相同的微动开关可以被用于所有的致动器输出轴的53、54或55指示轮上,以致玩具可以连续地为每个致动器10复位。
玩具基座2的内部同样具有一个声频部件13,其与处理部件3相结合,可以:利用存储部件15中存储的数据产生综合语言;可以录制并重放,或修改和再生在动作录制期间捕获的语言;识别通过麦克风捕获的的言语指令“好”、“是”、“不”、“播放”、“起始”和“选择”(例如)。这些说话指令形成为玩具的控制部件11的一部分。
当玩具在被动模式中被推动时,用户的手应是放在玩具的后面,玩具可以是为了达到这目的而成形的。开关24、25、26、27、28和29排列成位于便利的接触到的位置,并连接到处理部件3上,以为了用户操作玩具提供其余的控制部件11。例如,按钮25选择哪对致动器10(例如左/右腿致动器,或左/右臂致动器,或头部间距/方向致动装置等等)通过可选的变速器9连接到所述两个主推进器48和49上。两个致动器触发器24(例如指轮、摇杆开关、滑动器等等)因此能用来开关两个主推进器中的每一个在三态间:关闭、向前或向后。用户这样能通过这些开关24和25控制附属部分的选择和移动。
其它开关包括以下按钮:记录26、播放/是27、停止/不28和菜单/帮助29。这些按钮用来引发所述玩具的两个主要工作状态:录制(即前述被动模式的录制子模式),和重放(即主动模式)。当没有选择任何一种模式时,玩具处于空闲模式(也可以是不处于录制状态的被动模式)。在空闲和录制模式中,轮与主推进器48和49互相分离,允许玩具自由地相对表面1推进,任何的致动器可供选择并启动。在重放状态中,轮和/或致动器通过处理部件3进行选择,根据行动序列的需求被重放。
现在参照图4的流程图描述玩具的运行,其提供了玩具运行的高级概要(省略了某些细节,下文会清楚说明)。动力启动时,玩具在步骤65被初始化,随后步骤66测试是否第一次操作。如果是,玩具的语言合成能力被用来口头的邀请用户记录一个名称作为《演员》的预设名称的替换。用户可以通过按下录制按钮26,说出姓名,然后放开按钮来进行。玩具于是将询问用户是否希望设定其内部时钟/日历,这样它们可以通过使用致动器触发器24来调整该设定。玩具可提供给用户关于其特征的口头指示,并邀请用户在一个互动指导中试验所述特征。
一旦这个过程已经完成,或已经通过用户按下停止按钮28被中断,玩具在步骤67中检测其是否在表面1上。如果不在,它将使用语言合成部件来要求用户将其移动到表面1上。如果玩具在表面1上,步骤68校准其传感器(如果需要的话)并在表面1上建立其位置,通过旋转使得感应点4移过表面1的标码,直到已经读取足够标码以确定其位置。与此同时,玩具使用其通信部件14来检测是否有任何其它演员在表面1上。如果有,将建立与那些玩具的一个通信网络。然后,玩具是随时可使用的,并在步骤69进入空闲模式,其等待直到按钮24-29之一被按下。
如果录制按钮26被按下,步骤70将该事件通知表面1上的任何其它演员,并与其它玩具为新记录协定一个单一顺序识别码。然后核对玩具是否已经具有一当前的行动序列。如果它已经有,且该当前行动序列是未命名的,玩具询问用户是否希望将该序列保存并命名它,并警告如果它们没有保存,该序列会被丢弃。
如果用户说“好”、“是”或按“是”按钮,并此时再次按下录制按钮26,将能记录一个该行动序列的口头名字。如果此时有其它的主动玩具在表面1上,且它们容纳有当前未命名的和该玩具的序列具有相同序列识别码的行动序列,便会询问用户该口头名字是否用来保存其它的主动玩具的行动序列。如果用户说“不”或按了“不”按钮,则其它演员持有的当前行动序列被丢弃,否则它将被保存。无论如何,当前行动序列之后在所有演员们中被清除。如果其它主动玩具具有其它未命名的具有一不同的序列识别码的行动序列,它们将分别地指示这些需要通过用户保存或丢弃。
每个玩具的致动器10随后返回它们的起始位置。新的序列识别码与每个玩具的启动方位和启动位置一起保存在一个储存在存储部件15中的新动作记录中。然后所有玩具进入步骤73旳被动模式的录制子模式(从而提供一个便利的方法为所有演员同时启动录制)。从那时起,玩具被用户推动的移动路径,会记录于新动作记录,直到任何玩具的停止按钮28被按下或任何玩具的存储部件15被填满。
任何数据结构可用来记录两个路径(通过每个感应点4追踪)在存储部件15中,其适于沿每个路径和它们的达到时间记录各个位置。例如,每个路径的数据结构可以分成时序单元,每个单元表示沿路径的连续时间段(例如1/4秒)。在一个时间段期间感应点4的X和Y坐标位置的变化保存在其对应单元。这样,玩具的沿其移动路径的位置、方向和速度被捕获。
清楚地,如果玩具在同一时间段中作单向移动并作相同数量的倒退,则在该时间段内X和Y坐标位置的变化将可能是零。这种细节的损失被认为是一个节省其提供的存储量的公平交易。其它实施例可以要求一个不同的平衡,并使用一个本领域已知的不同方法创建数据结构。例如,某些实施例可以储存包括参照玩具某些点(例如其旋转中心)的坐标和方向数据的单个路径。
在录制期间,如上文记述,用户可以选择并致动所述玩具的不同附属部分。每个致动(或一个容纳相同数据的链接)的类型和长度在随后的步骤74中被保存在所述路径中该致动起动点的路径数据结构中。
同样,如果用户在录制期间按下录制按键26,语言录制部件将记录任何的在步骤75中进入麦克风的用户语音,只要录制按键被按下直到存储器被填满。语音数据(或所述数据的链接)被保存在路径中该语言录制起动点的所述路径数据结构中。
这样用户可以仅仅通过演示就容易地记录玩具应该去何处、应该做什么、应该说什么。一旦动作录制完成,在步骤72进入一个处理阶段,在此每个感应点4的路径和动作记录合并成一个作用序列。这通过连接(同时保留所述时间序列)每个路径的那些段来实现,其中路径的感应点4在所述段的整段时期内作为“领引”感应点4(“领引”是指感应点4当时相对玩具运动方向设置在前面)。每个所述段的起始处插入一个标记,以指示之后的段应参照的感应点4。
这方法防止重放路径时出现的不稳定,所述的不稳定可以因为路径参照一个位于轮轴后面(来自其移动方向的后面)的感应点4而出现。该不稳定可以使玩具在尝试跟随其“后部”感应点4的路径时沿其纵轴“滚翻”180度。这情况发生的原因,跟铅笔在沿一表面1被推动时其一端从后被推动时会滚翻的原因是几乎相同的。如果不是那样,玩具通过参照其“领引”感应点4(沿着其移动进入的特定方向)的路径被“拉”,则重放路径会是稳定的,而无需路径修正算法。这样不是说这些玩具不能具有仅仅一个感应点4。只要它向前移动,它将完全地操作良好(具有节约传感器成本和处理),但若它向后移动任何明显的距离,它则会滚翻。
在完成动作录制之后,玩具在步骤69时再次进入空闲模式,新建立的作用序列被选定为当前序列。预置时间内按下记录26将让用户选择附加新动作记录(作用序列)到当前作用序列上,或存储序列并录制一个新的(在图4中未示出)。
可选择的,当前作用序列可以仅仅通过用户按下播放按钮27或说出“动”的指令来立刻重放。步骤71将这通知给其它任何位于表面1上具有相同序列识别码的作用序列的演员。这将使每个演员直接移动到该作用序列的起动位置和方向(如果不是已经在那里),并重设它们的致动器10到起始位置。一旦所有演员在应有的位置上,每个演员同时开始执行它们相应版本的作用序列。
为节省进行重放的时间,只要说出“回家”指令(图4中未示出),所有演员可以返回到它们的起动位置,且它们的致动器亦会进行重设。
如果播放按钮27被按下超过一个预定时期(例如2秒),则所有的演员将以两倍正常速度重放它们的作用序列(包括驱动、标记和语言。在图4中未示出)。
除了当前序列之外的其它作用序列可以仅仅通过说出演员们的名字继之以用户给予该作用序列的名字而被重放(图4中未示出)。这样如果作用序列被取名为“跳舞”,演员被命名为“Bob”,则“Bob跳舞”将仅仅引起那个玩具首先移到该作用序列的起动位置和方向(除非已经在那里),然后执行该作用序列。如果玩具的名字指令被省略,则所有位于表面1上并具有一个叫做“跳舞”的作用序列的玩具将到它们的起始位置,当所有玩具都在那里时,同时启动作用序列的执行。以这种方法,作用序列的重放在玩具之间是容易同步的。
在空闲模式中(步骤69),如果另一演员在其碰撞路线上时(图4中未示出),可以设置演员采用规避动作。这样可确保任何不参与当前表现的演员不会阻碍当前表现。在一个即时抓捕游戏中,这同样允许用户将一演员推到并追击其它演员。
在空闲模式中,用户可以通过按下其菜单按钮29(图4中未示出)进入玩具的音频菜单系统。仅仅通过向上或向下按下致动器触发器24,用户可以浏览在菜单和子菜单中的语言选项。通过说“好”、“是”、“选择”或通过按播放/是按钮27可选择菜单选项或进入子菜单。子菜单和菜单系统自身可以通过按停止/不按钮28或说“不”退出。利用该能力,用户能命名当前作用序列,或用名字选择或启动一个新的当前作用序列,或删去作用序列,或附加一个新的动作记录(以及作用序列)到一作用序列,或编辑一个作用序列,或重新命名它们的演员,或设定时钟,或根据由其传感器检测到的条件(例如热、光、声、接近程度等等)设定在某个时间重放作用序列的闹钟,或连接一计算机,或进入其它任何可以是本领域已知的适当功能。
在创造一个动作记录(被动模式)期间,用户可以(在某些实施例中)移动致动器10同时推动玩具在表面1移过(其它实施例可以防止这情况,例如,当玩具移动时取消选定致动器10)。在重放(主动模式)中,不能直接在移动玩具的同时移动致动器10,因为主推进器通过可选变速器9只连接至轮或连接至致动器10。同时连接两者是不理想的,因这会导致致动器10只要轮是转动就能移动。
然而,在重放期间的并行操作的出现是可以给出的,这可通过计算仅仅在它们与轮分离之前需要通过主推进器48或49施加到轮上的推动力实现。这猛推计算引致玩具移动至目标位置,而主推进器48或49然后被用于驱动致动器10。这方法可以通过利用能量存储装置进一步的加强,诸如利用飞轮或盘绕弹簧存入驱动轮所需的能量。当主推进器48或49驱动致动器10时,这些将会连接以驱动轮。
在其它实施例中,致动器10可以具有他们自己专用的主推进器,与轮的主推进器48或49相分离。这样它们将要成为直接可操作的,无需选择,允许轮和致动器10同时操作。
在其它实施例中,软件可以通过使用因特网提供声音和数据通信,例如,采用本领域公知的通过因特网进行语音通信(VoIP)协议。这样可以允许地理上分散的使用者相互控制玩具。这样一个用户,通过移动、或讲话、或移动它们的(主)玩具的致动器10,会引起远程用户的远程(从属)玩具以拷贝主玩具的方式移动、讲话或致动。这方法通常称为远距机器人或远距存在。明显的,如果每个用户有仅仅一个玩具,则仅仅单向通信是可能的,并需要设置在玩具之间交换主从关系的装置。如果每个用户具有最少两个玩具,则一个玩具可以主宰另一个用户的从属,第二玩具可以能够同时作为另一个用户的主玩具的从属,从而允许同时的双方向通信和互动。
玩具可以提供软件,以允许用户创造或上载作用序列、编辑作用序列、在计算机中图解地模拟作用序列的重放,管理存储在它们的玩具中的作用序列,和/或远程控制来自计算机的玩具,以及实现其它本领域公知的功能(图4中未示出)。
另外,使用者能上传作用序列到为玩具或应用建立的专门网页,或从该网页下载作用序列。网页可以允许上传或下载诸如布景板32的图像等附加信息,使其它使用者可以将其打印出来;或注释在作用序列上,安装所述布景32和31等。此外它可以支持使用者的讨论会或个人页面,使用者可以在其中提供他们的作用序列及其他有关他们自己的介绍。它可以包括消息功能,这样作用序列可以作为一个消息被发给特定的远程用户或使用者组。当连接到网页时,任何指向用户的消息就可以下载到他们的玩具,并可以重放消息的作用序列。应该理解所述网页可以提供任何消息、社交网络、交易或其它本领域已知的功能。
使用者将能下载任何普遍可用的作用序列,然后使用网页来评定那些作用序列。作用序列的下载次数和其在一个时期收到的评价值,将用来确定那个时期最好的作用序列。使用者的用户名,其胜出作用序列中的演员的用户命名,以及所述作用序列在网页中得到提升,如“最佳指挥员”、“最佳演员”和“最佳游戏”,在每个周、月或年分别地统计。以这种方法,使用者可以为了它们的演员、他们自己和它们的工作追求“著名人士”状态!
竞争性的:冠军
一个“冠军”套装至少有两个玩具,玩具塑造为剑客的类型,作为它们的相应的使用者的战士冠军。在初始训练阶段,玩具通过它们的使用者训练基本的攻击和基本的自卫。在随后的战斗阶段中,它们在一个战斗中相互决斗,其结局取决于它们学会的动作的速度和灵活性。
如图5所示,每个玩具基座2同样按照已经记前述的“著名人士”一样设置:与主推进器关联的两个轮提供驱动,通过一被动滚球增加支撑;两个感应点4被安装在轮的前后;红外收发器提供通信。除了离合器之外无需可选变速器9便可在训练阶段将轮从主推进器上分离,使得玩具可以自由移动。没有连接器34或驱动插座35、36,玩具身体永久性附着于玩具基座2上(当然,明白的是其它实施例可以允许任何或所有这些特征)。
一个旋转标度84(“狂怒标度”)位于玩具后面且连接到一电位器,其输出是数字化的并提供给处理部件3。狂怒标度84让用户以下文记述方式设定玩具是如何攻击的或防御的。三个按钮87、88和89允许用户分别地触发训练模式、战斗模式或暂停/停止模式。拇指轮86允许用户控制举刀臂80的方向,触发器开关允许举刀前臂81在两个位置之间触发,现将对此作描述。举刀臂80和举刀前臂81是玩具仅有的两个活动附体。
图6(b)图示了举刀臂80可以沿肩部的一枢轴102旋转,转到图中所示的NW、N、NE、E及SE五个方向的任一。肩部在处理部件3和拇指轮86的控制下连接至身体或基座2的主推动器。举刀前臂81沿线103与举刀臂80分开。手肘的枢轴101与线103呈垂直,并允许举刀前臂81(以及刀100)在刀100的平面上在两个位置之间摆动,两个位置如图6(a)所示为一上、或避开位置P,以及一下、或撞击位置S。举刀前臂81的活动通过将举刀前臂81经一穿过肩部的枢轴102(因而容许其独立于肩部活动)连接至身体或基座2的另一主推动器的曲柄实现,其被处理部件3和拨动开关85控制。
刀100可以通过一弹簧枢(未示出)固定到手上,以允许其从标准位置倾斜,比如它在撞击期间被阻止时。刀100的位置(P或S)和方向(NW、N、NE、E及SE)的结合可被指为刀的状态,并可用方向/位置的形式表示,例如NE/P表示指向东北(NE)方向并处于避开位置(P)。此外,盔甲83设置在。举刀前臂81上(在图6(a)和(b)中没有明确示出),以盾82的形式出现在剑客的左边(在所述举刀臂80的对侧)。
一个玩具可以通过撞击另一玩具作为攻击(即从P到S摆动刀100),或如果刀100已经在撞击位置S时,则通过冲击另一个玩具(戳)或通过沿一弧形(切片)旋转刀100。为了方便起见,所有这些均称为撞击。
能够看出位于避开位置P的刀100,与挡开自另一平行于它的玩具撞击相比,对挡开自另一垂直于它的玩具撞击是比较有效的。例如,在N/P(北向、避开位置)刀状态的避开可有效对抗来自刀方向E的相反撞击,但对抗来自刀方向NE的撞击的功效则较低(相反亦然)。然而,它们对于对抗来自N及NW刀方向的撞击的功效十分低。同样,对那些无保护的对手部分的撞击或刺,比对盾82或前臂甲83的撞击或刺,前者更为有效。
训练阶段
训练通过按下一个玩具(受训者110)上的训练按钮87来启动,其通知该事件到另一个玩具(教练111)。教练111然后运行主动模式:自主对练程序(随后记述)。受训者110在被动模式中操作,根据教练111的行动用户将受训者向周围推动并控制其举刀臂80和举刀前臂81。
对练程序首先进入攻击模式,引起教练111用若干不同的方式从若干不同的方面攻击受训者110。然后进入一防御模式并约请用户,利用受训者110用若干不同的方式攻击它。两个玩具的原始位置和状态以及随后的移动和行动在这阶段捕获为动作记录。
在训练阶段之后或期间,动作记录被分析以确定受训者110如何根据教练111的移动和行动(环境)移动和行动。受训者110的动作记录捕获的反应以作用序列的形式存储于受训者110的攻击地图和防御地图的地图输入,地图输入在存储部件15中存储成查找表格。查找表格对一个特定的地图输入的索引是由教练111的动作记录数据形成的组合索引,其描述了引起该特定反应的教练111的环境。
在当前实施例中,每个地图输入/环境数据索引最多可存储三个作用序列(以序列ID辨别)(其它实施例可以允许更多或更少),从而对相同的对手环境提供反应选择。用于形成组合地图索引的环境数据包括:教练111相对于受训者110的区域位置与定向;教练111的刀的方向:NW、N、NE、E或SE;刀的位置:撞击S或避开P。
教练111相对于受训者110的区域位置利用一虚拟区域栅格112来限定,如图7所示。该区域栅格112始终以受训者110为中心和定向,因此跟随着受训者110移动。区域栅格112不预期为可延伸过整个表面1。替代的,它将受训者110的直接前端(通过箭号114指示)和侧面的区域划分为标数字的区域Zi。
在区域Z4、Z5、Z6和Z7中,这些区域Zi进一步的分成网格Ci,如所示(举例来说)。教练111相对于受训者110的移动因此能表示为从区域Zi中网格Ci(参考区域/网格位置)到其它或相同区域Zi中的网格Ci的移动。举例来说,图中粗线113表示了来自区域/网格位置Z4/C6到区域网格位置Z5/C7的路径。
图8显示了如何将教练111的相对方位通过一个想象方向栅格116设置,其分成象限Q1、Q2、Q3和Q4,其将教练111定中心并对准,如此Q1象限的外角118朝向受训者110旋转中心117。教练111面对朝向(通过箭头115指示)的象限Qi的数目,提供了教练111相对于受训者110的方向。在该实例中方向是Q1。
存储在每个环境数据索引之下的作用序列由一列部件组成,其始终以一个独特的ID(SeqID)作为开始,并继之以一个代码指示受训者110在该序列的初始刀状态。这些于是将继之以移动行动和/或刀行动。移动行动包括一个教练111由其当前位置移动前往的区域/网格位置,加上教练111移动到那个位置的移动时间。刀行动由一指示新刀状态的代码组成。
注意由于区域/网格位置以受训者110为基准,在本文中说明教练111移动到一特定区域/网格,应清楚理解这可能是因为教练111和受训者110移动的结果。
完全为了说明的目的,将攻击和防御地图查找表格想象为“看似”受训者110的区域栅格112可有助于思考。想象在每个Zi区域中存储有对手(教练111)在特定的区域Zi时的每组不同的方向和刀状态(布置)的反应。在训练阶段,这些存储的反应的捕获方法是将受训者110的反应分为不同的段并将这些段根据它们的起动区域和布置存储。在战斗阶段,根据对手位处区域的对手布置,从对手位处区域中选出作用序列。
现在参考9(a),流程图显示在训练阶段期间或之后教练111和受训者110的动作记录如何被分析以产生受训者110的攻击和防御地图的作用序列和组合索引。
注意在流程图中,这种形式的表示:《名字<-表达》表示《名字》作为变数或常数被加载了箭号后的《表达》的值。
同样,一个《名字》作为变数或常数继之以括号,表示该变数或常数是一个变数或常数的矩阵(即列表)。矩阵的一特定值表示为括号中的索引值(或变数)-矩阵的第一项的索引值为0,第二项的索引值为1,如此类推。因此,ArrayName(IndexVar)的表达表示在ArrayName矩阵中索引值为变数IndexVar的单元。
第一步120将受训者110和教练111的动作记录拆析成两个玩具的组合事件列表(一个“事件系列”)。该事件系列包括在系列中每个事件的时候受训者110或教练111的布置。事件是任何一个玩具的动作记录的点,在那些点中受训者110或教练111的行动有可见的变化。教练111的事件列表以对练程序的副产品的形式产生,包括:教练111的刀状态的改变、教练111粗略速度的改变(停止、慢速、中速、快速),和教练111的路径方向的重大变化,或相对于受训者110的方向的重大变化。
教练事件依受训者事件的时间次序结合。这些之后通过将受训者110的路径分为多个大致相似或相似地改变曲率的段而得到;这些段表示了大致恒定的玩具速度。这些近似值的选定是要得出路径改变的足够细节群组,但同时避免过多的段。段之间的连接点指出受训者110的路径曲率、方向或速度变化显着。受训者事件由这些连接点以及受训者110的刀状态改变曲率组成。
步骤121为随后的回路初始化变数。CurrSequence指向容纳当前建立的作用序列的数据存储。Context是一个容纳有一特定时间由教练111的环境数据组成的索引的组合数据存储。两者都初始化为一空值(Null)。ContextChanged是一个布尔标志,其表示了Context是否已经变化;它初始化为假(False)。
SeqID是一个数值ID,其在每个作用序列新建立时增加并与新建立的作用序列一并存储。它初始化为地图当前的最大SeqID,并在第一事件时增加。由于SeqID持续地在新作用序列被加到地图时增加,可能需要偶尔地减少SeqID(同时保持序列的次顺),以免SeqID变数溢出。
步骤122取得组合事件系列中的第一教练事件(任何之前的受训者事件被丢弃,因为它们不能作为对教练111作用的反应)。下一步骤是一个回路中的第一步,其由第一教练事件开始检验每个在组合事件系列中的教练事件和受训者事件。在回路完成时,所有的事件将已经被分析,且攻击和防御地图将已经部分地或全部地填满对各种对手(教练111)环境的作用序列。
作为说明,图10(a)-(d)示出了在教练111处于攻击模式时,在训练阶段的某些部分期间捕获到的受训者110和教练111的动作记录的一部分的演化。粗虚线160表示教练111直至时间点t1的先前路径,t1以粗实线表示的路径上的点T1表示。在T1,教练111显着偏离其先前路径,如教练111的方向箭头115所示。因此在t1教练111在这一点上的布置以一教练事件的形式捕获在事件系列中。注意该路径和位置是参照每个玩具的旋转中心。
受训者110在t1时是不动的,并位处于标记(T1)所示的位置;其面向箭头114所示的方向,其刀100位于NE/P位置。
教练111直至T1的先前路径160的所有事件,若是在受训者110的区域栅格112之外,便已通过步骤123检出为肯定的,并将已经通过步骤127丢弃。CurrSequence将已经同样通过步骤126设定为空值。以下讨论因此以步骤123的回路作为开始,并第一事件是在T1的教练事件。
在这一点上,教练111的环境数据(与教练事件一同被存储在事件系列中)会是:它的刀100在N/P位置;它是方向是(如箭头115所示)是面向相对于受训者110的Q1象限,如叠加于表面的方向栅格116所示(为了清楚,即使该方向栅格116在每个教练111的位置均被概念性的采用,它不会被显示在本图或后面各图中的未来事件点);它在受训者110的区域栅格112中的区域Z1的网格C1(为了清楚,网格-栅格仅仅在需要用作说明时显示。所有区域均具有网格-栅格,即使网格-栅格没有显示出来)。教练111不再位处区域栅格112之外,故步骤123的测试失败,步骤129然后测试CurrSequence。由于它当前是空值,通过连接符B继续执行如图9(b)中所示的步骤135。这检查教练111的环境是否已经与当前事件一起变化。由于教练111之前位处区域-栅格112之外,故至少区域Z1已经变化,而该改变将存储在Context中,ContextChanged设定为真(True),SeqID在步骤136中增加。
步骤137然后测试教练111处于什么模式。如果教练111处于攻击模式,步骤138检查受训者110的防御地图查找表格输入是否有空间容纳新的作用序列,其中防御地图查找表格输入以Context的组合索引作为索引。如果地图输入已经包括三个作用序列(该实施例的极限),则具有最低(最旧)SeqID的作用序列会被删去。CurrSequence指针(pointer)然后设定(步骤139)为防御地图输入中的数据存储的地址,供新的作用序列使用。如果在步骤137中,教练111被发现为处于防御模式,则步骤140和141进行相同的处理,但是在受训者110的攻击地图中进行。
步骤142初始化了以CurrSequence所指的新作用序列,这是通过将新SeqID和受训者110的当前刀状态(NE/P)储存至其首两个元件来实现。新作用序列现在被建立,可附加进一步的刀行动或移动行动作。注意《形式指针名字》表示在存储指针名字中存储的数据存储地址。
通过连接符C,继续执行步骤150(图9(c)),其测试当前事件中的受训者110的刀状态是否已改变。若没有改变,步骤154测试所述事件系列中的所有事件是否已经处理。若它们未全部处理完,便在步骤155从事件系列取得下一事件,并通过连接符A返回回路的开端(步骤123,图9(a))。
后续(现在是当前)事件是一个受训者事件,其在时间t2发生,即是在用户开始旋转玩具的时候发生。受训者110直到现在仍是保持不动,位处在被标记成T2的点(图10(a)),与在时间t1时的点是一致的。在时间t2,教练111将已经沿路径到达标记为(T2)的点。
教练111现处于受训者110的区域栅格112内,因此现进行步骤129,其测试CurrSequence并发现它不是空值,因为其现在指着的是先前回路循环建立的新作用序列(为在T1的教练111环境而建立的)。因此,步骤130将一个移动作用附加到CurrSequence指着的新作用序列上。该移动作用被限定为:教练111在时间t2的新区域网格位置Z1/C2,以及教练111从T1的Z1/C1位置移动到(T2)的Z1/C2位置的移动时间(=t2-t1)。注意若开始和终止的区域/网格是相同的,但是t1<>t2,则移动作用存储为零长度,这是为了保存教练111沿矢量“移动”的移动时间。
然后通过连接符B到步骤135(图9(b)),注意教练111位处同样的区域Z1(网格位置不用于环境数据)中,其相对于受训者110的方向Q1亦相同,就如同在时间t1一样;其刀100的位置无变化,如此其环境数据无变化。因此,在步骤135中的测试将程序转到步骤143,其设定ContextChanged为假,并通过连接符C到步骤150(图9(c))。
当前受训者事件不是一个刀的移动,且有更多的事件要处理,故步骤150和154的测试都失败。步骤155取得下一事件,回路再一次循环到图9(a)的步骤123。被处理的当前事件,是现在在t3时的受训者事件,在这时用户停止旋转受训者110并将其向前移动。该点在图10(b)中在受训者110路径上标记成T3;此时教练111的位置在教练111的路径上标记成(T3)。
由于教练111仍然在区域栅格112中,步骤123失败。步骤129然后检测出CurrSequence指着在时间t1与教练111的环境数据相联系的作用序列(即CurrSequence不是空值)。因此步骤130将一个新的移动作用附加到作用序列上,该移动作用包括:教练111在时间t3的新区域/网格位置Z2/C3,以及教练由先前位置Z1/C2移动到新位置的移动时间(=t3-t2)。
由于受训者110已经旋转,其区域栅格112亦已转动,引致教练111从区域Z1“移动”到区域Z2。这将改变教练111的环境数据,其在步骤135(图9(b))中检测出来,引致步骤136更新Context,设定ContextChanged为真并增加SeqID。
步骤137-139检测到教练111在攻击模式,并设定CurrSequence指向受训者110的防御地图查找表格的输入中为新作用序列而设的存储,受训者110的防御地图查找表格以Context的新组合索引作为索引,如上文记述。所述新作用序列然后在步骤142初始化,具有新SeqID,并受训者110的刀状态为NE/P。
图9(c)中的步骤150然后失败(没有刀状态的变化),而且,由于还有更多事件(步骤154),在步骤155中取得在时间t4的下一事件,而回路再一次通过连接符A循环到步骤123(图9(a))。在时间t4的新事件是另一受训者事件,由用户移动受训者110的举刀臂到刀方向E引起,如图10(c)中在标记T4之后的刀状态指示(E/P)所示。到这时,受训者110和教练111分别地移动到位置T4和(T4)。
步骤123再次失败(教练111在区域栅格112中),步骤129检测到CurrSequence被建立,步骤130将一新的移动作用附加到新作用序列中(与在时间t3的教练111环境相联系),新作用序列被CurrSequence指着。该移动作用包括教练111的新区域/网格位置(Z3/C4)和移动时间(=t4-t3)。
图9(b)中的步骤然后注意到教练111的区域(以及其环境数据)已经变化到Z3,因此在受训者110的防御地图为新环境创造一个新的作用序列,如上文记述的。
然后到步骤150(图9(c)),其确定当前事件通过一个刀移动引起。如果ContextChanged是真(步骤151),则一个新作用序列必然是刚刚已经建立。如果新刀位置(以一刀作用的形式)现在被附加,该作用序列会引致玩具首先改变到其初始化刀状态NE/P,然后立即改变到其新刀状态为E/P。为避免过度的刀移动,算法使用步骤153来将初始化刀状态的值NE/P替换为新刀状态值E/P。如果没有新创作用序列,则一容纳了新刀状态的新刀作用会在步骤152附加到作用序列。
由于还有更多的事件要处理,所述回路再次循环并处理位于时间t5的教练事件,引致教练111在教练111路径上标记为T5的点上显着改变方向(图10(d))。因此,其相对于受训者110的方向现在朝向象限Q4(方向栅格1116未示出),如箭号115所示。受训者110在这时已经移动到在其路径上标记为(T5)的点。
教练111停留在区域栅格112中(步骤123,图9(a)),并建立CurrSequence(步骤129),故步骤130附加一个移动作用到当前的作用序列,其包括教练111的新区域/网格位置(Z3/C5),以及移动时间(=t5-t4)。即使教练111的区域位置和刀状态未曾变化,但相对方位已经改变,故在时间t5在受训者110防御地图中以新环境数据作为索引的输入中建立一个新的作用序列。
受训者110的刀状态没有变化,故回路继续循路径中的每个新事件作出循环,循环的方式现在应该了然。在某点,教练111可能超出受训者110的区域栅格112。在处理下一个事件时会在步骤123检出。由于CurrSequence会指着先前环境改变事件建立的作用序列,步骤124失败,步骤125附加一特别区域/网格位置(例如-1/-1)以及移出所述区域栅格112外的移动时间到当前作用序列(显示教练111已经移动出所述区域栅格112外)。步骤126然后设定CurrSequence为空值,步骤127扫描随后的事件直到发现下一个教练事件。如果有一个教练事件,步骤128之后到步骤123并启动处理该事件。如果没有教练事件,步骤128失败,所述算法结束。
当第一玩具的训练完成,第二玩具可以仅仅通过按下其训练按钮87来训练。玩具的角色被反转,第二玩具如同第一个一样训练。一个玩具的训练可以是选择性的由其训练按钮87的双击编辑。教练111于是将邀请用户将受训者110相对于教练111放置,并设立它们的相应刀位置。如果用户再次按下训练按钮87,用户可编辑其的防御地图中的作用序列,该作用序列的环境数据由教练111对受训者110的现时安排提供。如果,作为替代,用户在这一点上按下战斗按钮88,可以编辑其攻击地图中适当的作用序列。训练可以在任何时候通过按下暂停按钮89暂停,或通过双击停止。
战斗阶段
一旦至少两个玩具被训练(即两个玩具的攻击和防御地图中的每一区域均定义有至少一个作用序列),它们可以在战斗阶段相互战斗。为允许使用者直接到达这阶段,优选实施例提供预编程有对不同对手环境的基本作用序列的防御和攻击地图。如果玩具被训练了,这些预编程作用序列将被新学习的作用序列覆盖。
实质上,战斗阶段涉及从其它玩具之间识别对手并集中于该对手,确定所述对手的环境(相对方向、位置和刀状态),然后利用那个环境作为索引以获得并执行一个来自其攻击或防御地图的作用序列(训练阶段学得的)。战斗可以在任何时候通过按下暂停按钮89暂停,或通过双击该按钮来停止。
当一个玩具的战斗按钮88被按下,这事实被传递给其它玩具,它们全部进入主动模式并开始执行它们的战斗计划,如图11(a)的流程图所示。第一步166导致每个玩具移动到一个独特的起动位置,其是在表面1上等距分布,或以其它排列方式分布。然后初始化常数UNDECIDED、ATTACK和DEFENCE,它们是用来设定变数CombatState的值。这及其他关键变数同样地在步骤166中被初始化:CombatState设置为UNDECIDED;ActiveSeq、ActiveSeqID和Target...变数被设置为空值;Health被设置为10。
CombatState表示战士是否在攻击另一玩具,或是否防御另一玩具的攻击,或是否暂时未确定。ActiveSeq是战士当前执行的一个作用序列(如果有的话)的指针,ActiveSeqID是其序列ID。TargetCoord和TargetTime包含路径数据存储中当前中间点(way-point)的坐标和移动时间。这包括这些中间点的序列,其限定了玩具的计划路径。
Health是一个变数,其表示玩具当前的力量和健康程度。它的值在0和10之间。所述Health参数根据对玩具的被成功撞击的严重程度来减少。如果玩具能在一个时间段(比定义的RecoveryTime常数大)内避免进一步的损害,Health将增加(但是不超出10)。
当所有玩具都在它们的起点,每个玩具的战斗程序独立地继续运行。现在参照一个玩具(以下叫做战士)来说明:首先在步骤167启动,这是在回路中的第一步,而这回路会在战斗阶段的整段时期内循环。步骤167使用玩具的通信部件14以跟其它所有玩具交换识别码(ID码)、撞击和倾向数据(例如方向、位置、刀状态、对手、健康情况、和CombatState等)。
步骤168然后检查是否已经接受一个来自另一玩具(撞击者)的撞击信号。如果是,步骤169评定撞击者的相对方位和距离,以及相对战士自己的刀100和/或甲83的撞击者的刀状态。如果它计算出撞击者已经成功的或部分地撞击战士,它将根据撞击的位置和性质以及撞击者的健康情况(力量)相应地降低Health参数。
步骤170然后测试战士的健康情况是否已经到达零。如果是这样的话,它将出局,步骤171将它停止在那儿。在某些实施例中,玩具上的一个指示器12或致动器10可以用来指示玩具的失败状态。
步骤172然后检查剩下多少玩具;如果只有一个,步骤173向其它玩具表示游戏结束,宣布优胜者,战斗阶段结束;否则该玩具的战斗程序结束,但是游戏为了其它玩具继续,直到剩下一个冠军。在那个点,先前的战斗阶段可以重放(通过双击战斗按钮88),一个新的战斗阶段可以启动或一个或多个玩具可以被重新训练。某些实施例可以在一个预先确定的时期之后结束战斗阶段,并宣布仍然未失败的玩具打和。相同的或其它实施例可以使失败玩具退回位置编码表面1的边缘,如此它们不会堵塞其他仍然未失败的玩具。
如果没有撞击,并在超过一个预置时间(RecoveryTime)仍没有撞击,则步骤174增加了Health,如果其值比10小的话。步骤175然后检查是否有另一玩具处于攻击(ATTACK)的CombatState并集中在战士上(即所述战士已经被选定作为那个玩具的对手)。如果有,步骤178将攻击玩具的带值(band-value)与狂怒标度84的值作比较。带值由攻击玩具位处的区域带(相对于战士)计算。最内部的区域带(图7中的ZB4)的带值为4,ZB3的带值为3,如此类推,直到ZB1的带值为1。如果攻击者位处于战士的区域栅格112之外,带值是0。狂怒标度84电位器是0(小心/防御性)至3(狂怒/攻击性)之间数字化的值。
因此,在步骤178中,如果带值大于狂怒标度84的值,则到步骤179测试战士的CombatState是否已经在防御(DEFENCE)值。若不是,步骤180设定所述攻击玩具的ID代码为Opponent变数,这样使得那个玩具成为战士的对手。战士的CombatState设置为防御(DEFENCE),ActiveSeq、ActiveSeqID和TargetCoord设置为空值(以中断任何当前执行的作用序列或移动)。
如果战士不被攻击(步骤175)或攻击者的区域值不大于战士的狂怒标度84的值(步骤178),则步骤176检查CombatState是否为防御(DEFENCE)。若是,在步骤177将其设定为暂时未确定(UNDECIDED)。
无论攻击或不攻击,通过连接符E到步骤185(图11(b)),其测试战士的CombatState是否为暂时未确定(UNDECIDED)。若是,步骤186评定其它玩具哪个是最靠近战士的(当不止一个时随机选择),并通过设定该玩具ID为其Opponent变数使得该玩具成为对手,并其CombatState设定为攻击(ATTACK),其ActiveSeq、ActiveSeqID和TargetCoord设置为空值。然后到步骤187。
在某些实施例中,一个玩具可以表现得仿佛它仅仅意识到在其前方和侧边的玩具。在这些实施例中,如果所述战士不能“看见”另一玩具,所述战斗程序将引起它启动旋转,直到它能够看见。
步骤187然后测试TargetCoord是否被设立,其指示战士当前正在移动到一个新位置。如果它没有(即其为空值),则步骤188测试ActiveSeq是否为空值。如果它不是,则玩具当前正执行一个作用序列,如此则通过连接符G到步骤205(图11(c))。
否则,如果ActiveSeq是空值,则步骤189检查对手是否在战士的区域栅格112范围内。如果它不是,则步骤190随机选择外部区域带ZB1的一个区域和网格。这些在一个与地图分离的临时作用序列数据存储中被存储为单个移动作用的目的地以及一个关联移动时间-1(指示应该采用的最高速度)。ActiveSeq指着这个移动作用,ActiveSeqID设置为空值。然后继续通过连接符G执行步骤205(图11(C))。
然而,如果对手在战士的区域栅格112中,则当前对手的环境(即其相对方向、区域位置和刀状态)用来创造一个存储在步骤191中的组合变数Context中的环境数据索引。步骤192对CombatState进行测试,所述索引用来分别地进入步骤194的战士防御地图(CombatState=防御)中或步骤193的所述战士攻击地图(CombatState=攻击)中。如果该地图输入没有定义任何作用序列,则按以下顺序忽视所述环境数据索引中的因素,直到找到一个具有作用序列的地图输入:刀方向、刀位置、和相对方位。由于在本实施例中每个区域一定有至少一个作用序列才可开始战斗阶段,故这始终会得到一个具有作用序列的地图输入。
一旦找到一个具有作用序列的地图输入,步骤195测试ActiveSeqID是否为空值。如果它是,则步骤198从所述地图输入的作用序列中随机选择一个作用序列。如果它不是,则玩具必然是刚完成另一个作用序列,这样步骤196选择具有一个大于并最接近ActiveSeqID的SeqID的地图输入的作用序列。这样可确保在刚完成的作用序列后学习的作用序列会优先采用,如果它存在的话。如果步骤197检测到没有作用序列符合该标准,则步骤198从存在于所述地图输入的作用序列中随机选择一个作用序列。选定作用序列后,步骤199移动战士的刀100到该作用序列的初始刀状态(如果不是已经在那里)。然后将ActiveSeq指着新作用序列中的第一个作用,并设定ActiveSeqID为该作用序列的SeqID。
然后通过连接符G到图11(c)中的步骤205。该步骤取得ActiveSeq指着的作用,步骤206测试它是否刀作用。如果它是,步骤207移动战士的刀100到刀作用指定的定位与定向,然后到步骤210以继续取得所述序列的下一个作用。
不然的话,它必然是一个移动作用,这样步骤208呼叫子程序CalcPath继之以子程序SetMotors(步骤209)。一旦这些已经完成,步骤210随后测试当前作用序列中是否有其它作用。如果有,步骤211将ActiveSeq指针指到下一个作用,否则如果作用序列已经完成,则步骤212设定ActiveSeq指针为空值。当步骤188接着执行时,这将导致一个新的作用序列被选定。所述主回路然后通过连接符D在步骤167重新开始,见图11(a)。
CalcPath子程序计算了一个路径以执行被ActiveSeq指着的移动作用。这将使得对手在需要的移动时间(由播送路径和对手的速度给定)内进入目标范围/网格位置,而同时避免与其他所有玩具碰撞(根据它们的播送路径和速度),并同时保证战士停留在表面1的边界之内。如果移动时间是-1,则路径以最高速度执行。
CalcPath将在序列中的路径计算为一系列的中间点(way-points)(以表面1上的坐标限定),并将中间点连同每个中间点的一个移动时间存储在一个叫做Path的数据结构中。然后在返回之前以所述路径序列中的第一个中间点的坐标设定TargetCoord,以及以那个中间点的移动时间设定TargetTime。
要注意可能不能计算出一个符合所有约束条件的路径。这种情况下,算法将选择任何一个可选择的作用序列当为ActiveSeq,或将选择一个新对手(如果它不是正防御一攻击者)。这没有记述或包括在所述流程图中,这是因为其实施对于本领域技术人员而言应当是清楚的。
SetMotors子程序计算速度并初始化战士玩具的轮电机的驱动信号,以致战士将从当前位置移动到TargetCoord中指定的坐标位置。计算额定速度以在TargetTime指定的移动时间内将战士移动到新位置。这些额定速度然后乘以一个等于:(H+K1)/K2的乘数,其中H=玩具的健康值(Health),常数K1和K2选的使得当Health耗尽时玩具速度将显着减少,但不会减少得太多而使游戏变得乏味。例如K1=10和K2=20,而在Health在1-10之间,速度将在55%和100%之间改变。
现在返回到图11(b)中的流程图,如果步骤187发现TargetCoord不是空值,则玩具必然已经牵涉在一个移动作用中。这样通过连接符H到图11(c)中的步骤218。这将检查是否已到达TargetCoord中的目标坐标。如果未到达,步骤215检查其它玩具的路径或速度从CalcPath上次被呼收之后有否改变。如果有,则有撞击的风险,或对手的路线也许已改变。不管怎样必须更新路径,故步骤216呼叫CalcPath去执行,利用战士的最新位置作为新的起点。如上所述,这将同样将TargetCoord和TargetTime变数重设。步骤217然后以新TargetCoord呼叫SetMotors,然后通过连接符D在步骤167重新开始主回路,如图11(a)所示。
如果步骤218发现目标坐标已经到达,步骤219检查路径数据存储中是否有更多的中间点,如果有,步骤213检查是否有其它任何玩具已经改变路径或速度(如同上述)。如果有,路径中间点不再有效,这样步骤214呼叫CalcPath计算出一套新路径中间点并设定TargetCoord和TargetTime。否则,如果没有别的玩具改变路线,步骤220设定TargetCoord和TargetTime为下一个中间点的坐标和移动时间。无论如何,步骤221然后呼叫SetMotors来为电机设定新的目标坐标。主回路然后通过连接符D在步骤167重新开始。
如果步骤219发现没有更多中间点,则路径已经完成,步骤222停止电机并设定TargetCoord为空值。回路然后通过连接符D在步骤167重新开始。
对练程序
之前已提及过在训练阶段时教练111执行对练程序,且对练程序支配教练111的行动。现在应该清楚该对练程序可以轻而易举地利用一个改进的战斗程序来操作预编程的对练攻击和防御地图来实施。仅有的区别是:教练111事先不知道受训者110将走什么路径;战斗程序必须被部分地改进以在对练程序的监督下操作,现在概括地参照图12的流程图进行说明。
一旦教练111已经从受训者110处接收其训练按钮87已经按下的通知,它将开始对练程序。在步骤230中教练111从受训者110后退(即到区域栅格112之外)。在步骤231中教练111设定其CombatState为攻击(ATTACK),步骤232触发音频部件13以说明它即将从各个方面开展攻击,而受训者110(用户)应该发起一个强劲的防御以对付这些攻击。
教练111然后要求并从受训者110接受一份它的防御地图(教练的CombatState=攻击)或它的攻击地图(教练的CombatState=防御)。步骤232然后产生一个所述地图的全部地图输入的重点列表,其以存储在每个地图输入下的作用序列的数量递增排列。
这样在重点列表的顶部的地图输入具有最少的限定作用序列数量,它将成为教练111的行动的重点以导致作用序列定义于这些输入当中。它们的环境数据索引提供教练111尝试进入的区域(在受训者110的区域栅格112中),以及在教练111进入那个区域时教练111采用的方向和刀状态。随后,依照上文记述的,当受训者运行其培训程序(见下文),事件系列被分析,受训者将为了这些定义下的区域和倾向产生作用序列。
战斗程序变数ActiveSeq、ActiveSeqID、TargetCoord和TargetTime现在在步骤234中被设定为空值(Health不采用)。同样设定若干个计时器为零:ZoneTimer,其监视教练111进入受训者110的区域栅格112需要花费多长时间;TargetTimer,其监视教练111抵达其当前TargetCoord需要花费多长时间;以及UpdateTimer(在步骤233中设定),其监视受训者110和教练111已经对练多长时间。这些计时器自动的与系统时间从它们的重设点开始同步增加。
步骤235中,其对练程序呼叫Combat(战斗)程序,通过连接符J进入战斗程序,参照图11(b)。Combat程序如上文记述运行,除了以下的重要区别:
区别一:当对练程序运行,它产生一个事件系列,其包括教练111沿着路径各个点的环境的列表。如前所述,这些点在教练111的路径、方向或速度显着改变,或教练的刀状态改变时出现。可以清楚的是该事件系列可以在步骤207连同辅助码建立、以及在SetMotors子程序中被建立。
区别二:步骤189被修改,这样它测试教练111是否在受训者110的区域栅格112中,而不是反过来。
区别三:在步骤190中,教练111从所述重点列表的顶部选择一个地图输入(即定义有最少作用序列数目的),其与受训者110的外部区域带ZB1(通过其环境索引)关联。该区域,加上一个区域内随机选择的网格,用作存储在步骤190的临时作用序列中的所述移动作用的目的地。ActiveSeq和ActiveSeqID如前述被设定。
区别四:一个新步骤被插入在步骤189和191之间,其在重点列表识别出未完全定义(under-defined)的地图输入,该些地图输入具有一个环境数据索引,索引的区域部分匹配教练111位处的区域(相对于受训者110)。它选择具有最佳的以下组合的地图输入:最小的作用序列被定义,一个最紧密地匹配教练111的当前环境的环境数据索引。教练111然后调整其环境(方向和刀状态,因为其已经在正确的区域中)以完全的匹配选定的重点列表地图输入的限定的环境。步骤191然后将受训者的环境数据输入Context内,如前所述的,步骤192-194得到一个新的攻击或防御地图输入,如前所述的。
教练111的新环境在事件系列中记录为一个事件。当受训者110的培训程序在运行,教练111事件将按需要在受训者110的选定的地图输入定义一个新作用序列。
区别五:步骤195-198用单个步骤替代,其选择教练的对练攻击或防御地图的作用序列,该作用序列具有一个初始的刀状态,该刀状态匹配教练111的当前刀状态,也就是在区别四中所述的新步骤建立的刀状态。注意对练攻击和防御地图必须被设立以确保一定可找到匹配。程序然后继续步骤199及后续步骤,如前所述。
区别六:步骤215和213,图11(c)将测试为是,因为教练111不能事先知道受训者110的路径,这样它每次将实际地“改变”。
区别七:在图11(c)中,仅仅在步骤208呼叫CalcPath之前,TargetTimer设为零(即它从每个新移动作用的开端开始计时)。同样在图11(b)中的步骤191,ZoneTimer被重设为零(这样它不会在教练111位于受训者110的区域栅格112中时被暂停)。
区别八:当战斗程序抵达图11(c)的连接符D,它并不是回到图11(a)位于战斗回路的首部的步骤167,取而代之,它返回到对练程序继续步骤236测试ZoneTimer。如果它已经时间到,用户必须恒定的从攻击退回(或如果教练111的CombatState=防御,则其攻击失败),这样再到步骤249。这使用音频部件13以讥笑用户的怯懦并解释说它们需要为了它们的冠军而投入。系统然后循环回到步骤234,变数被重设,一个新的ActiveSeq在Combat程序(步骤235)中被选择。
如果ZoneTimer时间未到,则步骤237检查UpdateTimer是否已经时间到。如果不是,又如果当前TargetTime不是空值,则步骤238比较TargetTimer和TargetTime。如果TargetTimer比TargetTime大一个显着的预先确定数值,系统假定其当前TargetCoord不能到达(所述受训者110的移动),因此到步骤234。然后过程重新开始,如之前记述的。
如果UpdateTimer已经时间到,步骤239使用音频部件13通知受训者110(即用户)停止攻击或防御并导致教练111从受训者110逐渐后退。它然后将教练111产生的事件系列传递给受训者110,并通知受训者110运行培训程序(图9(a)、(b)和(c))。如上文记述,这结合并分析教练111的和受训者110的事件系列,并更新受训者110的防御或攻击地图。
步骤240然后要求从受训者110接受一份它的更新的攻击或防御地图(当受训者110已经完成培训程序)。它使用这些以产生一个新的更新重点列表,如上文记述,然后确定具有定义作用序列地图输入的比例。音频部件13使用该比例以评论受训者110已经接受的训练程度。如果训练已经达到一个预先确定的足够的程度(在步骤241中测试),步骤242的系统校验CombatState是否为防御(即受训者110已经接受防御和攻击训练)。如果是这样的话,教练111在步骤246询问用户是否想完成训练。用户可以延续训练,或训练阶段对练程序可以通过双击中止/停止按钮89来停止,这是步骤247测试的。
如果受训者110仅仅接受防御训练(在步骤242中CombatState=攻击),则步骤243导致教练111询问用户是否现在想要练习攻击。如果步骤244确定用户已通过按下战斗按钮88表示同意,教练111转换其CombatState到防御(步骤245),并到步骤232,导致音频部件13告诉所述用户它们应该从各种方面攻击教练111,然后要求并从受训者110接受一份它的攻击地图。在步骤233中,UpdateTimer随后重设为零,所述循环再次在步骤234开始。
除了战斗程序中的步骤190之外,其它全部如同在防御训练时般进行;步骤190不再产生一个作用序列以使得教练111进入受训者110的区域栅格112;取而代之,一个临时作用序列被启动,引致教练111在受训者110前面往复运动,从而为受训者110制造不同方面供受训者攻击(即它等待用户移动所述受训者110,以使它最终位处受训者110的区域栅格112)。如果ZoneTimer时间到,步骤249于是将使用音频部件13以激励用户进入攻击,指出在用户未开始进行前它们的受训者不能学习。
否则,如果训练的程度不足,或如果用户希望继续练习它们的攻击或防御,则UpdateTimer在步骤248中被重设,循环在步骤234处再次开始。
变体
本领域技术人员可以清楚的是,以上的算法是已尽量保持简洁,以便说明,但其可以在许多方面被改进。例如,其它数据可以被用于环境数据(例如相对而不是绝对的刀状态、对手的速度等等)。优选的是,可监控玩具的战斗以保证它们不会在任何作用/反作用循环中被卡住,其中没有玩具获得优势。特别是,其可以在玩具进入或退出防御(DEFENCE)的CombatState(分别在步骤180或177)之前引入一个随机延迟。这将防止两个玩具出现以下情况:两个玩具均因为没人在攻击它们而进入攻击状态,然后两个玩具因为检测到对方正在攻击故两个玩具均进入防御状态,然后因没有人在攻击它们而两个玩具均重新进入攻击状态,以此类推。本领域技术人员可清楚知悉如何实现前述效果。
冠军可以提供有谈话记录和重放部件。在这情况下,对练程序会邀请用户在训练他们的玩具时记录适当的惊叹词(例如战争叫喊)。可选择的,它可以提供具有惊叹词的语音合成和预编程,以适应各种不同的情况。惊叹词于是在匹配状态出现时播放(尽可能地通过从若干惊叹词中随机选择)。
可选择的,“冠军”他们自己可以是静音的,由一个评论员玩具替代,其包括在所述套装中。评论员可以是一个静止单元,其将具有预编程的语音合成,在游戏中播放评论的语音段。这具有降低冠军的生产成本的优点。
可选择的,冠军可以包括语音识别。在这样一个实例中,特定攻击/防御作用序列的选择不但可通过玩具的倾向而被影响,而且亦可通过用户的号令而被影响。
在某些实施例中,战斗阶段所需的计算可以出现在战斗阶段之前或期间。如果出现在之前,计算会为每个玩具产生一个作用序列。在战斗阶段中,每个玩具仅仅同步重放这些作用序列,其游戏作用和结局被预先确定。
某些实施例可以允许玩具配备不同的盔甲83和82或武器,从而改变一个撞击之后的健康情况(Health)的计算。其它实施例除了一个狂怒标度84之外,或在一个狂怒标度84之外,可以装备有行为修改值。
软件可以与“冠军”一起提供,允许用户上传或下载他们的战士训练(即他们的攻击地图和防御地图)到一个网页,并将其与其它使用者开发的训练交换。可以举办冠军赛,其中用户将他们的战士训练上传以提供给一个计算机产生的竞技场的虚拟战士使用,或在某些远程的竞技场提供给真正的玩具战士使用。这些冠军赛的胜利者,将属于为其战士开发了最复杂的训练的用户。可选择的,在“著名人士”下记述的远距机器人能力的一个延伸部分中,使用者可以使用他们的冠军玩具以远程控制真正的或虚拟的战士跟其它远程用户控制的或用户上载的培训程序所控制的战士对战。
优势
所述新颖方法的特定实施,如上文所述,具有四个关键优势。首先,如果在战斗阶段期间一个对手相对一个玩具攻击或防御它自己,而对手所用的方式恰好完全等于教练111相对该玩具攻击或防御它自己的方式,则玩具所使出的移动和刀作用反应,跟在训练阶段时教练111进行相同的攻击/防御时被训练的移动和刀作用反应是完全相同的,这亦是应该的。
这是因为如果对手跟教练111一样行动,则它相对玩具的环境将与教练111一样改变。因而,相对那些各个环境存储的作用序列会被选定并按其训练时的顺序再次被使出。这将通过优先(在战斗阶段)选定SeqID为先前作用序列的SeqID之上的作用序列来实现(图11(b)的步骤196)。
第二,这是较可能发生的,就是在一个战斗阶段的对手使出跟教练111不同的攻击或防御,则玩具将选择一个适合于对手的新环境的其它作用序列反应。换句话说,它将在表面上看来是可以对不同的全新对手环境作出聪明且跟其训练不同的动作反应,即使它不是具体地说被训练为处理那些对手环境。
第三,用户可以非常容易地训练玩具(从移动和反应速度的方面)以使其作出表面上聪明的反应。他们仅仅根据教练111的行动将玩具周围推动并移动其刀臂(为它展示应做什么)。通过将这些反应作分开处理,可快速地得到相对大批环境的反应,而无需太长时间的训练阶段。
所记述的对玩具进行训练使其可以相对其它玩具聪明并自主地作出反应的新颖方法,可以用各种方式和各种改进的实施。例如,它可以轻易地延伸至训练玩具相对表面1和/或表面1上的被动附件的特征聪明并自主地作出反应。
应该同样了然的是,这方法可以延伸到其它大范围的游戏和应用,该些游戏和应用对具有位置认知的玩具采用共同训练原理,即通过同时录制作用序列和关于那些作用序列的环境数据,以在游戏的过程中检测到与一作用序列的环境数据跟当前或历史环境数据相关时自主地重放该作用序列。
这些游戏的某些实施例亦可以采用自我学习算法,其根据例如是在游戏中运用作用序列的成功,以对部分作用序列优先选择而对其它作用序列表示不喜欢。
社会虚拟:Wuggles
展示“逼真生活行为”的电子玩具是本领域的现有技术(例如US6544098、US6089942、US6641454)。这些通常采用宠物或玩偶的形式,可能包含语音合成器、触动附件(例如嘴、眼睑、手臂)、传感器(例如舌头/喂食传感器、冲击/抚摸/摇动传感器、光/声传感器等等),以及在玩具之间相互作用的红外通信。某些这样的玩具可以仅仅模拟玩具之间的交互作用。例如,一个玩具可以说某些东西,发送一个码到其它玩具并指示它说了什么,其它玩具可能发出一个适合于接收的代码的随机选定的回答。然后他们继续进行一个模拟“谈话”。其它这些玩具有一个感情状态262,如图13所示。其可以包含指示以下参数:例如其厌烦、愉快、饥饿、健康程度,以及它是否睡着或醒着。这些状态262的一些由它接受的刺激源260(例如其传感器开关告诉它正在被抚摸或喂食)驱动并随着时间261推移而被驱动。例如,让其单独和/或不进食越久,玩具的厌烦和饥饿将会分别增加。某些状态262可以进入其它状态262,如箭号头263所示。例如,当一个玩具饥饿越久,其生病程度越高。
这些玩具的行为265至今只限于合成语音和附件驱动。玩具的行为265通常通过他们当时接受的刺激源260、他们的当前感情状态262和他们对用户和其他与他们相同的玩具的基本知识264来调节。知识264捕获于玩具的程序中,当他们的用户触发某个传感器时或当所述玩具接受一个关于另一玩具动作的通信时,其限定什么行为265是适当的反应。
通过施行本玩具系统的新颖方法,这些玩具的多样性行为和能力可以被显着地延伸,超过本领域当前记述的。本玩具系统不仅允许他们感知他们在空间的位置以及他们与其它“事情”及其他玩具的接近程度,而且它同样允许他们知道他们之外的“事情”和位置,并与该些“事情”和位置互动、移近或移离该些“事情”和位置。这样使更多的刺激源260、状态262、知识264和行为265变得可能,例子可见图14中划有底线的项目。它同样使得玩具可以具有关于其它“事情”的态度292,例如希望通向或靠近另一事情,或惧怕、喜欢/不喜欢某个位置或事情,或去寻找同伴或保持孤独。现在玩具可以知道(或学习)关于他们可以通向的那些地方的位置、路线,他们的环境的事情和那些事情或其它玩具的地点。同样,他们现在可以具有状态262来描述他们与事情的关系(即这里或那里的概念),并且他们可以具有与除他们自己以外的事情有关的意向。
Wuggles是对这类玩具应用本玩具系统的一个实例性实施例。他们是自适应的、有智能的电子宠物。他们的身体是他们的基座2的一部分,并跟前述实施例般配置(即两个轮具有关联的主推进器(如果需要的话包括离合器部件),并通过一个被动滚球提供驱动和支撑;轮的前后安装有两个感应点4)。
他们可以没有致动器10或附件,但是具有一个以红-绿-蓝色LED(发光二极管)形式的指示器12,将灯混合串成以允许Wuggle的身体根据其感情状态262发出宽大的色谱的光。Wuggles具有对抚摸和喂食敏感的传感器,以及声音识别和语音合成部件,其容纳了一个使得他们可进行合成以对他们的环境中的事情和位置的名称作出反应的小词汇表、以及与他们的感情状态262、行为265、态度292相关的单词,和某些额外的单词诸如“好”、“是”、“不”、“坏”、“良好”、“去”、“进去”、“出去”等。
Wuggles生活在图15所示的Wuggle世界。这包括他们的家270中的寝室271、浴室272、起居室273和厨房274,以及他们的家以外的:学校275、公园276、糖果店277和医生的诊所278。“事情”可以存在于一些或所有的这些区域中;例如,寝室271可以包含床279;浴室272可以包含一个浴缸280、水槽281和抽水马桶282;公园276可以包含秋千283、环形道284和滑梯285,诸如此类。Wuggle世界通过位置编码表面1来限定。其是如何实现的,取决于位置编码的能见度,但可以包括任何或下列方案的组合。
表面1可以打印有描述Wuggle世界中的位置和事情的图形。这适合于肉眼看不见的编码,并会允许玩具实体的进入每个区域或家具。
可选择的,如果表面1的编码肉眼能见,且不可被其它的图形元素所掩饰,则位置和事情可以用其它方式表示。例如,在一些实施例中,该等位置和事情可以三维物体或表面上的突出部表示,它们可具有倾斜面以供Wuggles移到它们上。在这些实施例中,位置编码继续设于倾斜面上并延伸至物体上。实例为床279、抽水马桶282、滑梯285和环形道284。
当Wuggles移动至某一物体并与之相邻时,某些“事情”可以被实施以“使用”他们。例如,Wuggles将与水槽281、书桌286和冰箱287互动,仅仅当他们在移动、或已移动并接近于他们时。
其它“事情”和位置可以被纵向的隔板所限定,例如建筑的墙壁288。
其它部件,诸如秋千283,可以与所述Wuggle实体联系并那样相互作用。在秋千283的情况下,例如,所述Wuggle可以倒进秋千中,以致棒289滑过Wuggle的背面并进入槽290之内。所述Wuggle现在可以短距离地往复移动,所述秋千将和它一起移动,从而模拟摆动的作用。当所述Wuggle离开秋千283,棒将在Wuggle移开时滑出Wuggle。
对于其它的“事情”,诸如浴缸280,Wuggles可能需要被抬起到他们之上,并放置在一个没有位置编码的表面上。取而代之,物体的表面可以用某种其他方法编码,目的在于Wuggle可以确定它已经被抬起到什么物体上。例如,如果位置编码使用颜色线,如后文记述的,则浴缸的表面可以是一个特定颜色的彩色,其可以通过感应点4被检出。
他们的内部行为265的能力中,Wuggles具有语音和音乐合成器,并是自我驱使的,这样他们可以自主的绕Wuggle世界运动到任何位置,并能对该位置上的事情作出互动。例如,他们可以在公园的迂回路上周而复始移动,或者他们可以“攀登”并“滑”下滑梯,在秋千上往复运动(需要清楚的是,所有这些行动是通过Wuggle的自我移动来模拟的,例如在秋千上他们会往复模拟摆动)。
作为他们接收到的刺激源260的部分,Wuggles可以具有通信部件14,以使得Wuggles能够确定其它Wuggles在哪儿,他们在做什么等等,从而使得Wuggle之间能够互动。Wuggles可以自主的(在主动模式中)互相玩捕捉、复制我、温暖/冰冷或捉迷藏。或者一个Wuggle可以被用户周围推动(在被动模式中),以与其它自主移动的Wuggle(们)玩游戏。
Wuggle的个性可以被上传到一个虚拟(可能地放大)的Wuggle世界主机的特别网页中。这里他们可以跟其它使用者上载的Wuggles互动。
Wuggles被他们的感情状态262、态度292、知识264和刺激源260(包括位置和跟其它Wuggles或事情的接近程度)所控制。他们的知识264可以被预编程(例如表面1的什么部分被描述什么事情或位置)或通过用户教导。例如,用户可以教导他们去学校,或他们可以通过抚摸和轻拍或例如是“好”的单词助长行为,而坏行为(例如在房屋里玩抓捕)则以例如是“坏”的单词劝阻。
Wuggle的感情状态262包括愉快、兴奋、饥饿、健康和疲倦程度。他们的状态262同样可以反射他们相对外界的相互作用和意图:例如,他们可能饥饿,特别是在游玩了公园276感到疲倦之后,而发展出一个去厨房274并“查抄”冰箱287的意图。或者他们也许已在公园276中变“脏”,想去浴缸280处洗澡或使用水槽281以变得“清洁”。或者他们可以变得无聊,并想去起居室273中看电视。或者他们的“膀胱”随着时间被填充,直到他们急需上厕所,在这时他们将想去抽水马桶282处解手。清楚地,位置感应能力的添加有创造一个巨大范围的Wuggles和他们的环境之间的有趣行为和互动的潜能。
Wuggles同样具有预编程或学习状态292:例如,可以惧怕一些地方(例如医生278),但是喜欢其它的(例如甜点店277),或者他们可以对秋千283缺乏信心,但示范一次后他们会变得自信。
Wuggles是一个持续进行的游戏,其中用户的目标仅仅是养育和与他们的Wuggles玩耍。当他们饿时,他们应该去厨房274,或甜点商店277,并进食。但是要注意不能给他们太多甜点,否则他们会生病。当他们不舒服时,他们应该去看医生278。当他们悲哀或恐慌的时候应该被抚摸。当他们无聊的时候,应当和他们一起玩,例如可以去起居室273或公园276。
Wuggles喜欢稳定的,作为一个会养育的父母,由你决定保证他们在学期期间天天去学校275上学,并让他们每天晚上在适当时间上床279睡觉,并在睡觉之前在浴缸280洗澡并在水槽281刷牙,否则他们可能感到疲惫并在早晨易怒。
通过提供位置意识,以允许关于玩具外部的事情和位置相关的知识264和状态292,可对这些玩具的运行增加一个全新层次的能力和多样性。
提供消息的:聪明的老猫头鹰
聪明的老猫头鹰(WOO)(图16)是一个互动导师型猫头鹰,针对学龄前儿童或小学生。它在表面1运行,表面1容纳无形的位置编码,并在其中打印有可见图形元素,该些图形元素适合于一个特定领域的知识或爱好:例如,全世界的国家、沧海捕鱼、数字、足球运动员等等。若干不同的表面1可以购买用在WOO上。在某些实施例中,位置编码可以打印在一张透明片材上,然后将透明片材叠加在包含可见图形的表面1上。其它或相同的实施例可以允许可见图形从一个专门网页下载,并在家打印。在更多的实施例中,表面1可以不是单片的,而可以是一本书中的一页。
WOO实质上是一种信息设备,提供与其位置相关的表面1上的图形元索的信息内容物。换句话说,表面1可以被认为是允许用户通过WOO选择信息内容物的菜单。为此,表面1可以包含主要图形元素,其可以反过来包含子图形元素(等等到任何程度)。主要图形会提供表面1的信息内容物的子领域的入口,子图形会提供去所述子领域中信息内容物的区域的出口,等等。
在相同的或其它实施例中这些图形元素可包括单词,字母,数字或其它标记并且WOO可被操作以提供关于单词,字母,数字或标记的信息内容(即它可以大声地读取)和/或可以提供与它有关的其它信息内容(例如其定义,或在字母表或数字串中的位置,或以字母为起点的单词等等)。
信息内容物通过WOO的正面296和通过在其主体内的一声频输出装置提供,其正面296包含一透明的液晶显示器(LCD)屏幕297,其声频输出装置包括声音合成电路和一声频输出设备,诸如一喇叭。头部作为组合主体和底部2的一部分可容易被使用者抓住和滑动。WOO优选没有原动力,因此它不能自身推进,并优选没有制动附加物,连接器34或传动插座35,36。然而,它有旋转元件或滑轨以促进其在表面1上自由移动,如同它被使用者推动一样。
LCD屏幕297和声频输出装置(在此被共同称为信息装置)是受处理装置3的控制。它们被用于输出存储在存储装置15中的视频,图像,语言或声音数据(在此被共同称为信息内容物)。当不输出视频或图像时,LCD屏幕297可以显示WOO的眼睛,其可以是动画化的。
仅需要一个感应点4,而这被安装在玩具前面的点装置298中(被设计为玩具的喙)。这使得WOO去检测其点装置位于代码化位置的表面1的什么部分,并且它利用这个数据去选择和输出适合于表面1上那个点的信息内容物。这可通过使用者将玩具在一特定元件停留一段最少的时间,或通过使用者按下玩具上的按钮299来触发。
对于任何具体的表面1图形(或重叠图形)WOO均编程有数据,数据首先涉及关于在那个位置描述的图形的表面1上的一具体位置;和,其次,提供与每个图形有关的信息内容物。这编程的实施,可以是:读取(利用感应点4)其它地方(例如表面1的后面)印刷的密码,或插入表面1上的存储模块中,或从为WOO创建的网址中下载编制程序,或以任何其它本领域已知的合适方法实施。
WOO还可以与使用者做游戏,从而加强学习经验。比如,通过挑逗它们(通过推动玩具)在特定时间内发现的一具体单元或系列单元,或名字是以一指定字母作为开端的单词的单元,或用一具体颜色或形状粉刷的单元,等等。
应注意到,每个实施例中记述的,在玩具和表面1之间没有任何物理连接的需求。例如不需要在玩具和表面之间接线以在两者之间引导电信号。同样应该注意的是,如上的每个实施例所述,玩具自由地以任何方向通过表面1,一是靠其自身的动力或是被用户推动。玩具的移动是无限制的。尽管玩具倘若如此期望可以沿着一个特定的路径移动,但它不局限于此。
位置传感系统
从上文清楚的是描述的玩具系统依赖于足够低成本的玩具中能用的位置传感系统,这样系统的新颖例子现在被描述。其核心是代码化面的位置,其密码可被安装在玩具(或任何其它可用这个系统的可移动物体)中的传感器读取。此外其比任何现有技术的成本都低,它还是实用的并且能处理由例如是传感器的小跳动或表面1的污物等引起的解码错误。
位置代码化表面
表面1包含密码,其以如图17中穿过表面1延伸的线性单元300,301实现。这样的线性单元300或301的一组(序列)302或303,被空间分开且跨过表面1平行布置,代码化符号序列。因此,这些线性单元300和301在本文中称为符号行。
清楚的是一个序列302(x行),在跨过表面1的一个方向上改变,仅仅代码化一个坐标轴。对于两维位置传感,编码第二坐标轴的第二序列303(y行)被叠加在上,并且垂直于第一组302以形成一网格,如图17所示。两个序列302,303必须被识别,因此x行300和y行301可被分开解码以独立的确定x轴和y轴上的感应点4的位置。
符号行300,301可被感应点4利用应诸如电容,感应,电阻,磁性,电磁,光学,光电,热量或静电效应,或从线性单元被代码化导致的结果如表面1上的凸起或凹痕来检测。符号行300,301可能由表面1上或中沉积或印刷的材料形成,或可能由元件诸如附着于或内嵌于表面1的导电线形成。每个符号行300或301中代码化的符号值可以对感应点4敏感的方式通过改变符号行300或301的一些参数被代码化。这个参数可是,例如,其磁通密度,其宽度,其反射率等等。可选择的,一组符号行300,301可用来代码化一符号,而不是利用仅仅一个符号行300或301。或者符号值可通过测量转变一符号行300或301的时间相对于穿过一些参考的符号行300或301的时间来代码化。
在表面1上代码化的符号的序列302或303是一窗口序列,也叫做(a.k.a.)伪随机二进制序列(PRBS),de Bruijn序列,或m序列。
这个具有的特性是具有固定长度的W连续符号的每个子序列(一窗口,W>=1)是在全部的序列302或303中是唯一的,因此在序列302或303中具有唯一的位置。符号对应于坐标,因此当传感器通过和检测符号行300或301的窗口时,序列302或303中窗口的位置和坐标空间中传感器的位置可被确定。
可被定位的窗口序列可被用于这个系统。其特性在于对于序列302或303中每个唯一的窗口,那个窗口的反转并不存在于序列302或303中。因此当符号的窗口被传感器检测时,当传感器相对于坐标轴向前移动时它将仅仅匹配序列中302或303的子序列。如果传感器向后移动,符号的检测窗口必须在全部的序列302或303中的匹配被发现之前反转。这个事实可用于确定传感器相对于坐标轴的方向。
如果窗口序列302或303不能定位,那么提供定位信息的其它方法必须被使用,如下文所述。
在不限制上述的普遍性的前提下,优选实施例包括印刷的纸或塑性表面1,其在表面1上的黑色背景307上具有符号行300,301,如图17中描述的通常布置中的展示。符号行300,301用变化的宽度304粉刷,其代码化符号值。注意在图17中示出的宽度304的序列是完全只是示例性的;他们没有打算表示任何具体的序列,如通过这个系统的方法需要的。合适的两个序列302,303(在很多序列之中)经由附录A中的例子提供一个具有6符号的窗口长度(W)和3符号的字母表(K),并且一个具有W=4和K=5。
例如,图19示出序列302,303的放大部分,其示出了具有W=6符号的窗口长度的附录A中的第一序列。这包含三个设想的符号值(“0”,“1”,“2”),其用三个宽度的符号行300或301代码化,如在示意图中通过尺寸320,321和322分别指示。明显的,如果字母表中需要的符号越多那么使用的宽度越多。
符号行300或301和其毗连的空间(符号区域),全部通过尺寸323指示,表示表面1上的坐标的宽度,沿着与符号行300或301垂直的轴。因此符号区域的宽度和坐标的增长通常是固定的,但不是必需的。注意放置符号行300或301在符号区域的左侧面(或顶部)上的习惯。下文全部的描述均假定使用这个布置。符号行300或301可能同样地被放置于右边(或底部)并且因此而更新算法,这对于任何本领域技术人员是明显的。
现在转向图20中的示意图,其示出了经过表面1的被一些装置(未示出)支承的可移动物体的底部2中的感应点4的横截面的特写图。感应点4包括能量传感器340(诸如光电二极管或光电晶体管)和能量源341和342(诸如发光二极管(LEDs))。可移动物体可以是本文中其它地方描述的玩具,或它可以是用于将坐标数据输入计算机的触笔,或任何其它需要定位能力的装置。
能量源341,342照明行300(仅仅示出x行300,然而这也适用于y行301),其反映出,吸引或发荧光(返回)经由一孔343或透镜沿着点划线箭头344指示的路径传播回到传感器340。孔343或透镜和护罩345被设计为限制到达能量传感器340的幅射,因此它仅仅容纳从表面1的一小部分(感应区域)返回的幅射。
感应区域的直径346被设计为稍微小于最粗符号行300或301(例如图19中的“2”符号322)并且大于较细符号行300或301(例如“0”符号320和“1”符号321)。当能量传感器340经过一符号行300或301,在感应区域经过符号行300或301的中心时,传感器340的最大输出出现。这个最大输出是在那点通过孔343传递的返回幅射的函数,其中也是符号行300或301(例如320,321或322,在图17中通常标注为304)相对于感应区域直径346的厚度的函数,其还是被符号行300或301代码化的符号值的函数。
因此传感器340在它经过一符号行300或301时,其最大输出被检测,符号行300所编码的符号值可被推算出来。为了保证最大输出已经达到,系统等待直至感应区域已经移开符号行300或301。为了使传感器340当它移开一符号行300或301时被正确地检测,行300或301之间的中间间距应该至少如感应区域的直径346一样大(或仅仅稍微小于)。
x行300和y行301通过用第一和第二材料粉刷它们而被识别。第一材料由于通过来自于第一能量源341的第一幅射波长(称为材料的特有波长)的激励返回幅射,第二材料由于通过来自于第二能量源342的第二特有的辐射波长的激励返回幅射。当被其它特有波长的辐射激励时两者都不返回有效的电平。因此通过向能量源341和342轮流通电,传感器340能分别检测x行300和y行301。
例如,在优选实施例中,x和y线组302,303通过颜色被识别;一组302被印刷为红色,另一个303为蓝色。两个相应的红色和蓝色LEDs341,342被安装在可移动物体的底部2,其波长与被x行300和y行301的颜色反射的光的波长匹配。
表面1的背景307是黑色的,因此当红色LED341亮灯和蓝色LED342关闭时,红色行300反映出红光而蓝色行301和黑色背景307都吸收红光,使得蓝色行301消失在黑色背景307中。相反的,当蓝色LED342亮灯并且红色LED341关闭时,蓝色行301反映出蓝光并且红色行300消失。
当然,如果表面1的背景307是白色,那么结果相反并且反射行300,301是唯一消失的。在这样一个实施例中当感应区域经过一间隔时传感器340的输出最大。因此在传感器340穿过一符号行300或301时,来自于传感器340的输出最小,该最小输出被用于解码被符号行300或301代码化的符号值。用于下文的目的,除非另有说明,假定背景307是黑色的,不过为了清楚这个未必始终示出在符号行300或301的示意图中。
在本文中对于传感器340感应,查看,解码,交叉,运行或在其它方面地移动或检测一符号的讨论,应该了解的是意味着传感器340经过一符号行300或301移动并且解码符号行300或301中的符号值。
传感器340的输出被供应给解码装置8,如图20示出。这是在处理装置3的控制下,其引起它去轮流的将LEDs341和342亮灯并且数字化传感器340的输出,同时每个LED341或342被亮灯。如上文所述传感器340的输出被用于解码传感器340传递的符号值。如果两个感应点4被提供,那么这些符号值被处理装置3使用以确定感应点4的位置,速度和经过表面1的路径,和确定一垂直轴周围的可移动物体关于表面1的定位。
解码装置8通常包含轮流开关能量源341,342的电源的电路和采样电路,放大电路和传感器340的输出条件电路(例如用一采样和保持放大器(SHA))。然后SHA的输出用一原有的能解决符号值电平的模数转换器数字化(这个例子中为3)。解码装置8可能是其它部件的一部分,诸如处理装置。
在相同的或其它实施例中,符号编码可能是可见的或肉眼看不见的。如果符号编码是可见的,那么存在问题的是在行301和300穿过的点前景行301遮蔽垂直的背景行300。明显的这不能应用,即使前景编码对于背景编码的结果是透明的,如同被感应点4检测的一样。解决办法是在行300和301的交点处仅仅放置一具有第三材料的正方形310,如图21(a)和(b)所示。上述第三材料被这样选择:a)当被一个符号行组302使用的第一材料的特有幅射波长激励时,它以大约与第一材料相同的程度返回幅射;和b)当被第二材料的特有幅射波长激励时(提供给第二符号行组303使用),它以大约与第二材料相同的程度返回幅射。这确保当感应区域经过行300和301的交点时,传感器340将看出两行300和301,不考虑能量源341,342通电。
利用上文给定的染色行300,301的例子,如果背景307是黑色的(图21(a)),那么用于正方形310的合适颜色可能的白色或淡灰。如果背景307是白色的(图21(b))那么用于正方形310的合适颜色将是黑色或深灰色。可选择的,如果用于符号线组302和303的颜色以少于50%的浓度粉刷,那么正方形310可能通过混合来自于每个符号行300,301的象素产生,如此以致于象素不重叠不过是散布在彼此之中。
在一些实施例中,包含两种材料的特有波长的一个宽频带能量源(例如白光)被采用去代替两个轮流照明的能量源341和342。被提供的两个传感器的每个对应于一个滤波器,其过滤出一个或其它返回波长。在这个实施中过滤器提供在x行300和y行301之间同步响应的识别方法。
在一些实施例中,照明表面1的能量源341,342可在一些频率方便的被调整。利用一高通或低通滤波器,然后感应点4能够滤出那个频率的光,从而除周围光线以外的光线可以渗入传感器340。
在一些实施例中,当传感器340被移动到符号行300或301上时高阈值被采用,和当传感器340被移开时采用一低阈值。这将磁滞引入数字化操作从而当传感器340位于符号行300或301的边缘时阻止问题,并且传感器340的输出是在查看没有符号和查看“1”符号之间的数字化阈值上。在这样一位置,解码装置8的输出可以在两个状态之间来回摆动,致使处理装置3不正确的断定多个符号行300或301已经交叉。显然为了采用正确的阈值,系统必须记得传感器340是否是先前经过的一符号行300或301或是否是先前经过的间隔。
了解的是表面1不是必须平坦的并且符号行300,301不是必须为直线,或在每个式样302或303内平行,或在式样302和303之间垂直,或限制为仅仅两个式样302和303。所有需要的是至少存在足够符号行300,301的两个式样302,303,覆盖表面1的足够一部分以满足这个位置传感系统的具体应用的位置需要,和相对于另一个足够倾斜的一个式样302,303以便能用于表面1上的双向位置。
同样,符号行300,301的式样302,303可能表示适于本申请的具体需求的相对坐标或直角坐标或极坐标或任何其它坐标或映射系统和表面1的形状。
可选择的符号行300,301布置和表面1形状子包括,但不局限于图22(a),(b)和(c)示出的例子。这些示出在平坦和成形的表面1上的符号行300,301的两个式样302,303的可选择的布置。图22(a)和(b)示出应用于整个表面1的编码;图22(c)示出了它应用于一在表面1上的跟踪。对于任何本领域的技术人员清楚的是下文的所有描述被用于以这些或任何其它方法形成的符号行300,301的许多式样302,303。
操作
注意在所有的讨论中认为仅仅跟随一个传感器340的输出。如果存在两个感应点4然后每个传感器340的输出被以精确的相同方式处理(当然可参见前文中讨论的组合传感器340路径)。
图23提供了一个用于这个位置传感系统的初始化和主程序的流程图。所述系统在步骤350通过初始化常数ACQUIRING、ACQUIRED、TRACKING、RECOVERY、F(意味着向前)和B(意味着向后)开始。它们在所述描述和流程图中被用于帮助理解;它们的值并不重要只要不同即可。
步骤350也限定常数W、MaxCO和常数矩阵SEQ()。在此例子中W限定了窗口长度(=6),MaxCO通过本系统限定了最大的代码化的坐标。这种情况下,来自于0-257的坐标利用储存在所述常数矩阵SEQ()中的符号序列被代码化。在此例子中相同的可定位的在SEQ()中的窗口序列用来代码化两个轴线的所述符号行组302和303。它利用三个符号值(“0”,“1”和“2”),具有W=6的窗口长度,且通过附录A中所示的第一序列完全地被设定。
如上文所述,流程图中《名称←表达》表示可变量或常量《名称》被赋予箭头后面的《表达》所表示的值。此外,通过后面括弧指示可变的或恒定的可变量或常量名称是一可变量或常量的矩阵(如列表),如上文的限定。
注意在一矩阵中的单元范围通过一指针范围被指定。因此格式ArrayName(i1..i2)的表达指示来自于指针i1至指针i2中包含的矩阵ArrayName中值的范围。
一些排列具有多个指针或尺寸。例如AnotherArray(x,y,z)具有三维空间。它们利用公式通过转换所述三个指针至单个指针被映射至单个列表:单个指针=x*Ny*Nz+y*Nz+z,其中Nz和Ny可能是z和y各自的最大值。这样一矩阵的例子是常量矩阵RecTBL(),其具有四个指针。这些指针和在步骤350中被用于初始化RecTBL()的数据,将在随后描述。
来自于x行序列302和来自于y行序列303的检测符号通过相同的程序以精确的相同方式被处理。为了简化,许多排列具有2元指针,其值通过可变量Ax(意味着轴线)提供。Ax利用常数X和Y设定,其在步骤350中也被限定。Ax被用于有效地将排列拆分为两个,一半排列被用于储存有关来自于X轴位置的数据,一半被用于储存Y轴的数据。因此通过简单变换Ax的值,系统可采用相同程序去解码每个轴的位置。
Ax在步骤350中被设为X,此值被用于初始化步骤351中两部分排列PosState()、SPos()、SDir()、Buff()和Buffldx()的X部分。然后步骤352、353和351引起相同变量Y部分也被初始化。
PosState()被用于控制系统的操作且可具有四个常量的一个:ACQUIRING、ACQUIRED、TRACKING或RECOVERY。当第一任务是获得获得一位置时,在步骤351设置用于两个轴线的ACQUIRING。SPos()和SDir()保持用于每个轴的传感器位置和方向。当这些到目前为止是未知量时它们在步骤351被设置为空值。
Buff()包含用作缓冲器的两个排列,其中中选的缓冲器通过其Ax指针的值被指示,如上文的解释。一个缓冲器保持上次的W或来自于X行序列302的较少的检测符号,另一个保持上次的W或来自于Y行序列303的较少的检测符号。Buffldx()包含一用于上次检测符号的指针,所述上次检测符号在Buff()中保存在每个轴线的缓冲器中。当没有符号被储存在任一缓冲器时,Buffldx()在步骤351中被设置为用于两个轴线的-1。
一旦这些排列的X和Y部分被步骤354初始化,将引起解码设备8和感应点4分别检测表面1上的X行300和Y行301。如上文所述,系统等待直至在试图解码之前所述感应区域离开符号线300或301。步骤355测试此状态是否已经发生。如果没有,控制返回至步骤354,系统连续地和分别地检测X行300和Y行301直至一符号线300或301交叉且确定一符号值。在这一点上步骤355将积极测试,步骤356将存储检测符号的值在变量符号中。它也存储所述符号行组302或303的坐标轴,其中在可变量Ax中所述符号被检测。
然后步骤357校验,如果用于符号的轴线(在Ax)的BuffldxQ小于W-1,指示其轴线的Buff()中的缓冲器未满。如果是这种情况,步骤358递增Buffldx()并且用它去存储其轴的在Buff()缓冲器中的下一个有效单元中符号的符号值。因此第一检测符号将被存储在Buff(Ax,0),第二符号在Buff(Ax,1)等等。
然而,如果Buffldx()已经指向其轴的Buff()中上次的(W-1th)单元,然后所述缓冲器是满的并且控制传递至步骤359。如被箭头指示的上述排列名称Buff(),其移动新的符号值进入其轴的Buff()。通过移动意味着Buff()中的每个单元被复制至其左侧的单元(如Buff(Ax,0)=Buff(Ax,1);Buff(Ax,1)=Buff(Ax,2);等等)。此引起先前Buff(Ax,0)中最早的值被丢弃并且清楚最后的单元Buff(Ax,W-1)中的空间,因此最近的检测符号值可以被存储在此单元。FIFO(先入先出)结构是已知的且是任何本领域的技术人员熟知的。
然后步骤360测试当前轴(在Ax)的PosState()值,且根据其值,控制被传递至三个程序中的一个:AcquirePosition361,TrackPosition362和RecoverPosition363。这些程序中的每一个的功能在下文中说明。清晰的是,如果PosState()等于ACQUIRED或者TRACKING,步骤360传递控制至TrackPosition362程序。
注意所述流程图清晰的展示了已经简化至它们的基本功能。任何本领域技术人员可预见的增加都可以被构造。例如,当系统首次起动时,传感器340可能已经经过一符号行300或者301。可能的是它将离开符号行300或者301没有不断遇见足够的符号行300或者301以正确地解码其符号值。如果条件存在的话初始化步骤351可以为此进行测试且设定一标志。然后该标志被用于所述系统以不考虑第一符号行300或者301的交叉,当其值不确定时。
采集
在步骤351PosState()被赋适于各轴的初值ACQUIRING。因此步骤360传递控制至图24所述的AcquirePosition361程序。步骤385校验适于被处理的轴的Buff()是否已满(即Buffldx()=W-1)。否则程序返回且传递控制直接返回循环重新开始的步骤354。
如果一符号窗口(W)已经从该轴检测,那么Buff()将是满的且控制将传递至步骤386。适于子序列的SEQ()中的该搜索的符号序列与适于轴的Buff()中的子序列相匹配。
注意当由左至右(x轴)或者由下至上(y轴)读入时在SEQ()中的序列与符号行序列302或者303匹配。表面1的坐标在这些方向上增加,因此原点(0,0)位于表面1的左下角。因此如果步骤386中一匹配的子序列被建立,那么它肯定以与在SEQ()中出现的相同顺序被读入Buff()中,因此传感器340必须向前移动经过序列303或者303(即,从左至由或者从下向上)。因此如果步骤364检测一匹配被建立,那么步骤365没定适于当前轴的SDir()为常量F的值以指示感应点4相对于轴向前移动。
然而,如果没有匹配被建立,若非子序列与适于当前轴的Buff()中的子序列的反向匹配那么步骤366引起SEQ()再次被搜索。如果一匹配现在被建立,步骤367传递控制至步骤368,其中设定SDir()为B以指示传感器340相对于轴向后移动。
按照惯例在优选实施例中序列302或者303中窗口的位置提供窗口中最左侧(或者顶部)符号的坐标,如图19的说明。示出的符号的第一窗口长度(在该例子中W=6)表示窗口数量50,其解码以为窗口中最左侧的符号提供坐标50。同样窗口数量51解码以为窗口51的左侧符号提供坐标51,诸如此类。
也要注意,如果存在通过表面1的L符号行300或者301,那么上个W符号代码化坐标位置L-W。因而,上个W-1的坐标位置不具有相应的的编码窗口。这是无关紧要的正如跟踪程序简单增加或者减少适于一轴的传感器位置SPos()如同它通过轴上的符号行300或者301向前或者向后相应的移动。
因此在SEQ()中匹配的子序列的指针可用来确定传感器位置。例如,如果感应点4沿箭头327(图19)指示的路径向后移动经过表面1,它将穿过窗口51中的W符号且将位于坐标位置50中。因此其位置可源自于那些W符号的窗口数量(=51)少一(=50)。
然而,如果它沿箭头326的指示向前移动经过表面1,那么它将具有来自于窗口53的检测的W符号且将位于坐标位置58中。因此其位置可源自于那些W符号的窗口数量(=53)加窗口长度W(在此例子中6)减1(53+6-1=58)。根据传感器340是否向前或者向后移动,这些等式被用来设定步骤365或者368中的传感器位置SPos()。
现在传感器位置和方向已经建立,系统可以切换适于该轴的PosStateQ至TRACKING,假若确信第一W符号被在相同方向(即它们是一符号的真实窗口)前进的传感器340连续地检测。
在实施例中比如优先实施例,其中可移动的对象用手保持,这不能够被确保;使用者可反转传感器340的运动方向许多次。另外的,如果传感器340被轻微抬起,或者如果有污物在表面1上,那么符号行300或者301可能被不正确的读取(在此这些被相应的称作比特跳动和比特错误)。因而检测的第一W符号可能,例如,来自于W/符号行300或者301,由于反转其被检测两次。随机窗口由这些反转形成且感应错误有可能与SEQ()中的一子序列匹配,但是所述位置当然从可能错的子序列的指针中解码。
显然长的子序列必须被匹配(换句话说符号行300或者301越多传感器340肯定在相同方向交叉),因为随机反转,比特跳动或者比特错误子序列将被匹配的可能性较小。例如,在长度L符号的一序列302或者303中,有长度N的L-N+1的子序列。如果N>=窗口长度W,那么那些N长度的子序列将完全是唯一的,因为它们每个从W符号的唯一窗口开始。因而随机产生那些有效的(即存在序列302或者303中的)N长度子序列的机率被(L-N+1)/(K^N),其中^意味着次方且K是采用的字母表中符号的数量(因此K^N是可能的N长度子序列的总数)。因此根据幂定律,随机产生一有效的N长度子序列的机率随着N的增加而降低。
在实际事实中下限值符号可能多于上限值,因为它们可以在上限值符号处由反转所引起。因此通过随机反转产生的序列仅仅匹配全部序列302或者303的恰巧具有相同的非正态分布的下限值符号的部分。因此一有效N长度序列的机率实际上小于给定的。
在获得的位置被接受之前,流程图中示出的例子需要3*W-18连续符号以在相同方向交叉。利用上述处理,该给定的从随机反转中得到一错误位置的机率至多,大致为1.7百万分之一(W=6,N=18,K=3,L=240)。在另一实施例中,K=5符号用于序列302或者303字母表中(参见附录A中示出的第序列)。
在该实施例中,仅仅需要12个符号交叉以产生一得到错误位置的大致在1.1百万分之一(N=12,K=5,L=240)的相应机率;或者可能指定13个符号以产生大体5.4百万分之一的机率。
因此,在当前例子中,一旦用于检测的第一W符号的匹配的子序列被建立,步骤369设定适于当前轴的PosState()为ACQUIRED,且随着值2*W设定一适于该轴的计数变量AcqCount()。这将使其次的12个符号的每个递减,且如果它们匹配适于感应点4的假定方向的其次的12个预期的符号,那么位置将被确认且系统将切换至TRACKING。
那么程序结束且控制返回至主循环重新开始的步骤354。一旦其次的符号被从该轴检测,步骤360将知道PosState()被设置为ACQUIRED且控制传递至TrackPosition 362程序,下文描述。
跟踪
当TrackPosition 362程序被调用,步骤370(图25)测试适于该轴的SDir()中传感器340的方向。如果它为F(向前),那么刚刚检测的符号线300或者301应该是SPos()中老的传感器位置右侧的符号线300或者301,其是再下一个坐标位置的符号线300或者301(参见图19)。因而步骤373测试检测的符号(在符号中)是否等于SEQ()中(即SEQ(SPos(Ax)+1))下一个坐标位置的符号。如果是那么步骤374增加SPos()中适于轴的传感器位置。
然而如果步骤370检测出SDir()中的传感器方向为B(向后),那么刚刚检测的符号应该是老的传感器位置左侧的符号线300或301,其是坐标位置中实际的符号线300或301(参见图19)。因此步骤371测试符号中检测的符号是否等于在SEQ(SPos(Ax))的符号。如果是步骤372减少SPos()中适于轴的电流传感器位置。
假定符号匹配并且SPos()成功更新,那么步骤378将测试系统是否仍然能够肯定一位置的获得(即对于轴PosState()=ACQUIRED)。如果否(即PosState()=TRACKING),那么TrackPosition362程序返回并且主循环在步骤354重新开始。如果是那么AcqCount()计数变量(设置在适于该轴的AcquirePosition 361程序)在步骤379递减并且如果它已经达到零步骤380测试。如果它具有那么获得的位置被确认并且步骤381设置适于该轴的PosState()为TRACKING。
一旦系统切换至TRACKING,TrackPosition 362程序可以通过每次在步骤372或374更新时保留新传感器位置来更新传感器340的路径(如果路径被捕获)。虽然未展示在流程图中,但对于任何本领域技术人员清楚的是通过存储这些随着时间而到达的哪些不同位置,系统能够记录路径,加速度和经过表面1的感应点的速度。同样,通过比较被在可移动装置上的两个独立的、间隔的感应点4记录的位置,系统能够确定相对于垂直于表面1的一轴线的可移动装置的方向。
如果步骤371或373中检测的符号与预期的符号不匹配,那么跟踪失败并且步骤375测试PosState()是否等于ACQUIRED 。如果是这样的话先前ACQUIRED位置和方向在步骤376报废并且系统通过设定PosState()等于ACQUIRING返回至Acquisition模式。然后TrackPosition362程序返回并且下一次一符号被从该轴检测,获得操作重新开始,如同已经被描述的一样。
如果检测的符号不匹配但系统在跟踪(即PosState()=TRACKING),则步骤375失败并且StartRecovery 377程序被调用。切换PosState()至RECOVERY并且设置复位数据结构,如同现在描述的一样。
错误恢复
在至今的现有技术中(远到发明人所注意到)一直没有用于处理传感器反转、比特跳动和比特误差的令人满意的建议。US 5,442,147描述了一形成为假设在哪里所有反转也许已发生(它没有处理比特跳动和比特误差)的系统。然而,此系统需要一在另一个反转可以被处理之前已经涉及的第一反转,不然根据幂定律其数据存储器的需求与每个反转呈几何地增长。如果多个反转一发生然后路径被丢失并且系统重新开始获得位置。
以下方法提供一新颖、有效和非常实用的解决这个问题的办法,即能够跟踪通过多个反转、比特误差和/或比特跳动的传感器340的最大可能的路径,而没有存储要求的限制。
所述方法的核心是两个数据结构,其中一个是复位中适于轴的恢复树。调用RecTree()此排列提供一真正有效的(依据存储器的使用)跟踪传感器340的最大可能路径的方法,传感器340也许已占领它能到达的所有可能的位置。如果传感器340的路径不要求(即仅仅被跟踪的位置),那么RecTree()可以被省去。然而,它将被包括在下述的讨论中,使得所述方法被清晰的了解。
RecTree()被构成为层结构,有一每次能产生一新符号的新层,新符号在恢复中从与RecTree()相联系的轴检测。每层被分成单元,由于向上检测至其层的所有符号的结果,其代表传感器340可能位于的每个坐标位置。因此RecTree()具有三个指针,其被写入形成的RecTree(a,l,e)。a详细说明一用于轴的树且通常通过Ax可变量提供。用于轴a的树中的层的I详细说明被参考并且通常通过Layer()排列提供,其保持恢复中用于每个轴的上层数量。被参考的e详细说明层I中的单元。
另一个数据结构是Scores()排列。此相应的具有如同RecTree()中上层一样的相同数量的单元。象上层一样,Scores()中的每个单元代表现在到达的传感器340的每个可能位置。
每个Scores()单元包含三个变量:CScr,MSCnt和NDir,其用于测量被它们单元表示的位置、传感器340当其离开位置时所处位置(CScr和MSCnt)和其可能方向(NDir)的可能性,如同将说明的一样。Scores()排列用来确定什么时候RecTree中一个路径的可能性的有效地超过所有其它路径。当此发生时传感器340的位置(和其很可能的路径,如果需要的话)被恢复并且系统重新进入适于该轴的跟踪模式。
因为Score()排列仅仅与RecTree()中上层(最近层)相联系,它仅仅具有可能写入Scores(a,e)的两个指针。此外,a详细说明用于轴的得分并且e详细说明涉及得分的上层中的单元。当Scores()排列中的一具体可变量被参考时,它将被写入形成的变量名Scores()中。例如,Scores(x,i)。CScr参考适于X轴的Scores结构的ith单元中的CScr可变量。
开始恢复
当上次检测的符号与预期的符号不匹配时,恢复通过TrackPosition 362程序调用StartRecovery 377程序开始,如前文所述。StartRecovery377程序(图26)通过在步骤390中设定用于此轴的PosState()为Recovery开始。SDir()中先前的传感器方向然后在步骤391被检测并且取决于所述方向,步骤392或393设置LastGdPos()。
LastGdPos()是上次的系统能合理地肯定传感器340所处的在该轴上的好位置。它能确定因为,在一窗口长度W的可定向的窗口序列中,不可能存在多于W-1的对称的连续符号(因为如果曾有W个对称的连续符号,那么W符号的窗口可能等于它本身的反转。这在一可定向的序列中是不被允许的)。通过对称它是平均序列诸如如果W是偶数123321,或如果W是奇数,22322。
考虑在一极端情况下发生的事情,当传感器340通过W-1个符号中途反转时,其因为它们相同是对称的。例如,图19中的箭头324示出当它通过在一可定向的有一6符号的窗口长度(W)的窗口序列中的序列“...2111110...”中途反转时的传感器340路径。
虽然它在坐标位置55中已经翻转为符号328“1”,因为“1”被检测并且预期系统假定传感器340沿着虚线箭头325指示的路径持续在相同的从右至左(相对于轴向后)的方向。因此它假定传感器340现在位于坐标位置54,当时实际的传感器340现在正相对于轴沿着路径324的返回部分向前并且位于位置55。
然后传感器340穿过并且检测坐标位置56和57中的符号“1”至达到位置57。跟踪系统,其预期坐标位置54和53中的符号“1”,假定传感器340沿着路径325持续并且现在位于位置52。因为系统检测被预期的符号,错误直至位置58中的符号330“2”穿过才被发现。如同系统预期的位置52中的符号329“0”一样,产生一错误并且开始恢复。
注意这种情况下上次的好位置是中间符号328上的反转之前的坐标位置55。上次的位置是系统认为的在符号“2”被检测(即在那时SPos()的错误值被检测)之前的位置52。因此去计算LastGdPos(),系统增加3至步骤392中的SPos(),如果传感器340正向后(被假定)或在步骤393中减去3如果它正向前。
在普通情况下对于具有窗口长度W的任何序列,数量被减去或增加是Int(W/2),如流程图所示(其中Int(x)被定义为返回x的整数部分)。符号的数量已经传递因为上次的好位置是比此多一个,即Int(W/2)+1。
步骤392和393也在Scores的0th的NDir可变量中记录,传感器340的方向当它进入上次的好位置时被假设为前进(在SDir())。此Scores的0th单元对应于RecTree()的层0的0th单元。
布置在图27(a)中示出。RecTree()通过正方形418被说明,此刻它由包含一个单元的一层(标记为在垂直高度412上的L0)组成。相当于那个单元是一Scores()排列中的单元,如同通过粗轮廓的盒410说明的一样。水平尺寸413代表相对于上次的好位置在恢复中轴上的位置,现在存储在LastGdPos()。具有标签的初始Scores()和RecTree()单元在尺寸413上的调整指示那些描述的单元的位置,其是上次的好位置。
现在转向图28,其示出了五个新层之后的RecTree()已经建立,作为自上次的好位置被检测的五个符号的结果。这些层通过通常标明420的盒的水平行(尺寸412上的标记L0,L1,等等)来表示。此外所述盒表示层中的单元,其反过来对应于尺寸413上的一个位置。
RecTree()中的每个单元包含一用值-1,0或+1表示的移动增量(表示通过移动引起的坐标的改变)。每个单元中的移动增量代表传感器340开始至到达那个单元表示的位置的最大可能的路线,那个单元表示的位置来自于一通过先前层中的一单元表示的先前的位置,如同通过通常标明417的箭头指示的一样。为简单起见本文将谈论从一层中的单元至下一层中的单元的移动和移动增量,当然在此引用的电压传感器340在通过那些单元表示的位置之间的移动也应该被理解。
因此在顶层(最新层)中的每个单元代表可被追踪的一路径的末端的位置,利用RecTree()中的移动增量值,返回至上次的好位置。它被建立之后,最新层中的每个单元具有一Scores()中的相应的单元(通过粗轮廓的盒421说明),其测量结束在此单元中的路径的可能性。
RecTree()的第一单元代表移动增量进入上次的好位置。这是已知的,这样第一单元不会被真正的使用并且可能被省去。它被包含仅仅因为它使得所述方法能够稍清晰的被了解。
现在返回图26,能够看出,LastGdPos()和Scores()之后,NDir被设置,步骤394初始化一用于循环的变量,该循环将在RecTree()中产生一个新层以用于自上次的好位置被检测的每个Int(W/2)+1符号。步骤394首先设置一临时变量Idx至那些符号的第一个的Buff()中的指针(记录的Buff()中老的符号是在指针0并且最近的是在指针W-1)。
所述层在步骤392或393中被刚刚初始化的是层0,因此layer()在恢复中设置为用于轴的0。这时跟踪恢复中用于每个轴的建立的上层的数量。因为没有移动已经使得在scores()的初始单元中CScr和MSCnt的得分设置为0.
然后步骤395用Buff()中的符号装入变量符号,其是上次的好位置之后被检测的第一个符号,并且RecoverPosition 363程序(下一个描述的)被调用以产生第一层。步骤397和398增加Idx和测试自上次的好位置的所有Int(W/2)+1符号是否已经被处理。如果不,循环重复直至它们是,然后程序终止,控制返回至也终止的TrackPosition 362。然后主循环在步骤354重新开始。
恢复位置
RecoverPosition在图30(a)说明。实质上它在恢复中产生用于轴的在RecTree中的指定为Ax的一层。用于其轴建立的上层的数量是在layer(Ax)并且将被用于去产生新层的检测的符号是在符号中。仅仅作为描述,StartRecovery 377初始化为层0并且设置layer()为0以反映出这个。因为RecoverPosition 363现在将要产生层1,步骤440中首先指示增加在恢复中用于轴的layer()。然后步骤440初始化用于此操作的其余的变量。所有跟随的变量是暂时的并且在完整的RecoverPosition 363程序之后被丢弃。
假定暂时没有比特跳动或比特误差,符号线300或301被检测一次传感器340可能在任一方向上远离上次的好位置来移动再一个的位置。为表示此,每个新层具有比先前的层多两个的单元。因此步骤440设置LyrSize为3,其是新层1中单元的数量(图27(b)中标记为L1)。LyrPos包含被新层中第一(0th)单元表示的坐标位置,这种情况下其是上次的好位置减一。然后OldLyrSize和OldLyrPos被调整到等效值:1和LastGdPos(),用于先前的层0。
Comp(x,y)的功能定义为如果符号x为一比符号y低的值则返回0,如果值相等则返回1,如果x>y则返回2。步骤440中它被用来比较符号中被检测符号的值和SEQ()中在通过上层0中第一单元表示的位置的左侧的符号的值,其是上次的好位置。比较的结果处于可变量RelR中。
可变量Prv被用来指针上层中的每个单元并且初始化为0。HiScore被用来跟踪新层中最高的得分单元并且初始化为-1。
NewScrs()排列是暂时的并且因此不需要为每个轴储存数据。因而它没有轴指针而是在每个其它的方面它如同Scores()排列一样地构成。NewScrs()被用来保持新层中用于每个单元的得分,因而它比Scores()排列多两个单元,其保持用于先前层的以前得分。NewScrs()排列的每个单元中的CScr和MSCnt变量也被初始化为-1。
然后步骤441计算和储存旧层中被处理的第一单元表示的坐标位置(用Prv标引)至GPos中。然后步骤442测试这时位置是否在表面1上的代码化的坐标的范围内。如果它不是,Prv在步骤443增加并且旧层中下一个单元被处理(如果步骤444确定存在一些)。
现在参考图27(b),因为旧层0中的第一单元a代表上次的好位置,它必须在表面1的范围之内,因此步骤442失败。然后步骤445设置指针进入RecTBL()常量排列,其被用于得分的每个可能的从上层中被处理的单元a至新层中三个单元b、c和d的每个的移动,其可能已经从上次的单元a到达(假定没有比特跳动或比特误差)。用箭头表示在图27(b)中的这些移动通常标注417。图27(b)也示出了老Scores()排列中的单个单元410,其涉及旧层L0中的单个单元,和NewScrsQ中用于新层L1的三个得分单元414。
从a到b和从a到d的移动分别表示,用a表示的坐标位置的两侧上的符号行300或301的可能交叉(上次的好位置)。这些符号行300或301在示意图中用单元之间的垂线415和416表示。从a至c的移动表示一个由在线415或416上的反转至a的左侧或右侧所引起的可能的移动。一旦我们知道这些,从a至c的箭头将表示为一向左或者向右弯曲以指示哪些线415或416被交叉,如图28中相似的箭头所示(避免出界箭头的混淆,弯曲不展示有效的触及所述行-此时应该假定)。也注意当谈论a位置的左侧或者右侧的符号行300或301时,这是参照示意图的。如果y轴是在恢复,符号行300或301会显而易见的位于表面1上的位置的上面和下面。
任何的发生这些移动的可能性依赖于在被有效检测的(符号中)符号和a位置的两侧上的符号行415和416之间的关系。对于a左侧的线415,该关系利用步骤440中的Comp(x,y)功能和装入RelR的结果来确定。现在该值被传输至RelL(意味着左边关系)和检测符号至a的右边的线416的关系被计算并且别放入RelR(意味着右边关系)。这两个变量是RecTBL()排列需要的的开头两个指针。
在大多数应用中,可能被认为在任一点准时的可移动的物体在相对于具体的坐标轴相同的方向上比相反的方向更可能继续。因而,可能的是任何具体单元的移出将是在如移入单元相同的方向上。因此,例如,如果在箭头419指示的方向上移入a,然后一个从a至b的移动被认为比从a至d的移动更可能。同样,反转远离a左边的线415的一个从a至c的移动比反向远离右边的线416的移动更可能。
移入先前单元的方向被没置在StartRecovery377程序中并且被存储在Scores()。NDir可变量用于其单元。该值被装入NxDir临时变量,其是用于RecTBL()排列的使用的第三指针。
第四和最终的指针用临时变量Move来提供,其装入我们想要的得分的移动增量(-1,0或1)。最初,是从a至b的移动,因此Move装入-1的移动增量。
所有的RecTBL()指针现在被向上设定,因此步骤446测试我们将要得分的移动是否位于表面1上表示的坐标范围外的位置。如果是,步骤447校验是否存在更多移动至得分,如果否,在步骤448增加Move。如果Move已经等于1那么所有移动增量已经被处理,因此步骤447传递控制至增加Prv指针的步骤443,因此旧层(如果步骤444确定的那些)中的下一个单元可被处理。
假定移动是好的,步骤449确定其得分和利用指针刚刚建立的可能的以进入RecTBL()常量排列的下一个方向。在目前的实施例中,被认为有八中可能的移动类型,以图29(a)中的表格示出。对于每个移动类型,表格示出移动在命名为“Illustration“的纵列中。灰色棒表示一位置的两侧上的符号行300或301,箭头表示传感器340经过那些符号行300或301在任一方向上的移动。所述检测的符号与被通行的实际的符号线300或301的值的关系设定在命名为“symbol Relationship”的纵列中。用于移动的得分在命名为“move score”的纵列中示出。这反映了在这个具体的实施例中发生移动的可能性。
从这个表格中可以看出,在优选实施例中匹配检测的符号并且没有反转的移动被认为可能是最多的且引起最大的移动得分7。匹配检测符号但经过一空间反转的移动得分小一点6。反转进入相同位置远离符号线300或301的值小于或等于检测的符号也为得分6(检测的值可能小于实际符号的值,如果所述传感器340仅仅“看见”在它反转远离之前符号线300或301的部分)。移动需要在一个坐标位置内的双重反转,远离一符号线300或的值小于或等于检测符号,得分更少:3。
箭头上的一交叉指示检测的符号值少于实际符号线300或301的值(即一比特错误,其中表面1上的污物可能遮蔽符号线300或301的一部分;或一比特跳动,其中传感器340的升起可能减少到达传感器340的幅射返回的动力)。如果一反转也被涉及则这些移动得分1,2则不同。箭头上的圆中的交叉指示检测的符号值大于实际符号线300或301的值,其在黑色背景307的表面1上应该不可能并且因此得分0。现在转向图29(b)中的表格,其示出当系统在步骤350被初始化时,过去装入RecTBL()常量排列的数据(图23)。纵列430示出了传感器340进入一位置时被移入的方向和纵列428和429列举检测的符号S和一位置相应的左边和右边上的符号线L与R之间每个可能的关系。因此能够看出指针RelL、RelR和NxDir,在步骤445中设置(图30(a)),选择表格中的一列。第四指针Move,选择一纵列425,426,或427。在行和纵列的连接点,获得两个值:用于移动的移动得分(MScr)和传感器340在移动之后将要移动的方向(NDir)。
表格列出来自于图29(a)中表格的8种移动的哪些移动被认为是最大可能的移动(设定该具体实施例的限制条件)以说明:指针RelL,RelR,NxDir和Move的每个组合。这个移动在命名“Illustr”的子纵列下面被说明。通过其移动暗示的移动得分和下一个方向提供MScr和NDir子纵列下面的值。
现在返回图30(a)中的流程图,现在可以知道步骤449利用四个指针去在RecTBL()中查找一移动得分(MScr)和用于传感器340的下一个方向(NDir)。这些被存储在同名的临时变量中。步骤449也堆积用于这个移动在其上的路径的得分,通过添加新移动得分至用于路径的累积得分(CScr)直至通过以前的单元a表示的位置。当其是第一层,CScr的值为0,其通过StartRecovery 377中的步骤394被初始化。因此新CScr是用于这个第一移动的刚刚的移动得分。
然后步骤450校验分配给这个移动的得分是否可能最大(=7),指示它是一个没有反转的移动,其中检测的符号与实际的符号线300或301匹配。如果是,Scores()中用于这个路径的最大得分数(MSCnt)在步骤451中增加。如果否,最大得分数在步骤453为0。因此可以看出MSCnt是与该路径的末端匹配的SEQ()中的符号的子序列的长度的度量标准。依靠得到一足够长的这样的子序列以确认其获得位置的AcquirePosition 361将被调用。依靠一相似方法的恢复方法确定RecTree()中表示的路径中的那个是正确路径,其将被描述。
然后步骤452用代表移动会进入的位置(图27(b)中的b)的新层中单元的指针来向上设置临时变量Nex。然后控制经由连接符K传递至图30(b)中流程图的步骤460。
步骤460比较用于新移动的累积得分(CScr),与任何其它移入对于该层可能已经得到分数的b的得分。当不计分时,NewScrs().CScr将仍然从步骤440初始化为-1,因此步骤460测试正确并且控制传递至步骤463。这个储存新移动的得分和用于新位置的相应的NewScrs()单元中的下一个传感器方向。然后用于移动的移动增量被存储在相当于那个位置的RecTree()中的单元b中(假定RecTree()是需要恢复路径)。
然后步骤464校验新移动的累积得分是否大于HiScore中用于该层的高得分。当HiScore在步骤440中被初始化为-1,步骤464测试正确和步骤465设置HiScore为新移动的累积得分,和HiMSCnt为新移动的最大得分数。然后HiCount被调整到1以指示仅仅存在一个具有高得分的路径并且HiPos设置为新移动终止的单元b的指针。
然后控制经由连接符L返回至图30(a)中的步骤447。步骤447校验所有的移动增量是否已经被处理。它们没有因此步骤448增加移动增量可变量Move,操作重复并且从a至c的移动是得分的。然后它再一次循环并且从a至d的移动是得分的。
一旦所有移动被处理,NewScrs()将容纳用于移动(路径)至通过新层L1中的每个单元表示的每个位置的得分。步骤464-467包含的也将确保HiScore包含那些路径之中的最高的累积得分并且HiCount是具有最高的累积得分的路径数量的计数,HiPos是新层中用于它们的目地单元的指针的总和,和HiMSCnt是用于那些高得分路径的第一的最大得分数。
当控制再次经由连接符L返回时,步骤447检测所有移动已经被处理(即Move=1)和传递控制至步骤443,其增加指针Prv以指向下一个单元(即位置)为了在旧层中处理。当层L0仅仅具有一个单元OldLyrSize等于1。Prv现在等于此因此测试444失败,指示已经被处理的旧层中的所有单元。
然后控制经由连接符M传递至图30(c)中的步骤475,其校验是否存在唯一的高得分路径,如果这样的话,它是否具有一等于2*W+1(具有W=6的=13)的最大得分数,对于该值的理由随后说明。如果没有这样的“优胜路径”,步骤476丢弃旧的Scores()排列并且产生一具有相同单元数的新的作为新层。然后NewScrs()的存储信息被复制到Scores()因此现在这个具有用于刚刚建立的层的得分。
如果步骤475没有发现一优胜路径,那么步骤477通过设定PosState()为TRACKING从系统中取出用于该轴的恢复,SPos()为被优胜路径的末端点表示的坐标位置(在上层的HiPos单元),并且SDir()为在该路径未端的传感器的方向。
无论如何,RecoverPosition363程序完成和返回。
现在返回图26中的StartRecovery377流程图,可以看出RecoverPosition363建立用于自上次的好位置检测的第一符号的层L1之后,控制返回步骤397。这增加指针入Buff(),因此下一个符号可能在步骤395中获得。这在步骤398检测存在被处理的另外的符号之后被执行。
然后RecoverPosition 363被再次调用以利用上次的好位置之后检测的第二符号产生层L2。这在图27(c)中说明。如前所述RecoverPosition363估计从旧层L1中的单元b,c和d的每个至新层L2中的单元的每个可能的移动的得分。
如果我们考虑从b,c和d至位置e的移动,将能知道这些移动不得不在它们的目地单元e为存储而竞争,因为每个单元仅仅能往里储存一个移动。被保存的移动是有最高累积得分(步骤460)的移动或,如果两个移动具有相同的累积得分(步骤461)那么具有最高的最大得分数的移动赢(步骤462)。因此RecTree()不能储存所有可能的路径而仅仅储存至传感器340可能到达的每个可能的位置的最可能路径。此外,仅仅2比特被要求去储存树的每个单元中的移动增量,因此能够看出RecTree()是一个记忆的有效的数据结构,尤其是当考虑现有技术时。
一旦初始层通过StartRecovery 377和RecoverPosition 363向上设定,控制传递回TrackPosition 362。这个终止并且控制返回至图23步骤354中主循环的开头。每次一符号在恢复中被从轴检测,事实是PosState()被调整到用于轴的Rcovery引起步骤360去调用RecoverPosition 363以产生一RecTree()和用于刚刚检测符号的Scores()结构中的新层。一旦正确路径被识别恢复终止,并且PosState()复位至TRACKING,如上所述。
从上文可以看出用于一单元的累积得分(CScr)和最大得分数(MSCnt)越高,终止在该单元的路径越可能。CScr是路径中用于每个单元的移动得分(MScr)的累加,因此用于一路径中的每个移动的得分越高,CScr越高。清楚地,紧密地跟随实际传感器340路径的RecTree中的任何一个路径将有最高得分的移动,如同它将更频繁的正确的预言被传感器340查看的每个符号。CScr通过这个正确的路径经过可选择路径享有的优点将随着时间增加,因而正确的路径具有更多机会累积高得分移动且另一个路径相应地具有更多机会以聚集低得分移动。
MSCnt是向上导引且包括路径中检测的上次符号的连续的检测符号的数量,也就是说正确的预言和哪些全部交叉在相同的方向。如先前对AcquirePosition361程序说明的一样,MSCnt越大,路径具有表面1上符号300或301的子序列交叉的有效的路径越可能(而不是通过随机反转、比特跳动或比特误差产生的子序列),和越可能的是被路径的末端表示的位置是传感器340的当前位置。然而,不同于AcquirePosition 361程序,步骤475中用于一个优胜路径的测试需要单个高得分路径,其的上次2*W+1=13符号匹配一SEQ()中子序列的13个符号。这个比要求的去确认AcquirePosition361程序中位置的符号少,其中我们看到需要3*W=18符号以减少一一个错误位置的可能性至1.7百万分之一。因而,这个方法相比现有技术仅仅通过重新获得它来恢复一个位置而言提供了一个重要的优点。
为了理解为什么要求较少的符号,假定传感器340已经使得许多符号行300或301沿着一路径478到达一位置479,如图31(a)中所示其中传感器340的路径478(正确路径)通过完整粗线指示。如前所述正方形指示RecTree()的一部分层中的单元。最近层用通过顶部的正方形行表示的新层Lx来展示。
假定在位置479处正确路径478拥有最高累积得分但是还没有达到一足够高的最大得分数以从恢复出来。同样假定在位置479处传感器340沿着经过位置479的路径478的延续开始任意逆行。因此,假定它检测正巧与已经被检测的传感器340的具体序列匹配的符号的一序列,如果它没有反转,而是沿着通过图31(a)中淡化的虚线指示的路径480延续(称它错误路径)。匹配错误路径480的可能性是1/(K^N),其中对于N=13符号和K=3大致是1.6百万分之一。这是与AcquirePosition361程序的用18符号的1.7百万分之一的可能性相比较的。AcquirePosition361需要更多符号因为它必须预防匹配符号集302或303中任何N长度子序列的可能性,与匹配通过错误路径480交叉的具体序列相反。注意在上述简化的实施例中存在一瑕疵,如错误路径480事实上毫无疑问没有13符号长度。在位置479处错误路径480在它开始逆行之前会继承正确路径478的最大得分数(称它M)。因此错误路径480在它由于一错误位置引起系统失去恢复之前只须13-M符号长。因此如果M在位置479是12,仅仅一个符号需要正确的随机产生,其具有三分之一的机会(K=3)。这会引起从错误路径480至+/-2坐标外的位置恢复。如果M是11,那么位置存在1/9的机会将是在+/-4坐标外(最坏情况)等等。
一更复杂的实施例在步骤475中会需要候选的优胜路径的唯一的最少13点的高累积得分大于层中任何其它累积得分。这个工作因为错误路径480同样继承了在位置479处正确路径478的累积得分。正确路径478将得到用于每个移动的最少6点得分(用于当前例子中的一反转)并且错误路径480将得到用于每个随机产生的交叉的′正确′的符号线300或301的7点得分。
因此错误路径480必须′正确的′穿过至少13符号以累加一经过正确路径478的13点的累积得分优势。按照规定其法核算呢的机会是1.6百万分之一。当然,实际上,正确路径478不可能在每一个符号上反转且将顶替穿过的得分最大的许多符号。例如,如果申请是这样的那么传感器340不可能每3rd符号反转不止一次(合理假设间隔的符号线300或301与应用中典型的移动长度相比是相对好的),那么来自于优胜路径要求的累积得分优势仅仅需求13/3=。当系统出来恢复时,那么这将靠挑选错误路径480交付相同的1.6百万分之一的奇数。
错误恢复选择
应该清楚的是具有不同限制条件和因此不同移动概率的不同的申请可能需要比那些描述的不同的得分权重。这个方法的力量的一部分是简易,由于它能仅仅通过变换RecTBL()数据适应新申请。
不同的测量也可能被应用。例如,累积得分除以用于一路径的最可能的得分(即最大得分乘以层的数量)测量一路径中正确的预测符号的比例。如前文所见产生一有效序列的随机反转的可能性是1/(K^N)。随着K=3,产生一有效的,说5,的符号序列的可能性是243分之一。因此存在两个通过一错误分开的随机产生的5符号序列的可能性大约是(1/243)^2=1/59000。设定这样一路径是非常不可能的,一可选择的实施例可能导致6符号外的5个中有一路径的系统出来恢复已经被正确的预测,其中具有一最大得分数5(即少于先前描述的13符号),并且其具有一比任何其它多至少点的累积得分(利用从早先的两段中的推理)。
其它实施例可能省去累积得分和全部测量的最大得分数。它们可能采用贝叶斯推理或其它统计方法代替以计算每个路径的可能性和基于那些概率选择优胜路径,以更复杂的计算为代价。
如果符号的跳跃(即比特跳动)被预计为一问题,可选择的实施例可能从每个位置采用多于三个的移动增量(-1,0,+1)。例如,如果直至两个符号可能跳跃,那么从旧层中每个单元至新层中五单元的移动可能被考虑,上述移动通过移动增量-2,-1,0,+1,+2来表示。
为了在StartRecovery377中确定上次的好位置,返回的符号数量可能有利的被增加。公式Int(W/2)+1及早的设定了符号的数量,假定在错误被检测之前仅仅出现一个错误。如果多于一个的错误可能发生,那么经过更多符号(例如W符号)反回至一确信的上次的好位置是必需的。当那些反转发生在一对称的符号线300或301值的子序列内时,因为多个反转的问题被加剧,当错误第一个被检测时,根据传感器340位置中这样连续对称的符号线300或301值的数量,一可选择的实施例可能动态地改变返回的符号数量。
由于相似的原因,当首次起动恢复时RecTree()中第一层L0的宽度可能有利的被增加。如上所述,仅仅一个单元在第一层中建立,其代表上次的好位置。如果关于这个位置很可能会有一些不确定(例如,如果先前的系统只有以前的少数符号从恢复出来),那么第一层可能是随着例如围绕上次的好位置的+/-3坐标的所有位置表示的7单元开始。这‘加宽网络’,从而增加RecTree()‘捕捉’实际轨迹的的机会。
此外,一些实施例可能拓宽第一层,同时仍然估量上次的好位置为最可能的起动位置。为了反映出此,它们可能为第一层中的单元加重初始的累积得分(通常0)。这个分量可能反映出从上次的位置的它们的距离,如此以致于远离的位置具有一高障碍的开始(即一低的累积得分)。
为了减少RecTree()和Scores()需要的存储量,和减少当创造一新层时必须考虑的以前单元的数量,一层修整算法可有利的实现。例如,一旦一层被建立,系统会在新层的两个边缘工作并且丢掉累积得分小于层中(在HiScore)最高累积得分减去一修整空白边的任何单元。操作会在边缘继续直至在每个面遇到单元,其累积得分大于或等于阈值。例如,在一个申请中正确路径不可能比每3rd符号更频繁的反转,利用应用的推理之前,一整理空白边4将整理大多数路径而不是正确路径和来自于正确路径的好分支。
注意RecTree()中每个层的最外面的单元,可能仅仅在以前层的每个边缘通过最外面的单元到达。因此存储在这个单元的移动增量将始终是+1或-1的两者之一,取决于边缘。因而单元可被丢弃,节省空间和处理时间,和如果移动增量被要求我们需求的移动增量可仅仅通过已知的RecTree()的边缘决定。
一些实施例可能动态地改变用法,和/或与之相联系的参数,描述的任何或所有的方法或其它相似的未被描述的方法,在某种意义上适合于系统随时的状态或需求,为了在那时提高其位置感应性能。
溢出恢复
层维持将恢复中从来自于轴的检测的每个新符号添加至RecTree()。如果传感器340保持逆行或其它误差继续发生,无论由于什么原因,那么没有路径可能得到一足够大的最大得分数(MSCnt)以允许系统退出恢复。因此RecTree()可能用于存储方法15中的有效空间变得太大。在这个实施例中那时树中最可能的路径是尽可能被恢复的并且一较小的RecTree()利用可能不被恢复的来自于路径末端的符号被重建。然后系统继续恢复。
当RecTree()已经溢出时它将容纳大量层。因此对于大多紧密跟随实际传感器340路径的路径(正确路径)将有更多的机会以累积更多的最大移动得分并且对于另一个错误路径将累积更低的移动得分。因而用于正确路径的累积得分与用于错误路径的累积得分相比可能享有一相当大的优点。
假定没有比特错误,那么事实是系统仍然在恢复一定意味着实际传感器340路径是逆行的。这些反转一般引起正确路径被打破,产生分支,因为它们继承正确路径的有利的累积得分,当它们争夺RecTree()中的存储空间时时,有助于击败其它不能从正确路径分支的路径。例如,图31(b)示出了这个分支是如何发生的。粗线482代表正确路径和淡化线483表示分支路径。这些分支将继承它们分支此刻正确路径的累积积分。当它们可能从正确路径反转的点无逆行的分支时,它们与正确路径相比可能最初享有1点的累积得分优势。
如我们所见,在优选实施例中随机产生一有效的5符号序列的可能性是243分之一;一有效的4符号序列是81分之一;和一有效的3符号序列是27分之一。因此来自于正确路径的分支将通常大多横穿,并且经常在他们自己逆行之前少于3或4符号。假定实际的传感器340路径不再比分支频繁的反转(即至多每3或4符号),那么它的累积得分将通常不少于一个,或大多两个,分支的累积得分下面的点并且有可能超过他们。如上所述,这个假设的正确性可能通过保证间隔的符号行300或301与申请中预期的正常的移动长度相比是相对好的来确信。因此能看出正确路径通常在上层Lx中的所有路径之间有不是最好就是第二得分的一累积得分。
即便正确路径不多于每3或符号的反转,因为其累积得分减小,当靠其自己的刚好较少反转的分支去竞争RecTree()中的存储时将倾向于输掉。当这些分支自己在3或4符号内可能反转时,它们倾向于集中返回到正确路径上的实际的传感器340位置。在那点正确路径将获得分支的高的累积得分,因此正确路径被恢复。
这个典型的实施例在图31(c)示出。传感器340的路径通过粗线484、后面的粗虚线,随后的粗线485来说明。在单元486幸存的路径将是用细线487说明的分支,因为它已经翻转仅仅一次并且已经朝向线485的方向。然而这个分支487现在在单元486获得正确路径,正确路径继续被保存(虽然具有来自于实际传感器340路径的一转向)并且现在具有分支487的高的累积得分。
由从实际传感器340路径分开的分支所引起的错误通常小于或等于W-1坐标位置。这是因为分支趋于发生在符号行300或301值的组是对称的(例如012210或0120210)并且这些组可能在一可定向的序列中仅仅是W-1符号长。由于分支的移动远于来自于实际传感器340路径的W-1符号,因而符号必须被产生以作为随机反转的结果。在当前的例子中,W=6和K=3,一W符号长的有效序列的可能性的,和W坐标位置的错误是729分之一;W+1坐标位置的错误是2187分之一等等,每个越来越不太可能。
当然这是最坏情况。如果正确路径少于每3或4符号的换向,或在具有不同值的不对称的符号行300或301中逆行,至实际传感器340路径的正确路径的保持将非常高。相同的也是真实的如果有较短窗口长度W的窗口序列302或303被使用,诸如附录A中所示的第二序列。然而为了解码在符号字母表中附加的符号在解码装置8中需要在解码装置8中设置更复杂的数字化电路。
现在应该清楚的是RecTree()中很多层之后具有一上层Lx中最好的或第二的累积得分的路径可能是正确路径或来自于正确路径的分支。这个事实是被溢出恢复方法采用,其识别所有这样的路径并且跟随他们在RecTree()中返回至它们集中的点(图31(b)所示例子中的单元481),其将是从正确路径分支的点。
然后从上次的好位置至这个聚集点的路径被恢复,上次的好位置变化至聚集点表示的位置,并且一新的较小的RecTree()利用自包含聚集点(层Lx-9)的层检测的Buff()中的符号来建立。然后恢复处理随着用于新RecTree()的上层的Layer()中一修订值继续。因为在最坏情况下聚集点可能适当地由来自于实际传感器340位置的W-1坐标决定,新RecTree()随着覆盖围绕上次好位置的+/-W-1位置的第一层被建立,从而保证实际轨迹被RecTree()捕获。
为了用溢出程序,RecoverPosition363被改进以包括在Layer()变量在初始化步骤440中被增加之前的一测试。这个测试校验Layer()是否达到被存储方法15支持的最大层数。如果是,实现上述方法的溢出程序被调用。一旦它局部地恢复路径并且重建一个新的,较小的RecTree(),RecoverPosition363程序可能继续。
自主模式的位置传感
迄今为止被描述的位置传感系统适于可移动对象,也就是说通过一外力以实质上随机的方式移动。在这些申请中,可移动物体在一时间点的位置不是如恢复经过表面1的物体的最可能路径一样重要。例如,早期描述的玩具系统的被动方式操作就是一个这样的申请。因而在此涉及的这种类型的位置是被动模式位置。
然而,对于应用中位置传感必须能够自己推进可移动对象以自主的沿着通过表面1的一路径,在位置传感系统上的需求是不同的。这里可移动物体过去的路径不重要的,系统也不等待直至一路径被确定。代替所述应用需要去知道其始终的最可能位置,至少在一些误差界限内。这是通常需要的因此它能监控可移动物体朝向一目标位置的前进。玩具系统的主动模式操作是需要自主模式位置的一申请的一个例子。
这个位置传感系统可能被改进以满足这些新需求,利用现在描述的方法。
自主模式:位置的获得
如果可移动物体是自己推进的,那么它能用旋转采集获得其在表面1上的原始位置。这简单的包括引起马达以相反的方向去旋转轮,引起可移动物体相对于一纵轴旋转。如果一传感器340被定位成在轮的轴线的前面或后面足够远,它将描述经过表面1的圆周轨迹491,如图32所示。这个圆周轨迹491将包围足够的符号行300或301用于利用早前描述的子序列的方法进行位置测定。图32中的示意图示出了通过可移动物体的底部492看的俯视图中一代码化表面1的一部分,注意在这个示意图内,象所有其他的一样,面的编码并不打算去表示任何具体的序列,并且交叉正方形310和背景307的颜色被省略。
注意系统必须等待传感器340去通过一通常标注为490的尖端。这是传感器340前进接近平行于一坐标轴线的点。在这些点之间,沿着通常标注为491的箭头,传感器340在通过两个轴的相同方向前进。因为系统了解这个,符号的仅仅一个窗口长度(W)被要求去确定位置。因为随机反转可能性等待长的子序列是不需要的。然而,如果比特跳动(随着自主运动不太可能)或比特误差是可能的,然后很少的附加符号(例如总计W+2)可能被匹配以确认位置。
自主模式:位置跟踪
由于自主模式位置传感,系统认识了可移动物体在面上的当前方向(相对于其纵轴)并且知晓电动机的速度。由于这两块信息,系统可利用如下公式计算出相对于每个轴的传感器方向。这个附加信息允许系统利用现在描述的方法始终保持一相当准确的传感器位置。
自主模式位置传感当传感器340移动到一符号行300或301上(进入方向)和移开一符号行300或301(退出方向)时计算传感器方向。这确保它能检测传感器340沿着一个曲线路径进入和退出相同面上一符号行300或301的位置(即在符号行300或301反转)。
传感器340的瞬时角方向被如此计算:a=b+ATan((d*(MR-ML))/(w*(MR+ML)))-Pi,其中所有的角度在范围0-2Pi内具有弧度并且从表面1的确定的y轴逆时针(即北)的增加。在这个公式中,a是瞬时的传感器方向角;b是可移动物体在那一瞬间的方向;d是从轮轴至传感器340的垂直距离;w是轮间距的一半;并且MR和ML是在那一瞬间右边和左边的电动机转速。ATan()代表反正切功能(即正切功能的倒数)和这种情况下在范围0-2*Pi内返回一弧度的结果取决于幅角的分子和分母的符号。注意方程式假定感应点是安装在可移动物体的轮轴的前方,如果它被安装到后面方程式是a=b-ATan(...)-Pi。.
事实是为了确定意味着用于两个感应点4的需求以从中得到两个独立位置来确定方向的传感器340的角方向,可移动物体的方向必须已知。在另一个实施例中可能用途仅仅一个感应点4和测量在x行300和行301的相对速率最近的交叉。由此传感器方向可能被直接确定,不需要知道可移动物体的方向或电动机转速。对于这个讨论的其余部分,假定上述方程式正被使用而且来自于两个感应点4的位置的方向已知,安装在轮轴的前后。
通过计算瞬时传感器角度,系统确定传感器340是否向前、向后或平行于每个轴的移动。需要平行方向是因为当传感器340前进接近平行于其轴时,传感器340相对于一轴的向前或向后方向由于这两个原因是不确定的。
首先,位置网格编码方法的分解在可移动物体的方向(上面方程式中的b)中存在不确定。正如图33的例子示出了用示意图中的连接两个圆(表示在传感器340前后)的直虚线表示的两个方向500和501(表示可移动物体的方向)。图33不是按比例的并且交叉正方形310和背景307清楚地被省略。
假定可移动物体以顺时针的方式旋转,能够看出方向500代表传感器340刚移入位置的点,方向501代表传感器340正准备离开位置的点。因此能够看出按照方向500和501计算的名义上的方向,其用线508表示,实际上具有一等于500和501方向末端之间的角度507的错误空白边(在此称为平行空白边)。
还可看出,这个横跨的传感器方向的一末端用箭头502指示其相对于y行301向前,在另一末端它是向后的,用箭头503指示。因此相对于y轴的方向(在这个例子中)不是已知的。反而当传感器340的路径相对于一轴的角度被计算为小于平行空白边时,传感器方向显示为平行。
其次,如随后说明的一样,当一轴以自主模式处于恢复时在轴上的精确的传感器位置未必已知-替代位置-错误被计算其表示在一名义上的位置周围的可能的坐标位置的跨越。因此图33中所示的平行空白边507将明显较大。
对于两个案例,平行空白边可由错误位置和采用简单几何图形的传感器间距来计算。如果一传感器340位置已知(即它不在恢复中),那么错误位置是+/-0.5以反映出在坐标位置内传感器位置中的不确定,如图33所示。
跟踪模式期间,当传感器340交叉一符号行300或301时,系统将来自于符合行300或301的进入方向与退出方向相比较。如果它们相同且是向前或向后,那么系统用SEQ()常量排列以来确定来自于这些方向的预期符号。如果预期符号与感应符号不相同,那么开始恢复。否则位置被更新且系统继续追踪,如上文所述。
如果进入和退出方向不同,但是方向都不是平行的,那么系统假定传感器340在通过进入方向暗示的以前的位置的一边的符号行300或301上反转(即以前位置的另一侧至进入方向)。因此,如果检测符号等于小于在那边的实际符号行300或301,系统假定这已经发生而且传感器340在其初始位置返回。否则开始恢复。
如果进入方向平行那么传感器340可在用箭头506指示的以前位置的两边上穿过符号行300或301,其。随着一平行的退出方向,传感器340可在箭头505指示的两边上离开符引行300或301。因而新位置不能确定,因此如果进入方向或退出方向之一平行那么开始恢复,如前现在描述的。
当然如果进入方向平行那么更复杂的实施例可能,在起动恢复之前,比较在以前位置的两边上的符号行300或301的检测符号以检查传感器340的方向是否能以这种方法被确定。对于平行的退出方向它们可能考虑将来传感器340的不平行方向(假定电动机转速未改变)并且用这个作为传感器340可能已经从中退出的符号行300或301的一边的引导。
自主模式:位置恢复
自主模式错误恢复工作实质上与用于被动模式位置的先前描述一样,具有一些重要区别。
首先,作为自主模式其对传感器340的过去的路径不感兴趣,不使用RecTree()。
其次,当开始恢复时系统不一定需要经过许多符号返回至上次的好位置,因为当可能有误差和在那点开始恢复时自主模式位置恢复预测(例如因为传感器接近平行于一轴的方式移动或因为一结果,如随后描述的)。因此在一些实施例中上次的好位置可能立即在引起恢复开始的符号之前走向点,并且RecTree()可从那里建立。
在其它实施例中可能有比特跳动、比特误差或外力的可能性(诸如另一个玩具影响这一个)。这是不可能预测的,因此错误也许比开始恢复的点更早发生,并且上次的好位置可能返回的许多符号。然而,如同系统对过去的路径没有兴趣,它能从层0开始,也就是说至少和已经是的上层一样宽,如果系统返回并且随着自上次的好位置的符号建立层。
例如,如果系统通常向后追踪四个符号那么它将在层0之后产生用于这些符合的每个的四层。因此上层将是具有2*4+1=9单元大小的层4。在自主模式恢复中系统不经过这些符号向后追踪,它仅仅随着具有至少9单元宽的层开始。这确保“网络”撒网足够宽以保证即便4符号以前发生错误,路径将仍然属于这个第一层的范围内。
可选择的,其它实施例可仍旧在创建第一层之前返回许多符号(当在被动模式位置),即使路径不需要。这是因为返回允许正确路径(通常的)相比于另一个路径得到一初始优点,其常常允许系统更快速的从被检测的错误点回收。
第三,进入方向和退出方向两个都用作RecTBL()常量排列的指针,与上文所述的RelL,RelR和Move indices一起。此外,平行方向现在必须被迎合。在自主模式下供RecTBL()用的已修正的数据在图34(a)中示出。这个表格提供一得分,并且示出用于指针的每个组合的最可能的移动:RelL、RelR、EntryDir、ExitDir、和Move。不同于图29(b)中的表格这个表格不返回下一个方向,现在计算的进入方向和退出方向是不必要给定的。
表格中的移动目录在图34(b)示出的表格中提取。这与图29(a)中表格相比具有多余两个的移动。这些移动是一平行移动(指示传感器340也许已交叉符号行300或301至坐标位置的两边),其得分6,并且一平行的比特错误(指示传感器340也许已交叉符号行300或301的两边但是检测符号值大于那些符号行300或301值的任何一个),其得分为0。
一在预期方向上的移动,其中检测符号与预期符号行300或301值相匹配,得分7,如前所述。以反转被预期的一移动,其中检测符号小于等于或预期符号行300或301的值,也得分7。因为所有其它的移动得分1,既然所述传感器可被计算(除非进入方向或退出方向平行),应该从不是一反转或不是那些预期的移动。例外是比特误差和比特跳动,其得分0,1或2,如前所述。
注意只有进入和退出方向平行的移动在图34(a)中的表格中示出。没有移动用于平行/向前,或向后/平行,等等移动。这在优选实施例中是简化的其省去36个表格条目。替代如果进入方向和/或退出方向的一个平行,那么另一个方向被设定为平行和使用的平行/平行。实际上这是有效的,因为用于任何可能在检测符号值和实际符号行300或301的值之间被给定的移动的平行/平行(Parallel/Parallel)条目具有高得分(6或7),不管方向。如果关系是如此以致于只有一个符号行300或301可能被交叉(或反转)并且那些符号行300或301的交叉被Move指针表示,那么得分是7。如果两个符号行300或301可能已经交叉(或反转)那么得分是6。如果Move指针表示符号行300或301的一个或其它必须已经交叉(即Move=-1或+1)且符号行300或301与监测符号不匹配,那么得分是1或0,如示出的一样。
当然,更复杂的实施例可能列举所有平行/向前/向后(Parallel/Forward/Backward)组合和他们适当的得分。
具有自主模式位置传感的第四个不同展现在系统从恢复中出来的方式中。当平行/平行(Parallel/Parallel)移动没有被使用时,系统可能,通过定义,合理地确信传感器340正移动的方向。因而,如果它在相同的方向穿过W符号并且每次没有平行/平行(Parallel/Parallel)移动得到最大移动得分,它可能确信其位置。为了确定这个什么时候发生,用于每个最大移动得分的最大得分数被增加,如前所述,但是如果移动不是最大那么现在复位至0,包括一反转,或需要一平行/平行平行(Parallel/Parallel)得分。如果最大得分数达到W那么系统从恢复中出来,而不管累积得分。
第五,为了确定进入方向和退出方向,可移动物体的方向必须始终已知,即使当一轴处于恢复中。为了实行这个实施例可能用最大得分数或累积得分(或一些其它测量)之一或组合作为一方法以确定用于传感器340的可能位置,同时轴仍旧处于恢复中。
现在返回图31(b),能够看出来自于正确路径的分支倾向于发生在正确路径的两侧,因此实际传感器340位置可能在用那些分支的末端点表示的位置的跨越的范围之内。
在优选实施例中,这个事实用来得到一可能的传感器位置和一错误位置。系统确定路径的展开(即在具有最小Scores()指针的路径和具有最大Scores()指针的一个之间的位置中的不同),其一累积得分大于或等于当前层中的第二大的累积得分。这个展开的中间点被用作可能的平均的传感器位置和错误位置按照+/-展开一半来计算。然后这可能用来得到平行空白边,如前所述。平均的传感器位置,错误位置和平行空白边每次被重新计算,一新层通过RecoverPosition363程序创建。
当然,其它实施例可以用其它方法。例如,一个实施例可设定传感器位置在第一或第二高得分路径的末端点,其紧贴展开的圆心。其他的可用最大得分数和累积得分(或被设计的其它测量)在代替一平均位置之前加重每个路径的末端位置。
自主模式:事件
因为RecTBL()中的平行/平行(Parallel/Parallel)条目表示被有利的用于处理自主模式事件的不确定方向的移动,诸如:
开始事件:其中可移动物体中的电动机电子设备,传动装置和轴承中的因素可能引起一个电动机在另一个前面极少开始。这可能引起传感器340在一随机方向而不是预定的一个方向上的意料不到的初始摆动。
停止事件:其中可移动物体中的传动装置和轴承的机械运动可能加上其惯性使得当系统认为它应该固定时引起传感器340在其以前方向上的瞬时继续。
翻转事件:其中相应的电动机转速的突然改变加上惯性预计将引起传感器方向的突然改变,并且玩具的机械运动使得当系统认为他应该在新的方向上运行时引起传感器340在以前方向上的瞬时继续。
碰撞事件:其中当其马达停止时可移动物体被一外力推动。这可能当系统没有任何预期时引起符号被检测。
因为这样的事件可能引起符号行300或301交叉在通过电动机速度不被预测的方向上,它们可能引起跟踪或误差恢复。为了处理这个,当一事件被检测时,开始一时间计时。事件的自然结果之后的这个时间暂停结束并且不再对更进一步的检测符号负责,在开始期间,翻转或碰撞事件(即当时间有效时),如果一符号被检测其轴被放进恢复中。如看到的那样,停止事件不需要轴被放进恢复中并且因此系统无论处于什么模式(跟踪或恢复)都将继续。
当电动机转速改变时开始,停止和翻转事件被检测;对于翻转事件,改变毫无疑问大于一限定阈值。当一符号行300或301被检测而马达停止时碰撞事件被检测。
如果一符号行300或301进入或退出而事件计时器对于开始、翻转或碰撞事件是有效的,那么适宜的进入/退出传感器方向被设置为平行(Parallel),从而反映了传感器方向的不确定性。当一新Scores()层被建立时,这将使得另一个方向平行(Parallel),如前所述。这确保从一位置在任一方向上的移动将有较好得分,如果它们通过检测符号的值与那个位置的两边上的实际符号行300或301的值比较来支持。
可选择的,因为一碰撞事件实质上与被使用者对玩具的移动相同,被动模式移动得分和查找表格算法可在碰撞事件期间暂时地接合。
如果当一停止事件有效时一符号行300或301进入或退出,系统利用仅仅事件之前的电动机速度去确定传感器方向,而不是电流,起点的电动机速度。
自主模式:对象
当然,自主模式将自主的从A到B得到可移动物体。如果它沿行一路径,它将通常中断进入许多短的移动矢量的路径,理论上在一轴内(对于辅助位置)长于W坐标位置而不是那么长。给定其当前的方向和传感器位置,然后它输出多少动力以马达应用于使得移动传感器340至目标位置。另一方面,如果玩具旋转至一新位置,它仅仅在相反的方向设置其马达。不管怎样,设定马达之后系统监视传感器340的进行中的位置直至它已经到达其目标。实现方法可能存在许多方法,现在给出其中的例子:
主轴对象-这忽略在任何轴上的传感器位置,其角度与传感器340路径的角度有关,在主轴边缘角的范围之内(在优选实施例中为20度)。这防止了轴被认为接近平行于传感器340的路径(那里可能仅仅有一个)。如对于这样一轴错误位置的可能较大一样,这是明确有利的。
两轴对象-在传感器340当前的位置和其目标位置之间的位置增量被监视。如果对于两个轴这个增量达到0,或对于一个轴其符号改变,那么目标被实现。
旋转对象-有时在自主模式可移动的物体可能需要绕其纵轴旋转直至它到达一目标方向。在这个事件中在当前玩具方向和目标方向之间的角增量被监视。当增量达到0或变为负的时,目标被获得。
计数器对象-在一些情况下系统可能需要计数符号行300或301的交叉,在一个轴线和/或另一个上,为了确定它什么时候到达其目标位置。这个的实施一目了然。
离开和发射感应
一些实施例可能包括一离开方法以确定玩具什么时候滑下表面1。在优选实施例中,上述离开方法围绕用表面1边缘的边缘符号行实现,如图18中单元标记311示出的一样。每个符号行311具有相同的值(在优选实施例中为2)并且那是>=它们的W(在优选实施例中W+2),染色的每个密码用于上色x行300和y行301的交点。当任一轴的符号设定302或303被抽样时它将要被被召回这是明智的。
系统监视传感器340的位置(其跟踪位置或新层中每个单元的位置之一,如果恢复),如果它可能已经超出坐标限制和现在可能到达边沿区域,它试图通过检查最近从每个轴检测的符号的缓冲器去确认并存储在Buff()中。如果在两个轴的缓冲器中看到多于值为1的W-1符号,它可确认它已经进入边沿区域。这个方法它已经丢失了至少在坐标轴上的轨迹,其平行于它所处的边缘延伸。在这一点上,如果是被动模式位置传感,系统指示使用者他们应该阻碍它经过表面1上足够多的符号行300或301以再次搜取其位置。如果在自主模式,系统可能在表面1上朝向位置代码化区域旋转可移动物体,向位置代码化区域移动并且利用旋转采集重新建立其位置。
一些实施例可能还包括一发射方法以确定玩具什么时候已经从表面1提升。这可能通过一简单开关或通过监控进入传感器340的周围光线来提供。
编码定位
从上文的描述可理解的是分配给这种类型的位置系统的一键建立了传感器340相对于一轴的运动方向。如果这个方向在一部分符号的解码过程中被决定,那么位置传感可能被大大简化。现在遵循三个用于编码定位进入表面1上的符号行300或301的方法。
在第一方法中,与序列编码符号行300或301相比具有不同值的定位行511可能用来代码化定位,如图35(a)中的示意图所示。这可能应用于x行300和y行301。在这个方法中一对定位行511,具有交替的值“4”和“3”,随着具有例如,之前使用的值“0”、“1”或“2”的符号行300或301散布。传感器方向可能仅仅通过注释被读取的定位行511中的指令来确定。
这些定位行511还可以担当位置编码符号因此它们在表面1上出现不减少系统的位置分解。事实上,因为符号行300或301现在仅仅代码化三分之一坐标,较少的符号行300或301被需要。这意味着字母表可能是小的或序列的窗口长度是少的。后者是优越的因为现在需要更多行()两个定位行511和符号行300或301)去交叉,为了读取符号行300或的窗口,因此缩短的窗口长度缓和了此。传感器位置的不确定性可能仍旧作为在定位行511组之间的反转、比特误差等等的结果存在。现在清楚的是先前描述的恢复方法如何仅仅通过修改RecTBL()数据和得分适于处理这个不确定性。另外理解的是,一旦一定位行511交叉,信息可用于快速地使得系统取消恢复。
在第二方法中,无变化对于符号编码是完全需要的。替代的方法依赖的事实是与例如,“0”、“1”和“2”符合相联系的空间具有不同的宽度,如他们随着不同的符号行300或301的宽度304弯曲以保持坐标宽度常量。一符号行300或301的值可被检测,如前文所述。已知所述值,符号行300或301的宽度304可被查出,其可与穿过符号行300或301的用于传感器340的时间一起以确定传感器340的速度。假定速度保持常量通过毗连的空间(其可等到它开始穿过下一个符号时被证实),所述空间的宽度可通过传感器340通过空间的过渡时间来决定。
再次参考图19可以看出与一符号行300或301相联系的空间是在符号行300或301的右面(或下面)。假定一符号被读取并且空间遵循符号等于与符号相联系的空间的宽度。提供如同以前的符号一个没有相同的值的下一个检测符号,然后传感器340必须从左至右移动(向前)。同样如果空间与符号不匹配并且下一个符号不同,那么传感器340必须从右至左移动。在位置处电流和下一个符号是相同的,或传感器340的速度如它穿过符号行300或301和它们介入空间一样,定位不能被确定。在这样的位置已经描述的RecTree()方法被用作撤退。再次,一旦定位被确定那么可引起系统快速地退出恢复。
第三方法当被幅射的第三频率激励时用对传感器340敏感的第三材料粉刷定位行520,其中这样的第三频率不会引起其他两个材料的明显反应。例如,如果x行300和y行301用蓝色的和红墨水粉刷,那么定位行520可能用一透明红外线反光墨水粉刷。因此系统需要额外的能量源(例如一红外线感应LED)和去解码传感器340的输出的额外的感应循环,当表面1通过第三能量源被照明时。
定位行520邻近于符号行300和301布置,如图35(b)中的示意图所示。这示出了符号编码的一部分;注意如前所示的正方形310显示了符号行300或301的交点,但是黑色背景被省略。当传感器340检查两个符号行300或301和定位行520时布局是存在一个点。箭头521和522指示以相反的方向经过一符号300的两个传感器340的路径和这些导致传感器340输出的路径通过相应的图表525和526指示。这些图表示当表面1通过符号行300或301的特有波长被照明时传感器340的输出527,和当表面1通过定位行520的特有波长被照明时传感器340的输出528。可清晰的看出输出527和528的相对相位可用于确定传感器方向。
然而注意当传感器340沿着通常标记为523的箭头指示的路径移动时存在一问题。因为传感器340经常地查看定位行520,它不能被用于确定定位。幸运的是这样的路径在正常申请中是稀少的(或至少相对短的)和能被先前描述的恢复方法处理,其不需要定位信息。显然,一旦定位信息变得无效,那么信息可用于使得系统比以前更快速地从恢复中出来。
同样,如箭头524示出的路径还可以引起问题因为他们引起定位行520被立即在符号行300或301前后查看。再次,在这些情况下,前文所述的恢复方法可被采用。
当然,如果x轴和y轴定位行520用两种材料粉刷,具有特有波长的每一个从每一个和另一个顺序符号行300或301中分离,那么问题用不出现的箭头记523和524来说明。
附录A
1.下面是一具有窗口长度=6符号和“0”、“1”和“2”的3符号字母表的258个符号的可定位窗口序列的例子:
100110100011020000111010100120001020010120010210002001111120002020101120011201012100111201101111210020210021201020111211000220112020112101112200122002012002022002112102022101121201122012012021112121012022012120202220122112022112122202122022222120122212200000
2.下面是一窗口长度=4符号和“0”、“1”、“2”、“3”和“4”的符号字母表的245个符号的可定位窗口序列的例子:
10111200030102001121003100401130114002210131114102102221132003201321032114202030312022302121313022400331033203331143014012401340142122312241204031402321332140323133402403341242034034213413240414134222324144223423034323334340443242434423344424020

Claims (38)

1.一种玩具系统,包括:
一个表面,其设置有位置编码信息;以及
一个玩具,其设置成可在所述表面上移动,所述玩具包括至少一个读取所述位置编码信息的传感器、以及处理部件,所述处理部件设置为处理通过所述传感器读取的所述位置编码信息,以及根据所述位置编码信息确定所述玩具在所述表面的位置,其特征在于:所述玩具具有至少一种操作模式,其中所述处理部件设置为在所述玩具被一用户在所述表面任意的移动时捕获所述玩具相对于所述表面的路径。
2.一种如权利要求1所述的玩具系统,其特征在于所述处理部件设置为确定下述任何或全部项:
a)所述玩具在所述表面上移动的速度;
b)所述玩具相对于所述表面的方向;
c)所述玩具在所述表面上移动的路径;
d)所述玩具与其它在所述表面上的玩具或物件相距的距离,以及所述玩具相对其它在所述表面上的玩具或物件的方向。
3.一种如权利要求1或2所述的玩具系统,其特征在于,所述玩具没有实体连接到所述表面,或在所述玩具和所述表面之间没有电连接。
4.一种如前述任一权利要求所述的玩具系统,其特征在于,所述玩具相对于所述表面以无限制的方式向任何方向移动。
5.一种如前述任一权利要求所述的玩具系统,还包括录制部件,其设置为记录至少一个动作录制,所述动作录制记录了所述玩具相对所述表面的路径和/或速度和/或方向。
6.一种如权利要求5所述的玩具系统,其特征在于,所述玩具具有至少一个可移动的附件和/或录音部件,所述动作录制同样记录了所述附件的移动和/或所述录音部件中录有的声音。
7.一种如权利要求5或6所述的玩具系统,其特征在于,所述处理部件被设置为从每个动作录制中产生至少一个作用序列,并使得所述玩具扮演所述作用序列,所述作用序列为下述任一:
a)重放记录在所述动作录制中的动作;和/或
b)修改记录在所述动作录制中的动作。
8.一种如权利要求5至7任一所述的玩具系统,其特征在于,所述录制部件同样设置为记录环境-数据,其与所述动作录制相联系,所述环境数据包括与任何或所有下列有关的数据:
a)所述玩具的起动位置和/或方向;
b)所述玩具的移动或被启动的功能;
c)关于所述玩具相对所述表面或其环境或其它玩具或被动附件的特征的位置或移动数据;
d)关于其它玩具或被动附件的倾向、位置、移动或功能驱动的数据。
9.一种如权利要求7或8所述的玩具系统,其特征在于,所述处理部件使用所述环境数据产生所述作用序列和/或为所述作用序列产生环境数据。
10.一种如权利要求8所述的玩具系统,其特征在于,所述处理部件设置为分析为一个或多个动作记录和相应的环境数据,从而产生具有相应的环境数据的作用序列,从而使一个或多个动作记录与一个或多个作用序列之间是一对一、多对多、一对多或多对一的关联。
11.一种如权利要求8至10任一所述的玩具系统,其特征在于,所述处理部件设置为根据选定的作用序列的环境数据和所述玩具的相对于游戏或应用的当前环境之间所存在的关系,而自动选定作用序列作重放,从而控制所述玩具在游戏或活动中自主行动。
12.一种如权利要求7至11任一所述的玩具系统,其中包括一个以上所述玩具。
13.一种如权利要求12所述的玩具系统,其特征在于,每个玩具的所述处理部件保证如果另一玩具的作用序列会在两个玩具之间产生撞击时,该玩具采取规避动作。
14.一种如权利要求12所述的玩具系统,其包括第一和第二玩具,其特征在于,所述玩具系统设有训练模式,期间第一玩具以被动模式运行,在被动模式中第一玩具自由地通过一用户移动,第二玩具以主动模式运行,在主动模式时第二玩具靠其自身的动力移动。
15.一种如权利要求12、13或14所述的玩具系统,其特征在于,每一个玩具具有一攻击地图和防御地图查找表格,该查找表格存储对其它玩具的不同位置和状态的反应作用序列。
16.一种如权利要求12、13、14或15所述的玩具系统,其中所述玩具设置为相互竞争的。
17.一种如前述任一权利要求所述的玩具系统,进一步包括了设置为能与另一玩具和/或计算机包括通过因特网进行通信的通信部件,以允许一个更真正或虚拟的玩具的用户控制玩具的移动、行动和/或语音。
18.一种如前述任一权利要求所述的玩具系统,进一步包括了至少一个指示器,其代表所述玩具的情绪状态。
19.一种如前述任一权利要求所述的玩具系统,其特征在于,所述表面是一个实质上的平面。
20.一种如权利要求1至18任一所述的玩具系统,其特征在于,所述表面包括至少一个突出部。
21.一种如权利要求20所述的玩具系统,其特征在于,所述位置编码信息至少部分地延伸到所述突出部的表面之上。
22.一种如前述任一权利要求所述的玩具系统,其特征在于,所述表面被分为多个区域,每个区域具有相应的信息内容,所述玩具具有音频和/或视频部件,当所述传感器移过相应的区域,所述音频和/或视频部件设置为输出与每个区域相应的信息内容。
23.一种如前述任一权利要求所述的玩具系统,其特征在于,所述玩具包括至少一个轮、球或其它为使得玩具移过所述表面的摩擦减小器。
24.一种如前述任一权利要求所述的玩具系统,其具有:
a)一种被动模式,其中用户自由地在表面上被推进所述玩具;以及
b)一种主动模式,其中所述玩具靠其自身的动力移过所述表面。
25.一种如前述任一权利要求所述的玩具系统,其特征在于,所述玩具进一步包括可拆除的附件。
26.一种如前述任一权利要求所述的玩具系统的操作方法,所述方法包括将玩具移过所述表面,利用所述传感器读取所述位置编码信息,并处理所述位置编码信息以确定所述玩具在所述表面上的位置,其中所述玩具的至少一种运行模式中,当所述玩具被用户任意移过表面,所述玩具的处理部件捕获所述玩具相对于所述表面的路径。
27.一种在一个或多个维度中以通过单点传感器解码的方式对绝对(与相对相反)位置编码的方法,该方法包括:
a)提供平行排列的线性元件,每个单元编码为一个符号值;以及
b)编码提供一个或多个线性元件的设置,每个编码一个窗口序列,其可用于解码一个传感器沿垂直于所述线性元件的轴的位置。
28.一种如权利要求27所述的方法,进一步包括,如果一套以上线性元件用来代码化额外的维度,然后提供部件以区分并分别地解码每个段。
29.一种当传感器颠倒或遇到跳码或错码时恢复传感器的路径和/或位置的方法,所述方法包括:
a)一种记录最可能的到达每个所述传感器可以被于可能位置的路径的方法(仅当所述路径需要被恢复时需要的);以及
b)一种计分每个这样路径的可能性的方法。
30.一种设定启动层宽并为了的在最后的好位置处理不确定性以应对初始计分不利的方法。
31.一种层修整以减少处理并在恢复期间需求贮存的方法。
32.一种通过沿最可能的路径追踪以到达他们集中点并从恢复树溢出恢复的方法。
33.一种当传感器通过利用边缘边界符号已经移过位置编码进行确认的方法,也就是当通过任一的能量源照明时是合理的。
34.一种为了旋转位置探测的自主模式方法。
35.一种为了追踪位置的自主模式方法,通过从电机速度和可移动物体的方向计算传感器方向,所述方法包括当传感器方向不确定时通过利用平行传感器方向,并通过传感器位置的误差选取帐户。
36.一种用于通过利用平行计分处理自主模式事件的方法。
37.一种编码方向的方法,其通过包括方向符号,或通过在所述符号线路中散布方向符号组,或通过在所述符号行的一边包括一标定线。
38.一种确定传感器方向的方法,通过测量不同符号间距的长度。
CN201080051081.8A 2009-11-12 2010-11-03 玩具系统 Expired - Fee Related CN102711935B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0919776A GB2475273B (en) 2009-11-12 2009-11-12 Toy systems and position systems
GB0919776.5 2009-11-12
PCT/GB2010/051837 WO2011058341A1 (en) 2009-11-12 2010-11-03 Toy systems and position systems

Publications (2)

Publication Number Publication Date
CN102711935A true CN102711935A (zh) 2012-10-03
CN102711935B CN102711935B (zh) 2015-03-18

Family

ID=41509229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080051081.8A Expired - Fee Related CN102711935B (zh) 2009-11-12 2010-11-03 玩具系统

Country Status (7)

Country Link
US (1) US11559751B2 (zh)
EP (1) EP2498886A1 (zh)
CN (1) CN102711935B (zh)
AU (1) AU2010317722A1 (zh)
CA (1) CA2782834A1 (zh)
GB (1) GB2475273B (zh)
WO (1) WO2011058341A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104436690A (zh) * 2014-11-21 2015-03-25 梁穗 用于模型的运动调节装置
CN108871339A (zh) * 2018-06-29 2018-11-23 深圳市富微科创电子有限公司 一种基于oid编码的定位系统及方法
CN109597405A (zh) * 2017-09-30 2019-04-09 阿里巴巴集团控股有限公司 控制机器人移动的方法及机器人
CN110069130A (zh) * 2013-02-22 2019-07-30 环球城市电影有限责任公司 追踪无源指挥棒和基于指挥棒路径启动效果的系统和方法
CN114423075A (zh) * 2020-10-09 2022-04-29 广东博智林机器人有限公司 一种定位方法、装置、系统及存储介质

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6043482B2 (ja) * 2008-06-03 2016-12-14 トウィードルテック リミテッド ライアビリティ カンパニー インテリジェントボードゲームシステム、ゲーム駒、インテリジェントボードゲームシステムを操作する方法、インテリジェントボードゲームをプレイする方法
EP3659681A1 (en) 2011-01-05 2020-06-03 Sphero, Inc. Self-propelled device with actively engaged drive system
US9429940B2 (en) 2011-01-05 2016-08-30 Sphero, Inc. Self propelled device with magnetic coupling
US9090214B2 (en) 2011-01-05 2015-07-28 Orbotix, Inc. Magnetically coupled accessory for a self-propelled device
US9218316B2 (en) 2011-01-05 2015-12-22 Sphero, Inc. Remotely controlling a self-propelled device in a virtualized environment
US10281915B2 (en) 2011-01-05 2019-05-07 Sphero, Inc. Multi-purposed self-propelled device
US20120244969A1 (en) 2011-03-25 2012-09-27 May Patents Ltd. System and Method for a Motion Sensing Device
US8894462B2 (en) 2011-12-22 2014-11-25 Activision Publishing, Inc. Interactive video game with visual lighting effects
TW201325681A (zh) * 2011-12-26 2013-07-01 Sap Link Technology Corp 互動式電子玩具
US20130288560A1 (en) * 2012-04-30 2013-10-31 Nader Abou-Hamda Line sensing robot and a method of using the same with a digital display
US9492762B2 (en) * 2012-05-08 2016-11-15 Funfare, Llc Sensor configuration for toy
US9827487B2 (en) 2012-05-14 2017-11-28 Sphero, Inc. Interactive augmented reality using a self-propelled device
US9292758B2 (en) 2012-05-14 2016-03-22 Sphero, Inc. Augmentation of elements in data content
US9280717B2 (en) 2012-05-14 2016-03-08 Sphero, Inc. Operating a computing device by detecting rounded objects in an image
US10056791B2 (en) 2012-07-13 2018-08-21 Sphero, Inc. Self-optimizing power transfer
WO2014143776A2 (en) 2013-03-15 2014-09-18 Bodhi Technology Ventures Llc Providing remote interactions with host device using a wireless device
WO2014145468A2 (en) * 2013-03-15 2014-09-18 Lee Miller Toy and app for remotely viewing and playing with a pet
US9545582B2 (en) 2013-08-23 2017-01-17 Evollve, Inc. Robotic activity system using color patterns
CN103566600B (zh) * 2013-11-14 2016-03-02 步步高教育电子有限公司 一种益智玩具及实现益智玩具人机互动功能的方法
US9829882B2 (en) 2013-12-20 2017-11-28 Sphero, Inc. Self-propelled device with center of mass drive system
US20160310862A1 (en) * 2014-01-30 2016-10-27 Zheng Shi Object for the construction of a spatial structure
US9317747B2 (en) 2014-05-06 2016-04-19 Qualcomm Incorporated Determining an orientation of a mobile device
US9214987B2 (en) * 2014-05-18 2015-12-15 Auden Techno Corp. Near field antenna for object detecting device
US9324067B2 (en) 2014-05-29 2016-04-26 Apple Inc. User interface for payments
US9967401B2 (en) 2014-05-30 2018-05-08 Apple Inc. User interface for phone call routing among devices
TWI647608B (zh) 2014-07-21 2019-01-11 美商蘋果公司 遠端使用者介面
US10339293B2 (en) 2014-08-15 2019-07-02 Apple Inc. Authenticated device used to unlock another device
WO2016036552A1 (en) 2014-09-02 2016-03-10 Apple Inc. User interactions for a mapping application
CN107529009B (zh) 2014-09-02 2020-06-30 苹果公司 远程相机用户界面
US9547419B2 (en) * 2014-09-02 2017-01-17 Apple Inc. Reduced size configuration interface
DK3209401T3 (da) * 2014-10-21 2019-09-09 Lego As Legetøjskonstruktionssystem og fremgangsmåde til en rumlig konstruktion, der skal detekteres af en elektronisk indretning omfattende en berøringsskærm
US20160136534A1 (en) * 2014-11-13 2016-05-19 Robert A. EARL-OCRAN Programmable Interactive Toy
US9574896B2 (en) 2015-02-13 2017-02-21 Apple Inc. Navigation user interface
US10254911B2 (en) 2015-03-08 2019-04-09 Apple Inc. Device configuration user interface
US20160358133A1 (en) 2015-06-05 2016-12-08 Apple Inc. User interface for loyalty accounts and private label accounts for a wearable device
CN110214042A (zh) * 2015-06-25 2019-09-06 派腾特里古德私人有限公司 模块化电子系统
US10197998B2 (en) 2015-12-27 2019-02-05 Spin Master Ltd. Remotely controlled motile device system
US10065124B2 (en) * 2016-01-15 2018-09-04 Disney Enterprises, Inc. Interacting with a remote participant through control of the voice of a toy device
US10369487B2 (en) * 2016-02-11 2019-08-06 Disney Enterprises. Inc. Storytelling environment: mapping virtual settings to physical locations
US10632393B2 (en) * 2017-01-13 2020-04-28 Petronics Inc. Mechanized tail for mobile devices
US11103800B1 (en) 2017-02-17 2021-08-31 Hasbro, Inc. Toy robot with programmable and movable appendages
US10887193B2 (en) 2018-06-03 2021-01-05 Apple Inc. User interfaces for updating network connection settings of external devices
CN112805671A (zh) 2019-05-06 2021-05-14 苹果公司 电子设备的受限操作
DK201970533A1 (en) 2019-05-31 2021-02-15 Apple Inc Methods and user interfaces for sharing audio
CN111311555B (zh) * 2020-01-22 2023-07-14 哈尔滨工业大学 大型智能临时看台安全性检测系统
WO2021195654A1 (en) * 2020-03-27 2021-09-30 Microchip Technology Incorporated Recognizing an object using capacitive sensing

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1163579A (zh) * 1994-07-28 1997-10-29 超维有限公司 计算机化的游戏板
US5697829A (en) * 1995-02-06 1997-12-16 Microsoft Corporation Programmable toy
US6354842B1 (en) * 2000-03-09 2002-03-12 Massachusetts Institute Of Technology Rolling toy with motion recording and playback capability
US20020102910A1 (en) * 2001-01-29 2002-08-01 Donahue Kevin Gerard Toy vehicle and method of controlling a toy vehicle from a printed track
TW592771B (en) * 2001-03-28 2004-06-21 Konami Corp Game machine using self-traveling member
US20050212779A1 (en) * 2004-03-18 2005-09-29 Hewlett-Packard Development Company, L.P. Position identification pattern
US7079112B1 (en) * 1997-07-09 2006-07-18 Gateway Inc. Pointing device with absolute and relative positioning capability
CN1951533A (zh) * 2005-10-21 2007-04-25 专利类型公司 交互式玩具系统
CN101553291A (zh) * 2006-09-28 2009-10-07 美泰有限公司 交互式玩具及显示系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4009377A (en) 1975-11-07 1977-02-22 Ronald Duane Elms Positioning determining method and apparatus
US4686329A (en) 1985-06-21 1987-08-11 Advanced Robotic Technology, Inc. Absolute position mouse
JPH0428638Y2 (zh) * 1987-06-17 1992-07-10
US5442147A (en) 1991-04-03 1995-08-15 Hewlett-Packard Company Position-sensing apparatus
JPH05290197A (ja) 1992-04-06 1993-11-05 Teiriyou Sangyo Kk 二次元コ−ドシンボルマ−クの解読方法
US6032861A (en) 1995-01-03 2000-03-07 Lemelson; Jerome H. Method and apparatus for encoding and decoding bar codes with primary and secondary information and method of using such bar codes
CA2225060A1 (en) 1997-04-09 1998-10-09 Peter Suilun Fong Interactive talking dolls
US6012961A (en) 1997-05-14 2000-01-11 Design Lab, Llc Electronic toy including a reprogrammable data storage device
US6645037B1 (en) 1998-08-24 2003-11-11 Silverlit Toy Manufactory Ltd. Programmable toy and game
US6089942A (en) 1998-04-09 2000-07-18 Thinking Technology, Inc. Interactive toys
US6171168B1 (en) * 1998-08-24 2001-01-09 Carterbench Product Development Limited Sound and action key with recognition capabilities
US6149490A (en) 1998-12-15 2000-11-21 Tiger Electronics, Ltd. Interactive toy
AU2430300A (en) 1999-02-04 2000-08-25 Munch, Gaute A microprocessor controlled toy building element with visual programming
US7605940B2 (en) * 1999-09-17 2009-10-20 Silverbrook Research Pty Ltd Sensing device for coded data
US8416468B2 (en) * 1999-09-17 2013-04-09 Silverbrook Research Pty Ltd Sensing device for subsampling imaged coded data
EP1232424A1 (en) 1999-11-18 2002-08-21 The Procter & Gamble Company Home cleaning robot
US6491566B2 (en) 2001-03-26 2002-12-10 Intel Corporation Sets of toy robots adapted to act in concert, software and methods of playing with the same
US6789225B2 (en) * 2001-07-12 2004-09-07 Sony Corporation Bit error position estimation in data decoder
US7145556B2 (en) * 2001-10-29 2006-12-05 Anoto Ab Method and device for decoding a position-coding pattern
US6959866B2 (en) * 2002-05-30 2005-11-01 Ricoh Company, Ltd. 2-Dimensional code pattern, 2-dimensional code pattern supporting medium, 2-dimensional code pattern generating method, and 2-dimensional code reading apparatus and method
EP1581318A4 (en) * 2002-10-31 2006-08-30 Mattel Inc REMOTE CONTROL, REMOTE CONTROL SYSTEM AND GAME USING THE REMOTE CONTROL UNIT
US7116840B2 (en) * 2002-10-31 2006-10-03 Microsoft Corporation Decoding and error correction in 2-D arrays
AU2003900861A0 (en) * 2003-02-26 2003-03-13 Silverbrook Research Pty Ltd Methods,systems and apparatus (NPS042)
US7961909B2 (en) * 2006-03-08 2011-06-14 Electronic Scripting Products, Inc. Computer interface employing a manipulated object with absolute pose detection component and a display
US7826641B2 (en) * 2004-01-30 2010-11-02 Electronic Scripting Products, Inc. Apparatus and method for determining an absolute pose of a manipulated object in a real three-dimensional environment with invariant features
US7704119B2 (en) * 2004-02-19 2010-04-27 Evans Janet E Remote control game system with selective component disablement
JP3842806B2 (ja) * 2005-01-17 2006-11-08 株式会社コナミデジタルエンタテインメント 情報認識装置及びシート
US7571855B2 (en) * 2005-03-29 2009-08-11 Hewlett-Packard Development Company, L.P. Display with symbology
JP2009505765A (ja) * 2005-08-31 2009-02-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 磁気地形表示装置
EP1830269B1 (en) * 2006-03-02 2009-05-13 STMicroelectronics S.r.l. Reading method of a memory device with embedded error-correcting code and memory device with embedded error-correcting code
US7445160B2 (en) * 2006-06-14 2008-11-04 Hewlett-Packard Development Company, L.P. Position location using error correction
US8974295B2 (en) * 2008-06-03 2015-03-10 Tweedletech, Llc Intelligent game system including intelligent foldable three-dimensional terrain
US8517383B2 (en) * 2008-06-20 2013-08-27 Pure Imagination, LLC Interactive game board system incorporating capacitive sensing and identification of game pieces
DK2435149T3 (en) * 2009-05-28 2015-09-21 Anki Inc Distributed system for autonomous control of toy cars
US8855911B2 (en) * 2010-12-09 2014-10-07 Honeywell International Inc. Systems and methods for navigation using cross correlation on evidence grids

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1163579A (zh) * 1994-07-28 1997-10-29 超维有限公司 计算机化的游戏板
US5697829A (en) * 1995-02-06 1997-12-16 Microsoft Corporation Programmable toy
US7079112B1 (en) * 1997-07-09 2006-07-18 Gateway Inc. Pointing device with absolute and relative positioning capability
US6354842B1 (en) * 2000-03-09 2002-03-12 Massachusetts Institute Of Technology Rolling toy with motion recording and playback capability
US20020102910A1 (en) * 2001-01-29 2002-08-01 Donahue Kevin Gerard Toy vehicle and method of controlling a toy vehicle from a printed track
TW592771B (en) * 2001-03-28 2004-06-21 Konami Corp Game machine using self-traveling member
US20050212779A1 (en) * 2004-03-18 2005-09-29 Hewlett-Packard Development Company, L.P. Position identification pattern
CN1951533A (zh) * 2005-10-21 2007-04-25 专利类型公司 交互式玩具系统
CN101553291A (zh) * 2006-09-28 2009-10-07 美泰有限公司 交互式玩具及显示系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069130A (zh) * 2013-02-22 2019-07-30 环球城市电影有限责任公司 追踪无源指挥棒和基于指挥棒路径启动效果的系统和方法
US11373516B2 (en) 2013-02-22 2022-06-28 Universal City Studios Llc System and method for tracking a passive wand and actuating an effect based on a detected wand path
CN104436690A (zh) * 2014-11-21 2015-03-25 梁穗 用于模型的运动调节装置
CN109597405A (zh) * 2017-09-30 2019-04-09 阿里巴巴集团控股有限公司 控制机器人移动的方法及机器人
CN108871339A (zh) * 2018-06-29 2018-11-23 深圳市富微科创电子有限公司 一种基于oid编码的定位系统及方法
CN114423075A (zh) * 2020-10-09 2022-04-29 广东博智林机器人有限公司 一种定位方法、装置、系统及存储介质
CN114423075B (zh) * 2020-10-09 2023-09-05 广东博智林机器人有限公司 一种定位方法、装置、系统及存储介质

Also Published As

Publication number Publication date
WO2011058341A1 (en) 2011-05-19
GB2475273A (en) 2011-05-18
AU2010317722A1 (en) 2012-05-17
CA2782834A1 (en) 2011-05-19
US11559751B2 (en) 2023-01-24
GB0919776D0 (en) 2009-12-30
GB2475273B (en) 2011-09-28
US20130065482A1 (en) 2013-03-14
AU2010317722A2 (en) 2012-08-02
EP2498886A1 (en) 2012-09-19
CN102711935B (zh) 2015-03-18

Similar Documents

Publication Publication Date Title
CN102711935A (zh) 玩具系统和定位系统
Walz Toward a ludic architecture: the space of play and games
Hornyak Loving the machine: The art and science of Japanese robots
Atkins More than a game: The computer game as fictional form
US9675878B2 (en) System and method for playing a virtual game by sensing physical movements
Solarski Interactive stories and video game art: A storytelling framework for game design
US20060154711A1 (en) Multiply interconnectable environmentally interactive character simulation module method and system
MX2007003668A (es) Modulo de simulacion de caracter interconectable de manera multiple, interactivo en el ambiente, habilitado en internet; metodo y sistema.
DeWinter Shigeru Miyamoto: Super Mario Bros., Donkey Kong, The Legend of Zelda
Moss The sorcerers and their apprentices: How the digital magicians of the MIT Media Lab are creating the innovative technologies that will transform our lives
Wolf Myst and Riven: The World of the D'ni
Paavilainen et al. Hybrid social play final report
Wolf World-builders on World-building: An Exploration of Subcreation
Gutkind Almost human: Making robots think
Nelson Impact of virtual and augmented reality on theme parks
Aylett et al. Living with robots: What every anxious human needs to know
US11780084B2 (en) Robotic device, control method for robotic device, and program
Branwyn Absolute beginner's guide to building robots
Moss The Secret History of Mac Gaming
Magnuson Playing and Making Poetic Videogames
Ceceri Robotics: Discover the science and technology of the future with 20 projects
US11733705B2 (en) Moving body and moving body control method
US11648672B2 (en) Information processing device and image generation method
Berger Storytelling for New Technologies and Platforms: A Writer’s Guide to Theme Parks, Virtual Reality, Board Games, Virtual Assistants, and More
Nguyen A Human's Guide to the Future

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150318

Termination date: 20201103