路径跟踪算法之PID路径跟踪与PP跟踪

本文探讨了路径跟踪的原理,介绍了纯跟踪(Pure Pursuit, PP)和PID控制在路径跟踪中的应用。PP算法常用于低速简单路径,而PID控制因其结构简单,被广泛用于无人驾驶路径跟踪。文章详细解释了这两种算法的工作机制,并提供了仿真案例和相关代码链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1路径跟踪原理

在运用好的路径规划算法,规划好一条从起点到目标点最优的路径后,如何
让机器人来寻着这条最优的路径走,便是路径跟踪(Path tracking)需要解决的问题。基于平面坐标系下设定一条理想的几何路径,然后要求机器人从某一处出发,按照某种控制规律到达该路径上,并实现其跟踪运动。
1.1 路径跟踪示意图

路径跟踪的实质是通过控制车辆的运动来减少车辆与参考轨迹之间的空间
误差,如果考虑轨迹的话,那么还包含了时间上的误差。

2 常见的路径跟踪算法

常见的路径跟踪算法可分为几何跟踪和模型跟踪:
几何跟踪是基于车辆的运动学几何结构,推导出控制量实现跟踪,常见的几何跟踪算法有纯跟踪算法(purePuresuit)、Stanley method 前轴控制、Rear_wheel_feedback 后轴控制等,其中后两者都是基于阿克曼模型实现的,而 pp 跟踪是在双轮乃至四轮差速模型和阿克曼模型中都相应的应用。

模型跟踪则是基于算法求解模型,结合机器人运动学与动力学的控制规律,通过最优解或稳定性调节等方式计算得到跟踪控制量的跟踪控制方式,常见的模型跟踪算法有很多,比如经典的 PID 控制、滑膜控制、线性二次型调节器控制、模型预测控制(MPC)等,不同的控制方式对应着不同的模型系统,可以是线性的,也可以是非线性的,可以是模型精度高的,也可以是不需要明确模型的,建模方式呈现多样化。

下面对最常见的路径跟踪算法-PP跟踪算法和PID跟踪算法的原理实现及应用进行展开叙述.

2.1 Pure puresuit(pp)纯跟踪

纯跟踪算法(以下简称 pp 算法)在低速情况下运用得非常广泛,其主要原理基于机器人圆弧轨迹运动的特性,建立目标点和机器人当前位置之间的几何关系表达式,从而得出机器人当前时刻的角速度控制量。
双轮差速移动机器人模型为例,根据机器人圆弧运动的特性,在物理学上得出小车运动线速度v,角速度w及运动半径r之间的关系如下:
在这里插入图片描述
曲率与半径之间的固定关系如下:
在这里插入图片描述
双轮差速小车运动示意图
如图 所示,以小车自身的局部坐标系为基准坐标系,小车的当前位置P(x0,y0),为原点,目标点选定为P(xg,yg)。目标点与小车当前位置的距离 L 通常称为前视距离,在坐标系中表达式如下:
在这里插入图片描述
另,从圆弧运动的几何关系上可得:
在这里插入图片描述
联立式 1-3,式 1-4,式 1-5 可得基于前视距离和横向距离的运动半径表达式:
在这里插入图片描述
联立 1-1,式 1-2,式 1-6,得出给定线速度下的角速度调节量:
在这里插入图片描述
设置固定的前视距离和路径曲率肯定无法适应不同的路径,因此就需要对于
前视距离的计算方法进行研究改进。从平时我们开车时的习惯来讲,我们会根据不同驾驶速度和不同路段,进行判断合适的视线跟踪点。因此,我们就可以将这个过程抽象出来,加以处理,形成一个选择前视距离的规则。一般情况下,纵向速度在路径曲率较大的地方应做减速处理,而前视距离与纵向速度呈正比关系。
下图是双轮差速模型 pp 算法跟踪仿真效果图。
请添加图片描述
其实根据 pure pursuit 的原理可以知道,其跟踪效果很大程度上取决于前视距离 ld 的选择。该算法多数用于一些简单低速的场景;对于一些复杂的路径跟踪效果可能会比较差,例如 U 型/S 型等曲线路径。但是 pp 跟踪的算法实现直观简洁,跟踪流程设计稳定高效,在低速导航领域应用广泛。

2.2 PID 跟踪

PID 控制方法具有结构简单、调整方便等特点,被广泛应用。当被控对象的模型结构和参数不全,可以采用 PID 控制,其参数通过经验和现场调试来确定。
PID 控制原理
在路径跟踪控制中,根据轨迹的纵向/横向误差、角度/曲率误差或者若干车
辆姿态状态变量的综合误差,利用比例、积分、微分参数计算出跟踪已有路径所需的方向盘转角,完成机器人的轨迹跟踪目。
PID 控制算法在无人驾驶路径跟踪中普遍运用,apollo 的开源平台代码的轨迹跟踪部分的纵向控制便是基于三个 PID 控制环控制刹车、油门、档位等实现对车速的控制。PID 控制算法不需要被控对象的模型结构和参数,只需要得到车辆与目标轨迹之间的偏差就可以达到很好的控制效果。如图所示是基于机器人与路径横/纵向误差及航向量误差综合控制律简单实现的 PID 路径跟踪仿真图。
请添加图片描述
PID 算法的缺点在于,针对不同的模型或者路径状况,可能需要不同的 PID参数才能实现稳定控制,PID 参数的标定有时需要大量的实验测试;同时纯 PID的鲁棒性并不好,抗干扰能力不强,由于是基于反馈控制的方式,控制量是滞后输出的。PID 控制的一些改进控制方式包括模糊 PID,神经网络 PID 等。

这里附上参考博客:
基于pid的路径跟踪_智驾技术 | 路径跟踪控制

这里附上相关仿真代码链接:
1.pp跟踪仿真代码链接(非免费哦,技术问题可以私信交流)
2.pid仿真代码链接(非免费哦,技术问题可以私信交流)

### 实现GNSS小车路径跟踪的纯跟踪模型和模糊控制 #### 纯跟踪模型简介 纯跟踪(Pure Pursuit)是一种用于移动机器人导航的经典算法,特别适用于车辆运动学建模。该方法通过寻找轨迹上最接近当前车辆位置的一个目标点,并计算转向角度使得车辆朝向此目标点前进。 对于GNSS小车而言,在已知全局坐标系下的期望路径时,可以采用如下方式实现: 1. **定义参数** - 设定前视距离 \( L_d \),即从当前位置到追踪的目标点的距离。 - 获取当前车辆的位置 (x, y) 和航向角 θ。 2. **查找最近点** 计算路径上的每一个点当前车辆之间的欧氏距离,找到离得最近的那个点作为起始参考点 P_ref(x_ref,y_ref)[^3]。 3. **确定目标点** 从前述P_ref出发沿路径方向选取一个满足条件 |PP_target| = Ld 的新点作为实际要追逐的目标点 Target(x_targt,y_target) 。如果路径终点更近,则取之为目标点[^3]。 4. **计算曲率/转角指令** 利用车辆几何关系求解出为了达到Target所需调整的方向变化量δ: ```python delta = atan((2 * wheelbase * cross_track_error) / lookahead_distance) ``` 其中 `cross_track_error` 是横向误差;`wheelbase` 表示轴距长度;`lookahead_distance` 即为设定好的前瞻距离Ld[^3]。 #### 模糊控制系统的设计 当环境存在不确定性因素如路面摩擦力波动、风阻等外部干扰源时,传统的PID调节难以获得理想效果。此时引入模糊逻辑控制器(Fuzzy Logic Controller, FLC), 可有效提升系统的抗噪能力和适应性能。 具体来说: - 输入变量可以选择为偏差 e(t)=y_desired-y_actual 和偏差的变化率 de/dt; - 输出则是对输入信号进行修正后的PWM占空比或者其他形式的速度命令u(k); - 建立隶属度函数表征各物理量所属程度; - 根据专家经验制定一系列IF-THEN规则映射不同状态组合下应采取的动作策略; 最终形成闭环反馈结构完成整个过程自动化管理。 ```matlab % 定义模糊推理系统并设置输入输出范围 fis = mamfis('Name','FuzzyController'); fis = addInput(fis,[min_e max_e],'Name','Error'); fis = addInput(fis,[min_de_dt max_de_dt],'Name','Delta_Error'); fis = addOutput(fis,[min_u max_u],'Name','Control_Action'); % 添加隶属度函数... for i=1:length(membership_functions_names) fis = addMF(fis,'Error',membership_functions_types{i},parameters_for_mfs{i},'Name',... membership_functions_names{i}); end % 构造if then规则库... ruleList = [ 'If Error is Negative_Big And Delta_Error is Decreasing Then Control_Action is Positive_Large'; ... ]; rules = readfisRules(ruleList); fis = setfis(fis,'Rule',rules); % 使用evalfis评估给定条件下应该产生的动作大小 output = evalfis([current_error current_delta_error],fis); ```
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

>_<!

码字不易,如有帮助,欢迎鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值