Transparenz: Dieser Beitrag ist fast 1:1 auch im Forum von mikrocontroller.net erschienen. Da ich dort jedoch auf die Community hier aufmerksam (gemacht) wurde, erstelle ich diesen Post, da es thematisch meiner Meinung gut in das Board passt. Vielleicht findet sich ja der ein oder andere Interessierte.

Hallo zusammen,

kurze Einleitung, da ich den Bereich in drei Bereiche aufteile:

  1. Kurze Zusammenfassung ohne viel Kontext, für die, die es eilig haben
  2. Kontext
  3. Ausführlichere Frage mit einigen Details



Wer also möchte, kann sich gerne Teil 2 und 3 durchlesen. Weil auf dem Sprung ist, schaut sich nur Teil 1 an.

Teil 1: tl;dr

Simulation von fahrendem Roboter mit je einem bürstenlosen Gleichstrommotor pro Rad, im Stillstand benötigt ein Motor ca. 50 ms bis er eine messbare Bewegung erzeugt, in Bewegung ca. 30 ms bis zur messbaren Veränderung, Messfehler nicht auszuschließen, Aufzeichnung mit 50 Hz. Ziel: Findung von allgemeiner Begründung für diese Verzögerungen, welche für möglichst viele Motoren gilt. Frage: Welche Faktoren können dies sein? Losbrechmoment? Zeit bis Magnetfeld aufgebaut ist? Hilfe und Ideen gerne willkommen. Bin neu auf dem Gebiet.

Teil 2: Kontext

Ich arbeite derzeit an einem Simulator für ein omnidirektionalen Roboter mit Mecanum-Rädern. Gedanke ist dabei einen ROS-Vektor aus (x, y, z) Komponenten möglichst realitätsnah im Simulator abzubilden. Der fahrende Roboter selbst verfügt über vier Mecanum-Räder, welche jeweils einen eigenen bürstenlosen Gleichstrommotor haben. Die Umrechnung des Vektors in einzelne RPM pro Rad übernimmt beim Roboter ein verbauter Controller, in meiner Simulation mache ich dies über die Kinematik. Der Roboter selbst ist als komplette Blackbox zu betrachten, wo nur wenige Informationen zu bekannt sind. Vor allem kann nichts nachgemessen werden (Spannungen etc.).

Grund dafür ist, dass die Simulation so allgemeingültig wie möglich sein soll. Natürlich entstehen dadurch Grenzen der Genauigkeit, dies ist bewusst. Unbekannte Parameter, wie z.B. Reibungskoeffizienten, Reglungsparameter, Höhe des Schwerpunktes etc. werden für eine Art von Roboter per Optimierung ermittelt. Dazu werden in Fahrten die Radumdrehungen pro Rad vom Controller abgefragt (Odometrie, 50 Hz). Die Bewegung im Raum wird durch eine externe Messeinrichtung aufgezeichnet. Es wird also für einen angelegten Vektor sowohl die Odometrie als die Positionsinformationen im Raum aufgezeichnet, was dann als Grundlage zur Optimierung der Parameter dienen.

Teil 3: Ausführlichere Frage mit einigen Details

Die Simulation arbeitet derzeit so, dass jeder Motor einen eigenen PID-Regler besitzt, welcher die Ziel-RPM erhält und entsprechend regelt. Die Ausgabe des PID-Reglers kann als Pseudo-Spannung angesehen werden und wird dann durch optimierte Parameter zu Drehmoment umgerechnet usw.

In den aufgezeichneten Daten des echten Roboters zeigt sich jedoch, dass zwischen Anlegen des Vektors im Controller und ersten messbaren Veränderungen am Rad eine gewisse Zeit vergeht. Steht der Roboter still, dann sind dies ca. 50 ms, bewegt er sich schon sind dies ca. 30 ms. Da die Daten nur mit max. 50 Hz ausgelesen werden können, sind hier gewisse Ungenauigkeiten unumgänglich.

Ich möchte nun verstehen was zu diesen Zeiten führen kann, neben der Berechungszeit im Controller selbst. Oft habe ich etwas zum Losbrechmoment gelesen, jedoch konnte ich nie eine genaue Definition davon finden. Daher ist für mich nun schwer zu beurteilen, wo hier "etwas losbrechen" soll. Geht es um die Bewegung zwischen Anker und Ständer im Gleichstrommotor oder um die Reibung zwischen Rad und Boden? Ich habe mich auch schon etwas in die Materie der Elektro-Technik eingelesen und wenn ich es richtig verstanden habe, dann muss über Spannung erst ein Magnetfeld im Motor ausgebaut werden, was natürlich auch Zeit kostet. Wenn eine gewisse RPM erreicht ist und dann beschleunigt werden soll, dann muss - nach meinem Verständnis - das Magnetfeld verstärkt werden, so dass der Anker sich schneller dreht.

Über den Motor kann ich nur sagen, dass dieser bürstenlos ist. Der Hersteller des Roboters gibt noch an, dass eine Feldorientierte Regelung (FOC) genutzt wird und u.a. ein Soft-Start-Schutz vorhanden ist.

Wie aber schon erwähnt bin ich aber nicht daran interessiert diesen einen Motor zu simulieren sondern auf einem höheren Level "einen allgemeinen bürstenlosen Gleichstrommotor", welcher mit gewissen Toleranzen mit Optimierung auf mehrere unterschiedliche Motoren trainierbar ist.

Ich habe mal Bilder von zwei Aufzeichnungen beigefügt. Die Farbe Grün bitte ignorieren, Gelb ist die gemessene Umdrehung. Gezeigt wird ein Rad. Bei einer Grafik verdeutlicht die rote Linie den Zeitpunkt an dem die Zielgröße, blaue Linie, angelegt wurde. Man sieht dann einen Moment keine Reaktion, dann einen "parabel-ähnlichen"-Anstieg der Drehzahl. Ab einem gewissen Zeitpunkt ist der Zuwachs an Umdrehungen dann praktisch linear. Die untere Achse steht für Sekunden.

Klicke auf die Grafik für eine größere Ansicht

Name:	rpm.png
Hits:	5
Größe:	51,7 KB
ID:	35612

Klicke auf die Grafik für eine größere Ansicht

Name:	rpm2.jpg
Hits:	4
Größe:	14,2 KB
ID:	35611

Mit diesem Roman Suche ich nun Leute, die bereit wären, mit mir diese Sache zu analysieren bzw. mir hilfreiche Anhaltspunkte zu geben, welche Faktoren diese Zeiten erklären könnten. Da ich in diesem Bereich nur Laie bin, kann mit Rückfragen von meiner Seite gerechnet werden

Danke für eure Zeit!

Um also mit einer konkreten Frage abzuschließen: Liege ich mit den Punkten Losbrechmoment und Aufbau des Magnetfeldes schon einmal richtig? Oder habe ich essenzielles vergessen/übersehen?