新闻中心

当无人机遇到程序猿又会有哪些有趣的应用场景?

行业资讯 2017-10-19 17:48

  无人机作为会飞的相机以外,无人机还能是什么?那当无人机遇到开发者时,又会遇到哪些有趣的应用场景?今天江苏启飞应用小编久给大家说一下,当无人机遇到程序猿又会有哪些有趣的应用场景?


  说起无人机,可能普通消费者的第一反应就是高大上,无人机航拍。确实,无人机可以突破我们肉身的物理限制,作为人类肉眼的延伸,让我们可以轻而易举地探索到以前千辛万苦都难以到达的地方。


  但是除了作为一台「会飞的相机」,无人机身上所具有的其他部件,让它拥有更加广阔的想象空间。


  无人机部件·相机


  对于相机这个部件,它产生的数据当然是图像数据了。图像数据经过编码,传输到我们的手机上,这就是我们飞无人机时所看到的实时图传了:

无人机摄像画面

  作为我们肉眼的延伸,这些图传数据除了用于展示风景外,还可以进行怎么样的科技加工呢?


  VR+无人机


  首先,我们可以直接针对图传的展示形式做处理,它现在是平面的,但我们可以尝试将它变成立体的。去年是VR爆发的元年,Google等大公司也介入推进VR的发展,并提供一套比较完善的SDK来开发VR相关的特性,对于无人机软件开发者来说,这将极大地方便开发者将无人机图传转换为VR图像

无人机VR场景画面

  无人机图传传输


  我们的图传,是在移动设备上显示的。这就意味着,我们还可以利用移动设备上面的所有资源,其中最有价值的资源,当然就是网络了。通过网络,图传数据可以被传输出去:

无人机画面传输

  既可以考虑将视频数据压缩之后,利用互联网将数据发送到远端的设备上。这里可以采用主流的视频直播协议比如RTMP,又或者利用WebRTC来实现P2P数据传输,甚至还可以自行利用UDP跟TCP自定义一套传输协议。这样可以做到,你在广州飞无人机,你的家人在顺德、佛山、山东等地区观看到你通过无人机所捕获的景色,甚至还可以利用网络信号远程控制你的无人机进行拍照。


  除了通过互联网传输数据,我们也可以实现近地传输,在同一个局域网内,利用Socket直接将数据发送到目标设备上。如果在iOS上,还可以利用MultipeerConnectivity这个库,即使两台设备没有连接到同一个局域网,也可以通过P2PWi-Fi来高速传输视频数据。


  除了图传信号的共享,我们还可以将相机的控制信号指令通过网络传输出去,这其实里面就蕴含着一个很有潜力的产品雏形——多人无人机协作,可以说这里的想象空间非常大。


  GPU


  除了网络,移动设备上还有资源可以使用呢。就是它那越来越强大的CPU,还有GPU。于是,我们就可以拿着这些图传数据做一件当下相当火热的事情,机器学习(MachineLearning)。

无人机传输画面性能

  当然,要在移动设备上面训练一个模型不太现实,不过去使用一个已经有的模型还是可以应付的。比如,我们可以利用苹果开放的一些已经封装好的模型,来识别无人机图传画面上所拍摄到的主要物体都是些什么。

无人机是如何无线传输画面的

  结合上面说的「图传传输」部分,如果能将图像数据通过网络共享出去,那么图像处理的这个耗资源的操作就可以「外包」到性能更高的电脑中做处理,比如说利用OpenCV来对图像中的内容做一些特定条件筛查。


  无人机图片建模


  相机另外两种数据输出格式是照片跟视频。在测绘工作里面,有一个经典的需求,那就是生成某个区域的正射影像图。

数字正射影像图

  这里是香港科技大学的数字正射影像图(DigitalOrthophotoMap,简称DOM),第一眼看上去可能跟我们通常看到的卫星图有点类似。但其实有很大不同。首先它精度比较高,为了达到DOM所要求的精度,通常都需要无人机在低空飞行,连续拍照,最后再做合成以及纠正拼接,然后才能生成某个区域的DOM。而这里提到的纠正便是指将无人机拍出来的中心投影的影像纠正为没有透视效果的平面影像,图像经过这样的纠正处理,才具有测绘学上的意义。


  除了生成2D影像,我们还可以通过无人机采集到的图像数据来建立3D模型,利用DJI设备的热点环绕功能,环绕建筑物飞行,然后拍照,再将照片经过类似Altizure,Pix4D等处理软件进行建模处理。


  以上两款软件都是已经面向用户市场的商业化软件。但对于我们应用层的开发者来说,我们还可以尝试一下同样强大的来自OpenDroneMap开源库的WebODM,我们可以把WebODM部署在自己的电脑或者服务器上,来提供生成正射影像图以及3D模型的服务。


  无人机图片拼接


  在生成正射影像图的过程中,涉及到拼接无人机所拍照片的步骤,这容易让人想到另外一种使用场景——生成球型全景照片。利用OpenCV这个我们耳熟能详的计算机视觉神器,我们可以将无人机采集到的照片拼接起来,生成一张全景图,然后放到一些全景照片的播放器里面播放,或者是利用前面提到的VR来展示。至于照片的采集方法及思路如下:

无人机图片采集思路

  利用DJISDK提供的TimelineMission,控制无人机的云台以不同的朝向拍摄若干张照片即可。需要注意的是这样生成的全景图是没有天空的,所以这里还有一个步骤,就是补天。当然也可以用OpenCV来自动完成,做到只需要用户导入采集到的原照片,最后输出得到拼接好并且具有天空的全景图。


  部件·GPS


  WaypointMission


  很多人接触DJISDK的开发者接手的第一项任务就是开发航点规划的功能。具体点来说就是用户可以在地图上点选若干个地点,生成一条路径,接着无人机便按着这条路径自动飞行。


  但是身处中国的伙伴就要注意了,这里有一个坑,那就是国内其实存在着一个东西叫做火星坐标。如果使用的是国内的地图服务,比如高德,那么其实通过地图获取到的坐标并不是DJI的设备所需要的WGS坐标系的坐标,而是GCJ02坐标系的坐标,也就是国家测绘局的坐标。关于它诞生的来由以及这个加密解密的算法就不多说了,网上有很多资料。如果你使用的是百度地图,那就更加要注意了。因为百度地图自己又有另外一套坐标,我们暂且把它称为BD坐标系。


  如果你希望自己的产品在国内外都能顺畅使用,那比较推荐使用MapBox提供的地图服务,在国内还是国外,通过地图选点获取到的坐标都是WGS84坐标系的坐标,通俗点说就是标准的GPS坐标。而且它的数据来源并不是高德,可能是四维图新,在一些高德显示的卫星图为一片模糊的地方它依然能够清晰地显示。


  值得注意的是,在DJISDK迭代到4.1时,由于政策原因,SDK里引入了一个比较麻烦而且有点小坑的应用激活机制,并且在Realeasenote里面这提到可以保证开发者在国内可以正确的地理信息,但实际开发时,发现无人机返回的坐标数据,以及接收的坐标数据,依然是WGS84坐标系的坐标,也就是标准GPS坐标。


  无人机自动巡航

无人机自动巡航

  这是Pix4DCapture的操作界面,通过它的交互,用户可以在地图上面框选一个区域,生成一条路线来充满这个区域,接着让无人机沿着这条路线自动飞行,并且通过间隔拍照采集数据。如果再加上无人机的避障传感器,甚至还能够做到自动的障碍物巡检。


  部件·IMU


  最后要介绍的是IMU部件。一般来说,一个IMU内会装有三轴陀螺仪以及三个方向的加速度计。有了它,无人机可以告知开发者它每个时刻的姿态数据。比如说无人机的朝向,以及在三个坐标轴上的速率。那拿到这些速率之后我们又可以做些什么呢。


  试想一下,如果你是一个航拍爱好者,当你在户外一个人进行拍摄的时候,你可能需要同时控制无人机的航向以及云台的朝向。对于类似Phantom、Spark这类单云台、单镜头的机器,当你调整了云台之后,可能也会影响你对无人机的操控,因为云台的朝向可能不再跟无人机的朝向一致了。


  对于比较大的空域,我们可以考虑使用前面提到的航线规划,那如果是一块小草地上面的操控呢,当你进行了一连串的高超操作的时候,却发现有一个地方云台没有调整好,那刚才的操作岂不是白费了?


  如果可以将前面进行操作时的速率数据保存下来,然后再让无人机完美重现这次飞行操作,那我们就只需要专注于云台以及拍摄画面的调整,那上面提到的问题岂不是得到解决了吗。那么此时,IMU部件的作用就出来了,我们可以通过保存读取IMU的数据来实现这个需求了。


上一篇:环保无人机在大气环境监测应用中有哪些优势?
下一篇:BIM领域黑科技无人机除了建模还有那些应用?