ジャイロ追加前

Dependencies:   mbed FreeRTOS

Committer:
YutakaTakagi
Date:
Fri Mar 22 00:59:32 2019 +0000
Revision:
75:215dd63032d6
Parent:
57:56b7e66a0c3d
add yaw and gyroZ check for New Arduino Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MasashiNomura 45:3b51dd26b579 1 /**
MasashiNomura 45:3b51dd26b579 2 * @file typedef.h
MasashiNomura 45:3b51dd26b579 3 * @brief 共通で使用する型の定義
MasashiNomura 45:3b51dd26b579 4 * @author Shirota, Nomura
MasashiNomura 45:3b51dd26b579 5 * @date 2018/10/01 ?
MasashiNomura 45:3b51dd26b579 6 */
MasashiNomura 45:3b51dd26b579 7
takeru0x1103 0:ecd925601fc6 8 #ifndef _TYPEDEF_H_
takeru0x1103 0:ecd925601fc6 9 #define _TYPEDEF_H_
takeru0x1103 0:ecd925601fc6 10 /////////////////////////////////////////////////////////////////////
takeru0x1103 18:5aa48aec9cae 11 #include "debug.h"
MasashiNomura 25:f3a6e7eec9c3 12 #include <bitset>
takeru0x1103 0:ecd925601fc6 13
MasashiNomura 45:3b51dd26b579 14
MasashiNomura 45:3b51dd26b579 15 /**
MasashiNomura 45:3b51dd26b579 16 * @def G_CMD_BUF_SIZ
MasashiNomura 45:3b51dd26b579 17 * @brief コマンド受け渡しバッファサイズ
MasashiNomura 45:3b51dd26b579 18 * @details コマンド解析タスクで使用するコマンド受け渡しバッファサイズの定義
MasashiNomura 45:3b51dd26b579 19 */
MasashiNomura 45:3b51dd26b579 20
MasashiNomura 45:3b51dd26b579 21 /**
MasashiNomura 45:3b51dd26b579 22 * @def BS
MasashiNomura 46:5074781a28dd 23 * @brief Asciiコード BackSpace(後退)
MasashiNomura 45:3b51dd26b579 24 */
takeru0x1103 17:f9610f3cfa1b 25 #define BS 0x08
MasashiNomura 45:3b51dd26b579 26 /**
MasashiNomura 45:3b51dd26b579 27 * @def HT
MasashiNomura 46:5074781a28dd 28 * @brief Asciiコード HT(水平タブ)
MasashiNomura 45:3b51dd26b579 29 */
takeru0x1103 17:f9610f3cfa1b 30 #define HT 0x09
MasashiNomura 46:5074781a28dd 31 /**
MasashiNomura 46:5074781a28dd 32 * @def TAB
MasashiNomura 46:5074781a28dd 33 * @brief Asciiコード HT(水平タブ)
MasashiNomura 46:5074781a28dd 34 */
takeru0x1103 17:f9610f3cfa1b 35 #define TAB 0x09
MasashiNomura 46:5074781a28dd 36 /**
MasashiNomura 46:5074781a28dd 37 * @def LF
MasashiNomura 46:5074781a28dd 38 * @brief Asciiコード LF(改行)
MasashiNomura 46:5074781a28dd 39 */
takeru0x1103 17:f9610f3cfa1b 40 #define LF 0x0A
MasashiNomura 46:5074781a28dd 41 /**
MasashiNomura 46:5074781a28dd 42 * @def CR
MasashiNomura 46:5074781a28dd 43 * @brief Asciiコード CR(復帰)
MasashiNomura 46:5074781a28dd 44 */
takeru0x1103 17:f9610f3cfa1b 45 #define CR 0x0D
MasashiNomura 46:5074781a28dd 46 /**
MasashiNomura 46:5074781a28dd 47 * @def SPC
MasashiNomura 46:5074781a28dd 48 * @brief Asciiコード SPC(スペース)
MasashiNomura 46:5074781a28dd 49 */
takeru0x1103 17:f9610f3cfa1b 50 #define SPC 0x20
MasashiNomura 46:5074781a28dd 51 /**
MasashiNomura 46:5074781a28dd 52 * @def ESC
MasashiNomura 46:5074781a28dd 53 * @brief Asciiコード ESC(エスケープ)
MasashiNomura 46:5074781a28dd 54 */
takeru0x1103 17:f9610f3cfa1b 55 #define ESC 0x1B
takeru0x1103 17:f9610f3cfa1b 56
MasashiNomura 46:5074781a28dd 57 /**
MasashiNomura 46:5074781a28dd 58 * @typedef UCHAR
MasashiNomura 46:5074781a28dd 59 * @brief unsigned char のtypedef
MasashiNomura 46:5074781a28dd 60 */
MasashiNomura 46:5074781a28dd 61 typedef unsigned char UCHAR;
MasashiNomura 46:5074781a28dd 62 /**
MasashiNomura 46:5074781a28dd 63 * @typedef UINT16
MasashiNomura 46:5074781a28dd 64 * @brief unsigned short のtypedef
takeru0x1103 0:ecd925601fc6 65 */
takeru0x1103 18:5aa48aec9cae 66 typedef unsigned short UINT16;
MasashiNomura 46:5074781a28dd 67 /**
MasashiNomura 46:5074781a28dd 68 * @typedef INT16
MasashiNomura 46:5074781a28dd 69 * @brief short のtypedef
MasashiNomura 46:5074781a28dd 70 */
takeru0x1103 18:5aa48aec9cae 71 typedef short INT16;
MasashiNomura 46:5074781a28dd 72 /**
MasashiNomura 46:5074781a28dd 73 * @typedef UINT32
MasashiNomura 46:5074781a28dd 74 * @brief unsigned int のtypedef
MasashiNomura 46:5074781a28dd 75 */
takeru0x1103 18:5aa48aec9cae 76 typedef unsigned int UINT32;
takeru0x1103 0:ecd925601fc6 77
MasashiNomura 46:5074781a28dd 78 /**
MasashiNomura 46:5074781a28dd 79 * @typedef typUserSw
MasashiNomura 46:5074781a28dd 80 * @brief ユーザースイッチ(ハンドル)のレジスタ読み値のビットフィールド共用体
MasashiNomura 46:5074781a28dd 81 */
MasashiNomura 22:24c9c2dedca9 82 typedef union{
MasashiNomura 22:24c9c2dedca9 83 UINT16 w;
MasashiNomura 22:24c9c2dedca9 84 struct{
MasashiNomura 46:5074781a28dd 85 UCHAR brk_l : 1; //!< ブレーキ左
MasashiNomura 46:5074781a28dd 86 UCHAR flt_off : 1; //!< エンジンスロットル閉鎖(アイドリング)
MasashiNomura 46:5074781a28dd 87 UCHAR r_eng_down: 1; //!< リアエンジンスロットルをわずかに閉じる
MasashiNomura 46:5074781a28dd 88 UCHAR r_eng_up : 1; //!< リアエンジンスロットルをわずかに開く
MasashiNomura 57:56b7e66a0c3d 89 UCHAR ctrl_sw : 1; //!< リザーブ1 -> ヨー角制御のON/OFF
MasashiNomura 46:5074781a28dd 90 UCHAR brk_r : 1; //!< ブレーキ右
MasashiNomura 46:5074781a28dd 91 UCHAR flt_on : 1; //!< エンジンスロットル開放(全開 浮上)
MasashiNomura 46:5074781a28dd 92 UCHAR f_eng_down: 1; //!< フロントエンジンスロットルをわずかに閉じる
MasashiNomura 46:5074781a28dd 93 UCHAR f_eng_up : 1; //!< フロントエンジンスロットルをわずかに開く
MasashiNomura 46:5074781a28dd 94 UCHAR all_stop : 1; //!< すべてのモーターストップ&エンジンスロットル閉鎖(アイドリング)--> 不使用
MasashiNomura 22:24c9c2dedca9 95 }bf;
MasashiNomura 22:24c9c2dedca9 96 }typUserSw;
MasashiNomura 22:24c9c2dedca9 97
MasashiNomura 46:5074781a28dd 98 /**
MasashiNomura 50:76413e8e073d 99 * @typedef typSwCounter
MasashiNomura 50:76413e8e073d 100 * @brief ユーザースイッチ(ハンドル)のチャタリング防止用カウンターとフラグの共用体
MasashiNomura 50:76413e8e073d 101 */
MasashiNomura 50:76413e8e073d 102 typedef union{
MasashiNomura 50:76413e8e073d 103 UINT16 w;
MasashiNomura 50:76413e8e073d 104 struct{
MasashiNomura 50:76413e8e073d 105 bool flg : 1; //!< SW押されたフラグ
MasashiNomura 50:76413e8e073d 106 UINT16 cnt : 15; //!< カウンター
MasashiNomura 50:76413e8e073d 107 }bf;
MasashiNomura 50:76413e8e073d 108 }typSwCounter;
MasashiNomura 50:76413e8e073d 109
MasashiNomura 50:76413e8e073d 110 /**
MasashiNomura 48:71aec693a7dc 111 * @enum ePIDMode
MasashiNomura 48:71aec693a7dc 112 * @brief 使用するPIDアルゴリズムと実行のON/OFFを表すENUM
MasashiNomura 48:71aec693a7dc 113 */
MasashiNomura 48:71aec693a7dc 114 enum ePIDMode{
MasashiNomura 48:71aec693a7dc 115 PID_0_OFF = 0, //!< 高木さん修正版PID FB値計算のみ
MasashiNomura 48:71aec693a7dc 116 PID_1_OFF, //!< PID+torgue FB値計算のみ
MasashiNomura 48:71aec693a7dc 117 PID_0_ON, //!< 高木さん修正版PID ON
MasashiNomura 48:71aec693a7dc 118 PID_1_ON, //!< PID+torgue ON
MasashiNomura 48:71aec693a7dc 119 };
MasashiNomura 48:71aec693a7dc 120
MasashiNomura 48:71aec693a7dc 121 /**
MasashiNomura 46:5074781a28dd 122 * @typedef typPidPara
MasashiNomura 46:5074781a28dd 123 * @brief yaw回転制御用パラメータ構造体 コマンド設定用
MasashiNomura 46:5074781a28dd 124 */
MasashiNomura 24:c5945aaae777 125 typedef struct{
MasashiNomura 46:5074781a28dd 126 float PP; //!< アウターループP制御系数
MasashiNomura 46:5074781a28dd 127 float P; //!< インナーループP制御系数
MasashiNomura 46:5074781a28dd 128 float I; //!< インナーループI制御系数
MasashiNomura 46:5074781a28dd 129 float D; //!< インナーループD制御系数
MasashiNomura 46:5074781a28dd 130 float IMax; //!< 積分上限
MasashiNomura 46:5074781a28dd 131 float IMin; //!< 積分下限
MasashiNomura 46:5074781a28dd 132 float V; //!< 機体の目標トルク算出用係数K velosity
MasashiNomura 48:71aec693a7dc 133 ePIDMode mode;
MasashiNomura 24:c5945aaae777 134 }typPidPara;
MasashiNomura 24:c5945aaae777 135
MasashiNomura 46:5074781a28dd 136 // //モーターのパラメータ構造体
MasashiNomura 46:5074781a28dd 137 // typedef struct{
MasashiNomura 46:5074781a28dd 138 // //UCHAR num;
MasashiNomura 46:5074781a28dd 139 // //INT16 offset;
MasashiNomura 46:5074781a28dd 140 // INT16 limit_hi;
MasashiNomura 46:5074781a28dd 141 // INT16 limit_low;
MasashiNomura 46:5074781a28dd 142 // }typMotPara;
MasashiNomura 24:c5945aaae777 143
MasashiNomura 46:5074781a28dd 144 /**
MasashiNomura 46:5074781a28dd 145 * @enum DIR_TYPE
MasashiNomura 46:5074781a28dd 146 * @brief 回転方向を表すENUM
MasashiNomura 46:5074781a28dd 147 */
MasashiNomura 27:ff63c23bc689 148 enum DIR_TYPE {
MasashiNomura 46:5074781a28dd 149 CW, //!< +方向
MasashiNomura 46:5074781a28dd 150 CCW, //!< -方向
MasashiNomura 46:5074781a28dd 151 UNK, //!< 不定
MasashiNomura 27:ff63c23bc689 152 };
MasashiNomura 46:5074781a28dd 153 /**
MasashiNomura 46:5074781a28dd 154 * @enum DIR_ATT_TYPE
MasashiNomura 46:5074781a28dd 155 * @brief 回転方向が目標に近づいているのかどうかを表すENUM
MasashiNomura 46:5074781a28dd 156 */
MasashiNomura 27:ff63c23bc689 157 enum DIR_ATT_TYPE{
MasashiNomura 46:5074781a28dd 158 CLOSING, //!< 近づく方向
MasashiNomura 46:5074781a28dd 159 GO_AWAY, //!< 遠のく方向
MasashiNomura 46:5074781a28dd 160 UNK_DIR, //!< 不定
MasashiNomura 27:ff63c23bc689 161 };
MasashiNomura 46:5074781a28dd 162
MasashiNomura 46:5074781a28dd 163 /**
MasashiNomura 46:5074781a28dd 164 * @typedef TypeAttData
MasashiNomura 46:5074781a28dd 165 * @brief ヨー角制御のためのログ用データの構造体 未使用
MasashiNomura 46:5074781a28dd 166 */
MasashiNomura 27:ff63c23bc689 167 typedef struct{
MasashiNomura 27:ff63c23bc689 168 float tarAng; //ターゲット角度
MasashiNomura 27:ff63c23bc689 169 float curAng; //現在の角度
MasashiNomura 27:ff63c23bc689 170 float curAngVelo; //角速度
MasashiNomura 27:ff63c23bc689 171 DIR_TYPE dir; //回転方向
MasashiNomura 27:ff63c23bc689 172 DIR_ATT_TYPE dir_att; //ターゲット角度に向かっているかどうかの方向
MasashiNomura 27:ff63c23bc689 173 }TypeAttData;
MasashiNomura 27:ff63c23bc689 174
MasashiNomura 46:5074781a28dd 175 // typedef std::bitset<4> typFlg4Mot;
takeru0x1103 0:ecd925601fc6 176 /////////////////////////////////////////////////////////////////////
takeru0x1103 0:ecd925601fc6 177 #endif