【世界最大級の中高生ロボコン】FRCでのプログラムについて ~FIRST~


タイトルはできるだけ盛れってじっちゃんに言われた

でも実際規模は大きいです。

最大身長1m超、体重約50kg超のこういうロボットたちが走り回ったりします。(デデーン!)
チームによって様々で面白いです。

こちらは去年の私達のロボット(Maker Faire Tokyoの展示にて)👇

 
 
この記事はアメリカのNPO団体、FIRSTが主催するFRC(FIRST Robotics Competition)という中高生向けロボコンに
僕の所属しているFRCチーム、SAKURA Tempestaが出場したときに使用したプログラムの解説になります。

コード👉https://github.com/Teityan/RobotCode-2019
正式なものはmasterブランチですが、HiroseRobotブランチ(命名のセンス死んでる)にしかない機能も今後出てきます。
メンター(指導者的なもの)にチェックしてもらってないので間違っているかもしれません、、、ロボットが使えなくて試せてないです。

主に今後FRCに参加する日本のチームの人向けになります。

具体的にどうやって書いていくかとかそういうことよりも、どういう機能をつけるだとかを重視して書いたつもりです。

ぶっちゃけこんなのは自分たちのサイトに書いたりチーム内で済ませるもんなんですが、できるだけ人の目に触れたいのでこのQiitaの場を借りてます。(ちゃんとプログラミングに関するものなので安心してください!)

ですが、そうでない方も読んでいただけると幸いです。

 
 
ここから自分語り含め、いろんな背景説明が始まりますが、

そんなのどうでもいいわ!コードやらをちゃちゃっと見てえんだ!

って方は言語、ライブラリについてへGO!
あ、でもこれだけは少し見てください(小声)私たちのチームです。
HP : FRC Team 6909 SAKURA Tempesta
Twitter : FRC Team 6909 SAKURA Tempesta クラファンやってます!

 

そもそもFRCって?

という方に雑に説明すると、(何奴!?という感じでしょうウンウン)

ロボットの作成費を自分たちで集めて、
6週間というわずかな期間で
0からすべてを(ロボット本体からプログラム、操作練習まで)成し遂げなければならない大会です。

こちらのYoutubeチャンネルで実際の試合映像が見られたりします。
FIRSTRoboticsCompetition

アメリカ発祥の大会で、世界27カ国、約91,000人が参加しています。
最近ではこれの下の年齢の大会、FLL(FIRST LEGO LEAGUE)が有名になってきているらしいですね。

自分たちは作成期間外はワークショップなどアウトリーチ活動を行っています。
メンバーはほんとに中学生~高校生です。
もちろん大人の方にもついてもらってますが。

FIRST及びFRCについてはこちら
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-Vision and Mission(English)
-FIRSTについて(日本語)
-FIRST Robotic Competition(English)
-FIRST® Robotics Competitionについて(日本語)

SAKURA Tempestaとは
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
HP : FRC Team 6909 SAKURA Tempesta
Twitter : FRC Team 6909 SAKURA Tempesta クラファンやってます!

自己紹介などプログラム作成者について

プロフィールのとこにかけって話ですが、、、

自分は高校二年生です。つまりは来年受験。
プログラミングは中三の終わりに始めたので大体2年くらいになります。一応。
チームに入る前はだらだらプログラミングやってました。
ロボットの主な処理や足まわりと腕まわりを担当しました。

プログラム作成者はもう一人いて、こちらは中三です。
自宅にサーバーを複数抱えていたりとか、いろいろやっている子です。
ロボットの腕を持ち上げるリフトまわりを担当してもらいました。

ロボットのプログラムなんて書いたことの無い2人でしたがなんとかやってきました。

FIRST

最初に。
こちらを読んでからのほうが理解しやすいかも。なおすべて英語\(^o^)/オワタ
2019 FRC Controll System
せめてCreating and Running Robot Programsまでは読もう。
CANDeviceあたりからは軽いハードの知識が要るかも。

こちらは自分たちでいろいろ書いたところの解説になります。わけてはいますが、めちゃくちゃ長いです...。
全部読んでもらえたら割とかけるようになると思います。

全部1記事でまとめようと思ったら全然できなかったので大まかに分けました。
大体クラスごとです

記事一覧(2019/3/15現在 今後増えていきます)
FIRST
Main関係
PID制御について
Drive関係
用語等について
とりあえず概要説明をここでやります。

言語、ライブラリについて

言語はJavaです。C++でもおおまかにはそんなに変わらないです。
コピペはできなくとも参考にはなると思います。

ライブラリはFIRSTが用意しているWPILib(ダブリューピーアイライブラリ)というものを使用してます。これがないとほぼ無理。というかまあ使うよう言われてるんですけど。

読むにあたり必要な知識

Javaの基本的な文法 継承辺りまで知っていればとりあえず大丈夫。
PID制御 数学的なところはなくても大丈夫。

そもそも何をどうするロボットなん?

まず、軽い試合のルール説明から。このルールは毎年大きく変わります。
3チームで連合を組んで(この組み合わせは毎試合ランダム)赤チームと青チームに分かれて戦う。(これは毎年同じ)

ロケットと船(に見立てたもの)に黄色い板でフタをして(2pt)、(ちなみにマジックテープでくっついてます)


 

オレンジのボールを穴に入れる(3pt)


 

段差に登るとそれに応じて点が入る(3~12pt)。


この紹介動画は2019 FIRST Robotics Competition Destination: Deep Space Game Animation
 
試合の内容はわかっていただけましたね。

私たちのロボットができることは、

船にボールと板を入れたりつけたりする
ロケットの下から2段目までにボールと板を入れたりつけたりする
段差に登る

この3つです。

(今年の私達のロボット 黒がかっこいいですね!)
私達のRobot Reveal(ロボット紹介)動画です👉Robot Reveal 2019

基本的にコントローラーで操作します。
ボールを入れる場所や板をつける場所は決まっているので、コントローラーでコマンドを入力します。
段差に登るのもコマンドで半自動に。

コントローラーはXBoxControllerを二つ使うようにしています。
要はドライバーが二人。

LAST

最後に。
次からコードが出てきます。
是非ほかの記事も見ていってください!

次の記事⇒Main関係