视觉SLAM十四讲(第二章作业)

熟悉Eigen矩阵运算

设线性⽅程 Ax = b,在 A 为⽅阵的前提下,请回答以下问题
1、在什么条件下, x 有解且唯⼀?
答:A是方阵,且可逆。
2、⾼斯消元法的原理是什么?
答:高斯消元法简介
3、QR分解的原理
答:QR分解介绍 注意:这里被分解矩阵A不一定是方阵,也可以是非方阵。Q为正交矩阵,R为上三角矩阵。
4、 Cholesky 分解的原理是什么?
答:Cholesky 注意:这里被分解的矩阵A必须是对称正定阵,L为下三角矩阵。
5、编程实现 A 为 100 × 100 随机矩阵时,⽤ QR 和 Cholesky 分解求 x 的程序。你可以参考本次课⽤到的 useEigen 例程。
答:不多说,直接上代码吧。注意:Cholesky分解的前提条件是A是对称正定阵。

#include 
#include 
#include 
#include 
#include 
#define MATRIX_SIZE 2
using namespace std;
int main() {
    Eigen::Matrix matrix_100;//100*100的动态矩阵
    matrix_100 = Eigen::MatrixXd::Random(MATRIX_SIZE,MATRIX_SIZE);//随机产生
    matrix_100 = matrix_100.transpose() * matrix_100;//产生对称矩阵
    cout< vnd;
    vnd = Eigen::MatrixXd::Random(MATRIX_SIZE,1);
    Eigen::Matrix x;
    x = matrix_100.colPivHouseholderQr().solve(vnd);//QR分解的结果
    cout<

几何运算练习

**
设有⼩萝⼘1⼀号和⼩萝⼘⼆号位于世界坐标系中。⼩萝⼘⼀号的位姿为: q1 = [0:55; 0:3; 0:2; 0:2]; t1 =[0:7; 1:1; 0:2]T(q 的第⼀项为实部)。这⾥的 q 和 t 表达的是 Tcw,也就是世界到相机的变换关系。⼩萝⼘⼆号的位姿为 q2 = [−0:1; 0:3; −0:7; 0:2]; t2 = [−0:1; 0:4; 0:8]T。现在,⼩萝⼘⼀号看到某个点在⾃⾝的坐标系下,坐标为 p1 = [0:5; −0:1; 0:2]T,求该向量在⼩萝⼘⼆号坐标系下的坐标。请编程实现此事,并提交你的程序。**
答:上代码:

#include 
#include 
#include 
#include 
using namespace std;

int main() {
    Eigen::Quaterniond q1(0.55,0.3,0.2,0.2);
    q1 = q1.normalized();
    Eigen::Quaterniond q2(-0.1,0.3,-0.7,0.2);
    q2 = q2.normalized();
    Eigen::Matrix transfor1;
    transfor1<<0.7,1.1,0.2;
    Eigen::Matrix transfor2;
    transfor2<<-0.1,0.4,0.8;
    Eigen::Matrix p1;
    p1<<0.5,-0.1,0.2;
    /*
    Eigen::Vector3d res1;
    res1 = q1.inverse()*p1;
    cout<

旋转的表达

1、设有旋转矩阵 R,证明 R^TR = I 且 det R = +1^2。
答:直接上图吧,字写得丑多见谅。
2、设有四元数 q,我们把虚部记为 e,实部记为 η,那么 q = (e; η)。请说明e和η的维度。
答:还是直接上图。
3、请证明对任意单位四元数 q1, q2,四元数乘法可写成矩阵乘法。

罗德里的式公式证明

上图,打公式太累了,自己按照图片上的公式推一遍就很清晰了。参考资料来自严恭敏严老师的惯性导航讲义。
视觉SLAM十四讲(第二章作业)_第1张图片
视觉SLAM十四讲(第二章作业)_第2张图片

四元数运算性质的验证

视觉SLAM十四讲(第二章作业)_第3张图片

熟悉C++11

视觉SLAM十四讲(第二章作业)_第4张图片

你可能感兴趣的:(视觉SLAM)