如果说飞控是无人机的大脑,那么图传系统就是无人机的“眼睛”,而我们通过无人机以上帝视角俯瞰美丽的世界。
无人机图传系统采用了适当的视频压缩技术、信号处理技术、信道编码技术、以及调制解调技术,将无人机所搭载的摄像机拍摄到的视频以无线方式实时传输到远距离接收器端的一种无线电子传输设备。
无人机图传系统如果按设备类型来分类,通常可以分为模拟图传和数字图传两大类,由于数字图传所传输的视频质量和稳定性都远远好于模拟图传系统,所以工业级应用中通常都采用数字图传。
无人机的图传主要用到1.2G、2.4G、5.8G三个频段。
2.4G和WiFi属于同频段;1.2G是管制频段,在我国目前没有1.2G开放性的业余频段,只提供取得资格证书的无线电爱好者合法使用;5.8G这个频段国家划分了开放的业余频段,在5.8G工作的设备少,干扰较少,频率高天线可以更加小型化,但频率越高电子元器件的造价就越高,对天线等精度要求就更高,更容易发热,对靠近发射机的导磁体比低频更加敏感,做大功率就比低频更困难。
目前无人机图传主流的技术有OFDM、WiFi等。OFDM(正交频分多路复用)是多载波调制的一种,更适合于高速数据的传输,在窄带带宽下也能够发出大量的数据,能够对抗频率选择性衰落或窄带干扰等等。但OFDM也有缺点,比如载波频率偏移,对相位噪声和载波频偏十分敏感,峰均比比较高。WiFi传图是具有高性价比的无人机图传技术,但WiFi在技术上做了很多限定,很多厂家都是拿方案直接搭建,芯片设计是什么格式就是什么格式无法再做修改,WiFi传图干扰管理策略实时性不强,信号利用率也比较低。
无人机图传系统构成无人机图传系统由远程服务器端、飞机端、店面中继端和手机视频控制端四个部分,比如大功率的WiFi模块一共有2个,分别嵌入无人机费继端和地面中继端。
无人机用到的大功率WiFi模块发射功率达到了+28dBm,传输距离可达2千米。大功率WiFi模块不仅仅可以实时的传输航拍相机的视频,还可以实时传递来自地面移动端,如手机等的控制信号。
为什么无线路由器的WiFi信号就传不了这么远?在频率相同的情况下,无人机可以进行远距离图传,而无线路由器的WiFi信号这么远却没有信号,很大一部分原因在于无线路由器和手机等移动终端的功率不够。国家有相关规定无线路由器的发射功率不能超过100mW(20dBm),而天线增益一般是3dBi和5dBi,一些穿墙能力突出的产品则用了6dBi、7dBi的增益天线,天线增益的信号强度提升也还是非常有限,所以无线路由器的WiFi信号在没有障碍物阻挡的情况下覆盖200米就不错了。
另外日常生活中小功率的手机、电脑等也造成了很大的局限性,造成WiFi信号明明很好,但还是没法上网或者网络质量很差的现象。
这就好比两个人同时进山,分开一段距离后,嗓门大的人喊一句嗓门小的人能听见,而嗓门小的人回应嗓门大的人,嗓门大的人却什么也听不到,自然也不会有任何的回应。
实际上手机等通过WiFi上网,需要历经三次握手的过程才能真正地建立连接上网。如果WiFi信号端发射功率很大,而手机超出了它能回应信号的最大距离就会造成明明WiFi信号很强,也能接收到信息,但死活就是发不出去信息的情况。
另外,无人机是在室外较空旷的地方飞行进行图传,而路由器的WiFi一般是在有很多障碍物的复杂环境下使用。所以路由器的WiFi信号在家里能够覆盖个10来米就已经算不错了。
WiFi是实现无人机图传的无线技术之一。
那么为什么无人机图传的WiFi信号要比普通的WiFi设备的信号强呢?
1、无人机图传WiFi模块(SKW77)发射功率:
2、普通WiFi模块发射功率(以MTK WiFi模块为例,其他基本也差不多):
无人机图传WiFi模块的发射功率最大达到了28dBm(约640mW),而普通WiFi模块的发射功率最高一般是20dBm,100mW(图例中是18dBm),两者相差非常大。
这就是无人机图传WiFi信号比普通WiFi模块强的原因。
众所周知,无人机肯定是在室外使用的,而普通WiFi设备,像手机,AP等,一般在室内使用。使用场景的不同,所采用的频率和功率就不同,这就是两者最大的区别。
无人机在室外使用,要求传输距离远,对避障、穿透等也有需求,所以一般是采用2.4GHz频段的,因为5.8GHz频段由于频率较高,穿透能力比较差。而且功率也会比室内WiFi模块来的高。室外WiFi模块最大传输距离能达到多少呢?
我们来看一下室外网桥产品排名数一数二的UBNT的网桥产品的数据。UBNT的网桥,采用基于WiFi协议的TDMA技术,加上大的发射功率以及专用的天线,有效传输距离能达到15公里。
而对于普通室内使用的WiFi设备来说,设备之间的距离比较近,一般距离就几百米。而且考虑到对人体的辐射,一般无线AP/路由器的最大功率为20dBm(100mW)。有些无线路由器有增强功能,实际增大的就是发射功率。
也就是说不是WiFi信号一直比较弱,而是会根据使用场景、距离要求等采用不同的信号强度。
图传本质上是 刚WiFi一样的TDD的一个 信息分发和传输系统。
在摄影拍摄类的无人机的应用中,图传主要用于将摄像头采集的实时数据,向下发送至用户的终端。
图传可以工作在400M、800M,当然绝大数多数的民用无人机工作在2.4G的工科医频段。 在2400到2083.5MHz频段,无人机的飞控用与WiFi 类似的跳频信号,这个跳频信号将射频能量分散,然后增加了抗干扰的能力,带宽大约为18M。图传系统大概占十兆带宽左右,如果想要高速稳定的传输高质量的图像,那图像的采集、编码、压缩就需要非常大的技术实力了。目前大疆的飞控和图传都自己做,实力都是相当不错。
因为无人机也是一个质量受限、功率受限、空间面积受限的一个综合系统。 图传的功率一定是受到限制的。
你说的WiFi的功率不如无人机的图传系统功率大。这应该是个假象,因为咱们国家工信部规定在2.4GHz的工科医频段,基本上最大的发射功率只能到0.5瓦。
之所以有你说的现象,大致是因为,WiFi传输内容的密度比不上无人机图传系统的传输密度。
这个问题比较泛,无法回答准确。
因为这样的问题无法用几句话说明白,但也不是回答越多或者就某个技术细节回答的越多就能说明白。
因为实现技术方式方法多样,技术非常有深度,也不是几本书就是能研究明白。所以回答不准确的话怕误人子弟,仅就个人实际使用经验作答。
首先无人机搭载的图传分玩具级别,航模级别,工业级别。不同级别用的技术也是天差地别。
在此仅对工业级无人机的常用图传技术做简单说说。
无人机图传用的技术很多,常用的cofdm技术,也就是码分正交频分复用,公开的技术。
WIFI本来就是短距通信,远了没信号,由应用场景和技术标准决定。
其实说白了无线电传输就是电磁波,都知道波长越长越不容易被干扰,选对频道就行,而且主要是飞得人少,干扰源少,你让10个人拿着同频段的无人机飞试试稳不稳定。
上面这个无人机图传系统介绍太理论化了,我来个直观又简单清晰的图传系统图
由大功率wifi模块搭建的无人机飞控系统,需要用到2个大功率WIFI模块,wifi模块的发射功率比较大是+28dbm,传输距离2000米
系统构成:远程服务器端、飞机端、地面中继端 和手机视频控制端四个部分,把该wifi模块分别嵌入无人机飞机端和地面中继端,一共2个
飞控系统工作机制如下:
(1)飞机端大功率WIFI模块与地面中继端的大功率wifi模块建立WIFI连接,将相机视频传给地面中继端,同时也可以通过大功率wifi模块将地面中继端传过来的控制信号传给飞控系统的MCU控制单元用以控制无人机的飞行状态、航向等等;
(2)将飞机状态信息及视频通过4G模块传给远程服务器。
(3)地面中继端负责飞机端和手机端建立中继连接。
(4)手机端负责实时视频查看和实时控制飞机各种飞行状态。
该大功率wifi模块不仅可以实时的传输航拍相机视频,还可以实时传递来自地面移动端(手机等)的控制信号!
实现思路:在客户端获取到文件流,将文件流写入到通过socket指定到某服务器的输出流中,在服务器中通过socket获取到输入流,将数据写入到指定的文件夹内,为了提供多用户同时上传,这里需要将在服务器上传客户端的文件操作放在另开启一个线程去运行。
完整代码:
[java] view plain copy
import java.net.*
import java.io.*
/*
服务端将获取到的客户端封装到单独的线程中。
*/
class JpgClient2
{
public static void main(String[] args) throws Exception
{
//检验文件
if(args.length==0)
{
System.out.println("指定一个jpg文件先!")
return
}
File file = new File(args[0])
if(!(file.exists() &&file.isFile() &&file.getName().endsWith(".jpg")))
{
System.out.println("选择文件错误,请重新选择一个正确的文件。")
return
}
//读取文件并写入到服务器中
Socket s = new Socket("192.168.137.199",9006)
FileInputStream fis = new FileInputStream(file)
OutputStream out = s.getOutputStream()
byte[] buf = new byte[1024]
int len = 0
while((len=fis.read(buf))!=-1)
{
out.write(buf,0,len)
}
//通知服务器发送数据结束
s.shutdownOutput()
//获取服务器响应
InputStream in = s.getInputStream()
byte[] bufIn = new byte[1024]
int num = in.read(bufIn)
String str = new String(bufIn,0,num)
System.out.println(str)
fis.close()
s.close()
}
}
class JpgThread implements Runnable
{
private Socket s
JpgThread(Socket s)
{
this.s = s
}
public void run()
{
int count = 1
String ip = s.getInetAddress().getHostAddress()
try
{
//获取客户端数据
InputStream in = s.getInputStream()
//指定文件存放路径将读取到客户提交的数据写入文件中
File dir = new File("c:\\pic")
File file = new File(dir,ip+"("+count+").jpg")
while(file.exists())
file = new File(dir,ip+"("+(count++)+").jpg")
FileOutputStream fos = new FileOutputStream(file)
byte[] buf = new byte[1024]
int len = 0
while((len=in.read(buf))!=-1)
{
fos.write(buf,0,len)
}
//返回上传状态给客户端
OutputStream out = s.getOutputStream()
out.write("上传文件成功".getBytes())
fos.close()
s.close()
}
catch (Exception e)
{
System.out.println(e.toString())
}
}
}
class JpgServer2
{
public static void main(String[] args)throws Exception
{
ServerSocket ss = new ServerSocket(9006)
//开启线程并发访问
while(true)
{
Socket s = ss.accept()
String ip = s.getInetAddress().getHostAddress()
System.out.println(ip+"....connected")
new Thread(new JpgThread(s)).start()
}
}
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)