2015_robocon_bteam / Mbed 2 deprecated 2015robot_main_zenkoku

Dependencies:   PID QEI mbed

Committer:
unicore32
Date:
Mon Nov 09 11:34:21 2015 +0000
Revision:
28:70e45354fbf3
Parent:
24:6d2573d6f2b6
????????(?????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeguNaoto 0:b613dc16f27d 1 /**
DeguNaoto 0:b613dc16f27d 2 * This program is written in main micro computer "mbed" for 2015 NHK Robot Contest (Bteam).
DeguNaoto 0:b613dc16f27d 3 */
DeguNaoto 0:b613dc16f27d 4
DeguNaoto 0:b613dc16f27d 5 /***コース選択***/
DeguNaoto 3:8d8c25c556ae 6 #define BLUE
DeguNaoto 3:8d8c25c556ae 7 //#define RED
DeguNaoto 0:b613dc16f27d 8
DeguNaoto 2:738b28f6a04b 9 /***マシン状態計測***/
DeguNaoto 0:b613dc16f27d 10 //#define MESURE
DeguNaoto 0:b613dc16f27d 11
DeguNaoto 0:b613dc16f27d 12 #if defined(BLUE) && defined(RED)
DeguNaoto 0:b613dc16f27d 13 #error Caution, You should define either BLUE or RED
DeguNaoto 0:b613dc16f27d 14 #endif
DeguNaoto 0:b613dc16f27d 15
DeguNaoto 21:bdf8ac5c200c 16 #ifdef MESURE
DeguNaoto 21:bdf8ac5c200c 17 #include "mbed.h"
DeguNaoto 21:bdf8ac5c200c 18 short mesureflag=0;
DeguNaoto 21:bdf8ac5c200c 19 LocalFileSystem local("local")
DeguNaoto 21:bdf8ac5c200c 20 short testflag=0;
DeguNaoto 21:bdf8ac5c200c 21 FILE *fp_r = fopen("/local/velocity.dat", "w");
DeguNaoto 21:bdf8ac5c200c 22 #endif
DeguNaoto 23:26f9483439fe 23 /*#include "mbed.h"
DeguNaoto 21:bdf8ac5c200c 24 LocalFileSystem local("local");
DeguNaoto 23:26f9483439fe 25 FILE *fp_r = fopen("/local/velocity.dat", "w");*/
DeguNaoto 21:bdf8ac5c200c 26
DeguNaoto 0:b613dc16f27d 27 #include "machine_ps3.h"
DeguNaoto 0:b613dc16f27d 28
DeguNaoto 0:b613dc16f27d 29 Serial pc(USBTX, USBRX);
DeguNaoto 21:bdf8ac5c200c 30
DeguNaoto 24:6d2573d6f2b6 31 //LocalFileSystem local("local");
DeguNaoto 0:b613dc16f27d 32
DeguNaoto 0:b613dc16f27d 33 int main() {
DeguNaoto 24:6d2573d6f2b6 34 // FILE *fp_r = fopen("/local/velocity.dat", "w");
DeguNaoto 2:738b28f6a04b 35 Com.attach(&Call,RATE);
DeguNaoto 0:b613dc16f27d 36 initializeMotors();
DeguNaoto 0:b613dc16f27d 37 initializeControllers();
DeguNaoto 0:b613dc16f27d 38 initializeRS485();
DeguNaoto 14:943e663694c3 39 initializeMbedSerial();
DeguNaoto 24:6d2573d6f2b6 40 initializeSwing();
DeguNaoto 0:b613dc16f27d 41 #ifdef BLUE
DeguNaoto 0:b613dc16f27d 42 sita=PI/4.0,targ_sita=PI/4.0;
DeguNaoto 0:b613dc16f27d 43 IndicatorBLUE = 1;
DeguNaoto 0:b613dc16f27d 44 #else
DeguNaoto 0:b613dc16f27d 45 sita=-PI/4.0,targ_sita=-PI/4.0;
DeguNaoto 0:b613dc16f27d 46 IndicatorRED = 1;
DeguNaoto 0:b613dc16f27d 47 #endif
DeguNaoto 0:b613dc16f27d 48 Indicator4=1;
DeguNaoto 0:b613dc16f27d 49 Enable=1;
DeguNaoto 0:b613dc16f27d 50 wait(0.3);
DeguNaoto 0:b613dc16f27d 51 sendData(7,0);
DeguNaoto 0:b613dc16f27d 52 while(1) {
DeguNaoto 0:b613dc16f27d 53 if(autoflag){
DeguNaoto 24:6d2573d6f2b6 54 #ifdef BLUE
DeguNaoto 0:b613dc16f27d 55 autoIM920(); /*IM920 button*/
DeguNaoto 0:b613dc16f27d 56 /********************************Nomal Mode*********************************/
DeguNaoto 23:26f9483439fe 57 if((step==0)&&((8600.0>x)&&(x>800.0))) {
DeguNaoto 24:6d2573d6f2b6 58 targ_sita=-0.04;
DeguNaoto 21:bdf8ac5c200c 59 // targ_sita=0.0;
DeguNaoto 0:b613dc16f27d 60 step=1;
DeguNaoto 0:b613dc16f27d 61 }
DeguNaoto 17:726b6f53a457 62 // if((step==1)&&(x>8600.0+deff)) {
DeguNaoto 23:26f9483439fe 63 if((step==1)&&(x>8600.0)) {
DeguNaoto 0:b613dc16f27d 64 targ_velocity=0.0;
DeguNaoto 2:738b28f6a04b 65 direction_controller.setBias(0.0);
DeguNaoto 2:738b28f6a04b 66 direction_controller.reset();
DeguNaoto 3:8d8c25c556ae 67 velocity_controller.setBias(0.0);
DeguNaoto 3:8d8c25c556ae 68 velocity_controller.reset();
DeguNaoto 0:b613dc16f27d 69 step=2;
DeguNaoto 0:b613dc16f27d 70 }
DeguNaoto 0:b613dc16f27d 71 if((step==2)&&((velocity<500.0)&&(velocity>-500.0))){
DeguNaoto 0:b613dc16f27d 72 step=3;
DeguNaoto 0:b613dc16f27d 73 spcount=0.0;
DeguNaoto 0:b613dc16f27d 74 flagf=0;
DeguNaoto 24:6d2573d6f2b6 75 // targ_sita=0.0;
DeguNaoto 24:6d2573d6f2b6 76 targ_sita=-0.04;
DeguNaoto 0:b613dc16f27d 77 }
DeguNaoto 17:726b6f53a457 78 if((step==3)&&(x<1400.0)) {
DeguNaoto 0:b613dc16f27d 79 targ_sita=PI/4;
DeguNaoto 0:b613dc16f27d 80 step=4;
DeguNaoto 0:b613dc16f27d 81 }
DeguNaoto 24:6d2573d6f2b6 82 if((step==4)&&(x<800.0)) {
DeguNaoto 24:6d2573d6f2b6 83 dpcount=speed;
DeguNaoto 0:b613dc16f27d 84 step=114;
DeguNaoto 0:b613dc16f27d 85 }
DeguNaoto 24:6d2573d6f2b6 86 /*if((step==4)&&(x<10.0)) {
DeguNaoto 24:6d2573d6f2b6 87 targ_velocity=0.0;
DeguNaoto 24:6d2573d6f2b6 88 step=114;
DeguNaoto 24:6d2573d6f2b6 89 }*/
DeguNaoto 0:b613dc16f27d 90 /***Cylinder***/
DeguNaoto 24:6d2573d6f2b6 91 if((x>3300.0)&&(CStep==1)) {
DeguNaoto 23:26f9483439fe 92 if(!skip) sendData(1,1);
DeguNaoto 0:b613dc16f27d 93 CStep=2;
DeguNaoto 0:b613dc16f27d 94 }
DeguNaoto 24:6d2573d6f2b6 95 if((x>6100.0)&&(CStep==2)) {
DeguNaoto 0:b613dc16f27d 96 if(!skip) sendData(1,3);
DeguNaoto 0:b613dc16f27d 97 CStep=3;
DeguNaoto 0:b613dc16f27d 98 }
DeguNaoto 24:6d2573d6f2b6 99 if((x>7880.0)&&(CStep==3)) {
DeguNaoto 0:b613dc16f27d 100 if(!skip) sendData(1,2);
DeguNaoto 0:b613dc16f27d 101 CStep=4;
DeguNaoto 0:b613dc16f27d 102 }
DeguNaoto 24:6d2573d6f2b6 103 if((x<6880.0)&&(CStep==4)) {
DeguNaoto 0:b613dc16f27d 104 if(!skip) sendData(1,5);
DeguNaoto 0:b613dc16f27d 105 CStep=5;
DeguNaoto 0:b613dc16f27d 106 }
DeguNaoto 24:6d2573d6f2b6 107 if((x<6800.0)&&(CStep==5)) {
DeguNaoto 24:6d2573d6f2b6 108 if(!skip) sendData(1,6);
DeguNaoto 0:b613dc16f27d 109 CStep=6;
DeguNaoto 0:b613dc16f27d 110 }
DeguNaoto 24:6d2573d6f2b6 111 if((x<6300.0)&&(CStep==6)) {
DeguNaoto 24:6d2573d6f2b6 112 if(!skip) sendData(1,4);
DeguNaoto 24:6d2573d6f2b6 113 CStep=7;
DeguNaoto 24:6d2573d6f2b6 114 }
DeguNaoto 24:6d2573d6f2b6 115 if((x<4000.0)&&(CStep==7)){
DeguNaoto 0:b613dc16f27d 116 sendData(7,0);
DeguNaoto 0:b613dc16f27d 117 CStep=114;
DeguNaoto 0:b613dc16f27d 118 }
DeguNaoto 24:6d2573d6f2b6 119 #else
DeguNaoto 24:6d2573d6f2b6 120 #endif
DeguNaoto 0:b613dc16f27d 121 }
DeguNaoto 0:b613dc16f27d 122 else if(!autoflag) {
DeguNaoto 0:b613dc16f27d 123 flaga=0;
DeguNaoto 0:b613dc16f27d 124 manualIM920(); /*IM920 button*/
DeguNaoto 24:6d2573d6f2b6 125 // mesureSwing();
DeguNaoto 24:6d2573d6f2b6 126 // swingFollowing();
DeguNaoto 24:6d2573d6f2b6 127 // wait(RATE);
DeguNaoto 24:6d2573d6f2b6 128 // fprintf(fp_r, "%f\r\n",swingRadVelocity);
DeguNaoto 24:6d2573d6f2b6 129 // if(b==11) fclose(fp_r);
DeguNaoto 24:6d2573d6f2b6 130 pc.printf("Swing:%f\r\n",swingRadVelocity);
DeguNaoto 0:b613dc16f27d 131 }
DeguNaoto 0:b613dc16f27d 132 /***update state***/
DeguNaoto 24:6d2573d6f2b6 133 // pc.printf("Swing:%f\r\n",SwingSens.getPulses());
DeguNaoto 24:6d2573d6f2b6 134 // pc.printf("x:%f ,y:%f ,sita:%f ,r:%f\r\n",x,y,sita,Pulses_move_r);
DeguNaoto 0:b613dc16f27d 135 }
DeguNaoto 4:09f684eac572 136 }