Eigen旋转矩阵和欧拉角相互转换

Eigen旋转矩阵和欧拉角相互转换

#include<iostream>
using namespace std;
#include<Eigen/Eigen>
#include<math.h>


Eigen::Matrix3d RPY2Rotation(float roll , float pitch , float yaw)		//roll , pitch , yaw
{
	///send EulerAngles and transform into RotationMatrix 

	Eigen::Matrix3d R, Rx, Ry, Rz;

	Rx << 1.0, 0.0, 0.0,
		0.0, cos(roll), -sin(roll),
		0.0, sin(roll), cos(roll);

	Ry << cos(pitch), 0.0, sin(pitch),
		0.0, 1.0, 0.0,
		-sin(pitch), 0.0, cos(pitch);

	Rz << cos(yaw), -sin(yaw), 0.0,
		sin(yaw), cos(yaw), 0.0,
		0.0, 0.0, 1.0;

	R = Rz * Ry * Rx;

	return R;

}

Eigen::Vector3d Rotation2RPY(Eigen::Matrix3d &aux_rotation)
{
	Eigen::Vector3d eulerAngle = aux_rotation.eulerAngles(2, 1, 0);		//row , pitch , yaw
	return eulerAngle;
}

int main()
{

	std::cout << "send virtual row , pitch ,yaw = 1,2,3 " << std::endl;

	Eigen::Matrix3d aux_R = RPY2Rotation(1, 2, 3);

	Eigen::Vector3d aux_eulerAngle = Rotation2RPY(aux_R);

	std::cout << "row : " << aux_eulerAngle.z() << std::endl;

	std::cout << "pitch : " << aux_eulerAngle.y() << std::endl;

	std::cout << "yaw : " << aux_eulerAngle.x() << std::endl;

}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值