《工、{ 挖制计算机/2017年第30卷第1期 49 二维码技术在AGV定位中的应用研究 Application of Two Dimensional Technology in AGV Positioning Research 周传宏 柳新昌 齐 飞 (上海市机器人与智能制造重点实验室,上海大学,上海200071) 摘要:随着移动互联网的发展,二维码技术也得到了广泛的应用,它是在一维条码技术的基础上发展起来的一门集信 息编码、信息传递、图像处理、数据加密等技术于一体的综合性技术。借助二维码具有的以上功能,应用到AGV的定位中, 从而达到快速定位,实现低成本的消耗。 关键词:二维码.AGV,定位 Abstract:With the development of mobile Internet,two—dimensional code technology has also been widely used I、●●● t is a ●●一comprehensive technology based on one dimensional bar code technology,which is developed on the basis of a set of in— formation coding.information transmission,image processing and data encryption and SO on.This paper applies these QR code S advantages to AGV position.It can generate position quickly and decrease cost Keywords:QR code,AGV,position 工 中所用的自动导航车(Automatic Guided Vehicle, 1 定位设计 AGV)是通过计算机控制,达到无人驾驶以及作业的自动化搬运 本论文的设计思路是:通过二维码扫描模块把张贴在地 车辆。 。fj前人多数的AGV采用的定位方式如RFID、电磁感应 的二维码的坐标信息扫描后进过一定的算法处理把其信息发送 技术、机器视觉技术和激光技术进行定位。虽然这些定位技术已 给AGV的控制模块,然后控制模块再进一步控制AGV下一步 经成熟,仳 电磁感应技术更改路径困难;机器视觉定位算法复 的运行。这其中包含二维码的信息读取,AGV到二维码的距离 杂,实时性差;激光技术定位电路复杂,成本较高 。 的测量以及AGV的位姿的确定。具体的流程图如图2所示: 针对上述的定位精度与成本的问题.本文引入QR(Quick Respond Code)技术。,将定位信息存人到二维码标签中,张贴 在地面上,当AGV进过张贴■维码的区域时,通过AGV自带的 一 相机扫描并解析二维码,从而实现AGV的快速定位。QR二维码 是一种矩阵二维码符号,与其他二维码相比,QR二维码具有以下 图2 AGV定位方案流程图 一些特点:识读速度快、信息容量大、占用空间小、成本低、可靠性 AGV控制系统分为上层控制管理调度系统、本地AGV控 高等优势 图1是QR二维码的基本的结构示意图: 制系统和导航系统。它们之间的关系如图3所示: 1.f 机 n删 一I,心e A( V i^ 线J匝 Jn』 埘睫 詈 :二]二二 嘲il{ ■科 幅^ 图3系统结构图 图1 QR二维码的基本结构 本文主要研究的是QR_=:维码的在AGV定位中的应用,所 图1中每个QR码符号由名义上的正方形模块构成,组成 以需要在AGV上安装相机用于采集二维信息。 一个正方形阵列,它由编码区域和包括寻象图形、分隔符、定位 AGV的控制核心模块主要包括:运控控制模块和二维码的 图形和校正图像在内的功能组成。功能图形不能用于数据编码, 算法处理两大部分。主要负责把扫描二维码的结果进行处理后 符号的四周由空白区域包围。 控制AGV的运动。 位置探测图案(Position Detection Patfem)是定位图案, 二维码的读写模块:QR二维码标签按照行列排布在地表, 用于标记二维码的矩形大小。这三个定位图案有白边叫位置探 标签中存储有位置信息,通过读写模块获取当前信息。QR_二维 测图形分隔符(Separators for Position Detection Pa ̄erns)。 码成本低,读写速度快,可粘贴足够多,能做到信息蹙足,够大且 三个位置探测图案与右下角的非探测图案构成一个正方形从左 有冗余。若AGV在运行过程中漏扫二维码,可在附近 刮f[I关 上角到右上角的顺序依次为:O,1,2,3。 信息的二维码,达到系统识别速度和精度的要求。 扫描二维码:由于QR码在我国使用非常广泛,闶此按照 \、 ● ●●,二维码技术在AGV定位中的应用研究 QR码标准生成二维码。生成QR码的方法很多,既可以依据其 同际标准ISO/lEC18004设计实现生成算法,也可以利用各种 工具程序,如快拍二维码、QR精灵 等,或者采用在线生成的 方式,如利用Google Chad API 或者采用开源的第三方类库 实现。 2)服务器向客户端响应一个SYN K,并对SYN J进行确 认ACK J+1; 3)客户端再想服务器发一个确认ACK K+1。 图7是三次握手的示意图: 算法处理:在二维码的扫描过程中,在读取二维码中所包含 —■■一 的位置信息的同时还要确定AGV相对于二维码的位置。 1.1=:维码的信息获取0 为保证QR码生成模 块与系统的有机整合,同 时满足提高系统开发效率 和批量生成QR码的目 标,本系统采用开源类库 ZXing生产QR码 . ZXing 8全名“Zebra l Crossing”,是・个啦用非 Simple:X=129 78.Y=78 89 常广泛的开源一、二 维码 图4二维码定位原理 图像处理类库。 此时利用ZXing在扫描二维码时对二维码的定位原理如图 4所示。 在扫描二维码的同时,分别取出二维码四个顶点在像素平 面内的坐标值,如图5所示。0一一…——一~.,. 其中为二维码在成像平面内 的像素坐标值。 P(Ll,V) 1.2 AGV与上位机的通信机制 在AGV扫描到二维码的时 候,需要把此时AGV扫描二维码..., 的信息发送到上位机,然后进过一 图5像平面坐标系 系列的算法把处理后的信息再发 送给AGV,这其中需要进行信息的传递,由于AGV不断地在运 动,所以只能通过无线信息进行传输。本论文采用的是无线刚通 讯,即在AGV与L位机之间通过无线信号进行传输。本文在采 用的通讯协议足:基于TCP 议的Socket通信原理。 服务器端首先声明一个ServerSocket对象并且指定端口 号,然后调用Serversocket的accept()方法接收客户端的数据。accept()方法在没有数据进行接收的处于堵寒状态。(Socket- sockel_serversocket.accept()),一旦接收到数据,通过input・ stream读取接收的数据。 客户端创建一个Socket对象,指定服务器端的IP地址和 端口号(Socketsocket=newSocket(”172 168.10.108”,8080);),通过inputstream读取数据,获取服务器发出的数据(Output— Streamoutputstream=socket.getOutputStream()),最后将要发 送的数据写入到outputstream即可进行TCP协议的Socket数 据传输。V如图6所示。 @ o 自 豳6 Socket基本通信模型 自 在Socket中的TCP的三次握手建立连接,TCP建立连接 要进行“三次握手”,即交换三个分组。大致流程如下: 1)客厂1端向服务器发送一个SYN J: n t c ~o被ckctt listen ~ ‘t: ̄4tJ 丹l :娴 ; SYN K,ACK~~~~一 J+1一 : & ,c…cop‘…t:菌 ) ……“删’ :二 R+I ~~~~ 一 }j } I fI 图7 Socket中发送的TCP三次握手 从图7中可以看出,当客户端调用connect时,触发了连接 请求,向服务器发送了SYN J包,这时connect进入阻塞状态; 服务器监听到连接请求,即收到SYN J包,调用Accept函数接 收请求向客户端发送SYN K,ACK J+1,这时Accept进入阻 塞状态;客户端收到服务器的SYN K,ACK J+1之后,这时 connect返回,并对SYN K进行确认;服务器收到ACK K+I 时。Accept返回,至此三次握手完毕,连接建立。 以下分别为上位机与AGV客户端的通讯测试代码: 样!usr/bin/python #一 一coding:utf一8一 一 import socket #创建服务器端 tcpconn=socket socket (family=socket AF_INET。type=socket. SOCK—STREAM) tcpconn bind(( 1 27.0 0。1 ,9600)) tcpconn.1isten(20)抖等待 while True: cinfo.caddr=fcpconn.accept()#把ip分解给ci,把port分解给 cp print Getaconnectionfrom%s %caddr[01 data=cinfo recv(1 024) print”Receive data:%s”%data cinfo.send( echo: +data) cinfo close() AGV客户端代码: # ̄usr/bin/python #一 一coding:utf一8一 一 群创建客户端程序 import socket while True: 舟第一步:创建一个socket对象,以连接服务器 clientsocket =socket.socket (socket.AF_INET,socket. SOCK—STREAM) #第二步:连接服务器 clientsocket connect(( 192 168.1.215 ,9600)) 第三步:发送请求 clientsocket.send( hello server ) dafa=cIlents0cket recv(1 024) print Reply fr0m server%s %data 1.3确定二维码的朝向 确定二维码朝向的流程图如图8所示。 i广_:■ H 墼鳖H鍪■]厂——-_] r—至—查—塑_ H H j]厂二—一]厂——] 图8确定二维码位姿流程图 《工业控制计算机12017年第30卷第1期 51 =hUUU i((舱 .O O O 0 图9二维码位置1 算法的实现代码:绘制 二维码的位置,左.I二为位置0,左下 角为位置1,右 角为位置2,右I:角为佗置3。 ymb Pos OC 图11 上位机端从AGV获取的测试数据 1O g- (). mg- ().mg. 丌Ig. pO PO P0 pO (). (). 0】 0】 2】 2】 ymbolpos[1】.(0,0,255),2) ymbolpos【3】,(0.0,255),2) ymbolPos【1】.(0.0.255】.2) ymbolPos【3】.(0,0,255),2) 把对应的四个 标的横纵坐标进行相加代码在python中 把求和的结果放人一个列表中,取出其中的最小值。 2实验结果 图12 AGV客户端回应上位机端的数据 参考文献 [1】1 荣本,储汀伟, 炎.一利一视觉导航的实川删AGV没汁[J].机械工 稚学报,2002,38(1 1):135—138 [2]Rothwell C A,Zisserman A,Forsyth D A,et al Using projective invariants for constant time library indexing in model based vision[J]BMVC__991:62—70 图10对应程序读取结果 f3]S JWillis.S Helal,A Passive RFID Information Grid for Loca— 图11、图12是采用笔记本作为上位机, 示AGV与上位 机之间的通讯的示例。 tion and Proximity Sensing for the Blind User[D J.University of Florida Technical Report,Oct.2004 上述儿幅图是住实验过程【{|采集到的图像,扫描二维码时 解析出_一维码的信息和此时AGV卡}1对二维码的位姿信息,同 时,我们在程序的输出结果中包含该:二维码的四个顶点的坐标 置传递给上位机,上位机通过AGV的控制模块把信息反馈给 AGV从而控制AGV的自主导航。 3结束语 信息。当AGV在行驶的过程中,把扣描到的二维码信息实时位 一 【4]杨 ,刘艳,杜彦越父于二维们的研究和腑用I lJ]成川科技,2002, 29(11):11—13 [5]北京 动快于fi信息技术彳r限公・d快卡n二维 [EB/OL][2013—04 —12】 [6]QR梢 QRCode转化【 儿lEB/OL].[2013-04—12] [7]Google Developers Google Chart Tools: Infographics[EB/ 0L¨2013-04-12] [8]ZXing—Mult—format 1D/2D Barcode Image Processing Library 由于本系统采用的机器视觉识别二维码的方式,所以外界 的光线对扫描二维码的速度有一定的影响,可能是一些二维码 with Clients for And roid.Java—Google project Hosting[EB/ 0L].[2013—04-12] 出现漏扫的情况,从而产生定位信息的不准确的现象。 『收稿日期:2016.11.16】 (上接第48页) [5]夏 ,杜涵,刘议灭火r大相度范【};I内 数。 姨托角转换的思 参考文献 [1]斯蒂芬森.SQL入门经典[M].5版一E京:人民邮电“{版社,2011 [2]秦永元.惯性导航[M J一£京:科学}{}版利:,2006 [3 J李佩针,狄巾泉. 尔曼滤波赞。法及』£臆厢【Jj.零八…科技,2。06 (4):28—31 考[J]导弹 j航1人运载技术,2012,26(5):47—53 [6]刘蓉,刘f!jj』 于 轴加速度传感器的于势t}l别[J].计算机工程, 201 1。37(24):141—143 [7j术敬 ,4,H 存, 5献圈. 于STM32的多路电压采集研究[J]电子 ¨t界,2013(12):55—56 [4j杨丕文pq元数分析 j偏微分 ‘ [M]北片 :科学j J{版社,2009 『收稿日期:2016.11.13]