歐拉角順序與轉(zhuǎn)換-創(chuàng)新互聯(lián)

更多轉(zhuǎn)換見(jiàn):
基于eigen實(shí)現(xiàn)
基于python實(shí)現(xiàn)
這里就記錄下順序:

創(chuàng)新互聯(lián)2013年至今,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元潞城做網(wǎng)站,已為上家服務(wù),為潞城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18980820575運(yùn)算是左乘,下面方式記作Z-Y-X順序,先繞x軸roll,再繞y軸pitch,最后繞z軸yaw,即為RPY c++版本:
// 轉(zhuǎn)歐拉角
Eigen::Quaternionf q_;
q_ = Eigen::AngleAxisf(yaw, Eigen::Vector3f::UnitZ()) * 
     Eigen::AngleAxisf(pitch, Eigen::Vector3f::UnitY()) * 
     Eigen::AngleAxisf(roll, Eigen::Vector3f::UnitX());

// 轉(zhuǎn)四元數(shù)
// euler_angles存儲(chǔ)順序是:yaw(z) pitch(y) roll(x)
Eigen::Matrix3d rotation_matrix
Eigen::Vector3d euler_angles = rotation_matrix.eulerAngles(2, 1, 0);

Eigen的角度范圍有點(diǎn)問(wèn)題,

// 實(shí)驗(yàn)室自己的代碼,返回的是[roll pitch yaw], 也是ZYX順序
void get_euler_from_R(Vector<3>&e, const Matrix<3,3>&R) {float phi = atan2(R(2, 1), R(2, 2)); // roll
   float theta = asin(-R(2, 0));		// pitch
   float psi = atan2(R(1, 0), R(0, 0));	// yaw
   float pi = M_PI;

   if (fabs(theta - pi/2.0f)< 1.0e-3) {   phi = 0.0f;
       psi = atan2(R(1, 2), R(0, 2));
   } else if (fabs(theta + pi/2.0f)< 1.0e-3) {   phi = 0.0f;
       psi = atan2(-R(1, 2), -R(0, 2));
   }
   e(0) = phi;
   e(1) = theta;
   e(2) = psi;
}

推導(dǎo):假設(shè)歐拉角yaw、pitch、roll的角度為alpha, beta, gamma,則對(duì)應(yīng)先roll,后ptich,最后yaw的旋轉(zhuǎn)可以計(jì)算如下:
在這里插入圖片描述

python版本:
import numpy as np
import math
from scipy.spatial.transform import Rotation as R

# `Z-Y-X`順序,先繞x軸roll,再繞y軸pitch,最后繞z軸yaw
# euler_angles存儲(chǔ)順序是:[yaw(z) pitch(y) roll(x)]
# 轉(zhuǎn)歐拉角
Rotation = R.from_quat([x,y,z,w]) # Rotation只是一個(gè)旋轉(zhuǎn),不是矩陣也不是四元數(shù)
euler_angles = Rotation.as_euler('zyx', degrees=False)
# 轉(zhuǎn)四元數(shù)
Rotation = R.from_euler('zxy', [yaw, pitch, roll], degrees=False)
rotation_matrix = Rotation.as_matrix()
quaternion = Rotation.as_quat()

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:歐拉角順序與轉(zhuǎn)換-創(chuàng)新互聯(lián)
路徑分享:http://bm7419.com/article30/hedso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、品牌網(wǎng)站制作用戶(hù)體驗(yàn)、定制網(wǎng)站、建站公司、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管