[連載 5]Vrep--Matlab Robitic Toolbox--PUMA560機(jī)械臂控制

大家如果完成了連載4的內(nèi)容,接下來(lái)面臨的就是如何驅(qū)動(dòng)機(jī)械臂了,那么這一節(jié)的主要目標(biāo)就是全面介紹在Vrep、Matlab和Simulink中,如何使用Vrep自帶的Lua腳本和Matlab結(jié)合Peter Corke的Robitic Toolbox以及Simulink的VrepLib庫(kù),來(lái)控制機(jī)械臂,完成一些有趣的運(yùn)動(dòng)。

前言

這篇文章距離上一篇文章時(shí)隔太久了,一方面是最近幾個(gè)月事情太多,沒(méi)有抽出太多時(shí)間;另一方面是準(zhǔn)備一篇手把手的文字教程實(shí)在是很耗時(shí)間。所以這次我想稍微改變一下,文檔的內(nèi)容我只列出提綱和大概的內(nèi)容,完成的過(guò)程和講解通過(guò)錄制視頻來(lái)完成,這樣更加生動(dòng)一些,這次先嘗試一下,看看大家的反饋吧^_^
本節(jié)教程需要大家熟悉 連載 2連載 3這一節(jié)的內(nèi)容,并要有基本的機(jī)械臂基礎(chǔ)知識(shí),我這里主要是參考的這兩本書(shū)——《機(jī)器人學(xué)導(dǎo)論(原書(shū)第4版)》《機(jī)器人學(xué)、機(jī)器視覺(jué)與控制――MATLAB算法基礎(chǔ)》。推薦大家入手這兩本書(shū),是非常好用的工具書(shū)。
此教程是基于vrep 3.5.0版本制作的,初學(xué)可以先安裝此版本進(jìn)行學(xué)習(xí),后面再使用更新的版本。(舊版下載鏈接:鏈接:https://pan.baidu.com/s/1PIl5t-Pwx2dawOIHfzDelA 提取碼:qirx)

本節(jié)介紹

本節(jié)主要分為三個(gè)部分:

  1. 使用Vrep的RML庫(kù)控制機(jī)械臂各個(gè)關(guān)節(jié),實(shí)現(xiàn)關(guān)節(jié)空間的控制
  2. 使用Vrep自帶的IK模塊(逆運(yùn)動(dòng)學(xué)求解器)進(jìn)行機(jī)械臂工作笛卡爾空間的運(yùn)動(dòng)控制
  3. 使用Matlab驅(qū)動(dòng)機(jī)械臂各個(gè)關(guān)節(jié),實(shí)現(xiàn)關(guān)節(jié)空間的控制
  4. 使用Matlab Robitic Toolbox對(duì)機(jī)械臂進(jìn)行建模,建立機(jī)械臂DH矩陣,并使用工具箱的逆運(yùn)動(dòng)學(xué)求解工具(ikine6s、ikine)實(shí)現(xiàn)matlab控制機(jī)械臂
  5. 使用VrepLib,通過(guò)Simulink快速搭建vrep控制模型(推薦閱讀!!!)。
    本節(jié)的知識(shí)容量比較大,但是可以歸為三個(gè)部分且互相獨(dú)立,大家可以根據(jù)自己的需求進(jìn)行選擇學(xué)習(xí)。第一部分:內(nèi)容1和2是基于vrep自身的編程工具實(shí)現(xiàn)的;第二部分:內(nèi)容2和3是基于Vrep與Matlab的接口以及Matlab Robitic Toolbox實(shí)現(xiàn)的;第三部分:內(nèi)容4是基于我自己的寫(xiě)的Vrep的Simulink工具箱——VrepLib實(shí)現(xiàn)的,給大家介紹一下基于Simulink非常簡(jiǎn)便的Vrep控制流程的開(kāi)發(fā)。
    完整的例程模型請(qǐng)點(diǎn)擊購(gòu)買

基礎(chǔ)知識(shí)

對(duì)于機(jī)械臂的操作來(lái)說(shuō),大家必須具備一些基本知識(shí),下面列出的這些內(nèi)容并不是讓大家立即翻書(shū)弄明白了再來(lái)看教程,而是先有一個(gè)初步概念,我會(huì)在視頻講解中介紹一下,大家看完整個(gè)教程之后再補(bǔ)充相關(guān)的知識(shí)就可以了。
基礎(chǔ)知識(shí):理解 坐標(biāo)變換->正運(yùn)動(dòng)學(xué)、機(jī)械臂求解->逆運(yùn)動(dòng)學(xué) 是非常重要的。坐標(biāo)變換的基礎(chǔ)需要大家要熟知齊次變換矩陣、歐拉角、四元數(shù),明確它們表達(dá)的含義和優(yōu)缺點(diǎn);機(jī)械臂描述需要大家知道DH矩陣或者其變種的計(jì)算方式;正運(yùn)動(dòng)學(xué)的意義和逆運(yùn)動(dòng)學(xué)的解析解和數(shù)值解的大概計(jì)算方式。

1.Vrep驅(qū)動(dòng)PUMA560機(jī)械臂

這一部分采用Lua 與 Reflexxes Motion Library的方式,去驅(qū)動(dòng)各個(gè)關(guān)節(jié)的位置進(jìn)行變化,也可以采用程序直接控制關(guān)節(jié)位置,這一部分內(nèi)容比較常規(guī),大家可以瀏覽[連載 2]Vrep小車建模——內(nèi)嵌腳本熟悉Lua的基本編程,聽(tīng)結(jié)合本節(jié)視頻和源碼實(shí)現(xiàn)下圖的功能,詳細(xì)介紹請(qǐng)看視頻教程。

Lua腳本關(guān)節(jié)驅(qū)動(dòng)示例

2.Vrep逆運(yùn)動(dòng)學(xué)求解工具IK驅(qū)動(dòng)機(jī)械臂

上一節(jié)采用直接驅(qū)動(dòng)機(jī)械臂關(guān)節(jié),控制的是機(jī)械臂的關(guān)節(jié)空間上的變化,但是實(shí)際控制過(guò)程中,我們更關(guān)心機(jī)械臂末端的笛卡爾空間的狀態(tài),因此需要求解機(jī)械臂逆解去計(jì)算不同狀態(tài)下對(duì)應(yīng)的關(guān)節(jié)角度。本節(jié)視頻中會(huì)詳細(xì)介紹Vrep中IK的搭建方式和注意事項(xiàng)。本節(jié)的最終效果如下:

機(jī)械臂末端達(dá)到空間指定位置
機(jī)械臂末端形成復(fù)雜軌跡

3.Matlab驅(qū)動(dòng)機(jī)械臂

這一部分采用Matlab驅(qū)動(dòng)機(jī)械臂,與內(nèi)容1類似,大家要熟悉[連載 3]Vrep小車建模——matlab控制的內(nèi)容,掌握Matlab與Vrep通信的基本知識(shí)(為了結(jié)果更加真實(shí),因此要開(kāi)啟Vrep與Matlab的同步機(jī)制)。同時(shí)在本節(jié)會(huì)介紹Matlab Robitic Toolbox的函數(shù)(jtraj)使用方法,從而用于關(guān)節(jié)空間的驅(qū)動(dòng)。本節(jié)的最終效果如下

Matlab驅(qū)動(dòng)機(jī)械臂

4.Matlab Robitic Toolbox控制機(jī)械臂

本節(jié)內(nèi)容較多,涉及到的知識(shí)點(diǎn)也比較多,大家要具有耐心。首先講一下標(biāo)準(zhǔn)DH矩陣的建立方式,這里請(qǐng)注意由于三維模型的差異和關(guān)節(jié)坐標(biāo)系的設(shè)置導(dǎo)致本節(jié)給出的puma560機(jī)械臂與《機(jī)器人學(xué)、機(jī)器視覺(jué)與控制――MATLAB算法基礎(chǔ)》書(shū)中給出的DH矩陣略有不同。(注:大家都很疑惑一個(gè)puma560機(jī)械臂的DH矩陣為什么不是唯一的,甚至不同的教科書(shū)上給出來(lái)的不一樣,這是和DH矩陣本身的的特點(diǎn)密切相關(guān)的,對(duì)于DH矩陣大家不要生搬硬套,直接根據(jù)計(jì)算方式求一個(gè)自己可以用的就可以了。)
建立DH矩陣后,給大家介紹一下如何采用Matlab Robitic Toolbox計(jì)算運(yùn)動(dòng)學(xué)逆解,以及不同的求解方式的注意事項(xiàng)。
最后用matlab實(shí)現(xiàn)機(jī)械臂末端位置和姿態(tài)的跟隨控制。

5 使用VrepLib,通過(guò)simulink快速搭建vrep控制模型(推薦閱讀!!!)

很多同學(xué)和我反饋控制算法都是使用simulink搭建的,而vrep并沒(méi)有很好的simulink接口,很難將自己的控制算法與vrep結(jié)合起來(lái),我也是深受苦惱,因此花了很長(zhǎng)時(shí)間開(kāi)發(fā)了vrep與simulink接口庫(kù)——VrepLib,VrepLib主要功能是建立simulink與vrep的連接,并利用封裝好的模塊搭建仿真程序,減輕工作量,加快算法驗(yàn)證速度。目前這個(gè)庫(kù)我已經(jīng)發(fā)布出來(lái)了,感興趣的同學(xué)可以點(diǎn)擊購(gòu)買。下面展示一下如何用這個(gè)庫(kù)實(shí)現(xiàn)內(nèi)容3和內(nèi)容4的功能。

只需要少數(shù)幾個(gè)模塊即可完成內(nèi)容3的功能.png

完成內(nèi)容4的程序框圖

結(jié)語(yǔ)

本節(jié)介紹基于Vrep開(kāi)發(fā)環(huán)境的機(jī)械臂三種控制方法,分別介紹了采用Lua控制、matlab控制和simulink控制,并給出詳細(xì)的示例;同時(shí)也介紹了機(jī)械臂關(guān)節(jié)空間運(yùn)動(dòng)和笛卡爾空間運(yùn)動(dòng)的差別,結(jié)合Vrep自帶的IK計(jì)算模塊和Matlab Robitic Toolbox的工具箱函數(shù)講述逆運(yùn)動(dòng)學(xué)求解、軌跡生成等。總的來(lái)說(shuō)是Vrep——機(jī)械臂這一內(nèi)容的引路石,機(jī)械臂控制仍然有很多內(nèi)容需要大家去研究,希望本教程可以給大家一定的幫助。本節(jié)更多內(nèi)容請(qǐng)點(diǎn)擊視頻教程、源代碼,謝謝大家的支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容