
MaaNTE在线地图方向推理揭秘ONNX指针角度预测模型的训练与实时实现【免费下载链接】MaaNTEMaaNTE. Nevertheless to Everless automatic assistant 异环小助手项目地址: https://gitcode.com/gh_mirrors/maa/MaaNTEMaaNTE 异环小助手Nevertheless to Everless automatic assistant在异环的超大在线地图上实现了角色自动沿路线行走的寻路能力。它的核心是一套指针角度预测 ONNX 模型 PID 闭环转向的实时推理管线每帧从游戏画面中读出角色面朝的罗盘角度再换算成鼠标转向量让角色稳稳走上你指定的路径点。这篇文章将完整揭秘这个角度预测模型从数据录制、训练到实时推理的全流程帮助新手理解自动助手是如何看懂地图方向的。一、方向推理是什么为什么需要角度模型 让角色走到目标点助手每一帧都要回答两个问题我在哪—— 由小地图视觉定位MapLocator或网络抓包坐标coordinate_position.py提供我面朝哪个方向—— 这就是 ONNX 角度预测模型的工作。拿到位置 朝向后寻路就变成了一道简单的几何题计算当前位置到路径点的期望方位角用期望方位角减去当前朝向得到转向角误差把误差乘以像素比例转换成鼠标相对移动量同时按住前进键 W。这套闭环在视觉模式下约每 0.1 秒跑一轮在网络姿态模式下则以 60Hz 控制循环运行详见 waypoint_navigator.py。二、ONNX 指针模型64×64 像素里的方向智慧 ✨角度预测的入口是 angle_predictor.py 中的AnglePredictor类整个推理流程非常轻巧环节说明模型文件运行时从assets/resource/base/model/navi/加载pointer_model.onnx路径由 resource_paths.py 自动定位输入裁剪从整帧截图中截取[73, 60, 64, 64]区域的 64×64 罗盘指针 ROI预处理BGR→RGB、像素归一化到 0~1、HWC→CHW最终得到(1, 3, 64, 64)的 float32 张量模型输出一组候选结果每个候选含 1 个置信度 4 个边界框数值 3 个关键点坐标角度计算取置信度最高的候选从 3 个关键点指针尖端 tip 与尾端 left、right计算atan2(dx, -dy) % 360得到 0~360° 的罗盘朝向角推理后端的选择也很贴心onnxruntime支持 CPU 和 DirectML 两种执行提供器参数angle_backend传auto时会优先检测 DirectML 加速不可用则自动回退 CPU 并给出警告日志见 angle_predictor.py。Session 按后端缓存、加锁复用避免反复加载模型文件还可以通过环境变量MAA_ONNX_BACKEND指定后端。 模型输出里还带有置信度confidence和边界框debugtrue时会在调试窗口里把指针框、指向线、角度值都画出来非常适合新手观察模型看到了什么。三、模型是怎么训练出来的先录数据再喂模型 角度预测模型不是凭空来的——仓库内置了一个自动驾驶式的数据录制器 autonomous_driving_dataset_recorder.py它的训练数据采集思路与自动驾驶高度相似以每秒 2 帧的速度截取 480×270 的游戏画面按 5 帧为一个序列保存并记录操作者当前按下的按键W / A / S / D 及组合作为标签数据默认输出到项目的debug/dataset目录供后续训练使用。简单来说开发者一边手动控制角色旋转视角录制器一边把画面 按键动作成对保存下来。成千上万这样的样本喂给目标检测模型训练后它就学会了在罗盘区域里定位指针的尖端和尾端从而输出朝向角。录制器源码中的按键标签表_KEY_LABELS也清晰展示了画面—动作配对的数据结构。四、实时实现PID 控制器驱动的平滑转向 有了角度如何转得稳waypoint_navigator.py 里实现了专门的AnglePidController这是经典的增量式 PID 控制比例项 kp 0.85误差越大转向越快积分项 ki 0.04累积残差消除静态偏角且带 120° 积分限幅与变号清零防积分饱和微分项 kd 0.10抑制转向过冲避免在目标方向附近来回抖动死区 deadband 4°误差小于 4° 直接归零防止角色原地画圈输出限幅 35°每帧最多转向 35°换算成鼠标移动后每度 10 像素再执行相对鼠标转向。执行策略是边开边看循环里按住 W 前进同时按 PID 输出做相对鼠标转向每轮截图 → 定位 → 推理角度 → 计算误差直到与目标点距离小于容差tolerance默认 5 像素判定到达。值得一提的是网络姿态模式当启用抓包定位nte_coordinate_api.py 的CoordinateCapture支持 pcap 与 pktmon 后端时摄像机朝向角直接从网络数据包的heading字段读取视觉角度模型被完全跳过控制循环升到 60Hz寻路更快也更省电。五、如何使用两个入口 调试技巧 ️在线地图寻路online_map_navigation自定义动作会同时做定位、方向预测与寻路并通过本地 WebSocketws://127.0.0.1:14514接收在线地图前端发来的路径点文档见 NaviWebSocket.md。本地路线寻路local_route_navigation动作按路线 JSON 逐段执行支持 Pipeline 与 Python 类两种调用方式完整参数表见 local-route-navigation.md。常用参数速查参数常用值作用angle_backendauto/directml/cpu角度模型推理后端position_backendauto/map/coordinate位置来源视觉小地图或网络抓包tolerance5到达判定距离像素frame_interval0.1视觉模式截图与推理间隔秒debugtrue打开 OpenCV 调试窗口实时显示角度与置信度遇到问题时优先开debugtrue角度预测调试窗口会显示 NO TARGET指针未识别到还是正常的 Angle/Conf 读数可快速区分是模型、截图还是定位环节的问题推理后端不可用时日志会打印当前可用 providers方便排查 DirectML 环境。六、小结 MaaNTE 的在线地图方向推理是一条工程完成度很高的小而美管线数据侧录制器自动采集画面 操作成对样本训练出指针角度模型模型侧64×64 小输入 关键点回归ONNX Runtime 单帧毫秒级推理CPU/DirectML 自动择优控制侧PID 死区 限幅 积分抗饱和把角度误差变成平滑的鼠标转向工程侧Session 缓存、后端回退、网络姿态旁路视觉推理细节处处为稳定性服务。想深入源码可以从 Navi 目录 入手按angle_predictor.py → waypoint_navigator.py → local_route_navigation.py的顺序读即可完整看懂截图 → 角度 → 转向的每一步。【免费下载链接】MaaNTEMaaNTE. Nevertheless to Everless automatic assistant 异环小助手项目地址: https://gitcode.com/gh_mirrors/maa/MaaNTE创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考