RobocupSSLのメイン基板白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は,ロボットとボールの座標,審判の判定を元にロボットの移動,キックなどの作戦を決定し,無線によってロボットに指令を送信する.
ロボット機能紹介
●オムニホイールによる方向転換不要の全方位移動
オムニホイールは,自由に回転可能なローラをホイールの外周上に配置した車輪である.ローラの回転により,車輪の回転と垂直の方向に駆動力を発することはできないが移動は可能となる.各車輪の角速度を調整することによって全方向への移動を可能にする.
●ドリブルバーのバックスピンによるボール保持
●電磁力を利用したキッカー
●キッカーの電磁力エネルギーを充電する充電回路
●ロボット情報が一目でわかるLCD
comm/parameter/kick_power/kick_power.cpp
- Committer:
- alt0710
- Date:
- 2019-09-22
- Revision:
- 35:b1b00cfaa163
- Parent:
- 25:15f75825fc36
File content as of revision 35:b1b00cfaa163:
#include "mbed.h" #include "comm.h" #include "interface_manager.h" #include "parameter_manager.h" #include "kick_power.h" /* **mbedクラス** */ #ifdef LPC4088 #elif STM32 #endif /* **ローカル関数定義** */ /* **ローカル関数** */ /* **グルーバル関数** */ /* **クラス** */ //メンバ変数の初期化は、定義順(Warningになる) Kick_Power::Kick_Power() :ZERO_POINT_FIVE_METER_PAR_SEC_(0.0005), ONE_METER_PAR_SEC_(0.001), ONE_POINT_FIVE_METER_PAR_SEC_(0.002), TWO_METER_PAR_SEC_(0.003), TWO_POINT_FIVE_METER_PAR_SEC_(0.004), THREE_METER_PAR_SEC_(0.005), THREE_POINT_FIVE_METER_PAR_SEC_(0.006), FOUR_METER_PAR_SEC_(0.007), FOUR_POINT_FIVE_METER_PAR_SEC_(0.008), FIVE_METER_PAR_SEC_(0.009), FIVE_POINT_FIVE_METER_PAR_SEC_(0.010), SIX_METER_PAR_SEC_(0.011), SIX_POINT_FIVE_METER_PAR_SEC_(0.012), SEVEN_METER_PAR_SEC_(0.013), SEVEN_POINT_FIVE_METER_PAR_SEC_(0.014), EIGHT_METER_PAR_SEC_(0.015), ZERO_POINT_FIVE_METER_(0.0005), ONE_METER_(0.001), ONE_POINT_FIVE_METER_(0.002), TWO_METER_(0.003), TWO_POINT_FIVE_METER_(0.004), THREE_METER_(0.005), THREE_POINT_FIVE_METER_(0.006), FOUR_METER_(0.007), FOUR_POINT_FIVE_METER_(0.008), FIVE_METER_(0.009), FIVE_POINT_FIVE_METER_(0.010), SIX_METER_(0.011), SIX_POINT_FIVE_METER_(0.012), SEVEN_METER_(0.013), SEVEN_POINT_FIVE_METER_(0.014), EIGHT_METER_(0.015), PERIOD_OF_FORCE_FIRE_(0.005) { } double Kick_Power::getStraightPowerTime(char power) { switch(power){ case 0: return ZERO_POINT_FIVE_METER_PAR_SEC_; case 1: return ONE_METER_PAR_SEC_; case 2: return ONE_POINT_FIVE_METER_PAR_SEC_; case 3: return TWO_METER_PAR_SEC_; case 4: return TWO_POINT_FIVE_METER_PAR_SEC_; case 5: return THREE_METER_PAR_SEC_; case 6: return THREE_POINT_FIVE_METER_PAR_SEC_; case 7: return FOUR_METER_PAR_SEC_; case 8: return FOUR_POINT_FIVE_METER_PAR_SEC_; case 9: return FIVE_METER_PAR_SEC_; case 10: return FIVE_POINT_FIVE_METER_PAR_SEC_; case 11: return SIX_METER_PAR_SEC_; case 12: return SIX_POINT_FIVE_METER_PAR_SEC_; case 13: return SEVEN_METER_PAR_SEC_; case 14: return SEVEN_POINT_FIVE_METER_PAR_SEC_; case 15: return EIGHT_METER_PAR_SEC_; default: return PERIOD_OF_FORCE_FIRE_; } } double Kick_Power::getChipPowerTime(char power) { switch(power){ case 0: return ZERO_POINT_FIVE_METER_PAR_SEC_; case 1: return ONE_METER_PAR_SEC_; case 2: return ONE_POINT_FIVE_METER_PAR_SEC_; case 3: return TWO_METER_PAR_SEC_; case 4: return TWO_POINT_FIVE_METER_PAR_SEC_; case 5: return THREE_METER_PAR_SEC_; case 6: return THREE_POINT_FIVE_METER_PAR_SEC_; case 7: return FOUR_METER_PAR_SEC_; case 8: return FOUR_POINT_FIVE_METER_PAR_SEC_; case 9: return FIVE_METER_PAR_SEC_; case 10: return FIVE_POINT_FIVE_METER_PAR_SEC_; case 11: return SIX_METER_PAR_SEC_; case 12: return SIX_POINT_FIVE_METER_PAR_SEC_; case 13: return SEVEN_METER_PAR_SEC_; case 14: return SEVEN_POINT_FIVE_METER_PAR_SEC_; case 15: return EIGHT_METER_PAR_SEC_; default: return PERIOD_OF_FORCE_FIRE_; } }