在写这个帖子之前,先感谢我的两位队友为这个作品所付出的巨大努力!
这学期学了知识产权,来声明一下~本作品由桂林马三位同学共同制作~版权由桂林马三位同学共同所有~
参加了学院举办的智能控制大赛,去年一个人单干了初级组,结果累死累活也就拿个安慰奖,今年醒目了,找了两个给力的队友一起杀高级组,希望能拿个满意的结果。平时测试还行的,不过我们在评审的时候出了好多意外。。。比如我的电脑刚好在那个时候黑屏死机了。。。再比如无线通信也出了一些问题。。。再比如走着走着电池没电了。。。也不奢望拿个一等奖的,至少是努力过的了,从中也积累了不少东西,我不敢说我们的作品在所有的参赛队伍中的效果是最炫的,但我敢说我们组在功能上做的是最细致的!也有许多不完善的地方,比如在拓展功能演示的过程中出现了操作失误,就不得不重新让小车搜索整个地图后才能重新开始演示,其实在软件层面上说,这些地方是需要注意并完全可以解决的。不过感觉时间也比较少,功能做得太细致也不大可能,所以就将就着了,一开始设计的时候也没想得这么完善。
好吧,啰嗦到这里,经两队友同意,我就把我们的论文,还有整理后后的程序代码,以及视频效果都上传上来,
(PS:其实论文比较赶,也比较水。。。比赛论文都这样,评委也不认真看的。不会的人看不懂,会的不屑于看)
(PS:程序代码也修复了几个BUG,视频里的一个明显的BUG已经不会再出现了)
题目可以看这里。 http://blog.sina.com.cn/s/blog_a1b0721301014165.html
我们实现的功能有题目中的所有基本要求和拓展要求。
我主要负责做的部分是迷宫算法,上位机,上下位机无线通信协议部分。两个队友负责的是小车硬件的搭建,小车的基本寻线功能,测距,路口检测和路口转弯部分。两个队友调硬件很辛苦,对于这种迷宫,传感器的布局很重要,而且对转弯的实现也很麻烦。。。而且。。。用了9路AD,又用了无线模块,貌似引脚不够用了,后来把板子上的那块flash芯片拆了以后才能正常调试。另外大家可能没法完整获得小车需要的硬件来搭建小车并测试我们的程序,不过我的任务一开始就比较明确,所以我也就写了一套测试我的代码的程序,我们的代码里有纯软件模拟的部分,只要你能找到两个 ALIENTEK Mini 板和两个nRF24L01无线模块,就可以进行简单的测试了。
模拟测试需要的工程有:
上位机程序,(注意工程里的exe文件应该和wav音乐文件放在同一个目录下)
无线-串口数据转发,
下位机程序的纯软件模拟版。
至于完整的下位机程序,搭硬件会比较麻烦,估计不会有人会特的搭硬件测试的。
测试步骤:
1. 先用两块 ALIENTEK Mini 板测试无线-串口数据转发模块,测试方法可以参考这里:http://www.openedv.com/posts/list/5533.htm,PS:这里传的无线-串口数据转发程序是放了狗的,工作比之前那个更加稳定。
2. 做完步骤 1 的测试后,拿其中 1 个板来下载下位机程序的纯软件模拟版,这个板子只要给供电就行,不需要和电脑的串口有连接。
3. 打开上位机,点击连接设置,设置好数据转发器对应的COM口后确定,点击连接,提示握手成功后,点击启动迷宫模式,上位机界面就会显示小车的位置,和迷宫地图的搜索情况了。至于寻光模式,我是无法模拟的,还有通过键盘上的上下左右键遥控小车的功能,我也只是用板子上的两个LED来简单模拟了。
然后对于我负责的那部分代码,我想说明的是,对于初学者,就没必要去仔细研究了,浪费时间的。我的算法是在没有参考任何资料的情况下写的,算法效率不高,注释也不详细,没有完整的说明,估计没几个人看得懂的。对于稍微有参考价值的部分,是我的无线协议的写法,为了可读性,使用的都是结构体了,不过需要注意好避免结构体填充,我的代码里是使用了#pragma pack()指令来避免这个的。
然后是功能介绍(有些功能在视频中并没有演示):
小车分为遥控模式,寻光模式和迷宫模式。
在遥控模式下(在没启动寻光模式和迷宫模式的时候就是遥控模式),可以通过上下左右键来控制小车的移动,这个时候,还可以开启实时状态更新(实时状态更新在另外两个模式下会自动开启),上位机上会实时显示小车的速度信息(我们的小车好慢。。。用的是mm/s的单位。。。),其中还有9个圆圈是红外对管返回的信息,如果对管底下是黑线,那么对应的圆圈也是黑的。把鼠标移到圆圈上面,可以在状态栏上看到AD读到的具体数值(无线传回来的数据是8位精度,所以显示效果也是8位的)。
在迷宫模式下,把小车放在迷宫的入口处,小车会自动寻线并搜索完整个迷宫的地图,迷宫地图会在上位机上显示,在搜索过程中,发现能走但是没走过的线路是黑色的,走过的线路是蓝色的,小车的位置在上位机上以蓝色的圆点显示,迷宫的入口以绿点显示,出口的显示效果和比赛的参考地图一致。走完整个迷宫后,可以在上位机上通过右键菜单控制小车以最短路径走到迷宫的任何一个路口。为了满足比赛的要求,也可以在小车完成基本要求中的搜索任务后,可以把小车拿起来放到迷宫中的任何一个路口,上位机上再通过右键菜单重新设置小车的位置,然后又可以让小车以最短路径到达迷宫中的其他任何一个路口。另外小车在走迷宫的过程中,上位机会语音播报小车遇到的路口(十字路口,T型路口),和前进的信息,到达出口后,上位机上也会语音提示。
在寻光模式下,可以用手电筒照射小车,小车会自动往手电筒的方向跑。
我们的小车还有红外遥控的功能,但是时间比较紧并没有整合到完整的下位机程序里去,所以我也就没有上传那部分的代码。
至于标题为什么叫遛狗记,看我上传的视频你就知道了。
纯文字,估计大家看着挺累的,上传一张上位机纯软件模拟的的效果图吧~小车的图一直没拍,只有视频上看得到,以后拍了再上传吧 : )
这个地图对题目的参考地图是有点更改的,如果想换回题目的参考地图进行模拟,可以把 carMode 文件夹里的那个 cpp 文件中的两个被注释的数组恢复,但是需要注释另外两个数组。
补上小车的图:
|