双环PID控制详细讲解
创作时间:
作者:
@小白创作中心
双环PID控制详细讲解
引用
CSDN
1.
https://m.blog.csdn.net/BigDavid123/article/details/136664184
PID控制是工程领域中常见的控制方法,而双环PID控制更是其中的重要应用。本文将详细介绍双环PID控制的原理、实现方法,并提供具体的C++代码示例,帮助读者深入理解这一控制技术。
单环PID控制
单环PID控制的基本流程是:目标位置→系统→速度→当前位置。输入目标位置后,系统通过控制中间过程量(速度)来调整当前位置。单环控制主要控制速度量。
PID双环控制
双环PID控制包括位置环(外环)和速度环(内环)。外环的输出值作为内环的目标值。当系统接近目标位置时,外环误差减小,从而减小内环的目标值,实现减速效果。在实现时需要注意外环PID参数的调节幅度,以避免对整个控制曲线产生过大影响。
代码实现步骤
- PID参数结构体:定义位置、速度闭环的PID参数结构体变量
- 初始化PID参数:把目标值、期望值、累计偏差清零,配置PID系数
- 设置目标位置:只需要设置外环的目标位置,内环的目标值由外环的输出决定
- PID双环控制:在定时器中断中,定期计算当前位置并进行外环PID计算,得到目标速度;然后通过速度限幅处理,再进行内环PID计算,最终得出PWM比较值
PID双环控制详细解析
采用双环PID控制主要是为了稳定地控制加速度。外环控制速度,内环控制加速度。总体流程是:目标位置→系统1→目标速度→系统2→加速度→当前位置和速度→反馈回系统1和2。
外环控制
外环的目标是通过输入目标位置来控制速度,输出目标速度作为内环的输入。
内环控制
内环接收外环的目标速度,通过控制加速度来调整当前位置,并将结果反馈给系统。
双环PID控制器的C++代码实现
下面是具体的C++代码实现:
float outer_pid_controller(float setpoint, float input, float kp, float ki, float kd, float dt) {
static float integral = 0;
static float prev_error = 0;
float error = setpoint - input;
// 计算积分项
integral += error * dt;
// 计算微分项
float derivative = (error - prev_error) / dt;
// 计算输出
float output = kp * error + ki * integral + kd * derivative;
// 更新上一个误差
prev_error = error;
return output;
}
float inner_pid_controller(float setpoint, float input, float kp, float ki, float kd, float dt) {
static float integral = 0;
static float prev_error = 0;
float error = setpoint - input;
// 计算积分项
integral += error * dt;
// 计算微分项
float derivative = (error - prev_error) / dt;
// 计算输出
float output = kp * error + ki * integral + kd * derivative;
// 更新上一个误差
prev_error = error;
return output;
}
float double_pid_controller(float setpoint, float input, float outer_kp, float outer_ki, float outer_kd, float inner_kp, float inner_ki, float inner_kd, float dt) {
// 计算外环控制器输出
float outer_output = outer_pid_controller(setpoint, input, outer_kp, outer_ki, outer_kd, dt);
// 计算内环控制器输出
float inner_output = inner_pid_controller(outer_output, input, inner_kp, inner_ki, inner_kd, dt);
return inner_output;
}
其中,outer_pid_controller和inner_pid_controller分别是外环和内环PID控制器的实现函数。double_pid_controller函数将两个PID控制器串联起来,实现双环PID控制器。
Apollo纵向控制原理
Apollo的纵向控制基于Frenet坐标系,采用位置跟踪控制器(P控制器)和速度跟踪控制器实现闭环控制。同时考虑了坡道加速度补偿和预览点加速度的开环控制。最终通过油门和刹车标定表,将加速度和定位反馈转换为具体的控制量。
油门刹车标定表
纵向控制逻辑是通过油门控制功率,进而影响转速和扭矩,最终实现车速和加速度的控制。通过实验获取不同油门下的速度和加速度数据,拟合出油门与速度、加速度的关系模型。
热门推荐
妙佑医疗&郑大附一:健康减肥的三大要素
健身减肥新潮流:瘦肉+蔬菜的完美组合
国家卫健委发布《成人肥胖食养指南(2024年版)》:科学减肥这样做
情绪日记:拯救你的心理压力
音乐疗法:用旋律抚慰心灵,减轻生活压力
跑步减压,你get了吗?
透过疾病的缝隙看见生命与爱的本质
道路护栏公司须强化应急响应与处置能力
南天湖摄影攻略:从花海到红叶的绝美取景地
尼莫地平片治脑血管痉挛,降钙离子防低血压
太阳能热水器装上“智能大脑”:STM32实现自动控制
太阳能热水器漏水怎么办?6大原因+维修指南全解析
云南沧源:稀有黑蜜产业带动农户增收,年产值达1200万
云南沧源:米团花蜜产业助力1773户农户增收
李镇西和魏书生教你写小学教师年度总结
戏曲进校园:传统文化在新时代的传承与创新
优质蛋白质食物大揭秘:从鸡胸肉到藜麦
鸡胸肉:健身界的蛋白质之王,增肌减脂的双重利器
高蛋白饮食减肥法:瘦肉鱼类豆类成关键
优质蛋白质助力高效减肥
动车高铁大不同:一个专用线路一个普通线路
中医药发展提速:基层渗透、创新突破和国际化
专家提醒:骨质疏松可防可治,这些方法最有效
视频号运营技巧大揭秘:互动涨粉秘籍
数据驱动增长:微信视频号运营的分析利器
妈祖庙:从湄洲岛到全球,3亿华人共尊的海上保护神
妈祖文化全球传播,与观音信仰共塑中华传统美德
NFC支付现新型盗刷手法,这些防范措施请收好
NFC支付安全隐患频发,六大措施守护资金安全
北京公交NFC应用:从智能充值到全国通用,持续领跑公共交通支付创新