国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
樓主: 水水5

已知面角,如何求歐拉角,機器人坐標變換怎么求?

[復(fù)制鏈接]
11#
 樓主| 發(fā)表于 2025-7-29 19:18:50 | 只看該作者
DaedraMech 發(fā)表于 2025-7-28 14:23
# m/ b1 k% v7 i$ ]; E4 _$ s( q) I. d一般對算法這邊來說最直接的就是拿到變換矩陣了,不知道為什么還要舍近求遠獲得歐拉角,不過樓主需要的話 ...

* u4 f0 u+ w  a$ |. @+ x感謝層主,膜拜
* L" n$ k% M3 @5 r6 d# T% L, O0 B% h+ n' T, k) D0 @" }
我一定把它付諸實踐0 P8 ~$ ^5 A5 y
3 M# L6 f) E4 T; N: D6 [& W
我又搜索了一些其他的方法,再次請樓主給于指導(dǎo)。一些方法貼入后面的回復(fù)。' ?4 Z( b" ]  j7 ~0 R
12#
 樓主| 發(fā)表于 2025-7-29 19:20:54 | 只看該作者
/ I; e/ c2 m* E! u  E/ K' o
7 F8 @  ^+ _4 e' o1 T; r; ^5 }
方法一 本文轉(zhuǎn)載自簡書,作者是梁間。表示感謝
2 m) U0 ]/ s- l9 k
數(shù)學(xué)模型已知兩個坐標系在各方向上尺度縮放比例一致,兩個坐標系的轉(zhuǎn)換關(guān)系可以用7個參數(shù)來表示,3個旋轉(zhuǎn)參數(shù),3個平移參數(shù),1個比例參數(shù)。已知三點在A、B兩個坐標系中的坐標,那么這7個參數(shù)可以唯一確定。
& j: w4 h3 n( m2 K( |0 @3 p坐標轉(zhuǎn)換的數(shù)學(xué)模型為:5 O) w& C% P9 z! R: ]
8 K' E0 Z- h- ?: n
其中,λ是比例參數(shù),R是旋轉(zhuǎn)矩陣,Δ是平移向量,A、B分別是兩個坐標系中的坐標。+ I3 N9 b' j* G  @& E4 P
比例參數(shù)λ最容易計算" _" l; c7 k  J! ^
2 }1 T6 y% h6 ^0 U: }# S& V( y
其中兩點在A坐標系中的距離。8 M' [2 m& n& ?0 f' c  N: l# M. o
旋轉(zhuǎn)矩陣R是一個3x3的正交矩陣,有3個自由度。可利用反對稱矩陣S來構(gòu)造旋轉(zhuǎn)矩陣R:
" ]' S. l5 h( O8 H; ~" \/ X
! f  e% @, H% b2 g* F! G那么: s# q- h7 p# o7 k0 b0 g: C
  ?+ W) y( C0 [9 J- ~1 c
其中I是單位矩陣,這里R只有a、b、c三個變量,解出a、b、c即可確定旋轉(zhuǎn)矩陣R。8 H, S1 ]; B4 C: S
兩點帶入(1)式并相減消去ΔX、ΔY、ΔZ  A# \( ?5 C- H
& h7 V3 ?9 q" E% l2 a  Y2 z9 m% k
這里點在A坐標系X軸向坐標值,為已知量。我們簡化一下寫法設(shè)定:! }( Q4 s* f. T  ^$ \7 e3 }

, _% _" z2 M$ y$ C' n! q這樣(3)式可寫為
- I. x( b$ I8 V6 i$ W+ i1 Q2 h  M7 u+ E1 t0 U$ ^) \
把(2)式帶入(4)
/ k" m  T1 E/ L4 Z. D& g3 A. Q
& w& J8 d$ t" [帶入S# {) |- S# H" q  D

4 i# V$ R0 ^# Z展開
! R, m! J5 I- X, P" P/ S. F4 b, D" A' W) g$ \5 d
整理可得
- I& ]+ Z3 ~3 Q+ d
9 Q7 Y% d2 e1 }(5)式只有兩個獨立方程,解不出a、b、c三個未知量。帶入點得到和(5)式類似的方程組,兩個方程組聯(lián)立,取3個獨立方程* d# b- m4 S2 q/ W
8 c5 t- Q8 p7 g# F" O
  p0 F; z7 J" a8 u0 z6 s& C
可結(jié)出
+ a3 f% e) h) `2 m  r3 f; ]$ A4 R% W6 x/ v, u) ~: e
把a、b、c帶入(2)式可到旋轉(zhuǎn)矩陣R,把任意一點坐標帶入(1)式可得Δ。1 [- b0 [' `5 }
! N) v+ v- V* v0 H

. k3 x9 b8 G: L; [/ p- }  Z
" c; N3 \& A8 F6 o' G$ O作者:梁間
5 l, c" @' f8 J5 K5 y, W鏈接:https://www.jianshu.com/p/58cf5655f9a9
, [# t, t7 N4 E" g5 }# Z來源:簡書
! E$ x: s- q3 P0 g著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
9 a& e: Q' {- Y- _2 H, i9 d
1 k5 C) V; b) b7 W* t: F7 b
13#
 樓主| 發(fā)表于 2025-7-29 19:23:22 | 只看該作者
方法二,這里提到了SVD算法
  c; N0 H8 O. t) b/ v( [: o
通過實際的坐標點例子,來直觀解釋通過SVD求對應(yīng)的坐標系關(guān)系。
已知四個點在坐標系A(chǔ)中的坐標為:
(0, 0, 0); (1,0,0); (1,1,0); (0,1,0)
可得矩陣A為

' c) {6 p/ ?/ ~9 P2 y" ^" ^; W, k& W5 Z$ c2 H/ R9 C
矩陣A
這四個點在坐標系B中的坐標為:
(2,2, 2); (3,2,2); (3,3,2); (2,3,2)
可得矩陣B為
6 F2 h+ U+ o0 z  F) S# W

# d$ o- }$ i1 Q& w0 O矩陣B步驟一:求兩個數(shù)據(jù)集的質(zhì)心
根據(jù)上述公式,可得質(zhì)心為
步驟二:將兩個數(shù)據(jù)集的質(zhì)心移動至同一個點,即只存在于一個旋轉(zhuǎn)的轉(zhuǎn)換關(guān)系。
對應(yīng)坐標系中的點同時減去質(zhì)心,計算后的矩陣A和B分別為

/ L" @! S5 y7 s  g+ T# o: w# d8 o  r( k0 s9 v2 M& Z$ `7 G. A
計算后的矩陣A
# z0 f8 v8 u$ [. k* P9 |
5 F- c- w2 a) M* I9 a9 b; h計算后的矩陣B
備注:此處的矩陣A和矩陣B一樣,因為舉得例子較為特殊,只存在平移關(guān)系。計算過程通用。
步驟三:通過SVD算法計算旋轉(zhuǎn)和平移關(guān)系。
定義一個3X3的矩陣,將矩陣A的每一行數(shù)據(jù)與矩陣B進行點乘,會產(chǎn)生四組3X3的矩陣,將這四組數(shù)據(jù)求和,得到最終的3X3的矩陣,就是我們需要用SVD算法來進行奇異值分解的矩陣H。
上述公式中,顏色相同的框內(nèi)數(shù)據(jù)進行點乘,構(gòu)成3X3的矩陣a1,a2,a3,a4。
矩陣H = a1 + a2 + a3 + a4。計算結(jié)果如下
通過SVD算法分解該矩陣,這里直接通過MATLAB接口調(diào)用,具體原理在前面的章節(jié)中已描述。
步驟四:計算旋轉(zhuǎn)和平移關(guān)系
根據(jù)上述求出的u1和v1,可求得旋轉(zhuǎn)矩陣R為將該旋轉(zhuǎn)矩陣轉(zhuǎn)為歐拉角則Rx = 0, Ry = 0, Rz = 0。
根據(jù)公式
平移矩陣
總結(jié):如果在實際項目中,需要獲取多臺設(shè)備間的關(guān)系,如機器人相對于產(chǎn)品間的關(guān)系,或者機床相對于產(chǎn)品的關(guān)系,則該方法較為實用。注意:在實際的選擇參考點時,不要在一條線上選點。如上述選的四個點,要求不能共線。要不然會減少有效數(shù)據(jù)。
) c1 A8 j& U6 R6 @3 R4 w* }  U
14#
發(fā)表于 2025-7-29 20:37:54 | 只看該作者
本帖最后由 DaedraMech 于 2025-7-29 20:42 編輯 9 ^8 i' D% |; G! b3 N
3 }3 ~4 N& _3 e4 U
沒想到水水大俠對此問題如此孜孜以求,鉆研精神和信息獲取能力令小弟佩服,我比較功利,方法能解決問題就行。0 f0 \& X2 U! Z6 E

: F. U/ G' O7 ~3 U; C! m, r4 e* t6 w我把之前回復(fù)中的齊次變換矩陣改一下符號,樓主可以對比下和文章中的表達方式是不是一回事:
0 X0 U$ \" ]1 R7 |3 \& S7 b5 \: U6 \1 X; S' O7 `2 X
* s, `/ i& G9 K& M: O8 V
平移、旋轉(zhuǎn)、縮放這類坐標變換我們統(tǒng)稱為線性變換。平移和縮放非常簡單,沒什么好說的,重點就是如何求得旋轉(zhuǎn)矩陣R,上述兩種方法就是通過純代數(shù)的方法求解R。+ a9 i# f: c4 E# @6 a, C) N
你用什么方法和選擇的工具有關(guān),上述兩種方法多用在圖像處理和機器學(xué)習(xí)中,算法工程師手里的工具是集成編程環(huán)境,是代碼,采用代數(shù)方法自然是比較直接的。但要知道矩陣可是聯(lián)系代數(shù)和幾何的橋梁啊,而我們則掌握了強大的幾何工具SW,利用【旋轉(zhuǎn)矩陣可以表示坐標系】這一幾何意義我們可以直接得到R,完全不需要上面繁瑣的運算。
8 X; a3 V) p, S7 ^

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?注冊會員

×
15#
 樓主| 發(fā)表于 2025-8-3 20:15:09 | 只看該作者
本帖最后由 水水5 于 2025-8-3 20:21 編輯 - a/ P8 _& ~1 r% e2 B
DaedraMech 發(fā)表于 2025-7-29 20:37/ t, u2 y7 @6 d! S) ^; g, m
沒想到水水大俠對此問題如此孜孜以求,鉆研精神和信息獲取能力令小弟佩服,我比較功利,方法能解決問題就行 ...

  u- K/ W0 h& a  G感謝大俠的持續(xù)教誨。大俠如果有,從變換矩陣導(dǎo)出歐拉角,的計算公式,恭請再給明示下。9 b4 X- `1 T3 J  S! _! M
' b- W6 c1 N) `; u7 d  @& r
經(jīng)過又一個周末的摸索和學(xué)習(xí),我已經(jīng)學(xué)到了旋轉(zhuǎn)矩陣的測量方法,并且通過計算一個點的坐標在兩個坐標系中的坐標值進行了驗證。
) H- |7 B$ a! |& p6 q4 b: f' V6 @, F
這是第一步,下一步是求歐拉角。
8 x" ^+ |9 M) q! f
; M9 i& w& O8 n: p7 K( I1 t5 x我最終的目的是:
& A" ?, a- \8 x  k“在機器人示教工具坐標系的時候,不需要再繁瑣的用6點法搞一個小時示教,而是我作為機械工程師,可以直接從三維中計算出,通過計算,直接可以提供XYZABC的數(shù)值”
' F/ \9 q' s% \0 I4 x% g( R+ o( K/ W. Y5 p  R& S
但是這里面有個難題,我不知道機器人工具坐標系參數(shù)他是采用的哪種形式的歐拉角
% P6 S9 n! @4 y5 P- P下圖是我的作業(yè)
2 X+ d, O8 E- b( W/ {* F, [3 ?/ r7 L3 P2 H& x. E( O

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?注冊會員

×
16#
發(fā)表于 2025-8-6 20:03:41 | 只看該作者
本帖最后由 DaedraMech 于 2025-8-6 20:06 編輯 " G3 a3 x5 k1 K. K& J  ^

1 z) n/ A! f3 K2 p- Z/ p. J% f歐拉角其實也不難求出,就是麻煩點。/ U, k- H* T1 ^" k: x' Y; S

/ g' b5 |. S; s; }假設(shè)你手上的示教器里面歐拉角就是按照常規(guī)的Roll-Pitch-Yaw順序(ZYX順序)定義的,那我們不妨把單獨繞Z、Y、X軸的旋轉(zhuǎn)矩陣從左到右依次乘起來,看看最終的旋轉(zhuǎn)矩陣里各個元素的表達式都是啥。
, u$ a" V2 J# H4 L1 s# D. F: b' f8 T6 }/ W- p# y4 q7 G
從上面的結(jié)果可以看出,通過對矩陣中特定元素之間的運算,我們是能夠分離出繞特定坐標軸的轉(zhuǎn)角的,即:& D1 X. L% P- i" m& d  q' o

5 i. [4 s3 ?& U/ A3 V6 P如果不知道示教器中歐拉角是如何定義的(并且上述順序錯誤的話),就需要再交換單軸旋轉(zhuǎn)矩陣的乘法順序,獲得新的表達式再次實驗。(也可以直接在示教器上輸入角度看機械臂到底先繞哪個軸旋轉(zhuǎn))0 `% F& n2 `. j/ b' {( R

: {, G+ U9 [2 I' D另外可以想象到,空間中一定存在某個軸,能夠讓坐標系一步到位,直接一次旋轉(zhuǎn)到最終位置,而這就要用到四元數(shù)。所以如果示教器還支持四元數(shù)輸入的話,也可以將旋轉(zhuǎn)矩陣轉(zhuǎn)化為四元數(shù):% t9 A: Y+ r) s- d2 }
) d) p, N, m$ t2 g
四元數(shù)中xyz表示了轉(zhuǎn)軸的方向,w表示了繞這個軸的轉(zhuǎn)角,其值為轉(zhuǎn)角的半角余弦值。8 R% p9 G6 U8 Z' J+ G6 c; f! y
+ p2 e* [# \( P- I/ ?0 M1 x

0 I% s) f  N! c/ H8 |

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?注冊會員

×
17#
 樓主| 發(fā)表于 2025-8-9 08:15:40 | 只看該作者
本帖最后由 水水5 于 2025-8-9 08:23 編輯
: x, y% I) h$ j) u' [" `: ~# B% W
DaedraMech 發(fā)表于 2025-8-6 20:03
9 F( ]; Z% n& b) N) R歐拉角其實也不難求出,就是麻煩點。9 J) U  v& {' G0 H" C# `7 h
7 F. S  o$ d3 z0 h4 Y  A4 L% V' k2 g
假設(shè)你手上的示教器里面歐拉角就是按照常規(guī)的Roll-Pitch-Yaw順序(ZY ...

/ V/ a2 d/ F3 s( E; n: [  i感謝大俠的熱情回復(fù)。匯報下進展:
) |8 d( p8 Q; ?: ]1 c9 l! c0 Q1 z
* b; j2 }4 W2 V) [% m: x首先證明了旋轉(zhuǎn)矩陣是對的,第一步已經(jīng)完成,
" B/ w  r/ r1 i- E$ P- ?) E第二步,我找了那些計算歐拉角和四元數(shù)的公式,公式應(yīng)該是沒錯的。雖然歐拉角的解不唯一,但是四元數(shù)是唯一解。經(jīng)過比對,還是和示教器中的數(shù)值有一定的差距。" X7 I1 W# x  B7 X

) o, @+ t! ?! o/ n4 }4 w$ f經(jīng)過分析,機械安裝有一定的誤差,手爪又這么長。所以至少證明了理論計算是正確的。但是實際應(yīng)用,還是要修正。免不了還是要示教一下。
1 M7 g  J$ D$ Y/ c2 ^* T  R第三步,通過咨詢得到 歐拉角的旋轉(zhuǎn)方式。還未進一步計算,等下次有機會了再實驗。
! k% p. F. |- u& ^# d
. H! h" D9 p7 D+ g! L0 q2 c這是FANUC對坐標系歐拉角的描述,市面上絕大多數(shù)機器人,都是遵循固定坐標系XYZ這樣的一個旋轉(zhuǎn)順序。
6 ~8 Z9 ~( n+ i7 W: }
0 s4 u4 D9 l( i9 |5 ^上士聞道,勤而行之;中士聞道;若存若亡;下士聞道,大笑之。不笑不足以為道。' I: n( o7 j5 z! P2 b
感謝各位的技術(shù)支持,感謝論壇。
& m6 k" P0 O) x1 O, V6 e2 U) ?! a

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?注冊會員

×
18#
 樓主| 發(fā)表于 2025-8-9 08:38:57 | 只看該作者
DaedraMech 發(fā)表于 2025-8-6 20:03
/ k! v, U2 A5 Y歐拉角其實也不難求出,就是麻煩點。+ B* e: g" _* U/ \7 R; m
% }8 D7 S  P2 b# k9 G. B9 Z
假設(shè)你手上的示教器里面歐拉角就是按照常規(guī)的Roll-Pitch-Yaw順序(ZY ...
( U! V2 k7 q$ J1 C
大俠有沒有 mathcad 教程 源文件?+ Q4 C% R& a2 M; Y" @# c, f4 w

2 h) h) s1 Q: i您給出的公式的求解,還是有點一知半解。數(shù)學(xué)沒學(xué)好,尷尬" |  q, |0 J/ m4 `% x2 }4 ]

點評

實在抱歉,mathcad源文件是下班在公司寫的,有保密限流發(fā)不出來,樓主復(fù)習(xí)下矩陣乘法應(yīng)該就能理解推導(dǎo)過程了  發(fā)表于 2025-8-10 10:55
19#
發(fā)表于 2025-8-12 22:39:46 | 只看該作者
歐拉角旋轉(zhuǎn)很簡單的,不管是什么順規(guī)的旋轉(zhuǎn),都可以用基本旋轉(zhuǎn)矩陣推導(dǎo)出來,但是歐拉角的萬向鎖問題很煩人,雖然有算法可以解決.
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

Archiver|手機版|小黑屋|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2025-9-2 01:08 , Processed in 0.068927 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復(fù) 返回頂部 返回列表