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:
20:354ed2681d0a
Parent:
15:2bf8eafacef8
Child:
23:0bb032ef1880
diff -r 0bbd90be9aa3 -r 354ed2681d0a interface/button/button_roots.cpp
--- a/interface/button/button_roots.cpp	Sat May 06 06:43:37 2017 +0000
+++ b/interface/button/button_roots.cpp	Mon May 29 16:45:16 2017 +0000
@@ -14,7 +14,7 @@
 DigitalIn Mode_SW2(A2);
 
 //CrossSelectSW
-//InterruptIn CrossSW_UP(D11);   //EXT2
+InterruptIn CrossSW_UP(D11);   //EXT2
 InterruptIn CrossSW_LEFT(D7);  //PUSH D7
 //InterruptIn CrossSW_DOWN(D9);  //KICK
 DigitalIn   DUMY(D8);  //KICK
@@ -30,20 +30,20 @@
 
 /* **ローカル割り込み関数** */
 
-//void check_click_up(void)
-//{
-//    if(InterfaceManager::button.count_click[0]  ==  1)
-//    {
-//        InterfaceManager::button.setButtunStatus(CROSS_UP, SINGLE_CLICK); 
-//    }  
-//    else if(InterfaceManager::button.count_click[0]  ==  2)
-//    {
-//        InterfaceManager::button.setButtunStatus(CROSS_UP, DOUBLE_CLICK); 
-//    }
-//    InterfaceManager::button.count_click[0]  = 0;
-//    t_up.detach();
-//    
-//}
+void check_click_up(void)
+{
+    if(InterfaceManager::button.count_click[0]  ==  1)
+    {
+        InterfaceManager::button.setButtunStatus(CROSS_UP, SINGLE_CLICK); 
+    }  
+    else if(InterfaceManager::button.count_click[0]  ==  2)
+    {
+        InterfaceManager::button.setButtunStatus(CROSS_UP, DOUBLE_CLICK); 
+    }
+    InterfaceManager::button.count_click[0]  = 0;
+    t_up.detach();
+    
+}
 //void check_click_down(void)
 //{
 //    if(InterfaceManager::button.count_click[1]  ==  1)
@@ -85,25 +85,25 @@
     
 }
 
-//void click_up(void)
-//{
-//    myled = !myled;
-//    switch(InterfaceManager::button.count_click[0]){
-//        case 0:
-//        t_up.attach(check_click_up, CHECK_TIME);
-//        InterfaceManager::button.count_click[0]++;
-//        break;
-//        
-//        case 1:
-//        InterfaceManager::button.count_click[0]++;
-//        break;
-//        
-//        default:
-//        InterfaceManager::button.count_click[0] = 0;
-//        break;
-//    }  
-//    
-//}
+void click_up(void)
+{
+    myled = !myled;
+    switch(InterfaceManager::button.count_click[0]){
+        case 0:
+        t_up.attach(check_click_up, CHECK_TIME);
+        InterfaceManager::button.count_click[0]++;
+        break;
+        
+        case 1:
+        InterfaceManager::button.count_click[0]++;
+        break;
+        
+        default:
+        InterfaceManager::button.count_click[0] = 0;
+        break;
+    }  
+    
+}
 //void click_down(void)
 //{
 //    myled = !myled;
@@ -169,14 +169,14 @@
     Mode_SW1.mode(PullDown);
     Mode_SW2.mode(PullDown);
     
-    //CrossSW_UP.mode(PullNone);
+    CrossSW_UP.mode(PullNone);
     //CrossSW_DOWN.mode(PullNone);
     DUMY.mode(PullNone);
     CrossSW_LEFT.mode(PullNone);
     CrossSW_RIGHT.mode(PullNone);   
     
     //入力割り込み設定
-    //CrossSW_UP.fall(&click_up);
+    CrossSW_UP.fall(&click_up);
     CrossSW_LEFT.fall(&click_left);
     //CrossSW_DOWN.rise(&click_down);
     CrossSW_RIGHT.fall(&click_right);