智能小车差速控制系统:实现最佳行驶体验
智能小车差速系统控制
前言
现在C车已经由原来的一个电机控制车辆速度转为现在的两个电机分别控制两个轮子的转动,那么B车所拥有的机械差速在C车上将不再存在,所以我查了一些资料,总结出一些有关于差速控制的说明。
原理分析
PID
PID是比例积分微分控制算法,再反馈调节的作用西保持系统的稳定,在差速系统中主要运用他来进行两路电机的速度匹配,能够实现直线行驶的稳定。本文章只对PID控制算法做简单说明。
弯道状态分析
本次采用的模型为ackermann 模型,该模型较为理想化,但用在C车上效果还是比较显著的,可以参考后根据需要使用。
如图,现假设B为小车后两轮的轮距,L为小车前轮到后轮的距离。假设此处最优为最优路径,此时小车左方与车辆正前方的夹角为α(α有正有负),使转弯半径在左侧与后两轮平行且对其得到半径为R,此时小车后两轮的角速度相等,即小车后轮的
ω_left=ω_right
设小车两后轮中间位置的速度为V,则
V_left/Rin=V_right/Rout=V/R
R=L/tanα Rin=R-B/2 Rout=R+B/2
由此可得小车左右后轮的速度分别为:
参考文章的计算结果:
左轮:V_left=V*(1+Btanα/2L)
右轮:V_right=V(1-Btanα/2L)
自己的计算结果:
左轮:V_left=Vtanα(1-Btanα/2L)
右轮:V_right=Vtanα(1+B*tanα/2L)
代码实现
unsigned int speed_want;//小车行驶的期望速度
float t;//tanα结果
V_left=(speed_want*t)*(1-(B*t)/(2*L));//左轮速度
V_left=(speed_want*t)*(1+(B*t)/(2*L));右轮速度
其他
本文中V为小车行驶的期望速度(也可理解为小车在赛道上行驶的直线速度),文章中计算结果有两个,一个为参考文章所提供的,另一个是我根据公式计算的结果,使用者可以根据不同来选择使用。