From: Federica Di Lauro Date: Tue, 8 Oct 2019 09:11:58 +0000 (+0200) Subject: ticks to linear velocity X-Git-Url: http://git.leonardobizzoni.com/?a=commitdiff_plain;h=8e2ed0f893114dc4e0263954d30b27e6d7497640;p=pioneer-stm32 ticks to linear velocity --- diff --git a/otto_controller_source/Inc/encoder.h b/otto_controller_source/Inc/encoder.h index 45e614f..f3cd05b 100644 --- a/otto_controller_source/Inc/encoder.h +++ b/otto_controller_source/Inc/encoder.h @@ -9,6 +9,7 @@ class Encoder { uint32_t elapsed_millis; uint32_t kTicksPerRevolution = 148000; float kPi = 3.14159; + float kWheelCircumference = 0.7539; //in meters Encoder(TIM_HandleTypeDef* timer); diff --git a/otto_controller_source/Src/encoder.cpp b/otto_controller_source/Src/encoder.cpp index b658a14..47b8a84 100644 --- a/otto_controller_source/Src/encoder.cpp +++ b/otto_controller_source/Src/encoder.cpp @@ -6,13 +6,13 @@ Encoder::Encoder(TIM_HandleTypeDef* timer) { elapsed_millis = HAL_GetTick(); } -float Encoder::GetAngularVelocity(){ +float Encoder::GetLinearVelocity(){ uint32_t ticks = this->GetCount(); uint32_t previous_millis = this->elapsed_millis; this->elapsed_millis = HAL_GetTick(); - float radiants = (ticks * 2 * kPi) / kTicksPerRevolution; - float angular_velocity = radiants / + float meters = (ticks * kWheelCircumference) / kTicksPerRevolution; + float linear_velocity = meters / ((this->elapsed_millis - previous_millis) / 1000); - return angular_velocity; + return linear_velocity; }