この記事はこちらの記事の一部です。まずはこちらをご覧ください。
FIRST
最初に。
Grabberっていうのは、ロボットの前に付いてるここの部分です。
ここでボールとか板を扱います。
前の方の灰色とか後ろの方の緑とかのローラーを回してボールを回収&発射します。
実は板には真ん中に穴が空いているのですが、そこに手前の白い棒をはめて鉤爪みたいなのを広げて回収します。
このクラスに必要なこと
・直径33cmのボールを回収し、保持、任意のタイミングで発射できる
・板を取ったりつけたりできる
・アーム(上の操作を行う機構)をしまえる
⇒ルール的に最初は閉まっていなければならない&ボールを発射するときに邪魔
変数
VictorSP rollerMotor
ボールを回収するためのローラー。一つのモーターで全部動くようになってる。
Solenoid barSolenoid
Solenoid armSolenoid
アームをしまうためのもの
boolean is_RollerMoving
ローラーが回っているか。あまり使い所は...
boolean is_retractingArm
アームがしまわれているか。あまり使い所は...
関数一覧
引数のモーター、ソレノイドをクラスのフィールドに渡す。Grabber()
引数...
・VictorSP rollerMotor
・Solenoid barSolenoid
・Solenoid armSolenoid
Stateから情報を受け取りモーター、ソレノイドに代入する。public void applyState()
引数...
・Statestate
ボールを回収する。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とかに比べるとかなり簡単だった。
では。