自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 (四)路径规划算法---QP解决Minimum Snap轨迹优化问题

QP解决Minimum Snap轨迹优化问题文章目录QP解决Minimum Snap轨迹优化问题1. 多项式的次数确定2. Minimum Snap案例分析2.1 轨迹的多项式表达2.2 约束条件确定3 Minimum Snap算法运行过程3.1 准备工作3.2 MinimumSnapQPSolver函数3.2.1 getQ函数3.2.2 getAbeq函数3.3 显示功能大佬的代码:https://github.com/KailinTong/Motion-Planning-for-Mobile-Rob

2022-05-31 12:55:43 2737 4

原创 (四)路径规划算法---Minimum Snap 轨迹优化问题

Minimum Snap 轨迹优化问题文章目录Minimum Snap 轨迹优化问题1. 前景2. 基本原理2.1 轨迹生成条件2.2 评价函数2.3 约束条件2.3.1 导数约束(Derivative constraint)2.3.2 连续性约束(Continuity constraint)2.4 问题求解附录1. 凸函数基本概念2. QP问题1. 前景上一章介绍了OBVP的基本原理,但OBVP更多的关心从起点到终点,如何规划一条最优的路径,但是如果中间出现很多个必经节点(例如巡检工作),则需要经过

2022-05-30 10:24:45 2723

原创 (三)路径规划算法---OBVP例子

路径规划算法中的OBVP例子文章目录路径规划算法中的OBVP例子1.已知量1.1 目标函数1.2 变量1.3 状态方程1.4 初始值2.固定边界条件2.1 构建系统的Hamiltonian矩阵HHH和协变量λ\lambdaλ2.2 通过Hamiltonian矩阵对协变量进行求导2.3 最小化输入变量2.4 通过积分求得最优轨迹s∗s^*s∗2.5 最终状态确定最优轨迹的参数2.6 最优状态下目标函数3.自由边界条件4 .小结通过上章的OBVP的原理讲解,大家想必对该算法的流程有了大致了解,现在通过路径规

2022-05-13 21:54:40 1596

原创 (三)路径规划算法---OBVP原理介绍

路径规划算法中的OBVP原理介绍文章目录路径规划算法中的OBVP原理介绍1. 前景介绍2. 原理介绍3. 案例说明3.1 已知量3.2 求解3.3 边界问题扩展附录1.Pontrayagin's 最小值原理2. 多项式求根1. 前景介绍例如一个5次多项式表示两点间的轨迹方程x(t)=c5t5+c4t4+c3t3+c2t2+c1t1+c0x(t)=c_5t^5+c_4t^4+c_3t^3+c_2t^2+c_1t^1+c_0x(t)=c5​t5+c4​t4+c3​t3+c2​t2+c1​t1+c0​

2022-05-13 21:39:43 3155

原创 (三)路径规划算法---基于Kinodynamic的路径规划简单介绍

基于Kinodynamic的路径规划简单介绍文章目录基于Kinodynamic的路径规划简单介绍1. 机器人模型1.1 Unicycle Model1.2 Differential Drive Model1.3 Car Model2. State Lattice Planning2.1 控制空间采样2.2 状态空间采样Kinodynamic=Kinematic+Dynamic,其中Kinematic:运动学约束,例如避障Dynamic:动力学约束,例如加速度(acceleration)、力(forc

2022-05-13 21:25:31 3805

原创 (二) 路径规划算法---RRT_Star结合OMPL实现三维点云的路径规划

RRT_Star结合OMPL实现三维点云的路径规划文章目录RRT_Star结合OMPL实现三维点云的路径规划1.OMPL安装2.OMPL使用2.1创建机器人的状态空间2.2 构造一个空间实例2.3 创建问题实例,并设置一些参数2.4 构建优化器2.5 ompl进行求解2.6 ompl路径生成3.整体代码展示3.1 代码框架修改3.1.1 rrt.h3.1.2 rrt.cpp3.1.3 rrt_demo.cpp3.1.4 rrt_demo.launch3.1.5 CMakeLists.txt修改3.1.6

2022-05-09 17:07:38 6121 2

原创 (二)路径规划算法---C++结合OpenCV实现RRT算法

C++结合OpenCV实现RRT算法文章目录C++结合OpenCV实现RRT算法1.RRT算法简介2.算法整体框架流程2.1 rand点的建立2.2 near和new点的建立2.3 安全性检查2.4 算法结束判断3.RRT代码框架3.1 主函数3.2 地图数据的获取3.3 RRT算法的实现3.3.1 起点入树3.3.2 rand点的获取3.3.3 near点的获取3.3.4 new点的获取3.3.5 安全性检测3.4 可视化显示4. 代码运行过程1.RRT算法简介代码链接:RRT动图展示

2022-05-07 21:09:09 3579

原创 (一)路径规划算法---Astar实现自定义的全局路径规划插件

Astar实现自定义的全局路径规划插件文章目录Astar实现自定义的全局路径规划插件1.插件功能包的建立2. 相关步骤2.1 建立工作空间和环境变量的配置2.2 建立功能包2.3 添加源文件与头文件2.3.1AstarNode.h头文件2.3.2AstarNode.cpp源文件2.4 插件包进行编译2.4.1 CMakeLists.txt改写2.4.2 astar_plugin.xml改写2.4.3 package.xml 改写2.4.4 编译2.5 检验插件包是否建立成功2.6 插件的使用3. 插件执行

2022-05-05 21:02:53 6540 15

原创 (一) 路径规划算法---Astar与C++可视化在RVIZ的三维点云地图

Astar与C++可视化在RVIZ的三维点云地图文章目录Astar与C++可视化在RVIZ的三维点云地图1.功能包介绍2.算法功能包的组成与介绍2.1文件系统组成2.2 头文件说明2.3 源文件说明3.相关坐标系说明3.1 坐标系3.2 点云数据存储4.重要代码说明5.代码运行情况源代码下载链接:https://github.com/KailinTong/Motion-Planning-for-Mobile-Robots本文代码下载链接:https://gitee.com/tanggujie/asta

2022-05-02 10:49:57 6983 21

原创 (一)路径规划算法---Astar与C++可视化在RVIZ的二维栅格地图

Astar与C++可视化在RVIZ的二维栅格地图中

2022-04-30 20:55:06 6186 13

原创 (一)路径规划算法---Astar C++实现及显示

路径规划算法—Astar C++实现及显示以下均为原创的内容,转载请著名出处,谢谢。1.主函数main.cpp主函数主要提供实现算法的对外接口,这里主要的流程是1.调用MapData(mapPath)来读取地图数据2.调用astar.PathPoint()进行Astar路径查找3.Display(astarPath, mapData, xStart, yStart, xStop, yStop, “Astar”, true)函数进行最终路径的可视化显示/*@Function:Astar

2022-01-11 21:22:38 6999 5

原创 (一)路径规划算法---Graph Search Basis介绍

路径规划算法—Graph Search Basis文章目录路径规划算法---Graph Search Basis1.配置空间--Configuration Space2.图搜索路径规划算法通用模板3.常用的图搜索算法3.1非启发式搜索算法3.1.1 DFS(Deapth First Search)深度度优先搜索3.1.2 BFS(Breadth First Search) 广度优先搜索3.1.2.1 BFS介绍3.1.2.2 BFS动态演示3.1.3 Dijkstra3.1.3.1Dijkstra算法过程

2022-01-11 17:14:12 2320 1

原创 (七) 三维点云课程---ICP应用

(七)三维点云课程—ICP应用三维点云课程---ICP应用(七)三维点云课程---ICP应用1.代码解读1.1滤波1.2 计算特征向量1.3 特征向量的配准1.3.1 get_potential_matches函数1.3.2 is_valid_match函数1.4 RANSAC进行提存1.4.1 exact_match函数1.5 ICP进行精确的估计2.完整代码2.1main.py2.2 ransac.py2.3 visualize.py3.仿真结果在实际的ICP应用中,由于初始位姿的不确定,需要采用*

2021-11-12 16:10:46 1238 1

原创 (七) 三维点云课程---ICP (Point-to-Plane)

三维点云课程—ICP (Point-to-Plane)由于Point-to-Point的方法不允许平面之间的滑动,故提出了Point-to-Plane的ICP方法1.Point-to-Plane的原理介绍Point-to-Plane不同于Point-to-Point的方法,它是求源点云中的点pip_ipi​ 到目标点云中qiq_iqi​组成的曲面的距离。也就是说,此时点云需要提供每个点的法向量。数学表述E(R,t)=∑i=1N((Rpi+t−qi)Tni)2E(R,t)=\sum \limit

2021-11-04 20:02:55 5091 2

原创 (七) 三维点云课程---ICP(Point-to-Point)

三维点云课程—ICP(Point-to-Point)三维点云课程---ICP Point-to-Point三维点云课程---ICP(Point-to-Point)1.ICP问题描述2.ICP问题分析3.ICP证明3.11N1T(B−RA)T(B−RA)1\frac{1}{N}1^T(B-RA)^T(B-RA)1N1​1T(B−RA)T(B−RA)1的化简3.2 2tr((B−RA)11N1T(B−RA)T)2tr((B-RA)1\frac{1}{N}1^T(B-RA)^T)2tr((B−RA)1N1​1

2021-11-04 15:58:18 1036

原创 (六) 三维点云课程---FPFH特征点描述

三维点云课程—FPFH特征点描述三维点云课程---FPFH特征点描述三维点云课程---FPFH特征点描述1.FPFH推导1.1PFH介绍 (Point Feature Histogram)1.2FPFH介绍 (Fast Point Feature Histogram)2.FPFH完整代码即仿真效果1.FPFH推导1.1PFH介绍 (Point Feature Histogram)讲解FPFH之前,先来简单介绍一下PFH的理论。PFH算法的输入是:三维点云数据,每个点的表面法向量以及特征点,输出是

2021-11-03 17:12:57 4596 2

原创 (五) 三维点云课程---ISS特征点

三维点云课程—ISS特征点三维点云课程---ISS特征点三维点云课程---ISS特征点1.ISS流程2.ISS完整代码即流程1.ISS流程内部形态描述子(ISS)是一种表示立体几何形状的方法,具体流程如下:1.对点云PPP中每一个点pip_ipi​建立一个局部坐标系,并对所有点设立一个搜索半径rrr2.对任意的点pjp_jpj​,它的权重是wj=1∣{pk:∣∣pk−pj∣∣2<r}∣w_j=\frac{1}{|\{p_k:||p_k-p_j||_2<r\}|}wj​=∣{pk​

2021-11-01 21:17:48 3736 18

原创 (五) 三维点云课程---Harris特征点介绍

三维点云课程—Harris特征点介绍三维点云课程---Harris特征点介绍三维点云课程---Harris特征点介绍1.图片的Harris特征值介绍2.点云中的Harris特征值介绍2.1 Harris3D With Intensity2.2 Harris3D Without Intensity2.3 扩展 Harris 6D3.总结在讲解三维的HarrisHarrisHarris之前,先来介绍一下图片二维的HarrisHarrisHarris的原理1.图片的Harris特征值介绍给与一张图片,考虑

2021-10-31 21:50:56 2988 1

原创 (四) 三维点云课程---PointNet-Pytorch运行

三维点云课程—PointNet-Pytorch运行三维点云课程---PointNet-Pytorch运行三维点云课程---PointNet-Pytorch运行1.分类1.1训练1.2 分类训练可能出现的问题1.3测试分类后的模型文件1.4测试分类时源码可能遇到的问题2.分割2.1训练2.2分割训练可能出现的问题2.3测试分类后的模型文件2.4测试分类时源码可能遇到的问题PointNet 源码下载地址:https://github.com/fxia22/pointnet.pytorch源代码存在一些问题

2021-10-29 19:52:44 6504 19

原创 (三) 三维点云课程---RANSAC结合最小二乘求解点云的地面

三维点云课程—RANSAC结合最小二乘求解点云的地面三维点云课程---RANSAC结合最小二乘求解点云的地面三维点云课程---RANSAC结合最小二乘求解点云的地面1.RANSAC的步骤2.RANCAC的代码分析2.1输入参数τ,N\tau,Nτ,N的分析2.2 平面模型的创建2.3统计内点的个数2.4最小二乘优化2.5提前终止RANSAC的迭代3.RANSAC完整代码**原始数据**![在这里插入图片描述](https://img-blog.csdnimg.cn/d10228f8bf3d4c5c978

2021-10-28 19:32:05 1696 3

原创 (二) 三维点云课程---聚类的总结

三维点云课程—聚类的总结K-MeansGMMSpectralMean ShiftDBSCAN度量模式欧式空间欧式空间图论密集/欧式空间密集/欧式空间聚类数人为设定人为设定可以推导出来自动获取自动获取噪声点的影响坏中等好好好高维数据的影响中等中等好坏坏时间复杂度O(t×k×n×d)O(t\times k \times n \times d)O(t×k×n×d)t:迭代次数k:聚类数n数据的个数d数据的维数O(t×

2021-10-27 21:06:47 1063

原创 (二) 三维点云课程---DBSCAN

三维点云课程—DBSCANDBSCAN由于具有同谱聚类一样的效果,但时间复杂度更低,就DBSCAN的步骤进行讲解上述是DBSCAN的效果,类似于图像中的"漫水算法",从一个点出发,找到一个离自己比较近的点,找到之后继续寻找。虽然是工作在欧式空间,但是效果很好。1.步骤准备工作:所有点的标签都是未访问的参数:距离r,最小采样点minPts1.随机选择一个未访问的点p,在半径r发现它的邻居2.半径r内的邻居数≥\ge≥ minPts是的。p是核心点,此时创建一个聚类C,标记p为访问过后的点,

2021-10-27 20:41:14 1698

原创 (二) 三维点云课程---Special Clustering(谱聚类)代码

三维点云课程—Special Clustering代码from sklearn import datasetsimport numpy as npfrom sklearn.cluster import KMeansfrom matplotlib import pyplot as pltfrom itertools import cycle, islice# 计算两个坐标之间的欧氏距离def distance(x1, x2): res = np.sqrt(np.sum((x1 - x2

2021-10-26 21:36:13 665

原创 (二) 三维点云课程---Spectral Clustering(谱聚类)

三维点云课程—Spectral Clustering三维点云课程---Spectral Clustering三维点云课程---Spectral Clustering1.前言1.1cut(Ai,Ai‾)cut(A_i,\overline {A_i})cut(Ai​,Ai​​)的解释1.2 ∣Ai∣,vol(Ai)|A_i|,vol(A_i)∣Ai​∣,vol(Ai​)的解释2.原理推导2.1知识铺垫2.1.1相似矩阵W三个建立方法2.1.2 对角矩阵D2.1.2 拉普拉斯矩阵L2.2直观理解2.3 数学推导

2021-10-26 21:00:54 559

原创 (二) 三维点云课程---GMM

三维点云课程—GMM三维点云课程---GMM三维点云课程---GMM1.前言2.GMM原理2.1E步推导2.2.M步推导2.2.1固定πk,Σk\pi_k,\Sigma_kπk​,Σk​,求解μk\mu_kμk​2.2.2固定πk,μk\pi_k,\mu_kπk​,μk​,求解Σk\Sigma_kΣk​2.2.3固定μk,Σk\mu_k,\Sigma_kμk​,Σk​,求解πk\pi_kπk​3.GMM总结4.GMM完整代码5.GMM的一些缺点由于KMeans缺乏不确定性的指标,GMM算法可以解决这个问

2021-10-25 11:16:01 1186 1

原创 (二)三维点云课程---KMeans介绍

三维点云课程—KMeans介绍KMeans作为一种三维点云中的聚类方法,由于原理简单,使用起来方便。现在就KMeans介绍它的原理1.KMeans原理推导推导KMeans原理之前,先说明一下下面用到的符号。三维数据集x1,x2,...,xN,xn∈RDx_1,x_2,...,x_N,x_n \in R^Dx1​,x2​,...,xN​,xn​∈RD;聚类中心μk,k=1,...,k\mu_k,k=1,...,kμk​,k=1,...,k,k代表聚类的个数,KMeans中需要认为设定;二进制变量γnk∈

2021-10-24 16:02:42 4498 1

原创 (一) 三维点云课程---Voxel Grid Downsamping

三维点云课程—Voxel Grid Downsamping1.选取点的方案1.质心法:计算所有满足条件点的平均值,速度慢,但相对准确2.随机法:从满足条件的点中随机选择一个点,速度块,但误差大2.步骤1.计算三维点集p1,p2,...,pN{p_1,p_2,...,p_N}p1​,p2​,...,pN​的最小和最大值xmax⁡=max⁡(x1,x2,⋯ ,xN),xmin⁡=min⁡(x1,x2,⋯ ,xN),ymax⁡=⋯⋯x_{\max }=\max \left(x_{1}, x_{2},

2021-10-23 16:21:32 1113

原创 (一)三维点云课程---Kernel PCA介绍

Kernel PCA介绍经过上面PCA的介绍,发现PCA是个好东西,但是仔细分析发现PCA是线性,对于下面的情况,PCA就没有办法:此时需要将数据先通过核函数转换到一个新的空间,也就是升维过程,然后再利用PCA进行降维处理。1.推导过程1.输入数据xi∈Rn0x_i \in R^{n_0}xi​∈Rn0​ ,存在一个非线性函数映射ϕ:Rn0→Rn1\phi :{R^{{n_0}}} \to {R^{{n_1}}}ϕ:Rn0​→Rn1​,其实就是升维过程2.按照线性PCA的过程,对Rn1R^{n_

2021-10-22 16:12:37 482

原创 (一) 三维点云课程---PCA代码

三维点云课程—PCA代码代码修改于大佬的代码:大佬的代码数据集下载:数据集比较大,需要的加我QQ:2822902808# 实现PCA分析和法向量计算,并加载数据集中的文件进行验证import argparseimport osimport numpy as npimport open3d as o3d from pyntcloud import PyntCloud##输入:data:点云,NX3的矩阵# correlation:区分np的cov和corrcoef,不输入

2021-10-21 18:02:19 817

原创 (一) 三维点云课程---PCA介绍

三维点云课程—PCA介绍1. 什么是PCAPCA中文名是主成分分析,物理意义是将这些数据点投影到一个非常有特征性的方向上,每个数据点在这个向量上的投影就是主成分2.知识铺垫2.1 SVD分解(奇异值分解 )其中U和VTV^TVT 都是正交矩阵(旋转矩阵 U∗UT=UT∗U=IU*U^T=U^T*U=IU∗UT=UT∗U=I),∑为非负对角阵,里面的特征值由大到小进行排列,这些特征值所对应的特征向量就是描述这个矩阵变化的。通过特征值分解(m×mm \times mm×m)可以得到特征值(表示这个

2021-10-21 17:52:34 2478

原创 GDB基本操作

GDB基本操作1.GDB是什么2.GDB 安装3.GDB快速上手4.print和step4.1 print 可以查看变量的值4.2 step命令可以跳入另一个函数5.GDB小技巧5.1 gdb环境中可以使用shell脚本5.2 日志功能5.3 watchpoint 监视一个变量5.4 如何控制for循环的循环次数5.5 在循环中跳过for循环6.GDB调试非正常文件6.1程序已经挂掉,调试core文件6.2调试正在运行的程序1.GDB是什么GDB调试器可以运行你在程序运行的时候检查里面到底发生了什么?

2021-10-07 16:29:40 1685

原创 shell脚本学习(四)

十四.shell对输出流的处理在日常计算机管理中,总会有很多数据输出到屏幕或者文件,这些输出包含了标准输出、标准错误输出。默认情况下,这些信息全部输出到默认输出设备—-屏幕。然而,大量的数据输出中,只有一小部分是我们需要重点关注的,我们需要把我们需要的或者关注的这些信息过滤或者提取以备后续需要时调用。早先的学习中,我们学过使用grep来过滤这些数据,使用cut、tr命令提出某些字段,但是他们都不具备提取并处理数据的能力,都必须先过滤,再提取转存到变量,然后在通过变量提取去处理,比如:内存使用率的统计步骤

2021-09-28 19:31:22 301

原创 shell脚本学习(三)

十二.正则表达式1.正则表达式介绍正则表达式是一种文本模式匹配,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。它是一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个字符串中取出某个条件的子串。正则表达式就像数学公式一样,我们可以通过正则表达式提供的一些特殊字符来生成一个匹配对应字符串的公式,用此来从海量数据中匹配出自己想要的数据。正则表达式是一个三方产品,被常用计算机语言广泛使用,比如:shell、PHP、python、java、js

2021-09-28 19:25:00 170

原创 shell脚本学习(二)

七.shell流程控制-if判断语句1.shell中的运算1.1数学比较运算 运算符解释 -eq 等于 -gt 大于 -lt 小于 -ge 大于或等于 -le 小于或等于 -ne 不等于1.2 字符串比较运算 运算符解释,注意字符串一定别忘了使用引号引起来 == 等于 != 不等于 -n 检查字符串的长度是否大

2021-09-28 19:20:41 185

原创 shell脚本学习(一)

shell脚本一. 什么是shellshell是一个程序,采用C语言编写,是用户和linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。通过一个图表来查看一下shell的作用。、**拓展知识:****kernel:为软件服务,接收用户或软件指令驱动硬件,完成工作;****shell:命令解释器****user:用户接口,对接用户。**上图可以看出,shell在操作系统中起到了承接用户和系统内核的作用。那为什么不直接用户对内核呢?原因很简单,因为内核处理的都是二进制,而用户

2021-09-28 19:17:00 320

原创 TCP/IP的三次握手和四次挥手以及滑动窗口

TCP/IP的三次握手和四次挥手以及滑动窗口三次握手TCP/IP协议是传输层的一个面向连接的安全可靠的传输协议,三次握手的机制是保证能建立一个安全可靠的连接,那么第一次握手是由客户端发起,客户端会向服务端发送一个报文,在报文里SYN=1,当服务端收到这个报文之后,就知道客户端要和我发起一个新的连接,于是,服务端就向客户端发送一个确认消息报,这个消息报文ACK=1,以上两次握手之后,对于客户端来说已经知道,我既能给服务端发消息也能收到服务端发的消息,但是对于服务端来说,两次握手是不够的,因为,到目前为止,

2021-09-28 11:15:24 180

原创 C++中常用的排序方法的总结

C++中常用的排序方法的总结1.冒泡排序排序原理,时间复杂度为O(N2N^2N2)(1). 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置(2). 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。代码如下#include <iostream>#include <vector>using namespace std;class Bubble {public: Bubble(int N_):

2021-09-26 20:07:09 588 3

原创 C++中的一些技巧小结(一)

C++中的一些技巧小结(一)1.如何通过vector的数组名来打印数组元素,需要用到<<重载#include <iostream>#include <vector>#include <string>using namespace std;template <typename T>ostream &operator <<(ostream &out, vector<T>&_vec){ i

2021-09-21 18:02:35 139

原创 G2O使用说明(SLAM中)

G2O使用说明(SLAM)范例:在使用G2O要明确目标函数是什么,优化变量是几维,误差项是几维。举例说明:现在有很多个点符合y=exp(ax2+bx+c)+wy=exp(ax^{2}+bx+c)+wy=exp(ax2+bx+c)+w,其中w为高斯噪声。那么目标函数就是e(a,b,c)=y−exp(ax2+bx+c)e(a,b,c)=y-exp(ax^{2}+bx+c)e(a,b,c)=y−exp(ax2+bx+c)使得它最小(最小二乘法的原理)。优化变量就是a、b、c是三维的,误差项是e(a,b,c)的值

2021-08-22 15:44:47 1717 3

空空如也

空空如也

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

TA关注的人

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