首页 / 专利库 / 专利权 / 第I章 / 国际申请 / 修改 / 一种在Android内核层实现GNSS/INS组合导航的方法

一种在Android内核层实现GNSS/INS组合导航的方法

阅读:781发布:2022-05-20

专利汇可以提供一种在Android内核层实现GNSS/INS组合导航的方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种在Android 内核 层实现GNSS/INS组合导航的方法,基于Android 操作系统 公开架构,通过 修改 标准Android系统的GPS HAL内核及Sensor HAL内核,以及增加一个跨 硬件 HAL的 传感器 数据 访问 代理模 块 ,实现Android底层的组合导航 算法 。在标准Android系统中增加组合导航 定位 模式,并从Java本地调用层开始扩充和修改了一批相关功能的 接口 函数。因此,本发明具有如下优点:1、Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高 精度 组合导航定位结果;2、现有Android第三方应用程序无需进行修改,即可直接获得高精度组合导航定位结果。,下面是一种在Android内核层实现GNSS/INS组合导航的方法专利的具体信息内容。

1.一种在Android内核层实现GNSS/INS组合导航的方法,其特征在于,包括:
一个增加跨硬件HAL的传感器数据访问代理模的步骤:基于Android操作系统公开架构,通过修改标准Android系统的GPS HAL内核及Sensor HAL内核,实现Android底层的组合导航算法,并扩展了Android系统的GPS接口,包括:
一个增加接口函数的步骤:配合传感器数据访问代理模块工作,增加的接口函数是在标准Android系统中从Java本地调用层开始扩充和修改,以实现数据在HAL内核、Linux内核驱动以及传感器数据访问代理模块之间的交互;其中,接口函数具体包括:
接 口 函 数 一:在hardware/libhardware/include/hardware/gps.h中,添 加 一组IMUGpsInterface接口函数,由标准Andorid内核中GpsInterface接口的get_extension()函数引出,用以满足组合导航定位中的相关设置(如传感器的类型、传感器的采样率等)需求;在标准Andorid内核中GpsInterface接口的set_position_mode()中,扩展了GPS_POSITION_MODE_IMU;
接口函数二:在GPS应用框架层的JNI中也相应扩展相关接口函数,在:
frameworks/base/services/jni/com_android_server_location_
GpsLocationProvider.cpp 中,添 加 对 应 于 IMUGpsInterface接 口 的 函 数 供GpsLocationProvider调用,
在:
frameworks/base/services/java/com/android/server/location/
GpsLocationProvider.java中,添加native函数来调用JNI中的IMUGpsInterface接口函数,在GpsLocationProvider添加与GPS HAL层相对应的定位模式GPS_POSITION_MODE_IMU,根据系统设置中的设置将用户选择的定位模式传递到HAL层。
2.根据权利要求1所述的一种在Android内核层实现GNSS/INS组合导航的方法,其特征在于,重新实现标准Android的Sensor HAL内核中的相关接口和数据访问函数,使其通过新设置的传感器数据代理(Sensor Data Agent, SDA)与惯性传感器硬件进行交互;扩展标准Android的GPS HAL内核,使其也能够通过SDA与惯性传感器硬件进行交互;通过SDA,可以将GNSS硬件数据与Sensor硬件数据引导到任意一个HAL内核中,从而实现组合导航算法;具体包括对标准Android的Sensor HAL和GPS HAL进行修改的过程:
过程一:对标准Android的Sensor HAL进行修改,将标准Android中各种惯性传感器统一为的SensorBase模块定义为IMUProxySensor,由SensorBase派生;从面向应用程序的SensorService基本服务到传感器硬件驱动的调用逻辑如下:
调用1:Sensor应用框架层的SensorService从Sensor HAL驱动文件加载获取sensor_poll_device_t后,会初始化IMUProxySensor;在初始化IMUProxySensor时,通过socket连接到SDA模块上;
调用2:SensorService通过sensor_moudle_t提供的getSensorList函数来获取Sensor HAL驱动支持的传感器列表;IMUProxySensor向SDA模块发送SDA_GET_SENSOR_LIST消息,SDA模块调用内部数据读取模块的getSensorList()接口获取IMUSensor支持的传感器列表并通过SDA_SENSOR_LIST消息返回给IMUProxySensor;
调用3:当应用程序向SensorService请求惯性传感器数据的时候,SensorService通过调用IMUProxySensor的setDelay()和enable()接口设置需要打开传感器及对应的采样率;IMUProxySensor发送SDA_SENSOR_LIST以及SDA_ACTIVE消息给SDA模块,SDA模块调用数据读取模块中IMUSensor的相应接口将参数设置到惯性传感器硬件模块中;
调用4:SDA模块通过数据读取模块读取到IMU数据之后发送SDA_MESSAGE消息给IMUProxySensor,IMUProxySensor将收到的消息中的IMU数据上传给SensorService,SensorService将结果提供给应用程序;
过程二:对标准Android的GPS HAL实现方法所做的修改,GPS HAL层的IMU模块访问子层与SDA模块的交互符合下述调用逻辑:
调用1:在标准Andorid的GPS HAL中新增加一个“IMU模块访问子层”,其作用是与SDA通信获得惯性传感器的数据;与之对应的,是标准Andorid的GPS HAL内核通常设置有的“GNSS模块访问子层”,用以获得GNSS硬件数据;
调用2:根据标准Andorid的GPS HAL的通常实现方法,在初始化GPS HAL时候会调用其基本接口GpsInterface::init()(对应本专利的实现称为iwise_loc_int()),本专利在该接口函数的实现中增加对“IMU模块访问子层”的初始化,并使其通过socket连接到SDA模块;
调用3:在初始化GPS HAL时,GpsLocationProvider从系统设置中获取定位模式、打开的传感器、传感器的采样率及扩展数据,通过调用set_position_mode接口和本专利添加的IMUGpsInterface中的一组接口将设置信息保存到组合导航定位实现子层的共享数据iwise_data_t(见本专利权利要求点4中表18)中;
调用4:当上层应用请求GPS导航定位的时候,GPS应用框架层会调用标准Andorid的GPS HAL的GpsInterface::start()(对应本专利的实现称为iwise_loc_start_fix())接口;如果此时的定位模式为GPS_POSITION_MODE_IMU,IMU模块访问子层从共享数据iwise_data_t中获取需要打开的传感器及传感器的采样率,通过SDA_ACTIVE和SDA_SET_DELAY消息发送给SDA模块;SDA模块内部的数据读取模块读取到IMU数据之后会发送SDA_MESSAGE消息给IMU模块访问子层,并继而返回给组合导航定位实现子层进行组合导航定位解算;
调用5:当应用程序停止GPS导航定位的时候,GPS应用框架层会会调用标准Andorid的GPS HAL的GpsInterface::stop()(对应本专利的实现称为iwise_loc_stop_fix())接口,IMU模块访问子层发送SDA_STOP消息给SDA模块以停止IMU数据请求。
3.根据权利要求1所述的一种在Android内核层实现GNSS/INS组合导航的方法,其特征在于,所述传感器数据访问代理模块在Android系统system_server加载时启动;数据读取及缓存线程data_thread通过传感器数据访问代理模块中的IMUsensor访问接口以FIFO方式从传感器硬件驱动上获得传感器数据并缓存; 传感器数据访问代理模块通过通信服务端线程,与标准Android系统的各个HAL内核进行交互;当需要传感器数据的HAL内核向传感器数据访问代理模块发起连接成功后,传感器数据访问代理模块负责向其推送传感器数据;所述传感器数据访问代理模块包括:
一SDA通信模块:与IMUProxySensor和IMU模块访问子层进行数据交互,由server_thread和消息处理模块组成;
一SDA控制信息模块:保存着客户端列表以及由客户端设置的需要打开的传感器及传感器的采样率信息
一数据缓存:用来保存最近读取的IMU数据,由数据读取模块的data_thread写入数据,由server_thread取出后发送给客户端
一数据读取模块:该数据读取模块的data_thread调用内部的IMUSensor的接口来获取IMU数据,然后将数据写入sda_context_t的数据缓存中;数据读取模块中的IMUSensor与惯性传感器硬件驱动交互,提供设置惯性传感器参数和读取IMU数据的接口;
一IMUSensor:设置在数据读取模块中,与惯性传感器硬件驱动交互,提供设置惯性传感器参数和读取IMU数据的接口。
4.根据权利要求1所述的一种在Android内核层实现GNSS/INS组合导航的方法,其特征在于,还包括扩展数据的接入:在Andorid的GPS HAL中增加一个组合导航定位实现子层,实现基于GNSS数据与Sensor数据的组合导航软解算,并用软解算得到的位置坐标结果上报给Andorid上层;并通过在Android的Java层增加新的API函数,获得组合导航算法得到的更为准确的车载姿态信息,包括航向俯仰角、横滚角。

说明书全文

一种在Android内核层实现GNSS/INS组合导航的方法

技术领域

[0001] 本发明涉及卫星定位导航领域,尤其涉及在车联网、车载Android系统中使用GNSS/INS组合导航定位技术的方法。

背景技术

[0002] 智能操作系统与车辆结合是发展趋势。苹果公司推出了Carplay,Google公司推出了Android Auto等都是典型代表。这中趋势代表着智能车联网的发展趋势。作为车载
操作系统,应该满足两个方面的需求:①向下支持车辆或车载电子的各种专用硬件;②向
上能够支持第三方开发者,很容易地去调用各类车载导航、车辆主动安全等算法
[0003] 高精度卫星导航定位是利用地面增强系统,提高卫星定位的精度。目前普通卫星导航的定位精度只能在10-20米,通过高精度定位算法可以将定位精度提高到亚米级,从
而可以掌握车辆变道、超速等行为,实现车辆主动安全控制,是车联网亟需的技术;惯性导
航技术是一种不依赖于外部信息、也不向外部辐射能量的自主式导航系统。其通过测量载
体在惯性参考系的加速度,将它对时间进行积分,且把它变换到导航坐标系中,就能够得到
在导航坐标系中的速度、偏航位置等信息。二者结合,即成为高精度组合导航,是车辆
领域非常重要的算法。目前这一算法还没有和车载操作系统结合,因此广大第三方开发者
很难使用。
[0004] 目前实施组合导航的难度较大,一般第三方App开发者难以使用。因此本发明的目的即:(1)Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高精度
组合导航定位结果;(2)现有Android第三方应用程序无需进行修改,即可直接获得高精度
组合导航定位结果;(3)调用本方法在Java框架层新增加的API,在Java应用层获得更为
准确的车载姿态信息(航向角、俯仰角、横滚角等)。这些信息是车辆App应用开发者很需
要的。

发明内容

[0005] 本发明的上述技术问题主要是通过下述技术方案得以解决的:
[0006] 一种在Android内核层实现GNSS/INS组合导航的方法,其特征在于,包括:
[0007] 一个增加跨硬件HAL的传感器数据访问代理模的步骤:基于Android操作系统公开架构,通过修改标准Android系统的GPS HAL内核及SensorHAL内核,实现Android底
层的组合导航算法,并扩展了Android系统的GPS接口,包括:
[0008] 一个增加接口函数的步骤:配合传感器数据访问代理模块工作,增加的接口函数是在标准Android系统中从Java本地调用层开始扩充和修改,以实现数据在HAL内核、
Linux内核驱动以及传感器数据访问代理模块之间的交互;其中,接口函数具体包括:
[0009] 接口函数一:在hardware/libhardware/include/hardware/gps.h中,添 加一组IMUGpsInterface接口函数,由标准Andorid内核中GpsInterface接口的get_
extension()函数引出,用以满足组合导航定位中的相关设置(如传感器的类型、传感器的
采样率等)需求;在标准Andorid内核中GpsInterface接口的set_position_mode()中,
扩展了GPS_POSITION_MODE_IMU。
[0010] 接口函数二:在GPS应用框架层的JNI中也相应扩展相关接口函数,
[0011] 在:
[0012] frameworks/base/services/jni/com_android_server_location_GpsLocationProvider.cpp 中,添 加 对 应 于 IMUGpsInterface接 口 的 函 数 供
GpsLocationProvider调用,
[0013] 在:
[0014] frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java中,添加native函数来调用JNI中的IMUGpsInterface接口
函数,在GpsLocationProvider添加与GPS HAL层相对应的定位模式GPS_POSITION_MODE_
IMU,根据系统设置中的设置将用户选择的定位模式传递到HAL层。
[0015] 在上述的一种在Android内核层实现GNSS/INS组合导航的方法,重新实现标准Android的Sensor HAL内核中的相关接口和数据访问函数,使其通过新设置的传感器数据
代理(Sensor Data Agent,SDA)与惯性传感器硬件进行交互;扩展标准Android的GPS HAL
内核,使其也能够通过SDA与惯性传感器硬件进行交互。通过SDA,可以将GNSS硬件数据
与Sensor硬件数据引导到任意一个HAL内核中,从而实现组合导航算法。具体包括对标准
Android的Sensor HAL和GPS HAL进行修改的过程:
[0016] 过程一:对标准Android的Sensor HAL进行修改,将标准Android中各种惯性传感器统一为的SensorBase模块定义为IMUProxySensor,由SensorBase派生;从面向应用
程序的SensorService基本服务到传感器硬件驱动的调用逻辑如下:
[0017] 调用1:Sensor应用框架层的SensorService从Sensor HAL驱动文件加载获取sensor_poll_device_t后,会初始化IMUProxySensor。在初始化IMUProxySensor时,通过
socket连接到SDA模块上;
[0018] 调用2:SensorService通过sensor_moudle_t提供的getSensorList函数来获取Sensor HAL驱动支持的传感器列表。IMUProxySensor向SDA模块发送SDA_GET_SENSOR_
LIST消息,SDA模块调用内部数据读取模块的getSensorList()接口获取IMUSensor支持
的传感器列表并通过SDA_SENSOR_LIST消息返回给IMUProxySensor;
[0019] 调用3:当应用程序向SensorService请求惯性传感器数据的时候,SensorService通过调用IMUProxySensor的setDelay()和enable()接口设置需要打开
传感器及对应的采样率。IMUProxySensor发送SDA_SENSOR_LIST以及SDA_ACTIVE消息给
SDA模块,SDA模块调用数据读取模块中IMUSensor的相应接口将参数设置到惯性传感器硬
件模块中;
[0020] 调用4:SDA模块通过数据读取模块读取到IMU数据之后发送SDA_MESSAGE消息给IMUProxySensor,IMUProxySensor将收到的消息中的IMU数据上传给SensorService,
SensorService将结果提供给应用程序。
[0021] 过程二:对标准Android的GPS HAL实现方法所做的修改,GPS HAL层的IMU模块访问子层与SDA模块的交互符合下述调用逻辑:
[0022] 调用1:在标准Andorid的GPS HAL中新增加一个“IMU模块访问子层”,其作用是与SDA通信获得惯性传感器的数据。与之对应的,是标准Andorid的GPS HAL内核通常设
置有的“GNSS模块访问子层”,用以获得GNSS硬件数据;
[0023] 调用2:根据标准Andorid的GPS HAL的通常实现方法,在初始化GPS HAL时候会调用其基本接口GpsInterface::init()(对应本发明的实现称为iwise_loc_int()),本发
明在该接口函数的实现中增加对“IMU模块访问子层”的初始化,并使其通过socket连接到
SDA模块;
[0024] 调用3:在初始化GPS HAL时,GpsLocationProvider从系统设置中获取定位模式、打开的传感器、传感器的采样率及扩展数据,通过调用set_position_mode接口和本发明
添加的IMUGpsInterface中的一组接口将设置信息保存到组合导航定位实现子层的共享
数据iwise_data_t(见本发明权利要求点4中表18)中;
[0025] 调用4:当上层应用请求GPS导航定位的时候,GPS应用框架层会调用标准Andorid的GPS HAL的GpsInterface::start()(对应本发明的实现称为iwise_loc_start_
fix())接口。如果此时的定位模式为GPS_POSITION_MODE_IMU,IMU模块访问子层从共享
数据iwise_data_t中获取需要打开的传感器及传感器的采样率,通过SDA_ACTIVE和SDA_
SET_DELAY消息发送给SDA模块。SDA模块内部的数据读取模块读取到IMU数据之后会发
送SDA_MESSAGE消息给IMU模块访问子层,并继而返回给组合导航定位实现子层进行组合
导航定位解算;
[0026] 调用5:当应用程序停止GPS导航定位的时候,GPS应用框架层会会调用标准Andorid的GPS HAL的GpsInterface::stop()(对应本发明的实现称为iwise_loc_stop_
fix())接口,IMU模块访问子层发送SDA_STOP消息给SDA模块以停止IMU数据请求。
[0027] 在上述的一种在Android内核层实现GNSS/INS组合导航的方法,所述传感器数据访问代理模块在Android系统system_server加载时启动;数据读取及缓存线程data_
thread通过传感器数据访问代理模块中的IMUsensor访问接口以FIFO方式从传感器硬
件驱动上获得传感器数据并缓存;传感器数据访问代理模块通过通信服务端线程,与标准
Android系统的各个HAL内核进行交互。当需要传感器数据的HAL内核向传感器数据访问
代理模块发起连接成功后,传感器数据访问代理模块负责向其推送传感器数据;所述传感
器数据访问代理模块包括:
[0028] 一SDA通信模块:与IMUProxySensor和IMU模块访问子层进行数据交互,由server_thread和消息处理模块组成;
[0029] 一SDA控制信息模块:保存着客户端列表以及由客户端设置的需要打开的传感器及传感器的采样率信息
[0030] 一数据缓存:用来保存最近读取的IMU数据,由数据读取模块的data_thread写入数据,由server_thread取出后发送给客户端
[0031] 一数据读取模块:该数据读取模块的data_thread调用内部的IMUSensor的接口来获取IMU数据,然后将数据写入sda_context_t的数据缓存中;数据读取模块中的
IMUSensor与惯性传感器硬件驱动交互,提供设置惯性传感器参数和读取IMU数据的接口。
[0032] 一IMUSensor:设置在数据读取模块中,与惯性传感器硬件驱动交互,提供设置惯性传感器参数和读取IMU数据的接口。
[0033] 在上述的一种在Android内核层实现GNSS/INS组合导航的方法,还包括扩展数据的接入:在Andorid的GPS HAL中增加一个组合导航定位实现子层,实现基于GNSS数据与
Sensor数据的组合导航软解算,并用软解算得到的位置坐标结果上报给Andorid上层。并
通过在Android的Java层增加新的API函数,获得组合导航算法得到的更为准确的车载姿
态信息,包括航向角、俯仰角、横滚角。
[0034] 因此,本发明具有如下优点:因此,本发明具有如下优点:1、Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高精度组合导航定位结果;2、现有
Android第三方应用程序无需进行修改,即可直接获得高精度组合导航定位结果;3、调用
本方法在Java框架层新增加的API,在Java应用层获得更为准确的车载姿态信息(航向
角、俯仰角、横滚角等)。这些信息是车辆App应用开发者很需要的。。
附图说明
[0035] 图1为本发明的总体框架图。
[0036] 图2为本发明所涉及的修改和扩展标准Android系统GPS HAL层的接口关系图。
[0037] 图3为本发明所涉及的GpsLocationProvider在应用框架层和JNI层新增的接口。
[0038] 图4为本发明所涉及的Sensor HAL与SDA交互架构。
[0039] 图5为本发明所涉及的Sensor HAL的IMUProxySensor与SDA模块交互流程。
[0040] 图6为本发明所涉及的GPS HAL中上层模块到下层的归并接口。
[0041] 图7为本发明所涉及的GPS HAL层的IMU模块访问子层与SDA模块交互流程。
[0042] 图8为本发明所涉及的传感器数据代理模块SDA的结构图。
[0043] 图9为本发明所涉及的SDA模块的初始化时序图。
[0044] 图10为本发明所涉及的GPS HAL框架图。
[0045] 图11为本发明所涉及的扩展的姿态角接口。
[0046] 图12为本发明实现架构另外体现形式1。
[0047] 图13为本发明实现架构另外体现形式2。

具体实施方式

[0048] 下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0049] 实施例:
[0050] 一、首先介绍本发明的整体构架。
[0051] 本发明所涉及的一种从Android操作系统的硬件抽象层(Hardware AbstractionLayer,HAL)开始,向上逐层实现组合导航相关功能的方法及模块。基于Android操作系统
公开架构,通过修改标准Android系统的GPS HAL内核及Sensor HAL内核,以及增加一个
跨硬件HAL的传感器数据访问代理(Sensor Data Agent,SDA)模块,实现Android底层的
组合导航算法。在标准Android系统中增加组合导航定位模式,并从Java本地调用(Java
Native Interface,JNI)层开始扩充和修改了一批相关功能的接口函数。
[0052] 如图1所示,本方法基于Android操作系统公开架构,涉及Android系统的GPS应用框架层、GPS HAL层以及Sensor HAL层。本方法发明内容涉及图1中黄色阴影区域。
[0053] (1)首先介绍图1各模块间的数据流,按标记1-标记15说明。
[0054] 标记1和标记3是标准Android的Sensor HAL的SensorBase接口传递给Linux传感器驱动的设置数据。具体数据信息如表1所示。
[0055] 表1SensorBase接口传递给Linux传感器驱动的设置数据
[0056]
[0057] 标记2和标记4为从传感器硬件驱动中读取到的传感器数据。标记2中代表IMU传感器之外的传感器数据,与本发明无关故不赘述;标记4中代表IMU传感器的数据,以本
发明实例使用的mpu6050芯片为例,一个数据包由加速度计陀螺仪数据组成,数据长度
为15个字节,其格式如表2。
[0058] 表2 本发明实例使用的mpu6050芯片的数据
[0059]偏移 数据 说明
0 ACCEL_XOUT[15:8] 加速度计X轴方向数值的高位
1 ACCEL_XOUT[7:0] 加速度计X轴方向数值的低位
2 ACCEL_YOUT[15:8] 加速度计Y轴方向数值的高位
3 ACCEL_YOUT[7:0] 加速度计Y轴方向数值的低位
[0060]4 ACCEL_ZOUT[15:8] 加速度计Z轴方向数值的高位
5 ACCEL_ZOUT[7:0] 加速度计Z轴方向数值的低位
6 GYRO_XOUT[23:16] 陀螺仪X轴方向数值的保留高位
7 GYRO_XOUT[15:8] 陀螺仪X轴方向数值的高位
8 GYRO_XOUT[7:0] 陀螺仪X轴方向数值的低位
9 GYRO_YOUT[23:16] 陀螺仪Y轴方向数值的保留高位
10 GYRO_YOUT[15:8] 陀螺仪Y轴方向数值的高位
11 GYRO_YOUT[7:0] 陀螺仪Y轴方向数值的低位
12 GYRO_ZOUT[23:16] 陀螺仪Z轴方向数值的保留高位
13 GYRO_ZOUT[15:8] 陀螺仪Z轴方向数值的高位
14 GYRO_ZOUT[7:0] 陀螺仪Z轴方向数值的低位
[0061] 标记5、标记6、标记7和标记8为Sensor HAL以及GPS HAL以C/S模式与SDA模块之间传输的数据信息。在本发明实例中采用标准Socket通信方式来实现。定义sda_
message_t作为消息帧,消息帧的组成如表3所示,消息类型见表4。本说明重点阐述将惯
性传感器数据与SDA模块连通。对于将光传感器、气压计等数据与SDA连通的原理和方法
与之一致,故不赘述。
[0062] 标记11和标记13为修改后GPS HAL内核内部的控制信息,本发明实例中控制信息通过共享内存实现。
[0063] 表3 消息帧sda_message_t
[0064]
[0065] 表4 消息帧sa_message_t的消息类型字段
[0066]
[0067]
[0068] 标记9是上层往GNSS硬件模块中注入的辅助信息。
[0069] 标记10是从GNSS定位模块中读取的数据,包括①以标准NMEA0183格式输出的定位结果数据;②若GNSS定位模块能提供原始观测信息(如伪距观测值、载波相位观测值
等),则以RTCM 2.3的标准格式输出。
[0070] 标记12是本发明组合导航定位实现子层所需要的惯性传感器数据结构imu_data_t,由IMU模块访问子层将表4中SDA_MESSAGE所指向的sensor_event_t列表转换为
imu_data_t结构。sensor_event_t是标准Android系统定义的通用传感器数据结构,在本
发明实例使用的Android4.2.2版本中其结构定义见表5,imu_data_t结构的定义见表6。
[0071] 表5sensor_event_t的结构定义
[0072]
[0073] 表6imu_data_t结构体的定义
[0074]字段 说明 类型
time 时间戳,秒(s) double
gyro_x 陀螺仪x轴方向数值,度(degree) double
gyro_y 陀螺仪y轴方向数值,度(degree) double
gyro_z 陀螺仪z轴方向数值,度(degree) double
accel_x 加速度计x轴方向,米每秒(m/s) double
accel_y 加速度计y轴方向,米每秒(m/s) double
accel_z 加速度计z轴方向,米每秒(m/s) double
[0075] 标记14是本方法组合导航定位实现子层需要的定位信息结构体gnss_data_t。GNSS模块访问子层将标记10中的定位结果信息和原始观测信息解析转换为gnss_data_t
结构体,其定义如表7所示。
[0076] 表7gnss_data_t结构体的定义
[0077]字段 说明 类型
time 时间戳,秒(s) double
latitude 纬度,度(degree) double
longitude 经度,度(degree) double
height 高,米(m) double
speed_n 速度,北向,米每秒(m/s) double
speed_e 速度,东向,米每秒(m/s) double
speed_u 速度,天向,米每秒(m/s) double
pos_stdeva_n 位置标准差,北向,米(m) double
pos_stdeva_e 位置标准差,东向,米(m) double
pos_stdeva_u 位置标准差,天向,米(m) double
speed_stdeva_n 速度标准差,北向,米每秒(m/s) double
speed_stdeva_e 速度标准差,东向,米每秒(m/s) double
speed_stdeva_u 速度标准差,天向,米每秒(m/s) double
[0078] 标记15是能为组合导航定位模块提供其它辅助数据信息的数据,本发明实例中可引入磁罗盘传感器数据、温度传感器、姿态控制信息、车辆CAN总线信息等信息,见表8所
示。
[0079] 表8 其它辅助数据信息定义
[0080]
[0081] (2)下面介绍本发明在标准Android系统基础上扩展的接口。
[0082] 如 图 2所 示,在hardware/libhardware/include/hardware/gps.h 中,添 加一组IMUGpsInterface接口函数,由标准Andorid内核中GpsInterface接口的get_
extension()函数引出,用以满足组合导航定位中的相关设置(如传感器的类型、传感器的
采样率等)需求;在标准Andorid内核中GpsInterface接口的set_position_mode()中,
扩展了GPS_POSITION_MODE_IMU。新增接口如表9所示。
[0083] 表9IMUGpsInterface新增接口函数
[0084]
[0085] 与GPS HAL相适应,本方法在GPS应用框架层的JNI中也相应扩展了相关接口 函 数。如 图3所 示,在 frameworks/base/services/jni/com_android_server_
location_GpsLocationProvider.cpp中,添加对应于IMUGpsInterface接口的函数供
GpsLocationProvider调用,如表10所示。在frameworks/base/services/java/com/
android/server/location/GpsLocationProvider.java中,添加native函数来调用JNI中
的IMUGpsInterface接口函数,如表11所示。在GpsLocationProvider添加与GPS HAL层
相对应的定位模式GPS_POSITION_MODE_IMU,根据系统设置中的设置将用户选择的定位模
式传递到HAL层。
[0086] 表10JNI的函数映射表中添加新的接口映射关系
[0087]Java中native函数名称 参数符号 c\c++函数名称
native_set_imu_gps_rate (I)V android_location_GpsLocationProvider_set_imu_gps_rate
native_set_imu_gps_sensor (J)V android_location_GpsLocationProvider_set_imu_gps_sensornative_imu_gps_inject_extern_data (I[BI)V android_location_GpsLocationProvider_imu_gps_inject_extern_data[0088] 表11GpsLocationProvider在应用框架层和JNI层新增的接口
[0089]
[0090]
[0091] 二、下面介绍本发明所涉及的SDA代理模块的具体架构。
[0092] 在标准Android操作系统的硬件HAL层下层设置用于惯性导航的SDA模块,其特征是:将相关传感器数据(包括3轴陀螺仪、3轴加速度计、气压计、磁计等)分别引导到
Android系统的GPS HAL内核和Sensor HAL内核;重新实现标准Android的Sensor HAL
内核中的相关接口和数据访问函数,使其通过SDA与惯性传感器硬件进行交互;扩展标准
Android的GPS HAL内核,使其也能够通过SDA与惯性传感器硬件进行交互。
[0093] 通过SDA,可以将GNSS硬件数据与Sensor硬件数据引导到任意一个HAL内核中,从而在该内核中实现组合导航。以下实现为在GPS HAL中进行组合导航解算的方法说明。
[0094] (1)对标准Android的Sensor HAL实现方法所做的修改。
[0095] 如图4所示,标准Android内核在sensor_poll_device_t结构中为传感器硬件定义了activate、setDelay和poll三个基本接口。标准Andorid系统定义了名为SensorBase
的结构用以抽象各种传感器硬件,并用一个SensorBase的列表来保存当前支持的各种传感
器。SensorBase的接口列表如表12所示,sensor_poll_device_t的三个基本接口会进一
步调用这些SensorBase接口。
[0096] 表12 标准Android的SensorBase的接口列表
[0097]
[0098] 在实现中,考虑到不同的硬件设备会集成数量和种类均不同的惯性传感器,因此行业通常做法是将各种惯性传感器统一抽象为一个SensorBase模块。当应用程序需访问
不同的硬件时,以handle参数来标识不同的传感器,本发明示例所基于的Android 4.2.2
版本所支持的传感器及handle所对应的值如表13所示。在本发明示例中,惯性传感器的
统一抽象模块命名为IMUProxySensor,由SensorBase派生。
[0099] 表13Android 4.2.2版本中传感器列表及handle取值
[0100]
[0101] 在增加了SDA模块后,从面向应用程序的SensorService基本服务到传感器硬件驱动的调用逻辑如如图5所示:
[0102] Sensor应用框架层的SensorService从Sensor HAL驱动文件加载获取sensor_poll_device_t后,会初始化IMUProxySensor。在初始化IMUProxySensor时,通过socket
连接到SDA模块上;
[0103] SensorService通过sensor_moudle_t提供的getSensorList函数来获取SensorHAL驱动支持的传感器列表。IMUProxySensor向SDA模块发送SDA_GET_SENSOR_LIST消息,
SDA模块调用内部数据读取模块的getSensorList()接口获取IMUSensor支持的传感器列
表并通过SDA_SENSOR_LIST消息返回给IMUProxySensor;
[0104] 当应用程序向SensorService请求惯性传感器数据的时候,SensorService通过调用IMUProxySensor的setDelay()和enable()接口设置需要打开传感器及对应的采样
率。IMUProxySensor发送SDA_SENSOR_LIST以及SDA_ACTIVE消息给SDA模块,SDA模块调
用数据读取模块中IMUSensor的相应接口将参数设置到惯性传感器硬件模块中;
[0105] SDA模块通过数据读取模块读取到IMU数据之后发送SDA_MESSAGE消息给IMUProxySensor,IMUProxySensor将收到的消息中的IMU数据上传给SensorService,
SensorService将结果提供给应用程序。
[0106] (2)对标准Android的GPS HAL实现方法所做的修改。
[0107] 如图6所示是本发明依照标准Android的GPS HAL规范编制的实现逻辑图。相应的函数说明如表14、表15。
[0108] 表14 本方法在GNSS抽象子层与组合导航定位实现子层中的接口函数
[0109]
[0110]
[0111] 表15 操作类型码与操作说明
[0112]
[0113] 表16 回调事件类型与操作说明
[0114]回调事件类型 说明
IWISE_LOC_EVENT_LOCATION_REPORT 上报定位结果(以数值形式)
IWISE_LOC_EVENT_SATELLITE_REPORT 上报卫星状态信息
IWISE_LOC_EVENT_STATUS_REPORT 上报定位状态
IWISE_LOC_EVENT_NMEA_REPORT 上报定位结果(以NMEA格式)
[0115] 如图7所示,为GPS HAL层的IMU模块访问子层与SDA模块的交互图。
[0116] 在标准Andorid的GPS HAL中新增加一个“IMU模块访问子层”,其作用是与SDA通信获得惯性传感器的数据。与之对应的,是标准Andorid的GPSHAL内核通常设置有的
“GNSS模块访问子层”,用以获得GNSS硬件数据;
[0117] 根据标准Andorid的GPS HAL的通常实现方法,在初始化GPS HAL时候会调用其基本接口GpsInterface::init()(对应本发明的实现称为iwise_loc_int()),本发明在该
接口函数的实现中增加对“IMU模块访问子层”的初始化,并使其通过socket连接到SDA模
块;
[0118] 在初始化GPS HAL时,GpsLocationProvider从系统设置中获取定位模式、打开的传感器、传感器的采样率及扩展数据,通过调用set_position_mode接口和本发明添加
的IMUGpsInterface中的一组接口将设置信息保存到组合导航定位实现子层的共享数据
iwise_data_t(见本发明权利要求点4中表18)中;
[0119] 当上层应用请求GPS导航定位的时候,GPS应用框架层会调用标准Andorid的GPSHAL的GpsInterface::start()(对应本发明的实现称为iwise_loc_start_fix())接口。如
果此时的定位模式为GPS_POSITION_MODE_IMU,IMU模块访问子层从共享数据iwise_data_
t中获取需要打开的传感器及传感器的采样率,通过SDA_ACTIVE和SDA_SET_DELAY消息发
送给SDA模块。SDA模块内部的数据读取模块读取到IMU数据之后会发送SDA_MESSAGE消
息给IMU模块访问子层,并继而返回给组合导航定位实现子层进行组合导航定位解算;
[0120] 当应用程序停止GPS导航定位的时候,GPS应用框架层会会调用标准Andorid的GPS HAL的GpsInterface::stop()(对应本发明的实现称为iwise_loc_stop_fix())接口,
IMU模块访问子层发送SDA_STOP消息给SDA模块以停止IMU数据请求。
[0121] 下面介绍本发明所涉及的传感数据代理SDA模块的具体硬件结构。
[0122] 惯性导航传感器芯片(或模块)的传感数据代理SDA由SDA模块由SDA通信模块、SDA控制信息、数据缓存、数据读取模块和IMUSensor组成。其特征是:①SDA模块
在Android系统system_server加载时启动;②数据读取及缓存线程data_thread通过
IMUsensor访问接口以FIFO方式从传感器硬件驱动上获得传感器数据并缓存;③SDA通过
通信服务端线程,与标准Android系统的各个HAL内核进行交互。当需要传感器数据的HAL
内核向SDA模块发起连接成功后,SDA模块负责向其推送传感器数据。
[0123] 如图8所示,SDA模块由SDA通信模块、SDA共享数据(sda_context_t)、数据读取模块组成。SDA通信模块与IMUProxySensor和IMU模块访问子层进行数据交互,由server_
thread和消息处理模块组成;本发明中server_thread通过socket收发sda_message_t
消息来与客户端进行数据交互;消息处理模块解析处理收到的sda_message_t消息。sda_
context_t包含控制信息和数据缓存,其定义见表17;控制信息保存着客户端列表以及由
客户端设置的需要打开的传感器及传感器的采样率等信息;数据缓存用来保存最近读取的
IMU数据,由数据读取模块的data_thread写入数据,由server_thread取出后发送给客户
端。数据读取模块的data_thread调用内部的IMUSensor的接口来获取IMU数据,然后将
数据写入sda_context_t的数据缓存中;数据读取模块中的IMUSensor与惯性传感器硬件
驱动交互,提供设置惯性传感器参数和读取IMU数据的接口。
[0124] 表17SDA模块的上下文结构体sda_context_t
[0125]
[0126] 如图9所示,本发明实例将SDA模块的初始化工作放到system_server里面,在标准Android系统中,system_server会在系统启动的过程中调用。SensorService的初始化
工作也在system_server中完成,需要保证SDA模块的初始化工作在SensorService之前。
SDA模块初始化时会为sda_context_t分配内存并设置各字段的初始值,设置完成后启动
server_thread和data_thread两个线程以完成初始化。
[0127] 本发明实例中,表17中sda_context_t的status字段代表了SDA的状态,SDA在整个生命周期共有4种状态,分别是SDA_STATUS_NULL、SDA_STATUS_INITED、SDA_STATUS_
START和SDA_STATUS_STOP。下面分情况说明SDA在各状态之间转变时,各模块的工作状态。
[0128] 情景一:Android系统启动之后调用system_server完成初始化,本发明实例在system_server中添加sda_init函数以完成SDA的初始化过程。在sda_init中首先初始
化SDA的控制信息及为数据缓冲申请内存空间,此时SDA的状态为SDA_STATUS_NULL。之后
启动server_thread和data_thread,server_thread监听指定端口等待数据请求,server_
thread作为服务端,将IMUProxySensor或IMU模块访问子层看作客户端,此时data_
thread处于休眠状态;SDA初始化完成之后,状态转变为SDA_STATUS_INITED状态。
[0129] 情景二:当有上层应用打开导航或者请求惯性传感器数据时,IMUProxySensor或IMU模块访问子层作为客户端首先建立与SDA的连接,然后向server_thread发送数据请
求。server_thread收到数据请求后,server_thread根据请求数据设置需要打开的传感器
及采样率,SDA状态由SDA_STATUS_INITED变为SDA_STATUS_START,data_thread由休眠状
态转为激活状态,调用IMUSensor来读取数据,IMUSensor读取的数据由data_thread放入
数据缓冲区,server_thread从数据缓冲区读取传感器数据后发送给客户端。data_thread
与server_thread之间的同步与互斥是通过sda_sensor_lock和条件变量sda_sensor_
cond来保证的。
[0130] 情景三:当SDA已处于SDA_STATUS_START状态,若收到新的客户端请求,此时IMUProxySensor和IMU模块访问子层都向SDA请求数据。server_thread根据两个客户
端请求的传感器及采样率,选取它们请求的传感器的并集设置sda_context_t的sensors
字段,并设置标记sensors_changed为1;选取采样延迟时间中较小(较高采样率)的设
置sda_context_t的delay字段,并设置标记delay_changed为1。data_thread检测到
sensors_changed和delay_changed为1时,会调用IMUSensor的enable和setDelay接口
进行设置,设置完成之后将sensors_changed和delay_changed设置为0。
[0131] 情景四:若连接到SDA的客户端由两个变为一个,即IMUProxySensor或IMU模块访问子层其中一个停止请求数据。server_thread收到SA_STOP请求后,遍历sda_context_
t的客户端列表,选取现有客户端请求的传感器的并集设置sensors并设置标记sensors_
changed为1,选取现有客户端请求的延迟时间中的最小值设置为delay的值并设置标记
delay_changed为1。data_thread检测到sensors_changed和delay_changed为1时,会
调用IMUSensor的enable和setDelay接口进行设置,设置完成之后将sensors_changed
和delay_changed设置为0。
[0132] 情景五:当所有的客户端都停止请求数据,server_thread收到SA_STOP请求并检测到此时连接的客户端的数目为0,SDA的状态由SDA_STATUS_STAR转变为SDA_STATUS_
STOP。data_thread检测到状态转变为SDA_STATUS_STOP后会停止读取数据,并进入休眠状
态。
[0133] 下面介绍本发明所涉及的其他数据的获取具体方法。
[0134] 如权利要求点1所述,标准Android的GPS HAL内核被修改为支持组合导航的方式,将组合导航算法放到组合导航定位实现子层,算法本身不保护。其特征是:在GPS HAL
的实现子层中实现组合导航软解算,用软解算的结果替换GNSS硬件的结果上报。
[0135] 如图10所示,组合导航定位实现子层的GPS模块访问子层将从定位硬件中读取到的定位结果数据和原始观测信息解析转换为gnss_data_t数据结构放到共享数据区;另一
方面,IMU模块访问子层通过SDA模块获取IMU数据后,解析成imu_data_t数据结构放到共
享数据区;本发明实例还支持其它辅助数据的引入,如磁罗盘传感器数据、姿态控制信息、
车辆CAN总线信息等信息;组合导航定位模块从共享数据区拷贝出gnss_data_t和imu_
data_t数据后经解算后将解算结果打包为event_payload_u_type(结构定义见表18)结构
之后调用event_callback回调函数上传,GNSS抽象子层的报告线程被激活,将共享数据区
的event_payload_u_type数据解析转换为上层需要的定位结果格式,再调用各自的回调
函数将定位结果上传到上层。
[0136] 表18event_payload_u_type定义
[0137]
[0138] (1)首先介绍组合导航定位实现子层中的各种数据结构体。
[0139] 本发明中,组合导航算法的输入包括惯性传感器数据imu_data_t(见表6),定位硬件数据gnss_data_t(见表7)和其它辅助信息(见表8)。组合导航算法的解算结果由
event_payload_u_type(见表18)表示。
[0140] 组合导航定位实现子层在调用iwise_loc_init进行初始化的时候会初始化本层所需的共享数据区、控制结构以及线程等。本发明实例中用iwise_data_t结构体来保存这
些数据,其结构体中各字段如表18所示。
[0141] 表18 组合导航定位实现子层共享数据iwise_data_t
[0142]
[0143] (2)介绍组合导航定位驱动中各线程执行流程的控制。
[0144] 本发明实例中,IMU模块访问子层、GPS模块访问子层和组合导航定位实现子层之间的协同是通过同步控制模块中的状态量以及共享数据模块的锁和信号量来控制的。
[0145] 当有定位程序请求定位,GNSS抽象子层的iwise_start_fix接口发出状态改变信号量status_cond。IMU模块访问子层、GPS模块访问子层和组合导航定位实现子层收到信
号量后被激活,开始进入工作状态。
[0146] GPS模块访问子层打开并初始化串口,从串口读取到定位结果数据和原始观测信息后,将其解析转换为gnss_data_t结构体,之后需要获取对共享数据区进行操作的
锁data_lock,然后把解析结果拷贝到共享数据区的gnss_data字段,并更新gnss_data_
updated为1,拷贝完成之后释放锁。
[0147] IMU模块访问子层首先与SDA模块建立连接,接收到SDA返回的SA_MESSAGE消息后,将其解析转换为imu_data_t结构体,拷贝到共享数据区的imu_data并发送resolve_
cond信号量以激活可能等待信号量的组合导航定位实现子层。在对共享数据区进行操作之
前都需要先获得锁data_lock,操作完成之后需要释放锁。
[0148] 组合导航定位实现子层被激活之后,等待信号量resolve_cond,若在等待超时前收到信号量,则获取对共享数据区进行操作的锁data_lock,从共享数据区拷贝出imu_
data的数据,然后检查gnss_data_updated是否为1,若为1则拷贝出gnss_data的数据,
拷贝完成之后释放锁;若等待超时,则进入下一次等待。在成功拷贝出数据后,组合导航定
位实现子层调用定位算法解算出定位结果后交给GNSS抽象子层处理。
[0149] 通过锁data_lock和信号量resolve_cond,IMU模块访问子层、GPS模块访问子层和组合导航定位实现子层中的多个线程实现了有序地进行组合导航定位解算。
[0150] (3)介绍组合导航定位驱动中多种定位模式切换的控制。
[0151] 用户通过改变系统设置来改变定位模式,GpsLocationProvider检测到系统设置中的定位模式改变后,调用set_position_mode接口将新的定位模式设置到GPS HAL
中。在标准Android系统中定义了三种定位模式:GPS_POSITION_MODE_STANDALONE、GPS_
POSITION_MODE_MS_BASED、GPS_POSITION_MODE_MS_ASSISTED,本发明为组合导航定位增加
了GPS_POSITION_MODE_IMU定位模式。以下讨论驱动中定位模式切换的两种情况。
[0152] 情景一:定位模式由GPS_POSITION_MODE_IMU转换为其它定位模式。在检测到定位模式变为其他定位模式后,IMU模块访问子层断开与SDA的连接后进入休眠状态;组合导
航定位实现子层退出定位解算进入休眠状态;GPS模块访问子层在读取到定位结果数据后
不再转换为gnss_data_t,而是直接转换为event_payload_u_type结构后传给GNSS抽象子
层。
[0153] 情景二:定位模式由其它定位模式转换为GPS_POSITION_MODE_IMU。如图7所示,set_position_mode接口在本发明实例的GPS HAL中会调用iwise_loc_set_position_
mode,如果定位模式为GPS_POSITION_MODE_IMU,则激活处于休眠状态的IMU模块访问子层
和组合导航定位实现子层。IMU模块访问子层连接到SDA获取惯性传感器数据,组合导航定
位实现子层开始定位解算。GPS模块访问子层检测到定位模式转换为GPS_POSITION_MODE_
IMU后,不再将定位结果数据转换为event_payload_u_type结构体,而是解析转换为gnss_
data_t后拷贝到共享数据区中。
[0154] (4)组合导航定位解算其它解算结果的处理。
[0155] 组合导航相比于普通定位导航能够提供更多的导航参数,能够提供全姿态信息参数(包括航向角、俯仰角、横滚角)。在本发明中,对于组合导航定位解算出的位置信息
可以在GNSS抽象子层打包为标准Android中的GpsLocation结构体上报给上层应用;对
于标准Android中未提供上报接口的全姿态信息,本发明在标准NMEA-0183格式中扩展
出$GPATT语句(其定义见表19),$GPATT语句通过标准Android的NMEA-0183数据上报
接口上报。如图11所示,GPS HAL将定位结果和扩展的NMEA-0183数据通过标准上报接
口上报到GPS应用框架层的LocationManager,由LocationManager的NMEA解析模块来
处理扩展的$GPATT语句获得全姿态信息。本发明面向应用层扩展了AttitudeListener
监听器,第三方应用通过向LocationManager注册AttitudeListener监听器来获取全姿
态信息,LocationManager解析成功$GPATT语句后通过调用AttitudeListener监听器的
onAttitudeChanged接口将全姿态信息传递给应用。AttitudeListener的使用见示例。
[0156] 表19 本发明扩展的NMEA-0183语句
[0157]
[0158] 本方法思想的另外两种体现形式见图12和图13。如图12所示,设置惯性传感器数据和GNSS定位数据代理模块,组合导航定位实现子层在代理模块内部,代理模块获取
IMU数据和GNSS定位数据后进行组合导航定位解算,解算结果中的全姿态信息通过Sensor
HAL上报,定位信息通过GPS HAL上报。如图13所示,设置GNSS定位数据代理模块,在
Sensor HAL中通过GNSS模块访问模块从代理模块获取GNSS定位数据,组合导航定位实现
子层在Sensor HAL中,组合导航定位结果通过Sensor HAL的上报通道上报给上层应用。这
两种体现形式与本方法思想并无本质区别,也在本发明保护范围内。
[0159] 通过本方法可以使得:(1)Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得GNSS与惯性传感器组合定位的结果;(2)现有Android第三方应用程序
无需进行修改,即可直接获得组合导航定位结果;(3)调用本方法在Java框架层新增加的
API,在Java应用层获得组合导航算法的相关中间计算结果。
[0160] 当设备的底层驱动替换为惯性传感器组合定位驱动后,调用原有标准GNSS普通定位API,即可获得惯性传感器组合定位结果,步骤如下:
[0161] 步骤一新建Android项目,在AndroidManifest.xml清单文件里需要加入ACCESS_FINE_LOCATION权限。
[0162] 步骤二创建位置监听器,实现android.location.LocationListener接口。
[0163] 步骤三获取LocationManager,调用getProvider获取GpsLocationProvider。
[0164] 步 骤 四 调 用 requestLocationUpdates 将 创 建 的 位 置 监 听 器 与GpsLocationProvider关联起来,请求更新位置信息。当位置信息更新时,就会调用位置监
听器的onLocationChanged接口,当设备的底层驱动替换为惯性传感器组合定位驱动后,
在onLocationChanged中获得的位置信息就是惯性传感器组合定位信息。
[0165] 第三方开发者可以通过在GPS应用框架层扩展提供的API获取组合导航定位算法解算出的全姿态信息,步骤如下:
[0166] 步骤一新建Android项目,在AndroidManifest.xml清单文件里需要加入ACCESS_FINE_LOCATION权限。
[0167] 步骤二创建位置监听器,实现android.location.LocationListener接口、创建姿态信息监听器,实现新提供的android.location.GpsStatus.AttitudeListener接口。
[0168] 步骤三获取LocationManager,调用getProvider获取GpsLocationProvider。
[0169] 步 骤 四 调 用 requestLocationUpdates 将 创 建 的 位 置 监 听 器 与GpsLocationProvider关联起来,请求更新位置信息,调用LocationManager新提供的
addAttitudeListener接口添加全姿态信息监听器。
[0170] 本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替
代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
相关专利内容
标题 发布/更新时间 阅读量
一种修改纸 2020-05-11 922
多功能修改器 2020-05-12 324
已修改流同步 2020-05-12 34
一种面型修改油 2020-05-13 503
修改命令 2020-05-11 389
修改液笔 2020-05-11 350
修改对象的基层 2020-05-13 91
引导过程修改 2020-05-13 886
修改液 2020-05-11 792
修改书写笔 2020-05-12 825
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈