news 2026/10/1 8:42:49

MaaNTE在线地图实时定位寻路:Navi WebSocket如何同步位置坐标与自动规划路线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MaaNTE在线地图实时定位寻路:Navi WebSocket如何同步位置坐标与自动规划路线

MaaNTE在线地图实时定位寻路:Navi WebSocket如何同步位置坐标与自动规划路线

【免费下载链接】MaaNTEMaaNTE. Nevertheless to Everless automatic assistant 异环小助手项目地址: https://gitcode.com/gh_mirrors/maa/MaaNTE

MaaNTE 是面向《异环》的免费开源自动助手(Nevertheless to Everless automatic assistant),其 Navi 导航模块通过Navi WebSocket把游戏内的实时位置坐标同步到在线地图,并支持从网页端下发路径点、自动规划路线逐个到达——一套双向通道搞定"我在哪、往哪走"两件事 🗺️。

工作原理:一个组合 Action 完成定位 + 寻路

在线地图导航由名为online_map_navigation的自定义 action 驱动,它在同一个截图循环中连续完成三件事:

  1. NCC 视觉定位:用游戏画面在异环全图(11264×11264 底图,如上所示)上做模板匹配,算出世界坐标;
  2. 方向预测:预测角色朝向角度,用于在线地图上绘制朝向;
  3. 路径寻路:收到网页端下发的路径点后,操控角色依序移动,到达一个点再前往下一个点。

由于 Maa 同时只能运行一个 action,实时定位和路径寻路就合并在这一个组合 action 里,由 route_websocket_service.py 把两者粘合成一个 WebSocket 双向通道。核心源码都在 agent/custom/action/Navi/ 目录下:

  • online_map_navigation_action.py — action 入口,读取配置并启动服务
  • navigation_server.py — WebSocket 服务端,负责状态广播与消息接收
  • route_runner.py — 按顺序执行可变路线会话中的路径点
  • map_locator.py / angle_predictor.py — 视觉定位与方向预测
  • waypoint_navigator.py / nte_coordinate_api.py — 路径点导航与坐标接口

快速上手:三步启用在线地图导航

第 1 步 · 找到任务入口

在线地图导航的 Pipeline 入口位于 OnlineMapNavigation.json,任务设置位于 OnlineMapNavigation.json,在 MaaNTE 任务列表中找到并启用即可。

第 2 步 · 配置参数

任务设置支持覆盖端口、采样间隔、到达容差、定位方式和调试模式:

参数默认值说明
port14514WebSocket 监听端口
tolerance5到达路径点的判定容差
frame_interval0.1采样间隔(秒),最低0.05
position_backendauto定位方式:auto/coordinate/map
angle_backendauto方向推理后端:auto/cpu/directml
debugfalse调试模式

第 3 步 · 连接在线地图客户端

服务固定监听0.0.0.0,网页端或自写客户端连接本机地址即可:

ws://127.0.0.1:14514

连上后页面会自动重连;即使没有下发任何路径点,任务也会持续广播实时定位状态,在线地图上就能看到角色位置实时跳动。

实时定位消息解析:navi-state 长什么样

服务端每帧都会向所有已连接客户端广播一条navi-state状态消息,格式如下(摘自 NaviWebSocket.md):

{ "type": "navi-state", "version": 1, "position": { "x": -134394.56, "y": 199913.53, "z": 11416.17, "pixelX": 4090, "pixelY": 6750, "sourceWidth": 11264, "sourceHeight": 11264, "score": 1.0, "mode": "coordinate" }, "angle": 123.4, "angleConfidence": 0.96, "timestamp": 1770000000.0 }

几个关键字段的含义:

  • position.x / y / z:游戏原始世界坐标。网络定位直接发送x、y、z;视觉定位通过标定变换逆算,只发送x、y;
  • pixelX / pixelY:定位点在全图底图上的像素位置(配合sourceWidth / sourceHeight使用),兼容旧版网页,新客户端应优先用原始坐标字段;
  • mode:定位来源模式。网络坐标暂时中断时保留最后一次坐标,mode变为coordinate_stale;完全没有可转换位置时position为null;
  • angle / angleConfidence:角色朝向及置信度,未识别时angle为null;
  • score:视觉定位的匹配得分,越高越可靠。

自动规划路线:把路径点"发"给 MaaNTE

Navi WebSocket 是双向的:除了广播状态,服务端还会接收在线地图工具发送的路径点消息。收到后,RouteRunner会在 route_runner.py 中依序处理:

取出当前路径点 → 调用navigator.move_to(target)操控角色前往 → 到达后自动推进到下一个路径点,直到全部走完(状态变为arrived)。

客户端还能在navi-state消息的route字段中实时看到寻路进度:

"route": { "waypoints": [], "active": false, "currentIndex": 0, "status": "idle" }
  • active:是否有正在执行的路线;
  • currentIndex:当前正在前往的第几个路径点;
  • status:路线状态,如idle(空闲)、arrived(已到达)、cleared、empty、stopped。

消息解析逻辑集中在 route_model.py 的handle_route_message中,路径点集合支持随时增删——路线是"可变会话",改完立刻生效,无需重启任务 🔄。

常见问题排查

现象原因与解决
网页连不上 WebSocket确认 MaaNTE 中已启用在线地图导航任务;服务端启动失败时会写入日志,可打开debug排查端口占用
地图上不显示位置检查position_backend:coordinate依赖网络坐标,map依赖视觉定位;建议保持auto自动切换
定位偶尔"卡住不动"mode为coordinate_stale时是网络坐标短暂中断,服务端保留最后一次坐标继续发送,属正常现象
方向箭头乱转尝试在任务设置中把angle_backend从auto改为cpu或directml

更多细节可查阅官方文档 NaviWebSocket.md 与 本地路径导航说明。

小结

MaaNTE 的 Navi 模块用一条ws://127.0.0.1:14514的双向 WebSocket,把"实时定位、方向预测、路径寻路"整合进同一个截图循环:向下广播navi-state让在线地图实时显示角色位置与朝向,向上接收路径点让角色自动规划路线并逐个到达 🎯。对于想在地图上"指哪走哪"的玩家,这是目前最直接的接入方式。

【免费下载链接】MaaNTEMaaNTE. Nevertheless to Everless automatic assistant 异环小助手项目地址: https://gitcode.com/gh_mirrors/maa/MaaNTE

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 8:42:34

【裸机程序】imx 6ULL串口接收信号控制LED灯

一、创作灵感学习完串口之后,为了和之前学习的led灯的例子穿起来,我设计了一个超级简单的串口接受信号控制led灯的例子。毕竟学习新知识,多动手是王道。二、LED灯的GPIO口的初始化 这个例子中GPIO1 的IO03与LED灯相连。在恩智浦提供的库当中&…

作者头像 李华
网站建设 2026/10/1 8:38:31

内容GEO优化与品牌词GEO优化:综合实力服务商用户力荐

当采购负责人习惯把第一句提问抛给豆包、DeepSeek、Kimi,而不是传统搜索框时,制造业企业的获客入口已经悄然迁移。工业撕碎机、食品机械、AGV搬运车、精密仪器、环保设备等细分行业的采购决策,正在AI对话框里完成第一轮筛选:能否被…

作者头像 李华
网站建设 2026/10/1 8:37:59

ThingsBoard服务部署

版本信息:thingsboard release-4.3java 17PostgreSQL 15.19启动命令mvn clean install -DskipTests启动服务往往会卡在ui-ngx模块,因为模块打包时需要外网下载node二进制文件,国内访问外网经常会超时;node二进制文件的放置路径&am…

作者头像 李华