fs

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

locate.h

Committer:
sakanakuuun
Date:
2016-09-10
Revision:
6:27d0384052d2
Parent:
5:d9857c701310

File content as of revision 6:27d0384052d2:

#ifndef Locate_H
#define Locate_H

#include <math.h>
#include "Encoder.h"

/****************定数定義***************************/

#define OUTERRING_D     140             //外輪間距離(mm)
#define INNERRING_D     136             //内輪間距離(mm)
#define PI              3.14159         //π
#define RESOLUSION      400             //P/R(分解能)
#define DIAMETER        31.8            //タイヤの直径(mm)
#define ROUND_HOSEI     1.038            //角度のズレを補正

// エンコーダの1ステップあたりの距離(mm)
#define LOCATE_STEP     (DIAMETER*PI / RESOLUSION)                 
//タイヤ間距離(mm) 
#define TIRE_DISTANCE   ((OUTERRING_D + INNERRING_D) / 2)          
//機体が1回転するために必要なステップ数の”逆数”
#define ROUND           ((PI * DIAMETER / (RESOLUSION * TIRE_DISTANCE)) * ROUND_HOSEI)   

/****************************************************************/




/********以下関数宣言*****************/

//最初に一回だけ行う
void  setup();

//setupの初期位置指定版
void setup(int tx, int ty);

//位置情報を更新する。r,lはエンコーダから
void  update();

//update()のprintfなし版
void update_np();

//xをmm換算して整数値として返す
int coordinateX(); 

//yをmm換算して整数値として返す
int coordinateY();

//thetaを返す
float coordinateTheta();  

//encorderの値を回転数に変換。update内部で使われる
int convert_enc_count(int16_t pulse, int8_t direction);

//x, y, thetaを0にする
void erase();

//仮想
void virtual_setup();

void virtual_update();

int virtual_coordinateX();

int virtual_coordinateY();

float virtual_coordinateTheta();
/**********************************/
#endif





/**************Encoderライブラリで使う定義**************************/

#ifdef TARGET_STM32F3
#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__)            (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
#endif

/***************************************************************/