ryuna’s diary

ryunaが適当にまとめまーす

Cat-Potの秘密

CatPotの(りゅな)でないほうのプログラム担当の(lilac)です.

ロボカップジャパンサッカーオープン2016のときに使用したプログラムを公開しました.

mbedUserでプログラムが見れるorそれでいい方は

メインマイコンのプログラムはこちらのURL

サブマイコンのプログラムはこちらのURL

エディタ等で見たい方は以下のURLにアクセスしてダウンロードをしてみてください.

こちらにはおまけのIRのフォーマットも上がっています. リンク

公開したのでプログラムを書いているロボカッパーの方でCat-Potの動きがどのようになっているのか,

どのようなコードになっているのか気になる人はぜひともご覧ください.

ちなみにあんまりコメント書いてないんでわかりにくいです.申し訳ありません.

そこは変数名でわかりやすくしようと努力したつもりなんでご勘弁願います.

公開したプログラムには2014年のジャパンオープンのchronograph(先輩のチーム)のプログラムを

参考にしています.オムニの出力制御やコンパスの値をモーターの出力に反映するためのPID制御などが該当します.

残りはほとんど独学です.しかし同じ学校の後輩のInputやnncbotの練習風景を見て参考にした点もあり,

彼らがいてこそのプログラムです.

ファイルのなかに,数字がずらりとならんでいるファイルがありますが,手入力をしたわけではなくエクセルを用いて

コピペしました.

プログラムを読んでハード面で分からないことがあったらハード担当の(りゅな)君のツイッターのアカウントにつぶやけば

きっと何か教えてくれると思います.

プログラムのここを見て!

//main

(1)LCD+スイッチ4つによる圧倒的デバッグ

コマンドモードとアクティブモードという概念をプログラムに組み込むことで,面倒なプログラムの書き換え回数を減らす

→時間に余裕がでる.(マシンエラーがなければ)

→動きのプログラムに専念できる

→強いプログラムができる.

(2)コマンドモードで戦略と出力を設定できる.SDカードがあると設定を保存できるのでおすすめ.

(3)ActiveConfig.hとCommandConfigによるデバッグ項目と戦略項目の設定

(4)const static をつかって定数を宣言し,値調整をすぐにできるようにした.

→時間に余裕がでる.(マシンエラーがなければ)

→...

(5)二体のモータの回転方向等のハードの違い(red(jiji)/green(lily))をマクロによって差を埋めた.

(6)クラス宣言時はマイコンのピン番号を直接入力せずにあらかじめPinName型の変数で宣言しておくことで

(7)逐一回路図を見て配線を確認する手間を省く.これがしっかりできていると配線のことを気にせずにプログラミングに没頭できる.

(8)構造体+グローバル変数を使ってセンサーの値をどこでも使えるようにした.また,ありとあらゆる設定値,フラグを管理している.

(9)三角関数を使わずに三角関数のテーブルを用いる....エクセルからのコピペです.

(10)Irの回り込みのテーブル...エクセルからのコピペです.

(11)Line処理全般...一番時間費やしたのはここといっても過言ではないです.とても分かりにくいです.

(12)Lineの検出の順番から壁の位置を推測...これはあまり珍しくはないはず.

(13)パルスボールの値を4段階に分け,近,中,遠,無を判別している.

(14)オムニに最終的に出力する計算値(move(vx, vy, vs)のところ)

(15)構造体のsys.のBlindシリーズ...大会の調整でLineの復帰処理などをみたいとき,パルスボールの影響を受けないで動作チェックなどができる.

//sub

spi通信です.

(16)Irと超音波のプログラムをマクロの宣言をすこしかえると切り替えられます.

(17)Irの処理ではバブルソートと5回移動平均(遠距離Irは値が安定しないから)といった信号処理を行った後,

16bitに情報を量子化し,メインマイコンにセンサーの値を送っている.