全球定位报告
全球定位系统 (GPS) 催生了许多独特的应用,注定要在世界技术奇迹中占据一席之地。自动位置报告系统 (APRS) 是一种应用,它使用 GPS 让业余无线电操作员向远程接收器广播纬度、经度、航向、速度和天气。Linux 在此应用中发挥着重要作用,它提供了无线 APRS 局域网和互联网之间的网关。本文介绍了 GPS 和 APRS,并描述了 Linux 如何被用于开发全国性的 APRS 骨干网。文章还包括主机和网站列表,Linux 用户可以连接到这些主机和网站以获取实时位置报告。我还将讨论 Linux 应用程序 aprsmon、aprsd 和 PerlAPRS,它们利用 Linux 和互联网的力量来扩展 GPS 的实用性。
当历史学家回顾二十世纪的工程成就时,全球定位系统 (GPS) 肯定会位列工程奇迹之首。它代表了计算机硬件和软件、可靠性、卫星技术、物理学、通信和电子工程方面的重大成就。以任何标准衡量,它都是一个奇迹,也是人类可以完成任何想象得到的事情的信念的证明。
正如科幻小说作家、地球同步卫星的“教父”亚瑟·C·克拉克曾经说过,“任何足够先进的技术都与魔法无异。” 在许多方面,这句话完美地描述了 GPS——它就是魔法。虽然实际上每个人今天都听说过 GPS,但它并非一直如此广为人知。我记得几年前有人递给我一个小型的 GPS 接收器,并告诉我这个小设备可以告诉我我在地球上任何地方的位置。我简直不敢相信,也不准备被这种谣言所迷惑。这个设备,几乎只有手机大小,怎么可能告诉我我在几百英尺内的位置?这不可能;这一定是恶作剧。经过进一步的讨论和演示,我被迷住了;我知道我必须拥有一个,但不确定为什么。当自动位置报告系统 (APRS) 正在开发时,我知道我找到了我的借口。
自动位置报告系统是和平时期的应用之一;它将 GPS 与业余无线电结合在一起。APRS 是当今最流行的业余无线电方面之一,Linux 通过几个独特的应用程序支持 APRS。例如,如果您想知道玫瑰碗游行中花车的确切位置或奥运火炬的位置,APRS 可以提供该信息。
自动位置报告系统允许业余无线电操作员发送和接收从 GPS 接收器或已知固定位置获得的位置报告。(参见 APRS 格式。)在固定位置应用中,射频数据包传输从固定位置(如建筑物或住宅)广播。由于站点是固定的,因此无需 GPS 接收器持续更新其位置。更有趣的是车辆被跟踪的移动应用。
大多数 GPS 接收器都有图形液晶显示器 (LCD),通常安装在汽车仪表板上以便于观看。电缆将内部 GPS 接收器连接到外部天线。外部天线很重要,因为它提供更好的接收效果。虽然 GPS 接收器向车内人员提供可视信息,但几乎所有 GPS 设备都提供 RS-232/4800 波特连接,以允许接收器连接到外部设备,例如笔记本电脑。但是,对于 APRS 应用,我们有兴趣将我们的位置广播到无线 APRS 网络。因此,GPS 接收器的串行输出连接到终端节点控制器 (TNC),它像调制解调器一样工作,并将数字数据流转换为模拟音调。然后将音调馈送到发射器,该发射器广播包含 GPS 位置信息的数据包。图 1 显示了此配置。
图 2 显示了一个跟踪器的示例。这里,一辆普通的汽车被展示出来,后备箱上安装了一些不太普通的设备。位于后备箱中心的感兴趣物体是 GPS 卫星天线。图中还显示了一根垂直鞭状天线,用于从车辆内的发射器广播 APRS 数据包。第二根垂直鞭状天线用于语音通信。请忽略窗帘后面的人(即,靠在汽车上的人)。
目前,全国范围内正在努力将本地 APRS 局域网接收到的信息提供给互联网。这是通过 APRS 服务器完成的,这些服务器向互联网提供实时的 APRS 流量。通过使用简单的 TELNET 客户端,可以连接到服务器并查看在美国各地收集的信息。有几个 APRS 服务器可用于不同的操作系统。对于 Linux 用户,目前有两个可用的 APRS 服务器:aprsmon 和 aprsd。
aprsmon 服务器可以在 http://www.cloud9.net/~alan/ham/aprs/ 找到;aprsd 可以在 http://www.wa4dsy.radio.org/Files/aprsd.beta101.tar.gz 找到。APRS 服务器允许用户连接并检查位于几个大都市区的远程 APRS 网络。全国服务器网络正在扩展,最终目标是允许人们在美国的任何地方定位移动跟踪器。为了更好地理解这些服务器提供的信息,请尝试 TELNET 会话连接到下面列出的任何地址。主机名后面的数值是端口号,是必需的。
kb2ear.aprs.net 14579(新泽西州北部)
kb2ear.aprs.net 6261(美国)
kb2ear.aprs.net 14580(以上组合)
www.wa4dsy.radio.org 14579(佐治亚州亚特兰大)
socal.aprs.net 14579(南加州)
www.aprs.net 10151(美国组合)
www.aprs.net 14579(佛罗里达州东南部)
sboyle.slip.netcom.com 14579(加利福尼亚州旧金山)
从这些 TELNET 会话返回的信息是实时的原始数据,由业余无线电操作员以 1 到 30 分钟的间隔广播。短时间广播(例如,一分钟)旨在用于移动(跟踪器)应用,在这些应用中存在移动,因此需要频繁更新。较长时间广播(例如,30 分钟)旨在用于广播其位置的固定站(住宅)。这些服务器提供的数据包包括发射站的纬度、经度,通常还有关于站点的简短消息。列表 1 是典型的 APRS TELNET 会话的输出。
列表 1 中的每一行文本都是一个数据包,其中包含源站的业余无线电呼号、目标地址以及路径中使用的任何中继器。例如,在登录消息后显示的第一个数据包中,W4DUF 正在向 APRS 网络中的所有站点广播。由于距离限制(通常为几英里),沿途的其他本地站点(称为数字中继器)被用于通过重复数据包来扩展距离。在该示例中,站点 N4TKT-2、WIDE 和 N4NEQ-2 被用于重复数据包。通过这种方式,距离可以扩展到大型都市区(即 20 英里半径),以及通过使用称为 GATE 的特殊高频 (HF) 数字中继器跨越全国。由于射频带宽有限,全国范围内的位置广播通常仅限于特殊事件,例如跟踪奥运火炬在美国境内传递。
随着使用互联网构建全国 APRS 骨干网,传输本地 APRS 流量可以绕过有限的射频带宽的限制。如图 1 所示的 APRS TELNET 会话很有趣,但由于信息的原始格式,很难理解。为了更好地理解呈现的数据,使用了图形格式的网页。这些网站获取原始信息并将站点的位置叠加在地图上。图 3 是典型 APRS 网页的示例。下面的网站列表显示实时或接近实时(延迟 15 分钟)的 APRS 流量,并且需要启用 Java 的网络浏览器。
http://www.wa4dsy.radio.org/aprs/usa.html(全美国)
http://www.wa4dsy.radio.org/aprs/soeast.html(美国东南部)
http://www.wa4dsy.radio.org/aprs/ga-atl.html(佐治亚州亚特兰大)
http://www.aprs.net/sfl.html(南佛罗里达州)
http://sboyle.slip.netcom.com/LIDSAPRS.html(加利福尼亚州旧金山)
正如我们所见,APRS 服务器提供原始数据,而网络浏览器可以以图形化、有趣且信息丰富的方式显示信息。但是,两者都是被动应用程序,都需要用户。
对于许多应用,最好将系统自动化以自动执行指定的任务。例如,您可能希望通过电子邮件被告知玫瑰碗游行中的领头花车已到达路线中的特定点。或者,您可能有一个移动跟踪器,并希望在跟踪器到达特定位置时发出警报。对于此应用,您需要一个程序来检查原始 APRS 数据,并根据用户指定的条件执行命令。这正是 PerlAPRS 所做的事情,而 Linux 是此类应用的完美平台,因为它很好地支持多任务处理。
PerlAPRS 检查传入的数据包,并在呼号和位置与用户指定的条件匹配时执行命令。位置条件使用网格方格指定,网格方格是尺寸约为 2.5 英里乘 5 英里的矩形区域。
理解 PerlAPRS 工作原理的最佳方法是查看示例。左侧列中显示的行号仅用于说明目的,而不是正常输出的一部分。第 1 行显示了一个数据包示例。PerlAPRS 解析数据包并提取呼号、纬度和经度。第 2 行显示呼号为 KD6AZU,纬度为 3243.700(北纬 32 度,43.700 分),经度为 11707.700(西经 117 度,7.700 分)。接下来,PerlAPRS 搜索呼号文件(之前由用户自定义),查找匹配项。第 3 行和第 4 行显示的第一次和第二次匹配尝试失败。第 5 行和第 6 行显示的第三次比较成功。此匹配导致命令 cmd3.sh 被执行。该命令可以是任何 UNIX 风格的命令;但是,简单的 shell 脚本用于大多数应用。
1. Packet= KD6AZU>APRS,KD4DLT-7,N4NEQ-2,WIDE*: @042327/3243.70N/11707.70W/0 2. KD6AZU 3243.700 11707.700 3. - KI6MP-10 DM12JV 4. - KC6VVT-9 DM12IT 5. * KD6AZU DM12KR Sun Aug 10 15:56:13 1997 3 6. Sun Aug 10 15:57:13 1997 1 cmd3.sh
对 PerlAPRS 的简要讨论旨在提供一个简单的概述。该程序提供了几个用于实时应用的附加功能。PerlAPRS 根据 GNU 许可协议分发。源代码和有关该程序的更多信息可以在 http://people.qualcomm.com/rparry/perlAPRS/ 找到。
Linux、业余无线电和 APRS 协议只是我们迄今讨论的系统的一部分。GPS 才是真正使该系统实用的原因。虽然 GPS 的细节非常复杂,但基本思想相对简单。三角测量用于精确定位接收器。
例如,假设您和您的朋友都拥有精确同步的时钟。在离您一段未知距离的地方,她喊道:“现在是 6:00 和 0.000 秒。” 当您听到她的声音时,您的时钟显示时间为 6:00 和 0.333 秒。您现在可以通过将声速(每秒 300 米)乘以经过的时间(0.333 秒)来计算您与她的距离为 100 米。通过这一个测试点,您就能够计算出您与源的距离。具体来说,您位于朋友 100 米范围内的任何方向。图 4A 中的圆周上的多个点显示了这种情况。
有了第二个朋友,我们可以进一步明确我们的位置。在图 4B 中,位于 Y 点的朋友也使用精确的时钟进行了另一次测量。您再次进行计算并找到与这位朋友的距离。您现在的位置缩小到圆圈相交的两个点所示的两个点。使用位于 Z 点的第三个朋友和另一次测量,您可以精确定位您的确切位置。
GPS 的工作原理类似;但是,实验中的声速被光速取代,您的朋友被卫星取代。在上面的解释中,我们为了更清楚地理解概念,方便地假设世界是平坦的。当概念扩展到三维时,单次测量不会产生如图 4A 所示的圆,而是球体。第二次测量不会像图 4B 所示那样将我们的位置限制为两个唯一位置,而是两个球体相交的圆。最后,第三次测量不会产生如图 4C 所示的唯一位置,而是三个球体相交的两个点。因此,通过三次测量,我们有两个可能的位置。好消息是,其中一个点可以被消除,因为它对应于地球大气层以上的位置。因此,除非您是宇航员,否则您在地球上的唯一位置仅通过三次测量就找到了。
我们做出了第二个方便的假设,特别是实验中的所有参与者都拥有精确的时钟。虽然 GPS 卫星具有精确的原子钟,但地面上的接收器没有这种奢侈,也不切实际。幸运的是,通过添加第四颗卫星,地面上的人不需要原子钟。这是一个简单的代数问题,包含四个未知数:纬度、经度、高度和时间。通过四颗卫星,我们可以解出所有四个未知数,并为地球上的监听者提供准确且唯一的位置。经验丰富的 GPS 用户可能会争辩说,他仅使用三颗卫星就获得了准确的位置。这是真的;它是通过让 GPS 接收器假设高度为 0(海平面)来完成的。因此,如果我们愿意放弃知道我们的高度(这在许多应用中是有效的),那么 GPS 确实可以使用三颗卫星提供准确的位置,因为我们有三个未知数和三个方程。
上述解释在许多方面都过于简单化。在现实生活中,许多变量会影响系统的精度。例如,射频传输会受到建筑物和树木等物体的影响。这些结构会导致反射,称为多径效应。来自卫星的信号从附近的结构反射回来,导致延迟,最终影响测量的精度。射频还会受到雨、雨夹雪、雪、湿度甚至空气温度的影响,因为传输速度以及信号衰减都会受到影响。所有这些变量都会导致精度损失。但是,与称为选择性可用性 (SA) 的人为误差相比,这些不准确之处微不足道。
为了理解 SA,我们必须了解 GPS 应用分为两个服务类别:民用标准定位服务 (SPS) 和军方和授权人员使用的精确点位服务 (PPS)。PPS GPS 接收器消除了 SA 的不利影响,因此精度更高。SPS GPS 接收器提供的精度低于 GPS 的能力,并且每个接收器的精度通常限制为 100 米。但是,有一些方法可以通过使用差分 GPS (DGPS) 来克服 SPS 接收器的限制。对于那些对 DGPS 感兴趣的人,网络是获取更多信息的绝佳来源。
自从电话、无线电、电视和计算机发明以来,世界已经变得不一样了。GPS 也注定要在人类的技术演进中留下印记;它催生了许多独特的应用。APRS 的开发是为了让业余无线电操作员使用数据包无线电广播位置。APRS 服务器和 Linux 进一步扩展了 GPS 的用途,这些用途在不久之前还是科幻小说。
