- 博客(35)
- 资源 (12)
- 收藏
- 关注

原创 路径跟踪算法之模糊控制器跟踪
本文基于一个实例,阐述如何设计模糊控制器实现车辆路径跟踪。目标是设计一个控制器,在理想的车辆运动学数学模型的情况下,控制车辆沿着x轴方向前进,这便是一个典型的简化方向的路径跟踪问题。假设小车可以以v=0.5m/s的恒定速度向前移动。并且假设小车配备有陀螺仪等传感器,该传感器可以随时测量小车当前的位置(x,y)和方向(角度)。那么本跟踪问题的解决就是需要设计一个跟踪控制器,根据小车的实际位置,调整小车的方向盘,从而实现小车从当前位置靠近参考路径(y= θ = 0)并稳定的沿路径前进。
2023-08-19 23:39:42
3329
3

原创 路径跟踪算法之模型预测控制(MPC)跟踪
路径跟踪算法之模型预测控制(MPC)跟踪1.MPC简介模型预测控制(以下简称 MPC)是一种依赖于系统模型进行数学优化的复杂控制器。它利用优化算法计算有限时间范围内一系列的控制输入序列,并优化该序列,但控制器仅执行序列中的第一组控制输入,然后再次重复该循环。MPC 主要分为 3 个关键步骤:模型预测、滚动优化、反馈校正。2.MPC在轨迹跟踪过程中的应用在轨迹跟踪应用领域,通常 MPC 建模可根据机器人的控制方式选择基于运动学运动状态方程建模或者基于动力学运动状态方程建模。前者是根据车辆转向的几何学角
2022-05-01 20:04:42
27975
33

原创 路径跟踪算法之PID路径跟踪与PP跟踪
低速无人驾驶领域主流的路径跟踪算法1路径跟踪原理2 常见的路径跟踪算法2.1 Pure puresuit(pp)纯跟踪2.2 PID 跟踪1路径跟踪原理在运用好的路径规划算法,规划好一条从起点到目标点最优的路径后,如何让机器人来寻着这条最优的路径走,便是路径跟踪(Path tracking)需要解决的问题。基于平面坐标系下设定一条理想的几何路径,然后要求机器人从某一处出发,按照某种控制规律到达该路径上,并实现其跟踪运动。路径跟踪的实质是通过控制车辆的运动来减少车辆与参考轨迹之间的空间误差,如果考
2021-07-31 23:38:11
27747
24
原创 工业机器人位置准确度和重复性指标的测量方法与计算
位置性能代表的是机器人在工作空间内运动点的特性,对于机器人在笛卡尔空间的运动,空间坐标系的原点代表机器人的指令位置,球状的点集群表示多个实际位置。那么,机器人的位置性能的评估主要包括:机器人的指令点位置和实际点位置的之间的相对关系评估;实际点位置之间的相互关系的评估。参考国标GB/T-12642,对位置准确度和重复性指标进行介绍。
2024-08-29 21:34:55
2314
原创 探索编程之旅:新生入门编程的浅见
编程语言种类繁多,每种语言都有其独特的应用场景和优势。需要明白的是,语言只是工具,虽然那众多语言种类繁多,语法规则却也多有相通之处,在学习掌握基础知识的过程中,更应该体会规则中传递出来的面向对象的,模块化的思维逻辑。如果把一个项目比作人,清晰的思路是骨架经络,有了骨架经络 ,选择合适的语言便是具象化人像的血肉。因此,一定不能为了学习编程语言而学习,而是要基本实际的需求、待解决的问题,去在应用中学习成长。运用工具解决问题,是人类高级文明的本质象征。
2024-08-03 15:40:21
619
原创 速度规划之:起点速度和终点速度不为零的非对称梯形速度规划
梯形速度规划是一种分段的速度控制策略,如图所示,包括加速、匀速和减速三个阶段。在非对称情况下,加速和减速阶段的加速度、时间长度以及最大速度可能不同。
2024-08-03 10:03:42
1545
原创 matlab笔记 - 最小二乘法拟合直线的原理与实现
最小二乘法拟合直线的核心思想是:给定一组数据点(xi, yi),其中i=1, 2, …, N,我们希望找到一条直线y = kx + b,使得这些点到直线的垂直距离的平方和最小。这里的k是直线的斜率,b是直线的截距。
2024-07-26 23:49:09
4941
原创 CSDN编辑器LaTeX公式编辑格式参考
在CSDN博客平台码公式可太难记格式了。CSDN支持Markdown语法,并集成了MathJax库来渲染LaTeX公式,做个笔记给自己时时翻翻吧。
2024-07-26 23:48:25
1835
5
原创 C++学习笔记-函数模版与类模版
C++模板是C++语言中的一个重要特性,它使得代码能够重用和泛化,提高了编程的效率和代码质量。无论是函数模板还是类模板,都是编写高效、通用代码的重要工具。通过理解和掌握模板的使用,可以大大提高C++编程的灵活性和效率。
2024-07-25 19:27:45
975
原创 C++学习笔记-基类、派生类与虚函数关系
基类(Base Class)是面向对象编程中继承的起点,它定义了派生类将继承的属性和行为。基类可以包含数据成员和成员函数,这些数据成员和成员函数可以被派生类继承和使用。基类的主要作用是为派生类提供一个共同的接口和一组基本的实现,使得派生类可以共享基类的代码和数据结构。派生类(Derived Class)是从一个或多个基类继承而来的类。在C++中,派生类通过继承机制获得基类的成员(包括数据成员和成员函数),并且可以在此基础上添加新的成员或修改继承而来的成员。
2024-07-24 22:51:35
2185
原创 C++学习笔记-内联函数使用和含义
内联函数是通过在函数声明或定义前加上inline关键字来声明的。这告诉编译器该函数可能是一个好的内联候选,但请注意,这仅仅是一个请求或建议,编译器最终决定是否将其内联。
2024-07-24 22:51:08
1130
原创 C++学习笔记-operator关键字:重载与自定义操作符
操作符重载是C++语言的一个特性,它允许你重新定义或“重载”已存在的操作符(如+、-、*、/等)在特定类型上的行为。这意呀着,你可以为自定义类型(如类)定义这些操作符如何工作,使得它们能够像内置类型那样进行算术运算或逻辑操作。
2024-07-23 21:53:02
1721
原创 C++学习笔记-友元函数的定义与使用
在C++的编程世界中,友元函数(Friend Function)是一个独特而强大的特性,它打破了类的封装性,允许一个或多个非成员函数访问类的私有(private)和保护(protected)成员。友元函数不是类的成员函数,但它可以访问类的所有私有(private)和保护(protected)成员。友元函数的声明可以放在类的任何位置(但通常放在类定义的开始部分),但它们的定义(实现)必须在类定义之外进行。但是,它可以通过类的对象来访问类的成员。如果类B是类A的友元,那么类B的子类不会自动成为类A的友元。
2024-07-23 21:52:53
1053
原创 C++学习笔记-用const修饰的类成员函数
在C++编程中,const关键字扮演着多重角色,其中之一就是用于修饰类的成员函数,以表明该函数不会修改类的任何成员变量(无论是数据成员还是静态成员)。使用const成员函数可以提高代码的可读性和安全性,特别是在多线程环境中,还能帮助编译器优化代码。
2024-07-20 17:21:09
455
原创 C++学习笔记-C++11中的智能指针
智能指针是C++的特性用法,是一个类似指针功能的类对象,其目的是为了更好的管理动态分配的内存,避免出现内存泄漏、悬空指针等问题。C++11的标准库里提供了三种智能指针模板类,分别是std::unique_ptr、std::shared_ptr 和 std::weak_ptr(C++11摒弃了auto_ptr),这里重点关注unique_ptr指针定义和用法。
2024-07-20 17:20:09
936
原创 蒙特卡洛法求解机械臂工作空间(以IRB4600型工业机械臂为例)
工作空间是衡量机器人工作能力的一个重要的运动学指标,蒙特卡洛法是一种随机模拟方法,用于在计算机上估计某些统计量,对于要估计的统计量,通过模拟大量的随机抽样,并计算这些样本的随机值来估算这个统计量的值。在以IRB4600型机械臂为例的求解过程中,随机工作点的数目设置为3000,为每个关节角在转动的角度范围内随机生成3000个点,形成3000组关节角,并正解成笛卡尔空间的位置绘制出来,所形成的包络面如下图所示,所有离散点包络的范围及机器人的工作空间范围。
2024-05-28 19:23:31
1996
原创 STM32开发笔记-新建标准库工程
STM32开发一般包括三种方式:基于寄存器开发、基于标准外设库开发、基于HAL库开发,这里记录基于标准外设库的工程新建过程
2024-05-05 22:11:48
994
原创 机械臂标准DH建模及正运动学分析(以IRB4600型工业机械臂为例)
对于工业机械臂而言,运动学是不考虑力学特性的情况下对机械臂的几何参数与其位置、速度、加速度等运动特性的关系研究。DH建模是运动学的基础,全称为Denavit-Hartenberg建模方法,是一种广泛应用于机器人运动学中的建模技术。该方法通过在每个连杆上建立坐标系,并利用齐次坐标变换来实现连杆之间的坐标转换。通过依次变换,可以推导出末端执行器相对于基坐标系的位姿,从而建立机器人的运动学方程。以IRB4600型六自由度工业机械臂为例,选择标准DH建模方法,建立其正运动学模型。
2024-05-05 22:09:06
7388
3
原创 matlab笔记-椭圆方程的参数拟合及长短轴和面积计算
y+1=0的椭圆,参数ABCDEF未知待求。那么就可以通过matlab自带的非线性拟合函数nlinfit,带入离散的xy数据,反向求出ABCDEF这6个系数的值,这样,你就得到了最可以符合数据分布的一个椭圆方程。参数拟合,即假定已知了很多组x,y的坐标数据,并发现数据的分布规律和椭圆类似,我们先假设有一个方程表达式为A。计算出ABCDEF这6个系数的值后,椭圆的一般方程就确立了。这里已经将拟合出来的椭圆方程系数并化简成标准形式,F=1。其中,x,y分别是x轴坐标值,y轴坐标值两个变量;
2023-12-25 08:57:58
3429
4
原创 坐标变换基础-绕旋转轴旋转与旋转矩阵之间的转换关系
在三维空间中,我们经常需要描述物体的旋转。最常用的旋转描述方式一种是旋转矩阵。另一种就是通过旋转轴和旋转角度来描述。旋转矩阵综合描述了向量绕参考坐标系各个基准轴的旋转角度;而旋转轴和旋转角度顾名思义描述的是空间向量在空间上绕旋转轴(向量)的旋转角度。这里将探讨旋转轴和旋转矩阵之间的转换关系。
2023-12-25 08:56:20
3448
原创 算法笔记【8】-合并排序算法
合并排序算法通过采用分治策略和递归思想,实现了高效、稳定的排序功能。本文将深入探讨合并排序算法的原理、实现步骤,并讨论其优缺点。
2023-10-29 18:45:06
2049
1
原创 算法笔记【7】-直接插入排序算法
在排序算法中,直接插入排序是一种基本而常用的排序方法。它通过不断将待排序数组中的元素插入到已排序部分的合适位置,逐步构建有序数组。本文将详细介绍直接插入排序算法的原理、实现步骤,并讨论其优缺点。
2023-10-29 17:44:09
319
1
原创 算法笔记【6】-简单选择排序算法
尽管简单选择排序算法在实际应用中很少使用,但它具有直观而易懂的实现方式,对于初学者来说是理解和熟悉基本排序算法的良好起点。了解简单选择排序的原理和特点,对于扩展知识面、深入理解排序算法的设计思想仍然是非常有价值的。简单选择排序是一种寻找最小值的有效策略,通过不断选择剩余元素中的最小值,并与当前位置进行交换,逐步构建有序数组。具体而言,它遍历整个数组,在每次遍历中找到未排序部分的最小值,然后将该最小值与当前遍历位置的元素进行交换。在排序算法中,简单选择排序是一种基本且直观的排序方法。
2023-10-28 22:10:45
712
1
原创 算法笔记【5】-快速排序法
快速排序算法以其高效的性能和简单的实现方式而闻名。本文将深入探讨快速排序算法的原理、实现步骤以及其优缺点,帮助读者全面了解这一强大的排序算法。
2023-10-28 16:20:27
158
1
原创 算法笔记【4】-冒泡排序法改进
改进冒泡排序算法仍然对于学习和理解基本排序算法有着重要意义。通过深入掌握冒泡排序的原理以及不断进行优化,我们可以更好地理解算法的设计思想,并为今后解决各类排序问题提供参考。然而,冒泡排序仍然不适用于大规模数据的排序,因为时间复杂度和数据的有序程度相关,不完全可控。在实际应用中,我们更倾向于使用其他高效的排序算法,如快速排序或归并排序。
2023-10-27 23:20:16
974
2
原创 算法笔记【3】-冒泡排序法
冒泡排序的基本思想是从第一个元素开始,依次比较相邻的两个元素,如果顺序不正确,则交换它们的位置。该代码同样定义一个bubbleSort的函数,接受一个数组作为参数,并返回排序后的数组。在主程序中,创建一个待排序的数组arr,然后调用bubbleSort函数对其进行排序,并将排序结果存储到sortedArr变量中。在主函数中,创建一个整型数组,并通过调用bubbleSort函数对数组进行排序。也因为复杂度比较高的缘故,冒泡排序在大规模数据集上的性能较差,但它具有简单、易于理解和实现的优点。
2023-10-27 23:19:19
262
1
原创 算法笔记【1】-蚁群算法解决旅行商问题(简称TSP问题)
TSP问题由于问题的可行解是所有顶点的全排列,随着顶点数的增加,会产生组合爆炸,它是一个NP完全问题。由于其在交通运输、电路板线路设计以及物流配送等领域内有着广泛的应用,国内外学者对其进行了大量的研究。早期的研究者使用精确算法求解该问题,常用的方法包括:分枝定界法、线性规划法、动态规划法等。但是,随着问题规模的增大,精确算法将变得无能为力,因此,在后来的研究中,国内外学者重点使用近似算法或启发式算法,主要有遗传算法、模拟退火法、蚁群算法、禁忌搜索算法、贪婪算法和神经网络等。
2023-10-26 00:07:23
2492
3
原创 算法笔记【2】-SVD奇异分解及在最小二乘求解上的应用
奇异值分解(Singular Value Decomposition,简称SVD)是一种重要的矩阵分解技术。它可以将一个矩阵分解为三个矩阵的乘积,即A = UΣVT,其中U和V是正交矩阵,Σ是一个对角矩阵,对角元素为从大到小排列的特征值。
2023-10-26 00:05:45
1760
1
原创 linux系统学习笔记:修改文件权限命令
(2).删除已存在的文件的与目录(不论该文件的权限如何)(3).将已存在的文件或者目录重新命名;linux文件的基本权限有 9个,分别是owner、group、others三种身份各有自己的read、write、execute权限。r(read):表示具有读取目录结构列表的权限,当你具有读一个目录的权限,表示你可以查询该目录下的文件名数据,可以利用ls显示出来。x(execute):目录设为x代表的是用户能否进入该目录成为工作目录的用途,(就是当前的目录)各权限的分数的对照关系如下。
2023-10-19 23:04:51
211
原创 坐标变换基础-欧拉角&固定角与位姿矩阵的相互转换
空间中一个坐标系相对于另一个坐标系的变换关系用新坐标系的三个坐标轴相对于原坐标系的方向矢量来确定,可用 矩阵来描述。用齐次矩阵(4x4)来统一描述刚体的位置和姿态:其中,R便是描述姿态的旋转矩阵。和沿着三个坐标轴的平移运动不一样,旋转矩阵显得很不直观,也繁琐。因此往往需要使用更简洁的方式来描述姿态变换。固定角与欧拉角便是最常规的两种。
2023-09-27 23:27:57
11265
4
原创 matlab笔记-GUI滑动条实现静态文本数值变化
因为自己DIY项目的时候一直想实现一个长按实现位置角度加减的功能,感觉【滑动条】控件比较适用,就学习了一下这个控件相关的应用,并做了个滑动条实现静态文本数值变化的demo作为笔记保存。
2023-09-03 21:05:36
1816
原创 坐标变换基础-位置齐次变换
综上所述,若空间中存在{A}和{B}两个坐标系,已知某矢量相对坐标系{B}的描述为。,坐标系{B}相对于坐标系{A}的平移关系用。
2023-06-06 20:06:27
491
原创 ROS系统学习笔记:bag的录制和播放
rosbag是一个基于ros系统的话题数据录制和回放工具,在实际应用中,可以使用 bag 文件来保存和恢复系统的运行状态,常用于初始数据采集及DEBUG。常用到的指令包括: - record:用指定的话题录制一个 bag 包 - info:显示一个 bag 包的基本信息,比如包含哪些话题 - play:回放一个或者多个 bag 包 - reindex:重新索引一个或多个损坏 bag 包一、bag录制录制所有话题数据rosbag record -a录制指定话题数据rosbag
2022-03-16 16:07:19
9202
matlab阿克曼小车PP跟踪仿真及动画生成
2024-10-31
差速小车画8字轨迹运动matlab仿真及动画生成
2024-10-31
基于matlab工具箱的IRB120机械臂正逆运动学与关节空间规划demo
2024-09-03
蚁群算法解决TSP问题
2024-08-30
matlab排序算法实现-合并排序、简单选择排序、快速排序、冒泡排序、直接插入排序
2024-08-30
SocketTool 调试工具
2023-03-19
磁盘分区软件-PA-Green
2023-03-19
matlab仿真实现基于模型预测控制(mpc)的双轮差速运动学轨迹跟踪
2022-05-01
基于MFAC的前馈-反馈迭代学习控制系统matlab仿真实现.rar
2021-08-05
7段S型曲线速度规划matlab仿真程序.rar
2021-07-23
matlab用simulink实现基于变增益PID控制的移动机器人轨迹跟踪.rar
2021-08-10
tcp通讯中的客户端部分client
2018-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人