Eigen使用笔记

news/2024/7/8 21:01:21

1. 常用头文件

 

2. 使用问题汇总

2.1. 求逆

在有的环境下,有的版本的Eigen,使用Eigen的inverse()求逆,和正确值差一个负号,这是Eigen中存在的bug,修改为矩阵分解后该问题就能解决

Eigen::Matrix4d I = Eigen::Matrix4d::Identity(4, 4);matrix = matrix.colPivHouseholderQr().solve(I);

2.2. 与容器共同使用时崩溃

有时下面的代码会发生崩溃

vector<Eigen::Isometry3d> poses;  
Eigen::Isometry3d T1 = Eigen::Isometry3d::Identity();for (int i = 0; i < 5; ++i) {poses.push_back(T1);
}

解决方法是把

vector<Eigen::Isometry3d>;

写成如下形式

vector<Eigen::Isometry3d, Eigen::aligned_allocator<Eigen::Isometry3d>>;

二者是等价的,并不影响编译

类似地,也可以采用宏定义的方式解决类似问题

typedef std::vector<Eigen::Vector3f, Eigen::aligned_allocator<Eigen::Vector3f>> vector_Vector3f;
typedef std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d>> vector_Vector3d;
typedef std::vector<Eigen::Vector4f, Eigen::aligned_allocator<Eigen::Vector4f>> vector_Vector4f;
typedef std::vector<Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d>> vector_Vector4d;
typedef std::vector<Eigen::Affine3f, Eigen::aligned_allocator<Eigen::Affine3f>> vector_Affine3f;
typedef std::vector<Eigen::Affine3d, Eigen::aligned_allocator<Eigen::Affine3d>> vector_Affine3d;
typedef std::vector<Eigen::Isometry3f, Eigen::aligned_allocator<Eigen::Isometry3f>> vector_Isometry3f;
typedef std::vector<Eigen::Isometry3d, Eigen::aligned_allocator<Eigen::Isometry3d>> vector_Isometry3d;

参考文献

Eigen(2) 模块与头文件_csdn_1HAO的博客-CSDN博客_eigen头文件

vslam 14 讲ch5 编译joinMap会出现由于vector使用eigen会导致core dump_胡白白的博客-程序员ITS401 - 程序员ITS401Eigen库数据结构内存对齐问题_一颗小小的螺丝钉的博客-CSDN博客

eigen_stl_containers/eigen_stl_vector_container.h at master · ros/eigen_stl_containers · GitHub


http://lihuaxi.xjx100.cn/news/248448.html

相关文章

单件类的安全实现

1. 不安全的实现方法 std::unique_ptr<Interface> instance_(nullptr);static Interface* GetInstance() {if (instance_.get() nullptr) {instance_.reset(new Interface());}return instance_.get(); } instance_.reset(new Interface)包含了三步&#xff1a; 1&am…

spring cloud快速搭建

为什么80%的码农都做不了架构师&#xff1f;>>> 一&#xff1a;注册中心 服务提供者&#xff08;简单&#xff09; 注册中心本身就可以是服务提供者&#xff0c;如果有需求可以分开。 1&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8…

测试找人

2019独角兽企业重金招聘Python工程师标准>>> tomcat 测试找人 转载于:https://my.oschina.net/zhouyuan/blog/125854

郭光灿院士--奇妙的量子世界笔记1(量子世界和经典世界区联系)

视频来源&#xff1a; 网易公开课 图片来源&#xff1a;视频中截图 声明&#xff1a;视频只看了一遍&#xff0c;不求甚解&#xff0c;一些地方难免出错还望指正 1. 为什么神奇&#xff1f; 这个神奇是对比经典世界&#xff08;特点就是确定性&#xff09;&#xff0c;显示出来…

T-SQL WITH 分号问题

使用with 前面有sql语句时候 运行 with tempTbale(id) as ( select ..... )select * from tempTbale 运行上面语句 提示下面错误 Incorrect syntax near the keyword with. If this statement is a common table expression, an xmlnamespaces clause or a change tracking con…

request与session的联系与区别

目录 定义区别 request session 方法区别 request session 补充 定义区别 request request范围较小一些&#xff0c;request是某一次访问的局域变量&#xff0c;只是一个请求。request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求&#x…

程序员的成长

程序员职业发展路线 打工人的基础能力 一线管理者基础功

属性动画

2019独角兽企业重金招聘Python工程师标准>>> 属性动画 就是增强版补间动画&#xff0c;他强大在&#xff1a; 1.补间动画只能定义两个关键帧在透明度&#xff0c;旋转&#xff0c;倾斜&#xff0c;位移&#xff0c;4个方面的变化&#xff0c;但属性动画可以定义任何…