算法
文章平均质量分 78
xuuyann
国家一级退堂鼓表演艺术家。
知乎:OpenRobotSL
邮箱:neuxuyan@163.com
展开
-
模型预测控制(MPC)基础简介与数学推导
模型预测控制基础介绍原创 2023-03-03 13:32:28 · 16454 阅读 · 0 评论 -
机器人运动学标定:基于考虑约束的指数积的运动学标定方法——只需要测量位置,避免冗余约束
只需要测量位置,避免冗余约束原创 2022-11-22 21:41:06 · 16869 阅读 · 3 评论 -
机器人运动规划:TOPP轨迹后处理开源方案基础版整理
什么是TOPP?为啥要TOPP?原创 2022-10-23 14:37:57 · 6282 阅读 · 1 评论 -
机器人运动学标定:基于DH建模方法
运动学标定这种很基础的问题,理论已非常成熟了,基于激光或拉线编码器的标定系统也已经商业化了。我们在接触这块知识的时候,除了理论,也应该关注于如何融合理论与实践之间的gap.原创 2022-10-09 18:46:20 · 3542 阅读 · 9 评论 -
机器人运动学标定:基于公垂线模型的指数积标定——减少标定参数,避免过度约束
基于公垂线模型的指数积标定算法原创 2022-10-06 17:29:55 · 1762 阅读 · 0 评论 -
机器人轨迹规划:简单的笛卡尔空间/关节空间轨迹规划方案
1.关节空间同步运动2.如何处理运动过程中的平滑性问题3.空间任意曲线速度规划4.考虑到运动特性,从加加速度规划出发也能获得较好的运动特性5.jerk,torque以及snap约束6.通过原始离散数据进行拟合,然后重新进行速度规划7.笛卡尔空间数据拟合8.空间曲线过渡9-1.混合空间过渡9-2.关节空间自适应过渡10.连续姿态全原创 2021-03-25 22:36:44 · 15429 阅读 · 11 评论 -
机器人轨迹规划:求解样条曲线长度——自适应辛普森公式求积分
写在前面挖个坑~在样条学习过程中遇到了积分求解样条长度的问题,一般曲线长度的求解可以采用对速度积分的方式,但如果直接由速度解析表达式计算路径长度非常困难,尤其当表达式复杂的时候,对于计算机编程而言非常不友好。为此,可通过数值积分的方式对表达式进行近似积分,常见方法有复合梯形积分、复合辛普森积分。下面尝试采用自适应辛普森公式,先简单用matlab测试一下~自适应辛普森公式求积分matlab简单测试代码如下% 自适应辛普森求积分% https://blog.csdn.net/frosero/art原创 2021-03-17 21:27:23 · 3801 阅读 · 7 评论 -
三次Hermite插值解析
三次Hermite插值三次Hermite插值余项例题在这里插入图片描述转载 2021-03-11 21:26:33 · 4495 阅读 · 1 评论 -
双臂Matlab仿真建模:正运动学
双臂Matlab仿真建模原创 2020-10-11 21:38:50 · 9316 阅读 · 22 评论 -
机器人运动规划:时间最优轨迹研究(挖坑版)
挖坑博客原创 2020-09-08 20:39:47 · 4583 阅读 · 3 评论 -
机器人轨迹规划:机械臂停止轨迹运动
写在前面首先要有个缓存的概念,参见知乎的这个话题,很有学习意义!机械臂是怎么保证速度平滑且位置精确的?https://www.zhihu.com/question/53678758?sort=created这里的缓存实际上存的就是已经规划插补好的位置数据,缓存大小自己设定。可以将其理解为前瞻,也就是说缓存的首位置存的是机械臂正常运行时每个插补周期输出的位置数据,每输出一次,缓存中每个位置数据都会向前挪动一位;缓存的最后一个位置,存的是当前轨迹规划插补的位置数据,这样一来实际的上层轨迹规划就永远在原创 2020-09-07 20:02:05 · 1968 阅读 · 3 评论 -
奇异值分解(SVD)原理详解及推导
在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系。前段时间看了国外的一篇文章,叫A Singularly Valuable Decomposition The SVD of a Matrix,觉得分析的特别好,把矩阵和空间关系对应了起来。本文就参考了该文并结合矩阵的相关知识把SVD原理梳理一下。 ...转载 2020-01-29 22:32:02 · 1311 阅读 · 1 评论 -
Levenberg-Marquardt方法
原文链接:https://blog.csdn.net/ZLK961543260/article/details/76851342 Levenberg-Marquardt又称莱文贝格-马夸特方法(Levenberg–Marquardt algorithm)能提供数非线性最小化(局部最小)的数值解。此算法能借由执行时修改参数达到结合高斯-牛顿算...转载 2019-11-25 09:43:29 · 2320 阅读 · 1 评论 -
基于S型曲线的连续多段曲线插补平滑过渡的规划算法(Matlab)
基于S型曲线的连续多段曲线插补平滑过渡的规划算法(Matlab)写在前面前面的博客已经写了关于空间直线与空间圆弧的常用插补算法,而这些都是单一路径,实际中并不实用。对于连续多段路径,传统方法是将多段路径细分,然后对每段路径采用首尾速度为0的加减速算法(S型曲线或梯形曲线),这就带来了频繁启停的问题,容易对机械臂造成冲击,同时运行时间较长。下面我把前面博客中提到的非对称S型加减速算法与空间中多...原创 2019-08-08 22:18:12 · 18839 阅读 · 83 评论 -
快速排序学习笔记
快速排序 快速排序一听名字就觉得很高端,在实际应用当中快速排序确实也是表现最好的排序算法。快速排序虽然高端,但其实其思想是来自冒泡排序,冒泡排序是通过相邻元素的比较和交换把最小的冒泡到最顶端,而快速排序是比较和交换小数和大数,这样一来不仅把小数冒泡到上面同时也把大数沉到下面.快速排序原理将未排序元素根据一个作为基准的“主元”(pivot)分为两个子序列,其中一个子序列中的元素均大...原创 2018-11-29 11:22:49 · 246 阅读 · 0 评论 -
桶排序详解
桶排序入门介绍⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 如果已知N个关键字的取值范围是在0到M-1之间,并且M比N小很多,这种情况下就用桶排序,其原理就是为关键字的每个可能取值建立一个“桶”(Bucket),也就是建立M个桶;在扫描N个关键字时,每遇到一个关键字,就把它丢到相应的桶里去,扫描完了按桶的顺序对数据收集一遍就自然有序了。所以桶的排序效率比一般排序算法的效率要高。下面举个...原创 2018-11-29 19:51:39 · 1584 阅读 · 0 评论 -
基数排序详解
基数排序写在前头(〃‘▽’〃)基数排序时桶排序的一种推广(桶排序详解),它所考虑的待排记录包含不止一个关键字。例如对一副牌进行整理,可将每张牌看做一个记录,包含两个关键字:花色、面值。一副理顺的牌是按如下顺序进行排放的:可见一个有序结果是先按花色划分成四大块,每一块中有按面值大小排序。这是“花色”就是一张牌的“最主位关键字”,而“面值”是“最次位关键字”。对于一般有K个关键字的情况,基...原创 2018-11-30 21:29:28 · 4442 阅读 · 1 评论 -
C++ STL 对Map容器进行排序——按key排序与按value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map<string, int>,其中学生姓名用string...转载 2018-12-28 14:59:11 · 3114 阅读 · 0 评论 -
Dijkstra算法(有权图单源最短路径)
从一个源点到其他各顶点的最短路径问题称为“单源最短路径问题”。最短路径的最优子结构性质该性质描述为:如果P(i,j)={Vi…Vk…Vs…Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。下面证明该性质的正确性。假设P(i,j)={Vi…Vk…Vs…Vj}是从顶点i到j的最短路径,则有P(i,j)=P(i,k)+P(k...原创 2018-11-07 14:54:53 · 4368 阅读 · 0 评论 -
Flody算法(有权多源最短路径问题)
多源最短路径问题,即为求每一对顶点之间的最短路径问题算法描述算法思想原理:Floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在)从任意节点i到任意节点j的最短路径不外乎2种可能,1是直接从i到j,2是从i经过若干个节点k到...转载 2018-11-08 21:24:15 · 961 阅读 · 0 评论 -
最小生成树 Prim Kruskal算法
最小生成树最小生成树定义是一棵树无回路|V|个顶点一定有|V|-1条边是生成树包含全部顶点|V|-1条边都在图内最小边的权重和最小 总的来说,最小生成树覆盖图中所有顶点以及|V|-1条边。Prim和Kruskal这两种算法均属于贪心算法贪心算法:“贪”:每一步都要最好的“好”:权重最小的边但是在这两种算法中需要有约束...原创 2018-11-15 21:25:35 · 407 阅读 · 0 评论 -
基于抛物线过渡(梯形加减速)的空间直线插补算法与空间圆弧插补算法(Matlab)
写在前面机械臂用的是五自由度的,我测试时发现逆解精度存在一些问题,目前还没找到是求解析解时出错还是编程过程有问题,还是算法本身考虑不周到,欢迎有研究过的大神们批评指正!感谢~常规插补算法假设机器人末端由P1点沿直线运动到P2点,(x1,y1,z1)\left(x_{1}, y_{1}, z_{1}\right)(x1,y1,z1)和(α(1,β1,γ1)\left(\alpha(_{...原创 2019-07-23 19:29:14 · 17153 阅读 · 77 评论 -
五自由度diy机械臂空间插补算法(直线和圆弧)简单测试
/* * simple_space_interpolation.h * * Created on: Jul 18, 2019 * Author: xuuyann *//* * 简单的空间插补程序:目前只更新空间直线插补和空间圆弧插补程序 * 传统插补方法+梯形加减速归一化处理 * 归一化因子采用抛物线过渡的线性函数(梯形加减速), * 以保证整段轨迹上的位移和速度都...原创 2019-07-25 21:38:56 · 10147 阅读 · 15 评论 -
基于带约束S型加减速曲线的空间直线插补与空间圆弧插补算法(Matlab)
写在前面在前面的博文中:基于抛物线过渡(梯形加减速)的空间直线插补算法与空间圆弧插补算法(Matlab)基于单位四元数的姿态插补(Matlab)我使用了抛物线过渡(也就是梯形加减速)作为空间插补算法的速度规划方法,但是梯形曲线的缺点也很明显,即加速度不连续,速度过渡不平滑,容易造成机械系统冲击。下面我尝试了S型加减速曲线的规划方法并结合到空间插补算法中,仿真效果还可以,加速度曲线连续,更柔...原创 2019-08-03 21:59:31 · 16827 阅读 · 48 评论 -
自写的C语言矩阵简易运算库
因为机器人相关的基本运算中很多都是矩阵运算,虽然C++有现成的Eigen库,ROS中的矩阵运算也是基于Eigen库的,但是我目前想自己做一做这个底层驱动,涉及正逆运动学、关节速度规划、空间姿态插补算法等,而我现有的单片机不支持这个Eigen库,所以就写了一个简单的基于C语言的矩阵运算库,满足基本的矩阵运算需求。不过缺陷还是很明显的,只适用于学习交流。我主要写了如下几个功能的子函数:创建矩阵;...原创 2019-07-22 19:52:30 · 6533 阅读 · 6 评论 -
排序算法_1(冒泡、插入、希尔、堆排序、归并排序)
写在文章前头的东西排序函数接口统一:void XSort(ElementType A[], int N);简单起见,程序均为从小到大排序;只讨论基于比较的排序;稳定性:任意相等的两个元素,在排序过程中的相对位置不会发生改变;没有任何一种算法在任何情况下就表现最好;笔者自从发现思维导图有奇效后,哪哪儿都喜欢画画思维导图,因此本文会出现比较多的思维导图,不适应者可避开雷区٩꒰▽ ꒱۶⁼...原创 2018-11-21 10:13:16 · 311 阅读 · 0 评论