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

Committer:
alt0710
Date:
Sun Sep 22 10:21:31 2019 +0000
Revision:
34:857b6cca2021
Parent:
32:718efbf4dc8a
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 12:b7d7523733cd 1
alt0710 12:b7d7523733cd 2 #include "mbed.h"
alt0710 12:b7d7523733cd 3 #include "comm.h"
alt0710 12:b7d7523733cd 4 #include "interface_manager.h"
alt0710 12:b7d7523733cd 5 #include "parameter_manager.h"
alt0710 12:b7d7523733cd 6 #include "dribbler.h"
alt0710 12:b7d7523733cd 7
alt0710 12:b7d7523733cd 8 /* **mbedクラス** */
alt0710 12:b7d7523733cd 9 #ifdef LPC4088
alt0710 12:b7d7523733cd 10
alt0710 12:b7d7523733cd 11 #elif STM32
alt0710 12:b7d7523733cd 12
alt0710 12:b7d7523733cd 13 #endif
alt0710 12:b7d7523733cd 14
alt0710 12:b7d7523733cd 15 /* **ローカル関数定義** */
alt0710 12:b7d7523733cd 16 void fireTimer(void);
alt0710 12:b7d7523733cd 17 void driveFireTimer(double firetime);
alt0710 12:b7d7523733cd 18
alt0710 12:b7d7523733cd 19 /* **ローカル関数** */
alt0710 12:b7d7523733cd 20
alt0710 12:b7d7523733cd 21 /* **グルーバル関数** */
alt0710 12:b7d7523733cd 22
alt0710 12:b7d7523733cd 23 /* **クラス** */
alt0710 12:b7d7523733cd 24 class InterfaceManager;
alt0710 12:b7d7523733cd 25 //メンバ変数の初期化は、定義順(Warningになる)
alt0710 12:b7d7523733cd 26 Dribbler::Dribbler()
alt0710 12:b7d7523733cd 27 :f_dribble(0),
alt0710 12:b7d7523733cd 28 power(0)
alt0710 12:b7d7523733cd 29 {
alt0710 12:b7d7523733cd 30 }
alt0710 12:b7d7523733cd 31
alt0710 12:b7d7523733cd 32 void Dribbler::setdribble(char flag_dribble, char dribble_power)
alt0710 12:b7d7523733cd 33 {
alt0710 12:b7d7523733cd 34 f_dribble = flag_dribble;
alt0710 12:b7d7523733cd 35 power = dribble_power;
alt0710 12:b7d7523733cd 36
alt0710 12:b7d7523733cd 37 checkIC();
alt0710 23:0bb032ef1880 38 // if(1)
alt0710 19:0bbd90be9aa3 39 if(f_dribble)
alt0710 19:0bbd90be9aa3 40 //if(f_dribble && (StatusManager::dribbleIC_fault == 0))
alt0710 14:f6cc949a8046 41 {
alt0710 23:0bb032ef1880 42 //InterfaceManager::dribbleStandBy = 0;
alt0710 20:354ed2681d0a 43 // if(power < 5)
alt0710 20:354ed2681d0a 44 // {
alt0710 20:354ed2681d0a 45 // power = 5;
alt0710 20:354ed2681d0a 46 // }
alt0710 20:354ed2681d0a 47 //
alt0710 20:354ed2681d0a 48 // if(power > 11)
alt0710 20:354ed2681d0a 49 // {
alt0710 20:354ed2681d0a 50 // power = 11;
alt0710 23:0bb032ef1880 51 // }
alt0710 23:0bb032ef1880 52 if( StatusManager::dribbleMot_OvrCur != 1)
alt0710 23:0bb032ef1880 53 {
alt0710 23:0bb032ef1880 54 driveDribble(power);
alt0710 23:0bb032ef1880 55 }
alt0710 23:0bb032ef1880 56 else
alt0710 23:0bb032ef1880 57 {
alt0710 23:0bb032ef1880 58 driveDribble(0);
alt0710 23:0bb032ef1880 59 }
alt0710 14:f6cc949a8046 60 }
alt0710 14:f6cc949a8046 61 else
alt0710 14:f6cc949a8046 62 {
alt0710 20:354ed2681d0a 63 driveDribble(0);
alt0710 23:0bb032ef1880 64 //InterfaceManager::dribbleStandBy = 0;
alt0710 14:f6cc949a8046 65 }
alt0710 12:b7d7523733cd 66 }
alt0710 12:b7d7523733cd 67
alt0710 12:b7d7523733cd 68 void Dribbler::driveDribble(char t_power)
alt0710 12:b7d7523733cd 69 {
alt0710 26:d626e7968063 70
alt0710 26:d626e7968063 71 #if defined(MAIN_BORD_Ver_4) || defined(MAIN_BORD_Ver_5)
alt0710 34:857b6cca2021 72 // if(t_power != 0)
alt0710 34:857b6cca2021 73 // {
alt0710 34:857b6cca2021 74 // t_power = 12;
alt0710 34:857b6cca2021 75 // }
alt0710 23:0bb032ef1880 76 StatusManager::req_dribbleMotor_current = t_power/(float)15.0 * (float)2.0;
alt0710 23:0bb032ef1880 77 //InterfaceManager::dribbleMotor.write((float)(1.0 - t_power/15.0 * 0.50 ));
alt0710 26:d626e7968063 78 #else
alt0710 26:d626e7968063 79 InterfaceManager::dribbleMotor.write((float)(t_power/15.0));
alt0710 23:0bb032ef1880 80 #endif
alt0710 14:f6cc949a8046 81 //InterfaceManager::dribbleMotor.write(0.0);
alt0710 12:b7d7523733cd 82
alt0710 12:b7d7523733cd 83 }
alt0710 12:b7d7523733cd 84
alt0710 12:b7d7523733cd 85 void Dribbler::checkIC(void)
alt0710 12:b7d7523733cd 86 {
alt0710 12:b7d7523733cd 87 StatusManager::dribbleIC_fault = InterfaceManager::dribbleIC_fault;
alt0710 12:b7d7523733cd 88 }
alt0710 12:b7d7523733cd 89