坐标系基础:天球坐标系、星敏感器坐标系、航天器本体坐标系、坐标转换矩阵
做星光敏感器导航,说白了就是回答三个问题:
- 我在哪?(航天器在太空中的位置和姿态)
- 我看到了什么?(星敏感器拍摄到的恒星)
- 怎么把看到的和我所在的位置联系起来?(坐标转换)
这三个问题,每一个都离不开坐标系。我刚开始接触星敏感器时,觉得坐标系就是一堆数学公式,没什么大不了的。直到有一次,我在项目中因为搞混了坐标轴方向,导致姿态解算结果差了180度——嗯,那天的加班餐味道我现在还记得。
所以,坐标系这东西,看似基础,但真不能马虎。咱们今天就把这几个坐标系彻底讲清楚。
1. 天球坐标系
天球坐标系,你可以把它想象成一个巨大的虚拟球壳。地球在球心,所有恒星都投影在这个球壳上。我们用它来描述恒星在天空中的位置。
常用的天球坐标系有两种:
- 赤道坐标系:以地球赤道面为基准。用赤经(RA)和赤纬(Dec)表示。赤经从春分点起算,向东度量;赤纬从赤道面向北为正。
- 黄道坐标系:以地球公转轨道面(黄道面)为基准。用黄经和黄纬表示。这个在星敏感器里用得少,但做太阳系导航时会用到。
我个人习惯用赤道坐标系。为什么呢?因为星敏感器拍摄的星图,本质上就是一张天球赤道坐标系的投影图。你想想看,星敏感器看到的恒星,它们的赤经赤纬是固定的(忽略自行),这就给我们提供了一个天然的参考基准。
2. 星敏感器坐标系
星敏感器坐标系,就是固定在星敏感器自身上的坐标系。它的定义很简单:
- 原点:通常位于星敏感器的光学中心(或探测器中心)。
- Z轴:沿光轴方向,指向星敏感器观测的方向。
- X轴、Y轴:与探测器像元阵列的行列方向对齐。
这个坐标系是非惯性系。星敏感器在太空中怎么转,这个坐标系就跟着怎么转。我们通过星敏感器拍摄到的星点,在探测器上的像素坐标(x, y),就可以计算出这颗星在星敏感器坐标系下的方向矢量。
这里有个坑,我踩过。不同厂家的星敏感器,X轴和Y轴的定义可能不一样。有的厂家把X轴定义为行方向,有的定义为列方向。我曾经因为没仔细看手册,直接把像素坐标代入公式,结果解出来的姿态全是反的。所以,拿到一个星敏感器,第一件事就是确认它的坐标系定义。
3. 航天器本体坐标系
航天器本体坐标系,就是固定在航天器结构上的坐标系。它的定义通常遵循以下原则:
- 原点:位于航天器的质心(或几何中心)。
- Z轴:通常指向对地方向(或任务指定的方向)。
- X轴:指向飞行方向(或太阳方向)。
- Y轴:由右手定则确定。
这个坐标系是星敏感器导航的最终目标。我们做星敏感器导航,最终要输出的就是航天器本体坐标系相对于天球坐标系的姿态。
说白了,天球坐标系是参考,星敏感器坐标系是测量,航天器本体坐标系是目标。我们通过星敏感器测量得到星点在星敏感器坐标系下的方向,然后通过坐标转换,得到航天器本体坐标系下的方向,再与星表比对,最终解算出姿态。
4. 坐标转换矩阵
坐标转换矩阵,就是连接不同坐标系的桥梁。它的本质是一个3x3的正交矩阵,满足:
- 行列式为+1(保证是右手系)
- 矩阵的逆等于矩阵的转置
常用的坐标转换矩阵有:
- 天球坐标系 → 星敏感器坐标系:这个转换矩阵就是星敏感器的安装矩阵。它描述了星敏感器在航天器上的安装姿态。
- 星敏感器坐标系 → 航天器本体坐标系:这个转换矩阵就是星敏感器的测量输出。星敏感器测量得到的是星点在星敏感器坐标系下的方向,我们需要把它转换到本体坐标系下。
- 天球坐标系 → 航天器本体坐标系:这个转换矩阵就是航天器的姿态矩阵。它是我们最终要输出的结果。
举个例子,假设星敏感器测量得到一颗星在星敏感器坐标系下的方向矢量为 v_s,星敏感器的安装矩阵为 C_sb(从星敏感器坐标系到本体坐标系的转换矩阵),那么这颗星在本体坐标系下的方向矢量 v_b 为:
v_b = C_sb * v_s
然后,我们通过星表查询,知道这颗星在天球坐标系下的方向矢量为 v_i,那么航天器的姿态矩阵 C_bi(从本体坐标系到天球坐标系的转换矩阵)满足:
v_i = C_bi * v_b
解出 C_bi,我们就得到了航天器的姿态。
5. 知识体系总览
为了让你更直观地理解这几个坐标系之间的关系,我画了一张图:
6. 工程实现中的注意事项
在实际工程中,坐标转换不是简单的矩阵乘法。有几个细节,我建议你特别注意:
- 坐标系定义的一致性:不同部门、不同供应商对坐标系的定义可能不同。拿到数据后,先确认坐标轴方向、旋转顺序、正负号定义。我曾经因为一个负号,多花了三天时间排查问题。
- 数值精度:坐标转换矩阵是正交矩阵,理论上满足 C * C^T = I。但在计算机中,由于浮点数精度限制,这个等式不一定严格成立。长时间运行后,误差会累积。所以,需要定期对姿态矩阵进行正交化修正。
- 奇点问题:如果用欧拉角表示姿态,当俯仰角接近±90度时,会出现奇点(万向锁)。我建议在工程代码中,统一使用四元数或旋转矩阵,避免欧拉角。
- 时间同步:星敏感器的测量数据、星表数据、航天器的姿态数据,都有各自的时间戳。在做坐标转换时,必须确保所有数据的时间基准一致。否则,转换出来的姿态就是错的。
好了,坐标系基础就讲到这里。这几个坐标系是星敏感器导航的基石,理解透了,后面的内容就好办了。