先别往下翻
一颗卫星在 400 公里高空飞着,迎面一辆"车"高速逼近。要躲开它,靠什么?
(在心里给一个答案,再往下看。)
2022 年 4 月 23 日:一次真实的"躲"
2022 年 4 月 23 日,国际空间站做了一次非例行机动——不是每月例行的轨道维护,而是躲碎片。
当天下午,停靠的俄罗斯"进步 MS-18"号货运飞船点火 623 秒,把整座空间站抬升了约 1.8 公里,避开一块逼近的太空碎片。
这不是第一次,也不会是最后一次。问题是:这样的机动,ISS 一年要做几次?
太空不是空的:低轨是越来越挤的高速车流
"太空空旷"是错觉。两千公里以下,地球周围的轨道里挤满了人造物——在用卫星、报废卫星、火箭残骸、碰撞碎裂的碎片。按美国太空部队维护的公开目录,2024 年可跟踪的轨道物体(大于约 10 厘米)约有 3.6 万个。
物体越多,轨迹越密,"擦肩而过"就越频繁。NASA 每年会收到几十到上百次"某某物体可能靠近 ISS"的碰撞警告,其中只有少数会真正达到必须机动的程度。
2022 年有多密?统计显示:当年与 ISS 的交会事件达 1486 次,比 2021 年增加了 233%——按这个比例反推,2021 年约 446 次。
ISS 的"躲"有账本:1999 年至今的碰撞规避机动
空口说"越来越多"没有用。ISS 的每次碰撞规避机动(collision avoidance maneuver)都有公开记录。我们取 NASA 公开报告里的几个权威锚点,看累计次数怎么涨:
| 1999–2014 年初(前 15 年) | 16 |
| 1999–2023-08-24(第 37 次) | 37 |
| 1999–2023-11-10(第 38 次) | 38 |
看懂这张表,有三个点:
1. 平均下来,早年大约每年躲 1 次。 前 15 年 16 次,约合每年 1.1 次——"每年躲一两次"是维持了很久的常态。
2. 2023 年下半年,频率明显上去了。 2023 年 8 月 6 日与 8 月 24 日,18 天内接连做了第 36、37 次机动——一次躲 2021 年俄罗斯反卫星试验留下的 Cosmos 1408 碎片,一次躲 2007 年中国反卫星试验留下的 FY-1C 碎片;11 月 10 日又做了第 38 次。从 8 月初到 11 月中旬,约 3 个月里 3 次机动,相比早年"每年约 1 次",节奏明显加快。NASA 记录的第 38 次目标,是一颗 1992 年发射的苏联 Zenit-2(SL-16)火箭碎裂后留下的碎片,整次机动只用了 0.5 米/秒 的顺行推力。
3. 每次机动都要花燃料。 机动靠推进器点火改变轨道,每一次都在消耗推进剂。对 ISS 来说,燃料不是无限的——这就是"轨道是资产,车流越挤,维护成本越高"。
躲的依据:不是直觉,是概率
那"要不要躲"是怎么定的?不是靠人肉眼看雷达,而是算概率。
NASA 的飞行规则是:当预测的碰撞概率超过一万分之一时,就执行规避机动(除非机动本身带来的风险更大)。每次评估都要同时算两件事:这辆车"会不会撞上",以及"躲这一下本身安不安全"。
所以每次"躲"都不是慌乱刹车,而是算准了再变轨——改变 ISS 的轨道,让两辆车在交会点错开时间或高度。这需要提前预警、提前算好——从发现高风险交会到执行机动,要留出足够的时间窗口。
一个小细节能说明问题:第 38 次机动只要 0.5 米/秒——相比轨道上每秒约 7.6 公里的飞行速度,只是"轻轻推了一下"。因为躲开交会不需要大幅变道,只需要把两辆车在交会点的时间或位置错开那么一点点。
三个问题
1. 太空里怎么"躲"? 不是像开车那样急刹车,而是提前算准碰撞概率,用推进器改变轨道高度,让两个物体在交会点错开。每次机动都要权衡"撞上的风险"和"躲的风险"。
2. 躲一次要花什么代价? 燃料。每一次规避机动都在消耗推进剂,缩短轨道能维持的时间。轨道是资产——车流越挤,躲得越多,维护成本越高。
3. 躲得多说明什么? 说明轨道越来越挤。被跟踪物体从几千个涨到约 3.6 万个,ISS 一年要处理上千次交会事件——碰撞规避从偶发变成了常态,这也是为什么"不制造新碎片、主动清理旧碎片"会成为太空时代的公共议题。
你可以自己验
到这里的所有数字,都不是"我们说的",而是公开记录算出来的。ISS 碰撞规避机动的三个累计锚点(16 / 37 / 38)逐条取自 NASA 轨道碎片计划办公室(ODQN)公开报告原文——前 15 年 16 次(V18I1/2014)、2023 年 8 月两次为第 36、37 次(V27I4/2023-10)、2023-11-10 为第 38 次(V28I1/2024);交会统计为美国太空部队(Space Command)公开统计、美国务院官员 2023 年引述。
我们把锚点数据做成了可复现脚本:读取冻结快照 → 重算累计表、派生数字与哈希 → 交叉校验"1486 次 = 2021 年 ×(1+233%)"。你(或任何 AI agent)都可以重跑核对,见附录。
附录:可复现验证
python3 verify_debris.py # 读默认快照,重跑并核对 python3 verify_debris.py debris_maneuvers.json # 指定快照文件
脚本会做三件事:
1. 读取冻结快照(ISS 碰撞规避机动 3 个累计锚点 + 交会统计 + 2022-04-23 工作实例);
2. 重算累计表、派生数字(年均次数、2023 年集中机动间隔、交会 2021 反推值);
3. 输出与正文完全一致的表格、验证层级与快照 sha256。
说明:快照锚点逐条取自 NASA 轨道碎片计划办公室(ODQN)公开报告原文——16 次(V18I1/2014)、第 36、37 次(V27I4/2023-10)、第 38 次(V28I1/2024);机动阈值"碰撞概率 > 1/10000"亦为 V18I1 原文确认。交会统计(2022 年 1486 次,较 2021 增 233%)为 Space Command 公开统计口径。快照对每个数字标注验证层级(可复现≠可验证):16/37/38 三个累计锚点与机动阈值为 primary——主源逐字核对,快照内含原文引用句 quote 与出处定位 locator,可逐字复核;交会统计与 2022-04-23 工作实例为 secondary——归因清楚的官方二手口径;轨道物体数约 3.6 万为 media——媒体汇编,仅供参考。正文表格与派生数字由脚本从快照重算,冻结快照可精确复现。
原始材料(可直接复制)
下面的脚本与数据快照全文,供你(或任何 AI agent)直接复制使用,无需下载。
复现材料(含 sha256 锚点,随嵌入文件自动更新):
verify_debris.py(复现脚本) · sha256 b9382c12d7790b3dc2fd911bff5f589c3f8acff51a495149dcf7ae96543a4a31
debris_maneuvers.json(数据快照) · sha256 5a70f5af9c344942773ebcc7aa958372ea22e4b806909b14ab96ead37171f398
verify_debris.py — 复现脚本全文
#!/usr/bin/env python3
# verify_debris.py — 科普附录:验证 ISS 碰撞规避机动累计表(零依赖)
# 输入:debris_maneuvers.json 冻结快照 v2(3 个累计锚点 + 证据层级 + 交会统计 + 工作实例)
# 输出:累计表 + 证据层级 + 派生数字 + 快照 sha256
# 用法:python3 verify_debris.py (默认读 debris_maneuvers.json)
# python3 verify_debris.py FILE (指定快照文件)
# 退出码:0 成功;2 解析失败;3 证据契约违规(primary 缺 quote/locator)
import hashlib
import json
import sys
TIERS = ("primary", "secondary", "media")
def check_schema(snap):
"""证据门禁:primary 档必须带原文引用句 quote + 出处定位 locator(可复现≠可验证)。"""
errors = []
for a in snap.get("anchors", []):
tier = a.get("tier")
if tier not in TIERS:
errors.append(f"锚点 {a.get('label', '?')}: tier 缺失或非法({tier})")
continue
if tier == "primary":
if not a.get("quote", "").strip():
errors.append(f"锚点 {a.get('label', '?')}: primary 档缺 quote(原文引用句)")
if not a.get("locator", "").strip():
errors.append(f"锚点 {a.get('label', '?')}: primary 档缺 locator(出处定位)")
for key, item in snap.get("background", {}).items():
if isinstance(item, dict) and "tier" in item:
tier = item.get("tier")
if tier not in TIERS:
errors.append(f"background.{key}: tier 非法({tier})")
elif tier == "primary":
if not item.get("quote", "").strip():
errors.append(f"background.{key}: primary 档缺 quote")
if not item.get("locator", "").strip():
errors.append(f"background.{key}: primary 档缺 locator")
return errors
def main():
path = sys.argv[1] if len(sys.argv) > 1 else "debris_maneuvers.json"
with open(path, "rb") as f:
raw = f.read()
sha = hashlib.sha256(raw).hexdigest()
try:
snap = json.loads(raw.decode("utf-8"))
anchors = snap["anchors"]
conj = snap["conjunction"]
ex = snap["worked_example"]
rc = snap.get("recent_cluster", {})
bg = snap.get("background", {})
except Exception as e:
print(f"ERROR: 快照解析失败: {e}", file=sys.stderr)
return 2
schema_errors = check_schema(snap)
if schema_errors:
print("ERROR: 证据契约违规(可复现≠可验证):", file=sys.stderr)
for e in schema_errors:
print(f" - {e}", file=sys.stderr)
return 3
print("=== ISS 碰撞规避机动 累计次数(NASA ODQN 公开记录)===")
print(f"{'统计时点':<28}{'累计':>5}{'层级':>9}")
print("-" * 46)
for a in anchors:
print(f"{a['label']:<28}{a['cum']:>5}{a['tier']:>9}")
print("-" * 46)
n_early_years = 15
avg_early = anchors[0]["cum"] / n_early_years
print(f"前 {n_early_years} 年平均: {anchors[0]['cum']}/{n_early_years} ≈ {avg_early:.1f} 次/年")
if rc:
d1 = rc.get("days_36_to_37")
d2 = rc.get("days_37_to_38")
d3 = rc.get("days_36_to_38")
if d1:
print(f"第 36 次(2023-08-06)→ 第 37 次(2023-08-24):间隔 {d1} 天(单月 2 次)")
if d2:
print(f"第 37 次(2023-08-24)→ 第 38 次(2023-11-10):间隔 {d2} 天")
if d3:
print(f"第 36 次 → 第 38 次:{d3} 天(约 3 个月 3 次机动)")
prev = round(conj["events"] / (1 + conj["increase_pct_vs_prev_year"] / 100.0))
print(f"交会事件 {conj['year']} = {conj['events']}({conj.get('tier', '?')});按 +{conj['increase_pct_vs_prev_year']}% 反推上一年 ≈ {prev} 次")
print(f"工作实例 {ex['date']}: {ex['vehicle']} 点火 {ex['burn_seconds']} s → 抬升约 {ex['orbit_raise_km']} km({ex.get('tier', '?')}:{ex['purpose']})")
mt = bg.get("maneuver_threshold")
if mt:
print(f"背景: 机动阈值 {mt['value']}({mt['tier']},quote 见快照)")
t = bg.get("trackable_objects_gt10cm_2024")
if t:
print(f"背景: 可跟踪轨道物体(>约10cm, 2024) ≈ {t['count']:,}({t['tier']}:{t['note']})")
print("-" * 46)
print("验证层级汇总(可复现≠可验证,quote 为外部正确性逐字证据):")
print(" primary(主源逐字): 16/37/38 三锚点 + 机动阈值(ODQN 原文 quote 逐字核对)")
print(" secondary(官方二手): 交会事件 1486/2022 + 工作实例(归因清楚的官方口径)")
print(" media(媒体汇编): 轨道物体数 36500(仅供参考)")
print(f"快照格式: {snap.get('format', '?')} · 锚点行数 {snap.get('rows', '?')}")
print(f"快照 sha256: {sha}")
print("验证方式:重跑本脚本,与文章正文累计表与派生数字逐项核对。")
return 0
if __name__ == "__main__":
sys.exit(main())
debris_maneuvers.json — 数据快照全文
{
"format": "chenji-debris-maneuvers-v2",
"schema": {
"version": 2,
"evidence_tiers": ["primary", "secondary", "media"],
"rule": "primary 档锚点必须带原文引用句(quote)+出处定位(locator);secondary 为归因清楚的官方二手口径;media 为媒体汇编。可复现≠可验证:quote 是外部正确性的逐字证据,让 AI agent 无需依赖权威即可核验。"
},
"generated": "2026-08-16",
"source": "NASA 轨道碎片计划办公室(Orbital Debris Quarterly News)公开报告原文",
"rows": 3,
"anchors": [
{
"asof": "2014-01",
"label": "1999–2014 年初(前 15 年)",
"cum": 16,
"tier": "primary",
"quote": "During its first 15 years of operations, the ISS successfully conducted 16 collision avoidance maneuvers",
"locator": "ODQN V18I1(2014-01)'Large Population' 报道续文,第 2 页",
"ref": "NASA 轨道碎片计划办公室,Orbital Debris Quarterly News Vol.18 No.1(2014-01)"
},
{
"asof": "2023-08-24",
"label": "1999–2023-08-24(第 37 次)",
"cum": 37,
"tier": "primary",
"quote": "These PDAMs are the 36th and 37th collision avoidance maneuvers conducted by the ISS against tracked objects since 1999.",
"locator": "ODQN V27I4(2023-10)封面文章第 1 页(08-06 规避 Cosmos 1408 碎片 0.3 m/s 顺行 / 08-24 规避 FY-1C 碎片 -0.3 m/s 逆推)",
"ref": "NASA 轨道碎片计划办公室,Orbital Debris Quarterly News Vol.27 No.4(2023-10)"
},
{
"asof": "2023-11-10",
"label": "1999–2023-11-10(第 38 次)",
"cum": 38,
"tier": "primary",
"quote": "This PDAM marked the 38th collision avoidance maneuver conducted by the ISS against tracked objects since 1999.",
"locator": "ODQN V28I1(2024-02)封面文章第 1 页(11-10 15:07 GMT,0.5 m/s 顺行,目标 SL-16 碎片 1992-093KT / SATCAT 39841)",
"ref": "NASA 轨道碎片计划办公室,Orbital Debris Quarterly News Vol.28 No.1(2024-02)"
}
],
"conjunction": {
"year": 2022,
"events": 1486,
"increase_pct_vs_prev_year": 233,
"tier": "secondary",
"locator": "Space Command 公开统计,美国务院官员 2023 年引述",
"note": "2022 年 ISS 交会事件 1486 次,较 2021 年增 233%(官方二手口径,非 ODQN 主源)"
},
"worked_example": {
"date": "2022-04-23",
"vehicle": "Progress MS-18",
"burn_seconds": 623,
"orbit_raise_km": 1.8,
"purpose": "规避太空碎片,非例行机动",
"tier": "secondary",
"locator": "Roscosmos 公开公告(2022-04-23)",
"note": "Roscosmos 公告:进步 MS-18 点火 623 秒,轨道抬升约 1.8 公里"
},
"recent_cluster": {
"note": "2023 年下半年集中机动:第 36→37→38 次在约 3 个月内",
"days_36_to_37": 18,
"days_37_to_38": 78,
"days_36_to_38": 96,
"tier": "primary",
"locator": "由 ODQN V27I4 与 V28I1 锚点日期计算(2023-08-06 → 2023-08-24 → 2023-11-10)"
},
"background": {
"maneuver_threshold": {
"value": "碰撞概率 > 1/10000",
"tier": "primary",
"quote": "If a predicted conjunction yields a probability of collision greater than 1 in 10,000, official flight rules call for the execution of a collision avoidance maneuver by the ISS",
"locator": "ODQN V18I1(2014-01)第 1-2 页"
},
"trackable_objects_gt10cm_2024": {
"count": 36500,
"tier": "media",
"note": "2024 年公开统计,媒体汇编(非主源,仅供参考)"
}
}
}
你该带走什么
太空不是真空,是越来越挤的高速车流。ISS 的"躲"不是靠运气,而是算准概率、提前变轨——1999 年至今躲了 38 次,其中 2023 年下半年约 3 个月就做了 3 次(第 36–38 次),而一次机动往往只需 0.5 米/秒的推力。轨道是资产:车流越挤,躲得越多,维护成本越高。
数据来源:NASA 轨道碎片计划办公室(Orbital Debris Quarterly News)公开报告 —— ISS 碰撞规避机动累计锚点:16 次(ODQN V18I1,2014)、第 36/37 次(ODQN V27I4,2023-10)、第 38 次(ODQN V28I1,2024);机动阈值"碰撞概率 > 1/10000"亦载 V18I1。
历史背景:Roscosmos/NASA 公开声明 —— 2022-04-23 进步 MS-18 点火 623 秒抬升约 1.8 公里;Space Command/美国务院公开统计 —— 2022 年 ISS 交会事件 1486 次(较 2021 增 233%)。
可验证声明 印记等级:完整可复现
- 数据可复现:文中数字可由文末脚本 + 冻结快照重跑核对
- 引用可溯源:锚点逐字回主源(原文引用句 + 出处定位)
- 结论可核对:证据层级已标注(主源逐字 / 官方二手 / 媒体汇编)