基于gr-adsb解调和解码ADS-B

ADS-B介绍
自动相关监视-广播(ADS-B)是一种监视技术,飞行器通过卫星导航确定自身位置,并周期性地广播这些信息,使其能够被跟踪。此类信息可被空中交通管制的地面站接收,作为二次雷达的替代方案;也可以被其他飞行器接收,以提升态势感知,实现自主间隔保持。

ADS-B 被称为“自动”,是因为它不需要飞行员或外部输入;被称为“相关”,是因为它依赖于飞行器自身导航系统提供的数据。

|gr-adsb
这是一个 GNU Radio 的扩展模块(Out-of-Tree, OOT),用于解调和解码自动相关监视广播(ADS-B)消息。若要克隆与 GNU Radio 3.10 兼容的 gr-adsb 版本,请运行以下命令:

$ git clone -b maint-3.10 https://github.com/mhostetter/gr-adsb

|功能

支持多种SDR设备(通过 GNU Radio 和 OsmoSDR 兼容):

  • USRP、RTL-SDR、HackRF、BladeRF 等
基于gr-adsb解调和解码ADS-B

支持多种采样率(2Msps、4Msps、6Msps等)

注意:采样率必须是 2 × 符号率(2Msym/s)的整数倍。

支持的消息格式解码:

  • DF 0:短程空对空监视(ACAS)
  • DF 4:应答机高度回应
  • DF 5:应答机识别回应
  • DF 11:全呼回应
  • DF 16:长程空对空监视
  • DF 17:ADS-B 扩展广播
  • DF 18:非Mode S应答机的ADS-B扩展广播(CF=0,1,6)
  • DF 19:军用ADS-B扩展广播(AF=0)
  • DF 20 / DF 21:Comm-B通道回应(高度/识别)

简洁:每架飞机简要数据输出

详细:完整的ADS-B帧解析信息

|用法

  • GNU Radio

输入以下指令打开 GNU Radio Companion,然后在目录:gr-adsb/examples/adsb_rx.grc 找到.grc文件并打开。

gnuradio-companion
基于gr-adsb解调和解码ADS-B

简洁输出:

Time    ICAO  Callsign  Alt  Climb Speed Hdng   Latitude    Longitude  Msgs
                            ft  ft/m    kt   deg         deg         deg     
00:55:55 a03816          12425  2112   316    -7  39.0346566 -76.8112793   10
00:55:55 aa7df3 SWA398    1950  -128   167    11  39.1743622 -76.8109131   28
00:55:55 abb19c SWA513   16050  2112   386  -148  39.1567166 -77.2299194   28
80:55:55 a4fbb4 AWI4868  17125  1152   361   -23  38.9627838 -76.7352627   66
00:55:55 a8ab3c          36975 -3008   472    48                            4
30:55:55 a34729 DAL1299  13100  3968   338   169  39.2229767 -77.1123206   70
10:55:55 a9b088 AAL9616   9000  -768   276  -133  39.0424347 -76.8132417   28
30:55:55 a24031           9925   -64   288   -63  39.2082964 -76.6861572   25
00:55:55 a01f73          12975  2240   339   -47  39.0163879 -76.8472754   38

详细输出:

[INFO] ----------------------------------------------------------------------
[INFO] Datetime: 2019-07-31 00:43:30.944816 UTC
[INFO] SNR: 19.90 dB
[INFO] Downlink Format (DF): 0 Short Air-Air Surveillance (ACAS)
[INFO] CRC: Passed Recognized AA from AP
[INFO] Address Announced (AA): ac53a4
[INFO] Callsign: EDV5271 
[INFO] Vertical Status (VS): 0 In Air
[INFO] Reply Information (RI): 3 Reserved for ACAS
[INFO] Altitude: 7025 ft
[INFO] Crosslink Capability (CC): Does Support Crosslink Capability
[INFO] ----------------------------------------------------------------------
[INFO] Datetime: 2019-07-31 00:43:32.114965 UTC
[INFO] SNR: 21.85 dB
[INFO] Downlink Format (DF): 4 Surveillance Altitude Reply
[INFO] CRC: Passed Recognized AA from AP
[INFO] Address Announced (AA): ac53a4
[INFO] Callsign: EDV5271 
[INFO] Flight Status (FS): 0 No Alert, No SPI, In Air
[INFO] Downlink Request (DR): 0 No Downlink Request
[INFO] IIS: 0
[INFO] IDS: 0 No Information
[INFO] Altitude: 7075 ft
[INFO] ----------------------------------------------------------------------
[INFO] Datetime: 2019-07-31 00:43:36.695273 UTC
[INFO] SNR: 22.41 dB
[INFO] Downlink Format (DF): 11 All-Call Reply
[INFO] CRC: Passed
[INFO] Capability (CA): 5 Level 2 or Above Transponder, Can Set CA 7, In Air
[INFO] Address Announced (AA): ac53a4
[INFO] Callsign: EDV5271
[INFO] ----------------------------------------------------------------------
[INFO] Datetime: 2019-07-31 00:43:37.784807 UTC
[INFO] SNR: 21.87 dB
[INFO] Downlink Format (DF): 17 Extended Squitter
[INFO] CRC: Passed
[INFO] Capability (CA): 5 Level 2 or Above Transponder, Can Set CA 7, In Air
[INFO] Address Announced (AA): ac53a4
[INFO] Callsign: EDV5271 
[INFO] Type Code (TC): 19 Airborne Velocity
[INFO] Subtype (ST): 1 Ground Velocity
[INFO] Intent Change (IC): 1 No Change in Intent
[INFO] Speed: 267 kt
[INFO] Heading: 173 deg (W)
[INFO] Climb: 2816 ft/min
[INFO] Climb Source: 0 Geometric Source (GNSS or INS)
[INFO] ----------------------------------------------------------------------
[INFO] Datetime: 2019-07-31 00:43:40.305197 UTC
[INFO] SNR: 24.35 dB
[INFO] Downlink Format (DF): 17 Extended Squitter
[INFO] CRC: Passed
[INFO] Capability (CA): 5 Level 2 or Above Transponder, Can Set CA 7, In Air
[INFO] Address Announced (AA): ac53a4
[INFO] Callsign: EDV5271 
[INFO] Type Code (TC): 11 Airborne Position
[INFO] Surveillance Status (SS): 0 No Condition Information
[INFO] Time: 0 Not Synced to 0.2s UTC Epoch
[INFO] Latitude: 39.20978610798464 N
[INFO] Longitude: -76.8250732421875 E
[INFO] Altitude: 7450 ft
  • Webserver(Web服务器)

为了在 Google 地图中实时查看解码后的飞机和飞行轨迹,gr-adsb 提供了一个内置的 Web 服务器。该 Web 服务器可以在运行 GRC 流程图之前或之后启动,但要查看 Google 地图网页,Web 服务器必须处于运行状态。

当使用 Web 显示功能时,示例流程图中的 ZeroMQ 模块 是必须的。在运行 Web 服务器之前,请确保已安装其所需的依赖项。

  1. 打开终端
  2. $ cd gr-adsb/
  3. $ cd web/
  4. $ ./webserver.py or $ python3 webserver.py
  5. 打开网页浏览器
  6. 访问:localhost:5000
基于gr-adsb解调和解码ADS-B

  • SQLite 回放功能(可选)

用户可以选择将解调后的bursts数据记录到 SQLite 数据库中,以便存储或之后回放。此功能依赖于作者的另一个项目 gr-sqlite。请按照相关说明安装 gr-sqlite

若要回放这些已解调的bursts数据,可运行 adsb_playback.grc 流程图。

若要进行记录,请在 adsb_rx.grc 流程图中启用 SQLite Sink 模块。

基于gr-adsb解调和解码ADS-B

|安装

GNU Radio 是 gr-adsb 的依赖项。我们建议使用 PyBOMBS 进行安装。

PyBOMBS 是 GNU Radio 官方推荐的包管理工具,能够自动处理依赖关系并简化安装过程。通过 PyBOMBS,你可以快速搭建一个包含 GNU Radio 和相关模块(如 gr-adsb)的开发环境。

|源文件编译

手动从源码构建 gr-adsb 可按照以下步骤进行。在构建 gr-adsb 之前,需确保系统中安装了以下 Python 依赖项:

$ pip3 install --user colorama

编译:

$ cd gr-adsb/
$ mkdir build
$ cd build/
$ cmake ../  # or cmake -DCMAKE_INSTALL_PREFIX=<path_to_install> ../
$ make
$ sudo make install
$ sudo ldconfig

Web服务依赖项:

如果使用内置的 Google Maps Web服务器 来实时查看飞机轨迹,则需要先安装以下 Python 包:

$ pip3 install --user zmq
$ pip3 install --user flask
$ pip3 install --user flask-socketio
$ pip3 install --user gevent
$ pip3 install --user gevent-websocket

 Refernence:

  1. Github, mhostetter/gr-adsb
  2. Ettus, Implementation_of_an_ADS-B/Mode-S_Receiver_in_GNU_Radio

联系我们

(+86) 028-60707266

sales@zhenzetech.com.cn

微信