![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SLAM学习
文章平均质量分 86
沙漠之舟tx
勿在浮沙筑高台
展开
-
激光SLAM理论与实践 - 第六期 作业与心得 目录
本文当作我学习《激光SLAM理论与实践 - 第六期》的一个记录,这里的作业答案并不是标准答案,心得部分将用斜体标出,如有错误请指出,谢谢!参考的文章会在文末列出。github地址(用于放置最新的源码)CSDN目录地址目录第1章 激光SLAM简介第2章 传感器数据处理I:里程计运动模型及标定第3章 传感器数据处理II:激光雷达数学模型和运动畸变去除第4章 激光SLAM的前端配准方法 Ⅰ第5章 激光SLAM的前端配准方法 Ⅱ第6章 基于图优化的激光SLAM方法(Grid-based)第7原创 2021-10-06 22:25:30 · 1241 阅读 · 8 评论 -
激光SLAM理论与实践 - 第六期 大作业(运行并测试 GMapping、Hector Slam、Karto、Google Cartographer ) 作业与心得
大作业内容 3 选 1:实现一个完整的激光 SLAM 算法。把前面各小节的内容串联起来,可以用前面作业提供的 rosbag,也可以其它的数据集。运行并测试 GMapping,Hector Slam, Karto, Google Cartographer 等开源激光 SLAM 算法,并给出详细的测试对比报告。不同场景下/数据集的精度,速度,是否有回环,算法差异等。选择一个激光+IMU/IMU/视觉/里程计/GNSS 或激光与其它多传感器融合的技术方向做调研,撰写总结报告,最...原创 2021-09-27 09:32:43 · 2136 阅读 · 9 评论 -
激光SLAM理论与实践 - 第六期 第7章 基于已知定位的建图 作业与心得
补充代码,通过覆盖栅格建图算法进行栅格地图构建;(3 分) //start of TODO 对对应的map的cell信息进行更新.(1,2,3题内容) //1 GridIndex beamPointIndex = ConvertWorld2GridIndex(world_x, world_y); std::vector<GridIndex> beamTraceindexes = TraceLine(robotIndex.x, robotIndex.y, b...原创 2021-09-20 00:09:44 · 770 阅读 · 10 评论 -
激光SLAM理论与实践 - 第六期 第6章 基于图优化的激光SLAM方法(Grid-based) 作业与心得
补充代码,实现高斯牛顿方法对 Pose-Graph 进行优化;(6 分)计算jacobian矩阵和error;//TODO--Start// Eigen::Matrix3d zij = PoseToTrans(xi).inverse() * PoseToTrans(xj);// Eigen::Vector3d eij = TransToPose(PoseToTrans(z).inverse() * zij);Eigen::Matrix2d RijT;RijT << cos...原创 2021-09-13 10:06:57 · 947 阅读 · 4 评论 -
激光SLAM理论与实践 - 第六期 第5章 激光SLAM的前端配准方法 II 作业与心得
补充代码,实现 gaussian_newton_scanmatcher 模块;(6 分)在地图上的进行插值,得到coords处的势场值和对应的关于位置的梯度;//TODOint map_index_x = floor((coords[0] - map->origin_x) / map->resolution) + map->size_x / 2;int map_index_y = floor((coords[1] - map->origin_y) / map-&g...原创 2021-09-06 11:13:00 · 1087 阅读 · 9 评论 -
激光SLAM理论与实践 - 第六期 第4章 激光SLAM的前端配准方法 I 作业与心得
补充代码,实现两帧间的 IMLS-ICP 激光匹配;(6 分)实现 imls_icp.cpp 中的 computeNormal(ICP)函数,该部分可参考 PPT 中 NICP 法向量的计算方法;//TODO//根据周围的激光点计算法向量,参考ppt中NICP计算法向量的方法Eigen::Vector2d average;average.setZero();for(auto v : nearPoints){ average += v / nearPoints.size(...原创 2021-09-01 14:37:13 · 1082 阅读 · 4 评论 -
激光SLAM理论与实践 - 第六期 第3章 传感器数据处理II:激光雷达数学模型和运动畸变去除 作业与心得
补充去除激光雷达运动畸变模块的代码;(6 分)设世界坐标系 ${W}$ 的原点与odom坐标系的原点重合, {B}\{B\}{B} 为某一帧激光数据的基坐标(一般为第一束激光测量时的坐标), {S−E}\{S-E\}{S−E} 为激光采样过程中每一束激光测量时对应的坐标(start to end frame), {B}\{B\}{B} 和 {S−E}\{S-E\}{S−E} 都是激光坐标系,只是在不同的时间相对世界坐标系的位姿。默认每一束激光都是在基坐标时刻完成测量的,但是实际是激光雷达每帧的测量...原创 2021-08-24 15:49:40 · 742 阅读 · 0 评论 -
激光SLAM理论与实践 - 第六期 第2章 传感器数据处理I:里程计运动模型及标定 作业与心得
补充直接线性方法的里程计标定模块代码;(6 分)Main.cpp,第 358 行中的 cal_delta_distance()函数,该函数的功能为给定两个里程计位姿,计算这两个位姿之间的位姿差。这里是上一章的内容,已知上一时刻的位姿和当前位姿,求位姿差。假设odom原点为世界坐标系 {W}\{W\}{W} 的原点,上一时刻的位姿为 lastWT^W_{last}TlastWT ,当前位姿为 nowWT^W_{now}TnowWT,位姿差为 nowlastT=WlastT⋅nowWT=...原创 2021-08-19 23:38:12 · 952 阅读 · 0 评论 -
激光SLAM理论与实践 - 第六期 第1章 激光SLAM简介 作业与心得
了解 Linux 系统:阅读《鸟哥的 Linux 私房菜》自学前三部分内容,或利用互联网进行学习,简答以下问题;(3 分)列举三个你常用的 Linux 命令,并说明他们的功能。man 指令,是manual(操作说明)的缩写,该指令用于查看其他指令的详细说明;比如 $ man date ,就会出现有关 date 的详细说明。cd 指令,是change directory(改变目录)的缩写,该指令用于改变工作目录;比如 $ cd /home/tx-ubuntu64 ,就会将当前目录变为 ...原创 2021-06-30 21:00:48 · 870 阅读 · 1 评论