首先带有头文件
#include <Eigen/Core>
void Solve_robot::eulerAnglesToRotationMatrix(std::vector<double> &pos, Eigen::Matrix3d &matrix_RXYZ) {
Eigen::Matrix3d R_x; // 计算旋转矩阵的X分量
std::vector<double> Euler_angle;
//转为变换矩阵
for (int i = 3; i < 6; ++i)
{
Euler_angle.emplace_back(pos[i] *M_PI / 180);
}
R_x <<
1, 0, 0,
0, cos(Euler_angle[2]), -sin(Euler_angle[2]),
0, sin(Euler_angle[2]), cos(Euler_angle[2]);
Eigen::Matrix3d R_y; // 计算旋转矩阵的Y分量
R_y <<
cos(Euler_angle[1]), 0, sin(Euler_angle[1]),
0, 1, 0,
-sin(Euler_angle[1]), 0, cos(Euler_angle[1]);
Eigen::Matrix3d R_z; // 计算旋转矩阵的Z分量
R_z <<
cos(Euler_angle[0]), -sin(Euler_angle[0]), 0,
sin(Euler_angle[0]), cos(Euler_angle[0]), 0,
0, 0, 1;
//返回旋转矩阵
matrix_RXYZ = R_z * R_y * R_x;
//输出整个矩阵
std::cout<< matrix_RXYZ<<std::endl;
//输出单个元素,下标从0,0开始的
std::cout<< matrix_RXYZ(0,0)<<std::endl;
}
以上代码为欧拉较转旋转矩阵3*3
//同理 对其赋值也是按照
matrix_RXYZ(0,0)=1;此时 就对 matrix_RXYZ(0,0)中第一行第一个元素赋值为1;
std::cout<< matrix_RXYZ(0,0)<<std::endl; 输出某个元素
记录完毕~~~~~~~~~~~