Matlabロボットツールボックス(0)——回転と平行移動変換

3358 ワード

Matlabロボットツールボックス(0)——回転と平行移動変換
  • 前言
  • 回転変換
  • 回転行列と可視化
  • オーラ角
  • RPY角
  • 角軸
  • 単位四元数
  • 平行移動と回転の組み合わせ
  • まとめ
  • 参考資料
  • 前言
    ここでは、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);
    

    ここで注意すべき問題があります.オーラ角回転マトリクスの入力は角度制ですが、回転マトリクスのオーラ角の出力は弧制です.もちろん、これはツールボックスのバージョンと関係があります.使うときは、入力出力の単位が弧なのか角度なのかを確認してください.また、Euler角の表現が一意ではなく、第2の回転角(すなわちy対応の回転角度)が0の場合、Euler角の表現が奇異になる点に特に注意しなければならない.
    RPY角
    %% 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 Euler角と同様に類似の問題があったが,表現された唯一でない問題を解決し,特異点はp=±90°の位置で発生した.もう1つの注目すべき点は、rpy 2 rの入力に対応する順序がpitch-yaw-rollであり、これはKDLなどのライブラリでの順序とは異なる.
    かくじく
    %%   
    [theta , v] = tr2angvec(rpy2r(15,30,60)); %theta    
    R_angvec = angvec2r(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.toangvec;    %          
    vec = q*[1 0 0 ]' ;          %                 
    vec_2 = q* rotx(90);      %                   
    q.plot()                        %          
    

    注目すべきは、RTBv 10.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ロボットツールボックスの回転と平関数について紹介し、いくつかの関数の拡張紹介は高周波で使用する内容だけを含み、列挙されていない方法を使う必要がある場合は、matlabのhelpドキュメントを探せばいい.次のブログでは、ロボットモデリングとキネマティックに関するツールボックスの操作について説明します.Matlabロボットツールボックス(1)--ロボットの構築、描画、正逆キネマティック
    参考資料
    ロボット学、機械視覚と制御——MATLABアルゴリズム基礎.電子工業出版社.2017-11-20