前言
这篇文章很有意思,利用事件相机来观星,然后估计飞行器的姿态,方便实现飞行器姿态的精细控制。
论文地址:Star Tracking using an Event Camera
背景
- 现在有一些方法通过恒星跟踪器(一种基于视觉的恒星跟踪设备),可以估计航天器的飞行姿态( roll,pitch, yaw)
- 利用事件相机来跟踪恒星,功耗更低速度更快,而且可以实现精准的位姿估计,从而实现飞行器的精准控制。如:将机载仪器精确对准空间或地球上的目标区域。
- 利用恒星跟踪估计飞行器的姿态问题是一个 Wahba’s problem,也就是将利用视觉得到的方向测量结果转化为飞行器的姿态测量结果。
(这个看的感觉挺唬人的)
主要贡献
- 一个从事件相机数据中进行恒星跟踪的pipeline
- 一个恒星跟踪数据集
概念及算法理论
1.从方向测量到位姿估计问题
从图像中识别恒星,然后通过图像中恒星的位置坐标(2D空间)
x
p
{x_p}
xp与恒星向量(3D空间)
X
p
{X_p}
Xp进行匹配,得到航天器姿态R,公式如下:
arg
min
R
⊂
S
O
(
3
)
∑
p
=
1
N
∥
x
⃗
p
−
R
X
p
∥
2
2
\mathop {\arg \min }\limits_{R \subset SO(3)} \sum\limits_{p = 1}^N {\left\| {{{\vec x}_p} - R{X_p}} \right\|_2^2}
R⊂SO(3)argminp=1∑N∥xp−RXp∥22
其中
x
⃗
p
=
K
−
1
x
ˉ
p
∥
K
−
1
x
ˉ
p
∥
2
{\vec x_p} = {{{K^{ - 1}}{{\bar x}_p}} \over {{{\left\| {{K^{ - 1}}{{\bar x}_p}} \right\|}_2}}}
xp=∥K−1xˉp∥2K−1xˉp是
x
p
{x_p}
xp的反投影向量,K是相机的固有矩阵(3x3)
2.事件图像
作者还是将事件相机的数据生成了frame概念中的图像。文中每张图像积累了40ms(相当于25PFS)的事件相机数据。后续的一系列问题就又回到了传统的frame相机上来了。
这里作者提了一下说直接使用异步或基于事件的数据是未来的研究方向。
3.相机标定
其中
K
e
v
{K_{ev}}
Kev是相机固有参数,作者给了个网站参考网站,论文还可以这样的吗?????
K
s
c
{K_{sc}}
Ksc是事件摄影机到屏幕的非正面平行视点的单应性。作者给了参考文献去让大家自己看。
K
t
e
{K_{te}}
Kte是虚拟望远镜的固有矩阵(决定仪器的放大率等),通过QR分解计算,这部分没有看太明白,但是估计就是相机前面还加了个望远镜吧 ,然后标定一下这个望远镜。
这一部分作者写的迷迷糊糊,感觉写的不是很清楚,看的云里雾里。
4.旋转测量
4.1 APC
理想状态是估计每一张frame对应的姿态,但是这不现实,因为
- 大多数frame中噪声都很多,精度很低
- 恒星识别计算量较大,以事件的帧率识别并不可并行
由于这两个问题,作者提出了一种叫做APC的启发式方法,那就是只选择质量高的frame进行恒星识别。
具体来说,先用3x3的卷积核进行均值滤波。然后计算一个frame中大于阈值e1的点的数量。如果数量大于e2,就认为他是一个高质量的frame。
其实就是找所有frames中点比较多的frame,还写个APC整的神神叨叨的。
文中e1=2,e2=50.
4.2 绝对旋转估计
从被选中的APC图像中直接估计姿态,被称为绝对旋转估计。又是没有详细描述,只有参考文献。简直wuyule
4.3 相对旋转估计
考虑两张overlap的frames,这里的overlap不是时间上的,而是指两种frames观察到了一些相同的star.这样就可以根据两张图像中相同的部分进行图像对齐了。
对于两张frames,
{
x
i
,
p
}
p
=
1
P
\left\{ {{x_{i,p}}} \right\}_{p = 1}^P
{xi,p}p=1P和
{
x
j
,
p
}
q
=
1
Q
\left\{ {{x_{j,p}}} \right\}_{q = 1}^Q
{xj,p}q=1Q,两者之间的配准问题可以描述为:
每个点的误差为:
为了算法的鲁棒性,并不会计算所有点的误差,而是只选择L<P个点计算,因为只有最小的L个残差被最小化了,这样就防止了个别噪点(残差极大)的影响。
这个最小化问题可以用ICP算法求解,ICP是一种用于配准的方法,可以参考我的另一篇文章,使用ICP进行点云配准。
因为要保证两张frame中有相同的部分,所以作者只在连续的5帧中进行配准。
5.优化
优化的目的是对不同的旋转测量值进行去噪和融合,以获得准确的姿态估计。这是通过使用旋转平均和光束调整两种新公式有效实现的。
5.1 增广旋转平均
旋转平均的原始形式是将一组相对旋转作为输入,并计算一组绝对旋转。
由于这种形式是开环的,所以很容易造成漂移误差。
作者建立了一个闭环的平均旋转
5.2 旋转束调整
大概就是用轨迹去优化旋转姿态,最终会得到一个非线性最小二乘(NLS)问题。
实验
1.生成数据
使用天文模拟软件渲染真实的恒星场景,将图像显示在屏幕上,然后用事件相机拍摄屏幕。(说实话,也有够离谱的)
2.消除屏幕带来的成像
事件相机的成像来源有两种,一种是恒星运动,另一种是屏幕刷新,作者通过空间带通滤波器做了去噪。
3.实验结果
优化前角度估计误差:
优化后位姿估计误差:
在六个序列中的误差的定量分析:
4.运行速度
大约19FPS
总结
优点:不得不佩服作者的脑洞,渲染一个星空图像,显示在屏幕上,然后使用事件相机观星,还可以利用这种信息进行航天器的姿态估计,确实牛逼。
缺点:必须得吐槽一下,这篇文章看下来感觉巨难受,就各种细节全是扔个论文或者链接给你,然后论文的组织结构也很奇怪,得跳来跳去看。