Mesh Navigation如何读懂坡道、碎石与沟坎?

作者:AMOVLAB
公众号:阿木实验室
发布时间:2026-08-17 18:16
查看微信公众号原文

实验室里的地面平整、路线清晰,机器人跑起来往往很顺,但到了园区、矿区或农田,情况马上就复杂了。

坡有多陡?碎石路会不会打滑?台阶边缘离车轮还有多远?这些细节很难从一张二维地图里看出来。机器人如果只知道前面有没有障碍,到了复杂地形上就容易走得犹豫,甚至选错路。

正文图片 01

二维栅格地图很适合标记障碍物和可通行区域,但它看到的更像一张俯视图。进入室外或非结构化环境后,地形的起伏、坡度和边缘风险很容易被压扁或忽略。

Mesh Navigation 直接把三角网格当作可计算的地表。机器人可以沿着真实起伏规划路线,同时比较不同位置的通行代价,走路时也就更“懂地形”。

这篇文章要介绍的开源项目mesh_navigation,覆盖 Mesh地图管理、地形代价评估、路径规划和运动控制。我们结合实际项目,看看这套方案是怎样串起来的。

01

一张Mesh地图,告诉了机器人什么?

正文图片 02

图 1|崎岖路面上的 Mesh 地图导航

mesh_navigation 直接在三维三角网格表面上规划和控制。地图保留了地形的空间结构,规划器也能沿着起伏的表面搜索路线。

传统导航主要看俯视图;Mesh Navigation处理的是一张可计算的三维地表。除了障碍物位置,坡度、粗糙度、边界风险和通行代价都可以进入规划过程。

正文图片 03

图 2|三角网格构成的可计算地表

从工程架构看,Mesh Navigation 由 Mesh 地图、地形代价层、全局规划器和局部控制器共同组成,并沿用 Move Base Flex(MBF)的规划、控制和恢复行为接口。

底盘能力、传感器配置和使用场景各不相同,开发者可以按需扩展代价层、规划器或控制器。整个项目更像一套可搭建、可替换模块的三维导航框架。

接下来,我们顺着项目的实际流程往下看:先采集数据,再重建 Mesh,最后让机器人在三维表面上规划和行驶。

02

采集环境数据

想让机器人在三维地形上找到路,第一件事是把周围环境尽可能真实地记录下来。

先看下面这个仿真环境:

正文图片 04

图 3|用于数据采集与验证的仿真环境

正文图片 05

图 4|不同 SLAM 方案生成 Mesh 地图的流程

采集阶段,我们用 rosbag 保存 LiDAR、IMU、TF 和里程计等关键数据。录好一遍后,同一份数据可以反复回放,方便比较 SLAM 算法、滤波参数、Mesh 重建方法和导航策略,也能减少单次在线运行带来的偶然性。

数据采完后进入 SLAM 流程。系统先估计机器人轨迹,再把连续点云配准到统一坐标系。本项目可接入 FAST-LIO、GLIM、LIO-SAM 等 LiDAR SLAM 方案。

这几种方案各有长处:有的更看重实时性,有的擅长全局优化。实际选择时,要一起看传感器频率、场景规模、回环条件、算力预算和最终地图质量。

本项目最终选用 GLIM,并保留逐帧 LiDAR scan 及其对应位姿,方便后续估计表面法向和空间结构。

正文图片 06

图 5|采集并配准后的点云地图

03

重复可导航的Mesh地图

拿到点云后,还要把它变成规划器能用的 Mesh 地图。整个过程大致分为以下三个阶段:

整理点云格式

先把 PCD 中的三维坐标和相关属性读出来,再保存为 PLY 文件。几何结构在这一步保持不变,也不会生成三角面;它的作用主要是统一输入格式,为表面重建做好准备。

正文图片 07

图 6|**Bremen City:原始点云与 5 cm 分辨率重建结果

重建三角格式

随后进入表面重建。按照 mesh_navigation 的建图说明,可以用 LVR2 的 lvr2_reconstruct 工具从无序点云生成三角网格;其表面生成流程采用 Marching Cubes 等方法,把 PLY 点云转换成可继续处理的 Mesh。

正文图片 08

图 7**|LVR2 重建得到的原始 Mesh 地图

清理Mesh,准备导航

Mesh 生成后,还要先“体检”一次。点云重建出来的表面经常带着重复顶点、重复面、孤立碎片、非流形边、孔洞或噪声凸起。

肉眼看上去,这些问题可能只是一点不平整;交给路径规划器后,却可能直接导致:

• 路径被意外断开

• 局部通行代价异常

• 连续表面被判定为不可遍历

• 可通行区域被误判为禁行区

• 规划结果出现绕行、跳变或不合理路径

所以,上线规划前需要用 MeshLab 等工具删除重复顶点和重复面,并修复非流形边、非流形点等拓扑问题。Mesh 的连接关系可靠,代价计算和路径规划才有稳定的几何基础。

04

在Mesh上规划与控制

导航时,系统会在三角网格上构建多个 cost layer,包括高度差、边界风险、粗糙度、静态障碍、动态障碍及其膨胀层。规划器综合这些代价,在三维表面上寻找更安全、更好走的路线。

CVP Planner 负责在 Mesh 表面生成全局路径和向量场;Mesh Controller 则根据机器人位置、目标方向和表面法向输出速度指令,让机器人沿着三维地形跟踪路径。

基于向量场的 Mesh Controller 擅长沿三维表面跟踪路径,但新的动态障碍层不会自动改变它的控制方向。如果现场有快速移动的障碍物,需要使用能读取动态代价层的控制方案(如 MeshMPPI),或者单独设计适配链路。常规二维 DWA、TEB、MPPI 不能直接拿来替换。

正文图片 09

图 8CVP Planner 在 Mesh 表面生成的路径

导航效果展示

正文图片 10

图 9导航效果展示

05

这套方案适合什么场景?

Mesh Navigation 最有价值的地方,在于它把地形几何、可通行性评估和运动控制串到了一起。在园区坡道、多层结构、矿区碎石、农田沟坎等场景中,机器人规划时会同时考虑“有没有路”和“这条路适不适合自己”。

当然,这套方案也更挑工程基础。传感器数据质量、SLAM 全局一致性、Mesh 拓扑、代价层参数、定位精度和底盘动力学,都会影响最后的导航效果。场景基本平坦、算力又有限时,成熟的二维导航通常更省事;遇到明显的三维起伏,Mesh Navigation 才更能体现价值。

资源速递

官方文档:

https://naturerobots.github.io/mesh_navigation_docs/

开源项目:

https://github.com/naturerobots/mesh_navigation

想了解更多产品信息、方案细节或合作方式,扫描下方二维码联系我们。

我们将为你提供产品选型、技术咨询与项目对接支持,助力无人机应用与开发更快落地。

正文图片 11

如果您有感兴趣的技术话题,请在留言区告诉我们!关注阿木实验室,更多技术干货不断更新!

开发遇到棘手难题可以上阿木官方论坛:

bbs.amovlab.com

有工程师亲自解答

10000+无人机开发者和你共同进步!

正文图片 12