Matlab機械人工具箱(0) 旋轉與平移變換

2021-10-04 22:20:19 字數 3391 閱讀 7383

平移與旋轉組合

總結參考資料

本文主要介紹如何使用matlab工具箱對旋轉和平移進行操作。這裡使用的rtb工具箱10.2版本,不同版本間**風格可能會有差異,因此請注意工具箱的使用版本

本部分的一些理論說明可參考旋轉矩陣、尤拉角、四元數理論及其轉換關係

close all;clc;clear;

%% 旋轉

%% 以下為旋轉矩陣表示法

% 繞x旋轉90度

rx = rotx(90);

% 繞y旋轉90度

ry = roty(90);

% 繞z旋轉90度

rz = rotz(90);

% 繪製旋轉後的座標系

trplot(rx);

% 繪製世界座標到rx的動畫過程

tranimate(rx);

% 兩個旋轉的疊加, 即先繞世界座標系的x軸轉90度,

% 再沿當前座標系的y軸轉動90度

figure;

rxy = rx*ry;

tranimate(rxy);

這部分比較直觀,**注釋已經寫得非常清楚了。

關於旋轉矩陣,值得說明的一點是,有的人分不清什麼時候左乘,什麼時候右乘,其實很簡單:以當前座標系的軸旋轉,就右乘;以世界座標系的軸旋轉,就左乘

%% zyz尤拉角————奇異點y=0,有多解

r_zyz = eul2r(15,30,60); %這裡輸入是角度制

gamma = tr2eul(r_zyz); %這裡輸出是弧度制

% 等同於下式:

r_zyz = rotz(15)*roty(30)*rotz(60);

% 角度制與弧度制的相互轉化

gamma2=rad2deg(gamma);

gamma3=deg2rad(gamma2);

這裡有乙個值得注意的問題:尤拉角轉旋轉矩陣的輸入是角度制的,而旋轉矩陣轉尤拉角的輸出卻是弧度制,當然這跟工具箱的版本有關,用的時候要先確認一下輸入輸出的單位到底是弧度還是角度!

另外要指出的是,尤拉角的表示不唯一,並且當第二個旋轉角(即y對應的旋轉角度)為0時,尤拉角的表示發生奇異,這一點尤其要注意。

%% rpy角——————attention    奇異點p=+-90,無多解

r_rpy = rpy2r(15,30,60); %這裡輸入是角度制

rpy = tr2rpy(r_rpy); %這裡輸出是弧度制

rpy2=rad2deg(rpy);

% 等同於下式:

r_rpy2 = rotz(60)*roty(30)*rotx(15);

rpy角和zyz尤拉角同樣有相似問題,但是解決了表示的不唯一問題,而且奇異點發生在p=±90°的位置。

另外乙個值得注意的地方是,rpy2r的輸入對應的順序是pitch-yaw-roll,這與kdl等庫中的順序不同。

%% 角軸

[theta , v] = tr2an**ec(rpy2r(15,30,60)); %theta為弧度制

r_an**ec = an**ec2r(theta, v );

%% 四元數

q = dcm2quat( rpy2r(15,30,60) ); %aerospace toolbox

r_quat = quat2dcm(q); %aerospace toolbox

% rtb 四元數類

q = quaternion( q ); %建構函式,把1x4的向量轉成四元數類,方便運算

q.display; %顯示四元數

q.double; %四元數轉化為向量

q.matrix; %四元數轉化為反對稱矩陣

q.inv; %四元數的逆

q.norm; %四元數的模長

q.unit; %四元數單位化

% rtb 單位四元數類

q = unitquaternion( r_quat );

r_uquat = q.r; %單位四元數轉化為旋轉矩陣

t_uquat = q.t; %單位四元數轉化為齊次變換矩陣

eular = q.toeul; %單位四元數轉化為尤拉角

rpy =q.torpy; %單位四元數轉化為rpy

[ang,v] = q.toan**ec; %單位四元數轉化為角軸

vec = q*[1 0 0 ]' ; %用單位四元數直接對向量進行旋轉操作

vec_2 = q* rotx(90); %用單位四元數直接對旋轉矩陣進行旋轉操作

q.plot() %繪製四元數代表的座標

值得注意的是,rtbv10.2版本的quaternion和unitquaternion分離開了,這在示例**中有所體現,和一些參考書中的介紹可能會有所不同。所以說,matlab機械人工具箱版本不一樣,有些東西差距確實很大。

另外,在**開頭也展示了另乙個工具箱(aerospace toolbox)四元數部分的介紹,用起來也很方便。

%% 旋轉與平移

% 純平移

t_transl = transl(1,0,0); %旋轉不變,沿x軸平移1的齊次變換矩陣

% 純旋轉

t_rot = trotx(90); %不移動,繞x軸轉動90度

% 組合

t = transl(1,0,0) * trotx(90); % 先沿x方向移動1,再繞當前的x軸轉動90度

%提取旋轉部分

rot = t2r(t);

%提取平移部分

tans = transl(t);

% 繪圖

figure;

trplot(t);

% 繪製動畫

figure;

tranimate(t);

機械人學、機器視覺與控制——matlab演算法基礎.電子工業出版社.2017-11-20

matlab機械人工具箱學習

選了機械人的課,作業需要用matlab機械人工具箱robotic toolbox。作業要求是搭建乙個機械臂,然後在工作空間某個平面內寫乙個字,涉及到機械人的軌跡規劃,求逆解。步驟 1.搭建四軸scara機械人 dh模型i ad 1 02250 1 201750 23 00d0 4000 3 建立機械...

Matlab機械人工具箱(二)

上一章主要介紹了在二維和三維空間中如何描述位姿。這一章則將上章拓展到物件,其位姿是時間的函式。分兩個部分,第乙個部分主要討論如何產生一系列短暫的位姿序列,一條足夠光滑的從起始位姿到終止位姿的軌跡 第二部分主要討論位姿改變速率的概念,即其導數,以及如何將從機械學角度比如速度和角速度等方面將這些概念 聯...

MATLAB機械人工具箱 1

工具箱版本不同下面的函式呼叫格式會有微弱不同但是大體一樣。以機械臂運動規劃分析為例子 1.link 呼叫格式 l link theta d a alpha sigma offset convention 其中theta為關節角,d為連桿偏移量,a為連桿長度,alpha為連桿轉角,sigma代表關節型...