手撕自动驾驶算法
文章平均质量分 79
介绍自己学习和工作中运用的自动驾驶算法
令狐少侠、
**
展开
-
多目标跟踪数据关联算法
wkts跟踪门的作用是将观测回波分配给已建立的目标轨迹或者新目标轨迹的一种粗略检验方法, 是机动目标跟踪中首当其冲的问题。跟踪门是跟踪空间中的一块子空间 ,中心位于被跟踪目标的预测状态 ,其大小由接收正确回波的概率确定。设置的跟踪门的质量好坏直接影响着数据关联算法的计算量的大小 ,也影咱着跟踪起始和跟踪终结以及航迹质量。在多目标跟踪的数据关联过程 中 ,如果没有量测落跟踪门内 ,则用目标状态的一次预测更新航迹;如果只有单个量测落在被跟踪目标的跟踪门内 , 则此量测被直接用于轨迹更新;原创 2023-07-14 17:58:49 · 2505 阅读 · 0 评论 -
不确定推理方法
证据理论可处理由不知道所引起的不确定性,它采用信任函数而不是概率作为度量,通过对一些时间的概率加以约束一建立信任函数而不必说明精确的难以获得的概论,当约束限制为严格的概率时,它就进而成为概率论。原创 2023-06-20 21:07:08 · 458 阅读 · 0 评论 -
KL散度理解
相对熵(relative entropy),又被称为Kullback-Leibler散度(Kullback-Leibler divergence)或信息散度(information divergence),是两个概率分布(probability distribution)间差异的非对称性度量。在信息理论中,相对熵等价于两个概率分布的信息熵(Shannon entropy)的差值。KL散度的定义:一个随机变量X的可能值为Xx1x2...xn,对应的概率为pipXx。原创 2022-09-20 13:31:29 · 333 阅读 · 0 评论 -
手撕自动驾驶算法——词袋模型Bag-of-Words(BoW)
词袋模型词袋模型(Bag-of-Words,BoW)把特征当成一个个单词,通过比较两张图片中出现的单词是否一致,来判断这两张图片是否是同一场景。使用一种 k 叉树来表达字典。它的思路很简单,类似于层次聚类,是 k-means 的直接扩展。假定我们有 N个特征点,希望构建一个深度为 d,每次分叉为 k 的树,那么做法如下:最终在叶子层构建了单词,而树结构中的中间节点仅供快速查找时使用。这样...原创 2019-08-26 20:19:50 · 3989 阅读 · 1 评论 -
手撕自动驾驶算法——相机成像与畸变校正
1.针孔相机模型1.1 畸变(1)原创 2019-06-19 18:32:29 · 1423 阅读 · 1 评论 -
手撕自动驾驶算法——非线性优化
1.状态估计问题1.1 最大后验与最大似然经典 SLAM 模型:其中 xk为相机的位姿,u 为输入数据,即为采集到的数据假如我们在 xk 处观测到路标 yj,对应到图像上的像素位置 Zk,j,那么我们的观测方程可以表示为:在运动和观测方程中,通常假设两个噪声项 wk,vk,j 满足零均值的高斯分布:状态估计问题:通过带噪声的数据 z和 u ,推断位姿 x 和地图 y(以及它们的...原创 2019-06-20 11:16:10 · 2216 阅读 · 1 评论 -
手撕自动驾驶算法——IMU测量模型、运动模型、误差模型
从零开始的 IMU 状态模型推导原创 2019-10-17 19:05:44 · 9704 阅读 · 3 评论 -
手撕自动驾驶算法——四元素
基本性质用旋转矩阵来表示旋转很直观,但过于冗余,因为旋转只有三个自由度,而旋转矩阵有九个量。表征旋转还可以用欧拉角,但有万向锁问题,而且计算也不方便。旋转向量(即李代数 so(3))和四元数是更常用的表征方法,在惯性导航中四元数似乎更普遍些。这里采用四元数。一个四元数由一个实部和三个虚部构成,虚部在前实部在后:q=q1i+q2j+q3k+q4=[vTq4]T{\bf q} = q_1 i ...原创 2019-10-19 12:49:20 · 827 阅读 · 0 评论 -
手撕自动驾驶算法——四元素插值
四元数插值常见的有线性插值、球面线性插值等线性插值(Linear Interpolation,简称Lerp)四元数表示旋转时是单位四元数,这种插值方式,相当于我们是沿着一条直线(也就是圆上的一个弦)进行插值的,这样插值出来的四元数不是单位四元数归一化线性插值(Normalized LinearInterpolation,简称Nlerp)有其他问题的。如下图所示,在同等时间内, vt ...原创 2019-09-23 14:30:42 · 2258 阅读 · 2 评论 -
手撕自动驾驶算法——多元高斯分布与边缘化
layout: post posttitle: 高斯分布与边缘化date: 2019-10-30 20:14:03categories: VSLAMmathjax: truetags:VSLAM多元高斯分布高斯分布有两种表达方式:协方差矩阵+均值信息矩阵+信息矢量协方差矩阵+均值的方式比较常见,如下左边常数项记为ηηη,p(x)p(x)p(x)可以记为:...原创 2019-12-20 14:56:42 · 344 阅读 · 0 评论 -
手撕自动驾驶算法——贝叶斯角度推导卡尔曼滤波
什么是运动:考虑从k-1时刻到k时刻,位置x如何变化什么是观测:在k时刻xkx_kxk处探测一个路标yjy_jyj运动方程:xk=f(xk−1,uk,wk)x_k=f(x_{k-1},u_k,w_k)xk=f(xk−1,uk,wk)uku_kuk表示传感器的读数,wkw_kwk表示噪声观测方程:在xkx_kxk处看到某个路标点yjy_jyj,产生一个观测数据zk,jz_{k,j}zk,jzk,j=h(yj,xk,vk,j)z_{k,j}=h(y_j,x_k,v_{k,j}原创 2022-03-11 20:43:37 · 802 阅读 · 0 评论 -
手撕自动驾驶算法——Harris角点检测
何为角点下面有两幅不同视角的图像,通过找出对应的角点进行匹配。再看下图所示,放大图像的两处角点区域:角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高,有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。我们可以直观的概括下角点所具有的特征:轮廓之间的交点;对于同一场景,即使视角发生变化,通常具备稳定性质的特征;该点附近区域的像素点...原创 2019-10-20 10:52:58 · 2453 阅读 · 2 评论 -
手撕自动驾驶算法——线性插值、双线性插值
简介双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。假设源图像大小为m×nm\times nm×n,目标图像为a×ba\times ba×b。那么两幅图像的边长比分别为:m×nm\times nm×n和N×bN\times bN×b。注意,通常这个比例不是整数,编程存储的时候要用浮点型。目标图像的第(i,j)(...原创 2019-08-14 22:20:28 · 593 阅读 · 1 评论 -
手撕自动驾驶算法——KLT 光流算法
1. Optical Flow2. KLTKLT 算法本质上也基于光流的三个假设,不同于前述直接比较像素点灰度值的作法,KLT 比较像素点周围的窗口像素,来寻找最相似的像素点。参考:总结:光流–LK光流–基于金字塔分层的LK光流–中值流KLT 光流算法详解KLT角点跟踪算法(LK)学习(一)——算法原理...原创 2019-10-20 13:40:53 · 4776 阅读 · 1 评论 -
手撕自动驾驶算法——直方图均衡与自适应直方图均衡
直方图均衡自适应直方图均衡原创 2019-10-24 18:32:41 · 410 阅读 · 0 评论 -
手撕自动驾驶算法——主成分分析PCA
主成分分析PCA是一种最常用的降维方法,通常用于高维度数据集的探索与可视化,还可以用作数据压缩和预处理等。PCA可以把具有相关性的高维度变量合成为线性无关的低维变量,称为主成分。主成分能够尽可能保留原始数据的信息。涉及到的相关术语:方差:是各个样本和样本均值差的平方和的均值,用来度量一组数据的分散程度。S2=∑i=1n(xi−x)2n−1S^{2} = \frac{\sum_{i=1}^{n}(x_i-x)^2}{n-1}S2=n−1∑i=1n(xi−x)2协方差:用于度量两个变量之原创 2022-03-10 14:51:26 · 463 阅读 · 0 评论 -
手撕自动驾驶算法——多目标追踪:imm交互式多模型
IMM模型基本运作原理若只使用一种系统动态模型的卡尔曼滤波器去对一个系统动态模型处于变化之中的目标进行状态跟踪估测的话,会产生不准确性。那么一个很直观的想法就是,使用几种它可能处于的系统动态模型的卡尔曼滤波器模型去分别对它进行状态估测,然后将这些结果以一定的比例进行融合。基于这种思路开发出来的算法就是Interacting Multiple Model(IMM)模型。其中,它将基于目标有可能具备的系统状态模型的卡尔曼滤波模型,利用同一个测量值,来对不同的目标物的系统状态模型,进行状态估测,最后以一定的比原创 2022-03-13 00:35:05 · 4623 阅读 · 1 评论 -
手撕自动驾驶算法——粒子滤波PF
粒子滤波理论一看就懂从贝叶斯到粒子滤波——Round 1从贝叶斯到粒子滤波——Round 2原创 2019-08-20 21:41:13 · 19978 阅读 · 4 评论 -
手撕自动驾驶算法——传感器融合算法:卡尔曼滤波器和扩展卡尔曼滤波器
卡尔曼滤波算法图概述想象一下,你在一辆装有外部传感器的汽车里。汽车传感器可以检测到四处移动的物体:例如,传感器可能检测到自行车。卡尔曼滤波器算法将执行以下步骤:第一次测量 - 过滤器将接收自行车相对于汽车位置的初始测量值。这些测量将来自雷达或激光雷达传感器。初始化状态和协方差矩阵 - 过滤器将根据第一次测量初始化自行车的位置。然后汽车将在一段时间后接收另一个传感器测量值Δt\Delt...原创 2019-08-17 20:24:51 · 5849 阅读 · 2 评论 -
手撕自动驾驶算法——无迹卡尔曼滤波(UKF)
参考原创 2019-08-18 22:08:26 · 30218 阅读 · 9 评论 -
手撕自动驾驶算法——扩展卡尔曼滤波
卡尔曼滤波详细推导把卡尔曼滤波扩展到非线性系统中,称为卡尔曼滤波器(EKF),通常的做法,在某个点附近考虑运动方程及观测方程的一阶泰勒展开,只保留一阶项,即线性部分,然后按照线性系统进行推到。令k-1时刻的均值和协方差矩阵为x^k−1,P^k−1\hat{x}_{k-1},\hat{P}_{k-1}x^k−1,P^k−1.在k时刻,把运动方程和观测方程在x^k−1,P^k−1\hat{x}...原创 2019-08-17 19:37:16 · 537 阅读 · 1 评论 -
手撕自动驾驶算法——卡尔曼滤波KF
卡尔曼滤波器简介——追踪介绍什么是卡尔曼滤波? 你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其它历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统。自动驾驶汽车使用激光雷达跟踪其他车...原创 2019-08-17 11:43:34 · 14786 阅读 · 4 评论