1. 参考:

eigen安装:clion使用Eigen_gxt_kt的博客-CSDN博客_clion eigen

matlab 角度转四元数_四元数的两种写法与转换_女王丁丁的博客-CSDN博客

机械臂 tcp 坐标 转旋转矩阵 (旋转向量转旋转矩阵)_侃侃_天下的博客-CSDN博客_机械臂旋转矩阵

2. 测试:

引用自“matlab 角度转四元数_四元数的两种写法与转换_女王丁丁的博客-CSDN博客”

这里还要注意的是,matlab和C语言eigen库将同一个四元数转换为旋转矩阵时,获得的两个旋转矩阵互为逆矩阵!abb获得的转换则和eigen获得的转换相同(这是由于一个旋转矩阵有两种含义,即坐标系A在B中的表示和A到B的变换,二者互为逆。)

经过测试,在optitrack中,刚体坐标为(x,y,z,qx,qy,qz,qw),表示刚体在基坐标系中的位置为xyz,经过MATLAB的转换获得的旋转矩阵R为刚体坐标系在基坐标系中表达的逆。在matlab内部进行变换是没有问题的,但是matlab中四元数导入其他软件时,需要求逆才能表达同样的旋转矩阵。

我一般采用坐标系A在坐标系B中表示的方式来理解矩阵变换,因此得出以下结论:

若原点重合的A坐标系在B坐标系中的表示为

,则在matlab和abb中其对应四元数为dcm2quat(R),在C语言中对应的四元数为dcm2quat(R.transpose() )
以此为基础,根据转换前后的意义,决定是否要对矩阵进行转置

旋转矩阵转其他格式
eigen matlab
旋转矩阵转欧拉角
Eigen::Matrix3d rotation_matrix2;
rotation_matrix2 << 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1;//或直接单位矩阵初始化
Eigen::Matrix3d rotation_matrix2_1 = Eigen::Matrix3d::Identity();
//2.1 旋转矩阵转换为欧拉角
//ZYX顺序,即先绕x轴roll,再绕y轴pitch,最后绕z轴yaw,0表示X轴,1表示Y轴,2表示Z轴
Eigen::Vector3d euler_angles = rotation_matrix2.eulerAngles(2, 1, 0);
cout << "yaw(z) pitch(y) roll(x) = " << euler_angles.transpose() << endl;

rotation_matrix2 = [0.707107, -0.707107, 0; 0.707107, 0.707107, 0; 0, 0, 1];

euler_angels = rotm2eul(rotation_matrix2);
disp("yaw(z) pitch(y) roll(x) =")
disp(euler_angels);

测试 yaw(z) pitch(y) roll(x) = 0.785398       -0        0 yaw(z) pitch(y) roll(x) =
    0.7854         0         0
旋转矩阵转旋转向量
Eigen::AngleAxisd rotation_vector2;
rotation_vector2.fromRotationMatrix(rotation_matrix2);
//或者
Eigen::AngleAxisd rotation_vector2_1(rotation_matrix2);
cout << "rotation_vector2 " << "angle is: " << rotation_vector2.angle() * (180 / M_PI)
<< " axis is: " << rotation_vector2.axis().transpose() << endl;cout << "rotation_vector2_1 " << "angle is: " << rotation_vector2_1.angle() * (180 / M_PI)
<< " axis is: " << rotation_vector2_1.axis().transpose() << endl;
rotation_vector2_1 = rotationMatrixToVector(rotation_matrix2);
disp("rotation_vector2_1 =")
disp(rotation_vector2_1 *180/pi)
测试 rotation_vector2 angle is: 45 axis is: 0 0 1
rotation_vector2_1 angle is: 45 axis is: 0 0 1
rotation_vector2_1 =
         0         0  -45.0000
旋转矩阵转四元数
Eigen::Quaterniond quaternion2(rotation_matrix2);
//或者
Eigen::Quaterniond quaternion2_1;
quaternion2_1 = rotation_matrix2;
cout << "quaternion2 x: " << quaternion2.x() << endl;
cout << "quaternion2 y: " << quaternion2.y() << endl;
cout << "quaternion2 z: " << quaternion2.z() << endl;
cout << "quaternion2 w: " << quaternion2.w() << endl;cout << "quaternion2_1 x: " << quaternion2_1.x() << endl;
cout << "quaternion2_1 y: " << quaternion2_1.y() << endl;
cout << "quaternion2_1 z: " << quaternion2_1.z() << endl;
cout << "quaternion2_1 w: " << quaternion2_1.w() << endl;
quaternion2=dcm2quat(rotation_matrix2);
disp("quaternion2 =")
disp(quaternion2);
测试 quaternion2 x: 0
quaternion2 y: 0
quaternion2 z: 0.382684
quaternion2 w: 0.92388

quaternion2 =
    0.9239         0         0   -0.3827

备注:

a quaternion vector of the form q = [ wxyz], with w as the scalar number.

matlab和eigen在旋转向量,欧拉角,四元数,旋转矩阵转换的对比(一 旋转矩阵转其他)相关推荐

  1. 刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)

    最近学习了一些关于三维空间旋转相关的知识,借此梳理一下备忘. 三维空间的旋转(3D Rotation)是一个很神奇的东东:如果对某个刚体在三维空间进行任意次的旋转,只要旋转中心保持不变,无论多少次的旋 ...

  2. 【自动驾驶】24.欧拉角、旋转向量、四元数、万向锁

    原文链接:https://blog.csdn.net/shenxiaolu1984/article/details/50639298 原文链接:https://blog.csdn.net/lql071 ...

  3. 《视觉SLAM十四讲》-第三章第3节公式推导-旋转向量-欧拉角--罗德里格斯公式详细推导

  4. 第3讲 旋转向量、欧拉角、四元数

    旋转向量 从上一篇中已经知道,旋转可以用旋转矩阵来表示,变换可以用变换矩阵来表示,那么为什么还需要旋转向量呢? 仔细想一下,矩阵表示方式至少有以下几个缺点: 的旋转矩阵有9个量,但是一次旋转只有3个自 ...

  5. 【自动驾驶】30.c++实现基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换(附代码)

    矩阵的使用可参考系列博客:点击此处 原文链接:基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换. 也可以参考另一篇博客:eigen 中四元数.欧拉角.旋转矩阵.旋转向量. ...

  6. eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...

    点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数.欧拉角.旋转矩阵.轴角如何相互转换,本篇文章介绍如何用eigen来实现. 旋转向量 1,初始化旋转向量:旋转角为alpha,旋转轴为(x ...

  7. 方向向量转欧拉角_【姿态表示】旋转向量、旋转矩阵、欧拉角、四元数

    1. 旋转矩阵与旋转向量旋转矩阵(Rotation Matrix)用 9 个量描述旋转的3个自由度,有冗余: 9 个量是有约束的:必须是正交矩阵,且行列式为 1 旋转向量(Rotation Vecto ...

  8. 第六章 相机及其应用 6.3欧拉角、旋转矩形、四元数、应用于Eigen的示例

    欧拉角 ** ** 一.顺规定义 ** 欧拉角也可以描述三维刚体旋转,它将刚体绕过原点的轴(i,j,k)旋转θ,分解成三步(蓝色是起始坐标系,而红色的是旋转之后的坐标系.). 绕z轴旋转α,使x轴与N ...

  9. 旋转矩阵、欧拉角、旋转矢量及四元数的介绍和工程应用

    本篇文章首发于微信公众号:无人机开发.更多无人机技术相关文章请关注此公众号,有问题也可在公众号底部添加个人微信进行交流. 1.前言 从事导航.制导或者控制时,经常需要将各个物理矢量从A坐标系转换至B坐 ...

最新文章

  1. java代码启动电脑上程序方法
  2. 纪念9.11十周年 奥巴马诵读圣经原文
  3. bzoj4665: 小w的喜糖
  4. 尚硅谷_JavaScript_学习笔记
  5. matlab colormap详解 (2
  6. ip代理服务器8需要云速捷_nginx获取真实ip,proxy_set_head怎么设置头部信息
  7. Drools7中文教程 文档 指南
  8. 【SQL基础】SQLzoo练习
  9. hdu 5025 Saving Tang Monk 状态压缩dp+广搜
  10. 酷狗音乐皮肤怎么从计算机里换,酷狗音乐怎么换皮肤 酷狗音乐自定义皮肤的方法...
  11. Mysql之账号管理、建库以及四大引擎【入门篇】
  12. 数据链路层-点对点通信方式
  13. 单利模式的优缺点和使用场景
  14. 如何给批量的图片命名(以序号递增的形式)?
  15. 家庭教育:怎样安慰不想上学的人
  16. TMS和WMTS大概对比
  17. 操作系统课后答案 第四--六章 黑新宏 胡元义主编
  18. 中国大学MOOC-陈越、何钦铭-数据结构-2019夏期末考试(含答案)
  19. 【定语从句练习题】who、which
  20. 前端~css~Chrome调试工具、元素显示模式、盒模型、flex弹性布局

热门文章

  1. 【高数+复变函数】Laplace变换的性质
  2. 【阅读笔记】PSA-GAN PROGRESSIVE SELF ATTENTION GANS FOR SYNTHETIC TIME SERIES
  3. 新款HTTP代理抓包工具Proxyman(界面美观、功能强大)
  4. 周志华《机器学习》第三章课后习题
  5. 读wildmagic和ogre源码的感受
  6. Robomongo使用教程:踩着前辈的路
  7. Python数据分析从入门到精通视频教程
  8. 海报分享功能实现详解
  9. 3a2b递归排列java,写点关于递归的话题(一)
  10. java开发微信如何维护登录状态_5.13微信登录维护态与获取用户信息思想