
DimOS LiDAR点云处理从原始帧到Occupancy占用栅格的完整链路【免费下载链接】dimosDimensional is the agentic operating system for physical space. Command humanoids, quadrupeds, drones, and other hardware platforms in natural language and build multi-agent systems that work seamlessly with physical input (cameras, lidar, actuators).项目地址: https://gitcode.com/GitHub_Trending/dimo/dimosDimOSDimensional的LiDAR 点云处理链路把激光雷达每秒数千个原始点逐级转换成机器人能直接使用的Occupancy 占用栅格地图。本文带你走完整条链路从 Mid-360 驱动的 UDP 点云帧到三种栅格生成算法再到膨胀、挤出与路径后处理——一篇看懂 DimOS 的点云感知新手也能快速上手。 链路总览四步把点云变成地图在 DimOS 中LiDAR 点云处理是一条清晰的单向流水线硬件驱动Livox 激光雷达通过 UDP 推流原始点Rust 驱动转成标准PointCloud2帧约 10Hz点云消息PointCloud2携带时间戳与坐标系lidar_link可一键转 numpy 数组栅格生成三种可插拔算法把 3D 点投影为 2D OccupancyGrid0自由 / 100占据 / -1未知后处理膨胀、高度挤出、路径地图等工具把栅格交给导航与空间记忆模块。 第1步LiDAR硬件驱动——从UDP报文到PointCloud2帧DimOS 的雷达适配层位于 dimos/hardware/sensors/lidar/覆盖四种模块模块用途源码位置livoxLivox Mid-360 实机驱动Rustmodule.pyfastlio2/pointlio激光-惯性里程计定位分支fastlio2/virtual_mid360虚拟雷达回放 pcap 录制的点云virtual_mid360/以 Mid360 为例关键配置非常开箱即用自动组网host_ip自动探测雷达 IP 默认出厂地址192.168.1.155数据端口点云、IMU、控制报文分别走独立 UDP 端口定义在 ports.py回放调试设置pcap参数即可重放抓包文件不接真机也能跑通全链路输出PointCloud2消息流frame_id默认lidar_link频率默认10Hz。 没有激光雷达virtual_mid360可以回放 pcap 文件是调试点云处理链路的首选。 第2步点云消息与numpy转换点云以标准消息 PointCloud2 传递继承Timestamped自带时间戳下游算法只需用一行拿到裸数据points, _ cloud.as_numpy() # (N, 3) 数组升为 float64 防浮点舍入as_numpy()实现在 PointCloud2.py#L437。这个消息→numpy的边界设计让所有栅格算法都只依赖纯数值计算方便用 Numba 做极致加速。⚡ 第3步三种Occupancy占用栅格算法核心转换逻辑集中在 dimos/mapping/pointclouds/occupancy.py三种算法通过注册表 OCCUPANCY_ALGOS 统一管理按需调用from dimos.mapping.pointclouds.occupancy import OCCUPANCY_ALGOS grid OCCUPANCY_ALGOSsimple1️⃣ simple最快的地面/障碍二值栅格simple_occupancy 用 Numba 并行内核 _simple_occupancy_kernel 两趟扫描高度 min_height默认 0.1m的点 →自由0min_height ~ max_height默认 0.1~2.0m的点 →占据100其余保持未知-1。2️⃣ general带自由空间外扩的障碍栅格general_occupancy 在二值化基础上增加mark_free_radius默认 0.4m用形态学膨胀把已确认的自由区域向外扩一圈让机器人敢走雷达照过的地方同时不覆盖障碍格——小空间里特别实用。3️⃣ height_cost地形坡度成本栅格height_cost_occupancy 面向四足机器人把栅格从二值升级为0~100 连续成本can_pass_under0.6m格子内上下高度差超过它 → 视为可钻过取地面高度can_climb0.15m单格高度变化达到它 → 成本 100爬不动Sobel 梯度计算坡度ignore_noise0.05m过滤雷达地面噪点高斯加权平滑填充空洞。三种算法共享 OccupancyConfig栅格分辨率默认0.05m可直接覆盖frame_id指定坐标系。输出统一为 OccupancyGrid 消息。️ 第4步占用栅格后处理与下游应用单帧栅格只是起点。dimos/mapping/occupancy/ 提供了一整套栅格工具箱膨胀inflation.py 为障碍格加安全缓冲高度挤出extrude_occupancy.py 把 2D 占据区分解为矩形柱体未知格保守视为占据供 MuJoCo 碰撞几何直接消费路径工具path_map.py、path_mask.py、path_resampling.py 负责路径重采样与可行域掩码多帧累积accumulators/ 定义 PointCloudAccumulator 协议把连续点云帧融合成稠密地图避免单帧噪声。最终栅格与累积地图被导航、巡逻、空间记忆等模块订阅自然语言指令去厨房背后就是它在工作 快速上手关键参数速查参数默认值说明resolution0.05 m栅格分辨率min_height/max_height0.1 / 2.0 m障碍高度带mark_free_radius0.4 m自由空间外扩半径can_pass_under0.6 m可穿越结构判定高度can_climb0.15 m最大可攀爬高度雷达频率10 HzMid-360 输出帧率想本地跑一遍从 demo.py 入手即可体验完整的点云→栅格流程单元测试见 test_occupancy.py。✅ 小结DimOS 的 LiDAR 点云处理链路 驱动组网 → PointCloud2 标准化 → 三选一栅格算法 → 工具箱后处理。算法可插拔、参数可配置、Numba 加速无论四足、人形还是无人机都能用同一套链路把激光打回来的一团点变成机器人看得懂的地图。【免费下载链接】dimosDimensional is the agentic operating system for physical space. Command humanoids, quadrupeds, drones, and other hardware platforms in natural language and build multi-agent systems that work seamlessly with physical input (cameras, lidar, actuators).项目地址: https://gitcode.com/GitHub_Trending/dimo/dimos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考