Hallo!

Ich bin in Sachen Regelungstechnik ein blutiger Anfänger und hoffe, dass mir hier vielleicht jemand mit ausreichend Fachwissen behilflich sein kann

Ich arbeite zurzeit im Rahmen eines Projekts daran die Abstandsregelung eines Roboters mit Mecanum Rädern zu realisieren. Der Roboter ist von der Firma Makeblock und wird über einen Arduino Uno programmiert.

Ansteuerung der Motoren funktioniert, den Regler habe ich als PID-Regler ebenfalls bereits implementiert. Der Code dazu sieht so aus:

Code:
  if(currentMicros - previousMicros > TaMicros) {
    previousMicros = currentMicros;
    //Fehler bestimmen
    e = d_soll - d_ist;
    //Integration approximieren; mit Anti-Windup-> wenn Stellgröße zu groß Aufintegrieren stoppen
    if((vy < 1) && (vy > -1)) esum = esum + e;
    //Reglergleichung
    vy = -( Kp*e + Ki*Ta*esum + Kd*(e-ealt)/Ta );
    //Ableitung approximieren
    ealt = e;
    //Stellgröße begrenzen
    if(vy > 1) vy = 1;
    if(vy < -1) vy = -1;
Die Tastzeit Messungen haben Werte zwischen ca. 17000 und 25000 µs ergeben. Nun wollte ich versuchen, vernünftige Werte für die Regler Parameter zu finden. Dazu wollte ich zunächst empirisch vorgehen. Deshalb habe ich mit einem kleinen Wert für den P Anteil angefangen. Grundsätzlich verhält der Regler sich auch richtig (Roboter versucht Soll-Abstand herzustellen), allerdings fällt eine Sache mMn schwer ins Gewicht. Der Roboter scheint "zeitversetzt" auf den Regelfehler zu reagieren. Ich habe dann mit den Werten rum experementiert, habe es allerdings nicht geschafft bessere Regelergebnisse zu erhalten. Das Problem mit der zeitlichen Verzögerung fällt meiner Vermutung nach zu schwer ins Gewicht. Zum besseren Verständnis des Problems habe ich mal ein kleines Video angehängt (hier ist nur ein P-Anteil von 1,5 vorhanden).



Kann es sein, dass ich es hier mit einer sehr großen Totzeit der Regelstrecke zu tun habe? Und wenn ja, gibt es eine Möglichkeit diese zu umgehen?

Vielen Dank im Voraus!