经典坐标变换案例代码剖析

2023-11-10

题目:

设有小萝卜一号和小萝卜二号位于世界坐标系中。记世界坐标系为W,小萝卜们的坐标系为R1和

R2.小萝卜一号的位姿为q2=[0.35,0.2,0.3,0.1]T,t1=[0.3,0.1,0.1]T,小萝卜二号的位姿为q2=[-0.5,0.4,-0.1,0.2]T,t2=[0.3,0.1,0.1]T ,这里的q和t表示的都是 T_Rk,w,k=1,2,也就是世界坐标系到相机坐标系的变换关系,现在小萝卜一号看到某个点在自身的坐标系下坐标为P_R1=[0.5,0,0.2]T,求该向量在小萝卜二号坐标系下的坐标。

解题思路:

原理:若存在世界坐标系T_w,机器人坐标系T_R。一个点的世界坐标P_w,机器人坐标系下P_R,则

知道了原理,问题就很容易解决了,首先我们需要将已知的坐标转换到世界坐标系下,再将其转换到小萝卜二号坐标系下。其关键点就是求出T_w1(小萝卜一号坐标系到世界坐标系)和T_2w(世界坐标系到二号坐标系)的变换矩阵即可。根据题目我们已经知道了T_1w和T_2w,而T_1w求逆就能得到T_w1。

根据上面的原理得到最后计算的公式,

计算代码及注释:

#include<iostream>
#include<vector>
#include<algorithm>
#include<Eigen/Core>
#include<Eigen/Geometry>

using namespace std;
using namespace Eigen;

int main(int argc,char **argv){
    Quaterniond q1(0.35,0.2,0.3,0.1),q2(-0.5,0.4,-0.1,0.2);
    //四元数使用之前需要进行归一化,即其各元素除弗罗贝尔乌斯范数,此时四元数表示的是一组旋转矩阵
    q1.normalize();
    q2.normalize();
    Vector3d t1(0.3,0.1,0.1),t2(-0.1,0.5,0.3);
    Vector3d p1(0.5,0,0.2);
    //将四元数代表的旋转赋值给变换矩阵
    Isometry3d T1w(q1),T2w(q2);
    //把平移向量赋值给变换矩阵
    //先旋转再平移(但平移是按照旋转之前的坐标轴平移)
    T1w.pretranslate(t1);//得到小萝卜一号到世界坐标系的变换矩阵
    T2w.pretranslate(t2);//得到小萝卜二号到世界坐标系的变换矩阵

    Vector3d p2=T2w*T1w.inverse()*p1;
    cout<<endl<<p2.transpose()<<endl;
    return 0;
}
    
    

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典坐标变换案例代码剖析 的相关文章

随机推荐

  • 匿名内部类

    关于匿名内部类还有如下两条规则 1 匿名内部类不能是抽象类 因为系统在创建匿名内部类的时候 会立即创建内部类的对象 因此不允许将匿名内部类 定义成抽象类 2 匿名内部类不等定义构造器 因为匿名内部类没有类名 所以无法定义构造器 但匿名内部类
  • java正则表达式匹配所有数字,包括带小数点的数字

    用于匹配的正则表达式为 1 9 d d 0 d 1 9 1 9 匹配1 9的数字 d 匹配数字 包括0 9 紧跟在 d 之后 表明可以匹配零个及多个数字 匹配小数点 紧跟在 之后 表明可以匹配零个或一个小数点 0 匹配一个数字0 其中的 1
  • 百度网盘提取码_百度网盘提取码查询工具,老菜建议大家收藏备用!

    APP菜园 打造属于我们自己的APP帝国 1 打开支付宝app 首页搜索 8221050 然后点击快捷功能 天天领红包 2 软件领取流程 1 认真阅读下软件介绍 2 找到图片下方的 获取链接 复制 3 打开手机上的浏览器粘贴链接搜索 百度云
  • Unity学习笔记(一)结构体的简单理解与应用

    Unity中的结构体的简介与使用 一 Unity中的结构体是什么 二 结构体与类的不同 一 Unity中的结构体是什么 简单来说 在 C 中 结构体是值类型数据结构 它使得一个单一变量可以存储各种数据类型的相关数据 例如我定义了一个结构体
  • Mybatis使用IN语句查询

    一 简介 在SQL语法中如果我们想使用in的话直接可以像如下一样使用 select from HealthCoupon where useType in 4 3 但是如果在MyBatis中的使用in的话 像如下去做的话 肯定会报错 Map
  • FFMPEG进阶系列02-ffmpeg命令详解3

    ffmpeg 的封装转换 FFmpeg的封装转换部分 主要是通过libavformat这部分来完成的功能 通过libavformat库进行mux和demux操作 多媒体文件的格式有很多种 但是还是有好多demux与mux的操作参数是公用的
  • 代码随想录算法训练营day1

    代码随想录算法训练营第一天 704 二分查找 27 移除元素 704 二分查找 题目链接 leetcode704 Binary search 暴力解法 class Solution public int search vector
  • 第01课:以太坊节点部署及基本命令操作

    第01课 以太坊节点部署及基本命令操作 区块链诞生自中本聪的比特币 自 2009 年以来 出现了各种各样的类比特币的基于公有区块链的数字货币 目前各个国家及企业机构都对区块链投入巨大的财力和人力来对区块链技术进行研究 官方文档 https
  • mapper-spring-boot-starter 主要作用是

    今天是第一次接触到 这个场景启动器内心中真是一片的茫然 学习了这么长时间我居然还不知道有这个的存在今天好好查一查资料 参考资料 https blog csdn net crq1205 article details 88040582 MyB
  • 【Metashape精品教程1】 软件介绍

    Metashape精品教程1 软件介绍 概述 一 软件功能 二 软件优点 三 软件缺点 四 软件安装 概述 Agisoft Metashape是一款独立的数字摄影测量软件 能够处理航空 近景摄影 卫星等获取的影像数据 生成相应的数据产品 该
  • Unity5中叹为观止的实时GI效果

    原地址 今天为大家分享 unity与Alex Lovett共同使用 unity5制作的Shrine Arch viz Demo 其中充分利用了Unity5的实时全局光照功能 实在是太过惊艳 随便一帧都可以直接拿来当做屏保 上面的Demo使用
  • java trim 空指针_trim()空指针异常问题!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 先上程序 import java io BufferedReader import java io File import java io FileReader public class Dis
  • springboot实现文件的上传下载

    SpringBoot文件上传与下载 文件的上传与下载 在springmvc阶段要实现文件的上传下载 需要的依赖 gt gt
  • gdb调试命令的使用及总结

    gdb是一个在UNIX环境下的命令行调试工具 如果需要使用gdb调试程序 请在gcc时加上 g选项 下面的命令部分是简化版 比如使用l代替list等等 1 基本命令 命令 描述 backtrace 或bt 查看各级函数调用及参数 finis
  • Python字符编码及转换

    Python字符编码及转换 在Python开发中 我们经常需要处理不同的字符编码问题 因为在不同的系统 平台 语言之间 字符编码的表示方式是不同的 本文将介绍Python中常见的字符编码以及它们之间的转换方法 ASCII字符集 ASCII
  • Linux保护文件实现,Linux完整性保护机制模块实现分析(1)

    原标题 Linux完整性保护机制模块实现分析 1 2 详细分析2 1 模块功能描述 文件系统完整性模块包含四种机制 监控磁盘机制 同步机制 检查修复文件系统机制 监视文件系统机制 1 监控磁盘机制主要由statfs by dentry vf
  • Maven安装(超详解)

    2 4 1 下载 下载地址 Maven Download Apache Maven 在提供的资料中 已经提供了下载好的安装包 如下 2 4 2 安装步骤 Maven安装配置步骤 解压安装 配置仓库 配置Maven环境变量 1 解压 apac
  • 生成csv

    package com study csv import java io File import java io FileNotFoundException import java io FileOutputStream import ja
  • python 行转列与气泡图,echarts玫瑰图画图

    原数据 stack data stack to frame head 10 unstack data pd read excel Users bella Desktop 考研 xlsx dropna data data set index
  • 经典坐标变换案例代码剖析

    题目 设有小萝卜一号和小萝卜二号位于世界坐标系中 记世界坐标系为W 小萝卜们的坐标系为R1和 R2 小萝卜一号的位姿为q2 0 35 0 2 0 3 0 1 T t1 0 3 0 1 0 1 T 小萝卜二号的位姿为q2 0 5 0 4 0