1 - 寻迹车的控制和设计思路

在深入了解奇奇怪怪的传感器和算法之前,首先得有设计思路。
有思路,就有方向了。

控制思路:反馈控制,保持稳态

我认为,要让小车跑完全程,只需要保证它处于“稳态”。
下面的原版邮件讲述了“保持稳态”的思路。(故事发生在循环赛前一周,当时各种着急)

<------------ 邮件开始 -------------->

尊敬的组长大人:
为避免不必要的争论,提高调车效率,我就“稳态控制”发表个人看法。
希望你能认真看完。

控制的目的,是为了让车处于稳态。
在比赛中,我们需要的稳态是: 直立地,以一定速度,在赛道上行走。
1
在直立控制中,我们设置了小车的稳态角度 = 90°
通过加速度计和陀螺仪,拟合出小车当前的角度(反馈);
利用PD控制进行校正,保持当前角度处于稳态;
-> 达成直立目的

2
在速度控制中,设定小车的稳态速度 = 30wq
通过编码器获得当前速度反馈;
利用PI控制使得当前速度保持稳态速度。
-> 达成“速度稳定”

3
​在方向控制中,我们希望小车能一直处于赛道中;
保证小车能长期处于赛道中心,就能保证小车不出界;
摄像头的视野中线(窗口中线),是小车当前的位置
通过赛道信息提取出来的赛道中线,是小车的稳态位置
所以,让小车往赛道中线靠拢,能使小车保持稳态;

在校内赛中,组长只使用了第一行作为反馈,可使小车不偏不倚地处于赛道中线;
现在使用大约5行,是以5行的距离为度量使之保持在赛道中间;

我废话那么多想表达的是,
摄像头视野中线作用巨大,它提供了小车当前的位置信息;
赛道中线的作用,相当于前面的"CAR_SPEED_SET"和"CAR_ANGLE_SET",是小车稳态位置的标杆。

<------------ 邮件结束 -------------->

好,有控制思路了,接下来就该想车要怎样搭建了。

设计思路:传感器反馈,电机输出控制

小车制作可以分为三部分:机械、电路和程序。
机械是小车的手脚、程序是小车的大脑、电路是两者的粘合剂。
4

程序模块参考

这里以XS128的分块为例,后面的文章就按此讲。
Unnamed QQ Screenshot20140811122556
main - 程序的总逻辑
Global - 全局变量,宏定义
Fun - 常用简单函数
printp - 串口格式字符串打印函数
MCUInit - 初始化函数
ENC03 - 陀螺仪模块
Timer - PIT中断服务函数
Control - 控制函数(闭环控制、图像处理等)
Motor - 电机控制
Camera - 摄像头采图控制
KEY - 键盘模块
DFlash - Flash存储模块
OLCD - 液晶屏模块