智能车竞赛
硬件方面
人机交互
环岛处理
方向控制
速度闭环
偏差计算
电磁数据处理
本文档使用 MrDoc 发布
-
+
home page
偏差计算
# 偏差计算 ## 电磁偏差获取 先归一,差比和,开跟差比和 *如果归一采样失败,会直接导致后续偏差异常* ```C uint16 max_f[Date_ADC],min_f[Date_ADC]; void ADCNorm(void) //归一 { uint16 i,ad_f[Date_ADC]; uint8 j; for(j=0;j<Date_ADC;j++)//写入判断基准值 { max_f[j] = 0; min_f[j] = 4095; } for(i=0;i<5000;i++) //5秒的采值时间 { ad_f[0] = adc_slip_filter(ADC_1,ADC1_CH3_B14,1); ad_f[1] = adc_slip_filter(ADC_1,ADC1_CH4_B15,2); ad_f[2] = adc_slip_filter(ADC_1,ADC1_CH6_B17,3); ad_f[3] = adc_slip_filter(ADC_1,ADC1_CH6_B17,4); ad_f[4] = adc_slip_filter(ADC_1,ADC1_CH10_B21,5); for(j=0;j<Date_ADC;j++)//写入调整后的基准值 { if(ad_f[j] > max_f[j]) max_f[j] = ad_f[j]; if(ad_f[j] < min_f[j]) min_f[j] = ad_f[j]; } systick_delay_ms(1);//延时一毫秒 } } ``` max_f[Date_ADC]为最大基准值,所以赋初值为0 min_f[Date_ADC]为最小基准值,所以赋初值为4095,此值为单片机ADC能采到的最大值。 采集完的最大最小基准值应该在一定范围波动,若波动过大,应该判断为采集失败。 ```C uint16 adc1,adc2,adc3,adc4,adc5;//原始数据,排布方式为横竖横竖横 float ad1,ad2,ad3,ad4,ad5; //归一数据 float length; //偏差计算 void ADCProcess(void) { //横竖横竖横 adc1 = adc_slip_filter(ADC_1,ADC1_CH3_B14,1); adc2 = adc_slip_filter(ADC_1,ADC1_CH4_B15,2); adc3 = adc_slip_filter(ADC_1,ADC1_CH5_B16,3); adc4 = adc_slip_filter(ADC_1,ADC1_CH6_B17,4); adc5 = adc_slip_filter(ADC_1,ADC1_CH10_B21,5); ad1 = (adc1-min_f[0])/(max_f[0]-min_f[0]); ad2 = (adc2-min_f[1])/(max_f[1]-min_f[1]); ad3 = (adc3-min_f[2])/(max_f[2]-min_f[2]); ad4 = (adc4-min_f[3])/(max_f[3]-min_f[3]); ad5 = (adc5-min_f[4])/(max_f[4]-min_f[4]); length = (sqrt(ad1)-sqrt(ad4)+sqrt(ad2)-sqrt(ad5))/(ad1+ad2+ad4+ad5); } ``` adc为原始数据 ad为归一后的数据,前期如果归一困难,可以直接设置最小最大基准值 使用普通的差比和在赛道上会出现偏差值随着偏移量增加而减小的情况,这是因为算法中分子的衰减速度大于分母的衰减速度,可以对分子开根号来处理这种情况 差比和:((横减横)+(竖减竖))/(横+横+竖+竖)
boiling
Dec. 25, 2023, 10:54 a.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password