0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于MATLAB的關(guān)節(jié)型六軸機(jī)械臂軌跡規(guī)劃仿真

新機(jī)器視覺 ? 來源:CSDN-mustvvvics ? 2023-02-08 09:12 ? 次閱讀

1.實(shí)驗(yàn)?zāi)康?/strong>

基于機(jī)器人學(xué)理論知識(shí),利用標(biāo)準(zhǔn)D-H參數(shù)法建立關(guān)節(jié)型機(jī)器人的數(shù)學(xué)模型,使用Matlab的Robotics Toolbox工具包搭建模型。

tip:實(shí)驗(yàn)工具:Matlab R2021a (有很多玄學(xué)問題是因?yàn)檐浖姹荆?br /> 以及注意先安裝Robotics Toolbox工具包!!

2.實(shí)驗(yàn)內(nèi)容

2.1標(biāo)準(zhǔn)D-H參數(shù)法

標(biāo)準(zhǔn)D-H參數(shù)法常用于建立關(guān)節(jié)型機(jī)器人的數(shù)學(xué)模型,D-H參數(shù)法是一種對(duì)連桿的坐標(biāo)描述,而關(guān)節(jié)機(jī)器人本質(zhì)上就是一系列連桿通過關(guān)節(jié)連接起來而組成的空間開式運(yùn)動(dòng)鏈。

對(duì)于連桿本身,其功能在于保持其兩端的關(guān)節(jié)軸線具有固定的幾何關(guān)系,連桿的特性由軸線決定,通常用四個(gè)連桿參數(shù)來描述,連桿長(zhǎng)度,連桿扭轉(zhuǎn)角,連桿偏移量和關(guān)節(jié)角。

本實(shí)驗(yàn)給定的參數(shù)表:

24de8910-a736-11ed-bfe3-dac502259ad0.png

2.2實(shí)驗(yàn)中使用的Matlab函數(shù)

Link函數(shù)


用于定義六軸機(jī)器人的一個(gè)軸。


包含了機(jī)器人的運(yùn)動(dòng)學(xué)參數(shù)、動(dòng)力學(xué)參數(shù)、剛體慣性矩參數(shù)、電機(jī)和傳動(dòng)參數(shù);


可采用DH法建立模型,其中包含參數(shù):關(guān)節(jié)轉(zhuǎn)角,關(guān)節(jié)距離,連桿長(zhǎng)度,連桿轉(zhuǎn)角,關(guān)節(jié)類型(0轉(zhuǎn)動(dòng),1移動(dòng))。

% 定義六軸機(jī)器人的一個(gè)軸
L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')

SerialLink函數(shù)


用于構(gòu)建機(jī)械臂。


它的類函數(shù)比較多,包括顯示機(jī)器人、動(dòng)力學(xué)、逆動(dòng)力學(xué)、雅可比等;

% 'six'為機(jī)械臂名稱
robot = SerialLink(L,'name','six');

fkine正解函數(shù)


用于求解出末端位姿p。

theta = [0.1,0,0,0,0,0];  %指定的關(guān)節(jié)角
p=robot.fkine(theta)    %fkine正解函數(shù),根據(jù)關(guān)節(jié)角theta,求解出末端位姿p

ikine逆解函數(shù)


用于求解出關(guān)節(jié)角q。

q=ikine(robot,p)      %ikine逆解函數(shù),根據(jù)末端位姿p,求解出關(guān)節(jié)角q

軌跡規(guī)劃


(1)jtraj


已知初始和終止的關(guān)節(jié)角度,利用五次多項(xiàng)式來規(guī)劃軌跡;

T1=transl(0.5,0,0);   %根據(jù)給定起始點(diǎn),得到起始點(diǎn)位姿
T2=transl(0,0.5,0);   %根據(jù)給定終止點(diǎn),得到終止點(diǎn)位姿
init_ang=robot2.ikine(T1);%根據(jù)起始點(diǎn)位姿,得到起始點(diǎn)關(guān)節(jié)角
targ_ang=robot2.ikine(T2);%根據(jù)終止點(diǎn)位姿,得到終止點(diǎn)關(guān)節(jié)角
step = 20;
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多項(xiàng)式軌跡,得到關(guān)節(jié)角度,角速度,角加速度,50為采樣點(diǎn)個(gè)數(shù)

(2)ctraj


已知初始和終止的末端關(guān)節(jié)位姿,利用勻加速、勻減速運(yùn)動(dòng)來規(guī)劃軌跡。

T0 = robot2.fkine(init_ang);%運(yùn)動(dòng)學(xué)正解
T1 = robot2.fkine(targ_ang);%運(yùn)動(dòng)學(xué)正解
Tc = ctraj(T0,T1,step);   %得到每一步的T陣
tt = transl(Tc);

3.實(shí)驗(yàn)結(jié)果

24f0143c-a736-11ed-bfe3-dac502259ad0.jpg

2501a9fe-a736-11ed-bfe3-dac502259ad0.jpg

25202aaa-a736-11ed-bfe3-dac502259ad0.jpg

25334536-a736-11ed-bfe3-dac502259ad0.jpg2549dc56-a736-11ed-bfe3-dac502259ad0.jpg

4.全部代碼

%% MATLAB素質(zhì)三連
clear;
close all;
clc;
%% 實(shí)驗(yàn)一 基于MATLAB的關(guān)節(jié)型六軸機(jī)械臂仿真


%% 參數(shù)定義
%機(jī)械臂為六自由度機(jī)械臂
clear L;
 
%角度轉(zhuǎn)換
angle=pi/180; %度
 
%D-H參數(shù)表
theta1 = 0;  D1 = 0.4;  A1 = 0.025; alpha1 = pi/2; offset1 = 0;
theta2 = pi/2;D2 = 0;   A2 = 0.56; alpha2 = 0;  offset2 = 0;
theta3 = 0;  D3 = 0;   A3 = 0.035; alpha3 = pi/2; offset3 = 0;
theta4 = 0;  D4 = 0.515; A4 = 0;   alpha4 = pi/2; offset4 = 0;
theta5 = pi; D5 = 0;   A5 = 0;   alpha5 = pi/2; offset5 = 0;
theta6 = 0;  D6 = 0.08; A6 = 0;   alpha6 = 0;  offset6 = 0;


%% DH法建立模型,關(guān)節(jié)轉(zhuǎn)角,關(guān)節(jié)距離,連桿長(zhǎng)度,連桿轉(zhuǎn)角,關(guān)節(jié)類型(0轉(zhuǎn)動(dòng),1移動(dòng))


L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')
L(2) = Link([theta2, D2, A2, alpha2, offset2], 'standard')
L(3) = Link([theta3, D3, A3, alpha3, offset3], 'standard')
L(4) = Link([theta4, D4, A4, alpha4, offset4], 'standard')
L(5) = Link([theta5, D5, A5, alpha5, offset5], 'standard')
L(6) = Link([theta6, D6, A6, alpha6, offset6], 'standard')


% 定義關(guān)節(jié)范圍
L(1).qlim =[-180*angle, 180*angle];
L(2).qlim =[-180*angle, 180*angle];
L(3).qlim =[-180*angle, 180*angle];
L(4).qlim =[-180*angle, 180*angle];
L(5).qlim =[-180*angle, 180*angle];
L(6).qlim =[-180*angle, 180*angle];


%% 顯示機(jī)械臂
robot0 = SerialLink(L,'name','six');
f = 1          %畫在第1張圖上
theta = [0 pi/2 0 0 pi 0];    %初始關(guān)節(jié)角度
figure(f)
robot0.plot(theta);
title('六軸機(jī)械臂模型');
%% 加入teach指令,則可調(diào)整各個(gè)關(guān)節(jié)角度
robot1 = SerialLink(L,'name','sixsix');
f = 2
figure(f)
robot1.plot(theta);
robot1.teach
title('六軸機(jī)械臂模型可調(diào)節(jié)');
%% 實(shí)驗(yàn)二 基于MATLAB的六軸機(jī)械臂軌跡規(guī)劃仿真


%% 2.2求解運(yùn)動(dòng)學(xué)正解
robot2 = SerialLink(L,'name','sixsixsix');
theta2 = [0.1,0,0,0,0,0];     %實(shí)驗(yàn)二指定的關(guān)節(jié)角
p=robot2.fkine(theta2)       %fkine正解函數(shù),根據(jù)關(guān)節(jié)角theta,求解出末端位姿p
q=ikine(robot2,p)         %ikine逆解函數(shù),根據(jù)末端位姿p,求解出關(guān)節(jié)角q


%% 2.3 jtraj 已知初始和終止的關(guān)節(jié)角度,利用五次多項(xiàng)式來規(guī)劃軌跡
% T1=transl(0.5,0,0);     %根據(jù)給定起始點(diǎn),得到起始點(diǎn)位姿
% T2=transl(0,0.5,0);     %根據(jù)給定終止點(diǎn),得到終止點(diǎn)位姿
T1=transl(0.5,0,0);      %根據(jù)給定起始點(diǎn),得到起始點(diǎn)位姿
T2=transl(0,0.5,0);      %根據(jù)給定終止點(diǎn),得到終止點(diǎn)位姿
init_ang=robot2.ikine(T1);    %根據(jù)起始點(diǎn)位姿,得到起始點(diǎn)關(guān)節(jié)角
targ_ang=robot2.ikine(T2);    %根據(jù)終止點(diǎn)位姿,得到終止點(diǎn)關(guān)節(jié)角
step = 20;
f = 3


%軌跡規(guī)劃方法
figure(f)
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多項(xiàng)式軌跡,得到關(guān)節(jié)角度,角速度,角加速度,50為采樣點(diǎn)個(gè)數(shù)
grid on
T=robot2.fkine(q);      %根據(jù)插值,得到末端執(zhí)行器位姿
nT=T.T;
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%輸出末端軌跡
title('輸出末端軌跡');
robot2.plot(q);       %動(dòng)畫演示 


%% 求解位置、速度、加速度變化曲線
f = 4
figure(f)
subplot(3,2,[1,3]);      %subplot 對(duì)畫面分區(qū) 三行兩列 占用1到3的位置
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%輸出末端軌跡
robot2.plot(q);       %動(dòng)畫演示


figure(f)
subplot(3, 2, 2);
i = 1:6;
plot(q(:,1));
title('位置');
grid on;


figure(f)
subplot(3, 2, 4);
i = 1:6;
plot(qd(:,1));
title('速度');
grid on;


figure(f)
subplot(3, 2, 6);
i = 1:6;
plot(qdd(:,1));
title('加速度');
grid on;


t = robot2.fkine(q);     %運(yùn)動(dòng)學(xué)正解
rpy=tr2rpy(t);        %t中提取位置(xyz)
figure(f)
subplot(3,2,5);
plot2(rpy);


%% ctraj規(guī)劃軌跡 考慮末端執(zhí)行器在兩個(gè)笛卡爾位姿之間移動(dòng) 
f = 5
T0 = robot2.fkine(init_ang);   %運(yùn)動(dòng)學(xué)正解
T1 = robot2.fkine(targ_ang);   %運(yùn)動(dòng)學(xué)正解


Tc = ctraj(T0,T1,step);     %得到每一步的T陣


tt = transl(Tc);
figure(f)
plot2(tt,'r');
title('直線軌跡');





審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    185

    文章

    2979

    瀏覽量

    230723
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28557

    瀏覽量

    207692
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4111

    瀏覽量

    133786
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4341

    瀏覽量

    62806
  • 機(jī)械臂
    +關(guān)注

    關(guān)注

    12

    文章

    517

    瀏覽量

    24646

原文標(biāo)題:基于MATLAB的關(guān)節(jié)型六軸機(jī)械臂軌跡規(guī)劃仿真

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于LabVIEW和SolidWorks改進(jìn)機(jī)械的設(shè)計(jì)流程

    `在求解機(jī)器人手臂的逆運(yùn)動(dòng)學(xué)方程后,無需裝配物理測(cè)試平臺(tái),利用開發(fā)測(cè)試方程和NI LabVIEW VI的平臺(tái),即可仿真測(cè)試運(yùn)動(dòng)性能并優(yōu)化設(shè)計(jì)方法。  解決方案:  使用LabVIEW NI
    發(fā)表于 02-12 15:56

    labview 上位機(jī) 機(jī)械

    大家好,我是一個(gè)labview的新人,最近我要做一個(gè)畢業(yè)設(shè)計(jì),需要用USB攝像頭采集數(shù)據(jù),在用labview做一個(gè)上位機(jī)控制機(jī)械手,請(qǐng)問我要怎么實(shí)現(xiàn)?
    發(fā)表于 04-15 14:10

    請(qǐng)問水平兩機(jī)械如何控制軌跡

    請(qǐng)問水平關(guān)節(jié)機(jī)器人,步進(jìn)電機(jī)驅(qū)動(dòng)的,一般都是用什么軟硬件來控制呢,點(diǎn)到點(diǎn)現(xiàn)在可以實(shí)現(xiàn),如果要求兩聯(lián)動(dòng)末端走直線要怎么辦呢?本人新手,非常感謝。
    發(fā)表于 11-30 18:35

    做畢設(shè),需要用2812控制由舵機(jī)組成的三關(guān)節(jié)機(jī)械,求助

    題目是基于DSP的三關(guān)節(jié)機(jī)械軌跡跟蹤控制系統(tǒng)設(shè)計(jì)主要任務(wù)是以DSP-TMS320F2812控制器作為機(jī)械
    發(fā)表于 04-10 21:42

    通過ROS控制真實(shí)機(jī)械之延時(shí)時(shí)間精確控制

    根據(jù)之前的配置,我們已經(jīng)可以通過move_group發(fā)送出機(jī)械關(guān)節(jié)運(yùn)動(dòng)的軌跡,并且通過三次樣條插補(bǔ)的方法,賦予各個(gè)關(guān)節(jié)在特定角度時(shí)的速度
    發(fā)表于 06-28 09:45

    如何對(duì)機(jī)械關(guān)節(jié)速度進(jìn)行動(dòng)態(tài)繪圖?

    如何對(duì)機(jī)械關(guān)節(jié)速度進(jìn)行動(dòng)態(tài)繪圖?
    發(fā)表于 11-03 06:05

    基于STC8H1K28雙機(jī)械驅(qū)動(dòng)模塊設(shè)計(jì)

    ■ 前言這款雙機(jī)械是應(yīng)用于實(shí)驗(yàn)室中進(jìn)行自動(dòng)樣品轉(zhuǎn)換的執(zhí)行機(jī)構(gòu)。為了能夠在一定范圍內(nèi)將試劑瓶(試管) 完成自動(dòng)搬運(yùn),需要完成對(duì)樣品的抓取,提升和放下、水平移動(dòng)(二維) 等功能。使用帶有肘關(guān)節(jié)
    發(fā)表于 02-18 06:01

    機(jī)械運(yùn)動(dòng)軌跡優(yōu)化方法

    空間的規(guī)劃機(jī)械目標(biāo)點(diǎn)的坐標(biāo)位姿函數(shù)相關(guān),必須通過機(jī)械的逆向運(yùn)動(dòng)學(xué)求解,如此可獲取各個(gè)關(guān)節(jié)
    發(fā)表于 11-03 10:26 ?10次下載
    雙<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>運(yùn)動(dòng)<b class='flag-5'>軌跡</b>優(yōu)化方法

    Labview關(guān)節(jié)機(jī)器人仿真robot軟件下載

    Labview關(guān)節(jié)機(jī)器人仿真
    發(fā)表于 01-03 16:42 ?20次下載

    機(jī)械關(guān)節(jié)驅(qū)動(dòng)組件

    操作器的精確運(yùn)動(dòng)提供技術(shù)支撐。機(jī)械關(guān)節(jié)是保證機(jī)械運(yùn)動(dòng)能力、運(yùn)動(dòng)精度、運(yùn)動(dòng)平穩(wěn)性以及運(yùn)動(dòng)安全性等一系列問題的關(guān)鍵瞳。目前針對(duì)高精度伺服控制
    發(fā)表于 01-19 14:34 ?7次下載
    <b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b><b class='flag-5'>關(guān)節(jié)</b>驅(qū)動(dòng)組件

    使用SimMechanics實(shí)現(xiàn)自由度的機(jī)械仿真研究

    ,仿真功能強(qiáng)大,可以在模型中通過改變結(jié)構(gòu),優(yōu)化系統(tǒng)參數(shù),在仿真環(huán)境中分析結(jié)果。利用 SimMechanics 的上述優(yōu)點(diǎn),以工業(yè)自由度機(jī)械
    發(fā)表于 11-12 08:00 ?1次下載
    使用SimMechanics實(shí)現(xiàn)<b class='flag-5'>六</b>自由度的<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b><b class='flag-5'>仿真</b>研究

    機(jī)械路徑規(guī)劃方案的簡(jiǎn)單介紹

    解決的難題。 真尚有解決方案介紹 為了使機(jī)械在明確目標(biāo)位置后能夠在最短時(shí)間、最短距離準(zhǔn)確抓取目標(biāo)物體,真尚有機(jī)械路徑規(guī)劃方案采用多種群蟻
    發(fā)表于 07-12 17:23 ?2937次閱讀

    機(jī)械:Arduino + Matlab

    電子發(fā)燒友網(wǎng)站提供《機(jī)械:Arduino + Matlab.zip》資料免費(fèi)下載
    發(fā)表于 06-28 15:28 ?2次下載
    <b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>:Arduino + <b class='flag-5'>Matlab</b>

    自由度機(jī)械三次多項(xiàng)式插值法

    對(duì)串聯(lián)機(jī)械而言,軌跡規(guī)劃可以分為:關(guān)節(jié)空間軌跡規(guī)劃
    的頭像 發(fā)表于 11-17 15:52 ?1344次閱讀
    <b class='flag-5'>六</b>自由度<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>三次多項(xiàng)式插值法

    自由度機(jī)械軌跡規(guī)劃仿真

    采用五次多項(xiàng)式插值法進(jìn)行機(jī)械軌跡規(guī)劃,基于Matlab Robotics Toolbox平臺(tái)進(jìn)行關(guān)節(jié)
    的頭像 發(fā)表于 11-17 16:11 ?1437次閱讀
    <b class='flag-5'>六</b>自由度<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b><b class='flag-5'>軌跡</b><b class='flag-5'>規(guī)劃</b><b class='flag-5'>仿真</b>