歐垃角可以表示兩個座標之間的轉換,但是存在一些弊端,比如永珍鎖,四元數也可以表述
問題分析:
比如,乙個座標系繞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...