2023年05月27日
包括伪距数据的传感器数据采集Service已经完成
IMU、磁场、气压数据
这几个传感器的采样率比较高,之前是把所有的数据采集、预处理和保存都放到MainActivity中,所以有时候会丢失数据,时间戳也有问题。现在用SensorsService实现这几个100Hz的传感器数据采集。

新版本数据保存时,会在最后两列放上GNSS周秒数据,用于和GNSS数据作时间对齐。
GNSS数据
GNSS数据和伪距数据采样率低,之前采集GNSS定位数据保存是没有问题的。这一次更改了GNSS数据格式,新格式为:
| Vel-E | Vel-N | Vel-U | Pos-E | Pos-N | Pos-U | Vel-Err | Pos-Err | Week | Second |
Android的GNSS接口提供的时间为Unix时间,所以需要自己转换成周秒。
long unixsec = location.getTime()/1000 - UnixSecErr + LeapSecond;
gnssdata[0] = (double) ((int) unixsec/604800); // 周
gnssdata[1] = (double) unixsec%604800; // 秒
- To convert UTC to week seconds, you can use the same formula as before, but in reverse. First, you need to get the number of seconds since the Unix epoch (January 1st, 1970 at UTC) for the UTC date and time you want to convert. You can use a tool like or to do that. Then, you can divide the number of seconds by 604800 to get the number of weeks, and use the remainder to get the number of seconds in the current week. For example, if you want to convert May 22, 2023 at 9:44:20 AM UTC to week seconds, you can do the following:
Get the number of seconds since the Unix epoch for May 22, 2023 at 9:44:20 AM UTC. According to , it is 1684748660.
Divide 1684748660 by 604800 to get the number of weeks. The result is 2785 with a remainder of 29860.
The week seconds are 2785 weeks and 29860 seconds.
- GNSS周秒是GNSS时间的周数和秒数的组合。GNSS时间是一种统一的时间系统,用于协调全球导航卫星系统(GNSS)的运行。不同的GNSS有不同的起始时间,例如GPS时间是从1980年1月6日开始,而伽利略时间是从1999年8月22日开始。要将UTC转换为GNSS周秒,你可以先将UTC转换为UNIX时间戳,然后根据不同的GNSS起始时间,计算出相应的周数和秒数。你可以使用1或2来进行这些转换,或者使用3来直接计算不同的GNSS时间。
GNSS闰秒是指为了协调全球导航卫星系统(GNSS)的时间与协调世界时(UTC)之间的差异,而在UTC中偶尔增加或减少一秒的调整。¹⁴
- 由于地球自转的不规则和长期减慢,UTC和UT1之间的差值必须保持在±0.9秒以内。²⁴ 因此,每次闰秒的插入通常由国际地球自转服务(IERS)提前约六个月决定,并由国际度量衡局(BIPM)发布。²
- 自1972年引入闰秒以来,已经有27次闰秒被添加到UTC中,都是正闰秒,即在UTC中插入一秒。⁴ 闰秒的插入一般发生在6月30日或12月31日的最后一秒,即23时59分59秒或23时59分60秒。¹⁴
- GNSS系统使用原子时(TAI)作为其内部时间标准,TAI比UTC快37秒。² GNSS系统会通过导航电文广播当前的闰秒信息,以便接收机能够将GNSS时间转换为UTC时间。不同的GNSS系统可能有不同的广播格式和更新频率。³
From Bing AI
伪距数据
根据谷歌的说法,大多数设备都可以提供原始测量数据,但是实际操作起来相关的资料很少。开发者网站的指南也比较简单,提供的各种工具倒是非常多,可以下载GNSS Logger App测试和采数,同时提供了丰富的Matlab程序用于数据处理和分析。
大多数在 2016 年或之后生产并且搭载 Android 7.0 或更高版本的设备都可以提供 GNSS 数据。
根据设备的不同,GNSS 原始测量数据可以包含以下全部或部分数据:
- 伪距和伪距率。
- 导航消息。
- 累计变化量或载波。
- 硬件 (HW) 时钟。
手机采集到的伪距数据(室内靠窗测试,不够稳定)

卫星序号四大系统120颗导航卫星的排序。
2023年2月10日
第1版计划
几个“小”目标
- 第一版APP发布已经很久了,在此期间偶尔会使用他采集数据,也发现了不少问题,刚好更新一版,优化一下APP
- 目前仅仅能完成航姿和组合导航,在手机平台还是有很多定位数据没有采用,比如gnss原始数据 步态监测数据 摄像头图像数据等等
- 不是所有手机都可以提供GNSS Raw数据,但是对于可以提供部分伪距数据的设备,是否可以通过网络星历信息实现定位?
- 在手机端实现算法比较麻烦,能不能手机端仅仅作为表头,不构成系统,系统部分在PC端实现。
项目框架
