From cd5393362b83cc4edddfdd2ded747c61d03fa8fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Caruso?= <niccolo.caruso@skywarder.eu> Date: Sat, 14 Dec 2024 13:20:34 +0100 Subject: [PATCH] [ARP-RP] Speed now takes into account stepper multipliers Also printing log number. To rotate anti-clockwise the move should be - and speed kept as positive. --- .../RotatingPlatform/Actuators/Actuators.cpp | 11 ++++++++--- .../RotatingPlatform/Actuators/Actuators.h | 4 ++-- .../RotatingPlatform/Actuators/ActuatorsConfig.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Groundstation/RotatingPlatform/Actuators/Actuators.cpp b/src/Groundstation/RotatingPlatform/Actuators/Actuators.cpp index 6210a7718..63a2ccc9f 100644 --- a/src/Groundstation/RotatingPlatform/Actuators/Actuators.cpp +++ b/src/Groundstation/RotatingPlatform/Actuators/Actuators.cpp @@ -70,17 +70,22 @@ Actuators::Actuators(StepperConfig config) void Actuators::run() { + int logNr = Logger::getInstance().getCurrentLogNumber(); while (true) { + std::cout << "Log nr " << logNr << std::endl; + std::cout << "Speed limit is " << configX.MAX_SPEED << std::endl; { miosix::Lock<FastMutex> lock(rotationMutex); - float stepSpeed = ACCELERATION * (TIME_WAIT_MS / 1000); + float stepSpeed = ACCELERATION * (TIME_WAIT_MS / 1000); + float multiplier = 2.2; // Acceleration/stable phase if (stepperX.isEnabled() && isRotating) { - if (speed < configX.MAX_SPEED && speed < MAX_MAX_SPEED) + if (speed < configX.MAX_SPEED / multiplier && + speed < MAX_MAX_SPEED) speed += stepSpeed; if (speed > configX.MAX_SPEED) speed = configX.MAX_SPEED; @@ -104,7 +109,7 @@ void Actuators::run() setSpeed(StepperList::STEPPER_X, 0.0); } } - moveDeg(StepperList::STEPPER_X, 20); + moveDeg(StepperList::STEPPER_X, -20); Thread::sleep(TIME_WAIT_MS); } } diff --git a/src/Groundstation/RotatingPlatform/Actuators/Actuators.h b/src/Groundstation/RotatingPlatform/Actuators/Actuators.h index 9102e8a50..1a5259c19 100644 --- a/src/Groundstation/RotatingPlatform/Actuators/Actuators.h +++ b/src/Groundstation/RotatingPlatform/Actuators/Actuators.h @@ -38,9 +38,9 @@ namespace RotatingPlatform { static constexpr float MAX_MAX_SPEED = - 0.03; // Structurally not go more than this + 0.5 * 2.2; // Structurally not go more than this static constexpr float ACCELERATION = 0.01; //[RPS^2] -static constexpr float TIME_WAIT_MS = 100; //[MS] +static constexpr float TIME_WAIT_MS = 100; //[MS] /** * @brief Error handling enum for the stepper movement diff --git a/src/Groundstation/RotatingPlatform/Actuators/ActuatorsConfig.h b/src/Groundstation/RotatingPlatform/Actuators/ActuatorsConfig.h index f076a8f01..eb0f958cb 100644 --- a/src/Groundstation/RotatingPlatform/Actuators/ActuatorsConfig.h +++ b/src/Groundstation/RotatingPlatform/Actuators/ActuatorsConfig.h @@ -37,7 +37,7 @@ static const RotatingPlatform::StepperConfig stepperXConfig{ .HAS_ANGLE_LIMITS = false, .MIN_ANGLE = 0, .MAX_ANGLE = 0, - .MAX_SPEED = 0.1, //<[RPS] + .MAX_SPEED = 0.105 * 2.2, //<[RPS] * multiplier (transmission) }; namespace StepperSettings -- GitLab