subsystem:子系统
概要
路径:
Teamcode/java/org.firsinspires.ftc.teamcode/common/subsystem
我们开设了subsystem文件,将机器除了运动模块之外所分装的函数规整在一起,包括机械臂、爪子等等。通过开设这样的一个文件,可以使代码更具有逻辑性与可读性,也方便进行调用。
详细介绍
首先,我们在Subsystem文件中,新建一个子文件,并给他取一个生动形象的名字,再在其中导入一些需要用到的库;在其中Subsystem子文件中加入结构的名称。以机械臂arm为例:
public class Subsystem {
public Arm arm;
public final Robot robot;
public Subsystem(Robot robot) {
this.robot = robot;
this.arm = new Arm(robot);
}
}
其次,回到新建的文件之中,对于涉及该部分的电机进行定义、命名、以及初步的设置:
private final Robot robot;
private DcMotorEx armmotor;
public Arm(Robot robot) {
this.robot = robot;
armmotor = robot.hardwareMap.get(DcMotorEx.class, "armmotor");
//通过hardwareMap,可根据机器人配置时关联的相应物理设备名称,检索运行时的 HardwareDevice 实例。
armmotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
//RUN_WITHOUT_ENCODERS 表示电机不使用编码器,而是用给定的速度和时间运行。
armmotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
//设置机器在0功率下的状态
}
接下来可以设置各种不同的任务,比如:
public Arm up() {
armmotor.setPower(1);
return this;
}
完整示例代码:
public class Arm {
private final Robot robot;
private DcMotorEx armmotor;
public Arm(Robot robot) {
this.robot = robot;
armmotor = robot.hardwareMap.get(DcMotorEx.class, "armmotor");
armmotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
armmotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
}
public Arm up() {
armmotor.setPower(1);
return this;//支持链式调用
}
}
完成这些代码的编写后,我们就能在各个代码中调用,实现各种功能了。
Last updated