2015_robocon_bteam / Mbed 2 deprecated 2015robot_main

Dependencies:   PID QEI mbed

Fork of 2015robot_main by Naoto Deguchi

Committer:
DeguNaoto
Date:
Tue Oct 20 09:05:43 2015 +0000
Revision:
111:846ea36dc1dc
Parent:
110:2ecb2f8aff81
Child:
112:717acc7c99f9
20151020 ???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeguNaoto 0:bd4719e15f7e 1 /**
DeguNaoto 0:bd4719e15f7e 2 * This program is written in main micro computer "mbed" for 2015 NHK Robot Contest (Bteam).
DeguNaoto 0:bd4719e15f7e 3 */
DeguNaoto 2:cf8ca6742db9 4
DeguNaoto 66:14df82661dfa 5 //回転機構wait PI/4 追加で待つ
DeguNaoto 76:f9bcb7ac438f 6 //射出をスキップする機能を追加
DeguNaoto 71:4ebc1c0fcb4e 7 //スタートゾーンにマシンを戻した後に暴走しないようにする
DeguNaoto 73:86b7b82ba997 8 //手動時の操作性の改善
DeguNaoto 73:86b7b82ba997 9 //一度手動モードになったらスタートゾーンに戻るまで再び自動モードにならないようにする
DeguNaoto 83:e1638c58e1f1 10 //flagfで前進・後退切り替え
DeguNaoto 83:e1638c58e1f1 11 //大和田射角
DeguNaoto 83:e1638c58e1f1 12 //午後に一定回転制御の実験
DeguNaoto 85:dd18a2d79956 13 //モード切替時に時間を待つ
DeguNaoto 103:ffd3ca4a7a71 14 //赤チーム側を青チーム側のプログラムに合わせて実装
DeguNaoto 107:579bb1ab67d9 15 //横幅調整済み
DeguNaoto 108:7eb434cfcbd7 16 //相手妨害モードいらない new!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DeguNaoto 110:2ecb2f8aff81 17 //赤チームモード、相手チーム側の射出位置調整
DeguNaoto 34:f9ef622f4376 18
DeguNaoto 57:3fbd487e055e 19 /***コース選択***/
DeguNaoto 105:0be5d5d64782 20 //#define BLUE
DeguNaoto 105:0be5d5d64782 21 #define RED
DeguNaoto 43:f9a75ecbe44e 22
DeguNaoto 57:3fbd487e055e 23 /***コントローラ選択***/
DeguNaoto 86:5f0b065cb4d3 24 #define IM920
DeguNaoto 86:5f0b065cb4d3 25 //#define PS3
DeguNaoto 83:e1638c58e1f1 26
DeguNaoto 83:e1638c58e1f1 27 /***回転機構測定***/
DeguNaoto 83:e1638c58e1f1 28 //#define MESURE
DeguNaoto 57:3fbd487e055e 29
DeguNaoto 57:3fbd487e055e 30 #if defined(IM920) && defined(PS3)
DeguNaoto 57:3fbd487e055e 31 #error Caution, You should define either IM920 or PS3
DeguNaoto 57:3fbd487e055e 32 #endif
DeguNaoto 57:3fbd487e055e 33
DeguNaoto 45:e11ec4f6d37e 34 #if defined(BLUE) && defined(RED)
DeguNaoto 45:e11ec4f6d37e 35 #error Caution, You should define either BLUE or RED
DeguNaoto 45:e11ec4f6d37e 36 #endif
DeguNaoto 45:e11ec4f6d37e 37
DeguNaoto 0:bd4719e15f7e 38 #include "machine_ps3.h"
DeguNaoto 0:bd4719e15f7e 39
DeguNaoto 106:20dab118bd5b 40 #define deff 70.0
DeguNaoto 106:20dab118bd5b 41
DeguNaoto 0:bd4719e15f7e 42 Serial pc(USBTX, USBRX);
DeguNaoto 83:e1638c58e1f1 43 #ifdef MESURE
DeguNaoto 83:e1638c58e1f1 44 LocalFileSystem local("local");
DeguNaoto 83:e1638c58e1f1 45 #endif
DeguNaoto 101:b67d33e56b66 46
DeguNaoto 77:7dd154b5ace3 47 Timeout MStop;
DeguNaoto 77:7dd154b5ace3 48 void Restart(){
DeguNaoto 77:7dd154b5ace3 49 if(step==10) step=11;
DeguNaoto 77:7dd154b5ace3 50 }
DeguNaoto 0:bd4719e15f7e 51
DeguNaoto 61:e018207ae860 52 int main() {
DeguNaoto 57:3fbd487e055e 53 #ifdef IM920
DeguNaoto 51:cb430192b28b 54 initializeIM920();
DeguNaoto 57:3fbd487e055e 55 #else
DeguNaoto 57:3fbd487e055e 56 initializeSBDBT();
DeguNaoto 57:3fbd487e055e 57 #endif
DeguNaoto 0:bd4719e15f7e 58 initializeMotors();
DeguNaoto 0:bd4719e15f7e 59 initializeControllers();
DeguNaoto 48:64d005c70df2 60 initializeSwing();
DeguNaoto 59:9d66edf3e734 61 initializeRS485();
DeguNaoto 43:f9a75ecbe44e 62 #ifdef BLUE
DeguNaoto 34:f9ef622f4376 63 sita=PI/4.0,targ_sita=PI/4.0;
DeguNaoto 55:db1797ac6cb1 64 IndicatorBLUE = 1;
DeguNaoto 43:f9a75ecbe44e 65 #else
DeguNaoto 43:f9a75ecbe44e 66 sita=-PI/4.0,targ_sita=-PI/4.0;
DeguNaoto 55:db1797ac6cb1 67 IndicatorRED = 1;
DeguNaoto 43:f9a75ecbe44e 68 #endif
DeguNaoto 21:79b94cb922f0 69 Indicator4=1;
DeguNaoto 26:8e6c736b6791 70 Enable=1;
DeguNaoto 83:e1638c58e1f1 71 #ifdef MESURE
DeguNaoto 83:e1638c58e1f1 72 FILE *fp_r = fopen("/local/velocity.dat", "w");
DeguNaoto 83:e1638c58e1f1 73 double time=0.0;
DeguNaoto 83:e1638c58e1f1 74 #endif
DeguNaoto 62:02a44f5bc51e 75 wait(0.3);
DeguNaoto 103:ffd3ca4a7a71 76 sendData(7,0);
DeguNaoto 0:bd4719e15f7e 77 while(1) {
DeguNaoto 21:79b94cb922f0 78 if(autoflag){
DeguNaoto 57:3fbd487e055e 79 #ifdef IM920
DeguNaoto 52:d9e1629da852 80 autoIM920(); /*IM920 button*/
DeguNaoto 57:3fbd487e055e 81 #else
DeguNaoto 57:3fbd487e055e 82 autoPS3(); /*PS3 button*/
DeguNaoto 57:3fbd487e055e 83 #endif
DeguNaoto 43:f9a75ecbe44e 84 #ifdef BLUE
DeguNaoto 60:4a75f3f3a934 85 //Blue
DeguNaoto 88:cbed08732872 86 if(spcount<speed){
DeguNaoto 89:048a72382b0a 87 spcount+=speed/100.0;
DeguNaoto 88:cbed08732872 88 targ_velocity=spcount;
DeguNaoto 88:cbed08732872 89 }
DeguNaoto 90:9fe39ebe721f 90 /********************************Nomal Mode*********************************/
DeguNaoto 92:3a12444b5192 91 if((step==0)&&((8650.0>x)&&(x>800.0))) {
DeguNaoto 101:b67d33e56b66 92 targ_sita=0.025;
DeguNaoto 83:e1638c58e1f1 93 step=1;
DeguNaoto 83:e1638c58e1f1 94 }
DeguNaoto 106:20dab118bd5b 95 if((step==1)&&(x>8600.0+deff)) {
DeguNaoto 83:e1638c58e1f1 96 targ_velocity=0.0;
DeguNaoto 79:7f86e18f40ef 97 step=2;
DeguNaoto 83:e1638c58e1f1 98 }
DeguNaoto 88:cbed08732872 99 if((step==2)&&((velocity<500.0)&&(velocity>-500.0))){
DeguNaoto 83:e1638c58e1f1 100 step=3;
DeguNaoto 89:048a72382b0a 101 spcount=0.0;
DeguNaoto 79:7f86e18f40ef 102 flagf=0;
DeguNaoto 101:b67d33e56b66 103 targ_sita=0.035;
DeguNaoto 79:7f86e18f40ef 104 }
DeguNaoto 86:5f0b065cb4d3 105 if((step==3)&&(x<2000.0)) {
DeguNaoto 66:14df82661dfa 106 targ_sita=PI/4;
DeguNaoto 83:e1638c58e1f1 107 step=4;
DeguNaoto 66:14df82661dfa 108 }
DeguNaoto 85:dd18a2d79956 109 if((step==4)&&(x<0.0)) {
DeguNaoto 73:86b7b82ba997 110 targ_velocity=0.0;
DeguNaoto 79:7f86e18f40ef 111 step=114;
DeguNaoto 70:5b8ed76a31c7 112 }
DeguNaoto 76:f9bcb7ac438f 113 /***Cylinder***/
DeguNaoto 107:579bb1ab67d9 114 if((x>3030.0+deff)&&(CStep==1)) {
DeguNaoto 72:021a14ee970f 115 if(!skip) sendData(1,1);
DeguNaoto 77:7dd154b5ace3 116 CStep=2;
DeguNaoto 72:021a14ee970f 117 }
DeguNaoto 108:7eb434cfcbd7 118 if((x>5900.0+deff)&&(CStep==2)) {
DeguNaoto 85:dd18a2d79956 119 if(!skip) sendData(1,3);
DeguNaoto 72:021a14ee970f 120 CStep=3;
DeguNaoto 72:021a14ee970f 121 }
DeguNaoto 107:579bb1ab67d9 122 if((x>7680.0+deff)&&(CStep==3)) {
DeguNaoto 85:dd18a2d79956 123 if(!skip) sendData(1,2);
DeguNaoto 72:021a14ee970f 124 CStep=4;
DeguNaoto 72:021a14ee970f 125 }
DeguNaoto 108:7eb434cfcbd7 126 if((x<6650.0+deff)&&(CStep==4)) {
DeguNaoto 72:021a14ee970f 127 if(!skip) sendData(1,5);
DeguNaoto 72:021a14ee970f 128 CStep=5;
DeguNaoto 72:021a14ee970f 129 }
DeguNaoto 107:579bb1ab67d9 130 if((x<6170.0+deff)&&(CStep==5)) {
DeguNaoto 72:021a14ee970f 131 if(!skip) sendData(1,4);
DeguNaoto 101:b67d33e56b66 132 CStep=6;
DeguNaoto 101:b67d33e56b66 133 }
DeguNaoto 101:b67d33e56b66 134 if((x<4000.0)&&(CStep==6)){
DeguNaoto 103:ffd3ca4a7a71 135 sendData(7,0);
DeguNaoto 83:e1638c58e1f1 136 CStep=114;
DeguNaoto 72:021a14ee970f 137 }
DeguNaoto 76:f9bcb7ac438f 138 /////////////////////////////////////////////////////////////////////////
DeguNaoto 76:f9bcb7ac438f 139 /******************************Middle Mode******************************/
DeguNaoto 83:e1638c58e1f1 140 if((step==5)&&((5700.0>x)&&(x>800.0))) {
DeguNaoto 101:b67d33e56b66 141 targ_sita=0.025;
DeguNaoto 76:f9bcb7ac438f 142 step=6;
DeguNaoto 83:e1638c58e1f1 143 }
DeguNaoto 83:e1638c58e1f1 144 if((step==6)&&(x>7000.0)){
DeguNaoto 83:e1638c58e1f1 145 targ_velocity=0.0;
DeguNaoto 83:e1638c58e1f1 146 step=7;
DeguNaoto 76:f9bcb7ac438f 147 }
DeguNaoto 88:cbed08732872 148 if((step==7)&&((velocity<500.0)&&(velocity>-500.0))){
DeguNaoto 83:e1638c58e1f1 149 flagf=0;
DeguNaoto 89:048a72382b0a 150 spcount=0.0;
DeguNaoto 101:b67d33e56b66 151 targ_sita=0.035;
DeguNaoto 83:e1638c58e1f1 152 step=8;
DeguNaoto 83:e1638c58e1f1 153 }
DeguNaoto 83:e1638c58e1f1 154 if((step==8)&&(x<1900.0)) {
DeguNaoto 76:f9bcb7ac438f 155 targ_sita=PI/4;
DeguNaoto 83:e1638c58e1f1 156 step=9;
DeguNaoto 76:f9bcb7ac438f 157 }
DeguNaoto 85:dd18a2d79956 158 if((step==9)&&(x<-10.0)) {
DeguNaoto 76:f9bcb7ac438f 159 targ_velocity=0.0;
DeguNaoto 76:f9bcb7ac438f 160 step=114;
DeguNaoto 76:f9bcb7ac438f 161 }
DeguNaoto 83:e1638c58e1f1 162
DeguNaoto 107:579bb1ab67d9 163 if((x>4620.0+deff)&&(CStep==7)){
DeguNaoto 83:e1638c58e1f1 164 sendData(1,5);
DeguNaoto 101:b67d33e56b66 165 CStep=8;
DeguNaoto 83:e1638c58e1f1 166 }
DeguNaoto 107:579bb1ab67d9 167 if((x>5720.0+deff)&&(CStep==8)){
DeguNaoto 83:e1638c58e1f1 168 sendData(1,4);
DeguNaoto 101:b67d33e56b66 169 CStep=9;
DeguNaoto 101:b67d33e56b66 170 }
DeguNaoto 101:b67d33e56b66 171 if((x<4000.0)&&(CStep==9)){
DeguNaoto 103:ffd3ca4a7a71 172 sendData(7,0);
DeguNaoto 83:e1638c58e1f1 173 CStep=114;
DeguNaoto 83:e1638c58e1f1 174 }
DeguNaoto 76:f9bcb7ac438f 175 /////////////////////////////////////////////////////////////////////////
DeguNaoto 77:7dd154b5ace3 176 /*****************************Opponents Mode****************************/
DeguNaoto 101:b67d33e56b66 177 if((step==15)&&((5700.0>x)&&(x>50.0))) {
DeguNaoto 101:b67d33e56b66 178 targ_sita=0.025;
DeguNaoto 83:e1638c58e1f1 179 step=16;
DeguNaoto 83:e1638c58e1f1 180 }
DeguNaoto 107:579bb1ab67d9 181 if((step==16)&&(x>2850.0+deff)){
DeguNaoto 79:7f86e18f40ef 182 targ_velocity=0.0;
DeguNaoto 84:919a335ac81e 183 step=17;
DeguNaoto 84:919a335ac81e 184 }
DeguNaoto 101:b67d33e56b66 185 if((step==17)&&((velocity<5000.0)&&(velocity>-5000.0))){
DeguNaoto 84:919a335ac81e 186 flagf=0;
DeguNaoto 89:048a72382b0a 187 spcount=0.0;
DeguNaoto 101:b67d33e56b66 188 targ_sita=0.035;
DeguNaoto 84:919a335ac81e 189 step=18;
DeguNaoto 84:919a335ac81e 190 }
DeguNaoto 84:919a335ac81e 191 if((step==18)&&(x<-100.0)){
DeguNaoto 84:919a335ac81e 192 targ_velocity=0.0;
DeguNaoto 89:048a72382b0a 193 targ_sita=PI/4.0;
DeguNaoto 79:7f86e18f40ef 194 step=114;
DeguNaoto 84:919a335ac81e 195 }
DeguNaoto 84:919a335ac81e 196
DeguNaoto 108:7eb434cfcbd7 197 // if((x>1200.0+deff)&&(CStep==15)){
DeguNaoto 108:7eb434cfcbd7 198 if((x>1000.0+deff)&&(CStep==15)){
DeguNaoto 84:919a335ac81e 199 sendData(1,5);
DeguNaoto 85:dd18a2d79956 200 CStep=16;
DeguNaoto 85:dd18a2d79956 201 }
DeguNaoto 108:7eb434cfcbd7 202 // if((x>2655.0+deff)&&(CStep==16)){
DeguNaoto 108:7eb434cfcbd7 203 if((x>2455.0+deff)&&(CStep==16)){
DeguNaoto 108:7eb434cfcbd7 204 // if((x>2630.0)&&(CStep==16)){
DeguNaoto 85:dd18a2d79956 205 sendData(1,4);
DeguNaoto 101:b67d33e56b66 206 CStep=17;
DeguNaoto 101:b67d33e56b66 207 }
DeguNaoto 107:579bb1ab67d9 208 if((x<2400.0+deff)&&(CStep==17)){
DeguNaoto 103:ffd3ca4a7a71 209 sendData(7,0);
DeguNaoto 84:919a335ac81e 210 CStep=114;
DeguNaoto 103:ffd3ca4a7a71 211 }
DeguNaoto 77:7dd154b5ace3 212 /////////////////////////////////////////////////////////////////////////
DeguNaoto 107:579bb1ab67d9 213 /*****************************Disturb Mode****************************/
DeguNaoto 107:579bb1ab67d9 214 if((step==50)&&((8650.0>x)&&(x>800.0))) {
DeguNaoto 107:579bb1ab67d9 215 targ_sita=0.025;
DeguNaoto 107:579bb1ab67d9 216 step=51;
DeguNaoto 107:579bb1ab67d9 217 }
DeguNaoto 108:7eb434cfcbd7 218 if((step==51)&&(x>1500.0+deff)) {
DeguNaoto 107:579bb1ab67d9 219 targ_velocity=0.0;
DeguNaoto 107:579bb1ab67d9 220 velocity_controller.reset();
DeguNaoto 107:579bb1ab67d9 221 direction_controller.reset();
DeguNaoto 107:579bb1ab67d9 222 Move_l(0.0);
DeguNaoto 107:579bb1ab67d9 223 Move_r(0.0);
DeguNaoto 107:579bb1ab67d9 224 targ_sita=PI/2.0;
DeguNaoto 107:579bb1ab67d9 225 step=52;
DeguNaoto 107:579bb1ab67d9 226 }
DeguNaoto 107:579bb1ab67d9 227 if((step==52)&&((sita<PI/2.0+0.5)&&(sita>PI/2.0-0.5))){
DeguNaoto 107:579bb1ab67d9 228 step=53;
DeguNaoto 107:579bb1ab67d9 229 autoflag=0;
DeguNaoto 108:7eb434cfcbd7 230 flaga=0;
DeguNaoto 107:579bb1ab67d9 231 }
DeguNaoto 107:579bb1ab67d9 232 /////////////////////////////////////////////////////////////////////////
DeguNaoto 71:4ebc1c0fcb4e 233 #else
DeguNaoto 43:f9a75ecbe44e 234 //Red
DeguNaoto 92:3a12444b5192 235 if(spcount<speed){
DeguNaoto 92:3a12444b5192 236 spcount+=speed/100.0;
DeguNaoto 92:3a12444b5192 237 targ_velocity=spcount;
DeguNaoto 92:3a12444b5192 238 }
DeguNaoto 76:f9bcb7ac438f 239 /********************************Nomal Mode*********************************/
DeguNaoto 101:b67d33e56b66 240 if((step==0)&&((8650.0>x)&&(x>800.0))) {
DeguNaoto 105:0be5d5d64782 241 targ_sita=-0.025;
DeguNaoto 105:0be5d5d64782 242 step=1;
DeguNaoto 83:e1638c58e1f1 243 }
DeguNaoto 106:20dab118bd5b 244 if((step==1)&&(x>8600.0+deff)) {
DeguNaoto 83:e1638c58e1f1 245 targ_velocity=0.0;
DeguNaoto 79:7f86e18f40ef 246 step=2;
DeguNaoto 79:7f86e18f40ef 247 }
DeguNaoto 92:3a12444b5192 248 if((step==2)&&((velocity<500.0)&&(velocity>-500.0))){
DeguNaoto 71:4ebc1c0fcb4e 249 step=3;
DeguNaoto 92:3a12444b5192 250 spcount=0.0;
DeguNaoto 83:e1638c58e1f1 251 flagf=0;
DeguNaoto 105:0be5d5d64782 252 targ_sita=-0.035;
DeguNaoto 71:4ebc1c0fcb4e 253 }
DeguNaoto 105:0be5d5d64782 254 if((step==3)&&(x<2000.0)) {
DeguNaoto 83:e1638c58e1f1 255 targ_sita=-PI/4;
DeguNaoto 83:e1638c58e1f1 256 step=4;
DeguNaoto 83:e1638c58e1f1 257 }
DeguNaoto 92:3a12444b5192 258 if((step==4)&&(x<0.0)) {
DeguNaoto 73:86b7b82ba997 259 targ_velocity=0.0;
DeguNaoto 83:e1638c58e1f1 260 step=114;
DeguNaoto 73:86b7b82ba997 261 }
DeguNaoto 105:0be5d5d64782 262 /***Cylinder***/
DeguNaoto 106:20dab118bd5b 263 if((x>3030.0+deff)&&(CStep==1)) {
DeguNaoto 75:4cdcd50ee666 264 if(!skip) sendData(1,1);
DeguNaoto 105:0be5d5d64782 265 CStep=2;
DeguNaoto 75:4cdcd50ee666 266 }
DeguNaoto 106:20dab118bd5b 267 if((x>5940.0+deff)&&(CStep==2)) {
DeguNaoto 85:dd18a2d79956 268 if(!skip) sendData(1,2);
DeguNaoto 75:4cdcd50ee666 269 CStep=3;
DeguNaoto 75:4cdcd50ee666 270 }
DeguNaoto 106:20dab118bd5b 271 if((x>7680.0+deff)&&(CStep==3)) {
DeguNaoto 85:dd18a2d79956 272 if(!skip) sendData(1,3);
DeguNaoto 105:0be5d5d64782 273 CStep=4;
DeguNaoto 75:4cdcd50ee666 274 }
DeguNaoto 106:20dab118bd5b 275 if((x<6730.0+deff)&&(CStep==4)) {
DeguNaoto 75:4cdcd50ee666 276 if(!skip) sendData(1,4);
DeguNaoto 75:4cdcd50ee666 277 CStep=5;
DeguNaoto 75:4cdcd50ee666 278 }
DeguNaoto 106:20dab118bd5b 279 if((x<6170.0+deff)&&(CStep==5)) {
DeguNaoto 75:4cdcd50ee666 280 if(!skip) sendData(1,5);
DeguNaoto 105:0be5d5d64782 281 CStep=6;
DeguNaoto 105:0be5d5d64782 282 }
DeguNaoto 105:0be5d5d64782 283 if((x<4000.0)&&(CStep==6)){
DeguNaoto 105:0be5d5d64782 284 sendData(7,0);
DeguNaoto 83:e1638c58e1f1 285 CStep=114;
DeguNaoto 75:4cdcd50ee666 286 }
DeguNaoto 76:f9bcb7ac438f 287 /////////////////////////////////////////////////////////////////////////
DeguNaoto 76:f9bcb7ac438f 288 /******************************Middle Mode******************************/
DeguNaoto 92:3a12444b5192 289 if((step==5)&&((5700.0>x)&&(x>800.0))) {
DeguNaoto 105:0be5d5d64782 290 targ_sita=-0.025;
DeguNaoto 92:3a12444b5192 291 step=6;
DeguNaoto 83:e1638c58e1f1 292 }
DeguNaoto 83:e1638c58e1f1 293 if((step==6)&&(x>7000.0)){
DeguNaoto 83:e1638c58e1f1 294 targ_velocity=0.0;
DeguNaoto 83:e1638c58e1f1 295 step=7;
DeguNaoto 77:7dd154b5ace3 296 }
DeguNaoto 92:3a12444b5192 297 if((step==7)&&((velocity<500.0)&&(velocity>-500.0))){
DeguNaoto 76:f9bcb7ac438f 298 flagf=0;
DeguNaoto 92:3a12444b5192 299 spcount=0.0;
DeguNaoto 105:0be5d5d64782 300 targ_sita=-0.035;
DeguNaoto 83:e1638c58e1f1 301 step=8;
DeguNaoto 76:f9bcb7ac438f 302 }
DeguNaoto 109:e009296125db 303 if((step==8)&&(x<1820.0)) {
DeguNaoto 76:f9bcb7ac438f 304 targ_sita=-PI/4;
DeguNaoto 83:e1638c58e1f1 305 step=9;
DeguNaoto 76:f9bcb7ac438f 306 }
DeguNaoto 92:3a12444b5192 307 if((step==9)&&(x<-10.0)) {
DeguNaoto 76:f9bcb7ac438f 308 targ_velocity=0.0;
DeguNaoto 84:919a335ac81e 309 step=114;
DeguNaoto 76:f9bcb7ac438f 310 }
DeguNaoto 83:e1638c58e1f1 311
DeguNaoto 109:e009296125db 312 if((x>4690.0+deff)&&(CStep==7)){
DeguNaoto 83:e1638c58e1f1 313 sendData(1,4);
DeguNaoto 105:0be5d5d64782 314 CStep=8;
DeguNaoto 83:e1638c58e1f1 315 }
DeguNaoto 109:e009296125db 316 if((x>5790.0+deff)&&(CStep==8)){
DeguNaoto 92:3a12444b5192 317 sendData(1,5);
DeguNaoto 105:0be5d5d64782 318 CStep=9;
DeguNaoto 105:0be5d5d64782 319 }
DeguNaoto 105:0be5d5d64782 320 if((x<4000.0)&&(CStep==9)){
DeguNaoto 105:0be5d5d64782 321 sendData(7,0);
DeguNaoto 92:3a12444b5192 322 CStep=114;
DeguNaoto 92:3a12444b5192 323 }
DeguNaoto 84:919a335ac81e 324 /////////////////////////////////////////////////////////////////////////
DeguNaoto 84:919a335ac81e 325 /*****************************Opponents Mode****************************/
DeguNaoto 104:3c77a48da95c 326 if((step==15)&&((5700.0>x)&&(x>50.0))) {
DeguNaoto 104:3c77a48da95c 327 targ_sita=-0.025;
DeguNaoto 84:919a335ac81e 328 step=16;
DeguNaoto 84:919a335ac81e 329 }
DeguNaoto 109:e009296125db 330 if((step==16)&&(x>2800.0+deff)){
DeguNaoto 84:919a335ac81e 331 targ_velocity=0.0;
DeguNaoto 84:919a335ac81e 332 step=17;
DeguNaoto 84:919a335ac81e 333 }
DeguNaoto 104:3c77a48da95c 334 if((step==17)&&((velocity<5000.0)&&(velocity>-5000.0))){
DeguNaoto 84:919a335ac81e 335 flagf=0;
DeguNaoto 92:3a12444b5192 336 spcount=0.0;
DeguNaoto 105:0be5d5d64782 337 targ_sita=-0.035;
DeguNaoto 84:919a335ac81e 338 step=18;
DeguNaoto 84:919a335ac81e 339 }
DeguNaoto 84:919a335ac81e 340 if((step==18)&&(x<-100.0)){
DeguNaoto 83:e1638c58e1f1 341 targ_velocity=0.0;
DeguNaoto 105:0be5d5d64782 342 targ_sita=-PI/4.0;
DeguNaoto 83:e1638c58e1f1 343 step=114;
DeguNaoto 84:919a335ac81e 344 }
DeguNaoto 84:919a335ac81e 345
DeguNaoto 106:20dab118bd5b 346 if((x>1450.0+deff)&&(CStep==15)){
DeguNaoto 84:919a335ac81e 347 sendData(1,4);
DeguNaoto 97:5e6f513b26f2 348 CStep=16;
DeguNaoto 97:5e6f513b26f2 349 }
DeguNaoto 106:20dab118bd5b 350 if((x>2850.0+deff)&&(CStep==16)){
DeguNaoto 97:5e6f513b26f2 351 sendData(1,5);
DeguNaoto 104:3c77a48da95c 352 CStep=17;
DeguNaoto 104:3c77a48da95c 353 }
DeguNaoto 107:579bb1ab67d9 354 if((x<2400.0+deff)&&(CStep==17)){
DeguNaoto 104:3c77a48da95c 355 sendData(7,0);
DeguNaoto 84:919a335ac81e 356 CStep=114;
DeguNaoto 83:e1638c58e1f1 357 }
DeguNaoto 108:7eb434cfcbd7 358 /////////////////////////////////////////////////////////////////////////
DeguNaoto 108:7eb434cfcbd7 359 /*****************************Disturb Mode****************************/
DeguNaoto 108:7eb434cfcbd7 360 if((step==50)&&((8650.0>x)&&(x>800.0))) {
DeguNaoto 108:7eb434cfcbd7 361 targ_sita=-0.025;
DeguNaoto 108:7eb434cfcbd7 362 step=51;
DeguNaoto 108:7eb434cfcbd7 363 }
DeguNaoto 108:7eb434cfcbd7 364 if((step==51)&&(x>1000.0+deff)) {
DeguNaoto 108:7eb434cfcbd7 365 targ_velocity=0.0;
DeguNaoto 108:7eb434cfcbd7 366 Move_l(0.0);
DeguNaoto 108:7eb434cfcbd7 367 Move_r(0.0);
DeguNaoto 108:7eb434cfcbd7 368 velocity_controller.reset();
DeguNaoto 108:7eb434cfcbd7 369 direction_controller.reset();
DeguNaoto 108:7eb434cfcbd7 370 targ_sita=-PI/2.0;
DeguNaoto 108:7eb434cfcbd7 371 step=52;
DeguNaoto 108:7eb434cfcbd7 372 }
DeguNaoto 108:7eb434cfcbd7 373 if((step==52)&&((sita<PI/2.0+0.5)&&(sita>PI/2.0-0.5))){
DeguNaoto 108:7eb434cfcbd7 374 step=53;
DeguNaoto 108:7eb434cfcbd7 375 autoflag=0;
DeguNaoto 108:7eb434cfcbd7 376 flaga=0;
DeguNaoto 108:7eb434cfcbd7 377 }
DeguNaoto 76:f9bcb7ac438f 378 /////////////////////////////////////////////////////////////////////////
DeguNaoto 66:14df82661dfa 379 #endif
DeguNaoto 73:86b7b82ba997 380 mesure_state(); /*位置測定*/
DeguNaoto 76:f9bcb7ac438f 381 move_following(); /*移動制御*/
DeguNaoto 4:51d87d2b698c 382 }
DeguNaoto 21:79b94cb922f0 383 else if(!autoflag) {
DeguNaoto 57:3fbd487e055e 384 #ifdef IM920
DeguNaoto 52:d9e1629da852 385 manualMoveIM920(); /*analogStick*/
DeguNaoto 52:d9e1629da852 386 manualIM920(); /*IM920 button*/
DeguNaoto 57:3fbd487e055e 387 #else
DeguNaoto 57:3fbd487e055e 388 manualMovePS3(); /*analogStick*/
DeguNaoto 57:3fbd487e055e 389 manualPS3(); /*PS3 button*/
DeguNaoto 57:3fbd487e055e 390 #endif
DeguNaoto 48:64d005c70df2 391 //Swing
unicore32 91:83c2e0381384 392 swingFollowing();
DeguNaoto 89:048a72382b0a 393 flaga=0;
DeguNaoto 83:e1638c58e1f1 394 #ifdef MESURE
DeguNaoto 83:e1638c58e1f1 395 if(down){
DeguNaoto 50:8ea4714316ce 396 IndicatorAuto=0;
DeguNaoto 50:8ea4714316ce 397 fclose(fp_r);
DeguNaoto 50:8ea4714316ce 398 }
DeguNaoto 50:8ea4714316ce 399 fprintf(fp_r, "time:%1.3f, %f[rad/s], pwm:%f\r\n",time,swingRadVelocity,cont);
DeguNaoto 83:e1638c58e1f1 400 time+=0.01;
DeguNaoto 83:e1638c58e1f1 401 #endif
DeguNaoto 4:51d87d2b698c 402 }
DeguNaoto 55:db1797ac6cb1 403 /***update state***/
DeguNaoto 57:3fbd487e055e 404 #ifdef IM920
DeguNaoto 51:cb430192b28b 405 readIM920();
DeguNaoto 57:3fbd487e055e 406 #endif
DeguNaoto 48:64d005c70df2 407 mesureSwing();
DeguNaoto 0:bd4719e15f7e 408 wait(RATE);
DeguNaoto 108:7eb434cfcbd7 409 // pc.printf("%f\r\n",(float)((((2.0 * PI) / swingRadVelocity) / 4.0)));
DeguNaoto 56:ac01d6b46291 410 // pc.printf("sita:%f, x:%f, y:%f ,x1:%f, x2:%f ,velocity:%f\r\n",sita,x,y,x1,x2,velocity);
DeguNaoto 52:d9e1629da852 411 // pc.printf("A2 = %d, X = %d, Y = %d, B = %d, dead = %d\r\n", a2, X, Y, b, deadflag);
DeguNaoto 100:5769dc0e7478 412 // pc.printf("%f %f %f\r\n",cont,swingRadVelocity, (double)SwingSens.getPulses());
DeguNaoto 0:bd4719e15f7e 413 }
DeguNaoto 0:bd4719e15f7e 414 }