自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OMPL官方教程学习Constrained Planning Tutorial

Constrained Planning Tutorial带约束的规划,这个应用场景就很多了从下面这段话中可以看出,使用带约束的规划:首先要定义一个约束constraint其次要在受约束的空间进行规划constrained state space约束方程满足f(q):Q→Rnf(q):Q \rightarrow R^nf(q):Q→Rn,f(q)=0f(q) = 0f(q)=0.本次教程使用的约束是:f(q)=∥q∥−1f(q)=\left \| q \right \| - 1f(q)=∥q∥

2022-05-02 16:42:35 652 1

原创 OMPL官方教程学习Optimal Planning Tutorial

Optimal Planning TutorialOptimal Planning应该是最优规划吧,规划算法在某种程度上是最优,比如RRT*等等。官方教程中说使用要进行Optimal Planning 与一般的规划方法使用流程基本一样,只不过多了一下两点:需要为ompl::base::ProblemDefinition 对象设置目标函数optimization objective需要使用最有规划器optimizing planner,而不是一般的规划器。尴尬我都不知道一般的规划器使用流程。。。

2022-05-02 14:35:46 1412

原创 OMPL官方教程学习Using existing samplers and creating new ones

Available State Samplers有两种不同类型的采样器:StateSampler (不考虑状态的有效性?不管障碍物都进行采样?)ValidStateSampler (考虑状态的有效性,考虑非障碍物区域么?)两种采样器都具有三种采样方式:均匀、在一个状态周围进行采样(?)、高斯分布。ValidStateSampler 使用StateSampler 作为底层实现ValidStateSampler 使用StateSampler 的方法进行采样,直到碰见无效点或者迭代结束采样有效性

2022-05-02 13:07:05 369

原创 OMPL官方教程学习Working with States and State Spaces

Working with States and State Spaces本教程大概意思应该是:如何使用状态与状态空间对象、以及两者之间的关系,状态空间是整个规划算法的描述基础,我觉得很重要。1 Allocating memory for states(如何创建对象)状态对象的内存分配或者说如何创建一个状态对象1.1 The simple version从官方提供的两个代码可以看出StateSpace:是基本的状态空间对象SpaceInformation:是在StateSpace的基础上进一步

2022-05-02 13:03:49 500

原创 OMPL官方教程学习State Validity Checking

State Validity Checking(状态有效性检测?)State Validity Checking 的功能:描述对于状态空间所给定的某个状态是否有效OMPL本身不包含State Validity Checking, 因为这个检测过程或者说检测的方法是和实际的问题紧密联系的,从下面的这段话中可以看出,State Validity Checking 这个过程很像是碰撞检测OMPL itself does not include code for state validity checkin

2022-05-02 12:59:15 634

原创 OMPL官方教程学习笔记

Geometric planning for a rigid body in 3D这是官方教程中的第一个示例:讲述了使用OMPL的一般组织架构,结合官方的API关系图更好理解使用SimplSetup类我们就需要实现:StateValidityChecker与StateSpace不适用SimpleSetup类我们就需要实现:StateValidityChecker、SpaceInformation、ProblemDefinition、planner、StateSpace我看了后面教程才知道,使用O

2022-05-02 12:55:28 1111

原创 D*算法理解以及C++实现

D*算法1. 算法流程我对该算法流程的理解:在该算法中,有两个重要状态RAISE状态与RAISE状态与RAISE状态与LOWER状态,我认为状态,我认为状态,我认为RAISERAISERAISE状态发生在地图上状态点由空闲状态变为障碍物,所以导致该点会向其子节点传递这种RAISERAISERAISE状态。LOWERLOWERLOWER状态发生在障碍物变为空闲状态的状态点,另一个是该点本身是最优的(到达该点的最优路径已经确定,可以说是CLOSECLOSECLOSE中的点,这种点h=kh=kh=k),正是

2022-04-10 20:19:56 2574 1

原创 BF、BFS、DFS、Dijkstra、Astar在实现上的不同

5. BF、BFS、DFS、Dijkstra、Astar在实现上的不同BFS,盲目搜索,与代价函数f(x)=g(x)+h(x)f(x)=g(x)+h(x)f(x)=g(x)+h(x)无关,使用队列的特性实现。DFS,盲目搜索,与代价函数f(x)=g(x)+h(x)f(x)=g(x)+h(x)f(x)=g(x)+h(x)无关,使用堆栈的特性实现。BF,与代价函数f(x)=g(x)+h(x)f(x)=g(x)+h(x)f(x)=g(x)+h(x)有关,离目标近的点优先搜索,即:不考虑g(x)=0g(x)

2022-04-07 16:46:40 665

原创 Dijkstra算法实现

4. Dijkstra算法Dijkstra是一种贪婪算法,选择待访问点的标准是离起始点近的点优先访问。我所编写的代码的流程:创建OPEN与CLOSED列表,代表已访问的点以未访问的点添加初始节点到OPEN中判断OPEN列表是否为空,为空则结束搜索,未找到路径,(循环1)取出OPEN中离起始点最近的点,记为cueent_node,将其从OPEN中删除,并添加到CLOSED中获取current_node周围点(子节点),并遍历(循环2)判断周围点是否在CLOSED中,在其中则continu

2022-04-07 16:34:50 876

原创 BF(Best-first)算法

3. BF算法BF(Best-first)算法,这是一种贪婪算法,访问节点的标准是离目标最近的点优先访问。我所编写的代码的流程:创建OPEN与CLOSED列表,代表已访问的点以未访问的点添加初始节点到OPEN中判断OPEN列表是否为空,为空则结束搜索,未找到路径,(循环1)取出OPEN中离目标最近的点,记为cueent_node,将其从OPEN中删除,并添加到CLOSED中获取current_node周围点(子节点),并遍历(循环2)判断周围点是否在CLOSED中,在其中则contin

2022-04-07 16:22:27 903

原创 DFS(深度优先搜索)算法实现

2 DFS算法DFS(深度优先搜索)算法,搜索过程是类似于不撞南墙不回头的意思,DFS一般使用堆栈(先入后出)这种数据结构实现,由此一来,以初始起点为中心进行搜索,首先是周围点加入到堆栈中,起始点搜索完毕后,需要从周围点选择一个点进行访问,然而由于先入后出的特点,导致周围点中最后一个进入堆栈的节点被访问。然而,新的节点也有周围点,这些周围点也会被推入堆栈,由此一来,起始点周围的点还未访问完毕,新的周围点又加入到其中,循环往复,使得搜索不断的朝着一个方向进行。我使用链表完成先入后出的操作我所编写的代码的流

2022-04-07 16:10:14 3993

原创 BFS(广度优先搜索算法)实现

1. BFS算法BFS(广度优先搜索算法),搜索过程是从起始点一层一层的访问周围点,没有涉及到代价函数,是一种盲目搜索,搜索周围点的顺序是人为确定的。一般使用队列(先入先出)这种数据结构实现。但我的代码中使用链表这个数据结构实现,链表也能完成先入先出的操作。我的代码中的主要算法过程:创建OPEN与CLOSED列表,代表已访问的点以未访问的点添加初始节点到OPEN中判断OPEN列表是否为空,为空则结束搜索,未找到路径,(循环1)取出OPEN中最前面的点,记为cueent_node,将其从OPE

2022-04-07 15:40:17 3344

原创 A*算法笔记

一个关于A*算法简单原理与实现

2022-04-05 15:05:22 1725

原创 R7000+1650安装ubuntu20.04.3以及470.82驱动

1.说明在拯救者R7000+1650上安装ubuntu20.04.3,并解决独立显卡驱动问题R7000+1650+ubuntu20.04.3+nvidia_diriver_470.822.参考教程地址https://blog.csdn.net/weixin_43959739/article/details/1153307683.安装系统在 BIOS 界面中选择独立显卡直连模式 Discrete Graphic在 BIOS 中关闭 Security Boot在已经安装的 Windows 操作系

2021-11-02 10:01:34 591

原创 OpneCV官方教程学习----Core moudle----图像操作

Core moudle(基础模块)1. Operations with images输入输出:Mat img = imread(filename); //载入一个图片Mat img = imread(filename, IMREAD_GRAYSCALE); //以灰度形式载入图像imwrite(filename, img); //把图像写出OpenCV中还从缓冲区读写数据的函数:cv::imdecode,cv::imencode.获取图像中的某个点的像素值;//单通道访问方法S

2021-09-23 11:10:21 278

原创 OpenCV官方教程学习----Core moudle----掩码

Core moudle(基础模块)1.Mask operations on matrices掩码操作,就是使用一个小矩阵(核矩阵)对整个图像中所有的元素依次进行操作,最终形成对图像的处理。数学上表示如下:I(i,j)=5∗I(i,j)−[I(i−1,j)+I(i+1,j)+I(i,j−1)+I(i,j+1)]⟺I(i,j)∗MM=i∖j−10+1−10−100−15−1+10−10I(i,j)=5*I(i,j)-[I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1)]\\\Lon

2021-09-23 11:03:34 260

原创 OpenCV官方教程学习----Core moudle----图片访问

Core moudle(基础模块)1.How to scan images, lookup tables and time measurement with OpenCV1.1 测试用实例描述OpenCV官方文档中此部分的应用背景:一种简答的色彩还原方法。问题描述:由于元素在矩阵中的存储最少也是256个不同值,如果直接采用一对一的映射将十分的需要资源,为了解决这个问题,首先对图像进行一个简单的色彩空间缩减算法,原理很简单,通过C++中的取商后乘十来实现,具体公式如下;Inew=(Iold10)∗1

2021-09-23 11:01:39 98

原创 OpenCV官方教程学习----Core moudle----Mat

Core moudle(基础模块)Mat - The Basic Image Container1.1 Mat首先当然是学习数据结构啦,OpenCV的最最最基本的数据结构Mat。Mat基本上包含两个部分:the matrix header : 包含矩阵的大小、存储方式、存储地址等信息。a pointer to the matrix containing the pixel values:指向矩阵元素的指针。图像计算中往往计算量很大,因此OpenCV中赋值运算符只会复制矩阵的头和指向矩阵元素

2021-09-23 10:58:49 100

原创 Cmake Practice学习笔记

Cmake Practice学习笔记PROJECT指令:PROJEXT(projectname [CXX] [C] [Java] )例如:PROJECT (HELLO)功能:用来定义工程名称,并可指定工程支持的语言,支持列表可以忽略,默认支持所有语言。该指令使用后隐式的定义了两个变量:<projectname>_BINARY_DIR,表示编译路径,等价于HELLO_BINARY_DIR<projectname>_SOURCE_DIR,表示**工程路径,**等价于HEL

2021-09-15 19:50:05 250

原创 Eigen3学习笔记——密集线性问题和分解

密集线性问题和分解线性代数及其分解基本线性方程求解问题的数学描述,A,bA,bA,b为矩阵(bbb当然可以是向量),xxx是解:Ax=bAx = bAx=bEIgen 解决着这种线性方程后很多方法,但调用的格式是一样的,以其中一个为例:Matrix3f A;Vector3f b;A << 1,2,3, 4,5,6, 7,8,10;b << 3, 3, 4;//注意调用格式Vector3f x = A.colPivHouseholderQr().solve

2021-09-03 20:36:41 900

原创 Eigen3学习笔记——密集矩阵和数组操作(3)

矩阵重新整形reshape在3.4 以后reshape不执行立即整形,而是返回一个**”view“**(意思应该是不在是具体的矩阵,而是一种简化)因此,不允许整形之后直接赋值:A = A.reshap(2,8),可以进行A = A.reshap(2,8).eval(),**eval()**是将表达式转换成矩阵!!DenseBase::reshape(NRowsType,NColsType); //将矩阵重新按行和列进行排序DenseBase::reshape() //将矩阵按列排列

2021-09-03 17:27:00 600

原创 VScode的task与launch学习笔记

VScode的task与launch学习笔记task部分task的作用​ VS Code 中的任务可以配置为运行脚本和启动进程,这样许多现有工具可以在 VS Code 中使用,而无需输入命令行或编写新代码创建task​ ctrl+shift+P,搜索task。​ 创建task的时候有很多模板可供选择,最好使用自定义task,也就是other,虽然需要花时间去了解构建task的知识,但是这样可以完全掌控自己想要的功能。task参数配置!!!一定要学会使用下面两个法!!!:CTRL +

2021-09-03 09:43:16 4758

原创 Eigen3学习笔记——密集矩阵和数组操作(2)

矩阵和算数运算Eigen 通过重载C++的算数运算符或特殊方法来进行矩阵的算数运算加减参与加减的矩阵要满足行列情况,并且元素数据类型也要相同,Eigen 不会自己进行数据类型转换。//这里简单给出加减法运算,注意数据矩阵的数据类型Matrix2d a;a << 1, 2, 3, 4;MatrixXd b(2,2);b << 2, 3, 1, 4;//双目加法:a+b//双目减法:a-b//单目减法:-a//复合加法:a+=b //a = a + b;

2021-09-02 21:10:54 930

原创 Eigen3学习笔记——密集矩阵和数组操作(1)

Eigen3学习笔记密集矩阵和数组操作矩阵类在Eigen中,所有的矩阵和向量都是Matrix类模板的对象。Matrix的前三个模板参数(与后面一部分内容整合在一起)Martix一共需要6个参数,前三个必须有的模板参数如下:Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime, int Options = 0, int MaxRowsAtCompileT

2021-09-01 19:57:55 411

原创 如何解决VSCode中编写c++时出现includepath的问题

解决方法一:编写c_cpp_propertise.json文件 ”CTRL+SHIFT+P“打开command palettee 搜索C/C++并点击Edit Configuration(JSON) 在includePath下填写需要包含的路径 这种方法的弊端:这种包含路径的方法是一种局部方法,也就是只对当前工作区的文件有效,每次写工程都要重新编写解决方法二:编写setting.json文件 “CTRL+,”打开设置项 搜索setting.json,随便点击

2021-09-01 16:20:52 10144

空空如也

空空如也

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

TA关注的人

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