Hallo teHIngo
Das habe ich auch nicht so aufgefasst. Ich war nur im ersten Moment überrascht von dem recht eigenständigen Lösungsansatz und von den vielen verschachtelten Schleifen verwirrt. Bei genauerer Betrachtung wurde mir die Funktion dann klarer, allerdings weiß ich auch noch nicht sicher, wo der Denkfehler liegt.Ich wollte mit meinem letzten Post keineswegs vorlaut oder fordernd sein
Richtung[] dient dazu, das Programm etwas mit den Codescheiben zu syncronisieren. In deiner Version hätte die selbe ansteigende oder abfallende Flanke mehrfach hintereinander erkannt werden können. Jetzt wird nach erkannter Flanke nur die nächste in der Gegenrichtung als gültig zugelassen. spd0/1 werden sehr wohl zu 0, aber eben nicht kleiner als 0. Allerdings bleiben die Motoren schon deutlich früher stehen.
Ich vermute, die f-Schleife ist ein Problem, denn wir prüfen j*i*warten_auf_Flanke_in_der_richtigen_Richtung lang nur eine Seite und verpassen dabei alle Segmentwechsel auf der anderen Seite. Vielleicht sollte man anstelle der f-Schleife innerhalb der j-schleife beide Seiten gleichzeitig auswerten. Die ODO-Daten werden ja sowieso gleichzeitig eingelesen, aber immer nur für f-Seite ausgewertet. Dazu müste man aber alle [f]-Indizies(?) nach [0] und [1] auflösen.
Ein anderes Problem könnte die Schrittweite von spd0/1 sein. Wenn der Drehzahlunterschied zu schnell größer wird, kann man ihn nicht einholen, wenn nur nach allen 10 e-Schleifendurchgängen die Werte für MotorSpeed() nur um einen Punkt geändert werden. Vielleicht sollten spd0/1 in 5er oder gar 10er-Schritten geändert werden. Man könnte die e-Schleife vielleicht auch ganz löschen, dann würde häufiger ein neuer MotorSpeed()-Wert ermittelt und gesetzt.
Wichtig bei der Odometrie sind auch noch die Optimierungen der Sensorik: Ausrichtung der Bauteile, Verringerung des axialen Spiels der Codescheiben und Schutz vor Fremdlichteinflüssen.
Die meisten hier verwenden Codes die sie irgendwo kopiert haben oder nutzen die aktuelle Library und wissen nicht, wie das im Hintergrund gemacht wird. Deinen Weg das selbst zu ergründen halte ich aber für sehr viel besser....aber erstmal habe ich den ehrgeiz das hier endlich zum laufen zu bringen
Gruß
mic
Lesezeichen