外观
操作模式概念解析(OpMode Concepts)
OpMode(Operation Mode 操作模式)是 FTC 机器人编程中的核心概念,它定义了机器人在比赛中的行为方式。
OpMode 基本概念
OpMode 是一个 Java 类,用于编写机器人的控制程序。它可以被看作是机器人的"大脑",定义了机器人在比赛中如何响应驾驶员的输入或自动执行任务。每个 OpMode 都代表一种特定的机器人行为模式,比如遥控驾驶或自动执行任务。
OpMode 类型
FTC 支持两种主要类型的 OpMode:
遥控操作模式(TeleOp / Teleoperation):
- 由驾驶员通过游戏手柄控制机器人
- 使用
@TeleOp注解标记 - 在比赛的遥控阶段使用
自动操作模式(Autonomous):
- 机器人自主执行预编程的指令
- 使用
@Autonomous注解标记 - 在比赛的自动阶段使用
OpMode 实现方式
FTC SDK 提供了两种实现 OpMode 的基类:
LinearOpMode:
- 代码按顺序线性执行
- 使用
waitForStart()方法等待开始 - 使用
while(opModeIsActive())循环保持运行 - 更直观,适合初学者
迭代式 OpMode(Iterative OpMode):
- 基于事件和回调的模型
- 实现
init(),init_loop(),start(),loop(),stop()等方法 - 每个方法在特定时刻被系统调用
- 更高级,适合复杂的状态机实现
OpMode 生命周期
LinearOpMode 生命周期:
- 实例化 OpMode
- 执行
runOpMode()方法 - 在
waitForStart()处暂停,等待驾驶员按下开始按钮 - 开始执行主要代码
- 在
while(opModeIsActive())循环中持续执行,直到驾驶员按下停止按钮
迭代式 OpMode 生命周期:
- 实例化 OpMode
- 调用
init()方法(初始化) - 重复调用
init_loop()直到驾驶员按下开始按钮 - 调用
start()方法 - 重复调用
loop()方法直到驾驶员按下停止按钮 - 调用
stop()方法
OpMode 注册
要使 OpMode 出现在驾驶站的选择列表中,必须对其进行注册:
java
@TeleOp(name="我的遥控模式", group="比赛")
public class MyTeleOpMode extends LinearOpMode {
// 实现代码...
}
@Autonomous(name="我的自动模式", group="红方")
public class MyAutonomousMode extends LinearOpMode {
// 实现代码...
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
如果不想某个 OpMode 出现在列表中(比如仍在开发中),可以添加@Disabled注解:
java
@TeleOp(name="测试模式", group="测试")
@Disabled
public class TestOpMode extends LinearOpMode {
// 测试代码...
}1
2
3
4
5
2
3
4
5
OpMode 访问硬件
OpMode 可以通过hardwareMap对象访问机器人的硬件组件:
java
// 获取左右驱动电机
DcMotor leftDrive = hardwareMap.get(DcMotor.class, "left_drive");
DcMotor rightDrive = hardwareMap.get(DcMotor.class, "right_drive");
// 设置电机方向
leftDrive.setDirection(DcMotor.Direction.REVERSE);
rightDrive.setDirection(DcMotor.Direction.FORWARD);
// 控制电机
leftDrive.setPower(0.5);
rightDrive.setPower(0.5);1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
总结
OpMode 是 FTC 编程的基础概念,它定义了机器人的行为模式。通过创建和注册 OpMode,团队可以定义机器人在比赛中的遥控和自动行为。选择合适的 OpMode 类型(LinearOpMode 或迭代式 OpMode)取决于任务复杂性和编程偏好。
