Skip to content

Commit 0f52256

Browse files
committed
atune: display ideal/standard and parallel PID forms
1 parent 5f669c4 commit 0f52256

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

autotune/autotune.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)