<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jiajiading的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jiajiading</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiajiading]]></copyright><item><title><![CDATA[Lio-sam代码分析（2）-图像预处理imageProjection]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/131474721</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/131474721</guid><author>jiajiading</author><pubDate>Thu, 24 Aug 2023 16:51:19 +0800</pubDate><description><![CDATA[激光雷达点云获得原数据都是一维的,但是根据实际雷达旋转扫描的特性,将其投影映射成2维数组.例如采用16线的vld雷达,则根据实际扫描逻辑映射成16个1维数组,相当于存在16个1维平面雷达.如此可以更容易提取如地面/平面/角点/垂直线的特征点. 映射和特征提取与之前loam-slam中特征提取方案一致.不再详述,具体看lego-loam代码分析（1）-地面提取和点云类聚。]]></description><category></category></item><item><title><![CDATA[Lio-sam代码分析（1）-基本框架说明]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/131470069</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/131470069</guid><author>jiajiading</author><pubDate>Thu, 24 Aug 2023 16:50:26 +0800</pubDate><description><![CDATA[LIO-SAM是Tixiao又一次的升级,主要是加入了IMU进行了紧耦合(而gps和loop可有可无,不是主要更新部分).本着学习为目的对整个工程进行了分析.但实际上这并不是一个SLAM工程,其主要是输出一个高频率的里程计信息这四个文件。]]></description><category></category></item><item><title><![CDATA[raspberry4 ubuntu安装ros和astra 驱动]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/130620527</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/130620527</guid><author>jiajiading</author><pubDate>Thu, 24 Aug 2023 16:47:29 +0800</pubDate><description><![CDATA[Cmakelist中的添加libuvc是通过find_package(libuvc REQUIRED) 寻找库的，但是新安装的libuvc 0.0.6 没有生成 libuvc.cmake文件（不知道原因），所以编译时libuvc_INCLUDE_DIRS、libuvc_LIBRARIES 都是空的！解决办法:在ros_astra_camera的CmakeList.txt文件的find_package(libuvc REQUIRED)下方添加两条语句（根据你libuvc安装的地址修改），编译就OK了。]]></description><category></category></item><item><title><![CDATA[ORB-slam2源码分析（2）- 程序入口system类]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/119670189</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/119670189</guid><author>jiajiading</author><pubDate>Mon, 29 Nov 2021 17:26:16 +0800</pubDate><description><![CDATA[ORB-slam2源码分析（2）- 程序入口system类 system构造函数TrackMonocular 单目相机入口
orb-slam2支持单目，双目，rgbd三种类型摄像机进行slam，其整个程序入口和出口均在system类中。因此如果需要将orb-slam2在ros中运行，可将system类进行重新封装（其他都可不做修改），在ros节点中调用system类即可，这点非常友好。
system构造函数
system函数为整个算法的入口，包括所有线程的开辟，各个模块的初始化，及其摄像机类型的选择；
//]]></description><category></category></item><item><title><![CDATA[ORB-slam2源码分析（1）- 整体框架]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/119645550</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/119645550</guid><author>jiajiading</author><pubDate>Mon, 29 Nov 2021 17:25:57 +0800</pubDate><description><![CDATA[ORB-slam2源码分析（1） 前言整体框架TrackingLocal mappingLoop closing总结
前言
非科班出身，也非擅长业务，仅用来学习记录，扩展知识。主要熟悉的是激光slam，但vslam与激光slam整体框架理论基本相同，但是具体技术细节差距较大，希望从中获取更多知识点，可取长补短。从技术角度看，相结合是趋势；从实际出发，需具体看产品定位；
vslam包含许多视觉相关知识点，相对于laser，知识点及其理论都较为复杂，基于学习目的和精力有限，文档仅分析整个框架和记录部分核心功能源]]></description><category></category></item><item><title><![CDATA[hdl-graph-slam思想解读（3）-总结]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/113388802</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/113388802</guid><author>jiajiading</author><pubDate>Wed, 24 Feb 2021 01:02:54 +0800</pubDate><description><![CDATA[hdl-graph-slam思想解读（5）-总结 

]]></description><category></category></item><item><title><![CDATA[hdl-graph-slam思想解读（2）-后端处理]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/113388471</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/113388471</guid><author>jiajiading</author><pubDate>Wed, 24 Feb 2021 01:02:40 +0800</pubDate><description><![CDATA[hdl-graph-slam思想解读（3）-后端处理 

]]></description><category></category></item><item><title><![CDATA[hdl-graph-slam思想解读（1）-整体框架]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/113388323</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/113388323</guid><author>jiajiading</author><pubDate>Wed, 24 Feb 2021 01:02:23 +0800</pubDate><description><![CDATA[hdl-graph-slam思想解读（1）-整体框架 功能介绍点云预处理平面检测激光里程计其他后端融合
hdl-graph-slam是一个较为经典的3d 激光slam开源算法，其代码架构简洁，且调用通用Eigen和g2o库进行核心运算，非常适合对slam整个架构的学习。
hdl-graph-slam不仅融合了imu、gps、平面、激光等多种输入，同时也带闭环检测等后端处理，即完整的一个slam架构。
功能介绍
hdl-graph-slam是一个非常优秀的SLAM框架，其功能较为全面（但不一定最优），包括平面]]></description><category></category></item><item><title><![CDATA[lego-loam 同步构建2d栅格导航地图]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/111867010</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/111867010</guid><author>jiajiading</author><pubDate>Tue, 05 Jan 2021 09:01:16 +0800</pubDate><description><![CDATA[lego-loam 同步构建2d栅格导航地图 
基于目前移动机器人的应用可知，目前3d slam存储的主要为点云地图，由于其特征点比2D激光器数据更加丰富，因此用于后期的定位具有更好的抗干扰性和鲁棒性。但是用于导航的基本路径规划功能，目前仍主要依赖于2d栅格地图。
其中16年开源的cartographer的3dslam则同步发布了2d map格式，而存储的点云也是基于stream自定义格式，而不是传统的点云地图。因此定位时可直接使用3d定位结果，2d地图结果进行导航。
本文参考cartographer中2d]]></description><category></category></item><item><title><![CDATA[lego-loam代码分析（4)-mapping流程]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/111690107</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/111690107</guid><author>jiajiading</author><pubDate>Tue, 05 Jan 2021 09:00:47 +0800</pubDate><description><![CDATA[lego-loam代码分析（4）-mapping流程 run主流程transformAssociateToMap提取submap（extractSurroundingKeyFrames）非闭环处理闭环处理当前帧降采样（downsampleCurrentScan）
run主流程
整个mapping为一个独立线程完成，通过输入的传感器信息：特征点云和odometry两个信息，进行mapping；其程序入口为
void MapOptimization::run() {}

其整个slam流程如下：

当前帧根据o]]></description><category></category></item><item><title><![CDATA[lego-loam代码分析（3）-激光里程计]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/111173916</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/111173916</guid><author>jiajiading</author><pubDate>Tue, 22 Dec 2020 22:59:51 +0800</pubDate><description><![CDATA[lego-loam代码分析（3）-激光里程计匹配初始化两次LM匹配平面匹配角点匹配
上节分析了其点云特征提取，目的是用于帧间匹配获取激光里程计。而像常见的点云匹配如NDT、ICP等匹配算法，均是对整个点云进行匹配。而loam为提高效率和实时性，则采用特征点进行匹配。
匹配初始化
由于激光里程计相临两帧点云进行匹配获取，即当前帧与上一帧进行匹配，故开启slam收到的第一帧点云数据则需要对cloud_last进行赋值，即对上一帧进行记录和存储，不做匹配运算。
  pcl::PointCloud&lt;Point]]></description><category></category></item><item><title><![CDATA[lego-loam代码分析（2）-corner和surface特征点提取]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110956077</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110956077</guid><author>jiajiading</author><pubDate>Wed, 16 Dec 2020 17:25:20 +0800</pubDate><description><![CDATA[lego-loam代码分析（2）-角点和平面点提取坐标修正（adjustDistortion）计算平滑参数 （calculateSmoothness）点云屏蔽标记（markOccludedPoints）平面点和角点提取 extractFeatures（）角点特征点提取地平面特征点提取相对较平的平面点云总结
FeatureAssociation.cpp同样为独立线程，主要功能是根据带有聚类后地面和非地面的点云数据进行特征值提取，主要提取其平面特征、角点特征；同时采用匹配算法计算前后两帧激光视角下的位姿转换；从]]></description><category></category></item><item><title><![CDATA[lego-loam代码分析（1）-地面提取和点云类聚]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110948284</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110948284</guid><author>jiajiading</author><pubDate>Thu, 10 Dec 2020 13:19:57 +0800</pubDate><description><![CDATA[lego-loam代码分析（1）-地面提取和点云类聚概述imageProjecion.cpp获取点云角度范围 （findStartEndAngle()）无序的点云变为有序（projectPointCloud()）地面分割groundRemoval()点云聚类（cloudSegmentation）点云发布
概述
目前最新开源的3d slam算法lego-loam，为loam的改进版。同时另有高人进行了工程优化。
其原作者github
其工程优化的github
个人对其工程优化后的代码和原理进行了基本分析；
包]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（19）-算法思想总结]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110373696</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110373696</guid><author>jiajiading</author><pubDate>Wed, 02 Dec 2020 09:10:43 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（18）-   算法思想总结前端处理整体思想前端处理流程后端处理闭环检测后端处理流程总结
引入cartographer算法官方框架图。

从cartographer官方结构框图可看出，其算法整体结构遵从slam基本结构，包括前端处理和后端处理两部分。其中前端处理即cartographer中的Local SLAM，其主要功能是输入传感器信息通过scan-match获取帧间相对位姿关系，构建submap并获取laser-scan与submap相对位姿关系；而后端处理即为ca]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（18）- PoseGraph2D整体处理流程2]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110183867</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110183867</guid><author>jiajiading</author><pubDate>Fri, 27 Nov 2020 11:32:46 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（18）-   PoseGraph2D整体处理流程2后端（后台）任务压栈AddWorkItem后台任务执行循环DrainWorkQueue后端图优化任务管理函数HandleWorkQueue优化函数RunOptimization总结
接上篇。
后端（后台）任务压栈AddWorkItem
后端优化的操作基本都是采用线程池在后台运行，cartographer采用了一个个任务放入任务队列work_queue_中，然后排队调用执行。
// 将一个函数地址加入到一个工作队列中
v]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（17）- PoseGraph2D整体处理流程1]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110087915</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110087915</guid><author>jiajiading</author><pubDate>Wed, 25 Nov 2020 16:41:38 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（14）-   PoseGraph2D整体处理流程
前面分析了位姿图结构，优化的原理，约束的形成以及优化求解等具体实现，同时也提前介绍了PoseGraph2D内的成语变量。本节作为最后一节将整个后端的优化的流程（包括如何调用约束以及求解器）进行分析。


...]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（16）-后端优化求解器optimization_problem_具体实现]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110082131</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110082131</guid><author>jiajiading</author><pubDate>Tue, 24 Nov 2020 16:46:43 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（16）-  后端优化求解器optimization_problem_具体实现OptimizationProblem2D成员构造函数优化对象接口优化求解实现Solve总结
根据前面分析的图优化基本结构可知，已知节点、约束和闭环约束条件后，则可进行超定方程组求解，即求解所有节点的最佳位姿，使得超定方程组误差最小。optimization_problem_则是优化求解器，采用的是SPA(Sparse Pose Adjustment)方法进行优化，较早的开源SLAM算法kat]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（15）- ConstraintBuilder2D约束构造器]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/110003197</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/110003197</guid><author>jiajiading</author><pubDate>Tue, 24 Nov 2020 11:39:31 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（10）-  ConstraintBuilder2D约束构造器ConstraintBuilder2D成员ConstraintBuilder2D构造
约束构建器主要是完成创建和维护节点与submap之间的位置关系，其中闭环检测则是由ConstraintBuilder2D完成，即submap与历史节点的约束，或者节点与历史submap之间的约束。
ConstraintBuilder2D成员
    // 约束器配置内容
  const constraints::proto:]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（14）- 后端优化核心类PoseGraph2D简介]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/109994306</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/109994306</guid><author>jiajiading</author><pubDate>Mon, 23 Nov 2020 17:30:20 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（14）-   后端优化核心类PoseGraph2D
Mapbuilder中引入了整个slam分为前端和后端两部分，其中后端核心接口为PoseGraph，并且分为2d和3d两种情况，2d声明接口为PoseGraph2D。
global_trajectory_builder中引入了后端PoseGraph2D核心类接口的调用，即前端匹配的后的结果类matching_result加入到后端````AddNode``。

...]]></description><category></category></item><item><title><![CDATA[cartographer 代码思想解读（13）- 后端优化基本思想]]></title><link>https://blog.youkuaiyun.com/jiajiading/article/details/109856703</link><guid>https://blog.youkuaiyun.com/jiajiading/article/details/109856703</guid><author>jiajiading</author><pubDate>Mon, 23 Nov 2020 11:28:30 +0800</pubDate><description><![CDATA[cartographer 代码思想解读（12）-   后端优化基本思想



]]></description><category></category></item></channel></rss>