- 博客(18)
- 收藏
- 关注
原创 图解+原理推导完全读懂KPM算法
文章目录串定长顺序存储方式串的模式匹配BF算法KMP算法KMP算法原理KMP算法实现求模式串T的next值算法时间复杂度分析BF算法分析KMP算法分析KMP算法与BF算法比较串定长顺序存储方式我们显式地在串的索引为0处存储串长。#define MAXSTRLEN 255 // 用户可在255以内定义最大串长typedef unsigned char SString[MAXSTRLEN+1]; //0号单元存放串的长度串的模式匹配模式匹配:设有主串S和子串T,子串在主串中的定位称为模式匹配或
2021-01-05 00:23:29
1489
原创 一文读懂奇异值分解(SVD)数学原理
奇异值分解(SVD)原理详解及推导特征值分解(EVD)现在假设存在 m×mm\times mm×m 的满秩矩阵AAA,它有mmm个不同的特征值:Ax1=λ1x1Ax2=λ2x2…Axm=λmxm\begin{aligned}A x_{1} &=\lambda_{1} x_{1} \\A x_{2} &=\lambda_{2} x_{2} \\& \ldots \\A x_{m} &=\lambda_{m} x_{m}\end{aligned}Ax1Ax2A
2020-05-10 20:02:15
540
原创 ROS通信机制
文章目录ROS通信机制话题通信(发布订阅模式)发布方订阅方配置 CMakeLists.txt自定义msg服务通信理论模型服务通信自定义srv服务端客户端参数服务器新增(修改)参数获取参数删除参数ROS通信机制为了解耦合,在ROS中每一个功能点都是一个单独的进程,每一个进程都是独立运行的。更确切的讲,ROS是进程(也称为Nodes**)的分布式框架。** 因为这些进程甚至还可分布于不同主机,不同主机协同工作,从而分散计算压力。不过随之也有一个问题: 不同的进程是如何通信的?也ROS 中的基本通信机制主要
2021-05-08 10:42:45
730
原创 ROS概述与配置
ROS概述与配置ROS架构立足不同的角度,对ROS架构的描述也是不同的,一般我们可以从设计者、维护者、系统结构与自身结构4个角度来描述ROS结构:设计者ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”Plumbing: 通讯机制(实现ROS不同节点之间的交互)Tools :工具软件包(ROS中的开发和调试工具)Capabilities :机器人高层技能(ROS中某些功能的集合,比如:导航)Ecosystem:
2021-05-05 11:27:05
347
原创 数据结构第3章 栈和队列
文章目录栈——后进先出(LIFO)表栈的定义栈的顺序表示和实现结构定义和初始化进栈出栈取栈顶元素栈的链式表示和实现结构定义和初始化进栈出栈取栈顶元素栈的应用队列——先进先出(FIFO)表队列的定义队列的顺序表示和实现循环队列类型SqQueue定义和初始化入队出队队列的链式表示和实现链队列LinkQueue的存储结构定义和初始化进队出队栈——后进先出(LIFO)表栈的定义允许进行插入、删除操作的一端称为栈顶(top)。表的另一端称为栈底(bottom)。当栈中没有数据元素时,称为空栈。栈的插入操作
2021-01-05 10:08:11
761
原创 数据结构第10章 排序
文章目录插入排序直接插入排序时空复杂度和分析希尔(Shell)排序时空复杂度和分析交换排序冒泡排序时空复杂度和分析快速排序时空复杂度和分析选择排序简单选择排序(或称直接选择排序)时空复杂度和分析树形选择排序(锦标赛排序)堆排序(Heap Sort)堆的概念堆排序流程:筛选或调整算法无序序列建成一个初始堆堆排序算法时空复杂度和分析归并排序2-路归并排序时空复杂度和分析排序小结排序算法选择规则插入排序每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。直
2021-01-04 23:47:20
223
原创 数据结构第9章 查找
文章目录查找的基本概念静态表查找顺序查找二分查找(折半查找)——有序表的查找非递归算法递归算法动态表查找(树表查找)二叉排序树平衡二叉树(AVL)LL型调整LR型调整哈希表查找构造哈希函数解决哈希冲突开放定址法(开地址法,线性探测法)链地址法查找的基本概念查找表:是由一组记录组成的表或文件,而每个记录由若干个数据项组成,并假设每个记录都有一个能唯一标识该记录的关键字。关键字:记录中某个数据项的值,可用来识别一个记录;主关键字:唯一标识数据元素;次关键字:可以标识若干个数据元素;若整个查找过程都在
2021-01-04 23:44:46
373
原创 数据结构第7章 图
文章目录图的定义和术语图的存储结构邻接矩阵表示法邻接表表示法邻接矩阵与邻接表表示法的关系图的遍历深度优先搜索( DFS ——Depth First Search)基于邻接矩阵的DFS算法基于邻接表的DFS算法的实现广度优先搜索( BFS——Breadth First Search)基于邻接表的BFS算法的实现有向无环图及其应用最短路径图的定义和术语图:Graph=(V,E)Graph=(V,E)Graph=(V,E)V:顶点(数据元素)的有穷非空集合;E:边的有穷集合。在图G中,如果代表边的顶点对
2021-01-04 23:43:03
279
原创 数据结构第4章 串
文章目录串的基本概念串的存储定长顺序存储方式链式存储结构串的模式匹配BF算法KMP算法KMP算法原理KMP算法实现求模式串T的next值算法时间复杂度分析BF算法分析KMP算法分析KMP算法与BF算法比较串的基本概念子串(substring):一个串中任意个连续字符组成的子序列(含空串) 称为该串的子串。空串是任意串的子串任意串是自身的子串主串:包含子串的串相应地称为主串。串的存储定长顺序存储方式显式存储串长#define MAXSTRLEN 255 // 用户可在255以内定
2021-01-04 23:40:55
363
原创 数据结构第6章 树和二叉树
文章目录树的定义和基本术语概念树的性质树的存储结构孩子链表左孩子右兄弟链树的遍历二叉树二叉树的定义二叉树的性质二叉树的存储结构二叉树的顺序存储结构二叉树的链式存储结构三叉链表遍历二叉树先序遍历的中序遍历后序遍历层次遍历线索二叉树赫夫曼树及其应用赫夫曼树的定义构造赫夫曼树的过程构造huffman编码树的定义和基本术语概念树(Tree)是n(n≥0)个结点的有限集合,它或为空树(n = 0);或为非空树,对于非空树T:有且仅有一个称之为根的结点;除根结点以外的其余结点可分为m(m>0)个互不相交的有
2021-01-04 23:39:06
412
原创 F405版麦轮小车源码库函数版本控制流程
F405版麦轮小车源码库函数版本本文档从小车APP控制小车移动的功能未切入口,分析了小车从接收控制信号,计算目标速度,增量式离散PID闭环控制,到PWM增量输出控制电机的流程。代码架构小车控制代码control.c在计时器的PWM 模式,即脉冲宽度调制模式,可以生成一个信号,该信号频率由 TIMx_ARR 寄存器值决定,其占空比则由 TIMx_CCRx 寄存器值决定。此项目中对小车四路电机的控制,最终归结于对TIM8_CCRx进行写入,#define PWMD TIM8->CCR4
2020-10-28 20:30:13
3093
2
原创 配置Julia微分方程求解工具DifferentialEquations环境
安装Julia和依赖库首先,要先下载julia,然后安装即可。下载的地址为julia官网安装过程可能等待时间较长打开julia终端,配置国内源参考。 安装diffeqpy依赖库:using PkgPkg.add("DifferentialEquations")Pkg.add("DiffEqBase")Pkg.add("PyCall")using DifferentialEquationsusing PyCall安装Plots依赖库如果前面安装依赖库等待时间还可以忍受,那么在安装Pl
2020-07-18 00:58:32
1980
原创 Python使用diffeqpy接口调用 julia核心的微分方程库DifferentialEquations
diffeqpy记录如何安装和配置julia核心的高性能微分方程库DifferentialEquations的python接口diffeqpy。diffeqpy是一个用Python求解微分方程的包。它利用 julia核心的DifferentialEquations.jl,给出了高性能求解多种不同类型的微分方程。python环境pip install diffeqpypip install numbaJulia环境可直接官网下载安装二进制文件。最简环境几可,安装juliaPro全家桶反而会引起
2020-07-17 00:37:30
920
原创 视觉SLAM14讲笔记05:ch7三角测量,PnP,ICP
三角测量三角测量考虑图像 I1I_{1}I1 和 I2,I_{2},I2, 以左图为参考,右图的变换矩阵为 TTT 。相机光心为 O1O_{1}O1 和 $O_{2} 。在。 在。在I_{1}$ 中有特征点 p1,p_{1},p1, 对应 I2I_{2}I2 中有特征点 p2p_{2}p2 。理论上直线 O1p1O_{1} p_{1}O1p1 与 O2p2O_{2} p_{2}O2p2 在 场景中会相交于一点 P,该点即是两个特征点所对应的地图点在三维场景中的位置。然而由于噪声的影响
2020-05-11 21:56:20
727
原创 视觉SLAM14讲笔记04:ch7对极几何(epipolar geometry)
2D-2D:对极几何(epipolar geometry)对极约束现在,假设我们从两张图像中,得到了一对配对好的特征点,像图7-7里显示的那样。如果我们有若干对这样的匹配点,就可以通过这些二维图像点的对应关系,恢复出在两帧之间摄像机的运动。连线 O1p1‾\overline{O_{1} p_{1}}O1p1 和连线 O2p2‾\overline{O_{2} p_{2}}O2p2 在三维空间中会相交于点 PPP。O1O2PO_1O_2PO1O2P称为极平面(Epipolar plane
2020-05-11 17:59:27
1221
原创 视觉SLAM14讲笔记03:ch7图像特征提取与匹配
图像我们从最简单的图像一灭度图开始说起。在一张灰度图中,每个像素位置 (xxx, yyy) 对 应到一个灰度值 III,所以一张宽度为 www,高度为 hhh 的图像,数学形式可以记成一个矩阵:I(x,y)∈Rw×hI(x, y) \in \mathbb{R}^{w \times h}I(x,y)∈Rw×h然而,计算机并不能表达整个实数空间,所以我们只能在某个范围内,对图像进行量化。例如常见的灰度图中,我们用0-255之间整数(即一个unsigned char, —个字节)来表达图像的灰度大小。
2020-05-11 17:53:28
972
原创 视觉SLAM14讲笔记02:ch5针孔,双目相机模型
相机相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述。这个模型有很多种,其中最简单的称为针孔模型。针孔模型是很常用,而且有效的模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。在本书中我们用一个简单的针孔相机模型来对这种映射关系进行建模。同时,由于相机镜头上的透镜的存在,会使得光线投影到成像平面的过程中会产生畸变。因此,我们使用针孔和畸变两个模型来描述整个投影过程。针孔相机模型根据三角形相似关系Zf=−XX′=−YY′\frac{Z}{
2020-05-11 17:49:31
1144
原创 视觉SLAM14讲笔记01:ch2-4李群与李代数
三维空间刚体运动SLAM数学表达xk=f(xk−1,uk,wk)\boldsymbol{x}_{k}=f\left(\boldsymbol{x}_{k-1}, \boldsymbol{u}_{k}, \boldsymbol{w}_{k}\right)xk=f(xk−1,uk,wk)这里uk\boldsymbol{u}_{k}uk是运动传感器的读数(有时也叫输入),wk\boldsymbol{w}_{k}wk为噪声。我们把它称为运动方程。与运动方程相对应,还有一个观测方程。当小萝卜在x
2020-05-10 15:58:15
472
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅