From 8e2ed0f893114dc4e0263954d30b27e6d7497640 Mon Sep 17 00:00:00 2001 From: Federica Di Lauro Date: Tue, 8 Oct 2019 11:11:58 +0200 Subject: [PATCH] ticks to linear velocity --- otto_controller_source/Inc/encoder.h | 1 + otto_controller_source/Src/encoder.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) 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; } -- 2.52.0