Skip to content

xfguo/freescalesmartcar

Repository files navigation

大一时参加第二届飞思卡尔智能车竞赛的源代码,使用BSD许可证发布.

包含很多有用的库, 源代码涉及了单片机的大部分功能.对DG128不熟的同学可以作为参考.
系统分四层, 硬件层,设备层,控制层和智能.
包含记忆算法.

当时我花了大约三个的时间去了解所用的单片机,并写完了硬件层和设备层的代码.这使我在后来的开发工作中不必去过多考虑的底层细节,能够把更多的精力放在控制和智能算法上面.项目中还包含了大量的测试用例以供参考.我基本上是采用边测试边开发的方法开发的.这是我认为大家可以学习的地方.

项目中的一些模块可能会对大家有用,我做一个简单的介绍.
dbg* : 调试模块,控制LCD,调试用按键和串口, 包含一个菜单子模块, 自己写了一个printf函数,可以方便的从串口或者液晶屏输出信息.菜单模块也花了一些功夫,可以方便的添加菜单元素, 动态的查看和修改系统中某变量的值.
h* : 硬件层,直接和I/O口与内部模块打交道.  
d* : 设备层,把传感器,马达,舵机等抽象出来. 
c* : 控制层,控制舵机,马达,采集道路信息.   
s* : 智能层,路径记忆和播放

为了不因为分层而影响效率, 分层并不是十分严格, 而且有很多地方是用宏来做层与层的衔接的. 系统在48MHz的采样和执行周期约为0.6~1ms之间.我认为这样的响应时间已经是比较高的了.

事实上我们的成绩并不理想.用记忆算法跑有的时候还不如不用. 赛后我分析了原因, 最主要的是我们的调速做的太差了,交大用的是千元的编码传感器,精度能到1/256圈, 也就是车每走15/256cm就能够感觉到速度的变化,而我们只用了4个磁铁加一个霍尔传感器,并且因为四个磁铁距离不同所以最后我们的车每跑15cm才能感觉到速度的变化.这样你的调速算法做的在好,也无济于事,这也是赛后才想通的.

记忆算法先不介绍,我之后会放一篇文章出来,专门讲这个.

我的大一下半学期的时间都用来干这个了,而且还付出了挂了一科的代价,虽然没进决赛,但我已经极大的培养和锻炼了我自己,没什的可后悔的.我将不会参加第三届的比赛.我把源代码公开出来,希望大家能去其糟粕,取其精华,从中得到一些有用的东西.免得它放在我的硬盘里发霉生锈了.十分愿意和参加这项比赛的同学和老师交流,交换各自的想法和意见.如果愿意,同时也很希望能看到同学们在赛后吧自己的源代码贡献和公开出来.

如果任何BUG或建议请联系作者eic([email protected])     

eic, Apr. 17, 2008

About

飞思卡尔智能车竞赛源代码(含记忆算法)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published