系列文章目錄
?文章來源地址http://www.zghlxwxcb.cn/news/detail-851254.html
前言
?文章來源:http://www.zghlxwxcb.cn/news/detail-851254.html
?
一、簡介
通過逆運(yùn)動學(xué)設(shè)計(jì)器,您可以為 URDF 機(jī)器人模型設(shè)計(jì)逆運(yùn)動學(xué)求解器。您可以調(diào)整逆運(yùn)動學(xué)求解器并添加約束條件,以實(shí)現(xiàn)所需的行為。使用該程序,您可以
- 從 URDF 文件或 MATLAB 工作區(qū)導(dǎo)入 URDF 機(jī)器人模型。
- 調(diào)整逆運(yùn)動學(xué)求解器和約束條件。
- 創(chuàng)建關(guān)節(jié)配置并導(dǎo)出航點(diǎn)。
- 將求解器設(shè)置、約束和關(guān)節(jié)配置導(dǎo)出到 MATLAB? 工作區(qū)。
二、打開 Inverse Kinematics Designer App
?
- MATLAB 工具條: 在 "應(yīng)用程序 "選項(xiàng)卡上的 "機(jī)器人和自主系統(tǒng) "下,單擊 "逆運(yùn)動設(shè)計(jì)器 逆運(yùn)動設(shè)計(jì)器 "圖標(biāo)。
- MATLAB 命令提示符: 輸入 inverseKinematicsDesigner。
三、示例
3.1?創(chuàng)建逆運(yùn)動學(xué)設(shè)計(jì)器
本示例演示了如何創(chuàng)建、加載和保存逆運(yùn)動設(shè)計(jì)器會話,以及如何將機(jī)器人加載到會話中。完成文件作為 iksessiondata.mat 附后,以供參考。使用 inverseKinematicsDesigner 函數(shù)加載會話,或按照本示例創(chuàng)建會話。
3.1.1 創(chuàng)建
使用 inverseKinematicsDesigner 函數(shù)打開逆運(yùn)動設(shè)計(jì)器。
inverseKinematicsDesigner
3.1.2 加載機(jī)器人模型
在命令窗口中使用 loadrobot 將剛體樹(如 Universal UR5e)加載到工作區(qū)。importrobot 也可用于從任何機(jī)器人 URDF 文件中導(dǎo)入剛體樹對象。
uniUR5e = loadrobot("universalUR5e");
單擊 "新建會話",從對話框的表格中選擇 uniUR5e,然后單擊 "確定"。該表包含工作區(qū)中的所有剛體樹對象。如果在表中沒有看到您的對象,請確認(rèn)該對象是否在工作區(qū)中,然后單擊 "刷新"。
或者,您也可以使用剛體樹下拉菜單,從機(jī)器人系統(tǒng)工具箱(Robotics System Toolbox?)附帶的機(jī)器人模型列表中進(jìn)行選擇,然后單擊 "確定",加載一個(gè)機(jī)器人。
?現(xiàn)在,"場景畫布 "包含機(jī)器人模型,"場景瀏覽器 "顯示機(jī)器人的所有剛體。
?
3.1.3 添加碰撞對象
要在 "場景畫布 "中添加碰撞對象,工作區(qū)中必須有一個(gè)碰撞對象。為方便起見,本示例提供了一個(gè)簡單的方框供您使用。有關(guān)創(chuàng)建碰撞對象的更多信息,請參閱 collisionMesh、collisionBox、collisionSphere 和 collisionCylinder。
加載 collisionobject MAT 文件,將名為 box 的 collisionBox 保存到工作區(qū)。單擊 "添加碰撞對象",然后從表格中選擇 box。單擊 "確定 "將其添加到 "場景畫布 "中。
現(xiàn)在,"場景畫布 "中包含了機(jī)器人和碰撞對象。在本示例中,我們將保留該對象,但如果要?jiǎng)h除碰撞對象,請?jiān)趫鼍盀g覽器中的場景下找到碰撞對象,右鍵單擊碰撞對象的名稱并單擊刪除。
?
在 "場景畫布 "或 "場景瀏覽器 "中選擇對象時(shí),可使用 "場景檢查器 "查看對象的位置和歐拉方位。列出的屬性將根據(jù)所選碰撞對象的類型而改變。
3.1.4 保存會話
要保存此會話,請單擊 "保存會話"。如果這是第一次保存會話,請命名文件并選擇保存位置。文件將保存為包含所有會話數(shù)據(jù)和設(shè)置的 MAT (*.mat) 文件。
?
3.1.5 加載保存的會話
要加載會話文件,請單擊 "Inverse Kinematics Designer(逆運(yùn)動設(shè)計(jì)器)"應(yīng)用程序中的 "Open Session(打開會話)",或以字符串形式向 inverseKinematicsDesigner 指定 MAT 文件。本示例中提供的會話示例為 iksessiondata.mat。
inverseKinematicsDesigner("iksessiondata.mat")
?
3.2?使用 "場景畫布 "并移動機(jī)器人
本示例演示如何使用場景畫布,并使用逆運(yùn)動設(shè)計(jì)器應(yīng)用程序在其中移動機(jī)器人。
加載現(xiàn)有會話 (ixsessiondata.mat),或參考創(chuàng)建逆運(yùn)動設(shè)計(jì)器會話示例創(chuàng)建會話。
inverseKinematicsDesigner
3.2.1 場景畫布控件
使用場景畫布中的軸工具欄控制視圖。
?
?
要旋轉(zhuǎn)場景畫布,請選擇旋轉(zhuǎn) 3D 按鈕并在場景中單擊和拖動。
單擊 "平移 "按鈕,然后在場景中單擊并拖動,即可在 "場景畫布 "中平移。
選擇 "放大 "或 "縮小 "按鈕,然后單擊并向上或向下拖動,可分別放大或縮小場景畫布內(nèi)的某個(gè)區(qū)域。
單擊 "恢復(fù)視圖 "按鈕可恢復(fù)到原始默認(rèn)視圖。
3.2.2 移動機(jī)器人
使用預(yù)設(shè)的 "標(biāo)記姿勢目標(biāo) "約束等約束條件移動機(jī)器人。標(biāo)記姿勢目標(biāo)約束是移動機(jī)器人最簡單的約束。該約束在機(jī)器人模型的最后一個(gè)體上設(shè)置目標(biāo)姿勢。在本例中,標(biāo)記體被設(shè)置為工具 0。在 "場景畫布 "中,通過紅色、綠色和藍(lán)色的線性和圓形指示符,可視化所選標(biāo)記體頂部的標(biāo)記。單擊并拖動線性或圓形指示符將分別改變目標(biāo)位置和歐拉方向。顏色與 "場景畫布 "左下方顯示的坐標(biāo)軸顏色相對應(yīng)。
單擊 "標(biāo)記姿勢約束 "打開 "約束 "選項(xiàng)卡。在 "約束 "選項(xiàng)卡中,設(shè)置以米為單位的笛卡爾位置、以度為單位的歐拉方向,以及位置和方向的權(quán)重和公差。標(biāo)記體可以在 "約束 "選項(xiàng)卡的 "末端執(zhí)行體 "列表或 "逆運(yùn)動學(xué) "選項(xiàng)卡的 "標(biāo)記體 "列表中更改。單擊 "應(yīng)用 "保存任何更改,單擊 "關(guān)閉約束 "退出 "約束 "選項(xiàng)卡。請注意,指定的歐拉角是使用 XYZ 序列計(jì)算的。
?
還可以通過清除或選擇 "約束瀏覽器 "中 "標(biāo)記姿勢目標(biāo) "約束旁邊的復(fù)選框來打開或關(guān)閉 "標(biāo)記姿勢目標(biāo) "約束。
3.2.3 解決方案詳情
移動 "目標(biāo)標(biāo)記姿勢 "時(shí),會設(shè)置目標(biāo)姿勢,逆運(yùn)動學(xué)求解器會求解所選標(biāo)記體到達(dá)目標(biāo)姿勢的配置。如果找不到目標(biāo)姿勢的解決方案,機(jī)器人將移動到最佳可用解決方案,而標(biāo)記體將不會移動到標(biāo)記姿勢目標(biāo)。這種解決方案可以通過 "約束瀏覽器 "中的約束圖標(biāo)直觀地識別出來。圖標(biāo)上的紅色 x 表示未滿足約束條件,而綠色復(fù)選框則表示正在滿足約束條件。
?
?要了解求解器未能求解的更多信息,請單擊 "報(bào)告狀態(tài) "查看求解器求解的詳細(xì)信息。迭代次數(shù)和隨機(jī)重啟次數(shù)分別列出求解器執(zhí)行的次數(shù)。違反約束條件"(Constraints Violations)顯示了可在命令窗口中顯示的所有沖突的結(jié)構(gòu)數(shù)組。如果求解器成功求解出目標(biāo)姿態(tài),狀態(tài)將顯示成功;如果求解器無法求解出目標(biāo)姿態(tài),則顯示其找到的最佳可用解。退出標(biāo)志(Exit Flag)提供了特定求解器算法執(zhí)行的更多細(xì)節(jié)。有關(guān)不同退出標(biāo)志類型的更多信息,請參閱 "逆運(yùn)動學(xué)算法"。
要排除求解器無法求解的原因,請參閱 "解決約束沖突 "了解一些技巧。
?3.3?創(chuàng)建無碰撞配置并輸出航點(diǎn)
本示例演示如何使用逆運(yùn)動設(shè)計(jì)器創(chuàng)建關(guān)節(jié)配置,并使用場景檢查器檢查碰撞。本示例使用了 "創(chuàng)建逆運(yùn)動設(shè)計(jì)器會話 "和 "使用場景畫布和移動機(jī)器人 "中的數(shù)據(jù)和技能。在繼續(xù)之前,請參考這些示例。
3.3.1 加載會話
使用 inverseKinematicsDesigner 和 iksessiondata.mat 會話文件,在場景中加載具有基本碰撞對象的機(jī)器人。
inverseKinematicsDesigner
3.3.2 創(chuàng)建配置
使用配置面板創(chuàng)建、修改和查看配置。
在移動機(jī)器人之前,單擊 "存儲配置 "保存機(jī)器人當(dāng)前的關(guān)節(jié)配置,如場景畫布所示。這將把配置添加到 "配置面板 "的表格中,其中包含默認(rèn)配置名稱、碰撞狀態(tài)和每個(gè)關(guān)節(jié)的矢量值。雙擊相應(yīng)元素可編輯每個(gè)配置的名稱和值。將此配置重命名為 home,并將其值保留為 [0.00 0.00 0.00 0.00 0.00 0.00 0.00]。
創(chuàng)建另一個(gè)配置,但這次要使其與方框相撞。使用 "標(biāo)記姿勢約束 "將末端執(zhí)行器設(shè)置為[-0.5 0.5 0]處的方框中心,然后存儲配置。要在多個(gè)配置之間切換視圖,請選擇一個(gè)配置,單擊 "捕捉到配置 "或單擊 "向前或向后步進(jìn) "按鈕,以步進(jìn)方式切換當(dāng)前配置。?
?
3.3.3 檢查碰撞
單擊檢查碰撞 > 檢查所有配置更新所有存儲配置的碰撞狀態(tài)。要檢查一個(gè)配置,請選擇所需的配置,單擊 "捕捉到配置",然后單擊 "檢查碰撞">"檢查當(dāng)前配置 "更新當(dāng)前所選配置的碰撞狀態(tài)。
?碰撞檢查完成后,第一個(gè)和第二個(gè)配置的碰撞狀態(tài)分別為 PASS 和 FAIL。選擇碰撞檢查失敗的配置。場景瀏覽器中選定配置的主體會更新,顯示紅色 x 或綠色檢查圖標(biāo),分別表示該主體處于碰撞狀態(tài)或無碰撞狀態(tài)。在場景畫布中,標(biāo)記為 "碰撞中 "的體也將以紅色高亮顯示。請注意,法蘭和工具 0 雖然看起來在位置上處于碰撞狀態(tài),但卻被標(biāo)記為無碰撞狀態(tài)。這是因?yàn)檫@些機(jī)構(gòu)只是框架,不包含碰撞網(wǎng)格。如果您打算檢查碰撞,請?jiān)趯?dǎo)入任何機(jī)器人之前確保機(jī)器人的實(shí)體包含碰撞網(wǎng)格。
在 "場景瀏覽器 "或 "場景畫布 "中單擊該框,選擇該框,然后檢查 "狀態(tài) "窗格。狀態(tài) "窗格包含位置、方向、碰撞狀態(tài)以及自上次碰撞檢查以來所有已知碰撞的列表。已知碰撞列表顯示了與所選體發(fā)生碰撞的所有體。從列表中選擇任何一個(gè)車身并單擊 "檢查選定車身",場景檢查器就會切換到該本體。
?
3.3.4 創(chuàng)建配置路徑
要?jiǎng)?chuàng)建路徑,請按順序依次向表中添加配置。由于第二個(gè)配置與方框沖突,因此選擇它并單擊刪除。
將目標(biāo)標(biāo)記姿態(tài)設(shè)置為方框后 [-0.9 0.0 0.1],并存儲配置。該配置將成為目標(biāo)配置,因此將其重命名為目標(biāo)。
?
捕捉到 "原點(diǎn) "配置,并在[-0.5 0.5 0.5]處的方框上添加一個(gè)額外配置,作為 "原點(diǎn) "和 "目標(biāo) "之間的中間配置。如果需要修改配置,請捕捉到該配置,調(diào)整目標(biāo)標(biāo)記姿勢,保存新配置并刪除舊配置。單擊 "移動配置 "按鈕,在原點(diǎn)和目標(biāo)配置之間移動新配置。
單擊檢查碰撞 > 檢查所有配置檢查所有配置是否發(fā)生碰撞。如果某個(gè)配置未通過,請進(jìn)行必要的調(diào)整。
3.3.5 將配置導(dǎo)出為航點(diǎn)
保存會話也會保存會話中存儲的配置,但要將配置作為航點(diǎn)導(dǎo)出到 MATLAB? 工作區(qū),請單擊導(dǎo)出 > 配置。選擇要導(dǎo)出的所有配置,在航點(diǎn)矩陣名稱中指定航點(diǎn)矩陣的名稱,然后單擊導(dǎo)出。檢查工作區(qū)中是否有包含航點(diǎn)的矩陣。請注意,航點(diǎn)矩陣的大小取決于導(dǎo)出配置的數(shù)量和機(jī)器人關(guān)節(jié)的數(shù)量,并將以行格式導(dǎo)出。本例中的航點(diǎn)矩陣尺寸為 3x6。
?
?
?
到了這里,關(guān)于MATLAB - 機(jī)器人逆運(yùn)動學(xué)設(shè)計(jì)器(Inverse Kinematics Designer APP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!