OM1 四足机器人导航:让 Go2 自主避障走到目标点的 3 个机制【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1做四足机器人导航(让机器狗自己走到目标点、路上绕开障碍、还能跟你说话)到底要写多少代码?OM1 给出的答案是:跑一条make命令就动起来了。OM1是一个面向机器人的模块化 AI 运行时,把激光雷达、麦克风、相机统一接进「感知 → LLM 决策 → 运动指令」这条流水线。🧭 项目速览:一个能装在狗身上的"大脑"OM1 的核心是一个编排循环:传感器数据(视觉、声音、里程计、三维环境)先被翻译成自然语言,作为上下文喂给 Cortex LLM,LLM 的输出再分发给硬件抽象层(HAL),执行移动、发声、表情命令。机器人用文字思考、用指令行动,任何一层都能换掉——换 LLM、换麦克风、换动作执行器,改配置文件就行,整个运行时编译成单个 Go 二进制,连 Zenoh C 库一起打包。在 Unitree Go2 上,四足机器人导航分成两层:一种是全向避障式游走,由 RPLidar 扫描数据实时驱动;另一种是点到点导航,由 ROS2 的 Nav2 栈在地图上规划路径。两层共用同一套配置。⚙️ 原理链路:从"听见"到"走起"的三跳整条链路是 输入 → 处理 → 输出,展开 3 个关键模块。模块一:把激光雷达翻译成"哪些方向能走"运动驱动会从机器人位置投影出 9 条候选方向(左 4、正前 1、右 4,外加 1 条后退)。每条方向都检查是否会靠近已检测物体到机器人半宽(0.20 米,机器狗约 40 厘米宽)以内,安全阈值是 1.1 米:1.1 米内有物体就算"挡路"。存活的方向在internal/providers/paths.go里被分类成左转、前进、右转、后退四桶,然后转成 LLM 能读的话:方向都通就说 "you can turn left / move forwards / turn right";全被堵死则直接写一句 "You are surrounded by objects... DO NOT MOVE"。这句话就是整个系统的硬刹车。for _, path := range paths { switch { case path < 3: turnLeft = append(turnLeft, path) case path <= 5: advance = append(advance, path) case path < 9: turnRight = append(turnRight, path) case path == 9: retreat = true } }模块二:LLM 只决定"下一步干什么"cortex_llm配的是 Gemini,LLM 每轮能看到的输入有四个:里程计、ASR 转写的话、VLM 的画面描述、上面那句安全方向。系统提示词把它的输出限定成 5 种指令之一:turn left、turn right、move forwards、move back、stand still。也就是说大脑只负责意图,具体的路怎么走由运动系统兜底,LLM 选的方向如果雷达判定不安全,指令会在执行层被直接丢掉。模块三:两阶段执行 + AI 接管开关连接器 plugins/actions/unitree/go2/autonomy/move.go 把每条指令拆成「先转向对准、再直线前进」两个阶段,每 50 毫秒一次 tick 对照里程计:前进固定 0.5 m/s、转向 0.8 rad/s,角度差小于 5° 算对准,距离差小于 0.05 米算到达;卡住 2 秒没有进展就自停,15 秒超时强制放弃。若目标是"去厨房",navigation 动作(见 plugins/actions/navigation/navigation.go)会查地图里保存的地点、向 Nav2 发goal_pose,同时把 AI 随机游走关掉,防止两个运动源抢身体。它订阅的状态流里,code 4(succeeded)会重新打开 AI 控制并让狗用 TTS 说 "Yaaay! I have reached the kitchen";被取消或 ABORTED 时AI 控制保持禁用,属于故障安全默认值。🚀 跑通它:一条命令启动 Go2 自主配置环境要求:Go 1.25.0+、make、系统装好 portaudio 和 ffmpeg;硬件是 Go2 加装在狗头的 RPLidar A1M8,也可以在配置里开use_sim: true走仿真。git clone https://gitcode.com/GitHub_Trending/om/OM1 cd OM1 export OM_API_KEY="<你的 API key>" make run CONFIG=unitree_go2_autonomymake deps会自动下载 Zenoh C 库并整理 Go 依赖。行为调整都集中在 config/unitree_go2_autonomy.json5:换 LLM 改cortex_llm.type,换麦克风改agent_inputs,狗的性格由system_prompt_base和 "Three Laws" 治理条款决定。雷达的安装角度、盲区参数(angles_blanked)怎么标定,看 docs/robotics/motion_planning_lidarA1M8.md。🔍 效果与验证:怎么确认它真的在走终端日志里cmd_vel vx=0.50 vturn=0.000每 50 毫秒刷一次,说明速度指令真在发往机器狗看到 "turn complete, starting advance" 和 "advance complete",两阶段执行闭环走通发导航目标后,状态码按 1(accepted)→ 2(executing)→ 4(succeeded)流转,到达会触发 TTS 播报2D 导航地图上能看到占用栅格、机器人实时位姿(0.05 m/pixel),还能把当前点存成命名地点进阶:docker-compose up -d grafana prometheus打开看板,看 LLM 和 ASR 的实时延迟⚙️ 排障清单现象原因处理启动日志zenoh unavailable, movement disabledZenoh 会话没建立,发布器全部置空先在本机把 Zenoh broker 跑起来,确认make deps装好了 libzenohcLLM 下令前进但不动,日志cannot advance due to barrier1.1 米内正前方被雷达判为阻挡清障;确认无遮挡时检查雷达安装角与angles_blanked盲区配置日志一直打waiting for location data还没收到里程计(OdomX 为 0),且只在站立姿态执行运动确认 Go2 里程计 topic 已通过 Zenoh 发布,机器人处于站立状态导航中语音指令全部失效,日志AI control disabled - ignoring command导航开始后 AI 游走被设计性接管,仅 SUCCEEDED 后恢复等状态码 4 自动恢复;若 canceled/ABORTED 则 AI 保持禁用,需手动重发启用OM1 最有价值的设计,是把机器人学里最难的安全逻辑(路径校验、卡死自停、故障安全接管)全部压进了动作层,LLM 只做它擅长的意图选择。手里有 Go2 或 Nav2 环境、想快速给机器狗接上对话大脑的工程师,这是最短路径;下一步可以看 Nav2 全自主导航文档 docs/full_autonomy_guidelines/features/navigation.md,把地图导航接全。【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
OM1 四足机器人导航:让 Go2 自主避障走到目标点的 3 个机制【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1做四足机器人导航(让机器狗自己走到目标点、路上绕开障碍、还能跟你说话)到底要写多少代码?OM1 给出的答案是:跑一条make命令就动起来了。OM1是一个面向机器人的模块化 AI 运行时,把激光雷达、麦克风、相机统一接进「感知 → LLM 决策 → 运动指令」这条流水线。🧭 项目速览:一个能装在狗身上的"大脑"OM1 的核心是一个编排循环:传感器数据(视觉、声音、里程计、三维环境)先被翻译成自然语言,作为上下文喂给 Cortex LLM,LLM 的输出再分发给硬件抽象层(HAL),执行移动、发声、表情命令。机器人用文字思考、用指令行动,任何一层都能换掉——换 LLM、换麦克风、换动作执行器,改配置文件就行,整个运行时编译成单个 Go 二进制,连 Zenoh C 库一起打包。在 Unitree Go2 上,四足机器人导航分成两层:一种是全向避障式游走,由 RPLidar 扫描数据实时驱动;另一种是点到点导航,由 ROS2 的 Nav2 栈在地图上规划路径。两层共用同一套配置。⚙️ 原理链路:从"听见"到"走起"的三跳整条链路是 输入 → 处理 → 输出,展开 3 个关键模块。模块一:把激光雷达翻译成"哪些方向能走"运动驱动会从机器人位置投影出 9 条候选方向(左 4、正前 1、右 4,外加 1 条后退)。每条方向都检查是否会靠近已检测物体到机器人半宽(0.20 米,机器狗约 40 厘米宽)以内,安全阈值是 1.1 米:1.1 米内有物体就算"挡路"。存活的方向在internal/providers/paths.go里被分类成左转、前进、右转、后退四桶,然后转成 LLM 能读的话:方向都通就说 "you can turn left / move forwards / turn right";全被堵死则直接写一句 "You are surrounded by objects... DO NOT MOVE"。这句话就是整个系统的硬刹车。for _, path := range paths { switch { case path < 3: turnLeft = append(turnLeft, path) case path <= 5: advance = append(advance, path) case path < 9: turnRight = append(turnRight, path) case path == 9: retreat = true } }模块二:LLM 只决定"下一步干什么"cortex_llm配的是 Gemini,LLM 每轮能看到的输入有四个:里程计、ASR 转写的话、VLM 的画面描述、上面那句安全方向。系统提示词把它的输出限定成 5 种指令之一:turn left、turn right、move forwards、move back、stand still。也就是说大脑只负责意图,具体的路怎么走由运动系统兜底,LLM 选的方向如果雷达判定不安全,指令会在执行层被直接丢掉。模块三:两阶段执行 + AI 接管开关连接器 plugins/actions/unitree/go2/autonomy/move.go 把每条指令拆成「先转向对准、再直线前进」两个阶段,每 50 毫秒一次 tick 对照里程计:前进固定 0.5 m/s、转向 0.8 rad/s,角度差小于 5° 算对准,距离差小于 0.05 米算到达;卡住 2 秒没有进展就自停,15 秒超时强制放弃。若目标是"去厨房",navigation 动作(见 plugins/actions/navigation/navigation.go)会查地图里保存的地点、向 Nav2 发goal_pose,同时把 AI 随机游走关掉,防止两个运动源抢身体。它订阅的状态流里,code 4(succeeded)会重新打开 AI 控制并让狗用 TTS 说 "Yaaay! I have reached the kitchen";被取消或 ABORTED 时AI 控制保持禁用,属于故障安全默认值。🚀 跑通它:一条命令启动 Go2 自主配置环境要求:Go 1.25.0+、make、系统装好 portaudio 和 ffmpeg;硬件是 Go2 加装在狗头的 RPLidar A1M8,也可以在配置里开use_sim: true走仿真。git clone https://gitcode.com/GitHub_Trending/om/OM1 cd OM1 export OM_API_KEY="<你的 API key>" make run CONFIG=unitree_go2_autonomymake deps会自动下载 Zenoh C 库并整理 Go 依赖。行为调整都集中在 config/unitree_go2_autonomy.json5:换 LLM 改cortex_llm.type,换麦克风改agent_inputs,狗的性格由system_prompt_base和 "Three Laws" 治理条款决定。雷达的安装角度、盲区参数(angles_blanked)怎么标定,看 docs/robotics/motion_planning_lidarA1M8.md。🔍 效果与验证:怎么确认它真的在走终端日志里cmd_vel vx=0.50 vturn=0.000每 50 毫秒刷一次,说明速度指令真在发往机器狗看到 "turn complete, starting advance" 和 "advance complete",两阶段执行闭环走通发导航目标后,状态码按 1(accepted)→ 2(executing)→ 4(succeeded)流转,到达会触发 TTS 播报2D 导航地图上能看到占用栅格、机器人实时位姿(0.05 m/pixel),还能把当前点存成命名地点进阶:docker-compose up -d grafana prometheus打开看板,看 LLM 和 ASR 的实时延迟⚙️ 排障清单现象原因处理启动日志zenoh unavailable, movement disabledZenoh 会话没建立,发布器全部置空先在本机把 Zenoh broker 跑起来,确认make deps装好了 libzenohcLLM 下令前进但不动,日志cannot advance due to barrier1.1 米内正前方被雷达判为阻挡清障;确认无遮挡时检查雷达安装角与angles_blanked盲区配置日志一直打waiting for location data还没收到里程计(OdomX 为 0),且只在站立姿态执行运动确认 Go2 里程计 topic 已通过 Zenoh 发布,机器人处于站立状态导航中语音指令全部失效,日志AI control disabled - ignoring command导航开始后 AI 游走被设计性接管,仅 SUCCEEDED 后恢复等状态码 4 自动恢复;若 canceled/ABORTED 则 AI 保持禁用,需手动重发启用OM1 最有价值的设计,是把机器人学里最难的安全逻辑(路径校验、卡死自停、故障安全接管)全部压进了动作层,LLM 只做它擅长的意图选择。手里有 Go2 或 Nav2 环境、想快速给机器狗接上对话大脑的工程师,这是最短路径;下一步可以看 Nav2 全自主导航文档 docs/full_autonomy_guidelines/features/navigation.md,把地图导航接全。【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考