四轮电磁------电磁循迹位置式PID
看了很多篇博客,针对我们智能车校内赛的电磁循迹,我对循迹方案如下:
电磁前瞻+舵机+例程
-
我们使用的是龙邱科技的电磁前瞻:
-
舵机
舵机是由占空比控制旋转方向,但一定要注意❗️:例程上给定的占空比是250~1250,那么舵机中值就应该为750;但是,当舵机装上车后,舵机的中值必须要自己去测试:我测得的舵机占空比为483-603,则舵机中值应该为543。🌕所以,一定要确定属于自己的智能车的舵机中值。 -
以及逐飞科技的例程:
采集电磁+处理数据
- 对电磁需要采集并处理数据;大致过程如下:
- 定义二维数组储存电感采集的数值,最多保存四次采集的数据
- 采集电感并保存在数组中
- 滤波处理数据,减小误差
- 归一化适应赛道
- 利用差比和求出偏离中心电磁线的
bias
/****定义变量****/
int32 GET_AD_VALUE[4][GET_AD];//采集GET_AD数据
int32 GET_AD_MEAN[4];//5组平均数
int32 GET_AD_MEAN_OLD[4][12];//5组过去的平均数
static uint32 GET_AD_STORE[4][4];//两侧+中间两个 一共使用4个电感
//差比和
float OUT_rate=10.0; //对外圈电感的信任程度
float IN_rate=20.0; //对内圈电感的信任程度
float OTHER_rate=20.0;//对底下电感的信任
float bias;//差比和输出
float bias_n;//差
float bias_d;//和
//电感数据的处理与获取
void AD_get(void)
{
int i=0,j=0,k=0;
uint32 temp ;
/*1.定义二维数组储存电感采集的数值,最多保存四次采集的数据
ADC_PIN0 | ADC_PIN1 | ADC_PIN2 | ADC_PIN3
L_AD[4][4] L_AD_Mean
{ 0 1 2 3 mean均值
0 |*** *** *** *** *** R2
1 |*** *** *** *** *** R1
2 |*** *** *** *** *** M0
3 |*** *** *** *** *** L1
4 |*** *** *** *** *** L2
}
*/
for(i = 0;i < 4;i++)//每次数据后移,以保存当此采集的数据
{
GET_AD_STORE[i][3] = GET_AD_STORE[i][2];
GET_AD_STORE[i