smartNode
天基卫星数据回传仿真平台,可视化展示卫星-中继链路-地面站协同调度
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
天基卫星数据回传仿真平台,可视化展示卫星-中继链路-地面站协同调度
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一颗运行在 500 公里高度的遥感卫星,刚刚拍摄完一整片华北平原的高清影像。这些数据量有多大?可能达到几十 GB。而此刻你正在飞越大西洋上空,下一次飞过中国地面站还要等整整 90 分钟。你必须等到"回家"的窗口打开,才能把数据传下来。
这就是"天基数据回传"问题——卫星在太空运行,数据要传回地面,中间隔着大气层、距离、遮挡种种限制。而在这个窗口期内,多颗卫星同时竞争有限的地面站资源时,"谁先传、传多少、怎么调度"就成了一个复杂的系统工程问题。
天基智枢 SmartNode 就是为这个问题而生的可视化仿真平台。它把卫星轨道、地面站布局、中继链路、任务调度全部做成可交互的三维仿真环境,让科研人员和工程师能在本地电脑上推演各种调度策略,而不需要昂贵的真实卫星测试环境。
SmartNode 由开发者 Tong89 创建并维护,项目采用 MIT 许可证开源,当前版本 1.1.0。该项目并非诞生于商业公司,而是个人开发者出于对卫星通信和仿真技术的兴趣而发起的实验性工程。
项目的诞生背景对应了近年来快速发展的小卫星(SmallSat / CubeSat)革命。随着 SpaceX Starlink、Planet Labs 等大规模卫星星座的部署,传统的地面站资源调度方式已经无法满足需求。LEO 卫星数量从 2010 年的约 200 颗增长到 2025 年的超过 9000 颗,这一数量级的变化催生了大量关于卫星中继和星间链路的学术研究和工程实践。SmartNode 正是在这个技术浪潮中,为相关研究者提供了一个低门槛的仿真验证工具。
SmartNode 的前端采用纯 JavaScript(无框架依赖)构建三维地球场景,展示卫星轨道、地面站位置和实时中继链路状态。用户可以直观地看到某颗卫星何时进入地面站覆盖范围、链路的带宽利用率如何随时间变化。仿真时间倍率可调,从实时(1x)到极速(600x),方便快速验证长期调度策略。
这是平台的核心算法部分,位于 backend/scheduling/ 目录。调度引擎根据任务优先级、卫星存储容量、地面站接收窗口等多个约束条件,动态生成数据回传计划。后端采用 Python 实现,支持插件化的调度策略扩展。
backend/constellation.py 和 backend/orbit.py 负责卫星轨道力学建模,支持 LEO 轨道的 SGP4 简化摄动模型计算,能模拟单星或整个星座的星历数据。backend/comms/ 目录下的模块处理链路预算和信号传播时延计算。
平台提供实时资源利用率统计 API(/api/resource_utilization),包括各卫星存储占用率、地面站接收效率、中继链路带宽利用率等关键指标。这些数据可以导出用于后续分析。
SmartNode 的技术选型非常务实。后端基于 Python 3.10+ 和 Flask 框架,提供 RESTful API 并直接托管前端静态文件。数据存储使用 SQLite(backend/persistence/),持久化层支持快照保存与恢复。前端完全采用原生 JavaScript,无 Vue/React/Angular 等框架依赖,通过 Canvas/WebGL 实现三维渲染,资产轻量化,CDN 依赖极少。
这种架构的优势是部署极其简单——一个 Python 文件就能跑起来,不需要 Node.js 构建工具链。对于想快速验证卫星调度算法的研究人员来说,这是零学习成本的入门方案。
| 模块 | 职责 |
|---|---|
core.py | 仿真模型主循环、配置管理、调度引擎 |
api.py | Flask 路由、API 端点、静态文件托管 |
constellation.py | 星座配置与卫星建模 |
orbit.py | 轨道力学(SGP4 轨道传播) |
comms/ | 通信链路建模(时延、带宽、预算) |
scheduling/ | 任务调度策略插件 |
physics/ | 物理层计算(信号衰减、信噪比) |
persistence/ | SQLite 数据持久化 |
metrics.py | Prometheus 格式指标导出 |
auth.py / rbac.py | 认证与权限控制(JWT) |
ratelimit.py | API 限流保护 |
前端位于 frontend/ 目录,核心文件为 app.js(业务逻辑)、index.html(入口)、styles.css(样式)和 assets/ 目录下的世界地图纹理。e2e 测试使用 Playwright 编写,测试配置位于 playwright.config.ts。这种纯前端方案意味着 3D 渲染效果受浏览器 WebGL 支持情况影响,但完全避免了前端工程的复杂性。
SmartNode 的容器化质量是该项目的一大亮点,达到了可直接用于生产部署的标准。
多阶段 Dockerfile 分两阶段构建:第一阶段(builder)安装 gcc 等编译工具,通过 pip-compile 生成带 SHA-256 哈希锁定的 requirements.txt;第二阶段(runtime)仅复制 venv 和应用代码,最终镜像不包含构建工具链,镜像体积大幅缩减。
docker-compose.yml 提供完整的服务编排,支持两种运行模式:默认模式运行主服务(http://localhost:5000/frontend/),--profile monitoring 模式额外启动 Prometheus + Grafana + OpenTelemetry Collector 组成的可观测性栈。Grafana 仪表板开箱即用(admin/admin),方便监控仿真过程中的资源指标。
容器安全加固体现在多个细节:容器以非 root 用户(UID/GID 1001)运行;使用 tini 作为 PID-1 正确处理信号;security-opt 设置 no-new-privileges 防止提权;依赖通过哈希锁定防止供应链攻击。
项目在工程实践方面表现出色,超出了个人小项目的平均水准:
pip-compile 生成锁定文件,所有依赖包含 SHA-256 哈希,从根本上杜绝了依赖劫持风险ruff(linter)+ black(formatter)+ mypy(类型检查)三工具覆盖,CI 在 Python 3.10/3.11/3.12 三个版本上并行运行测试coverage.xml 上传.pre-commit-config.yaml 配置自动化代码检查代码质量评分为 7 分(满分 10 分),扣分项主要在于:60% 的最低覆盖率阈值偏低(业界通常要求 80%+),以及 core.py 等核心模块的单元测试覆盖情况未知。
上手难度:低。 项目提供了三种启动方式:
docker compose up --build 即可,5 分钟内完成部署,对硬件无特殊要求pip install -r requirements.txt + python backend/app.py,适合二次开发run_server.bat,对非技术用户友好适用场景:
不适用场景:
需要正视的几个问题:
backend/persistence/ 使用 SQLite 明文存储仿真数据,无加密。若用于涉及真实卫星轨道参数的场景,需自行评估数据安全风险天基智枢 SmartNode 是一个小而美的卫星通信仿真平台,以极低的上手门槛和务实的工程实践,为卫星通信领域的研究者和爱好者提供了一个可靠的可视化实验环境。它的价值不在于商业级精度,而在于降低准入门槛——让任何对卫星数据回传问题感兴趣的人,都能在本地电脑上搭建起完整的仿真系统,直观理解轨道力学、链路调度和资源竞争背后的工程逻辑。
如果你在寻找一个能快速运行的卫星中继仿真 demo,或者需要一个用于教学演示的可视化工具,SmartNode 值得一试。如果你的目标是真实的星座运营系统,建议基于此项目学习原理后,迁移到专业航天仿真软件(如 STK、GMAT)进行更高保真度的建模。