
a-loam
文章平均质量分 86
a-loam是一个经典slam框架,对于学习slam的初学者有很强的借鉴参考价值,本专栏是对a-loam框架源码的解读。
Student JoeyLee
武汉大学slam小学生,还懂一点小数据分析。
展开
-
aloam框架laserMapping.cpp源码解读
/将数据从std::queue<sensor_msgs::PointCloud2ConstPtr>转为pcl::PointCloud<PointType>::Ptr。体素网格滤波器(VoxelGrid)是一种常见的点云下采样方法,它将空间划分为一个三维网格,并在每个体素内部平均或近似点云数据,以减少点的数量。//这几行用于发布数据,大概发布的是配准后的点云数据和里程计数据,具体的数据用途我们在功能函数中看。//将三维空间中的点映射到一个三维网格中,其中每个维度都被划分成了50单位大小的格子。原创 2024-09-26 21:36:44 · 816 阅读 · 0 评论 -
laserOdometry.cpp源码注释
/ find correspondence for plane features 面上特征点的匹配和角点特征点的匹配方法是一样的,都是先做坐标系转换,然后使用kd树找到最近邻点,再由最近邻点在同一条扫描线或相邻扫描线上找到最近邻点的最近邻点,然后构建点到面的距离最小作为损失函数。消息类型,它用于传送关于机器人的里程计数据。点云是一组在三维空间中的点的集合,每个点通常包含位置(x, y, z)和可能的其他信息,如颜色或强度。消息类型,它是一种在ROS中常用的消息,用于传送具有时间戳的位姿(位置和方向)。原创 2024-09-10 22:21:59 · 888 阅读 · 0 评论 -
scanRegistration.cpp源码注释
体素网格下采样通过将点云中的点分配到体素中,并在每个体素中保留一个代表性点来减少点的数量。这通常意味着点云是无组织的,即点是随机排列的,而不是按照行或扫描线排列的。在点云的情况下,它通常表示点云数据被捕捉或处理的时间。//向前检查相邻的5个点,如果它们与当前点之间的距离变化大于0.05,则停止检查。//向后检查相邻的5个点,如果它们与当前点之间的距离变化大于0.05,则停止检查。//把一个360°的水平空间分成六份,计算每一份的起始点sp和末尾点ep。//标记输出点云为密集的,这意味着点云中没有无效的点。原创 2024-09-10 16:49:45 · 925 阅读 · 0 评论 -
A-loam源码注释-头文件lidarFactor.hpp
/Eigen::Quaternion<T>{(T)(T)((int)1), (T)(T)((int)0), (T)(T)((int)0), (T)(T)((int)0)},定义了一个单位四元数。//在雷达坐标系下计算残差和世界坐标系下计算残差的公式略有区别,在后续代码中再来分析原因。//将成员变量定义放在结构体或类的末尾是一种常见的编码风格。,它表示从上一个点到当前点的旋转。//通过插值的方法得到下一时刻的位姿,然后再迭代?//lpa: 表示上一个点A的三维坐标。: 点到平面的距离的负值与法向量的点积。原创 2024-09-07 15:50:41 · 958 阅读 · 0 评论 -
补充a-loam的另外两个头文件
这是一个非标准的预处理指令,用于在包含文件时防止同一个头文件被多次包含。它的作用类似于传统的宏保护,但它不需要在文件末尾添加取消宏定义的指令。内联函数是一种优化手段,它建议编译器在每次调用函数时直接将函数体插入到调用点,而不是进行函数调用,这样可以减少函数调用的开销。:这是一个标准的时钟类型,它提供了系统级的绝对时间。它的时间点表示的是自1970年1月1日(即Unix纪元)以来的时间。来实现的,它允许以秒为单位表示时间间隔,然后乘以1000将其转换为毫秒。:这是一个模板类,用于表示一个时间点。原创 2024-09-07 16:41:26 · 386 阅读 · 0 评论