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 Apr 30 16:14:08 2017 +0000
Revision:
9:41d5c728aa78
Parent:
2:ba11cc8540d3
Child:
12:b7d7523733cd
XBee????; UART???????mbed???????122????????????; UART?????????????

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 2:ba11cc8540d3 27 canMBED.write(CANMessage(MOT_ORDER_ID,InterfaceManager::can.send_motvel_data,8));
alt0710 2:ba11cc8540d3 28
alt0710 2:ba11cc8540d3 29
alt0710 2:ba11cc8540d3 30
alt0710 2:ba11cc8540d3 31 }
alt0710 2:ba11cc8540d3 32
alt0710 2:ba11cc8540d3 33 void onMsgReceived()
alt0710 2:ba11cc8540d3 34 {
alt0710 2:ba11cc8540d3 35 canMBED.read(msg);
alt0710 2:ba11cc8540d3 36 if(msg.id == 0x104)
alt0710 2:ba11cc8540d3 37 {
alt0710 2:ba11cc8540d3 38 InterfaceManager::can.recive_motvel_data[0] = msg.data[0];
alt0710 2:ba11cc8540d3 39 InterfaceManager::can.recive_motvel_data[1] = msg.data[1];
alt0710 2:ba11cc8540d3 40 InterfaceManager::can.recive_motvel_data[2] = msg.data[2];
alt0710 2:ba11cc8540d3 41 InterfaceManager::can.recive_motvel_data[3] = msg.data[3];
alt0710 2:ba11cc8540d3 42 }
alt0710 2:ba11cc8540d3 43
alt0710 2:ba11cc8540d3 44 }
alt0710 2:ba11cc8540d3 45
alt0710 2:ba11cc8540d3 46
alt0710 2:ba11cc8540d3 47 /* **グルーバル関数** */
alt0710 2:ba11cc8540d3 48 extern void initCAN(void)
alt0710 2:ba11cc8540d3 49 {
alt0710 2:ba11cc8540d3 50 canMBED.frequency(100000);
alt0710 2:ba11cc8540d3 51 canMBED.mode(CAN::Normal);
alt0710 2:ba11cc8540d3 52 canMBED.attach(&onMsgReceived);
alt0710 2:ba11cc8540d3 53 can_Timer.attach(can_send, CAN_SEND_CYCLE_TIME);
alt0710 2:ba11cc8540d3 54 }
alt0710 2:ba11cc8540d3 55
alt0710 2:ba11cc8540d3 56 /* **クラス** */
alt0710 2:ba11cc8540d3 57 CAN_Roots::CAN_Roots()
alt0710 2:ba11cc8540d3 58 {
alt0710 2:ba11cc8540d3 59
alt0710 2:ba11cc8540d3 60
alt0710 2:ba11cc8540d3 61 }
alt0710 2:ba11cc8540d3 62
alt0710 2:ba11cc8540d3 63 char CAN_Roots::setMotVel(OrderMotVel& order)
alt0710 2:ba11cc8540d3 64 {
alt0710 2:ba11cc8540d3 65 //TODU:データを上書きしたか判定処理を入れたい
alt0710 9:41d5c728aa78 66 send_motvel_data[0] = 0xFE;//(char)order.Mot0Order.Vel_char.L;
alt0710 9:41d5c728aa78 67 send_motvel_data[1] = 0xFE;//(char)order.Mot0Order.Vel_char.H;
alt0710 9:41d5c728aa78 68 send_motvel_data[2] = 0xFE;//(char)order.Mot1Order.Vel_char.L;
alt0710 9:41d5c728aa78 69 send_motvel_data[3] = 0xFE;//(char)order.Mot1Order.Vel_char.H;
alt0710 9:41d5c728aa78 70 send_motvel_data[4] = 0xFE;//(char)order.Mot2Order.Vel_char.L;
alt0710 9:41d5c728aa78 71 send_motvel_data[5] = 0xFE;//(char)order.Mot2Order.Vel_char.H;
alt0710 9:41d5c728aa78 72 send_motvel_data[6] = 0xFE;//(char)order.Mot3Order.Vel_char.L;
alt0710 9:41d5c728aa78 73 send_motvel_data[7] = 0xFE;//(char)order.Mot3Order.Vel_char.H;
alt0710 2:ba11cc8540d3 74
alt0710 2:ba11cc8540d3 75 return 0;
alt0710 2:ba11cc8540d3 76 }
alt0710 2:ba11cc8540d3 77
alt0710 2:ba11cc8540d3 78
alt0710 2:ba11cc8540d3 79