资源描述
基于嵌入式QT平台下GIS/GPS电子定位系统设计
兰见春
三明学院 物理和机电工程学院 08电子科学和技术
[摘要]:本设计关键由三星ARM9芯片s3c2440、nand flash、nor flash、sdram、群创7寸触摸屏、GPS模块等硬件组成,使用linux2.6.30.4内核,QT4.5嵌入式开发环境,mitab源码,madplay源码等等软件组成,软硬件组合搭建好嵌入式环境,实现电子地图显示和定位、语音提醒功效。含有精简、高效、调试简单特点
[关键字]:linux 嵌入式 QT mitab GPS/GIS
第一章 引言
1.1 背景意义
GPS 是英文Global Positioning System(全球定位系统)简称,GIS 是在地理学、地图学、测量学和计算机科学等学科基础上发展起来一门学科,现在市面上导航仪大部分全部是使用WinCE系统,界面很漂亮,支持很多PPC版导航软件。不过WinCE不开源,对于嵌入式开发不利。本系统采取了开源linux做为系统内核,很好支持了开发者开发,同时也支持大量开源软件。满足嵌入式开发者多种需求。
系统使用开源mitab和QT4.5,处理了电子地图图形界面要求,搭配GIS开发软件mapinfo制作基于WGS84坐标系电子地图,和sirf第三代GPS模块,共同实现了电子定位,同时调用madplay MP3播放器,实现语音播报功效。
现在中国相关GPS/GIS研究已经很火热了,相关GPS周围学科也得到快速发展,地图数据企业群雄崛起,导航软件也很出色,往嵌入式发展趋势已经很显著。Linux平台下开源导航软件极少,不过支持GPS源码和工具还是很多,像GPSd,GPSdriver等,这些开源工具软件给开发者提供很好开发思绪。同时QT4也是linux开发利器,这几年QT发展迅猛,已超越MFC,仅次和java 。
最近Android(一个以Linux为基础开放源码操作系统)操作系统很热门,大部分导航软件开发全部有往安卓发展趋势。当下苹果mac操作系统和谷歌Android系统竞争手持智能设备终端,已经趋于白热化了。
综合上述信息,使用Linux内核+QT4+mitab+mapinfo地图制作嵌入式电子地图,是一个比较精简做法,满足嵌入式平台小内存、小体积要求,程序设计过程中,采取尽可能压缩地图数据内存方法,以提升嵌入式平台反应速度和工作效率。
1.2 嵌入式发展和QT介绍
1.2.1 嵌入式发展
近几年,嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。嵌入式系统产品研制和应用已经成为中国信息化带动工业化、工业化促进信息化发展新国民经济增加点。
伴随消费家电智能化,嵌入式更显关键。像我们日常见到手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk 、机顶盒(Set Top Box)、高清电视(HDTV )、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,全部是经典嵌入式系统。据估计,伴随Internet快速发展和廉价微处理器出现,嵌入式系统将在日常生活里形成更大应用领域。
在中国,嵌入式软件发展过程中,政府已充足认识到它关键作用,并在政策、资金等方面给了大力支持。 年国家发改委、科技部、商务部联合颁布《目前优先发展高技术产业化关键领域指南》,把嵌入式软件产业作为国家发展一个关键领域。
最近几年来,中国嵌入式软件发展速度一直高于中国软件产业发展速度和全球嵌入式软件发展速度,在中国软件产业和全球嵌入式软件产业中所占比重越来越大。现在,中国嵌入式软件产业在整个软件产业中比重已经超出了三分之一强。
从至,中国嵌入式软件产业规模仍将保持快速增加态势,年均复合增加率为25.8%,到将达成3339.6亿元规模。
中国嵌入式软件产业发展面临着良好发展环境和机遇,这包含政府重视和扶植、信息产业和传统产业融合机遇、垄断局面还未形成、中国制造良好基础、自由软件运动兴起等等。
1.2.2 QT介绍
Qt是诺基亚开发一个跨平台C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级图形用户界面所需所用功效。Qt是完全面向对象,很轻易扩展,而且许可真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功应用程序基础。Qt也是流行Linux桌面环境KDE 基础。 基础上,Qt 同 X Window 上 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上 MFC,OWL,VCL,ATL 是同类型东西,但Qt含有优良跨平台特征、面向对象 、丰富API、大量开发文档等优点。
信号和槽机制是 QT 关键机制,要精通 QT 编程就必需对信号和槽有所了解。信号和槽是一个高级接口,应用于对象之间通信,它是 QT 关键特征,也是 QT 区分于其它工具包关键地方。信号和槽是 QT 自行定义一个通信机制,它独立于标准 C/C++ 语言,所以要正确处理信号和槽,必需借助一个称为 moc(Meta Object Compiler) QT 工具,该工具是一个 C++ 预处理程序,它为高层次事件处理自动生成所需要附加代码。
第二章 设计方案和系统架构
2.1总体方案论证
现在相关电子导航地图方案有好多,选择一个适宜方案,实现在嵌入式平台下稳定运行显得尤为关键,下面是多个比较成熟方案。
方案一:
使用谷歌地图API和baidu地图API函数接口,实现地图浏览显示功效。
下面是使用方案一在windows下运行效果
优点:实现方法简单,界面介绍。
缺点:需要网络支持,不能离线浏览地图,不利于嵌入式手持设备上应用。
在windows下运行卡顿现象显著,由网速决定地图显示效果,
在嵌入式linux下基础是不能运行。
方案二:
下载地图图片在QT Graphics View架构中添加,实现平移和缩放等等显示功效
因为地图图片在高精度下,数据量很大,而且像素值巨大。这里考虑把大图分割成多张小图,小图片依据经纬度进行编号。当需要显示某个经纬度范围时,在QT Graphics Scene中实现多张图片无缝拼接。然后依据经纬度显示目前位置。
优点:界面质量比较高,显示效率比较高
无缝拼接显示图片有效降低了系统内存,提升了系统效率
缺点:无缝拼接图片操作麻烦,显示区域较大(不能显示较小区域)
下面是下载拼接图片显示效果:
从图中能够看出,显示区域较大,三明学院基础看不到
再来看看谷歌地球效果
从图中很显著看到 当放大到很大时候 图像毛边现象显著,显示比较模糊
方案三:
使用mitab源码解析地图信息或使用数据库存放地图信息
这两种方法全部是现在比较流行方法,尤其是数据库存放地图信息,是一个万金油做法。
只要是包含到数据存放处理,常规做法全部是使用数据库。而且嵌入式平台下数据库SQLite操作简单,节省内存,有效提升了系统效率。
Mitab是一个专用于GIS平台处理TAB、MIF等地图文件源码。能够直接从地图文件中读取出经纬度、地图要素,中间省去了部分步骤,直接操作文件,接下来把数据交给QT去处理,显示地图界面,深入提升了系统效率
综合上面三种方法,得到运行在嵌入式上最优方案:mitab源码解析地图文件
2.2系统体系结构设计
依据上面得到方案,设计出下面系统架构
硬件部分:
操作系统层面:
QT4图形界面(map_layer类中包含了mitab解析):
2.3开发工具链
Window下使用开发工具:
Qt SDK by Nokia v.05 (open source) QT开发工具包
VS Windows下编译mitab获取动态库文件
SecureCRT.exe 串口调试工具 远程登录linux工具
串口调试助手 用于模拟GPS数据发送
VMware Workstation 虚拟机
UltraEdit和Insight 代码编辑查看工具
MapInfo Professional 7.0 SCP 地图绘制软件
MIFandTAB MIF、TAB相互转换工具
谷歌地球 地图数据起源、后期调试工具
Linux下使用开发工具:
4.3.3 交叉工具链
QT4.5 包含QT/X11和QT/Embedsky
第三章 硬件部分
3.1系统硬件平台
本系统使用是天嵌科技TQ2440开发板,TQ2440体积小,便于携带;接口丰富,易于扩展;功耗低。
3.1.1 处理器电路
主控芯片为s3c24406层关键板,该关键板性能稳定、工艺精良
部分电路原理图
3.1.2 外围电路
Nand flash 部分
Nor flash 部分
Sdram 部分
3.2 sirf3代 GPS模块
本系统使用是韩国产NSA-C3M3535BRsirf第三代GPS模块
该模块提升了搜星速度和定位精度(正确到小数点后4位)、冷开启时间也缩短了。
GPS输出数据格式遵照NMEA0183协议,后面GPS应用程序设计中只使用到GPEMC这一条语句读取出经纬度。
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
1) 标准定位时间(UTC time)格式:时时分分秒秒.秒秒秒(hhmmss.sss)。
2) 定位状态,A = 数据可用,V = 数据不可用。
3) 纬度,格式:度度分分.分分分分(ddmm.mmmm)。
4) 纬度区分,北半球(N)或南半球(S)。
5) 经度,格式:度度分分.分分分分。
6) 经度区分,东(E)半球或西(W)半球。
7) 相对位移速度, 0.0 至 1851.8 knots
8) 相对位移方向,000.0 至 359.9度。实际值。
9) 日期,格式:日日月月年年(ddmmyy)。
10) 磁极变量,000.0 至180.0。
11) 度数。
12) Checksum.(检验位)
3.3 max232串口
制作MAX232串口 RS232转TTL 用于模拟GPS数据格式和串口调试
第四章 电子地图设计
4.1地图设计方案
通常使用最多GIS软件有AutoCAD Map3d和Mapinfo ,这两款软件全部有各自优点和缺点,AutoCAD Map3d对地图3D模型绘制比较方便,而Mapinfo是2D地图绘制主流,大多数地图数据制造商全部是使用后者,后者对其它程序兼容性很好,而且有自己编程语言,方便开发人员使用。所以,电子地图设计使用Mapinfo软件。
4.2 MapInfo Professional介绍
MapInfo是美国MapInfo企业桌面地理信息系统软件,是一个数据可视化、信息地图化桌面处理方案。它依据地图及其应用概念、采取办公自动化操作、集成多个数据库数据、融累计算机地图方法、使用地理数据库技术、加入了地理信息系统分析功效,形成了极具实用价值、能够为各行各业所用大众化小型软件系统。MapInfo 含义是“Mapping + Information(地图+信息)”即:地图对象+属性数据。
MapInfo Professional 7.0 SCP
MapInfo Professional是一套强大基于Windows平台地图化处理方案,能够方便地将数据和地理信息关系直观展现,其复杂而具体数据分析能力可帮助用户从地理角度愈加好地了解多种信息;能够增强报表和数据表现能力,找出以前无法看到模式和趋势,创建高质量地图方便做出高效决议;凭借其新特征和增强功效,MapInfo Professional 使得桌面地图化和分析功效愈加快和更轻易-并可延伸至整个企业。
MapInfo Professional提供一整套功效强大工具来进行复杂商业地图化、数据可视化和GIS功效。经过MapInfo Professional可连接当地及服务器端数据库,创建地图和图表以揭示数据行列背后真正含义。也能够定制MapInfo Professional以满足用户特定需要。 支持Oracle8i完全读/写,经过OCI对Oracle8i及经过ODBC对其它数据源实时访问。
4.3 电子地图设计
通常地图全部是由一个个地图要素组成,Mapinfo中分别定义了这九种地图要素:点(point)、直线(line)、折线(polyline)、区域(region)、圆弧(arc)、文本(text)、矩形(rectangle)、圆角矩形(rounded rectangle)、椭圆(ellipse)。每个要素由多个属性组成,如名称,是否显示,更新时间,点,对应点经纬度等属性,每种要素属性类型和个数是不相同。但要素名字和经纬度数据则是必需。同时使用Mapinfo绘图时,能够把地图分为多层,每一层全部能够显示响应地图要素。mapinfo格式地图是由四个文件组成,如map.TAB,map.ID,map.MAP,map.DAT四个文件共同组成一个地图。假如是多层地图,每一层全部是由这四个文件组成。
4.3.1 获取地图栅格文件
绘制地图时使用参考图,对比参考图绘制地图很方便,数据偏差较小。Mapinfo地图所需栅格文件支持几乎全部图片格式。所以直接使用截图工具在谷歌地球上获取三明学院地图图片
4.3.2 绘图坐标系选择
因为市面上GPS模块大部分全部遵照NMEA0183协议,NMEA0183协议中要求经纬度是采取WGS84坐标系,为了省去坐标系转换,设计地图时一样采取WGS84坐标绘制,这么用mitab读取出来经纬度就能够直接使用,省去了中间繁琐坐标系转换。
4.3.3 分层次绘制地图
分为4层来绘制,把4层全部显示出来就是我们所绘制地图。
Background层:
该层中把三明学院分为南北区两部分,分别用不一样颜色画刷来显示。
Build层:
该层中把三明学院建筑物全部绘制出来,同时用不一样颜色区分建筑物。
红色:行政中心
蓝色:教学楼
绿色:宿舍区和田径场、蓝球场
墨绿色:食堂
黑色:商业区
紫色:图书馆
浅蓝色:教学辅楼
Road层:
该层中显示三明学院关键道路。
黄色:道路
粉红色:阶梯、楼道
Char层:
该层中显示三明学院建筑名称及标注信息。
将上面4层地图显示出来,在QT SDK中显示效果:(1000*1000像素)
(使用VS编译mitab获取动态链接库)
4.4 TAB文件转换MIF和MID
因为制作地图是由.TAB、.ID、.MAP、.DAT组成,而mitab源码解析文件是mid和mif 格式地图数据,所以要把TAB文件转换为MID和MIF文件。使用MapInfo Professional自带转换工具和MIFandTAB(网友制作转换器),再做合适修改。获取正确MIF和MID文件
下面是MIF和MID文件格式:
MID中通常存放标注信息,包含所需标注内容和标注位置。
MIF中存放地图要素及坐标位置、画笔颜色、画笔大小、画笔线型、画刷颜色。
REGION 1
5 地图要素:区域类型
117.559479 26.202542
117.559479 26.202782
117.559902 26.202782 坐标位置:闭合区域顶点坐标
117.559902 26.202542
117.559479 26.202542
PEN(1,2,16711680) 画笔大小和颜色(RGB格式)、类型
Brush (2,16711680,16777215) 画刷颜色(RGB格式)
第五章 软件部分
5.1 GIS mitab源码介绍
Mitab是国外一个开源项目,它是一个动态链接库,支持多个平台。程序能够调用库直接进行文件操作,实现地图文件中信息读取。Mitab本身是C++编写,它功效很强大,不仅能够读取,也可写入即实现地图编辑。同时,为了方便调用,此项目还提供了一个简便C语言函数接口,方便开发人员使用。
下面列举部分函数加以说明:
mitab_c_get_pen_color 获取画笔颜色
mitab_c_get_pen_pattern 获取画笔类型
mitab_c_get_pen_width 获取画笔线宽
mitab_c_get_vertex_x 获取经度
mitab_c_get_vertex_y 获取纬度
mitab_c_get_text 获取文本信息
还有好多函数,这里就不一一列举了。
5.2 QT Graphics View Framework介绍
Qt Graphics View 提供了用于管理和交互大量定制 2D 图形对象平面和可视化显示对象视图 widget,并支持缩放和旋转功效。Graphics View 使用 BSP(二进制空间划分)树形可很快速地找到对象,所以即使是包含百万个对象大型场景,也能实时图形化显示。
Graphics View提供一个model和一个view。所谓model就是我们添加种种对象,所谓view就是我们观察这些对象视口。同一个model能够由很多view从不一样角度进行观察,这是很常见需求。使用QPainter就极难实现这一点,这需要很复杂计算,而QtGraphics View就能够很轻易实现。
Graphics View提供了一个QGraphicsScene作为场景,即是我们添加图形空间,相当于整个世界;一个QGraphicsView作为视口,也就是我们观察窗口,相当于摄影机取景框,这个取景框能够覆盖整个场景,也能够是场景一部分;部分QGraphicsItem作为图形元件,方便scene 添加,Qt内置了很多图形,比如line、polygon等,全部是继承自QGraphicsItem。
设计程序时,我们先将全部地图元素全部添加到item中,让后再把item中元素在Scene中显示,最终在主界面中显示Scene,这么地图就显示出来了。移动、缩放功效Graphics View 全部自动帮你实现了。
5.3 GPS应用程序设计
GPS模块输出是TTL电平,S3C2440芯片串口一样是TTL电平,所以中间不要再经过什么转换了,只需把两个串口交叉连接。GPS模块波特率为9600,设置和一般串口差不多。因为Linux内核中包含了三星官方开发板SMDK2410配置,只需稍作修改就能够在TQ2440上使用,驱动程序就直接拿来用。GPS应用程序设计目标是为了解析GPS数据中经纬度等信息。完成这个目标,能够参考单片机串口通信模式,首先要初始化串口,设置波特率、起始位、停止位等等,然后用中止或是查询方法读数据。LINUX编程中为串口设置等问题得到了完美处理,它提供一个库,波特率等设置只需调用函数,输入参数,当然具体设置远远没有这么简单。处理了串口初始化问题,下面就是数据处理问题。
GPS模块输出是ASCII码字符型,而且每秒输出数据量大,单片机处理思想是:将接收到数据(ASCII码)转换为2进制数据,而且只能一位一位转换,显示处理速度就慢很多了。Linux编程中提供了处理fifo数据接口函数,一次处理数据量大,使用strstr函数能够快速获取一个数组指定格式起始位置,使用sscanf函数能够用一个数组中获取指定格式数据,而且自动将数据转换为字符型,整型,浮点数据等等,相比单片机一个一个解析数据要快得多,操作也跟简单。
5.4 madplay移植和使用
Madplay编译是参考国嵌试验手册来做,移植只需用交叉编译器编译即可。
把编译好madplay放在文件系统中
Madplay *.mp3 就能够播放mp3歌曲了
第六章 系统组合和调试
6.1 系统组合
将上述软硬件组合,添加mypoint类(定位点),设置在最上层显示,在QT程序中添加timerEvent事件,设置每秒读取一次GPS数据,调用update(),实时刷新显示图像。同时在指定区域内设计程序,实现在某个区域内调用madplay播放器,实现语音播报功效。
6.2 调试
因为地图是用软件绘制,和栅格图像还存在偏差,栅格图像是从谷歌地球上获取,谷歌地球和GPS输出经纬度一样也有偏差,所以系统有两个误差,这两个误差全部只是水平和竖直方向漂移,应该是没有线性漂移,所以只需要计算水平和竖直方向上偏移就能够了
6.2.1 串口模拟调试
从谷歌地球上获取一点坐标,再在绘制好地图上获取这个点坐标。经过数次测量,发觉水平方向偏移较小,能够忽略,竖直方向偏移较大,多点平均值得到数据为0.0093度。修改程序,用串口模拟GPS数据格式,能够正确显示目前点在指定位置上
6.2.2 室外调试
系统连上GPS模块,实地测量经纬度数据,对比界面上位置,统计数据
系统经度
实地经度
精度偏差
系统纬度
实地纬度
纬度偏差
正门
117.5595
117.5598
0.0004
26.2040
26.2037
-0.0003
理工一
117.5608
117.5608
0.0000
26.
26.
-0.0003
图书馆
117.5600
117.5601
0.0001
26.1980
26.1979
-0.0001
田径场
117.5601
117.5603
0.0002
26.1953
26.1954
-0.0001
南校门
117.5579
117.5583
0.0004
26.1976
26.1973
-0.0003
平均偏差
0.00022
-0.00022
得到偏移经纬度分别为: 0.00022 和-0.00022
依据偏差修改程序,再次实地测量,统计数据
系统经度
实地经度
精度偏差
系统纬度
实地纬度
纬度偏差
正门
117.5597
117.5598
0.0001
26.2039
26.2037
-0.0002
理工一
117.5610
117.5608
-0.0002
26.
26.
-0.0001
图书馆
117.5600
117.5601
0.0001
26.1980
26.1979
-0.0001
田径场
117.5602
117.5603
0.0001
26.1956
26.1954
-0.0002
南校门
117.5582
117.5583
0.0001
26.1973
26.1973
-0.0000
平均偏差
0.00006
-0.00012
平均偏差较小能够忽略,系统总体调试完成。
从系统运行速度和显示速度来看,没有卡顿情况,系统效率较高。
总结
此次毕业设计是在谢华老师精心指导下完成。不管是论文选题、资料查询,还是论文定稿过程中,谢华老师全部给了我很多帮助。她数次问询我课题设计进程,帮助我开拓研究思绪,精心点拨、热忱激励。还要感谢在旁边一直无私帮助我老师、同学,正是她们帮助、激励支撑着我想措施尽可能去处理碰到每一个问题,使我顺利完成了毕业设计。当然,此次设计成功和帮助我网友离不开,她们给了我部分提议和宝贵资料,谢谢她们帮助。
同时经过这次毕业设计,我熟悉了整个嵌入式软件开发步骤,从中得到锻炼,为我未来进入社会参与工作提供了帮助。最终,祝福老师、同学们工作顺利,心想事成!
展开阅读全文