/NI-Skeleton-2023

Code template in NI

Primary LanguageJava

NI-Skeleton

Next-Innovation standard-readme compliant Lang

NI-Skeleton 是 NI 电控组在旧代码模板的基础上,为团队 8214 与 8583 的代码开发而特别整理的代码模板。此模板由 Java 开发并基于 WPILib's Java Control System

本 Readme 包含NI代码模板的主要设计思路,以及各个 Package 与重点 Class 的相关介绍。

使用流程

  1. clone 该仓库。
  2. 使用 IntelliJ Idea 打开仓库( 必须至少安装 FRC 插件 )。
  3. 执行 Build Robot 以验证项目配置是否成功。
  4. 开始开发。

主要改进

  • IterativeRobotBaseTimedRobot被部分重写,取消了loop time overrun的报错。
  • disabledLooper被取消。
  • BaseSubsystem内加入了计时功能,每个Subsystem将自动计算自己单次Loop的耗时。
  • 从现在开始,每个Looper的频率都可以自定义。
  • 曾经位于Robot级下的一些基类和执行器类被挪入Lib,以增强其可复用性。
  • AutoModeChooserAutoModeExecuter被修改为单例。
  • AutoModeChooserSelectedMode开始支持动态刷新。
  • 原始的编程模板被简化,现在每一个具体的subsystemSubsystemSubsystemStateSubsystemConfig组成,后两者视实际情况可选。
  • Subsystem针对不同State的控制逻辑被挪入Subsystem内部实现,目的是减少嵌套和重入次数,并提高类的线程安全性。
  • Vision被作为Subsystem进行了重写。
  • 曾经的Constants.java被重命名为Config.java,并拆分到了具体的subsystem,现在Config.java只存储Robot级的数据。
  • 场地数据被挪入到了Field.java
  • ControlFlagManager重命名为ControlSignalManager,加入SlewRateLimiter以顺滑Swerve的驾驶。
  • TrajectoryGenerator更改为静态类,其中的TrajectorySet被单独提出为一个新的类。
  • TrajectoryGenerator现在开始将只支持使用五阶赫米特曲线进行路径生成。
  • TimingUtil的接口改进,MAX_DECELDEFAULT_VELSLOWDOWN_CHUNKS被取消。
  • SwerveDriveModule中引入了CarpetScrubFactor,以改善轮氏里程计的精度。
  • SwerveInverseKinematics重写,从现在开始将只支持常量数据的运算,并将针对SwerveDriveModuel的最大平移速度进行约束。

Package 与 Class 的介绍