news 2026/7/15 21:56:39

基于 GPASS 与 Rokid 眼镜的 RideGuard 骑行导航 Agent:从自然语言指令到骑行路线决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GPASS 与 Rokid 眼镜的 RideGuard 骑行导航 Agent:从自然语言指令到骑行路线决

摘要

RideGuard 是一款面向 Rokid 智能眼镜的骑行导航 Agent。用户只需说出“导航去橘子洲,尽量走绿道,不要爬坡”,系统即可识别目的地与骑行偏好,自动搜索 POI、提取终点坐标、调用高德骑行路线服务,并从多条候选路线中综合比较距离、预计时间和绿道路段,最终输出适合眼镜端阅读的骑行导航摘要。

本项目基于 GPASS 百宝箱完成 Agent 工作流编排,采用“自然语言理解 + 云端插件调用 + 确定性代码决策 + Rokid 端结果呈现”的技术路线。

关键词:Rokid、GPASS、智能眼镜、骑行导航、Agent、工作流、高德地图、POI、AR 导航


一、项目背景

现有智能眼镜导航通常以固定 HUD 形式显示:

前方左转 距离路口500米 剩余3.2公里

这种方案解决了骑行时频繁低头看手机的问题,但其本质仍是将手机导航信息搬到眼镜屏幕上,缺少对骑行场景的进一步理解。

对于骑行者而言,除了能否到达目的地,还会关注:

  • 是否有绿道或骑行友好道路;
  • 路线距离和预计骑行时间;
  • 是否尽量少爬坡;
  • 是否符合个人的骑行偏好;
  • 是否可以用一句自然语言直接完成路线规划。

因此,本项目尝试在传统 HUD 导航之上增加一层骑行 Agent,使系统不仅显示路线,还能够理解骑手意图、比较候选路线并作出路线决策。


二、项目目标

RideGuard 的核心目标是建立以下完整链路:

用户自然语言指令 → 骑行意图识别 → 导航参数提取 → 目的地搜索 → 终点坐标获取 → 骑行路线规划 → 多路线比较 → Rokid眼镜端结果输出

典型输入:

导航去橘子洲,尽量走绿道,不要爬坡

典型输出:

目的地:橘子洲 推荐路线:路线2 全程距离:14.7公里 预计时间:77分钟 主要道路:奋勉路、神农路、王家垄路 绿道路段:4.1公里 起步指令:向北骑行35米左转 路线说明:优先选择绿道路段较长的路线;坡度信息暂无法验证。

三、系统总体架构

RideGuard 采用端云协同架构。

┌───────────────────────┐ │ Rokid眼镜 / 手机端 │ │ 语音输入、结果显示、定位 │ └───────────┬───────────┘ │ ▼ ┌───────────────────────┐ │ GPASS Agent │ │ 意图识别、参数提取、流程编排 │ └───────────┬───────────┘ │ ┌──────┴──────┐ ▼ ▼ ┌─────────┐ ┌─────────────┐ │ POI搜索 │ │ 高德骑行API │ └────┬────┘ └──────┬──────┘ │ │ └──────┬────────┘ ▼ ┌───────────────────────┐ │ 路线候选精简代码节点 │ │ 路线比较、绿道统计、格式转换 │ └───────────┬───────────┘ ▼ ┌───────────────────────┐ │ Rokid端导航结果卡片 │ └───────────────────────┘

端侧职责

当前版本中,Rokid 眼镜主要承担:

  • 用户语音交互入口;
  • 导航结果卡片显示;
  • 起步方向、距离、时间等信息呈现;
  • 后续接入手机实时 GPS 定位。

云端职责

GPASS 云端工作流主要承担:

  • 骑行指令意图识别;
  • 目的地和路线偏好提取;
  • POI 搜索;
  • 高德骑行路线 API 调用;
  • 多路线比较;
  • 结果结构化与异常处理。

四、GPASS 工作流设计

完整工作流如下:

开始 → 意图识别 → 导航参数提取 → JSON反序列化 → 判断是否提供目的地

当目的地为空时:

未提供目的地 → 结束节点 → 提示用户补充目的地

当目的地有效时:

根据关键词搜索POI → JSON序列化 → 提取终点坐标 → HTTP请求 → 路线候选精简 → 判断路线是否有效

成功分支:

骑行导航结果

失败分支:

路线规划失败

五、意图识别与导航参数提取

系统首先通过意图识别节点判断用户当前操作,例如:

  • 开始导航;
  • 查询导航进度;
  • 修改路线偏好;
  • 暂停或继续导航;
  • 停止导航;
  • 查找附近维修点;
  • 退出骑行助手。

对于开始导航指令,系统会将自然语言转换为结构化参数:

{ "action": "START_NAVIGATION", "destination": "橘子洲", "routeMode": "BICYCLE", "preferBikeLane": true, "preferSafeRoute": false, "avoidSteepSlope": true }运行

字段说明:

字段含义
action当前用户操作
destination用户目的地
routeMode出行方式,当前固定为 BICYCLE
preferBikeLane是否优先骑行道或绿道
preferSafeRoute是否启用安全偏好
avoidSteepSlope是否希望少爬坡

布尔字段必须使用 Boolean 类型,不能使用字符串,否则后续分支和代码判断容易出现错误。


六、目的地 POI 搜索

自然语言中的“橘子洲”不能直接作为骑行路线接口的终点,需要先转换为经纬度。

工作流使用高德 POI 搜索插件完成目的地匹配。

主要参数:

keywords = 用户目的地 region = 长沙市 city_limit = true page_size = 10 page_num = 1

插件返回多个 POI 候选结果,例如:

[ { "name": "橘子洲风景名胜区", "address": "长沙市岳麓区橘子洲头", "location": "112.963081,28.196505" } ]

随后通过 JSON 序列化和字段提取节点,得到:

destinationCoord = 112.963081,28.196505

高德接口坐标格式必须为:

经度,纬度

不能使用:

纬度,经度

也不能直接传入“导航去橘子洲”等自然语言。


七、高德骑行路线接口调用

路线获取通过 GPASS 的 HTTP 请求节点完成。

请求地址

GET https://restapi.amap.com/v5/direction/bicycling

请求参数

key = 高德Web服务Key origin = 113.081600,28.179300 destination = destinationCoord show_fields = cost,navi alternative_route = 3 output = json

说明:

  • origin为当前骑手位置;
  • 演示阶段使用固定长沙测试坐标;
  • 真机版本将由手机或 Rokid 端实时上传;
  • alternative_route=3表示请求多条候选路线;
  • 当前不请求polyline,避免大量坐标数据增加模型和工作流负担。

接口业务成功判断不能只看 HTTP 200,还需要检查:

status = 1 infocode = 10000 route.paths 不为空

HTTP 200 仅代表服务器成功响应,并不代表路线规划成功。


八、路线候选精简与决策

高德原始返回数据包含大量路段、指令和坐标信息,直接交给大模型容易产生以下问题:

  • 输入数据过长;
  • 路线字段提取不稳定;
  • 数值换算错误;
  • 默认选择第一条路线;
  • 出现字段为空或虚构内容。

因此,RideGuard 使用 GPASS 代码节点完成确定性路线决策。

精简后的路线结构

{ "status": "1", "infocode": "10000", "routeCount": 2, "routes": [ { "routeIndex": 1, "distanceMeters": 14592, "durationSeconds": 4783, "hasGreenway": false, "greenwayDistanceMeters": 0, "mainRoads": [ "奋勉路", "神农路", "王家垄路" ], "startInstruction": "向北骑行35米左转" }, { "routeIndex": 2, "distanceMeters": 14668, "durationSeconds": 4623, "hasGreenway": true, "greenwayDistanceMeters": 4133, "mainRoads": [ "奋勉路", "神农路", "王家垄路", "浏阳河北岸绿道" ], "startInstruction": "向北骑行35米左转" } ] }运行

路线选择规则

当用户启用绿道偏好时:

选择 greenwayDistanceMeters 最大的路线

绿道距离相同时:

选择 durationSeconds 更小的路线

用户没有绿道偏好时:

选择预计时间最短的路线

核心逻辑可以概括为:

if (preferBikeLane) { selectRouteByMaxGreenwayDistance(); } else { selectRouteByMinDuration(); }

距离转换:

distanceKm = distanceMeters / 1000;

时间转换:

durationMinutes = Math.round(durationSeconds / 60);

九、为什么不完全依赖大模型

本项目早期版本使用大模型直接解析高德路线 JSON,但出现过:

  • 距离和时间字段为空;
  • 将提示词本身输出到结果中;
  • 找不到实际存在的 routes;
  • 将成功结果误判为失败;
  • 绿道优先时仍默认选择路线1。

路线选择属于确定性逻辑,更适合通过代码节点完成。

因此最终采用:

大模型负责理解用户 代码负责计算和决策 工作流负责插件编排 眼镜负责结果呈现

这种设计比完全依赖大模型更稳定,也更适合现场演示和产品落地。


十、异常处理设计

系统设置了两个主要分支。

目的地为空

当用户输入:

开始导航

系统返回:

请告诉我您想骑行前往的目的地。 例如:导航去橘子洲。

此时不会继续调用 POI 和高德 API。

路线规划失败

代码节点输出:

{ "ok": false, "error": "具体失败原因" }

分支节点判断:

ok 为真

成功时输出导航结果,失败时返回:

暂时无法生成有效骑行路线,请检查目的地后重试。

避免出现“骑行路线规划失败:OK”等相互矛盾的结果。


十一、端侧与云端插件运用

云端插件

1. 意图识别

用于区分开始导航、暂停、继续、停止和查询等不同操作。

2. POI 搜索插件

将“橘子洲”等自然语言地点转换为具体 POI 和经纬度坐标。

3. HTTP 请求节点

调用高德骑行路线接口,获取真实路线数据。

4. JSON 序列化与反序列化

用于在大模型文本输出、插件对象和代码节点之间完成数据转换。

5. 代码节点

完成:

  • 多路线解析;
  • 绿道长度统计;
  • 时间和距离换算;
  • 路线筛选;
  • 眼镜端导航文案生成。

端侧能力

当前版本的 Rokid 端负责显示:

  • 目的地;
  • 推荐路线;
  • 全程距离;
  • 预计时间;
  • 主要道路;
  • 绿道路段;
  • 起步指令。

下一阶段计划接入:

  • 手机 GPS 实时位置;
  • 当前位置持续更新;
  • 路口级导航指令;
  • 偏航检测;
  • 自动重新规划;
  • 摄像头与道路环境识别。

十二、项目测试结果

测试一:普通导航

输入:

导航去橘子洲

结果:

推荐路线:路线2 全程距离:14.7公里 预计时间:77分钟

因为路线2预计时间比路线1更短。

测试二:绿道优先

输入:

导航去橘子洲,尽量走绿道

结果:

推荐路线:路线2 绿道路段:4.1公里

测试三:绿道优先并少爬坡

输入:

导航去橘子洲,尽量走绿道,不要爬坡

结果:

路线说明:优先选择绿道路段较长的路线;坡度信息暂无法验证。

由于高德当前返回结果没有海拔和坡度字段,系统不会虚构“低坡度路线”,而是明确提示数据边界。

测试四:未提供目的地

输入:

开始导航

结果:

请告诉我您想骑行前往的目的地。

十三、当前版本能力边界

当前 RideGuard 已经完成:

  • 自然语言骑行导航;
  • 目的地提取;
  • 骑行偏好识别;
  • POI 搜索;
  • 高德真实路线调用;
  • 多路线比较;
  • 绿道路段统计;
  • Rokid 眼镜端结果展示。

当前版本还不是完整的实时实景 AR 导航。

尚未完成:

  • GPS 持续更新;
  • 当前路段识别;
  • 转弯倒计时;
  • 偏航重算;
  • 真实道路空间锚定;
  • 箭头与现实道路的空间对齐。

因此,当前产品更准确的定位是:

面向 Rokid 眼镜的骑行路线规划与导航决策 Agent。

而不是已经完成的厘米级实景 AR 导航系统。


十四、下一阶段技术路线

下一阶段将分为三个层级推进。

第一阶段:动态起点

由手机或 Rokid 获取实时经纬度:

longitude + "," + latitude

替换当前固定origin

第二阶段:逐路口导航

保存高德返回的 steps,并根据当前位置判断当前所在路段:

当前GPS → 匹配最近路线段 → 获取当前step → 输出下一步转向指令

第三阶段:偏航重算

当用户位置与规划路线距离超过阈值时:

检测偏航 → 更新起点 → 重新调用路线API → 刷新眼镜端导航信息

第四阶段:视觉 AR 辅助

结合 Rokid SDK、摄像头和姿态传感器,实现:

  • 路口识别;
  • 道路方向辅助;
  • 虚拟导航箭头;
  • 路线与现实场景叠加。

十五、总结

RideGuard 并不是简单地将手机地图投射到眼镜上,而是在传统 HUD 导航之上增加了一层面向骑行场景的 Agent 决策能力。

项目通过 GPASS 将自然语言理解、POI 插件、高德路线 API、代码决策节点和 Rokid 眼镜显示串联起来,实现了:

一句话输入 → 自动理解目的地与偏好 → 获取真实骑行路线 → 比较多条候选方案 → 输出适合眼镜端阅读的导航结果

最终形成一套可解释、可扩展、可演示的骑行导航 Agent 技术方案。

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

大模型服务的 Sidecar 模式:推理网关、鉴权与日志注入

大模型服务的 Sidecar 模式:推理网关、鉴权与日志注入 一、每个推理 Pod 里都要重复实现鉴权、限流、日志——这违反 DRY 原则 大模型推理服务的架构中,推理 Pod 承担了太多非推理职责:API Key 校验、Token 用量统计、速率限制、审计日志、请…

作者头像 李华
网站建设 2026/7/15 21:52:21

实验设计:从数据到结论的工程化实践

1. 数据集:实验的基石与起点做实验就像盖房子,数据集就是地基。地基不牢,房子再漂亮也是空中楼阁。我见过太多同行在数据集选择上栽跟头,最后实验做得再精致,结论也站不住脚。选数据集不是简单的"越多越好"&…

作者头像 李华
网站建设 2026/7/15 21:51:53

迪奥999同款哑光唇釉,代工厂老板教你用车间硬指标算清利润账

拿着大牌礼盒图来找我定哑光唇釉的老板,十个里有八个上来就问“能不能做到高度一致”。我们建议聚焦核心工艺指标,避免过度关注外观复刻等非差异化竞争方式。具备竞争力的品牌,更关注色粉粒径、成膜剂含量和磁吸包材的阻尼系数——这三项关键…

作者头像 李华
网站建设 2026/7/15 21:50:32

AI智能体安全实战:五层纵深防护体系构建与落地指南

1. 项目概述:为什么AI智能体需要“五层纵深防护”?最近和几个做企业IT安全的朋友聊天,话题总绕不开一个词:AI智能体。大家一边惊叹于它写代码、跑报表、自动化处理邮件的效率,一边又为它可能带来的安全风险捏一把汗。M…

作者头像 李华
网站建设 2026/7/15 21:48:41

Python入门实战:环境搭建、核心语法与首个项目开发指南

Python作为一门编程语言,其真正的价值在于它如何让不同背景的开发者都能快速上手并解决实际问题。从数据分析师到Web开发者,从AI研究员到自动化脚本编写者,Python几乎无处不在。但很多初学者在入门时容易陷入一个误区:要么被复杂的…

作者头像 李华
网站建设 2026/7/15 21:48:34

2025数据工程师核心能力:可信、可溯、可控的数据系统构建

1. 这不是一份“学习路线图”,而是一份2025年数据工程师的生存手记我从2016年开始做数据管道,最早用的是Airflow 1.7,调度任务要手动改DAG文件里的Python字典;2018年第一次在生产环境跑Spark SQL,集群内存配错导致整个…

作者头像 李华