当前位置:文档之家› Java Android程序跨平台通讯方案分析

Java Android程序跨平台通讯方案分析

大连理工大学城市学院本科生毕业设计(论文)Java Android程序跨平台通讯方案分析

总计毕业设计(论文)68 页

表格 1 表

插图18 幅

摘要

本人从2012年11月至今在沈阳新松机器人自动化股份有限公司-移动智能机器人事业部实习,从事AGV自动引导车(Automated Guided Vehicle)车体程序的开发及其操控程序的开发(JA V A-Android端无线遥控程序)。

近年来,Android这个名词渐渐的走进了人们的视线,由Google公司研发,基于JA V A语言及Linux操作系统,方便的开源性,它已被越来越多的电子厂商尤其是手机厂商使用,目前市场上绝大多数的手机和平板电脑都采用这种操作系统。我在公司所从事的项目就是将AGV的控制及监控功能做成Java电脑端应用程序和Android手机端的应用程序来实现对AGV车体的远程监视及操控。

本论文通过对本人近段时间来的实习经历,讨论Java语言在跨平台能力上的优势和可行性,以及Android系统在网络通讯及自动化操控上的能力、优势及可行性。总结出一套JA V A-Android端跨平台通讯的方案。

关键词:Java;Android;跨平台通讯;设计方案

Abstract

I from 2012 since November internship in Shenyang SIASUN Robot & Automation Limited by Share Ltd - Mobile Intelligent Robot division, engaged in AGV automatic guided vehicle (Automated Guided Vehicle) development program and control program of the body (JA V A-Android terminal wireless remote control program).

In recent years, the term Android gradually into people's vision, developed by Google company, JA V A language and Linux operating system based on open source, convenient, it has been the electronic manufacturers more and more especially mobile phone manufacturers, currently on the market of mobile phone and tablet computer most of the operating system. I am the company engaged in the project is to control and monitoring function of AGV into the application Java computer application program and Android mobile phone terminal to realize the remote monitoring and control for AGV vehicle.

In this paper I nearly time to practice experience, discuss the advantage of the Java language and the feasibility in the cross platform ability, ability, the feasibility and advantage of Android in control system and network communication and automation. To summarize a set of JA V A-Android cross-platform communication scheme.

Key Words: Java; Android; Cross-platform communication; design

目录

第1章引言 (1)

1.1研究现状 (1)

1.2研究目的 (2)

1.3研究思路和内容 (6)

第2章系统开发的关键技术研究 (9)

2.1开发环境的使用 (9)

2.2关于Windows系统下Java运行环境的搭建及Android程序开发包的布置和使用 (10)

第3章程序的设计 (13)

3.1跨平台方案 (13)

3.1.1跨平台方案分析 (13)

3.2需求分析 (13)

3.2.1 系统功能分析 (13)

3.2.2 系统设计分析 (15)

3.3网络协议的分析 (18)

3.3.1 网络传输方式的选择 (18)

3.3.2 网络协议的制定 (18)

3.4详细设计 (21)

3.4.1 系统模块介绍 (21)

第4章程序的实现和效果分析 (23)

4.1程序功能实现 (23)

4.1.1网络通信模块: (23)

4.1.2数据解析模块: (30)

4.1.3功能实现模块: (38)

4.2功能分析改善 (56)

4.2.1问题分析: (57)

4.2.2问题改善: (58)

第5章现场测试 (60)

5.1自身调试与AGV连调 (60)

5.1.1自身调试 (60)

5.1.2与AGV连调 (62)

5.2完善内容 (62)

第6章总结 (65)

参考文献 (67)

致谢 (68)

第1章引言

1.1 研究现状

本人从2012年11月至今在沈阳新松机器人自动化股份有限公司-智能移动机器人事业部实习,从事AGV自动引导车(Automated Guided Vehicle)车体程序的研发及其远程操控终端的研发(Java-Android端及Java-PC端无线检测遥控程序,程序分为PC版及Android版两个版本,功能相同,但运行的平台不同)。

对于目前的研究现状,首先我想简单的介绍一下AGV自动引导车(以下简称为AGV)的概念:

无人搬运车(Automated Guided Vehicle,简称AGV),指装备有电磁或光学等自动导引装置,能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车,工业应用中不需驾驶员的搬运车,以可充电之蓄电池为其动力来源。一般可透过电脑来控制其行进路线以及行为,或利用电磁轨道(electromagnetic path-following system)来设立其行进路线,电磁轨道黏贴於地板上,无人搬运车则依循电磁轨道所带来的讯息进行移动与动作。

从20世纪80年代以来,自动导引运输车(AGV)系统已经发展成为生产物流系统中最大的专业分支之一,并出现产业化发展的趋势,成为现代化企业自动化装备不可缺少的重要组成部分。在欧、美等发达国家,发展最为迅速,应用最为广泛;在亚洲的日本和韩国,也得到迅猛的发展和应用,尤其是在日本,产品规格、品种、技术水平、装备数量

及自动化程度等方面较为丰富,已经达到标准化、系列化、流水线生产的程度。在我国,随着物流系统的迅速发展,AGV的应用范围也在不断扩展,如何能够开发出能够满足用户各方面需求(功能、价格、质量)的AGV系统技术是未来我们必须面对的现实问题。

通过上边的说明,我们可以意识到,随着工业化水平以及科技技术的提高,相比于国外的厂商,中国的智能机器人厂商凭借着价格优势以及不输于国外的质量保障,已经被越来越多的国内外企业所认可,就拿我们公司而言,每年智能移动机器人事业部一个部门的销售额就在一个亿以上,去年(2012)年更是达到了1.4亿(我所在的这个部门共有115名员工,2012年统计的数据显示,部门每人每年的销售额在110万到130万之间,人均销售额非常大),客户遍及国内各地如蒙牛乳业、XX卷烟厂、北京现代、上海通用,当然也包括其他国家如美国、加拿大、韩国、印度等等(后文中会有介绍),随着机器人技术的日益成熟,越来越多的工厂开始采用AGV技术,其市场前景良好。然而,中国AGV相对于发达国家诸如美国、日本的技术还有很多需要学习和追赶的地方,要做的还有很多。

1.2 研究目的

一般来说,每台AGV上都存在有一个可以监测车体信息以及修改车体系统参数的控制器,通过一个屏幕可以进行对AGV车体各项参数的观察及修改,与此同时车体上还存在一个8方向的物理手控盒(像是玩具遥控车的遥控器),用来对车体进行简单的有线控制。本人在公司接触的第一个项目是在PC端以及Java-Android手机系统上编制出一个可以完全替代于车体控制器及物理手控盒的程序,从而利用移动终端实现对AGV

车体参数的远程修改、监测及遥控。

每个应用AGV的厂区都会随车加装控制台,AGV引导车的工作任务是通过控制台远程下达的,由工作人员将任务指令通过无线AP电台发送到指定IP的AGV上,AGV就会按照指定任务来进行工作[1]。但对于车体的大部分参数,比如导航传感器参数,PRS雷达监测,伺服驱动器信息等等这些是无法通过控制台获取的,在我所负责的项目完成之前,这些参数只能通过AGV车体上的屏幕来进行查看和修改,虽然在正常使用过程中这些参数的使用频率比较少,但如果车体发生故障需要排查的时候,这些数据是必不可少的,工作人员也必须靠近AGV来查看这些参数。然而,在某些情况下,车体在出现故障或事件报错时,人是无法正常靠近AGV的,下边的例子会说明。

在我所负责的项目完成之后,公司第一个将远程操控技术用于实践的项目是国家电网-通辽某电厂的电力巡检AGV(图1-1)

图1-1 电力巡检AGV 由于是环境比较特殊的高压电厂,人工进入厂区查看设备可能会有

触电危险,所以AGV就代替人进入厂区,通过摄像头将图像数据传回控制室,工作人员就可以在控制室看到厂区设备的运转情况。类似这样的项目,还有很多,当人无法正常靠近AGV的时候,远程方案就会变得比较重要。

公司运用到远程操控的第二个项目,是一种小型的货架搬运机器人(图1-2)

图1-2 货架搬运AGV

他的长度也只有1.5米左右,高度1米左右,在车体上方有一台举升机,通过它将货架托起,移至另一地点后放下,截至此论文结文时,正在杭州参加工业博览会,产品大体上成型,还需进一步完善,销售目标是像京东,阿里巴巴等大型电商or物流企业。虽然功能相对较简单,但是问题在于这样的小型AGV在一个厂区的使用量是非常大的,通常一套

系统会包含上百台这样的小车,同时在厂区移动,搬运货物。这么多的AGV同时在一个厂区工作,最大的难点有两个,一个是怎样合理调度,安排任务,使其不会发生线路上的冲突,再有一个就是一旦某台车出现故障,现场工作人员很难一下子找到发生故障的那台车对其进行故障分析,这样势必会影响整个厂区的工作(牵一发而动全身,一台车出现故障在某段线路上停止了运行,其他车就无法通过这条线路,造成整个厂区工作的停滞)。远程监控就可以解决这样的问题,之前提到过每个厂区都有控制台,用来给AGV下任务,虽然它不能排查车体的问题,但它可以将发生错误的那台车报告给远程终端,远程终端就可以来查看这台发生错误的AGV哪里出了问题。

对于以上两个例子,我们可以了解到远程终端的便捷和重要性,它与之前提到过的控制台不同,更偏向于解决问题,为AGV现场的运行提供了保障。而且对于未来民用,工业乃至军工业来说,远程操控所带来的效率及体验感将会是重要的发展要求和趋势。

1.3 研究思路和内容

我在公司的任务是开发出一套AGV车体参数远程操控程序,首先,对于系统的选择上,Windows系统的版本是必不可少的。毕竟,AGV车体本身的程序是在WindowsCE平台下运行的,且控制台方面的软件也是在WindowsXP系统下运行,开发出一套基于Windows系统的版本并将其安装在控制台主机上无疑是最好的选择。然而,在绝大多数情况下,控制台与AGV是有距离的,将查看程序安装在控制台上,虽然可以很方便的查看到车体的各项参数,但如果想要远程控制AGV,想让其行走到某一个点或某一个区域内时,就很难做到精确,毕竟人不在车的旁边,

走多了或是走少了,哪怕是几厘米的偏差,对于车体上导航传感器、地标传感器的影响都是非常大的,会影响车体的运行,而人也无法抱着一台电脑站在AGV面前遥控它,于是,将这套查看程序移植到Android平台的手机上,让工作人员可以拿着轻便的手机在AGV的附近观察、遥控AGV也成为了一种解决方案。

选用Android平台具有较大的优势。首先,Android作为一个当今非常流行的手机平台,其市场占有率是非常大的,相对于苹果公司的IOS 平台,Android平台在用户基数,编程的简易性,对不同手机的兼容性等等方面都要更胜一筹[2]。如果选择IOS平台,那么首先得需要学习这个平台的编程语言Object C,非开源的性质导致了要想使用编程出来的软件必须通过官方的App Store商店下载,要知道App Store对于软件上架的审核是有非常严格的要求的,如果软件不能上架,就必须在每台AGV 发货前都为其配置一台装有此软件的苹果设备,无论从成本上考虑还是对于今后软件升级等问题的担忧,IOS平台都不及Android平台。反观Android平台,相比于IOS,就有了很多个值得选择的方面,首先,Android 平台作为开源平台且编程语言为Java语言,在程序的编制工序以及发布工序都比较简便,用户只需要将程序Release好的安装包放入手机存储上安装,便可运行,如需版本升级,将升级版的安装包替换掉原先的安装包,再次进行安装就可以了,且Android程序在编程之初就会让编程者选择此程序兼容的Android版本,比如我编制的这个程序的使用版本为Android2.3至Android4.1,几乎涵盖了目前市面上所有的Android版本,也就是说Android系统的手机,其系统版本只要在2.3-4.1之间,都可以进行安装,大大方便了用户[3]。IOS平台的使用者只有苹果的iPhone系列、iPad系列以及iTouch系列产品,望而生畏的高价格一直是其硬伤,

然而Android则不同,目前世界上大部分手机厂商都选择Android系统,手机的价格也是从低到高,基本上能满足各类人群的消费能力,在成本上的优势使其更受到我们的青睐。所以当时我们会议最终决定在Android 平台上移植这套远程操控程序。

再来说一下对于编程语言的选择,由于涉及到嵌入式及硬件,在我们公司,AGV车体程序以及控制台程序都由C++来编写,但对于我要开发的这套远程操控程序,需要同时在Windows以及Android两个操作平台上运行,使用C++语言是行不通的,Android平台应用程序的开发语言为Java,作为相对于C++语言而言的新兴编程语言,其优势在于非常强大的跨平台兼容性,同样作为面向对象的操作语言,JA V A相比C#而言,在多种平台上的表现要更好,所以我就使用了JA V A语言完成了这套程序的开发工作。

而同样,在选择JA V A的同时,问题也随之而来。

AGV车体程序本身是基于C++语言编写的,运行车体程序的车体控制器(VCU)的操作平台为WindowsCE,所以如果使用JA V A语言及开发Android平台的程序必定会涉及跨语言、跨平台的问题。由此,本论文就在讨论Java语言在跨平台能力上的优势和可行性,以及Android系统在网络通讯及自动化操控上的能力、优势及可行性。通过制定远程协议-收发数据包-打包、解包数据-分析数据等一系列步骤总结出JA V A-Android端及JA V A-PC端跨平台通讯的方案。

第2章系统开发的关键技术研究

按公司要求,AGV车体程序为C++语言编写,Microsoft Visual Studio开发平台。Android端程序为JA V A语言编写,Eclipse开发平台(需要安装Android开发包)。

2.1 开发环境的使用

Microsoft Visual Studio:

?快速的应用程序开发

?高效的团队协作

?突破性的用户体验

?提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序[4]。

作为AGV车体程序的开发环境,公司在成立早期就构建一套完整的AGV系统,对于不同型号的VCU(核心处理器),公司先

后使用过EVC4.0、VC6.0、VS2005、VS2008几个版本,目前主

流VCU采用的VS2005版本编译的车体程序。框架非常大,需要

从中找到可以调用的接口,向AGV发送指令。

Eclipse:

?Eclipse的插件机制是轻型软件组件化架构。插件架构能支持将任意的拓展加入到现有的环境中。

?目前使用最多的JA V A开发环境。

本人使用的Eclipse版本为3.7,在编制PC端程序的时候可以直接编制,当编制Android端程序的时候需要加载

android-sdk-windows开发包,虽然这两个平台上的程序在界面布

局上大同小异,但JA V A应用程序和Android应用程序的差别还

是不小的,在下文中会有对比。

2.2 关于Windows系统下Java运行环境的搭建及Android程序开发包的布置和使用

Windows系统在没有搭建Java运行环境之前是无法运行Java应用程序的,所以在编制Java应用程序之前,需要在Windows平台下安装一些必须用到的工具。

首先是JDK(Java Development Kit),它是Sun Microsystems针对Java 开发人员发布的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK是整个Java的核心,包括Java运行环境、Java工具和Java基础类库。从JDK 5.0开始,提供了泛型等非常实用的功能,其版本也在不断更新,运行效率得到了提高。本程序所用到的JDK版本为jdk-7u5。

之后是开发平台Eclipse,上文中已经阐述过,不再过多讲解。

SDK(Software Development Kit,软件开发工具包)被软件开发工程师用于为特定软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。本程序所用到的为Android SDK,就是Android专属的软件开发工具包。在Android中,它为开发者提供了库文件及其他开发所用到的工具。可以简单理解为开发工具包集合,是整体开发中所用

到的工具包。Android SDK包含两个重要的模块:Android SDK Manager 和Android Virtual Device Manager。如图2-1:

图2-1 Android SDK Manager 模块

上图为Android SDK中的Android SDK Manager 模块,它为整个Android开发工具包提供了几乎现今所有的Android程序版本,本程序对于Android版本的支持范围为2.3至4.1版本,需要所以选择相应的版本包下载,程序才可以支持我所定位的Android版本。

图2-2 Android Virtual Device Manager 模块

上图(图2-2)为Android SDK中的Android Virtual Device Manager 模块,它为开发工具包提供了测试用Android模拟器,当程序以模拟器运行的时候,就会根据我所选择的模拟器打开相应的模拟界面,就如同在电脑屏幕上模拟出一个手机屏幕来进行测试。图中可以看到有三项选项,是我在测试程序时自行建立的模拟器,第一个为屏幕尺寸为10寸的平板电脑模拟器,Android版本为2.2,第二个为Android 4.0.3版本的模拟器,第三个为4.1版本。如果需要其他版本的模拟器可以自行下载并添加。

以上为程序编制前所需要准备的内容,对于这些前期工作,我想说,相比于VS而言Eclipse的环境搭建非常之繁琐,其中的某些需要网络下载的组件或开发包,由于其下载服务器都处在国外,正常在国内下载,如果不使用代理,或网速不够的,很难下载成功,本人也是经历一波三折才将一套完整的开发环境搭建完。

第3章程序的设计

3.1跨平台方案

3.1.1跨平台方案分析

上文中提到,本程序的版本有两个:PC版本和Android版本,一个在Windows平台下运行,另一个在Android平台下运行,他们所要发送的目的地为WinCE平台,这里就涉及到跨平台通讯的问题,怎样在不同操作平台之上收发数据,并保证其可靠性,我总结出以下两点需要注意的地方:

1.必须存在良好的网络通讯环境,无论是有线还是无线,必须保

证AGV车体与远程操控程序之间可以相互Ping通。(详见3.3.1)

2.必须制定出一套完成的网络通讯接口协议,作为两个程序之间

相互传递信息的定义。(详见3.3.2)

如果满足以上两点,就达到基本的数据包收发要求,而对于数据包的格式,发送的内容,则需要通过通讯接口协议来制定[5]。

3.2 需求分析

3.2.1 系统功能分析

对于功能需求,在上文中已经简易的概括过,由于AGV车体本身的工作性质,人员无法近距离监控车体的各项参数,也无法在远程对车体进行手动操作,本程序的设计主要目的就在于实现上边两个功能,使人

对AGV的控制更方便,更直接,交互性更强。当然,除了上边两个方面之外还有一些其他的好处,比如用手机操控这种相对较新颖的方式来吸引更多的购买力,优化公司的形象等等。

因为不同的客户对于AGV的功能需求都不尽相同,AGV的功能在正常情况下都是为客户定制的,相对的,我做的这个远程操控程序的具体内容需求也会根据客户的需求而改变,以下内容暂时按照我负责的第一个项目-“国家电网通辽电厂电力巡检AGV项目(以下简称为电力巡检项目)”的需求来分析。

首先来说明一下电力巡检项目与之前项目的差别,文章开头介绍了AGV运行的几种导航模式,最常见的导航模式为磁带导

引(Magnetic Tape Guidance),我们简称磁导,将带磁性的条带铺设成线路,AGV通过自身的导航传感器检测磁条相对于自身的偏移量来前进并实时修正自己的车体姿态(也就是判断自己走没走歪)。而电力巡检

这个项目所使用的导航方式并非磁导,而是惯性导

航(Inertial Navigation),将原先的磁条废弃,用一种小型的磁铁(纽

扣般大小)替代,在预先设定好的路段上每隔一定的距离放置一枚,AGV 向前行进到磁铁位置时通过导航传感器检测磁铁的相对位置,计算出自

身的偏移量,并在之后的行驶过程中慢慢调整车体姿态,到下一个磁铁

的时候再次重复上边的步骤,两个磁铁之间并没有导航磁条,车体仅仅

靠盲走行进。这种导航方式相对于之前的磁导,优点在于节省了大量的

地面布置工作。而它的问题在于我们在施工中不能保证每个磁铁放置的

位置正好在行进路线的绝对直线上,出现1到2厘米的偏差都很正常,

而且我们也不能保证每块小磁铁的磁场强弱都相等,所以,在这个应用

到惯性导航的电力巡检项目中,我们必须对每一个磁铁的点进行测试校

对,来确保导航传感器可以通过磁铁获取正确的偏移量,确保车体在运行过程中能够自动纠正自身的偏斜,让它走直线。那么,当车体到达每个点时,我们必须要查看导航传感器的偏移量信号,以及车体在运行中的实时惯导角度,以上这两个信息就成为了项目的定制需求之一。

像以上的例子还有很多,不在此一一列举,总结而言就是,对于不同的客户,都会有不同的功能需求,我所开发的程序会根据客户的需求相应增减功能。

3.2.2 系统设计分析

对于本人所所制作的这款程序,大体上来说需要满足三个方面的要求,即网络通信,数据包解析,自身功能实现。对于这三个要求,在程序中有相应的模块,与功能相对应的函数、类分别存放在这三个模块(或者.java文件)中,Java语言习惯用Package(包)这个概念,所以将这三个模块分别放入了不同的Package中。当然除了程序功能的实现之外,每个界面的布局也单独分离出了其布局文件,存放在布局Package中,下面这张图可以看出其各个模块所存放的位置。

图3-1 PC端程序的结构

上图(图3-1)为PC端程序的结构,根据功能分为4个Package,其中第一个(com.siasun.controller)包中包含各个页面功能的实现代码,第二个(com.siasun.controller.service)包中包含两项比较重要的功能,其

相关主题
文本预览
相关文档 最新文档