PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleines Programm...Denkfehler finden (geometrie)



goara
17.09.2008, 14:38
Hallo
Das Problem ist folgendes:
Ich will einen 3-Achs Luftlagertisch so ausrichten, dass der Mittelpunkt der Kamera (Interferrometer) genau in der Mitte ist.
Dazu wird im anfang vom code über Fourier / Hough Transformationen der Winkel berchenet von auf dem der Mittelpunkt des Interferrogramms liegt.
Da ich dann aber nur die Gerade kenne auf der der Mittelpunkt leigt aber nicht weis in welche Richtung und wie weit ich den tisch verschieben muss verschiebe ich ihn um 0.01 mm (das ist relativ viel) rechtwinklig zur ermittelten geraden, bestimme dann nochmals den Winkel und daraus die neue geradengleichung.
Dann berechne ich den Schnittpunkt der Geraden und verfahre den Tisch dort hin(wo eigentlichg die Mitte sein sollte). ist sie aber nicht.
Das ganze sieht so aus.

if (m == 1)
{

// kleine verschiebung rechtwinklig zur geraden
versch_x = sin(winkel_rad)*s_1;
versch_y = -cos(winkel_rad)*s_1;
//aktuelle Tischpostition lesen
Aerotech_position(result);

pos_x = result[0] + versch_x;
pos_y = result[1] + versch_y;
pos_z = result[2];
pos_x_alt = result[0];
pos_y_alt = result[1];
// Tisch verschieben
Aerotech_move(pos_x ,pos_y ,pos_z);

// Geradengleichung der ersten Geraden berechnen
m1 = tan(winkel_rad);
c1 = 0;
// 2. Durchlauf Tisch ist jetz verschoben, 2. Gerade berechnen
}else{

m2 = tan(winkel_rad);
c2 = pos_y-pos_y_alt - m2*(pos_x-pos_x_alt);

// Schnittpunkt der GEraden berechnen
pos_x_neu = ((c2-c1)/(m1-m2))+pos_x_alt;
pos_y_neu = ((m1*c2-m2*c1)/(m1-m2))+pos_y_alt;
pos_z_neu = pos_z;

Aerotech_move(pos_x_neu, pos_y_neu, pos_z_neu);


statusline(ftoa(m1)+' '+ftoa(m2)+' '+ftoa(c1)+' '+ftoa(c2)+' '+' '+ftoa(winkel_mat));


}

jetzt meine Frage.
Wo ist der Fehler?
(Das Koordnatensystem bekommt einen neuen nullpunkt für die Rechnung der auf dem Startpunkt der schleife liegt, weil bei dem Tischkoordinatensystem die rundungsfehler zu gross sind.

Bin für alle Tipps dankbar..

jeffrey
17.09.2008, 15:13
hi,
hab mich da jetzt jicht so genau eingearbeitet. aber ich hab mal paar ideen, woran es liegen könnte. vielleicht beim verfahrbefehl relative oder absoulte positinsangabe verwechselt. fehler bei der transormation von einem koordinatensystem ins andere.
mfg jeffrey
edit: falsches zeug gelöscht ;-)

goara
17.09.2008, 15:18
c der 2. Geraden stimmt, hab ich nochmal nachgerechnet.
Verfahren wird immer nur absolut, desswegen wird auch die pos_x_alt /pos_y_alt addiert. -> Koordinatensystem sollte egal sein.