前言
使用4G网络实现无人机地面端与天空端实时通信,并基于蒲公英cloudVPN组网技术实现广域网内的异地组网,进一步实现不限制距离的空地多机远程组网系统。
cloudVPN组网无需公网IP,需要注册一个花生壳账户,并将蒲公英X1盒子绑定到账户中,另外,还需要给访问端的电脑安装蒲公英访问端并登录账户绑定软件成员。
该方法的优势:不受公网IP的限制,以及不受距离的限制,理论上可以实现4G信号覆盖范围内的任意组网远程连接。
已有方案对比
PX4和Ardupilot官方均有通过4G LTE进行VPN组网的相关教程,采用zerotier实现。
Companion Computer Peripherals | PX4 User Guide
缺点:
- zerotier服务是开源的,采用基于P2P的技术实现VPN组网,相对于闭源的蒲公英组网方案来说延迟较大,而且无法通过硬件的指示灯状态判断当前组网情况。
- 国内由于网络等限制,zerotier服务可能不稳定,容易出现空中断联等情况。
优点:
- zerotier服务免费,不限制登录设备。
- 无需组网路由器,直接将4G LTE上网卡插入到机载计算机,设置zerotier组网服务开机启动即可。
注意事项
- (重点)4G网络可能存在一定的不稳定性,为了保证安全的前提下,建议至少安装另外一套远距离数传,并保持飞行全程实时连接至备用地面站。
- 蒲公英组网免费配置最多只能连接一个硬件端和两个软件端,这里我们配置X1组网盒子为硬件端,两个软件端分别配置为平板电脑端和地面站计算机端。
- 4G上网卡的IP地址默认为192.168.8.1,但是不要误认为该上网卡负责DHCP和DNS服务,而将蒲公英X1组网盒子设为旁路模式(具体什么是旁路可以搜一下)。正确的做法是将X1盒子设置为路由器模式,由X1盒子分配DHCP和DNS。
- 异地组网一定要先打开组网访问端,并确定参与组网的硬件设备和软件成员是否在线,可以先互相ping一下看看是否组网成功。
硬件配置
这里我们以一套天空端和一套地面端为例:
- 天空端:
Holybro Pixhawk 4飞控(pix系列飞控都可以,不限制)
采用4G上网卡+蒲公英X1组网盒子实现天空端4G网络功能
机载计算机为jetson xavier nx,通过千兆网线连接到蒲公英X1组网盒子
无线数传采用insight数传(最好是传输距离>2km的)
4G上网卡推荐型号:华为EC3372-871
注:4G上网卡型号有具体要求,可参考蒲公英X1手册说明 - 地面端:
采用4G无线路由器实现地面端4G网络功能(也可使用普通路由器,具体取决于功能)
地面端计算机为Thinkpad E450,安装Ubuntu 18,04操作系统,通过千兆网线连接到4G无线路由器
飞手端平板电脑采用小米平板4plus,通过WiFi连接至数传地面端
4G路由器推荐型号:华为B315s-936
注:4G路由器无具体要求,建议使用千兆路由器
天空端和地面端各自需要一张物联网卡。
软件配置
一、蒲公英X1组网盒子配置3G/4G USB适配器
具体配置方式可参考如下链接:
以下摘录出需要我们配置的内容,供大家参考:
◆接线:
使用USB上网适配器上网时,接线如下图:
这里连接电脑的部分改成连接jetson xavier nx
**①将3G/4G USB上网适配器接入蒲公英X1侧面USB接口;**注:目前蒲公英X1支持的USB上网适配器型号——戳我了解。
**②将网线一端接入路由器X1网口,另一端接入电脑网口;**注:如果您希望通过笔记本电脑、平板、手机等无线方式配置路由器,此处可不连计算机。
③连接电源适配器。
确认您电脑的IP地址是自动获取的情况下,打开浏览器地址栏输入:
进入【本地管理】页面。在【上网设置】处,选择上网方式为:3G/4G USB适配器。
然后根据网卡的类型来配置上网即可。
注:物联网卡需激活后才能插入到4G上网卡中使用,否则会提示无网络连接。
二、蒲公英X1组网盒子修改WiFi名称、密码,以及IP地址
蒲公英X1组网盒子默认WiFi无密码,建议配置密码
注意:一定要把蒲公英X1有线连接机载计算机的IP地址与MAC绑定,否则下一次重启无人机之后可能无法通过原IP地址连接成功。
具体设置方法浏览器输入pgybox.oray.com,找到左边菜单栏中的 网络设置 → DHCP设置 → DHCP静态分配选项,绑定机载计算机对应的静态IP。
之后用电脑WiFi无线连接至蒲公英X1组网盒子,输入192.168.8.1进入4G上网卡管理界面,查看4G网络连接情况。
Tips: 此处如果能正常连接WiFi,但是无法上网,可以把4G上网卡拔下来插在电脑上面试一下网络是否通畅。
三、机载计算机配置
机载计算机安装nomachine软件,配置openssh-server以及vsftpd等常用服务。
机载计算机通过网线连接到蒲公英X1组网盒子的LAN口(盒子本身有无线wifi功能,但是有线延迟比无线小一些,可以选一条短一点的网线接上),此时机载计算机网络端口相关内容不需要任何配置改动。
建议机载计算机不手动指定IP地址,采用蒲公英X1分配IP地址,并绑定硬件MAC地址。
机载计算机配置数传可采用3.1和3.2两种方式其中一种,也可两种方式都配置,但需注意UDP端口冲突的问题。
3.1 mavros配置UDP数传(非必要,可使用mavlink-router代替)
安装mavros功能包,并且正确启动mavros px4节点后,方可使用地面端UDP协议通信。
需要修改启动文件中下面这一行的数值:
<param name="gcs_url" value="" />
参考如下教程:
px4 UDP实现WIFI数传_RENyunfan-CSDN博客
3.2 单独配置mavlink路由器(非必要,可使用UDP数传代替)
使用MAVLink路由器,mavlink-router可以被用来路由从localhost到外部接口的包。
至于为什么叫MAVLink路由器,是因为该服务起到的作用就是使MAVLink数据流能在已配置的网络端口和串口之间无障碍双向通信,类似于透明网桥(无防火墙阻碍的透明网络桥接传输)的功能,学过计算机网络的同学可能这里更容易理解一些。
官方GitHub教程如下:
第三方教程:
6. Install and setup mavlink-router
编译安装好mavlink-router之后就需要修改对应的配置文件,添加对应的串口和本地转发以及地面站转发。
之后重启对应的服务,即可实现服务开机自动启动。
注:
- mavlink-routerd命令-e后面接的参数是mavlink数据转发的IP地址,IP地址填写本机IP地址和转发的IP地址即可,如果担心由于DHCP等服务导致转发的IP地址失效,这里可不填转发的IP地址。
- mavlink-routerd命令和service服务的方式启动效果是一样的,区别是前者需要读取-e后接的命令行参数根据IP和端口新建对应的路由连接,后者通过已配置好的main.conf配置文件自动读取相应的IP和端口同样新建对应的路由连接。
- QGC地面站默认参数状态下响应来自于本机IP地址下的14550端口的UDP协议mavlink信息,如果main.conf配置文件中未添加转发的IP地址或转发的IP地址发生变化,则需要在QGC地面站中手动指定对应的参数,并重新连接。
- mavlink-router服务启动后,如果需要再启动mavros节点,mavros节点中的gcs_url参数需要设置为空,或修改端口为与mavlink-router服务端口不一致的其他端口号,否则会出现端口冲突。
3.3 配置ROS主从机(非必要)
注意区分主从机,机载端是主机,而地面端是从机。
参考如下教程:
一遍成功的ROS主从机详细配置_zhanghm1995的博客-CSDN博客_ros主从机设置
四、地面站计算机配置
地面站计算机连接至地面端4G路由器,安装蒲公英Linux版访问端与nomachine软件,同样需要配置主从机。
注意:配置主从机的时候,IP地址要填写蒲公英X1分配给机载计算机用于组网的IP地址。
区分方法为:组网的IP默认是10.X.X.X的,而其他内网的IP默认很可能是192.168.X.X的。
五、测试连接
- 上电启动:先给无人机上电启动,此时蒲公英X1盒子和机载计算机以及4G上网卡同步启动。等待蒲公英X1盒子指示灯变成蓝色常亮后,说明网络已成功连接。
- 机载计算机远程访问:之后确保地面站计算机的蒲公英访问端处于运行状态下,先查看组网硬件连接情况,确认上线之后打开nomachine软件,IP地址填写蒲公英X1分配给机载计算机用于组网的IP地址。端口和协议保持不变,之后点击连接,输入用户名和密码即可成功访问到机载计算机。
- ROS主从机连接:在地面站计算机上面启动roscore节点和其他需要的节点即可。
- QGC地面站连接:检查地面站是否已经自动连接成功,如果提示连接失败,需要手动配置对应的连接信息。