RobocupSSLのメイン基板白mbedのプログラム

Dependencies:   mbed

Rootsロボット mainプログラム

~ Robocup SSL(小型車輪リーグ)ロボット ~


Robocup SSLとは


●試合構成
Robocup小型ロボットリーグ(Small Size League)は,直径180[mm],高さ150[mm]以内のサイズのロボット6台が1チームとなり,オレンジ色のゴルフボールを使ってサッカー競技を行う自立型ロボットコンテストである. フィールドの上には2台のWebカメラが設置され,フィールド上のロボットとボールを撮影する.Visionサーバは,フィールドの画像データよりロボットとボールの座標データを算出し,LANを用い各チームのAI用PCに送信する.Webカメラの撮影速度は,60[fps]である.レフリーボックスは,ファウルやフリーキック,スローインなどの審判の判定を入力し,LANを通じて各チームのAI用PCに送信する.それぞれのチームのAI用PCは,ロボットとボールの座標,審判の判定を元にロボットの移動,キックなどの作戦を決定し,無線によってロボットに指令を送信する. 700


ロボット機能紹介


●オムニホイールによる方向転換不要の全方位移動

オムニホイールは,自由に回転可能なローラをホイールの外周上に配置した車輪である.ローラの回転により,車輪の回転と垂直の方向に駆動力を発することはできないが移動は可能となる.各車輪の角速度を調整することによって全方向への移動を可能にする.
400

●ドリブルバーのバックスピンによるボール保持

●電磁力を利用したキッカー

●キッカーの電磁力エネルギーを充電する充電回路

●ロボット情報が一目でわかるLCD

Committer:
alt0710
Date:
Sat May 06 06:43:37 2017 +0000
Revision:
19:0bbd90be9aa3
Parent:
15:2bf8eafacef8
Child:
20:354ed2681d0a
dribbler????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 14:f6cc949a8046 1
alt0710 14:f6cc949a8046 2 #include "mbed.h"
alt0710 14:f6cc949a8046 3 #include "comm.h"
alt0710 14:f6cc949a8046 4 #include "mode.h"
alt0710 14:f6cc949a8046 5 #include "interface_manager.h"
alt0710 14:f6cc949a8046 6 #include "status_manager.h"
alt0710 14:f6cc949a8046 7 #include "parameter_manager.h"
alt0710 14:f6cc949a8046 8 #include "operation_check.h"
alt0710 14:f6cc949a8046 9
alt0710 14:f6cc949a8046 10 /* **mbedクラス** */
alt0710 14:f6cc949a8046 11 #ifdef LPC4088
alt0710 14:f6cc949a8046 12
alt0710 14:f6cc949a8046 13 #elif STM32
alt0710 14:f6cc949a8046 14
alt0710 14:f6cc949a8046 15 #endif
alt0710 14:f6cc949a8046 16
alt0710 14:f6cc949a8046 17 /* **ローカル関数定義** */
alt0710 14:f6cc949a8046 18
alt0710 14:f6cc949a8046 19 /* **ローカル関数** */
alt0710 14:f6cc949a8046 20
alt0710 14:f6cc949a8046 21 /* **グルーバル関数** */
alt0710 14:f6cc949a8046 22
alt0710 14:f6cc949a8046 23 /* **クラス** */
alt0710 14:f6cc949a8046 24 class InterfaceManager;
alt0710 14:f6cc949a8046 25 class StatusManager;
alt0710 14:f6cc949a8046 26 class ParameterManager;
alt0710 14:f6cc949a8046 27
alt0710 14:f6cc949a8046 28
alt0710 14:f6cc949a8046 29 //メンバ変数の初期化は、定義順(Warningになる)
alt0710 14:f6cc949a8046 30 OperationCheck::OperationCheck()
alt0710 15:2bf8eafacef8 31 :sideSW_num(0),
alt0710 15:2bf8eafacef8 32 charge_flag(0),
alt0710 15:2bf8eafacef8 33 kick_flag(0),
alt0710 19:0bbd90be9aa3 34 power(0),
alt0710 19:0bbd90be9aa3 35 ball(0)
alt0710 14:f6cc949a8046 36 {
alt0710 14:f6cc949a8046 37 }
alt0710 14:f6cc949a8046 38
alt0710 14:f6cc949a8046 39 void OperationCheck::run(void)
alt0710 14:f6cc949a8046 40 {
alt0710 15:2bf8eafacef8 41 //充電:左
alt0710 15:2bf8eafacef8 42 //強制放電:下
alt0710 15:2bf8eafacef8 43 //キック:上
alt0710 15:2bf8eafacef8 44 /* ***************** 充電 ******************************* */
alt0710 15:2bf8eafacef8 45 if(InterfaceManager::button.getButtonStatus(CROSS_LEFT))
alt0710 15:2bf8eafacef8 46 {
alt0710 15:2bf8eafacef8 47 charge_flag = 1;
alt0710 15:2bf8eafacef8 48 }
alt0710 15:2bf8eafacef8 49 if(StatusManager::is_kicking == 1)
alt0710 15:2bf8eafacef8 50 {
alt0710 15:2bf8eafacef8 51 charge_flag = 0;
alt0710 15:2bf8eafacef8 52 kick_flag = 0;
alt0710 15:2bf8eafacef8 53 }
alt0710 14:f6cc949a8046 54
alt0710 15:2bf8eafacef8 55 /* ***************** キック ******************************* */
alt0710 15:2bf8eafacef8 56 if(InterfaceManager::button.getButtonStatus(CROSS_UP))
alt0710 15:2bf8eafacef8 57 {
alt0710 15:2bf8eafacef8 58 kick_flag = 1;
alt0710 15:2bf8eafacef8 59 }
alt0710 15:2bf8eafacef8 60
alt0710 15:2bf8eafacef8 61 /* ***************** 威力 ******************************* */
alt0710 15:2bf8eafacef8 62 if(InterfaceManager::button.getButtonStatus(CROSS_RIGHT))
alt0710 15:2bf8eafacef8 63 {
alt0710 15:2bf8eafacef8 64 power++;
alt0710 19:0bbd90be9aa3 65 if(power > 15)
alt0710 15:2bf8eafacef8 66 {
alt0710 15:2bf8eafacef8 67 power = 0;
alt0710 15:2bf8eafacef8 68 }
alt0710 15:2bf8eafacef8 69 }
alt0710 19:0bbd90be9aa3 70
alt0710 19:0bbd90be9aa3 71 if(InterfaceManager::button.getButtonStatus(CROSS_DOWN))
alt0710 19:0bbd90be9aa3 72 {
alt0710 19:0bbd90be9aa3 73 dribble.setdribble(1, power);
alt0710 19:0bbd90be9aa3 74 }
alt0710 19:0bbd90be9aa3 75 else
alt0710 19:0bbd90be9aa3 76 {
alt0710 19:0bbd90be9aa3 77 dribble.setdribble(0, 0);
alt0710 19:0bbd90be9aa3 78 }
alt0710 15:2bf8eafacef8 79
alt0710 19:0bbd90be9aa3 80 if(InterfaceManager::ball_sensor)
alt0710 19:0bbd90be9aa3 81 {
alt0710 19:0bbd90be9aa3 82 ball = 1;
alt0710 19:0bbd90be9aa3 83 }
alt0710 19:0bbd90be9aa3 84 else
alt0710 19:0bbd90be9aa3 85 {
alt0710 19:0bbd90be9aa3 86 ball = 0;
alt0710 19:0bbd90be9aa3 87 }
alt0710 19:0bbd90be9aa3 88 /* ***************** 強制放電 ***************************** */
alt0710 19:0bbd90be9aa3 89 // kicker.setCharge(charge_flag);
alt0710 19:0bbd90be9aa3 90 //
alt0710 19:0bbd90be9aa3 91 //
alt0710 19:0bbd90be9aa3 92 // kicker.setKick(kick_flag, STRAIGHT, power);
alt0710 19:0bbd90be9aa3 93 // kicker.forceFireKick();
alt0710 15:2bf8eafacef8 94
alt0710 15:2bf8eafacef8 95 //createLcdData();
alt0710 19:0bbd90be9aa3 96 sprintf(str,"P:%d\nBall:%d",power,ball);
alt0710 15:2bf8eafacef8 97 //sprintf(str,"Hello");
alt0710 14:f6cc949a8046 98 InterfaceManager::i2c.setLCDMsg(str,sizeof(str));
alt0710 14:f6cc949a8046 99
alt0710 14:f6cc949a8046 100 }
alt0710 14:f6cc949a8046 101
alt0710 14:f6cc949a8046 102 void OperationCheck::createLcdData(void)
alt0710 14:f6cc949a8046 103 {
alt0710 14:f6cc949a8046 104
alt0710 14:f6cc949a8046 105 /*
alt0710 14:f6cc949a8046 106
alt0710 14:f6cc949a8046 107 * 0 : 正常終了
alt0710 14:f6cc949a8046 108
alt0710 14:f6cc949a8046 109 * -1 : タイムアウト
alt0710 14:f6cc949a8046 110
alt0710 14:f6cc949a8046 111 * -2 : オーバーランエラー
alt0710 14:f6cc949a8046 112
alt0710 14:f6cc949a8046 113 * -3 : フレーミングエラー
alt0710 14:f6cc949a8046 114
alt0710 14:f6cc949a8046 115 * 1 : 受信中
alt0710 14:f6cc949a8046 116
alt0710 14:f6cc949a8046 117 * 2 : フレームリーダー1まで受信
alt0710 14:f6cc949a8046 118
alt0710 14:f6cc949a8046 119 * 3 : フレームリーダー2まで受信
alt0710 14:f6cc949a8046 120
alt0710 14:f6cc949a8046 121 * 4 : マシンIDまで受信
alt0710 14:f6cc949a8046 122
alt0710 14:f6cc949a8046 123 */
alt0710 14:f6cc949a8046 124 switch(StatusManager::uart){
alt0710 14:f6cc949a8046 125 case 0:
alt0710 14:f6cc949a8046 126 sprintf(str,"ID%d EN:\nComplete",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 127
alt0710 14:f6cc949a8046 128 break;
alt0710 14:f6cc949a8046 129
alt0710 14:f6cc949a8046 130 case 1:
alt0710 14:f6cc949a8046 131 break;
alt0710 14:f6cc949a8046 132
alt0710 14:f6cc949a8046 133 case 2:
alt0710 14:f6cc949a8046 134 sprintf(str,"ID%d EN:\nHeader1",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 135
alt0710 14:f6cc949a8046 136 break;
alt0710 14:f6cc949a8046 137
alt0710 14:f6cc949a8046 138 case 3:
alt0710 14:f6cc949a8046 139 sprintf(str,"ID%d EN:\nHeader2",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 140
alt0710 14:f6cc949a8046 141 break;
alt0710 14:f6cc949a8046 142
alt0710 14:f6cc949a8046 143 case 4:
alt0710 14:f6cc949a8046 144 sprintf(str,"ID%d EN:\nCheckER1",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 145
alt0710 14:f6cc949a8046 146 break;
alt0710 14:f6cc949a8046 147
alt0710 14:f6cc949a8046 148 case 5:
alt0710 14:f6cc949a8046 149 sprintf(str,"ID%d EN:\nCheckER2",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 150
alt0710 14:f6cc949a8046 151 break;
alt0710 14:f6cc949a8046 152
alt0710 14:f6cc949a8046 153 case -1:
alt0710 14:f6cc949a8046 154 sprintf(str,"ID%d EN:\nTimeOut",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 155
alt0710 14:f6cc949a8046 156 break;
alt0710 14:f6cc949a8046 157
alt0710 14:f6cc949a8046 158 case -2:
alt0710 14:f6cc949a8046 159 sprintf(str,"ID%d EN:\nOERR",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 160
alt0710 14:f6cc949a8046 161 break;
alt0710 14:f6cc949a8046 162
alt0710 14:f6cc949a8046 163 case -3:
alt0710 14:f6cc949a8046 164 sprintf(str,"ID%d EN:\nFERR",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 165
alt0710 14:f6cc949a8046 166 break;
alt0710 14:f6cc949a8046 167
alt0710 14:f6cc949a8046 168 default:
alt0710 14:f6cc949a8046 169 sprintf(str,"ID%d EN: \n %d",ParameterManager::machine_id, StatusManager::uart);
alt0710 14:f6cc949a8046 170 break;
alt0710 14:f6cc949a8046 171 }
alt0710 14:f6cc949a8046 172
alt0710 14:f6cc949a8046 173 }