建立屬于自己的原創信息品牌站 了解企業站
返回首頁 hi, 歡迎來到機器人在線 請登錄/ 免費注冊 訂閱郵件
  • 【ABB】帶連桿的ABB機器人正運動學計算

    發布時間:2020年06月29日

    1. IRB1410 機器人為典型的帶連桿的ABB機器人,J3電機如圖所示。J3電機置于底部,可以減輕上部的機構重量

    2. 運動時,J3電機帶動J3連桿。3軸,J3連桿,上臂和后端連桿構成如圖的平行四邊形結構。

    3. 所以,若2軸電機轉動,但3軸電機不轉動,此時3軸和大臂的夾角會變化(沒有連桿的機器人,2軸電機轉動,3軸電機不轉動,3軸和大臂夾角不會變化)

    以上兩幅圖片,3軸均為0度,但由于2軸轉動,3軸與大臂夾角不一樣

    4. 對于不帶連桿的機器人正運動學,可以通過dh參數轉化為各個軸的位姿矩陣,將6個位姿矩陣右乘即可得到當前機器人末端的笛卡爾坐標,具體參見? 機器人如何從各軸角度算出當前XYZ

    5. 但對于帶連桿機器人,2軸的變化會導致3軸與大臂夾角發生變化。由于平行四邊形結構的緣故,實質3軸與大臂夾角變化剛好等于2軸變化角度的負數。

    6. 故在位姿矩陣右乘時,只需在右乘到軸3 矩陣后,再右乘一個旋轉矩陣,將夾角補償回來即可。

    7. 1410機器人DH參數如下

    8. 針對1410類似帶連桿機器人,機器人正運動學RAPID實現方法如下

    ?LOCALVAR num alpha{6}:=[0,-90,0,-90,90,90];

    ? ?LOCALVAR num a{6}:=[0,150,600,120,0,0];

    ? ?LOCALVAR num theta{6}:=[0,-90,0,0,-180,0];

    LOCALVAR num d{6}:=[475,0,0,720,0,85];

    !1410 機器人DH參數


    VAR num no_dependent;

    !3軸與大臂夾角

    ? ?PROC test_dh_pose()

    ? ? ? ?VAR num curr_angle{6}:=[0,0,0,0,0,0];

    ? ? ? ?VAR pose pose10{6};

    ? ? ? ?VAR pose pose_cal:=[[0,0,0],[1,0,0,0]];

    ? ? ? ?VAR jointtarget jtmp;

    ? ? ? ?jtmp:=CJointT();

    ? ? ? ?curr_angle{1}:=jtmp.robax.rax_1;

    ? ? ? ?curr_angle{2}:=jtmp.robax.rax_2;

    ? ? ? ?curr_angle{3}:=jtmp.robax.rax_3;

    ? ? ? ?curr_angle{4}:=jtmp.robax.rax_4;

    ? ? ? ?curr_angle{5}:=jtmp.robax.rax_5;

    ? ? ? ?curr_angle{6}:=jtmp.robax.rax_6;

    ? ? ? ?FOR i FROM 1 TO 6 DO

    ? ? ? ? ? ?IF i=3 THEN

    ? ? ? ? ? ? ? ?no_dependent:=-curr_angle{2};

    ? ? ? ? ? ? ?!夾角等于2軸運動的負數

    ? ? ? ? ? ?endif

    ? ? ? ? ? ?pose10{i}:=f_dh2pose(i,alpha{i},a{i},theta{i}+curr_angle{i},d{i});

    ? ? ? ?ENDFOR

    ? ? ? ?FOR i FROM 1 TO 6 DO

    ? ? ? ? ? ?pose_cal:=PoseMult(pose_cal,pose10{i});

    ? ? ? ?ENDFOR

    ENDPROC


    ? ?FUNC pose f_dh2pose(num i,num alpha,num a,num theta,num d)

    ? ? ? ?VAR pose pose1:=[[0,0,0],[1,0,0,0]];

    ? ? ? ?pose1:=PoseMult(pose1,[[0,0,0],orientzyx(0,0,alpha)]);

    ? ? ? ?pose1:=PoseMult(pose1,[[a,0,0],orientzyx(0,0,0)]);

    ? ? ? ?pose1:=PoseMult(pose1,[[0,0,0],orientzyx(theta,0,0)]);

    ? ? ? ?pose1:=PoseMult(pose1,[[0,0,d],orientzyx(0,0,0)]);

    ? ? ? IF i=3 THEN

    ? ? ? ? ? ?pose1:=PoseMult(pose1,[[0,0,0],orientzyx(no_dependent,0,0)]);

    ? ? ? ?endif

    ? ? ? ?!針對軸3坐標系,需要再多乘一次旋轉,將夾角補償回來

    ? ? ? ?RETURN pose1;

    ? ?ENDFUNC

  • 獲取驗證碼
    甘肃省11选五走势图下载