Der Thread ist nun schon etwas in die Jahre gekommen. Da das Thema in der Robotik immer wieder auftaucht, habe ich mir auch schon so meine Gedanken gemacht.

Das Problem ist ja klar, laufen die Motoren nicht gleich, so fährt der Roboter eine Kurve. Die Motoren müssen dann synchronisiert werden. Will man hingegen eine Kurve fahren, so Würde man gerne Winkel, Radius und Geschwindigkeit vorgeben. Im Asuro wurde ja bereit eine Kurvenfunktion implementiert. In diesem Thread ging es aber darum: Wer was machen sollte.

Ganz rechts sind die Motoren mit den Encodern zur Messung der Drehzahl. Bei mir sind die Encoder an den Motoren, weshalb das Getriebe und so erst dahinter kommt. Jeder Motor hat eine eigene Drehzahlregelung, die aus der Differenz von Soll-Drehzahl und Encoderwerten den neuen Motorstellwerten generiert.
Bei dem Differential muss ich immer an mein LEGO-Auto denken, es kann zum einen die Gesamtgeschwindigkeit des Roboters übertragen und zum anderen das Verhältnis von linken zu rechten Motor bestimmen (Drehung um die eigene Achse / Gear). Deswegen sollte das Soft-Differential auch zwei Regler enthalten: den Gear-Regler und den Speed-Regler. Der Speed-Regler bezieht sich hierbei auf die Geschwindigkeit des gesamten Roboters (Robotermittelpunkt). Diese Vergleichen wieder die jeweiligen Sollwerte, mit den aus den Encodern ermittelten Ist-Werten.

Diese Sollwerte (Soll-Radius und Soll-Geschwindigkeit) sollten von einem übergeordneten Controller (z.B. Tabelle für das Haus vom Nicolaus) erstellt werden.

Bild hier