画SLAM的轨迹方式

这篇博客介绍了如何利用Eigen几何模块来处理SLAM(Simultaneous Localization And Mapping)中的机器人轨迹。内容包括旋转矩阵、旋转向量、四元数、欧拉角等旋转表示方法,以及如何从pose.txt文件读取平移和旋转数据。同时,文章讨论了数据存储格式,并提出了读取数据的代码示例,最后提到如何绘制轨迹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说机器人位姿,正常情况下,变换矩阵T包含:旋转矩阵【3*3】与平移矩阵【3*1】

但是,旋转矩阵9维只表示了3个自由度,具有冗余性,于是一种更紧凑的描述方式:旋转向量出现了。

1.旋转向量3*1:该向量方向与旋转轴一致,向量长度等于旋转角。通过罗德里格斯公式将旋转向量3*1转化为旋转矩阵3*3

缺点:有奇异性。

2.四元数4*1:复平面上,乘上复数i相当于逆时针把一个复向量旋转90度。一个实数,三个虚部。

q=q1i+q2i+q3i+q0

之所以讲述上述是由于在输出数据集中,会以上述方式表示旋转矩阵R。


Eigen几何模块:

旋转矩阵:3*3 Matrix3d

旋转向量: 3*1 AngleAxisd

四元数:4*1 Quaterniond

欧拉角: 3*1 Vector3d

欧式变换矩阵: 4*4  Isometry3d:R|t

仿射变换: 4*4 Affine3d:A|t,A可逆即可,无须正交矩阵R。

射影变换: 4*4 Projective3d
 

//旋转矩阵R(3*3)
Matrix3d rotation_matrix=Matrix3d::Identity()
 
//旋转向量,并沿Z轴转45度(3*1)
AngleAxisd rotation_vector(M_PI/4,Vector3d(0,0,1))
 
//欧拉角(ZYX顺序,yaw,pitch,roll)(3*1)
Vector3d eular_angles=rotataion_matrix.eularAngles(2,1,0);
 
//变换矩阵T(4*4)
Isometry3d T=Isometry3d::Id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值