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:
23:0bb032ef1880
Parent:
20:354ed2681d0a
Child:
26:d626e7968063
diff -r 653b40db5a60 -r 0bb032ef1880 actuator/dribbler.cpp
--- a/actuator/dribbler.cpp	Tue May 30 13:58:02 2017 +0000
+++ b/actuator/dribbler.cpp	Sat Apr 28 07:18:22 2018 +0000
@@ -35,11 +35,11 @@
     power       = dribble_power;
     
     checkIC();
-//    if(f_dribble)
+//    if(1)
     if(f_dribble)
     //if(f_dribble && (StatusManager::dribbleIC_fault == 0))
     {
-        InterfaceManager::dribbleStandBy = 0;
+        //InterfaceManager::dribbleStandBy = 0;
 //        if(power < 5)
 //        {
 //            power = 5;
@@ -48,21 +48,31 @@
 //        if(power > 11)
 //        {
 //            power = 11;
-//        }        
-        
-        driveDribble(power);
+//        }
+        if( StatusManager::dribbleMot_OvrCur  != 1)
+        {   
+            driveDribble(power);
+        }
+        else
+        {
+            driveDribble(0);
+        }
     }
     else
     {
         driveDribble(0);
-        InterfaceManager::dribbleStandBy = 0;   
+        //InterfaceManager::dribbleStandBy = 0;   
     }
 }
 
 void Dribbler::driveDribble(char t_power)
 {
-    
-    InterfaceManager::dribbleMotor.write((float)(t_power/15.0));
+    #ifndef MAIN_BORD_Ver_5
+        InterfaceManager::dribbleMotor.write((float)(t_power/15.0));
+    #else
+        StatusManager::req_dribbleMotor_current = t_power/(float)15.0 * (float)2.0;
+        //InterfaceManager::dribbleMotor.write((float)(1.0 - t_power/15.0 * 0.50 ));
+    #endif
     //InterfaceManager::dribbleMotor.write(0.0); 
     
 }