a
Dependents: 4thcomp 6th33222_copy
Fork of Locate by
locate.h@10:d88fe87720d2, 2016-09-17 (annotated)
- Committer:
- choutin
- Date:
- Sat Sep 17 23:20:49 2016 +0000
- Revision:
- 10:d88fe87720d2
- Parent:
- 9:69fe7b8350c6
?
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sakanakuuun | 0:265d8ad19d2a | 1 | #ifndef Locate_H |
sakanakuuun | 0:265d8ad19d2a | 2 | #define Locate_H |
choutin | 6:ba3ef4656f7a | 3 | |
sakanakuuun | 0:265d8ad19d2a | 4 | #include <math.h> |
sakanakuuun | 0:265d8ad19d2a | 5 | #include "Encoder.h" |
choutin | 6:ba3ef4656f7a | 6 | |
choutin | 10:d88fe87720d2 | 7 | |
choutin | 10:d88fe87720d2 | 8 | //Serial pc(SERIAL_TX, SERIAL_RX); |
sakanakuuun | 0:265d8ad19d2a | 9 | /****************定数定義***************************/ |
choutin | 6:ba3ef4656f7a | 10 | |
sakanakuuun | 0:265d8ad19d2a | 11 | #define OUTERRING_D 140 //外輪間距離(mm) |
sakanakuuun | 0:265d8ad19d2a | 12 | #define INNERRING_D 136 //内輪間距離(mm) |
sakanakuuun | 0:265d8ad19d2a | 13 | #define PI 3.14159 //π |
choutin | 9:69fe7b8350c6 | 14 | #define RESOLUSION 200 //P/R(分解能) |
choutin | 10:d88fe87720d2 | 15 | #define DIAMETER 32.05 //タイヤの直径(mm) |
choutin | 10:d88fe87720d2 | 16 | #define ROUND_HOSEI 1.0367 //角度のズレを補正.038 |
choutin | 9:69fe7b8350c6 | 17 | #define HOSEI 1.00 |
choutin | 9:69fe7b8350c6 | 18 | // エンコーダの1ステップあたりの距離;(mm) |
choutin | 9:69fe7b8350c6 | 19 | #define LOCATE_STEP (DIAMETER*PI / RESOLUSION * HOSEI) |
sakanakuuun | 0:265d8ad19d2a | 20 | //タイヤ間距離(mm) |
sakanakuuun | 0:265d8ad19d2a | 21 | #define TIRE_DISTANCE ((OUTERRING_D + INNERRING_D) / 2) |
sakanakuuun | 0:265d8ad19d2a | 22 | //機体が1回転するために必要なステップ数の”逆数” |
sakanakuuun | 0:265d8ad19d2a | 23 | #define ROUND ((PI * DIAMETER / (RESOLUSION * TIRE_DISTANCE)) * ROUND_HOSEI) |
choutin | 6:ba3ef4656f7a | 24 | |
sakanakuuun | 0:265d8ad19d2a | 25 | /****************************************************************/ |
choutin | 6:ba3ef4656f7a | 26 | |
choutin | 6:ba3ef4656f7a | 27 | |
choutin | 6:ba3ef4656f7a | 28 | |
choutin | 6:ba3ef4656f7a | 29 | |
sakanakuuun | 0:265d8ad19d2a | 30 | /********以下関数宣言*****************/ |
choutin | 6:ba3ef4656f7a | 31 | |
sakanakuuun | 0:265d8ad19d2a | 32 | //最初に一回だけ行う |
choutin | 7:08dfba38d5d9 | 33 | void setup(int team); |
choutin | 6:ba3ef4656f7a | 34 | |
sakanakuuun | 4:ecbb45e84c08 | 35 | //setupの初期位置指定版 |
sakanakuuun | 4:ecbb45e84c08 | 36 | void setup(int tx, int ty); |
choutin | 6:ba3ef4656f7a | 37 | |
sakanakuuun | 0:265d8ad19d2a | 38 | //位置情報を更新する。r,lはエンコーダから |
sakanakuuun | 4:ecbb45e84c08 | 39 | void update(); |
choutin | 6:ba3ef4656f7a | 40 | |
sakanakuuun | 4:ecbb45e84c08 | 41 | //update()のprintfなし版 |
sakanakuuun | 4:ecbb45e84c08 | 42 | void update_np(); |
choutin | 6:ba3ef4656f7a | 43 | |
sakanakuuun | 0:265d8ad19d2a | 44 | //xをmm換算して整数値として返す |
sakanakuuun | 3:0afbd3f61151 | 45 | int coordinateX(); |
choutin | 6:ba3ef4656f7a | 46 | |
sakanakuuun | 0:265d8ad19d2a | 47 | //yをmm換算して整数値として返す |
sakanakuuun | 1:3513a2fbd81f | 48 | int coordinateY(); |
choutin | 6:ba3ef4656f7a | 49 | |
sakanakuuun | 0:265d8ad19d2a | 50 | //thetaを返す |
sakanakuuun | 0:265d8ad19d2a | 51 | float coordinateTheta(); |
choutin | 6:ba3ef4656f7a | 52 | |
sakanakuuun | 0:265d8ad19d2a | 53 | //encorderの値を回転数に変換。update内部で使われる |
sakanakuuun | 0:265d8ad19d2a | 54 | int convert_enc_count(int16_t pulse, int8_t direction); |
choutin | 6:ba3ef4656f7a | 55 | |
sakanakuuun | 0:265d8ad19d2a | 56 | //x, y, thetaを0にする |
sakanakuuun | 0:265d8ad19d2a | 57 | void erase(); |
choutin | 6:ba3ef4656f7a | 58 | |
choutin | 6:ba3ef4656f7a | 59 | //仮想 |
choutin | 6:ba3ef4656f7a | 60 | void virtual_setup(); |
choutin | 6:ba3ef4656f7a | 61 | |
choutin | 6:ba3ef4656f7a | 62 | void virtual_update(); |
choutin | 6:ba3ef4656f7a | 63 | |
choutin | 6:ba3ef4656f7a | 64 | int virtual_coordinateX(); |
choutin | 6:ba3ef4656f7a | 65 | |
choutin | 6:ba3ef4656f7a | 66 | int virtual_coordinateY(); |
choutin | 6:ba3ef4656f7a | 67 | |
choutin | 6:ba3ef4656f7a | 68 | float virtual_coordinateTheta(); |
sakanakuuun | 0:265d8ad19d2a | 69 | /**********************************/ |
sakanakuuun | 0:265d8ad19d2a | 70 | #endif |
choutin | 6:ba3ef4656f7a | 71 | |
choutin | 6:ba3ef4656f7a | 72 | |
choutin | 6:ba3ef4656f7a | 73 | |
choutin | 6:ba3ef4656f7a | 74 | |
choutin | 6:ba3ef4656f7a | 75 | |
sakanakuuun | 0:265d8ad19d2a | 76 | /**************Encoderライブラリで使う定義**************************/ |
choutin | 6:ba3ef4656f7a | 77 | |
sakanakuuun | 0:265d8ad19d2a | 78 | #ifdef TARGET_STM32F3 |
sakanakuuun | 0:265d8ad19d2a | 79 | #define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) |
sakanakuuun | 0:265d8ad19d2a | 80 | #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR)) |
sakanakuuun | 0:265d8ad19d2a | 81 | #endif |
choutin | 6:ba3ef4656f7a | 82 | |
sakanakuuun | 0:265d8ad19d2a | 83 | /***************************************************************/ |
choutin | 6:ba3ef4656f7a | 84 |