fs

Dependents:   ARAI45th 3servotest 1stcomp 3rdcompfixstart ... more

Committer:
sakanakuuun
Date:
Fri Sep 02 12:40:36 2016 +0000
Revision:
0:265d8ad19d2a
Child:
1:3513a2fbd81f
fs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakanakuuun 0:265d8ad19d2a 1 #ifndef Locate_H
sakanakuuun 0:265d8ad19d2a 2 #define Locate_H
sakanakuuun 0:265d8ad19d2a 3
sakanakuuun 0:265d8ad19d2a 4 #include <math.h>
sakanakuuun 0:265d8ad19d2a 5 #include "Encoder.h"
sakanakuuun 0:265d8ad19d2a 6
sakanakuuun 0:265d8ad19d2a 7 /****************定数定義***************************/
sakanakuuun 0:265d8ad19d2a 8
sakanakuuun 0:265d8ad19d2a 9 #define OUTERRING_D 140 //外輪間距離(mm)
sakanakuuun 0:265d8ad19d2a 10 #define INNERRING_D 136 //内輪間距離(mm)
sakanakuuun 0:265d8ad19d2a 11 #define PI 3.14159 //π
sakanakuuun 0:265d8ad19d2a 12 #define RESOLUSION 400 //P/R(分解能)
sakanakuuun 0:265d8ad19d2a 13 #define DIAMETER 31.8 //タイヤの直径(mm)
sakanakuuun 0:265d8ad19d2a 14 #define ROUND_HOSEI 1.05 //角度のズレを補正
sakanakuuun 0:265d8ad19d2a 15
sakanakuuun 0:265d8ad19d2a 16 // エンコーダの1ステップあたりの距離(mm)
sakanakuuun 0:265d8ad19d2a 17 #define LOCATE_STEP (DIAMETER*PI / RESOLUSION)
sakanakuuun 0:265d8ad19d2a 18 //タイヤ間距離(mm)
sakanakuuun 0:265d8ad19d2a 19 #define TIRE_DISTANCE ((OUTERRING_D + INNERRING_D) / 2)
sakanakuuun 0:265d8ad19d2a 20 //機体が1回転するために必要なステップ数の”逆数”
sakanakuuun 0:265d8ad19d2a 21 #define ROUND ((PI * DIAMETER / (RESOLUSION * TIRE_DISTANCE)) * ROUND_HOSEI)
sakanakuuun 0:265d8ad19d2a 22
sakanakuuun 0:265d8ad19d2a 23 /****************************************************************/
sakanakuuun 0:265d8ad19d2a 24
sakanakuuun 0:265d8ad19d2a 25
sakanakuuun 0:265d8ad19d2a 26
sakanakuuun 0:265d8ad19d2a 27
sakanakuuun 0:265d8ad19d2a 28 /********以下関数宣言*****************/
sakanakuuun 0:265d8ad19d2a 29
sakanakuuun 0:265d8ad19d2a 30 //最初に一回だけ行う
sakanakuuun 0:265d8ad19d2a 31 void setup();
sakanakuuun 0:265d8ad19d2a 32
sakanakuuun 0:265d8ad19d2a 33 //位置情報を更新する。r,lはエンコーダから
sakanakuuun 0:265d8ad19d2a 34 void update ();
sakanakuuun 0:265d8ad19d2a 35
sakanakuuun 0:265d8ad19d2a 36 //xをmm換算して整数値として返す
sakanakuuun 0:265d8ad19d2a 37 short coordinateX();
sakanakuuun 0:265d8ad19d2a 38
sakanakuuun 0:265d8ad19d2a 39 //yをmm換算して整数値として返す
sakanakuuun 0:265d8ad19d2a 40 short coordinateY();
sakanakuuun 0:265d8ad19d2a 41
sakanakuuun 0:265d8ad19d2a 42 //thetaを返す
sakanakuuun 0:265d8ad19d2a 43 float coordinateTheta();
sakanakuuun 0:265d8ad19d2a 44
sakanakuuun 0:265d8ad19d2a 45 //encorderの値を回転数に変換。update内部で使われる
sakanakuuun 0:265d8ad19d2a 46 int convert_enc_count(int16_t pulse, int8_t direction);
sakanakuuun 0:265d8ad19d2a 47
sakanakuuun 0:265d8ad19d2a 48 //x, y, thetaを0にする
sakanakuuun 0:265d8ad19d2a 49 void erase();
sakanakuuun 0:265d8ad19d2a 50
sakanakuuun 0:265d8ad19d2a 51 /**********************************/
sakanakuuun 0:265d8ad19d2a 52 #endif
sakanakuuun 0:265d8ad19d2a 53
sakanakuuun 0:265d8ad19d2a 54
sakanakuuun 0:265d8ad19d2a 55
sakanakuuun 0:265d8ad19d2a 56
sakanakuuun 0:265d8ad19d2a 57
sakanakuuun 0:265d8ad19d2a 58 /**************Encoderライブラリで使う定義**************************/
sakanakuuun 0:265d8ad19d2a 59
sakanakuuun 0:265d8ad19d2a 60 #ifdef TARGET_STM32F3
sakanakuuun 0:265d8ad19d2a 61 #define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
sakanakuuun 0:265d8ad19d2a 62 #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
sakanakuuun 0:265d8ad19d2a 63 #endif
sakanakuuun 0:265d8ad19d2a 64
sakanakuuun 0:265d8ad19d2a 65 /***************************************************************/