金牌会员
- 积分
- 1304
- 威望
- 1238
- 贡献
- 54
- 兑换币
- 28
- 注册时间
- 2008-4-19
- 在线时间
- 6 小时
|
(请到http://code.google.com/p/freescalesmartcar/关注最新信息,所有的东西都将发布在那里)
大一时参加第二届飞思卡尔智能车竞赛的源代码,使用BSD许可证发布.
包含很多有用的库, 源代码涉及了单片机的大部分功能.对DG128不熟的同学可以作为参考. 系统分四层, 硬件层,设备层,控制层和智能层.
包含记忆算法.
当时我花了大约三个的时间去了解所用的单片机,并写完了硬件层和设备层的代码.这使我在后来的开发工作中不必去过多考虑的底层细节,能够把更多的精力放在控制和智能算法上面.项目中还包含了大量的测试用例以供参考.我基本上是采用边测试边开发的方法开发的.这是我认为大家可以学习的地方.
项目中的一些模块可能会对大家有用,我做一个简单的介绍.
dbg : 调试模块,控制LCD,调试用按键和串口, 包含一个菜单子模块, 自己写了一个printf函数,可以方便的从串口或者液晶屏输出信息.菜单模块也花了一些功夫,可以方便的添加菜单元素, 动态的查看和修改系统中某变量的值.
h : 硬件层,直接和I/O口与内部模块打交道.
d : 设备层,把传感器,马达,舵机等抽象出来.
c : 控制层,控制舵机,马达,采集道路信息.
s : 智能层,路径记忆和播放
为了不因为分层而影响效率, 分层并不是十分严格, 而且有很多地方是用宏来做层与层的衔接的. 系统在48MHz的采样和执行周期约为0.6~1ms之间.我认为这样的响应时间已经是比较高的了.
事实上我们的成绩并不理想.用记忆算法跑有的时候还不如不用. 赛后我分析了原因, 最主要的是我们的调速做的太差了,交大用的是千元的编码传感器,精度能到1/256圈, 也就是车每走15/256cm就能够感觉到速度的变化,而我们只用了4个磁铁加一个霍尔传感器,并且因为四个磁铁距离不同所以最后我们的车每跑15cm才能感觉到速度的变化.这样你的调速算法做的在好,也无济于事,这也是赛后才想通的.
记忆算法先不介绍,我之后会放一篇文章出来,专门讲这个.
我的大一下半学期的时间都用来干这个了,而且还付出了挂了一科的代价,虽然没进决赛,但我已经极大的培养和锻炼了我自己,没什的可后悔的.我将不会参加第三届的比赛.我把源代码公开出来,希望大家能去其糟粕,取其精华,从中得到一些有用的东西.免得它放在我的硬盘里发霉生锈了.十分愿意和参加这项比赛的同学和老师交流,交换各自的想法和意见.同时也很希望能看到同学们在赛后吧自己的源代码贡献和公开出来.
如果任何BUG或建议请联系作者eic(superefei@hotmail.com)
eic, Apr. 17, 2008
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
1
查看全部评分
-
|