6.6 其他视觉例子
6.6.1其他单飞机视觉控制例子(支持免费版)
RflyVisionTransV5
文件夹内的1到5号例子的流程与穿环的例子基本相同,请自行一一尝试。
6.6.2双飞机视觉数传HIL控制仿真验证(支持免费版)
本小节会介绍用一台电脑(Windows
系统,RflySim
主机)+2个嵌入式NX2
(Linux
系统,机载视觉计算机)+2个Pixhawk 4
飞控(仿真两个独立飞机)+两个数传模块+1个路由器(交换机)+3根网线,来进行两个飞机在同一场景中的视觉仿真验证。
注:理论上免费版只能进行单机(一台电脑+一个飞机,限制了UDP的通信)的视觉闭环,如果采用数传+飞控+机载计算机硬件仿真的方式,可以支持到2架飞机的单目仿真。
本实验连线图:相比二.(6)的实验,多用一套机载计算机+数传+Pixhawk
+网线的组合,路由器(交换机)的三个口分别接两个机载计算机+一台RflySim
主机
- 将机载计算机+
Pixhawk
+数传模块连接好,然后分成两组并编号,在路由器中设置机载计算机的DHCP
分配为固定,并记录两台机载计算机的IP地址。在本例中,一号机载计算机IP为192.168.3.81
;二号机载计算机的IP为192.168.3.82
- 为了操作方便,按照之前的配置方法对机载计算机的Linux系统进行配置(
0-Preparation\NX-TX2
开启远程访问的方法.docx
),确保在Windows
下能够远程访问到两台机载计算机。 - 确保飞控已经配置进入
HITL
模式,并且能够进行硬件在环仿真。测试方法,插入两个飞控,启动桌面RflyTools
文件夹内的HITLRun
脚本,输入两者串口号,开始仿真后,在QGC
中依次控制两个飞机起飞,如果都能起飞说明配置正确。 - 确保数传连线正确,且能收到飞机数据,并与飞机通信。测试方法:将飞控的
USB
口和数传口都插入电脑,打开QGroundControl
软件,在MAVLinkInspector
中查看HEARTBEAT
心跳包的频率是否为2Hz
(说明USB和数传口都连接上了)。 - 检查下
Pixhawk
数传TELEM1
口设置的波特率是否为57600
。检查方法,如下图所示在设置-参数 的搜索框中输入“baud”
开始搜索,查看SER_TEL1_BAUD
的数值,如果是57600
那么后续实验可直接进行。如果不是57600
,而是115200
或其他值,后续串口波特率设置的地方,都需要进行修改。Windows电脑操作阶段 Windows
电脑关闭所有RflySim
相关软件(CopterSim
,QGC
,RflySim3D
等),Pixhawk
飞控拔出电脑断电,机载计算机重新启动备用。将Windows
电脑和两个机载计算机用网线连载同一个路由器上。- 在
Windows
电脑下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。下面前三图,展示了连接嵌入式电脑1的流程图,第四图为两个机载计算机都连上后的效果图。 - 将
6-CrossRingTwo\HITLSerialDemo
下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中RflySim
主机放WindowsPC
文件夹、嵌入式电脑1放LinuxNXX1
文件夹,嵌入式电脑2放LinuxNXX2
文件夹。特别注意:一定不要拷贝错了。 - 用记事本或
VSCode
打开client_ue4_HITL.bat
脚本,确认以下关键配置语句。1)
“SET IS_BROADCAST=1”
,确保其他电脑的RflySim3D
能够收到本机的飞机数据,从而使得飞机显示在一个场景中。
2)“SET UDPSIMMODE=Mavlink_NoSend”
,由于本实验通过串口传输MAVLink
消息,不需要再通过UDP
转发MAVLink
消息,因此UDPSIMMODE
设置为Mavlink_NoSend
) - 先不要插入
Pixhawk
飞控,在Windows
电脑下双击运行“client_ue4_HITL.bat”
脚本可以看到当前电脑的串口状态,一般而言应该为空,关闭bat
脚本窗口。
然后,插入1号Pixhawk
飞控(对应机载电脑1),七八秒后,再次运行“client_ue4_HITL.bat”
脚本,可以看到1号Pixhawk
串口号,例如我这里为13,然后可以关闭bat窗口。
接着,再次插入2号Pixhawk
飞控(对应机载电脑2),七八秒后,再次运行“client_ue4_HITL.bat”
脚本,可以看到新增的Pixhawk
串口号,例如我这里是18号。
这样,我们就得到了一个1号和2号Pixhawk
飞控的串口号序列:13,18,将其输入到窗口中,回车运行。
注意:上述步骤的作用是保证1号Pixhawk
飞控对应第一个CopterSim
飞机模型,也就是说序号要对应,因此如果请检查并保证1号Pixhawk
的串口号在前,2号的在后的形式。 - 经过上述步骤,我们已经开启了两个飞机的硬件在环仿真闭环,耐心等待两个
CopterSim
显示初始化完毕,显示3D Fixed。
- 用
VSCode
打开“WindowsPC\client_ue4.py”
文件,将IP列表改成两台机载计算机的IP地址。例如,我的是192.168.3.81
和192.168.3.82
;注意,IP地址和端口号顺序不要错。 - 在
VSCode
中,运行client_ue4.py
文件,等待显示图像开始传输。 - 可以用鼠标在
RflySim3D-0
窗口中,按下键盘“S”来显示飞机ID,同时拖动鼠标,看下右侧是否有飞机2,这样可以确认本窗口为1号飞机的前置摄像头数据。测试完毕后,依次按下键盘“V 1”键,将视角切换为前置摄像头。同理可以验证下RflySim3D-1
对应的2号飞机视角。
Linux机载电脑操作阶段 - 确保数传已经连接上
Pixhawk
和机载电脑,远程进入Linux
电脑1的桌面,打开终端,在其中输入“ls -l /dev/tty\*”
,确认下数传已插入,并记录串口号,例如我这里是“/dev/ttyUSB0”
- 如果是第一次运行本例子(之后不用运行),请安装必要的
Python
依赖包,输入如下指令pip3 install pymavlink serial pyserial rospkg
- 在文件管理器中,进入
LinuxNXX1
文件夹,打开“server_ue4_Serial.py”
文件,确认下接收图像的端口号(1号电脑刚才设置的是9999
),以及串口号(刚才我的是/dev/ttyUSB0
)是否正确配置。 - 同样的道理,对机载电脑2进行确认。注意,电脑2的收图端口应该是
10000
,串口通常和电脑1(因为各自都是只插了一个串口)相同,都是/dev/ttyUSB0
- 机载电脑1中,打开终端,定位到
LinuxNXX1
文件夹,并输入“python3 server_ue4_Serial.py”
,先不要按回车。
同理,对机载电脑2,进行同样步骤,进入LinuxNXX2
文件夹,并输入“python3 server_ue4_Serial.py”
,先不要按回车。 - 现在机载电脑1中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制。两者相隔一小段时间,可以在2号飞机的
RflySim3D
窗口中观察到1号飞机的飞行轨迹。 - 飞机2视角能看到飞机1,同时,两飞机都能顺利穿越三个环并降落,说明控制正常。
6.6.3双飞机视觉数传SIL控制仿真验证(仅支持完整版)
本实验连线图:相比上个实验,减去两个Pixhawk
和数传,只需三台计算机通过网线接入路由器(交换机)
本小节会介绍用一台电脑(
Windows
系统,RflySim
主机)+2个嵌入式NX2
(Linux
系统,机载视觉计算机)+1个路由器(交换机)+3根网线,来进行两个飞机在同一场景中的视觉仿真验证。 准备阶段:
- 将机载计算机开机并连上网络,然后分成两组并编号,在路由器中设置机载计算机的
DHCP
分配为固定,并记录两台机载计算机的IP地址。在本例中,一号机载计算机IP为192.168.3.81
;二号机载计算机的IP为192.168.3.82
;同时记录RflySim
主机的IP地址,本例中为192.168.3.80
。 - 为了操作方便,按照之前的配置方法对机载计算机的
Linux
系统进行配置(0-Preparation\NX-TX2
开启远程访问的方法.docx),确保在Windows
下能够远程访问到两台机载计算机。 - 确保
RflySim
环境已经配置为px4_sitl_default
编译命令,并且能够进行软件在环仿真。测试方法,启动桌面RflyTools
文件夹内的SITLRun
脚本,输入数字2,开始仿真后,在QGC
中依次控制两个飞机起飞,如果都能起飞说明配置正确。
Windows电脑操作阶段 Windows
电脑关闭所有RflySim
相关软件(CopterSim
,QGC
,RflySim3D
等),确认将Windows
电脑和两个机载计算机用网线连载同一个路由器(交换机)上。- 在
Windows
电脑下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。下面前三图,展示了连接嵌入式电脑1的流程图,第四图为两个机载计算机都连上后的效果图。 - 将
6-CrossRingTwo\SITLUdpDemo
下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中RflySim
主机放WindowsPC
文件夹、嵌入式电脑1放LinuxNXX1
文件夹,嵌入式电脑2放LinuxNXX2
文件夹。特别注意:一定不要拷贝错了。 - 用记事本或
VS Code
打开client_ue4_HITL.bat
脚本,确认以下关键配置语句。1)
“SET IS_BROADCAST=1”
,确保其他电脑的RflySim3D
能够收到本机的飞机数据,从而使得飞机显示在一个场景中。2)
“SET UDPSIMMODE=2”
,由于本实验需要通过UDP转发MAVLink
消息,因此UDPSIMMODE
设置为2,即Mavlink_Full
)
3)“SET /A VehicleNum=2”
,用于直接启动两个飞机 - 在
Windows
电脑下双击运行“client_ue4_SITL.bat”
脚本,可以启动两个CopterSim
(对应2个飞机),两个RflySim3D
窗口(对应两个摄像头)和CMD
窗口中两个px4_sitl_default
的instance
(对应两个飞控)的例程。 - 经过上述步骤,我们已经开启了两个飞机的软件在环仿真闭环,耐心等待两个
CopterSim
显示初始化完毕,显示3D Fixed
。 - 用
VSCode
打开“WindowsPC\client_ue4.py”
文件,将IP列表改成两台机载计算机的IP地址。例如,我的是192.168.3.81
和192.168.3.82
;注意,IP地址和端口号顺序不要错。 - 在
VSCode
中,运行client_ue4.py
文件,等待显示图像开始传输。 - 可以用鼠标在
RflySim3D-0
窗口中,按下键盘“S”来显示飞机ID,同时拖动鼠标,看下右侧是否有飞机2,这样可以确认本窗口为1号飞机的前置摄像头数据。测试完毕后,依次按下键盘“V 1”键,将视角切换为前置摄像头。同理可以验证下RflySim3D-1
对应的2号飞机视角。Linux机载电脑操作阶段 - 在
Linux
电脑中,如果是第一次运行本例子(之后不用运行),请安装必要的Python
依赖包,输入如下指令pip3 install pymavlink serial pyserial rospkg
- 在文件管理器中,进入
LinuxNXX1
文件夹,打开“server_ue4.py”
文件,确认下接收图像的端口号(1号电脑刚才设置的是9999
)以及MAVLink
的UDP
接口连接为下:mav = PX4MavCtrl.PX4MavCtrler(20100,'192.168.3.80')
其中,192.168.3.80
的IP地址要改成你实际Windows
电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
。 - 同样的道理,进入机载
Linux
电脑2的LinuxNXX2
文件夹,打开“server_ue4.py”
文件,进行配置确认。注意,电脑2的收图端口应该是10000。以及MAVLink
的UDP
接口连接为下:mav = PX4MavCtrl.PX4MavCtrler(20102,'192.168.3.80')
其中,192.168.3.80
的IP地址要改成你实际Windows
电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
。 - 机载电脑1中,打开终端,定位到
LinuxNXX1
文件夹,并输入“python3 server_ue4.py”
,先不要按回车。同理,对机载电脑2,进行同样步骤,进入LinuxNXX2
文件夹,并输入“python3 server_ue4.py”
,先不要按回车。 - 现在机载电脑1中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制。两者相隔一小段时间,可以在2号飞机的
RflySim3D
窗口中观察到1号飞机的飞行轨迹。 - 飞机2视角能看到飞机1,同时,两飞机都能顺利穿越三个环并降落,说明控制正常。
备注:
上述涉及到联机的实验,在bat脚本中启用“SET IS_BROADCAST=1”
可以设置成广播方式,这种方式会向局域网内所有电脑都发送MAVLink
消息,当局域网较为复杂时,通信效率角度。因此,如果知道目标电脑的IP地址(例如,192.168.3.81
和192.168.3.82
),也可以采用下面语句来通过指定IP的方式,提升通信效率。SET IS_BROADCAST=192.168.3.81;192.168.3.82
注意,上面语句的IP地址用分号分隔。
6.6.4双电脑四飞机视觉数传SIL控制仿真验证(仅支持完整版)
RflySim3D
程序,来全局观察所有飞机动态。Windows
系统,RflySim
主机)+4个嵌入式NX2
(Linux
系统,机载视觉计算机)+2个交换机+1个路由器+8根网线,来进行四个飞机在同一场景中的视觉仿真验证。准备阶段:
- 将所有仿真电脑和嵌入式电脑按图进行组网,在路由器中设定各个设备的静态IP,并记录下来,例如,在本实验中,设定的IP地址为
Windows电脑1的IP地址为:
192.168.3.80
Windows电脑2的IP地址为:192.168.3.79
Linux电脑1的IP地址为:192.168.3.81
Linux电脑2的IP地址为:192.168.3.82
Linux电脑3的IP地址为:192.168.3.83
Linux电脑4的IP地址为:192.168.3.84
。 - 为了操作方便,按照之前的配置方法对所有机载计算机的
Linux
系统进行配置(0-Preparation\NX-TX2
开启远程访问的方法.docx),确保在Windows
下能够远程访问到两台机载计算机。 - 确保每台
Windows
电脑的RflySim
环境已经配置为px4_sitl_defaul
t编译命令,并且能够进行软件在环仿真。测试方法,启动桌面RflyTools
文件夹内的SITLRun
脚本,输入数字2,开始仿真后,在QGC
中依次控制两个飞机起飞,如果都能起飞说明配置正确。
Windows电脑1操作阶段 Windows
电脑1关闭所有RflySim
相关软件(CopterSim
,QGC
,RflySim3D
等),确认网络硬件连线正确上。- 在
Windows
电脑1下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。.注:这里远程连接Linux
电脑1和Linux
电脑2,对应IP地址为192.168.3.81
和192.168.3.82
- 将
7-CrossRingFour\SITLUdpDemo
下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows
电脑1放WindowsPC1
文件夹、Linux
电脑1放LinuxNXX1
文件夹,Linux
电脑2放LinuxNXX2
文件夹。特别注意:一定不要拷贝错了。 - 在
Windows
电脑下双击运行“7-CrossRingFour\SITLUdpDemo\WindowsPC1\client_ue4_SITL_Config.bat”
脚本,按提示依次输入下面信息
X坐标列表:0,1
Y坐标列表:0,0
起始飞机序列:1
广播IP地址:192.168.3.81,192.168.3.82
(注意:这个IP地址要改成你自己的Linux
电脑1和Linux
电脑2的IP地址)点击回车按键,即可开始仿真。注意上面脚本会生成两个飞机,坐标分别为(0,0)
和(1,0)
;起始序列为1,因此会生成1号和2号飞机;广播地址对应了两个嵌入式计算机的IP地址。 - 注:
另一种启动2个飞机的SITL仿真的方法是运行“client_ue4_SITL.bat”
,不需要输入数据即可直接运行。不过,需要注意一下字段(可用VSCode
打开来查看)SET PosXStr=0,1
(设置飞机X轴坐标序列)SET PosYStr=0,0
(设置飞机Y轴坐标序列)SET /a START_INDEX=1
(设置飞机起始序号)SET IS_BROADCAST=192.168.3.81,192.168.3.82
(设置MAVlink消息广播发送IP)SET UDPSIMMODE=2
(设置广播发送数据格式为MAVLink)start %PSP_PATH%\RflySim3D\RflySim3D.exe
(设置启动两个RflySim3D窗口) - 经过上述步骤,我们已经开启了两个飞机的软件在环仿真闭环,耐心等待两个
CopterSim
显示初始化完毕,显示3D Fixed
。 - 用VSCode打开
“SITLUdpDemo\WindowsPC1\client_ue4.py”
文件,将IP列表改成两台机载计算机的IP地址,同时修改端口号为9999
和10000
。例如,我的是192.168.3.81
和192.168.3.82
;注意,IP地址和端口号顺序不要错。 - 在
VSCode
中,运行client_ue4.py
文件,等待显示图像开始传输。Windows电脑2操作阶段 Windows
电脑2关闭所有RflySim
相关软件(CopterSim
,QGC
,RflySim3D
等),确认网络硬件连线正确上。- 在
Windows
电脑2下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。注:这里远程连接Linux
电脑3和Linux
电脑4,对应IP地址为192.168.3.83
和192.168.3.84
- 将
7-CrossRingFour\SITLUdpDemo
下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows
电脑2放WindowsPC2
文件夹、Linux
电脑3放LinuxNXX3
文件夹,Linux
电脑4放LinuxNXX4
文件夹。特别注意:一定不要拷贝错了。 - 在
Windows
电脑下双击运行“7-CrossRingFour\SITLUdpDemo\WindowsPC2\client_ue4_SITL.bat”
脚本,按提示依次输入下面信息
X坐标列表:2,3
Y坐标列表:0,0
起始飞机序列:3
广播IP地址:192.168.3.83,192.168.3.84
(注意:这个IP地址要改成你自己的Linux
电脑3和Linux
电脑4的IP地址)点击回车按键,即可开始仿真。注意上面脚本会生成两个飞机,坐标分别为(2,0)
和(3,0)
;起始序列为3,因此会生成3号和4号飞机;广播地址对应了两个嵌入式计算机的IP地址。 - 注:
另一种启动2个飞机的SITL仿真的方法是运行“client_ue4_SITL_onekey.bat”
,不需要输入数据即可直接运行。不过,需要注意一下字段(可用VSCode
打开来查看)SET PosXStr=2,3
(设置飞机X轴坐标序列)SET PosYStr=0,0
(设置飞机Y轴坐标序列)SET /a START_INDEX=3
(设置飞机起始序号)SET IS_BROADCAST=192.168.3.83,192.168.3.84
(设置MAVlink消息广播发送IP)SET UDPSIMMODE=2
(设置广播发送数据格式为MAVLink)start %PSP_PATH%\RflySim3D\RflySim3D.exe
(设置启动两个RflySim3D窗口) - 经过上述步骤,我们已经开启了3号和4号飞机的软件在环仿真闭环,耐心等待两个
CopterSim
显示初始化完毕,显示3D Fixed
。 - 用
VSCode
打开“SITLUdpDemo\WindowsPC2\client_ue4.py”
文件,将IP列表改成两台机载计算机的IP地址,同时根据前面序列,修改端口号为10001
和10002
。例如,我的是192.168.3.82
和192.168.3.83
;注意,IP地址和端口号顺序不要错。 - 此外,还需要对下面位置进行更改,将
Windows
电脑2的RflySim3D
窗口,分别切换到3号飞机和4号飞机的机体视角。mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 3',0)
mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 4',1)
- 在
VSCode
中,运行client_ue4.py
文件,等待显示图像开始传输。Linux机载电脑操作阶段 - 在所有
Linux
电脑中,如果是第一次运行本例子(之后不用运行),请安装必要的Python
依赖包,输入如下指令pip3 install pymavlink serial pyserial rospkg
- 在
Windows
电脑1中,从Windows
远程桌面访问Linux
电脑1电脑,用文件管理器进入LinuxNXX1
文件夹,打开“server_ue4.py”
文件,确认下接收图像的端口号(1号电脑刚才设置的是9999
)以及MAVLink
的UDP
接口连接为下:mav = PX4MavCtrl.PX4MavCtrler(20100,'192.168.3.80')
其中,192.168.3.80
的IP地址要改成你实际Windows
电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
。 - 同样的道理,进入机载
Linux
电脑2的LinuxNXX2
文件夹,打开“server_ue4.py”
文件,进行配置确认。注意,电脑2的收图端口应该是10000
。以及MAVLink
的UDP
接口连接为下:mav = PX4MavCtrl.PX4MavCtrler(20102,'192.168.3.80')
其中,192.168.3.80
的IP地址要改成你实际Windows
电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
。 - 然后,在
Windows
电脑2中,从Windows
远程桌面访问Linux
电脑3电脑,用文件管理器进入LinuxNXX3
文件夹,打开“server_ue4.py”
文件,确认下接收图像的端口号(Linux
电脑3刚才设置的是10001
)以及MAVLink
的UDP
接口连接为下:mav = PX4MavCtrl.PX4MavCtrler(20104,'192.168.3.79')
其中,192.168.3.79
为Windows
电脑2的IP地址,需要改成你实际Windows
电脑2的IP地址,如果实在不知道IP地址,可以填255.255.255.255
。 - 同样的道理,进入机载
Linux
电脑4的LinuxNXX4
文件夹,打开“server_ue4.py”
文件,进行配置确认。注意,Linux
电脑4的收图端口应该是10002
。以及MAVLink
的UDP
接口连接为下:mav = PX4MavCtrl.PX4MavCtrler(20106,'192.168.3.79')
其中,192.168.3.79
的IP地址要改成你实际Windows
电脑2的IP地址,如果实在不知道IP地址,可以填255.255.255.255
。 - 机载电脑1中,打开终端,定位到
LinuxNXX1
文件夹,并输入“python3 server_ue4.py”
,先不要按回车。
同理,对机载电脑2,进行同样步骤,进入LinuxNXX2
文件夹,并输入“python3 server_ue4.py”
,先不要按回车。
同理,对机载电脑3,进行同样步骤,进入LinuxNXX3
文件夹,并输入“python3 server_ue4.py”
,先不要按回车。
同理,对机载电脑4,进行同样步骤,进入LinuxNXX4
文件夹,并输入“python3 server_ue4.py”
,先不要按回车。 - 现在机载电脑4中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑3中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑1中,按下回车键,开启视觉闭环控制。可以在画面中看到各个飞机依次起飞。
- 飞机1能看到前面三个飞机,同时,四飞机都能顺利穿越三个环并降落,说明控制正常。
6.6.5双电脑四飞机视觉数传HIL控制仿真验证(仅支持完整版)
Pixhawk
飞控)需要占用一个底层交换机(至少4个网口),两个底层交换机可以接在路由器上访问外网。如果更多的电脑集群,则底层交换机可以接到多口的顶层交换机/路由器。可以额外配置一个可视化地面站电脑,运行RflySim3D
程序,来全局观察所有飞机动态。
本小节会介绍用2台电脑(Windows
系统,RflySim
主机)+4个嵌入式NX2
(Linux
系统,机载视觉计算机)+4个Pixhawk
飞控+4个数传+2个交换机+1个路由器+8根网线,来进行四个飞机在同一场景中的视觉硬件在环仿真验证。准备阶段:
- 将所有仿真电脑和嵌入式电脑按图进行组网,在路由器中设定各个设备的静态IP,并记录下来,例如,在本实验中,设定的IP地址为
Windows电脑1的IP地址为:
192.168.3.80
Windows电脑2的IP地址为:192.168.3.79
Linux电脑1的IP地址为:192.168.3.81
Linux电脑2的IP地址为:192.168.3.82
Linux电脑3的IP地址为:192.168.3.83
Linux电脑4的IP地址为:192.168.3.84
。 - 为了操作方便,按照之前的配置方法对所有机载计算机的Linux系统进行配置(
0-Preparation\NX-TX2
开启远程访问的方法.docx),确保在Windows
下能够远程访问到两台机载计算机。 - 确保每台
Windows
电脑的RflySim
环境已经配置正确,确保每个Pixhawk
都以配置正确,并且能够进行软件在环仿真。测试方法,启动桌面RflyTools
文件夹内的SITLRun
脚本,输入数字2,开始仿真后,在QGC
中依次控制两个飞机起飞,如果都能起飞说明配置正确。 - 确保飞控已经配置进入
HITL
模式,并且能够进行硬件在环仿真。测试方法,插入两个飞控,启动桌面RflyTools
文件夹内的HITLRun
脚本,输入两者串口号,开始仿真后,在QGC
中依次控制两个飞机起飞,如果都能起飞说明配置正确。 - 确保数传连线正确,且能收到飞机数据,并与飞机通信。
- 确认数传的波特率是否为
57600
Windows电脑**1**操作阶段 Windows
电脑1关闭所有RflySim
相关软件(CopterSim
,QGC
,RflySim3D
等),确认网络硬件连线正确上。- 在
Windows
电脑1下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。.注:这里远程连接Linux
电脑1和Linux
电脑2,对应IP地址为192.168.3.81
和192.168.3.82
- 将
7-CrossRingFour\HITLSerialDemo
下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows
电脑1放WindowsPC1
文件夹、Linux
电脑1放LinuxNXX1
文件夹,Linux
电脑2放LinuxNXX2
文件夹。特别注意:一定不要拷贝错了。 Windows
电脑1中插入1号飞控,几秒钟后再插入2号飞控,然后在Windows
电脑下双击运行“7-CrossRingFour\HITLSerialDemo\WindowsPC1\client_ue4_HITL_Config.bat”
脚本,按提示依次输入下面信息
两个飞控串口号:*,*(1号飞控串口号,2号飞控串口号,这里顺序不能错!)
X坐标列表:0,1 (飞机X坐标序列)
Y坐标列表:0,0(飞机Y坐标序列)
起始飞机序列:1(飞机起始序号)点击回车按键,即可开始仿真。注意上面脚本会生成两个飞机,坐标分别为(0,0)
和(1,0)
;起始序列为1,因此会生成1号和2号飞机;广播地址对应了两个嵌入式计算机的IP地址。- 注:另一种启动2个飞机的HITL仿真的方法是运行
client_ue4_HITL.bat”
,不需要输入数据即可直接运行。不过,需要注意一下字段(可用VSCode
打开来查看)SET PosXStr=0,1
(设置飞机X轴坐标序列)SET PosYStr=0,0
(设置飞机Y轴坐标序列)SET /a START_INDEX=1
(设置飞机起始序号)SET IS_BROADCAST=1
(设置消息方式为广播)SET UDPSIMMODE=Mavlink_NoSend
(这里不需要发送MAVLink消息,设置为不发送模式)start %PSP_PATH%\RflySim3D\RflySim3D.exe
(设置启动两个RflySim3D窗口) - 经过上述步骤,我们已经开启了两个飞机的硬件在环仿真闭环,耐心等待两个
CopterSim
显示初始化完毕,显示3D Fixed
。 - 用
VSCode
打开“HITLSerialDemo\WindowsPC1\client_ue4.py”
文件,将IP列表改成两台机载计算机的IP地址,同时修改端口号为9999
和10000
。例如,我的是192.168.3.81
和192.168.3.82
;注意,IP地址和端口号顺序不要错。 - 在
VSCode
中,运行client_ue4.py
文件,等待显示图像开始传输。Windows电脑2操作阶段 Windows
电脑2关闭所有RflySim
相关软件(CopterSim
,QGC
,RflySim3D
等),确认网络硬件连线正确上。- 在
Windows
电脑2下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。注:这里远程连接Linux
电脑3和Linux
电脑4,对应IP地址为192.168.3.83
和192.168.3.84
- 将
7-CrossRingFour\HITLSerialDemo
下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows
电脑2放WindowsPC2
文件夹、Linux
电脑3放LinuxNXX3
文件夹,Linux
电脑4放LinuxNXX4
文件夹。特别注意:一定不要拷贝错了。 - 在
Windows
电脑2中插入3号飞控,几秒钟后再插入4号飞控,然后在Windows
电脑2下双击运行“7-CrossRingFour\HITLSerialDemo\WindowsPC2\client_ue4_HITL.bat”
脚本,按提示依次输入下面信息
两个飞控串口号:*,*(3号飞控串口号,4号飞控串口号,这里顺序不能错!)
X坐标列表:2,3
Y坐标列表:0,0
起始飞机序列:3点击回车按键,即可开始仿真。注意上面脚本会生成两个飞机,坐标分别为(2,0)
和(3,0)
;起始序列为3,因此会生成3号和4号飞机;广播地址对应了两个嵌入式计算机的IP地址。 - 注:
另一种启动2个飞机的HITL仿真的方法是运行
“client_ue4_HITL_onekey.bat”
,不需要输入数据即可直接运行。不过,需要注意一下字段(可用VSCode打开来查看)SET PosXStr=2,3
(设置飞机X轴坐标序列)SET PosYStr=0,0
(设置飞机Y轴坐标序列)SET /a START_INDEX=3
(设置飞机起始序号)SET IS_BROADCAST=1
(设置消息方式为广播)SET UDPSIMMODE=Mavlink_NoSend
(这里不需要发送MAVLink消息,设置为不发送模式)start %PSP_PATH%\RflySim3D\RflySim3D.exe
(设置启动两个RflySim3D窗口) - 经过上述步骤,我们已经开启了3号和4号飞机的软件在环仿真闭环,耐心等待两个
CopterSim
显示初始化完毕,显示3D Fixed
。 - 用
VSCode
打开“HITLSerialDemo\WindowsPC2\client_ue4.py”
文件,将IP列表改成两台机载计算机的IP地址,同时根据前面序列,修改端口号为10001
和10002
。例如,我的是192.168.3.82
和192.168.3.83
;注意,IP地址和端口号顺序不要错。 - 此外,还需要对下面位置进行更改,将
Windows
电脑2的RflySim3D
窗口,分别切换到3号飞机和4号飞机的机体视角。mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 3',0)
mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 4',1)
- 在VSCode中,运行
client_ue4.py
文件,等待显示图像开始传输。Linux机载**电脑操作阶段** - 在所有
Linux
电脑中,如果是第一次运行本例子(之后不用运行),请安装必要的Python
依赖包,输入如下指令pip3 install pymavlink serial pyserial rospkg
- 在
Windows
电脑1中,从Windows
远程桌面访问Linux
电脑1电脑,用文件管理器进入LinuxNXX1
文件夹,打开“server_ue4_Serial.py”
文件,确认下接收图像的端口号(1号电脑刚才设置的是9999
)以及MAVLink
的串口接口连接为下:mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
注意:这里我使用Pixhawk
默认的波特率为57600
,请确认并修改为自己设置的波特率。 - 同样的道理,进入机载
Linux
电脑2的LinuxNXX2
文件夹,打开“server_ue4_Serial.py”
文件,进行配置确认。注意,电脑2的收图端口应该是10000
。以及MAVLink
的串口接口连接为下:mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
- 然后,在
Windows
电脑2中,从Windows
远程桌面访问Linux
电脑3电脑,用文件管理器进入LinuxNXX3
文件夹,打开“server_ue4_Serial.py”
文件,确认下接收图像的端口号(Linux电脑3刚才设置的是10001
)以及MAVLink
的串口接口连接为下:mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
- 同样的道理,进入机载
Linux
电脑4的LinuxNXX4
文件夹,打开“server_ue4_Serial.py”
文件,进行配置确认。注意,Linux
电脑4的收图端口应该是10002
。 以及MAVLink
的串口接口连接为下:mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
- 机载电脑1中,打开终端,定位到
LinuxNXX1
文件夹,并输入“python3 server_ue4_Serial.py”
,先不要按回车。
同理,对机载电脑2,进行同样步骤,进入LinuxNXX2
文件夹,并输入“python3 server_ue4_Serial.py”
,先不要按回车。 同理,对机载电脑3,进行同样步骤,进入LinuxNXX3
文件夹,并输入“python3 server_ue4_Serial.py”
,先不要按回车。
同理,对机载电脑4,进行同样步骤,进入LinuxNXX4
文件夹,并输入“python3 server_ue4_Serial.py”
,先不要按回车。 - 现在机载电脑4中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑3中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑1中,按下回车键,开启视觉闭环控制。可以在画面中看到各个飞机依次起飞。
- 飞机1能看到前面三个飞机,同时,四飞机都能顺利穿越三个环并降落,说明控制正常。
6.6.6任意多电脑和飞机视觉在环仿真验证(仅支持完整版,单目视觉例程)
Windows
电脑和NX机载计算机的IP地址。我们编写了一个脚本,根据输入的
Excel
版本集群配置文件,直接生成所有电脑的执行文件夹,这样可以大大简化适配流程。 - 打开
RflySimAPIs\PythonVisionAPI\RflyVisionTransV5\8-CrossRingAny
文件夹,找到Config.xlsx
文件,在其中配置需要仿真的参数和飞机数量 - 在上面的Excel表格中,可以配置每个飞机的位置和偏航角,设定HIL或者SIL仿真,设定是否用数传串口,以及串口的波特率;还可以设置飞机模型、地图名字等。
- 默认的
“Config.xlsx”
文件是一个2台电脑4个飞机的例程,用MATLAB
运行“ConfigWrite.m”
脚本,会自动生成如下文件夹本例程功能与前面的例子完全相同,请按类似的步骤进行实验验证。 “Config5.xlsx”
展示了一个5个飞机的例子,三台电脑2 2 1构型,即分别跑2个飞机、2个飞机和1个飞机。运行脚本后生成如图所示- 将上述文件夹,拷贝到对应的电脑中,直接运行即可。需要注意,在HIL仿真时,飞控USB应该按顺序插入电脑。