智能车的设计和开发是一个复杂的系统工程,我们综合使用各种开发平台开发单片机和上位机程序,进行赛车的调试和开发,提高了工作效率。
6.1 单片机软件开发平台Codewarrior及在线调试工具BDM
Codewarrior是由Metrowerks公司提供的专门面向Freescale所有MCU与DSP嵌入式应用开发的软件工具。其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C 交叉编译器、汇编器、链接器以及调试器。其中在本设计中重要的部分就是集成开发环境和调试器,即IDE和hiwave。

图6.1 使用CodeWarrior 4.1开发智能车程序
现代单片机具有很强的在线编程和调试功能,Freescale S12系列单片机就具有BDM(Background Debug Mode)功能,可以实现在线程序下载和在线背景调试功能。我们使用清华大学Freescale MCU/DSP 应用开发研究中心开发的BDM for S12,配合CodeWarrior的hiwave.exe在线调试器,即可实现从程序下载到在线调试的完整功能。
6.2 智能车调试方法
6.2.1 舵机调整及中心位置确定
由于赛车安装的精度和舵机自身原因,当赛车前轮处于正中时舵机中心并非在理想的1.5ms/20ms位置。同时舵机长时间运行其中心位置也会发生改变,所以我们经常需要对舵机中心位置进行校准。
我们将小车放置在一条直线正中,推动小车观察其是否跑偏。手动设置舵机转角,直至调整到小车完全沿直线行走。此时的PWM占空比即为赛车的中心位置。
6.2.2 拨码开关在调试中的作用
在小车调试过程中,需要经常对各种控制参数进行调整,如果我们将控制参数通过拨码开关进行设置,可以只写入一次程序,实现对多种制参数调整的功能,大大提高了调试效率。
同时比赛期间不得修改智能车的程序,因此设置多个拨码开关可以实现赛车的现场调整,随时改变策略,大大提高了比赛的成绩。
6.3 辅助调试手段
仅仅使用BDM对智能车进行调试是远远不够的,我们通过编写上位机软件,通过单片机和计算机的串行口进行通讯,以实时地获取更多赛车运行信息,如采集到的图像画面和速度等。
6.3.1 基于串口的无线通讯模块
智能车赛道面积达40m2,赛车在运行中不可能使用串口线和上位机通讯,我们在赛车上安装了无线数传模块,实现了串口通讯无线化的功能,并且功能实现透明化,无须修改任何单片机程序。
这里选用的是上海桑博电子开发的STR-18型和上海兆富通信开发的ZF-02型数传模块,波特率分别为9600bps和19200bps。
该模块通过FSK技术将串行通信数据调制在433MHz的射频频段内,能实现数据的高速长距离传输,有效距离最大800米。

图6.2 STR-18型无线数传模块
6.3.2 上位机监控平台
为了在上位机上能控制赛车,实时监控其各参数和采集图像,我们开发了各种上位机程序。
(1) VC++ 6.0开发的CMOS智能小车监控软件
在智能车开发初期,我们使用VC++开发了第一版的智能车监控程序,主要目的是为了观察单片机采集到的图像。

图6.3 CMOS智能小车监控软件
(2)Matlab开发的智能车监控程序
本软件的开发是为了在上位机进行各种图像处理算法和黑线位置计算的仿真。通过Matlab的Serial对象对计算机串口进行操作[]20 ,和单片机通讯。
模型车的主要技术参数说明

图6.4 基于Matlab的智能车监控程序
(3)Delphi开发的小车监控程序
本程序实现监控赛车在运行中各种参数,如速度、设定速度、偏差、转角等的变化,并提供控制小车运行的功能。程序具有速度和偏差两个趋势图,可以进行实时曲线显示。

图6.5 Delphi开发的智能车监控系统
上一章 智能车控制策略的实现 下一章 模型车的主要技术参数说明


