win2kddk 发表于 2011-4-13 23:00:25

加快GPS寻星速度,导入星历数据的操作方法(原创文稿)

我在 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4666414&bbs_page_no=1&bbs_id=3072 中提到的问题现向大家做一个
终结。究竟什么因素导致GPS寻星缓慢,原因不必复述。那么在某种特定要求下通过某种办法来更新星历提高寻星速度是否可行,
答案是肯定的。典型应用就是移动运营商的AGPS。由我的实验来看,在GPS冷启操作之后导入正确的星历数据(还有年历),GPS会
在20秒内(甚至更短)实现3D定位,效果自不必说。那么在大家熟悉的NMEA模式下能否导入星历数据来实现快速定位呢?答案却是
否定的。NMEA只是各GPS厂商所遵循的通讯规范,并没有涉及到星历和年历数据,相信大家也找不到。只有GPS在厂家自已的特定
操作下才会有更高级的设置。
基于SIRF III的GPS设备就是在其二进制模式下来操作底层一些的东西的。大家对C3-370升级固件不陌生,那就是在SIRF的二进制
模式下操作的。废话不多说了进入正题,先说说SiRF二进制的概念吧。
SiRF二进制格式指令有包头(2byte)、信息长度(2byte)、信息内容(<1023byte)、校验和(2byte)与包尾(2byte)构成。
其包头内容固定为0xA0、0xA2,包尾内容固定为0xB0、0xB3。校验和是信息内容中所有字节的累加和。信息长度与校验和都是高
8位在前低8位在后的小端格式。
切换至SiRF二进制模式是由NMEA语句的$PSRF100来执行的,设置好波特率即可。具体请参考NMEA手册。
进入到SiRF二进制模式后有好多NMEA语句无法完成的专用指令,下面讲述如何读写年历和星历数据,来加快GPS寻星的速度。没
玩过吧,现在开始了。

刚刚已执行过切换操作,现通过执行0x92命令来读取当前的年历数据,具体的执行语句为:
A0 A2 00 02 92 00 00 92 B0 B3
年历数据为448个16位有符号类型的数据组成,代表了32颗不同卫星的相对状态,每颗卫星有14个数据。年历数据实际有效数据为
896个字节,其时效期可长达数月。以下为Almanac Collection Time(UTC): Wed Apr 13 08:05:23 2011的年历数据。
以第1行为例,一个长度为30(0x1E)字节的消息体,回复编号为0xOE,即年历数据。第0x01号的卫星数据为:56 C1....4A 3A。

A0 A2 00 1E 0E 01 56 C1 41 32 B0 90 1D 81 FD 58 00 A1 0D 28 81 E3 F2 BA 0A 09 27 3D 33 06 00 2C 4A 3A 0A 12 B0 B3
A0 A2 00 1E 0E 02 97 C1 42 53 63 7B FE 1A FD 4D 00 A1 0D 8F FA 87 D4 84 B5 AC 8C E3 5E 2B 00 2D B7 18 0D A8 B0 B3
A0 A2 00 1E 0E 03 97 C1 43 73 78 63 F6 BD FD 22 00 A1 0C B9 CB 69 6D 2C 0F 4D 46 B3 D8 5C 00 23 BB E4 0D 4A B0 B3
A0 A2 00 1E 0E 04 97 C1 44 4E 70 63 FD 82 FD 43 00 A1 0C A6 FB 45 F7 1D 38 79 C3 08 97 0B 00 77 D9 E3 0D 86 B0 B3
A0 A2 00 1E 0E 05 97 C1 45 12 5E 63 07 F6 FD 25 00 A1 0C B5 25 CD 70 0A BC 58 8E 9D 2E ED FF C3 5D 23 0D 0C B0 B3
A0 A2 00 1E 0E 06 97 C1 46 36 BF 63 FB 6C FD 2C 00 A1 0C B8 CE 66 33 DE 7A 82 9A B4 A3 D1 FC 51 5A E7 0F 90 B0 B3
A0 A2 00 1E 0E 07 97 C1 47 23 21 63 14 E8 FD 5C 00 A1 0C FE 7B 92 E0 80 DD 0E 02 CC 41 01 00 07 9D 1E 0B 85 B0 B3
A0 A2 00 1E 0E 08 97 C1 48 5E 3C 63 23 0C FD 6F 00 A1 0C 81 7E 9C B4 82 7B 94 ED 2B ED 01 00 03 D3 00 0B B7 B0 B3
A0 A2 00 1E 0E 09 97 C1 49 8C D8 63 1A BB FD 63 00 A1 0D 0E 7A 67 10 3F 93 F0 E6 DD BF 09 00 36 A4 2F 0C B7 B0 B3
A0 A2 00 1E 0E 0A 97 C1 4A 52 F2 63 04 AA FD 1F 00 A1 0C 45 26 C7 10 1C BA 9C 99 39 33 F6 00 14 A1 E7 0C 23 B0 B3
A0 A2 00 1E 0E 0B 97 C1 4B 5F E2 63 DC B3 FD 1C 00 A1 0B 89 F0 FD 89 25 70 D2 08 86 56 ED FF EA F5 CD 10 96 B0 B3
A0 A2 00 1E 0E 0C 97 C1 4C 1E 9E 63 14 E3 FD 39 00 A1 0D B1 A6 87 DD F6 8D AF 02 47 26 FE 00 31 DE 52 0D 73 B0 B3
A0 A2 00 1E 0E 0D 97 C1 4D 26 98 63 1E E6 FD 61 00 A1 0C 96 53 D5 1F 49 C6 72 68 9D 20 24 00 00 69 19 0B 19 B0 B3
A0 A2 00 1E 0E 0E 97 C1 4E 2E 1B 63 1A 5D FD 57 00 A1 0C DE 52 DB 89 AA 79 3D 68 77 80 12 00 3D 65 0D 0A FA B0 B3
A0 A2 00 1E 0E 0F 97 C1 4F 1B DE 63 04 F9 FD 36 00 A1 0C 5D 4F D3 00 FD DB 33 57 A7 8F EE 00 28 E8 2C 0D 3E B0 B3
A0 A2 00 1E 0E 10 97 C1 50 34 1B 63 15 8E FD 39 00 A1 0D D3 A7 41 65 FA 32 9D A2 36 33 EA FF EE 3A 79 0D 7D B0 B3
A0 A2 00 1E 0E 11 97 C1 51 33 45 63 0B F9 FD 49 00 A1 0D 8C D1 C0 B7 9D F9 EE 76 46 A3 18 00 06 E2 75 0D C7 B0 B3
A0 A2 00 1E 0E 12 97 C1 52 63 67 63 FA 2D FD 15 00 A1 0C 36 26 93 BF A3 E5 76 AE 23 81 11 00 2B 50 AB 0C 12 B0 B3
A0 A2 00 1E 0E 13 97 C1 53 3B 13 63 0A 60 FD 48 00 A1 0C C0 D3 F5 C8 FF C1 D6 5B 68 59 EE FF FC 27 84 0F 6F B0 B3
A0 A2 00 1E 0E 14 97 C1 54 26 38 63 FA 49 FD 13 00 A1 0C F4 24 61 27 34 6E 5C BD E1 13 06 00 0C B4 1F 0A C3 B0 B3
A0 A2 00 1E 0E 15 97 C1 55 90 7A 63 F9 59 FD 3E 00 A1 0D C2 FB A0 23 9F 00 7E E1 C2 26 EE FF E3 94 FE 10 40 B0 B3
A0 A2 00 1E 0E 16 97 C1 56 2D 08 63 F8 AD FD 11 00 A1 0D 21 26 BF BF AF A2 4E 8E 36 34 13 00 18 44 EE 0B 84 B0 B3
A0 A2 00 1E 0E 17 97 C1 57 3A 74 63 0E 6A FD 46 00 A1 0C 28 51 09 05 7F 93 4F 4A 52 E4 29 FF E5 94 0E 0B 64 B0 B3
A0 A2 00 1E 0E 18 97 C1 58 31 87 63 04 2B FD 48 00 A1 0D 5F FD 6B 55 F4 03 FC 2B E6 98 32 00 22 A2 5D 0C 1E B0 B3
A0 A2 00 1E 0E 19 97 C1 59 05 43 63 0D 96 FD 2F 00 A1 0C E4 A5 55 E0 21 1D DF BF BA 0D FF 00 1D BD 9E 0C D7 B0 B3
A0 A2 00 1E 0E 1A 97 C1 5A A7 DE 63 1D 5A FD 5C 00 A1 0C D9 53 A5 2F 2E 51 D8 3C 41 1A E9 FF AD 24 7D 0D 63 B0 B3
A0 A2 00 1E 0E 1B 97 C1 5B B1 37 63 19 27 FD 66 00 A1 0D 2F 79 59 DF CC 71 D0 64 D5 5B 21 00 33 DA 50 0C 77 B0 B3
A0 A2 00 1E 0E 1C 97 C1 5C 8A F4 63 14 6F FD 37 00 A1 0D 1B A7 8D 62 B2 F3 A4 91 4E D5 04 00 26 6C 6B 0C D3 B0 B3
A0 A2 00 1E 0E 1D 97 C1 5D 16 49 63 0C 41 FD 4A 00 A1 0B F2 D2 17 FD CD 4F 21 EC 1D 64 1A 00 2A C3 BE 0C 29 B0 B3
A0 A2 00 1E 0E 1E 97 C1 5E 67 69 63 0B 64 FD 2C 00 A1 0C D1 A4 26 75 3D F1 75 6E 10 0D 2C 00 26 FB C7 0B AC B0 B3
A0 A2 00 1E 0E 1F 97 C1 5F 3F 95 63 18 46 FD 62 00 A1 0C CA 7B 9D F0 D8 B5 67 03 17 8E 08 00 3B 62 AC 0C 44 B0 B3
A0 A2 00 1E 0E 20 97 C1 60 63 E7 63 08 69 FD 26 00 A1 0D 20 29 6E 3F DF 62 17 20 4E EB E1 FF C9 CA 33 0D 22 B0 B3
以上是32颗卫星的年历数据,当转换为10进制时这些数据是:
22209, 16690, -20336, 7553, -680, 161, 3368, -32285, -3398, 2569, 10045, 13062, 44, 19002
-26687, 16979, 25467, -486, -691, 161, 3471, -1401, -11132, -19028, -29469, 24107, 45, -18664
-26687, 17267, 30819, -2371, -734, 161, 3257, -13463, 27948, 3917, 18099, -10148, 35, -17436
-26687, 17486, 28771, -638, -701, 161, 3238, -1211, -2275, 14457, -15608, -26869, 119, -9757
-26687, 17682, 24163, 2038, -731, 161, 3253, 9677, 28682, -17320, -29027, 12013, -61, 23843
-26687, 17974, -16541, -1172, -724, 161, 3256, -12698, 13278, 31362, -25932, -23599, -943, 23271
-26687, 18211, 8547, 5352, -676, 161, 3326, 31634, -8064, -8946, 716, 16641, 7, -25314
-26687, 18526, 15459, 8972, -657, 161, 3201, 32412, -19326, 31636, -4821, -4863, 3, -11520
-26687, 18828, -10141, 6843, -669, 161, 3342, 31335, 4159, -27664, -6435, -16631, 54, -23505
-26687, 19026, -3485, 1194, -737, 161, 3141, 9927, 4124, -17764, -26311, 13302, 20, -24089
-26687, 19295, -7581, -9037, -740, 161, 2953, -3843, -30427, 28882, 2182, 22253, -22, -2611
-26687, 19486, -24989, 5347, -711, 161, 3505, -22905, -8714, -29265, 583, 9982, 49, -8622
-26687, 19750, -26525, 7910, -671, 161, 3222, 21461, 8009, -14734, 26781, 8228, 0, 26905
-26687, 20014, 7011, 6749, -681, 161, 3294, 21211, -30294, 31037, 26743, -32750, 61, 25869
-26687, 20251, -8605, 1273, -714, 161, 3165, 20435, 253, -9421, 22439, -28690, 40, -6100
-26687, 20532, 7011, 5518, -711, 161, 3539, -22719, 26106, 12957, -24010, 13290, -18, 14969
-26687, 20787, 17763, 3065, -695, 161, 3468, -11840, -18531, -1554, 30278, -23784, 6, -7563
-26687, 21091, 26467, -1491, -747, 161, 3126, 9875, -16477, -6794, -20957, -32495, 43, 20651
-26687, 21307, 4963, 2656, -696, 161, 3264, -11275, -14081, -15914, 23400, 23022, -4, 10116
-26687, 21542, 14435, -1463, -749, 161, 3316, 9313, 10036, 28252, -16927, 4870, 12, -19425
-26687, 21904, 31331, -1703, -706, 161, 3522, -1120, 9119, 126, -7742, 9966, -29, -27394
-26687, 22061, 2147, -1875, -751, 161, 3361, 9919, -16465, -23986, -29130, 13331, 24, 17646
-26687, 22330, 29795, 3690, -698, 161, 3112, 20745, 1407, -27825, 19026, -7127, -27, -27634
-26687, 22577, -30877, 1067, -696, 161, 3423, -661, 22004, 1020, 11238, -26574, 34, -23971
-26687, 22789, 17251, 3478, -721, 161, 3300, -23211, -8159, 7647, -16454, 3583, 29, -16994
-26687, 23207, -8605, 7514, -676, 161, 3289, 21413, 12078, 20952, 15425, 6889, -83, 9341
-26687, 23473, 14179, 6439, -666, 161, 3375, 31065, -8244, 29136, 25813, 23329, 51, -9648
-26687, 23690, -2973, 5231, -713, 161, 3355, -22643, 25266, -3164, -28338, -11004, 38, 27755
-26687, 23830, 18787, 3137, -694, 161, 3058, -11753, -563, 20257, -5091, 25626, 42, -15426
-26687, 24167, 26979, 2916, -724, 161, 3281, -23514, 30013, -3723, 28176, 3372, 38, -1081
-26687, 24383, -27293, 6214, -670, 161, 3274, 31645, -3880, -19097, 791, -29176, 59, 25260
-26687, 24675, -6301, 2153, -730, 161, 3360, 10606, 16351, 25111, 8270, -5151, -55, -13773

将年历数据写入到GPS要执行0x82命令来写入当前的年历数据,具体的执行语句为(数据是上面读出的例子):
A0 A2 03 81 82 56 C1....CA 33 xx xx B0 B3
长度为897(0x381)字节的消息体,命令编号为0x82(命令编号也是消息体的一部分),即年历数据。数据为第1号卫星到第32号卫星的所
有数据。xx xx为该消息体的校验和。
设备收到有效写入数据后将回复A0 A2 00 02 0C 82 00 8E B0 B3,即0x82指令已经确认,年历数据更新完成。


关键的星历数据操作来啦。通过执行0x93命令来读取当前的星历数据,具体的执行语句为:
A0 A2 00 03 93 00 00 00 93 B0 B3
以下为北纬37.632东经115.613 (UTC)13 08:16:54 2011的部分星历数据(4颗星):
长度为92(0x5C)字节的消息体,0x0F为消息编号,即星历数据,后面的0x16是当前编号为22的卫星数据,内容为:00 16 00 5D...F2 A7。

A0 A2 00 5C 0F 16 00 16 00 5D F0 26 97 D2 00 4F 1B DE BC 3B 46 70 30 64 D0 02 DB 57 48 12 00 FF FC 13 B3 FE 00 16 00
5D D5 2A 57 00 81 3E 03 FE BE 3C 76 00 9F 02 D0 30 0F 0A 92 A1 0D 9E 56 48 12 7E 00 16 00 5D D5 AC FF F2 26 CA 0A E0
00 16 25 F0 F8 FF 21 24 AF 97 CE B0 FF 9F 37 57 F2 A7 26 2B B0 B3

A0 A2 00 5C 0F 1E 00 1E 00 5D C0 A7 97 D1 00 57 1B DE BC 3B 46 70 30 64 D0 02 EF 47 48 12 00 00 19 2C 1D A9 00 1E 00
5D C1 29 47 FB 62 36 49 DE 92 35 54 FC 56 06 76 7E A6 08 38 A1 0D 43 04 48 12 7D 00 1E 00 5D C1 AF FF A4 A4 30 51 5A
00 45 27 1C 64 F0 26 48 3D E9 08 6E FF A0 61 47 03 04 20 35 B0 B3

A0 A2 00 5C 0F 1F 00 1F 00 5D C0 A7 97 D0 00 5F 1B DE BC 3B 46 70 30 64 D0 02 E4 32 48 12 00 00 2D 08 A4 A3 00 1F 00
5D C1 29 32 09 41 2C 16 73 99 27 11 08 39 03 FA 1B FC 10 7A A1 0D 20 D2 48 12 7E 00 1F 00 5D C1 AF 00 2F 7B A6 EC 9F
00 0D 27 EA 6F 8D 1D AD D8 AD 8B 59 FF A9 C1 32 0F 4B 20 97 B0 B3

A0 A2 00 5C 0F 20 00 20 00 5D C0 A7 97 D0 00 5F 1B DE BC 3B 46 70 30 64 D0 02 F9 87 48 12 00 FF BF E1 4E CA 00 20 00
5D C1 29 87 FF FA 35 44 90 D5 02 5F 00 0A 06 3D 5E 4E 0B 58 A1 0D 95 A2 48 12 7D 00 20 00 5D C1 AF 00 01 29 78 38 7C
00 5B 26 EC EF B5 21 CC DF 59 7F 28 FF A6 BC 87 F2 30 24 DE B0 B3

以上4颗卫星的星历数据转换为10进制为:
22, 93, 61478, 38866, 79, 7134, 48187, 18032, 12388, 53250, 56151, 18450, 255, 64531, 46078, 22, 93, 54570, 22272,
33086, 1022, 48700, 30208, 40706, 53296, 3850, 37537, 3486, 22088, 4734, 22, 93, 54700, 65522, 9930, 2784, 22, 9712,
63743, 8484, 44951, 52912, 65439, 14167, 62119

30, 93, 49319, 38865, 87, 7134, 48187, 18032, 12388, 53250, 61255, 18450, 0, 6444, 7593, 30, 93, 49449, 18427, 25142,
18910, 37429, 21756, 22022, 30334, 42504, 14497, 3395, 1096, 4733, 30, 93, 49583, 65444, 42032, 20826, 69, 10012, 25840,
9800, 15849, 2158, 65440, 24903, 772

31, 93, 49319, 38864, 95, 7134, 48187, 18032, 12388, 53250, 58418, 18450, 0, 11528, 42147, 31, 93, 49449, 12809, 16684,
5747, 39207, 4360, 14595, 64027, 64528, 31393, 3360, 53832, 4734, 31, 93, 49583, 47, 31654, 60575, 13, 10218, 28557,
7597, 55469, 35673, 65449, 49458, 3915

32, 93, 49319, 38864, 95, 7134, 48187, 18032, 12388, 53250, 63879, 18450, 255, 49121, 20170, 32, 93, 49449, 34815, 64053,
17552, 54530, 24320, 2566, 15710, 19979, 22689, 3477, 41544, 4733, 32, 93, 49583, 1, 10616, 14460, 91, 9964, 61365, 8652,
57177, 32552, 65446, 48263, 62000

哪些卫星的星历数据有效,将出现该编号卫星的数据。星历数据的有效期仅为几小时。
将星历数据写入到GPS要执行0x95命令来写入,具体的执行语句为:
A0 A2 00 5B 95 00 16 00 5D F0 26 97 D2 00 4F....F2 A7 xx xx B0 B3
A0 A2 00 5B 95 00 1E 00 5D C0 A7 97 D1 00 57....03 04 xx xx B0 B3
A0 A2 00 5B 95 00 1F 00 5D C0 A7 97 D0 00 5F....0F 4B xx xx B0 B3
A0 A2 00 5B 95 00 20 00 5D C0 A7 97 D0 00 5F....F2 30 xx xx B0 B3
每次只能写入一颗卫星的星历数据,即每次写入合计99字节。
每执行完一条指令后设备将回复A0 A2 00 02 0C 95 00 A1 B0 B3,即0x95指令已经确认,当前卫星的星历数据更新完成。

至此年历和星历数据已经写入到GPS设备中了,数据时效正确的话应该很快就可以定位了。手机中SIRF方案的AGPS辅助定位也只能这么操
作。具体的年历和星历数据内容标准定义请参考ICD-GPS-200文档说明,我们只是把GPS中有效数据读出来再写到冷启后的GPS中,其他的
具体应用就不做探讨啦。

其实在SiRF二进制模式下有比NMEA模式更大的权限,操作与解析的方法也更加严谨和方便(传说中的静态导航步行模式也在该模式下设置,
注意0x8F指令,呵呵)。当然NMEA则是通用的语法,兼容性没的说。在二进制模式下大家不必感到陌生,只要看好手册,核对好波特率绝
对没有问题。
以上所获取的数据及操作方法在基于SIRF III的C3-370上调试成功。好啦,以9600波特率,切换回NMEA方式下继续调试吧。
A0 A2 00 18 81 02 01 01 00 01 01 01 05 01 01 01 00 01 00 01 00 01 00 01 00 01 25 80 01 3A B0 B3

SiRF Binary Protocol Reference Manualourdev_630632MBRZ3W.pdf(文件大小:2.28M) (原文件名:SiRF2-Navman.pdf)


程序配合一下,更明白些了。

unsigned char Almanac_Data;      //年历数据占用448个字即896个字节
unsigned char Ephemeris_Data;   //星历数据为32颗卫星,每颗卫星占用45个字即90个字节

/****************************************************************************
【功能说明】将GPS由NMEA切换至SIRF二进制模式下,波特率为57600
****************************************************************************/
void Switch_to_SiRF57600(void)
{
    UART_SendStr(GPS,"$PSRF100,0,57600,8,1,0*37\r\n");
}

/****************************************************************************
【功能说明】将GPS由SIRF二进制模式切换至NMEA下,波特率为4800
****************************************************************************/
void Switch_to_NMEA4800(void)
{
    unsigned char i;

    unsigned char NMEA4800={0xA0,0xA2,0x00,0x18,0x81,0x02,0x01,0x01,\
    0x00,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x00,0x01,0x00,0x01,0x00,0x01,\
    0x00,0x01,0x00,0x01,0x12,0xC0,0x01,0x67,0xB0,0xB3};

    for (i=0;i<sizeof(NMEA4800);i++)
    {
      UART_SendByte(GPS,NMEA4800);
    }
}

/****************************************************************************
【功能说明】在SIRF二进制模式下,设置年历数据
****************************************************************************/
void Set_Almanac(void)
{
    unsigned char Head={0xA0,0xA2,0x03,0x81,0x82};
    unsigned short i;
    unsigned short sum;

    for (i=0;i<sizeof(Head);i++)
    {
      UART_SendByte(GPS,Head);                        //发送设置年历指令
    }
    sum = 0x82;                                         //该指令也是消息体的一部分,也参与校验
    for (i=0;i<sizeof(Almanac_Data);i++)
    {
      UART_SendByte(GPS,Almanac_Data);
      sum += Almanac_Data;
    }
    UART_SendByte(GPS,sum>>8);
    UART_SendByte(GPS,sum&0xFF);                        //发送校验和

    UART_SendByte(GPS,0xB0);
    UART_SendByte(GPS,0xB3);                        //发送包尾结束数据
}

/****************************************************************************
【功能说明】在SIRF二进制模式下,设置星历数据
****************************************************************************/
void Set_Ephemeris(void)
{
    unsigned char Head={0xA0,0xA2,0x00,0x5B,0x95};
    unsigned short i,j;
    unsigned short sum;

    for (i=0;i<32;i++)               //共有32颗卫星数据将要逐次发送
    {
      if ((Ephemeris_Data==0x00) && (Ephemeris_Data==0x00))
      {
            continue;                     //卫星数据无效的不用发送
      }
      else
      {
            for (j=0;j<sizeof(Head);j++)
            {
                UART_SendByte(GPS,Head); //发送设置星历指令
            }
            sum = 0x95;               //该指令也是消息体的一部分,也参与校验
            for (j=0;j<90;j++)
            {
                UART_SendByte(GPS,Ephemeris_Data);
                sum += Ephemeris_Data;
            }
            UART_SendByte(GPS,sum>>8);
            UART_SendByte(GPS,sum&0xFF);    //发送校验和

            UART_SendByte(GPS,0xB0);
            UART_SendByte(GPS,0xB3);       //发送包尾结束数据
      }
    }
}

win2kddk 发表于 2011-4-13 23:06:05

附件更新至楼主位

yangyi 发表于 2011-4-13 23:36:33

搬个板凳学习

tomtone 发表于 2011-4-14 01:17:19

mark

258963519 发表于 2011-4-14 11:27:44

不错,留个记号

3466756555 发表于 2011-4-14 11:36:02

不错 更深了一层!

lz可否说一下基本的 GPS位置滤波 的思路?

gps模块有飞点的情况 。

clever0725 发表于 2011-4-14 11:36:24

好东西

bigfatfish 发表于 2011-4-14 11:56:28

强大
mark

win2kddk 发表于 2011-4-14 13:17:13

程序更新至楼主位

wowbanui 发表于 2011-4-14 13:25:14

这个要顶!

chengluoran 发表于 2011-4-14 15:11:31

顶!!!!!

casterbn 发表于 2011-4-15 10:23:00

顶!!!!!
不过这样使用gps模块好像漂移会大一点。

win2kddk 发表于 2011-4-15 11:02:09

把别的GPS模块采集的年历和星历数据传到自已的GPS模块上,只是为了找星座和定坐标快些。当然GPS也不傻,虽然和自已真实的坐标星历有偏差,但是有了个很相近的参考,很快就能算出正确的位置了,对重新捕获星座数据也有很大的帮助。
AGPS不是把附近的基站星历也传到手机上么,当然基站没有超过100公里了,呵呵。。。

flyforyou85 发表于 2011-4-15 11:12:03

楼主,对于GPS的钻研有点精神,顶一下!

win2kddk 发表于 2011-4-15 11:37:00

【5楼】 3466756555
lz可否说一下基本的 GPS位置滤波 的思路?
gps模块有飞点的情况 。
==================================================
在Google Earth中有个GPS导入,那里面有个轮询间隔,给了我一些启发。所以我现在的做法是采集4次累加,右移2位取平均。

piaotianxia 发表于 2011-4-15 14:24:45

mark!!

longquan 发表于 2011-4-15 14:49:58

马克#

tonyking0020 发表于 2011-4-15 16:24:31

受教了。。。

linnan100234 发表于 2011-4-18 14:40:42

不知道能不能问下 我想做一个gps   来测量距离 精度不要求太高 十米八米的误差就中 再小点就更好 了 不知道咱论坛这批 能达到这样的精度么?

wenfeiexe 发表于 2011-4-18 15:43:50

mark

af00 发表于 2011-4-18 16:08:56

谢谢,学习!

rockgoogle 发表于 2011-5-6 00:41:44

学习

dr2001 发表于 2011-5-6 08:42:23

Mark一下,信息很有用。

mdf1314 发表于 2011-5-6 09:01:27

mark

bbsview 发表于 2011-5-6 10:27:16

mark

cuit4017 发表于 2011-5-10 00:46:24

不错不错。

hanhuliang 发表于 2011-5-10 08:56:03

mark

rlogin 发表于 2011-5-11 09:17:07

年历和星历怎么得到呢?

lixupeng 发表于 2011-5-26 21:37:53

mark

zhangbiyu 发表于 2011-5-31 19:43:37

刘下记号 回去修改

weiwei4 发表于 2011-6-6 15:53:25

这个应用很实际啊,学习了

orange2348 发表于 2011-6-6 17:36:35

学习了

phil 发表于 2011-6-15 17:54:39

谢谢了,学习下

aazhou2835 发表于 2011-7-10 22:38:28

学习

zym_0826 发表于 2011-7-10 22:42:05

留着学习学习。

yiltoncentwr 发表于 2011-7-24 20:45:11

不错 更深了一层!

416446891 发表于 2011-7-24 22:20:04

MARK

popstar419 发表于 2011-8-24 11:48:04

回复【楼主位】win2kddk
-----------------------------------------------------------------------
win2kddk 大哥,看到你的帖子深受启发,目前遇到以下问题望指教
1 我用sim18模块,转换到二进制模式下,串口一直有输出,有没有什么命令可以关闭输出?好用串口助手一步步调试
2 不管是nmea,还是二进制模式,模块响应都很不及时,需要连续发很多次命令才有响应,大哥你是怎样调试的?
3 nmea模式下发送命令有没有返回值?主要是想知道到底模块到底有没有工作,目前判断方法为开启模块后串口一直有输出

谢谢。

popstar419 发表于 2011-8-30 08:05:06

回复【38楼】popstar419 痴猫追风
-----------------------------------------------------------------------

1.Set Message Rate – Message ID 166 可以关闭指定消息
2.3.3V 转 1.8V 直接电阻分压造成驱动能力下降,改用小电阻分压或用电平转换芯片
3.nmea无返回值,模块上电后工作后串口一直有输出

lanxing18 发表于 2011-8-30 09:30:21

Mark

yusufu 发表于 2011-8-30 09:43:22

mark~~

mahong123 发表于 2011-8-30 10:44:22

哇卡!好东西,顶出来

slzxriver 发表于 2011-8-30 11:35:23

mark

myhonour 发表于 2011-8-30 14:02:37

mark

xlf159 发表于 2011-9-9 16:34:52

mark

bruceunicore 发表于 2011-9-11 23:04:20

回复【楼主位】win2kddk
-----------------------------------------------------------------------
MARK

Dalong357 发表于 2011-10-16 22:17:58

搬个板凳学习

cana11225 发表于 2011-11-7 18:50:53

mark

wuxi_stl 发表于 2011-11-8 09:02:40

mark

teencole 发表于 2011-11-8 09:53:24

谢楼主,对这个很感兴趣。

kiema 发表于 2011-11-14 12:34:41

mark

amote 发表于 2011-11-14 12:47:42

mark

bin9420 发表于 2011-11-15 18:31:10

这个很强大,还需要好好学习啊

01537 发表于 2011-11-24 17:39:38

mark!

chenxiangting 发表于 2011-11-25 09:54:03

天才。呵呵

ericl_Q 发表于 2011-12-3 15:00:20

GPS MARK

litteworm 发表于 2012-1-2 10:39:20

mark

XL_J 发表于 2012-1-2 14:51:39

mark

jason_more 发表于 2012-1-30 14:51:42

mark

chenguanghua 发表于 2012-1-30 16:14:43

学习

dianzichina 发表于 2012-1-30 22:47:56

留下的总是精华啊。

3466756555 发表于 2012-1-31 09:20:04

回复【14楼】win2kddk
【5楼】 3466756555
lz可否说一下基本的 gps位置滤波 的思路?
gps模块有飞点的情况 。
==================================================
在google earth中有个gps导入,那里面有个轮询间隔,给了我一些启发。所以我现在的做法是采集4次累加,右移2位取平均。
-----------------------------------------------------------------------

方案1:去掉最大最小值
       有时候回发现一个飞的很远的点
方案2:采集5组 然后取中值

以上方法 只判断经度 或者纬度还可以
不知道两个量都判断 如何取中值或者求平均

spark51 发表于 2012-1-31 09:25:13

学习了

fly_lj 发表于 2012-2-4 15:38:00

学习了正好需要这个资料

du722 发表于 2012-2-28 17:13:39

MARK有空研究一下。

723536475 发表于 2012-2-28 18:54:47

记号,,,,

w_ying_qun 发表于 2012-4-11 22:39:20

明天看一下具体内容

supan1001 发表于 2012-4-23 15:37:16

mark
谢谢..............

yizchan 发表于 2012-4-23 21:22:09

这个严重感兴趣。

eryueniao 发表于 2012-5-29 15:09:15

厉害                                       

STEVEN.PANG 发表于 2012-6-2 10:55:41

make 不知几才可下呢
页: [1]
查看完整版本: 加快GPS寻星速度,导入星历数据的操作方法(原创文稿)