Appearance
AI智能轨迹
项目文件与模型下载
lua
-- 常量
local MAX_POINTS = 500
local FPS = 60
local TARGET_RADIUS = 15
local WIDTH_AIM = 800
local HEIGHT_AIM = 600
StartMJPEGServer()
-- 随机整数函数
local function randi(lo, hi)
return math.random(lo, hi)
end
print("运行成功后点右上角预览功能,选择一个预览方式即可看到效果")
-- 1. 初始化 AI 预测器
local ai = TrajectoryPredictor_B("D6ADE61C_20250906_214559.hmm",640,0)
-- 2. 初始位置和目标
local curr_x, curr_y = 100.0, 100.0
local tgt_x, tgt_y = 600.0, 400.0
-- 轨迹记录
local trail = {}
table.insert(trail, {x=curr_x, y=curr_y})
-- 创建画布
local canvas = createBlank(WIDTH_AIM, HEIGHT_AIM, 0, 0, 0)
while true do
-- 计算与目标的偏移
local dx_t = tgt_x - curr_x
local dy_t = tgt_y - curr_y
local dist = math.sqrt(dx_t*dx_t + dy_t*dy_t)
local vx, vy = 0.0, 0.0
if dist < 10.0 then
-- 到达目标 -> 产生新目标
tgt_x = randi(50, WIDTH_AIM - 50)
tgt_y = randi(50, HEIGHT_AIM - 50)
else
-- 进行轨迹推理
local dx_step, dy_step = ai:Predict(dx_t, dy_t)
vx = dx_step
vy = dy_step
end
curr_x = curr_x + vx
curr_y = curr_y + vy
-- 记录轨迹
table.insert(trail, {x=curr_x, y=curr_y})
if #trail > MAX_POINTS then
table.remove(trail, 1)
end
-- 绘制
canvas = createBlank(WIDTH_AIM, HEIGHT_AIM, 0, 0, 0)
-- 目标(红色)
drawCircle(canvas, math.floor(tgt_x), math.floor(tgt_y),
TARGET_RADIUS, 0, 0, 255, -1)
-- 轨迹(绿色)
for _, p in ipairs(trail) do
drawCircle(canvas, math.floor(p.x), math.floor(p.y), 2, 0,255,0, -1)
end
-- 当前点(蓝色)
drawCircle(canvas, math.floor(curr_x), math.floor(curr_y), 5, 255, 0, 0, -1)
-- 推送处理后的图片到前端
StreamPushFrame(canvas)
-- FPS帧率控制器
sleep((1000 / FPS) / 1000)
end