SLAM从入门到放弃:SLAM十四讲第十章习题(1-4)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012348774/article/details/84065627

以下均为简单笔记,如有错误,请多多指教。

  1. 证明式 K = P k C k T ( C k P k C k T + Q k ) 1 K=\overline{P}_kC_k^T(C_k\overline{P}_kC_k^T+Q_k)^{-1}
    答:由于课本上已经推导了大部分的公式,则已知
    P ^ k = ( 1 K C k ) P k \widehat{P}_k=(1-KC_k)\overline{P}_k
    K = P ^ k C k T Q k 1 K=\widehat{P}_kC_k^TQ_k^{-1}
    故而得到 K = ( 1 K C k ) P k C k T Q k 1 = P k C k T Q k 1 K C k P k C k T Q k 1 K=(1-KC_k)\overline{P}_kC_k^TQ_k^{-1}=\overline{P}_kC_k^TQ_k^{-1}-KC_k\overline{P}_kC_k^TQ_k^{-1}
    稍微处理一下得到 K ( 1 + C k P k C k T Q k 1 ) = P k C k T Q k 1 K(1+C_k\overline{P}_kC_k^TQ_k^{-1})=\overline{P}_kC_k^TQ_k^{-1}
    方程两边同时乘以 Q k Q_k ,则 K ( Q k + C k P k C k T ) = P k C k T K(Q_k+C_k\overline{P}_kC_k^T)=\overline{P}_kC_k^T
    故而 K = P k C k T ( Q k + C k P k C k T ) 1 K=\overline{P}_kC_k^T(Q_k+C_k\overline{P}_kC_k^T)^{-1}

  2. 对比g2o和Ceres的优化后目标函数的数值。指出为什么两者在Meshlab中效果一样但数值却不同。
    答:个人感觉这个是自然而然的,即便是同一个程序在不同的运行时间其数值都可能不太一样。

  3. 对Ceres当中的部分点云进行Schur消元,看看结果会有什么区别。
    答:Schur消元后,Ceres运行的时间会得到一定程度的提高。本文使用了http://grail.cs.washington.edu/projects/bal/final.html中961张影像的数据,完全不边缘化的运行时间为1812s,边缘化所有点的运行时间为1629s。但是总体感觉似乎时间变化不多,具体原因还不太清楚。
    部分点云进行消元要修改的代码也非常简单,即在ch10/ceres_custombundle中的SetOrdering稍微修改一下即可,例如只消元 1 / 3 1/3

for(int i=0; i<bal_problem->num_points(); i++)
{
  if(i%3==0)
  {
    ordering->AddElementToGroup(bal_problem->mutable_point_for_observation(i),0);
  }
  else
  {
    ordering->AddElementToGroup(bal_problem->mutable_point_for_observation(i),1);  
  } 
}
  1. 证明 S S 矩阵为半正定矩阵。
    答:假设
    H = [ B E E T C ] H=\begin{bmatrix} B &amp; E \\ E^T &amp; C \end{bmatrix}
    S = B E C 1 E T S=B-EC^{-1}E^T
    首先要说明一点的是前文已经说过 H H 是一个半正定矩阵,即存在 x x 使得 x H x T 0 xHx^T\ge0
    又由于
    H = [ B E E T C ] = [ I E C 1 0 I ] [ B E C 1 E T 0 0 I ] [ I 0 ( E C 1 ) T I ] H=\begin{bmatrix} B &amp; E \\ E^T &amp; C \end{bmatrix}=\begin{bmatrix} I &amp; -EC^{-1} \\ 0 &amp; I \end{bmatrix}\begin{bmatrix} B-EC^{-1}E^T &amp; 0 \\ 0 &amp; I \end{bmatrix}\begin{bmatrix} I &amp; 0 \\ (-EC^{-1})^T &amp; I \end{bmatrix}
    假设记为 H = P N P T H=PNP^T
    x H x T = x P N P T x T = ( x P ) N ( x P ) T 0 xHx^T=xPNP^Tx^T =(xP)N(xP)^T\ge0
    不妨记 y = x P y=xP ,故 y N y T 0 yNy^T\ge0
    如果按照 B B C C y y 分成两部分,则 y = [ y 1 , y 2 ] y=[y_1,y_2]
    y N y T = y 1 S y 1 T + y 2 y 2 T 0 yNy^T=y_1Sy_1^T+y_2y_2^T\ge0
    不难发现 y 1 S y 1 T 0 y_1Sy_1^T\ge0
    故得证。

猜你喜欢

转载自blog.csdn.net/u012348774/article/details/84065627