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:23:42 2019 +0000
Revision:
35:b1b00cfaa163
Parent:
34:857b6cca2021
2019JapanOpenSoft

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alt0710 7:1f1bdb4e4f33 1 #ifndef WHEEL_ROOTS_H
alt0710 7:1f1bdb4e4f33 2 #define WHEEL_ROOTS_H
alt0710 7:1f1bdb4e4f33 3
alt0710 7:1f1bdb4e4f33 4 /* **Include** */
alt0710 7:1f1bdb4e4f33 5 #include "mbed.h"
alt0710 7:1f1bdb4e4f33 6 #include "comm.h"
alt0710 7:1f1bdb4e4f33 7 #include "typedef.h"
alt0710 7:1f1bdb4e4f33 8 #include "interface_manager.h"
alt0710 7:1f1bdb4e4f33 9 #include "status_manager.h"
alt0710 7:1f1bdb4e4f33 10
alt0710 7:1f1bdb4e4f33 11 /* **Define** */
alt0710 7:1f1bdb4e4f33 12 #define DEG2RAD 0.01745329251 // π/180 = 0.01745329251
alt0710 7:1f1bdb4e4f33 13 #define RAD2DEG 57.2957795130 // 180/π = 57.2957795130
alt0710 7:1f1bdb4e4f33 14
alt0710 7:1f1bdb4e4f33 15 /* **変数定義** */
alt0710 17:e5e7b19dd707 16 #ifndef EXCHANGE_REQUEST
alt0710 7:1f1bdb4e4f33 17 const double CONST_MACHINE_RADIUS_ = 0.07;
alt0710 34:857b6cca2021 18 const double CONST_WHEEL_RADIUS_ = 24; //old:26
alt0710 34:857b6cca2021 19 const double CONST_GEER_RATIO_ = 2.22; //old:2.83
alt0710 17:e5e7b19dd707 20 #endif
alt0710 17:e5e7b19dd707 21
alt0710 17:e5e7b19dd707 22 #ifdef EXCHANGE_REQUEST
alt0710 17:e5e7b19dd707 23 const double CONST_MACHINE_RADIUS_ = 0.07;
alt0710 17:e5e7b19dd707 24 const double CONST_WHEEL_RADIUS_ = 28;
alt0710 17:e5e7b19dd707 25 const double CONST_GEER_RATIO_ = 2.4;
alt0710 17:e5e7b19dd707 26 #endif
alt0710 7:1f1bdb4e4f33 27
alt0710 7:1f1bdb4e4f33 28 const double CONST_V0_COEFFICIENT_VX_ = -0.5, CONST_V0_COEFFICIENT_VY_ = 0.8660254;
alt0710 7:1f1bdb4e4f33 29 const double CONST_V1_COEFFICIENT_VX_ = -0.5, CONST_V1_COEFFICIENT_VY_ = -0.8660254;
alt0710 7:1f1bdb4e4f33 30 const double CONST_V2_COEFFICIENT_VX_ = 1, CONST_V2_COEFFICIENT_VY_ = 0;
alt0710 7:1f1bdb4e4f33 31 const double CONST_V3_COEFFICIENT_VX_ = 2.0000015, CONST_V3_COEFFICIENT_VY_ = 1.15470024;
alt0710 7:1f1bdb4e4f33 32 /* **グルーバル関数** */
alt0710 7:1f1bdb4e4f33 33
alt0710 7:1f1bdb4e4f33 34 /* **クラス** */
alt0710 7:1f1bdb4e4f33 35 class InterfaceManager;
alt0710 7:1f1bdb4e4f33 36 class StatusManager;
alt0710 7:1f1bdb4e4f33 37
alt0710 7:1f1bdb4e4f33 38 class Wheel{
alt0710 7:1f1bdb4e4f33 39 public:
alt0710 7:1f1bdb4e4f33 40 Wheel();
alt0710 7:1f1bdb4e4f33 41 void setVelocity(short V_value, short V_angle, short V_omega);
alt0710 7:1f1bdb4e4f33 42 short getVel_Mot0(void){return order.Mot0Order.Vel_short;}
alt0710 7:1f1bdb4e4f33 43 short getVel_Mot1(void){return order.Mot1Order.Vel_short;}
alt0710 7:1f1bdb4e4f33 44 short getVel_Mot2(void){return order.Mot2Order.Vel_short;}
alt0710 7:1f1bdb4e4f33 45 short getVel_Mot3(void){return order.Mot3Order.Vel_short;}
alt0710 7:1f1bdb4e4f33 46
alt0710 7:1f1bdb4e4f33 47 private:
alt0710 7:1f1bdb4e4f33 48 OrderMotVel order;
alt0710 7:1f1bdb4e4f33 49 short Vel_Value;
alt0710 7:1f1bdb4e4f33 50 short Vel_Angle;
alt0710 7:1f1bdb4e4f33 51 short Vel_Omega;
alt0710 7:1f1bdb4e4f33 52
alt0710 7:1f1bdb4e4f33 53 double Vel_X;
alt0710 7:1f1bdb4e4f33 54 double Vel_Y;
alt0710 7:1f1bdb4e4f33 55 double Vel_OMEGA;
alt0710 7:1f1bdb4e4f33 56
alt0710 7:1f1bdb4e4f33 57 double Vel_Mot0_double;
alt0710 7:1f1bdb4e4f33 58 double Vel_Mot1_double;
alt0710 7:1f1bdb4e4f33 59 double Vel_Mot2_double;
alt0710 7:1f1bdb4e4f33 60 double Vel_Mot3_double;
alt0710 7:1f1bdb4e4f33 61
alt0710 7:1f1bdb4e4f33 62 void calcWheelVelocity(void);
alt0710 7:1f1bdb4e4f33 63 void convertPhasorToVector(void);
alt0710 7:1f1bdb4e4f33 64 void resolveVector(void);
alt0710 7:1f1bdb4e4f33 65 double operationV0(double vx,double vy, double vw);
alt0710 7:1f1bdb4e4f33 66 double operationV1(double vx,double vy, double vw);
alt0710 7:1f1bdb4e4f33 67 double operationV2(double vx,double vy, double vw);
alt0710 7:1f1bdb4e4f33 68 double operationV3(double vx,double vy, double vw);
alt0710 7:1f1bdb4e4f33 69
alt0710 7:1f1bdb4e4f33 70
alt0710 7:1f1bdb4e4f33 71 };
alt0710 7:1f1bdb4e4f33 72
alt0710 7:1f1bdb4e4f33 73
alt0710 7:1f1bdb4e4f33 74 #endif