☰
四足机器人自主导航怎么落地:用 OM1 让 Unitree Go2 自己认路、自己避障的完整指南
2026/10/20 2:03:46 网站建设 项目流程

四足机器人自主导航怎么落地:用 OM1 让 Unitree Go2 自己认路、自己避障的完整指南

【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1

OM1 是一个模块化的机器人 AI 运行时(HAL 抽象层),它把摄像头、激光雷达、麦克风的数据交给大模型,再由大模型反向指挥机器人走路、说话和避障。这篇指南以 Unitree Go2 四足机器人为例,带你从零跑通它的自主导航能力。

它帮你解决什么问题

让一只机器狗"自己走路",其实要同时解决三件事:看得到路(感知)、想得明白(决策)、走得动(控制)。传统做法是堆一堆 ROS2 节点、写死状态机,调试成本很高,换一个传感器或换一种说法就得改代码。

OM1 的思路不一样。它把整个链路抽象成三层:

  • 输入层:激光雷达点云、语音(ASR)、视频画面(VLM 视觉语言模型)、里程计,全部转成自然语言描述
  • 决策层:一个或多个 LLM 读取这些描述,输出"move forwards"、"turn left"这样的高层动作
  • 动作层:动作连接器把高层动作翻译成cmd_vel速度指令,通过 Zenoh(一种分布式消息中间件,可以理解成机器人版的消息总线)发给机器人

好处是:感知、模型、动作都解耦了。想换模型?改一份 json5 配置就行。想加新传感器?写个插件注册进来就行,不用动主流程。整体分层可以看这张官方架构图:

从零跑通:环境准备与启动步骤

硬件准备

自主避障依赖一颗装在 Go2 头顶的激光雷达,官方推荐 SLAMTEC RPLidar A1M8(2D 单线激光雷达,扫描一圈就能得到机器人周围的距离信息)。安装角度和需要屏蔽的固定遮挡角,可以用官方测试脚本标定,方法见 docs/robotics/motion_planning_lidarA1M8.md:

开发机用网线直连 Go2,把本机网卡手动设置成192.168.123.99(掩码 255.255.255.0),这样才能和机器人内部的计算单元通信。

安装并启动

如果你只是想看效果,最快路径是下载预编译二进制(不需要装 Go),把config/、knowledge_base/等运行资产一并解压出来即可。要从源码构建的话,需要 Go 1.25.0+:

git clone https://gitcode.com/GitHub_Trending/om/OM1 cd OM1 make deps && make build

然后配置你的 API Key 环境变量,选择对应的配置启动:

export OM_API_KEY="<your_api_key>" make run CONFIG=unitree_go2_autonomy

unitree_go2_autonomy是导航场景的预设配置,定义在 config/unitree_go2_autonomy.json5,里面声明了四类输入(里程计、Google ASR 语音、Gemini VLM、激光雷达安全路径)和三类动作(TTS 说话、表情、自主移动),决策模型用的是 Gemini。想确认它跑起来了,看终端里是否持续滚动输入处理和 LLM 响应日志即可。

如果你没有真机,也可以先在 Gazebo 或 Isaac Sim 里跑,文档在 docs/simulators/ 下。

它如何"感知"周围环境

导航的安全底线来自激光雷达,这里的核心设计是"路径预检":

系统预先算好机器人前方扇形区域的 10 条候选路径——左侧 4 条(-60° 到 -15°)、正前方 2 条(0° 和 15°)、右侧 3 条(30° 到 60°),外加一条正后方撤退路径。每条路径都检查是否会以小于机器人半宽(约 0.2 米)的距离擦到障碍物,没问题的才标记为"可用路径",结果发布在om/paths主题上。

这套检查有两个关键阈值,配置项就叫直白的名字:

  • relevant_distance_max: 1.1:只关心 1.1 米以内的障碍物,超过这个距离的墙和家具对下一步动作没影响
  • angles_blanked:把雷达支架、外壳这类固定遮挡对应的角度区间屏蔽掉,免得机器人一直以为前面有东西

感知结果会同时送给两个地方:一是拼进 LLM 的上下文,让它"知道"现在能往哪走;二是直接给动作驱动做执行前校验,即使 LLM 想走的路已经封了,驱动也会拒绝执行。感知层和决策层互为备份,这是它比"纯 LLM 决策"更稳的地方。

遇到障碍时它怎么"想"

障碍信息先变成一句话

PathsProvider(源码在 internal/providers/paths.go)收到路径数据后,会把原始索引翻译成 LLM 能直接读的自然语言。比如前方被封、左右能走时,它会生成:

The safe movement directions are: 'turn left', 'turn right', 'stand still'.

如果四面都是障碍,则直接告诉 LLM:

You are surrounded by objects and cannot safely move in any direction. DO NOT MOVE.

LLM 拿到这句话再加上语音指令和画面描述,综合决定下一步动作。动作词表很小,只有五个:turn left、turn right、move forwards、move back、stand still。词表小意味着模型不容易"说错话",执行端也好做安全校验。

指令执行也有状态机

LLM 说"前进"之后,真正落地的是 plugins/actions/unitree/go2/autonomy/move.go 里的执行器,它把一条命令拆成两阶段:先原地转到目标航向,再直线推进 0.5 米。执行期间有几个保护逻辑:

  • 每 50 毫秒一个 tick 检查一次,只有机器人处于站立姿态才发速度指令
  • 转向阶段如果 2 秒内航向没在收敛,直接判失败停车,防止原地打转
  • 直行阶段每步都重新查"正前方路径是否仍畅通",封了就刹车
  • 任何异常都会立即发一个零速度的Twist把速度清零

除了自由移动,项目还提供了"点名导航":说"go to the kitchen",navigation连接器(plugins/actions/navigation/)会查已保存的地点列表,把目标位姿发布到goal_pose,交给机器人侧的 Nav2 导航栈去算全局路径。Nav2 的状态码(1 已接受、2 执行中、4 成功、5 已取消、6 异常终止)被逐帧解析回来,用于驱动一套很重要的联锁逻辑。

AI 模式联锁:谁在开就只听谁的

导航任务开始的那一瞬间,OM1 会主动发布"AI control disabled"消息,冻结 LLM 的自由移动权限——避免大模型在 Nav2 规划路径的同时自己往前凑,两边打架。任务成功后重新启用 AI 模式,机器狗还会用 TTS 播报"我到啦"。但如果任务是取消或异常终止,AI 模式保持禁用,等人工介入。也就是说任何时刻只有一条控制链在生效,这套互斥是它能安全跑在真实环境里的关键设计。

把这套能力接入你自己的项目

改配置就能换行为

大部分定制不需要碰代码。config/下的每份 json5 就是一个"机器人人格 + 能力清单":改system_prompt_base可以换人设和交互风格,增删agent_inputs和agent_actions就能开关传感器和动作。比如给 Go2 加"看人不理生人"的守卫行为,只要把动作配置的mode设成guard,guard.go里的轮询器会每 500 毫秒查一次人脸识别服务,出现陌生面孔就丢弃所有移动指令。

接新硬件:写一个动作连接器

如果你的机器人不是 Go2,官方假设你的硬件提供高层 SDK(能接收 move、smile 这类指令),OM1 通过 USB、串口、ROS2、CycloneDDS、Zenoh 或 websocket 和它对接。新增动作的方式是实现一个连接器并在init()里注册,参考 plugins/actions/ 下任一连接器,机制说明在 docs/developing/6_actions.md。输入侧同理,自定义传感器写成 input 插件注册即可。

部署形态

面向量产的是"全自主"模式:整套服务以容器形式跑在 BrainPack(挂在机器人上的计算单元,负责建图、定位、远程控制和自动充电)上,机器人侧由 ROS2 SDK 把传感器数据发布成标准话题,OM1 消费话题、调 LLM、再发回动作。这套部署模型和组件清单在 docs/full_autonomy_guidelines/architecture_overview.md。支持的平台里 Nvidia Thor 是完整支持,AGX Orin 支持有限(重推理负载建议上 Thor)。

线上跑起来之后,仓库自带的 Grafana + Prometheus 看板可以盯 LLM、ASR 的实时延迟:

docker-compose up -d grafana prometheus

适合谁用,以及它还能往哪走

这套东西比较适合三类人:

  • 有 Go2 / G1 / M20 Pro / Tron 这类机型、想给机器人加"听得懂话 + 会认路"能力的开发者
  • 想研究 LLM 如何驱动物理机器人的研究者——OM1 的多 LLM 架构(快速动作模型、核心认知模型、教练模型)是个现成的实验平台
  • 需要把语音、视觉、导航、TTS 拼成完整交互链的机器人应用团队

往后看,这条路线的延伸方向已经比较清晰:导航加 SLAM 建图之后可以叠加定点巡航(patrol)、禁区(keepout zones)、自动回充、人脸匿名化等能力,这些在 docs/full_autonomy_guidelines/features/ 下都有独立文档;从室内家庭陪伴到户外探索、巡检,场景切换靠的仍是换配置而不是重写代码。对新手来说,建议先跑通conversation配置熟悉输入-LLM-动作这条主链路,再切换到unitree_go2_autonomy,理解成本会低很多。

【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询