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:
Tue May 01 06:38:42 2018 +0000
Revision:
29:4607c59702a1
Parent:
26:d626e7968063
Child:
30:8ee22331bfaf
main??ver5 ?SW?????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 0:d4b98dbcb767 1 #include "mbed.h"
alt0710 0:d4b98dbcb767 2 #include "interface_manager.h"
alt0710 0:d4b98dbcb767 3
alt0710 0:d4b98dbcb767 4 Button_Roots InterfaceManager::button;
alt0710 1:c359b1fcfb5a 5 I2C_Roots InterfaceManager::i2c;
alt0710 2:ba11cc8540d3 6 CAN_Roots InterfaceManager::can;
alt0710 7:1f1bdb4e4f33 7 Xbee_Roots InterfaceManager::xbee;
alt0710 0:d4b98dbcb767 8
alt0710 29:4607c59702a1 9 //#if defined(MAIN_BORD_Ver_4)
alt0710 29:4607c59702a1 10 //DigitalOut InterfaceManager::straight_kick(D3);
alt0710 29:4607c59702a1 11 //DigitalOut InterfaceManager::chip_kick(D6);
alt0710 29:4607c59702a1 12 //DigitalOut InterfaceManager::charge_request(D1);
alt0710 29:4607c59702a1 13 //DigitalOut InterfaceManager::LED(D11);
alt0710 29:4607c59702a1 14 ////DigitalOut InterfaceManager::dribbleStandBy(A5);
alt0710 29:4607c59702a1 15 //
alt0710 29:4607c59702a1 16 //DigitalIn InterfaceManager::ball_sensor(A4);
alt0710 29:4607c59702a1 17 //DigitalIn InterfaceManager::charge_completed(D0);//D0
alt0710 29:4607c59702a1 18 //DigitalIn InterfaceManager::dribbleIC_fault(A6);
alt0710 29:4607c59702a1 19 //
alt0710 29:4607c59702a1 20 //PwmOut InterfaceManager::dribbleMotor(A5);
alt0710 29:4607c59702a1 21 //AnalogIn InterfaceManager::dribbleMotor_current(A7);
alt0710 29:4607c59702a1 22 //#elif defined(MAIN_BORD_Ver_5)
alt0710 26:d626e7968063 23 DigitalOut InterfaceManager::straight_kick(D3);
alt0710 26:d626e7968063 24 DigitalOut InterfaceManager::chip_kick(D6);
alt0710 26:d626e7968063 25 DigitalOut InterfaceManager::charge_request(D0);
alt0710 26:d626e7968063 26 DigitalOut InterfaceManager::LED(D11);
alt0710 26:d626e7968063 27 //DigitalOut InterfaceManager::dribbleStandBy(A5);
alt0710 29:4607c59702a1 28
alt0710 26:d626e7968063 29 DigitalIn InterfaceManager::ball_sensor(A4);
alt0710 26:d626e7968063 30 DigitalIn InterfaceManager::charge_completed(D1);//D0
alt0710 26:d626e7968063 31 DigitalIn InterfaceManager::dribbleIC_fault(A7);
alt0710 29:4607c59702a1 32
alt0710 26:d626e7968063 33 PwmOut InterfaceManager::dribbleMotor(A5);
alt0710 26:d626e7968063 34 AnalogIn InterfaceManager::dribbleMotor_current(A6);
alt0710 26:d626e7968063 35
alt0710 29:4607c59702a1 36 //#else
alt0710 29:4607c59702a1 37 //DigitalOut InterfaceManager::straight_kick(D3);
alt0710 29:4607c59702a1 38 //DigitalOut InterfaceManager::chip_kick(D6);
alt0710 29:4607c59702a1 39 //DigitalOut InterfaceManager::charge_request(D1);
alt0710 29:4607c59702a1 40 //DigitalOut InterfaceManager::LED(D9);
alt0710 29:4607c59702a1 41 //DigitalOut InterfaceManager::dribbleStandBy(A5);
alt0710 29:4607c59702a1 42 //
alt0710 29:4607c59702a1 43 //DigitalIn InterfaceManager::ball_sensor(A7);
alt0710 29:4607c59702a1 44 //DigitalIn InterfaceManager::charge_completed(D0);//D0
alt0710 29:4607c59702a1 45 //DigitalIn InterfaceManager::dribbleIC_fault(A4);
alt0710 29:4607c59702a1 46 //
alt0710 29:4607c59702a1 47 //PwmOut InterfaceManager::dribbleMotor(A6);
alt0710 29:4607c59702a1 48 ////DigitalIn InterfaceManager::modeSW_1(A3);
alt0710 29:4607c59702a1 49 ////DigitalIn InterfaceManager::modeSW_2(A2);
alt0710 29:4607c59702a1 50 //#endif
alt0710 23:0bb032ef1880 51
alt0710 23:0bb032ef1880 52 AnalogIn InterfaceManager::batVoltage(A0);
alt0710 3:6f87cbec2ae8 53
alt0710 3:6f87cbec2ae8 54
alt0710 0:d4b98dbcb767 55 void init_interface(void)
alt0710 0:d4b98dbcb767 56 {
alt0710 23:0bb032ef1880 57 //入力PINの設定
alt0710 23:0bb032ef1880 58 InterfaceManager::ball_sensor.mode(PullUp);
alt0710 23:0bb032ef1880 59 InterfaceManager::charge_completed.mode(PullUp);
alt0710 23:0bb032ef1880 60 InterfaceManager::dribbleIC_fault.mode(PullNone);
alt0710 23:0bb032ef1880 61 // InterfaceManager::modeSW_1.mode(PullNone);
alt0710 23:0bb032ef1880 62 // InterfaceManager::modeSW_2.mode(PullNone);
alt0710 23:0bb032ef1880 63 InterfaceManager::straight_kick = 0;
alt0710 23:0bb032ef1880 64 InterfaceManager::chip_kick = 0;
alt0710 23:0bb032ef1880 65 InterfaceManager::charge_request = 0;
alt0710 23:0bb032ef1880 66 //InterfaceManager::dribbleStandBy = 0;
alt0710 23:0bb032ef1880 67
alt0710 23:0bb032ef1880 68 InterfaceManager::dribbleMotor.period_us(50);
alt0710 26:d626e7968063 69 #if defined(MAIN_BORD_Ver_4) || defined(MAIN_BORD_Ver_5)
alt0710 23:0bb032ef1880 70 InterfaceManager::dribbleMotor.write(1.0); //0.0~1.0
alt0710 25:15f75825fc36 71 #else
alt0710 25:15f75825fc36 72 InterfaceManager::dribbleMotor.write(0.0); //0.0~1.0
alt0710 25:15f75825fc36 73 #endif
alt0710 3:6f87cbec2ae8 74 //割り込み優先度決定※Timerの優先度は低めに
alt0710 24:37a074e767c8 75 NVIC_SetPriority(TIM2_IRQn,5);
alt0710 12:b7d7523733cd 76 NVIC_SetPriority(TIM1_BRK_TIM15_IRQn,10);
alt0710 12:b7d7523733cd 77 NVIC_SetPriority(TIM1_UP_TIM16_IRQn,10);
alt0710 12:b7d7523733cd 78 NVIC_SetPriority(TIM1_TRG_COM_TIM17_IRQn,10);
alt0710 12:b7d7523733cd 79 NVIC_SetPriority(TIM1_CC_IRQn,10);
alt0710 24:37a074e767c8 80 NVIC_SetPriority(TIM3_IRQn,5);
alt0710 12:b7d7523733cd 81
alt0710 1:c359b1fcfb5a 82 NVIC_SetPriority(I2C1_EV_IRQn,1);
alt0710 2:ba11cc8540d3 83 NVIC_SetPriority(CAN_TX_IRQn,1);
alt0710 2:ba11cc8540d3 84 NVIC_SetPriority(CAN_RX0_IRQn,1);
alt0710 2:ba11cc8540d3 85 NVIC_SetPriority(CAN_RX1_IRQn,1);
alt0710 9:41d5c728aa78 86 NVIC_SetPriority(USART1_IRQn , 0);
alt0710 9:41d5c728aa78 87 NVIC_SetPriority(USART2_IRQn , 0);
alt0710 9:41d5c728aa78 88 NVIC_SetPriority(USART3_IRQn , 0);
alt0710 0:d4b98dbcb767 89 initButton();
alt0710 1:c359b1fcfb5a 90 initI2C();
alt0710 2:ba11cc8540d3 91 initCAN();
alt0710 7:1f1bdb4e4f33 92 initXbee();
alt0710 1:c359b1fcfb5a 93
alt0710 23:0bb032ef1880 94
alt0710 12:b7d7523733cd 95
alt0710 0:d4b98dbcb767 96 }