@@ -246,12 +246,14 @@ def printImproperTfError(self):
246246 def createPidLayout (self ):
247247 layout_pid = QFormLayout ()
248248
249+ layout_pid .addRow (QLabel ("Ideal/Standard: Kp * [1 + Ki + Kd]\t (Parallel: Kp + Ki + Kd)" ))
250+
249251 layout_k = QHBoxLayout ()
250252 self .slider_k = DoubleSlider (Qt .Horizontal )
251253 self .slider_k .setMinimum (0.01 )
252- self .slider_k .setMaximum (0.5 )
254+ self .slider_k .setMaximum (4.0 )
253255 self .slider_k .setInterval (0.01 )
254- self .lbl_k = QLabel ("{:.2f}" .format (self .kc ))
256+ self .lbl_k = QLabel ("{:.2f} ({:.2f}) " .format (self . kc , self .kc ))
255257 layout_k .addWidget (self .slider_k )
256258 layout_k .addWidget (self .lbl_k )
257259 self .slider_k .valueChanged .connect (self .updateLabelK )
@@ -262,7 +264,7 @@ def createPidLayout(self):
262264 self .slider_i .setMinimum (0.0 )
263265 self .slider_i .setMaximum (20.0 )
264266 self .slider_i .setInterval (0.1 )
265- self .lbl_i = QLabel ("{:.2f}" .format (self .ki ))
267+ self .lbl_i = QLabel ("{:.2f} ({:.2f}) " .format (self . ki , self . kc * self .ki ))
266268 layout_i .addWidget (self .slider_i )
267269 layout_i .addWidget (self .lbl_i )
268270 self .slider_i .valueChanged .connect (self .updateLabelI )
@@ -273,7 +275,7 @@ def createPidLayout(self):
273275 self .slider_d .setMinimum (0.0 )
274276 self .slider_d .setMaximum (0.2 )
275277 self .slider_d .setInterval (0.001 )
276- self .lbl_d = QLabel ("{:.3f}" .format (self .kd ))
278+ self .lbl_d = QLabel ("{:.3f} ({:.4f}) " .format (self . kd , self . kc * self .kd ))
277279 layout_d .addWidget (self .slider_d )
278280 layout_d .addWidget (self .lbl_d )
279281 self .slider_d .valueChanged .connect (self .updateLabelD )
@@ -282,9 +284,9 @@ def createPidLayout(self):
282284 layout_ff = QHBoxLayout ()
283285 self .slider_ff = DoubleSlider (Qt .Horizontal )
284286 self .slider_ff .setMinimum (0.0 )
285- self .slider_ff .setMaximum (1 .0 )
287+ self .slider_ff .setMaximum (5 .0 )
286288 self .slider_ff .setInterval (0.01 )
287- self .lbl_ff = QLabel ("{:.3f}" .format (self .kff ))
289+ self .lbl_ff = QLabel ("{:.3f} ({:.3f}) " .format (self . kff , self .kff ))
288290 layout_ff .addWidget (self .slider_ff )
289291 layout_ff .addWidget (self .lbl_ff )
290292 self .slider_ff .valueChanged .connect (self .updateLabelFF )
@@ -294,25 +296,29 @@ def createPidLayout(self):
294296
295297 def updateLabelK (self ):
296298 self .kc = self .slider_k .value ()
297- self .lbl_k .setText ("{:.2f}" .format (self .kc ))
299+ self .lbl_k .setText ("{:.2f} ({:.2f})" .format (self .kc , self .kc ))
300+
301+ # Kc also modifies the Ki and Kd gains of the parallel form
302+ self .lbl_i .setText ("{:.2f} ({:.2f})" .format (self .ki , self .kc * self .ki ))
303+ self .lbl_d .setText ("{:.3f} ({:.4f})" .format (self .kd , self .kc * self .kd ))
298304 if self .slider_k .isSliderDown ():
299305 self .updateClosedLoop ()
300306
301307 def updateLabelI (self ):
302308 self .ki = self .slider_i .value ()
303- self .lbl_i .setText ("{:.2f}" .format (self .ki ))
309+ self .lbl_i .setText ("{:.2f} ({:.2f}) " .format (self . ki , self . kc * self .ki ))
304310 if self .slider_i .isSliderDown ():
305311 self .updateClosedLoop ()
306312
307313 def updateLabelD (self ):
308314 self .kd = self .slider_d .value ()
309- self .lbl_d .setText ("{:.3f}" .format (self .kd ))
315+ self .lbl_d .setText ("{:.3f} ({:.4f}) " .format (self . kd , self . kc * self .kd ))
310316 if self .slider_d .isSliderDown ():
311317 self .updateClosedLoop ()
312318
313319 def updateLabelFF (self ):
314320 self .kff = self .slider_ff .value ()
315- self .lbl_ff .setText ("{:.3f}" .format (self .kff ))
321+ self .lbl_ff .setText ("{:.3f} ({:.3f}) " .format (self . kff , self .kff ))
316322 if self .slider_ff .isSliderDown ():
317323 self .updateClosedLoop ()
318324
0 commit comments