1. 什么是 AIS-catcher?
AIS-catcher 是一个用 C++ 编写的开源软件定义无线电(SDR)解码器,专门用于接收和解码船舶自动识别系统(Automatic Identification System, AIS)信号。
简单来说,它能将你通过 SDR 硬件(如 RTL-SDR)接收到的无线电原始信号,实时转化为可读的船舶信息(如船名、位置、航向、速度、目的地等),并将其转发至 OpenCPN、ChartPlotter 或自定义的数据库中。
核心技术优势
- 极致性能:采用 C++ 编写,相比于 Python 或 Java 实现的解码器,它在处理高密度信号(如繁忙港口)时具有极低的 CPU 占用率和极高的实时性。
- 强大的解码能力:支持多种调制模式,能够有效处理信号重叠、多径干扰,并支持多种 SDR 硬件驱动。
- 灵活的输出接口:支持 NMEA 0183 标准输出,这意味着它可以无缝对接几乎所有主流的航海软件。
- 轻量化部署:支持 Linux (Raspberry Pi, Ubuntu)、Windows 和 macOS,非常适合部署在树莓派等嵌入式设备上作为 7x24 小时监控站。
2. 硬件准备清单
要运行 AIS-catcher,你不能只靠软件,需要一套基础的接收硬件:
- SDR 接收机:最推荐的是 RTL-SDR Blog V3/V4(性价比最高,兼容性最好)。
- 天线:
- 频率:AIS 工作在 VHF 频段(161.985 MHz 和 162.025 MHz)。
- 类型:建议使用 1⁄4 波长单极天线或经过调谐的 VHF 宽带天线。
- 位置:尽可能安装在室外高处,避免金属遮挡。
- 运行设备:
- 树莓派 3B+/4B/5(推荐,低功耗)。
- 普通 PC 或笔记本电脑。
3. 快速安装指南
在 Linux (Ubuntu/Debian/Raspberry Pi) 上安装
# 1. 安装依赖项 sudo apt-get update sudo apt-get install -y build-essential cmake git librtlsdr-dev # 2. 克隆项目 git clone https://github.com/jvde-github/AIS-catcher.git cd AIS-catcher # 3. 编译 mkdir build cd build cmake .. make -j$(nproc) # 4. 运行 (假设使用 RTL-SDR) ./ais_catcher -d 0 -v
在 Windows 上安装
建议通过 MSYS2 或直接下载作者提供的预编译二进制文件。运行后,确保已安装 zadig 驱动以正确识别 RTL-SDR 设备。
4. 核心参数与实战实例
AIS-catcher 提供了极其丰富的命令行参数,以下是几个典型的应用场景配置:
场景 A:基础监听(快速上手)
如果你只想看看周围有没有船,使用最简单的命令:
./ais_catcher -v
-v:详细模式,在终端直接打印解码出的船舶信息。
场景 B:高性能 24⁄7 监控站(推荐配置)
如果你将程序部署在树莓派上,并希望将数据发送给 OpenCPN 软件:
./ais_catcher -d 0 -g 40 -s 13 -u udp 127.0.0.1 12311 -v
参数详解:
* -d 0:指定使用索引为 0 的 SDR 设备。
* -g 40:设置增益(Gain)为 40dB。根据环境调整,太高会引入噪声,太低收不到远方信号。
* -s 13:设置采样率(Sample Rate)。
* -u udp 127.0.0.1 12311:将解码后的 NMEA 数据通过 UDP 协议发送到本地 12311 端口。这是 OpenCPN 默认的接收端口。
场景 C:优化信号质量(针对干扰环境)
在信号嘈杂的地区,可以使用以下参数优化:
./ais_catcher -v -f 162.0M -c 1 -p 10
-f 162.0M:强制指定中心频率。-c 1:启用特定的纠错模式。
5. 数据流向图:从电波到地图
为了让你更直观地理解 AIS-catcher 的位置,请看这个数据链路:
[ 船舶发射 AIS 信号 ] \(\xrightarrow{VHF电波}\) [ 天线 ] \(\xrightarrow{射频信号}\) [ RTL-SDR 硬件 ] \(\xrightarrow{IQ数据}\) [ AIS-catcher (解码) ] \(\xrightarrow{NMEA 0183 文本}\) [ OpenCPN / MarineTraffic / 自定义数据库 ] \(\rightarrow\) [ 屏幕上的船舶图标 ]
6. 进阶技巧:如何提升接收距离?
如果你发现只能收到 5 海里内的船,而希望收到 20 海里外的船,请尝试以下优化:
- 天线高度(最关键):VHF 信号是视距传输。将天线从窗台移到楼顶,接收距离可能直接翻倍。
- 使用 LNA(低噪声放大器):在天线和 SDR 之间增加一个 161MHz 频段的 LNA,可以显著提升弱信号的捕捉能力。
- 天线调谐:确保天线长度精确计算为 \(\lambda/4\)(约 45cm)。
- 过滤干扰:如果附近有强电磁干扰,安装一个带通滤波器(Band-pass Filter)。
7. 总结与评价
AIS-catcher 是目前开源社区中最高效的 AIS 解码器之一。它不仅解决了 Python 实现版本在处理海量数据时卡顿的问题,而且通过高度模块化的设计,让爱好者能够轻松搭建自己的船舶追踪系统。
无论你是航海爱好者、数据分析师,还是单纯对无线电感兴趣的极客,AIS-catcher 都是将 SDR 硬件转化为实用工具的最佳选择。




还没有评论,来说两句吧...