算法
文章平均质量分 75
Flying Youth
这个作者很懒,什么都没留下…
展开
-
深入理解计算机系统第五章------优化程序性能
课程网站编译器本身会对代码进行一定层次的优化, 但某些情况下考虑到潜在的风险,编译器并不会执行优化,此时就需要程序员自己根据实际情况调整代码,提高代码的运行效率。优化层次有algorithm, data representations, procedures, and loops。代码优化需要掌握的知识点:How programs are compiled and executed 程序如何编译和运行?How modern processors + memory systems operate 现代原创 2021-10-09 19:10:25 · 795 阅读 · 0 评论 -
SOFT-SLAM系列论文解读
SOFT-SLAM2在KITTI数据集上霸榜了,作为视觉方案的定位方法,取得了超过激光-视觉融合的方法,凸显了该算法的优越性,所以赶紧紧跟潮流,研读相关论文。SOFT-SLAM: Computationally efficient stereo visual simultaneous localization and mapping for autonomous unmanned aerial vehicles...原创 2021-05-25 11:54:04 · 2428 阅读 · 1 评论 -
状态估计第三讲:非线性高斯系统的状态估计问题
本章讲解非线性非高斯状态下的状态估计问题。重点讲解非线性非高斯的状态转移、离散时间的递归估计和离散时间的批量估计三部分。非线性系统的贝叶斯推断举例:从双目视差推断深度距离。Matlab蒙特卡洛仿真程序...原创 2021-05-19 09:20:58 · 1736 阅读 · 0 评论 -
OpenVSLAM代码解读--视觉跟踪Tracking_Module
Tracking_Module()是该SLAM的前端,主要任务是得到新获取图像的视觉特征与局部地图中的路标点之间的匹配关系,进一步通过优化法PnP计算得到当前时刻相机位姿,并利用一定的规则选择关键帧。流程如下:分层提取ORB特征点,计算描述子:此步骤将灰度图像(如果输入为彩色图像,将转换成灰度图像)信息转换成包含ORB特征点和描述子的图像帧(frame)数据,首先通过下采样得到图像的金字塔,其中原图为金字塔0层,然后在各层级金字塔上提取ORB特征点并计算对应描述子。(猜测:越低层级金字塔的特征点,距离相原创 2021-04-17 21:39:01 · 699 阅读 · 0 评论 -
对极约束的几何认识
对极约束推导过程如上图,两个相机中心分别为 O1O_1O1、O2O_2O2,点P在两幅图像中的投影点分别为p1p_1p1、p2p_2p2,连线 O1O_1O1p1p_1p1 和连线O2O_2O2p2p_2p2在三维空间中会相交于点 P,点O1O_1O1、O2O_2O2 、P 三个点可以确定一个平面,称为极平面(Epipolar plane)。O1O_1O1O2O_2O2 连线与像平面 I1I_1I1、I2I_2I2 的交点分为 e1e_1e1、e2e_2e2, 称之为极点原创 2021-01-24 15:53:23 · 359 阅读 · 0 评论 -
VIO 初始化系列3------ORB-SLAM3 与VINS-Mono初始化比较
参考博客:VIO 初始化系列1------ORB_SLAM3 IMU 初始化代码解读VIO 初始化系列2------VINS-Mono初始化原创 2021-01-13 15:21:54 · 2683 阅读 · 0 评论 -
VIO 初始化系列2---VINS-Mono初始化
参考论文:VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State EstimatorRobust initialization of monocular visual-inertial estimation on aerial robots参考博客:VINS-FUSION源码框架及C++知识点总结参考课程:从0开始手写VIO在参考博客里有介绍过初始化部分的大致流程,趁着现在要做VIO方面的项目, 再来仔细梳理该初始化过程。深原创 2021-01-12 15:12:31 · 460 阅读 · 0 评论 -
VIO 初始化系列1------ORB_SLAM3 IMU 初始化代码解读
1,数据的获取原创 2021-01-10 22:40:08 · 4407 阅读 · 2 评论 -
论文导读: Adaptive Robust Kernels for Non-Linear Least Squares Problems
参考论文: Adaptive Robust Kernels for Non-Linear Least Squares Problems本论文针对slam中的后端非线性优化设计了一个自适应的核函数。1, 常用核函数核函数可用来处理outliar, 在优化中给,残差较大的可视为有更大的概率是outliar, 优化过程中会被赋予更小的权重。 常用的核函数有pseudo-Huber/L1-L2, Cauchy, Geman-McClure, Welsh. 常用的核函数:这几个核函数 可以写成一个通用的原创 2021-01-01 13:48:09 · 433 阅读 · 0 评论 -
基于RGBD的平面提取方法总结
Real-Time Plane Segmentation using RGB-D Cameras:改论文是基于depth图像做的平面检测, 根据depth得到的三维点, 根据三维点所在邻域平面法向量以及平面距原点的距离,对其进行聚类, 具体流程如下:利用depth点上下左右的点,计算出该点邻域平面的法向量;将所有的点根据上述求出来的三维法向量, 分配到三维的voxel grid里去, 这也就是第一步分类(Initial segmentation in normal space);上述分好的类里再根原创 2020-12-12 15:33:33 · 2850 阅读 · 3 评论 -
VINS marginalization源码分析
理论知识:SLAM中的marginalization 和 Schur complement深入理解SLAM中的MarginalizationVINS6边缘化DSO 中的Windowed Optimization边缘化留下的先验信息有哪些://VINS边缘化有两个策略,如果在sliding window中第二近的frame是关键帧则丢弃sliding window中最老的帧、否则丢弃该帧。无论丢弃哪一帧,都需要边缘化。 if (marginalization_flag == MARGIN_原创 2020-08-06 20:58:09 · 630 阅读 · 0 评论 -
三维点云处理技术四:三维点云数据处理基础
三维点云处理技术三:三维点云数据处理基础PCL介绍PCL点云数据结构PCL特性PCL模板库PCL处理一般流程点云滤波方法常见点云滤波方法体素滤波器:统计滤波器点云组织形式与最近邻搜索八叉树KD Tree点云分割、拟合、聚类方法分割拟合语义分割来源:睿慕课《三维点云处理技术和深度学习在三维点云处理中的应用》PCL介绍点云(Point Cloud)是离散点的集合,不仅包括三维点的位置信息,有时也包含点的材质反射信息和RGB信息,广泛应用于机器人抓取、识别、定位与运动规划中。PLC库是专门的处理点云运算的库原创 2020-05-19 17:37:51 · 4726 阅读 · 1 评论 -
Apollo进阶课程第六章:Appolo ROS
参考资料:ROS官网ETHZ ROS课程ROS的基本知识:ROS TF: 描述坐标系旋转的功能节点Ros service:调试技巧:rqt:可视化rqt=rosrun rqt_gui rqt_guirosrun rqt_image_view rqt_image_view 可视化图像rosrun rqt_multiplot rqt_multiplot可视化二维数值rosrun rqt_graph rqt_graph 可视化ROS节点之间的计算图rosrun rqt_consol原创 2020-05-16 15:18:11 · 345 阅读 · 0 评论 -
算法导论第十二章:二叉查找树
**定义:**查找树是一种数据结构,它支持多种动态集合操作,如查找、插入、删除等,既可以用作字典,也可以用作优先队列。二叉树的遍历:二叉树的遍历分为前序遍历、中序遍历和后序遍历,可以采用递归的方法遍历,遍历一棵含n个节点的二叉树时间复杂度为O(n)。中序遍历:先遍历左子树,然后遍历根节点,最后遍历右子树。先序遍历:先遍历根节点,然后左子树,最后右子树。后序遍历:先遍历左子树,然后右子树,最后根节点。二叉树查找:先从根节点开始,查找值大于节点值,则往右子树查找,小于则往左子树查找,直到找到值与查原创 2020-05-13 16:36:01 · 235 阅读 · 0 评论 -
三维点云处理技术三:三维空间变换
三维点云处理技术三:三维空间变换刚体运动变换旋转矩阵推导与性质坐标系旋转欧拉角旋转矩阵的轴角四元数刚体运动变换总结:空间几何变换来源:睿慕课《三维点云处理技术和深度学习在三维点云处理中的应用》刚体运动变换表示旋转变换的参数形式:旋转矩阵,轴角,欧拉角和四元数。旋转矩阵推导与性质两个坐标系a和b,坐标系b各个坐标轴b1、b2、b3b_1、b_2、b_3b1、b2、b3在坐标系a中的表示为:b1=R11a1+R21a2+R31a3b_1=R_{11}a_1+R_{21}a_2+R_{31}a原创 2020-05-12 23:29:50 · 2313 阅读 · 2 评论 -
Apollo进阶课程第一章:自动驾驶行业概览
自动驾驶发展历程著名的无人驾驶公司:18家知名无人驾驶汽车品牌盘点 炫酷的未来科技自动驾驶模块高精度图:给无人车进行预判;通过缩小搜索区域来减少无人车的计算量;生成intensive map,使得感知更准确。定位模块:GPS+RTK+IMU+几何定位(相对地图路标特征的定位)感知系统:相机+激光雷达+雷达轨迹规划模块避障模块控制系统云端安全性方面iso26262:比...原创 2020-05-02 17:28:51 · 401 阅读 · 0 评论 -
状态估计第二讲:线性高斯系统的状态估计问题
本讲的核心问题就是线性系统卡尔曼滤波的推导。离散时间的批量估计线性高斯模型运动方程:xk=Ak−1xk−1+vk+wk,k=1,2……Kx_k=A_{k-1}x_{k-1}+v_k+w_k,k=1,2……Kxk=Ak−1xk−1+vk+wk,k=1,2……K观测方程:yk=Ckxk+nk,k=0,1,2……Ky_k=C_kx_k+n_k,k=0,1,2……Kyk=Ckxk+...原创 2020-05-02 11:26:42 · 1772 阅读 · 2 评论 -
Apollo公开课五:预测
将预测问题简化为选择问题——Apollo车道预测详解预测: 预测环境中移动物体的行为,以确保无人车做出最佳的决策,通过生成一条路径来预测移动物体的行为。根据其他物体的状态以及自己的状态来预测它们的路径。预测要求实时、准确,且能从其他情况中学习新的预测行为。预测分为基于物理模型的和数据驱动的。Apollo基于车道序列的预测 预测障碍物状态:位置,朝向,速度,加速度,车道段内物体的位置以...原创 2020-05-01 10:47:49 · 551 阅读 · 0 评论 -
Apollo公开课四:感知
感知: 主要利用深度学习来检测周围的环境,包括分类、检测、跟踪和分割等任务。Apollo感知方案: 对于三维物体检测,Apollo在高精地图上使用ROI(感兴趣区域)来重点关注相关对象,将ROI滤波器应用于点云和图像数据以缩小搜索范围,加速感知,通过检测网络馈送已过滤的点云,输出用于围绕构建对象的三维边界框,最后使用检测关联算法来跨时间识别单个物体。 对于交通信号灯的检测,先在高精度地...原创 2020-04-30 21:55:31 · 490 阅读 · 0 评论 -
三维点云处理技术二:三维点云表征概述
三维点云数据获取方式及原理主要分为立体视觉测量法、结构光3D成像法、飞行时间TOF法。立体视觉测量法相机成像模型视觉SLAM14讲——相机模型介绍世界坐标系下的三维坐标点Pw⟶P_w\longrightarrowPw⟶相机坐标系下的坐标Pc⟶P_c\longrightarrowPc⟶归一化坐标Pnorm⟶P_{norm}\longrightarrowPnorm⟶畸变后的坐标Pd...原创 2020-04-29 22:39:12 · 4403 阅读 · 3 评论 -
Apollo公开课六:规划
规划: 根据高精度地图、定位和预测来规划舒适、无碰撞的轨迹,第一步是路线导航,给定地图、出发点和目的地,生成一条可行驶路线;第二步对路线进行调整规划轨迹,以使得乘坐更舒适,避开障碍物。最终生成的轨迹由一系列点构成,每个点关联一个位置和一个到达的时间。路径规划三个输入:地图: 提供了公路网和实时交通信息;在地图中的当前位置;目的地。Apollo通过智能搜索算法来寻找路径,首先将地图数据...原创 2020-04-29 16:26:34 · 387 阅读 · 0 评论 -
排序算法运行效率问题
十大经典排序算法(动图演示)各个算法的时间、空间复杂度如下图所示:在此博主用python对其中六大排序算法进行编程,源码和运行结果如下(如有问题,欢迎在评论区批评指出):# -*- coding: utf-8 -*-"""Created on Sun Apr 19 23:18:40 2020@author: 44886"""import copyimport timeimp...原创 2020-04-25 17:17:28 · 363 阅读 · 0 评论