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:
15:2bf8eafacef8
Parent:
10:9cd22f673968
Child:
16:e8060a65ed23
Child:
20:354ed2681d0a
--- a/actuator/kicker.cpp	Wed May 03 08:21:33 2017 +0000
+++ b/actuator/kicker.cpp	Wed May 03 16:06:14 2017 +0000
@@ -53,11 +53,13 @@
 
 void Kicker::setKick(char flag_kick, char kick_Type, char kick_power)
 {
+    
     f_kick      = flag_kick;
     kickType    = kick_Type;
     power       = kick_power;
     
     checkBallSensor();      //ball
+    checkChargeCompleted(); //f_charge_fin
     if(f_kick == 1)
     {
         checkKickEnable();
@@ -88,6 +90,7 @@
    switch(t_KickType)
     {
         case STRAIGHT:
+        InterfaceManager::LED  =  1;
         InterfaceManager::charge_request    = 0;
         StatusManager::is_kicking           = 1;
         InterfaceManager::straight_kick     = 1;
@@ -147,13 +150,15 @@
 
 void Kicker::checkKickEnable(void)
 {
-    checkChargeCompleted(); //f_charge_fin
     
+    //if( f_charge_fin )
     if( f_charge_fin && (ball == IS_EXIST) && !isRelease && !StatusManager::is_kicking)
     {
+        
         kickPermit      = ENABLE;
         isRelease       = 1;
         f_charge_fin    = 0;
+        //StatusManager::charge_end = InterfaceManager::charge_completed; 
     }
     else
     {
@@ -167,12 +172,13 @@
     //不論理   
     if(InterfaceManager::charge_completed == 0)
     {
-        f_charge_fin = 1;   
+        f_charge_fin = 1;  
     }   
     else
     {
         f_charge_fin = 0;   
     }
+    StatusManager::charge_end = f_charge_fin; 
 }
 
 void Kicker::checkBallSensor(void)