Skip to content
On this page

算法模块 AI 规范

本文档用于 AI 生成 Lua 算法控制代码。参数规则已按运行时代码 HexLuaAPI_Algorithm.hpp 校对。

基础规则

  • 所有控制器对象必须先创建,再用冒号调用成员方法。
  • 所有数值参数都按 number 生成,不要传字符串。
  • Updata 是运行时实际方法名,不要改成 Update
  • Count 方法通常每轮循环调用一次,输入当前误差,返回控制输出。
  • Reset 用于清空内部状态,切换目标或重新开始控制时调用。

函数速查

功能创建/调用返回值
平滑移动Smooth_function(rel_x)number
增量 PIDIncrementalPID()PID 对象
限幅 PIDPID_limit(kp, ki, kd, limit)PID 对象
前馈增量 PIDFeedForwardIncrementalPID(kp, ki, kd, reaction_time, feedforward_gain)PID 对象
ADRCADRC_X(w0, b0, w_n, sigma, time_delta)ADRC 对象

IncrementalPID

lua
local pid = IncrementalPID()
pid:IncrementalPID_Updata(0.3, 0.01, 0.05)

local output = pid:IncrementalPID_Count(error)
pid:IncrementalPID_Reset()

参数:

  • IncrementalPID_Updata(Kp, Ki, Kd):三个 number
  • IncrementalPID_Count(error)error 为当前误差,number

PID_limit

lua
local pid = PID_limit(0.3, 0.01, 0.05, 20)
local output = pid:PID_limit_Count(error)

参数:

  • kp, ki, kd:PID 参数,number
  • limit:输出限幅,number
  • PID_limit_Updata(Kp, Ki, Kd):重新设置 PID 参数。
  • PID_limit_Reset():重置内部状态。

FeedForwardIncrementalPID

lua
local pid = FeedForwardIncrementalPID(0.3, 0.01, 0.05, 0.02, 1.0)
local output = pid:FeedForwardIncrementalPID_Count(error)

参数:

  • kp, ki, kd:PID 参数。
  • reaction_time:反应时间。
  • feedforward_gain:前馈增益。

ADRC_X

lua
local adrc = ADRC_X(0.001, 2, 1, 0.01, 0.001)
local output = adrc:ADRC_X_Count(y, yref)

参数:

  • w0:自然频率。
  • b0:阻尼系数。
  • w_n:自然频率。
  • sigma:阻尼比。
  • time_delta:时间步长。
  • ADRC_X_Count(y, yref)y 为当前值,yref 为目标值。

运动预测函数

运行时还注册了预测辅助函数:

lua
resetPred()
setRecordMoveX(value)
setAvgDetectTime(value)
updatePred(...)
setDynamicPrediction(enabled)
setPredictThreshold(value)

这些函数用于内部运动预测调参。AI 只有在用户明确要求预测逻辑时才生成。

AI 生成禁忌

  • 不要写 pid.Update(...),必须写 pid:IncrementalPID_Updata(...) 等真实方法名。
  • 不要把控制器对象当普通表访问内部字段。
  • 不要在高频循环里重复创建 PID/ADRC 对象,应在循环外创建。
  • 不要省略 Reset 场景说明;目标突变或模式切换时建议重置。