深蓝学院-视觉SLAM课程-第2讲作业
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master
1. 基础知识
需要复习现代和矩阵论的知识。
- 特征值,特征向量有啥用?
有了特征值能求特征向量,有了特征向量就能够得到基础解系,就能够解齐次/非齐次方程。
2. 矩阵论基础
关于最小二乘法求解列满秩超定方程组的最小二乘解的推导见这里,讲的很详细,有关于矩阵求偏导的部分:快速求导法:分子布局,向量后置求导,系数不变;向量前置求导,系数前置并转置。
最小二乘法的几何意义:解决了最小二乘法的几何意义的解释。
最小二乘法的矩阵解法:这篇相当综合,综合了最小二乘法,Cholesky分解求线性最小二乘解,QR分解求线性最小二乘解,SVD分解求亏秩最小二乘解,超定齐次方程组的线性最小二乘解法,欠定行满秩方程组的线性最小二乘解法。
3. 计算坐标变换
#include <iostream>
using namespace std;
#include <Eigen/Core>
#include <Eigen/Geometry>
using namespace Eigen;int main(int argc, char ** argv)
{//创建视觉传感器和激光传感器的四元数(构造函数顺序是wxyz,而存储的系数默认是xyzw)Quaterniond q_BL(0.3, 0.5,0, 20.1 ), q_BC(0.8, 0.2, 0.1,0.1);//四元数归一化q_BC.normalize(); //如果将四元数表示为旋转的话,如果四元数没有归一化的话,那么旋转是未定义的行为q_BL.normalize();//平移向量t_BL和t_BCVector3d t_BL(0.4, 0, 0.5), t_BC(0.5, 0.1, 0.5);//p_C坐标Vector3d p_C(0.3, 0.2, 1.2);//构造变换矩阵Tc1w和Tc2wIsometry3d T_BL(q_BL), T_BC(q_BC);T_BL.pretranslate(t_BL);T_BC.pretranslate(t_BC);//计算p_LVector3d p_L = T_BL.inverse() * T_BC * p_C;cout << "这个点在激光系下的坐标:" << p_L.transpose() << endl;//计算在世界坐标系下的坐标//创建世界系和机器人本体的四元数Quaterniond q_WR(0.55, 0.3, 0.2,0.2), q_RB(0.99, 0, 0,0.01);//四元数归一化q_WR.normalize();q_RB.normalize();//平移向量t_WR,t_RBVector3d t_WR(0.1, 0.2, 0.3), t_RB(0.05, 0, 0.5);//构造变换矩阵T_WR和T_RBIsometry3d T_WR(q_WR), T_RB(q_RB);T_WR.pretranslate(t_WR);T_RB.pretranslate(t_RB);//计算p_WVector3d p_W = T_WR * T_RB * T_BC * p_C;cout << "这个点在世界系下的坐标" << p_W.transpose() << endl;return 0;
}
参考博客和《视觉SLAM十四讲》P64-64
求变换矩阵时平移量也要参与逆的运算,不能直接反向。
4. 代填的坑
1. Eigen的官方讲解还没看
2. 矩阵论里面各种分解不知道有什么用,看这篇好好理解下:
最小二乘法的几何意义
最小二乘法的矩阵解法
3. 使用四元数计算偏移矩阵那里需要再看看书,试试那个运算。
4. 记住旋转矩阵是正交矩阵,det=1即可
5. 罗德里格斯公式的证明那里不是很理解,而且证明正交的运算还有些不理解,
看的这篇博客的
6. 四元数性质的验证
不理解这个
然后,我知道ε+ε=ε×ε=0\varepsilon^+\varepsilon=\varepsilon\times\varepsilon=0ε+ε=ε×ε=0,因为他俩平行,但是还是觉得上面的推导有些不对。
深蓝学院-视觉SLAM课程-第2讲作业相关推荐
- 深蓝学院-视觉SLAM课程-第7讲作业:SLAM中g2o入门详解,直接法BA
1. 引言 在SLAM中,BA是个重要的部分,前后端很多地方都用得到,而g2o是一个很重要的使用图优化求解优化问题的库,所以有必要熟练掌握,尽管有了些C++的底子,但是看g2o的代码还是比较吃力,所以 ...
- 深蓝学院-视觉SLAM课程-第6讲作业
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 第6讲作业 2. T2 2.1 光流文献综述 文献还没读完,这部分参考博客 ...
- 深蓝学院-视觉SLAM课程-第1讲笔记
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 1. 基础知识 一些图像处理方面的工作需要借助ML方法来完成:物体识别,检测 ...
- 深蓝学院-视觉SLAM课程-第2讲笔记--三维空间刚体运动
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 C++没有矩阵的运算,用别人的库来进行矩阵运算,其中Eigen库 ...
- 深蓝学院-视觉SLAM课程-第3讲笔记-李群和李代数
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 1. 什么是群 为什么要引入群? 因为求旋转矩阵或者变换矩阵的导 ...
- 深蓝学院-视觉SLAM课程-第7讲笔记
课程Gitbug地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 这讲来讲后端 之前的最小二乘的方法属于批量方法,较为简单,另一种 ...
- 深蓝学院-视觉SLAM课程-第6讲笔记
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 仍然是前端的内容,估计位姿,不过不是特征点法,而是另外的方法. ...
- 深蓝学院-视觉SLAM课程学习课后题
一. 第一节课习题# 标题 1.熟悉linux (1)可以通过 sudo apt-get install <软件名>的方式安装软件 当自己下载了软件压缩包之后(tar.gz文件),可以解压 ...
- 深蓝视觉SLAM课程第四讲--相机模型,非线性优化(G2O)
课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 对应于十四讲中的第5讲和第6讲 回顾十四讲P24-26 1. 针 ...
最新文章
- memcached 缓存服务器
- html的左侧菜单栏,HTML 之 左侧菜单
- python进阶(第三章1) 字典
- go mod常用命令
- ORM(手写简单ORM)
- 诺基亚X71上手评测:中端机市场中的绝对C位
- 用UIWebView加载本地图片和gif图
- java开发面试 自我介绍 与 项目介绍是重点
- nios IIcommand shell 烧录
- vue-网页Logo标题及矢量图标
- 最全面的安卓编码规范
- 计算机毕业设计(附源码)python幼儿园管理系统
- 用python实现双人五子棋(终端版)
- php开发-如何调用后端服务
- 使用ADB命令卸载软件
- 公众号视频查找接口,支持自定义接口,支持水印
- 大数据开发:MongoDB系统架构简介
- 【ML特征工程】第 2 章 :简单数字的花式技巧
- Windows XP 安装 MTP 驱动
- delphi导入oracle数据库,Oracle数据库自动备份工具(Delphi源码)
热门文章
- 各大渠道 2020 年春节放假安排,赶紧收藏!
- 蓝桥杯单片机 | 特训案例【进阶03】24C02的基本读写操作
- 用数组来处理Fibonacci数列问题
- 你带她满星通关,她为你笑靥如花|Cocos精品《保卫萝卜3》
- 如何实时监测服务器某个端口通不通
- Windows CE 6.0 vs 7.0
- linux c 多显卡编程,Linux 编程之GPU计算(转)
- 台式计算机刚做完系统就蓝屏,台式电脑总会蓝屏是怎么回事
- 大牛证券分析近期指数波动在加大
- oracle jpa字段加注释,JPA 通过注解自动生成表,添加 字段名、类型、注释