![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经典算法
文章平均质量分 77
绿竹巷人
不想做算法工程师的算法工程师
展开
-
C++实现PID控制算法
描述PID控制算法,是自动化专业学生必须掌握的基本控制算法比例积分微分算法比例项P:与当前误差相关积分项I:与一段时间积累的误差相关微分项D:与误差的变化相关大家的解释都很多了,这里不进行描述了。说一下调参的顺序和心得吧:先调P,再调D,最后调I调P,让曲线震荡起来调D,阻止曲线的震荡,让曲线平滑调I,把曲线整体调整到目标值代码我随便写的代码,pid三个参数没有调整,但PID的意思我是基本写清楚了。#include <iostream>#include <ma原创 2020-08-24 23:15:55 · 7431 阅读 · 0 评论 -
黄金搜索算法
描述黄金搜索算法,黄金分割数是5−12\frac{\sqrt{5}-1}{2}25−1挺简单的一个小算法,算法原理简要说一下:假设我们要在范围[a, b]内寻找距离c最近的一个点。由于黄金分割率的特性11+5−12 =5−12\frac{1}{1+\frac{\sqrt{5}-1}{2}}\; =\frac{\sqrt{5}-1}{2}1+25−11=25−1我们把 b−ab-ab−a 的差算是1份,0.618份可以算出两个值,c= b-0.618(b-a),d=a+0.618(原创 2020-08-24 22:29:27 · 1654 阅读 · 0 评论 -
贝塞尔曲线生成路径
描述使用贝塞尔曲线生成路径已知:若干个二维路径点(x, y),生成一段由一系列(x, y)点组成的点集公式网上有很多贝塞尔曲线的概念和知识,这里不做赘述贝塞尔曲线上的路径点计算公式:P(t) =∑i=0nk(i, n, t)⋅Pi, t∈[0,1]P\left( t \right)\; =\sum_{i=0}^{n}{k\left( i,\; n,\; t \right)\cdot P_{i}},\; \; \; \; t\in \left[ 0,1 \right]P(t)=原创 2020-08-10 18:53:34 · 1568 阅读 · 0 评论 -
离散点的曲率计算
描述我有一个点集,里面都是[x,y]这样的二维点,这个点集能形成一个曲线。在并不想去求这个曲线的表达式时,怎么得到某一点的曲率呢相关知识曲率的定义是:针对曲线上某个点的切线方向角对弧长的转动率,而曲率的倒数就是曲率半径K = ∣Δθl∣ = ∣1r∣ K\; =\; \left| \frac{\Delta \theta }{l} \right|\; =\; \left| \frac{1}{r} \right|\; K=∣∣∣∣lΔθ∣∣∣∣=∣∣∣∣r1∣∣∣∣式子中KK原创 2020-08-08 19:16:26 · 8299 阅读 · 5 评论 -
二维点云ICP的C++实现
描述使用C++代码来实现二维点云ICP算法二维点云ICP原理推导特点说明:ICP算法中的loss计算方式,可以根据自己实际需要来调整。我这里使用的是,目标点云A中的某个点 a,从源点云 B 中找到距离点 a 最近的点 b,总的loss就是这些a-b距离之和正常的loss计算方式,应该是从源点云B中的每个点 b,去目标点云A里寻找最近点loss的定义方式一定要好好思考,结合自己的实际需要,不要只会把我下面的代码搬过去,因为可能不work代码这里我只提供一个ICP的api接口,是从我的一段代原创 2020-06-18 12:07:14 · 2246 阅读 · 4 评论 -
二维点云ICP的python实现
描述使用python语言来实现二维点云的ICP算法二维点云ICP算法原理及推导,请见我的另外一篇博客二维点云ICP原理推导特点说明:ICP算法中的loss计算方式,可以根据自己实际需要来调整。我这里使用的是,目标点云A中的某个点 a,从源点云 B 中找到距离点 a 最近的点 b,总的loss就是这些a-b距离之和正常的loss计算方式,应该是从源点云B中的每个点 b,去目标点云A里寻找最近点loss的定义方式一定要好好思考,结合自己的实际需要,不要只会把我下面的代码搬过去,因为可能不work原创 2020-06-18 11:44:39 · 3947 阅读 · 2 评论 -
二维点云ICP原理推导
二维点云ICP原理推导描述ICP是迭代就近点算法,大部分的实现代码都是基于PCL点云库的,也就是三维点云的匹配实际上,二维点云数据也算是常见的数据类型,比如移动机器人经常使用的单线雷达。本文就是二维点云ICP的原理推导算法原理二维点云数据说明先说明单线激光雷达数据类型data=[riθi]data=\left[ \begin{array}{c} r_{i} \\ \theta _{i} \end{array} \right]data=[riθi]r和θ代表每一束激光的距离和扫描角度原创 2020-05-28 00:01:25 · 6367 阅读 · 31 评论 -
快速排序算法C++实现
描述快排算法代码代码参考链接为https://blog.csdn.net/qq_28584889/article/details/88136498感谢结果为升序(从小到大)void quickSort(int left, int right, vector<int>& arr){ if(left >= right) return; int i, j,...原创 2020-04-24 14:04:06 · 247 阅读 · 0 评论 -
直线拟合(Ransac + Opencv)
直线拟合(Ransac+Opencv)Ransac原理Ransac直线拟合原理(待补充)代码出现的BugOpenCV Error: Assertion failed (npoints2 >= 0 || npoints3 >= 0) in fitLine原因代码错误表明问题出现在fitLine(),下面是Opencv提供的源码void cv::fitLine( Input...原创 2019-12-10 15:20:15 · 3439 阅读 · 0 评论