添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

自定义频率的调度功能

TimedRobot的addPeriodic()方法允许用户以比默认TimedRobot定期更新速率(20毫秒)更快的速度运行自定义方法。 以前,团队必须制作一个通告程序,以比20毫秒的TimedRobot循环周期(不建议这样做更频繁地运行TimedRobot)更频繁地运行反馈控制器。 现在,用户可以比主机器人循环更频繁地运行反馈控制器,但可以与TimedRobot周期性功能同步运行,从而消除了潜在的线程安全问题。

addPeriodic() (Java)/ AddPeriodic()(C ++)方法采用lambda(运行功能),要求时间段以及对一个一般开始时间的可选偏移量。相对于其他TimedRobot周期性方法,可选的第三个参数对于在不同的时隙中调度函数很有用。

在Java中,时间段和偏移量的单位是秒。 在C ++中,单位库可用于指定任何时间单位的时间段和偏移量。

public class Robot extends TimedRobot {
    private Joystick m_joystick = new Joystick(0);
    private Encoder m_encoder = new Encoder(1, 2);
    private Spark m_motor = new Spark(1);
    private PIDController m_controller = new PIDController(1.0, 0.0, 0.5, 0.01);
    public Robot() {
        addPeriodic(() -> {
            m_motor.set(m_controller.calculate(m_encoder.getRate()));
        }, 0.01, 0.005);
    @Override
    public teleopPeriodic() {
        if (m_joystick.getRawButtonPressed(1)) {
            if (m_controller.getSetpoint() == 0.0) {
                m_controller.setSetpoint(30.0);
            } else {
                m_controller.setSetpoint(0.0);
  frc::Joystick m_joystick{0};
  frc::Encoder m_encoder{1, 2};
  frc::Spark m_motor{1};
  frc::PIDController m_controller{1.0, 0.0, 0.5, 10_ms};
  Robot();
  void TeleopPeriodic() override;
void Robot::Robot() {
  AddPeriodic([&] {
    m_motor.Set(m_controller.Calculate(m_encoder.GetRate()));
  }, 10_ms, 5_ms);
void Robot::TeleopPeriodic() {
  if (m_joystick.GetRawButtonPressed(1)) {
    if (m_controller.GetSetpoint() == 0.0) {
      m_controller.SetSetpoint(30.0);
    } else {
      m_controller.SetSetpoint(0.0);
      版本 3f3f0d3e.
  利用 Sphinx 构建,使用的 
    由 Read the Docs 开发.