2015_robocon_bteam / Mbed 2 deprecated 2015robot_main

Dependencies:   PID QEI mbed

Fork of 2015robot_main by Naoto Deguchi

main_ps3.cpp

Committer:
DeguNaoto
Date:
2015-10-02
Revision:
60:4a75f3f3a934
Parent:
59:9d66edf3e734
Child:
61:e018207ae860

File content as of revision 60:4a75f3f3a934:

/**
 * This program is written in main micro computer "mbed" for 2015 NHK Robot Contest (Bteam).
 */

//速度コントローラと向きコントローラはそのまま
//変更前のこのプログラムで実験
//後で関数のinline宣言を外す

/***コース選択***/
#define BLUE
//#define RED

/***コントローラ選択***/
//#define IM920
#define PS3

#if defined(IM920) && defined(PS3)
#error Caution, You should define either IM920 or PS3
#endif

#if defined(BLUE) && defined(RED)
#error Caution, You should define either BLUE or RED
#endif

#include "machine_ps3.h"

Serial pc(USBTX, USBRX);
//LocalFileSystem local("local");

int main()
{
#ifdef IM920
    initializeIM920();
#else
    initializeSBDBT();
#endif
    initializeMotors();
    initializeControllers();
    initializeSwing();
    initializeRS485();
#ifdef BLUE
    sita=PI/4.0,targ_sita=PI/4.0;
    IndicatorBLUE = 1;
#else
    sita=-PI/4.0,targ_sita=-PI/4.0;
    IndicatorRED = 1;
#endif
    Indicator4=1;
    Enable=1;
//    FILE *fp_r = fopen("/local/velocity.dat", "w");
    sendData(4,31);
    wait(0.1);
    sendData(5,31);
    wait(0.1);
//    double time=0.0;
    while(1) {
        if(autoflag){
#ifdef IM920
            autoIM920(); /*IM920 button*/
#else
            autoPS3();   /*PS3 button*/
#endif
#ifdef BLUE
            //Blue            
//            if((step==0)&&((8650.0>x)&&(x>1400.0))) targ_sita=0.0,step=1;
            if((step==0)&&((8650.0>x)&&(x>1400.0))) targ_sita=0.015,step=1;
            if((step==1)&&(x>8650.0)) targ_velocity=-speed,step=2;
            if((step==2)&&(x<2000.0)) targ_sita=PI/4,step=3;
            if((step==3)&&(x<10.0)) targ_velocity=0.0,step=4;
            
            if((x>3344.0)&&(CStep==1)) CStep=2,sendData(1,1);
            if((x>6234.0)&&(CStep==2)) CStep=3,sendData(1,2);
            if((x>7885.0)&&(CStep==3)) CStep=4,sendData(1,3);
//            if((x<6750.0)&&(CStep==4)) CStep=5,sendData(1,5);
//            if((x<6300.0)&&(CStep==5)) CStep=6,sendData(1,4);
            if((x<6000.0)&&(CStep==4)) CStep=5,sendData(1,5);
#else
            //Red
            if((step==0)&&((8650.0>x)&&(x>1400.0))) targ_sita=0.0,step=1;
            if((step==1)&&(x>8650.0)) targ_velocity=-speed,step=2;
            if((step==2)&&(x<2000.0)) targ_sita=-PI/4,step=3;
            if((step==3)&&(x<10.0)) targ_velocity=0.0,step=4;
            
            if((x>3344.0)&&(CStep==1)) CStep=2,sendData(1,1);
            if((x>6234.0)&&(CStep==2)) CStep=3,sendData(1,3);
            if((x>7885.0)&&(CStep==3)) CStep=4,sendData(1,2);
            if((x<6700.0)&&(CStep==4)) CStep=5,sendData(1,4);
            if((x<6300.0)&&(CStep==5)) CStep=6,sendData(1,5);
#endif            
            move_following();
        }
        else if(!autoflag) {
#ifdef IM920
            manualMoveIM920(); /*analogStick*/
            manualIM920();     /*IM920 button*/
#else
            manualMovePS3();   /*analogStick*/
            manualPS3();       /*PS3 button*/
#endif
            //Swing
//            swingFollowing();
            /*if(square){
                IndicatorAuto=0;
                fclose(fp_r);
            }
            fprintf(fp_r, "time:%1.3f, %f[rad/s], pwm:%f\r\n",time,swingRadVelocity,cont);
            time+=0.01;*/
        }
        /***update state***/ 
#ifdef IM920
        readIM920();
#endif
        mesure_state();
        mesureSwing();
        wait(RATE);

//        pc.printf("sita:%f, x:%f, y:%f ,x1:%f, x2:%f ,velocity:%f\r\n",sita,x,y,x1,x2,velocity);
//        pc.printf("A2 = %d, X = %d, Y = %d, B = %d, dead = %d\r\n", a2, X, Y, b, deadflag);
//        pc.printf("%f %f\r\n",cont,swingRadVelocity);
    }
}