Skip to content

Commit d7db4c9

Browse files
committed
加入 DriveOrderBuilder ,并加入 DriveOrderPackage , 同时对其进行优化
1 parent 07b5af6 commit d7db4c9

File tree

9 files changed

+100
-20
lines changed

9 files changed

+100
-20
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.firstinspires.ftc.teamcode.DriveControls.Actions;
2+
3+
import java.util.LinkedList;
4+
5+
public class DriveActionPackage {
6+
public LinkedList<DriveAction> actions;
7+
8+
DriveActionPackage(){
9+
actions=new LinkedList<>();
10+
}
11+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.firstinspires.ftc.teamcode.DriveControls.Actions;
2+
3+
import androidx.annotation.NonNull;
4+
5+
import org.firstinspires.ftc.teamcode.DriveControls.DriverProgram;
6+
import org.firstinspires.ftc.teamcode.DriveControls.SimpleMecanumDrive;
7+
8+
public class DrivingActionsBuilder {
9+
private final DriveActionPackage actionPackage;
10+
private final DriverProgram drive;
11+
private DriveAction cache;
12+
13+
public DrivingActionsBuilder(@NonNull SimpleMecanumDrive drive) {
14+
actionPackage = new DriveActionPackage();
15+
actionPackage.actions.add(new DriveAction(drive.classic, drive.BufPower, drive.poseHistory.getLast()));
16+
this.drive = drive;
17+
}
18+
DrivingActionsBuilder(DriverProgram drive, DriveActionPackage actionPackage) {
19+
this.actionPackage = actionPackage;
20+
this.drive = drive;
21+
}
22+
23+
}

TeamCode/src/main/java/org/firstinspires/ftc/teamcode/DriveControls/Commands/DriveCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void runCommand() {
3333
*/
3434
public TrajectoryType trajectoryType = null;
3535

36-
DriveCommand(final Classic classic, double BufPower, Pose2d pose) {
36+
public DriveCommand(final Classic classic, double BufPower, Pose2d pose) {
3737
this.BufPower = BufPower;
3838
this.pose = pose;
3939
this.classic = classic;
Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,38 @@
11
package org.firstinspires.ftc.teamcode.DriveControls.Commands;
22

3+
import org.firstinspires.ftc.teamcode.DriveControls.DriveOrder;
4+
import org.firstinspires.ftc.teamcode.DriveControls.DriveOrderPackage;
5+
36
import java.util.LinkedList;
47

58
/**
69
* 为了方便存储,查询
710
*/
8-
public class DriveCommandPackage {
11+
public class DriveCommandPackage implements DriveOrderPackage {
912
public LinkedList<DriveCommand> commands;
1013

11-
DriveCommandPackage() {
14+
public DriveCommandPackage() {
1215
commands = new LinkedList<>();
1316
}
17+
18+
@Override
19+
public LinkedList<DriveOrder> getOrder() {
20+
LinkedList<DriveOrder> res=new LinkedList<>();
21+
for (DriveOrder order : commands) {
22+
res.push(order);
23+
}
24+
return res;
25+
}
26+
27+
@Override
28+
public void setOrder(LinkedList<DriveOrder> val) {
29+
if(val != null) {
30+
commands=new LinkedList<>();
31+
for (DriveOrder order : val) {
32+
commands.push((DriveCommand) order);
33+
}
34+
}else{
35+
throw new NullPointerException();
36+
}
37+
}
1438
}
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@
99
import org.firstinspires.ftc.teamcode.utils.Enums.TrajectoryType;
1010
import org.firstinspires.ftc.teamcode.utils.Mathematics;
1111

12-
public class drivingCommandsBuilder {
12+
public class DrivingCommandsBuilder {
1313
private final DriveCommandPackage commandPackage;
1414
private final DriverProgram drive;
1515
private DriveCommand cache;
1616

17-
public drivingCommandsBuilder(@NonNull SimpleMecanumDrive drive) {
17+
public DrivingCommandsBuilder(@NonNull SimpleMecanumDrive drive) {
1818
commandPackage = new DriveCommandPackage();
1919
commandPackage.commands.add(new DriveCommand(drive.classic, drive.BufPower, drive.poseHistory.getLast()));
2020
this.drive = drive;
2121
}
2222

23-
drivingCommandsBuilder(DriverProgram drive, DriveCommandPackage commandPackage) {
23+
DrivingCommandsBuilder(DriverProgram drive, DriveCommandPackage commandPackage) {
2424
this.commandPackage = commandPackage;
2525
this.drive = drive;
2626
}
@@ -30,35 +30,35 @@ public drivingCommandsBuilder(@NonNull SimpleMecanumDrive drive) {
3030
*
3131
* @param power 目标设置的电机BufPower
3232
*/
33-
public drivingCommandsBuilder SetPower(double power) {
33+
public DrivingCommandsBuilder SetPower(double power) {
3434
power = Mathematics.intervalClip(power, -1f, 1f);
3535
cache = new DriveCommand(drive.getClassic(), commandPackage.commands.getLast().BufPower, commandPackage.commands.getLast().NEXT());
3636
cache.SetPower(power);
3737
cache.trajectoryType = TrajectoryType.WithoutChangingPosition;
3838
commandPackage.commands.add(cache);
39-
return new drivingCommandsBuilder(drive, commandPackage);
39+
return new DrivingCommandsBuilder(drive, commandPackage);
4040
}
4141

4242
/**
4343
* 在该节点让机器旋转指定弧度
4444
*
4545
* @param radians 要转的弧度[-PI,PI)
4646
*/
47-
public drivingCommandsBuilder TurnRadians(double radians) {
47+
public DrivingCommandsBuilder TurnRadians(double radians) {
4848
radians = Mathematics.intervalClip(radians, -Math.PI, Math.PI);
4949
cache = new DriveCommand(drive.getClassic(), commandPackage.commands.getLast().BufPower, commandPackage.commands.getLast().NEXT());
5050
cache.Turn(radians);
5151
cache.trajectoryType = TrajectoryType.TurnOnly;
5252
commandPackage.commands.add(cache);
53-
return new drivingCommandsBuilder(drive, commandPackage);
53+
return new DrivingCommandsBuilder(drive, commandPackage);
5454
}
5555

5656
/**
5757
* 在该节点让机器旋转指定角度
5858
*
5959
* @param deg 要转的角度[-180,180)
6060
*/
61-
public drivingCommandsBuilder TurnAngle(double deg) {
61+
public DrivingCommandsBuilder TurnAngle(double deg) {
6262
return TurnRadians(Math.toRadians(deg));
6363
}
6464

@@ -68,25 +68,25 @@ public drivingCommandsBuilder TurnAngle(double deg) {
6868
* @param radians 相较于机器的正方向,目标点位的度数(注意不是相较于当前机器方向,而是坐标系定义时给出的机器正方向)
6969
* @param distance 要行驶的距离
7070
*/
71-
public drivingCommandsBuilder StrafeInDistance(double radians, double distance) {
71+
public DrivingCommandsBuilder StrafeInDistance(double radians, double distance) {
7272
cache = new DriveCommand(drive.getClassic(), commandPackage.commands.getLast().BufPower, commandPackage.commands.getLast().NEXT());
7373
cache.StrafeInDistance(radians, distance);
7474
cache.trajectoryType = TrajectoryType.LinerStrafe;
7575
commandPackage.commands.add(cache);
76-
return new drivingCommandsBuilder(drive, commandPackage);
76+
return new DrivingCommandsBuilder(drive, commandPackage);
7777
}
7878

7979
/**
8080
* 在该节点让机器在不旋转的情况下平移
8181
*
8282
* @param pose 目标矢量点位
8383
*/
84-
public drivingCommandsBuilder StrafeTo(Vector2d pose) {
84+
public DrivingCommandsBuilder StrafeTo(Vector2d pose) {
8585
cache = new DriveCommand(drive.getClassic(), commandPackage.commands.getLast().BufPower, commandPackage.commands.getLast().NEXT());
8686
cache.StrafeTo(pose);
8787
cache.trajectoryType = TrajectoryType.LinerStrafe;
8888
commandPackage.commands.add(cache);
89-
return new drivingCommandsBuilder(drive, commandPackage);
89+
return new DrivingCommandsBuilder(drive, commandPackage);
9090
}
9191

9292
/**
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.firstinspires.ftc.teamcode.DriveControls;
2+
3+
import com.acmerobotics.roadrunner.Vector2d;
4+
5+
import org.firstinspires.ftc.teamcode.DriveControls.Commands.DriveCommandPackage;
6+
7+
public interface DriveOrderBuilder {
8+
DriveOrderBuilder SetPower(double power);
9+
DriveOrderBuilder TurnRadians(double radians);
10+
DriveOrderBuilder TurnAngle(double deg);
11+
DriveOrderBuilder StrafeInDistance(double radians, double distance);
12+
DriveOrderBuilder StrafeTo(Vector2d pose);
13+
DriveCommandPackage END();
14+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.firstinspires.ftc.teamcode.DriveControls;
2+
3+
import java.util.LinkedList;
4+
5+
public interface DriveOrderPackage {
6+
LinkedList<DriveOrder> getOrder();
7+
void setOrder(LinkedList<DriveOrder> val);
8+
}

TeamCode/src/main/java/org/firstinspires/ftc/teamcode/DriveControls/SimpleMecanumDrive.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import org.firstinspires.ftc.teamcode.DriveControls.Commands.DriveCommand;
1313
import org.firstinspires.ftc.teamcode.DriveControls.Commands.DriveCommandPackage;
14-
import org.firstinspires.ftc.teamcode.DriveControls.Commands.drivingCommandsBuilder;
14+
import org.firstinspires.ftc.teamcode.DriveControls.Commands.DrivingCommandsBuilder;
1515
import org.firstinspires.ftc.teamcode.DriveControls.Localizers.DeadWheelSubassemblyLocalizer;
1616
import org.firstinspires.ftc.teamcode.DriveControls.Localizers.definition.Localizer;
1717
import org.firstinspires.ftc.teamcode.Hardwares.Classic;
@@ -208,8 +208,8 @@ private Pose2d getAimPositionThroughTrajectory(@NonNull DriveCommand driveComman
208208
/**
209209
* @return 定义开启新的drivingCommandsBuilder
210210
*/
211-
public drivingCommandsBuilder drivingCommandsBuilder(){
212-
return new drivingCommandsBuilder(this);
211+
public DrivingCommandsBuilder drivingCommandsBuilder(){
212+
return new DrivingCommandsBuilder(this);
213213
}
214214

215215
@Override

TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Robot.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import org.firstinspires.ftc.robotcore.external.Telemetry;
1515
import org.firstinspires.ftc.teamcode.DriveControls.SimpleMecanumDrive;
16-
import org.firstinspires.ftc.teamcode.DriveControls.Commands.drivingCommandsBuilder;
16+
import org.firstinspires.ftc.teamcode.DriveControls.Commands.DrivingCommandsBuilder;
1717
import org.firstinspires.ftc.teamcode.Hardwares.Classic;
1818
import org.firstinspires.ftc.teamcode.Hardwares.Structure;
1919
import org.firstinspires.ftc.teamcode.Hardwares.Webcam;
@@ -132,7 +132,7 @@ public void operateThroughGamePad(Gamepad gamepad1,Gamepad gamepad2){
132132
classic.operateThroughGamePad(gamepad1);
133133
structure.operateThroughGamePad(gamepad2);
134134
}
135-
public drivingCommandsBuilder drivingCommandsBuilder(){
135+
public DrivingCommandsBuilder drivingCommandsBuilder(){
136136
return drive.drivingCommandsBuilder();
137137
}
138138

0 commit comments

Comments
 (0)