
Ground Station是一个功能齐全的开源卫星跟踪和无线电通信软件解决方案,专为业余无线电操作员、卫星爱好者和研究人员设计。它提供了一个全面的平台,用于监测航天器、控制无线电设备以及接收来自卫星的实时无线电信号。
Ground Station详细介绍
Ground Station核心功能特性
- 实时卫星跟踪:采用高精度轨道模型追踪数百颗卫星,TLE数据自动从CelesTrak和SatNOGS更新。
- 自动天线旋转控制:与主流天线旋转器连接,在卫星过顶时自动追踪。
- 电台控制(Hamlib):在卫星过境期间控制支持Hamlib的电台并进行多普勒频移校正。
- SDR集成:流式传输并记录来自多种SDR设备的实时无线电信号,包括RTL-SDR、SoapySDR以及UHD/USRP无线电。
- IQ录制与回放:以SigMF格式录制包含完整元数据的原始IQ数据,并通过虚拟SDR设备回放录制文件。
- 数据解码:支持SSTV、FSK、GFSK、GMSK和采用AX25 USP Geoscan成帧的BPSK信号解码。
- AI语音转录:通过Gemini Live或Deepgram对解调后的音频进行实时语音转文字,注重隐私保护。
- 计划观测任务:定义详细的观测任务,在卫星过境期间自动完成监听、解码、转录以及音频和IQ数据的记录。
- SatDump集成:通过SatDump解码来自METEOR-M2卫星的气象图像,并与自动化观测任务结合。
- 性能监控:实时可视化信号处理流程,展示数据在各组件间的流动情况,监控队列健康状况、处理速率及组件统计信息。
系统架构
Ground Station采用现代化的微服务架构,包含三个主要组件:
前端:基于React + Redux + Material-UI构建的响应式Web界面,适配桌面、平板和手机设备。
后端:基于FastAPI + Socket.IO的Python应用,提供REST API和实时通信接口。
工作进程:多个专用工作进程处理核心功能:
- 卫星跟踪与硬件控制
- SDR IQ采集
- FFT处理
- 解调器
- IQ录制器
- 解码器
- SDR本地/远程探测
技术栈
- 后端:FastAPI、SQLAlchemy、Skyfield、SGP4、Socket.IO、pyrtlsdr、SoapySDR
- 前端:React、Redux Toolkit、Material-UI、Vite、Socket.IO Client、Leaflet、satellite.js
- 第三方集成:SatDump、gr-satellites
部署安装步骤
系统要求
- 操作系统:支持Linux(推荐Ubuntu/Debian)、macOS、Windows(通过Docker)
- 硬件:支持RTL-SDR、SoapySDR、UHD/USRP等SDR设备
- 存储空间:至少10GB可用空间
- 内存:建议8GB或以上
- 网络:用于TLE数据同步和远程访问
Docker部署(推荐方式)
1. 安装Docker
首先确保系统已安装Docker。对于Ubuntu系统,可参考以下步骤:
bash
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 验证安装
sudo docker run hello-world
2. 配置Docker镜像加速器(可选但推荐)
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.m.daocloud.io", "https://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3. 部署Ground Station
选项1:从源码构建(适合开发或定制)
bash
# 克隆项目
git clone https://github.com/sgoudelis/ground-station.git
cd ground-station
# 构建Docker镜像
docker build -t ground-station .
# 运行容器(标准桥接模式,适用于本地SDR)
docker run --rm -p 7000:7000 --device /dev/bus/usb ground-station
# 或使用主机网络(支持SoapySDR远程服务器发现)
docker run --rm --network host --device /dev/bus/usb ground-station
选项2:使用预构建镜像(推荐生产环境)
bash
# 拉取最新版本镜像
docker pull ghcr.io/sgoudelis/ground-station:latest
# AMD64架构运行(支持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 \
-e GS_ENVIRONMENT=production \
-e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
ghcr.io/sgoudelis/ground-station:latest
# ARM64架构(如树莓派5)
docker run -d \
--platform linux/arm64 \
--network host \
--name ground-station \
--restart unless-stopped \
-v /dev:/dev \
--privileged \
-v /path/to/data:/app/backend/data \
-e GS_ENVIRONMENT=production \
-e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
ghcr.io/sgoudelis/ground-station:latest
# 标准桥接模式(无SoapySDR远程发现)
docker run -d \
-p 7000:7000 \
--name ground-station \
--restart unless-stopped \
--device=/dev/bus/usb \
--privileged \
-v /path/to/data:/app/backend/data \
-e GS_ENVIRONMENT=production \
-e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
ghcr.io/sgoudelis/ground-station:latest
重要参数说明:
--network host:启用SoapySDR远程服务器自动发现(推荐)--device=/dev/bus/usb:允许容器访问USB设备-v /path/to/data:/app/backend/data:挂载数据目录,确保数据持久化-e GS_ENVIRONMENT=production:设置生产环境-e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile:优化GNU Radio缓冲区性能
4. 访问Web界面
部署完成后,通过浏览器访问 http://<服务器IP>:7000 即可使用Ground Station。
使用方法指南
1. 初始设置
- 硬件连接:将SDR设备(如RTL-SDR)连接到计算机
- 设备检测:在Web界面中,系统应自动检测到连接的SDR设备
- TLE数据同步:首次使用时,系统会自动从CelesTrak和SatNOGS同步卫星轨道数据
2. 基本操作流程
卫星跟踪
- 选择卫星组:在"Global Satellite Overview"页面选择感兴趣的卫星组(如业余卫星、气象卫星等)
- 设置目标卫星:点击卫星列表中的"SET AS TARGET"按钮
- 查看轨道信息:系统显示卫星的实时位置、轨道参数和过境预测
- 自动跟踪:如果连接了天线旋转器,系统会自动调整天线方向跟踪卫星
SDR配置
- 选择SDR设备:在"SDR Hardware Management"页面选择可用的SDR设备
- 配置参数:设置中心频率、采样率、增益等参数
- 开始接收:点击"Start"按钮开始接收信号
信号处理
- 频谱显示:查看实时频谱和瀑布图
- 解调设置:选择适当的解调模式(FM、SSB、AM等)
- 解码配置:根据需要启用相应的解码器(SSTV、GMSK等)
- AI转录:启用实时语音转文字功能(需要配置API密钥)
3. 自动化观测
- 创建监控模板:在"Observations Overview"页面定义卫星监控模板
- 配置硬件:指定使用的SDR设备、天线旋转器和电台
- 设置信号参数:配置频率、带宽、解调模式等
- 定义任务:选择要执行的任务(IQ录制、音频录制、解码、转录等)
- 调度观测:系统自动计算并安排符合条件的卫星过境
4. IQ录制与回放
- 开始录制:在接收信号时点击录制按钮,系统以SigMF格式保存IQ数据
- 管理录制文件:在"File Browser & Decoders"页面查看和管理录制文件
- 回放录制:选择录制文件作为虚拟SDR设备进行回放和分析
5. 高级功能
- 多SDR操作:支持同时使用多个SDR设备进行并行观测
- 远程SDR支持:通过SoapyRemote连接网络上的远程SDR设备
- 性能监控:查看"DSP Topology & Performance"页面监控信号处理流水线状态
- 数据导出:导出解码后的图像、数据包和转录文本
6. 硬件支持
- SDR设备:RTL-SDR、Airspy、HackRF、LimeSDR、UHD/USRP、SDRplay等
- 天线旋转器:支持Hamlib兼容的旋转器
- 电台控制:支持Hamlib兼容的电台,带多普勒校正功能
故障排除
常见问题
- SDR设备未检测到:确保设备已正确连接,并检查USB权限
- 无卫星数据显示:检查网络连接,确保TLE数据同步成功
- 音频无输出:检查浏览器音频设置和解调器配置
- 性能问题:调整采样率和缓冲区大小,或使用性能更强的硬件
日志查看
bash
# 查看容器日志
docker logs ground-station
# 实时查看日志
docker logs -f ground-station