1.验证旋转矩阵是正交矩阵

感觉下面这篇博客写的不错

http://www.cnblogs.com/caster99/p/4703033.html

总结一下:旋转矩阵是一个完美的矩阵——正交矩阵。①行列式为1,②每个列向量都是单位向量且相互正交,③它的逆等于它的转置。


2.罗德里格斯公式的简单推导

http://blog.sina.com.cn/s/blog_ea828d2a0102wlk6.html

罗德里格斯旋转公式是通过反对称矩阵求旋转矩阵的方法,起初我在看别人写的姿态解算分析文章里看到,他的推导如下:

请注意我做标记的地方,我刚开始一直不明白这种推导,这样会有误差的推导,难道罗德里格斯公式是对旋转矩阵R的近似?这样做并不好,反而会使解算的姿态更不准确,后来在群里讨论这个问题,有大神给我解惑了。
首先我们明白这是一个SO(3)到SO(3)的李群的映射。不要担心自己不知道李群是什么,因为我们下面的推导会非常简单!

我们先来看什么是反对称矩阵,在这之前,先展示它和向量叉乘(内积)的关系:

红色三个格子应该是i  j  k

下面看看我们的反对称矩阵运算:

加一个小三角,就是将这个向量变成一个反对称矩阵

所以我们得出:

我们知道我们的旋转矩阵R和我们的三角函数的关系,这里就不多说了,所以现在我们来看一个反对称矩阵的性质,首先定义一个反对称矩阵:

同时我们有如下的约束:

现在我们可以看到我们的反对称阵有如下性质:

现在可以进行我们的罗德里格斯公式推导了:


3. 验证四元数旋转某个点后,结果是一个虚四元数(实部为零),所以仍然对应 到一个三维空间点(式 3.34)。

=.=  看我干啥?下一题


4.旋转矩阵  轴角  欧拉角  四元数

书上都有

P42 轴角[n,α]与旋转矩阵的关系

P52 轴角[n,α]与四元数的关系

欧拉角存在gimbal lock,不研究他的关系【其实我不会】


5.假设有一个大的eigen矩阵,想把他的左上角的3*3取出来,然后赋值为I3x3


6.Ax = b的Eigen实现


7.

机器人一号和二号,分别在世界坐标系中。 
一号的位姿q1=[0.35,0.2,0.3,0.1], t1=[0.3,0.1,0.1]T。 
二号的位姿q2=[−0.5,0.4,−0.1,0.2], t2=[−0.1,0.5,0.3]T。 
q的第一项是实部,且还未归一化。 
已知一号机器人看到某个点,在他的坐标系下是p=[0.5,0,0.2]T, 求在二号机器人坐标系下该点的位置。

#include <iostream>
#include <cmath> // Eigen 部分
#include <Eigen/Core>
// 稠密矩阵的代数运算(逆,特征值等)
#include <Eigen/Dense>
//Eigen 几何模块
#include <Eigen/Geometry> using namespace std; int main(int argc, char **argv) {
Eigen::Quaterniond q1(0.35, 0.2, 0.3, 0.1);
Eigen::Quaterniond q2(-0.5, 0.4, -0.1, 0.2);
Eigen::Vector3d t1(0.3, 0.1, 0.1);
Eigen::Vector3d t2(-0.1, 0.5, 0.3);
Eigen::Vector3d p1(0.5, , 0.2); Eigen::Quaterniond q1_one = q1.normalized();
Eigen::Quaterniond q2_one = q2.normalized(); //way1 Eigen::Vector3d v = q1_one.inverse() * (p1 - t1);
Eigen::Vector3d v2 = q2_one * v + t2;
cout << "way1 v2 = " << endl << v2 << endl; //way2
Eigen::Matrix3d R1 = Eigen::Matrix3d(q1_one);
Eigen::Matrix3d R2 = Eigen::Matrix3d(q2_one);
Eigen::Vector3d v_2 = R1.inverse() * (p1 - t1);
Eigen::Vector3d v_2_2 = R2 * v_2 + t2;
cout << "way2 v2= " << endl << v_2_2 << endl; return ;
}
way1 v2 =
-0.0309731
0.73499
0.296108 way2 v2=
-0.0309731
0.73499
0.296108
*** Exited normally ***

【视觉SLAM14讲】ch3课后题答案的更多相关文章

  1. c++面向对象程序设计 课后题 答案 谭浩强 第四章

    c++面向对象程序设计课后题答案 谭浩强 第四章 1: #include <iostream> using namespace std; class Complex {public: Co ...

  2. C程序设计(谭浩强)第五版课后题答案 第一章

    大家好,这篇文章分享了C程序设计(谭浩强)第五版课后题答案,所有程序已经测试能够正常运行,如果小伙伴发现有错误的的地方,欢迎留言告诉我,我会及时改正!感谢大家的观看!!! 1.什么是程序?什么是程序设 ...

  3. 使用摄像头或视频运行 ORB-SLAM2 SLAM14讲 第一次课后作业

    参考:视觉SLAM十四讲(第一章作业) 深蓝上高博的第一讲课后题: 题目:6 * 使用摄像头或视频运行 ORB-SLAM2(3 分,约 1 小时)请注意本题为附加题.了解⼀样东西最快的⽅式是⾃⼰上⼿使 ...

  4. 【视觉SLAM14讲】ch4心得与课后题答案【仅供参考】

    答案: Q1:验证SO(3) SE(3) Sim(3)关于乘法成群 SO(3) : 由P64最开始可知,乘法代表了旋转,而SO(3)是旋转矩阵的集合, SE(3)  Sim(3)  同理(最基础的部分 ...

  5. javase程序设计课后题答案

    ;第1章 Java概述 编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java 执行一个java程序fristapp的方法是运行java frist ...

  6. c++ primer plus 第七章 课后题答案

    #include <iostream> using namespace std; double HAR_AVG(double, double); void TEST(bool); int ...

  7. c++ primer plus 第六章 课后题答案

    #include <iostream> #include <cctype> using namespace std; int main() { char in_put; do ...

  8. c++ primer plus 第五章 课后题答案

    #include <iostream> using namespace std; int main() { ; cout << "Please enter two n ...

  9. c++ primer plus 第四章 课后题答案

    #include<iostream> #include<string> using namespace std; int main() { string first_name; ...

随机推荐

  1. vuejs样式绑定

    第一种:class的对象绑定,class引用的是一个对象,这个对象的属性显示不显示由变量决定 <style> .activated{ color:red; } </style> ...

  2. Heterogeneity Activity Recognition Data Set类别

    Heterogeneity Activity Recognition Data Set:https://archive.ics.uci.edu/ml/datasets/Heterogeneity+Ac ...

  3. redis 对cmd的操作

    这个是原子递增的知识点: 关于list部分: 利用lpush命令, rpush命令, lrange命令,对列表操作 此前 我已经 在列表(list)中 插入了 部分 元素了 关于集合set 部分 首先 ...

  4. EF 集合版 增删查改

  5. CentOS 7 下 jdk8 安装教程

    方法一: 一.下载   官网下载地址   下载需要确认当前系统是32位还是64位,可通过命令查询:   sudo uname --m   根据查询结果下载对应的jdk版本(如):   i686 //表 ...

  6. JAVAWEB开发中过滤器的概述及使用

    1.什么是过滤器? 过滤器是向WEB应用程序的请求和响应添加功能的WEB服务组件 2.过滤器的作用 1)可以统一的集中处理请求和响应 2)可以实现对请求数据的过滤 3.过滤器的工作方式 4.使用场合 ...

  7. java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析

    根据xml文件设计Student对象 <?xml version="1.0" encoding="UTF-8"?> <students> ...

  8. HDU 1052 Tian Ji -- The Horse Racing(贪心)

    题目来源:1052 题目分析:题目说的权值匹配算法,有点误导作用,这道题实际是用贪心来做的. 主要就是规则的设定: 1.田忌最慢的马比国王最慢的马快,就赢一场 2.如果田忌最慢的马比国王最慢的马慢,就 ...

  9. 洛谷P4316 绿豆蛙的归宿(期望)

    题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...

  10. Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 36

    例: <aop:config> <aop:pointcut expression="execution(* com.zsn.Service.Impl.*.*(..))&qu ...