]> git.leonardobizzoni.com Git - pioneer-stm32/commitdiff
remove constants.h
authorFederica Di Lauro <federicadilauro1998@gmail.com>
Thu, 6 Feb 2020 13:51:35 +0000 (14:51 +0100)
committerFederica Di Lauro <federicadilauro1998@gmail.com>
Thu, 6 Feb 2020 13:51:35 +0000 (14:51 +0100)
otto_controller/Core/Inc/constants.h [deleted file]
otto_controller/Core/Inc/encoder.h
otto_controller/Core/Inc/motor_controller.h
otto_controller/Core/Inc/odometry.h
otto_controller/Core/Inc/pid.h
otto_controller/Core/Src/main.cpp

diff --git a/otto_controller/Core/Inc/constants.h b/otto_controller/Core/Inc/constants.h
deleted file mode 100644 (file)
index de60e91..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef CONSTANTS_H
-#define CONSTANTS_H
-
-#define BASELINE 0.3 //distance between wheels in meters
-#define MAX_DUTY_CYCLE 790
-
-#define TICKS_PER_REVOLUTION 148000 //x4 resolution
-#define RIGHT_WHEEL_CIRCUMFERENCE 0.783 //in meters
-#define LEFT_WHEEL_CIRCUMFERENCE  0.789 //in meters
-
-#endif
index 479cc1a7fb22d1f9dec1115b7a5af799cb3fcefe..50004a68f054b2f9e557a5fd92d1d0f83add9f42 100644 (file)
@@ -2,7 +2,6 @@
 #define ENCODER_H
 
 #include "main.h"
-#include "constants.h"
 
 class Encoder {
  public:
@@ -11,15 +10,19 @@ class Encoder {
   uint32_t current_millis_;
   int32_t ticks_;  //if negative the wheel is going backwards
   float wheel_circumference_;
+  int ticks_per_revolution_;
 
   Encoder() {
     timer_ = NULL;
     wheel_circumference_ = 0;
+    ticks_per_revolution_ = 0;
   }
 
-  Encoder(TIM_HandleTypeDef *timer, float wheel_circ) {
-      timer_ = timer;
-      wheel_circumference_ = wheel_circ;
+  Encoder(TIM_HandleTypeDef *timer, float wheel_circ,
+          int ticks_per_revolution) {
+    timer_ = timer;
+    wheel_circumference_ = wheel_circ;
+    ticks_per_revolution_ = ticks_per_revolution;
 
   }
 
@@ -50,7 +53,7 @@ class Encoder {
 
   float GetMeters() {
     float meters = ((float) this->ticks_ * this->wheel_circumference_)
-        / TICKS_PER_REVOLUTION;
+        / ticks_per_revolution_;
     return meters;
   }
 
index c4b5e8d27a602da5a80e264079bcacef1eeeec2c..597ca0a0d1f17bc9413a1e3a546fec86381c7cfa 100644 (file)
@@ -2,7 +2,6 @@
 #define MOTOR_CONTROLLER_H
 
 #include "main.h"
-#include "constants.h"
 
 class MotorController {
  public:
@@ -12,6 +11,7 @@ class MotorController {
   uint16_t dir_pin_;
   TIM_HandleTypeDef *pwm_timer_;
   uint32_t pwm_channel_;
+  int32_t max_dutycycle_;
 
   MotorController(GPIO_TypeDef *sleep_gpio_port, uint16_t sleep_pin,
                   GPIO_TypeDef *dir_gpio_port, uint16_t dir_pin,
@@ -22,6 +22,7 @@ class MotorController {
     this->dir_pin_ = dir_pin;
     this->pwm_timer_ = pwm_timer;
     this->pwm_channel_ = pwm_channel;
+    this->max_dutycycle_ = pwm_timer->Instance->ARR;
   }
 
   void setup() {
@@ -34,8 +35,8 @@ class MotorController {
       HAL_GPIO_WritePin(dir_gpio_port_, dir_pin_, GPIO_PIN_SET);
 
       //check if duty_cycle exceeds maximum
-      if (duty_cycle > MAX_DUTY_CYCLE)
-        __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, MAX_DUTY_CYCLE);
+      if (duty_cycle > max_dutycycle_)
+        __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, max_dutycycle_);
       else
         __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, duty_cycle);
 
@@ -44,8 +45,8 @@ class MotorController {
       HAL_GPIO_WritePin(dir_gpio_port_, dir_pin_, GPIO_PIN_RESET);
 
       //check if duty_cycle is lower than minimum
-      if (duty_cycle < -MAX_DUTY_CYCLE)
-        __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, MAX_DUTY_CYCLE);
+      if (duty_cycle < -max_dutycycle_)
+        __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, max_dutycycle_);
       else
         //invert sign to make duty_cycle positive
       __HAL_TIM_SET_COMPARE(pwm_timer_, pwm_channel_, -duty_cycle);
index 56e0e8b2495a7031b1f627b16a76a35beecb94ee..85f24f7c93a9b246b8db644487951b5ab965acc9 100644 (file)
@@ -1,30 +1,35 @@
 #ifndef ODOMETRY_H
 #define ODOMETRY_H
 
-#include "constants.h"
-
 class Odometry {
  private:
 
   float left_velocity_;
   float right_velocity_;
-
+  float baseline_;
 
  public:
   Odometry() {
     left_velocity_ = 0;
     right_velocity_ = 0;
+    baseline_ = 0;
+  }
+
+  Odometry(float baseline) {
+    left_velocity_ = 0;
+    right_velocity_ = 0;
+    baseline_ = baseline;
   }
 
   void UpdateValues(float linear_vel, float angular_vel) {
-    left_velocity_ = linear_vel - (BASELINE * angular_vel)/2;
-    right_velocity_ = linear_vel + (BASELINE * angular_vel)/2;
+    left_velocity_ = linear_vel - (baseline_ * angular_vel) / 2;
+    right_velocity_ = linear_vel + (baseline_ * angular_vel) / 2;
   }
 
-  float GetLeftVelocity(){
+  float GetLeftVelocity() {
     return left_velocity_;
   }
-  float GetRightVelocity(){
+  float GetRightVelocity() {
     return right_velocity_;
   }
 
index 7663f6b45fbdb0693fc68d35b3913f580cf9b383..b351abe8171fc5b7d3a123e8c1c1024d681f9d52 100644 (file)
@@ -1,8 +1,6 @@
 #ifndef PID_H
 #define PID_H
 
-#include "constants.h"
-
 class Pid {
  public:
   //PID constants
@@ -33,9 +31,6 @@ class Pid {
     this->previous_error_ = 0;
     this->error_sum_ = 0;
 
-    this->min_ = -MAX_DUTY_CYCLE;
-    this->max_ = MAX_DUTY_CYCLE;
-
   }
 
   void config(float kp, float ki, float kd) {
index 3dcab1c46a3106174c98a4aa8d61607917c636a0..e27ecf7bb1c042cc2ef3d263f2bfb4abf803280c 100644 (file)
 \r
 /* USER CODE BEGIN PV */\r
 \r
+//Parameters\r
+float baseline = 0.3;\r
+int ticks_per_revolution = 148000;  //x4 resolution\r
+float right_wheel_circumference = 0.783;  //in meters\r
+float left_wheel_circumference = 0.789;  //in meters\r
+\r
 //Odometry\r
-Encoder right_encoder = Encoder(&htim5, RIGHT_WHEEL_CIRCUMFERENCE);\r
-Encoder left_encoder = Encoder(&htim2, LEFT_WHEEL_CIRCUMFERENCE);\r
-Odometry odom = Odometry();\r
+Encoder right_encoder = Encoder(&htim5, right_wheel_circumference,\r
+                                ticks_per_revolution);\r
+Encoder left_encoder = Encoder(&htim2, left_wheel_circumference,\r
+                               ticks_per_revolution);\r
+Odometry odom = Odometry(baseline);\r
 \r
 float left_velocity;\r
 float right_velocity;\r
@@ -107,14 +115,12 @@ static void MX_NVIC_Init(void);
 /* USER CODE END 0 */\r
 \r
 /**\r
-  * @brief  The application entry point.\r
-  * @retval int\r
-  */\r
-int main(void)\r
-{\r
+ * @brief  The application entry point.\r
+ * @retval int\r
+ */\r
+int main(void) {\r
   /* USER CODE BEGIN 1 */\r
   /* USER CODE END 1 */\r
-  \r
 \r
   /* MCU Configuration--------------------------------------------------------*/\r
 \r
@@ -173,56 +179,51 @@ int main(void)
 }\r
 \r
 /**\r
-  * @brief System Clock Configuration\r
-  * @retval None\r
-  */\r
-void SystemClock_Config(void)\r
-{\r
-  RCC_OscInitTypeDef RCC_OscInitStruct = {0};\r
-  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};\r
-  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};\r
+ * @brief System Clock Configuration\r
+ * @retval None\r
+ */\r
+void SystemClock_Config(void) {\r
+  RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };\r
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };\r
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };\r
 \r
   /** Configure the main internal regulator output voltage \r
-  */\r
+   */\r
   __HAL_RCC_PWR_CLK_ENABLE();\r
   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);\r
   /** Initializes the CPU, AHB and APB busses clocks \r
-  */\r
+   */\r
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\r
   RCC_OscInitStruct.HSIState = RCC_HSI_ON;\r
   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\r
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;\r
-  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)\r
-  {\r
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {\r
     Error_Handler();\r
   }\r
   /** Initializes the CPU, AHB and APB busses clocks \r
-  */\r
-  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK\r
-                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;\r
+   */\r
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK\r
+      | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;\r
   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;\r
   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;\r
   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;\r
   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;\r
 \r
-  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)\r
-  {\r
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {\r
     Error_Handler();\r
   }\r
   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6;\r
   PeriphClkInitStruct.Usart6ClockSelection = RCC_USART6CLKSOURCE_PCLK2;\r
-  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\r
-  {\r
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {\r
     Error_Handler();\r
   }\r
 }\r
 \r
 /**\r
-  * @brief NVIC Configuration.\r
-  * @retval None\r
-  */\r
-static void MX_NVIC_Init(void)\r
-{\r
+ * @brief NVIC Configuration.\r
+ * @retval None\r
+ */\r
+static void MX_NVIC_Init(void) {\r
   /* TIM3_IRQn interrupt configuration */\r
   HAL_NVIC_SetPriority(TIM3_IRQn, 2, 1);\r
   HAL_NVIC_EnableIRQ(TIM3_IRQn);\r
@@ -301,11 +302,10 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
 /* USER CODE END 4 */\r
 \r
 /**\r
-  * @brief  This function is executed in case of error occurrence.\r
-  * @retval None\r
-  */\r
-void Error_Handler(void)\r
-{\r
+ * @brief  This function is executed in case of error occurrence.\r
+ * @retval None\r
+ */\r
+void Error_Handler(void) {\r
   /* USER CODE BEGIN Error_Handler_Debug */\r
   /* User can add his own implementation to report the HAL error return state */\r
 \r