LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-04-03

この記事はこちらの記事の一部です。まずはこちらをご覧ください。

FIRST

最初に。
Grabberっていうのは、ロボットの前に付いてるここの部分です。
image.png
ここでボールとか板を扱います。

前の方の灰色とか後ろの方のとかのローラーを回してボールを回収&発射します。
ezgif.com-video-to-gif (1).gif

実は板には真ん中に穴が空いているのですが、そこに手前の白い棒をはめて鉤爪みたいなのを広げて回収します。
ezgif.com-video-to-gif.gif

このクラスに必要なこと

・直径33cmのボールを回収し、保持、任意のタイミングで発射できる
・板を取ったりつけたりできる
・アーム(上の操作を行う機構)をしまえる
  ⇒ルール的に最初は閉まっていなければならない&ボールを発射するときに邪魔

変数

VictorSP rollerMotor

ボールを回収するためのローラー。一つのモーターで全部動くようになってる。

Solenoid barSolenoid

板を回収するときに棒を開くためのもの
ソレノイドというのは、電気ではなく空気を使ったモーターみたいなもの

Solenoid armSolenoid

アームをしまうためのもの

boolean is_RollerMoving

ローラーが回っているか。あまり使い所は...

boolean is_retractingArm

アームがしまわれているか。あまり使い所は...

関数一覧

Grabber()

引数...
VictorSP rollerMotor
Solenoid barSolenoid
Solenoid armSolenoid

引数のモーター、ソレノイドをクラスのフィールドに渡す。

public void applyState()

引数...
Statestate

Stateから情報を受け取りモーター、ソレノイドに代入する。

private void holdCargo()

引数...
なし

ボールを回収する。

private void releaseCargo()

引数...
なし

ボールを発射する

private void stopRoller()

引数...
なし

ローラーを止める。何も操作されてないときにこうする。

private void setRollerSpeed()

引数...
なし

ローラーのスピードを設定する。
ここの処理をコメントアウトすればローラーは動かなくなる。

public boolean is_RollerMoving()

引数...
なし

ローラーが動いているか。

private void holdPanel()

引数...
なし

板を回収する

private void releasePanel()

引数...
なし

板を設置する

private void retractArm()

引数...
なし

アームをしまう

private void releaseArm()

引数...
なし

アームを出す

public boolean is_retractingArm()

引数...
なし

アームがしまわれているか。

関数説明

自明なものは省略。

applyState()

まず、アーム関係。
Stateがアームをしまうって言ってたらしまう。
また、クライム(後述)中もしまっておきたいので、しまう。

また、ボールを抱えてアームをしまうとボールが飛び出てしまうので保持するように若干ローラー回してます。

ボール関係。
switchで、StateのcargoStateによって処理を分ける。
kHoldならholdCargo()
kReleaseならreleaseCargo()を呼び出す。

板関係。
Stateがパネルをつかめって言ってたらつかむ。

LAST

最後に。

ここはDriveとかに比べるとかなり簡単だった。

では。

前の記事⇒Lift関係
次の記事⇒Climb関係

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0