智能车方向环pd控制理解
位置式pd公式:
p
∗
E
R
+
d
∗
(
E
R
−
E
R
L
)
p*ER+d*(ER-ERL)
p∗ER+d∗(ER−ERL)
p为比例项 d为微分项
ER为当前车辆与赛道中线的偏差
ERL为当前车辆与赛道中线的上次偏差
方向环d的作用
在智能车转向控制中,车辆的转弯主要取决于d项控制,当车辆由直道入弯时,ER-ERL会变化很大,而ER的变化其实很小,此时主要起作用的是d项,所以入弯主要靠d项,也就是给人一种d项有预测作用的感觉
方向环p的作用
当车辆在弯道中时,此时ER基本不会发生改变,所以ER-ERL基本为0,此时d项不会起作用,此时主要依靠p项调节,来维持在弯道中的循迹。
d项与p项的相互影响
当由直道入弯时,ER变大,此时若p项过大,很可能会超调,继而引起震荡,此时d项有抑制超调的作用,但是如果d项过大,反而会加剧抖动,具体原因看卓大大公众号中的一篇推文
对于舵机pd参数的意义
d项主要决定了舵机的响应速度
p项主要决定了舵机的打角大小
如何整定参数
对于简单的舵机位置式pd控制,应该先整定p项,得到p项的一个大致范围,直到使车抖动,此时再调整d项,减小抖动
遵循原则:
(1)如果直道入弯过于延迟,则需要加大d项
(2)如果车辆在弯道中,轨迹过于外切,则需要加大p项
(3)d项应该是p项的10-20倍
(4)如果参数整定的足够好,那么在弯道中,
d
∗
(
E
R
−
E
R
L
)
d*(ER-ERL)
d∗(ER−ERL)应该很小
舵机的pd控制研究
智能车的舵机控制,不要求较高的精度,所以是没有i项的,只是单纯的pd控制,目前常用的方向pd控制算法有:
普通PID(最常用,效果也不错)
动态PID
模糊PID(要调整模糊表,对于模糊表的整定是一个大难点)
下面简单说一下之前对于动态pd的一些想法:
(1)对于舵机来说,理论上它的打角幅度是和
E
R
ER
ER**成二次函数关系**;
(2)当车辆在拐弯时,此时需要更大的P项,但是常用pd是固定P项
所以尝试提出动态p项的方案:
方案1:
P
=
P
b
a
s
i
c
+
E
R
∗
E
R
∗
K
P=P_{basic}+ER*ER*K
P=Pbasic+ER∗ER∗K:
P
b
a
s
i
c
P_{basic}
Pbasic为一个基础P项,在基础P项基础上引入一点动态变化
E
R
∗
E
R
∗
K
ER*ER*K
ER∗ER∗K,K项要根据实际调整,同时要对该P项的**动态变化部分做一个限幅**,防止过大。
方案2:
P
=
P
b
a
s
i
c
+
A
B
S
(
E
R
)
∗
K
P=P_{basic}+ABS(ER)*K
P=Pbasic+ABS(ER)∗K:
P
b
a
s
i
c
P_{basic}
Pbasic为一个基础P项,在基础P项基础上引入一点动态变化
A
B
S
(
E
R
)
∗
K
ABS(ER)*K
ABS(ER)∗K,K项要根据实际调整,同时要对该P项的**动态变化部分做一个限幅**,防止过大。
方案3:
P
=
E
R
∗
E
R
∗
K
P=ER*ER*K
P=ER∗ER∗K:
去掉基础P项,但是实际效果并不好,该公式会让车辆获得较好的拐弯性能,但是弯道进入直道过程,会使车辆更加振荡,难以稳定,造成直道摆头现象。
方案优化建议:
目前的K项是我们根据实际情况进行人为调整的,但是实际上该K项可以与当前车辆的真实速度相关联,根据不同速度给定不同K值。
说明:方案1和方案2仍然是以普通PD控制为主,动态项的主要作用是使弯道拐弯更加圆滑、内切,特别是面对U型弯道时,原来的基础P项可能会使车辆丢线,但是此时加一点点动态项就可以完美过弯,所以不应该把动态项作为主要输出。
未完待续
版权归原作者 香橙哒哒 所有, 如有侵权,请联系我们删除。