智能车心得分享(四)
通过电位器调节电感值通过adc采集的函数uint16adc_mean_filter(ADCN_enumadc,ADCCH_enumch,uint8count);我们确定了用哪个通道,和采集次数,采样率一般是固定的,也可以自己改,我的电感采集是12位,也就是0~4096,但是在实际赛道上采样的值不会超过3600,一定要注意不要将原始的值调到满幅值。这里推荐的方法是:第一步,将车放到环岛四条线交叉(或者环岛两条(因为今年是铺了两圈)),调节电磁(与四条线垂直的地方)在此时稍微调小电位器,电磁值会有减小,调大值几乎不变(即几乎为最大值),左右横电感都是这样,粗调结束(记录此时的最大值);第二步,将电感放在直赛道上,将电感和电磁线垂直放置,此时最大值为之前最大值的90%以下,要是不到的话就调小,然后把车放在赛道上,保证在赛道最中间(此时电磁线是在两横电感连线中线上),将一侧作为基准,调节另一侧使值相差在(最大值-0)的千分之一内(这样是最好的,但是和你的精度有关,我最大是3600左右,两边值的原始差在5左右)。这样横电感的调节结束;向外的v形电感,在环岛处的较易获得的值是其他元素最大时都无法达到的值即可(就是你在环岛那从预环岛开始稍微转车,或者接近环岛时车即使有些偏移也可以得到的值,但是其他元素这么转都很难得到的值)。内v形电感和水平电感处理类似。具体原因的话,我在元素判断中解释。
归一化就是用第一步采集的最大值(左右对称的电感用同一个),用adc采集的值ADC_value。进行ADC_value/max*100,将值变道0~100的区间内。这样做的好处是,1、可以方便自己对数据的感知,在普通元素和特殊元素间;2、在赛道更换后,测新的赛道的最大值,改变max的值即可,有较强的适应性。3、方便数据处理。
差比和首先我们不去了解电感具体原理,我们会知道,当靠近电磁线时,电磁值就会变大,远离就会减小。那么如果用L-R,若值为正,说明车向右侧偏;反之,向左,这样我们就可以知道车的偏向了。那么差比和(L-R)/(L+R)的作用就是使得到的曲线L-R曲线变得平滑,理论上平滑曲线会使得车的控制效果更好,但是我因为能力有限没有去关注它(可以去看下卓大的文章,里面是有相关的介绍的。“差比和差”那一篇)。
小车模型接下来我们就要让小车巡线了,假设我在理想情况下,左右轮的期望速度都是450(这只是个值,看上一篇我对编码器值的理解),且左右实际都是450,那么理论上这个时候小车是直线运动的。但是要是向右偏了,那么就会期望我们左轮速度比右侧的速度慢,就可以慢慢向左转,车就会回正。此时我们L-R为正(假设是10),通过PID变化得到一个和速度有关的值exp_turn(仍为正),那么左侧的期望速度就是:期望值(450)-转向值(exp_turn);右侧期望速度:期望值(450)+转向值(exp_turn)。也就是左减右加(当然这和你的实际模型相关)。当然,如果你是将差比和的值和期望的位置(即L-R=0)处做PID处理(这个时候有可能是一个负值),也有可能是左加右减。