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/fifo/fifo.cpp@35:b1b00cfaa163, 2019-09-22 (annotated)
- Committer:
- alt0710
- Date:
- Sun Sep 22 10:23:42 2019 +0000
- Revision:
- 35:b1b00cfaa163
- Parent:
- 7:1f1bdb4e4f33
2019JapanOpenSoft
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alt0710 | 7:1f1bdb4e4f33 | 1 | |
alt0710 | 7:1f1bdb4e4f33 | 2 | #include "mbed.h" |
alt0710 | 7:1f1bdb4e4f33 | 3 | #include "comm.h" |
alt0710 | 7:1f1bdb4e4f33 | 4 | #include "fifo.h" |
alt0710 | 7:1f1bdb4e4f33 | 5 | |
alt0710 | 7:1f1bdb4e4f33 | 6 | /* **mbedクラス** */ |
alt0710 | 7:1f1bdb4e4f33 | 7 | #ifdef LPC4088 |
alt0710 | 7:1f1bdb4e4f33 | 8 | |
alt0710 | 7:1f1bdb4e4f33 | 9 | #elif STM32 |
alt0710 | 7:1f1bdb4e4f33 | 10 | |
alt0710 | 7:1f1bdb4e4f33 | 11 | #endif |
alt0710 | 7:1f1bdb4e4f33 | 12 | |
alt0710 | 7:1f1bdb4e4f33 | 13 | |
alt0710 | 7:1f1bdb4e4f33 | 14 | /* **ローカル関数定義** */ |
alt0710 | 7:1f1bdb4e4f33 | 15 | |
alt0710 | 7:1f1bdb4e4f33 | 16 | /* **ローカル関数** */ |
alt0710 | 7:1f1bdb4e4f33 | 17 | |
alt0710 | 7:1f1bdb4e4f33 | 18 | /* **グルーバル関数** */ |
alt0710 | 7:1f1bdb4e4f33 | 19 | |
alt0710 | 7:1f1bdb4e4f33 | 20 | /* **クラス** */ |
alt0710 | 7:1f1bdb4e4f33 | 21 | FIFO_Roots::FIFO_Roots() |
alt0710 | 7:1f1bdb4e4f33 | 22 | :head_write(0), |
alt0710 | 7:1f1bdb4e4f33 | 23 | head_read(0) |
alt0710 | 7:1f1bdb4e4f33 | 24 | {} |
alt0710 | 7:1f1bdb4e4f33 | 25 | |
alt0710 | 7:1f1bdb4e4f33 | 26 | ErrAddFIFO FIFO_Roots::addFIFO(fifo_type data ) |
alt0710 | 7:1f1bdb4e4f33 | 27 | { |
alt0710 | 7:1f1bdb4e4f33 | 28 | unsigned char next = (head_write+ 1) & (FIFO_SIZE - 1); |
alt0710 | 7:1f1bdb4e4f33 | 29 | |
alt0710 | 7:1f1bdb4e4f33 | 30 | if( next == head_read ){ |
alt0710 | 7:1f1bdb4e4f33 | 31 | return FIFO_OVERFLOWED; |
alt0710 | 7:1f1bdb4e4f33 | 32 | } |
alt0710 | 7:1f1bdb4e4f33 | 33 | |
alt0710 | 7:1f1bdb4e4f33 | 34 | fifo_data[head_write] = data; |
alt0710 | 7:1f1bdb4e4f33 | 35 | head_write = next; |
alt0710 | 7:1f1bdb4e4f33 | 36 | |
alt0710 | 7:1f1bdb4e4f33 | 37 | return ADD_SUCCESS; |
alt0710 | 7:1f1bdb4e4f33 | 38 | |
alt0710 | 7:1f1bdb4e4f33 | 39 | } |
alt0710 | 7:1f1bdb4e4f33 | 40 | |
alt0710 | 7:1f1bdb4e4f33 | 41 | fifo_type FIFO_Roots::getFIFO(void) |
alt0710 | 7:1f1bdb4e4f33 | 42 | { |
alt0710 | 7:1f1bdb4e4f33 | 43 | fifo_type buf; |
alt0710 | 7:1f1bdb4e4f33 | 44 | |
alt0710 | 7:1f1bdb4e4f33 | 45 | buf = fifo_data[head_read]; |
alt0710 | 7:1f1bdb4e4f33 | 46 | head_read = (head_read + 1) & (FIFO_SIZE - 1 ); |
alt0710 | 7:1f1bdb4e4f33 | 47 | |
alt0710 | 7:1f1bdb4e4f33 | 48 | return buf; |
alt0710 | 7:1f1bdb4e4f33 | 49 | } |
alt0710 | 7:1f1bdb4e4f33 | 50 | |
alt0710 | 7:1f1bdb4e4f33 | 51 | ErrGetFIFO FIFO_Roots::statusFIFO(void) |
alt0710 | 7:1f1bdb4e4f33 | 52 | { |
alt0710 | 7:1f1bdb4e4f33 | 53 | if( head_read == head_write ){ |
alt0710 | 7:1f1bdb4e4f33 | 54 | return FIFO_EMPTY; |
alt0710 | 7:1f1bdb4e4f33 | 55 | } |
alt0710 | 7:1f1bdb4e4f33 | 56 | return GET_SUCCESS; |
alt0710 | 7:1f1bdb4e4f33 | 57 | } |