Kinematik Datei - Berechnung für B-Achse hinzufügen

More
18 Mar 2023 10:36 #266979 by zinsade
Hallo in das Forum
In den Kinematik-Dateien werden doch die Berechnungen der Achsen zueinander durchgeführt.
An welcher Stelle kann man der B-Achse eine Formel bzw. eine Berechnung mit auf den Weg geben?

Info zur Maschine:
Mein Antrieb der B-Achse ist ein Kugel-Gewinde-Linearantrieb mit einer Closed-Loop-Stepper Kombi Nema34/HSS86.
Die Drehbewegung wird über einen Kurbeltrieb bzw. Kurbelschwinge realisiert.
Meine Maschine ist ein 6-Achsen Eigenbau Fahrständer.
Sie hat eine 5-Achsen XYZBC- und eine 4-Achsen XYZA Kinematik.
Die A-Achse ist auf der Linken Seite auf dem Starrtisch aufgebaut.
Die B-Achse ist als Schwenktisch auf der rechten Seite neben dem Starrtisch montiert mit der C-Achse darauf.
Verfahrwege:
X 0 bis -802mm
Y 0 bis -394mm
Z 0 bis -394mm
A +-360 Grad unendlich
B 2 bis -92Grad
C +-360 Grad unendlich

Die Antriebe werden über eine 5i25 mit zwei 7i76 gesteuert.
Ich benutze momentan die Version 2.8.4 auf Buster mit Axis-Gui.
Es soll aber nun bald auf die Version 2.9 gehen.

Nach langem Suchen habe ich diesen Thread gefunden:
forum.linuxcnc.org/24-hal-components/290...d-kinematics?start=0
Dort wird die Datei "trivkins.c" verändert und der Z-Achse eine Korrektur mit gegeben.
Die Datei wurde dort in "kk1000skins.c" umbenannt.
Nun sehen in V2.9 die "trivkins" und auch die Anderen wie z.B. die "xyzbc-trt-kins.c" etwas anders aus.
Wahrscheinlich wegen der "Switchkins" Umstellung?.

Nun habe ich nicht wirklich eine Ahnung von Programmieren in C.
Jedoch würde ich mich da gern etwas einarbeiten wollen um das Problem zu lösen.

Meine Vermutung ist, das es diese Datei ist:
V2.9  >linuxcnc-master/src/emc/kinematics/trtfuncs.c<
Oder in welcher Datei und an welcher Stelle muss ich da was ändern oder hinzufügen?

Anbei mal zum Verständnis die Geogebradatei mit Bild und Foto vom Schwenktisch.

Man sieht am Drehpunkt der Achse meinen Versuch das Problem über einen Drehencoder und PID zu lösen, was eigentlich das Beste wäre.
Alle meine Versuche ergaben kein befriedigentes Ergebnis. Die Achse zitterte gewaltig und war nicht ruhig zu bekommen.
Einzig mit sehr geringen P-Werten war sie ruhig, aber unbrauchbar langsam. Da möchte ich jedoch parallel noch weiter experimentieren.
Deshalb nun der Versuch das über die Kinematikdatei lösen zu wollen. 

MfG
Peter
Attachments:

Please Log in or Create an account to join the conversation.

More
18 Mar 2023 11:22 - 18 Mar 2023 11:22 #266981 by Aciera
Für eigene Kinematikmodelle würde ich eine bestehende Kinemaikkomponente wie 'millturn.comp' oder 'xyzab_tdr_kins.comp' im Ordner '/home/user/linuxcnc-dev-march/src/hal/components' anschauen. Diese basieren auf der 'userkins.comp' Vorlage (ebenfalls im gleichen Ordner zu finden.) Vorteil ist, dass du fast keine C-programmierkenntnisse benötigst und die Komponente mit 'halcompile' installiert werden kann.

Hier ist die Dokumentation zur xyzab_tdr_kins: forum.linuxcnc.org/10-advanced-configura...mill?start=80#263694
Last edit: 18 Mar 2023 11:22 by Aciera.

Please Log in or Create an account to join the conversation.

More
18 Mar 2023 12:32 #266990 by zinsade
Vielen Dank,
Das hatte ich mir schon mal übersetzen lassen und auch angeschaut.
Da habe ich aber das gleiche Problem, weil ich den genauen Ort nicht weiß.
Ich muss ja die Linearbewegung meiner B-Achse (Kugelrollspindel-Weg 275mm) in eine Drehbewegung 90 Grad umrechnen lassen.
An welcher Stelle muss die Formel eingebaut werden?

hier?
pos->b = j[4];
und hier?
j[4] = pos->b;

Hast du da mal ein kleines Beispiel?

Gruß Peter

Please Log in or Create an account to join the conversation.

More
18 Mar 2023 16:03 - 18 Mar 2023 16:06 #267011 by Aciera
Ja, genau.

Die FORWARD Kinematik berechnet den Winkelwert 'pos->b' für einen gegebenen Jointwert 'j[4]'. Stellung der Kugelrollspindel wäre der j[4] Wert.
pos->b = deine_funktion(j[4])

Die INVERSE Kinematik berechnet dann die Stellung der Kugelrollspindel für einen gegebenen Winkelwert.
j[4] = deine_inverse_funktion(pos->b)
 
Last edit: 18 Mar 2023 16:06 by Aciera.

Please Log in or Create an account to join the conversation.

More
18 Mar 2023 18:00 - 18 Mar 2023 18:02 #267018 by zinsade
Ah, super.
Dann werde ich mich da mal versuchen rein zu fuchsen.
Dann ist es ja wahrscheinlich die gleiche Stelle in der >trtfuncs.c<
Vorwärts in Zeile 285 > pos->b = joints[JB]; <
und
Rückwärts in Zeile 332 > P.b = pos->b; <

Das wird allerdings eine Weile dauern.
Leider kommt jetzt erstmal die Gartenarbeit und andere Dinge dazwischen.

Vielen Dank!
Gruß Peter
Last edit: 18 Mar 2023 18:02 by zinsade.

Please Log in or Create an account to join the conversation.

Time to create page: 0.083 seconds
Powered by Kunena Forum