- 博客(57)
- 收藏
- 关注
原创 [源码阅读]SMUG Planner
4.这个二维查找表的行对应的是一个TOI ,列对应的是 这个 TOI 里第 j 个POI 想连接到起点时候,经过的上一个 TOI 的第k 个 POI ,这个k 使路径代价最小。3.计算 当前TOI 每一个POI j 到起点时经过的上一个 TOI 的第k 个POI ,记录下路径代价最小时候的 j 对应的k ,放入一个二维查找表,2.然后转入到 上一个 TOI (倒数第二个),计算新的 TOI 到刚刚的TOI 内所有 POI 之间的路径 以及代价,6.最后根据查找表得到访问顺序的路径点POI们。
2023-09-05 21:06:07
234
原创 DP求解最短路径
设 s s1 s2 s3 t 是 s 到 t 的最短路径,且 s s1 之间的最短路径已经求出,则 s1 到 t 的最短路径是 s1 s2 s3 t ,如果不是,那么存在一条 s1 r2 r3 t 这样的最短路径。这是最后一个阶段的决策,它依赖于d(1,9)、d(2,9)和d(3,9)的计算结果。这一阶段的决策又依赖于d(4,9)、d(5,9)和d(6,9)的计算结果。这一阶段的决策依赖于d(7,9)和d(8,9)的计算。代码实现 (增加注释)
2023-09-05 18:59:59
319
原创 多目标优化问题
至此,得到了p-1个可行区间[(f2_min, f2_max),(f3_min, f3_max)…(fp_min, fp_max)]。与此同时函数值之间难以比较,所以导致很多在解决单目标TSP优化问题的有效算法,在面对多目标TSP问题时难以发挥,为了解决这个问题,采用标准化的思想,将不同的目标函数值,投影到0到1之间,从而进行组合比较。若设置每个区间内步长统一为n,则一个区间内可以得到(f2_max-f2_min)/n个解,p-1个区间内就有(p-1)*(f2_max-f2_min)/n。
2023-08-29 17:19:16
543
原创 多目标优化
基于回报值的优化模型旨在深入刻画优化的本质需求,将评价指标转化为回报值,描述系统或服务的指标属性对优化目标的作用,针对需求进行更为合理、有效的优化.基于回报值的优化往往结合性能评价同时开展.在优化过程中,研究不同评价指标对求解目标的本质影响,形式化刻画评价指标与回报值的量化关系,给出转化公式;但是多目标优化,在需要优化多个目标时,容易存在目标之间的冲突,一个目标的优化是以其他目标劣化为代价的,所以我们要进行协调和折中。帕累托模型、进化算法、多目标蚁群算法、多目标遗传算法、多目标粒子群算法、多目标优化算法。
2023-08-29 16:14:21
1360
原创 TSP问题
旅行商问题:拜访每一个城市一次 最后回到起点 总路径代价最小TSP问题的输入是一个边带权的完全图,目标是找一个权值和最小的哈密顿回路。TSP问题可大致分为对称TSP问题和非对称TSP问题。所谓对称指的是在模型中,城市 到城市 的距离与城市 到城市 的距离是一样的,其在图中的体现就是对称TSP问题的输入一般是无向图,而非对称TSP问题的输入往往是有向图一个带有n个节点的带权完全图G,一共有(n-1)!中可能的路径优化函数就是,最小化每一步的最小路径代价。
2023-08-28 11:42:46
254
原创 Kdtree
kdtree 就是在 n 维空间对数据点进行二分;具体先确定一个根,然后小于在这个维度上的根的节点在左边,大于的在右边,再进行下一个维度的划分。直到维度结束,再重复,或者直到达到了结束条件:例如输入的点的个数小于叶子节点最大点个数 到达了最大深度。将点云数据传入kdtree , 即将点云数据构建成kdtree的结构形式。直接在上面就可以调用函数进行 任意点 任意半径 任意k个点 的最近搜索了。
2023-08-28 11:41:51
115
原创 Bresenham 贝汉明算法
计算下 1 和 2 距离开始节点的 x 向 和 y 向的距离 xd 和 yd 占起止点之间在 x y 向的距离的百分比 x% y%;注意更新 x% , 也就是 x% 变为了 新的当前节点到开始节点 x 向的距离占起止节点之间 x 向的距离的百分比了。假如 x% < y% 那么下一个栅格就是 当前节点的 x 加 1 或者 -1;我们首先找到当前栅格的下一个 x 和 y 方向的栅格 1 和 2;理解:给定两个点,画出两个点的连线经过的栅格。TARE 里面有类似的实现代码。
2023-08-28 11:41:04
318
原创 动态规划算法
为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题。一个决策序列就是在变化的状态中产生的,所以这种多阶段最优化决策解决问题的过程就是动态规划(DP)。将求解的问题分解成若干子问题。然后按顺序求解子问题,前一问题的解会为后一问题的求解提供信息。的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)。问题的阶段、每个阶段的状态、前一个阶段到后一个阶段之间的递推关系。
2023-08-28 11:30:31
101
原创 costmap的膨胀参数解读--转载
3. “Possibly circumscribed” 代价与“Inscribed”代价相似,但是其依据为机器人本体的外接圆的半径。2. “Inscribed”代价表明某栅格距离机器人小于机器人本体的内切圆,如果机器人中在此类栅格中,则机器人肯定发生碰撞。膨胀(inflation)为被占据栅格(障碍物)按照距离向其周边栅格传播的过程。1. “Lethal”代价表明该栅格包含障碍物,如果机器人的中心在此类栅格中,则机器人发生碰撞。4. “Freespace”代价为零,在此类栅格中,机器人绝对不会发生碰撞。..
2022-08-28 19:52:46
907
原创 ros::NodeHandle
1、句柄可以让你通过构造函数指定命名空间ros::NodeHandle nh("my_namespace");这使得使用该句柄的任何相对名字都是相对/my_namespace,而不是只相对你也可以指定一个父句柄和追加的命名空间ros::NodeHandle nh1("ns1");ros::NodeHandle nh2(nh1,"ns2");这将把nh2放入到/ns1/ns2命名空间2、也可以指定全局名字ros::...
2022-06-28 15:48:34
625
原创 RIA E100 操作方式
SSH 登陆首先设置有线连接,ping 测试是否连通。然后 ssh -Y ria@192.168.10.10 登陆;注意最好是 -Y,这个方式,这样可以后续看到机器人内部的文件内容。键盘控制使用电脑键盘控制我们需要解决一个红色报错joy…相关的,dev/…ls0 相关的cd 到 catkin_make/src/…/e100_bringup/min…注释掉 启动 遥杆相关的 代码 joy… 那部分。然后按照教程启动相关文件就可以了。...
2022-05-05 21:21:54
904
原创 catkin build 和 catkin_make
首先安装:sudoapt-getinstallpython-catkin-tools编译过程中你可能会遇到以下错误,那是因为以前使用了catkin_make进行编译,需要把build和devel删除掉。再编译就好了。catkin build 和 catkin_make 功能包分开放在不同ws 下。简单来说,如果ros的工作空间 (workspace) 中只有一个ros包(ros package),那么catkin_make和catkin build区别不大;如果一个cakti...
2022-04-28 18:05:19
3875
原创 数据结构---堆---简单
https://leetcode-cn.com/tag/heap-priority-queue/problemset/506. 相对名次给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:名次第 1 的运动员获金牌 "Gold Medal" 。名次第 2 的运动员获银牌 "Si.
2022-04-13 21:41:20
110
原创 C++template03 class template
//类模板//类模板的作用:建立一个同类,类中的成元数据类型不确定,使用虚拟的代表类型T#include <iostream> #include <string>using namespace std;//类模板template<typename NameT, class AgeT> // 需要几个T 就写几个T ,用 ,, 个开就好了//后面这就算类模板了class Person{public: Person(NameT name,
2022-04-13 14:07:33
358
原创 C++模板02
#include <iostream>#include <string>using namespace std;/**************普通函数和函数模板的调用规则 **********//*笔记:如果普通函数和函数模板都可以调用,优先调用普通函数可以通过空模板参数列表强制调用函数模板函数模板也可以发生重载如果函数模板可以产生更好的匹配,优先调用函数模板*///若函数模板和普通函数都可以调用,普通函数优先//可以通过空模板参数列表,强制调用函数模板//
2022-04-13 10:54:02
294
原创 C++模板1
模板的概念模板就是建立通用的模具,泛型编程,例如没有头部只有西装的照片模板,PPT模板模板不可以直接用来使用,通性比较强,需要写内容,不是万能的函数模板语法函数模板语法: 建立一个通用函数,其函数的 返回值 和 形参类型 可以不具体化,用一个虚拟的类型代表 template<typename T> 函数的声明或定义 template-----------------声明使用模板了 typename---------------表示
2022-04-12 22:09:36
245
原创 数据结构-优先级队列01
1. 这个优先级不再只FIFO,而是按照优先级进行进出;2. 我们可以用数组(头尾相连数组)或者链表来构造优先队ADT(抽象数据结构)但是入列队和出列队会比较慢 O(N);3. 一个满的(不止是完整的)含有N个元素的二叉树的高度 h 总是 N = 2^(h+1)-1,所以 h = log2(N+1)-1 ~= log2 N。看上面的例子 N = 7 = 2^(2+1)-1 或者 h = log2(7+1)-1 = 2. (直观上的三层高度h= 2);所以,如果我们有一个含有N个元素的二叉..
2022-04-12 21:01:40
425
原创 dynamic_reconfigure
机制修改参数后不需要重启,而是向服务端发送请求,然后服务端通过回调函数确认,完成参数的动态重配置。参考链接:https://www.guyuehome.com/1173阅读笔记:首先写一个配置文件导入参数生成器创建一个参数生成器定义动态配置的参数生成文件Cmakelist修改然后创建一个服务端节点实例化服务器定义回调函数和服务端绑定Cmakelist修改最后运行实现动态修改...
2022-03-25 11:13:44
447
原创 ROS中C++ boost编程,类内回调函数
首先熟悉boost::bind()定义如下函数:int f(int a, int b){ return a + b;} int g(int a, int b, int c){ return a + b + c;}boost::bind(f, 1, 2)可以产生一个无参函数对象,返回f(1, 2);类似的,boost::bind(g, 1, 2, 3)相当于g(1, 2, 3)其中boost::bind()中使用较为频繁的还有占位符:如:boost::bind(f, _
2022-03-25 10:41:22
3611
2
原创 写一个ros插件与使用
准备$ apt-get install ros-%ROS_DISTRO%-common-tutorials$ catkin_create_pkg pluginlib_tutorials_ roscpp pluginlib创建一个基类在.h文件写类创建插件在.h文件写类,注意 继承 public polygon_base::RegularPolygon注册和导出插件到目前为止,我们已经创建了一些标准的 c + + 类。现在,当我们将 Triangle 和 Square .
2022-03-24 21:32:24
452
原创 实现ROS 插件
ros插件介绍注册使用使用ros创建的工具,我们需要再package.xml中进行插件的注册。插件是一个能够被动态加载的类例子:我们为多边形接口功能包提供正方形和三角形插件类,我么需要再package.xml中向ros build system 声明我们为此功能包基类提供插件。这样我们就可以把插件类注册到了ros build system。 rospack 查询的时候,可以得到两个插件。1.注册和导出插件为了允许动态加载类,必须将其标记为导出类。这是通过特殊宏 PLUGINLIB _ export
2022-03-24 20:59:05
904
原创 Dubins曲线 二
https://www.guyuehome.com/34638注意SeitadotSeita_{dot}Seitadot 的求取方法;最短路径L:就是合成速度的对时间的积分;车辆的运动方式车辆的基本动作可以分为三种:所以构成了12种组合。C31+C32+C33*6证明得到最优的有六种:分为两类,CSC CCC 。问题关键求取切点(也就是从起始点终止点位置离开到达圆的位置)CSC:根据起始点的方向性,切线方向唯一,终点一样。关键就是找到链接两个圆的切线;CCC:关键就是找到过渡切线.
2022-03-10 15:29:37
509
原创 Dubins曲线学习
Dubins曲线 定义: Dubins曲线是在满足曲率约束和规定的始端和末端的切线方向的条件下,连接两个二维平面(即X-Y平面)的最短路径,并假设车辆行驶的道路只能向前行进。如果车辆也可以在反向行驶,则路径为Reeds–Shepp曲线。 相关 Lester Eli Dubins (1920–2010) 证明任何路径都可以由最大曲率和/或直线段组成(两点之间的路径必须存在)。 换句话说,连接两点的最短路径将通过最大曲率的圆弧和直线段构成。 后来Pontryagin的最大原则证明了相同的结果。 分
2022-03-10 11:19:33
1017
原创 costmap一些参数 global和local的参考网址
Plugins~<name>/plugins (sequence, default: pre-Hydro behavior)Sequence of plugin specifications, one per layer. Each specification is a dictionary with name and type fields. The name is used to define the parameter namespace for the plugin. See t
2022-01-16 10:44:11
702
原创 costmap_common
机器人半径机器人的外形障碍物层:combination_method:只能设置为0或1,用来更新地图上的代价值,一般设置为1;Changes the behaviour how the obstacle_layer handles incoming data from layers beyond it. Possible values are "Overwrite" (0), "Maximum" (1) and "Nothing" (99). ...
2022-01-16 10:29:57
579
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人