Profile - CN045


CN045

基于FPGA的图书馆机器人

清华大学
电子工程系


Finals


[print]


Project

Name of Project:基于FPGA的图书馆机器人

Contact Information

Name:邱卫华
E-Mail:qiuweihua888@sina.com
Telephone:010-51535115
Mobile Phone:15001231060
Mailing Address:清华大学紫荆1#115A

Contest Advisor

Name:刘勇攀
E-Mail:ypliu@tsinghua.edu.cn
Telephone:13671065136

Members

No.NameE-MailEnglish Name
1邱卫华qiuweihua888@sina.comqiuweihua
2林睿lilium426@yahoo.com.cnlinrui
3金融jinrong9056@gmail.comjinrong

Project Paper - view as Preliminary(2010/06/01), Final(2010/09/18), Draft, Latest

1. 设计概述 (Preliminary Paper)

1.1     设计意图

        随着科技的进步,机器人的出现很大程度的提高了人类社会的生产力。由于机器人具有效率高、差错率低以及工作时间长的特点,被广泛运用于精密制造、物品搬运等复杂、重复而有规律的工作中。物联网的出现,使得越来越多的物品搬运和运输的自动化和可追踪化成为可能。

        目前在大型图书馆中,由于馆藏量大、借阅人次多,整架工作也较繁琐,上下架工作量大,读者检索环境因书架自身条件而变得困难、效率低。如果将图书馆建设与机电自动化联系起来,让机器人成为图书馆的管理者,代替人的工作,能够完成图书自动上下架、取书还书等工作,那么图书馆将会更加人性化,更好服务读者。图书馆是引入机器人非常理想的一个地方,可以充分展示出机器人的效率。
 
       考虑到这一点,我们计划以Cyclone II  FPGA为核心,设计一个图书馆机器人系统。
 
       首先用户通过上位机查询选择所需书目,确定后上位机对数据库进行检索并将相关信息通过无线发送到图书馆机器人。机器人接收信息后能正确到达书架前,通过摄像头对书本的编号进行识别,确定书本的位置,然后进行精确定位,使用机械手将书本取出,最后返回交给用户。

        通过网上调研,我们没有发现国内的相关研制记录,成型的产品更是没有。考虑到我们制作的产品价格低廉,同时该平台具有非常广泛的通用性,进行改进后即可以用于包括图书馆、物流、危险品远程操作、家庭服务等一系列应用场景中,其市场前景非常广泛。

1.2     使用范围及用户群

(1)图书馆:

        本系统是专门为图书馆定制的,通过使用图书馆机器人,能够提高检索速度,自动完成图书上下架等工作,降低图书馆运行成本,使图书馆更加人性化,更好服务于读者尤其是老年人及残疾人,展现出机器人的效率。

(2)物流仓库:

        电子商务时代中,物流的效率决定了产品的服务时间和成本,物流业的重要性不言而喻。物流仓库是引入机器人的另一个非常理想的地方。物流中搬运货物的工作单调、重复且劳动量大,搬运机器人的引入无疑会大幅提高整体工作的效率。我们的图书馆机器人经过简单的改造就能成为物流机器人,可以根据指令搬运货物,效率高、差错率低。

 

图 1     国外物流公司中的机器人在搬运货物(图片选自IEEE Spectrum 2008 July)

3)危险品远程控制:
 
        正如电影拆弹部队中演示的那样,具有视频采集、无线传输以及机械手装置的移动小车平台,已经被用于反恐场合。本系统同样具备上述功能,经过简单的改装和优化,即可被用于类似的危险品搬用服务。
 
4)家庭服务:

        搬运机器人同样可以用于家庭服务领域,解决中国社会老龄化以及残疾人家庭的日常困难。

 

1.3     设计采用本款FPGA芯片的原因

1)我们选用了Altera DE2_70作为开发平台。FPGA核心为数量高达70,000个逻辑单元的Altera Cyclone II 2C70。平台上具有大容量的内存组件,丰富的多媒体、储存及网络等应用接口,可以进行深入的功能开发。同时,对于此开发平台,Altera提供了大量的教材和各种说明范例,非常便于开发。

2)专用的外部存储器接口。Cyclone II器件既为低成本应用提供了丰富的嵌入式存储器,又可以满足某些应用对外部存储器的额外需求,能够与外部存储器进行高速可靠的数据传输。

 
3)方便使用的Nios II软核处理器,具有灵活、高性能、低成本、生命周期长等特点,并提供了大量的开发技术文档和实例。Nios II软核的性能是可以根据应用来进行裁减的,它具有丰富的IP核库,方便用户设计,有效的提高系统的运算能力。用户可以定义Nios II指令,提供了运算优化、加速的一个有效途径,易于实现算法的商用化。由于单纯的低端嵌入式CPU无法满足快速图像识别和信息无线传输的计算需求,而高端CPU的成本和功耗过大,因此使用基于FPGA的SOPC方案能够有效解决低功耗、高性能和低成本的难题,成为机器人平台的首选方案。
 
4)C2H对设计的有力支持。Nios II提供的C2H编译器集成在Nios II IDE里,能够自动转换软件程序到硬件实现,并实现Avalon接口,生成Avalon定制外设连接到 Nios II系统中。这样分担了Nios II处理器的数据计算和存储器访问功能,使处理器能够更好的处理其他任务。Nios II C2H编译器可以帮助嵌入式系统开发人员提高效率,实现成功的设计。
 
 
 
 

 

(Revision: 9 / 2010-08-28 23:21:58)

2. 功能描述 (Final Project Paper)

2.1 图书馆机器人的功能

         用户通过上位机查询确定指定书籍,通过上位机对数据库进行检索,并将相关信息通过无线发送至机器人,机器人接收指令后,前往相应地点,使用摄像头采集图像,然后识别书本上的二维码,确定书本位置并精确定位,使用机械手将书本取出并返回交给用户,同时给上位机发送任务完成信息。

  图2   功能示意图

2.2 功能实现

1、在上位机中建立了友好的用户界面,并建立起图书信息数据库,便于读者查询。


2、上位机通过无线模块将书籍位置及编码信息发送至机器人,机器人通过无线模块接收相关信息后获得书籍编码,开始前往书架所在地。


3、FPGA对步进电机进行逻辑控制,同时传感器实时采集地面信息,传送至FPGA进行处理,并对步进电机进行调整,完成循线行走,到达书架所在处。


4、距离传感器采集机器人与书架间的距离、相对位置信息,传送至FPGA进行处理,FPGA控制步进电机的工作以将机器人调整到合适的位置及姿态。


5、摄像头采集书缝、激光点及书籍编码信息,传送至FPGA进行图像处理。FPGA通过图像识别,找出书缝、激光点的位置,并且用书缝的位置将每本书分开,再对每本书进行识别找出编码信息,并与接收到的信息进行对比,如果不是指定的书籍,机器人平移适当距离,重新搜索。经过对书架的搜索,找到指定书籍。


6、通过激光定位系统,对已找到的书籍进行精确定位,具体方法如下:机器人共有三个激光发射器,其中有两个分别标示着左右两插板对准的地方,另一个标
示着抓手对准的地方。在找到指定书籍之后,机器人通过步进电机的精确移动将标示抓手的激光点对准目标书籍,然后移动左右插板,将它们分别对准左右书缝,这样就完成了取书前的对准工作。能够实现的原因是激光点的亮度很高,而书缝的亮度较低,在图像上非常的明显。


7、FPGA控制第二组机械手前伸,插入书,将两边的书适当的向旁边推开,然后第一组机械手向前伸出,夹住指定书籍,并且完成取出动作,收回插板。


8、FPGA控制步进电机的运动,返回原位置将书交给用户,并且给上位机发送任务完成信息。


图 3     机器人全貌

 

图 4     机械臂实物图

(Revision: 6 / 2010-08-29 22:33:55)

3. 性能参数 (Final Project Paper)

3.1 性能参数

1.      时钟频率
a)   CPU时钟 120MHz
b)   SDRAM时钟120MHz
c)   SSRAM 时钟100MHz
d)   PWM模块控制时钟50MHz
e)   图像处理加速模块时钟50MHz
f)   超声波模块时钟 17MHz
 
2.      功能耗时
a)   一次完整的图像识别,包括预处理、查找激光点、二值化、查找书缝和识别二维码,总共耗时大概0.3s。
b)   一次简单的取书过程大概耗时2min。
 
3.      资源利用率
a)   整个系统大概消耗了17,000个LE,如果以DE0为参照,消耗的逻辑单元数目已经超过了EP3C16F484的总量。
b)由于系统的硬件外设较多,需要各种的时钟信号,所以消耗了3个PLL

 5    逻辑资源使用情况

 

 6    SOPC系统结构

 

3.2  Altera 器件在设计中的功能

 
图书馆机器人的控制和计算核心是AlteraDE2_70FPGA开发板。Altera FPGA强大的处理能力完美的满足了机器人识别书本、运动控制和无线通信的要求。
 
       SOPC系统中的器件主要分为三类,第一类是AlteraIP核,第二类是由软件经过Altera C2H compiler加速生成的硬件模块,第三类是自定义模块。SOPC系统外的模块主要是自定义模块。整个系统中Altera器件占了很大的比例。
 
Altera Nios II CPUNios II CPU 是整个系统的核心。考虑到系统中图像处理算法以及机械控制对系统实时性的要求,我们选用了Nios II FastCPU,配置了较大的cache,并且启用了burst功能。Nios II CPU的高性能在系统功能的顺利实现中起到了重要作用。
 
Altera VIC。为了进一步保证系统的精度,提高系统对中断的响应能力,我们采用的Altera vector interrupt controllerVIC作为external interrupt controller 可以缩短中断程序的调用时间,加快CPU响应中断速度。

        Altera Avalon PLL。系统中充分地利用了EP2C70F896C6芯片中的PLL资源。由于各种外设模块所需要的时钟不同,所以需要FPGA生成大量不同的控制时钟。而EP2C70上丰富的PLL资源正好满足了这一需求。

 

(Revision: 4 / 2010-08-29 22:34:24)

4. 设计结构 (Preliminary Paper)

4.1 系统模块划分

图 7    系统模块图

        图书馆机器人系统的中央控制单元为Altera的DE2系列FPGA开发板,与FPGA相连接的外部模块有:无线通讯单元、图像采集单元、传感器系统、机械手和机身运动系统。各外部模块的功能如下:

 

          无线通讯单元负责通过无线与上位机进行通信,接受上位机发出的取书指令及相应的书籍信息,并将相应的数据传送至FPGA;当取书完成时,FPGA通过控制无线通讯单元,向上位机发出任务完成信息。

        图像采集单元负责在寻找书籍时采集图像数据,将图像信息传送至FPGA进行处理,获取书籍间的空隙、书籍的编码以及书本上的激光点等信息,进而实现找到指定书籍、精确定位以及拿取的功能。

        传感器系统分为两部分,一部分负责在机器人行走时实时采集地面的数据并传送至FPGA进行处理,以判断是否相对预订路线有偏离并做出相应的调整,完成巡线的功能;另一部分为距离传感器,在机器人接近书架准备取书时,通过实时的将距离书架的距离信息采集并发送至FPGA进行处理,实现让机器人与书架达到理想距离的功能。

        机械手分为两组,其中一组为较薄但强度很高的金属片,当精确定位并对准指定书籍之后,这组机械手在FPGA的逻辑控制下插入书籍缝隙并向两边使用适当力量撑开书籍,在一定范围内让指定书籍处于独立的状态;另一组为夹取机械手,当第一组机械手完成工作后,该组机械手在FPGA的逻辑控制下向前伸出,并完成夹取的动作。两组机械手配合完成整个取书的机械过程。

        机身运动系统负责整个机器人的行走运动,当机器人接收到上位机的指令后,机身运动系统在FPGA的逻辑控制下通过其步进电机实现机器人到达预订位置的行走过程,其中还要根据FPGA的控制调整路线,防止偏离。在扫描寻找指定书籍的过程中,也要进行稳定的行走。在实现精确定位书籍并对准的过程中,机身运动系统需要根据FPGA的控制做出平移微调,完成对准书籍的功能。

 

 4.2 FPGA功能模块

图 8   FPGA功能模块

        系统基于NIOS II嵌入式软核设计,在FPGA上实现了一个NIOS II核。通过AVALON接口挂接各类外设,以实现完整的功能。

       NIOS II核直接通过EPCS FLASH Controller的控制访问EPCS 16 ,读取程序指令(ELF文件);

       CCD摄像头采集的图像数据在具有DMA功能的自定义Graphic Controller的控制下直接的存入SSRAM,避免了NIOS II进行简单重复的传输工作,提高NIOS II的工作效率;

       SENSORS部分包括用来循线的传感器、距离传感器等,传感器由自定义的Sensor controller控制,Nios II CPU可以通过Sensor controller 上的 Avalon MM Slave接口访问Sensor controller,获取传感器数据。

       SDRAM、步进电机、机械臂、RF通讯模块分别通过各自的Controller挂接在AVALON总线上,作为外扩设备,完成相应的功能:SDRAM作为存储器为程序的运行提供所需空间,Step Motor为机器人移动提供动力,Mechanical Arm 是机器人完成取书的主要部件,RF Front-end在Nios II 控制下完成与上位机通信;

       GRAPHIC PROCESSING ACCELERATOR(图像处理加速器)包括有C2H工具生成的硬件加速模块和自定义图像处理逻辑,用于对图像处理进行加速。

4.3 工作流程图

 

                 图 9    工作流程图                          

 

 

       

(Revision: 7 / 2010-08-29 22:34:46)

5. 设计方法 (Final Project Paper)

5.1 无线:

         系统的无线功能主要是通过射频前端NRF24L01来实现的,其传输速度可以达到2Mbps,足以完成系统所需的信息交互。
 
       NRF24L01采用的是spi通信协议,为此我们使用了SOPC builderAltera spi核心和两个pio核。这样通过配置和读取Altera spi核心中的寄存器的信息,CPU就可以和无线模块进行交互了。
 
图 10   spi模块
 
       实现了CPU与无线模块的交互后,CPU就可以根据NRF24L01支持的命令,通过spi协议来配置无线模块的各种寄存器,从而使得无线模块进入合理的工作状态。此外我们启用了无线模块的自动应答、动态载荷、以及应答载荷等三项特殊功能。其中配置自动应答功能能够更好的保证信息安全的传输;而配置动态载荷和应答载荷功能则能让系统在收到上位机指令后能够借用应答信号返回重要的debug信息,便于系统调试。
 

5.2 图像获取模块

1.      模块结构图
 
 
 
图 11  图像获取模块
 
我们这个模块是在官方提供的DE2_70_TV模块上完成的,对官方模块做了大范围的修改。首先由于国内主要采用的是P制摄像头,而官方模块用的是N制摄像头,我们将其改为P制。另外,考虑到SSRAM的读写速度比SDRAM要快,为保证书本定位与识别的实时性,我们将摄像头的数据存储到SSRAM中进行处理,而不是原先的SDRAM中。由于书本识别时要求将图像完全存下来,我们将原先使用FIFO实现的动态影像传输转换为静态图像摄取。且在各个细节如图像获取的像素范围、存储的方法等都进行了大量的修改,使得整个模块能够完全适应书本定位于识别的要求。
 
2.      自定义仲裁器结构
       考虑到书本定位与识别的实时性要求,我们使用了自定义外设来对摄像头摄取的图像进行获取,但这样就引发了一个问题,由于NIOS II也需要对SSRAM进行访问,两个master一个slave,如何解决访问冲突?我们自定义了一个仲裁器,也可以当作是一个简单的总线结构,如下图所示。由NIOS II软核给出仲裁信号,以确定是哪一个master目前拥有对SSRAM的访问控制权限。
 
图 12   自定义仲裁结构
 
       在实际进行测试时,我们发现NIOS II软核总是无法正确读出SSRAM里存储的数据。后来经过仔细探索,发现由于三态门的延时,导致了两者的相位不匹配,不能满足建立时间与保持时间的要求,于是我们把NIOS II软核给到SSRAM芯片的时钟进行-140度的相移,将两者的时序要求进行匹配,这样就把这个问题解决了。
 

 

5.3 图像识别:

图书馆机器人取书过程中的一个重要的环节是对书本的识别。当机器人移动到了目标书架前方时,机器人即通过摄像头读取图像,并且开始识别书本。
为了要对书本进行识别,我们在书本的书脊上贴上了画有二维码的白纸。这样在整个白色区域上二维码、书本间的书缝,投射在书脊上的激光点都清晰可见。机器人主要识别的正是这三种信息:激光点、书缝和二维码。
一套完整的识别过程是这样进行的:
1.       图像获取
a)        CPU配置自定义的SSRAM arbiter,使其允许自定义的图像获取模块访问SSRAM
b)        CPU向自定义的图像获取模块发送一个脉冲,图像获取模块即读取一幅图像,将其转换为灰度图,并且通过其DMA功能将图像存入SSRAM中。
c)        CPU配置自定义的SSRAM arbiter,收回图像获取模块对SSRAM的访问权限。
2.       图像预处理
a)        图像预处理主要遍历SSRAM中图像的指定区域(即除去图像边框后的区域)中的像素信息,求出图像中这一区域内像素亮度的平均值、最小值和最大值。
b)        由于这一预处理过程经常用到,所以这一处理步骤已经采用C2H实现了硬件加速。
3.       查找激光点
a)        根据预设的比例,利用预处理得到的亮度最大值和亮度平均值计算出一个阈值。
b)        在指定区域中从左向右逐列从上到下查找像素。
c)        当发现亮度超过阈值的像素后即计算该像素点及其下方7个像素的平均亮度,如果这个平均亮度同样高于阈值,则认为发现了一个较亮区域,而现在扫描到的正是这个亮域的左边界。(此时还不能确定其为激光点,因为各种反光和环境中的不均匀光照也是有一定可能满足这个要求的。)
d)        在图像上向右跳跃一个指定的间隔后从右向左逐列扫描,如果也发现了亮域并且这个亮域横坐标与刚才发现的亮域的横坐标的差在540个像素之间则认为发现了激光点,并且此时正位于这个激光点的右边界上。
e)        计算激光点中心的横坐标。存入lasers数组中。
f)         继续执行c),d),e)直到到达了指定区域的右边界。
4.       二值化
a)        根据预处理中求出的最小值和平均值按照预先设定的比例求出标准二值化阈值。
b)        在制定区域中,根据二值化阈值和预先设定的二值化阈值变化率,利用动态变化的阈值对各像素点进行二值化。(这主要是用来修正摄像头斜视带来的图像亮度变化)
5.       识别书缝
a)        在二值化后的指定区域的上下两边界处各取一条高度为50的横条。
b)        自左向右扫描上边界处的条带,判断每一列中黑点的数目,如果黑点的数目大于15个,即认为找到了黑色区域的左边界,继续扫描找到黑色区域的右边界,求出黑色区域中心的横坐标。
c)        在靠近下边界的条带中的对应位置附近的一个宽度内查找黑色区域,如果也能找到黑色区域,则认为找到了黑缝,计算出黑缝中心。存入slits数组。
d)        继续执行b) c)两步直到到达了指定区域右边界。
6.       识别二维码
根据识别出的书缝,在相邻两个书缝标定的区域中识别二维码。这一步骤在后文单独说明。
 

 

5.4 二维码识别

在给定的两条书缝之间识别书本的二维码信息。作为演示Demo,同时考虑到二维码信息量较大,前景比较广阔的特点,我们采用了简易二维码作为书本的标识。简易二维码示意图如下:
图 13   简易二维码
 
外面是一个黑色的方框,内部在间隔一个与黑框等宽的白框之后是二维码的码值。每两条书缝之间会有一本书,识别出二维码就知道书本的信息了。算法思路是在相邻的两条书缝中间位置取附近三列像素点进行扫描,利用黑框内部是白框这一特点,确定出黑框上下边缘,然后在上下边缘中点附近取三行像素点进行扫描,得到左右边界,再利用黑白框基本等宽,可以得到二维码码值区域的边缘,经过简单的几何运算可以得到每个码值对应的小方块的位置,取方块中心小块判断黑白,进而识别出二维码。这种算法复杂度很低,在不用硬件加速的情况下依然可以很快的完成识别。并且对于图像的左右或上下拉伸变形、轻微旋转、随机噪点具有良好的抑制作用,误码率很低。
 
 

5.5 机械控制

本设计中,机器人有两个步进电机、四个推杆电机和一个舵机需要控制,这些控制都通过自制的PWM模块实现。下图是控制舵机和电动推杆的PWM模块:
 
图 14   PWM模块
 

        Nios II CPU通过pio配置PWM模块的工作状态,调节PWM模块的脉冲周期(freq_ctrl)、占空比(speed)参数。PWM模块根据输入信号,对时钟进行分频,得到所需频率和占空比的脉冲并输出,输出的脉冲作为自制的驱动电路板的控制信号,控制电机的运动速度(电动推杆的运动速度由占空比决定,步进电机的运动速度由频率决定)和舵机的角度。
 

5.6 上位机软件

图 15   上位机软件界面
 

        在设计硬件系统的同时,我们在上位机端使用Qt编写了如上图所示的软件用于发送信息。一个拥有良好用户界面、使用简单的程序使得图书馆机器人有了更好的人机交互系统。

        软件上半部分是从数据库中读取出来的图书信息,下半部分有着对这本书的详细介绍。当读者按下取书按钮时,PC机连接的无线模块发出取书指令以及要取的书本的信息。机器人接收到指令后前往取书。最后,机器人返回取书的结果信息在上位机上进行显示。

(Revision: 3 / 2010-08-29 22:42:04)

6. 设计特点 (Preliminary Paper)

 1、实现了较大型的机械平台与具有强大处理能力的FPGA的完美结合,充分利用各自的优点,使得FPGA强大的处理能力能够在图像处理、识别及精确定位等方面充分的体现出来,机器人也能够最大限度的发挥在自动取书时方便快捷的优势。

2、平台具有极大的可扩展性,由于实现了接受上位机命令、准确达到指定位置、搜寻指定目标、取出指定目标等功能,该平台可以应用于很多其他类似的领域,不仅仅限于图书馆取书机器人。只需要在机器人上搭载相应的功能模块,就可以充分扩展,实现如物品整理、火灾防治等功能。此种机器人可以在存储仓库等人流量较小、需要大量自动存取物品的场合得到较为广泛的应用。

3、通过NIOS II IDE的C2H功能实现自定义指令,实现书本识别关键算法的硬件化,提高处理速度,保证识别的实时性要求。

4、自定义图像获取外设。将图像获取模块硬件化,把读入的数据存储在SSRAM中,相比于使用NIOS II进行摄像头数据的读取,速度得到了很大的提高。

5、自定义了仲裁器,使得NIOS软核与自定义图像获取的硬件外设这两个master都能够对SSRAM进行访问。

6、提出了基于激光和模式识别的快速定位算法,通过对定位算法的硬件加速优化,能够很好地对书本进行定位与识别。此算法对于类似应用具有推广价值。

7、实现了与上位机的无线通信,便于自动控制,使得多个机器人大批量的自动存取物品成为可能。

8、使用Nios II处理器,使控制系统具有体积小,便携性好、功耗低的特点,从而适合搭载在机器人平台上进行工作,不会影响到机器人平台的整体重量、体积、功耗等指标。

(Revision: 7 / 2010-08-28 23:39:43)

7. 总结 (Final Project Paper)

        我们设计的作品是一个图书馆自动取书机器人,使用DE2_70开发板为硬件基础、NIOS II CPU为控制核心,辅以精确的定位识别算法,能够较好的实现发送指令——前往取书——返回原处的功能。

        在整个SOPC系统上,我们使用无线进行指令的发送,完成上位机与机器人系统的通信。我们将图像采集模块做成硬件逻辑,同时自定义了一个仲裁器,使得NIOS系统与图像采集模块均能对SSRAM进行访问。在书本定位及识别上,我们使用了激光进行书本的定位,提出了激光定位算法以及书本识别算法,同时使用C2H功能将这部分代码进行硬件化,提高处理速度。此作品的最大亮点是较好地实现了机械控制、无线通讯、图像识别以及SOPC技术的有机结合
 
在设计中,我们使用了Altera公司开发的SPOC Builder软件,其简明的界面、实用的功能、稳定的环境以及快速的系统集成能力为我们的开发提供了极大 的帮助,我们能够很方便的选取需要的外设,并将其集成到系统上来,做出自己的系统设计。在设计过程中,我们学到了很多NIOS的应用,这些应用大大提高了设计的效率。
 
 在这次比赛中我们开阔了视野,掌握了应用NIOS软核的设计流程,熟悉了SOPC的设计方法,同时在比赛中我们也极大地提高了自身的创新能力。

         最后,感谢Altera公司及友晶科技为我们提供的这次比赛机会,感谢刘勇攀老师的辛勤指导,感谢清华大学创新社的鼎力支持。

(Revision: 2 / 2010-08-28 23:37:28)