# simple_mola **Repository Path**: zhouwuxiong/simple_ ## Basic Information - **Project Name**: simple_mola - **Description**: mola 架构拆解,复现 https://github.com/MOLAorg/mola - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MRPT RTTI + YAML LIO 插件 Demo 教学用 LIO 系统骨架,结构对齐 MOLA(非生产算法)。 **插件定义与连接关系**见 [docs/plugin_map.md](docs/plugin_map.md)(随架构迭代更新)。 ## 两档配置 | 配置 | 说明 | |------|------| | [config/lio_sim.yaml](config/lio_sim.yaml) | 最小:传感器 + 前端 + 评估 | | [config/lio_full.yaml](config/lio_full.yaml) | **完整框架**:+ 后端 + 地图管理 + 重定位 + 可视化 | ## 完整流水线(lio_full) ```text sim_sensor (RawDataSource) │ CObservation ▼ pc_filter (FilterBase: 降采样桩) │ CObservation ▼ lio_front (FrontEnd + KeyframeMapCapable) ├─ MapUpdate ──────────► map_manager ├─ LocalizationUpdate ─► simple_loop_closure ──LoopConstraint──► pose_backend ├─ LocalizationUpdate ─► pose_backend ─► LocalizationUpdate ─► simple_viz / traj_eval └─ VizInterface ───────► simple_viz launcher 周期触发 ────────► simple_reloc ──查询──► map_manager ``` ## 核心接口(`core/`) | 文件 | 对齐 MOLA | |------|-----------| | `MapSourceBase.h` | `mola::MapSourceBase` | | `LocalizationSourceBase.h` | `mola::LocalizationSourceBase` | | `FrontEndBase.h` | `mola::FrontEndBase` | | `LoopClosureTypes.h` / `LoopClosureSourceBase.h` | `ILoopClosure` / 事件 `LoopClosureCandidate` | | `LoopClosureSink.h` | 位姿图后端消费约束 | | `Relocalization.h` | `mola::Relocalization` | | `VizInterface.h` | `mola::VizInterface`(桩) | | `MapManagerService.h` | 地图集中管理 | | `ExecutableBase.h` | `mola::ExecutableBase`(`nameServer_` / `findService`) | | `FilterBase.h` | `mola::FilterBase` | | `KeyframeMapCapable.h` | `mola::KeyframeMapCapable` | ## 插件(`plugins/`) | 插件 | 角色 | |------|------| | `sim_sensor` | 合成 IMU + LiDAR | | `simple_filter` (`SimpleDecimateFilter`) | 观测管道滤波桩 | | `simple_lio` | 前端里程计 + 发布地图/位姿 | | `simple_loop_closure` | 关键帧 + 假回环检测,发布 `LoopConstraint` | | `pose_backend` | 位姿图后端桩(订阅前端 + 回环约束,假优化后再发布) | | `map_manager` | 订阅 `MapUpdate`,供重定位查询 | | `simple_reloc` | `Relocalization` 实现桩 | | `simple_viz` | 控制台可视化桩 | | `traj_eval` | 前端/后端轨迹误差评估 | ## 构建与运行 ```bash ./build.sh ./build/bin/lio_launcher config/lio_full.yaml # 或最小: ./build/bin/lio_launcher config/lio_sim.yaml ``` ## 互斥与线程(本 demo) - 单线程顺序 `spinOnce()`(简化 launcher,非 MOLA 每模块一线程)。 - `MapSourceBase` / `LocalizationSourceBase` 内 `mutex` 保护订阅列表(与 MOLA 相同)。 - 地图发布时对点云 **拷贝** 为 `ConstPtr` 快照。 - 后端/地图管理器各自 `mutex` 保护内部缓冲。 ## 扩展为真实系统 - `pose_backend` → `mola` + GTSAM / Ceres 因子图 - `map_manager` → 多图层 / 持久化 / `map_load` - `simple_reloc` → ICP 重定位 + `Relocalization` API - `simple_viz` → `MolaVizImGui` - launcher → `MolaLauncherApp` 多线程 + `execution_rate`