公式

1. 旋转向量求解旋转矩阵

当刚体在三维空间中运动时,如果已知旋转向量,根据罗德里格斯公式是比较容易求得旋转矩阵的.
罗德里格斯公式如图所示

其中,I 是单位矩阵,n 是旋转向量的单位向量, theta是旋转向量的模长.

2. 旋转矩阵求解旋转向量
如果已知旋转矩阵,求解旋转向量时,theta是比较容易求解的.根据上图,对等式两端取迹便可以得到旋转向量的模长


记旋转向量的单位向量为 r(rx, ry, rz) ,通过下图公式便可求解得出 r 向量的反对成矩阵,即可得出 r 向量

代码

这里用代码简单的求解一下

#include <iostream>
#include <Eigen/Dense>using namespace std;
using namespace Eigen;int main()
{double angle = M_PI / 6.;   //X轴向的转角AngleAxisd angleAxisd(angle, Vector3d(1, 0, 0));{cout << "根据旋转向量求解旋转矩阵..." << endl;double theta = angleAxisd.angle();Vector3d n = angleAxisd.axis();cout<< "theta is " << theta << endl;cout<< "n is " << n << endl;Matrix3d n_hat;n_hat << 0, -n[2], n[1],n[2], 0, -n[0],-n[1], n[0], 0;Matrix3d R_solved = cos(theta) * Matrix3d::Identity() + (1 - cos(theta)) * n * n.transpose() + sin(theta) * n_hat;cout << "R_solved is " << R_solved << endl;}

用OpenCV Documention上的方法求解旋转向量
点击此处搜索Rodrigues

    {cout<< "根据旋转矩阵求解旋转向量..." << endl;Matrix3d R = angleAxisd.toRotationMatrix();double theta = acos((R.trace() - 1) * 0.5); //待求的旋转向量的模长Matrix3d Right = (R - R.transpose()) * 0.5 / sin(theta);Vector3d r;    //待求的旋转向量的单位向量r[0] = (Right(2,1) - Right(1,2))*0.5;r[1] = (Right(0,2) - Right(2,0))*0.5;r[2] = (Right(1,0) - Right(0,1))*0.5;cout<<"angle is "<<theta<<"\nn is "<< r <<endl;}return 0;
}

用求特征值为1对应的特征向量方法求解旋转向量

    {cout<< "根据旋转矩阵求解旋转向量..." << endl;//此处RR和n是相互对应的,用所求的旋转单位向量同n对比验证Matrix3d RR;RR << -0.036255, 0.978364, -0.203692,0.998304,0.026169, -0.051994,-0.045539,-0.205232,-0.977653;Vector3d n(-2.100418,-2.167796,0.273330);double theta = acos((RR.trace() - 1) * 0.5);EigenSolver<Matrix3d> solver(RR);Matrix3cd vectors = solver.eigenvectors();Vector3cd values = solver.eigenvalues();cout<<"vectors is "<<vectors<<"\n values is "<<values<<endl;n.normalize();cout<<"\nn is "<<n<<endl;Vector3d x;for (int i = 0; i < 3; ++i){if(abs(values[i].real()-1.)<1e-5){x(0) = vectors(0,i).real();x(1) = vectors(1,i).real();x(2) = vectors(2,i).real();x.normalize();break;}}cout<<"\n所求的旋转单位向量x is "<<x<<endl;cout<<"验证(R*x = x) is "<<RR.cast<double>()*x<<endl;}

旋转向量与旋转矩阵的相互转化相关推荐

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

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

  2. 罗德里格斯公式推导(轴角与旋转矩阵的关系)以及四元数与旋转向量、旋转矩阵、欧拉角之间的转换关系

    罗德里格斯公式推导(轴角与旋转矩阵的关系) 意义:罗德里格斯公式表示旋转向量到旋转矩阵之间爱你的转换关系 旋转向量:一个向量,方向与旋转轴一致,长度等于旋转角度 空间中任意旋转都可以用一个旋转轴和一个 ...

  3. C++ Eigen 库中旋转向量、旋转矩阵、欧拉角、四元数的定义及互相转换

    今天看师兄写的使用力反馈设备操作机械臂的代码,里边涉及到了Eigen 库中的旋转变换,表征旋转变换的有旋转向量Eigen::AngleAxisd.欧拉角Eigen::Vector3d.旋转矩阵Eige ...

  4. 罗德里格斯(Rodrigues)旋转向量转旋转矩阵

    转载于:https://blog.csdn.net/qq_22235957/article/details/80461290 旋转向量中V的单位向量代表方向,模代表角度,通过罗德里格斯方程可以将旋转向 ...

  5. 详解基于罗德里格斯(Rodrigues)公式由旋转向量到旋转矩阵的 Python 实现

    文章目录 旋转向量 rotation vector 旋转矩阵 rotation matrix 罗德里格斯公式 Rodrigues' formula 基于 Python 和 NumPy 实现 Rodri ...

  6. 机械臂 tcp 坐标 转旋转矩阵 (旋转向量转旋转矩阵)

    C++  Eigen版本 #include <Eigen/Core> #include <Eigen/Eigen> #include <Eigen/Geometry> ...

  7. python 实现罗德里格斯公式Rodrigues 旋转向量到旋转矩阵转化

    罗德里格斯公式Rodrigues: 代码: import numpy as npdef rodrigues_rotation(r, theta):# n旋转轴[3x1]# theta为旋转角度# 旋转 ...

  8. 从旋转向量到旋转矩阵的转化公式

    这个博客是公式详解: https://www.cnblogs.com/xpvincent/archive/2013/02/15/2912836.html Eigen::Matrix3d constru ...

  9. 罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化

    罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格斯公式推导 2 cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化 1 罗德里格 ...

最新文章

  1. hdu 4263(有限制的生成树)
  2. 面试造飞机系列:面对Redis持久化连环Call,你还顶得住吗?
  3. Java JSON、XML文件/字符串与Bean对象互转解析
  4. 简单建立安装和配置symantec内部LiveUpdate服务器的方法
  5. python3.6.4安装教程-centos7中安装python3.6.4的教程
  6. oracle 概要文件不存在,oracle 概要文件 - kecy1217的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  7. cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!
  8. 云南无线数字电视文化传媒股份有限公司签约神策,数据赋能 IPTV
  9. vux 混合式开发
  10. 打不开_笔记本电脑摄像头打不开怎么办
  11. ES6——Promise 对象
  12. php限制上传类型,php 上传类型限制的简单示例
  13. Flex_As操作大全
  14. windows下安装VM虚拟机和Ubuntu系统(附注册密钥)
  15. VMware16下载与安装
  16. AppBarLayoutCoordinatorLayoutBehavior
  17. 微信小程序 之wx.previewImage图片预览(多张图片预览)
  18. 单片机c语言idata什么意思,单片机C语言中的data,idata,xdata,pdata,code
  19. 一些基于SWT的项目
  20. 【力扣每日一题】804. 唯一摩尔斯密码词

热门文章

  1. 让WebRTC支持H264编解码
  2. 后LHC时代对撞机:瞬间输出能量超全球电力千倍
  3. 爬虫——解析图书排行榜图书信息
  4. 求通俗解释下bandit老虎机是个什么东西?
  5. AI对供应链物流有啥影响 听这位业内大牛给你解释
  6. 数据结构3_160805无头单向不循环
  7. MLOps极致细节:18. Azure ML Pipeline(机器学习管道),Azure Container Instances (ACI)部署模型
  8. Cartographe纯雷达计算位姿的前后端总结
  9. 哈哈日语 五十音图中发音最难的四个假名
  10. 电力VR技术来进行安全教育培训有什么好处广州华锐互动