• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 农林牧渔 > 正文

    使用World,Wind,Java技术的无人直升机地面站

    时间:2020-09-18 07:58:48 来源:达达文档网 本文已影响 达达文档网手机站

    摘 要:为了实现无人直升机地面监控站的三维可视化、三维监控和导航功能,提出一种使用World Wind Java技术嵌入无人直升机地面监控站的方法。首先对无人直升机地面监控站的总框架设计和各个功能模块进行了说明,然后对World Wind Java二次开发技术进行了详细说明,重点分析了如何利用World Wind Java开发套件实现无人直升机地面监控站的三维数据管理、图层访问及控制、航迹显示和规划。最后用实例证明该地面监控站应用程序的可行性,以及它具有的良好的可靠性、可移植性和可扩展性。

    关键词:无人直升机;地面监控站;World Wind Java技术;三维可视化

    中图分类号:TP311.52文献标识码:A

    文章编号:1004-373X(2010)02-051-04

    Ground Control Station with Technology of World Wind Java for Unmanned Helicopter

    CHEN Bin,PEI Hailong

    (College of Automation Science and Engineering,South China University of Technology,Guangzhou,510640,China)

    Abstract:To realize the functions of 3D visualization,3D supervision and navigation for a unmanned helicopter,ground control station embedded the technology of World Wind Java for unmanned helicopter is presented.Firstly,the overall architecture of ground control station for unmanned helicopter and each functional modules is introduced.Then,the secondary development technique of World Wind Java is explained in detail.How to use the World Wind Java development kit to achieve the 3D data management,layers accessing and control,flight_path display and planning are emphatically analyzed.Finally,a case of the ground control station is presented to verify feasibility of the application,and it has good reliability,transplantation and expansibility.

    Keywords:unmanned helicopter;ground control station;technology of World Wind Java;3D visualization

    0 引 言

    近几年无人直升机的快速发展,使其在民用和国防等诸多领域均得到了广泛的应用。地面监控站是地面执行人员的系统核心,是无人直升机的指挥控制台,在整个无人直升机的系统中起着至关重要的作用。提高地面监控站的信息化和三维可视化技术,使得无人直升机与地面执行人员友好的交互,是现今无人直升机地面监控站的一个设计目标。

    三维可视化技术是显示描述和理解真实世界特征的一种技术[1],也是一种数据表征的形式,目前已广泛应用于地质、地理、国防军事、生物科技等科学技术领域。三维可视化技术的强大交互能力在无人直升机的地面监控站发挥着重大的作用。借助可视化方面的优势,实现了无人直升机的监控导航、自主起降、航迹规划及显示等功能,使其将各种飞行数据实时、快速、直观地呈现给地面执行人员,保证无人直升机完成各项任务。

    1 无人直升机地面监控站总框架

    无人直升机地面监控站的总框架图如图1所示。

    图1 地面监控站框架图

    无人直升机的地面监控站基于便携式PC机上,由于实时性要求较高,因此对便携式PC的性能要求也相对较高。在框架图中,地面监控站的主要责任是通过无线路由设备接收从无人直升机传回地面的飞行数据和相关参数,通过解析协议进行解析后,将数据存入飞行数据库,同时还通过仪表,图表的形式将飞行数据直观地表现出来,再通过World Wind嵌入到应用程序中,三维地显示飞行数据,实时动态地显示无人直升机的位置。当地面执行人员需要进行自主起降和航迹规划等操作时,可以在World Wind三维视图上进行起降点位置设置和路径规划,整个视图界面友好,设置快捷,交互性强。

    2 World Wind技术嵌入地面监控站

    2.1 World Wind Java 软件开发包[2]

    World Wind Java是由美国国家航空与航天管理局开发中心开发的一个开源软件开发套件,已广泛用于三维地形仿真、地质地理研究、人口统计、全球气候研究、三维真实场景仿真等[3],如图2所示。

    图2 World Wind Java在各个科学领域的应用视图

    借助World Wind Java技术,使用三维地球来进行无人直升机的导航和场景显示,是对World Wind进行的二次开发和应用,给无人直升机地面监控站应用程序提供三维地形地貌显示,通过本地数据库的高程数据和卫星图片来渲染,将无人直升机飞行场景在视图上真实地还原出来。

    World Wind Java开发套件采用Java语言编写,结合OpenGL(Open Graphics Library)进行底层三维图形控制[4],可通过互联网连接远程服务器进行高程数据以及卫星图片的下载,同样提供离线后从本地数据库提取三维数据的功能,以便能在互联网络无法连接时正常使用。

    2.2 地面监控站应用程序设计

    地面监控站有实时性高,可移植性好,可靠性强的要求,使用Java语言编写地面监控站应用程序,进行面向对象设计,软件结构上采用模块化组件和多线程[5],既能满足实时性要求,又便于维护升级,同时Java语言拥有跨平台的能力,可以方便地在多个平台上移植地面监控站的应用程序。地面监控站的应用程序设计框图如图3所示。

    采用图形化界面设计,提供一个可以与用户交互的接口。用户可通过键盘和鼠标进行系统事件和消息的驱动,完成交互过程。整个应用程序包括五大模块。数据通信模块负责与无人直升机之间的数据传输;远程控制模块负责地面控制参数校验与发送;数据库模块负责无人直升机的飞行数据的存储及其管理;数据仪表模块负责显示无人直升机的飞行姿态、位置、控制量等数据;World Wind显示与导航模块主要负责三维地形地貌显示、无人直升机轨迹显示和航迹规划、三维飞行数据观察等,它们在整个地面监控站中发挥着至关重要的角色。

    图3 地面监控站应用程序框图

    2.3 World Wind Java二次开发关键技术应用

    World Wind的二次开发是在WWJ SDK(Soft Development Kit)开发套件的基础上,它的整个软件开发框架如图4所示。使用WWJ SDK将三维地球应用程序嵌入无人直升机地面监控站中,为无人直升机提供实时动态的三维地形地貌观测、无人直升机动态飞行轨迹和无人直升机航迹规划等功能。

    图4 World Wind Java应用程序框架图

    2.3.1 强大的数据管理功能

    World Wind Java开发套件有很强的数据管理功能,并且兼容多种地理空间数据格式,可以拥有在线和离线访问功能,适合用户在各种条件下方便使用。World Wind兼容的空间数据格式有.gtiff,.shp,.dem,.tab,.DWG,.DDS等。其中,比较常用的有.dem,.bil高程数据和.DDS栅格数据[6]。

    在该地面监控站应用程序中,使用DDS栅格数据和bil高程数据相结合的方式,DDS栅格数据主要负责地面卫星图片的纹理渲染,具有在线访问地理数据服务器功能,可随时下载最新的空间地理数据资源。

    2.3.2 强大的图层控制与访问功能

    在地面监控站应用程序中,World Wind Java SDK通过一个重量级的AWT组件WorldWindowGLCanvas来显示World Wind 模型(三维地球和各个图层)。该组件是独立式的,能为应用程序提供三维地球和图层的渲染,它包含了基本的图层,如基础图像层(Basic Tiled Image Layer)、罗盘层(Compass Layer)、比例尺层(Scalebar Layer)、世界地图层(World Map Layer)和着色层(Renderable Layer),同时还可以根据自己的需求增加图层,例如要进行GPS跟踪定位时,可以加入航迹标记层(Track Mark Layer);要加入网络地图服务器(Web Map Server)时,可以增加WMS层来对网络地图服务器的海量数据进行访问和渲染[7]。相关代码如下:

    private WorldWindowGLCanvas wwd;//创建一个新的窗口渲染画布

    private StatusBar statusBar;//创建状态栏

    public AppPanel(Dimension canvasSize,boolean includeStatusBar)

    {

    super(new BorderLayout());

    //初始化画布

    this.wwd = new WorldWindowGLCanvas();

    this.wwd.setPreferredSize(canvasSize);

    //创建一个三维模型

    Model m =

    (Model)WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME);

    this.wwd.setModel(m);

    //为窗口设置监听器

    this.wwd.addSelectListener(newClickAndGoSelectListener(this.getWwd(),WorldMapLayer.class));

    //将画布和状态栏加入到应用程序窗体中

    this.add(this.wwd,BorderLayout.CENTER);

    if (includeStatusBar)

    {

    this.statusBar = new StatusBar();

    this.add(statusBar,BorderLayout.PAGE_END);

    this.statusBar.setEventSource(wwd);

    }

    }

    为窗口设置好监听器后,可以使用鼠标和键盘控制三维地球的缩放、旋转、漫游等。对于自定义层的添加可以使用如下代码来实现。

    public static void insertBeforeCompass(WorldWindow wwd,Layer layer)

    {

    // 在Compass图层之前将新的图层加入到图层列表中

    int compassPosition = 0;

    LayerList layers = wwd.getModel().getLayers();

    for (Layer l:layers) {

    if (l instanceof CompassLayer)

    compassPosition = layers.indexOf(l);

    }

    layers.add(compassPosition,layer); }

    层的表示可以通过层名和索引,在这里通过这两种方式插入新的图层,同时也可以通过层名和索引来访问控制图层。

    2.3.3 航迹显示和规划功能

    地面监控站的实时动态航迹显示是一个重要的功能。WorldWind Java SDK有两个封装好的类TrackMarkerLayer和TrackPipesLayer对小型无人直升机的实时位置进行标记,这两个类的不同之处就是前者可以使用自定义的标记物(圆点、方形等),后者使用实体线条来标记航迹。航迹跟踪层与其他层一样,相互之间都是独立的,可以独立显示。实时航迹的实现可由小型无人直升机地面站实时接收机载系统的飞行方位信息,将这些方位信息存储在一个列表中,每个方位加载所对应标记物在轨迹跟踪层显示出来,最后通过Update函数来实现轨迹的实时更新,相关代码如下:

    ArrayList markers = new ArrayList

    ();//建立标记列表

    Marker marker = new BasicMarker(Position.fromDegrees(lat,lon,0),//将经纬度方位信息存储标记里

    attrs[(int) (Math.abs(lat) + Math.abs(lon)) % attrs.length]);

    marker.setPosition(Position.fromDegrees(lat,lon,height));//设置标记物的位置(经度,维度,高度)

    markers.add(marker);

    final MarkerLayer layer = new MarkerLayer();//建立航迹跟踪层

    layer.setOverrideMarkerElevation(true);

    layer.setKeepSeparated(false);

    layer.setElevation(elevation);//设置层的高度

    layer.setMarkers(markers);

    insertBeforePlacenames(this.getWwd(),layer);

    this.getLayerPanel().update(this.getWwd());//对航迹跟踪层进行更新

    航迹规划是地面监控站最为关键的一部分,无人直升机航迹规划是根据任务目标规划满足约束条件的飞行轨迹,规划的目的是在适当的时间内计算出最优的飞行轨迹[8]。主要用于小型无人直升机的飞行任务,包括飞行航线、高度熟读任务执行区域等。由于在建立三维地球模型中就有状态栏信息,因此可在三维地图上直接通过鼠标移动得到所在点的经纬度信息,这样即可大大提高系统的可操作性。航迹点的规划可以分为以下几个功能:画航点航线、修改航线、结束画航线。在画航迹点过程中,每画一个点就可以从图层中获得经纬度信息,根据需要添加高度信息,同时显示两点之间的距离;修改航线主要是对于误操作规划的航迹点进行删除、移动等操作;结束画航线后,将航线规划得到的方位信息保存起来发送到小型无人直升机的机载系统。相关的代码如下:

    private ArrayList positions = new ArrayList();

    private final RenderableLayer layer;

    private final Polyline line;

    pubic class FlighPathBuilder(WorldWindow wwd,RenderableLayer lineLayer,Polyline polyline)

    {

    if (polyline != null)

    {

    line = polyline;

    }

    else

    {

    this.line = new Polyline();//建立航迹曲线

    this.line.setFollowTerrain(true);//航迹曲线跟随地表形状

    }

    //鼠标监听器,鼠标动作时的响应函数

    this.wwd.getInputHandler().addMouseListener(new MouseAdapter()

    {

    //鼠标点击响应

    public void mouseClicked()

    //鼠标释放响应

    public void mouseRelesed()

    //显示航迹点距离响应

    public void showDistance()

    //删除航迹点距离响应

    public void deletePosition()

    }//位置信息监听器

    this.wwd.addPositionListener(new PositionListener()

    }

    3 实验结果与分析

    无人直升机地面监控站应用程序使用标准Java语言编写,编译源代码生成可执行文件,运行平台为dell D630便携式笔记本,操作系统为Fedora 8。经过长期的测试和修改,地面监控站具有较强可靠性,所有功能正常使用,同时还将应用程序移植到Windows平台上进行测试,移植过程简单方便,只要安装好Java虚拟机,把相关可执行文件拷贝到目标主机即可。图5,图6为实际测试中的应用程序截面图。

    图5 无人直升机地面监控站航迹规划与导航图

    4 结 语

    使用World Wind 技术的无人直升机地面监控站在实时监控及导航方面有很强的三维可视化优势,能够保证无人直升机各项任务的完成。地面监控站在航迹的实时显示、航机规划、组合定位及导航的过程中,具有直观性,精确性和人性化。同时地面监控站的应用程序采用面向对象模块化设计和多线程设计,符合系统的各项设计指标,可靠性、实时性和可移植性都得到了保证,具有很高的工程应用价值。

    图6 无人直升机地面监控站数字仪表图

    地面监控站应用程序在实际测试中各个方面表现良好,但是还有一些细节需要改进,如界面方面的美化,仪表的专业化,进一步加强地面监控站的友好性等。

    参考文献

    [1]徐青.地形三维可视化技术[M].北京:测绘出版社,2000.

    [2]Patrick Hogan.World Wind Java SDK [EB/OL].http://worldwind.arc.nasa.gov/Java/index.html.

    [3]Rick Browigg,Tom Gaskins.Putting 3_D Earth into Your Applications and Web Pages[EB/OL].http://worldwind.arc.nasa.gov/Java/Javaone_2008_ts5523_v4.ppt.

    [4]Dave Shreiner,Mason Woo,Jackie Neider.OpenGL编程指南[M].5版.北京:机械工业出版社,2006.

    [5]\Bill Lewis,Daniel J Berg.深入学习:Java多线程编程[M].关欣,史宇海,译.北京:电子工业出版社,2000.

    [6]史文中,吴立新,李清泉.三维空间信息系统模型与算法[M].北京:电子工业出版社,2007.

    [7]Andolph Kim.World Wind Central.[EB/OL].http://forum.worldwindcentral.com.

    [8]Doherty P,Haslum P,Heintz F,et al.A Distributed Architecture for Autonomous Unmanned Aerial Vehicle Experimentation[A].Proc.of the 7th International Symposium on Distributed Autonomous Robotic Systems\.2004:221_230.

    作者简介 陈 镔 男,1984年出生,硕士研究生。主要研究方向为无人直升机嵌入式软件开发、三维可视化建模与应用。

    裴海龙 男,1965年出生,副院长,教授,博士生导师。主要从事嵌入式系统、智能机器人系统、自适应自组织控制等方面的研究和教学工作。

    相关热词搜索: 地面站 直升机 技术 World Wind

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网