国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Matlab】非對稱3-SPR并聯(lián)機器人正逆運動學

這篇具有很好參考價值的文章主要介紹了【Matlab】非對稱3-SPR并聯(lián)機器人正逆運動學。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

省流說明:本文提供球鉸的非對稱布置情況下其正逆運動學的求解,但需要有額外的輸入?yún)?shù)

3-SPR并聯(lián)機器人的運動學模型

S:球鉸 P:移動副 R:轉(zhuǎn)動副
3-SPR并聯(lián)機器人即包含三條獨立的SPR運動支鏈
輸入:三個移動副(P)的伸長量
輸出:系統(tǒng)末端參考點(一般是動平臺的中心點)

運動學模型如下:
(這里的圖使用了四個移動副,即在并聯(lián)機構上串聯(lián)了一個移動副,使其具有更大的運動范圍)
對于3-SPR并聯(lián)機器人來說,其末端參考點為 O P O_P OP?(動平臺中心點)
對于串聯(lián)移動副后的機構而言,其末端參考點為 O T O_T OT?(動平臺上串聯(lián)的移動副的末端)
matlab繩并聯(lián)機器人建模,傳感器與機器人學,機器人

符號 說明
B 1 B_1 B1?、 B 2 B_2 B2?、 B 3 B_3 B3? 球鉸,三點的連線構成了靜平臺
A 1 A_1 A1?、 A 2 A_2 A2? A 3 A_3 A3? 轉(zhuǎn)動副,三點的連線構成了動平臺
P 1 P_1 P1?、 P 2 P_2 P2? P 3 P_3 P3?、 P 4 P_4 P4? 移動副,并聯(lián)機構的輸入

逆運動學求解

3-SPR并聯(lián)機器人的位置逆解可以描述為:當已知系統(tǒng)末端參考點 O P O_P OP?在世界坐標系{W}下的坐標(即靜平臺所處的坐標系),求3-SPR并聯(lián)機器人移動副 P 1 P_1 P1?、 P 2 P_2 P2? P 3 P_3 P3?的伸長量。

求解公式:
公式的求解過程主要是利用約束條件,并聯(lián)機器人在運動的過程中,其移動副 P P P的方向向量總是與轉(zhuǎn)動副的旋轉(zhuǎn)軸垂直的( P P P的方向向量由球鉸 B B B指向移動副中心點 A A A),建立三個約束方程,聯(lián)立求解即可得到位置逆解(證明過程略,有人需要的話再放出)
由于球鉸是非對稱布置的,所以在求解時要將三個球鉸的位置輸入到公式中( r B r_B rB? 1 _1 1? r B r_B rB? 2 _2 2?、 r B r_B rB? 3 _3 3?
matlab繩并聯(lián)機器人建模,傳感器與機器人學,機器人
方程注:變量說明見Matlab程序的注釋
Matlab程序:

%***************************************************************    
% ** Name:   非對稱布置3-SPR并聯(lián)機構的逆運動學求解                  **
% ** Author: __Lnx                                             **
% ** Date:   2023-03-26                                        **
% ** Input:  r1、r2、r3:球鉸B1、B2、B3距離原點O_W的距離           **
%            X_a、Y_a、Z_a:代表末端參考點O_T要達到的位置           **
%            p4:移動副P4的伸長量,如是 3-SPR并聯(lián)機構則將該值設定為0  **
%****************************************************************
function output = SPR_InverseKinematics(r1, r2, r3, X_a, Y_a, Z_a,p4)
    
    R_A = 78.603; % 動平臺旋轉(zhuǎn)副中心點外接圓半徑(A1、A2、A3距離O_P的距離)
    syms Delt Theta Phi % 已知六個自由度中的三個,將剩下三個自由度設為要求的值
    
	% 旋轉(zhuǎn)矩陣定義
    ux = cosd(Theta)*cosd(Delt);
    uy = cosd(Theta)*sind(Delt);
    uz = -sind(Theta);
    vx = sind(Phi)*sind(Theta)*cosd(Delt)-cosd(Phi)*sind(Delt);
    vy = sind(Phi)*sind(Theta)*sind(Delt)+cosd(Phi)*cosd(Delt);
    vz = sind(Phi)*cosd(Theta);
    wx = cosd(Phi)*sind(Theta)*cosd(Delt)+sind(Phi)*sind(Delt);
    wy = cosd(Phi)*sind(Theta)*sind(Delt)-sind(Phi)*cosd(Delt);
    wz = cosd(Phi)*cosd(Theta);
    R_l(1,1) = ux; R_l(1,2)=vx; R_l(1,3)=wx;
    R_l(2,1) = uy; R_l(2,2)=vy; R_l(2,3)=wy;
    R_l(3,1) = uz; R_l(3,2)=vz; R_l(3,3)=wz;

	% 由O_T的位置求出O_P的位置
    X_o = X_a-R_l(1,:)*[0 0 p4]';
    Y_o = Y_a-R_l(2,:)*[0 0 p4]';
    Z_o = Z_a-R_l(3,:)*[0 0 p4]';

	% 根據(jù)公式求解
    f1 = atand((3*(r2-r1)*(cosd(Theta)-cosd(Phi))+3*sqrt(3)*(r1+r2)*sind(Phi)*sind(Theta))/(4*sqrt(3)*r3*cosd(Theta)+3*(r2-r1)*sind(Phi)*sind(Theta)+sqrt(3)*(r1+r2)*(3*cosd(Phi)+cosd(Theta)))) == Delt;
    f2 = (6*(uz*vy-vz*uy)*Z_o-(3*(ux-vy)+sqrt(3)*(3*vx-uy))*uy*r2+2*(sqrt(3)*uy+3*vy)*uy*r3)/(6*(vx*uy-ux*vy)) == X_o;
    f3 = (6*(uz*vx-vz*ux)*Z_o-(3*(ux-vy)+sqrt(3)*(3*vx-uy))*ux*r2+2*(sqrt(3)*ux+3*vx)*uy*r3)/(6*(ux*vy-vx*uy)) == Y_o;
    
    [DELTA,THETA,PHI] = solve([f1, f2, f3],[Delt Theta Phi]);
    r = eval([DELTA,THETA,PHI]);

    T = r(2);D = r(1);P = r(3);
    rux = cosd(T)*cosd(D);
    ruy = cosd(T)*sind(D);
    ruz = -sind(T);
    rvx = sind(P)*sind(T)*cosd(D)-cosd(P)*sind(D);
    rvy = sind(P)*sind(T)*sind(D)+cosd(P)*cosd(D);
    rvz = sind(P)*cosd(T);
    rwx = cosd(P)*sind(T)*cosd(D)+sind(P)*sind(D);
    rwy = cosd(P)*sind(T)*sind(D)-sind(P)*cosd(D);
    rwz = cosd(P)*cosd(T);

    R(1,1) = rux; R(1,2)=rvx; R(1,3)=rwx;
    R(2,1) = ruy; R(2,2)=rvy; R(2,3)=rwy;
    R(3,1) = ruz; R(3,2)=rvz; R(3,3)=rwz;

    % 根據(jù)輸入,計算球鉸點坐標
    B1 = [r1*cosd(30) r1*sind(30) 0]';
    B2 = [r2*cosd(150)  r2*sind(150)  0]';
    B3 = [r3*cosd(270) r3*sind(270) 0]';
  
  	%根據(jù)求得的旋轉(zhuǎn)矩陣,計算動平臺中心點O_P的坐標
    O_A=[ X_a, Y_a, Z_a]';
    O_A = O_A-R*[0 0 p4]';
    
    % 根據(jù)求得的旋轉(zhuǎn)矩陣及O_P點的坐標,計算各旋轉(zhuǎn)副坐標
    A1 = R * [R_A*cosd(30) R_A*sind(30) 0]'+ O_A;
    A2 = R * [R_A*cosd(150)  R_A*sind(150)  0]'+ O_A;
    A3 = R * [R_A*cosd(270) R_A*sind(270) 0]'+ O_A;
    
    % 計算各桿伸長量
    P1 = norm(A1 - B1);
    P2 = norm(A2 - B2);
    P3 = norm(A3 - B3);
    
    % 輸出結果
    r_output = [P1 P2 P3];
    output = r_output;
end

正運動學求解(待更新補充說明)

正運動學的求解和以往的方法不一樣,利用了點云配準的思想。
主要思路是:

matlab繩并聯(lián)機器人建模,傳感器與機器人學,機器人matlab繩并聯(lián)機器人建模,傳感器與機器人學,機器人
matlab繩并聯(lián)機器人建模,傳感器與機器人學,機器人
matlab繩并聯(lián)機器人建模,傳感器與機器人學,機器人

Matlab正運動學計算函數(shù):SPR_ForwardKinematics

%**********************************************************    
% ** Name:   非對稱布置3-SPR并聯(lián)機構的正運動學求解            **
% ** Author: __Lnx                                       **
% ** Date:   2023-03-26                                  **
%**********************************************************
function [R_output,T_output] = SPR_ForwardKinematics(lidar1, lidar2, lidar3, p4)

%     這是一組示例
%     lidar1 = [304.455 1054.25 21.7591];
%     lidar2 = [302.484	1355.49	21.9924];
%     lidar3 = [297.842	1198	22.56111];
%     lidar1 = [304.455 711.704 29.55];
%     lidar2 = [302.484	1030.71	24.915];
%     lidar3 = [297.842	1030.71	24.915];
% 	  p4 = 500;

    % r 為球鉸副距離世界坐標系原點距離;Spare_Local 為球鉸副在動平臺坐標系中的坐標
    [r,Spare_Local] = SPR_SpareJointCalculate(lidar1,lidar2,lidar3);
    Spare_World = [[r(1)*cosd(30) r(1)*sind(30) 0]' [r(2)*cosd(150)  r(2)*sind(150)  0]' [r(3)*cosd(270) r(3)*sind(270) 0]'];
    hold on;
%     scatter3(Spare_World(1,1),Spare_World(2,1),Spare_World(3,1));
%     scatter3(Spare_World(1,2),Spare_World(2,2),Spare_World(3,2));
%     scatter3(Spare_World(1,3),Spare_World(2,3),Spare_World(3,3));

    % ICP
    R = eye(3);      % 旋轉(zhuǎn)矩陣初始化
    t = zeros(3, 1); % 位移矩陣初始化

    X = Spare_World; % 目標點云
    Y = Spare_Local; % 源點云

    % 計算Y中每個點到X中的最近點
    idx = [1 2 3]';
    err = norm(X(1)-Y(1))+norm(X(2)-Y(2))+norm(X(3)-Y(3));

    % 去中心
    Y_mean = mean(Y, 2);
    X_mean = mean(X(:, idx), 2);
    H = (Y - Y_mean) * (X(:, idx) - X_mean)';

    [U, ~, V] = svd(H);
    R_cur = V * U';
    t_cur = X_mean - R_cur * Y_mean;

    % 更新變換矩陣
    R = R_cur;
    t = R_cur * t + t_cur;


    % 更新點云
    Y = R_cur * Y + t_cur;
    hold on;
    scatter3(Y(1,:),Y(2,:),Y(3,:),'red');
    scatter3(X(1,:),X(2,:),X(3,:),'black');
axis equal;
    R_output = R;
    T_output = t + R*[0,0,p4]';
end

其中包含另一個函數(shù):SPR_SpareJointCalculate(lidar1,lidar2,lidar3)文章來源地址http://www.zghlxwxcb.cn/news/detail-797117.html

%**********************************************************    
% ** Name:   三個球鉸的位置計算                             **
% ** Author: __Lnx                                       **
% ** Date:   2023-03-16                                  **
%**********************************************************


function [output_r,output_B] = SPR_SpareJointCalculate(lidar1,lidar2,lidar3)
    % 輸入
    theta =[lidar1(3) lidar2(3) lidar3(3)];
    P =[lidar1(2) lidar2(2) lidar3(2)];
    % 常量
    alpha = [30 150 270];
    r = 78.603; % 動平臺轉(zhuǎn)動副外切圓半徑
    k = 42.5;

    l = 139.135;
    m = 159.966;%220;         
    P = P + l + m;  % 移動副長度

    alpha = deg2rad(alpha);
    theta = deg2rad(theta);

    % 計算B1\B2\B3在動平臺坐標系中的位置
    B1 = [(r+P(1)*sin(theta(1))-k*cos(theta(1)))*cos(alpha(1))
          (r+P(1)*sin(theta(1))-k*cos(theta(1)))*sin(alpha(1))
           -(P(1)*cos(theta(1))+k*sin(theta(1)))];
    B2 = [(r+P(2)*sin(theta(2))-k*cos(theta(2)))*cos(alpha(2))
          (r+P(2)*sin(theta(2))-k*cos(theta(2)))*sin(alpha(2))
           -(P(2)*cos(theta(2))+k*sin(theta(2)))];
    B3 = [(r+P(3)*sin(theta(3))-k*cos(theta(3)))*cos(alpha(3))
          (r+P(3)*sin(theta(3))-k*cos(theta(3)))*sin(alpha(3))
           -(P(3)*cos(theta(3))+k*sin(theta(3)))];
    hold on;
%     scatter3(B1(1),B1(2),B1(3));
%     scatter3(B2(1),B2(2),B2(3));
%     scatter3(B3(1),B3(2),B3(3));
%     output_B = [B2 B3 B1];% 非對稱
      output_B = [B1 B2 B3];% 對稱

    L(1) = norm(B1-B2);
    L(2) = norm(B1-B3);
    L(3) = norm(B2-B3);

    syms r1 r2 r3;
    f1 = r2^2+r3^2+r2*r3 == L(1)^2;
    f2 = r1^2+r3^2+r1*r3 == L(2)^2;
    f3 = r1^2+r2^2+r1*r2 == L(3)^2;
    [r1,r2,r3] = solve([f1, f2, f3],[r1 r2 r3]);
%     r = eval([r2 r1 r3]);% 非對稱
    r = eval([r1 r2 r3]);% 對稱

    for i=1:1:size(r,1) % 正數(shù)解
        if(r(i,1)>0 && r(i,2)>0 && r(i,3)>0)
            output_r = r(i,:);
            break;
        end
    end
end

到了這里,關于【Matlab】非對稱3-SPR并聯(lián)機器人正逆運動學的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 6自由度并聯(lián)機器人 運動學算法 正解 逆解6個耦合的非線性方程組求解

    6自由度并聯(lián)機器人 運動學算法 正解 逆解6個耦合的非線性方程組求解

    6自由度并聯(lián)機器人 運動學算法 ? 正解 ?逆解 6個耦合的非線性方程組求解 正解快速收斂可用在機器人控制中 已實際使用 6自由度并聯(lián)機器人運動學算法及其在機器人控制中的應用 隨著社會科技的不斷發(fā)展,機器人技術在工業(yè)自動化和服務業(yè)中的應用越來越廣泛。其中,高自

    2024年04月28日
    瀏覽(44)
  • 建模分析 | 差速輪式移動機器人運動學建模(附Python/Matlab仿真)

    ??附C++/Python/Matlab全套代碼??課程設計、畢業(yè)設計、創(chuàng)新競賽必備!詳細介紹全局規(guī)劃(圖搜索、采樣法、智能算法等);局部規(guī)劃(DWA、APF等);曲線優(yōu)化(貝塞爾曲線、B樣條曲線等)。 ??詳情:圖解自動駕駛中的運動規(guī)劃(Motion Planning),附幾十種規(guī)劃算法 差速輪式移動機器人

    2024年02月05日
    瀏覽(26)
  • MATLAB的rvctools工具箱熟悉運動學【機械臂機器人示例】

    MATLAB的rvctools工具箱熟悉運動學【機械臂機器人示例】

    rvctools下載地址:rvctools下載 截圖如下,點擊紅色箭頭指示的 “ Download Shared Folder ” 即可下載 下載之后進行解壓,解壓到 D:MATLABtoolbox 這個工具箱目錄,這個安裝路徑根據(jù)自己的情況來選擇,沒有安裝MATLAB,感興趣的可以查閱:MatLab的下載、安裝與使用(親測有效) 然后我們

    2024年02月05日
    瀏覽(32)
  • MATLAB - 機器人逆運動學設計器(Inverse Kinematics Designer APP)

    MATLAB - 機器人逆運動學設計器(Inverse Kinematics Designer APP)

    ? ? ? 通過逆運動學設計器,您可以為 URDF 機器人模型設計逆運動學求解器。您可以調(diào)整逆運動學求解器并添加約束條件,以實現(xiàn)所需的行為。使用該程序,您可以 從 URDF 文件或 MATLAB 工作區(qū)導入 URDF 機器人模型。 調(diào)整逆運動學求解器和約束條件。 創(chuàng)建關節(jié)配置并導出航點

    2024年04月14日
    瀏覽(24)
  • MATLAB運動學之蒙特卡羅法求積分與機器人工作域分析

    MATLAB運動學之蒙特卡羅法求積分與機器人工作域分析

    蒙特卡羅法又叫做統(tǒng)計模擬法、隨機抽樣技術,是一種隨機模擬方法以概率和統(tǒng)計理論方法為基礎的一種計算方法,通俗來說是可以使用隨機數(shù)來解決很多計算問題的一種方法,很直觀簡單,尤其對于一些求解積分無解的情況,非常好使且簡單粗暴。 以 y = x2 為例,我們需要

    2024年02月04日
    瀏覽(22)
  • 建模分析 | 平面2R機器人(二連桿)運動學與動力學建模(附Matlab仿真)

    ??附C++/Python/Matlab全套代碼??課程設計、畢業(yè)設計、創(chuàng)新競賽必備!詳細介紹全局規(guī)劃(圖搜索、采樣法、智能算法等);局部規(guī)劃(DWA、APF等);曲線優(yōu)化(貝塞爾曲線、B樣條曲線等)。 ??詳情:圖解自動駕駛中的運動規(guī)劃(Motion Planning),附幾十種規(guī)

    2024年02月05日
    瀏覽(133)
  • Matlab/Simulink六自由度機器人運動學與控制系統(tǒng)仿真(一)【附源文件】

    Matlab/Simulink六自由度機器人運動學與控制系統(tǒng)仿真(一)【附源文件】

    本文章為系列文章,以IRB1600機器人為例,建立機器人正運動、逆運動學、控制系統(tǒng)模型,并在simulink中進行仿真,與理論計算結果進行對比驗證 (一) irb1600機器人坐標系建立、正運動學計算與simulink驗證 (二) 機器人逆運動學計算 (三) 機器人運動學控制系統(tǒng)仿真 本文以

    2024年01月16日
    瀏覽(221)
  • 【機器人1】基于POE公式的UR5機械臂正運動學建模求解與matlab仿真

    【機器人1】基于POE公式的UR5機械臂正運動學建模求解與matlab仿真

    下一篇:【機器人2】基于POE公式的UR5機械臂逆運動學建模求解與matlab仿真 螺旋軸表示成:繞某個軸的轉(zhuǎn)動與沿該軸的移動的復合。一種形式是 { q , s ^ , h } {boldsymbol{q}, boldsymbol{hat{s}}, h} { q , s ^ , h } : 其中, q ∈ R 3 boldsymbol{q} in mathbb{R}^{3} q ∈ R 3 為軸上任一點; s ^

    2024年02月06日
    瀏覽(167)
  • MATLAB仿真UR5機器人simulink simscape 自制建模 正向運動學,逆向運動學關節(jié)空間軌跡規(guī)劃 五次多項式軌跡規(guī)劃

    MATLAB仿真UR5機器人simulink simscape 自制建模 正向運動學,逆向運動學關節(jié)空間軌跡規(guī)劃 五次多項式軌跡規(guī)劃

    MATLAB仿真UR5機器人simulink simscape 自制建模 ?正向運動學,逆向運動學 關節(jié)空間軌跡規(guī)劃 五次多項式軌跡規(guī)劃 笛卡爾空間軌跡規(guī)劃 直線插補 ?? 還包含機器人工具箱建立的模型對比 MATLAB仿真UR5機器人simulink simscape 自制建模及運動學規(guī)劃 摘要:本文介紹了利用MATLAB仿真UR5機器

    2024年02月04日
    瀏覽(30)
  • 機器人學:(3)機器人運動學

    機器人學:(3)機器人運動學

    機器人運動學(Kinematics)是從幾何角度描述和研究機器人的位置、速度和加速度隨時間的變化規(guī)律的科學,它不涉及機器人本體的物理性質(zhì)和加在其上的力。這里主要介紹機器人運動學的建模方法及逆運動學的求解方法。 機器人運動學問題主要在機器人的工作空間與關節(jié)空

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包