MSCKF中左零空间的计算

问题

如下公式(1)对应MSCKF论文中的公式(23),其表示特征 j j j与所有观测到该特征的状态构成的观测方程,但这个方程中的 G p ~ j {}^{G}\widetilde{\boldsymbol{p}}_{j} Gp j 是由状态 X ~ \widetilde{\boldsymbol{X}} X 推导出来的,于是这两类状态之间存在耦合,这与EKF所要求的观测方程不一致,因此需要调整该观测方程。
r ( j ) ≃ H x ( j ) X ~ + H f ( j ) G p ~ j + n ( j ) (1) \mathbf{r}^{(j)} \simeq \mathbf{H}_{\mathbf{x}}^{(j)}\widetilde{\boldsymbol{X}} + \mathbf{H}_{f}^{(j)} {}^{G}\widetilde{\boldsymbol{p}}_{j} + \mathbf{n}^{(j)} \tag{1} r(j)Hx(j)X +Hf(j)Gp j+n(j)(1)
调整的策略是只保留状态 X ~ \widetilde{\boldsymbol{X}} X 而将 G p ~ j {}^{G}\widetilde{\boldsymbol{p}}_{j} Gp j 移除,那自然会想到在公式(1)左右两侧同时乘以"某个矩阵"使得右侧第二项直接变成 0 \mathbf{0} 0,而"某个矩阵"如果是 H f ( j ) \mathbf{H}_{f}^{(j)} Hf(j) 的左零空间构成的矩阵既可以达到这个效果。于是调整后观测方程为:
A T r ( j ) ≃ A T H x ( j ) X ~ + A T H f ( j ) G p ~ j + A T n ( j ) r o ( j ) ≃ H o ( j ) X ~ + n o ( j ) (2) \begin{aligned} \mathbf{A}^{T}\mathbf{r}^{(j)} &\simeq\mathbf{A}^{T} \mathbf{H}_{\mathbf{x}}^{(j)}\widetilde{\boldsymbol{X}} + \mathbf{A}^{T}\mathbf{H}_{f}^{(j)} {}^{G}\widetilde{\boldsymbol{p}}_{j} + \mathbf{A}^{T}\mathbf{n}^{(j)}\\ \mathbf{r}_{o}^{(j)} &\simeq \mathbf{H}_{o}^{(j)}\widetilde{\boldsymbol{X}} + \mathbf{n}_{o}^{(j)} \tag{2} \end{aligned} ATr(j)ro(j)ATHx(j)X +ATHf(j)Gp j+ATn(j)Ho(j)X +no(j)(2)
式中 A T \mathbf{A}^{T} AT即为 H f ( j ) \mathbf{H}_{f}^{(j)} Hf(j) 的左零空间构成的矩阵。

注: 零空间是满足 A x = 0 \mathbf{Ax}=\mathbf{0} Ax=0的所有 x \mathbf{x} x组成的空间,而左零空间是满足 x T A = 0 \mathbf{x}^{T}\mathbf{A}=\mathbf{0} xTA=0 ( A T x = 0 ) (\mathbf{A}^{T}\mathbf{x}=\mathbf{0}) (ATx=0)的所有 x \mathbf{x} x组成的空间

原理

假设特征点 p j \mathbf{p}_{j} pj 被n个相机位姿看到,则可知 H f ( j ) \mathbf{H}_{f}^{(j)} Hf(j) 的维度为 2 n × 3 ( n > 1 ) 2n\times 3(n>1) 2n×3n>1,于是可对 H f ( j ) \mathbf{H}_{f}^{(j)} Hf(j) 进行QR分解得:
在这里插入图片描述
其中 Q \mathbf{Q} Q为正交矩阵,即该矩阵的所有列向量彼此正交,于是可知 Q 2 \mathbf{Q}_{2} Q2 任意一列 q 2 i \mathbf{q}_{2i} q2i 满足 q 2 i T Q 1 = 0 \mathbf{q}_{2i}^{T}\mathbf{Q}_{1}=\mathbf{0} q2iTQ1=0,根据左零空间的定义可知矩阵 Q 2 \mathbf{Q}_{2} Q2的所有列向量构成的空间即为 Q 1 \mathbf{Q}_{1} Q1 的左零空间,所以可得 Q 2 T Q 1 = 0 \mathbf{Q}_{2}^{T}\mathbf{Q}_{1}=\mathbf{0} Q2TQ1=0,于是 Q 2 T \mathbf{Q}_{2}^{T} Q2T 即为公式(2)中的 A T \mathbf{A}^{T} AT.

实现

利用eigen中的qr分解对象,按如下计算过程获得矩阵 H f \mathbf{H}_{f} Hf 的左零空间:

Eigen::ColPivHouseholderQR<Eigen::MatrixXd> qr(H_f.rows(), H_f.cols());
qr.compute(H_f);
Eigen::MatrixXd Q = qr.householderQ();
Eigen::MatrixXd Q1 = Q.block(0,0,Q.rows(),3);
Eigen::MatrixXd Q2 = Q.block(0,3,Q.rows(),Q.cols()-3);

参考

MSCKF论文
MSCKF Nullspace Projection
零空间1
零空间2
QR分解1
QR分解2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值