四元數和尤拉角的個人理解

2021-09-26 05:59:45 字數 2549 閱讀 7331

歐垃角可以表示兩個座標之間的轉換,但是存在一些弊端,比如永珍鎖,四元數也可以表述

問題分析:

比如,乙個座標系繞y軸旋轉pi/2,那麼我們就可以用尤拉角roll,pitch,yaw和四元數x,y,z,w進行表述,

w = cos(theta/2)

x = ax * sin(theta/2)

y = ay * sin(theta/2)

z = az * sin(theta/2)

其中w,x,y,z是四元數的值,通過四元數的值可以計算上述式子ax,ay,az,theta四個引數值,(ax,ay,az)表示旋轉軸,theta表示旋轉角,這一點我們可以想象出怎麼旋轉的以及旋轉多少度

#include #include #include #include void oritention_to_eluer(geometry_msgs::posestamped &pose_stamped)

{ //geometry_msgs::posestamped pose_stamped = move_group.getcurrentpose();

double x = pose_stamped.pose.orientation.x;

double y = pose_stamped.pose.orientation.y;

double z = pose_stamped.pose.orientation.z;

double w = pose_stamped.pose.orientation.w;

tf::quaternion q; //或者使用(w,x,y,z);

tf::quaternionmsgtotf(pose_stamped.pose.orientation, q);

double roll, pitch, yaw;

tf::matrix3x3(q).getrpy(roll, pitch, yaw);

std::cout<

^cwang@wang:~/open_cv_ws$ rosrun robot_setup_tf tf_tutorials_yd

x=0 y=0.706825 z=0 w=0.707388

roll=0 pitch=1.57 yaw=0

x=0,y=0.706825,z=0,w=0.707388

反解得到(ax,ay,az)=(0,1,0)旋轉軸,theta=90°,這就是四元數表達的影藏含義在這裡插入描述

參考文獻

別人**,找不到鏈結**了,抱歉

clc;

clear;

pi=3.141592653;

degree_to_hudu=pi/180;%hudu/meidu

yaw=0.7854 ;%繞z軸轉yaw弧度

pitch=0.1;%繞y軸轉pitch弧度

roll=0;%繞x軸轉roll弧度

syms w;syms x;syms y;syms z;

[w,x,y,z]=eular_to_quaternion(yaw,pitch,roll)%"zyx"尤拉角轉四元素

[roll,pitch,yaw]=quaternion_to_eular(w,x,y,z)%"zyx"四元素轉尤拉角

%------------函式1----------------------------------------

function [ w,x,y,z ] = eular_to_quaternion(yaw,pitch,roll)

%eular to quaternion

ps=yaw;

st=pitch;

fi=roll;

c_fi=cos(0.5*fi);

c_st=cos(0.5*st);

c_ps=cos(0.5*ps);

s_fi=sin(0.5*fi);

s_st=sin(0.5*st);

s_ps=sin(0.5*ps);

w=c_fi*c_st*c_ps+s_fi*s_st*s_ps;

x=s_fi*c_st*c_ps-c_fi*s_st*s_ps;

y=c_fi*s_st*c_ps+s_fi*c_st*s_ps;

z=c_fi*c_st*s_ps-s_fi*s_st*c_ps;

end%------------函式2----------------------------------------

function [ roll,pitch,yaw] = quaternion_to_eular(w,x,y,z)

m1=(2*(w*x+y*z))/(1-2*(x^2+y^2));

m2=2*(w*y-z*x);

m3=(2*(w*z+x*y))/(1-2*(y^2+z^2));

roll=atan(m1);

pitch=atan(m2);

yaw=atan(m3);

end

四元數 尤拉角學習筆記 個人理解

i j k三軸定義如上圖所示。滿足右手螺旋定則 複數的乘法 ai bj ck xi yj zk ax i i ay i j az i k bx j i by j j bz j k cx k i cy k j cz k k aa bb c c bz cy i cx az j ay bx z 向量內積 ...

四元數和尤拉角

1.尤拉角 我們這裡談論尤拉角只討論在笛卡爾座標系下,不考慮飛機座標系 我不確定正規是不是叫這個名字 那種。也就是右手定則確定的笛卡爾座標系。可以把x和y放在水平面,z軸朝上,這樣想象一下。然後,很顯然存在三種旋轉方式,也就是分別繞x,繞y和繞z旋轉。我們分別把三種旋轉稱為roll 繞x軸旋轉 pi...

四元數和尤拉角學習

在3d圖形學中,最常用的旋轉表示方法便是四元數和尤拉角,比起矩陣來具有節省儲存空間和方便插值的優點。本文主要歸納了兩種表達方式的轉換,計算公式採用3d笛卡爾座標系 圖1 3d cartesian coordinate system from wikipedia 定義圖2 tait bryan ang...