自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (3)
  • 收藏
  • 关注

原创 DBOW概要理解与记录

DBOW作为一种视觉回环技术被广泛应用在各类VSLAM框架中,之前的经验主要集中在使用和抽象理解层面,近期花了一些时间仔细阅读了相关论文和源码,这里做一些记录。

2023-10-25 18:51:20 424

原创 Tesla AI day中感知部分的详细解析(一)——Transformer在图像领域的应用

最近针对特斯拉AI day2022内容进行了初步的了解,三个小时的发布会涵盖了方方面面的内容,其中基于纯视觉和深度学习的BEV感知升级版Occupancy Network形成的3D感知系统着实让人惊艳,而想要了解Occupancy Network,必须先了解其前身BEV感知,而其中一大关键点是参考了Transformer的网络结构对不同时空的数据输入进行处理,本系列文章主要针对相关技术从源头开始解析,由于个人技术能力有限,不可能面面俱到,仅当作抛砖引玉了。

2022-11-07 16:15:50 3814 6

原创 VScode结合docker的ROS开发环境配置

目录软件安装VSCODEdockerdocker image构建与运行VSCODE配置ROS插件配置clangd配置软件安装VSCODE存在三种安装方式,如下:在vscode官网下载需要的版本直接进行安装。ubuntu下软件中心搜索安装(安装最简便,推荐):使用apt安装:wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -sudo add-apt-repository "d

2022-02-11 16:02:08 2073

原创 ROS2实践总结

目录ROS2简介与ROS1的主要区别ROS2的改变对实际使用的影响ROS2简介新一代机器人操作系统(robot operation system),继承了ROS1大部分优异特点,并对部分功能进行了增强,同时对ROS1中存在的主要问题进行了修复和改进,相关介绍很多,这里就不赘述了。与ROS1的主要区别ROS1与ROS2的主体架构对比图:对以上架构图进行剖析:去除master节点ROS1的整体架构设计采用了中心化设计,在设计模式中也称为中介模式,即通过一个中心代理节点完成系统中所有节点的通信

2021-12-15 18:11:55 2083

原创 自动驾驶仿真器CARLA_0.9.12安装、使用及存在的问题

简介作为自动驾驶两大开源仿真器(LGSVL、CARLA)之一,CARLA基本具备了自动驾驶仿真器需要具备的大部分功能,诸如完整的车辆运动系统、地图系统、各类常规传感器、天气系统等等,并且其基于UE4开发,在仿真效果真实性上是LGSVL不能比拟的,因此其还有很大的一个用途是可以通过其采集各类数据用于神经网络训练,CARLA可以直接输出各类数据及其真值,大大减少了训练成本。安装CARLA分为服务器端与客户端,需要分别安装。服务器端在CARLA官网直接下载仿真器,并运行即可,需要提前安装好NVIDIA驱

2021-11-22 17:51:57 3753 1

原创 LOAM点云匹配算法解析与雅克比矩阵推导

目录前言算法解析线/面特征与线/面地图的残差与对应优化向量计算LM算法简单介绍基于Tait-Bryan xyz extrinsic rotations的雅克比推导代码剖析问题前言LOAM点云匹配部分极为经典,可以说是LOAM整个框架的核心,其运算速度快,精度高,自14年发布,并在后续拿下kitti冠军后,直到现在仍然被广泛使用,但在后续的推广中仍然有一些问题,这里做一些解析并记录下自己应用中的问题。算法解析算法具体解析的文章实在太多了,这里不做赘述,只简单介绍下相关流程和原理,大致流程如下:gra

2021-08-16 11:14:45 1211

原创 ubuntu commitizen安装配置、CHANGELOG自动生成

Angular规范git commit信息规范化可以带来很多好处,例如review信息明确、版本回退时能准确定位需要回退的点、release时自动生成CHANGELOG等,Angular规范本身也简洁明了,在全世界范围内广泛使用,其主要内容如下:分支命名master 分支master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性 master 分支一般由develop以及hotfix分支合并,任何时间都不能直接修改代码develop 分支develop 为开发分支,始终保持

2021-07-01 15:05:15 1084

原创 VINS代码主体结构和流程剖析——后端

目录代码剖析代码剖析首先一定要对Keyframe这个类有充分的认识,其中比较难理解就是一些pose的数据结构: /** @brief vio pose in backend */ Eigen::Vector3d vio_T_w_i; Eigen::Matrix3d vio_R_w_i; /** @brief rectified pose in backend */ Eigen::Vector3d T_w_i; Eigen::Matrix3d R_w_i; /** @brie

2021-04-07 10:26:49 314

原创 ROS远程通信配置,rviz远程显示及命令控制

环境本机ip:192.168.10.20,电脑名称(不是用户名):mikaa-OptiPlex-6900远端ip:192.168.10.10,电脑名称:robot电脑名称是指ubuntu下打开终端,看到的XXXuser@YYYY中的YYYY。1、配置本机hostssudo vim /etc/hosts添加192.168.10.10 robot如下:127.0.0.1 localhost127.0.1.1 mikaa-OptiPlex-6900192.168.1

2021-03-26 10:52:07 2819

原创 VINS代码主体结构和流程剖析——前端

目录前言代码剖析一些小细节前言最近花了点时间学习了下经典的VSLAM框架VINS,前后端都采用优化的方式,且在运行过程中实时估计IMU加速度计和陀螺仪bias,在初始化阶段还可以实时优化camera到IMU的外参,解决了很多之前SLAM框架在实际中使用的问题,例如使用时间久之后的外参漂移、IMU的bias不准导致的系统不够鲁棒等等,实测也具有非常良好的效果。但是VINS的代码确实不太友好,当然秦大佬只是用于发paper并不需要放过多心力在工程化上,这里主要针对VINS-Fusion代码做一些解析记录,便

2021-03-24 16:13:16 291 1

原创 KF、EKF、ESKF的区别与联系

目录背景贝叶斯滤波系列KF、EKF、ESKF的原理与区别贝叶斯滤波卡尔曼滤波(KF,Kalman Filter)扩展卡尔曼滤波(EKF,Extended Kalman Filter)Error-State卡尔曼滤波(ESKF)总结KF、EKF、ESKF的联系KF、EKF、ESKF的区别与其他滤波方法的区别背景滤波:去除噪声还原真实数据的一种数据处理方法,被广泛应用于对信号准确度有需求的众多领域,例如军事、航天、通信等等。常用滤波方法:以低通滤波、带通滤波、高通滤波为代表的按照频率滤波的方式;以卡尔曼滤

2021-03-12 14:20:22 12098 7

原创 Error-State Kalman Filter理解与公式推导

目录直接法与间接法滤波ESKF公式推导VINS中对于ESKF的使用直接法与间接法滤波卡尔曼滤波作为一种贝叶斯滤波的具体实现被广泛应用于状态估计问题中,其优势与特点这里就不再赘述了,而众所周知的是,卡尔曼滤波只能应用于线性系统中,而实际中大部分系统无法满足这个约束,于是诞生了扩展卡尔曼滤波(Extended Kalman Filter,EKF)和误差状态卡尔曼滤波(Error State Kalman Filter,ESKF)等一系列应用于非线性系统的滤波方法,这些方法各有特点,这里主要讨论EKF和ESK

2021-02-26 17:29:21 1397

原创 深度学习系列八:支持向量机

前言支持向量机(SVM)是机器学习中非常重要的一个算法,虽然在今天,它在很多应用层面被神经网络取代了,但其实现仍然有很多值得学习的地方,而且相比较于神经网络的黑盒子特性,其解释性要好很多,训练的过程也相对更快。从线性回归出发本系列开篇讲过了线性规划,原始的SVM也是线性回归问题,考虑一个二分类问题:x∈X,y∈{1,−1}x\in X,y\in \{1,-1\}x∈X,y∈{1,−1},我们建立一个线性模型:f(x)=wTx+bf(x)=w^Tx+bf(x)=wTx+b判别函数为:y=sig

2020-05-17 23:34:39 1032

原创 Yolov4论文翻译与解析(二)

前言上一篇主要对论文进行了翻译,这一篇结合一份代码详解下Yolov4相比较于v3采用的一些新技术和改进点,论文中其实已经对于一些技术梗概进行了分析,这里只对论文没有详述的部分进行一些自我的剖析,如果有不准确的部分,欢迎各位大神指教。本来打算用keras自己实现一遍YOLOv4,但有大神提前做了并进行了开源,就不重复造轮子了,本篇所有代码来源keras-yolo4。主要技术点解析CutMix和马赛克数据增强(Mosaic data augmentation)Yolov4中除了采用常规的反转、裁切、旋转

2020-05-14 12:49:44 2549 5

原创 卡尔曼滤波算法示例解析与公式推导

概述关于卡尔曼滤波算法的解析文章数不胜数,对于其强大和超广的适用性这里也不再赘述,这篇文章旨在以极为简单而通俗的语言描述卡尔曼滤波,希望数学小白以及日后的自己也能轻松看懂。理解这篇文章只需要基本的数学基础和一点点概率论知识,当然,这也源于卡尔曼滤波本身就是一个强大但实现极为简单的算法。希望有更为全面了解的可以参考Kalman filter以及Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation

2020-05-10 20:14:03 1632 3

原创 Yolov4论文翻译与解析(一)

前言时隔两年之后,伴着Yolo原作者Redmon在twitter正式宣布退出cv界,大家都以为yolo系列已经终结的时候,Yolov4横空出世,虽然作者已经大换血,但论文中给出的测试结果依然保留yolo系列的血统:保持相对较高的mAP的同时,大大降低计算量,可谓是学术成果在工业应用的典范,至于实际使用如何,还需要时间的进一步检验,期望v4能够如v3一般强大。这里对原论文进行一些个人的解析,有不对...

2020-04-25 17:45:33 9792 4

原创 深度学习系列六:将网络迁移到TensorRT7.0平台

概述关于使用TensorRT对网络进行加速的基本工作在深度学习系列五:使用TensorRT对网络进行加速中描述很详细了,这里主要记录下在迁移到7.0时,顺便解决了之前ResizeNearestNeighbor这个层在uff模型中无法直接支持必须外挂plugin的问题。Keras模型转ONNX模型之前使用6.0时,采用的方案是Keras模型转uff模型,再创建engine,其实从官方文档可以看...

2020-03-14 10:47:23 3323 1

原创 将KCF应用于Tracking by detection的总结

1、前言由于目前基于深度学习的detection在实际使用中仍然存在很多的误检和漏检,显然在实际使用中无法只依赖detection模块作为感知,而传统MOT也存很多因素导致追踪目标丢失必须重新手动选择的问题,因此,Tracking by detection成为一个很重要的研究方向,而Tracking by detection中前后帧的目标匹配算法成为研究重点,目前已经有很多相关的研究,诸如前几年...

2020-03-04 16:11:59 1583 4

原创 23种设计模式(c++实现)学习总结

七大基本原则23设计模式依据七大基本原则,从个人理解,其最根本原则为开闭原则,其他原则都是基于开闭原则的具体阐述,而23种设计模式又是基于这七大原则的具体时下,个人理解其结构如下:23种设计模式创建型模式主要负责类对象的创建,根据需求实现方便、有序、高效的创建方法,其包含的五种模式特性、区别和联系如下:单例模式主要负责单个特殊对象的创建,可以方便实现资源的共享,并保证对象的独有性...

2020-02-02 11:11:39 345

原创 设计模式学习(C++实现)19——解释器模式

概述当某些问题重复出现且具有一定的规律性和相似性时,我们可以将其中的规律抽取出来,作为一个个解释器来解释,并将解释的结果拼接起来,用更上层的解释器解释,直到最高层的解释器返回最终结果,例如自然语言,具有明显的规律(一个句子由主语谓语宾语组成),其成分也具有明显规律(主语主要是代词和名词,谓语主要是动词,宾语主要是代词和名词),因此可以定义几个解释器进行相应的解释;再比如加减组成的复合运算(a+b...

2020-01-30 22:13:54 155

原创 设计模式学习(C++实现)18——备忘录模式

概述以word为例,我们经常会使用撤销和前进操作,那么意味着这个系统必然会存储其历史状态,保证撤销时能够读取,这时候就可以使用备忘录模式,也称谓快照模式。代码实现struct State{ int index; std::string name; bool is_error;};class StateManager{public: State GetLatestSt...

2020-01-29 00:20:29 103

原创 设计模式学习(C++实现)17——访问者模式

概述当我们存在一些固定的元素组合,而有一些针对这些元素的访问者,每个访问者针对不同的元素有不同的处理,这时候就可以采用访问者模式。例如,电影院在放映三场电影,有很多观众回去看,并且给予不同的评价,这里三场电影就是固定元素,观众就是访问者;再比如,系统的某个模块收到了一些固定的数据,有不同的模块需要访问并进行不同的处理,这里数据就是固定元素,不同模块是访问者。代码实现class Elemen...

2020-01-28 23:49:39 97

原创 设计模式学习(C++实现)16——中介模式

概述中介模式,顾名思义,通过一个中介来完成信息的流动,例如找房子,每个人可以直接跟另一个人联系买房,但如果人数很多,而买方又希望多方比价,那么每个人跟每个人之间的关系会变得十分复杂,而且效率较低,在现实生活中,我们往往通过中介来解决这个问题,所有人(无论买方或是卖方),都将信息发送到中介,再从中介获取信息,或者使用观察者模式订阅某个信息,中介主要起到信息转发的作用;同样的类似QQ,会先将消息发送...

2020-01-27 23:15:24 90

原创 设计模式学习(C++实现)15——观察者模式

概述观察者模式在实际应用中,主要适用一对多的消息订阅情景,即一些观察者会监视或者说订阅某个事件或者信号,一旦该事件或者信号发生,则通知所有订阅者进行相应的响应。在Window的窗口程序中应用十分广泛,当用户点击某个按键时,订阅了该按键点击事件的所有观察者作出响应,完成程序对于用户点击这一事件的响应。代码实现class Observer{public: virtual void Res...

2020-01-27 22:35:41 93

原创 设计模式学习(C++实现)14——状态模式

概述状态模式就是日常经常使用的状态机,例如线程存在睡眠、运行、停止、僵死等各种状态,在不同状态时线程对于不同的输入有不同的响应,外部也可以根据线程的状态作不同的操作;同样的,在机器人体系中,也经常使用状态机,表示机器人的不同状态,以实现不同状态下的不同响应。代码实现///前置声明class State;class Context{public: Context(); vo...

2020-01-27 22:17:23 245

原创 设计模式学习(C++实现)13——策略模式

概述与桥接模式类似,只不过桥接模式是将一个类的部分属性抽离为一个继承体系,再通过组合的方式加入该类中,而策略模式是将一个类的部分方法抽离为一个继承体系,再通过组合的方式加入该类中,例如暑期出行为一个类,出行的方式可能有很多,坐火车或者坐飞机,那么可以将交通方式抽离为一个继承体系,通过接口传入,以适配更灵活的使用场景,并实现类与接口的解耦,符合迪米特原则。代码实现class Transpor...

2020-01-27 17:12:00 152

原创 设计模式学习(C++实现)12——模板方法模式

概述继承最基本的使用方式之一,在父类中确定整体框架以及部分公用接口,将部分可能会有变化的接口延迟到子类中实现,以实现多态。例如很多个系统的初始化流程都是:提示初始化信息,获取配置,初始化,打印系统信息,其中提示初始化信息和打印系统信息所有系统都相同,另外两个接口在不同系统中可能会有变化,就可以将其留在子类中实现。代码实现class System {public: void Start(...

2020-01-27 16:48:23 102

原创 信息熵,交叉熵与相对熵

前言最近在多处看到熵的概念,之前零散的了解了一下,最近总结下,加深一下理解。熵熵是信息论中的一个概念,用于衡量一个随机变量的不确定性,公式很简单:log(1/p(x))log(1/p(x))log(1/p(x)),其中p(x)p(x)p(x)为x的概率分布(离散)或者概率密度(连续)函数,公式很直观,概率越小熵越大,即信息量越大。信息熵信息熵为熵的期望,用于衡量一个分布的不确定性,以下为...

2019-12-26 11:44:03 308

原创 STL中deque详解

主流的STL容器的数据结构都比较常规,类似List就是实现了链表的数据结构,数据以一个node接连串接一个node的形式存储;vector则是一个连续空间存储的变长数组,当空间用完后则申请一倍的空间并老数据拷贝到新分配空间中;map和set则是红黑树,一种特殊的二叉平衡搜索树,保证根到叶节点最大的层数差距在两倍以内,以此保证搜索的速度和维护树结构的性能平衡;unordered_map和unorde...

2019-11-01 18:31:41 864

原创 深度学习系列五:使用TensorRT对网络进行加速

概述TensorRT是NVIDIA一个深度学习加速平台,用于对神经网络模型进行优化,从而加速其推理过程,现已被广泛应用于嵌入式芯片和智能汽车平台等,提高其GPU的推理速度,以实现更快的响应速度或者降低平台的性能消耗。TensorRT目前已经对Tensorflow、Pytorch、ONNX、Caffe等多个深度学习框架有了良好的支持,在最新的Tensorflow2.0中,TensorRT5.0已经...

2019-10-28 15:42:36 2046 2

原创 深度学习系列四:常用优化方法BGD,SGD,Momentum,AdaGrad,RMSProp,Adam

概述神经网络训练中所使用的主要算法是梯度下降法,在前文中已经有过详细的分析,但在训练过程使用梯度下降的时候存在几个关键点:1、使用多少个样本训练后进行一次参数更新2、学习率的设置3、梯度更新参数的方式针对以上问题研究人员思考了很多的解决办法来对整个训练进行适当的优化,于是产生了以下的各类算法BGD与SGD主要针对第一点,其公式表达如下:g^←1n∑n▽θJ(θ) θ←θ−...

2019-08-31 22:50:05 429

原创 深度学习系列三:Overfitting问题与L1、L2正则化和Dropout

概述神经网络训练中的过拟合问题是指训练出来的网络对于训练数据集有很好的预测准确率,但对于测试数据集的预测准确率却远低于训练数据集,用一张关于分类问题的图能很明显看出这个问题:在此不深究其中原因了,有一种基本的理解是当网络复杂程度很高时,其描述能力是很强的,因此在针对某一部分数据集集中高强度训练后,能够高度拟合该数据集中的规律,可以认为将训练集中的数据噪声也完美拟合了,因此其在训练集上准确度很高...

2019-08-29 18:22:54 231

原创 深度学习系列二:反向传播算法解析与简单示例

概述上一章主要描述了线性回归与逻辑回归的概念与区别,在模型优化方面带过了,本篇着重记录下深度学习中常用来作参数优化的反向传播算法,并结合一个简单的例子阐明。首先需要明确的是,任何一个神经网络都可以看作是一个关于其输入的函数,这个函数接受一系列值作为其输入,并输出一个或者多个结果,如下:(y0,y1...ym)=f(x1,x2...xn)(y_0,y_1...y_m)=f(x_1,x_2.....

2019-08-27 17:08:31 996

原创 两种内存池技术(C++实现)

一、概述C++相较于其他高级语言来讲,能够方便的进行内存管理和操作,是其优势也是其劣势,运用得当将使得你编写的程序性能大大提升,使用不当也可能给你带来无尽的麻烦。内存池就是其中的重要技术手段之一,下面重点看看常见的两种内存池技术。1、基于某种类型的内存池此种内存池使用广泛,实现相对简单,基本能够满足大部分时候的需求,使用模板实现,保证了一种内存池针对一种类型来分配内存,内存池中存储的对象占用...

2019-05-17 12:21:37 1913 3

原创 condition_variable的使用以及与锁的关系

条件变量和互斥锁是多线程的同步和互斥最基础的两种工具,其中互斥锁使用和功能都比较简单,条件变量在使用和理解起来相对就比较困难,不少初学者对于wait函数必须结合一个锁来使用的原则感到困惑,其实官方指导中已经有详尽的解释和案例,但讲的比较简洁,这里从wait函数执行流程来看下条件变量的使用方法和原理。正确使用流程thread1:locker.lock() ---1cv.wait(...

2019-03-08 11:21:13 3727

原创 深度学习系列七:LSTM神经网络与RNN的对比及理解:基于tensorflow的MNIST例子

LSTM(long-short term memory)networks 是一种特殊的RNN网络,整体思维一致,具体区别和原理也可以参考:http://colah.github.io/posts/2015-08-Understanding-LSTMs/上文对于LSTM阐述非常清晰,这里就不多赘述了,主要记录下自己在学习过程中遇到的一些问题和不清晰的点,以及我自己的理解。RNN与常规网络的区别...

2018-11-21 19:53:07 1017

原创 apollo3.0 canbus部分源码解析

最近一直想要调整下底层can通信部分的架构,想了一些适配的方案,细节部分还是有些模糊,想试着看看大厂的处理方法找找灵感,也学习下。1、文件结构apollo有关canbus的代码主要集中在modules/canbus和drivers/canbus中,其中,modules/canbus主要是关于vehicle基于canbus的底层通信和控制的实现,主要应用了工厂模式(这里感觉改名叫chas...

2018-08-23 15:13:37 4722

原创 设计模式学习(C++实现)11——迭代器模式

迭代器模式被STL大量使用,熟悉c++的一般都用得很多,它提供了一种统一且便捷的对不同容器遍历的形式,使得学习和使用语言变得很简单。class myVector{public: myVector(int s):size(s){ data=new int[size]; } class iterator{ public: it...

2018-07-17 11:20:00 179

原创 设计模式学习(C++实现)10——命令模式

使用很多的一种设计模式,将命令或者事件封装成对象,从而实现解耦的目的,使命令的产生和执行两个过程在不同的地方发生。class order{public: virtual void execute()=0;}class MoveFoward:public order{public: void execute(){ std::cout<<"...

2018-07-16 14:58:48 117

原创 设计模式学习(C++实现)9——责任链模式

某个事件有一系列的处理者都可能处理,因此将这些处理者用一个链表连接起来,将该事件延该链表依次传递,一旦某个处理者解决该事件就不再继续传递,自定义该链表可保证处理者的优先级,这种模式可以保证系统的处理顺序按照设定顺序来而不至于变得混乱,可应用于大部分事件处理的地方如log记录、错误处理等。class Event{public: Event(int t):type(t){} in...

2018-07-16 11:57:26 124

jd-gui.jar 1.4.0最新版

jar查看工具

2017-05-07

mkbootimg,boot.img解打包工具

boot.img解打包工具

2017-05-07

apktool 2.2.2最新版

apk解打包工具

2017-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除