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

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

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

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

MATLAB ? 來源:djl ? 作者:MathWorks ? 2019-09-11 14:58 ? 次閱讀

前面,我們講了機(jī)械臂的運(yùn)動(dòng)學(xué)(kinematics)(點(diǎn)擊藍(lán)字查看):正向運(yùn)動(dòng)學(xué)和反向運(yùn)動(dòng)學(xué)。

正向運(yùn)動(dòng)學(xué)指的是在已知機(jī)械臂各個(gè)關(guān)節(jié)角度的情況下,推算end-effector(機(jī)械臂終端)的位置和方向(合稱pose)。反向運(yùn)動(dòng)學(xué)指的是在已知end-effector的位置和方向,推算各個(gè)機(jī)械臂的關(guān)節(jié)角度。我們主要研究反向運(yùn)動(dòng)學(xué)。

讓我們看一下基于反向運(yùn)動(dòng)學(xué)的控制邏輯圖:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

在給出機(jī)械臂的end-effector的pose后,反運(yùn)動(dòng)學(xué)模塊計(jì)算出各個(gè)關(guān)節(jié)所需要的角度,然后通過電機(jī)產(chǎn)生力矩(torque)去執(zhí)行。在此期間,通過反饋(feedback)去消除一些控制誤差。

但是,事實(shí)上會有很多的干擾因素存在。例如:

地球引力(gravity)

慣量(inertia)

摩擦力(friction)

科里奧利力和離心力(Coriolis and centrifugal)

由于連桿之間是通過關(guān)節(jié)(joint)耦合在一起,連桿之間會有反作用力和反向慣量

以及一些人為的要求,例如:

我們想要機(jī)械臂運(yùn)動(dòng)的速度,按照我們預(yù)先的設(shè)定運(yùn)行(velocity and acceleration)

我們想要求機(jī)械臂在觸碰外物時(shí)候做出安全保護(hù)(external force)

這些我們暫且稱之為disturbance(干擾),當(dāng)然有些“干擾”是我們故意要求的,比如說需要按照預(yù)設(shè)軌跡的速度運(yùn)行。加入“干擾”后的示意圖如下:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

如果我們能提前計(jì)算出來這些“disturbance”,然后在控制環(huán)路中將它“抵消”(有時(shí)候也叫前饋控制)。這樣,就能使得機(jī)械臂“完美”運(yùn)行了。讓我們再改一下控制邏輯圖:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

為了計(jì)算這些“disturbance”。我們需要考慮幾個(gè)因素:

機(jī)械臂各個(gè)關(guān)節(jié)角度,即q

機(jī)械臂各個(gè)關(guān)節(jié)的速度,即qd(對q求導(dǎo))

機(jī)械臂的各個(gè)關(guān)節(jié)的加速度,即qdd(對qd再次求導(dǎo))

機(jī)械臂的質(zhì)量和各個(gè)連桿的重心點(diǎn)

有了這些因素,我們可以通過數(shù)學(xué)方法:

u=M(q)qdd + C(q,qd)qd +G(q)

求出所需要的力矩,其中M項(xiàng)代表克服了機(jī)械臂的加速度慣量以及不同連桿之間的慣量影響所需力矩、C項(xiàng)代表了克服科里奧利力和離心力所需力矩、G項(xiàng)代表了克服地球引力力矩。

其中Inverse Dynamics叫做反向動(dòng)力學(xué),它的作用是輸入想要的關(guān)節(jié)速度(qd)、關(guān)節(jié)加速度(qdd)、關(guān)節(jié)角度(q),輸出為每個(gè)關(guān)節(jié)所需要的力矩(u)。當(dāng)然也有正向動(dòng)力學(xué)(forward dynamics),它的作用和反向動(dòng)力學(xué)相反,輸入關(guān)節(jié)角度(q)、關(guān)節(jié)速度(qd)、每個(gè)關(guān)節(jié)的力矩(u),輸出為每個(gè)關(guān)節(jié)的加速度(qdd)。

上述的控制邏輯圖,是一個(gè)“前饋控制”的例子,它的作用是預(yù)先計(jì)算出所需的力矩,輸入給控制器,“反饋”的存在是為了消除一些誤差,例如摩擦力和其他噪音。

總之,我們需要這么一個(gè)“動(dòng)力學(xué)”模型,使得我們可以抵消各種不同的“disturbance”的影響 --- 慣量、地球引力、科里奧利力和離心力等等。另外,實(shí)際電機(jī)的功率是有限的,通過反向動(dòng)力學(xué)我們也可以準(zhǔn)確知道電機(jī)需要提供多少力矩,從而為電機(jī)選型提供參考依據(jù)。

下圖初略表示了end-effector – inverse kinematics – inverse dynamics之間的關(guān)系:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

Robotics System Toolbox(RST)中的動(dòng)力學(xué)算法

RST 提供了動(dòng)力學(xué)方面的函數(shù)和Simulink block。

MATLAB函數(shù):

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

Simulink blocks:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

讓我們看一個(gè)簡單的例子:

這是一個(gè)工作在2D空間的機(jī)器人。標(biāo)明了各個(gè)結(jié)構(gòu)件的質(zhì)量、長度和重心。在靜止?fàn)顟B(tài)下,兩個(gè)關(guān)節(jié)分別需要多大的力矩去抵消地球引力并支撐起這個(gè)機(jī)器人?

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

我們先一步步地構(gòu)造這個(gè)機(jī)器人:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

然后加入重心、質(zhì)量:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

然后在速度和加速度都是0的情況下,調(diào)用inverse Dynamics函數(shù)算出力矩:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

tau =

20 10

很明顯,第一個(gè)關(guān)節(jié)要比第二個(gè)需要更大的力矩。

我們也可以用gravityTorque這個(gè)函數(shù)試一下,結(jié)果是相同的。

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

gravTorq =

20 10

如果我們將速度或者加速度改變一下,看看力矩的變化,例如:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

相應(yīng)地,所需力矩也增大了。

tau =

30.5981 12.1340

Simulink 示例

在MATLAB Central File Exchange上搜索“Designing Robot Manipulator Algorithms”。

這是一個(gè)機(jī)械臂按運(yùn)動(dòng)軌跡抓取物體的例子:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

在前面運(yùn)動(dòng)學(xué)算法中,我們也介紹了這個(gè)例子。當(dāng)時(shí)我們用反向運(yùn)動(dòng)學(xué)(inverse kinematics)去計(jì)算end-effector的位置。這次我們用力矩控制的方式來重新看一下這個(gè)問題。這里有兩種方式供參考:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

首先,inverse kinematics根據(jù)end-effector的位置,計(jì)算出各個(gè)關(guān)節(jié)(電機(jī))所需要的角度位置,然后交給各個(gè)關(guān)節(jié)的電機(jī)去執(zhí)行。由于關(guān)節(jié)控制的是角度。所以叫Joint Space Control (即關(guān)節(jié)角度控制)。

前饋部分(feedforward)負(fù)責(zé)計(jì)算出所需力矩(用來抵消重力,按預(yù)定軌跡運(yùn)動(dòng)等等)。

反饋部分(feedback)用PID去消除誤差。

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

這個(gè)做法是直接控制end-effector的位置,并用PID去消除end-effector的位置誤差。也叫做task space control,即直接控制在XYZ空間(也叫笛卡爾坐標(biāo)的位置)。

前饋部分只做一件事:計(jì)算抵消地球引力的力矩。

反饋部分用PID去控制end-effector的位置。然后用Jacobian矩陣將end-effector(在笛卡爾坐標(biāo))的力矩,轉(zhuǎn)化成各個(gè)關(guān)節(jié)的力矩。

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

Computed Torque Control

有了機(jī)械臂的動(dòng)力學(xué)模型(dynamic model),我們可以應(yīng)用的控制方法有很多種。通常來說,反饋是必要的 – 可以消除控制誤差和一些噪音。從力矩計(jì)算的角度來看,可以做:

力矩前饋控制。剛才兩個(gè)例子都是將計(jì)算好的力矩做前饋。由于機(jī)械臂的移動(dòng)速率遠(yuǎn)遠(yuǎn)小于電機(jī)控制速率,所以計(jì)算力矩的頻率并不高。比如說,電機(jī)的控制頻率為5K Hz,前饋力矩計(jì)算的頻率大約是50Hz。對控制器的硬件要求不高。

計(jì)算力矩控制(computed torque control)。computed torque control工作在較高的控制頻率上(例如1K Hz),要比力矩前饋控制頻率高的多。對控制器硬件要求較高。

Simulink提供dynamics方面的blocks,可以方便地搭出computed torque controller:

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

computed torque controller的輸入:

q,機(jī)械臂關(guān)節(jié)角度

qd,預(yù)設(shè)的機(jī)械臂關(guān)節(jié)要達(dá)到的角度 (desired q)

dq,機(jī)械臂關(guān)節(jié)速度,即對q求導(dǎo)

dqd,預(yù)設(shè)的機(jī)械臂關(guān)節(jié)要達(dá)到的速度 (desired)

ddqd,預(yù)設(shè)的機(jī)械臂關(guān)節(jié)要達(dá)到的加速度 (desired )

computed torque controller的輸出:

u,機(jī)械臂各個(gè)關(guān)節(jié)的力矩

有了computed torque controller我可以做出比較復(fù)雜的控制系統(tǒng),例如一方面要求機(jī)械臂按預(yù)定的trajectory(含角度、速度、加速度等信息)運(yùn)行;一方面又要求機(jī)械臂遭受外力干擾后改變運(yùn)行軌跡(trajectory)。

如果感興趣,可以看MATLAB自帶的“Perform Safe Trajectory Tracking Control Using Robotics Manipulator Blocks”這個(gè)例子。機(jī)械臂在碰到遮擋的硬物,改變預(yù)設(shè)的運(yùn)行軌跡,保證運(yùn)行安全。

關(guān)于MATLAB 中的機(jī)械臂算法分析和介紹

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

    關(guān)注

    112

    文章

    16136

    瀏覽量

    177160
  • 電機(jī)
    +關(guān)注

    關(guān)注

    142

    文章

    8884

    瀏覽量

    144908
  • 動(dòng)力學(xué)
    +關(guān)注

    關(guān)注

    0

    文章

    105

    瀏覽量

    16952
收藏 人收藏

    評論

    相關(guān)推薦

    OrangePi AIpro應(yīng)用:機(jī)械應(yīng)用開發(fā)指南

    2024世界人工智能大會上,香橙派攜OrangePiAIpro20T在世博展覽館H1-A301展區(qū)亮相,給大家?guī)鞟I+互動(dòng)的沉浸式體驗(yàn)。其中,搭載OrangePiAIpro開發(fā)板的智能機(jī)械吸引了
    的頭像 發(fā)表于 08-19 16:42 ?522次閱讀
    OrangePi AIpro應(yīng)用:<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>應(yīng)用開發(fā)指南

    奧比光推出2.0版大模型機(jī)械

    近期,奧比光研發(fā)團(tuán)隊(duì)融合前沿多模態(tài)大模型技術(shù),推出最新2.0版大模型機(jī)械演示方案。新方案搭載公司最新深度相機(jī)Gemini 335L和Femto Bolt,能夠基于語音指令,自動(dòng)執(zhí)行沏茶、插花、滴
    的頭像 發(fā)表于 07-19 16:50 ?640次閱讀

    大象機(jī)器人開源協(xié)作機(jī)械機(jī)械接入GPT4o大模型!

    和智能化的任務(wù),提升了人機(jī)協(xié)作的效率和效果。我們個(gè)人平時(shí)接觸不太到機(jī)械這類的機(jī)器人產(chǎn)品,但是有一種小型的機(jī)械我們?nèi)巳硕伎梢該碛兴黰yCobot,價(jià)格低廉的一種桌面型
    的頭像 發(fā)表于 07-03 14:09 ?738次閱讀
    大象機(jī)器人開源協(xié)作<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    國產(chǎn)Cortex-A55人工智能教學(xué)實(shí)驗(yàn)箱_基于Python機(jī)械跳舞實(shí)驗(yàn)案例分享

    又不必要。 從力學(xué)的角度分析,物件在空間只有6個(gè)自由度。因此為抓取和傳送在空間不同位置和方位物件,傳送機(jī)構(gòu)也應(yīng)具有6個(gè)自由度。 實(shí)驗(yàn)程序流程 1、創(chuàng)建機(jī)械對象 2、機(jī)械
    發(fā)表于 06-28 14:37

    基于六維力傳感器的機(jī)械自動(dòng)裝配應(yīng)用

    外部環(huán)境的關(guān)鍵裝置,六維力傳感器通常安裝于機(jī)器末端執(zhí)行器與機(jī)械之間,用于檢測作業(yè)的機(jī)器人與環(huán)境之間的多維交互力/力矩,并將交互力/力矩反饋給機(jī)器人力控制系統(tǒng),
    的頭像 發(fā)表于 06-06 13:49 ?669次閱讀
    基于六維力傳感器的<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>自動(dòng)裝配應(yīng)用

    自然語言控制機(jī)械:ChatGPT與機(jī)器人技術(shù)的融合創(chuàng)新(下)

    引言 在我們的上一篇文章,我們探索了如何將ChatGPT集成到myCobot 280機(jī)械臂中,實(shí)現(xiàn)了一個(gè)通過自然語言控制機(jī)械的系統(tǒng)。我們詳細(xì)介紹
    的頭像 發(fā)表于 04-11 15:54 ?795次閱讀
    自然語言控制<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>:ChatGPT與機(jī)器人技術(shù)的融合創(chuàng)新(下)

    如何去提升機(jī)械的位置控制性能?

    1.背景介紹 機(jī)械的位置控制是機(jī)械最重要的功能。機(jī)械
    的頭像 發(fā)表于 03-05 08:43 ?810次閱讀
    如何去提升<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>的位置控制性能?

    【國產(chǎn)FPGA+OMAPL138開發(fā)板體驗(yàn)】(原創(chuàng))2.手把手玩轉(zhuǎn)游戲機(jī)械

    ChatGPT來增強(qiáng)其交互能力。 5.1 ChatGPT集成 AI算法實(shí)現(xiàn) 為了使機(jī)械具有AI功能,我會使用機(jī)器學(xué)習(xí)和AI算法來優(yōu)化其運(yùn)動(dòng)軌跡和控制參數(shù)。例如,可以使用強(qiáng)化學(xué)習(xí)
    發(fā)表于 02-01 20:18

    【開源獲獎(jiǎng)案例】四軸機(jī)械控制系統(tǒng)

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎(jiǎng)開源案例——四軸機(jī)械控制系統(tǒng)。工程師采用T5L智能屏,基于DGUS軟件“旋轉(zhuǎn)指示”控件實(shí)現(xiàn)機(jī)械的實(shí)時(shí)位置顯示,并通過串口控制
    的頭像 發(fā)表于 12-23 08:13 ?1138次閱讀
    【開源獲獎(jiǎng)案例】四軸<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>控制系統(tǒng)

    七軸開源協(xié)作機(jī)械myArm視覺跟蹤技術(shù)!

    處理技術(shù),使用ArUco標(biāo)記的機(jī)械系統(tǒng)可以實(shí)現(xiàn)更高級的自動(dòng)化功能,如精確定位、導(dǎo)航和復(fù)雜動(dòng)作的執(zhí)行。 本案例旨在展示結(jié)合ArUco標(biāo)記和機(jī)械運(yùn)動(dòng)控制技術(shù),實(shí)現(xiàn)對
    的頭像 發(fā)表于 12-18 11:14 ?1135次閱讀
    七軸開源協(xié)作<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>myArm視覺跟蹤技術(shù)!

    開源六軸協(xié)作機(jī)械MechArm案例演示!

    介紹 今天,我將向大家展示一個(gè)我獨(dú)立設(shè)計(jì)并實(shí)現(xiàn)的機(jī)械模型。這個(gè)模型的核心功能是實(shí)現(xiàn)實(shí)時(shí)的手勢追蹤——只需用手輕輕拖拽,機(jī)械就能立即跟隨你
    的頭像 發(fā)表于 11-28 15:58 ?842次閱讀
    開源六軸協(xié)作<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>MechArm案例演示!

    如何解決柔性機(jī)械建模過程問題

    柔性機(jī)械 剛性機(jī)械建模方法已經(jīng)可以有效地求解出機(jī)械各部分之間的耦合情況,但是對于柔性
    的頭像 發(fā)表于 11-17 17:12 ?830次閱讀

    剛性機(jī)械的動(dòng)力學(xué)建模

    。 不同的建模原理可以得到機(jī)械不同的動(dòng)力學(xué)表達(dá)式,有些算法可以求解出機(jī)械的正向和逆向問題,而有些算法
    的頭像 發(fā)表于 11-17 17:03 ?777次閱讀

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

    需要重新輸入“startup_rvc”回車來啟動(dòng)這個(gè)工具箱。 本文所控對象為串聯(lián)六R機(jī)械,其具體尺寸參數(shù)見于代碼的D-H表。 MATLAB代碼 % Modified DH % AB
    的頭像 發(fā)表于 11-17 16:11 ?1221次閱讀
    六自由度<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>軌跡規(guī)劃仿真

    機(jī)械結(jié)構(gòu)是什么樣的

    },{5}和{6}的原點(diǎn)。如下圖示。 對于機(jī)械, 通常將之看作“連桿結(jié)構(gòu)” ,連桿是由關(guān)節(jié)組合而成。因此在分析機(jī)械的時(shí)候需要為
    的頭像 發(fā)表于 11-17 15:48 ?2826次閱讀
    <b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>結(jié)構(gòu)是什么樣的