Beregning af koordinater i 3D

Tags:    cnc 5akset vektor

Hej.

Jeg søger en løsning på et regnestykke, som jeg ikke selv kan regne ud.
Jeg er ved at lave en postprocessor til et cam program (til at lave cnc programmer med) hvor jeg gerne ville kunne lave programmer til en 5 akset cnc fræser.
Selve fræsebanerne er ikke noget problem at få rigtigt ud, men det er tilkørslerne til emnet der volder lidt problemer.

For at starte et sted så, prøver jeg at forklare om fræserens opbygning sådan rent fysisk.
Der er i alt 5 akser x,y,z,a og c
X,Y og Z er placeret på den den øverste del af maskinen, hvor Z er spindel aksen (der hvor det skærende værktøj sidder)
For neden er A og C aksen placeret.
A aksen er en vugge der svinger omkring x aksen. På vuggen sidder C aksen, som svinger omkring Z aksen (så længe A aksen står i 0 grader)
Se evt:

http://www.youtube.com/watch?v=RE4GKBKieo4

Princippet er det samme.

Men nu til det endelige spørgsmål:
De koordinater jeg får ud af cam programmet vender altid rigtigt i forhold til emnets x,y og z akse, uanset hvad a og c verdierne hedder.
EKS:
1. A=0 C=0 Hvis jeg bevæger mig fra x0,y0,z0 til x0,y100,z0 flytter maskinen y+ 100mm i forhold til maskinens akser.
2. A=0 C=180 Hvis jeg bevæger mig fra x0,y0,z0 til x0,y100,z0 flytter maskinen y- 100mm i forhold til maskinens akser.


DET jeg så gerne vil kunne regne ud er maskinkoordinaterne (koordinaterne jeg har er jo emne koordinater), som skal bruges ved tilkørsel til emnet.

EKS:
1. A=0 C=0 her er der ingen problemer - emnets akser vender som maskinens akser. x10=x10 y10=y10 z10=z10
2. A=0 C=180 Her kommer problemet så. Hvis emnets kordinater hedder x10,y10,z10 så vil maskinens kordinater være x-10,y-10,z10
3. A=-90 C=0 Her er problemet igen. Hvis emnets kordinater hedder x0,y0,z10 så vil maskinens kordinater være x0,y-10,z0
4. A=-90 C=180 Og igen. Hvis emnets kordinater hedder x10,y10,z10 så vil maskinens kordinater være x-10,y-10,z-10

Det er nogetlunde til at finde ud af i hovedet med ovenstående eksempler, men vil man ikke kunne udregne maskinens x,y og z koordinater ,hvis nu emnets koordinater feks. var A-37,5 C268 x25 y35 z60

For mig virker udregningen ret svær, men det burde vel kunne lade sig gøre?

De tal der er til rådighed er a,c,x,y og z aksernes verdier i forhold til emnets koordinatsystem. Og det jeg skal bruge er maskinens x,y og z koordinater.

Håber at jeg har gjort mig forståelig, eller bare spørg :-)

Forresten så hedder a-aksens verdier +-180 og c-aksens verdier 0-360.



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Her er en færdig løsning:

X = X*cos(C)-Y*sin(C)
Y = X*sin(C)*cos(A)+Y*cos(C)*cos(A)-Z*sin(A)
Z = X*sin(C)*sin(A)+Y*cos(C)*sin(A)+Z*cos(A)

Ved brug af det eksempel findes
x -35.8512
y -17.6730
z 62.0674

Husk at tage højde for eventuel udregning i radianer i stedet for grader

Da jeg ikke kender til euler vinkler, skal jeg ikke kunne sige om en simplere løsning kan findes ad den vej.





Indlæg senest redigeret d. 04.02.2012 20:39 af Bruger #3789
Du bør undersøge, hvordan man skifter koordinatsystem. Tjek denne wiki side, hvor det burde være forklaret: http://en.wikipedia.org/wiki/Change_of_basis





Hej.

Hvis du mener at få programmet til at skifte koordinatsystem, så kan det ikke lade sig gøre. Det er enten eller. Enten kommer maskinens kordinater ud eller også kommer emnets koordinater ud.
For at køre simultan beardejdning (bevægelse i 4 eller 5 akser samtidig) skal jeg bruge emnekoordinater, men ved tilkørsel til emnet skal jeg bruge maskinens koordinater.

Hvis du mener at bruge de formler på wiki, så for jeg nok brug for lidt hjælp :-)
Det er græsk for mig det der står.
Det er nærmest en trin for trin beregning jeg har brug for til henholdsvis x,y og z.

Håber i vil bære over med mig når jeg nu ikke er det største matematiske geni :-)



Det var matematikken nævnt i wiki'en. Grundlæggende omhandler det, hvordan man matematisk kan skifte fra en basis, til en anden. En basis er en række vektorer, som kan danne alle andre vektorer i det rum man arbejder i.

I denne forbindelse, ville det være at lave en basis for emnet, og derefter konventere til basis for maskinen. Et udførligt eksempel vil jeg forsøge at komme med i løbet af imorgen



Det lyder godt.
Tusind tak.
Et eksempel ville være:
A-37,5 C268 x25 y35 z60 skulle gerne give resultatet X-35.851, Y-17.673, Z 62.067



Jeg skal lige have styr på, hvilke rotationsretninger der er positive. I forhold til det youtube link, hvor den i starten roterer C, så er det i positiv retning ? Og omkring 1:30 rotere den A i positiv retning ?



I starten af videoen roterer c-aksen i negativ retning.
1:30 inde i videoen roterer a-aksen også i negativ retning.
Hvis man forestiller sig at man kigger fra x+ mod x- så er a+ med uret og a- mod uret.
Det samme gør sig gældende hvis man kigger fra z+ mod z-. Så er c+ med uret og c- mod uret.
Forresten kan jeg måske også hive nogle Euler vinkler ud af systemet. Er det evt noget der kan bruges til noget?



Nu virker det..

Jeg fandt ud af at a og c skulle have ændret fortegn inden de blev sat ind i formlerne.



Indlæg senest redigeret d. 03.09.2012 11:34 af Bruger #17031
t