/cdmi-stk-all

本项目致力于打造一款开源的国产卫星工具包,支持大型星座的设计模拟,运行模拟以及载荷控制模拟。寻STK高手对STK的功能进行细化并协助算法验证。

Primary LanguageJava

项目介绍

本项目致力于打造一款开源的国产卫星工具包(类似美国Analytical Graphics公司开发的STK产品),支持航天任务的全过程,包括设计、测试、发射、运行和任务应用。

备注:本项目以提供计算工具以及运控管理框架为主,不提供与卫星实际操作控制相关的任何指令和具体任务。

目前项目需要以下的合作伙伴:

  • 熟悉STK操作的设计人员对STK的功能进行细化;
  • 熟悉STK算法,或卫星相关算法的人能对算法进行描述,并协助进行算法验证;
  • 能够提供该产品迫切的用户需求,如需求被纳入本项目,我们将免费进行开发。

版本需求

0.1版本

  • 实现对卫星两行数据的自动更新
  • 实现SGP4轨道计算
  • 2D卫星轨道轨迹展示
    • 支持星座选择
    • 支持卫星过滤

0.2版本

  • 支持星座运行回放
  • 支持步速播放/回放

0.3版本

  • 场景仿真
    • 卫星运行仿真(仿STK)
      • 根据卫星两行数据输出卫星在特定时段内的坐标位置
      • 根据卫星瞬根数据输出卫星在特定时段内的坐标位置
      • 根据地面站位置计算星站可访问时间窗
    • 星座运行仿真
      • 计算星地时间窗
  • 实现HPOP轨道计算
  • 天文计算工具

接口设计

内部接口

纵向接口

版本 接口说明 提供服务名 接口类型
0.1 获取指定卫星在指定未来时间段内的预估位置信息 卫星位置信息 Restful
0.1 获取指定卫星在历史时间段内的位置信息 卫星位置信息 Restful
0.1 获取指定卫星的最新两行数据 卫星瞬根更新服务 Restful
0.1 获取系统内在轨卫星列表 卫星瞬根更新服务 Restful
0.1 获取指定卫星的轨道信息 卫星瞬根更新服务 Restful
0.1 获取指定卫星的上一次更新轨道的轨道信息 卫星瞬根更新服务 Restful
0.1 创建/编辑/删除一个卫星星座 星座数据配置服务 Restful
0.1 将卫星添加到指定的卫星星座中 星座数据配置服务 Restful
0.1 获取星座中的卫星列表 星座数据配置服务 Restful
0.1 从指定的卫星星座中移除指定卫星 星座数据配置服务 Restful
0.3 创建一个地面信关站 站网管理系统 Restful
0.3 添加地面信关站到指定的卫星星座中 星座数据配置服务 Restful
0.3 获取指定卫星与指定信关站的组网时间窗 站网管理系统 Restful
0.3 获取星座星地通信时间日历 站网管理系统 Restful
0.3 重新生成星座星地通信时间日历 站网管理系统 Restful
0.3 系统状态变化消息推送(更新模式/正常模式) 消息推送服务 WebSocket
0.3 卫星通信日历已被更新 消息推送服务 WebSocket
0.3 运控任务执行时间已被更新 消息推送服务 WebSocket

横向接口

版本 接口说明 接口提供者 接口消费者
0.1 获取指定卫星的最新瞬根数据 卫星瞬根更新服务 卫星位置信息
0.3 发布系统进入更新模式 微服务配置中心服务 卫星瞬根更新服务
0.3 订阅系统模式变化 微服务配置中心服务 消息推送服务

消息总线

发布方 订阅方 Topic 备注
卫星瞬根更新服务 卫星位置服务 新瞬根
卫星瞬根更新服务 消息推送服务 新瞬根
卫星位置服务 站网管理系统 卫星新位置
站网管理系统 消息推送服务 新星地通信日历
星座任务规划服务 消息推送服务 任务排期更新

定时器设计

版本 服务组件名 定时器名 作用 规则
0.1 卫星瞬根更新服务 两行数据更新 定时获取最新的卫星两行数据 每天4小时更新一次

数据结构设计

数据库选型

数据库名称 选型 版本
AGI卫星瞬根数据库 MySQL数据库
星座数据配置数据库 MySQL数据库
星座运行状态数据库 MongoDB数据库
星座基线与告警数据库 MongoDB数据库
星座网络拓扑数据库 Neo4J数据库
场景仿真数据库 MySQL数据库
运控黑匣子 MongoDB数据库
缓存数据库(用于存储卫星预估轨迹) Redis数据库
浏览器本地缓存数据库 IndexDB数据库

数据库设计

AGI卫星瞬根数据库(db_startlink_orbit)

卫星最新轨道信息表

説明:衛星最新軌道信息表主要是用以保存采集到的最新衛星兩行數據,其中北美防空司令部賦予的編號可以與用戶系統中的衛星編號進行匹配。

表名:Orbit_Latest

字段設計:

字段名 類型 含義 説明
NoradId Char(5) 北美防空司令部給衛星分配的編號 必须
OpenId Char(32) 本系統給衛星指定的一個 必须
Name Varchar2(36) 給衛星自定義的名稱 可為空
TleName Varchar2(36) 衛星在兩行數據中的名稱 必須
Line1 Char(69) 衛星的兩行數據第一行 必須
Line2 Char(69) 衛星的兩行數據第二行 必須
TleEpochTime DateTime(3) 當前兩行文件更新時間(UTC時間,精確到豪秒) 必須
TleLastEpochTime DateTime(3) 兩行文件上一次更新時間,用來計算僞真實軌跡 可為空
瞬根數據-星歷時間 可為空
瞬根數據-軌道半長徑 可為空
瞬根數據-偏心率 可為空
瞬根數據-軌道傾角 可為空
瞬根數據-升交點赤經 可為空
瞬根數據-近地點幅角 可為空
瞬根數據-平近點角 可為空
瞬根數據- 可為空
瞬根數據- 可為空
EpochTime DateTime(3) 當前瞬根數據更新時間(UTC時間,精確到豪秒) 可為空
LastEpochTime DateTime(3) 瞬根數據上一次更新時間,用來計算僞真實軌跡 可為空
Propagators 字符枚舉 支持的軌跡計算模型(GDP4/HPOP) 必須
數字 飛行數據-每天环绕地球的圈数 可為空
數字 飛行數據-发射以来飞行的圈数 可為空
Status 字符枚举 数据状态(草稿/正常) 必须

卫星历史轨道信息表

説明:衛星歷史軌道信息表主要是用以保證采集的衛星歷次兩行數據信息。

表名:Orbit_History

字段設計:

字段名 類型 含義 説明
Id Char(32) 系统分配给行数据的唯一编码 必须
Open_Id Char(32) 本系統給衛星的唯一编码 必须
TleName Varchar2(36) 衛星在兩行數據中的名稱 必须
Line1 Char(69) 衛星的兩行數據第一行 必须
Line2 Char(69) 衛星的兩行數據第二行 必须
TleEpochTime DateTime(3) 當前兩行文件更新時間(UTC時間,精確到豪秒) 必须
瞬根數據-星歷時間 可為空
瞬根數據-軌道半長徑 可為空
瞬根數據-偏心率 可為空
瞬根數據-軌道傾角 可為空
瞬根數據-升交點赤經 可為空
瞬根數據-近地點幅角 可為空
瞬根數據-平近點角 可為空
瞬根數據- 可為空
瞬根數據- 可為空
EpochTime DateTime(3) 當前瞬根數據更新時間(UTC時間,精確到豪秒) 可為空
Propagators 字符枚舉数组 支持的軌跡計算模型(GDP4/HPOP) 必須
數字 飛行數據-每天环绕地球的圈数 可為空
數字 飛行數據-发射以来飞行的圈数 可為空

星座数据配置数据库

星座信息表

说明:该表用于存储运控系统中所有的星座,默认情况下,这些星座并不参与运控,如果需要星座能加入到运控体系,则需要先行启动星座,在卫星运行图中,星座信息可以作为一个过滤参数。

表名:Constellation

字段設計:

字段名 類型 含義 説明
OpenId Char(32) 本系统给星座分配的唯一编号 必须
Name Varchar2(36) 星座的名称 必须
OwnerShip Varchar2(36) 星座的归属国家 可为空
Desc Varchar2(256) 星座的描述 可为空

星座卫星分组表

说明:在同一个星座中可能存在不同类型的卫星,这些卫星具备特别的一些功能,比如信号中继,可以按星座卫星分组对卫星进行管理。星座分组不支持多级分组。

表名:Satellite_Groups

字段設計:

字段名 類型 含義 説明
Id Char(32) 分组行数据的唯一标识 必须
Constellation_Id Char(32) 本系统给星座分配的唯一编号 必须
Name Varchar2(36) 星座分组名称 必须
Desc Varchar2(256) 对星座分组的描述 可为空

卫星分组与卫星关联表

说明:将卫星进行分组。

表名:GroupMember

字段設計:

字段名 類型 含義 説明
Id Char(32) 分组行数据的唯一标识 必须
Constellation_Id Char(32) 本系统给星座分配的唯一编号 必须
Group_Id Char(32) 星座分组编号 必须
Satellite_Id Char(32) 本系统给卫星分配的唯一编号 必须

星座卫星关联表

说明:该表用于存储星座与卫星的关系,卫星的编码信息来自AGI卫星瞬根数据库中的卫星的OpenId,当前约定,一颗卫星只能属于一个星座。

表名:Constellation_Satellite

字段設計:

字段名 類型 含義 説明
Id Char(32) 行数据的唯一标识 必须
Constellation_Id Char(32) 本系统给星座分配的唯一编号 必须
Satellite_Id Char(32) 本系统给卫星分配的唯一编号 必须
IsInNet Boolean 该卫星是否入网,默认为false 必须

星座信关站关联表

说明:该表用于存储星座与地面站的关系,地面站的编码信息来自地面站站网系统中的地面站的OpenId,一个地面站可以同时为多个星座服务。信关站包含了固定信关站和移动信关站。

表名:Constellation_Station

字段設計:

字段名 類型 含義 説明
Id Char(32) 行数据的唯一标识 必须
Constellation_Id Char(32) 本系统给星座分配的唯一编号 必须
Station_Id Char(32) 本系统给地面站分配的唯一编号 必须
IsMovable Boolean 该地面站是否为可移动地面站 必须
IsInNet Boolean 该地面站是否入网 必须

卫星载荷表(2.0)

说明:该表用于存储卫星以及卫星的相关载荷设备信息。

表名:Satellite_Equipment

字段設計:

字段名 類型 含義 説明
OpenId Char(32) 系统分配给载荷的唯一标识 必须
Satellite_Id Char(32) 本系统给卫星分配的唯一编号 必须
ParentEquip_Id Char(32) 载荷的父级载荷唯一标识 可为空
EquipEnum VarChar2(16) 本系统为载荷设备分配的枚举名 必须
Status Varchar2(16) 载荷状态枚举(关机,故障,正常) 必须

卫星载荷默认属性表(2.0)

说明:该表用于存储卫星以及卫星的相关载荷设备信息。

表名:Equipment_DefaultProperties

字段設計:

字段名 類型 含義 説明
Id Char(32) 行数据的唯一标识 必须
Satellite_Id Char(32) 本系统给卫星分配的唯一编号 必须
Equip_Id Char(32) 卫星载荷唯一标识 必须
TypeLabel Varchar2(12) 属性的分类标签,仅支持一个标签,对应载荷属性枚举 必须
PropertyKey VarChar2(32) 卫星载荷属性Key,对应特定类型的载荷属性枚举硬编码 必须
PropertyValue VarChar2(64) 卫星载荷属性Value 必须

星座运行状态数据库

卫星/载荷实时状态表

说明:该表用于存储卫星以及卫星载荷设备的最新状态以及最新运参。

表名:Equipment_Properties

字段設計:

字段名 類型 含義 説明
Id Char(32) 行数据的唯一标识 必须
Satellite_Id Char(32) 本系统给卫星分配的唯一编号 必须
Equip_Id Char(32) 卫星载荷唯一标识 必须
TypeLabel Varchar2(12) 属性的分类标签,仅支持一个标签,对应载荷属性枚举 可为空
PropertyKey VarChar2(32) 卫星载荷属性Key,对应特定类型的载荷属性枚举硬编码 必须
PropertyValue VarChar2(64) 卫星载荷属性Value 必须
CollectionTime DateTime(3) 状态运参数值采集时间 必须

卫星预估轨迹缓存表

说明:该表用于存储卫星根据瞬根获得的轨迹。其存储于Redis分布式缓存中。Key为系统编号+星历时间+时间间隔(5位),最大粒度为分钟。

表名:Cache_Satellite_Traces

字段設計:

字段名 類型 含義 説明
Key DateTime(3) 系统分配给卫星的系统编号+星历时间(精确到毫秒) 必须
Value.ECI.X Double 必须
Value.ECI.Y Double 必须
Value.ECI.Z Double 必须
Value.ECI.Vx Double 必须
Value.ECI.Vy Double 必须
Value.ECI.Vz Double 必须
Value.ECEF.X Double 必须
Value.ECEF.Y Double 必须
Value.ECEF.Z Double 必须
Value.ECEF.Vx Double 必须
Value.ECEF.Vy Double 必须
Value.ECEF.Vz Double 必须
Value.Geo.X Double 必须
Value.Geo.Y Double 必须
Value.Geo.Z Double 必须

卫星历史轨迹缓存表

说明:该表用于存储卫星根据历史瞬根获得的过去的轨迹。其存储于Redis分布式缓存中。Key为系统编号+星历时间+时间间隔(5位),最大粒度为分钟。

表名:Cache_Satellite_HistoryTraces

字段設計:

字段名 類型 含義 説明
Key DateTime(3) 系统分配给卫星的系统编号+星历时间(精确到毫秒) 必须
Value.ECI.X Double 必须
Value.ECI.Y Double 必须
Value.ECI.Z Double 必须
Value.ECI.Vx Double 必须
Value.ECI.Vy Double 必须
Value.ECI.Vz Double 必须
Value.ECEF.X Double 必须
Value.ECEF.Y Double 必须
Value.ECEF.Z Double 必须
Value.ECEF.Vx Double 必须
Value.ECEF.Vy Double 必须
Value.ECEF.Vz Double 必须
Value.Geo.X Double 必须
Value.Geo.Y Double 必须
Value.Geo.Z Double 必须

卫星历史轨存表

说明:该表用于存储卫星根据历史瞬根获得的过去的轨迹。只能存储整秒或整分钟的轨迹。其步长间隔根据系统配置而定。

表名:Satellite_HistoryTraces

字段設計:

字段名 類型 含義 説明
Id Char(32) 记录的唯一编号 必须
Satel_Id Char(32) 系统分配给卫星的唯一标识 必须
EpochTime DateTime(3) 该轨迹的星历时间 必须
Step Int 到下一个轨迹的间隔步长时间 必须
Value.ECI.X Double 必须
Value.ECI.Y Double 必须
Value.ECI.Z Double 必须
Value.ECI.Vx Double 必须
Value.ECI.Vy Double 必须
Value.ECI.Vz Double 必须
Value.ECEF.X Double 必须
Value.ECEF.Y Double 必须
Value.ECEF.Z Double 必须
Value.ECEF.Vx Double 必须
Value.ECEF.Vy Double 必须
Value.ECEF.Vz Double 必须
Value.Geo.X Double 必须
Value.Geo.Y Double 必须
Value.Geo.Z Double 必须

卫星运参变更表

星座链路变化表

卫星/载荷状态变更表

健康基线与告警数据库

健康指标表

指标告警基线表

告警记录表

告警消除记录表

星座网络拓扑库

地面站信息库

信关站信息表

说明:该表用于存储地面站的相关信息。

表名:Station

字段設計:

字段名 類型 含義 説明
OpenId Char(32) 本系统给信关站分配的唯一编号 必须
Name Varchar2(36) 地面信关站的名称 必须
Latitude Double 地面信关站的经度 可为空
Longitude Double 地面信关站的纬度 可为空
Altitude Double 地面信关站的高度 可为空
isMovable Boolean 是否为移动信关站 必须
Desc Varchar2(256) 星座的描述 可为空

移动信关站位置表

说明:该表用于存储移动信关站位置表。

表名:Station_Location

字段設計:

字段名 類型 含義 説明
Id Char(32) 记录唯一编号 必须
MoveTime DateTime(3) 位置时间 必须
Station_Id Char(32) 本系统给信关站分配的唯一编号 必须
Latitude Double 地面信关站的经度 必须
Longitude Double 地面信关站的纬度 必须
Altitude Double 地面信关站的高度 必须

星站组网时间窗

星站组网策略表

全局配置数据库

该数据表单对应的是配置微服务

仿真计算数据库

归档与数据备份

归档与数据备份为独立的定时任务服务,通过绑定数据库,设置归档备份策略自动完成对业务数据的备份与归档,历史数据消除等操作,具体间归档与数据备份服务设计文档。

对本项目而言,对数据库备份涉及:

版本 数据库名 表名 作用 规则
1.0 AGI卫星瞬根数据库 卫星历史轨道信息表 减少数据库数据量,提升检索效率 每月执行一次

关键流程

卫星轨道瞬根数据更新

卫星入网/离网状态更新