Consiglio PID segway

Salve,

prma di procedere alla taratura manuale del PID che bilancia il mio segway (SI CI STO ANCORA LAVORANDO!! :zipper_mouth_face: DA DICEMBRE :~), mi chiedevo se poteste consigliarmi qualche miglioria o correzione da aggiungere nella funzione.
(Il SampleTime è 0.1 secondi e non ho riportato le variabili per semplicità.)

     int ComputePid(){
  
unsigned long now = millis();
unsigned long timeChange = (now - lastTime);
      
   if(timeChange>=SampleTime)
   {
         error = Setpoint - input;
         
      ITerm += (ki * error * timeChange);
  
      if(ITerm > 1000) ITerm= 0;
      if(ITerm < -1000) ITerm= 0;    
      
      PTerm = kp * error;
      
      if(PTerm >= outMax) PTerm= outMax;
      if(PTerm < -outMax) PTerm= -outMax;
      
      DTerm = kd * ((error - lastErr)/timeChange);
      
      output = PTerm + ITerm - DTerm;
      
      if(output <= -outMax) output= outMax;
      
      if(output > outMax) output = outMax;
	  
      lastInput = input;
      lastTime = now;
      lastErr = error;
}}

Vedi se questo può esserti utile:
playground.arduino.cc/Code/PIDAutotuneLibrary

Ti ringrazio dapprima dell'aiuto, ma sto cercando di capire tutto quello che faccio e mi sembra eccessivo per fare il tuning del mio PID entrare nel mondo dell'auto-tuning... Grazie mille comunque, non si sa mai che lo utilizzi per sviluppi futuri....

Sapresti indicarmi una tecnica (non necessariamente complessa, anche empirica) per settare kp ki e kd del PID?