From 2698cee80b1de7f0bb2bbf8c48782c8061695b8c Mon Sep 17 00:00:00 2001 From: darksnake Date: Thu, 2 Nov 2023 15:36:10 +0300 Subject: [PATCH] Remove automatic reads from virtual drive and pid --- .../kotlin/space/kscience/controls/constructor/Drive.kt | 3 +-- .../kotlin/space/kscience/controls/constructor/PidRegulator.kt | 1 - demo/constructor/src/jvmMain/kotlin/main.kt | 2 ++ 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/Drive.kt b/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/Drive.kt index e7c3d39..f87d0e3 100644 --- a/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/Drive.kt +++ b/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/Drive.kt @@ -48,7 +48,7 @@ public class VirtualDrive( public val positionState: MutableDeviceState, ) : Drive, DeviceBySpec(Drive, context) { - private val dt = meta["time.step"].double?.milliseconds ?: 5.milliseconds + private val dt = meta["time.step"].double?.milliseconds ?: 1.milliseconds private val clock = context.clock override var force: Double = 0.0 @@ -73,7 +73,6 @@ public class VirtualDrive( // compute new value based on velocity and acceleration from the previous step positionState.value += velocity * dtSeconds + force / mass * dtSeconds.pow(2) / 2 - propertyChanged(Drive.position, positionState.value) // compute new velocity based on acceleration on the previous step velocity += force / mass * dtSeconds diff --git a/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/PidRegulator.kt b/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/PidRegulator.kt index 9268d02..e8e2ec3 100644 --- a/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/PidRegulator.kt +++ b/controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/PidRegulator.kt @@ -62,7 +62,6 @@ public class PidRegulator( lastPosition = drive.position drive.force = pidParameters.kp * delta + pidParameters.ki * integral + pidParameters.kd * derivative - propertyChanged(Regulator.position, drive.position) } } } diff --git a/demo/constructor/src/jvmMain/kotlin/main.kt b/demo/constructor/src/jvmMain/kotlin/main.kt index 1df0f33..2996da2 100644 --- a/demo/constructor/src/jvmMain/kotlin/main.kt +++ b/demo/constructor/src/jvmMain/kotlin/main.kt @@ -11,6 +11,7 @@ import space.kscience.controls.manager.DeviceManager import space.kscience.controls.manager.clock import space.kscience.controls.spec.doRecurring import space.kscience.controls.spec.name +import space.kscience.controls.spec.read import space.kscience.controls.spec.write import space.kscience.controls.vision.plotDeviceProperty import space.kscience.controls.vision.plotNumberState @@ -66,6 +67,7 @@ public fun main() { val target = 5 * sin(2.0 * PI * freq * t) + sin(2 * PI * 21 * freq * t + 0.1 * (timeFromStart / pidParameters.timeStep)) pid.write(Regulator.target, target) + pid.read(Regulator.position) } }