设有⼩萝⼘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,求该向量在⼩萝⼘⼆号坐标系下的坐标。

请编程实现此事,并提交 你的程序。

下面是我的程序:hw3_3.cpp

#include <iostream>
#include <Eigen/Core>
#include <Eigen/Geometry>
#include <cmath>
using namespace std;
int main()
{
 /*1、先求出p点在世界坐标系下的坐标pw=Twc*pc1=Tcw`*pc1
  *先根据q1和t1,得到Twc(四元数使用之前要归一化)
  *再求出Tcw,再代入公式得到Pw
  */
   Eigen::Quaterniond q1(0.55,0.3,0.2,0.2);
   Eigen::Vector3d t1;
   t1<<0.7,1.1,0.2;
   Eigen::Vector3d pc1(0.5,-0.1,0.2);

    // 变换矩阵T用 Eigen::Isometry
    Eigen::Isometry3d Twc1=Eigen::Isometry3d::Identity();      // 虽然称为3d,实质上是4*4的矩阵
    Twc1.rotate ( q1.normalized() );                                     // 按照q1进行旋转
    Twc1.pretranslate ( t1 );                                 // 按照t1进行平移
    // 用变换矩阵进行坐标变换
    Eigen::Vector3d pw = Twc1.inverse()*pc1;                              // 相当于R*v+t
 //2、再求出pw在小萝卜二号坐标系下的坐标pc2=Tcw*pw
    Eigen::Quaterniond q2(-0.1,0.3,-0.7,0.2);
    Eigen::Vector3d t2;
    t2<<-0.1,0.4,0.8;
    // 变换矩阵T用 Eigen::Isometry
    Eigen::Isometry3d Tcw2= Eigen::Isometry3d::Identity();      // 虽然称为3d,实质上是4*4的矩阵
    Tcw2.rotate ( q2.normalized() );                                     // 按照q2进行旋转
    Tcw2.pretranslate (t2 );                                 // 按照t2进行平移
    Eigen::Vector3d pc2=Tcw2*pw;
    cout << "pc2= " <<pc2.transpose()<<endl;
 ;
}

然后它对应的CMakeLists.txt文件对应为:

cmake_minimum_required( VERSION 2.8 )
project( hw3 )

set( CMAKE_BUILD_TYPE "Release" )
set( CMAKE_CXX_FLAGS "-O3" )

# 添加Eigen头文件
include_directories( "/usr/include/eigen3" )

add_executable( hw3_3 hw3_3.cpp )

然后cmake make得到答案是:

pc2=  1.08228 0.663509 0.686957

习题练习(视觉slam14讲课后习题)的更多相关文章

  1. 小甲鱼零基础学python第25讲课后习题动手练习--通讯录

    小甲鱼零基础学python第25讲课后习题动手练习---通讯录 **************************通讯录要求******************************* 输入指令: ...

  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. 小甲鱼Python第二十一讲课后习题

    测试题: 0.  递归在编程上的形式是如何表现的呢? 在编程上,递归表现为函数调用本身这么一个行为. 1.  递归必须满足哪两个基本条件? 一.        函数调用自身二.        设置了正 ...

  5. 小甲鱼Python第二十讲课后习题---021

    笔记: 1.lambda表达式的作用: 1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后 ...

  6. 小甲鱼Python第十七讲课后习题

    笔记: 1.分清楚形参和实参 2.函数文档:是函数的一部分,于解释不同,使用help(函数名)或者 函数名__doc__可以查看到 3.关键字参数(在一个函数的参数较多的时候作用比较明显): 给参数的 ...

  7. 小甲鱼Python第十六讲课后习题--017函数

    函数的定义用def,函数名后要用冒号 函数的返回:函数中使用return   测试题: 0. 你有听说过DRY吗? DRY是指Don't Repeat Yourself ,特指在程序设计以及计算中避免 ...

  8. 小甲鱼Python第九讲课后习题--010列表

    0.列表都可以存放一些什么东西? 可以存放任何的数据类型 1. 向列表增加元素有哪些方法? append()--末尾添加一个元素 extend()--末尾添加多个元素,但要求已列表的格式添加[x,x, ...

  9. 小甲鱼Python第四讲课后习题

    1while语句中,当条件为真时,它会一直循环下去,比如下面的例子,不过可以用Ctral + C来强制结束 while 'C': print("i love you") 2.观察打 ...

随机推荐

  1. [DLX+bfs] hdu 4069 Squiggly Sudoku

    题意: 给你9*9的矩阵.对于每一个数字.能减16代表上面有墙,能减32代表以下有墙. .. 最后剩下的数字是0代表这个位置数要求,不是0代表这个数已知了. 然后通过墙会被数字分成9块. 然后做数独, ...

  2. Eclipse + CDT引入OpenCV失败的解决的方法

    Android JNI开发中用到了OpenCV,由于想通过JNI实现,就没有去用Android层的Lib引用. 可是操作中发如今.cpp文件中include的时候发现"#include &l ...

  3. 【CEOI2002】【Poj 1038】Bugs Integrated, Inc.

    http://poj.org/problem?id=1038 发一下中文题面(今天考试直接被改了): 生记茶餐厅由于受杀人事件的影响,生意日渐冷清,不得不暂时歇业.四喜赋闲在家,整天抱着零食看电视,在 ...

  4. [测试]单元测试框架NUnit

    说到测试,相信大家都或多或少了解. 按照各自分类,就自己知道包括 A.单元测试.集成测试.系统测试 B.白盒测试.黑盒测试 C.压力测试.性能测试.安全测试 ...... 反正是太多太多.就做开发以来 ...

  5. 怎么样关掉红米note开发者选项

    进 系统设置\应用 ,找到“设置”点进去,清一下数据,再打开“设置”查看,就没有“开发者选项”了

  6. hdnoip2017

    T1: 小喵喵有 n 个小鱼干排成一列,其中第 i个小鱼干有两种属性,美味度 ai 和特殊度 bi 现在小喵喵要吃掉一些小鱼干,出于一些原因,小喵喵会吃掉连续的一段区间中的所有小鱼干. 如果吃掉了 [ ...

  7. uva11542

    https://vjudge.net/problem/UVA-11542 xor高斯消元... 答案为2^f-1 其实书上有一个问题 样例有3种情况,其中4,6,15是绑在一起的,也就是他们必须满足一 ...

  8. 【145】◀▶ .NET Framework类库索引

    C#编程基础: A1 ………… 基础A2 ………… using 关键字A3 ………… as 关键字A4 ………… is 关键字A5 ………… switch 关键字A6 ………… return 语句关键 ...

  9. 【第三届强网杯】write up

    一,鲲or鳗orGame 从浏览器里拿到game.gb 用 VisualBoyAdvance ,搜索内存变量,然后改变量就完事了,但是改变量他们说直接利用添加代码功能有bug,所以要在工具里的内存查看 ...

  10. mydatepicker97 日历控件

    官方教程: http://www.my97.net/