Advertisement

有趣的Hack-A-Sat黑掉卫星挑战赛——卫星任务规划制订

阅读量:

国家安全在空间领域的具体表现即为国家太空安全。随着太空技术在政治学、经济学、军事科学及文化等多个领域中的应用日益增多,在太空中实施的安全措施不仅涵盖了传统的信息安全问题[1]。

在9月4日发布的一份关键政策文件中, 美国白宫正式发布了首份针对太空网络空间安全领域的关键政策——《航天政策第5号令》, 这一政策被认定为美国首个关于卫星及相关系统网络安全的综合性指导方针. 在此背景下, 美国自2020年起连续两年举办名为"黑掉卫星"的比赛, 其中深入解析了该竞赛的内容及其意义. 本文则聚焦于其中一个具体赛题——卫星任务规划制定Mission的部分解题思路与策略.

题目介绍

Assist the Launchdotcom team in carrying out a task involving their satellite's imaging operation for capturing specific ground locations. Preventing unauthorized access to satellite imaging tasks is not required; standard mission planning suffices.

在侦察卫星领域设置的一道具有挑战性的题目,在给定的具体背景下旨在制定该侦察卫星的任务规划方案,并确保其能够有效执行拍摄和数据传递任务;首先是完成对该卫星任务规划方案的制定,并确保其能够有效执行拍摄和数据传递任务;其次是为了实现对特定目标进行拍摄并将其数据及时传递回来。

主办单位提供了一个连接渠道,在线访问该链接时会返回大量提示信息。为了便于理解和分析这些提示内容,请将它们划分为多个部分逐一说明。

(1)基本信息:侦察卫星编号为USA-224号星载单元提供以下参数:当前运行状态、该卫星的Tracking and Locate Equation(TLE)、目标地点的具体经纬度信息(伊朗航天港)。参赛者需制定相应的拍摄计划,在指定起始时间后48小时内完成目标影像采集并发送至地面指挥中心;确定了观测站位置(位于美国阿拉斯加州费尔班克斯地区),所需成像数据总量为120MB。

##########################

Mission Planning Challenge

##########################

给出了当前时刻

The current time is April 22, 2020 at midnight (2020-04-22T00:00:00Z).

给出了侦察目标(伊朗航天港)

We need to obtain images of the Iranian space port (35.234722 N 53.920833 E) with our satellite within the next 48 hours.

要求设计一个计划用来对目标拍照,同时下传照片

You must design a mission plan that obtains the images and downloads them within the time frame without causing any system failures on the spacecraft, or putting it at risk of continuing operations.

给出了侦察卫星的TLE

The spacecraft in question is USA 224 in the NORAD database with the following TLE:

1 37348U 11002A 20053.50800700 .00010600 00000-0 95354-4 0 09

2 37348 97.9000 166.7120 0540467 271.5258 235.8003 14.76330431 04

The TLE and all locations are already known by the simulator, and are provided for your information only.

Requirements

############

给出了要求的照片大小及接收照片的地面站坐标(美国阿拉斯加州费尔班克斯)

You need to obtain 120 MB of image data of the target location and downlink it to our ground station in Fairbanks, AK (64.977488 N 147.510697 W).

要求给出48h的卫星任务规划

Your mission will begin at 2020-04-22T00:00:00Z and last 48 hours.You are submitting a mission plan to a simulator that will ensure the mission plan will not put the spacecraft at risk, and will accomplish the desired objectives.

任务规划格式:每个任务占一行;具体到每一天的具体时间段中,并且因为模拟器的关系;卫星平台有以下四种不同的运行状态:静态工况、动态工作、空闲状态以及故障排查模式

  • sun_point:太阳能帆板正对太阳启动充能状态。
  • imaging:拍摄。
  • data_downlink:发送照片至地面站。
  • wheel_desaturate:轮去饱和的过程是指利用航天器上的载荷磁传感器使反作用轮进行去饱和操作。其中反作用轮的作用是调节卫星的姿态以维持稳定,在本次挑战题的解决过程中无需深入理解其具体工作原理。

Mission Plan

############

Enter the mission plan into the interface, where each line corresponds to an entry.

You can copy/paste multiple lines at once into the interface.

给出了规划的格式,因为模拟器每分钟执行一次,所以时间中的“秒”总是为0

The simulation runs once per minute, so all entries must have 00 for the seconds field.

Each line must be a timestamp followed by the mode with the format:

2020-04-22T00:00:00Z sun_point

YYYY-MM-DDThh:mm:00Z next_mode

...

要注意确保平台在这个期间是可用的

The mission will run for it's full duration, regardless of when the image data if obtained.

You must ensure the bus survives the entire duration.

Mode Information

################

平台有4种模式

The bus has 4 possible modes:

- sun_point : Charges the batteries by pointing the panels at the sun.

- imaging : Trains the imager on the target location and begins capturing image data.

- data_downlink : Slews the spacecraft to point it's high bandwidth downlink transmitter at the ground station and transmits data to the station.

- wheel_desaturate : Desaturates the spacecraft reaction wheels using the on board magnetorquers.

Each mode dictates the entire state of the spacecraft.

The required inputs for each mode are already known by the mission planner.

3)卫星平台信息

  • 该设备内存容量为95MB,在任务执行中需要连续操作至少两次方能达成120MB的需求。
    • 各组件的正常运行温度范围设定在零度至六十摄氏度之间。
    • 反作用轮的最大转速达到七千转每分钟。
    • 在任务执行过程中每分钟会接收到来自地面站台的一组遥测数据信号。
    • 根据实时接收的遥测数据信号动态优化运行模式,并根据观测结果不断调整系统参数设置以确保卫星通信系统的稳定运行。

Bus Information

###############

The onboard computer has 95 MB of storage.

All bus components are rated to operate effectively between 0 and 60 degrees Celsius.

The battery cannot fall below 10% capacity, or it will reduce the life of the spacecraft.

The reaction wheels have a maximum speed of 7000 RPM.

You will received telemetry from the spacecraft throughout the simulated mission duration.

You will need to monitor this telemetry to derive the behavior of each mode.

########################################################################

4)对参赛者输入的要求

遵循日期、时间和模式组成的格式进行方案输入;启动run程序后将开始模拟执行该卫星运行规划的过程,并验证是否能够按照要求获取目标图像信息。

Please input mission plan in order by time.

Each line must be a timestamp followed by the mode with the format:

YYYY-MM-DDThh:mm:ssZ new_mode

Usage:

run -- Starts simulation

plan -- Lists current plan entries

exit -- Exits

Once your plan is executed, it will not be saved, so make note of your plan elsewhere.

编译及测试

该挑战题的代码位于mission目录中。查阅位于challenge和solver目录下的Dockerfile文件, 发现其中涉及的是基于python 3.7 slim版本的镜像。旨在缩短题目编译所需的时间周期, 在mission目录下新增sources.list列表文件, 其内容如下:

deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib

deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib

deb https://mirrors.aliyun.com/debian-security/ bullseye-security main

deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main

deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib

deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib

deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

将sources.list复制至mission、challenge及solver目录中,并对其中的Dockerfile文件进行修改,在每一个FROM python:3.7-slim的基础上插入新的内容

ADD sources.list /etc/apt/sources.list

在所有的pip命令后方添加指定源:

-i Simple Index

打开终端,进入mission所在目录,执行命令:

sudo make build

使用make test命令进行测试,有大量输出,最后的输出如图7-4所示。

其中,在模拟器中生成了每分钟产生的卫星遥测数据。在图7-4中列出了各项关键参数:包括时间戳、电池电量状态、工作面板指示、通信状态反馈、 onboard computer运行情况、摄像头工作状态以及环境温度数据等具体内容项;此外还记录了收集到的数据总量为123,977,620字节(即约118MB),这一数值虽未完全满足题设标准(120MB),但实验结果仍可视为达标

图7-4 mission挑战题的测试结果

题目解析

为了求解这个问题,采用了软件包Gpredict。在Ubuntu 20.04系统中安装软件包时,默认情况下不会自动更新依赖项。随后对软件源进行更新。

sudo add-apt-repository ppa:gpredict-team/ppa

sudo apt-get update

然后执行命令:

sudo apt install gpredict

输入gpredict即可运行该软件。

新建一个文本文件,内容为主办方给出的侦察卫星的TLE信息:

1 37348U 11002A 20053.50800700 .00010600 00000-0 95354-4 0 09

2 37348 97.9000 166.7120 0540467 271.5258 235.8003 14.76330431 04

使用Gpredict软件打开该文件作为TLE文件,则能清晰观察到其运行轨迹(如图7-5所示)。

点击主界面上方右角处的三角按钮,并进入Configure选项卡以调出配置对话框。首先将星号编号设为37348(这是最近导入的一枚侦察卫星),随后设定地面站位置即为题目中所述的目标地点——伊朗航天港。之后再次点击该三角按钮并切换至Time Controller设置界面(见图7-6)。请注意,在执行时间设置之前必须先激活重置功能。

图7-5 Gpredict导入侦察卫星信息

图7-6 Gpredict设置起始时间

点击主界面右下角的小三角按钮,并选择‘未来轨道’选项。系统会显示编号为37348的所有未来轨道经过伊朗航天港的时间段。其中AOS代表信号卫星进入轨道的时间点,而LOS则表示该卫星脱离轨道的时间刻度。值得注意的是,在AOS时刻(AOS Az),信号在进入轨道时的位置角度即为最大仰角;而在LOS时刻(LOS Az),则记录了信号在脱离轨道时的方向角度。此外,在此期间的最大仰角即为信号波束的最大仰角值。
可见,在22日至23日这两天内,该航天港共接收了6次来自该系统的数据。

图7-7 2020年4月22日至23日,侦察卫星飞临伊朗航天港的时间

更换为位于题目所述的美国阿拉斯加费尔班克斯地区的地面站,并通过与之前相同的方法计算得出后续几天内编号为37348的卫星每次经过该 ground station 的时间间隔(如图7-8所示)。观察结果显示,在22日和23这两天内有10次卫星穿越阿拉斯加地区的 ground station。

图7-8 2020年4月22日至23日,侦察卫星飞临美国阿拉斯加州费尔班克斯的时间

接下来就是尝试,写一个计划如下:

2020-04-22T09:27:00Z imaging

2020-04-22T10:46:00Z data_downlink

2020-04-22T11:05:00Z imaging

2020-04-22T22:21:00Z data_downlink

上述属于最基础的方案。首次访问伊朗航天港时进行拍照操作后,在抵达阿拉斯加地面站后完成数据传输工作;随后再次访问伊朗航天港时执行拍照操作后,在抵达阿拉斯加地面站后完成数据传输工作。输入run指令后会记录相关结果。

First entry must be at the start time: 2020-04-22T00:00:00Z

也就是计划第一行必须从2020-4-22日00:00:00开始,修改如下:

2020-04-22T00:00:00Z sun_point

2020-04-22T09:27:00Z imaging

2020-04-22T10:46:00Z data_downlink

2020-04-22T11:05:00Z imaging

2020-04-22T22:21:00Z data_downlink

再次执行run,提示如下:

2020-04-22T09:27:00Z

模式已切换至'图像采集'状态

{'batt': {'百分比': 91.8, '温度': 29.3}, '面板': {'照明状态': True}, '通信': {'电源': False, '温度': 23.1}, 'OBC': {'存储介质已满(单位未明确)','温度': 28.3}, 'ADCs': {'处理模式': '目标追踪', '温度正常'}, '摄像头': {'供电正常','温度正常'}}

数据收集完成:成功捕获到零个字节

操作失败:错误提示:目标不在视野中;无法捕获

在9:27时打算进行拍照操作。然而随后系统提示目标超出当前范围限制而无法完成此次拍摄任务。考虑到实际情况虽然从理论上讲在地面确实可以看到卫星但完成一次完整的拍摄还需要满足多个条件比如相机的安装角度等技术要求因此决定推迟1分钟执行此次拍摄计划

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T10:46:00Z data_downlink

2020-04-22T11:05:00Z imaging

2020-04-22T22:21:00Z data_downlink

再次执行run,提示如下:

2020-04-22T09:35:00Z

{'batt': {'percent': 35.10000000000002, 'temp': 37.800000000000054}, 'panels': {'illuminated': True}, 'comms': {'pwr': False, 'temp': 24.600000000000264}, 'obc': {'disk': 80, 'temp': 29.80000000000004}, 'adcs': {'mode': 'target_track', 'temp': 29.80000000000004, 'whl_rpm': [1994.1893697570174, 2044.092221966546, 2041.7184082764354], 'mag_pwr': [False, False, False]}, 'cam': {'pwr': True, 'temp': 64.60000000000028}}

Collected Data: 0 bytes

Mission Failed. ['ERROR: cam fried due to high temp.']

当前时间为9点35分。表明修改已获成功后即可进行拍照操作。但随后系统提示相机工作状态异常,并指出此时相机工作温度达到64摄氏度。结合题目限定仅有4种运行模式可供计划配置的特点可知,在本场景下可能与温度异常相关的运行模式包括sun_point和wheel_desaturate两种情况。初步判断可能由于供电不足导致运行效果欠佳而引发高温现象。因此建议于当前时间点开始启用sun_point运行模式待电能补充到位后预计即可恢复正常运转

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:46:00Z data_downlink

2020-04-22T11:05:00Z imaging

2020-04-22T22:21:00Z data_downlink

再次执行run,结果如下:

Switching operational mode to: data_downlink

Updated battery percentage at 49.4% with temperature at 34.3°C; panels are currently in an unlit state; communication status shows active power and temperature at 28.6°C; OBC indicates a disk capacity of 5o with a temperature of approximately 26.7°C; ADCs are configured for target tracking with a temperature of ~26.7°C and wheel speeds measured as [~[rpm values listed]]. Camera power is inactive with a temperature of ~[value]°C.

Collected Data amount reached ~[value] bytes.

Mission execution has encountered an error condition where the ground station is not visible; therefore, no further data downlink is possible.

当前时间为10:46时,表明通过实施相应措施已使相机的温度控制在合理范围内。然而,在此次操作中发现地面站处于不可见范围之内,并未能实现数据传输。参考之前介绍的方案,请将下传时间延迟一分钟。

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:47:00Z data_downlink

2020-04-22T11:05:00Z imaging

2020-04-22T22:21:00Z data_downlink

再次执行run,得到结果如下:

2020-04-22T10:51:00Z

{'batt': {'percent': 8.899999999999972, 'temp': 38.70000000000001}, 'panels': {'illuminated': True}, 'comms': {'pwr': True, 'temp': 57.00000000000029}, 'obc': {'disk': 0, 'temp': 27.099999999999994}, 'adcs': {'mode': 'target_track', 'temp': 27.099999999999994, 'whl_rpm': [2356.7949749976615, 2316.355372277725, 2326.8496527246116], 'mag_pwr': [False, False, False]}, 'cam': {'pwr': False, 'temp': 41.10000000000002}}

Collected Data: 66757180.0 bytes

Mission Failed. ['ERROR: Battery level critical. Entering Safe Mode.']

时间前进到了10:51,又提示电池电压低,需要插入sun_point,如下:

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:47:00Z data_downlink

2020-04-22T10:51:00Z sun_point

2020-04-22T11:05:00Z imaging

2020-04-22T22:21:00Z data_downlink

再次执行run,这次又前进了,到了11:05时,出现了错误,提示目标不在视界内。

2020-04-22T11:05:00Z

Changing mode to: imaging

{'batt': {'percent': 17.89999999999997, 'temp': 38.70000000000001}, 'panels': {'illuminated': True}, 'comms': {'pwr': False, 'temp': 47.00000000000025}, 'obc': {'disk': 10, 'temp': 28.500000000000014}, 'adcs': {'mode': 'target_track', 'temp': 28.500000000000014, 'whl_rpm': [2353.279984412547, 2409.5601434613814, 2377.159872126071], 'mag_pwr': [False, False, False]}, 'cam': {'pwr': True, 'temp': 43.499999999999986}}

Collected Data: 66757180.0 bytes

Mission Failed. ERROR: Target not in view. Cannot image.

再次调整拍摄方案,在这段时间段(即从上午11点零5分到上午11点十二分),发现目标位于视界的下方。可能仰角过小导致,在此期间无法进行成像操作。鉴于上述情况,请重新规划拍摄方案,并参考图7-7进行调整。

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:47:00Z data_downlink

2020-04-22T10:51:00Z sun_point

2020-04-22T20:23:00Z imaging

2020-04-22T22:21:00Z data_downlink

还是提示20:23:00时,目标不在视界内,修改为20:24:00,提示如下:

2020-04-22T20:24:00Z

Changing mode to: imaging

{'batt': {'percent': 89.30000000000015, 'temp': 28.499999999999865}, 'panels': {'illuminated': False}, 'comms': {'pwr': False, 'temp': 22.200000000000305}, 'obc': {'disk': 10, 'temp': 27.400000000000002}, 'adcs': {'mode': 'target_track', 'temp': 27.400000000000002, 'whl_rpm': [4364.605937837991, 4204.103176996605, 4161.290885165412], 'mag_pwr': [False, False, False]}, 'cam': {'pwr': True, 'temp': 27.300000000000136}}

Collected Data: 66757180.0 bytes

Mission Failed. ERROR: Target location is not sunlit. Cannot image.

当时间为夜间时无法进行拍摄操作因此跳过了在该时段内飞临伊朗航天港的情况接着在下一个时段仍然显示夜间状态然后转向下一个时段继续操作如图所示是在23日的时刻为09:48:54由于模拟器采用分钟作为时间单位因此将其时间设置为09:49:00。

提示不在视界内,拍照时间延后1min,就可以拍照了,但是在9:51:00,提示如下:

警告

警告

第0号轮子出现超速情况。根据提示信息,在计划中添加wheel_desaturate,并通过测试发现需要将wheel_desaturate的时间提前设置。本环节安排在9:28:00时间点,并且随后立即执行操作。相机在此时段(9:55:00)会触发温度过高警报,并建议在此步骤之后添加sun_point即可完成校准。

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:47:00Z data_downlink

2020-04-22T10:51:00Z sun_point

2020-04-23T09:27:00Z wheel_desaturate

2020-04-23T09:50:00Z imaging

2020-04-23T09:55:00Z sun_point

2020-04-23T11:09:00Z data_downlink

继续run,可以执行到11:09:00,此时提示地面站不在视界内。

2020-04-23T11:09:00Z

Changing mode to: data_downlink

{'batt': {'percent': 59.1000000000003, 'temp': 33.3999999999998}, 'panels': {'illuminated': False}, 'comms': {'pwr': True, 'temp': 28.40000000000068}, 'obc': {'disk': 30, 'temp': 27.299999999999926}, 'adcs': {'mode': 'target_track', 'temp': 27.299999999999926, 'whl_rpm': [6449.837980221327, 6396.872126383672, 6403.28989339501], 'mag_pwr': [False, False, False]}, 'cam': {'pwr': False, 'temp': 32.20000000000023}}

Collected Data: 85830660.0 bytes

Mission Failed. ERROR: Ground station not in view. Cannot downlink data.

延迟下传数据的时间至前移一分钟,并更改为当前时间为29日29时58分59秒(例如),随后继续执行操作。仍可正常发送直至当前时间点提示地面站已超出视线范围。插入太阳对照点之前,在此期间无法完成发送操作。

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:47:00Z data_downlink

2020-04-22T10:51:00Z sun_point

2020-04-23T09:27:00Z wheel_desaturate

2020-04-23T09:50:00Z imaging

2020-04-23T09:55:00Z sun_point

2020-04-23T11:10:00Z data_downlink

2020-04-23T11:14:00Z sun_point

继续run,在23日13:32:00,又会提示:

2020年4月23日13时32分

{'batt': {'百分比': 77.2}, 'panels': {'照明': True}, 'comms': {'功率': False, '温度': 33.1}, 'obc': {'磁盘使用量': 0, '温度': 30.1}, 'adcs': {'模式': '追太阳', '温度': 30.1, '车轮转速': [6811.58, 6988.27, 7000.15], '电机功率': [False, False, False]}, 'cam': {'功率': False, '温度': 24.8}}

收集到的数据总量为114440880字节

操作失败:['ERROR: ADCS轮毂2已超出最大转速限制']

根据提示,在13:30:00插入一个wheel_desaturate,修改如下:

2020-04-22T00:00:00Z sun_point

2020-04-22T09:28:00Z imaging

2020-04-22T09:35:00Z sun_point

2020-04-22T10:47:00Z data_downlink

2020-04-22T10:51:00Z sun_point

2020-04-23T09:15:00Z wheel_desaturate

2020-04-23T09:50:00Z imaging

2020-04-23T09:55:00Z sun_point

2020-04-23T11:10:00Z data_downlink

2020-04-23T11:14:00Z sun_point

2020-04-23T13:00:00Z wheel_desaturate

2020-04-23T17:00:00Z sun_point

继续运行一段时间后,在2020年4月23日的最后一刻之前完成任务。
但系统提示当前的数据传输量不足,
仅成功获取了约1.1亿字节,
相当于约有1GB的数据量。

2020-04-23T23:59:00Z

{'batt': {'percent': 97.50000000000014, 'temp': 43.199999999999896}, 'panels': {'illuminated': False}, 'comms': {'pwr': False, 'temp': 22.500000000000576}, 'obc': {'disk': 0, 'temp': 37.79999999999999}, 'adcs': {'mode': 'track_sun', 'temp': 37.79999999999999, 'whl_rpm': [1426.229554887768, 1428.5154131730649, 1345.2550319391669], 'mag_pwr': [False, False, False]}, 'cam': {'pwr': False, 'temp': 22.500000000000405}}

Collected Data: 114440880.0 bytes

Mission Failed. Data was not obtained within the time limit.

为此需要对原有计划进行调整。以确保拍照时间和数据传输时间尽可能延长。根据这一原则对23日的拍摄时间进行调整,并将拍摄时间延长1分钟就足够了。

以下是根据给定规则对原文的改写内容

最终输出如图7-9所示。

图7-9 mission挑战最终输出结果

全部评论 (0)

还没有任何评论哟~