python无人机 无人机控制界面开发 - Linux - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > 服务器系统 > Linux

python无人机 无人机控制界面开发

发布时间:2017-04-04 来源:服务器之家

一 简介

    无人机控制界面是一个能够控制一架或多架无人机的软件,可以进行无人机姿态控制、队形编排、路径控制等,主要采用Blender和Unity3D软件开发,其工作平台包括PC、Mac、Linux等广泛使用的操作系统,也包括iOS、android等移动端,以及XBox、PS等游戏主机平台,操作方式包括键盘鼠标、触屏、游戏手柄等。控制界面在遵循开发者及系统使用原则的前提下开源。

    目前已有两版控制界面程序,第一版以Blender为基础,通过Python脚本添加数据采集和网络传输功能;第二版以Unity3D为基础,提供更佳游戏化的无人机操控方式,C#编程,同样具备数据采集和网络传输功能。两版程序目前均面临网络传输卡顿影响界面交互流畅性的问题,基本的解决办法是开启多线程,专门设置一个线程执行网络传输功能,备选方案还有网络传输异步通信等。

    本文是第二版控制界面的开发日志,对于第一版控制界面不再赘述。

二 基本框架

    第二版控制界面以Unity3D为开发环境,基本框架见下图。基本功能包括无人机选取、无人机控制、无人机之间距离控制、添加和删除无人机、无人机坐标采集、数据网络传输。

    无人机选取采用鼠标选取,利用Unity3D的相机与鼠标形成的射线选取物体。被选取的无人机使用wsad控制在当前水平面内的前后左右移动,通过eq完成上升和下降。无人机采用刚体模型(rigibody),因此无人机之间具备最小距离,彼此之间碰撞符合Unity3D默认刚体模型的物理规则。添加和删除采用按钮控制。所有无人机均为GameObject Players的子对象,坐标采集依靠C#遍历players所有子对象完成,每帧采集一次,并将所有无人机坐标打包,即写进一个字符串中,通过socket发送到服务器端。

三 问题

    同第一版控制界面,网络传输造成的卡顿会影响整个程序,最明显的影响就是控制出现卡顿。基本的解决办法是使用多线程,单独为网络传输准备一个线程。其他备选方案还有使用异步网络传输。

本文同步发表在我的LOFTER中,欢迎留言。