久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

機器人如何從各軸角度算出當前XYZ

 反恐精英禿鷲 2020-03-06

轉載請先后臺留言,,大家一起支持原創(chuàng),推動機器人使用和發(fā)展

本公眾號對各類ABB機器人應用,,仿真,,畢業(yè)設計提供技術支持,詳細后臺留言

本公眾號誠摯希望與各機器人培訓機構,,機器人使用單元合作,,提供技術支持,詳細后臺留言

1.      機器人只是知道各個軸的角度,,機器人是如何知道當前法蘭盤的XYZ笛卡爾系坐標呢,?

2.      問題一其實就是機器人運動學正解問題,即通過a1-a6角度值,,計算對應的末端工具(此處舉例法蘭盤)坐標值(XYZ ABC)

3.      對于空間一個位姿(位置XYZ,,姿態(tài)ABC)可以通過位姿矩陣表示,,具體參考昨天發(fā)送文章,。

4.      之前介紹過,機器人運動學模型可以通過多種方法構建,,比如最常見的DH參數建模法,,見 機器人DH模型

5.      之前介紹過如何獲取ABB機器人DH 參數,見如何獲取ABB機器人DH參數

6.      此處舉例IRB120機器人,。

7.      通常機器人建模如上圖,,建立Base坐標系(X0Y0Z0),之后依次對應1軸到6軸6個坐標系(x1y1z1….x6y6z6),,通過DH參數來表示這6個動坐標系相對于前一個坐標系的關系(T1-T6),。

8.      對于DH參數,旋轉和平移順序如下:即先繞當前x軸旋轉α度,,再沿新的x軸平移a,,再繞新的Z軸旋轉θ度,再沿新的Z軸平移d

9.      故按照上式定義計算后整理,,可以得到基于DH參數的位姿矩陣如下:

10.  注意到IRB120參數中(如下圖),,首先出現一個KinematicBaseFrames,值不為0,,且坐標系繞大地坐標系的Z軸旋轉180度,,而KinematicBaseFrames和1軸之間數據為0,故此處我們直接用KinematicBaseFrames的值表示坐標系0到坐標系1的變換T01

11.  對后續(xù)各軸DH參數整理如下,,其中的θ為Base中的θ值


αi   (twist)

ai(mm)  length

Θi  Rotation

di(mm) offset

1

0

0

π

290

2

π/2

0

π/2

0

3

0

270

0

0

4

-π/2

70

0

302

5

π/2

0

0

6

π/2

0

0

72

根據上表,,可以獲取如下坐標系旋轉關系,下圖中也標明各Link之間的DH參數關系

上表使用方法:先繞當前x軸旋轉α度,,再沿新的x軸平移a,,再繞新的Z軸旋轉θ度,,再沿新的Z軸平移d


12.  利用上述關系,進行機器人運動正解計算,,代碼先獲取當前機器人各關節(jié)位置,,并計算,計算后結果與機器人自身顯示相同,,證明計算過程正確,。

代碼如下:

VAR num alpha{6}:=[0,90,0,-90,90,90]; VAR num a{6}:=[0,0,270,70,0,0]; VAR num theta{6}:=[0,90,0,0,-180,0]; VAR num d{6}:=[290,0,0,302,0,72];    !120機器人DH參數 PROC set_matrix(num i,inout num p_mat{*,*}) p_mat:=[[ (cos(theta{i})),- (sin(theta{i})),0, (a{i})], [ (sin(theta{i})*cos(alpha{i})), (cos(theta{i})*cos(alpha{i})),- (sin(alpha{i})),- (sin(alpha{i})*d{i})],                [ (sin(theta{i})*sin(alpha{i})), (cos(theta{i})*sin(alpha{i})), (cos(alpha{i})), (cos(alpha{i})*d{i})], [0,0,0,1]];               !將DH參數轉化為位姿矩陣 ENDPROC    PROC cal_forward2() VAR pose pose1{6};        VAR pose pose2:=[[0,0,0],[1,0,0,0]];        VAR jointtarget jtmp:=[[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];        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; !獲取當前各軸角度         theta:=[180,90,0,0,-180,0]; !dh parameter theta initial value FOR i FROM 1 TO 6 DO theta{i}:=theta{i}+curr_angle{i}; ENDFOR set_matrix 1,no_mat_1; set_matrix 2,no_mat_2; set_matrix 3,no_mat_3; set_matrix 4,no_mat_4; set_matrix 5,no_mat_5; set_matrix 6,no_mat_6; !設定位姿矩陣,將當前角度θ傳入         pose1{1}:=MatrixToPose(no_mat_1); pose1{2}:=MatrixToPose(no_mat_2); pose1{3}:=MatrixToPose(no_mat_3); pose1{4}:=MatrixToPose(no_mat_4); pose1{5}:=MatrixToPose(no_mat_5); pose1{6}:=MatrixToPose(no_mat_6);        !將位姿矩陣專為Pose數據類型,,也可直接對矩陣進行右乘運算 FOR i FROM 1 TO 6 DO pose2:=PoseMult(pose2,pose1{i});        ENDFOR        TPWrite ValToStr(pose2);       ENDPROC

********************************

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多