41Google Earth在无人机地面控制站中的应用刘龑(8).doc
《41Google Earth在无人机地面控制站中的应用刘龑(8).doc》由会员分享,可在线阅读,更多相关《41Google Earth在无人机地面控制站中的应用刘龑(8).doc(8页珍藏版)》请在三一办公上搜索。
1、第二十八届(2012)全国直升机年会论文Google Earth在无人机地面控制站中的应用刘 龑 宋彦国(南京航空航天大学直升机旋翼动力学国家级重点实验室,南京,210016)摘 要:本文介绍了利用Google Earth二次开发技术,将其应用到无人机地面控制站中的方法。首先简单介绍了Google Earth应用程序开发接口及KML文件;其次介绍了地面控制站软件开发环境;然后分别阐述了地面控制站中打开并嵌入Google Earth、实现无人机航迹实时显示以及航点编辑的实现方法;最后对程序运行结果进行验证。关键词:地面控制站;航迹显示;航点编辑1 引言地面控制站作为无人机系统中的一个环节,不仅是
2、无人机飞行状态的显示终端,也是飞行任务设置以及无人机飞行的操纵端。它的稳定运行对完成飞行任务、确保飞行安全起着重要作用。为了提供精确的地理定位信息,大部分的无人机地面控制站都结合了地理信息系统(GIS)。本文介绍了在Visual C+ 6.0(VC 6.0)环境下将Google Earth加载到某型无人机地面控制站的程序窗体中,生成并打开KML文件实现无人机地理位置实时显示以及地面航点编辑功能。最后使用外部飞行数据驱动地面控制站以观察定位信息在Google Earth中的显示结果。2 Google Earth二次开发技术2.1 Google Earth简介2谷歌地球(Google Earth)
3、是Google公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。Google Earth的卫星影像,并非单一数据来源,而是卫星影像与航拍的数据整合。Google Earth采用C/S(Client/Server)模式,通过Google Earth客户端向服务器发送请求,服务器响应并返回当前地图数据以实现地图的加载。Google Earth 广泛应用于石油、水利、房产、通信、电力、海事、物流、农业等多种行业。利用Google Earth 电子地图将空间特征信息进行可视化表达,能快速获得无人飞行器所处环境地物的基本特征,为导航定位和监控系统提供直观、清晰的信息服务
4、。2.2 Google Earth应用程序编程接口1为了实现Google Earth的二次开发,需要在VC 6.0中调用其应用程序编程接口,即Google Earth COM API。Google Earth COM API 是Google Earth 发布的基于组件技术的应用程序开发接口。Google公司以Google Earth COM API 函数作为公共接口,允许第三方应用程序从Google Earth 查询信息并能给Google Earth 发送命令。Google Earth COM API类型库中主要有11 个类,如表2.1所示。表2.1 Google Earth COM API中
5、的常用类类名说明IApplicationGE入口类,通过该类,进一步调用其它类ICameraInfoGE相机类,通过该类,可以调整观看当前视图的方式IFeatureGE要素类,通过该类,可以控制要素的属性IFeatureCollectionGE要素集合类,通过该类,进一步获取要素IPointOnTerrainGE地理坐标点类,通过该类,获取屏幕点的地理坐标IViewExtentsGE视图窗口类,通过该类,可以控制当前窗口大小ISearchControllerGESearch 面板类,通过该类,可以完成相应的搜索功能ITourControllerGETour 面板类,通过该类,可以动态播放当前的
6、要素IAnimationControllerGE通过该类,可以动态播放当前的时间要素ITimeGE时间类,通过该类,可以获取和设置要素的时间属性ITimeIntervalGE时间间隔类,通过该类,可以获取要素的时间间隔属性2.3 Google Earth中的KML文件2-3KML,是 Keyhole 标记语言(Keyhole Markup Language)的缩写,是一种采用 XML 语法与格式的语言,用于描述和保存地理信息(如点、线、图像、多边形和模型等),可以被 Google Earth 和 Google Maps 识别并显示。Google Earth 和 Google Maps 处理 K
7、ML 文件的方式与网页浏览器处理 HTML 和 XML 文件的方式类似。像 HTML 一样,KML 使用包含名称、属性的标签(tag)来确定显示方式。KML 的对象模型主要包括了Placemarks,Geometry,Image Overlays,Style 以及Network Links 五大元素,并定义了88 个标签项用以描述相应元素的属性。常用的制图元素主要有两类:点状元素即 Point 元素,其坐标采用真实的空间位置表示,即以经纬度、高度表示其位置,可以自定义文字的大小、颜色、透明度等。在航路绘制中可以用来表示单个航路点;线状元素,包括LineString(线段)和LinearRing
8、(闭合线)两种。也支持自定义颜色、宽度、透明度等。“线/折线”默认状态是无法显示相应线段的,这需要通过“点”(即经纬度和高度)数据来完成相应的配合处理。Google Earth 的标签项具有明显的层次关系,这种层次关系是树状的。下面是一个简单的KML 地标文件。其中,标签用来描述一个地标,标签用来显示一个地标的简单名称, 标签定义地图上一个点的坐标, 标签用来描述每一个点的经度(Longitude)、纬度(Latitude)和高度(Altitude),经纬度按照WGS-84 标准进行设置。3 Google Earth在无人机地面控制站中应用的实现3.1 程序开发环境及总体框架3.1.1 程序开
9、发环境利用Visual C+ 6.0的微软基础类库(MFC)创建基于对话框的可执行应用程序,在此基础上完成相应的程序编译和运行。Google Earth使用其plus版本,版本号为6.0.3.2197。为了实现Google Earth显示无人机航迹以及航点编辑功能,地面控制站需要实时生成并且打开保存地理位置信息的KML格式文件。KML实质上和XML语言是一致的,可以利用Microsoft XML Core Services (MSXML) SDK中msxml.dll定义的API接口,根据KML对象模型来生成所需的各个标签项。3.1.2 程序总体框架由VC 6.0编写的无人机地面控制站通过Goo
10、gle Earth COM API接口实现Google Earth启动和地图窗口嵌入,通过实时生成和打开KML文件实现航迹显示与航点编辑。 地面控制站 Google EarthGoogle Earth COM API打开Google Earth并嵌入航迹显示 Link航迹显示及航点编辑卫星地图屏幕坐标转换为经纬度KML处理 定时打开无人机当前位置KML文件的KML文件经纬度打开该KML文件Msxml接口创建KML文件 无人机当前位置KML文件 航点编辑航点编辑 定时打开地图航点编辑KML文件的KML文件经纬度 地图航点编辑KML文件图1 程序总体框架3.2 Google Earth的启动和退出
11、与其在程序窗体中的嵌入3.2.1 Google Earth的启动和退出在无人机地面控制站中利用Google Earth作为地理信息工具,首先要能够通过地面控制站本身启动和关闭Google Earth。为了程序的整体性,还应该将其卫星地图窗体部分嵌入到地面站窗体相应位置。通过VC类向导,将所需的类加入到程序中,地面控制站程序打开Google Earth的流程及部分代码如下: 开始 创建地面站程序窗体Google Earth COM库初始化N 初始化成功? 结束 Y 打开Google Earth地图窗口内嵌 结束图2 通过程序控制Google Earth打开流程图static const CLSI
12、D CLSID_Application=0x8097D7E9,0x1D,0xF7,0x84;/Google Earth标识码IApplicationGE m_geApplication;/IApplicationGE类对象:CoInitialize(NULL);/初始化COM库if (m_geApplication.IsInitialized()m_geApplication.CreateDispatch(CLSID_Application,NULL);/打开Google Earth在主程序窗口销毁时产生ON_WM_DESTROY()消息,在其消息处理函数中执行关闭Google Earth的操
13、作。通过直接查询其进程并将其关闭以彻底退出Google Earth:if (hwnd=:FindWindow(NULL,Google Earth):GetWindowThreadProcessId(hwnd,&processid);hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, processid ); :TerminateProcess(hProcess,4);:CloseHandle(hProcess);3.2.2 Google Earth在程序窗体中的嵌入打开Google Earth后需要将其地图窗口部分嵌入至地面控制站窗体指定位置,
14、其基本原理是通过二次开发接口获取卫星地图窗口句柄之后,将地面控制站窗体中需要嵌入地图的窗口设为它新的父窗口,并将Google Earth原来的主窗口隐藏。其实现代码如下:/获取Google Earth主窗口HWND hWnd=(HWND)m_geApplication.GetMainHwnd();long lMainWndStyle=:GetWindowLong(hWnd,GWL_STYLE);:SetWindowLong(hWnd,GWL_STYLE,lMainWndStyle&(WS_CAPTION);/去除标题栏/内嵌Google Earth区域RECT PlotRec;CWnd* Pl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41Google Earth在无人机地面控制站中的应用刘龑8 41 Google Earth 无人机 地面 控制站 中的 应用

链接地址:https://www.31ppt.com/p-5013974.html