1.设线性⽅程 Ax = b,在 A 为⽅阵的前提下,请回答以下问题:
1. 在什么条件下,x 有解且唯⼀?

非齐次线性方程在A的秩与[A|B]的秩相同时方程有解,当R(A)=R(A,B)=n时方程有唯一解。

2. ⾼斯消元法的原理是什么?

原理:高斯消元法的作用是又来求解线性方程组的解,其原理是将方程组进行加减消元,然后求出未知数X。

3. QR 分解的原理是什么?

原理:将一个稀疏矩阵分解成一个正交矩阵和一个上三角矩阵A=QR, A左乘一个Householder反射矩阵Hj, Hn...H2H1A=QTA=[R 0]T

4. Cholesky 分解的原理是什么?

与SLAM问题相关的优化问题,可以很简洁的用稀疏线性代数的方式表达,要么将信息矩阵分解为平方根的形式,要么将观测雅可比矩阵A分解为平方根

原理:乔利斯基分解通过求解正规方程,然后分解信息矩阵得到一种对称正定矩阵(LU分解的百变种)得到一个n*n的上三角形矩阵。A=L*LT

5. 编程实现 A 为 100 × 100 随机矩阵时,⽤ QR 和 Cholesky 分解求 x 的程序。

#include<iostream>
#include<Eigen/Core>
#include<Eigen/Geometry>
const int SIZE=100;
using namespace std;
using namespace Eigen;
int main()
{
//AX=B
Matrix<double, Dynamic, Dynamic>A;//建立一个动态矩阵
A=MatrixXd::Random(SIZE,SIZE);//建立一个100*100的随机矩阵
A=A.transpose()*A;//乔利斯基分解需要正定矩阵
Matrix<double, Dynamic,1>B;//建立一个动态矩阵B
B=MatrixXd::Random(SIZE,1);//B为100*1的随机矩阵
Matrix<double, Dynamic,1>X;//建立一个X
X=MatrixXd::Random(SIZE,1);//X为100*1的随机矩阵
X=A.llt().solve(B);//乔利斯基分解
cout<<"LLT result:\n"<<X<<endl;//显示结果
X=A.colPivHouseholderQr().solve(B);//QR分解
cout<<"QR result:\n"<<X<<endl;//显示结果
return 0;
}

2.设有⼩萝⼘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<iostream>
#include<Eigen/Core>
#include<Eigen/Geometry>
using namespace std;
using namespace Eigen;
int main()
{
Quaterniond q1(0.55,0.3,0.2,0.2);//定义四元数Q1
Quaterniond q2(-0.1,0.3,-0.7,0.2);
q1=q1.normalized();//四元素归一化
q2=q2.normalized();
Matrix<double,,> t1;//定义平移矩阵
Matrix<double,,> t2;
Matrix<double,,> p1;
Matrix<double,,> p2;
t1<<0.7,1.1,0.2;
t2<<-0.1,0.4,0.8;
p1<<0.5,-0.1,0.2;//Pcw相对于Tcw的位姿 Isometry3d Tcw1=Isometry3d::Identity();//创建欧式群
Tcw1.rotate(q1.toRotationMatrix());//四元数转化为旋转矩阵
Tcw1.pretranslate(t1);//四元数转化为平移矩阵
p1=Tcw1.inverse()*p1;//P1=Tcw1*Pw ==>Pw=P1*inverse(Tcw1) Isometry3d Tcw2=Isometry3d::Identity();//创建Tcw2的欧式群
Tcw2.rotate(q2.toRotationMatrix());
Tcw2.pretranslate(t2);
p2=Tcw2*p1;//P2=Tcw2*Pw(Pw=P1*inverse(Tcw1))
cout<<p2<<endl;
return ; }

 

 

《视觉SLAM十四讲课后作业》第二讲的更多相关文章

  1. 《视觉SLAM十四讲课后作业》第一讲

    1. 如何在 Ubuntu 中安装软件(命令⾏界⾯)?它们通常被安装在什么地⽅? 答:一般有两种安装方式(1)apt-get install (2)dpkg -i package.deb.系统软件一般 ...

  2. 视觉slam十四讲课后习题ch3-7

    题目回顾: 设有小萝卜一号和小萝卜二号位于世界坐标系中,小萝卜一号的位姿为:q1=[0.35,0.2,0.3,0.1],t2=[0.3,0.1,0.1]^T (q的第一项为实部.请你把q归一化后在进行 ...

  3. 视觉slam十四讲课后习题ch3--5题

    题目回顾: 假设有一个大的Eigen矩阵,我想把它的左上角3x3块提取出来,然后赋值为I3x3.编程实现.解:提取大矩阵左上角3x3矩阵,有两种方式: 1.直接从0-2循环遍历大矩阵的前三行和三列 2 ...

  4. 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM

    下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/slambook 第二讲:初识SLAM 2.4.2 Hello SLAM(书本P2 ...

  5. 视觉slam十四讲第七章课后习题7

    版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/newneul/p/8544369.html  7.题目要求:在ICP程序中,将空间点也作为优化变量考虑进来 ...

  6. 视觉slam十四讲第七章课后习题6

    版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...

  7. 视觉SLAM十四讲:从理论到实践 两版 PDF和源码

    视觉SLAM十四讲:从理论到实践 第一版电子版PDF 链接:https://pan.baidu.com/s/1SuuSpavo_fj7xqTYtgHBfw提取码:lr4t 源码github链接:htt ...

  8. 高博-《视觉SLAM十四讲》

    0 讲座 (1)SLAM定义 对比雷达传感器和视觉传感器的优缺点(主要介绍视觉SLAM) 单目:不知道尺度信息 双目:知道尺度信息,但测量范围根据预定的基线相关 RGBD:知道深度信息,但是深度信息对 ...

  9. 《视觉SLAM十四讲》第2讲

    目录 一 视觉SLAM中的传感器 二 经典视觉SLAM框架 三 SLAM问题的数学表述 注:原创不易,转载请务必注明原作者和出处,感谢支持! 本讲主要内容: (1) 视觉SLAM中的传感器 (2) 经 ...

随机推荐

  1. discuz 修改亮剑积分商城2.91模板(在常用设置中添加商场首页排序方式的背景颜色)

    在应用 -> 积分商城 -> 常用设置 中添加 商场首页排序方式 的背景颜色修改功能 步骤: 1.找到并打开此页面对应的模板source\plugin\aljsc\template\set ...

  2. [转]BT原理分析

    BitTorrent协议. BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是“互相帮助”,所以不会随着用户数的增加而降低 ...

  3. 19个实例学会plsql

    --p1 begin dbms_output.put_line('你好 世界'); end; --p2 引入变量 declare age ; height ; begin dbms_output.pu ...

  4. Jenkins实现自动运行jmeter脚本

    下载安装包 --jenkins的war包 下载地址:http://jenkins-ci.org/ 链接:https://pan.baidu.com/s/1VhwgYWqn3Bex2kCHigW5wA ...

  5. Python 学习笔记7 条件语句 If

    Python中条件语句if 是通过一条或者多条的执行语句的结果,来判断是否执行其包含的代码块. 通常会配合else.elif一起使用,达到根据条件进行多个代码块的执行操作. 简单的if score = ...

  6. ublox TMOD2

    Survey_in模式就是为了当满足下面的条件的时候,自动跳转到fixmod

  7. windows 启动停止 java进程

    本案例以 xxx.jar    为列子 我们一般启动的jar 在任务管理器中查看进程都是javaw.exe ,无法用命令来 kill,所以我们得给自己的java 进程设置个新 title 1:  首先 ...

  8. 学习Makefile

    1> 编译一个文件2> 编译多个文件3> 编译多个目录下的文件4> inclue makefile5> 使用规则1>target:depend[tab]cmddep ...

  9. 学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周

    目录 MyOD 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.代码链接 六.代码实现过程中遇到的问题 七.运行结果截图 八.参考资料 MyOD 一.题目要求 编写MyOD.java 用j ...

  10. 尝试启动 ADB 服务器时出错 解决方法

    启动CMD→ adb kill-server → adb start-server;