四足机器人自主导航怎么落地:用 OM1 让 Unitree Go2 自己认路、自己避障的完整指南
四足机器人自主导航怎么落地用 OM1 让 Unitree Go2 自己认路、自己避障的完整指南【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1OM1 是一个模块化的机器人 AI 运行时HAL 抽象层它把摄像头、激光雷达、麦克风的数据交给大模型再由大模型反向指挥机器人走路、说话和避障。这篇指南以 Unitree Go2 四足机器人为例带你从零跑通它的自主导航能力。它帮你解决什么问题让一只机器狗自己走路其实要同时解决三件事看得到路感知、想得明白决策、走得动控制。传统做法是堆一堆 ROS2 节点、写死状态机调试成本很高换一个传感器或换一种说法就得改代码。OM1 的思路不一样。它把整个链路抽象成三层输入层激光雷达点云、语音ASR、视频画面VLM 视觉语言模型、里程计全部转成自然语言描述决策层一个或多个 LLM 读取这些描述输出move forwards、turn left这样的高层动作动作层动作连接器把高层动作翻译成cmd_vel速度指令通过 Zenoh一种分布式消息中间件可以理解成机器人版的消息总线发给机器人好处是感知、模型、动作都解耦了。想换模型改一份 json5 配置就行。想加新传感器写个插件注册进来就行不用动主流程。整体分层可以看这张官方架构图从零跑通环境准备与启动步骤硬件准备自主避障依赖一颗装在 Go2 头顶的激光雷达官方推荐 SLAMTEC RPLidar A1M82D 单线激光雷达扫描一圈就能得到机器人周围的距离信息。安装角度和需要屏蔽的固定遮挡角可以用官方测试脚本标定方法见 docs/robotics/motion_planning_lidarA1M8.md开发机用网线直连 Go2把本机网卡手动设置成192.168.123.99掩码 255.255.255.0这样才能和机器人内部的计算单元通信。安装并启动如果你只是想看效果最快路径是下载预编译二进制不需要装 Go把config/、knowledge_base/等运行资产一并解压出来即可。要从源码构建的话需要 Go 1.25.0git clone https://gitcode.com/GitHub_Trending/om/OM1 cd OM1 make deps make build然后配置你的 API Key 环境变量选择对应的配置启动export OM_API_KEYyour_api_key make run CONFIGunitree_go2_autonomyunitree_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.如果四面都是障碍则直接告诉 LLMYou 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 kitchennavigation连接器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设成guardguard.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),仅供参考