Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Eulerovy úhly

Kompletní přehled příspěvků v tématu Eulerovy úhly řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Martin Kopecký

Poslat zprávu | Profil
Datum: 24.11. 2016 | Zobrazeno: 9126x
Konfigurace CATIA: Catia/Delmia V5-6R2014

Text dotazu:
Dobrý den,

potřeboval bych poradit jak správně zorientovat Tag vytvořený v Delmii.

Makrem načítám polohu a orientaci Partu v Produktu

oPosition.GetComponents iAxisComponentsArray


V produktu v TagGroup vytvořím Tag, nastavím pozici
oTag.SetXYZ iAxisComponentsArray(9), iAxisComponentsArray(10), iAxisComponentsArray(11)


Následuje nastavení orientace Tagu, kde zatím nevím jak správně postupovat.
SetYPR

V prvním kroku jsem získal matici transformace, ze které potřebuji získat Eulerovy úhly.
Jak zjišťuji, tak to není tak jednoduché a jednoznačné, jak jsem si myslel.

Víte někdo jak správně spočítat úhly a zorientovat Tag?
Napadá vás jiný postup jak vytvořit Tag totožný s AbsoluteAxisem Partu (např. přímým volání příkazu "c:Frame Type")?



Martin Kopecký

Poslat zprávu | Profil
[#6039] | Publikováno: 25.11. 2016 - 14:06
Malá oprava, respektive upřesnění.
Úhly, kterými se zadává orientace Tagu, nejsou Eulerovy, jako je známe z PartDesignu - z - x' - z'', ale Yaw, Pitch, Roll. Tedy rotace kolem os - x - y - z.

Přiložené soubory:
Average-roll-pitch-and-yaw-ang

Ing Jan Cinert

Poslat zprávu | Profil
[#6040] | Publikováno: 25.11. 2016 - 14:11
Dobrý den,

v příloze dokument o výpočtu Eulerových úhlů. Kdysi jsem psal makro, kdy jsem potřeboval vypočítat úhly pro definici Axis systému, znal jsem jen normované vektory jednotlivých os. Tenkrát jsem si s tím poradil a tohle mi dost pomohlo. Podívejte se na to, třeba najdete co hledáte.

Přiložené soubory:
EulerAngles.pdf

Martin Kopecký

Poslat zprávu | Profil
[#6043] | Publikováno: 29.11. 2016 - 09:48
Uživatel odpovídá na příspěvek #6040:

Díky, pomohlo to.
Konvence yaw - pitch - roll mi trochu zamotala hlavu. Různé zdroje uvádějí pořadí a názvy osa/uhel odlišně. Pořád nevím jestli to je jen zvolené názvosloví nebo jestli to má hlubší smysl.

Dále mě zarazilo, jak vlastně vypočítat matici rotace. Podle většiny zdrojů rotace x-y-z se spočítá RzRyRx. V dokumentu od Vás rotaci z-y-x počítají zase jako RzRyRx.

Já mám rotaci x-y-z, tak jsem zkusil RxRyRz a konečně mi vycházejí správná čísla a všechno jde pěkně odvodit. Doufám, že ošetřením kvadrantů zajistím už 100 % správné výsledky. Což mě přivádí k dalšímu dotazu...

Mám funkci atan2, kde mi vstupují 2 hodnoty

Public Function Atan2(y As Double, x As Double) As Double

If x > 0 And (y > 0 Or y = 0) Then
Atan2 = Atn(y / x)
ElseIf x < 0 Then
Atan2 = Atn(y / x) + PI
ElseIf x > 0 And y < 0 Then
Atan2 = Atn(y / x) + 2 * PI
ElseIf x = 0 And y > 0 Then
Atan2 = PI / 2
ElseIf x = 0 And y < 0 Then
Atan2 = 3 * PI / 2
End If
End Function


Jako y a x zadávám hodnoty z matice rotace, což jsou desetinná číška s des. čárkou. To způsobí chybu. Hodnotu y=0,707 funkce bere jako y=0, x=707. Poradíte, co mám změnit?
Ing Jan Cinert

Poslat zprávu | Profil
[#6044] | Publikováno: 29.11. 2016 - 15:06
V tomhle případě by mohlo stačit převést na správný typ - double, např. takhle

x = CDbl(input.ToString.Replace(",","."))


Martin Kopecký

Poslat zprávu | Profil
[#6045] | Publikováno: 30.11. 2016 - 18:37
"CDbl" mi končí chybou mismatch.

Převést na text, nahradit čárku tečkou a pak převést zpět na číslo jsem už zkoušel pomocí "Val". Výsledek byl stejný jako na začátku - číslo s des. čárkou.

V makru jsem to obešel. Hodnoty x a y přiřazuji před voláním fce atan2.

Jinak po ošetření kvadrantů se zdá, že už makro funguje správně. Kdyby někdo řešil podobný problém, tak jsem našel šikovný dokument (s ošetřením kvadrantů a pseudocody):

Přiložené soubory:
EulerAngleFormulas.pdf



Uživatel nepřihlášen

Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.