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:
Sat Apr 28 07:18:22 2018 +0000
Revision:
23:0bb032ef1880
Parent:
17:e5e7b19dd707
Child:
24:37a074e767c8
???????????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 2:ba11cc8540d3 1
alt0710 2:ba11cc8540d3 2 #include "mbed.h"
alt0710 2:ba11cc8540d3 3 #include "comm.h"
alt0710 2:ba11cc8540d3 4 #include "interface_manager.h"
alt0710 2:ba11cc8540d3 5 #include "can_roots.h"
alt0710 2:ba11cc8540d3 6
alt0710 2:ba11cc8540d3 7 /* **mbedクラス** */
alt0710 2:ba11cc8540d3 8 #ifdef LPC4088
alt0710 2:ba11cc8540d3 9
alt0710 2:ba11cc8540d3 10 #elif STM32
alt0710 2:ba11cc8540d3 11 CAN canMBED(PA_11, PA_12); // sda, scl
alt0710 2:ba11cc8540d3 12 #endif
alt0710 2:ba11cc8540d3 13
alt0710 2:ba11cc8540d3 14 Ticker can_Timer;
alt0710 2:ba11cc8540d3 15 char data[4];
alt0710 2:ba11cc8540d3 16 CANMessage msg(0x410, &data[0] , 4 );
alt0710 2:ba11cc8540d3 17
alt0710 2:ba11cc8540d3 18 /* **ローカル関数定義** */
alt0710 2:ba11cc8540d3 19
alt0710 2:ba11cc8540d3 20
alt0710 2:ba11cc8540d3 21
alt0710 2:ba11cc8540d3 22 /* **ローカル関数** */
alt0710 2:ba11cc8540d3 23 void can_send(void)
alt0710 2:ba11cc8540d3 24 {
alt0710 2:ba11cc8540d3 25 //4msec周期で送信
alt0710 2:ba11cc8540d3 26 //送信記述はここに書く
alt0710 23:0bb032ef1880 27 // InterfaceManager::can.send_motvel_data[0] = 1;
alt0710 23:0bb032ef1880 28 // InterfaceManager::can.send_motvel_data[1] = 2;
alt0710 23:0bb032ef1880 29 // InterfaceManager::can.send_motvel_data[2] = 3;
alt0710 23:0bb032ef1880 30 // InterfaceManager::can.send_motvel_data[3] = 4;
alt0710 23:0bb032ef1880 31 // InterfaceManager::can.send_motvel_data[4] = 5;
alt0710 23:0bb032ef1880 32 // InterfaceManager::can.send_motvel_data[5] = 6;
alt0710 23:0bb032ef1880 33 // InterfaceManager::can.send_motvel_data[6] = 7;
alt0710 23:0bb032ef1880 34 // InterfaceManager::can.send_motvel_data[7] = 8;
alt0710 2:ba11cc8540d3 35 canMBED.write(CANMessage(MOT_ORDER_ID,InterfaceManager::can.send_motvel_data,8));
alt0710 2:ba11cc8540d3 36
alt0710 2:ba11cc8540d3 37
alt0710 2:ba11cc8540d3 38
alt0710 2:ba11cc8540d3 39 }
alt0710 2:ba11cc8540d3 40
alt0710 2:ba11cc8540d3 41 void onMsgReceived()
alt0710 2:ba11cc8540d3 42 {
alt0710 2:ba11cc8540d3 43 canMBED.read(msg);
alt0710 23:0bb032ef1880 44 if(msg.id == 0x102)
alt0710 2:ba11cc8540d3 45 {
alt0710 2:ba11cc8540d3 46 InterfaceManager::can.recive_motvel_data[0] = msg.data[0];
alt0710 2:ba11cc8540d3 47 InterfaceManager::can.recive_motvel_data[1] = msg.data[1];
alt0710 2:ba11cc8540d3 48 InterfaceManager::can.recive_motvel_data[2] = msg.data[2];
alt0710 2:ba11cc8540d3 49 InterfaceManager::can.recive_motvel_data[3] = msg.data[3];
alt0710 2:ba11cc8540d3 50 }
alt0710 2:ba11cc8540d3 51
alt0710 2:ba11cc8540d3 52 }
alt0710 2:ba11cc8540d3 53
alt0710 2:ba11cc8540d3 54
alt0710 2:ba11cc8540d3 55 /* **グルーバル関数** */
alt0710 2:ba11cc8540d3 56 extern void initCAN(void)
alt0710 2:ba11cc8540d3 57 {
alt0710 23:0bb032ef1880 58 canMBED.frequency(1000000);
alt0710 2:ba11cc8540d3 59 canMBED.mode(CAN::Normal);
alt0710 2:ba11cc8540d3 60 canMBED.attach(&onMsgReceived);
alt0710 2:ba11cc8540d3 61 can_Timer.attach(can_send, CAN_SEND_CYCLE_TIME);
alt0710 2:ba11cc8540d3 62 }
alt0710 2:ba11cc8540d3 63
alt0710 2:ba11cc8540d3 64 /* **クラス** */
alt0710 2:ba11cc8540d3 65 CAN_Roots::CAN_Roots()
alt0710 2:ba11cc8540d3 66 {
alt0710 2:ba11cc8540d3 67
alt0710 2:ba11cc8540d3 68
alt0710 2:ba11cc8540d3 69 }
alt0710 2:ba11cc8540d3 70
alt0710 2:ba11cc8540d3 71 char CAN_Roots::setMotVel(OrderMotVel& order)
alt0710 2:ba11cc8540d3 72 {
alt0710 2:ba11cc8540d3 73 //TODU:データを上書きしたか判定処理を入れたい
alt0710 12:b7d7523733cd 74 send_motvel_data[0] = (char)order.Mot0Order.Vel_char.L;
alt0710 12:b7d7523733cd 75 send_motvel_data[1] = (char)order.Mot0Order.Vel_char.H;
alt0710 12:b7d7523733cd 76 send_motvel_data[2] = (char)order.Mot1Order.Vel_char.L;
alt0710 12:b7d7523733cd 77 send_motvel_data[3] = (char)order.Mot1Order.Vel_char.H;
alt0710 12:b7d7523733cd 78 send_motvel_data[4] = (char)order.Mot2Order.Vel_char.L;
alt0710 12:b7d7523733cd 79 send_motvel_data[5] = (char)order.Mot2Order.Vel_char.H;
alt0710 17:e5e7b19dd707 80 send_motvel_data[6] = (char)order.Mot0Order.Vel_char.L;
alt0710 17:e5e7b19dd707 81 send_motvel_data[7] = (char)order.Mot0Order.Vel_char.H;
alt0710 17:e5e7b19dd707 82
alt0710 23:0bb032ef1880 83 // send_motvel_data[0] = 1;
alt0710 23:0bb032ef1880 84 // send_motvel_data[1] = 2;
alt0710 23:0bb032ef1880 85 // send_motvel_data[2] = 3;
alt0710 23:0bb032ef1880 86 // send_motvel_data[3] = 4;
alt0710 23:0bb032ef1880 87 // send_motvel_data[4] = 5;
alt0710 23:0bb032ef1880 88 // send_motvel_data[5] = 6;
alt0710 23:0bb032ef1880 89 // send_motvel_data[6] = 7;
alt0710 23:0bb032ef1880 90 // send_motvel_data[7] = 8;
alt0710 17:e5e7b19dd707 91
alt0710 2:ba11cc8540d3 92 return 0;
alt0710 2:ba11cc8540d3 93 }
alt0710 2:ba11cc8540d3 94
alt0710 2:ba11cc8540d3 95
alt0710 2:ba11cc8540d3 96