RobocupSSLのメイン基板白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は,ロボットとボールの座標,審判の判定を元にロボットの移動,キックなどの作戦を決定し,無線によってロボットに指令を送信する.
ロボット機能紹介
●オムニホイールによる方向転換不要の全方位移動
オムニホイールは,自由に回転可能なローラをホイールの外周上に配置した車輪である.ローラの回転により,車輪の回転と垂直の方向に駆動力を発することはできないが移動は可能となる.各車輪の角速度を調整することによって全方向への移動を可能にする.
●ドリブルバーのバックスピンによるボール保持
●電磁力を利用したキッカー
●キッカーの電磁力エネルギーを充電する充電回路
●ロボット情報が一目でわかるLCD
Diff: mode/operation_check/operation_check.cpp
- Revision:
- 25:15f75825fc36
- Parent:
- 23:0bb032ef1880
- Child:
- 32:718efbf4dc8a
diff -r 37a074e767c8 -r 15f75825fc36 mode/operation_check/operation_check.cpp --- a/mode/operation_check/operation_check.cpp Sat Apr 28 19:47:31 2018 +0000 +++ b/mode/operation_check/operation_check.cpp Sun Apr 29 08:51:32 2018 +0000 @@ -11,12 +11,19 @@ #ifdef LPC4088 #elif STM32 - +Timeout time_charge; #endif -/* **ローカル関数定義** */ +static char m_charge; +/* **ローカル関数定義** */ +void charge_off(void); /* **ローカル関数** */ +void charge_off(void) +{ + m_charge = 0; + time_charge.detach(); +} /* **グルーバル関数** */ @@ -26,6 +33,7 @@ class ParameterManager; + //メンバ変数の初期化は、定義順(Warningになる) OperationCheck::OperationCheck() :checkMode(SELECT), @@ -400,7 +408,8 @@ - sprintf(str,"DRIBBLE\nPOWER:%d",power); + //sprintf(str,"DRIBBLE\nPOWER:%d",power); + sprintf(str,"POWER:%d\nC:%f",power,StatusManager::dribbleMotor_current); } void OperationCheck::checkStrKick(void) @@ -431,16 +440,21 @@ switch(InterfaceManager::button.getButtonStatus(CROSS_LEFT)) { case SINGLE_CLICK: - charge_flag = 1; + //charge_flag = 1; + m_charge = 1; + time_charge.attach(&charge_off,4.0); break; case DOUBLE_CLICK: - charge_flag = 0; + m_charge = 0; + //charge_flag = 0; break; default: break; } + charge_flag = m_charge; + if(StatusManager::is_kicking == 1) {