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:
Thu May 04 07:47:48 2017 +0000
Revision:
16:e8060a65ed23
Parent:
15:2bf8eafacef8
????;

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 16:e8060a65ed23 34 dribble_flag(0),
alt0710 15:2bf8eafacef8 35 power(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 15:2bf8eafacef8 65 if(power > 16)
alt0710 15:2bf8eafacef8 66 {
alt0710 15:2bf8eafacef8 67 power = 0;
alt0710 15:2bf8eafacef8 68 }
alt0710 15:2bf8eafacef8 69 }
alt0710 15:2bf8eafacef8 70
alt0710 15:2bf8eafacef8 71 /* ***************** 強制放電 ***************************** */
alt0710 16:e8060a65ed23 72 //kicker.setCharge(charge_flag);
alt0710 15:2bf8eafacef8 73
alt0710 15:2bf8eafacef8 74
alt0710 16:e8060a65ed23 75 //kicker.setKick(kick_flag, STRAIGHT, power);
alt0710 16:e8060a65ed23 76 //kicker.forceFireKick();//CROSS_DOWNで駆動
alt0710 16:e8060a65ed23 77
alt0710 16:e8060a65ed23 78 if(InterfaceManager::button.getButtonStatus(CROSS_DOWN))
alt0710 16:e8060a65ed23 79 {
alt0710 16:e8060a65ed23 80 dribble_flag = 1;
alt0710 16:e8060a65ed23 81 InterfaceManager::dribbleStandBy = 0;
alt0710 16:e8060a65ed23 82 InterfaceManager::dribbleMotor.write(0.5);
alt0710 16:e8060a65ed23 83 }
alt0710 16:e8060a65ed23 84 else
alt0710 16:e8060a65ed23 85 {
alt0710 16:e8060a65ed23 86 dribble_flag = 0;
alt0710 16:e8060a65ed23 87 InterfaceManager::dribbleMotor.write(0.0);
alt0710 16:e8060a65ed23 88 }
alt0710 16:e8060a65ed23 89 //dribble.setdribble(dribble_flag, power);
alt0710 15:2bf8eafacef8 90
alt0710 15:2bf8eafacef8 91 //createLcdData();
alt0710 16:e8060a65ed23 92 sprintf(str,"F:%d \nP:%d",dribble_flag,power);
alt0710 16:e8060a65ed23 93 //sprintf(str,"C:%d F:%d\nP:%d",charge_flag,kick_flag,power);
alt0710 15:2bf8eafacef8 94 //sprintf(str,"Hello");
alt0710 14:f6cc949a8046 95 InterfaceManager::i2c.setLCDMsg(str,sizeof(str));
alt0710 14:f6cc949a8046 96
alt0710 14:f6cc949a8046 97 }
alt0710 14:f6cc949a8046 98
alt0710 14:f6cc949a8046 99 void OperationCheck::createLcdData(void)
alt0710 14:f6cc949a8046 100 {
alt0710 14:f6cc949a8046 101
alt0710 14:f6cc949a8046 102 /*
alt0710 14:f6cc949a8046 103
alt0710 14:f6cc949a8046 104 * 0 : 正常終了
alt0710 14:f6cc949a8046 105
alt0710 14:f6cc949a8046 106 * -1 : タイムアウト
alt0710 14:f6cc949a8046 107
alt0710 14:f6cc949a8046 108 * -2 : オーバーランエラー
alt0710 14:f6cc949a8046 109
alt0710 14:f6cc949a8046 110 * -3 : フレーミングエラー
alt0710 14:f6cc949a8046 111
alt0710 14:f6cc949a8046 112 * 1 : 受信中
alt0710 14:f6cc949a8046 113
alt0710 14:f6cc949a8046 114 * 2 : フレームリーダー1まで受信
alt0710 14:f6cc949a8046 115
alt0710 14:f6cc949a8046 116 * 3 : フレームリーダー2まで受信
alt0710 14:f6cc949a8046 117
alt0710 14:f6cc949a8046 118 * 4 : マシンIDまで受信
alt0710 14:f6cc949a8046 119
alt0710 14:f6cc949a8046 120 */
alt0710 14:f6cc949a8046 121 switch(StatusManager::uart){
alt0710 14:f6cc949a8046 122 case 0:
alt0710 14:f6cc949a8046 123 sprintf(str,"ID%d EN:\nComplete",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 124
alt0710 14:f6cc949a8046 125 break;
alt0710 14:f6cc949a8046 126
alt0710 14:f6cc949a8046 127 case 1:
alt0710 14:f6cc949a8046 128 break;
alt0710 14:f6cc949a8046 129
alt0710 14:f6cc949a8046 130 case 2:
alt0710 14:f6cc949a8046 131 sprintf(str,"ID%d EN:\nHeader1",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 132
alt0710 14:f6cc949a8046 133 break;
alt0710 14:f6cc949a8046 134
alt0710 14:f6cc949a8046 135 case 3:
alt0710 14:f6cc949a8046 136 sprintf(str,"ID%d EN:\nHeader2",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 137
alt0710 14:f6cc949a8046 138 break;
alt0710 14:f6cc949a8046 139
alt0710 14:f6cc949a8046 140 case 4:
alt0710 14:f6cc949a8046 141 sprintf(str,"ID%d EN:\nCheckER1",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 142
alt0710 14:f6cc949a8046 143 break;
alt0710 14:f6cc949a8046 144
alt0710 14:f6cc949a8046 145 case 5:
alt0710 14:f6cc949a8046 146 sprintf(str,"ID%d EN:\nCheckER2",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 147
alt0710 14:f6cc949a8046 148 break;
alt0710 14:f6cc949a8046 149
alt0710 14:f6cc949a8046 150 case -1:
alt0710 14:f6cc949a8046 151 sprintf(str,"ID%d EN:\nTimeOut",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 152
alt0710 14:f6cc949a8046 153 break;
alt0710 14:f6cc949a8046 154
alt0710 14:f6cc949a8046 155 case -2:
alt0710 14:f6cc949a8046 156 sprintf(str,"ID%d EN:\nOERR",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 157
alt0710 14:f6cc949a8046 158 break;
alt0710 14:f6cc949a8046 159
alt0710 14:f6cc949a8046 160 case -3:
alt0710 14:f6cc949a8046 161 sprintf(str,"ID%d EN:\nFERR",ParameterManager::machine_id);
alt0710 14:f6cc949a8046 162
alt0710 14:f6cc949a8046 163 break;
alt0710 14:f6cc949a8046 164
alt0710 14:f6cc949a8046 165 default:
alt0710 14:f6cc949a8046 166 sprintf(str,"ID%d EN: \n %d",ParameterManager::machine_id, StatusManager::uart);
alt0710 14:f6cc949a8046 167 break;
alt0710 14:f6cc949a8046 168 }
alt0710 14:f6cc949a8046 169
alt0710 14:f6cc949a8046 170 }