CN104236579B - 一种基于Android内核层实现高精度卫星导航定位方法 - Google Patents

一种基于Android内核层实现高精度卫星导航定位方法 Download PDF

Info

Publication number
CN104236579B
CN104236579B CN201410527819.3A CN201410527819A CN104236579B CN 104236579 B CN104236579 B CN 104236579B CN 201410527819 A CN201410527819 A CN 201410527819A CN 104236579 B CN104236579 B CN 104236579B
Authority
CN
China
Prior art keywords
fix
interface
gnss
layer
module
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.)
Active
Application number
CN201410527819.3A
Other languages
English (en)
Other versions
CN104236579A (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.)
Wuhan six o'clock Beidou Technology Co., Ltd.
Original Assignee
WUHAN ZHIYU SCIENCE & TECHNOLOGY Co Ltd
Wuhan University WHU
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 WUHAN ZHIYU SCIENCE & TECHNOLOGY Co Ltd, Wuhan University WHU filed Critical WUHAN ZHIYU SCIENCE & TECHNOLOGY Co Ltd
Priority to CN201410527819.3A priority Critical patent/CN104236579B/zh
Publication of CN104236579A publication Critical patent/CN104236579A/zh
Application granted granted Critical
Publication of CN104236579B publication Critical patent/CN104236579B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3446Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及一种基于Android内核层实现高精度卫星导航定位方法,本发明具体方法包括:1、从标准Android操作系统的HAL层开始,增加对下层芯片(或模块)定位原始观测数据的抽象和封装,向上逐层增加高精度定位扩展接口和相关回调函数接口等,并在应用框架层新设置一批高精度定位应用编程接口;2、在HAL层增加精密单点定位、差分定位、实时动态差分定位。通过本方法可以使得:Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高精度定位结果;调用本方法在Java框架层新增加的API,在Java应用层获得定位硬件输出的原始观测数据,实现自定义的高精度定位。

Description

一种基于Android内核层实现高精度卫星导航定位方法
技术领域
本发明涉及高精度卫星定位导航领域,尤其涉及在车联网、车载Android系统中使用的一种基于Android内核层实现高精度卫星导航定位方法。
背景技术
对于汽车电子行业来说,充斥着许多新兴事物,从车联网到车载导航,热点源源不断。随着受众群体的增加,车载导航的种类也越来越多。
科技在发展,智能操作系统与车辆结合已经是现在的发展趋势,苹果公司推出了carplay,Google公司推出了AndroidAuto等都是典型代表。这种趋势代表着智能车联网的发展导向。
高精度卫星导航定位是利用地面增强系统,提高卫星定位的精度。目前普通卫星导航的定位精度只能在10-20米,通过高精度定位算法可以将定位精度提高到亚米级,从而可以掌握车辆变道、超速等行为,实现车辆主动安全控制,是车联网亟需的技术;
目前对于车载的智能操作系统中,实施高精度定位的难度较大,一般第三方App开发者难以使用。
发明内容
本发明主要是解决现有技术所存在的技术问题;提供了一种Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高精度定位结果的一种基于Android内核层实现高精度卫星导航定位方法。
本发明还有一目的是解决现有技术所存在的技术问题;提供了一种现有Android第三方应用程序无需进行修改,即可直接获得高精度定位结果的一种基于Android内核层实现高精度卫星导航定位方法。
本发明再有一目的是解决现有技术所存在的技术问题;提供了一种能够在Java应用层获得定位硬件输出的原始观测数据,实现自定义的高精度定位的一种基于Android内核层实现高精度卫星导航定位方法。
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种基于Android内核层实现高精度卫星导航定位方法,其特征在于,从标准Android操作系统的HAL层开始,增加对下层芯片或模块定位原始观测数据的抽象和封装,向上逐层增加高精度定位扩展接口和相关回调函数接口。其中,向上逐层新增高精度定位扩展接口和相关回调函数接口依次是:
在HAL层中:
新增1.1:由标准Andorid内核中GpsInterface接口的get_extension()函数引出一组高精度GNSS定位接口函数,称为PGpsInterface接口函数,用以满足高精度定位相关设置需求;
新增1.2:在标准Andorid内核中原有GpsInterface接口的set_position_mode中,扩展了新的RTK定位模式、PPP定位模式和差分定位模式;
新增1.3:在标准Andorid内核的GpsCallbacks中添加原始观测数据回调的接口函数,称为gnss_obsdata_cb回调接口,实现将HAL层中获得的GNSS原始观测数据上报到上层;
在JNI层中:
新增2.1:添加gnss_obsdata_callback函数作为gnss_obsdata_cb的实现,
新增2.2:添加android_location_GpsLocationProvider_read_gnss_obsdata以实现在java层通过JNI方式读取原始观测数据,同时添加对应于PGpsInterface接口的函数供GpsLocationProvider调用,使用JNI提供的CallVoidMethod方法将method_reportGNSSObsData函数指针与GpsLocationProvider中的reportGNSSObsData映射起来,在JNI的函数映射表中添加新的接口映射关系;
新增2.3:添加native函数来调用JNI层的PGpsInterface接口函数,
新增2.4:添加native_read_gnss_obsdata函数来调用JNI层的android_location_GpsLocationProvider_read_gnss_obsdata函数来获取原始观测数据,
新增2.5:添加reportGNSSObsData函数供JNI层的gnss_obsdata_callback作为回调,
新增2.6:在GpsLocationProvider添加与HAL层相对应的定位模式GPS_POSITION_MODE_RTK、GPS_POSITION_MODE_PPP和GPS_POSITION_MODE_DP,根据系统设置中的设置将用户选择的定位模式传递到HAL层;
在应用框架层中:
新增3.1:添加GpsStatus.GNSSObsDataListener监听器,上层应用只需要实现该监听器实例并将监听器添加到LocationManager中就可以接收原始观测数据,为此,LocationManager中添加了addGNSSObsDataListener和removeGNSSObsDataListener接口供上层应用添加和移除GpsStatus.GNSSObsDataListener监听器。
在上述的一种基于Android内核层实现高精度卫星导航定位方法,将Android系统用于卫星定位的HAL层从上至下划分为三个子层,分别是:
子层一:GNSS抽象子层,用于接口重构和归并。在GNSS抽象子层中重新实现了全部标准Android系统有关GNSS定位的接口,并根据高精度GNSS定位特点实现了相关扩展接口。并在该层设置一个独立的报告线程,与注册到下层的回调函数所在的主线程形成计算机任务调度领域典型的“生产者‐消费者”关系,由一组在标准Android系统内核中新增加的与高精度定位相关的同步/互斥信号量控制运行。该线程用于将下层定位结果封装为标准Android有关GNSS的数据结构,报告给操作系统上层。
子层二:高精度定位实现子层,实现高精度定位解算;在高精度定位实现子层设置若干独立的工作线程,分别运行精密导航电文获取、定位硬件原始观测数据解析和高精度定位解算模块。工作线程形成计算机任务调度领域典型的“生产者‐消费者”关系,由一组在标准Android系统内核中新增加的与高精度定位相关的同步/互斥信号量控制运行。
子层三:硬件访问子层,将常见高精度定位命令写入定位硬件并从定位硬件读取相关数据;HAL的三个子层通过上层向下层注册回调函数的方式,实现下层输出数据的上报通道。通过接口逐层归并的方式,将标准Android系统GNSS相关接口映射到定位硬件驱动接口,实现控制命令的下传通道。硬件访问子层可根据所选用Android系统硬件架构的不同,采用不同的硬件访问手段:包括远程过程调用(RemoteProcedureCall,RPC)方式或直接调用方式,调用定位硬件的设备驱动函数。
在上述的一种基于Android内核层实现高精度卫星导航定位方法,所述高精度定位实现子层,实现高精度定位解算的具体方法是在高精度定位实现子层设置精密导航电文获取模块、定位硬件原始观测数据解析模块、高精度解算模块以及定位结果审核模块,并在高精度定位实现子层设置若干独立的工作线程,分别运行这些模块;具体是:
精密导航电文获取模块:向所注册的网络服务器请求精密导航电文,并将获得的电文进行解析,将解析结果放入共享缓冲区,当本方法冷启动时,该模块将额外向所注册的网络服务器请求一次GNSS广播星历数据。该模块的运行机制与具体的精密导航电文格式无关,能够兼容包括RTCMSC-104、RTCASC-159、“羲和”室外广域高精度定位等行业公开规范;也可开放供用户自定义,以支持符合PPP或DP的自定义精密导航电文;
定位硬件原始观测数据解析模块:将定位硬件的输出数据解析为定位结果报告数据(符合NMEA0831标准)、定位结果可计算数据、原始观测值可计算数据和原始观测值报告数据(符合RENIX标准)和广播星历可计算数据等,将解析结果放入共享缓冲区。
高精度解算模块:从共享缓冲区中提取最新的硬件原始观测数据与精密导航电文数据,执行高精度定位解算。该模块的运行机制与具体的高精度定位解算算法无关,能够支持行业通用的PPP、RTK及差分定位等算法;
定位结果审核模块:高精度解算模块将高精度定位解算的输入数据、中间结果和解算结果等输出到该模块,由该模块对定位结果进行质量控制与审核,然后由该模块调用GNSS抽象层注册的回调函数,完成结果上报;
因此,本发明具有如下优点:1、Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高精度定位结果;2、现有Android第三方应用程序无需进行修改,即可直接获得高精度定位结果;3、调用本方法在Java框架层新增加的API,在Java应用层获得定位硬件输出的原始观测数据,实现自定义的高精度定位。
附图说明
图1为本发明的整体框架示意图。
图2为本发明涉及的修改和扩展标准Android系统HAL层的接口关系示意图。
图3为本发明涉及的GpsLocationProvider在应用框架层和JNI层新增的接口示意图。
图4为本发明涉及的应用框架层向应用层新增的接口示意图。
图5为本发明涉及的HAL层的数据流及接口示意图。
图6为本发明涉及的上层模块到下层的归并接口示意图。
图7为本发明涉及的HAL层状态转换示意图。
图8为本发明涉及的数据解析模块、精密导航电文获取模块和解算模块的流程示意图。
图9为本发明涉及的消息协议示意图。
图10为本发明涉及的精密导航电文获取流程示意图。
图11为本发明涉及的解算模块自适应与定位审核模块流程图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
下面从几个方面阐述本发明的具体方法。
1、本发明从Android操作系统的硬件抽象层(HardwareAbstractionLayer,HAL)开始,向上逐层实现卫星高精度定位相关功能的方法及模块。具体是:(1)从标准Android操作系统的HAL层开始,增加对下层芯片(或模块)定位原始观测数据的抽象和封装,向上逐层增加高精度定位扩展接口和相关回调函数接口等,并在应用框架层新设置一批高精度定位应用编程接口(ApplicationProgrammingInterface,API);(2)在HAL层增加精密单点定位(PrecisePointPositioning,PPP)、差分定位、实时动态差分(Real-timekinematic,RTK)定位等高精度定位解算、精密导航电文获取、卫星定位导航硬件数据解析的功能及相关同步控制机制等。当终端设备所采用的全球卫星定位导航系统(GlobalNavigationSatelliteSystem,GNSS)的定位硬件(特指北斗或GPS定位单/双模芯片或模块,下同)支持原始观测数据(包括:伪距观测量、载波相位观测量、多普勒观测量,同时包括广播星历数据)输出时,通过本方法可以使得:(1)Android第三方应用开发者调用原有标准GNSS普通定位API,即可获得高精度定位结果;(2)现有Android第三方应用程序无需进行修改,即可直接获得高精度定位结果;(3)调用本方法在Java框架层新增加的API,在Java应用层获得定位硬件输出的原始观测数据,实现自定义的高精度定位。
如图1所示,本方法基于Android操作系统公开架构,涉及Android应用层、应用框架层、Java本地调用(JavaNativeInterface,JNI)层、HAL层、Linux内核层以及GNSS硬件模块。Android应用(即App)位于Android应用层,与应用框架层的API接口相关,这是本领域技术人员所熟知的,因此不再赘述。本方法为了提高通适性和可靠性,将HAL层划分为(1)GNSS抽象子层、(2)高精度定位实现子层和(3)硬件访问子层。其中GNSS抽象子层遵循标准Android系统的公开规范,扩展定义了高精度GNSS定位硬件的抽象接口、数据/命令的上/下行通道,封装了基本高精度GNSS数据信息,实现了GNSS定位的抽象工作流程;高精度定位实现子层通过获取网络差分信息和GNSS硬件原始观测信息,实现精密单点定位解算或差分定位解算;硬件访问子层为不同GNSS硬件芯片(模块)提供了统一接口。本方法发明内容涉及图1中黄色阴影区域。
2、本方法在标准Android系统(以Android4.2.2版本为例,下同)GNSS器件相关规范的基础上,为实现高精度GNSS定位新创建和扩展了一批接口。用于Android系统或应用程序的高精度定位命令下达以及高精度定位原始观测数据和定位结果的反馈。
如图2所示,在hardware/libhardware/include/hardware/gps.h中,添加一组PGpsInterface接口函数,由标准Andorid内核中GpsInterface接口的get_extension()函数引出,用以满足高精度定位相关设置(如精密导航电文服务来源、类型等)需求;在标准Andorid内核中GpsInterface接口的set_position_mode()中,扩展了GPS_POSITION_MODE_RTK(RTK定位模式)、GPS_POSITION_MODE_PPP(PPP定位模式)和GPS_POSITION_MODE_DP(差分定位模式);在标准Andorid内核的GpsCallbacks中添加gnss_obsdata_cb回调接口,实现将HAL层中获得的GNSS原始观测数据上报到上层。新增接口如表1。
表1HAL层新增接口
表2精密导航电文类型列表
与HAL相适应,本方法在JNI层也相应扩展了相关接口函数。如图3所示,在frameworks/base/services/jni/com_android_server_location_GpsLocationProvider.cpp中,添加gnss_obsdata_callback函数作为gnss_obsdata_cb的实现,添加android_location_GpsLocationProvider_read_gnss_obsdata以实现在java层通过JNI方式读取原始观测数据,同时添加对应于PGpsInterface接口的函数供GpsLocationProvider调用,使用JNI提供的CallVoidMethod方法将method_reportGNSSObsData函数指针与GpsLocationProvider中的reportGNSSObsData映射起来,在JNI的函数映射表中添加新的接口映射关系,如表3所示。
在frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java中,添加native函数来调用JNI层的PGpsInterface接口函数,添加native_read_gnss_obsdata函数来调用JNI层的android_location_GpsLocationProvider_read_gnss_obsdata函数来获取原始观测数据,添加reportGNSSObsData函数供JNI层的gnss_obsdata_callback作为回调,在GpsLocationProvider添加与HAL层相对应的定位模式GPS_POSITION_MODE_RTK、GPS_POSITION_MODE_PPP和GPS_POSITION_MODE_DP,根据系统设置中的设置将用户选择的定位模式传递到HAL层。
新增接口如表4所示。
表3JNI的函数映射表中添加新的接口映射关系
表4GpsLocationProvider在应用框架层和JNI层新增的接口
与JNI层相适应,本方法在应用框架层也相应扩展了相关接口函数,供App调用。如图4所示,在应用框架层添加GpsStatus.GNSSObsDataListener监听器,上层应用只需要实现该监听器实例并将监听器添加到LocationManager中就可以接收原始观测数据,为此,LocationManager中添加了addGNSSObsDataListener和removeGNSSObsDataListener接口供上层应用添加和移除GpsStatus.GNSSObsDataListener监听器。
相关扩展接口位于
frameworks/base/location/java/android/location/LocationManager.java、frameworks/base/location/java/android/location/GpsStatus.java和frameworks/base/location/java/android/location/IGpsStatusListener.aidl(被编译为IGpsStatusListener.Stub接口)中。
新增接口如表5所示。
表5应用框架层向应用层新增的接口
3、为了向上兼容标准Android系统对GNSS硬件抽象的统一规范,向下适应不同品牌和类型的定位硬件,本方法将HAL层从上至下划分为(1)GNSS抽象子层,主要用于接口重构和归并;(2)高精度定位实现子层,实现高精度定位解算;(3)硬件访问子层,将常见高精度定位命令写入定位硬件并从定位硬件读取相关数据。HAL的三个子层通过上层向下层注册回调函数的方式,实现下层输出数据的上报通道。通过接口逐层归并的方式,将标准Android系统GNSS相关接口映射到定位硬件驱动接口,实现控制命令的下传通道。
如图5所示,GNSS抽象子层的作用是统一接口以及解耦JNI层与高精度定位实现子层,GNSS抽象子层与高精度定位实现子层的接口如表6所示;硬件访问子层的作用是屏蔽不同定位硬件的差异性,向高精度定位实现子层提供统一的硬件访问接口。
表6本方法实施例的HAL层中GNSS抽象子层与高精度定位实现子层的接口
表7操作类型码与操作说明
表8回调事件类型与操作说明
回调事件类型 说明
IWISE_LOC_EVENT_LOCATION_REPORT 上报定位结果(以数值形式)
IWISE_LOC_EVENT_SATELLITE_REPORT 上报卫星状态信息
IWISE_LOC_EVENT_STATUS_REPORT 上报定位状态
IWISE_LOC_EVENT_NMEA_REPORT 上报定位结果(以NMEA格式)
IWISE_LOC_EVENT_GNSS_OBS_DATA_REPORT 上报原始观测数据(以RINEX格式)
如图5所示,高精度定位实现子层的数据解析模块通过硬件访问层从定位硬件中读取出字符数组后首先将数据分离成标准NMEA格式字符数组和原始观测数据字符数组,分别交给各自的解析模块解析后得到NMEA数据结构和原始观测数据结构放到共享数据区;另一方面,精密导航电文获取模块通过网络从精密导航电文服务器读取网络字节流,解析成精密导航电文数据结构后放到共享数据区;高精度解算模块从共享数据区拷贝出NMEA、原始观测数据、精密导航电文,经解算后将解算结果、输入数据及中间数据交给定位结果审核模块,由结果审核模块统一打包为event_payload_u_type结构之后调用event_callback回调函数上传,GNSS抽象子层的报告线程被激活,将共享数据区的event_payload_u_type数据解析转换为上层需要的定位结果格式,再调用各自的回调函数将定位结果上传到上层。
4、本方法在GNSS抽象子层中重新实现了全部标准Android系统有关GNSS定位的接口,并根据高精度GNSS定位特点实现了相关扩展接口。并在该层设置一个独立的报告线程,与注册到下层的回调函数所在的主线程形成计算机任务调度领域典型的“生产者-消费者”关系,由一组在标准Android系统内核中新增加的与高精度定位相关的同步/互斥信号量控制运行。该线程用于将下层定位结果封装为标准Android有关GNSS的数据结构,报告给操作系统上层。
GNSS抽象子层的iwise_open函数在调用高精度定位实现层的初始化函数iwise_loc_init之前会在GNSS抽象子层中完成如下初始化操作:创建一个名为gnss_loc_data_t的抽象层共享数据区,用于存放回调函数传上来的定位结果;启动一个线程用于从共享数据区读取定位,然后报告给上层;创建锁gnss_data_lock来保证多线程对共享数据区的互斥访问,创建信号量gnss_data_cond保证回调函数与报告线程的交替工作,设置标记gnss_data_flag来标记新数据的类型(初始化时设为0表示没有新数据)。与GNSS抽象子层相关的控制信息以及共享数据保存在结构gnss_loc_data_t里面,其具体字段如表9所示。
表9GNSS抽象子层共享数据gnss_loc_data_t
回调函数与报告线程工作模式如下面几种情景。
情景一:报告线程启动后,首先获得对共享数据区域访问的锁gnss_data_lock,检查gnss_data_flag是否为0,若为0则释放锁,等待信号量gnss_data_cond。
情景二:高精度定位实现层调用event_callback回调函数,获得锁gnss_data_lock,将定位结果拷贝到共享数据区,设置gnss_data_flag为回调事件掩码,向gnss_data_cond发出信号,释放锁。报告线程被激活后检查到gnss_data_flag不为0,重新获得锁,从共享数据区拷贝出定位结果,把gnss_data_flag保留一份副本后重新设置为0,然后根据回调事件掩码对定位结果进行处理后上报,上报完成后重新获得锁,检查gnss_data_flag是否为0,若为0则按情况一处理,若不为0,继续上报处理。
情景三:报告线程被激活后无法重新获得锁,此时回调函数在往共享数据区拷贝新的定位结果,则报告线程等待回调函数拷贝完成之后继续运行。
情景四:回调函数在往共享数据区写数据时无法获得锁,此时,报告线程正在从共享数据区拷贝上次的定位结果,则等报告线程读取完毕之后继续往共享数据区拷贝定位结果。
报告线程上报的各种回调函数及数据报文格式见表10。
表10结果报告的回调函数及数据报文格式列表
5、本方法在高精度定位实现子层设置若干独立的工作线程,分别运行精密导航电文获取、定位硬件原始观测数据解析和高精度定位解算模块。工作线程形成计算机任务调度领域典型的“生产者-消费者”关系,由一组在标准Android系统内核中新增加的与高精度定位相关的同步/互斥信号量控制运行。
(1)精密导航电文获取模块:向所注册的网络服务器请求精密导航电文,并将获得的电文进行解析,将解析结果放入共享缓冲区。当本方法冷启动时,该模块将额外向所注册的网络服务器请求一次GNSS广播星历数据。该模块的运行机制与具体的精密导航电文格式无关,能够兼容包括RTCMSC-104、RTCASC-159、“羲和”室外广域高精度定位等行业公开规范;也可开放供用户自定义,以支持符合PPP或DP的自定义精密导航电文;
(2)定位硬件原始观测数据解析模块:将定位硬件的输出数据解析为定位结果报告数据(符合NMEA0831标准)、定位结果可计算数据、原始观测值可计算数据和原始观测值报告数据(符合RENIX标准)和广播星历可计算数据等,将解析结果放入共享缓冲区。
(3)高精度解算模块:从共享缓冲区中提取最新的硬件原始观测数据与精密导航电文数据,执行高精度定位解算。该模块的运行机制与具体的高精度定位解算算法无关,能够支持行业通用的PPP、RTK及差分定位等算法;
该模块设置了环境自适应机制,当用户采用本方法进行GNSS定位时,能够根据上下文环境,自动在RTK、PPP、差分定位及普通单点定位模式中切换,提供定位结果的适应性;
(4)定位结果审核模块:高精度解算模块将高精度定位解算的输入数据、中间结果和解算结果等输出到该模块,由该模块对定位结果进行质量控制与审核,然后由该模块调用GNSS抽象层注册的回调函数,完成结果上报;
高精度定位实现子层在调用iwise_loc_init进行初始化的时候会初始化本层所需的共享数据区、控制结构以及线程等。本方法构造名为iwise_data_t的实现层共享数据区来保存这些数据,其结构体中各字段如表11所示:
表11高精度定位实现子层共享数据iwise_data_t
如图7所示,本方法整个生命周期共有5种状态,分别是STATUS_NULL、STATUS_INIT、STATUS_START、STATUS_STOP、STATUS_DESTROY。如图8所示,为数据解析模块、精密导航电文获取模块和解算模块的流程图,它们之间的协同是通过同步控制模块中的状态量以及共享数据模块的锁和信号量来控制的。
情景一:没有打开定位开关,此时HAL层的状态为STATUS_NULL。精密导航电文获取模块、数据解析模块和解算模块处于未启动状态。
情景二:打开定位开关。调用GNSS抽象子层的iwise_open接口,此时HAL层的状态由STATUS_NULL转为STATUS_INIT。精密导航电文获取模块、数据解析模块和解算模块完成各自的初始化工作,完成初始化工作后处于空运行状态,等待状态改变信号量status_cond。
情景三:定位程序请求定位。调用GNSS抽象子层的iwise_start_fix接口,此时HAL层的状态由STATUS_INIT转为STATUS_START,iwise_start_fix接口发出状态改变信号量。精密导航电文获取模块、数据解析模块和解算模块收到信号量后被激活,开始进入工作状态。数据解析模块打开并初始化串口,开始从串口读取数据,为了更高效的进行读写操作以及避免在读写数据的过程中被阻塞,解析模块采用了select机制;在读取到数据后,由分离子模块分离成原始观测量以及NMEA两类数据,分离后的数据由各自的解析子模块进行解析,数据解析模块解析完成之后需要获取对共享数据区进行操作的锁data_lock,然后把解析结果拷贝到共享数据区,拷贝完成之后释放锁;若解析结果是gnss_obs_t,数据解析模块会发出信号resolve_cond来激活解算模块。
精密导航电文获取模块检查网络状态标志位net_status,若标志位为0则等待网络状态信号量net_cond,当标志位为1时,首先需要连接认证服务器进行认证,再连接到广播星历服务器请求最新的广播星历,最后连接精密导航电文播发服务器请求精密导航电文,设置socket超时时间,避免socket的读取过程被阻塞,从服务器读取精密导航电文,然后把精密导航电文的解析结果拷贝到共享数据区的nav_message,并更新last_receive_nav_message字段,在对共享数据区进行操作之前都需要先获得锁,操作完成之后需要释放锁。高精度定位解算模块被激活之后,计时等待信号量resolve_cond,若在等待超时前收到信号量,首先获取对共享数据区进行操作的锁data_lock,从共享数据区拷贝出原始观测数据、NMEA数据以及精密导航电文数据,拷贝完成之后释放锁,然后根据定位模式调用对应的解算模块进行结算,若等待超时,则产生一个错误的解算结果,最后将输入数据、中间结果、解算结果一并交给定位结果审核模块。
情景四:定位程序结束定位。调用GNSS抽象子层的iwise_stop_fix接口,此时HAL层的状态由STATUS_START转为STATUS_STOP。当数据解析模块、精密导航电文获取模块和解算模块处于工作状态下时,不会一直处于阻塞状态,各个模块在超时或者获取到数据之后,首先会检查HAL层的状态,如果HAL层的状态为STATUS_STOP,数据解析模块会关闭GNSS硬件芯片(模块),精密导航电文获取模块会关闭与精密导航电文播发服务器的连接,各个模块处于空运行状态。
情景五:关闭定位开关。若HAL层正处于STATUS_START状态,GpsLocationProvider会先调用GNSS抽象子层的iwise_stop_fix接口停止定位导航使HAL层的状态转为STATUS_STOP,再调用GNSS抽象子层的cleanup接口;若HAL层的状态为STATUS_STOP或者STATUS_INIT,则直接调用cleanup接口。调用GNSS抽象子层的cleanup接口之后,HAL层的状态转为STATUS_DESTROY,并发出状态改变信号量。数据解析模块、精密导航电文获取模块和解算模块收到信号量后被激活,检查到HAL层的状态为STATUS_DESTROY后便各自清理资源并退出。GNSS抽象子层的cleanup接口在等待各个模块退出后将HAL层的状态改变为STATUS_NULL。
精密导航电文获取模块作为客户端与精密导航电文服务器通过互联网协议进行数据传输,精密导航电文获取模块与精密导航电文服务器的交互图如图10所示,本方法实施例在TCP协议之上定义了适用于交互的应用层协议,协议消息由消息头和消息体两部分组成,消息头包含两个字段消息码和消息长度两部分,如图9所示,其中消息长度不含消息头的4B长度,若消息长度为0,则该消息只由消息头组成,不包含消息体。精密导航电文获取模块的接口如表12所示,具体消息码列表如表13所示。
表12精密导航电文获取模块的接口列表
表13消息码列表
高精度定位解算模块可以自适应地根据环境选择在当前定位模式下最优的定位方案。下面以定位精度最高的GPS_POSITION_MODE_RTK模式进行说明,高精度定位解算模块及定位结果审核模块流程图见图11:
本方法实施例对高精度定位实现层的各个模块的异常进行了统一的定义,各模块的异常类型及错误处理方式见表14所示:
表14异常类型与错误处理
本方法实施例定义了一个的结构体event_payload_u_type对上传数据进行统一的包装,其具体定义如表15所示。
表15event_payload_u_type定义
6、硬件访问子层可根据所选用Android系统硬件架构的不同,采用不同的硬件访问手段:包括远程过程调用(RemoteProcedureCall,RPC)方式或直接调用方式,调用定位硬件的设备驱动函数。本方法根据高精度定位的特点,统一封装了对定位硬件工作模式、输出频率、输出内容等命令下达与数据读取接口,以适应不同厂商和品牌的北斗/GPS定位硬件。
本方法实施例提出的硬件访问层包含接口定义以及具体实现两个部分。其中接口定义为高精度定位实现子层提供了统一的对定位硬件进行操作的5个接口(见表16)。openGNSS用于打开对定位硬件,支持硬件访问手段:包括远程过程调用(RemoteProcedureCall,RPC)方式或直接调用方式,调用定位硬件的设备驱动函数,打开成功后返回对定位硬件操作句柄;ioctlGNSS用于对定位硬件的输出进行控制,包含设置定位硬件输出数据的格式、频率等;readGNSS和writeGNSS用于对定位硬件的进行读写操作;closeGNSS用于在操作完毕之后关闭定位硬件。具体实现部分包含各种GNSS硬件芯片(模块)对5个接口的实现,高精度定位实现子层在调用接口时,接口会根据定位硬件类型参数调用对应的实现。当添加新的定位硬件时,只需要添加该定位硬件对5个接口的具体实现部分就能将该定位硬件应用于整套定位系统中,提高了系统的可扩展性和灵活性。接口操作命令码及相关说明见表17。
表16本方法实施例的HAL层中高精度定位实现子层与硬件访问子层的接口
表17硬件访问子层ioctlGNSS接口命令列表及说明
7、本方法给出了在标准Android系统内核进行修改的工作流程;给出了采用修改后的Android内核,进行应用层App开发,获得高精度定位结果及定位硬件原始观测数据的代码示例。
本方法的实施步骤描述为:
第一步:修改文件hardware/libhardware/include/hardware/gps.h,新添加一批接口与回调函数,借口详见第二部分描述;
第二步:修改文件
frameworks/base/services/jni/com_android_server_location_GpsLocationProvider.cpp,添加与HAL层接口相对应的函数,接口详见第二部分描述;
第三步:修改文件
frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java,在应用框架层添加与JNI层相对应的函数,接口详见第二部分描述;
第四步:修改文件
frameworks/base/location/java/android/location/GpsStatus.java、frameworks/base/location/java/android/location/IGpsStatusListener.aidl、frameworks/base/location/java/android/location/LocationManager.java,扩展了相关接口函数,供App调用,接口详见第二部分描述;
第五步:实现HAL层的各子层的各个模块;
具体修改文件列表,编译命令,以及编译生成文件见表18,编译结束之后将编译生成的文件替换标准Android中的对应文件,重新启动设备后即完成了标准Android内核的修改工作。
表18本方法需要修改的Android内核代码文件列表
当设备的底层驱动替换为高精度定位驱动后,调用原有标准GNSS普通定位API,即可获得高精度定位结果,步骤如下:
步骤一新建Android项目,在AndroidManifest.xml清单文件里需要加入ACCESS_FINE_LOCATION权限。
步骤二创建位置监听器,实现android.location.LocationListener接口。
步骤三获取LocationManager,调用getProvider获取GpsLocationProvider。
步骤四调用requestLocationUpdates将创建的位置监听器与GpsLocationProvider关联起来,请求更新位置信息。当位置信息更新时,就会调用位置监听器的onLocationChanged接口,当设备的底层驱动替换为高精度定位驱动后,在onLocationChanged中获得的位置信息就是高精度位置信息。
第三方应用开发者可以通过在应用框架层扩展提供的API获取原始观测值及导航电文,步骤如下:
步骤一、新建Android项目,在AndroidManifest.xml清单文件里需要加入ACCESS_FINE_LOCATION权限。
步骤二、创建位置监听器,实现android.location.LocationListener接口、创建原始观测数据监听器,实现新提供的android.location.GpsStatus.GNSSObsDataListener接口。
步骤三、获取LocationManager,调用getProvider获取GpsLocationProvider。
步骤四、调用requestLocationUpdates将创建的位置监听器与GpsLocationProvider关联起来,请求更新位置信息。调用LocationManager新提供的addGNSSObsDataListener接口添加原始观测数据监听器。当设备的底层驱动获取到原始观测信息后,会调用原始观测数据监听器的onGNSSObsDataReceived方法,通过onGNSSObsDataReceived方法就可以获取到原始观测数据了,在本实例中,底层驱动将原始观测数据转换为标准的RINEX格式,通过字符串的形式上传。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (2)

1.一种基于Android内核层实现高精度卫星导航定位方法,其特征在于,从标准Android操作系统的HAL层开始,增加对下层芯片或模块定位原始观测数据的抽象和封装,向上逐层增加高精度定位扩展接口和相关回调函数接口;其中,向上逐层新增高精度定位扩展接口和相关回调函数接口依次是:
在HAL层中:
新增1.1:由标准Andorid内核中GpsInterface接口的get_extension()函数引出一组高精度GNSS定位接口函数,称为PGpsInterface接口函数,用以满足高精度定位相关设置需求;
新增1.2:在标准Andorid内核中原有GpsInterface接口的set_position_mode中,扩展了新的RTK定位模式、PPP定位模式和差分定位模式;
新增1.3:在标准Andorid内核的GpsCallbacks中添加原始观测数据回调的接口函数,称为gnss_obsdata_cb回调接口,实现将HAL层中获得的GNSS原始观测数据上报到上层;
在JNI层中:
新增2.1:添加gnss_obsdata_callback函数作为gnss_obsdata_cb的实现,
新增2.2:添加android_location_GpsLocationProvider_read_gnss_obsdata以实现在java层通过JNI方式读取原始观测数据,同时添加对应于PGpsInterface接口的函数供GpsLocationProvider调用,使用JNI提供的CallVoidMethod方法将method_reportGNSSObsData函数指针与GpsLocationProvider中的reportGNSSObsData映射起来,在JNI的函数映射表中添加新的接口映射关系;
新增2.3:添加native函数来调用JNI层的PGpsInterface接口函数,
新增2.4:添加native_read_gnss_obsdata函数来调用JNI层的android_location_GpsLocationProvider_read_gnss_obsdata函数来获取原始观测数据,
新增2.5:添加reportGNSSObsData函数供JNI层的gnss_obsdata_callback作为回调,
新增2.6:在GpsLocationProvider添加与HAL层相对应的定位模式GPS_POSITION_MODE_RTK、GPS_POSITION_MODE_PPP和GPS_POSITION_MODE_DP,根据系统设置中的设置将用户选择的定位模式传递到HAL层;
在应用框架层中:
新增3.1:添加GpsStatus.GNSSObsDataListener监听器,上层应用只需要实现该监听器实例并将监听器添加到LocationManager中就可以接收原始观测数据,为此,LocationManager中添加了addGNSSObsDataListener和removeGNSSObsDataListener接口供上层应用添加和移除GpsStatus.GNSSObsDataListener监听器;
将Android系统用于卫星定位的HAL层从上至下划分为三个子层,分别是:
子层一:GNSS抽象子层;
子层二:高精度定位实现子层;
子层三:硬件访问子层;
所述高精度定位实现子层,实现高精度定位解算的具体方法是在高精度定位实现子层设置精密导航电文获取模块、定位硬件原始观测数据解析模块、高精度解算模块以及定位结果审核模块,并在高精度定位实现子层设置若干独立的工作线程,分别运行这些模块;具体是:
精密导航电文获取模块:向所注册的网络服务器请求精密导航电文,并将获得的电文进行解析,将解析结果放入共享缓冲区,当本方法冷启动时,该模块将额外向所注册的网络服务器请求一次GNSS广播星历数据;该模块的运行机制与具体的精密导航电文格式无关,能够兼容包括RTCMSC-104、RTCASC-159、羲和室外广域高精度定位行业公开规范;也可开放供用户自定义,以支持符合PPP或DP的自定义精密导航电文;
定位硬件原始观测数据解析模块:将定位硬件的输出数据解析为定位结果报告数据、定位结果可计算数据、原始观测值可计算数据和原始观测值报告数据和广播星历可计算数据,将解析结果放入共享缓冲区;
高精度解算模块:从共享缓冲区中提取最新的硬件原始观测数据与精密导航电文数据,执行高精度定位解算;该模块的运行机制与具体的高精度定位解算算法无关,能够支持行业通用的PPP、RTK及差分定位算法;
定位结果审核模块:高精度解算模块将高精度定位解算的输入数据、中间结果和解算结果输出到该模块,由该模块对定位结果进行质量控制与审核,然后由该模块调用GNSS抽象层注册的回调函数,完成结果上报。
2.根据权利要求1所述的一种基于Android内核层实现高精度卫星导航定位方法,其特征在于,将Android系统用于卫星定位的HAL层从上至下划分为三个子层,分别是:
子层一:GNSS抽象子层,用于接口重构和归并;在GNSS抽象子层中重新实现了全部标准Android系统有关GNSS定位的接口,并根据高精度GNSS定位特点实现了相关扩展接口;并在该层设置一个独立的报告线程,与注册到下层的回调函数所在的主线程形成计算机任务调度领域典型的生产者-消费者关系,由一组在标准Android系统内核中新增加的与高精度定位相关的同步/互斥信号量控制运行;该线程用于将下层定位结果封装为标准Android有关GNSS的数据结构,报告给操作系统上层;
子层二:高精度定位实现子层,实现高精度定位解算;在高精度定位实现子层设置若干独立的工作线程,分别运行精密导航电文获取、定位硬件原始观测数据解析和高精度定位解算模块;工作线程形成计算机任务调度领域典型的“生产者-消费者”关系,由一组在标准Android系统内核中新增加的与高精度定位相关的同步/互斥信号量控制运行;
子层三:硬件访问子层,将常见高精度定位命令写入定位硬件并从定位硬件读取相关数据;HAL的三个子层通过上层向下层注册回调函数的方式,实现下层输出数据的上报通道;通过接口逐层归并的方式,将标准Android系统GNSS相关接口映射到定位硬件驱动接口,实现控制命令的下传通道;硬件访问子层可根据所选用Android系统硬件架构的不同,采用不同的硬件访问手段:包括远程过程调用方式或直接调用方式,调用定位硬件的设备驱动函数。
CN201410527819.3A 2014-10-09 2014-10-09 一种基于Android内核层实现高精度卫星导航定位方法 Active CN104236579B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410527819.3A CN104236579B (zh) 2014-10-09 2014-10-09 一种基于Android内核层实现高精度卫星导航定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410527819.3A CN104236579B (zh) 2014-10-09 2014-10-09 一种基于Android内核层实现高精度卫星导航定位方法

Publications (2)

Publication Number Publication Date
CN104236579A CN104236579A (zh) 2014-12-24
CN104236579B true CN104236579B (zh) 2016-06-08

Family

ID=52225122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410527819.3A Active CN104236579B (zh) 2014-10-09 2014-10-09 一种基于Android内核层实现高精度卫星导航定位方法

Country Status (1)

Country Link
CN (1) CN104236579B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108152839A (zh) * 2017-12-22 2018-06-12 西安烽火电子科技有限责任公司 基于Android操作系统的北斗数据通信系统及方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104535070B (zh) * 2014-12-26 2017-11-14 上海交通大学 高精细地图数据结构、采集和处理系统及方法
CN104598253B (zh) * 2015-02-17 2016-10-19 武汉大学 一种在Android内核层实现GNSS/INS组合导航的方法
CN105005059A (zh) * 2015-06-26 2015-10-28 泰斗微电子科技有限公司 一种原始观测量数据在android终端中的传输方法及相应的终端
CN105005480A (zh) * 2015-07-31 2015-10-28 诚迈科技(南京)股份有限公司 一种纠正软件定位偏差的方法
CN105262832B (zh) * 2015-10-30 2019-05-24 安一恒通(北京)科技有限公司 一种地理位置信息的处理方法及装置
CN106357889B (zh) * 2016-08-22 2019-04-16 杭州字节信息技术有限公司 基于安卓系统的北斗卫星通信与导航智能系统及其应用
CN108376066B (zh) * 2016-11-24 2020-09-11 腾讯科技(深圳)有限公司 代码处理装置及代码处理方法
CN108169770B (zh) * 2016-12-07 2021-11-19 千寻位置网络有限公司 网络差分服务性能的监测方法及其系统
CN106843689B (zh) * 2017-01-19 2020-11-20 宁波珍学网教育科技有限公司 移动终端及超级截图实现方法
CN107248978B (zh) * 2017-05-27 2019-12-31 武汉票据交易中心有限公司 一种消息监听处理方法及系统
CN107368301B (zh) * 2017-06-27 2020-12-15 深圳市爱培科技术股份有限公司 一种串口框架协议实现方法、存储介质及装置
CN107193675A (zh) * 2017-06-30 2017-09-22 山东超越数控电子有限公司 一种基于安卓系统北斗中间件的实现装置与方法
CN107704276A (zh) * 2017-09-05 2018-02-16 千寻位置网络有限公司 基于Android系统智能终端的高精度解决方法
CN107807373A (zh) * 2017-10-17 2018-03-16 东南大学 基于移动智能终端的gnss高精度定位方法
CN107959845B (zh) * 2017-11-13 2020-09-08 北京小鸟看看科技有限公司 图像数据传输的方法、装置、客户端装置及头戴显示设备
CN107920075A (zh) * 2017-11-17 2018-04-17 北京锐安科技有限公司 一种数据处理的系统
CN108924652B (zh) * 2018-07-02 2020-04-28 四川长虹电器股份有限公司 一种电视信号变化检测的方法
CN108646276A (zh) * 2018-07-24 2018-10-12 成都九洲电子信息系统股份有限公司 基于Android系统的便携式内置北斗通信及导航装置
CN110873886B (zh) * 2018-08-31 2022-03-18 比亚迪股份有限公司 车载定位系统的异常处理方法、装置和车载终端
CN111221009B (zh) * 2018-11-23 2023-10-13 青岛海信移动通信技术有限公司 一种定位芯片的切换方法、移动终端及计算机存储介质
CN110275192B (zh) * 2019-05-22 2021-01-26 东南大学 一种基于智能手机的高精度单点定位方法与装置
CN111050273B (zh) * 2019-08-02 2021-06-04 广东星舆科技有限公司 一种基于android系统实现智能终端高精度定位的方法及系统
CN111399013B (zh) * 2020-03-20 2023-07-18 Oppo广东移动通信有限公司 定位方法、装置、终端及存储介质
CN111966427B (zh) * 2020-08-17 2022-06-21 四川长虹电器股份有限公司 一种Android native调用Java API的实现方法
CN112463897B (zh) * 2020-10-14 2023-06-02 麒麟软件有限公司 一种定位数据重定向的方法及系统
CN112099978B (zh) * 2020-11-12 2021-03-23 南京创维信息技术研究院有限公司 一种位于硬件抽象层的通用唤醒识别算法管理装置及管理方法
CN113392044A (zh) * 2021-05-06 2021-09-14 深圳市广和通无线股份有限公司 基于Windows10的定位数据传输方法、装置
CN114814913A (zh) * 2022-04-19 2022-07-29 大唐终端技术有限公司 Android平台北斗高精度定位控制系统
CN115639583A (zh) * 2022-12-21 2023-01-24 深圳华大北斗科技股份有限公司 基于Android系统的高精度定位装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202471084U (zh) * 2012-01-19 2012-10-03 深圳市飞沃达通信设备有限公司 一种基于Android平台的导航仪
CN203811809U (zh) * 2013-12-12 2014-09-03 东莞市科维电子科技有限公司 一种基于安卓系统的多媒体导航系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108152839A (zh) * 2017-12-22 2018-06-12 西安烽火电子科技有限责任公司 基于Android操作系统的北斗数据通信系统及方法
CN108152839B (zh) * 2017-12-22 2021-11-19 西安烽火电子科技有限责任公司 基于Android操作系统的北斗数据通信系统及方法

Also Published As

Publication number Publication date
CN104236579A (zh) 2014-12-24

Similar Documents

Publication Publication Date Title
CN104236579B (zh) 一种基于Android内核层实现高精度卫星导航定位方法
US11106838B2 (en) Systems, methods, and apparatus to generate an integrated modular architecture model
CN1781077B (zh) 选择性地加载用于在Java微型设备中调试Java应用程序的远程类或资源的系统和方法
US6622175B1 (en) System and method for communications in a distributed processing environment
CN110088737A (zh) 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径
US8589518B2 (en) Method and system for directly mapping web services interfaces and java interfaces
US6947965B2 (en) System and method for communications in a distributed computing environment
CN105637478B (zh) 原生移动应用代码的计算机辅助开发
CN101196926A (zh) 一种数据库访问平台及其访问方法
CN105159670A (zh) 一种通用座舱显示控制系统软件开发框架
US20070073849A1 (en) Method and system for unifying configuration descriptors
CN102929593B (zh) 一种Android系统兼容内置应用的方法
CN102063368B (zh) 基于命名变量的全景数据在线实时调试方法
CN103678098B (zh) 一种hadoop程序测试的方法和系统
EP1872554A4 (en) SYSTEM AND METHOD FOR CREATING A CORRESPONDENCE DOCUMENT FOR BINDING MESSAGES BETWEEN AN APPLICATION AND AN ASSOCIATED BACK-UP SERVER
JP5605109B2 (ja) プログラム生成装置、方法及びプログラム並びに遠隔管理システム
US7594217B2 (en) Matching client interfaces with service interfaces
US7823169B1 (en) Performing operations by a first functionality within a second functionality in a same or in a different programming language
CN101312580B (zh) 一种直放站监控中心和直放站监控方法
CN104423932A (zh) Javascript中调用二进制组件的方法
CN111324395B (zh) 调用方法、装置和计算机可读存储介质
CN111008153B (zh) 一种单元测试方法及系统
CN103684904A (zh) 基于ip三网融合网络监控系统
CN115543546B (zh) 一种基于Spring的模块热部署方法及系统
US8464218B2 (en) Method port arrangement and configuration method thereof for robot software component

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Guo Chi

Inventor after: Cui Jingsong

Inventor after: Guo Wenfei

Inventor after: Zhu Yong

Inventor after: Chen Long

Inventor after: Lou Yidong

Inventor after: Zhao Lei

Inventor after: Gu Shengfeng

Inventor before: Guo Chi

Inventor before: Cui Jingsong

Inventor before: Guo Wenfei

Inventor before: Chen Long

Inventor before: Hou Kun

Inventor before: Zhu Yong

Inventor before: Zhao Lei

Inventor before: Gu Shengfeng

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170512

Address after: 430070 Hubei city of Wuhan province Optics Valley East Lake New Technology Development Zone, Road No. 58 South Park two No. 2 Fuxing Medicine Building 24 room 6

Patentee after: Wuhan six o'clock Beidou Technology Co., Ltd.

Address before: 430072 Hubei Province, Wuhan city Wuchang District of Wuhan University Luojiashan

Co-patentee before: WUHAN ZHIYU SCIENCE & TECHNOLOGY CO., LTD.

Patentee before: Wuhan University