支持独立于协议的可移动物体应用开发的制作方法

文档序号:16806714发布日期:2019-02-10 13:06阅读:202来源:国知局
支持独立于协议的可移动物体应用开发的制作方法

本专利文件的公开的一部分包含受到版权保护的材料。版权所有人不反对任何人对专利文档或专利公开(如其在专利和商标局中的专利文件或记录中出现)进行复制再现,但是在其他情况下版权所有人保留所有版权。

所公开的实施例总体上涉及软件应用开发,并且更具体地但不排他地涉及用于使用可移动物体的应用开发。



背景技术:

无人飞行器以及其它可移动物体(例如,无人载运工具和机器人)在各个领域得到了迅速采用。可移动物体用于空中摄影/视频、包裹配送、农业、救援任务和空间探索,人们不断寻找新方法来利用可移动物体,因为可移动物体通常为新兴行业提供通道,并且为推进传统行业提供独特视角。

传统上,可移动物体的供应商提供端到端解决方案,并且供应商提供预定领域方面的硬件和软件。然而,随着可移动物体退出主要由业余爱好者占领的领域并进入主流商业领域,专有解决方案已不再适用。在封闭的可移动物体环境中,可移动物体的供应商向独立应用开发人员提供的信息很少,这妨碍了在供应商相比于应用开发人员而言具有更差的洞察力或更少的资源的各个领域中采用可移动物体。然而,可移动物体的供应商应该在管理可移动物体时保持一定程度的控制,以防止对可移动物体造成恶意攻击。

提供足够的信息以有效地与可移动物体进行通信并允许其他开发人员开发用于可移动物体的应用是有益的,并且这是本发明的实施例旨在解决的总的区域。



技术实现要素:

本文描述了支持在可移动物体环境中应用开发的系统、方法、存储介质和计算机程序,其中可以开发独立于协议的可移动物体应用。在一个实施例中,从附属装置上执行的应用接收用于访问可移动物体的第一协议下的请求;第一协议下的请求被映射到应用编程接口(api)中的函数,其中api独立于第一协议;以及经由api引导可移动物体执行函数。

本文还描述了支持在可移动物体环境中数据分发的系统、方法、存储介质和计算机程序。在一个实施例中,从附属装置的请求程序接收对可移动物体的特性数据的请求。确认特性数据在可移动物体上是可用的,并且请求程序具有访问特性数据的权限;然后,响应于确认向附属装置提供特性数据。在另一实施例中,经由通信适配器从附属装置的请求程序向可移动物体发送对可移动物体的特性数据的请求,其中对特性数据的请求包括指示附属装置是否具有访问特性数据的权限的信息;响应于对特性数据的请求,经由通信适配器从可移动物体接收特性数据;以及经由通信适配器向附属装置的请求程序提供特性数据。

此外,本文描述了支持在可移动物体环境中通信的系统、方法、存储介质和计算机程序。在一个实施例中,提供针对适用于由不同的附属装置使用来与可移动物体通信的通信参数集合的信息。从附属装置获得针对通信参数集合中的至少一个参数的修改值;以及基于针对通信参数集合中的至少一个参数的修改值来配置在可移动物体和附属装置之间建立的连接。在另一实施例中,建立可移动物体和附属装置之间的连接,其中连接使用通信参数集合,通信参数集合的值被设置为默认值;基于由可移动物体提供的通信参数集合的值和由附属装置提供的通信参数集合的值,获得针对通信参数集合中的至少一个参数的修改值,并且基于针对通信参数集合中的至少一个参数的修改值来配置连接。

本发明的实施例提供开放且安全的可移动物体环境,其中来自附属装置的各种协议下的应用可以与api集合交互以控制可移动物体。此外,可移动物体可以向独立的附属装置和/或附属装置中的独立应用分发数据。此外,附属装置可以与可移动物体进行协商,以建立利用最优通信参数的连接。

附图说明

图1是根据本发明各个实施例的可移动物体环境中的应用的示例性图示。

图2是根据本发明各个实施例的在可移动物体环境中使用认证服务器来支持安全模型的示例性图示。

图3是根据本发明各个实施例的在可移动物体环境中使用认证服务器来支持多个应用的示例性图示。

图4是根据本发明各个实施例的在可移动物体环境中的支持安全模型的示例性图示。

图5是根据本发明各个实施例的将独立于协议的api用于对可移动物体施加控制的应用的处理的示例性图示。

图6是根据本发明各个实施例的可移动物体环境中的、用于支持独立于协议的可移动物体应用开发的可移动物体的示例性图示。

图7是根据本发明各个实施例的可移动物体环境中的协议映射的示例性图示。

图8是根据本发明各个实施例的可移动物体环境中的api的组织的示例性图示。

图9是示出了根据本发明各个实施例的独立于协议的可移动物体环境的操作的流程图。

图10是示出了根据本发明各个实施例的基于应用的权限来获得用于执行函数的许可的流程图。

图11是根据本发明各个实施例的可移动物体环境中的从可移动物体分发数据的示例性图示。

图12是根据本发明各个实施例的可移动物体环境中的可移动物体和用于从该可移动物体分发数据的附属装置的细节的示例性说明。

图13是示出了根据本发明各个实施例的通过检查可移动物体数据库来确认特性数据的可用性的流程图。

图14是根据本发明各个实施例的可移动物体数据库内的条目的示例性图示。

图15a是根据本发明一个实施例的可移动物体环境中的数据分发的示例性图示。

图15b是根据本发明一个实施例的可移动物体环境中的数据分发的另一示例性图示。

图16是示出了根据本发明各个实施例的可移动物体处的用于可移动物体的数据分发的操作的流程图。

图17是示出了根据本发明各个实施例的在可移动物体的数据分发期间的负载平衡的流程图。

图18是示出了根据本发明各个实施例的附属装置处的用于可移动物体的数据分发的操作的流程图。

图19是根据本发明各个实施例的用于更新可移动物体和附属装置之间的连接的处理的示意性图示。

图20a是根据本发明一个实施例的可移动物体与附属装置之间的通信参数协商以及配置连接的示例性图示。

图20b是根据本发明一个实施例的可移动物体与附属装置之间的通信参数协商以及配置连接的另一示例性图示。

图21是根据本发明一个实施例的配置和使用可移动物体和附属装置之间的连接的示例性图示。

图22是根据本发明各个实施例的通信参数集合的示例性图示。

图23是示出了根据本发明各个实施例的可移动物体环境中的可移动物体用于自动更新到可移动物体的连接的操作的流程图。

图24是示出了根据本发明各个实施例的可移动物体环境中的附属装置的用于自动更新到可移动物体的连接的操作的流程图。

图25是根据本发明各个实施例的可移动物体的示例性图示。

图26是根据本发明各个实施例的附属装置的示例性图示。

具体实施方式

在附图的各图中以示例而非限制的方式示出了本发明,在附图中相似的附图标记指示相似的元素。应当注意到:在本公开中对“一”或“一个”或“一些”实施例的引用不一定指的是相同实施例,并且这样的引用意味着至少一个实施例。

在附图中,此处可以使用括号中的文本和具有虚线边界(例如,长划点虚线、短划线虚线、点虚线、以及点)的框来示出向本发明实施例添加附加特征的可选操作。然而,这种标注不应当被视为意味着:在本发明的某些实施例中,他们是仅有的选项或可选操作,和/或具有实线边界的框不是可选的。同样在附图中,附图标记用于指代各种元件或部件,不同附图中的相同附图标记表示具有相同或相似功能的元件或部件。

以下使用无人飞行器作为可移动物体的示例来对本发明进行了描述。对于本领域技术人员来说显而易见的是,可以无限制地使用其它类型的可移动物体。

在以下描述和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解:这些术语不意在作为彼此的同义词。“耦合”用于指示两个或更多个元件(可以或可以不彼此直接物理或电学接触地)彼此协作或交互。“连接”用于指示在彼此耦合的两个或更多个元件之间建立通信。如本文所使用的,“集合”指代包括一个项目的任何正整数个的项目。

电子装置使用机器可读介质(也被称为计算机可读介质)来(内部和/或通过网络使用其它电子装置)存储和传输代码(其由软件指令组成,且有时被称为计算机程序代码或计算机程序)和/或数据,机器可读介质是例如计算机或机器可读存储介质(例如,磁盘、光盘、只读存储器(rom)、闪存装置、相变存储器)和计算机或机器可读传输介质(也被称为载体)(例如,电、光、无线电、声或其它形式的传播信号,例如载波、红外信号)。因此,电子装置(例如,计算机)包括硬件和软件,例如一个或多个微处理器的集合,其耦合到用于存储在该微处理器集合上执行的代码和/或用于存储数据的一个或多个机器可读存储介质。例如,电子装置可以包括包含代码在内的非易失性存储器,因为即使在电子装置关闭(当掉电时)时非易失性存储器也可以保持代码/数据,以及在打开电子装置时,通常将要由该电子装置的微处理器执行的部分代码从较慢的非易失性存储器中拷贝到该电子装置的易失性存储器(例如,动态随机存取存储器(dram)、静态随机存取存储器(sram))中。通常的电子装置还包括用于与其它电子装置建立网络连接(以使用传播信号来发送和/或接收代码和/或数据)的一个或多个物理网络接口的集合。

可移动物体是包括用以推进可移动物体移动的一个或多个推进单元在内的电子装置。可移动物体可以是无人飞行器、无人载运工具、或机器人。这些可移动物体的共同之处在于:这些可移动物体上都没有用于控制它们的飞行员/驾驶员/操作员。也就是说,通过不同的电子装置来控制使用一个或多个推进单元而实现的可移动物体的移动。无人飞行器也被称为无人机(uav)、无人驾驶飞机或无人飞行器系统(uas),所有这些名称都可以互换使用来指代本文中的无人飞行器。

附属装置是可移动物体环境中的附属于可移动物体的电子装置。附属装置可以是可穿戴电子装置、手持式电子装置、可移动物体的机载电子装置或另一可移动物体。当可穿戴电子装置、手持式电子装置或另一可移动物体与可移动物体无线地通信时,与在短物理距离(例如,小于1米)内与可移动物体通信的机载电子装置相反,它们可以被称为远程电子装置。所提到的附属装置与可移动物体之间的附属关系通常是附属装置与可移动物体之间(通过通信网络)通信地耦合或(通过一个或多个连线的)连接。

图1是根据本发明各个实施例的可移动物体环境中的应用的示例性图示。如图1所示,可移动物体环境100中的应用112(注意,应用通常简称为app)可以经由通信网络190与可移动物体150通信。根据本发明的一个实施例,应用112部署在附属装置102中。

通信网络190可以是各种有线网络或无线网络。有线网络主要用于可移动物体和可移动物体上的机载电子装置之间的通信(可移动物体和机载电子装置之间的有线线路包括一种或多种物理通信链路,比如铜线和光纤),而无线网络可以用于可穿戴电子装置、手持式电子装置、或机载电子装置、另一可移动物体与可移动物体之间的通信(无线网络中使用的无线信号通常是各种频率的无线电波)。

有线网络可以部署诸如如下项的技术:通用异步接收器/发送器(uart)技术、控制器区域网(can)技术、以及内部集成电路(i2c)技术;并且无线通信网络可以部署诸如如下项的技术:无线局域网(wlan)(例如,wifitm)、蓝牙、第三/第四/第五代(3g/4g/5g)蜂窝。通信网络190使用通信链路集合来在可移动物体150和附属装置102之间进行通信,并且从附属装置102到可移动物体150的链接通常被称为上行链路,并且沿相反方向的链路被称为下行链路。上行链路可以用于将控制信号从附属装置102发送到可移动物体150,并且下行链路可以用于对控制信号做出响应,将数据(例如,媒体流或视频流)从可移动物体150发送到附属装置102。

传统上,可移动物体供应商提供端到端解决方案。供应商提供要被安装在附属装置102(例如,由可移动物体供应商提供的、用以控制可移动物体的遥控器)中的应用112,并且该应用用于控制可移动物体150。存在多种方法来确保附属装置102和可移动物体150之间的通信的稳健性,这是因为通常可移动物体供应商对通信网络190具有有限的控制。利用附属装置102和可移动物体150之间的可靠通信,传统的可移动物体环境和供应商的端对端解决方案可以是有效的。

但是,传统的可移动物体环境不可扩展。随着人们在各种商业领域中发现可移动物体的使用越来越多,期望具有这样的开放的可移动物体环境:独立于可移动物体150和/或附属装置102的开发人员开发应用112以控制可移动物体对象150。开放的可移动物体环境的好处包括:可移动物体供应商可以免于探索各个领域并为这些领域开发应用,并且让专门研究特定领域的开发人员来开发特别适用于这些领域的应用。然后,可移动物品供应商可以将他们的注意力投入到他们的专业知识中:使可移动物体更通用、更灵活、更经济。

在开放的可移动物体环境中,可移动物体供应商可以提供可移动物体150;附属装置供应商可以提供附属装置102,附属装置102可以托管来自不同应用供应商的各种应用以用于不同目的;并且应用开发人员可以提供应用112。可移动物体供应商、附属装置供应商和应用开发人员可以彼此独立,因此他们的产品(所提供的可移动物体、附属装置和应用)也彼此独立。例如,附属装置供应商可以不提供用于控制可移动物体的应用,而仅提供以下项中的一个或多个:机载电子装置(例如,相机/摄像机或计算机)、手持式电子装置(例如,可移动物体的遥控器、智能电话、或平板计算机/笔记本计算机)、和/或可穿戴电子装置(例如,智能手表、智能服饰、谷歌眼镜或以其它方式耦合到人体的电子装置)。附属装置也可以是由不同的可移动物体供应商提供的另一可移动物体(显然,附属装置也可以是由相同可移动物体供应商提供的可移动物体)。可移动物体、附属装置和应用中的至少两个彼此独立(例如,不是由相同供应商提供的),否则当所有实体彼此依赖时(例如,全部由相同供应商提供),将不太需要拥有开放的可移动物体环境。

在一个实施例中,附属装置为应用开发人员提供了用以开发他们的应用的平台,其中该平台可以被由应用开发人员开发的应用利用以与可移动物体交互并控制可移动物体。

在开放的可移动物体环境中,两个相互关联的问题对于解决以下事项来说至关重要:(1)如何使可移动物体环境开放,使得可移动物体可以与独立的附属装置和/或附属装置中的独立应用有效地交互,以及(2)如何使开放的可移动物体环境安全,使得可移动物体免受错误控制和/或恶意攻击。

此外,开放的可移动物体环境应该允许可移动物体将其数据分发给独立的附属装置和/或附属装置中的独立应用。此外,开放的可移动物体环境应该允许可移动物体与具有优化通信参数的独立附属装置建立连接。

本发明的实施例提供用于解决这些问题的解决方案。

由于可移动物体上没有飞行员/驾驶员/操作员,因此可移动物体进行操作的可移动物体环境是安全的并且免受实际的或假冒的用户滥用或攻击是至关重要的。图2是根据本发明各个实施例的在可移动物体环境中使用认证服务器来支持安全模型的示例性图示。在可移动物体环境200中,认证服务器201用于支持安全模型。认证服务器201可以是可移动物体(未示出)的一部分,并且它也可以是与可移动物体分离的实体(例如,在独立电子装置内或在附属装置内)。

向认证服务器201注册应用。在一个实施例中,注册涉及应用的开发人员提供个人信息。基于在注册210期间提供的信息,向应用提供权限集合。

通过认证服务器201向附属装置202内的应用204指派应用密钥(通常称为app密钥)205。当正在开发应用时,可以基于应用的应用标识符(未示出)来指派应用密钥205。应用标识符可以是应用在android系统中的包名称(packagename),也可以是应用在ios系统中的包名称(bundlename)。在一个实施例中,(例如,通过web门户,该web门户又将这样的信息引导至认证服务器)将应用标识符提交给认证服务器201,认证服务器201将应用密钥205指派给应用204。应用密钥与应用标识符唯一地绑定,并且每个应用密钥与权限集合相关联。应用密钥是通过密码算法生成的(因此,应用密钥也可以被称为应用的密码密钥),密码算法可以是对称或不对称的,并且密码密钥可以是公钥(用于加密或签名验证)或私钥(用于解密和签名)。密码算法和密码密钥在本领域中是已知的,因此在此不详细说明。

应用204可以发起用于访问可移动物体(未示出)的激活请求212。激活请求212可以是对访问可移动物体的权限208的请求。认证服务器201可以对激活请求212应用一个或多个策略206,以便确定是否应该向应用204授予访问可移动物体的权限208。策略206可以使用各种准则(例如,最大安装数量和/或应用的不同角色)来定义。此外,权限208和策略206还可以指示特定应用可以访问的可移动物体数据的类型、可移动物体功能模块的类型和可移动物体接口的类型(例如,应用编程接口(api))。在一个实施例中,认证服务器201基于激活请求212中包含的应用密钥205来作出权限授予决定。请注意,认证服务器仅在初始激活时才需要参与应用与可移动物体之间的通信。一旦应用激活了,应用就可以与可移动物体进行通信,而无需认证服务器的进一步参与,直到/除非应用的权限改变。

此外,要注意的是,应用204可以向应用的用户提供与从认证服务器201获得的权限不同的权限。用户可以具有比应用204更低的权限,并且应用开发人员能够在从认证服务器201授予的权限之内控制授予用户的权限。

此外,附属装置202也可以向认证服务器201注册。认证服务器201可以确定特定类型的附属装置具有一级权限,并且驻留在该类型的附属装置中的所有应用都不会具有高于该级别的权限。例如,与由可移动物体供应商提供的遥控器相比,由独立智能电话供应商提供的智能电话(作为附属装置)可以被指派为更低的权限级别。此外,附属装置的权限还可以指示特定附属装置可以访问的可移动物体数据的类型、可移动物体功能模块的类型和可移动物体接口的类型。

图3是根据本发明各个实施例的在可移动物体环境中使用认证服务器来支持多个应用的示例性图示。如图3所示,可移动物体环境300中的认证服务器301可以用于基于一个或多个策略306来处理来自不同应用a至b304至305的、用于访问和控制可移动物体350的激活请求。

例如,被指派有应用密钥a305的应用a304可以被授予权限集合(例如,权限a308)。被指派有应用密钥b315的另一个应用(应用b314)可以被授予不同的权限集合(例如,权限b318)。

根据本发明的各个实施例,可移动物体环境300是可移动物体应用开发环境,其包括用于支持在可移动物体环境中的软件应用开发的软件开发工具包(sdk)。sdk可以包括安全机制,该安全机制包括可供由所有注册开发人员提供的应用使用的低级功能、以及仅可供由经证实的开发人员提供的应用使用的高级功能。为了获得高级权限,申请人会需要经受批准处理,批准处理涉及实名注册(例如,图2中的注册210)和意图使用声明。

图4是根据本发明各个实施例的在可移动物体环境中的支持安全模型的示例性图示。如图4所示,可移动物体环境400(作为包括sdk在内的可移动物体应用开发环境)中的认证服务器401可以从应用404接收用于访问和控制可移动物体450的激活请求412。

认证服务器保持注册数据库411。注册数据库411保持关于各种应用的信息。例如,注册数据库411可以保持应用的最大安装数量,其中该数量可以被预先配置或动态配置。然后,当应用404激活时,认证服务器401更新激活应用计数。

根据本发明的各个实施例,如果激活应用计数等于或大于应用的最大安装数量,则认证服务器401可以拒绝激活请求。此外,认证服务器401可以响应于对应用的权限升级请求而增加最大安装数量,或者认证服务器401可以将最大安装数量设置为零,以阻止非法、不适当、恶意或者故障应用。

如图4所示,认证单元423基于与认证服务器401的交互(例如,验证应用404的权限),向应用404授予用于使用一个或多个应用编程接口(api)454来访问可移动物体450的权限。例如,可移动物体450可以是无人飞行器,可移动物体450的api454包括飞行控制器api、导航api、基本功能api、数据分发api、相机api、电池api和云台api中的一个或多个。此外,api454可以包括与飞行控制器api相关联的地面站api,其中地面站api用于执行一个或多个飞行控制操作,地面api被配置为仅可由具有特定权限集合的应用访问。此外,认证单元423基于与认证服务器401的交互,可以向应用授予用于访问可移动物体的功能模块(比如,飞行控制模块、云台模块、电池模块、相机模块、和通信模块,这些模块将关于图8更详细地讨论)的权限。

在应用开发的开始阶段,可移动物体环境400的sdk可以仅批准少量应用,以便保护应用开发。在开发人员完成开发后,sdk可以在批准处理中检查需求文档、技术文档、安装文档和相关源代码。在完成批准处理后,sdk可以增加应用的最大安装数量以升级应用。

根据本发明的各个实施例,可以使用基于最大安装数量的激活处理来防止恶意应用或不适当的应用。例如,系统可以将最大安装数量设置为零,以防止激活恶意应用。此外,系统可以去激活应用,例如阻止恶意应用访问sdk。

在一个实施例中,注册数据库411保持关于附属装置的信息。例如,注册数据库411可以保持附属装置402的权限等级。附属装置402可以与可以在该附属装置上运行的应用的最大数量相关联。

如本文所讨论的,通过认证服务器的参与,本发明的实施例可以为可移动物体环境提供安全性,以防止非法、不适当、恶意或故障应用访问可移动物体,从而提供安全的可移动物体环境。

由于认证允许可移动物体免受错误控制和恶意攻击的影响,因此安全的可移动物体环境提供了用于开发可移动物体环境的工具。然而,在开放的可移动物体环境中,可移动物体将接受来自各种协议下的应用的控制,并且适应各种协议是具有挑战性的。

例如,为了执行数据分发,可以构建api集合,每个api用于移动0s(例如,android、ios、windows和symbian)和有线通信(例如,uart、can和i2c)中的每一个。对于不同的应用,可以构建另一api集合。由于可移动物体用于各个领域中的越来越多的应用,因此在可移动物体环境中构建和保持日益增多的api是繁重的工作。此外,当开发新的应用时,需要添加新的api集合。此外,当可移动物体供应商向开放的可移动物体环境提供新产品时,可移动物体供应商需要升级各种应用中的所有现有api,以便这些应用可以用于新产品,同时与现有产品保持兼容。具有协议特定的api的这种方法不具有可扩展性,并且阻碍了可移动物体行业的发展。

根据本发明的各个实施例,提出了独立于协议的api,其中api包括函数集合,使得可移动物体利用该api执行应用所需的函数集合中的一个或多个。api独立于协议,因此请求可以来自在多个协议中的任何一个协议下的应用,并且api执行如应用所预期的所需函数。

图5是根据本发明各个实施例的将独立于协议的api用于对可移动物体施加控制的应用的处理的示例性图示。如图5所示,可移动物体环境500包括被共同称为附属装置508的附属装置集合502至506、通信网络590和可移动物体550,它们中的每一个与图4中的类似称呼的实体相类似。如关于图1所讨论的,在本发明的一个实施例中,可移动物体、附属装置和应用中的至少两个是彼此独立的。

图5中的每个附属装置都包括在不同协议下的应用,协议的范围为从协议1至协议k。不同协议下的应用将说明:可移动物体环境500是开放的,并且可以适应在各种协议下的应用。还要注意,一个附属装置可以适应在不同协议下操作的多个应用,因此应用的数量和协议计数的数量可能不匹配(例如,附属装置506包含在k个协议下的n个应用,其中n可以大于或小于k)。

在图5中,任务框1至3示出了根据本发明的一个实施例的执行操作的顺序。在任务框1处,激活应用(例如,在附图标记512处的在协议1下的应用1)。在一个实施例中,激活是通过认证服务器(例如,认证服务器401)来实现的,其中该应用向激活服务器发起用于访问可移动物体的激活请求。由于关于图2和图4讨论了激活,因此在此不再重复。

当应用被激活时,在任务框2处,应用经由一个或多个api获得对可移动物体的一个或多个功能模块的控制,这些api独立于应用的协议(例如,一个或多个api独立于应用1进行操作的协议1)。独立于协议的api允许应用(例如,与提供可移动物体的供应商不同的供应商提供的应用)与可移动物体进行交互。如上面关于图4所讨论的,一个或多个api是用于访问可移动物体的接口,并且在获得对一个或多个api的控制之后,应用可以控制可移动物体。

在任务框3处,可移动物体550执行一个或多个api中的函数。函数的执行可以生成数据(例如,检索的可移动物体操作数据,比如运动数据)和/或信息(例如,对来自应用的请求的响应),并且所生成的数据或信息可以返回到应用进行操作的协议下的应用。

通过该处理,协议相关应用能够控制一个或多个功能模块,并且使用独立于协议的一个或多个api来使可移动物体执行函数,并且最终可移动物体将数据和/或信息返回至所述协议下的应用。因此,由于可移动物体仅执行独立于协议的一个或多个api中的函数,使得可移动物体与多个协议隔离,因此不会向可移动物体的控制施加更新和保持所有协议特定的api的负担。

图6是根据本发明各个实施例的可移动物体环境中的用于支持独立于协议的可移动物体应用开发的可移动物体的示例性图示。如图所示,可移动物体环境600类似于可移动物体环境500,并且相同的附图标记指示具有相同或相似功能的元件或部件,因此仅讨论图6中的附加细节。

如所示,图6提供了根据本发明的一个实施例的可移动物体550的更多细节。可移动物体550包含api640至656的集合,并且每一个api都耦合到映射模块664。api654至656的集合耦合到对可移动物体550进行控制的可移动物体控制器621。在本发明的一个实施例中,可移动物体控制器621还与认证单元623和可移动物体数据库625交互。注意,当可移动物体是无人飞行器、无人载运工具或机器人时,可移动目标控制器分别被称为飞行器控制器、载运工具控制器或机器人控制器,或者简单地统称为控制器。应该注意的是,尽管图6中示出了单个映射模块664,但是在备选实施例中,每个api可以耦合到其自己的专用映射模块,以将来自各种协议下的应用的请求映射到api中的函数。

根据本发明的各个实施例,可移动物体控制器621、认证单元623、可移动物体数据库625、api654至656和映射664至666可以是软件开发工具包(sdk)的一部分,sdk用于支持在可移动物体环境600中开发软件应用。

在一个实施例中,可移动物体控制器621控制可移动物体550的各种功能模块。例如,无人飞行器可以包括相机模块、电池模块、云台模块、通信模块和飞行控制器模块。在本发明的一个实施例中,可移动物体控制器621建立和/或管理可移动物体550和附属装置502至506内的应用512至516之间的通信。

可移动物体数据库625包含由可移动物体550产生、并且用于可移动物体550的数据。例如,可移动物体数据库625可以包括可移动物体550的运动数据(比如,可移动物体的速度、位置、高度、和/或运动时间段)以及其它可移动物体的操作状态数据(比如,电池使用和/或可移动物体的处理器的可用数据存储空间)。可移动物体数据库625可以包括与其技术细节相关的数据(可移动物体的标识、可移动物体的处理器的性能等)。可移动物体数据库625还可以包含与应用和附属装置相关的数据。例如,数据可以包括应用的标识数据,使得当应用被授权获得某些类型的数据时,授权被记录在可移动物体数据库625中,并且可移动物体控制器621和/或认证单元623将允许将该类型的数据提供给应用,而无需在应用的后续请求中重复获得应用的授权。可移动物体的这些数据(包括运动数据、其它操作状态数据、可移动物体的技术细节以及与应用和附属装置相关的数据)统称为可移动物体的特性数据。尽管有些数据在可移动物体的操作之前就已经被安装,但其它数据是在可移动物体的操作期间被写入的。例如,可移动物体控制器621可以实时地(当可移动物体正在产生数据时即刻地)或近乎实时地(在生成数据之后的几秒/分钟内)写入包括运动数据在内的操作状态数据和与应用和附属装置相关的数据,在这种情况下数据库被称为实时数据库。

应当注意,尽管可移动物体控制器621被示出为位于可移动物体550内,但是在一些实施例中,可移动物体控制器621、认证单元623、可移动物体数据库625、api654至656、和映射664至666中的一个或多个被实现在可移动物体550之外,但却(例如,通过通信网络590或不同的通信网络)通信地耦合到可移动物体550。此外,这些模块中的一个或多个可以集成到单个模块中。例如,可移动物体控制器可以包含api654至656、映射664至666、认证单元623和可移动物体数据库625中的一个或多个。在一个实施例中,包括认证单元623在内的可移动物体控制器621被实现在可移动物体550的遥控器内。

api654至656是独立于协议的,并且它们按照请求执行函数而无需知道如何调用函数。例如,映射664将多种协议下的多个请求映射到api654的相同函数,因此映射664对api654进行屏蔽使其免受各种协议的协议细节的影响,并且产生独立于协议的api。

图7是根据本发明各个实施例的可移动物体环境中的协议映射的示例性图示。图7包含具有与图6中的附图标记相同的附图标记的实体,并且相同的附图标记指示具有相同或相似功能的元件或部件。可移动物体环境700被划分成两个平面:(1)协议特定的平面774,其中的元件或部件知道不同的协议并相应地操作;和(2)独立于协议的平面772,其中的元件或部件不知道控制可移动物体的协议。

通过这样的划分,独立于协议的平面772内的元件和部件不会由于应用进行操作的协议的改变而改变。在一个实施例中,通常更接近可移动物体的控制的这些元件和部件可以专门由可移动物体的供应商实现,而协议特定的平面774中的元件和部件由可移动物体的供应商和附属装置和/或应用的供应商来联合实现。在没有应用可以进行操作的各种协议的实现细节的干扰的情况下,则可以更高效地实现独立于协议的平面772内的元件和部件。当新协议下的应用要控制可移动物体时,只有协议特定的平面774需要对新协议进行更新(例如,向现有api添加另一映射),并且独立于协议的平面772中无需改变。这种划分使可移动物体环境可扩展,从而打开了在越来越多元化的领域中使用可移动物体的大门。

例如,机载电子装置通常通过与用于远程电子装置的通信介质不同的通信介质与可移动物体交互:机载装置通常通过一个或多个有线线路(物理通信链路,例如铜线和光纤)与可移动物体通信,而远程电子装置(比如,手持式电子装置或可穿戴电子装置)通过各种频率下的无线电波无线地与可移动物体通信。由于这些差异,可移动物体环境通常为由机载装置和远程装置托管的应用提供不同的sdk:用于前者的机载sdk和用于后者的移动sdk。在两个sdk中,为不同协议下的相同或相似函数定义不同的api。

通过使用独立于协议的api,可以避免不同sdk和这样的sdk内的不同api。例如,机载附属装置702和远程附属装置704可以利用相同的sdk和相同的api(例如,api654)来对可移动物体施加相同或类似的控制。

在协议特定的平面774中,在本发明的一个实施例中,每个应用通过通信适配器(例如,通信适配器732至732)与映射模块664通信。在本发明的一个实施例中,通信适配器是可移动物体环境的sdk的一部分。通信适配器使各种协议下的应用中的消息(例如,以命令的形式)被打包成可移动物体环境中易于理解的格式,然后在附属装置向可移动物体发送该消息。相反,通信适配器将由附属装置从可移动物体接收到的针对应用的消息转换为应用中的消息。因此,在一个实施例中,通信适配器将sdk外部的消息转换成sdk中的消息,并且沿相反方向做相反的处理。在本发明的一个实施例中,通信适配器可以是附属装置的接口(例如,附属装置的api)。该接口是必需的,因为可移动物体应用通常独立于托管可移动物体应用的附属装置。

映射模块664将不同协议下的请求转换为api的函数。请求到api函数映射表750示出了转换。附图标记762处的api1函数1与不同协议下的不同请求相对应,使得附图标记742处的协议1下的请求1和附图标记743处的协议2下的请求1都映射到api1函数1。api1函数1可以是用于创建应用与可移动物体之间的连接的函数。例如,用于将应用连接到无人飞行器的示例性函数是oncreate()。该函数可以映射到两种不同协议下的请求:附图标记742处的协议1下的请求1和附图标记743处的协议2下的请求1。类似地,用于断开应用和可移动物体之间的连接的示例性函数是ondestroy(),并且该函数(例如,附图标记764处的api函数2)可以映射到两种不同协议下的请求:附图标记745处的协议1下的请求2和附图标记746处的协议2下的请求2。当执行api函数时,api函数与引起该执行的应用相关联。例如,应用的应用密钥可以映射到该函数。因此,可移动物体控制器知道哪个应用正在执行哪个api函数。

需要注意的是,api中的函数有时需要输入参数集合,该输入参数集合可能与由协议下的请求所提供的参数不相同,并且请求可以包括比api函数的输入参数集合更多或更少的参数。在那种情况下,映射模块664提供调整以将由协议下的请求所提供的参数转换为输入参数集合。例如,请求可以指示所请求的数据的数据标识符,并且api可能需要用于数据标识符的散列值的输入参数。映射模块664提供数据标识符与数据标识符的散列值之间的转换。又例如,api可能需要没有包括在协议下的请求中的输入参数(例如,应用的注册信息),映射模块664向api函数提供该输入参数(例如,从认证单元623中获得注册信息)以及针对其它输入参数的请求中所包括的信息。

当在可移动物体上执行函数时,则可能需要将所生成的数据和/或信息返回给已经导致该函数被执行的应用。也就是说,所生成的数据和/或信息可能需要被转换回应用的协议之下。为此,映射664可以利用函数输出到应用数据/信息的映射表752。例如,api1函数1输出782映射到在附图标记792处的协议1下的数据/信息以及在附图标记793处的协议2下的数据和/或信息。基于哪个应用使得api1函数被执行,输出被映射到该应用进行操作的协议(在该示例中,为协议1或协议2)下的数据和/或信息。

要注意的是,api函数输出不一定响应于特定应用的请求,并且可移动物体也可以向应用发起数据和/或信息发送。换句话说,可移动物体控制器621可以执行api中的函数,并且确定所得到的数据和/或信息需要被发送到应用,而无需应用首先发送请求。例如,可移动物体控制器621可以确定附图标记512处的协议1下的应用1发生故障,因此可移动物体控制器62l执行api函数(例如,ondestroy())来断开应用1与可移动物体之间的连接,并且api函数的输出(例如,api1函数2输出784)被映射到协议1下的数据和/或信息(例如,附图标记795处的协议1下的数据/信息)。

在可移动物体环境700中,来自应用的每个请求将被映射到一个api中的函数。当一个请求不能映射到现有的请求到api函数映射表750时,需要添加新条目以将请求映射到api函数。类似地,当应用使得api函数在可移动物体上执行、并且该执行生成针对应用的数据和/或信息时,所生成的数据和/或信息需要被映射回到应用中的数据和/或信息。当这种映射不存在时,函数输出到应用数据/信息映射表752需要为其添加新条目。因此,在一个实施例中,当创建新的应用时,映射模块664需要被更新,并且更新包括创建新的条目或修改请求到api函数映射表750和/或函数输出到应用数据/信息映射表752中的现有条目。映射模块664的更新可以由可移动物体的供应商与应用的供应商和/或附属装置的供应商合作地来执行。

如图7所示,将针对相同或相似执行的请求映射到请求到api函数映射表750中的相同函数。因此,api函数是基于其目的的类别。api函数类别使协议映射更加高效。然而,可移动物体环境通常具有多个api,并且也希望组织这些api。图8是根据本发明各个实施例的可移动物体环境中的api的组织的示例性图示。

如图8所示,可移动物体保持独立于协议的api812的集合。独立于协议的api812包括用于不同目的的api,并且在一个实施例中,每个api被赋予唯一的api标识符(id)。例如,用于可移动物体的运动控制的控制api802被设置为api1;用于可移动物体在其周围导航的智能导航api804被设置为api2;用于可移动物体的基本操作(例如,检查电池电量足以保持可移动物体的移动)的基本功能apl806;用于可移动物体分发数据的数据分发api808被设置为api4;并且用于可移动物体的相机的静态图像捕获或视频记录的相机api810被设置为api5。因此,利用由唯一apiid标识的每个api,映射模块862可以标识给定的协议下的请求所需的api。这些api还可以包括用于支持可移动物体的云服务的云平台api和用于可移动物体与附属装置通信并且在可移动物体内部进行内部通信的通信api,这些api也具有唯一的apiid,但是由于附图空间限制这样的api并未在图8中示出。

在操作中,协议下的应用可以发起请求。请求可以来自与通信适配器832至836中的一个耦合的应用。通过通信适配器832至836中的一个将请求从附属装置发送到映射模块862。

在映射模块862处,请求被映射到独立于协议的api812中的api。在一个实施例中,独立于协议的api812中的每个api都用唯一的apiid来标识,因此通过诸如请求到api函数映射表750之类的映射表,请求被映射到特定的api。由于映射模块862提供如下映射:(1)各种协议下的请求和api函数之间的映射以及(2)api函数输出和各种协议下的数据/信息之间的映射,因此映射模块862还被称为在应用和api之间路由消息(包括请求、数据/信息)的路由模块。

应用可以发起多个请求来控制可移动物体的功能模块。多个请求可以被映射到不同的api。如图8所示,当可移动物体是无人飞行器时,功能模块包括:飞行控制器模块842,用于管理无人飞行器的飞行;云台模块844,用于管理机载电子装置的支撑;电池模块846,用于管理电池电力消耗;相机模块848,用于管理静态图像捕获或视频记录;以及通信模块849,用于管理无人飞行器和附属装置之间的通信。尽管在一个实施例中,可以通过单个api访问一个功能模块(例如,相机api810专用于相机模块848),但是在备选实施例中,可以通过多个api访问单个功能模块。

在一个实施例中,为了控制功能模块,可以为应用调用多个api内的多个函数,并且可移动物体控制器821协调多个函数的执行。在应用控制功能模块之前,可移动物体控制器821可以(例如,通过检查认证服务器)确定应用是否具有用于访问功能模块的权限,以及另一应用是否正在控制该功能模块。如果应用具有用于访问的权限,并且没有其它应用控制该功能模块,则应用被赋予对该功能模块的控制权,并且执行一个或多个api中的一个api或多个函数以引导可移动物体。如果应用具有用于访问的权限,并且存在控制该功能模块的另一应用,则可移动物体控制器821确定应用是否具有比该另一应用更高的权限。当该应用具有更高的权限时,另一应用被取代,并且不再执行api中的对应函数,该应用接管控制。否则,将拒绝该应用对功能模块的控制。

图9是示出了根据本发明各个实施例的独立于协议的可移动物体环境的操作的流程图。方法900可以由可移动物体的可移动物体控制器(例如,图6至图8中的可移动物体控制器621或821)执行。

在附图标记902处,第一协议下的应用被激活。激活是通过如本文中关于图2、图4和图5所讨论的激活请求来实现的,因此此处不再重复。当应用被激活时,在附图标记904处,从附属装置上执行的应用接收用于访问可移动物体的第一协议下的请求。

在附图标记906处,该请求被映射到api中的函数,其中api独立于第一协议。可选地,在附图标记908处,基于应用的权限来获得用于执行函数的许可。然后,在附图标记910处,经由api引导可移动物体执行该函数。

在一个实施例中,api允许由与提供可移动物体的供应商不同的供应商提供的应用与可移动物体交互。在一个实施例中,api适用于接受来自不同于第一协议的第二协议的一个或多个请求,用于引导可移动物体执行函数。因此,api可以接受来自不同协议的请求,来引导可移动物体执行相同的函数。在一个实施例中,api是可移动物体的多个api中的一个api,并且负责访问可移动物体的功能模块。此外,在一个实施例中,多个api中的每个api以唯一标识符来标识。

在一个实施例中,方法900在附图标记910中的操作之后继续,并且在附图标记912处,从可移动物体获得针对应用的信息或数据。在一个实施例中,该信息或数据可以响应于可移动物体执行由第一协议下的请求触发的函数。

在附图标记914处,信息或数据被映射到第一协议下的消息。在一个实施例中,该消息响应于第一协议下的请求。在附图标记916处,将消息提供至第一协议下的应用。在本发明的一个实施例中,应用通过通信适配器接收消息。

图10是示出了根据本发明各个实施例的基于应用的权限来获得用于执行函数的许可的流程图。在一个实施例中,方法1000包括图9的附图标记908中的操作的细节。方法1000可以由可移动物体控制器执行。

从附属装置上执行的应用接收用于访问可移动物体的协议下的请求。确定该请求映射到api中的函数。在附图标记1002处,确定应用是否具有用于执行函数的权限。在一个实施例中,该确定是通过检查认证服务器(例如,应用在认证服务器中注册)来实现的。如果应用没有执行该函数的许可,则在附图标记1016处拒绝来自应用的请求。

如果应用具有执行api中的函数的权限,则流程转到附图标记1004,并且确定是否有其它应用正在执行该函数。如果有另一应用正在执行该函数,则流程转到附图标记1006,否则流程转到附图标记1008。

在附图标记1006处,确定应用是否具有比该另一应用的权限更高的权限。如果应用具有更高的权限,则流程转到附图标记1008,否则流程转到附图标记1016,并且拒绝来自应用的请求。

在附图标记1008处,引导可移动物体执行该函数。之后,流程可以转到附图标记1018,在此处执行附图标记912至916中的操作。

在可移动物体执行该函数时,在附图标记1010处,可移动物体控制器可以确定具有较高权限的任何其它应用是否具有用于执行相同函数的新请求。如果否,则在附图标记1008处,可移动物体继续执行响应于应用的函数。否则,在附图标记1012处,针对该应用中止执行该函数。然后,在附图标记1014处,将对该请求的响应提供给应用。响应可以包括在执行针对应用的函数时由可移动物体生成的数据和/或信息。响应也可以指明中止执行该函数的原因。在该实施例的一个实施例中,应用将通过通信适配器来接收响应。

如所讨论的,为了提供开放的可移动物体环境,向各种协议下的应用提供独立于协议的接口,其中应用可以发起用于控制可移动物体的请求。通过映射模块,将各种协议之间的差异抽象化,独立于协议的接口不需要了解各种协议之间的差异,只需执行接口中的函数并引导可移动物体执行函数即可。此外,映射模块将会将独立于协议的可移动物体的输出(例如,api函数的输出)映射到发起应用进行操作的协议下的协议特定响应或消息。

这种开放的可移动物体环境简化了控制可移动物体的接口的设计,并且可移动物体环境变得更具可伸缩性。应当注意,尽管应用编程接口(api)用作为可移动物体的示例性接口,但是本发明的实施例不限于api,并且本发明的实施例可以应用于其它软件接口,应用可以通过该其它软件接口对可移动物体施加控制。

通过上文讨论的方法,可移动物体环境支持独立于协议的可移动物体应用开发,并且来自附属装置的应用可以引导可移动物体执行操作。在可移动物体环境中,另一重要方面是从可移动物体分发数据。如果附属装置具有用于访问数据的权限,即使附属装置独立于可移动物体,也应将在可移动物体中生成的数据分发到附属装置。

通过开始向附属装置(独立于可移动物体或相反)分发数据,可移动物体环境使附属装置(由可移动物体供应商或独立于可移动物体供应商的供应商提供)能够监控可移动物体的状态并相应地做出响应。因此,即使附属装置独立于可移动物体,附属装置也可以如由可移动物体的供应商提供的控制器(例如,专用于可移动物体的、并且由可移动物体的供应商提供的、用于控制可移动物体的遥控器)那样类似地控制可移动物体。因此,数据分发允许针对可移动物体供应商具有比应用的开发人员更少的专业知识的领域开发应用,其中应用可以利用分发的数据来分析或控制可移动物体,因此可移动物体可以在这样的领域中高效使用,并且拓宽了可移动物体的使用。

图11是根据本发明各个实施例的可移动物体环境中的从可移动物体分发数据的示例性图示。可移动物体环境1100类似于图5的可移动物体环境,并且相同的附图标记指示具有相同或相似功能的元件或部件。在图11中,任务框1至3示出了根据本发明的一个实施例的执行操作的顺序。

在任务框1处,可移动物体550从附属装置502的请求程序接收针对可移动物体550的特性数据的请求。在一个实施例中,请求程序是在附属装置上执行的应用,其中该应用通过应用编程接口(api)发起对特性数据的请求,该应用编程接口允许由与提供可移动物体的供应商不同的供应商提供的应用与可移动物体交互。在一个实施例中,api是本文讨论的独立于协议的api。

在任务框2a处,可移动物体550确认请求程序具有访问可移动物体550的特性数据的权限。在任务框2b处,可移动物体550确认特性数据是可用的。这两个确认可以同时或顺序发生(不论哪个确认先完成都是可接受的)。在一个实施例中,确认请求程序具有访问特性数据的权限是通过与认证服务器进行检查来执行的。例如,当请求程序是应用时,确认包括:检查应用是否在认证服务器内的注册数据库(例如,认证服务器401的注册数据库411)中进行了注册来指示应用具有访问特性数据的权限。

然后在任务框3处,可移动物体550响应于该确认向附属装置提供特性数据。

图12是根据本发明各个实施例的可移动物体环境中的可移动物体和用于从该可移动物体分发数据的附属装置的细节的示例性说明。图12中的可移动物体550中示出的功能单元类似于图6中的功能单元,并且图12中的相同附图标记指示功能单元具有与图6中的功能单元相同或相似的功能。

在可移动物体550侧,可移动物体控制器621协调来自可移动物体的数据分发,并且可移动物体控制器621进行操作以确认特性数据的可用性和请求程序访问特性数据的权限,并且提供特性数据。在一个实施例中,确认请求程序的权限是通过认证服务器401和认证服务器401的注册数据库411来执行的,以上已经关于图4讨论了认证服务器401和注册数据库411的操作。

将特性数据存储在可移动物体数据库625中。可移动物体数据库625包括特性数据,比如,如本文中以上关于图6所讨论的运动数据和与可移动物体550的应用和附属装置相关的数据。

在附属装置502侧,在实施例中,请求程序是应用512,并且应用512和可移动物体550之间的交互通过通信适配器532。

在一个实施例中,附属装置502经由通信适配器532从应用512发送对可移动物体的特性数据的请求。对特性数据的请求包括指示附属装置是否具有访问特性数据的权限的信息(例如,应用密钥)。然后,附属装置502响应于对特性数据的请求,经由通信适配器532从可移动物体接收特性数据。然后,附属装置502经由通信适配器532将特性数据提供给应用512。

在一个实施例中,确认请求程序具有访问特性数据的权限是通过与认证服务器进行检查来执行的。在一个实施例中,确认特性数据的可用性是通过检查可移动物体数据库625来实现的。

图13是示出了根据本发明各个实施例的通过检查可移动物体数据库来确认特性数据的可用性的流程图。根据本发明的一个实施例,在可移动物体环境中执行方法1300。在一个实施例中,方法1300响应于可移动物体从附属装置的请求程序接收对可移动物体的特性数据的请求。在一个实施例中,可移动物体数据库位于可移动物体内,并且在备选实施例中,位于可移动物体外部。

可选地,在附图标记1302处,确定数据库的版本是否匹配所请求的特性数据的版本。请求包含指示所请求的特性数据的版本的信息。例如,请求可以指示特性数据的版本或者基于特性数据的版本生成的密码密钥。然后,将特性数据的版本与数据库的版本进行比较,或者将所请求的数据的密码密钥与数据库的密码密钥进行比较,如果识别出匹配,则方法1300继续到附图标记1304,否则,将指示错误。在获得错误时,可移动物体将向附属装置的请求程序返回错误指示。

在附图标记1304处,根据对特性数据的请求来确定特性数据的数据标识符。数据标识符可以是特性数据的字段名称、字段名称的散列、以及特性数据的字段的次序中的一个或多个。数据标识符可以是纯文本的,或者也可以是加密的。

在附图标记1306处,数据标识符用于识别可移动物体的数据库中的特性数据。如果发现不匹配,则将指示错误。在获得错误时,可移动物体将向附属装置的请求程序返回错误指示。

在一个实施例中,数据库中的数据具有某一版本,并且针对特性数据的匹配也需要这样的版本来匹配。因此,可选地,在附图标记1308处,确定数据库中的特性数据的版本与所请求的特性数据的版本相匹配,然后,确定匹配的特性数据在数据库中是可用的,并且所识别的特性数据是针对该请求的数据。同样,如果发现不匹配,则将指示错误。在获得错误时,可移动物体将向附属装置的请求程序返回错误指不。

图14是根据本发明各个实施例的可移动物体数据库内的条目的示例性图示。可移动物体数据库1400指示数据库的版本,其是12.1.00。在上文讨论的本发明的一个实施例中,数据库版本和/或基于版本生成的密码密钥与所请求的特性数据的版本和/或基于该版本生成的密码密钥相匹配。

可移动物体数据库1400中的数据是由数据标识符1402索引的,并且数据具有版本号1404和值1406。数据标识符1402是特性数据的字段名称。在备选实施例中,数据标识符可以是字段名称的散列(通过对字段名称应用一个或多个散列函数)或字段的次序(例如,字段1对应于速度、字段2对应于位置等)。在一个实施例中,不存在单独的数据版本信息(比如,数据版本号1404),而是将数据版本信息嵌入数据标识符1402内。例如,数据的数据标识和数据的数据版本一起形成数据标识符,因此对于相同的数据类型(例如,速度),当数据版本不同时,数据标识符也是不同的。

在该示例中,数据包括以米/秒为单位的可移动物体的速度1410、在gps坐标中的位置1412、以米为单位的高度1414、以及以分钟为单位的运动时段1416。针对所示数据项,数据的数据版本不同。在一个实施例中,所请求的数据与数据库中的特性数据之间的版本需要完全匹配。例如,如果请求的请求数据是版本12.1.00,则版本11.4.00的可移动物体速度不匹配,因此即使可移动物体速度数据在可移动物体数据库1400中,数据也被确定为对于请求来说不可用。在备选实施例中,数据库中较早版本的数据被认为与所请求的较新版本数据兼容,因此版本11.4.00的速度数据与所请求的版本12.1.00兼容(通常称为后向兼容),并且将值2米/秒提供给数据的请求程序。通常,数据库中较新版本的数据不被视为与所请求的较早版本数据兼容,并且数据被确定为对于针对较早版本数据的请求程序来说是不可用的。

关于向附属装置提供数据,本发明的实施例提供了各种方法。图15a是根据本发明一个实施例的可移动物体环境中的数据分发的示例性图示。

在附图标记1502处,可移动物体550从附属装置502的请求程序接收对特性数据的请求。在附图标记1504处,可移动物体550确认特性数据在可移动物体上是可用的并且请求程序具有访问特性数据的权限。然后,在附图标记1508处,可移动物体550响应于确认向附属装置502提供特性数据。数据可以基于对特性数据的请求而一次提供。备选地,数据可以基于请求以一定间隔连续地提供,在这种情况下,该请求可以被称为数据订阅请求。如图15a中的附图标记1502处所示,在该示例中,数据订阅间隔是500毫秒。数据订阅间隔通常在毫秒到秒之间的范围内。对于时间敏感的数据,数据订阅间隔可能在5毫秒到500毫秒(频域下的2hz至200hz)的范围内;对于非时间敏感的数据,数据订阅间隔可以在500毫秒至10秒(0.1hz至2hz)的范围内。显然,可以根据数据订阅的关键性和实用性来实现其它数据订阅间隔范围。

对于数据订阅请求,向附属装置502发送数据的间隔可以基于指示数据订阅请求的所需间隔的信息。例如,该请求可以指定数据分发的间隔。备选地,间隔可以基于所需的数据类型。尽管数据订阅请求本身并不指示间隔,但可移动物体550可以确定所需数据类型的适当间隔以发送所需特性数据。例如,可移动物体可以将对可移动物体位置的数据订阅间隔确定为20毫秒,因为对于附属装置对可移动物体的控制来说,实时位置数据对时间至关重要,而对移动对象的可用数据存储空间的数据订阅间隔为10秒,因为对于对可移动物体的控制来说,可用数据存储空间不是至关重要的。

此外,数据发送的间隔可以被更新。例如,附属装置502可以利用指示不同订阅间隔的信息发送对特性数据的更新的请求,并且基于更新的请求,可以更新数据订阅间隔。

此外,可移动物体505可以从上述请求程序或附属装置502的另一请求程序接收针对可移动物体的另一特性数据的另一请求。然后,可移动物体505确认其它特性数据在可移动物体上是可用的并且请求程序或其它请求程序具有用于访问其它特性数据的权限,并且响应于确认而提供其它特性数据而不是上述特性数据。

图15b是根据本发明一个实施例的可移动物体环境中的数据分发的另一示例性图示。在附图标记1512处,可移动物体550从附属装置504的请求程序接收对特性数据的请求。在附图标记1514处,可移动物体550确认特性数据在可移动物体550上是可用的并且请求程序具有访问特性数据的权限。然后,在附图标记1518处,可移动物体550响应于确认向附属装置504提供特性数据。此外,可移动物体550还向另一附属装置502提供该特性数据。

也就是说,当可移动物体550确认特性数据在可移动物体上是可用的并且请求程序具有访问特性数据的权限时,可移动物体550可以广播(即,到任何附属装置)或多播(即,到选定的附属装置的集合)特性数据。特性数据的广播或多播的选择可以基于附图标记1512处的请求,该请求包括指示这样的选择的信息,并且在多播的情况下,还包括选择向附属装置多播的准则。选择也可以基于所需的数据类型。尽管附图标记1512处的数据请求本身并不指示是仅向做出请求的附属装置504提供数据还是向一组附属装置或所有附属装置(包括附属装置502)提供数据,但可移动物体550可以确定特定数据要被提供的合适目的地。例如,可移动物体550可以确定利用相同请求程序或具有相同或更高级别权限的其它请求程序来将所请求的数据多播到所有附属装置。

图16是示出了根据本发明各个实施例的可移动物体处的用于可移动物体的数据分发的操作的流程图。在本发明的一个实施例中,方法1600可以在可移动物体的可移动物体控制器中实现。

在附图标记1602处,从附属装置的请求程序接收对可移动物体的特性数据的请求。在附图标记1604处,确认特性数据在可移动物体上是可用的并且请求程序具有访问特性数据的权限。然后,在附图标记1606处,响应于确认向附属装置提供特性数据。

可选地,该处理继续,并且在附图标记1608处接收请求程序的权限的更新。然后,在附图标记1610处,基于更新的权限提供其它特性数据或提供更少的特性数据。

例如,权限的更新可以是请求程序的权限的增加,因此与基于较早权限所允许的特性数据相比,允许请求程序访问更多的特性数据。在那种情况下,由于提升的权限级别,可移动物体向附属装置提供其它特性数据。在一个实施例中,可以在没有来自附属装置的附加请求的情况下由可移动物体控制器来确定其它特性数据的提供。

相反,权限的更新可以是请求程序的权限的减少,因此与基于较早权限所允许的特性数据相比,允许请求程序访问更少的特性数据。在那种情况下,可移动物体可能不再向现在不具有用于访问的权限的附属装置提供特性数据。当权限降低到最低级别时,可移动物体可以完全停止向附属装置提供特性数据。因此,通过改变请求程序的权限(例如,当请求程序是应用时,注册数据库(比如,注册数据库411)中的应用的设置改变),可移动物体环境可以有效地改变可移动物体的数据分发。

在从可移动物体向附属装置进行数据分发期间,数据分发可能在可移动物体和/或附属装置处产生大量工作负荷,并且这样的工作负荷可能引起拥塞,并且影响可移动物体和/或附属装置的性能。图17是示出了根据本发明各个实施例的在可移动物体的数据分发期间的负载平衡的流程图。在本发明的一个实施例中,方法1700可以在可移动物体的可移动物体控制器中实现。在方法1700的操作之前,可移动物体具有要被提供到附属装置的特性数据。

在附图标记1702处,确定可移动物体和附属装置中的至少一个的工作负荷。工作负荷可以被指示为可移动物体和/或附属装置此时的中央处理单元(cpu)使用率、可用数据存储空间和/或通信链路(上行链路/下行链路)延迟。

在附图标记1704处,确定特性数据的时间敏感度。在一个实施例中,特性数据根据数据类型而具有不同的时间敏感度。例如,可移动物体的运动数据通常比与应用和附属装置相关的数据对时间更敏感,这是因为前者可以用于通过附属装置实时控制可移动物体,因此运动数据是时间敏感的(例如允许小于秒的量级的延迟),而后者可以容忍某一级别(例如,超过几秒)的延迟。

然后,在附图标记1706处,在可移动物体向附属装置发送特性数据之前,基于工作负荷和时间敏感度中的至少一个延迟一个时间段。

例如,此时确定可移动物体的工作负荷为高并且特性数据可以被延迟(例如,对于无人飞行器,应用的标识数据可以在几秒钟之后被报告,而不会对飞行器的性能/控制造成主要影响),则可以在可移动物体数据库中识别出特性数据之后的几秒钟时发送特性数据。也就是说,在该实施例中,所发送的特性数据是接近实时的(比可用时间晚几毫秒)。

在备选实施例中,在该时间段的延迟之后,所发送的特性数据是时间延迟之后的数据样本。换句话说,所发送的特性数据仍然是实时的,但它是特性数据的后期样本。例如,如果需要将可移动物体的位置数据延迟一秒,则在一秒延迟后提供位置数据。也就是说,在该实施例中,工作负荷平衡使得可移动物体提供特性数据的后期样本。

可选地,在附图标记1708处,接收指示如下信息的指示:被提供给附属装置的特性数据是否满足附属装置的定时要求。在附图标记1710处,基于该指示,调整该时间段以用于向附属装置的后续发送。

通过工作负荷平衡,可移动物体的数据分发可以避免造成可移动物体和/或附属装置处的拥塞,并且使可移动物体的数据分发可扩展,特别是当多个附属装置订阅可移动物体的各种特性数据时。

图18是示出了根据本发明各个实施例的附属装置处的用于可移动物体的数据分发的操作的流程图。方法1800可以在附属装置(比如,附属装置502)中实现。

在附图标记1802处,经由通信适配器从附属装置的请求程序向可移动物体发送对可移动物体的特性数据的请求。对特性数据的请求包括指示附属装置是否具有访问特性数据的权限的信息。在一个实施例中,通信适配器用于对来自请求程序的请求进行转换以被可移动物体接受。转换包括将请求打包为托管应用的附属装置可以向可移动物体发送消息的格式。

在附图标记1804处,响应于对特性数据的请求,经由通信适配器从可移动物体接收特性数据。然后,在附图标记1806处,经由通信适配器向附属装置的请求程序提供特性数据。通信适配器用于将特性数据转换成请求程序中的消息(例如,应用中的消息)。

可选地,在附图标记1808处,附属装置(例如,请求程序)确定从可移动物体接收到的特性数据是否满足附属装置的定时要求。然后,在附图标记1810处,经由通信适配器从附属装置向可移动物体发送所述确定的指示。

通过本发明的各个实施例的实施例,可移动物体可以基于数据分发间隔一次性地或周期性地将其特性数据高效地分发给一个或多个附属装置。数据分发间隔可以由附属装置或可移动物体更新。数据分发工作负荷可以通过工作负荷平衡来调整。所提供的数据分发灵活性使可移动物体环境对附属装置更友好,并且使可移动物体环境面向新的使用领域。

在典型的可移动物体环境中,可移动物体环境的操作员(例如,可移动物体的供应商)向附属装置提供通信参数集合,以建立与可移动物体的连接。由可移动物体提供的通信参数集合通常使用默认值并且目标为尽可能地适应多种不同类型的附属装置,因此默认值通常是各种类型的附属装置之中所支持的“最低共性”,并且默认值不利用特定附属装置和/或特定可移动物体的通信特性。

在开放的可移动物体环境中,可移动物体与不同类型的附属装置进行通信,期望每个附属装置与可移动物体进行协商,并且找到附属装置与可移动物体之间的连接的最优通信参数。

图19是根据本发明各个实施例的用于更新可移动物体和附属装置之间的连接的处理的示意性图示。如图19所示,可移动物体环境1900包括可移动物体550、通信网络590和附属装置502,所有这些在上文中均有描述。在图19中,任务框1至7示出了根据本发明的一个实施例的执行操作的顺序。

在可选任务框1处,可移动物体550确认附属装置502具有与可移动物体550通信的权限。在一个实施例中,该确认是通过检查认证服务器(比如,认证服务器401)来进行的。例如,认证服务器401可以指示附属装置502具有访问通信模块849和/或数据分发api808的权限,通过该权限使得通信模块849与图8中的可移动物体建立连接,因此通信模块849具有与可移动物体550通信的权限。在一个实施例中,该确认是用于确认附属装置502具有如下权限:通过允许由与提供可移动物体550的供应商不同的供应商提供的应用与可移动物体550交互的api,根据在附属装置502上执行的应用与可移动物体550进行通信。

在确认之后,可移动物体550允许附属装置502建立可移动物体550和附属装置502之间的连接。可移动物体550或者附属装置502可以发起或者完成连接的建立。本发明的实施例涵盖了通过其建立连接的不同协议/过程。

连接使用通信参数集合,该集合的值被设置为默认值。在一个实施例中,所述连接是通过允许由与提供可移动物体550的供应商不同的供应商提供的应用与可移动物体550交互的api、根据在附属装置502上执行的应用而建立的。在一个实施例中,可移动物体550从来自应用的协议下的请求中提取用于与可移动物体550连接的连接命令,并且基于该命令建立连接。在一个实施例中,api是上文讨论的独立于协议的api,其中api适用于接受根据与第一协议不同的第二协议而提取的、用于与可移动物体连接的一个或多个命令,该命令用于针对不同附属装置的连接建立。

在一个实施例中,通信参数集合包括连接的带宽、分组应答超时时段、分组重传间隔、以及分组缓冲区的大小。图22是根据本发明各个实施例的通信参数集合的示例性图示。可移动物体和附属装置中的每一个具有通信参数集合,该通信参数集合对于不同的可移动物体和附属装置来说可以不同。在该示例中,通信参数2202具有值的范围2204和默认值2206。例如,附图标记2210处的以千字节/秒为单位的连接带宽在5kb/s至20kb/s的范围内,并且默认值是5kb/s,附图标记2212处的以字节为单位的分组缓冲区大小在5个字节至100个字节的范围内,并且默认值为5个字节,附图标记的2214处的以毫秒为单位的分组应答超时时段在100毫秒至500毫秒的范围内,并且默认值为500毫秒,并且发送重试限制在3次至6次的范围内,并且默认值是3次。

对于不同的连接(例如,可移动物体与机载电子装置之间的有线连接以及可移动物体与可穿戴电子装置、手持式电子装置或另一可移动物体之间的无线连接),通信参数集合可以是不同的。通信参数集合的默认值可以由可移动物体环境的操作员(例如,可移动物体供应商)确定,并且使用默认值的目标是针对各种类型的附属装置而具有可用的通信参数集合,使得更多附属装置可以与可移动物体进行通信。因此,默认值是“安全”值,如图22所示,默认值是用于速度较慢、能力较弱的连接和/或消耗较少的处理能力的情况(例如,默认带宽在最低端5kb/s,并且超时时段在最高端500毫秒)。可允许附属装置进行连接的广泛范围通常伴随有次优连接成本,并且通信参数集合的默认值通常不是用于在特定附属装置和特定可移动物体之间提供最优连接的那些参数。

返回参考图19,在任务框2处,可移动物体550提供针对通信参数集合的信息,该通信参数集合适用于由不同的附属装置使用以与可移动物体通信。在一个实施例中,信息包括由可移动物体550支持的通信参数集合的值(或值的加密版本),例如值的范围和/或默认值。在一个实施例中,信息可以包括产品信息,附属装置可以使用该产品信息来确定由可移动物体550支持的通信参数组集合的值。例如,信息可以是可移动物体550的序列号、型号或组织唯一标识符(oui),附属装置可以根据该信息来推导由可移动物体550支持的通信参数集合的值,同样地,附属装置也可以从其它源找到所支持的值。

在任务框3处,附属装置502基于由可移动物体提供的通信参数集合的值以及由附属装置提供的通信参数集合的值,来获得针对通信参数集合中的至少一个参数的修改值。然后,在任务框4处,可移动物体550从附属装置502获得针对通信参数集合中的至少一个参数的修改值。在一个实施例中,将修改值与针对通信参数集合中的至少一个参数的对应默认值相比较,修改值指示更大的连接带宽、更短的分组应答超时时段、更短的分组重发间隔、以及更大的分组缓冲区的大小中的至少一个。

在任务框5处,可移动物体550基于针对通信参数集合中的至少一个参数的修改值,配置在可移动物体和附属装置之间建立的连接。

可选地,在任务框6处,可移动物体550通过该连接向附属装置502报告可移动物体的状态。在任务框7处,当状态指示异常时,附属装置502使可移动物体550进入安全模式。在一个实施例中,附属装置502基于状态向可移动物体发出用于使可移动物体550进入安全模式的请求。

要注意的是,任务框3处的修改值可以是仅适用于附属装置502和可移动物体550之间的当前连接的临时修改。当连接终止时,对于在附属装置502和可移动物体550之间建立的下一连接,可以初始地使用通信参数集合的默认值,并且可以重复任务框1至5中的操作以获得针对下一连接的相同或不同的修改值。

在备选实施例中,任务框3处的修改值是适用于附属装置502和可移动物体550之间的所有后续连接的永久修改(除非/直到附属装置502或可移动物体550使修改值改变)。在这种情况下,将使用修改值建立后续连接,并且可以通过任务框1至5中的操作再次(如所说明的,暂时或永久地)更新修改值。

根据异常的严重程度,安全模式可以具有若干级别。例如,当可移动物体550是无人飞行器时,安全模式可以是返航(rth)。当异常情况严重,并且附属装置502基于可移动物体550和附属装置502之间的通信链路的高误码率(ber)确定附属装置502已经与可移动物体550失联了一段时间(如由可移动物体报告的)时,附属装置502可以使可移动物体进入智能rth模式,或者可移动物体可以基于失联一段时间而使其自己进入智能rth模式,在该模式下,可移动物体自动返回到无人飞行器发起飞行的最后记录的归航点。当异常不太严重,并且状态指示可移动物体550的电池电量变低时,附属装置502可以使可移动物体进入低电池rth,在该模式下,在附属装置502的引导下,附属装置502可以采取动作以使可移动物体550省电或在一段时间(例如,10秒)内完成当前的任务,之后可移动物体550将自动返回到最后记录的归航点。

要注意的是,当在附属装置502处接收到可移动物体550的状态时,除了附属装置502使可移动物体进入安全模式之外或者作为附属装置502使可移动物体进入安全模式的备选,附属装置502可以向另一电子装置发送可移动物体550的状态。例如,可以向管理系统(例如,可移动物体550的遥控器中所包括的管理系统)发送可移动物体的状态(异常或正常),管理系统基于该状态来控制可移动物体550。

如图19所示,附属装置502获得针对通信参数集合中的至少一个参数的修改值,然后向可移动物体550发送该修改值以配置连接。这种方法仅是获得修改值的一个实施例。根据本发明的各个实施例,修改值的协商和配置连接可以以各种方式执行。

图20a是根据本发明一个实施例的可移动物体与附属装置之间的通信参数协商以及配置连接的示例性图示。

在附图标记2002处,附属装置502接收针对通信参数集合的信息,通信参数集合适于由不同的附属装置使用以与可移动物体550通信。

在附图标记2004处,附属装置502将所接收到的针对通信参数集合的信息与由附属装置502提供的通信参数集合的对应值进行比较。

在附图标记2006处,附属装置502确定针对通信参数集合中的至少一个参数的修改值。附属装置502可以支持针对通信参数集合中的每一个参数的值的范围(包括默认值),类似于关于图22所讨论的。对于一些参数来说,值的范围可以是相同的,并且对于其它参数来说,值的范围可以是不同的。附属装置502根据针对由可移动物体550和附属装置502提供的通信参数集合的值的范围来确定修改值。修改值可以是由可移动物体550和附属装置502都支持的并且相比于默认值提供更好连接的值(例如,更大的连接带宽、更短的分组应答超时时段、更短的分组重传间隔、以及更大的分组缓冲区大小)。

要注意的是,可选地,在附属装置502确定修改值之前,附属装置502和可移动物体550可以执行一轮或多轮协商。例如,在从可移动物体550接收到针对通信参数集合的信息之后,附属装置502可以确定:对于一个通信参数,由可移动物体支持的值范围内的若干值(具体采样点,例如以字节为单位的分组缓冲区大小为16、32和64)或较窄值范围(例如,分组缓冲区大小范围为16至64)是优选的。附属装置可以向支持更宽值范围(例如,分组缓冲区大小范围为5至100)的可移动物体550发送该若干值或该较窄值范围。可移动物体550可以检查现在变窄的选择,并且为该参数确定一个值、几个值或甚至更窄的值范围,并且将确定出来的项发送回附属装置502。附属装置502可以开始附图标记2006中的操作,并且确定修改值。或者,附属装置502可以发起与可移动物体550的另一轮协商。参数值协商(比如,协商2005)使修改值对于附属装置502和可移动物体550两者来说更有可能是最优的。

在一个实施例中,修改值可能不适用于其信息由可移动物体提供的通信参数。例如,由可移动物体550提供的信息包括其分组缓冲区的大小(例如,所支持的其分组缓冲区大小的范围)。附属装置502可以确定分组缓冲区的大小足够大,足以支持用于连接的更短的分组应答超时时段(分组缓冲区越大,可以缓存越多的分组用于重发,因此应答超时时段可以更短导致更快的重发),因此所提供的分组缓冲区的大小在更短的分组应答超时时段中产生修改值。

然后,在附图标记2008处,向可移动物体550发送修改值。在附图标记2009处,可移动物体550配置可移动物体550和附属装置502之间的连接。在一个实施例中,基于修改值来配置可移动物体550和另一附属装置之间的另一连接。为了配置可移动物体550与另一附属装置之间的另一连接,可移动物体550可以确定附属装置502与该另一附属装置的类型相同,因此另一附属装置也支持该修改值。以这种方式,可以使用在附属装置502和可移动物体550之间协商的值来配置可移动物体550与另一附属装置之间的另一连接。

在一个实施例中,所配置的连接不使用该修改值,而是使用不同的值。例如,连接的配置还基于可移动物体550的操作状态。可移动物体的操作状态包括:可移动物体的当前工作负荷(例如,中央处理单元(cpu)使用率、和/或可用数据存储空间)、电池使用率/耗电量、通信链路(上行链路/下行链路)延迟、高优先级任务等。例如,可移动物体550可以确定其工作负荷很重,并且当从附属装置502接收到的针对连接带宽的修改值是20kb/s时,可移动物体550确定将连接配置为使用15kb/s的较低连接带宽,15kb/s仍然高于默认的5kb/s,但更适用于可移动物体550的操作。

图20b是根据本发明一个实施例的可移动物体与附属装置之间的通信参数协商以及配置连接的另一示例性图示。

可选附图标记2002中的操作与图20a中所示附图标记2002中的操作相同,在该操作中,附属装置502接收针对通信参数集合(被称为第一集合)的信息,该通信参数集合适于由不同的附属装置使用来与可移动物体550通信。然而,在图20b中,附属装置502提供针对第二通信参数集合的信息,该第二集合适于由可移动物体550使用来与附属装置502通信。第一通信参数集合和第二通信参数集合可以相同或不同。在一个实施例中,附属装置502基于由附属装置502接收到的第一通信参数集合来确定要被提供信息的第二通信参数集合。例如,当第一通信参数集合包括分组应答超时时段时,附属装置502将发送针对由附属装置502提供的分组应答超时时段和分组缓存区大小这两者的信息,因为这两个参数相关(例如,短分组应答超时时段需要大的分组缓冲区大小)。相反,第二通信参数集合可以比第一通信参数集合包含更少的通信参数(例如,因为附属装置502确定可移动物体550已经具有该信息)。

在一个实施例中,在可移动物体550不首先提供针对通信参数集合的信息的情况下,附属装置2012向可移动物体550提供针对通信参数集合的信息。

在附图标记2014处,可移动物体550将从附属装置502接收到的针对通信参数集合的信息与由可移动物体550提供的针对通信参数集合的对应值进行比较。在附图标记2016处,可移动物体550确定针对通信参数集合中的至少一个参数的修改值。附图标记2014、2015和2016中的操作分别类似于附图标记2004、2005和2006中的操作,除了前者是由可移动物体550执行的并且后者是由附属装置502执行的之外。然后,在附图标记2018处,向附属装置502发送修改值。

在附图标记2019处,附属装置502基于修改值来配置可移动物体550和附属装置502之间的连接。应注意,与图20a相比,附属装置502(而不是可移动物体550)配置连接。换句话说,附属装置和可移动物体都可以基于修改值来配置连接。在一个实施例中,与可移动物体550类似,附属装置502不使用修改值而是使用不同的值来配置连接。相反,连接的配置还基于附属装置502的操作状态。可移动物体的操作状态包括:可移动物体的当前工作负荷(例如,中央处理单元(cpu)使用率、可用数据存储空间)、通信链路(上行链路/下行链路)延迟、耗电量、高优先级任务等。

应该注意的是,尽管针对通信参数协商讨论了一个修改值,但可以通过相同的处理协商多个修改值。例如,附图标记2006和2016中的操作可以确定针对多个通信参数的多个修改值。

当可移动物体和附属装置之间的通信参数协商完成时,下一步就是基于一个或多个修改值来配置可移动物体和附属装置之间的连接,并且使用该连接来发送可移动物体的状态。

图21是根据本发明一个实施例的配置和使用可移动物体和附属装置之间的连接的示例性图示。连接的配置是在获得针对通信参数的一个或多个修改值之后发生的。

可选地,在附图标记2102处,可移动物体550或附属装置502终止连接,该连接的通信参数使用默认值。然后,在终止之后,在附图标记2104处,可移动物体550或附属装置502使用一个或多个修改值利用通信参数来重新建立连接。在一个实施例中,除了一个或多个修改值之外,通信参数集合中的其余参数使用默认值。应该注意的是,在备选实施例中,连接的配置不涉及终止和重新建立连接,相反,配置将更新连接的一个或多个通信参数。

然后,在附图标记2106处,可移动物体550向附属装置502报告可移动物体的状态(例如,如上所述的高ber和/或低电池电量)。在收到可移动物体的状态时,在附图标记2017处,附属装置502可以向另一电子装置报告可移动物体状态。例如,可以向手持式电子装置或可穿戴电子装置(比如,可移动物体550的遥控器)报告可移动物体状态,并且另一电子装置可以检查可移动物体状态,并且基于该状态来确定合适的响应。附加地或备选地,在附图标记2108处,附属装置502本身可以确定对可移动物体状态的响应。然后,在附图标记2110处,附属装置基于该确定向可移动物体550发出请求。当可移动物体550接收到请求时,在附图标记2112处,可移动物体550对来自附属装置502的请求进行响应(例如,进入安全模式)。

图23是示出了根据本发明各个实施例的可移动物体环境中的可移动物体用于自动更新到可移动物体的连接的操作的流程图。方法2300可以由可移动物体的可移动物体控制器(例如,图6至图8中的可移动物体控制器621或821)执行。

可选地,在附图标记2302处,确认附属装置具有这样的权限:通过允许由与提供可移动物体的供应商不同的供应商提供的应用与可移动物体交互的应用编程接口(api),根据在附属装置上执行的应用与可移动物体进行通信。在一个实施例中,该确认包括检查附属装置的注册。在一个实施例中,通过可移动物体的认证服务器来检查附属装置的注册。

在附图标记2304处,提供针对适于由不同的附属装置使用来与可移动物体通信的通信参数集合的信息。在附图标记2306处,获得针对通信参数集合中的至少一个参数的修改值。然后,在附图标记2308处,基于针对通信参数集合中的至少一个参数的修改值,配置可移动物体和附属装置之间建立的连接。

可选地,在附图标记2310处,通过该连接向附属装置报告可移动物体的状态。在一个实施例中,状态指示异常,并且在附图标记2312处,可移动物体基于该状态响应于由附属装置发出的请求而进入安全模式。

图24是示出了根据本发明各个实施例的可移动物体环境中的附属装置用于自动更新到可移动物体的连接的操作的流程图。方法2400可以由附属装置的应用来执行。

在附图标记2402处,在可移动物体和附属装置之间建立连接,其中连接使用通信参数的集合,该通信参数集合的值被设置为默认值。在一个实施例中,所述连接是通过允许由与提供可移动物体的供应商不同的供应商提供的应用与可移动物体交互的api、根据在附属装置上执行的应用而建立的。

在附图标记2404处,基于由可移动物体提供的通信参数集合的值以及由附属装置提供的通信参数集合的值,获得针对通信参数集合中的至少一个参数的修改值。

在附图标记2406处,基于针对通信参数集合中的至少一个参数的修改值来配置连接。在一个实施例中,附加地基于附属装置的操作状态来配置连接,并且使用与针对通信参数集合中的至少一个参数的修改值不同的值来配置连接。

通过本发明各个实施例的实施例,可移动物体和附属装置可以自动更新可移动物体和附属装置之间建立的连接。对用于连接的通信参数集合的协商允许基于由可移动物体和附属装置提供的通信参数来优化连接,并且可移动物体可以向附属装置报告可移动物体的状态,附属装置可以相应地控制可移动物体。

图25是根据本发明各个实施例的可移动物体的示例性图示。可移动物体2500是包括许多不同部件的电子装置。这些部件可以被实现为集成电路(ic)、其一部分、分立电子装置或适于电路板(比如,计算系统的主板或附加卡)的其它模块,或者被实现为以其它方式并入到计算系统的机箱内的部件。还要注意,可移动物体2500旨在示出计算系统的许多部件的高层次视图。然而,应该理解的是,在某些实现中,可能存在附加的部件,并且此外,在其它实现中,可能出现所示部件的不同布置。

在一个实施例中,可移动物体2500包括经由总线或互连2510互连的一个或多个微处理器2501、推进单元2502、非暂时性机器可读存储介质2503、以及可选装置2504至2508。一个或多个微处理器2501表示一个或多个通用微处理器,例如中央处理单元(cpu)或处理装置。更具体地,微处理器2501可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实现其它指令集的微处理器或实现指令集的组合的微处理器。微处理器2501也可以是一个或多个专用处理器,比如专用集成电路(asic)、蜂窝或基带处理器、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器或能够处理指令的任何其它类型的逻辑。

一个或多个微处理器2501可以与非暂时性机器可读存储介质2503(也称为计算机可读存储介质)通信,非暂时性机器可读存储介质2503比如为磁盘、光盘、只读存储器(rom)、闪存装置和相变存储器。非暂时性机器可读存储介质2503可以存储包括由一个或多个微处理器2501或任何其它装置单元执行的指令序列(比如,计算机程序)在内的信息。例如,各种操作系统、装置驱动器、固件(例如,输入输出基本系统或bios)和/或应用的可执行代码和/或数据可以被加载到一个或多个微处理器2601中,并且由一个或多个微处理器2601执行。

非暂时性机器可读存储介质2503可以存储认证单元2523、可移动物体控制器2522和可移动物体数据库2525,它们中的每一个包含用于执行如上关于对应的认证单元(例如,认证单元423或623)、可移动物体控制器(例如,可移动物体控制器621或821)和可移动物体数据库(例如,可移动物体数据库625)而讨论的操作的指令和/或信息。根据本发明的各个实施例,可移动物体控制器2522连同认证单元2523和可移动物体数据库2525可以进行操作,以执行上文在方法900、1000、1300、1600、1700和2300中所讨论的操作。根据本发明的各个实施例,非暂时性机器可读存储介质2503还可以存储计算机程序代码,计算机程序代码可由一个或多个微处理器2501执行,用于执行在上文在方法900、1000、1300、1600、1700和2300中所讨论的操作。

推进单元2502可以包括用于生成用于维持可移动物体2500的受控移动的力的一个或多个装置或系统。推进单元2502可以共享或可以分别包括或可操作地连接到动力源,比如,电机(例如,电动机、液压电机、气动电机等)、引擎(例如,内燃机、涡轮引擎等)、电池组等、或其组合。推进单元2502还可以包括连接到动力源、并且被配置为参与生成用于维持受控飞行的力的一个或多个旋转部件。例如,旋转部件可以包括在如下项之上被驱动或者由如下项驱动的旋翼、螺旋桨、桨叶、喷嘴等:轴、轮轴、轮子、液压系统、气动系统、或被配置成传输来自动力源的动力的其它部件或系统。推进单元2502和/或旋转部件可以是相对于彼此和/或相对于可移动物体2500可调整的。推进单元2502可以被配置为沿一个或多个竖直方向和水平方向推进可移动物体2500,并且允许可移动物体2500围绕一个或多个轴线旋转。也就是说,推进单元2502可以被配置为提供升力和/或推力,以产生和保持可移动物体2500的平移和旋转移动。

可选地,如所示,可移动物体2500还可以包括显示控制和/或显示装置单元2504、无线收发器2505、视频i/o装置单元2506、音频i/o装置单元2507、以及其它i/o装置单元2508。无线收发器2505可以是wifi收发器、红外收发器、蓝牙收发器、wimax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(gps)收发器)、或其它射频(rf)收发器、或其组合。

视频i/o装置单元2506可以包括成像处理子系统(例如,相机),成像处理子系统可以包括用于有助于相机功能(比如,记录照片和视频剪辑以及召开会议)的光学传感器,比如电荷耦合器件(ccd)或互补金属氧化物半导体(cmos)光学传感器。在一个实施例中,视频i/o装置单元2506可以是4k相机/摄像机。

音频i/o装置单元2507可以包括扬声器和/或麦克风,以有助于语音使能功能,比如语音识别、语音复制、数字记录和/或电话功能。其它可选装置2508可以包括存储装置(例如,硬盘驱动器、闪存装置)、通用串行总线(usb)端口、并行端口、串行端口、打印机、网络接口、总线桥接器(例如,pct-pct桥接器)、传感器(例如,运动传感器,比如加速度计、陀螺仪、磁力计、光传感器、指南针、近距离传感器等)、或者它们的组合。可选的装置单元2508还可以包括经由传感器枢纽(未示出)耦合到互连2510的某些传感器,而根据可移动物体2500的具体配置或设计,诸如热传感器、高度传感器、加速度计和环境光传感器之类的其它装置可以由嵌入式控制器(未示出)控制。

图26是根据本发明各个实施例的附属装置的示例性图示。如图26所示,附属装置2600与可移动物体2500类似,并且在此讨论两者之间的差异。推进单元2602是附属装置2600中的可选模块,这可以在附属装置2600是另一可移动物体时实现。

非暂时性机器可读存储介质2603可以存储通信适配器2622和应用2612,通信适配器2622和应用2612中的每一个均包含用于执行上文关于对应的通信适配器(例如,通信适配器532、732至734、或832至836)和应用(例如,应用112、204、304、314、404、或512至516)而讨论的操作的指令和/或信息。根据本发明的各个实施例,通信适配器2622和应用2612可以进行操作以执行上文在方法1800和2400中讨论的操作。根据本发明的各个实施例,非暂时性机器可读存储介质2603还可以存储计算机程序代码,计算机程序代码可由一个或多个微处理器2601执行,用于执行在上文在方法1800和2400中所讨论的操作。

尽管上面已经描述了本发明的各个实施例,但是应当理解,它们仅仅是作为示例而不是限制来呈现的。对于相关领域的技术人员显而易见的是,在不脱离本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。

以上已经在功能构建块的辅助下描述了本发明,这些功能构建块示出了指定功能的执行以及执行功能的关系。为便于描述,本文通常任意定义这些功能构建块的边界。只要所指定的功能及其关系被适当地执行,就可以定义替代的边界。因此,任何这样的备选的边界都在本发明的范围和精神内。

已经提供了本发明的上述说明,用于说明和描述的目的。这并不旨在穷举或将本发明限制于所公开的确切形式。本发明的宽度和范围不应当受到上述示例性实施例中任意一个的限制。许多修改和变化对于本领域技术人员将是显而易见的。这些修改和变化包括所公开的特征的任何相关组合。对实施例的选择和描述是为了最好地解释本发明的原理及其实际应用,从而使得本领域的其他技术人员能够理解本发明的各个实施例以及适用于预期特定用途的各种修改。旨在使得本发明的范围由以下权利要求及其等同物限定。

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