工業機械人運動學正逆解,簡單粗暴!!!!!!

?

ur機械臂是六自由度機械臂,由D-H參數法確定它的運動學模型,連桿坐標系的建立如上圖所示。

轉動關節θi是關節變量,連桿偏移di是常數。

關節編號

α(繞x軸)

a(沿x軸)

θ(繞z軸)

d(沿z軸)

1

α1=90

0

θ1

d1=89.2

2

0

a2=-425

θ2

0

3

0

a3=-392

θ3

0

4

α4=90

0

θ4

d4=109.3

5

α5=-90

0

θ5

d5=94.75

6

0

0

θ6

d6=82.5

由此可以建立坐標系i在坐標系i-1的齊次變換矩陣,注意每次不管平移還是旋轉是相對于當前的運動坐標系變換,矩陣右乘

那么把DH參數代入就可以得到所有相鄰坐標系的變換矩陣

所以末端坐標系6到基座固定坐標系0的變換矩陣。那么求正解就很簡單了,只要輸入六個關節角度θi,就得到末端坐標在基坐標系的變換矩陣T。ur機械臂的視教板上末端點的坐標是用六個值[x, y, z, rx, ry, rz]表示的。前三個值[x, y, z]是三維笛卡爾坐標,表示空間位置,后三個值[rx, ry, rz]是坐標旋轉向量,表示空間姿態。我們得到的變換矩陣T怎么變成六值坐標[x, y, z, rx, ry, rz]呢?設

T的左上角的3x3矩陣是旋轉矩陣,旋轉矩陣和旋轉向量之間可以通過羅德里格斯(Rodrigues)變換進行轉換。opencv里有相應的函數調用。算法也比較簡單,不用opencv的函數自己寫代碼也不難。T的右上角3x1就是空間位置[x, y, z]。這樣有變換矩陣T得到六值坐標,完成了正解。

逆解相對要復雜一些,由末端的空間位置和姿態,計算可能的關節角度。逆解的方法有解析法,迭代法和幾何法。其中解析法用數學推導,可以得到全部根,但是計算復雜。有的機械臂可以得到無窮解,比如7軸機械臂。而ur的6軸機械臂是有有限解的。這里推導一下ur的逆解。

首先計算求變換矩陣T過程其中的一些中間矩陣。

,其中c23=cos(θ2+θ3),s23=sin(θ2+θ3)。

得到。計算

,得到

等式兩邊矩陣的行列應該分別相等,由第三行第四列得到,可解得,有兩個解。這里注意寫程序的時候,求解這里的反正切是用atan2()這類的函數,返回之在(-π,+π]。而反余弦的返回值在[0,π],從而保證在2π范圍每個解是唯一的。

由第三行第三列得,可解得,兩個解。由第三行第二列得到,可解得

接著由

計算

,得出等式左邊等于

,兩邊平方,令

同樣由,令

兩式相加得到,則,有兩個解。

把θ3帶入,得,其中t2=tanθ2。兩式消去c2,得到

最后得到,從而得到θ4。

綜合有兩個解的情況,ur機械臂逆解總共由2x2x2=8組解。

按照上面的算法,用python寫了兩個程序,一個正解一個逆解驗證一下。工作手邊是ur3的機械臂,上面的圖和表都是ur5的,換成ur3的參數。正解算出來都沒有問題,可以和實際機械臂的空間位姿對應。可是逆解算出來8組值,好像只有四組值是對的。一直還沒理解到底是怎么回事,仔細檢查了算法和程序好像都沒有錯阿,不知道是哪里出了問題。網上也沒有找到答案,如果哪位大神知道,望不吝賜教!

轉:https://www.cnblogs.com/mightycode/p/9095059.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251997.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python opencv立體測距 立體匹配BM算法

立體標定應用標定數據轉換成深度圖標定 在開始之前,需要準備的當然是兩個攝相頭,根據你的需求將兩個攝像頭進行相對位置的固定,我是按平行來進行固定的(如果為了追求兩個雙目圖像更高的生命度,也可以將其按一定鈍角固…

對于python 作用域新的理解

今天看Python習題,看到如下題目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()])  # 求輸出結果是什么 我看了半天才明白這應該是一個列表生成式,列表中的元素為四個匿名函數,我本以為每個匿名函數應該是…

Vue基礎學習(一)------內部指令

一.v-if v-else v-show 指令 1.v-if v-if:是vue 的一個內部指令,指令用在我們的html中,用來判斷是否加載html的DOM 現在舉個栗子,判斷用戶的登錄操作,用isLogin作為一個判斷字段,登錄成功,就顯示用戶的名稱 代碼&…

【bzoj3555】[Ctsc2014]企鵝QQ 簡單哈希

傳送門 題目分析 題意即求有多少對字符串只相差一個字符,枚舉刪除每個字符后的哈希, 看有多少相等即可。 比如有如下字符串:$Sd123$,其中S部分的哈希值為H,刪除的是d,則原字符串的哈希值為$$(((H * T d) *…

StereoRectify()函數定義及用法畸變矯正與立體校正

畸變矯正是上一篇博文的遺留問題,當畸變系數和內外參數矩陣標定完成后,就應該進行畸變的矯正,以達到消除畸變的目的,此其一。 在該系列第一部分的博文中介紹的立體成像原理中提到,要通過兩幅圖像估計物點的深度信息&a…

死磕 java集合之TreeMap源碼分析(三)- 內含紅黑樹分析全過程

2019獨角獸企業重金招聘Python工程師標準>>> 歡迎關注我的公眾號“彤哥讀源碼”,查看更多源碼系列文章, 與彤哥一起暢游源碼的海洋。 刪除元素 刪除元素本身比較簡單,就是采用二叉樹的刪除規則。 (1)如果刪除的位置有兩…

Linux:進程實例信息(/proc)

https://blog.csdn.net/test1280/article/details/73632333 Linux:進程實例信息(/proc) 問幾個問題: 1.怎么知道一個進程對應哪個可執行文件? 2.怎么知道一個進程的資源限制? 3.怎么知道一個進程所處的環境&#xff1f…

四元素理解

旋轉變換_四元數 2017年03月29日 11:59:38 csxiaoshui 閱讀數:5686 1.簡介 四元數是另一種描述三維旋轉的方式,四元數使用4個分量來描述旋轉,四元數的描述方式如下: qsxiyjzk,(s,x,y,z∈?)i2j2k2ijk?1 四元數的由…

31、SAM文件中flag含義解釋工具--轉載

轉載:http://www.cnblogs.com/nkwy2012/p/6362996.html SAM是Sequence Alignment/Map 的縮寫。像bwa等軟件序列比對結果都會輸出這樣的文件。samtools網站上有專門的文檔介紹SAM文件。具體地址:http://samtools.sourceforge.net/SAM1.pdf很多人困惑SAM文…

《Head First設計模式》批注系列(一)——觀察者設計模式

最近在讀《Head First設計模式》一書,此系列會引用源書內容,但文章內容會更加直接,以及加入一些自己的理解。 觀察者模式(有時又被稱為模型-視圖(View)模式、源-收聽者(Listener)模式或從屬者模式&#xff…

PYPL 4 月排行:Python 最流行,Java 還行不行?

開發四年只會寫業務代碼,分布式高并發都不會還做程序員? PYPL 發布了 4 月份的編程語言排行榜。 前五的分別是:Python、Java、Javascript、C# 和 PHP。可以看到,榜單沒有什么大變化,但是相比去年 4 月份,…

兩個向量的旋轉矩陣與四元素

兩向量的夾角 2017年06月20日 17:38:11 csxiaoshui 閱讀數:36764 怎么計算兩個向量間的夾角呢? 這里主要分兩種情況,對于二維向量和三維向量來分別討論。 1. 二維向量 二維向量的情況相對簡單,根據向量間的點乘關系 v1?v2|…

順序表

一、數據是如何在內存中存儲的? 32位系統中char,int型數據在內存中的存儲方式: char占1byte(8bit)int占4byte(32bit)假設我們有一個int類型的值,它從0x01開始,一個int占據…

Establishing SSL connection without server's identity verification is not recommended.

完全描述:Establishing SSL connection without servers identity verification is not recommended. According to MySQL 5.5.45, 5.6.26 and 5.7.6 requirements SSL connection must be established by default if explicit option isnt set. For compliance with existing …

四元素的真面目..........簡單粗暴

作者:Yang Eninala 鏈接:https://www.zhihu.com/question/23005815/answer/33971127 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 根據我的理解,大多數人用漢密爾頓四元數就只…

2.自定義變量調節器

① 使用registerPlugin()方法來擴充變量調節器 該方法接收3個參數 1. 字符串modifier 2. 插件函數的名字 3. PHP回調函數 示例:自定義一個變量調節器,可以改變文字的顏色和大小 第一步:調用smarty對象的registerPlugin(&#x…

SpringBoot2構建基于RBAC權限模型的駕校代理小程序后端

本項目是使用SpringBoot2構建的一套基于RBAC權限模型的后臺管理系統,前端是微信小程序。 項目地址: github.com/fuyunwang/D… 項目的緣由 最近接了個外包,主要是針對于駕校開發一個代理小程序。目的是為了方便駕校的管理來招攬學員,同時方便維護學員和代理信息。 項…

while read line的問題

循環中的重定向或許你應該在其他腳本中見過下面的這種寫法&#xff1a;while read linedo…done < file剛開始看到這種結構時&#xff0c;很難理解< file是如何與循環配合在一起工作的。因為循環內有很多條命令&#xff0c;而我們之前接觸的重定向都是為一條命令工作的。…

Linemod;理解

Linemod 代碼筆記 2019年03月11日 16:18:30 haithink 閱讀數&#xff1a;197 最近了解到 Linemod 這個模板匹配算法&#xff0c;印象不錯 準備仔細學習一下&#xff0c;先做點代碼筆記&#xff0c;免得后面不好回顧 目前的筆記基本上把 核心流程都分析得比較清楚了&#xff0…

Swift3中數組創建方法

轉載自&#xff1a;http://blog.csdn.net/bwf_erg/article/details/70858865 數組是由一組類型相同的元素構成的有序數據集合。數組中的集合元素是有 序的&#xff0c;而且可以重復出現。 1 數組創建 在Swift語言中&#xff0c;數組的類型格式為&#xff1a; Array<ElementT…