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

Revision:
6:21b3fbe57b88
Parent:
3:6f87cbec2ae8
Child:
10:9cd22f673968
diff -r 4be30999853f -r 21b3fbe57b88 actuator/kicker.cpp
--- a/actuator/kicker.cpp	Tue Apr 25 14:51:03 2017 +0000
+++ b/actuator/kicker.cpp	Tue Apr 25 16:08:47 2017 +0000
@@ -54,6 +54,7 @@
     kickType    = kick_Type;
     power       = kick_power;
     
+    checkBallSensor();      //ball
     if(f_kick == 1)
     {
         checkKickEnable();
@@ -69,10 +70,12 @@
     if(flag_charge && (StatusManager::is_kicking == 0))
     {
         f_charge = 1;
+        InterfaceManager::charge_request    = 1;
     }
     else
     {
         f_charge = 0;
+        InterfaceManager::charge_request    = 0;
     }
     StatusManager::req_charge = f_charge;
 }
@@ -100,13 +103,11 @@
         InterfaceManager::chip_kick         = 0;
         break;   
     }
-   driveFireTimer(1.0);
 }
 
 void Kicker::checkKickEnable(void)
 {
     checkChargeCompleted(); //f_charge_fin
-    checkBallSensor();      //ball
     
     if( f_charge_fin && (ball == IS_EXIST) && !isRelease && !StatusManager::is_kicking)
     {
@@ -139,12 +140,15 @@
     if(InterfaceManager::ball_sensor == 0)
     {
         isRelease = 0;
-        ball = IS_NOT_EXIST;   
+        ball = IS_NOT_EXIST; 
+        StatusManager::ball = 0;  
     }
     else if(InterfaceManager::ball_sensor == 1)
     {   
         ball = IS_EXIST; //豆知識EXISTは、存在する(知らんかった;;)  
-    } 
+        StatusManager::ball = 1;
+    }
+     
 }