PES 2 - Gruppe 1 / Mbed 2 deprecated Robocode_Random

Dependencies:   mbed

Fork of Robocode by PES 2 - Gruppe 1

Committer:
aeschsim
Date:
Thu Apr 20 05:52:22 2017 +0000
Revision:
69:1fdcef6a7577
Parent:
67:d1ac034668fc
Child:
71:ddf4eb5c3081
changed return values of grabbing-functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cittecla 38:3526c36e4c73 1 #include "Main.h"
cittecla 18:a82994e67297 2
cittecla 18:a82994e67297 3
cittecla 61:b57577b0072f 4 int state = 10;
cittecla 32:777976c4d733 5 bool positioning_state = 0;
cittecla 32:777976c4d733 6 bool mapping_state = 0;
cittecla 31:51f52ffa4b51 7
cittecla 34:40d8d29b44b8 8 int IMU();
cittecla 34:40d8d29b44b8 9
cittecla 32:777976c4d733 10 int main()
cittecla 32:777976c4d733 11 {
cittecla 61:b57577b0072f 12 printf("start...\r\n");
cittecla 32:777976c4d733 13
cittecla 34:40d8d29b44b8 14 // while (timer() < 300) {
cittecla 34:40d8d29b44b8 15 while (1) {
cittecla 64:c2fcf3b349e9 16 wait(0.01f);
cittecla 34:40d8d29b44b8 17 // 5min
cittecla 33:8a98f8b9d859 18 //*******************************************************************************
cittecla 33:8a98f8b9d859 19 //Non_state machine driven function
cittecla 33:8a98f8b9d859 20 //This functions will be called every cycle, use for safety and sensor functipons
cittecla 33:8a98f8b9d859 21 //*******************************************************************************
cittecla 32:777976c4d733 22
cittecla 38:3526c36e4c73 23 safety();
cittecla 31:51f52ffa4b51 24
cittecla 38:3526c36e4c73 25 //scanning();
cittecla 38:3526c36e4c73 26
cittecla 38:3526c36e4c73 27
cittecla 32:777976c4d733 28
cittecla 32:777976c4d733 29 if(positioning_state) {
cittecla 38:3526c36e4c73 30 positioning();
cittecla 32:777976c4d733 31 }
cittecla 32:777976c4d733 32 if(mapping_state) {
cittecla 38:3526c36e4c73 33 mapping();
cittecla 32:777976c4d733 34 }
cittecla 18:a82994e67297 35
cittecla 33:8a98f8b9d859 36 //*******************************************************************************
cittecla 33:8a98f8b9d859 37 //state machine driven function
cittecla 33:8a98f8b9d859 38 //This functions will only be called when their state is active.
cittecla 33:8a98f8b9d859 39 //The state machine will be in the same state until this action is completed or
cittecla 33:8a98f8b9d859 40 //a safty function kicks in and stops the current function.
cittecla 33:8a98f8b9d859 41 //Every function will return the next active state upon its transition table.
cittecla 33:8a98f8b9d859 42 //State and Transition Table can be found in the State_Machine.xlsx
cittecla 33:8a98f8b9d859 43 //*******************************************************************************
cittecla 32:777976c4d733 44 switch (state) {
cittecla 38:3526c36e4c73 45 case 0:
cittecla 38:3526c36e4c73 46 state = emergency_shutdown();
cittecla 38:3526c36e4c73 47 break;
cittecla 38:3526c36e4c73 48 case 1:
cittecla 38:3526c36e4c73 49 state = colision_detected();
cittecla 38:3526c36e4c73 50 break;
cittecla 38:3526c36e4c73 51 case 2:
cittecla 38:3526c36e4c73 52 state = current_to_high();
cittecla 38:3526c36e4c73 53 break;
cittecla 38:3526c36e4c73 54 case 3:
cittecla 38:3526c36e4c73 55 state = overheating();
cittecla 38:3526c36e4c73 56 break;
cittecla 31:51f52ffa4b51 57
cittecla 31:51f52ffa4b51 58
cittecla 38:3526c36e4c73 59 case 10:
cittecla 38:3526c36e4c73 60 state = idel();
cittecla 61:b57577b0072f 61 printf("idel1...\r\n");
cittecla 38:3526c36e4c73 62 break;
cittecla 38:3526c36e4c73 63 case 11:
cittecla 38:3526c36e4c73 64 state = idel2();
cittecla 61:b57577b0072f 65 printf("idel2...\r\n");
cittecla 38:3526c36e4c73 66 break;
cittecla 38:3526c36e4c73 67
cittecla 38:3526c36e4c73 68
cittecla 38:3526c36e4c73 69 case 15:
cittecla 38:3526c36e4c73 70 state = initialisation();
cittecla 38:3526c36e4c73 71 break;
cittecla 38:3526c36e4c73 72 case 16:
aeschsim 69:1fdcef6a7577 73 //arm_position_release();
aeschsim 69:1fdcef6a7577 74 //open_grabber();
cittecla 38:3526c36e4c73 75 state = inital_positioning();
cittecla 38:3526c36e4c73 76 break;
cittecla 32:777976c4d733 77
cittecla 31:51f52ffa4b51 78
cittecla 38:3526c36e4c73 79 case 25:
cittecla 58:1a395b6928ee 80 state = 26;
cittecla 38:3526c36e4c73 81 positioning_state = 1;
cittecla 38:3526c36e4c73 82 break;
cittecla 38:3526c36e4c73 83 case 26:
cittecla 58:1a395b6928ee 84 state = 27;
cittecla 38:3526c36e4c73 85 mapping_state = 1;
cittecla 38:3526c36e4c73 86 break;
cittecla 38:3526c36e4c73 87 case 27:
cittecla 38:3526c36e4c73 88 state = initial_turn();
cittecla 38:3526c36e4c73 89 break;
cittecla 38:3526c36e4c73 90
cittecla 40:a46667b62671 91
cittecla 38:3526c36e4c73 92 case 35:
cittecla 38:3526c36e4c73 93 state = select_target();
cittecla 38:3526c36e4c73 94 break;
cittecla 38:3526c36e4c73 95 case 36:
cittecla 38:3526c36e4c73 96 state = pathfinding();
cittecla 38:3526c36e4c73 97 break;
cittecla 38:3526c36e4c73 98 case 37:
cittecla 41:462d379e85c4 99 state = switch_target_red();
cittecla 41:462d379e85c4 100 break;
cittecla 31:51f52ffa4b51 101
cittecla 31:51f52ffa4b51 102
cittecla 38:3526c36e4c73 103 case 40:
cittecla 38:3526c36e4c73 104 state = moving();
cittecla 38:3526c36e4c73 105 break;
cittecla 38:3526c36e4c73 106 case 41:
cittecla 54:453f24775644 107 state = move_forward_for_distance(0);
cittecla 38:3526c36e4c73 108 break;
cittecla 38:3526c36e4c73 109 case 42:
cittecla 54:453f24775644 110 state = move_backward_for_distance();
cittecla 38:3526c36e4c73 111 break;
cittecla 62:628f8a4e857c 112
cittecla 54:453f24775644 113
cittecla 38:3526c36e4c73 114
cittecla 38:3526c36e4c73 115 case 46:
cittecla 38:3526c36e4c73 116 state = move_to_next_coord();
cittecla 38:3526c36e4c73 117 break;
cittecla 38:3526c36e4c73 118 case 47:
cittecla 38:3526c36e4c73 119 state = move_in_search_for_brick();
cittecla 38:3526c36e4c73 120 break;
cittecla 31:51f52ffa4b51 121
cittecla 31:51f52ffa4b51 122
cittecla 38:3526c36e4c73 123 case 50:
cittecla 38:3526c36e4c73 124 state = grabbing();
cittecla 38:3526c36e4c73 125 break;
cittecla 38:3526c36e4c73 126 case 51:
cittecla 38:3526c36e4c73 127 state = arm_position_move();
cittecla 38:3526c36e4c73 128 break;
cittecla 38:3526c36e4c73 129 case 52:
aeschsim 63:87b615e4a842 130 arm_position_grabbing();
aeschsim 63:87b615e4a842 131 state = 56;
aeschsim 63:87b615e4a842 132 wait_ms(1000);
cittecla 38:3526c36e4c73 133 break;
cittecla 38:3526c36e4c73 134 case 53:
cittecla 38:3526c36e4c73 135 state = arm_position_release();
aeschsim 63:87b615e4a842 136 state = 55;
aeschsim 63:87b615e4a842 137 wait_ms(1000);
cittecla 38:3526c36e4c73 138 break;
cittecla 38:3526c36e4c73 139
cittecla 38:3526c36e4c73 140 case 55:
cittecla 61:b57577b0072f 141 state = open_grabber();
aeschsim 63:87b615e4a842 142 state = 52;
aeschsim 63:87b615e4a842 143 wait_ms(1000);
cittecla 38:3526c36e4c73 144 break;
cittecla 38:3526c36e4c73 145 case 56:
cittecla 38:3526c36e4c73 146 state = close_grabber();
aeschsim 63:87b615e4a842 147 state = 53;
aeschsim 63:87b615e4a842 148 wait_ms(1000);
cittecla 38:3526c36e4c73 149 break;
cittecla 61:b57577b0072f 150
cittecla 39:92723f7ea54f 151 /*
cittecla 38:3526c36e4c73 152 case 99:
cittecla 38:3526c36e4c73 153 sate = init();
cittecla 38:3526c36e4c73 154 break;
cittecla 38:3526c36e4c73 155 case 100:
cittecla 38:3526c36e4c73 156 state = turn_left(30);
cittecla 38:3526c36e4c73 157 break;
cittecla 38:3526c36e4c73 158 case 101:
cittecla 38:3526c36e4c73 159 state = turn_right_for_brick;
cittecla 38:3526c36e4c73 160 break;
cittecla 38:3526c36e4c73 161 case 102:
cittecla 38:3526c36e4c73 162 state = move_to_brick;
cittecla 39:92723f7ea54f 163 */
cittecla 19:baa8371d55b4 164
cittecla 18:a82994e67297 165
cittecla 38:3526c36e4c73 166 //test states
cittecla 38:3526c36e4c73 167 case 200:
cittecla 34:40d8d29b44b8 168 state = IMU();
cittecla 32:777976c4d733 169 break;
cittecla 32:777976c4d733 170 default:
cittecla 32:777976c4d733 171 printf("Fatal Error, Unkonwn state!");
cittecla 32:777976c4d733 172 state = 0;
cittecla 32:777976c4d733 173 break;
cittecla 32:777976c4d733 174 }
cittecla 32:777976c4d733 175 }
cittecla 34:40d8d29b44b8 176 }
cittecla 34:40d8d29b44b8 177
cittecla 34:40d8d29b44b8 178 int IMU()
cittecla 34:40d8d29b44b8 179 {
cittecla 36:b654afdf886e 180 printf("%f\r\n", read_heading());
cittecla 34:40d8d29b44b8 181 return 200;
cittecla 34:40d8d29b44b8 182 }
cittecla 34:40d8d29b44b8 183
cittecla 34:40d8d29b44b8 184 int init()
cittecla 34:40d8d29b44b8 185 {
cittecla 34:40d8d29b44b8 186 Robot_init_all();
cittecla 34:40d8d29b44b8 187 return 100;
cittecla 34:40d8d29b44b8 188 }
cittecla 38:3526c36e4c73 189
cittecla 38:3526c36e4c73 190
cittecla 34:40d8d29b44b8 191 /*
cittecla 34:40d8d29b44b8 192 int turn_left(float deg)
cittecla 34:40d8d29b44b8 193 {
cittecla 34:40d8d29b44b8 194 bool in_function = false;
cittecla 34:40d8d29b44b8 195 if(in_function = false) {
cittecla 34:40d8d29b44b8 196 float current_deg = read_heading();
cittecla 34:40d8d29b44b8 197 set_speed(-50, 50);
cittecla 34:40d8d29b44b8 198 in_function = true;
cittecla 34:40d8d29b44b8 199 }
cittecla 34:40d8d29b44b8 200 if(current_deg - deg < read_heading() {
cittecla 34:40d8d29b44b8 201 set_speed(0, 0);
cittecla 34:40d8d29b44b8 202 return 101;
cittecla 34:40d8d29b44b8 203 in_function = false;
cittecla 34:40d8d29b44b8 204 }
cittecla 34:40d8d29b44b8 205 return 100;
cittecla 34:40d8d29b44b8 206 }
cittecla 34:40d8d29b44b8 207
cittecla 34:40d8d29b44b8 208 int turn_right_for_brick {
cittecla 34:40d8d29b44b8 209 return 0
cittecla 34:40d8d29b44b8 210 }*/