Autor Tema: Traslación y Rotación de orígenes de coordenadas

0 Usuarios y 1 Visitante están viendo este tema.

11 Julio, 2018, 10:23 am
Leído 11209 veces

eleon

  • $$\Large \color{red}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Buenos días,

Estoy realizando cambios en un postprocesador de control numérico de centros de fresado y se me ha presantado una duda.
Para un desplazamiento y rotación de un origen de coordenadas tengo dos posibles soluciones abajo expuestas:

Opción 1
CYCL DEF 7.1 IX-10.353
CYCL DEF 7.2 IY+3.875
CYCL DEF 7.3 IZ+9.36
PLANE SPATIAL SPA+84.355 SPB-28.881 SPC-1.216 TURN F12000 TABLE ROT

Opción 2
TRANS DATUM AXIS X-10.353 Y3.875 Z9.36
PLANE SPATIAL  SPA-85.059 SPB0.0 SPC176.051 TURN FMAX SEQ- TABLE ROT

Donde en ambos casos IX/IY/IZ es el desplazamiento respecto el origen original y
SPA/SPB/SPC son los giros de X/Y/Z respectivamente

¿Como puedo transformar el código de la opción 2 a la opción 1?

Gracias compañeros

11 Julio, 2018, 11:19 am
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 47,111
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola

 No me queda claro el problema; no conozco el software o lenguaje que utiliza esa notación (TRANS, PLANE SPATIAL, etcétera) para definir y manipular giros y traslaciones y a la hora de responderte sería bueno saber su sentido preciso.

Saludos.

11 Julio, 2018, 12:02 pm
Respuesta #2

eleon

  • $$\Large \color{red}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Hola,

Disculpas por si no logro explicarme con claridad, el problema és el siguiente:

Estoy tratando de convertir unos programas NC realizados con un postprocesador para un control numérico determinado (heidenhain 640) a programas para el control HEIDENHAIN 530. A grandes rasgos los cambios son pocos, pero el principal problema que encuentro es en la transformación del eje de coordenadas de los planos de trabajo (Workplanes).

El traslado del Origen1 al Origen2 (ver foto adjunta) con el v640 se realizada con el siguiente código:
TRANS DATUM AXIS X-10.353 Y3.875 Z9.36
PLANE SPATIAL  SPA-85.059 SPB0.0 SPC176.051 TURN FMAX SEQ- TABLE ROT

donde:
TRANS DATUM AXIS                  =  Traslado del eje (distancia) del Origen2 respecto al Origen1
PLANE SPATIAL                        =  Rotación del Origen2 respecto al Origen1
TURN FMAX SEQ- TABLE ROT      =  Obliga a una solución donde la rotación de la mesa de la máquina sea en sentido (SPA negativo).


En cambio la máquina donde quiero pasar el programa tiene una cinemática distinta, y para la misma solución en la traslación/Rotación necesita que sea de la siguiente forma:
CYCL DEF 7.1 IX-10.353
CYCL DEF 7.2 IY+3.875
CYCL DEF 7.3 IZ+9.36
PLANE SPATIAL SPA+84.355 SPB-28.881 SPC-1.216 TURN F12000 TABLE ROT

donde
CYCL DEF (7.1/7.2/7.3)              = es la translación del origen2 respecto al origen1
PLANE SPATIAL (SPA/SPB/SPC)   = la rotación de los ejes del origen2 respecto origen1 sobre el eje X,Y,Z respectivamente

La pregunta es:
Que operación matemática puedo realizar para convertir las rotaciones:
SPA-85.059 SPB0.0 SPC176.051
a
SPA+84.355 SPB-28.881 SPC-1.216

Un saludo

11 Julio, 2018, 03:39 pm
Respuesta #3

Abdulai

  • Moderador Global
  • Mensajes: 2,384
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
....
La pregunta es:
Que operación matemática puedo realizar para convertir las rotaciones:
SPA-85.059 SPB0.0 SPC176.051
a
SPA+84.355 SPB-28.881 SPC-1.216

Da la sensación que la diferencia entre las máquinas es una inversión del sentido positivo del eje X y una rotación de 180° del eje Z, además de un offset en cada uno.

¿Podés dar mas ejemplos?

12 Julio, 2018, 09:42 am
Respuesta #4

eleon

  • $$\Large \color{red}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Hola,

Adjunto los dos posprocesados, mi intención es generarme un App donde pueda transformar una versión a otra y viceversa.
No sé si te servirá de ayuda.

gracias!


12 Julio, 2018, 10:14 pm
Respuesta #5

Abdulai

  • Moderador Global
  • Mensajes: 2,384
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Adjunto los dos posprocesados, mi intención es generarme un App donde pueda transformar una versión a otra y viceversa.
No sé si te servirá de ayuda.

Sirve de mucho.


Por lo que veo no se trata que los ángulos de rotación sean diferentes en cada máquina sino que el postprocesador usa diferente criterio.

En ambos casos el nuevo eje Z queda normal a la superficie (como debe ser :) ) pero los ejes X e Y con un giro arbitrario entre ambas máquinas.

En el programa que subiste, el V640 no utiliza la rotación en B (SPB0.0 siempre) mientras que el V530 sí.
Como no conozco esas máquinas no se si eso se debe a que el V640 no puede rotar respecto de B o porque sí.

¿Qué pasa con esto?  Que el V530 al tener un grado de libertad mas sitúa el nuevo plano XY como se le cante, mientras que el V640 no puede, lleva el nuevo eje Z a la normal a la superficie y el XY queda... donde quede. Después se generan las trayectorias de acuerdo a esto.


De no haber impedimentos en el movimiento en B, no habría que convertir nada.  Pero si lo hay se complica, pues en el pasaje del V530 al V640 también habría que convertir todas las coordenadas X,Y de las trayectorias siguientes.


13 Julio, 2018, 01:37 pm
Respuesta #6

eleon

  • $$\Large \color{red}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Hola,

Perfectamente interpretado, en el v640 esta diseñado para una máquina que el basculante puede girar +- 90º sobre "X". Por temas de visibilidad del operario de máquina, mediante postprocesador se fuerza el giro de tal forma que el eje "X" (SPA) sea siempre en negativo. En cambio el v530 esta diseñado para una máquina DMG mori, que la rotación sobre el eje "X" oscila entre -20º y +130º.
Tal y como dices posteriormente me toca ría realizar una transformación de cada coordenada.

Lo que busco es como formular la operació matemática para poder escribir el código de una solución al giro partiendo de la otra y viceversa. Para poder crear una pequeña aplicación para convertir un programa generado en el c640 al v530 y al revés.

Gracias

14 Julio, 2018, 08:29 am
Respuesta #7

Abdulai

  • Moderador Global
  • Mensajes: 2,384
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino

Como la deducción de estas fórmulas es bastante largo de escribir y explicar  --->  la dejo pendiente  :)

Si  \( a=SPA,b=SPB \) y \( c=SPC \)  son los de  rotación en el 530, en el 640 serán:

\( SPA_{640} = \text{atan}\left(-\displaystyle\sqrt{\sin(a)^2 \cos(b)^2+\sin(b)^2}\;,\;\cos(a) \cos(b)\right) \)

\( SPB_{640} = 0 \)

\( SPC_{640} = \text{atan}\left(-(\cos(a)\sin(b)\cos(c)+sin(a)\sin(c)) \;,\; \cos(a)\sin(b)\sin(c)-\sin(a)\cos(c)\right) \)

Ojo!  La función \( \text{atan}(y,x) \)  te devuelve el ángulo en los 4 cuadrantes (en Matlab y C es atan2(y,x) )   



El ángulo de rotación de las trayectorias:    \( \theta = \text{atan}\left(-\sin(b)\;,\;-\sin(a)\cos(b)\right) \)

Y su matriz de rotación:  \( R_{xy} = \begin{bmatrix}\cos\theta & -sin\theta & 0\\sin\theta & \cos\theta & 0\\0 & 0 & 1\end{bmatrix} \)

Es decir, en las trayectorias siguientes hay que transformar: 
\( X_{640} = \cos(\theta) X_{530}-\sin(\theta) Y_{530} \)
\( Y_{640} = \sin(\theta) X_{530}+\cos(\theta) Y_{530} \)

--------------------------------------------------------------------------------

Del 640 al 530  no sería necesario convertir nada, pues te sobra 1 grado de libertad. 
Salvo que convengan giros arbitrarios en el eje B para una mejor orientación de la mesa.  Aunque no me queda claro que criterio aplicar.

--------------------------------------------------------------------------------

Por las dudas probé en MAtlab con los ángulos de tu 1er mensaje

Código: [Seleccionar]
%Angulos V530 en grados
SPA = +84.355 ;
SPB = -28.881 ;
SPC = -1.216  ;
%------------------------------------------
kd=pi/180 ;  %Constante grados->radianes
a=kd*SPA ; b=kd*SPB ; c=kd*SPC ;
w = atan2(-sin(b),-sin(a)*cos(b)) ;
s = atan2(-sqrt(sin(a)^2*cos(b)^2+sin(b)^2),cos(a)*cos(b)) ;
t = atan2(-(cos(a)*sin(b)*cos(c)+sin(a)*sin(c)),cos(a)*sin(b)*sin(c)-sin(a)*cos(c)) ;
%------------------------------------------
%Angulos V640 y giro XY en grados
[s/kd ,0, t/kd ] , w/kd


ans =
       -85.0589691824008      0    176.050728853882
     
ans =
       151.001049676576


Saludos.

16 Julio, 2018, 12:07 pm
Respuesta #8

eleon

  • $$\Large \color{red}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Buenos días,

Tiene muy buena pinta, una pregunta, Como llegas de:

ans =
       -85.0589691824008      0    176.050728853882

a:
     
ans =
       151.001049676576

16 Julio, 2018, 01:54 pm
Respuesta #9

eleon

  • $$\Large \color{red}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Hola,

haciendo la misma operación los angulos me salen distintos.
Algo mal estoy haciendo?

Adjunto cálculo