UR機械臂simscape正逆解仿真

最近在看相關的課程,把作業做一下,還是蠻有意思的。

UR機械臂的物理模型文件是根據SolidWorks插件simscape導出的xml文件,課程直接提供的,博客不便給出,清楚整個建模原理就行。但個人還是覺得urdf文件好理解一些,可以人爲控制各個座標系的方向、位置還有質心的位置,不同機械臂的urdf文件可以自己在SolidWorks中建模然後利用sw2urdf插件直接導出urdf文件,這時就很好控制各個關節座標系的方向,便於後續正逆運動學問題的解算驗證。

xml文件和urdf兩者在simscape中的區別可以見上一篇博客Simscape建模筆記

廢話不多說,直接上模型,理解其中的建模邏輯即可~

一般情況下,直接smimport('xxx.xml')之後(如果是urdf文件,則命令爲smimport('xxx.urdf')),就會自動在simulink中出現如下simscape模型。模型中各個模塊的性質可以參考上一篇博客以及matlab官方文檔。

在這裏插入圖片描述

爲了後面對模型進行正逆運動學分析,需要將每個joint模塊,也就是上圖中的Revolute模塊中的部分性質進行修改,如下圖所示。這是爲了實現控制,因此需要對其內部屬性進行修改,將Torque(轉矩)設置爲Automatically Computed(自動計算),Motion(動力)設置爲Provided by Input,這表示動力由輸入提供,這意味着這個motion口相當於系統的輸入口。除此之外,還需要勾選傳感器Position和Velocity的信號。

在這裏插入圖片描述

通過這幾個步驟之後,很容易就明白這樣做的目的,這次作業只是從位置控制模式上進行建模,因此只是將Actuation致動端的Motion模式改成由輸入提供,這個時候通過改變Specify Position Target中Value值的單位也就可以確定Motion輸入端的單位,更簡單來說就是指Motion端輸入多少角度(弧度),這個Revolute Joint就會對應地相對零點位置轉動多少角度(弧度);如果是從力矩控制模式上進行建模,則可以把Actuation致動段的Torque模式改成由輸入提供。

另外,可以發現這個Revolute Joint方框框右邊除了座標變換用的F口之外,又多出了q和w口,這兩個口就是咱們前面設定的Sensing傳感器中Position和Velocity口,可以直接輸出joint實時的位置與速度信號,單位對應於前面設置的角度輸入信號。

在這裏插入圖片描述

在這裏插入圖片描述

最後需要將每個Joint模塊連接成如上圖所示,需要注意的地方是simscape在simulink中建模時的信號類型轉換爲題。一般simulink中常用的信號是這個環境中的模擬值,而此處simscape模型的輸入及輸出值則需要是物理量信號,存在一個信號類型的問題。簡單從上圖中也可以進行分辨,物理信號通常連接的是圓圈,引出的是帶點兒紅色的線,而simulink中常用的模擬量則連接的是箭頭,引出的直接是普通黑線,這兩個是無法連接到一塊兒的,解決辦法就是下圖。。。找出各自對應的輸入輸出模塊即可。後面也會涉及到PS-simulink和simulink-PS轉換模塊的使用。

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

另外有個問題,就是上圖中初始角度設定的問題。首先講一下爲啥要有這個初始角度,因爲一般機械臂建模時通常是在各個關節變量爲0的狀態下進行建模(不管是SDH還是MDH下),你就會發現一些機械臂理論建模的初始狀態與實際使用中的初始狀態不一樣,就比如UR機械臂吧,理論建模時初始狀態是下圖左邊這樣。。。而實際中你會發現UR臂初始狀態是豎直的,也就是下圖右邊這樣。。。所以問題就來了,需要在關節角2和關節角4設置偏置,這也就是上圖中初始角Constant設置的原因。。。但是個人認爲不需要這麼做,只需要將相應Joint中Specify Position Target中Value值改成偏置角即可。。。但是轉念一想吧,設置Constant也方便後期修改,甚至在後期將整個系統封裝成Mask時也方便設置Mask中的變量,便於用戶使用。

在這裏插入圖片描述在這裏插入圖片描述

每個Joint都設置一下,然後爲了方便起見把每個Joint的輸出量弄成Goto,然後將所有的位置Goto弄成一個輸出口,將所有的速度Goto弄成一個輸出口,看起來美觀一些,也減少了模型封裝輸出口的數量,便於後期處理。

在這裏插入圖片描述

OK,全選所有模塊,然後Ctrl+G一下,Bingo~ 你就得到如下封裝的robot模塊了,裏面包含了機械臂的物理模型,看起來清爽明亮又美麗~

在這裏插入圖片描述

添加驅動模塊,我選用的是課程提供的永磁同步電機模塊,便於後期做位置控制用。需要注意的是,上面robot模塊接收的motion信號是simscape的物理量信號,因此你的driver也需要輸出相應類型的信號,以此來驅動機械臂關節運動。需要添加下面的simulink-PS模塊進行信號類型的轉換,對應的還有PS-simulink。

在這裏插入圖片描述在這裏插入圖片描述

先進行正運動學仿真。。。

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

再進行逆運動學仿真。。。

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述

UR逆解算法全網遍地都是,主要理解一下simulink+simscape機械臂正逆解仿真的過程即可。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章