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:
Tue Apr 25 14:51:03 2017 +0000
Revision:
5:4be30999853f
Parent:
4:8c6f6b687303
Child:
6:21b3fbe57b88
??SW???????; ?SW?D8????????????????????; ????????????????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 4:8c6f6b687303 1
alt0710 4:8c6f6b687303 2 #include "mbed.h"
alt0710 4:8c6f6b687303 3 #include "comm.h"
alt0710 4:8c6f6b687303 4 #include "interface_manager.h"
alt0710 4:8c6f6b687303 5 #include "status_manager.h"
alt0710 4:8c6f6b687303 6 #include "parameter_manager.h"
alt0710 4:8c6f6b687303 7 #include "mode.h"
alt0710 4:8c6f6b687303 8
alt0710 4:8c6f6b687303 9 /* **mbedクラス** */
alt0710 4:8c6f6b687303 10 #ifdef LPC4088
alt0710 4:8c6f6b687303 11
alt0710 4:8c6f6b687303 12 #elif STM32
alt0710 4:8c6f6b687303 13
alt0710 4:8c6f6b687303 14 #endif
alt0710 4:8c6f6b687303 15
alt0710 4:8c6f6b687303 16 /* **ローカル関数定義** */
alt0710 4:8c6f6b687303 17
alt0710 4:8c6f6b687303 18 /* **ローカル関数** */
alt0710 4:8c6f6b687303 19
alt0710 4:8c6f6b687303 20 /* **グルーバル関数** */
alt0710 4:8c6f6b687303 21
alt0710 4:8c6f6b687303 22 /* **クラス** */
alt0710 4:8c6f6b687303 23 class InterfaceManager;
alt0710 4:8c6f6b687303 24 //メンバ変数の初期化は、定義順(Warningになる)
alt0710 4:8c6f6b687303 25 ActMode::ActMode()
alt0710 4:8c6f6b687303 26 :mode(NORMAL_ROUTINE)
alt0710 4:8c6f6b687303 27 {
alt0710 4:8c6f6b687303 28 }
alt0710 4:8c6f6b687303 29
alt0710 4:8c6f6b687303 30 void ActMode::run(void)
alt0710 4:8c6f6b687303 31 {
alt0710 4:8c6f6b687303 32 selectMode();
alt0710 4:8c6f6b687303 33
alt0710 4:8c6f6b687303 34 }
alt0710 4:8c6f6b687303 35
alt0710 4:8c6f6b687303 36 void ActMode::selectMode(void)
alt0710 4:8c6f6b687303 37 {
alt0710 4:8c6f6b687303 38 switch(InterfaceManager::button.getButtonStatus(MODE_SW)){
alt0710 4:8c6f6b687303 39 case NORMAL_ROUTINE:
alt0710 5:4be30999853f 40 if(InterfaceManager::button.getButtonStatus(CROSS_UP))
alt0710 5:4be30999853f 41 {
alt0710 5:4be30999853f 42 counter++;
alt0710 5:4be30999853f 43 if(counter > 10)counter = 0;
alt0710 5:4be30999853f 44 }
alt0710 5:4be30999853f 45 sprintf(str,"NORMAL_ROUTINE \nSW:%d",counter);
alt0710 4:8c6f6b687303 46 break;
alt0710 4:8c6f6b687303 47
alt0710 4:8c6f6b687303 48 case OPERATION_CHECK:
alt0710 5:4be30999853f 49 sprintf(str,"OPERATION_CHECK \nSW:%d",InterfaceManager::button.getButtonStatus(CROSS_DOWN));
alt0710 4:8c6f6b687303 50 break;
alt0710 4:8c6f6b687303 51
alt0710 4:8c6f6b687303 52 case PARAMETERS_SET:
alt0710 5:4be30999853f 53 sprintf(str,"PARAMETERS_SET \nSW:%d%d%d%d",InterfaceManager::button.getButtonStatus(CROSS_UP),InterfaceManager::button.getButtonStatus(CROSS_DOWN),InterfaceManager::button.getButtonStatus(CROSS_LEFT),InterfaceManager::button.getButtonStatus(CROSS_RIGHT));
alt0710 4:8c6f6b687303 54 break;
alt0710 4:8c6f6b687303 55
alt0710 4:8c6f6b687303 56 default:
alt0710 4:8c6f6b687303 57 sprintf(str,"NO MODE");
alt0710 4:8c6f6b687303 58 break;
alt0710 4:8c6f6b687303 59 }
alt0710 5:4be30999853f 60
alt0710 4:8c6f6b687303 61 InterfaceManager::i2c.setLCDMsg(str,sizeof(str));
alt0710 4:8c6f6b687303 62 }
alt0710 4:8c6f6b687303 63