- use kalman params
- some improvements for real hardware cooker and temp sensor git-svn-id: http://moon:8086/svn/projects/HendiControl@221 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
@@ -46,15 +46,8 @@ class Controller():
|
||||
self.heatrate_sm = Smoother(0.01)
|
||||
self.theta_err_sm = Smoother(1.0)
|
||||
self.heatrate_err_sm = Smoother(1.0)
|
||||
|
||||
kparams = {
|
||||
'dt': 1,
|
||||
'var_P': 0,
|
||||
'var_Q': 0.00001,
|
||||
'var_R': 2,
|
||||
'var_Z': 0
|
||||
}
|
||||
self.kalman = Kalman(kparams)
|
||||
self.useKalman = params['useKalman']
|
||||
self.kalman = Kalman(params['kalman'])
|
||||
|
||||
def log(self, s):
|
||||
now = time.time()
|
||||
@@ -132,7 +125,7 @@ class Controller():
|
||||
def rast(self, rast):
|
||||
|
||||
# Temperature
|
||||
self.theta = self.plant.getTemperature()
|
||||
theta = self.plant.getTemperature()
|
||||
theta_soll = rast['temp']
|
||||
heatrate_soll = rast['heatRate']
|
||||
self.log("Target temperature {} °C".format(theta_soll))
|
||||
@@ -142,13 +135,13 @@ class Controller():
|
||||
timer_soll = 60*rast['time']
|
||||
|
||||
# Kalman filter initial value
|
||||
self.kalman.initial((self.theta, 0))
|
||||
self.theta_sm.initial(self.theta)
|
||||
self.kalman.initial((theta, 0))
|
||||
self.theta_sm.initial(theta)
|
||||
|
||||
# ------------------------------
|
||||
# The loop
|
||||
# ------------------------------
|
||||
doLoop = theta_soll > self.theta
|
||||
doLoop = theta_soll > theta
|
||||
if doLoop:
|
||||
# Stirrer
|
||||
self.stirrer.activate()
|
||||
@@ -156,7 +149,6 @@ class Controller():
|
||||
|
||||
self.stirrer.setCycleTime(self.stirrCycleTime)
|
||||
|
||||
useKalman = False
|
||||
while(doLoop):
|
||||
|
||||
time_start = time.time()
|
||||
@@ -184,7 +176,7 @@ class Controller():
|
||||
self.theta_v = np.append(self.theta_v, theta_ist)
|
||||
self.heatrate_v = np.append(self.heatrate_v, dtheta_ist * 60/self.dt)
|
||||
|
||||
if useKalman:
|
||||
if self.useKalman:
|
||||
ctrl_theta_err = theta_soll - theta_ist_k
|
||||
ctrl_heatrate_err = heatrate_soll - dtheta_ist_k * 60/self.dt
|
||||
ctrl_theta = theta_ist_k
|
||||
|
||||
Reference in New Issue
Block a user