无人机智能巡检软件设计
研究生期间做的一个项目,第一次接触Android应用开发,自学了Java和Android,也学习了计算机网络相关的知识,过程虽然曲折总的来说收获满满,下面就总结一下。
1.项目简介
无人机智能巡检APP基于DJI Mobile SDK和DJI UX SDK开发,开发平台为Android系统,开发工具为Android Studio 3.5,编程语言为java,适配无人机型号为M300RTK无人机,Mobile SDK和UX SDK版本均为4.13.1。主要功能是实现面向光伏电站的无人机自动巡检。为确保安全,飞行之前需要在DJI Assistant 2 For Matrice软件里进行飞行轨迹的仿真。
2.软件功能
-
无人机自动巡线飞行
- 通过Android文件管理器,从外部导入Json格式航点文件,并将航线轨迹显示到高德地图上。
- 在高德地图上手动规划航线,支持手动选点飞行,也可以圈定区域自动生成蛇形巡检航线,可以任意调整航线的角度。
- 断点续飞:在飞行任务的执行过程中,设置一个航点监听器,实时记录下飞过的航点数。如果遇到外部影响需要暂停飞行任务时,通过sharedPreferences记录下断点,待想要继续执行未完成的任务时,重新导入文件,自动读取断点,从断点位置继续执行任务。
-
无人机飞行数据实时传输
- 根据Mobile SDK API获取无人机各种参数信息(经纬度,海拔,电量,信号强度,风速、姿态角等)。
- 将飞行数据显示到软件界面上。
- 通过UDP协议,将飞行数据以Json报文形式发送到指定IP地址的服务器端。
- 服务器端编写接收UDP报文的程序,自动保存为文件。
- 通过OkHttp获取服务器指令信息,然后执行对应的函数,实现远程遥控。
-
无人机视频码流实时获取
- 无人机FPV及H20T三镜头视频流获取和显示(FPVWidget,TextureView),以自定义View的形式放到界面布局里。
- 录屏:通过Android提供的MediaProjection和MediaCodec实现。
- 视频流实时推送
- 基于Nginx+RTMPmodule 搭建流媒体服务器
- 通过SDK推流(RTMP协议)到指定地址。
- 直播拉流:1.主流直播平台如斗鱼,虎牙,抖音,哔哩哔哩等。2.手机端“易推流”软件。3.浏览器使用Video.JS播放。4.windows软件VLC拉流。
3.软件效果展示
软件借鉴了网上很多优秀的代码,结合了自己的想法和理解,同时也离不开同时实验室师兄的帮助。由于时间和精力的限制,软件没有再进一步优化,软件架构也只是用了Android原生的MVC架构,等到以后学习了新技术,一定重构这个软件的架构,同时全面优化性能和界面。拭目以待!
|