视觉slam十四讲课后习题ch3-7
题目回顾:
设有小萝卜一号和小萝卜二号位于世界坐标系中,小萝卜一号的位姿为:q1=[0.35,0.2,0.3,0.1],
t2=[0.3,0.1,0.1]^T (q的第一项为实部。请你把q归一化后在进行计算)。这里的q和t的表达的是Tcw,也就是世界到相机的变换关系。小萝卜二号的位姿为q2=[-0.5,0.4,-0.1,0.2],t=[-0.1,0.5,0.3]^T.现在,小萝卜一号看到某个点在自身的坐标系下,坐标为p=[0.5,0,0.2]^T ,求该向量在小萝卜二号坐标系下的坐标,请编程实现此事。
解:
pw:某个点在世界坐标系下的坐标
T_1w :表示世界坐标系到小萝卜一号坐标系的变换关系
T_2w:表示世界坐标系到小萝卜二号坐标系的变换关系
P2 :表示该点在小萝卜二号坐标系下的坐标(即为所求)
单位四元数到旋转矩阵R的变化关系可参考书上55页。之后变换矩阵T=[R t]
[0 1]
由变换关系可列出下面的式子:
p = T_1w * Pw 可解出来pw
p2=T_2W*pW 带入上式解出来的Pw即可求出来p2
具体代码实现如下:
#include<iostream>
#include<Eigen/Core> //包含几何模块
#include<Eigen/Geometry>
using namespace std; int main(int argc,char **argv)
{
/*变量定义*/
Eigen::Quaterniond Q1(0.2,0.3,0.1,0.35); //四元数的表示(w ,x,y,z)
Eigen::Quaterniond Q2(0.4,-0.1,0.2,-0.5);
Eigen::Vector3d t1(0.3,0.1,0.1);
Eigen::Vector3d t2(-0.1,0.5,0.3);
Eigen::Vector3d p(0.5,,0.2); //在一号小萝卜下的坐标
Eigen::Vector3d pw ; //世界坐标
Eigen::Vector3d p2; //求在二号小萝卜的坐标 p2 /*欧氏变换矩阵使用Eigen::Isometry */
Eigen::Isometry3d T_1w = Eigen::Isometry3d::Identity();
Eigen::Isometry3d T_2w = Eigen::Isometry3d::Identity(); /*归一化*/
Q1.normalize();
Q2.normalize(); /*输出归一化参数*/
// cout<<"Q1 is "<<Q1.x()<<endl<<Q1.y()<< endl <<Q1.z()<< endl<<Q1.w()<<endl;
// cout<<"Q2 is "<<Q2.x()<<endl<<Q2.y()<< endl <<Q2.z()<< endl<<Q2.w()<<endl; cout<<"after normalize; "<< endl << Q2.coeffs()<<endl; /*设置变换矩阵的参数*/
T_1w.rotate(Q1);
T_1w.pretranslate(t1);
T_2w.rotate(Q2);
T_2w.pretranslate(t2); /* p = T1w * pw 求解pw*/
pw = T_1w.inverse() * p; /* p2 = T_2w * pw 求解p2*/
p2 = T_2w * pw; /*输出在小萝卜二号下的该点坐标*/
cout<<"该点在小萝卜二号下的坐标为: "<<p2.transpose()<<endl; return ;
}
欢迎大家关注我的微信公众号「佛系师兄」,里面有关于 Ceres 以及 OpenCV 库的一些文章。
比如
「反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!」
更多好的文章会优先在里面不定期分享!打开微信客户端,扫描下方二维码即可关注!
视觉slam十四讲课后习题ch3-7的更多相关文章
- 视觉slam十四讲课后习题ch3--5题
题目回顾: 假设有一个大的Eigen矩阵,我想把它的左上角3x3块提取出来,然后赋值为I3x3.编程实现.解:提取大矩阵左上角3x3矩阵,有两种方式: 1.直接从0-2循环遍历大矩阵的前三行和三列 2 ...
- 《视觉SLAM十四讲课后作业》第二讲
1.设线性⽅程 Ax = b,在 A 为⽅阵的前提下,请回答以下问题:1. 在什么条件下,x 有解且唯⼀? 非齐次线性方程在A的秩与[A|B]的秩相同时方程有解,当R(A)=R(A,B)=n时方程有唯 ...
- 《视觉SLAM十四讲课后作业》第一讲
1. 如何在 Ubuntu 中安装软件(命令⾏界⾯)?它们通常被安装在什么地⽅? 答:一般有两种安装方式(1)apt-get install (2)dpkg -i package.deb.系统软件一般 ...
- 视觉slam十四讲第七章课后习题7
版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/newneul/p/8544369.html 7.题目要求:在ICP程序中,将空间点也作为优化变量考虑进来 ...
- 视觉slam十四讲第七章课后习题6
版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...
- 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/slambook 第二讲:初识SLAM 2.4.2 Hello SLAM(书本P2 ...
- 高博-《视觉SLAM十四讲》
0 讲座 (1)SLAM定义 对比雷达传感器和视觉传感器的优缺点(主要介绍视觉SLAM) 单目:不知道尺度信息 双目:知道尺度信息,但测量范围根据预定的基线相关 RGBD:知道深度信息,但是深度信息对 ...
- 《视觉SLAM十四讲》第2讲
目录 一 视觉SLAM中的传感器 二 经典视觉SLAM框架 三 SLAM问题的数学表述 注:原创不易,转载请务必注明原作者和出处,感谢支持! 本讲主要内容: (1) 视觉SLAM中的传感器 (2) 经 ...
- 《视觉SLAM十四讲》第1讲
目录 一 视觉SLAM 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 视觉SLAM 什么是视觉SLAM? SLAM是Simultaneous Localization and Mappin ...
随机推荐
- 手摸手。完成一个H5 抽奖功能
要完成一个这样的抽奖功能 构思 奖励物品是通过接口获取的(img) 奖励结果是通过接口获取的(id) 抽奖的动画需要由慢到快再到慢 抽奖转动时间不能太短 抽奖结束需要回调 业务代码和功能代码要分离 先 ...
- CS系列(一):Cobalt Strike初体验
0X01 环境准备 Cobalt Strike安装包(链接:https://pan.baidu.com/s/1wCHJcJrF6H0wUCdetz3Xjg 提取码:rjuj) Cobalt Strik ...
- 2020 年 Java 程序员应该学习什么?
大家好,我相信大家在新的一年都有一个良好的开端,并准备好制定一个提升自我技术的目标.作为 Java 开发人员,我还制定了一些目标,希望在今年成为一名更好的 Java 开发人员. 如果你尚未制定目标,这 ...
- 关于ESP8266 NodeCMU固件无法刷入新代码的解决方法
在玩ESP8266时,有时候会无意中写了导致死循环的代码,或都某些函数传递了不合适的参数导致系统崩溃,这可能会导致ES8266不停地重启,这时我们发现无法刷入新的代码,也无法删除8266中的原代码.我 ...
- 世界500强ING集团顺利的敏捷转型之路
案例背景 为什么银行要像灰狗一样快? 荷兰国际集团(ING),成立于1991年,主营业务银行与保险业务,在全球45个国家和地区拥有分支机构,总资产887亿欧元(2018),全球53,000多名员工,拥 ...
- 通过例子进阶学习C++(五)计算2的1次方至2的64次方之和
本文是通过例子学习C++的第五篇,通过这个例子可以快速入门c++相关的语法. 1.上篇回顾 在上一篇中,我们通过字符数组计算264次方: 通过例子进阶学习C++(四)计算2的64次方 带着这个问题:为 ...
- php配置xdebug插件,断点调试
xdebug 下载地址:https://xdebug.org 1.项目目录下新建phpinfo(); 文件: 2.快速查找符合自己的phpxdebug插件: https://xdebug.org/wi ...
- MST + 树形 dp
Genghis Khan(成吉思汗)(1162-1227), also known by his birth name Temujin(铁木真) and temple name Taizu(元太祖), ...
- C# 添加、删除、读取Word形状(基于Spire.Cloud.Word.SDK)
本文介绍调用Spire.Cloud.Word.SDK提供的接口shapesApi来操作Word形状,包括添加形状AddShape(),添加形状时,可设置形状类型.颜色.大小.位置.倾斜.轮廓.文本环绕 ...
- Django 信号量
参考:https://www.cnblogs.com/wupeiqi/articles/5246483.html 一.信号:就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者 ...