gmapping
gmapping 源码:git搜索 gmapping 下面两个即是: gmapping 原理很简单,通过“ l粒子滤波 "实现定位。具体通过粒子与已经产生的地图进行scanMatch,矫正里程计误差实现。 在定位的同时,每次经过map_update_interval_时间,进行地图更新 updateMap(*scan)。相对cartographer,缺少闭环,所以计算量很小,实测,局部地图比carto清晰,质量较好。下面对代码进行梳理(梳理导航相关代码跟着laser走,会比较清晰) ### 代码梳理 1> ros 部分 (代码为简化版,方便梳理 ... 表示有省略代码) gmapping/src/main.cpp int main(int argc, char** argv) { ros::init(argc, argv, "slam_gmapping"); SlamGMapping gn; gn.startLiveSlam(); ros::spin(); return(0); } gmapping/src/slam_gmapping.cpp void SlamGMapping::startLiveSlam() { ... // 订阅激光数据 scan_filter_->registerCallback(boost::bind(&SlamGMapping: