导航技术

June 10, 2008 7:28 pm UTC | In Study

A. GPS

某日 delphij 同学来访,到我楼下给我打电话是这么说的:“我现在 GPS 显示的坐标是北纬 37 度 25 分 33 秒,西经 122 度 9 分 25 秒,我不确定是不是就是这个楼?”我只好立刻在 Google Map 输入经纬度,心里默念这是不是太军事化了……

全球定位系统(GPS),一个耳熟能详的名字,我以前几篇土文曾提到过一些。GPS 卫星网目前有超过 30 颗在工作,在地球上大部分地区大部分时间可以同时看到至少 8 颗卫星,其中 45 度仰角之上至少 4 颗。能看到 4 颗卫星就够定位用了,所以即使在高楼耸立的大城市里,GPS 定位还是十分有效的。现代 GPS 芯片可以同时处理 12 颗 GPS 卫星的信号以提高精度,一般在空旷地带可以达到 10 米以下的水平定位精度。

GPS 的民用卫星信号曾经人为的加入高达 100 米的误差(所谓的 Selective Availability,简称 SA),后来由于种种原因终于在 2000 年 5 月被关掉,将来的卫星也将不再包含 SA 功能,所以相信 SA 已经永远消失了。也正是在 SA 被关闭之后,GPS 的民用价值才大大的被发挥出来了。有人评论美国国防部干过的最有用的两件事情之一就是架构这个 GPS 了。不过假如美国哪天不高兴了把它关掉,那么全世界的 GPS 接收器就都完完了。为此,欧盟、俄罗斯、印度、日本都有卫星定位系统的项目,中国的北斗似乎也开始工作了,不过这些个系统要达到 GPS 的规模都还需要很多年的时间。

GPS 的定位误差来源于很多方面,比较大的有电离层干扰、原子钟和卫星轨道误差等。大部分大的误差项在空间和时间上的变化都是缓慢的,在某个时间段某个大城市里所有的 GPS 接收器都有几乎相同的误差,这就为进一步修正 GPS 误差提供了可能性。

B. DGPS

接上面一段,如果某个大城市里有一个固定不动的 GPS 接收站事先知道自己的精确坐标,那么它接收 GPS 信号之后就可以判断出 GPS 信号的误差;如果它再把这些误差信息广播给这个城市里所有的 GPS 接收器,那么大家就都可以修正自己的坐标得到很精确的定位了。这个就是差分 GPS(Differential GPS,DGPS)的基本思想。

要发挥出 DGPS 的潜能,需要大批地面基站网,这个有不少国家都做了,甚至自己也可以建。如果和基站距离很近,厘米级的定位是可以达到的,Precision Farming 就是农民应用现代 DGPS 技术的一个例子,也有人用 DGPS 来让轮船精确靠岸等等,不过大部分大型 DGPS 系统都要交点钱才能用(解码误差信号),在美国很受欢迎的 WAAS 系统,使用则不需要缴年费。

WAAS 最早开发出来是用来在美国境内精确导航飞机的。WAAS 在地面有几十个基站,各个基站的误差数据汇总后发给两颗同步卫星(间隔 26 度经线,固定在美洲大陆赤道上空),再由这两颗卫星转发给地面的 WAAS-enabled GPS 接收器。这类接收器现在市面上很多,如果在美国用就能(在屏幕上)看到南方大概 45 度仰角的地方两颗固定不动的卫星(编号 48、51),只要接收到其中一颗的信号,那么定位精度就可以到 5 米以下,最好的地方可能能到 1 米左右。

很多带 GPS 的手机现在都开始用 A-GPS(Assisted GPS)技术了,用手机基站的 GPS 信号来辅助定位,不但可以在 GPS 信号很差的情况下定位,同时手机基站也可以作为 DGPS 基站提供差分误差数据以提高定位精度。

C. INS

我们平时坐车都会感受到惯性力,车加速的时候人会往后靠,车拐弯的时候人会往侧面倾斜。想象把人用上下左右前后六个弹簧秤吊在车里,那么就可以把三个方向的惯性力也就是加速度测量出来,加速度累加可以得到速度,速度再累加一次就可以得到位置,这样就可以导航了(准确的说,是把加速度积分两次得到位置,需要预先知道初始速度和初始位置)。这种导航机制叫做 INS,全称 Inertial Navigation System 惯性导航系统,本质上和 GPS 完全不同。

光测量三个方向的加速度是不够的。想象有一架飞机在往北飞,飞机上的加速度仪感受到了一个向东的力,这可能是因为飞机在往西转弯(转动产生的离心力),也可能是因为突然吹来一阵东风但飞机仍在往正北飞行,如果不能区分这两种情况,那么机头朝向就会算偏掉。因此,真正能用的 INS,还需要一个精度很高的定向仪,一般叫做陀螺仪(gyroscope),最简单的做法就是在飞机里放一个高速旋转的陀螺,在比较理想的情况下,陀螺的指向基本不随飞机转动而变化(物理学里这个叫做角动量守恒),这样就可以定向了。

总结起来,加速度仪 + 陀螺仪 + 强大的计算机就可以制作 INS 了。实用的 INS 需要考虑经纬度、地球自转、科里奥利力等,需要做大量的转动坐标系变换,还需要事先知道各地引力的变化。爱因斯坦说,引力和加速度是等效的,所以假如飞机经过一个事先不知道的金矿时引力变大,那么 INS 测到额外的加速度就会误以为飞机开始上升了。INS 还有一个致命的问题是累积误差会越来越大。单是电子设备的噪声,如果不加修正,经过一段时间的两轮累加就会产生巨大的误差。在 GPS 建成之前,人们花了很多功夫在 INS 上面,尽管 INS 早已实用,但是仍旧太复杂,造价太高,大概只有军用、航天和大型客机之类的地方才用得起。当初,如果 INS 和小型计算机没有及时的被发明出来,阿波罗登月那是不可能的(肯尼迪当年就是如此牛逼的预计到了各类技术都快成熟了)。

D. GPS + INS

GPS 和 INS 的关系非常互补,表现在一个的缺点往往是另一个的优点。INS 长期工作出现的累积误差可以被拥有外部参照系的 GPS 及时修正;而正因为 INS 不需要外部参照,在 GPS 失效的情况下(隧道、海底、敌人干扰等),INS 可以暂时接替导航工作直到 GPS 信号恢复;另外 INS 的数据输出很快,即使 GPS 信号良好,INS 也可以辅助提供更精确的定位信息。如果再加上 DGPS,DGPS + INS 的组合基本就是无敌的了,不过飞机起降还有本地雷达无线电导航,据说最帅的自动降落系统因为实在太精确了,不得不人为加入随机误差以免太多飞机在同一个地方触地把跑道砸坏。

Tags: , , , , ,

13 Comments »

RSS feed for comments on this post.

  1. 地址暴露贴,另外google maps里面可以直接输坐标查地址? how to?

    Comment by fishy — June 10, 2008 8:28 pm UTC #

  2. 输入 37 25 33, -122 9 25,要不然 37 25 33n, 122 9 25w 也可以。。。我的地址 About 里面就有!

    Comment by atppp — June 10, 2008 9:08 pm UTC #

  3. 又长知识了,感激A core

    Comment by Orz — June 10, 2008 10:02 pm UTC #

  4. A 董您的文章真是都有发表赚稿费的水平了
    每次看了都收获很多!

    Comment by kxn — June 11, 2008 8:46 am UTC #

  5. 另外你们美国GPS定位精度太高了,看来 delphij 就是在那个位置停车的。

    Comment by kxn — June 11, 2008 8:46 am UTC #

  6. 强大!

    Comment by kisstar — June 12, 2008 2:34 am UTC #

  7. A-core 在介绍一下 AGPS 吧

    Comment by chen3feng — June 12, 2008 2:56 am UTC #

  8. 陀螺仪的这个原理和角动量守恒好像不是一回事…

    Comment by LianQiao — June 13, 2008 5:56 pm UTC #

  9. orz

    Comment by Kommit — June 13, 2008 8:12 pm UTC #

  10. 国内的INS技术之落后啊…

    除了进口的Su-27和J-10之外,军方的战机都没有INS。

    Comment by bigmonkey — June 25, 2008 9:43 pm UTC #

  11. delphij同學這個星期確實已經蹭了我兩頓飯了,期待第三頓… 囧rz

    Comment by neo — June 25, 2008 9:51 pm UTC #

  12. kao, you are as lazy as me, no update for long time la

    Comment by weiapplele — June 26, 2008 7:49 pm UTC #

  13. I am glad to see comments coming in without my updates. haha

    Comment by atppp — June 26, 2008 9:46 pm UTC #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This weblog is licensed under a Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.