
数学
文章平均质量分 76
点云SLAM
目前工作领域为高精SLAM和点云数据处理相关行业,定位算法负责人。读研期间主要图像处理和三维点云数据处理方向的研究学习,工作以来一直在三维点云数据处理、三维重建、机器人感知、机器状态估计、SLAM 以及相关三维成像设备标定等相关三维领域的算法研究工作,熟悉PCL、 Open3D、OpenCV和CloudCompare等二、三维处理库
熟悉 CUDA/OpenCL 加速技术,对 LIO-SAM 系列、 VINS-Mono和ORB-SLAM 相关的 SLAM 技术研究开发应用到实际产品中,熟练使用G2O、Ceres和 GTSAM 优化库和数值优化原理。可商务合作,欢迎私聊!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Eigen 中矩阵的拼接(Concatenation)与 分块(Block Access)操作使用详解和示例演示
方法用途是否动态备注任意子块读写否高效逐行拼接是常用于采样/流式输入先收集后合并是推荐稀疏矩阵Triplet方式大规模稀疏拼接是图优化必备.segment()拆向量是高效。原创 2025-07-28 16:53:08 · 736 阅读 · 0 评论 -
Eigen::Array::exp()函数、cast()数据类型转换函数详解和代码示例
特性说明操作模式对每个元素计算exp(x)常用于Softmax、核函数、指数衰减、激活函数等使用建议用形式调用替代 std::exp更快更简洁,支持向量化Eigencast是 Eigen 矩阵/向量对象的成员函数,用于返回一个新的矩阵/向量对象,该对象的数值类型被转换成指定的目标类型。NewType是你想转换成的标量类型,比如doublefloatint等。返回类型是原矩阵大小不变,但数值类型为NewType的新矩阵。原创 2025-07-24 15:19:03 · 434 阅读 · 0 评论 -
Hessian矩阵在多元泰勒展开中如何用于构造优化详解
minx∈Rnfxx∈Rnminfx假设fxfx在邻域内具有二阶连续偏导数(即可进行泰勒二阶展开)。元素含义Hessian描述函数的局部“曲率”,越接近正定越利于优化泰勒展开二阶项构造了 Newton 方法更新公式的基础牛顿法本质是用一个二阶近似模型最小化原函数优缺点二次收敛 vs. 高计算量(尤其在高维空间)原创 2025-07-15 17:45:12 · 595 阅读 · 0 评论 -
泰勒展开(Taylor Expansion)详解以及在工程实践(SLAM)中的应用实例
项目内容使用条件非线性函数可微,输入误差较小(局部线性近似有效)优点计算快速,适合高频状态估计(如 IMU 融合)局限线性化误差大时不准,需二阶或采样方法(如 UKF、蒙特卡洛)常用工具雅可比矩阵、协方差传播、残差线性化内容表达式作用一阶泰勒展开fx≈fx0∇f⊤Δxfx≈fx0∇f⊤Δx一阶近似二阶泰勒展开加上12Δx⊤HΔx21Δx⊤HΔx曲率控制精度更高极值判断。原创 2025-07-09 17:34:59 · 1175 阅读 · 0 评论 -
为什么国内的教科书编写的如此晦涩?
很多人在学习过程中都有类似感受:中国的教科书“原创 2025-07-08 14:43:32 · 853 阅读 · 0 评论 -
Eigen中Isometry3d的使用详解和实战示例
/ 表示一个 SE(3) 类型的刚性变换double表示浮点数精度;3表示三维空间;Isometry表示保持距离和角度不变的变换(旋转 + 平移,非仿射变换)。原创 2025-07-08 14:32:37 · 370 阅读 · 0 评论 -
数学中多元函数微分(偏导与全微分)
d2f∂2f∂x2dx22∂2f∂x∂ydxdy∂2f∂y2dy2d2f∂x2∂2fdx22∂x∂y∂2fdxdy∂y2∂2fdy2多元泰勒展开;极值判断(二阶充分条件);曲面曲率研究等。名称表达式含义偏导∂f∂x∂x∂f单变量变化率全微分df∑∂f∂xidxidf∑∂xi∂fdx。原创 2025-07-05 14:46:15 · 874 阅读 · 0 评论 -
数学中微分与导数的理解和区别
设函数yfxy = f(x)yfx,在点xxx附近有一个微小的增量Δx\Delta xΔxΔyfxΔx−fxΔyfxΔx−fxf′xlimΔx→0ΔyΔxf′xΔx→0limΔxΔy存在,则称函数在xxx处可导,此极限值为导数。若函数yfxy = f(x)yfx在点xxxdyf′x⋅dxdyf′x⋅dxdxdxdx。原创 2025-07-04 17:56:26 · 951 阅读 · 0 评论 -
GTSAM中自定义因子图详解和实战示例
以一个二维误差、一个变量的因子public:// 残差函数if (H) {// 计算残差对 pose 的雅可比矩阵*H = ...;原创 2025-07-01 17:17:45 · 423 阅读 · 0 评论 -
Eigen中transposeInPlace()和transpose()的使用详解和示例代码
特性类型成员函数成员函数返回值返回转置副本无返回值是否修改原矩阵❌ 否(保留原矩阵)✅ 是(原地转置)适用于方阵✅✅适用于非方阵✅❌ 仅适用于方阵使用场景保留原始数据,创建新矩阵需要节省内存,原地修改矩阵➜ 返回副本,不修改原矩阵,适用于所有维度。➜ 原地转置,仅限方阵,节省内存。非方阵请勿使用。可与memcpy配合用于与 OpenGL / DirectX / 自定义矩阵格式对接。原创 2025-06-30 15:23:04 · 328 阅读 · 1 评论 -
基于Eigen库实现OBB有向包围盒算法
OBB(Oriented Bounding Box,方向包围盒)是一种比 AABB(Axis-Aligned Bounding Box)更紧凑的点集包围方法,它不局限于轴对齐,而是可以旋转贴合物体方向。适用于碰撞检测、模型压缩、包围体可视化等。原创 2025-06-26 14:38:40 · 482 阅读 · 0 评论 -
Eigen 库EIGEN_MAKE_ALIGNED_OPERATOR_NEW详解和实战示例
在 Eigen 库中,是一个用于确保对象在堆上创建时内存对齐的宏,特别适用于包含 Eigen 向量或矩阵成员变量的类。原创 2025-06-25 17:55:07 · 361 阅读 · 0 评论 -
微分流形(Differentiable Manifold)的核心概念、理解以及在SLAM中的应用
通俗理解流形就是一个局部看起来像欧几里得空间的对象。地球是球面(2D 流形),但你站在上面,局部看就是一张平面图(R2R2你无法把整个地球“摊平”,但你可以画“地图”,每张地图描述一小块微分几何工具在 SLAM 中的典型作用切空间TpMT_pMTpM描述在非欧空间如SO3SE3SO3SE3中的误差线性化微分形式底层支持残差定义、积分推导,如 IMU 状态传播等Jacobian非线性误差项线性化后对变量导数的估计,是优化核心流形 & 指数映射。原创 2025-06-25 15:31:29 · 1153 阅读 · 0 评论 -
数学中微分大白话理解
如果某个函数fxf(x)fx在某点x0x_0x0limΔx→0fx0Δx−fx0ΔxΔx→0limΔxfx0Δx−fx0这个极限存在,那么我们就说fff在x0x_0x0处可微分,而这个极限值就是函数在该点的导数。微分是研究“变化率”的工具,告诉你某个量变化一点点,会导致另一个量怎样变化。原创 2025-06-23 11:28:29 · 1048 阅读 · 0 评论 -
GTSAM中gtsam::noiseModel::Isotropic::Precision的使用详解和实战示例
在 GTSAM(Georgia Tech Smoothing And Mapping)库中,是用于构造一个的静态工厂函数,使用**精度矩阵(precision matrix = 信息矩阵 = 协方差的逆)**来定义噪声模型。原创 2025-06-19 10:59:33 · 646 阅读 · 0 评论 -
Eigen中noalias矩阵计算优化的使用详解
优势描述避免别名冲突提高数值稳定性,防止覆盖提高性能减少临时对象创建适合高频运算特别是迭代中大矩阵或稀疏矩阵计算。原创 2025-06-10 13:53:21 · 340 阅读 · 0 评论 -
马氏链(Markov Chain Model)模型知识详解(1)
未来状态只依赖于当前状态,而与过去状态无关。PXn1x∣XnxnXn−1xn−1X0x0PXn1x∣XnxnPXn1x∣XnxnXn−1xn−1...X0x0PXn1x∣Xnxn其中,XnX_nXn是在时间nnn的状态。原创 2025-06-06 09:58:22 · 1323 阅读 · 0 评论 -
Eigen库介绍以及模块划分和相关示例代码
官网头文件库:完全基于模板,无需编译,使用时只需。跨平台:纯 C++ 实现,兼容 Windows、Linux、macOS。性能优化:通过表达式模板(expression templates)进行懒惰求值,极大地减少中间变量生成。支持多线程/并行:可选支持 OpenMP/Threading Building Blocks。Matrix3f A;// 3x3 浮点矩阵4, 5, 6,7, 8, 9;// 矩阵向量乘法return 0;原创 2025-06-02 15:31:46 · 1027 阅读 · 0 评论 -
线性代数的本质大白话理解
【代码】线性代数的本质大白话理解。原创 2025-04-28 14:03:46 · 1556 阅读 · 0 评论 -
Eigen中向量(VectorXf)采用数组赋值方式推荐
是最推荐的方式,因为它不会创建新的对象,而是直接引用已有数据。类型的指针指向数组或动态分配的数据,你可以用以下几种方式将数据赋值给。是最推荐的方式,因为它不会创建新的对象,而是直接引用已有数据。如果数据是来自外部(如传感器数据、文件读取),如果数据是来自外部(如传感器数据、文件读取),:当你需要完整复制数据,而不是映射。:当你只想赋值部分数据或处理数据时。指向的是已知的 3 个值,可以用。:当你需要完整复制数据,而不是映射。:当你只想赋值部分数据或处理数据时。指向的是已知的 3 个值,可以用。原创 2025-03-28 09:23:27 · 524 阅读 · 0 评论 -
C++ 平面拟合原理和最小法实现示例
平面拟合算法的核心目标是从三维空间中的一组离散点中找到最优拟合平面,使得这些点到该平面的垂直距离之和最小。当数据中存在噪声或离群点时,RANSAC(随机采样一致性)算法可提高拟合鲁棒性。PCA方法通过分析点云的协方差矩阵,找到方差最小的方向(即法向量方向)。最小奇异值对应的右奇异向量即为法向量 ( \mathbf{v} )。通过上述方法,可根据数据特性选择合适算法,平衡精度、速度和鲁棒性。最小二乘法通过最小化所有点到平面的。进行特征分解,得到特征值。,消去截距 ( D )。原创 2025-03-11 19:00:57 · 1334 阅读 · 0 评论 -
C++快速floor操作
【代码】C++快速floor操作。原创 2025-03-10 17:00:50 · 217 阅读 · 0 评论 -
简单AABB包围盒(轴向包围盒)碰撞检测实现(C++代码)
AABB包围盒算法是基于轴对齐的边界框,通过在三维空间中定义一个最小的长方体来包围物体。该长方体的边与坐标轴平行,从而简化了计算过程。算法的核心在于快速判断两个物体是否可能发生碰撞,通过比较它们的AABB包围盒是否重叠来实现。如果两个包围盒在任意轴上不重叠,则可以确定这两个物体不会发生碰撞,从而避免了复杂的精确碰撞检测。这种方法在计算机图形学、物理仿真和游戏开发中广泛应用,因其高效性和简单性而备受青睐。原创 2025-01-07 15:33:21 · 645 阅读 · 0 评论 -
角度变量和李群SE(3)之间的转换
【代码】角度变量和李群SE(3)之间的转换。原创 2025-01-06 23:30:14 · 287 阅读 · 0 评论 -
幂迭代算法计算主特征向量(Power iteration algorithm)
幂迭代算法的核心思想是利用矩阵 M的特征值和特征向量的性质。如果 M是一个方阵,且其特征值 λλ和对应的特征向量 e 满足 Me=λe,那么对于任意初始向量 v0,迭代序列 vt=Mtv0将收敛于特征值最大的特征向量(即主特征向量)。这是因为矩阵的幂会逐渐将向量的方向调整到主特征向量的方向。例如,在数据挖掘中,可以利用幂迭代算法找到数据集的主成分,从而进行降维处理1。这段代码定义了一个简单的幂迭代函数,用于计算给定矩阵的主特征向量。通过多次迭代和归一化操作,最终得到主特征向量。原创 2024-11-21 14:13:26 · 576 阅读 · 0 评论 -
OBB方向包围盒算法实现
如何进行2D旋转矩形的碰撞检测,可以使用一种叫OBB的检测算法(Oriented bounding box)方向包围盒。这个算法是基于SAT(Separating Axis Theorem)分离轴定律的。而OBB不仅仅是计算矩形的碰撞检测,而是一种算法模型。简单解释一下概念,包围盒和分离轴定律。包围盒:是根据物体的集合形状,来决定盒子的大小和方向,这样可以选择最紧凑的盒子来代表物体。见下图...转载 2018-09-28 13:48:36 · 11040 阅读 · 1 评论 -
基函数与函数空间
引言在学习线性回归模型的时候就会遇到基函数,可能我们会遇到多项式基函数、高斯基函数、sigmoid基函数,当然在高等数学和信号系统中还经常会碰到傅里叶基。有时候,不禁要问,这些基函数为什么这么设计?这些基函数的作用是什么?后来发现基函数是核方法和字典训练的基础,于是乎,我逐渐有了一些例如特征转换和映射、字典元素的概念。不过还是对基函数与函数空间的关系、基函数的深层认识模棱两可。我希望能通过这...转载 2018-09-05 16:10:57 · 18199 阅读 · 1 评论