奋斗之旅 北京启航分享 http://blog.sciencenet.cn/u/freton 人类被赋予了一种工作,那就是精神的成长

博文

【机器人系列】NO5:针对机器人比赛的FPGA开发总结

已有 5677 次阅读 2008-11-23 22:15 |个人分类:科研创新|系统分类:科研笔记

写在前面
 
2008年8月1日星期五,当我再次坐在工程实训中心的场地里,坐在团队战斗过奋斗过的地方,敲着这一篇总结性的文章时,多种滋味徘徊心头。7月6号从北京比赛回来便病了一场,匆匆住院,出院之后又匆匆回家继续打点滴。不算严重的毛病也折磨死人,在家待了半个多月的时间,又回到学校,回到熟悉的地方,只是很多人都不在学校了。其间错过了团队的总结会,这次回武汉,心中的一件事就是想着能补上这份迟到的总结。所幸的是,还能看到华中科技大学的各处风景,还能碰到团队的几个兄弟,还能在有空调的房间睡上几晚,还能在4栋继续睡下去,还能在4栋的洗手间冲个爽快的澡……
 
从2007年11月份开始,到2008年6月29日出征北京,到7月6日从北京归来,中间经历了太多太多。结果是我们进了八强,中间的过程却远比这样一个八强的结果深刻得多,有意义得多,也刻骨铭心得多。毕竟,14个人一起走过来了,其中滋味,其中冷暖,我们自知。
 
没有把题目写为《针对ABU-ROBOCON的FPGA开发总结》,是觉得在参加ABU-ROBOCON比赛的过程中,涉及到FPGA开发的方方面面是适用于各种机器人比赛的,有其普遍性。故也希望此文能对以后参与机器人比赛的同学有指导作用,期待CCTV机器人团队能在以后的比赛中再接再厉,不断突破,打造优秀和辉煌!
 
 
综述:DSP+FPGA+驱动板+多种传感器
 
针对ABU-ROBOCON机器人比赛的FPGA 开发与一般的FPGA开发有其不同的地方。一般的FPGA开发更多的是面向数字电路构建,完成常用的组合逻辑和时序逻辑功能。而在我们的团队中,基于由DSP+FPGA+驱动板构成的多层硬件架构,FPGA相当于是一个数据采集卡,并对相关数据进行处理以得到我们需要的数据。FPGA板上留有许多接口,可接PS手柄、超声波传感器、光电开关、行程开关、光电对管等,开发FPGA程序就是从这些接口读入数据,做必要的数据处理,再把处理后的数据遵循总线通信协议发送到DSP,供DSP接受和处理,再驱动机械执行机构等执行相应的动作。DSP也可向FPGA写数据,例如写PWM的占空比和电机转动方向数据等等,PWM波信号线和电机转动方向信号线直接与驱动板连接,从而使驱动板工作。
 
一般说来,FPGA从外围接口读取数据。对不需要处理直接可用的数据,例如开关量,状态要么为0,要么为1,在FPGA中用寄存器寄存再由DSP读取即可;对于读取之后不能直接使用的数据,例如利用超声波传感器测距时,FPGA只是读到了PWM信号线上的数据,但这个数据并不是距离,需要把PWM信号转化为距离,这就需要一个由FPGA进行处理的过程。处理之后得到距离,DSP再从FPGA读取该距离值。DSP是处理核心,很多重要的工作都是由其完成的。
 
上面的描述,以及外围传感器、FPGA、驱动板、DSP之间的关系,如下图所示。
 
值得注意的是,图中箭头的方向表示数据流向。FPGA与外围传感器之间的双向箭头表示FPGA可以读取传感器的值,但FPGA也有数据流向某些传感器,比如说时钟信号,因为某些传感器需要时钟驱动来工作。
 
DSP与FPGA之间双向箭头,主要反映于它们的读写关系。DSP数据总线是双向通道,DSP读数据时,数据从FPGA到DSP;DSP写数据时,数据从DSP到FPGA。
 
 
很多功能,例如PS手柄读按键程序,PWM波的产生,既可以在DSP中实现,也可在FPGA中实现。FPGA提供的可编程逻辑为我们提供了极大的灵活性,可以实现各种功能,用这么一句话形容也不过分:“没有做不到,只有想不到”。而DSP的硬件结构是已经确定的,只能依赖于具体型号的DSP提供的资源来完成功能的实现。
 
团队中,使用Altera公司生产的FPGA芯片EP1C3T144C8做开发一般是足够的,但对于做逻辑分析时要生成逻辑分析文件最终下载到FPGA非常耗费资源,而且逻辑分析采样深度越深,越耗费资源,在对资源使用率要求很高的情况下,可以考虑使用资源更为丰富的FPGA芯片。DE以及DE2开发板现在用得比较流行,它提供的资源更为丰富,包括USB接口、网络接口、适合于多媒体以及图像处理开发的资源等等。在做机器人视觉时,可以考虑使用DE或DE2开发板。
 
 
 
 
至于处理核心DSP,07年采用的是2407,08年用的是2812,它们的读写时序图以及内部结构等都有不同,这方面要多参考Datasheet,底层配置是比较麻烦的事情,得多翻看参考手册。从一些已有的实际例程入手会加深对配置DSP的理解。
 
FPGA和DSP通信的程序框架如下,尤其要注意双向数据总线上的状态():
 
assign rd = !iCS6and7 && !iRead_en;//read signal
 
assign we = !iCS6and7 && !iWrite_en;//write signal
 
assign Data_inout = rd ? Data_inout_reg:16'hzzzz;//注意此语句的作用,数据总线是双向的
 
 
 
//write FPGA
 
always@(posedge iBusClock )
 
begin
 
if(we)
 
begin
 
case(iAddress)
 
                 // 添加程序
 
endcase  
 
else
 
//添加程序
 
end   
 
 
//read FPGA
 
always@(posedge iBusClock )
 
begin
 
if(rd)
 
begin
 
case(iAddress)
 
                 // 添加程序
 
endcase  
 
else
 
//添加程序
 
end   
 
 
PWM
 
脉宽调制,本质上是产生周期固定、占空比可变的信号。占空比由DSP决定,DSP发送占空比数据给FPGA,在FPGA内对总线时钟或FPGA本身的时钟分频来产生周期固定的信号,并用一个计数器来计数,在不超过占空比数据的条件下,信号为高电平,否则为低电平。产生固定周期信号和控制信号占空比的计数器是同一个计数器。
 
从另外一个角度来看,产生周期可变、占空比固定的信号也是可以达到要求的。但这样的理解与实际是不太一致的,实现起来不那么直观。
 
 
编码盘
 
产生A、B两路信号,两路信号相位相差90°。可以只对某一相信号进行计数,计数结果反映了编码盘的转动圈数,在用于拉线电机时可根据编码盘计数结果限幅。
 
在使用编码盘时,要判断其正转还是反转,必须结合两路信号来判断。如,正转时,A的相位超前于B的相位90°,那么,反转时,B的相位超前于A的相位90°。据此,对A相信号计数时,判断B相信号处于高电平还是低电平即可判断编码盘处于正转状态还是反转状态。
 
出于实际考虑,有时DSP要对编码盘的计数结果清零。根据我们的使用经验和摸索,只需要给出写信号和相应地址信号时,编码盘计数结果寄存器赋以0值即可。
 
 
PS手柄
 
根据时序图设计时序,时序图刻画了PS手柄的通信协议。所以要深刻地理解PS手柄通信时序图。
 
目标就是要产生符合时序图的时序,进而在按下手柄按键后产生正确的数据,把手柄的按键动作在FPGA寄存器中寄存,DSP就可以读取此数据。最终DSP根据手柄按下了哪个按键控制执行相应的动作。
 
值得一提的是,时序是设计出来的,不是仿出来的,更不是凑出来的。总体设计方案,和详细逻辑设计方案最初要计划好。事实上我在这一点上花费了较多的时间来调试,当然也有根据分析结果凑出时序的成分。
 
在始终下降沿触发数据,在时钟上升沿读取数据!!FPGA实现PS手柄时序图时必须注意这一点。
 
调试的过程并非一帆风顺,耐心、仔细、善于分析实验结果等品质是必要且重要的。
 
 
超声波传感器测距
 
超声波传感器利用声波介质对被检测物进行非接触式无磨损的检测。超声波传感器对透明或有色物体,金属或非金属物体,固体、液体、粉状物质均能检测。其检测性能几乎不受任何环境条件的影响,包括烟尘环境和雨天。ABU-ROBOCON比赛场地上有各种灯光,超声波模块在这样的环境下也可正常工作,稳定、可靠。
 
08年的比赛中,一个机器人需要提起另一个机器人,提升到一定高度后,被提起的机器人要伸出夹子取黄色黄油。这个高度即可用超声波传感器来测得。当时出于双保险的考虑,同时使用了超声波模块和一个光电开关。调节光电开关增益,可设定一个距离,但此距离值相对超声波传感器测距来说不那么准确,且光电开关极易受比赛场地灯光的影响。
 
检测模式  
 
  超声波传感器主要采用直接反射式的检测模式。位于传感器前面的被检测物通过将发射的声波部分地发射回传感器的接收器,从而使传感器检测到被测物。  
 
  目前还有部分超声波传感器采用对射式的检测模式。一套对射式超声波传感器包括一个发射器和一个接收器,两者之间持续保持“收听”。位于接收器和发射器之间的被检测物将会阻断接收器接收发射的声波,从而传感器将产生开关信号。  
 
检测范围和声波发射角  
 
  超声波传感器的检测范围取决于其使用的波长和频率。波长越长,频率越小,检测距离越大,如具有毫米级波长的紧凑型传感器的检测范围为300~500mm波长大于5mm的传感器检测范围可达8m。一些传感器具有较窄的6º声波发射角,因而更适合精确检测相对较小的物体。另一些声波发射角在12º至15º的传感器能够检测具有较大倾角的物体。此外,我们还有外置探头型的超声波传感器,相应的电子线路位于常规传感器外壳内。这种结构更适合检测安装空间有限的场合。
 
串口被动模式、自动测量模式、PWM被动控制模式,这是超声波传感器的三种测量模式,具体可参见文档URM37 V3.2 Users Manual。
 
使用超声波传感器测距时要选择测量模式,即必须对测量模式进行设置。这可以通过串口与超声波传感器连接来实现通信,向超声波模块的EEPROM写数据。有一个软件URM37V3.2helpmate可辅助操作,可简单直观地测试超声波工作正常与否。
 
我们选择了PWM被动控制模式。测距本质上是对产生的PWM信号进行计数,把PWM持续的低电平时间转化为距离。50us=1cm,实现时分频产生50us的基准时钟,统计有多少个50us即得到测量的距离。此算法思想很简单,但实现时有许多细节问题要注意,对于FPGA开发中阻塞赋值、非阻塞赋值等问题要有深刻理解。
 
应该注意的问题:确保串口和超声波模块的正确连接,接电源、接地的地方一点要接,PWR_ON要接高电平;超声波模块接在FPGA板上工作时,指示灯会亮,靠近耳旁听时一般有“嗞嗞”的声音,可辅助判断超声波模块工作与否。
 
 
 
PCMCIA卡
 
笔记本电脑上没有并口,PCMCIA卡实现PCMCIA接口转并口等功能。并非所有笔记本上可插PCMCIA卡,IBM和TCL笔记本一般提供了PCMCIA卡接口。当时买此卡是在去北京那天上午买的,没来得及做测试。去北京做测试后系统识别了PCMCIA卡,且产生了一个并口,但在下载FPGA程序时提示不能正确下载,好像是硬件不兼容的问题。这方面还需要进一步的研究和测试。
 
 
 
多种传感器融合技术
 
去北京看到其他学校制作的机器人,看到他们用到的各种各样的传感器,更加觉得有必要融合各种传感器的优点,采用多传感器融合技术进行机器人开发。不仅仅限于行程开关、光电开关、编码盘、超声波传感器,尝试使用其他传感器和好的设备应成为一种趋势。传感器的单一从某种程度上约束了我们的思维,考虑问题时只能从已有的传感器出发。多传感器融合技术在于能充分发挥各种传感器的优点,在各自的舞台上将其功能发挥得淋漓尽致。同时,多传感器融合带来了另一些显著的问题就是传感器的可测性、可观性和可控性问题。多个机器人身上装有各种各样的传感器,且每种传感器的数量可能有多个,那么测试、控制、观察这些传感器的工作量也就显得巨大、烦琐。西交当时按一定的格式把各种传感器的状态通过液晶显示器显示出来,这一点值得借鉴。
 
要用到更多、更好的设备,更多的资金投入自然不可避免。ABU-ROBOCON是一个竞争极其激烈的比赛,我想,每一个参加了这个比赛的人,在亲历比赛现场气氛之后,内心都会有所感触和震撼,也会深刻铭记那充满竞争的场面。面对竞争,设备质量不能比别人差!
 
一个例子就是,在准备08年比赛的最后阶段,调试机器人时发现一个舵机工作不正常,在转过一定角度后便开始乱转。杨红当时怀疑是FPGA产生的PWM波有问题,但事实是,四路PWM工作是正常的,其他三路PWM波驱动的舵机工作也正常,唯独只有第四个舵机工作不正常。我怀疑是杨红DSP程序有问题,但杨红确认DSP程序没问题。没办法,我们只好换一个同型号的舵机,再调试,问题依然存在。这样的局面不免让我们很有挫折感,最后的解决办法是,换了另一种型号的质量要好些的舵机,舵机乱转的问题便不存在了。
 
我们对我们的机器人制作技术有信心,我们对我们解决技术问题的能力也有信心,但我们希望,好的设备和器件能带给我们更多的信心!
 
 
FPGA演奏乐曲
 
音符、音调,本质是产生一定频率的信号。只要理解了数控分频器的工作原理,让FPGA唱歌不是那么困难的事情。通过蜂鸣器演奏乐曲的效果不太好,因为蜂鸣器发声有其固有频率。如果把蜂鸣器换成扬声器,演奏乐曲的效果会好得多。一些乐曲的乐谱、对应频率在网上可查。
 
简谱音节与对应频率:(不同出处的资料对此描述有所不同)
 
低音:3=166.31Hz,4=176.2Hz,5=197.78Hz,6=222Hz,7=249.19Hz;
 
中音:1=264Hz,2=296.33Hz,3=332.62Hz,4=352.4Hz,5=395.56Hz,6=444Hz,7=498.37;
 
高音:1=528Hz,2=592.66Hz,3=665.24Hz,4=704.8Hz,5=791.12Hz。
 
说到让FPGA演奏乐曲,不禁让我想到6月份的一个晚上。那时已经是比赛倒计时阶段了,但机器人存在的问题还很多,张小良、杨红和我还在为FPGA控制的一些细节问题做着激烈的讨论。问题讨论完后,我们意犹未尽,便随意谈论些东西。说在程序中加入Beijing、2008等很有标志性的东西,说给寄存器命名时就用我们名字的拼音,说让机器人跑到某个位置就让它演奏什么乐曲,比赛胜利了就让机器人在比赛场地上演奏国歌……想想那段苦中作乐的日子,感怀依然。因为我们的团队是乐观向上的,是充满着活跃的气氛的。队友之间的交流、支持和鼓励给予了彼此莫大的信心和勇气,那是我们收获的宝贵财富。
 
 
 
卡尔曼滤波算法(Kalman Filter)
 
其核心是五个公式,常用于路径规划,其公式构成一个闭环系统。详细资料可参见卡尔曼滤波算法文档。但它并不是一种控制理论。
 
 
其他
 
(1)几个重要概念:时钟,延时,频率,限幅
 
 
(2)关于比赛:创新,如何应对变化的复杂的局势
 
 
(3)执行力:自觉 自学 自省 团队约束
 
 
(4)开始与结束的经典论述:
 
生活到哪里都是开始,到哪里都是结束。
 
西交:This is not the end, even not the beginning of the end .But, perhaps, t is the end of the beginning.
 
 
(5)软实力和硬实力:怎样保证这两面的实力并充分发挥这样的实力?
 
 
(6)战略与战术
 
马云:战略没有细节就等于一堆废纸。   --------------实现的过程?很辛苦,有时也很痛苦
 
 
(7)Strive for excellence! Center of excellence!
 
站在巨人/前人的肩膀上?勇于创新?
 
 
(8)荣誉 团队 责任 技术性
 
能够有机会代表学校出战
 
能够为了荣誉和理想而奋斗 
 
 
(9)激情成就梦想
 
勤奋铸就冠军
 
 
2009 ABU-ROBOCON团队加油!各位兄弟如来北京,请联系我。如果以后比赛还在北京举行,我一定前去加油。因为一种根植于心的感情和眷念。
 
我的联系方式:
 
E-mail:tf-yt@163.com 
QQ:411723237
 
时间仓促,几经整理此文,它在北京的某一个小房间得以结尾,难免有不妥和错误之处。感谢团队各位老师、师兄和兄弟的理解和包容。
 
方运潭
 
                                                二○○八年九月一日星期一
 




https://blog.sciencenet.cn/blog-200505-206030.html

上一篇:短信,传递了什么
下一篇:【机器人系列】NO6:写给2009HUST机器人队
收藏 IP: 114.246.86.*| 热度|

1 黄富强

发表评论 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-10-7 05:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部