当前位置: 首页 > news >正文

Eigen::Isometry3d变换矩阵的常用方法

文章目录

  • Eigen::Isometry3d变换矩阵的常用方法
    • 一、基本定义
    • 二、操作方法
    • 三、与四元数和平移向量的转换
    • 四、左乘与右乘

Eigen::Isometry3d变换矩阵的常用方法

一、基本定义

变换矩阵本质是一个4*4的矩阵


Eigen::Isometry3d T_imu_to_lidar = Eigen::Isometry3d::Identity()

二、操作方法

  • .translation():无参数,返回当前变换平移部分的向量表示(可修改),可以索引[]获取各分量

  • .rotation():无参数,返回(只读的)当前变换的旋转部分,以旋转矩阵表示;

  • .matrix():返回变换对应的矩阵(可修改),包括平移部分和旋转部分;

  • .linear():返回变换的线性部分,对于Isometry而言就是旋转对应的旋转矩阵,Eigen::Block类型;

  • .Identity()函数的作用:在定义变量时使用Eigen::Matrix4f x =
    Eigen::Matrix4f::Identity();即用单位矩阵对x变量进行了初始化

  • .inverse():求变换矩阵的逆

三、与四元数和平移向量的转换


// Eigen::Isometry3d  --> Eigen::Quaterniond
Eigen::Matrix4d M_lidar_to_imu;
Eigen::Isometry3d T_lidar_to_imu(M_lidar_to_imu); 
Eigen::Vector3d enu_position = T_lidar_to_imu.translation();
//rotation()的结果是3*3的Matrix3d矩阵.  rotation:旋转
Eigen::Quaterniond enu_attitude =Eigen::Quaterniond(T_lidar_to_imu.rotation());// Eigen::Quaterniond  -->  Eigen::Isometry3d
Eigen::Quaterniond q_delta; 
Eigen::Vector3d p_delta;  
Eigen::Isometry3d T_delta;
T_delta.linear() = q_delta.toRotationMatrix();
T_delta.translation() = p_delta;

四、左乘与右乘

旋转矩阵左乘是相对固定坐标系,右乘是相对当前坐标系。

1、求取变换矩阵的相对关系

//求取雷达坐标系到enu世界坐标系的转换矩阵,以enu坐标系为基准
Eigen::Isometry3d T_lidar_to_enu = T_imu_to_enu * system_config.T_lidar_to_imu;

2、求取点的坐标从坐标系A转到坐标系B

 Eigen::Vector3d position_ecef;// 得到当前时刻雷达在地心地固坐标系的位置position_ecef = system_config.T_enu_to_ecef * position_enu;  

相关文章:

  • Pwn刷题记录(不停更新)
  • 初中英语优秀作文分析-005How to Plan Our Life Wisely-如何明智地规划我们的生活
  • Java短路逻辑运算符
  • 个人成长的利器:复盘教你如何避免重蹈覆辙
  • windows端口被占用问题,杀死进程
  • Kafka 最佳实践:构建高性能、可靠的数据管道
  • 免费一年SSL证书申请——建议收藏
  • 【机器学习300问】127、怎么使用词嵌入?
  • 如何在 Ubuntu 12.04 VPS 上安装和配置基本的 LDAP 服务器
  • Cesium如何高性能的实现上万条道路的流光穿梭效果
  • python3.9安装pysal库
  • 高通安卓12-固件升级
  • 创意产业如何应对AI的挑战。
  • 超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!
  • 【CPP】归并排序
  • 「面试题」如何实现一个圣杯布局?
  • 【面试系列】之二:关于js原型
  • express如何解决request entity too large问题
  • interface和setter,getter
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mockjs让前端开发独立于后端
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • windows下如何用phpstorm同步测试服务器
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从tcpdump抓包看TCP/IP协议
  • 聊聊flink的TableFactory
  • 你不可错过的前端面试题(一)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 人脸识别最新开发经验demo
  • 入手阿里云新服务器的部署NODE
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 一道闭包题引发的思考
  • 一天一个设计模式之JS实现——适配器模式
  • 智能合约Solidity教程-事件和日志(一)
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #面试系列-腾讯后端一面
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)斐波那契Fabonacci函数
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot教学评价 毕业设计 641310
  • (论文阅读40-45)图像描述1
  • (四)React组件、useState、组件样式
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (一)基于IDEA的JAVA基础10
  • (转) Face-Resources