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 02 07:54:05 2017 +0000
Revision:
10:9cd22f673968
Parent:
9:41d5c728aa78
Child:
11:7f5259ad738c
???????; ?????????????????????????; ??????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 6:21b3fbe57b88 1
alt0710 6:21b3fbe57b88 2 #include "mbed.h"
alt0710 6:21b3fbe57b88 3 #include "comm.h"
alt0710 6:21b3fbe57b88 4 #include "mode.h"
alt0710 6:21b3fbe57b88 5 #include "interface_manager.h"
alt0710 6:21b3fbe57b88 6 #include "status_manager.h"
alt0710 6:21b3fbe57b88 7 #include "parameter_manager.h"
alt0710 6:21b3fbe57b88 8 #include "normal_routine.h"
alt0710 6:21b3fbe57b88 9
alt0710 6:21b3fbe57b88 10 /* **mbedクラス** */
alt0710 6:21b3fbe57b88 11 #ifdef LPC4088
alt0710 6:21b3fbe57b88 12
alt0710 6:21b3fbe57b88 13 #elif STM32
alt0710 6:21b3fbe57b88 14
alt0710 6:21b3fbe57b88 15 #endif
alt0710 6:21b3fbe57b88 16
alt0710 6:21b3fbe57b88 17 /* **ローカル関数定義** */
alt0710 6:21b3fbe57b88 18
alt0710 6:21b3fbe57b88 19 /* **ローカル関数** */
alt0710 6:21b3fbe57b88 20
alt0710 6:21b3fbe57b88 21 /* **グルーバル関数** */
alt0710 6:21b3fbe57b88 22
alt0710 6:21b3fbe57b88 23 /* **クラス** */
alt0710 6:21b3fbe57b88 24 class InterfaceManager;
alt0710 7:1f1bdb4e4f33 25 class StatusManager;
alt0710 7:1f1bdb4e4f33 26 class ParameterManager;
alt0710 7:1f1bdb4e4f33 27
alt0710 6:21b3fbe57b88 28 //メンバ変数の初期化は、定義順(Warningになる)
alt0710 6:21b3fbe57b88 29 NormalRoutine::NormalRoutine()
alt0710 6:21b3fbe57b88 30 {
alt0710 6:21b3fbe57b88 31 }
alt0710 6:21b3fbe57b88 32
alt0710 6:21b3fbe57b88 33 void NormalRoutine::run(void)
alt0710 6:21b3fbe57b88 34 {
alt0710 7:1f1bdb4e4f33 35 packet.splitPacket();
alt0710 7:1f1bdb4e4f33 36
alt0710 7:1f1bdb4e4f33 37 //Kick
alt0710 7:1f1bdb4e4f33 38 kicker.setCharge(ParameterManager::machine_data.charge_flag);
alt0710 7:1f1bdb4e4f33 39 kicker.setKick(ParameterManager::machine_data.kick_flag,ParameterManager::machine_data.kick_type,ParameterManager::machine_data.kickers_power);
alt0710 10:9cd22f673968 40 kicker.forceFireKick();
alt0710 7:1f1bdb4e4f33 41
alt0710 7:1f1bdb4e4f33 42 //Wheel
alt0710 7:1f1bdb4e4f33 43 wheel.setVelocity(ParameterManager::machine_data.v_mm_per_sec,ParameterManager::machine_data.angle_degree,ParameterManager::machine_data.vw_mrad_per_sec);
alt0710 7:1f1bdb4e4f33 44
alt0710 7:1f1bdb4e4f33 45 //Drible
alt0710 7:1f1bdb4e4f33 46
alt0710 9:41d5c728aa78 47 //sprintf(str,"V:%d \n rV:%d",InterfaceManager::can.recive_motvel_data[0],ParameterManager::machine_data.v_mm_per_sec);
alt0710 7:1f1bdb4e4f33 48 createLcdData();
alt0710 6:21b3fbe57b88 49 InterfaceManager::i2c.setLCDMsg(str,sizeof(str));
alt0710 6:21b3fbe57b88 50
alt0710 6:21b3fbe57b88 51 }
alt0710 6:21b3fbe57b88 52
alt0710 7:1f1bdb4e4f33 53 void NormalRoutine::createLcdData(void)
alt0710 7:1f1bdb4e4f33 54 {
alt0710 7:1f1bdb4e4f33 55
alt0710 7:1f1bdb4e4f33 56 /*
alt0710 7:1f1bdb4e4f33 57
alt0710 7:1f1bdb4e4f33 58 * 0 : 正常終了
alt0710 7:1f1bdb4e4f33 59
alt0710 7:1f1bdb4e4f33 60 * -1 : タイムアウト
alt0710 7:1f1bdb4e4f33 61
alt0710 7:1f1bdb4e4f33 62 * -2 : オーバーランエラー
alt0710 7:1f1bdb4e4f33 63
alt0710 7:1f1bdb4e4f33 64 * -3 : フレーミングエラー
alt0710 7:1f1bdb4e4f33 65
alt0710 7:1f1bdb4e4f33 66 * 1 : 受信中
alt0710 7:1f1bdb4e4f33 67
alt0710 7:1f1bdb4e4f33 68 * 2 : フレームリーダー1まで受信
alt0710 7:1f1bdb4e4f33 69
alt0710 7:1f1bdb4e4f33 70 * 3 : フレームリーダー2まで受信
alt0710 7:1f1bdb4e4f33 71
alt0710 7:1f1bdb4e4f33 72 * 4 : マシンIDまで受信
alt0710 7:1f1bdb4e4f33 73
alt0710 7:1f1bdb4e4f33 74 */
alt0710 7:1f1bdb4e4f33 75 switch(StatusManager::uart){
alt0710 7:1f1bdb4e4f33 76 case 0:
alt0710 8:8bd8d008fe86 77 sprintf(str,"ID%d EN:\nComplete",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 78 sprintf(str_uart,"Complete");
alt0710 7:1f1bdb4e4f33 79 break;
alt0710 7:1f1bdb4e4f33 80
alt0710 7:1f1bdb4e4f33 81 case 1:
alt0710 7:1f1bdb4e4f33 82 break;
alt0710 7:1f1bdb4e4f33 83
alt0710 7:1f1bdb4e4f33 84 case 2:
alt0710 8:8bd8d008fe86 85 sprintf(str,"ID%d EN:\nHeader1",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 86 sprintf(str_uart,"Header1");
alt0710 7:1f1bdb4e4f33 87 break;
alt0710 6:21b3fbe57b88 88
alt0710 7:1f1bdb4e4f33 89 case 3:
alt0710 8:8bd8d008fe86 90 sprintf(str,"ID%d EN:\nHeader2",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 91 sprintf(str_uart,"Header2");
alt0710 7:1f1bdb4e4f33 92 break;
alt0710 7:1f1bdb4e4f33 93
alt0710 7:1f1bdb4e4f33 94 case 4:
alt0710 9:41d5c728aa78 95 sprintf(str,"ID%d EN:\nCheckER1",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 96 sprintf(str_uart,"CheckERR");
alt0710 7:1f1bdb4e4f33 97 break;
alt0710 7:1f1bdb4e4f33 98
alt0710 7:1f1bdb4e4f33 99 case 5:
alt0710 9:41d5c728aa78 100 sprintf(str,"ID%d EN:\nCheckER2",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 101 sprintf(str_uart,"CheckERR");
alt0710 7:1f1bdb4e4f33 102 break;
alt0710 7:1f1bdb4e4f33 103
alt0710 7:1f1bdb4e4f33 104 case -1:
alt0710 8:8bd8d008fe86 105 sprintf(str,"ID%d EN:\nTimeOut",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 106 sprintf(str_uart,"TimeOut");
alt0710 7:1f1bdb4e4f33 107 break;
alt0710 7:1f1bdb4e4f33 108
alt0710 7:1f1bdb4e4f33 109 case -2:
alt0710 8:8bd8d008fe86 110 sprintf(str,"ID%d EN:\nOERR",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 111 sprintf(str_uart,"OERR");
alt0710 7:1f1bdb4e4f33 112 break;
alt0710 7:1f1bdb4e4f33 113
alt0710 7:1f1bdb4e4f33 114 case -3:
alt0710 8:8bd8d008fe86 115 sprintf(str,"ID%d EN:\nFERR",ParameterManager::machine_id);
alt0710 7:1f1bdb4e4f33 116 sprintf(str_uart,"FERR");
alt0710 7:1f1bdb4e4f33 117 break;
alt0710 7:1f1bdb4e4f33 118
alt0710 7:1f1bdb4e4f33 119 default:
alt0710 7:1f1bdb4e4f33 120 sprintf(str,"ID%d EN: \n %d",ParameterManager::machine_id, StatusManager::uart);
alt0710 7:1f1bdb4e4f33 121 break;
alt0710 7:1f1bdb4e4f33 122 }
alt0710 7:1f1bdb4e4f33 123
alt0710 7:1f1bdb4e4f33 124
alt0710 7:1f1bdb4e4f33 125 //sprintf(str,"ID%d EN: \n %s",ParameterManager::machine_id ,str_uart);
alt0710 7:1f1bdb4e4f33 126 }