【《基于高德地图的智能小车控制系统的Android应用设计案例》4200字】_第1页
【《基于高德地图的智能小车控制系统的Android应用设计案例》4200字】_第2页
【《基于高德地图的智能小车控制系统的Android应用设计案例》4200字】_第3页
【《基于高德地图的智能小车控制系统的Android应用设计案例》4200字】_第4页
【《基于高德地图的智能小车控制系统的Android应用设计案例》4200字】_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

III基于高德地图的智能小车控制系统的Android应用设计案例目录TOC\o"1-3"\h\u7713基于高德地图的智能小车控制系统的Android应用设计案例 1225011.1Androidstudio工程创建及文件介绍 1262881.2Android应用界面设计 360131.3Android基本控件和蓝牙通信网络 4310321.4高德地图移植 552651.5Android应用导航功能设计思路 7271652系统测试与误差分析 9305022.1智能小车的硬件调试 9229632.2智能小车的MCU软件测试 10156172.3Android应用调试 10149542.4智能小车避障测试与误差分析 11132222.5蓝牙控制测试与分析 11320602.6导航测试与误差分析 111.1Androidstudio工程创建及文件介绍创建工程:单击NEW,选择NEWProject,如图4-1操作。接着就会跳出图4-2,选择一个Activity,然后单击NEXT。接下来就是给工程命名,如图4-3,最后单击Finish,一个新工程就建好了。图4-1创建工程图图4-2Activity选择图图4-3工程命名AndroidApp文件目录如图4-4,AndroidManifest.xml文件内部写有Android的相关权限等。Java文件夹底下的是应用的源代码,其下的activity文件夹底下的是高德地图的相关源代码,bluetooth文件夹下的是蓝牙的通信源码和蓝牙设备好获取的源码,Data是全局变量文件,MainActivity为主界面的源码。在往后就是看res文件夹下的文件,layout文件夹下的是UI界面文件,drawable内包含各种图片文件,value则是包含字符串替代文件、颜色配置文件、以及APP的主题文件。图4-4Android应用文件目录图1.2Android应用界面设计AndroidAPP界面如图4-5,从图可知,需要从左palette栏脱出8个Button,有箭头的四个按键用于控制小车的前进、小车的后退、小车的左转、小车的右转。最底部的从左到右,分别用于设置小车为模式一、模式二、模式三。右上方的蓝牙按键跳出AlertDialo对话框,对话框内为一个列表,分别为打开蓝牙、蓝牙的连接、断开蓝牙。图4-5AndroidAPP界面图按键属性改动:从palette其默认样式为灰色,如图4-6(b)。本APP界面的是加上了背景图片,如图4-6(a)。接下来说一下按键属性,首先是Android:id是每个控件都有的,这是控件的id,用于Java文件中findViewById函数对控件的绑定,以作区分。Android:text是控件表面的文本信息,本App右上方的显示的蓝牙设置,就是通过以此来实现的。Android:background为控件的背景,想要作为其背景,需要将PNG格式文件放入drawable文件夹内。讲一下如何将jpg格式转化为PNG格式,可以使用windows自带的画图工具,将其粘贴进画板,然后保存时,选择PNG格式。图4-6按键对比图1.3Android基本控件和蓝牙通信网络首先介绍一些,简单的控件的编程。按键编程:先创建一个Button类,使用findViewById()去绑定UI界面的控件,然后在编写属于该按键的监听函数。监听函数有两种写法,一种是setOnClickListener()函数,另一种setOnTouchListener()函数。这两种的区别在于后者重写时,会多一个触屏事件变量MotionEvent,该变量可以检测按键的按下和弹起。有了以上的基本的控件编程了,接下来介绍一下,蓝牙相关的组件。想要调用Android手机的蓝牙组件,需要在AndroidManifest.xml文件中添加蓝牙的三条权限,接着就是去获得蓝牙适配器,只需BluetoothAdapter.getDefaultAdapter()函数获取即可。有了蓝牙适配器,即可对手机蓝牙进行打开和关闭操作。接下来就是蓝牙设备连接,当用户单击连接蓝牙时,就会由MainActivity跳转至BluetoothDeviceListActivity,同时传递请求码。BluetoothDeviceListActivity内部主要利用广播去获取蓝牙设备,并将搜索到的设备存放在界面的列表中。选择需要连接的蓝牙设备后,会将请求码和蓝牙设备地址传回MainActivity。MainActivity接收到返回的请求码后,会进入onActivityResult()中将获取的蓝牙地址转化为蓝牙地址类,并调用ChatService中的连接线程,与该蓝牙设备创建一个新的蓝牙串口通信网络。因为HC-05为蓝牙串口透传模块,蓝牙网络的UUID必须00001101-0000-1000-8000-00805F9B34FB。ChatService为官方例程提供的源码,只略做解释,该文件内含连接线程ConnectThread()、数据接收和发送线程ConnectedThread()以及接受连接线程,这里其实只是用到前了两个线程。1.4高德地图移植目前国内主流的两大地图开发平台为百度地图API和高德地图API,本应用采用高德地图,因为高德地图有着覆盖其全平台产品的近千篇的开发文档,并且平台还提供了覆盖核心产品典型使用场景的示例。在移植高德地图之前需要做以下几个准备:申请密钥Key。首先需要注册高德地图开放平台的账号,成为高德地图开放平台的开发者,然后进入个人用户的控制台,单击“应用管理栏”下的“我的应用”,创建新的应用。在创建的应用上点击"添加"按钮,在弹出的对话框,如下图5-6所示。接下来只要填写key名称,同时去Androidstudio平台获取调试版的安全码SHA1、发布版的安全码SHA1、以及PackageName,即可获得高德地图的Key,切记一个Key只能一个应用使用,否则会出现应用无法访问平台的问题。图4-7申请Key图获取图4-7中所需要的信息。回到Androidstudio平台,单击Build栏下的GenerateSignedBunldorAPK,创建一个APK的Key,并将其加入工程中,详细步骤可以查百度,这里不详细说了。单击Androidstudio平台左下角的Terminal,利用cd命令进入Java的bin中,再输入“keytool-v-list-keystore

<前面创建APK的Key的路径>”,然后就会得到发布版的SHA1,如图4-8。相对于发布版SHA1,调试版安全的SHA1获取就容易多了,具体操作如图4-9。最后就是获取PackageName,该信息只需打开AndroidManifest.xml文件,在开头就会有这一句“<manifestxmlns:android="http://S/apk/res/android"package="XXXXX">”,只需要吧XXXX的内容填入即可。单击提交,就会获得高德地图的Key。图4-8发布版的SHA1获取图图4-9调试版安全SHA1操作图添加高德地图的开发包。首先去高德地图API官网,单击开发支持下的Android导航SDK。然后下拉,找到“相关下载”,即可下载到高德地图的开发包,接下来将开发包的文件移植到工程文件夹内的lib文件夹内。再如图4-10操作,就完成了开发包的添加。图4-10build.gradle操作图添加权限和高德地图的Key,该操作全是在AndroidManifest.xml内完成。权限和高德地图具体内容,如图4-11。图中android:value的值为步骤二获取到的。图4-11权限和高德地图Key1.5Android应用导航功能设计思路首先,由于高德地图的API过于复杂,所以可以去高德地图的开放平台学习提供的例程,然后依照官方例程仿写自己需要实现的功能。先确定目标:使用MCU传过来的经度和纬度信息来定位,因此我们需要去平台的开发者指南寻找,发现仅在Android导航SDK开发指南里,有关于“传入外部GPS数据”指导和介绍。简单介绍高德地图的“传入外部GPS数据”,其等价于不再使用系统的定位点进行驱动了,导航SDK内部将会以您传入的定位点数据为标准进行无起点算路和实时导航,建议传入频率为一秒一次,否则可能影响导航效果。想要使用这一功能,需要做好以下几步:(1)开启外部数据定位点,调用AMapNavi的setIsUseExtraGPSData()方法开启使用外部定位点数据,将其设置为true。(2)传入外部GPS数据,调用AMapNavi的setExtraGPSData()方法传入外部定位点数据。注意:传入的定位点数据必须是WGS84坐标系(type传入1)或者高德坐标系(type传入2),并且经度、纬度、速度、精度、角度、时间参数缺一不可。

(3)调用导航API,实现导航。启动导航需要有导航的路径,所以算路的API也是不可缺少的。根据官方的开放指南,算路分为经纬度算路和POI算路,很明确我们使用的是外部GPS数据,因此选择经纬度算路。开发指南给的算路指导,如图4-12。图4-12算路代码例程图根据图4-12,我们只需将接收到的经纬度信息,填入NaviLatLng(double纬度信息,double经度信息).然后调用AMapNavi类下的calculateRideRoute进行算路即可。(4)定时器更新定位信息,并重新导航。采用了Android的定时器来定时更新经度和纬度信息,并重新启动导航,同时将航向角发送给MCU,以此实现实时导航。Android的定时器程序框架,如图4-13。图4-13定时器程序框架图不同Activity之间的数据传递。通过学习和查资料,了解的方法有两种,一种是Bundle和Itent,跳转界面来传递数据,该方法弊端,每秒会跳出一个导航界面,导致按下Android手机的返回键,无法立马返回主界面。第二种,定义一个Android应用的全局变量,所有的Activity都有修改和获取的权限。只需新建一个Java类文件,将其继承于Application,然后修改AndroidMainfest.Xml内application下的android:name=“全局变量文件名”即可。接下来,只需在全局变量文件内编写修改函数和获取函数,在Activity中调用,就能完成数据的传递。经纬度转化为高德地图坐标,该内容写在Android定时器任务里面的。讲转化前,先简单的介绍一下坐标体系。主要的坐标格式有WGS84格式、高德坐标以及百度坐标。WGS84为常见的GPS经纬度,而高德坐标和百度坐标是两个平台各自将WGS84进行处理后的坐标体系。因此,在使用外部GPS数据定位时,需要先将WGS84转化为高德坐标。至此关于Android应用方面的修改和编写已全部完成,剩下的就是不停的调试和修改,让小车和手机通信稳定。5系统测试与误差分析系统调试分为三部分:智能小车的硬件调试、智能小车的MCU软件调试、Android应用调试、整体调试。这样可以快速定位问题由哪一部分引起的,大大的缩减了调试难度。2.1智能小车的硬件调试智能小车的硬件方面调试,主要分为万用表检测PCB板和观测各模块是否正常工作。检测引脚:主要的检查的是引脚是否存在虚焊或者漏焊现象。首先,将万用表调到蜂鸣档,然后打开PCB图,根据PCB图,检查每个引脚之间的导通关系。若导通,万用表就会发出“bi~”的声音。模块的观测:先查看L298N模块的指示灯,确认电源是否存在问题。指示灯常亮,表示电源无问题。查看最重要的主控的指示灯,灯亮起,MCU最小系统板已通电。再观测蓝牙模块的指示灯,若指示灯快速闪烁,表示准备就绪,等待连接;若其一秒一闪烁,表示已连接设备。最后观测到GPS模块闪烁,表示定位成功,一定要记住这点,Android应用无法接收到经纬度信息。也可以使用野火的串口助手,查看GPS的定位,如图5-1。图5-1GPS模块定位图2.2智能小车的MCU软件测试MCU软件调试,主要是通过ST-Link和MDK进行仿真、Android手机的蓝牙串口应用进行调试以及测试。首当其冲的是测试L298N对直流电机控制的程序,这部分测试十分简单,只需要再主程序中依次调用写好的前进函数、左转函数、右转函数、后退函数以及停止函数,来观测智能小车的行驶。其次测试的是蓝牙模块代码,这里直接调用printf()函数随意输出一个字符串,然后用Android手机串口应用查看接收的数据,与发送的数据是否一致。然后手机端发送之前约定的指令,看智能小车执行的动作,是否与指令相符合。2.3Android应用调试Android方面的测试,采用蓝牙模块与USB串口转TTL相连,利用电脑的串口助手发送数据和查看数据,并在Androidstudio平台上查看Android应用的输出日志。具体步骤,首先需要将手机设置为允许USB调试,通过USB线连接电脑,如图5-2操作,即可进行Android应用的仿真。图5-2Android应用仿真操作图2.4智能小车避障测试与误差分析在实际测试中,智能小车能够基本的识别障碍物。经过多次测试后,发现在识别曲面或斜面的物体时,有较大的概率无法识别出,还有就是面积小于0.5平方面的物体,也有小概率被无法识别出。2.5蓝牙控制测试与分析蓝牙控制智能小车的基本行动时,动作流畅,延迟小。相对来说,比较成功。2.6导航测试与误差分析

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论