Skip to content

操作模式概念解析(OpMode Concepts)​

约 793 个字 25 行代码 预计阅读时间 3 分钟

OpMode(Operation Mode 操作模式)是 FTC 机器人编程中的核心概念,它定义了机器人在比赛中的行为方式。

OpMode 基本概念​

OpMode 是一个 Java 类,用于编写机器人的控制程序。它可以被看作是机器人的"大脑",定义了机器人在比赛中如何响应驾驶员的输入或自动执行任务。每个 OpMode 都代表一种特定的机器人行为模式,比如遥控驾驶或自动执行任务。

OpMode 类型​

FTC 支持两种主要类型的 OpMode:

  • 遥控操作模式(TeleOp / Teleoperation):由驾驶员通过游戏手柄控制机器人使用@TeleOp注解标记在比赛的遥控阶段使用

遥控操作模式(TeleOp / Teleoperation):

  • 由驾驶员通过游戏手柄控制机器人

  • 使用@TeleOp注解标记

  • 在比赛的遥控阶段使用

  • 自动操作模式(Autonomous):机器人自主执行预编程的指令使用@Autonomous注解标记在比赛的自动阶段使用

自动操作模式(Autonomous):

  • 机器人自主执行预编程的指令

  • 使用@Autonomous注解标记

  • 在比赛的自动阶段使用

OpMode 实现方式​

FTC SDK 提供了两种实现 OpMode 的基类:

  • LinearOpMode:代码按顺序线性执行使用waitForStart()方法等待开始使用while(opModeIsActive())循环保持运行更直观,适合初学者

LinearOpMode:

  • 代码按顺序线性执行

  • 使用waitForStart()方法等待开始

  • 使用while(opModeIsActive())循环保持运行

  • 更直观,适合初学者

  • 迭代式 OpMode(Iterative OpMode):基于事件和回调的模型实现init(),init_loop(),start(),loop(),stop()等方法每个方法在特定时刻被系统调用更高级,适合复杂的状态机实现

迭代式 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 出现在驾驶站的选择列表中,必须对其进行注册:

@TeleOp(name="我的遥控模式", group="比赛")
public class MyTeleOpMode extends LinearOpMode {
    // 实现代码...
}

@Autonomous(name="我的自动模式", group="红方")
public class MyAutonomousMode extends LinearOpMode {
    // 实现代码...
}

如果不想某个 OpMode 出现在列表中(比如仍在开发中),可以添加@Disabled注解:

@TeleOp(name="测试模式", group="测试")
@Disabled
public class TestOpMode extends LinearOpMode {
    // 测试代码...
}

OpMode 访问硬件​

OpMode 可以通过hardwareMap对象访问机器人的硬件组件:

// 获取左右驱动电机
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);

总结​

OpMode 是 FTC 编程的基础概念,它定义了机器人的行为模式。通过创建和注册 OpMode,团队可以定义机器人在比赛中的遥控和自动行为。选择合适的 OpMode 类型(LinearOpMode 或迭代式 OpMode)取决于任务复杂性和编程偏好。

颜色主题调整