三维空间刚体运动编程问题总结(SLAM第三章)

博客介绍了SLAM中刚体运动相关的运算知识。包括归一化中.normalized和.normailze的区别,变换矩阵T、四元数Q的使用注意事项,旋转矩阵T、四元数Q、旋转向量V三者间的转换,以及世界坐标系与局部坐标系下矩阵左乘右乘的规则。

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

1.归一化中.normalized和.normailze的区别

转载:http://www.it610.com/article/4812836.htm
共同点:实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回。

不同点:Vector3.normalized的作特点是当前向量是不改变的并且返回一个新的规范化的向量;Vector3.Normalize的特点是改变当前向量,也就是当前向量长度是1

所以使用方式如下:

Vector3 temp1 = new Vector3(3f, 4f, 5f);//初始化原始向量
Vector3 temp = temp1.normalized;//normalized不改变原始向量,将归一化值赋值新向量
temp.Normalize();//normalize可以直接将原始向量进行归一化

2、变换矩阵T使用注意事项

2.1、不能直接使用变换矩阵T
Eigen::Isometry3d T;
T.matrix()才是变换矩阵,做运算时需加.matrix()后缀;

2.2、旋转矩阵R、平移向量t 赋值方法两种

Isometry3d T1 = Isometry3d::Identity();//初始化变换矩阵T1为单位阵

T1.pretranslate(t1);//为T中的平移向量t赋值 方法1
T1.translation() = Eigen::Vector3d(1,2, 3)//为T中的平移向量t赋值 方法2

T1.rotate(Q1);//为T中的旋转矩阵R赋值

3、四元数Q使用注意事项

1、四元数书写格式:
通常书上所写四元数格式为q=[w,x,y,z]
在程序中四元数格式为q=[x,y,z,w]
一定要注意不能写反了

4、旋转矩阵T 四元数Q 旋转向量V 三者之间的转换

博客:https://blog.youkuaiyun.com/u011092188/article/details/77430988

AngleAxisd t_V(M_PI / 4, Vector3d(0, 0, 1));//旋转向量
Matrix3d t_R = t_V.matrix();//旋转矩阵
Quaterniond t_Q(t_V);//四元数

4、世界坐标系与局部坐标系

博客:
https://blog.youkuaiyun.com/ktigerhero3/article/details/77155199
https://blog.youkuaiyun.com/miaomiaoyuan/article/details/54973363

当三维坐标发生旋转、平移时,就需要考虑到矩阵是左乘还是右乘。
设有旋转矩阵R,平移矩阵T, 坐标矩阵A。

  • 若是绕着静态的世界坐标系旋转,有RA,即左乘旋转矩阵
  • 若是绕着动态的自身坐标系旋转,有A’R’, 即右乘旋转矩阵
  • 若是进行平移,则有TA,即左乘平移矩阵, A’T’为右乘平移矩阵
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值