一款跑在浏览器里的开源卫星地面站套件——轨道预报 · 多目标追踪 · SDR 瀑布流 · 遥测解码 · 无人值守自动观测。
GPL-3.0
React + FastAPI
v0.8.6
把整座地面站装进一个标签页
Ground Station 是 sgoudelis 开源的一套浏览器端卫星地面站应用,把轨道预报、多目标追踪、天线与电台控制、SDR 瀑布流、遥测解码、IQ 录制与无人值守自动观测收进同一个 Web 界面。它不绑定特定接收机,通过 IQ Broadcaster 与 Audio Broadcaster 两条发布订阅总线把实时信号链串起来,并用 SigMF 标准把录制结果落盘。本文涵盖它是什么、主要功能、应用场景、安装部署、获取方式、同类对比、核心机制、自动观测、实用技巧、更新动态、常见问题与总结。
一、Ground Station 产品深度介绍
(一)它是什么
Ground Station 是一个开源、浏览器端的地面站应用。仓库对自身的定位原话是:用于追踪卫星与天体目标、控制站点硬件,以及接收、解码、记录 SDR 信号。它面向业余无线电操作员、卫星爱好者与研究人员,把轨道可视化、多目标追踪控制台、SDR 瀑布流分析、数据包与遥测解码、计划观测以及硬件管理,收进同一个 Web 界面。
换句话说,过去需要用一个软件看过境预报、另一个软件收信号、再换一个解码器解包、用 rotctld 转天线、最后自己写脚本归档录制文件的一整条链路,在 Ground Station 里是同一个页面上的几个标签。
(二)技术表现
它的工程化程度与迭代节奏,可以从几个硬指标看出来:
- 代码构成:JavaScript 60.5% + Python 39.2%,前端 React 系、后端 FastAPI 系,仓库 2025-03-01 创建,最近一次推送 2026-09-07;
- 社区体量:约 4,757 Star、829 Fork、13 个开放 Issue;
- 版本节奏:从 0.7.x 到 0.8.x 基本按周迭代,最新 v0.8.6 发布于 2026-09-06;
- 交付形态:每个 release 都带预构建的多架构镜像(amd64 / arm64),托管在 ghcr.io;
- 许可与治理:GPL-3.0,贡献需签署 CLA。

(三)产品定位
它的定位是硬件中立的单站地面站。官方支持的接收机覆盖 RTL-SDR(USB 或 rtl_tcp)、Airspy 与 Airspy HF+(README 明确标注 HF+ 目前未测试)、UHD/USRP,以及一大串走 SoapySDR 的设备:RTL-SDR、Airspy、HackRF、HydraSDR、LimeSDR、MiriSDR、PlutoSDR、UHD/USRP、SDRplay RSP 系列。v0.8.6 又通过 SoapyMiri 补上了 MiriSDR。如果你手上的设备不在列表里,README 给出的答复很直接:开一个 GitHub issue 提需求。
二、主要功能特点与应用场景
(一)主要功能特点
- 实时轨道追踪:基于 Skyfield 与 SGP4,从已存储的轨道根数推算位置。
- 可配置轨道数据源 + 元数据补全:默认同步 CelesTrak feeds,再用 SatNOGS API 补全卫星与发射机信息。
- 多目标追踪实例:多个 tracker 并行运行(target-N 槽位),各自持有独立的运行时状态。
- 天线转子自动控制:持续 az/el 更新、限位检查,以及防抖的重新定目标逻辑。
- 电台控制与多普勒校正:经 rigctld / Hamlib 通路,在追踪过程中对 RX/TX 做多普勒修正调谐。
- 实时 DSP 流水线:IQ 样本经队列化 worker 编排,分发给 FFT/瀑布流、解调器、解码器、录制器与浏览器消费者。
- IQ 录制与回放(SigMF):录制为 .sigmf-data + .sigmf-meta,带中心频率、采样率、会话统计与目标卫星元数据;录制文件以虚拟 SDR 的形式出现,走与实时完全相同的处理链路。
- 解码与组帧:SSTV、APRS、FSK、GFSK、GMSK、BPSK、GNSS,包管道支持 AX.25 / USP / GEOSCAN 组帧。
- APRS 专用链路:raw-IQ APRS 解码器,内建 NBFM / Bell 202 解调、AX.25 解析与批边界恢复。
- 转写服务:经 Gemini Live 或 Deepgram 对解调音频做实时转写,可带翻译,输出到 backend/data/transcriptions/。
- 性能监控:队列利用率、吞吐、丢包、组件健康实时推到前端。
- 认证与用户管理:内置登录屏,admin 与 operator 两级角色。
- 太阳系视图与深空目标:经 NASA/JPL Horizons 提供的星历矢量,追踪行星与深空任务目标。
(二)应用场景
- 业余卫星通联与遥测接收:一次过境里同时完成追踪、接收、解码与归档;
- 气象卫星图像:配合可选的 SatDump 后处理,跑 METEOR LRPT / HRPT 流水线;
- APRS 与数据包监听:专用的 raw-IQ APRS 解码链路;
- 天线与电台联调:转子限位、重叠模式、多普勒校正的可视化验证;
- 深空与天体观测:用 Horizons 矢量跟太阳系天体与深空任务;
- 教学与科普:响应式界面,手机与平板也能直接看瀑布流与轨道图。
(三)适用人群
它适合业余无线电操作员、卫星与射电爱好者、高校 CubeSat 团队、做 SDR 教学的研究人员,以及任何一个想把预报、收信、解码、归档这一串环节真正串起来的人。反过来,如果你只想要一个纯粹的频谱浏览器,它的分量会显得偏重。
三、安装与部署:Docker 一条命令,源码两种走法
(一)前置依赖
- 生产部署:Docker,且容器能访问 USB 设备(–device=/dev/bus/usb 或 ARM64 上的 -v /dev:/dev);
- 源码开发:Python 3.8+ 与 Node.js 14+(DEVELOPMENT.md 给出的下限);
- 可选能力:LoRa 解码需要 GNU Radio 3.10 + gr-lora_sdr,SSDV 解码需要上游参考编解码器,两者 Docker 镜像均已预装。
(二)Docker 部署(推荐)
拉取对应版本的镜像后,按网络需求二选一:
# host 网络:可通过 mDNS 自动发现 SoapySDR 远程服务器
docker run -d \
--platform linux/amd64 \
--network host \
--name ground-station \
--restart unless-stopped \
--device=/dev/bus/usb \
--privileged \
-v /path/to/data:/app/backend/data \
ghcr.io/sgoudelis/ground-station:<version>
# 桥接模式:适用于本地 SDR
docker run -d -p 7000:7000 --device=/dev/bus/usb --privileged \
-v /path/to/data:/app/backend/data \
ghcr.io/sgoudelis/ground-station:<version>
界面访问地址是 http://<YOUR_HOST>:7000。两个容易踩的点:一是树莓派官方只推荐 Pi 5,ARM64 下要用 -v /dev:/dev 才能拿到全部 USB 设备;二是 USB 设备节点权限归宿主机所有,容器里的 –device 并不会替你装 udev 规则——RTL-SDR 在 Debian/Ubuntu 上装 librtlsdr2 即可带出规则,MiriSDR 则要自己写 66-mirics.rules(idVendor 1df7)。
(三)源码开发部署
后端走现代 Python 打包,前端是独立的 dev server:
# 后端
cd backend
python -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
python app.py --host 0.0.0.0 --port 5000
# 前端
cd frontend
npm install && npm run dev
前端 dev server 会把 API 与 socket 流量代理到 .env.development 中定义的后端端口(默认 localhost:5000)。需要提醒的是,LoRa 与 SSDV 是源码部署里最麻烦的两块:LoRa 因 NumPy 2.x 兼容要求需从源码编译 GNU Radio 3.10(15–30 分钟),SSDV 则 pin 在上游 commit d1ceda81,且首个接收档位是 9600 波特 BPSK、256 字节标准 SSDV 包。
四、官方地址与获取方式
- 代码仓库:github.com/sgoudelis/ground-station
- 发布与镜像:仓库 Releases 页,或 docker pull ghcr.io/sgoudelis/ground-station:<version>
- 问题与设备支持请求:GitHub Issues(README 明确欢迎为没有的设备开 issue 提需求)
- 文档:README.md(功能与架构)、DEVELOPMENT.md(开发与测试)、CONTRIBUTING.md(贡献与 CLA)
- TLS 反向代理:deploy/nginx/README.md
五、与同类方案对比分析
(一)对比 SatNOGS 地面站网络
SatNOGS 是全球分布式的地面站网络加统一调度,重心在网络化共享与规模化观测;Ground Station 是单站自建自管,重心在你自己这台机器上的全流程闭环。二者并不互斥——Ground Station 反过来还调用 SatNOGS 的 API 来补全发射机元数据。要参与全球网络选前者,要把自己的一站玩透选后者。
(二)对比传统桌面 SDR 软件栈
通用 SDR 桌面软件给你频谱与解调,但过境预报、天线控制、多普勒、录制归档、自动排程都要自己拼。Ground Station 把这些拼好了,代价是它更重、更垂直:你要接受它的一整套数据模型与页面组织方式,而不是自由组合自己喜欢的单一工具。
(三)对比命令行解码链
gr-satellites、SatDump 或自建 GNU Radio 流程图在灵活性与可脚本化上占优,适合批量处理与科研复现。Ground Station 提供的是图形化、可回放、可排程的封装,并把 SatDump 作为可选后处理接进来。追求极致可控的批量科研场景,仍然应该直接用命令行。
六、核心机制:两条广播总线撑起实时信号链
它最值得看的工程决策,是用发布订阅模式把「采样的生产者」与「处理的消费者」彻底解耦。SDR 以很高的速率产出原始 IQ,IQBroadcaster 把这份数据同时分发给多个消费者,每个订阅者拿到独立队列与深拷贝样本;慢消费者的消息被丢弃,而不是反过来阻塞生产者。

音频侧还有一条更短的总线,只为「内部解调器 → 解码器」这一段服务:

以 SSTV 为例,完整链路是:SDR → IQBroadcaster → 内部 FM 解调器 → AudioBroadcaster 的输入队列 → 一路给 SSTV 解码器出图,另一路给 UI 订阅者送到浏览器播放。README 给出的四个理由是解耦、可扩展、可监控与可靠性:加消费者不用改生产者,每个订阅者都有独立的投递与丢弃统计,慢消费者拖不垮快生产者。

七、自动观测:把过境变成无人值守的任务
这是整套系统里最像「产品」而非「工具」的部分。你先定义监测卫星模板——硬件配置、信号参数、任务定义,系统据此为所有合格过境自动生成计划观测。
- 自动排程:按最低仰角、前瞻窗口等条件算出未来过境,APScheduler 在 AOS(捕获信号)触发启动、LOS(失去信号)触发停止。
- 任务组合:一次观测可同时并行 IQ 录制(SigMF)、音频录制(WAV)、协议解码(AFSK / GMSK / SSTV)与可选的 AI 转写。
- 会话隔离:自动观测跑在独立的内部 VFO 会话里(命名空间 internal:<observation_id>);使用不同 SDR 时,用户会话与自动观测互不干扰。
- 多 SDR 并行:一台 SDR 跑自动观测,其他 SDR 可以对同一次过境同时录制、解码与监听。
- 状态管理:scheduled / running / completed / failed / cancelled / missed 六种状态,并自动清理旧的已完成条目。
- 现场旁观:过境进行中可以实时看瀑布流、听解调音频、看解码输出;但同用一台 SDR 时,改动中心频率或带宽会影响正在运行的观测。

八、Ground Station 的实用技巧
- 要发现远程 SoapySDR 就用 host 网络:桥接模式没有 mDNS,远程设备扫描不出来。
- 先翻瀑布流快照再翻 IQ 文件:录制时会自动存一份 PNG 快照,定位信号比直接开 .sigmf-data 快得多。
- 提高频率分辨率:v0.7.13 起 FFT 默认与兜底值都提到了 16384,瀑布流里还可以继续调。
- 回放用时间轴定位:录制过程中改参数会切成多 segment,回放时可直接拖到目标时刻。
- 大库备份走流式:v0.8.3 起数据库恢复支持最大 1GB 文件,并可在同步/备份过程中取消。
- 看清配置优先级:CLI flags > app_config.json > 内置默认;UI 会标出哪些值正被 CLI 覆盖、哪些改动需要重启。
- 贡献前先跑钩子:Python 侧 Black(行宽 100)+ isort,前端侧 Prettier,配 pre-commit;首次 PR 需在评论里签署 CLA。
九、最新重大更新动态
- v0.8.6(2026-09-06):经 SoapyMiri 增加 MiriSDR 支持;编辑状态下保持仪表盘网格缩放手柄可见;统一观测状态通知的位置。
- v0.8.5(2026-09-02):站点位置设置保留零海拔并增加带校验的手动海拔录入;合并卫星别名,下线遗留的 transmitter-links 列。
- v0.8.4(2026-09-01):修复 OMM 历元归一化可能把 naive 时间戳按错误时区解读的问题;CelesTrak 失败不再阻塞其他 provider,卫星数据同步改为每 12 小时一次。
- v0.8.3(2026-08-29):观测 bundle(分组录制卡片与组内回放)、可配 IQ 录制格式 / 抽取 / 录制频段 / 可拖拽频率偏移、流式数据库恢复。
- v0.7.18(2026-08-01):新增 raw-IQ APRS 解码器,内建 NBFM / Bell 202 解调与 AX.25 解析。
十、常见问题 FAQ 解答
Q1:没有 SDR 硬件能用吗?
可以。仓库自带 SigMF Playback 虚拟 SDR,录制文件会以设备形式出现在列表里,走与实时输入完全相同的处理链路。
Q2:支持哪些接收机?
RTL-SDR(USB 或 rtl_tcp)、Airspy 与 Airspy HF+(HF+ 未测试)、UHD/USRP,以及 SoapySDR 家族的 RTL-SDR、Airspy、HackRF、HydraSDR、LimeSDR、MiriSDR、PlutoSDR、UHD/USRP、SDRplay RSP 系列。
Q3:树莓派能跑吗?
可以,官方只推荐 Raspberry Pi 5,且 ARM64 下建议用 -v /dev:/dev 挂载设备。
Q4:许可证是什么?有没有需要注意的部分?
代码是 GPL-3.0。两点提醒:一是镜像内包含 SDRplay 的专有 API v3.15,构建或分发镜像前需自行审阅并接受其 EULA;二是信号处理部分(解调器、广播器、解码器)是在 Claude AI 协助下开发的,源码中已明确标注,同样按 GPL-3.0 授权。
Q5:自动观测会干扰我的手动操作吗?
同用一台 SDR 时,你可以旁听与旁观,但改动中心频率或带宽会影响正在运行的观测;使用不同 SDR 时二者完全独立。
Q6:想贡献代码有什么门槛?
首次 PR 需要在评论里回复签署 CLA。该 CLA 授予项目维护者未来再许可的权利,包括双许可与商业许可,这一点对有商用打算的团队值得留意。
十一、总结
Ground Station 的价值不在「又一个 SDR 界面」,而在于它把一条原本需要五六个工具拼起来的地面站工作流,收敛成了一次可复现的配置。多目标追踪、多普勒校正、SigMF 归档、无人值守过境这些环节,过去各自都要人盯;在这里它们被 APScheduler 与两条广播总线串成了一条流水线。
它当然不是所有场景的最优解:只想要一个轻量频谱浏览器的人会觉得它重,要批量科研复现的人还是该回到命令行。但对于那些真正守着一套天线、一台接收机,希望每一次过境都能自动跑完并留下可回放证据的人,Ground Station 提供了一条目前少有的、开箱即用的完整路径。
接收卫星下行信号本身通常无障碍,但解码内容的使用与再分发可能受数据提供方政策与当地法规约束;上行发射必须具备相应操作资质与执照。部署前请确认你的操作符合所在地区的无线电管理规定。
在撰写本文的过程中,我主要参考了以下来源:GitHub 仓库 sgoudelis/ground-station 的 README.md、DEVELOPMENT.md 与 CONTRIBUTING.md,以及仓库 Releases 页的发布说明。文中 Star 数、Fork 数、版本日期与截图均以仓库公开信息为准,可能随时间变化。
本文由 AI 辅助整理,基于 GitHub 项目 sgoudelis/ground-station 的公开文档撰写;文中截图与 Logo 取自该仓库。内容仅用于技术介绍,实际操作请遵守所在地区的无线电管理规定。

AI智汇具 - AI工具推荐与技能教程_好用的AI工具大全






