Tilt-Maze-Mechanismus

Ersatz- und Fremdteile, Modifikationen, etc.
Special Hints - Spare- & foreign parts, Modifications, etc.

Moderator: Jan3D

Forumsregeln
Bitte beachte die Forumsregeln!
atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 29 Mär 2023, 23:26

Hallo Uffi,

uffi hat geschrieben:
29 Mär 2023, 17:30
Das Zittern kann auch an einem zu großen kp oder kd liegen. Versuch mal, diese Werte zu reduzieren, ob das Zittern dann aufhört.

Gruß, uffi
Das Zittern hört auf, wenn man die Motorspannung oder das PWM-Limit herunter setzt. Das erkauft man sich dann mit einer langsameren Ansteuerung.
Tatsächlich hat bei mir die Erhöhung vpn kp von 5 auf 7 auch etwas gebracht. Ich vermute, dass die Anzahl der Motor-Pole und die Trägheit des Motors eine Rolle spielen.

Der Aufbau für den Dreier-Tisch habe ich inzwischen erheblich stabilisiert: Ich habe jetzt auch die genialen in-place-Kugelgelenke (Fiesheyes) von Jan/@juh eingesetzt. Die Antriebsräder haben eine Auslenkung von jeweils 70 Grad. Mit den Motor-Befestigungen bin ich noch nicht ganz zufrieden. Wirkt alles noch etwas klobig.
MM102.JPG
MM102.JPG (1.21 MiB) 4179 mal betrachtet
Die Elektronik besteht aus Arduino-UNO, 2 Motor-Shields, I2C-Weiche für die Magnet-Encoder sowie ADC für Potentiometer-Auslesung (Die Analog-Pins vom UNO sind von den Motor-Shields belegt)
MM101.JPG
MM101.JPG (1.58 MiB) 4179 mal betrachtet
Mit dem Linear-Poti kann ich die Höhe einstellen und mit dem Joystick die Kippwinkel. Grundsätzlich habe ich noch mit Zittern und Geschwindigkeit zu kämpfen. Entweder langsam ohne Zittern oder schneller mit Zittern, wobei schnell halt 1-2s für 70 Grad sind.
Ob eine Balancierung mit diesem Aufbau hinhaut?
Einer meiner Motoren scheint außerdem irgendwie innerlich locker zu sein. Er klopft beim Absenken.

Hier der Blick auf den Antrieb mit Motor und Magnet-Encoder:
MM100.JPG
MM100.JPG (1.2 MiB) 4179 mal betrachtet
Links ist ein AS5600-Magnet-Encoder zu sehen. Ihm gegenüber ein Würfelmagnet auf einer 3D-gedruckten Achshalterung. (Man beachte den Papierfetzen, um Klemmwirkung zu erzielen :lol: ) Die Drehscheiben für die Arme werden über einen Power-Motor mit Schnecke über Z30 bewegt. Der Power-Motor könnte über Z10 locker ein Z40 antreiben. Damit bekomme ich die Zitterbewegungen allerdings gar nicht weg, wie ich mich auch anstelle. Ich frage mich, ob PID-Regler für die Positionierung der optimale Ansatz ist. Wie macht Ihr das bei Euren Modellen?

juh
Beiträge: 904
Registriert: 23 Jan 2012, 13:48

Re: Tilt-Maze-Mechanismus

Beitrag von juh » 30 Mär 2023, 13:22

Hi Florian,

ich habe vor Längerem mal diesen Linienverfolger mit PID implementiert, der Video berichtet ein wenig darüber.

Ich habe damals gelernt, dass das Finden der richtigen Parameter eine Wissenschaft für sich ist und teils schon winzige Änderungen große Auswirkungen haben können. Zittern spricht für Übersteuerung, was eigentlich die Kd Komponente auffangen sollte, bei mir war es aber so, dass größeres Kd das Zittern eher hektischer werden ließ, also eher Ki wieder zurückschrauben etc. pp.

Mein Schluss, auch im Video, war, dass PID zwar super ist, aber alleine nicht alles auffangen kann. Wenn das System z.B. wegen Umkehrspiels verzögert reagiert, weiß PID alleine darüber nichts, das muss man dann zusätzlich ausmessen und implementieren, genauso Totpunkte des Motors etc. Ganz wichtig bei der PID_v1-library muss man die Reaktionszeit massiv runterschrauben, der default ist eher auf Heizungsregelungstempo, aber das hast du sicher schon gemacht, sonst würde es vermutlich gar nicht klappen, vielleicht lässt sich der Arduino-Code auch noch optimieren (z.b Serial output weglassen), um eine möglichst hohe Update-Frequenz zu erreichen.

Ich würde mich also primär darauf konzentrieren, das System so reaktiv und "snappy" wie möglich zu machen und dann wieder mit PID weiter zu machen. Das sind aber nur meine 2 cents, hier gibt es eigentlich einige PID-Expertise im Forum, die vielleicht noch mehr sagen könnte. Der oben verlinkte Thread hat auch noch einige Tipps.

vg
Jan

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 31 Mär 2023, 23:53

Hallo Jan,

danke für Deine Hinweise. Ich konnte es etwas verbessern. Das Zittern ist jetzt weg aber die Geschwindigkeit noch nicht so hoch wie ich es mir wünschen würde. Es gibt wohl Ansätze mit 2 Encodern (Einen am Motor und einen am Drehgelenk) und geschachtelten Regelschleifen, um das Lagerspiel auszugleichen. Immerhin schaffe ich es hin und wieder, einen Tischtennisball mit dem Joystick zu balancieren. Das könnte dann vielleicht auch in einer Regelschleife klappen.

Momentan grübele ich an Grübler's Formel bzgl. der Freiheitsgrade:
dof = m(N-1-J) +summe f(i) mit
m=6 in 3D
Links ( 6 Arme, eine Basis und die Plattform) : N=2*3 + 2 = 8
Lager ( je 3 pro Arm) : J = 3*3 = 9
Summe der Freiheitsgrade der Lager: summe f(i) = 2*3 + 3*3 =15

Grübler sagt dann: 6* (8-1-9) + 15 = 3, also 3 Freiheitsgrade

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 23 Apr 2023, 18:18

Inzwischen bin ich weiter gekommen mit folgendem Setup: schwarzer Powermotor, AS5600-Encoder,

Wenn man die jeweils 8 Werte des AS5600-Sensors mittelt, verschwinden die Oszillationen fast.
Noch besser wird es, wenn man auf den vom PID berechneten PWM-Wert eine Konstante drauf addiert bzw. subtrahiert, je nachdem ob man vor oder rückwärts dreht. Bei 0 wird nix drauf addiert. Dieser kompensiert die durch Coulomb-Reibung verursachten Oszillationen.

Noch besser könnte es gehen wie hier beschrieben:
https://www.researchgate.net/publicatio ... on_control

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 23 Apr 2023, 22:47

Bevor ich mit dem Tripod weiter mache, versuche ich mich erst mal an dem kardanischen Kipp-Mechanismus.
Die Servo-Aktuatoren sind jetzt ziemlich "agil". Der Schwarze Motor schafft mit 1:4-Übersetzung eine schnelle Kippung der Plattform:
Tilt-Maze
Tilt-Maze
MM201.JPG (1.1 MiB) 3898 mal betrachtet
Momentan kämpfe ich mit zwei Problemen:
1. Manchmal bleibt ein Offset, so dass die Plattform nicht genau dort anhält, wo sie soll. Wobei das nur unter Last passiert.
2. Durch die ruckartigen Steuerbeweungen lösen sich nach einier Zeit die Hebel von den Drehscheiben
Servo-Antrieb für Kipphebel: inks Motor mit Z10, Magnet auf der Motorachse; AS5600-Encoder für Positionserkennung
Servo-Antrieb für Kipphebel: inks Motor mit Z10, Magnet auf der Motorachse; AS5600-Encoder für Positionserkennung
MM202.JPG (1.17 MiB) 3898 mal betrachtet

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 25 Apr 2023, 00:08

Die Regelung ist ziemlich fummelig. Die Drehscheiben haben einen Arbeitswinkel von 45 Grad, was bei einer 1:4-Übersetzung einer halben Motor-Umdrehung entspricht, wobei der Motor ja intern auch eine Übersetzung hat. Ich könnte eine weitere Übersetzung reinbauen. Dann wird es allerdings wieder langsamer und ich bekomme noch mehr Schlupf in den Zahnrädern .

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 25 Apr 2023, 23:35

Mit den alten klassischen FT-Motoren plus Getriebe und Magnetencoder kann man auch recht brauchbaren Servo bauen:
Mot7.JPG
Mot7.JPG (1.17 MiB) 3788 mal betrachtet
Man sieht noch ein paar Überschwinger:
Figure_1.png
Figure_1.png (157.69 KiB) 3788 mal betrachtet
Edit: Die Ansteuerung erfolgt über einen analogen 2D-Joystick. Die Potis (X und Y) werden über die Arduino-AD-Pins ausgelesen, Die Mischerregel ist programmiert als:
SOLL0 = 0.5 * ( X + Y)
SOLL1 = 0.5 * (X - Y + 2048)
mit X,Y in [1500,2500] wobei (Xraw,Yraw in [0,1024])

Der Winkelstellwert ist das Reading des Magnetencoders, das von 0..4096 geht.

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 01 Mai 2023, 22:59

Parallel zu meinen anhaltenden Bemühungen, aus den ft-Motoren Servos zu bauen, habe ich nun mal Modellbau-Servos für den Tilt-Maze-Mechanismus eingesetzt. Montage erfolgte nur mittels Schrauben.
Servo1.JPG
Servo1.JPG (965.7 KiB) 3724 mal betrachtet
Servo2.JPG
Servo2.JPG (1.08 MiB) 3724 mal betrachtet
Servo3.JPG
Servo3.JPG (1.45 MiB) 3724 mal betrachtet
Damit kann eine exzellente Agilität erreicht werden. Diese Servos sind ziemlich flott und haben ein ausreichendes Drehmoment, um die Plattform zu heben.

Benutzeravatar
geometer
Beiträge: 595
Registriert: 28 Jan 2011, 12:24
Wohnort: Bochum
Kontaktdaten:

Re: Tilt-Maze-Mechanismus

Beitrag von geometer » 02 Mai 2023, 08:10

Hallo Florian,

wenn Dir die Hebel aus den Drehscheiben rutschen, hilft Dir vielleicht diese starre Befestigungsmöglichkeit.

Viele Grüße

Thomas
DrehscheibenBef.jpg
DrehscheibenBef.jpg (163.36 KiB) 3702 mal betrachtet

Karl
Beiträge: 2212
Registriert: 24 Sep 2016, 17:28

Re: Tilt-Maze-Mechanismus

Beitrag von Karl » 02 Mai 2023, 08:40

Hallo Thomas,
prima Idee.
Schon mal die Anwartschaft auf den ersten Preis für die.., "Idee des Jahres". ;)

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 02 Mai 2023, 22:13

geometer hat geschrieben:
02 Mai 2023, 08:10
Hallo Florian,

wenn Dir die Hebel aus den Drehscheiben rutschen, hilft Dir vielleicht diese starre Befestigungsmöglichkeit.

Viele Grüße

Thomas
DrehscheibenBef.jpg
Hallo Thomas,

Klasse Idee! Da muss man erst drauf kommen. Herzlichen Dank!
Hält prima und bombenfest. Habe noch einen Nutverbinder für den radialen Ausleger spendiert
Servo4.JPG
Servo4.JPG (1.1 MiB) 3622 mal betrachtet
PS: Die Servos so so schnell, dass man mit denen fast Tischtennis spielen kann.

Benutzeravatar
fishfriend
Beiträge: 1791
Registriert: 26 Nov 2010, 11:45

Re: Tilt-Maze-Mechanismus

Beitrag von fishfriend » 02 Mai 2023, 22:30

Hallo...
...oder 60° Bausteine und in die nächste Nut jew. ein Baustein 15.
Mit freundlichen Grüßen
fishfriend
Holger Howey
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 03 Mai 2023, 16:27

fishfriend hat geschrieben:
02 Mai 2023, 22:30
Hallo...
...oder 60° Bausteine und in die nächste Nut jew. ein Baustein 15.
Mit freundlichen Grüßen
fishfriend
Holger Howey
Hallo Holger.
Das stimmt. Das ist auch eine sehr gute Möglichkeit, wenn nicht gar die Naheliegenste. Das wäre eine gute Prüfungsaufgabe, wenn ft ein Schulfach wäre :lol:

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 24 Mai 2023, 23:00

Für die Kinematik dieses parallelen Mechanismus' braucht man eine 'Closing Equation', mit der man die geschlossene kinematische Kette berechnen kann. Der Ansatz ist Folgender:
1. Die Kippungen der Plattform in x- und y-Richtung kann durch Drehmatrizen Rx(phi) und Ry(theta) beschrieben werden.
Die Ansatzpunkte für die distalen Arme in Plattform-Ebene werden durch die Drehmatrix Rx * Ry im Raum gekippt.

Code: Alles auswählen

p_m = [ -v*cos(theta), - v * sin(phi)* sin(theta) - w * cos(phi), +v * cos(phi)*sin(theta) - w * sin(phi)+ hs]
p_p = [ +v*cos(theta), + v * sin(phi)* sin(theta) - w * cos(phi), -v * cos(phi)*sin(theta) - w * sin(phi)+ hs]

2. Die Aktuatoren drehen die proximalen Arme um die y-Achse. Die Endpunkte dieser Arme sind ebenfalls Ansatzpunkte für die distalen Arme (Das sind die mit den Kugelgelenken)

Code: Alles auswählen

q_m = [  u * cos(alpha) - r, -w, -u * sin(alpha) + h ]
q_p = [  u * cos(beta)  + r, -w, -u * sin(beta) + h ]
  
3. Die Differenzen der Ansatzpunkte (1-2, jeweils links und rechts) müssen dann immer die gleiche Länge (hier l) haben.

Code: Alles auswählen

eq_m = (p_m[0] - q_m[0])**2 +(p_m[1] - q_m[1])**2 + (p_m[2]-q_m[2])**2 - l**2
eq_p = (p_p[0] - q_p[0])**2 +(p_p[1] - q_p[1])**2 + (p_p[2]-q_p[2])**2 - l**2 
Beide Bedingungen müssen simultan und unabhängig voneinander erfüllt sein, was mit folgender "Clsoing Equation" erreicht werden kann:

Code: Alles auswählen

cleq = eq_m **2 + eq_p ** 2  
(Die Quadrierungen verhindern, dass der linke den rechten Term kompensiert)

Für mein Modell gelten folgende Parameter:

Code: Alles auswählen

  u = 7   # proximal arm length
  v = 12  # x/2 Tilt Platform
  w =  8  # y/2 Tilt Platform
  r = 19  # x-pos Actuator
  h  = 8  # z-pos Actuator
  hs = 7  # central ball joint Tilt Platform ( instead of cardanic frame for simplicity)
  l = 5   # distal arm length
Die Lösung der Closing-Equation kann man mit der nlspol-Funktion von Casadi https://web.casadi.org/docs/ machen, eine python-Bibliothek, die algorithmische Differentiation beherrscht. D.h. es werden Variablen phi, theta, alpha und beta definiert. Die Funktionen bleiben erhalten und können "algorithmisch" differenziert werden, was für die Numerik von Vorteil ist. Hier werden die Stellwinkel für die Horizontalposition der Plattform berechnet:

Code: Alles auswählen

 # first: caclulate Zero-Position:
  nlp = {'x': actangle, 'f':  cleq, 'p': tiltangle}
  nlp_solver = casadi.nlpsol('backward', 'ipopt', nlp, opts)
  x0old = [0.1,0.1]
  solution = nlp_solver(x0=x0old, p=[0,0])
  r= np.array( solution['x'] )
  print( degrees(r[0]), degrees(r[1]))
Das Bild zeigt eine Schaar von Lösungen für phi und theta der Plattform-Kippung in Abhängigkeit des "gleichsinnigen Stellwinkels" (D.h. beide Aktuatoren werden gleichsinnig geändert). Die grünen Kurven geben die Kippung um y (links/rechts) an. Die blauen Kurven entsprechen diskreten "gegensinnigen Stellwinkel-Einstellungen". (Kippung um x (vorne/hinten)


Man sieht, dass der Verlauf der Kippung kaum vom gleichsinnigen Stellwinkel abhängt und dass die Kippung mit dem "gleichsinnigen Stellwinkel" fast linear ist.
Bildschirmfoto vom 2023-05-24 23-04-17.png
Bildschirmfoto vom 2023-05-24 23-04-17.png (63.1 KiB) 2949 mal betrachtet
Gleiches gilt für die "andere Richtung"
Bildschirmfoto vom 2023-05-24 23-06-21.png
Bildschirmfoto vom 2023-05-24 23-06-21.png (53.48 KiB) 2949 mal betrachtet
D.h. die Kippungen sollten durch lineare Funktionen der stellwinkel angenähert werden können. Bei 10 Grad Tilt nach vorne kommt es zum "Übersprechen" der Richtungen. Aber für kleine Winkel passt das.

Ich hoffe, dass ich das richtig berechnet habe. Weshalb die untere Kurven nicht symmetrisch sind, kann ich nicht sagen. Das sollte nicht so sein. Vielleicht ist ja doch noch ein Denkfehler drin.

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 26 Mai 2023, 23:52

Um eine Kugel mit dem Tilt-Mechanismus zu balancieren, habe ich mir die Software aus folgendem Projekt von Johan Link näher angesehen und angepasst:
https://blog.adafruit.com/2019/08/21/a- ... chipmakes/
Auf dem Linux-PC läuft Camera-Auswertung und PID-Regler. Die Kugel wird von einer Camera beobachtet und mittels OpenCV getrackt.
Im Arduino läuft die Servo-Ansteuerung. Dort habe ich die Fit-Geraden für die inverse Kinematik hinterlegt. Via serieller Schnittstelle werden die Plattform-Kippwinkel übertragen und in die Aktuator-Winkel umgerechnet.

Da ich einen vereinfachten Tilt-Maze-Mechanismus mit 2 Armen verwende ist das Ganze auch wesentlich einfacher. Meine PID-Regelschleife:

Code: Alles auswählen

Ix = Kp*(consigneX-ballPosX) + Ki*sommeErreurX + Kd*((prevBallPosX-ballPosX)/0.0333)
Iy = Kp*(consigneY-ballPosY) + Ki*sommeErreurY + Kd*((prevBallPosY-ballPosY)/0.0333)

Ix = round(Ix/10000, 4)
Iy = round(Iy/10000, 4)
alpha = -Ix *20
beta = -Iy *20
if alpha < -20:
   alpha = -20
elif alpha>20:
   alpha = 20
 if beta < -20:
    beta = -20
 elif beta>20:
    beta = 20
    
 alpha = prevAlpha * omega + (1-omega) * alpha
 beta = prevBeta * omega + (1-omega) * beta

 alpha = round(round(alpha / 0.2) * 0.2, -int(floor(log10(0.2))))   ## permet d'arrondire avec 0.2 de précision
 beta = round(round(beta / 0.2) * 0.2, -int(floor(log10(0.2))))

Hier ist jetzt keine Physik reincodiert, sondern die vom PID berechneten Werte mit Faktor 20 multipliziert. Die Software regelt bis die Kugel still steht.
So sieht das auf meiner Linux-Box aus:
Balancer.png
Balancer.png (669.01 KiB) 2804 mal betrachtet
Johan Link hat diese Arbeit als Facharbeit in seiner Schulzeit angefertigt. 3D-Design, PCB-Layout und Regeltechnik. Ganz schön beeindruckend, was manche in der Schule machen.

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 27 Mai 2023, 11:54

Und hier ein Video davon:
https://vimeo.com/830783835?share=copy

juh
Beiträge: 904
Registriert: 23 Jan 2012, 13:48

Re: Tilt-Maze-Mechanismus

Beitrag von juh » 27 Mai 2023, 14:36

atzensepp hat geschrieben:
27 Mai 2023, 11:54
Und hier ein Video davon:
https://vimeo.com/830783835?share=copy
Hallo Florian,

spannend mal wieder! Den Video kann ich allerdings leider nicht anschauen:
Dieses Video wurde nicht bewertet. Melde dich an, um das Video anschauen zu können.
vg
Jan

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 27 Mai 2023, 15:49

juh hat geschrieben:
27 Mai 2023, 14:36
atzensepp hat geschrieben:
27 Mai 2023, 11:54
Und hier ein Video davon:
https://vimeo.com/830783835?share=copy
Hallo Florian,

spannend mal wieder! Den Video kann ich allerdings leider nicht anschauen:
Dieses Video wurde nicht bewertet. Melde dich an, um das Video anschauen zu können.
vg
Jan
Hallo Jan,
ich habe jetzt ein Content-Rating (Adult,...) abgegeben. Ich hoffe, es funktioniert jetzt.

atzensepp
Beiträge: 658
Registriert: 10 Jul 2012, 21:40
Wohnort: Uttenreuth

Re: Tilt-Maze-Mechanismus

Beitrag von atzensepp » 27 Mai 2023, 18:44

Ein anderer Run auf Youtube:
https://www.youtube.com/watch?v=CZvZsMFDSrA

juh
Beiträge: 904
Registriert: 23 Jan 2012, 13:48

Re: Tilt-Maze-Mechanismus

Beitrag von juh » 27 Mai 2023, 22:33

Jetzt klappt's, auch bei Vimeo. :-)

Das scheint ja schon sehr gut zu laufen! Mich wundert etwas, dass Du die ft-Grundplatte ohne Abdeckung verwendest. Klar fallen die Löcher beim großen Radius der Kugel nicht so ins Gewicht. Dennoch hätte ich gemeint, dass sie bei einer so sensiblen Steuerung einen zumindest kleinen Unterschied machen könnten?

vg
Jan

Antworten