- 博客(79)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注

原创 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法
本系列博客计划写两篇,第一篇侧重原生态论文重点内容翻译解释及公式推导,第二篇侧重实际代码细节。将会不定期更新,文中所用图片如无声明来源网络和论文。文章目录写在前面AbstractChapter 1 Introduction1.1 ContributionsChapter2 Common concepts2.1 rotation2.2 registration2.3 sampling2.4 sla...
2019-04-11 21:57:12
15535
22
原创 ceres::Problem求解最小二乘总结
专门解决最小二乘问题minx12∑iρi∥fixi1xik∥2s.t.lj≤xj≤ujminxs.t.21∑iρi∥fixi1xik∥2lj≤xj≤ujpublic:// 在继承的类中实现Evaluate函数,填充残差和jabocian注意jacobian是残差对状态的导数,不一定是观测方程对状态的导数。如果残差定义为r。
2024-08-07 11:59:35
724
原创 ceres::GradientProblem求解一般最小化问题
注意在 GradientProblem的构造函数中可以传入参数的Manifold,用于更新非欧式空间的参数。对于一般的无约束最小化问题,使用。对应的cost function有。这个问题的一般最小化解法如下。
2024-08-06 17:07:54
288
原创 ceres中的NormalPrior cost function
但是在估计的过程中,你不希望这个参数随着给定的数据无所限制的进行更新,因为一旦某些数据是错的,这个估计值就会被错误带偏。如果我们提前进行了机械测量,值为。这个先验观测的实现如下,注意这个仅限于向量空间的状态估计,如果是SO3这种,需要自定义prior factor。,我们确信无论估计值如何变化,最终的估计值始终在机械测量值附近,那么这个机械测量值就是我们的先验观测。则我们的prior measurement构成的factor为。假设你想估计天线到imu的杆臂这个参数,定义为。
2024-08-05 09:36:05
896
原创 状态估计中的概率基础
高斯分布是一个理想的分布,在真实世界中,模型往往是非线性非高斯的,为了方便处理,我们经常在使用高斯分布来近似表示真实世界中的PDF的某个点。请注意公式⾥⾯的 p(x) 是概率密度(probability density)⽽不是概率(probability)。变形之后就是贝叶斯公式,这条公式在状态估计中会被反复使用,是最核心的公式,公式本身没有任何假设。计算高斯分布的变换的关键就是计算均值和协方差,直接按照公式去推导即可。P(y)的计算方式就是把x通过积分来边缘化掉的。的条件下的PDF如下。
2024-08-02 12:07:37
1072
原创 从零真正理解SLAM中的边缘化---------详细的理论细节推导
文章目录1 边缘化是什么2 实际SLAM中的优化问题构建2.1 线性高斯系统优化问题的构建(参考状态估计这本书,本节只是简介使得文章前后保持连续性)2.2 非线性非高斯系统(Non Linear Non Gaussian,NLNG)优化问题构建2.3 NLNG问题的Batch形式(实际SLAM优化多帧pose和多路标点的情况)2.4 使用高斯牛顿法求解2.5 考虑一个小的优化问题:仅包含观测模型3 边缘化(Marginalization)3.1 边缘化想做什么事情3.2 边缘化过程详细步骤(以VINS-MO
2024-08-01 12:56:37
939
原创 如何在基于滤波框架的绝对定位系统中融合相对观测
以无人驾驶定位系统为例,融合gnss,imu,轮速,camera LaneMatch(frame to map),lidar scan match(frame to map)。如何融合LIO、VIO这类帧间相对观测呢?本文讨论滤波框架下如何融合LIO,VIO相对观测。
2024-07-31 11:14:36
204
原创 MSCKF里面的两个实用算法策略
以在无人车定位系统中融合GNSS,IMU,轮速,camera/lidar frame to map pose为例,想要在这个绝对定位系统中继续融合LO、VIO的relative pose该怎么做呢?(这里只考虑松耦合)
2024-07-31 10:57:53
867
原创 MSCKF中的camera状态增广
在MSCKF的状态增广公式中不考虑噪声R,所以协方差变换结果就是。是相机pose和imu pose的外参公式构成的非线性函数。对 imu error state的导数。考虑imu和camera之间的外参数。下图是来自《机器人学的状态估计》
2024-07-31 09:18:39
362
原创 矩阵常见分解算法及其在SLAM中的应用
酉矩阵,正交矩阵A的元素是属于复数域矩阵,如果AA∗IAA^{*} = IAA∗I,那么A是属于酉矩阵(Unitary Matrix)A的元素是属于实数域矩阵,如果AATIAA^{T} = IAATI,那么A是属于正交矩阵(Orthogonal Matrix),当然也是Unitary Matrix埃尔米特矩阵,对阵矩阵A的元素是属于复数域矩阵,如果AA∗A = A^{*}AA∗,那么A是属于埃尔米特矩阵(Hermitian Matrix)
2024-07-30 17:18:58
957
原创 ubuntu一些好用的开发工具及其配置
输入某命令,比如conda,按下ctrl+R,会显示和该命令匹配的历史命令的列表有了这个工具再也不用记忆太复杂的命令,只需要知道大概几个单词,输入即可搜索。其搜索源来自于 vim ~/.zsh_history, 这个文件被fzf工具创建,其会记录所有terminal输入过的命令。
2024-07-22 09:09:26
631
原创 deep learning 环境配置
(2)最重要的是在选择CUDA Installer时,要把Driver这一项取消掉([]中是空的表示没有选择安装这项,[x]表示有安装这项),因为第一步已经安装过NVIDIA驱动了。其中对于cuda的要求的11.1版本,所以需要按照这个版本要求安装下cuda,同时记得在bashrc中修改cuda bin、lib的path。进去网站 https://developer.nvidia.com/cuda-toolkit-archive 选择想要安装的cuda版本。
2024-07-10 14:54:09
662
原创 非递减有序数组搜索目标值左右边界
精髓:确定搜索区间是[ , ], 还是[ , )准确切换mid左右边界,正确返回candidate indexclass Solution {public: int countTarget(vector<int>& scores, int target) { const int left_bound = FindLeftBound(scores, target); const int right_bound = FindRightB
2024-06-27 10:40:28
421
1
原创 c++ copy constructor, copy assignment, move constructor, move assignment functions
【代码】c++ copy constructor, copy assignment, move constructor, move assignment functions。
2024-01-31 12:39:38
284
原创 Dynamic binding, polymorphism and Curiously Recursive Template Pattern
C++多态和动态绑定与循环模板模式的区别
2022-07-07 22:58:04
170
原创 Inheritance and Polymorphism in cpp
class Base { public: Base() { Init(); /*this will invoke the base function, because derived object is not been created yet.*/ } virtual ~Base() = default; virtual void Init() { cout << "Base init\n"; } void Run() { Work(); /*this wil.
2021-11-17 14:38:24
368
原创 C++的继承构造函数
class Base { public: Base(int a) : data_(a) {} Base(double b) : data_(static_cast<int>(b)) {} Base(string c) : data_(static_cast<int>(c.size())) {} virtual ~Base() = default; protected: int data_ = 0;};class Derived : public Bas
2021-08-24 13:14:31
225
原创 最优加权最小二乘估计
文章目录Reference最小二乘估计加权最小二乘估计ReferenceMatrix Differentiation加权最小二乘法与局部加权线性回归卡尔曼滤波与组合导航原理(1-2讲)最小二乘估计Z=HX+VZ = HX + VZ=HX+Vwhere, Z is the mmm dimension observation vector; XXX is a nnn dimension state vector; HHH is a m∗nm * nm∗n matrix; VVV is noi
2021-05-09 14:06:11
4145
原创 Lect3 最优化Optimization
文章目录Reference简介损失函数可视化最优化梯度计算使用有限差值进行数值计算微分计算梯度梯度下降Referencehttps://zhuanlan.zhihu.com/p/21387326?refer=intelligentunithttps://zhuanlan.zhihu.com/p/21360434?refer=intelligentunit简介最优化是求一个最佳的WWW使得LLL最小,LLL由score function 和 loss function组成。损失函数可视化
2021-02-18 20:32:42
152
原创 Lect2 线性分类
文章目录ReferenceKNN分类的不足线性分类器Score Function将图像看做高维度的点将线性分类器看做模板匹配偏差和权重的合并技巧图像数据预处理损失函数 Loss function多类支持向量机损失 Multiclass Support Vector Machine Loss正则化(Regularization)Softmax分类器SVM和Softmax的比较Referencehttps://zhuanlan.zhihu.com/p/20918580?refer=intelligentu
2021-02-17 21:04:13
271
原创 Lect1 图像分类
文章目录Reference数据集分类What is cross validationKNN相比1-NN的好处Referencehttps://zhuanlan.zhihu.com/p/20900216数据集分类training settest setvalidation set当dataset数量过少,使用交叉验证的方法来进行超参数tuning。What is cross validatione.g. 1000 images, 平均分为5组,200 images/groupus
2021-02-17 21:02:07
134
原创 初识GCC
文章目录ReferenceGCC/Make/CMake关系编译流程编译参数Third Party Librarygcc 命令参数DemoReferenceGCC/Make/CMake 之 GCCGCC/Make/CMake关系 cmake make gccCMakelist.txt -----> Makefile ----> Cmds ---> BinaryGCC: GNU C Compiler编译流程
2021-02-17 20:58:54
420
原创 git的正确打开方式
文章目录@[toc]Ref:强烈安利1 基础篇1.1 本地提交1.2 创建分支、分支切换1.3 merge合并分支1.4 rebase合并分支2 高级篇2.1 分离HEAD2.2 相对引用2.3 撤销变更2.3.1 reset:真正的回退2.3.2 revert(推荐):以进为退3 移动提交记录3.1 cherry-pick摘樱桃3.2 交互式rebase4 杂项4.1 只取一个提交记录4.2 提...
2020-04-19 13:17:31
1822
原创 点云地面检测算法
点云地面检测算法1 为什么对点云进行地面检测2 直接法3 地面拟合法3.1 平面方程和平面法向量的表示3.2 拟合地面方程Ax+By+Cz+d=04 条件筛选法5 总结1 为什么对点云进行地面检测原因1: 从三维激光雷达获取的点云信息往往是稠密的,对三维点云进行分割segmentation或者聚类clustering是对点云的基本操作之一。在进行分割之前,首先将地面点提取出来,会加速后面的分...
2020-04-18 19:11:29
10442
4
原创 hdl graph slam解析
github/hdl_graph_slam传送门paper: A Portable 3D LIDAR-based System for Long-term and Wide-area People Behavior Measurement这位老兄写的代码可读性非常好,大佬就是大佬。。。总结了一个图如下,总的分为4大模块,分别是:点云预处理;地平面检测;scan matching的Odom...
2020-04-18 10:48:01
2488
1
原创 ICP算法的推导和实现
1 ICP算法的推导Reference Paper: LiDAR-Camera Calibration using 3D-3D Point correspondences目标函数, QQQ为target cloud, PPP为source cloudF(t)=∑i=1n∥(RPi+t)−Qi∥2F(t)=\sum_{i=1}^{n}\left\|\left(R P_{i}+t\right...
2020-04-12 11:59:19
1267
2
原创 Ceres Tutotial(1) —— 编程应用基础
文章目录重要的Reference1 install2 最小二乘问题的ceres表示3 求导3.1 自动求导3.2 Numeric Derivatives3.3 Analytic Derivatives4 Powell’s Function4.1 Powell’s Function的多个CostFunctor写法4.2 写成一个cost functor的方法5 Curve Fitting5.1 自动...
2019-11-27 21:58:01
921
原创 Ceres Tutotial(2) —— 最小二乘建模
文章目录写在前面1 CostFunction和SizedCostFunction1.1 细节对比1.2 两种定义cost function的完整代码对比2 AutoDiffCostFunction3 其他cost function4 用法不清楚的模块5 LossFunction6 LocalParameterization7 AutoDiffLocalParameterization8 Probl...
2019-11-27 21:56:35
2324
1
原创 侯捷的c++教程(4)
文章目录1 类的实例化对象object直接访问私有成员的两个特列2 转换函数1 类的实例化对象object直接访问私有成员的两个特列//------------------------------------------------------// object直接访问私有成员的两个特列// 1. 类内的object// 2. 友元函数//-----------------------...
2019-11-16 23:33:08
649
原创 侯捷的c++教程(3)
文章目录1 Object Oriented Programming(OOP)1.1 Composition(复合):has-a1.2 Delegation(委托): Composition by reference1.3 Inheritance(继承):is-a2 虚函数与多态2.1 Inheritance with virtual2.2 Inheritance+Composition的构造和析构...
2019-11-16 15:57:00
688
原创 侯捷的c++教程(2)
文章目录1 带有指针成员的class写法细节1 带有指针成员的class写法细节更多信息访问shunmian的github资料主要注意点:拷贝构函数赋值构造函数#ifndef __MYSTRING__#define __MYSTRING__class String{public: // 普通构造函数 String...
2019-11-16 01:17:53
965
原创 侯捷的c++教程(1)
文章目录1 不包含指针的class写法细节1.1 overloading1.2 构造函数放在private区域1.3 const成员函数1.4 传入参数都使用Reference1.5 返回参数尽量使用reference,有的不能1.6 friend1.7 运算符重载 —— 成员函数写法1.8 运算符重载 —— 非成员函数写法1.9 代码实践和注释总结详情可以参看github资料下面是简介和代码...
2019-11-16 00:00:37
2569
2
原创 PCL入门tutorial
文章目录1 IO2 kd tree和octo tree2.1 kdtree search2.2 octotree search2.3 点云压缩 octree_pointcloud_compression2.4 其他八叉树应用3 点云的可视化4 点云滤波4.1 直通滤波器PassThrough4.2 VoxelGrid下采样4.3 statistical outlier removal4.4 使用参...
2019-11-15 22:14:07
1820
Robotics - Modelling, Planning and Control (Springer, 2009)
2017-10-29
Micrium-Probe-TargetCode-410
2016-11-28
ubuntu下无法打开USB串口
2016-02-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人