6.6 其他视觉例子

本节导航


6.6.1其他单飞机视觉控制例子(支持免费版)

RflyVisionTransV5文件夹内的1到5号例子的流程与穿环的例子基本相同,请自行一一尝试。


6.6.2双飞机视觉数传HIL控制仿真验证(支持免费版)

本小节会介绍用一台电脑(Windows系统,RflySim主机)+2个嵌入式NX2Linux系统,机载视觉计算机)+2个Pixhawk 4飞控(仿真两个独立飞机)+两个数传模块+1个路由器(交换机)+3根网线,来进行两个飞机在同一场景中的视觉仿真验证。

注:理论上免费版只能进行单机(一台电脑+一个飞机,限制了UDP的通信)的视觉闭环,如果采用数传+飞控+机载计算机硬件仿真的方式,可以支持到2架飞机的单目仿真。


本实验连线图:相比二.(6)的实验,多用一套机载计算机+数传+Pixhawk+网线的组合,路由器(交换机)的三个口分别接两个机载计算机+一台RflySim主机

准备阶段

  1. 将机载计算机+Pixhawk+数传模块连接好,然后分成两组并编号,在路由器中设置机载计算机的DHCP分配为固定,并记录两台机载计算机的IP地址。在本例中,一号机载计算机IP为192.168.3.81;二号机载计算机的IP为192.168.3.82
  2. 为了操作方便,按照之前的配置方法对机载计算机的Linux系统进行配置(0-Preparation\NX-TX2开启远程访问的方法.docx),确保在Windows下能够远程访问到两台机载计算机。
  3. 确保飞控已经配置进入HITL模式,并且能够进行硬件在环仿真。测试方法,插入两个飞控,启动桌面RflyTools文件夹内的HITLRun脚本,输入两者串口号,开始仿真后,在QGC中依次控制两个飞机起飞,如果都能起飞说明配置正确。
  4. 确保数传连线正确,且能收到飞机数据,并与飞机通信。测试方法:将飞控的USB口和数传口都插入电脑,打开QGroundControl软件,在MAVLinkInspector中查看HEARTBEAT心跳包的频率是否为2Hz(说明USB和数传口都连接上了)。
  5. 检查下Pixhawk数传TELEM1口设置的波特率是否为57600。检查方法,如下图所示在设置-参数 的搜索框中输入“baud”开始搜索,查看SER_TEL1_BAUD的数值,如果是57600那么后续实验可直接进行。如果不是57600,而是115200或其他值,后续串口波特率设置的地方,都需要进行修改。

    Windows电脑操作阶段
  6. Windows电脑关闭所有RflySim相关软件(CopterSimQGCRflySim3D等),Pixhawk飞控拔出电脑断电,机载计算机重新启动备用。将Windows电脑和两个机载计算机用网线连载同一个路由器上。
  7. Windows电脑下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。下面前三图,展示了连接嵌入式电脑1的流程图,第四图为两个机载计算机都连上后的效果图。



  8. 6-CrossRingTwo\HITLSerialDemo下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中RflySim主机放WindowsPC文件夹、嵌入式电脑1放LinuxNXX1文件夹,嵌入式电脑2放LinuxNXX2文件夹。特别注意:一定不要拷贝错了。
  9. 用记事本或VSCode打开client_ue4_HITL.bat脚本,确认以下关键配置语句。

    1)“SET IS_BROADCAST=1”,确保其他电脑的RflySim3D能够收到本机的飞机数据,从而使得飞机显示在一个场景中。
    2)“SET UDPSIMMODE=Mavlink_NoSend”,由于本实验通过串口传输MAVLink消息,不需要再通过UDP转发MAVLink消息,因此UDPSIMMODE设置为Mavlink_NoSend

  10. 先不要插入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号的在后的形式。
  11. 经过上述步骤,我们已经开启了两个飞机的硬件在环仿真闭环,耐心等待两个CopterSim显示初始化完毕,显示3D Fixed。
  12. VSCode打开“WindowsPC\client_ue4.py”文件,将IP列表改成两台机载计算机的IP地址。例如,我的是192.168.3.81192.168.3.82;注意,IP地址和端口号顺序不要错。
  13. VSCode中,运行client_ue4.py文件,等待显示图像开始传输。
  14. 可以用鼠标在RflySim3D-0窗口中,按下键盘“S”来显示飞机ID,同时拖动鼠标,看下右侧是否有飞机2,这样可以确认本窗口为1号飞机的前置摄像头数据。测试完毕后,依次按下键盘“V 1”键,将视角切换为前置摄像头。同理可以验证下RflySim3D-1对应的2号飞机视角。

    Linux机载电脑操作阶段
  15. 确保数传已经连接上Pixhawk和机载电脑,远程进入Linux电脑1的桌面,打开终端,在其中输入“ls -l /dev/tty\*”,确认下数传已插入,并记录串口号,例如我这里是“/dev/ttyUSB0”
  16. 如果是第一次运行本例子(之后不用运行),请安装必要的Python依赖包,输入如下指令
    pip3 install pymavlink serial pyserial rospkg
  17. 在文件管理器中,进入LinuxNXX1文件夹,打开“server_ue4_Serial.py”文件,确认下接收图像的端口号(1号电脑刚才设置的是9999),以及串口号(刚才我的是/dev/ttyUSB0)是否正确配置。
  18. 同样的道理,对机载电脑2进行确认。注意,电脑2的收图端口应该是10000,串口通常和电脑1(因为各自都是只插了一个串口)相同,都是/dev/ttyUSB0
  19. 机载电脑1中,打开终端,定位到LinuxNXX1文件夹,并输入“python3 server_ue4_Serial.py”,先不要按回车。

    同理,对机载电脑2,进行同样步骤,进入LinuxNXX2文件夹,并输入“python3 server_ue4_Serial.py”,先不要按回车。
  20. 现在机载电脑1中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制。两者相隔一小段时间,可以在2号飞机的RflySim3D窗口中观察到1号飞机的飞行轨迹。
  21. 飞机2视角能看到飞机1,同时,两飞机都能顺利穿越三个环并降落,说明控制正常。

6.6.3双飞机视觉数传SIL控制仿真验证(仅支持完整版)

本实验连线图:相比上个实验,减去两个Pixhawk和数传,只需三台计算机通过网线接入路由器(交换机)


本小节会介绍用一台电脑(Windows系统,RflySim主机)+2个嵌入式NX2Linux系统,机载视觉计算机)+1个路由器(交换机)+3根网线,来进行两个飞机在同一场景中的视觉仿真验证。

准备阶段

  1. 将机载计算机开机并连上网络,然后分成两组并编号,在路由器中设置机载计算机的DHCP分配为固定,并记录两台机载计算机的IP地址。在本例中,一号机载计算机IP为192.168.3.81;二号机载计算机的IP为192.168.3.82;同时记录RflySim主机的IP地址,本例中为192.168.3.80
  2. 为了操作方便,按照之前的配置方法对机载计算机的Linux系统进行配置(0-Preparation\NX-TX2开启远程访问的方法.docx),确保在Windows下能够远程访问到两台机载计算机。
  3. 确保RflySim环境已经配置为px4_sitl_default编译命令,并且能够进行软件在环仿真。测试方法,启动桌面RflyTools文件夹内的SITLRun脚本,输入数字2,开始仿真后,在QGC中依次控制两个飞机起飞,如果都能起飞说明配置正确。
    Windows电脑操作阶段
  4. Windows电脑关闭所有RflySim相关软件(CopterSimQGCRflySim3D等),确认将Windows电脑和两个机载计算机用网线连载同一个路由器(交换机)上。
  5. Windows电脑下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。下面前三图,展示了连接嵌入式电脑1的流程图,第四图为两个机载计算机都连上后的效果图。



  6. 6-CrossRingTwo\SITLUdpDemo下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中RflySim主机放WindowsPC文件夹、嵌入式电脑1放LinuxNXX1文件夹,嵌入式电脑2放LinuxNXX2文件夹。特别注意:一定不要拷贝错了。
  7. 用记事本或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”,用于直接启动两个飞机


  8. Windows电脑下双击运行“client_ue4_SITL.bat”脚本,可以启动两个CopterSim(对应2个飞机),两个RflySim3D窗口(对应两个摄像头)和CMD窗口中两个px4_sitl_defaultinstance(对应两个飞控)的例程。
  9. 经过上述步骤,我们已经开启了两个飞机的软件在环仿真闭环,耐心等待两个CopterSim显示初始化完毕,显示3D Fixed
  10. VSCode打开“WindowsPC\client_ue4.py”文件,将IP列表改成两台机载计算机的IP地址。例如,我的是192.168.3.81192.168.3.82;注意,IP地址和端口号顺序不要错。
  11. VSCode中,运行client_ue4.py文件,等待显示图像开始传输。
  12. 可以用鼠标在RflySim3D-0窗口中,按下键盘“S”来显示飞机ID,同时拖动鼠标,看下右侧是否有飞机2,这样可以确认本窗口为1号飞机的前置摄像头数据。测试完毕后,依次按下键盘“V 1”键,将视角切换为前置摄像头。同理可以验证下RflySim3D-1对应的2号飞机视角。

    Linux机载电脑操作阶段
  13. Linux电脑中,如果是第一次运行本例子(之后不用运行),请安装必要的Python依赖包,输入如下指令
    pip3 install pymavlink serial pyserial rospkg
  14. 在文件管理器中,进入LinuxNXX1文件夹,打开“server_ue4.py”文件,确认下接收图像的端口号(1号电脑刚才设置的是9999

    以及MAVLinkUDP接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler(20100,'192.168.3.80') 其中,192.168.3.80的IP地址要改成你实际Windows电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
  15. 同样的道理,进入机载Linux电脑2的LinuxNXX2文件夹,打开“server_ue4.py”文件,进行配置确认。注意,电脑2的收图端口应该是10000。

    以及MAVLinkUDP接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler(20102,'192.168.3.80') 其中,192.168.3.80的IP地址要改成你实际Windows电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
  16. 机载电脑1中,打开终端,定位到LinuxNXX1文件夹,并输入“python3 server_ue4.py”,先不要按回车。同理,对机载电脑2,进行同样步骤,进入LinuxNXX2文件夹,并输入“python3 server_ue4.py”,先不要按回车。
  17. 现在机载电脑1中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制。两者相隔一小段时间,可以在2号飞机的RflySim3D窗口中观察到1号飞机的飞行轨迹。
  18. 飞机2视角能看到飞机1,同时,两飞机都能顺利穿越三个环并降落,说明控制正常。
    备注:
    上述涉及到联机的实验,在bat脚本中启用“SET IS_BROADCAST=1”可以设置成广播方式,这种方式会向局域网内所有电脑都发送MAVLink消息,当局域网较为复杂时,通信效率角度。因此,如果知道目标电脑的IP地址(例如,192.168.3.81192.168.3.82),也可以采用下面语句来通过指定IP的方式,提升通信效率。
    SET IS_BROADCAST=192.168.3.81;192.168.3.82
    注意,上面语句的IP地址用分号分隔。

6.6.4双电脑四飞机视觉数传SIL控制仿真验证(仅支持完整版)

本实验连线图:每台电脑(配对两个机载计算机)需要占用一个底层交换机(至少4个口,推荐下图的5口交换机),两个底层交换机可以接在路由器上访问外网。如果更多的电脑集群,则底层交换机可以接到多口的顶层交换机/路由器。可以额外配置一个可视化地面站电脑,运行RflySim3D程序,来全局观察所有飞机动态。

本小节会介绍用2台电脑(Windows系统,RflySim主机)+4个嵌入式NX2Linux系统,机载视觉计算机)+2个交换机+1个路由器+8根网线,来进行四个飞机在同一场景中的视觉仿真验证。
准备阶段

  1. 将所有仿真电脑和嵌入式电脑按图进行组网,在路由器中设定各个设备的静态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

  2. 为了操作方便,按照之前的配置方法对所有机载计算机的Linux系统进行配置(0-Preparation\NX-TX2开启远程访问的方法.docx),确保在Windows下能够远程访问到两台机载计算机。
  3. 确保每台Windows电脑的RflySim环境已经配置为px4_sitl_default编译命令,并且能够进行软件在环仿真。测试方法,启动桌面RflyTools文件夹内的SITLRun脚本,输入数字2,开始仿真后,在QGC中依次控制两个飞机起飞,如果都能起飞说明配置正确。
    Windows电脑1操作阶段
  4. Windows电脑1关闭所有RflySim相关软件(CopterSimQGCRflySim3D等),确认网络硬件连线正确上。
  5. Windows电脑1下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。.注:这里远程连接Linux电脑1和Linux电脑2,对应IP地址为192.168.3.81192.168.3.82
  6. 7-CrossRingFour\SITLUdpDemo下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows电脑1放WindowsPC1文件夹、Linux电脑1放LinuxNXX1文件夹,Linux电脑2放LinuxNXX2文件夹。特别注意:一定不要拷贝错了。
  7. 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地址。
  8. 注:
    另一种启动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窗口)

  9. 经过上述步骤,我们已经开启了两个飞机的软件在环仿真闭环,耐心等待两个CopterSim显示初始化完毕,显示3D Fixed
  10. 用VSCode打开“SITLUdpDemo\WindowsPC1\client_ue4.py”文件,将IP列表改成两台机载计算机的IP地址,同时修改端口号为999910000。例如,我的是192.168.3.81192.168.3.82;注意,IP地址和端口号顺序不要错。
  11. VSCode中,运行client_ue4.py文件,等待显示图像开始传输。

    Windows电脑2操作阶段
  12. Windows电脑2关闭所有RflySim相关软件(CopterSimQGCRflySim3D等),确认网络硬件连线正确上。
  13. Windows电脑2下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。注:这里远程连接Linux电脑3和Linux电脑4,对应IP地址为192.168.3.83192.168.3.84
  14. 7-CrossRingFour\SITLUdpDemo下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows电脑2放WindowsPC2文件夹、Linux电脑3放LinuxNXX3文件夹,Linux电脑4放LinuxNXX4文件夹。特别注意:一定不要拷贝错了。
  15. 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地址。
  16. 注:
    另一种启动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窗口)

  17. 经过上述步骤,我们已经开启了3号和4号飞机的软件在环仿真闭环,耐心等待两个CopterSim显示初始化完毕,显示3D Fixed
  18. VSCode打开“SITLUdpDemo\WindowsPC2\client_ue4.py”文件,将IP列表改成两台机载计算机的IP地址,同时根据前面序列,修改端口号为1000110002。例如,我的是192.168.3.82192.168.3.83;注意,IP地址和端口号顺序不要错。
  19. 此外,还需要对下面位置进行更改,将Windows电脑2的RflySim3D窗口,分别切换到3号飞机和4号飞机的机体视角。
    mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 3',0) mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 4',1)
  20. VSCode中,运行client_ue4.py文件,等待显示图像开始传输。

    Linux机载电脑操作阶段
  21. 在所有Linux电脑中,如果是第一次运行本例子(之后不用运行),请安装必要的Python依赖包,输入如下指令
    pip3 install pymavlink serial pyserial rospkg
  22. Windows电脑1中,从Windows远程桌面访问Linux电脑1电脑,用文件管理器进入LinuxNXX1文件夹,打开“server_ue4.py”文件,确认下接收图像的端口号(1号电脑刚才设置的是9999

    以及MAVLinkUDP接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler(20100,'192.168.3.80')

    其中,192.168.3.80的IP地址要改成你实际Windows电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
  23. 同样的道理,进入机载Linux电脑2的LinuxNXX2文件夹,打开“server_ue4.py”文件,进行配置确认。注意,电脑2的收图端口应该是10000

    以及MAVLinkUDP接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler(20102,'192.168.3.80') 其中,192.168.3.80的IP地址要改成你实际Windows电脑的IP地址,如果实在不知道IP地址,可以填255.255.255.255
  24. 然后,在Windows电脑2中,从Windows远程桌面访问Linux电脑3电脑,用文件管理器进入LinuxNXX3文件夹,打开“server_ue4.py”文件,确认下接收图像的端口号(Linux电脑3刚才设置的是10001

    以及MAVLinkUDP接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler(20104,'192.168.3.79') 其中,192.168.3.79Windows电脑2的IP地址,需要改成你实际Windows电脑2的IP地址,如果实在不知道IP地址,可以填255.255.255.255
  25. 同样的道理,进入机载Linux电脑4的LinuxNXX4文件夹,打开“server_ue4.py”文件,进行配置确认。注意,Linux电脑4的收图端口应该是10002

    以及MAVLinkUDP接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler(20106,'192.168.3.79') 其中,192.168.3.79的IP地址要改成你实际Windows电脑2的IP地址,如果实在不知道IP地址,可以填255.255.255.255
  26. 机载电脑1中,打开终端,定位到LinuxNXX1文件夹,并输入“python3 server_ue4.py”,先不要按回车。
    同理,对机载电脑2,进行同样步骤,进入LinuxNXX2文件夹,并输入“python3 server_ue4.py”,先不要按回车。
    同理,对机载电脑3,进行同样步骤,进入LinuxNXX3文件夹,并输入“python3 server_ue4.py”,先不要按回车。
    同理,对机载电脑4,进行同样步骤,进入LinuxNXX4文件夹,并输入“python3 server_ue4.py”,先不要按回车。
  27. 现在机载电脑4中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑3中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑1中,按下回车键,开启视觉闭环控制。可以在画面中看到各个飞机依次起飞。
  28. 飞机1能看到前面三个飞机,同时,四飞机都能顺利穿越三个环并降落,说明控制正常。

6.6.5双电脑四飞机视觉数传HIL控制仿真验证(仅支持完整版)

本实验连线图:每台电脑(配对两个机载计算机+两个Pixhawk飞控)需要占用一个底层交换机(至少4个网口),两个底层交换机可以接在路由器上访问外网。如果更多的电脑集群,则底层交换机可以接到多口的顶层交换机/路由器。可以额外配置一个可视化地面站电脑,运行RflySim3D程序,来全局观察所有飞机动态。 本小节会介绍用2台电脑(Windows系统,RflySim主机)+4个嵌入式NX2Linux系统,机载视觉计算机)+4个Pixhawk飞控+4个数传+2个交换机+1个路由器+8根网线,来进行四个飞机在同一场景中的视觉硬件在环仿真验证。
准备阶段:

  1. 将所有仿真电脑和嵌入式电脑按图进行组网,在路由器中设定各个设备的静态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

  2. 为了操作方便,按照之前的配置方法对所有机载计算机的Linux系统进行配置(0-Preparation\NX-TX2开启远程访问的方法.docx),确保在Windows下能够远程访问到两台机载计算机。
  3. 确保每台Windows电脑的RflySim环境已经配置正确,确保每个Pixhawk都以配置正确,并且能够进行软件在环仿真。测试方法,启动桌面RflyTools文件夹内的SITLRun脚本,输入数字2,开始仿真后,在QGC中依次控制两个飞机起飞,如果都能起飞说明配置正确。
  4. 确保飞控已经配置进入HITL模式,并且能够进行硬件在环仿真。测试方法,插入两个飞控,启动桌面RflyTools文件夹内的HITLRun脚本,输入两者串口号,开始仿真后,在QGC中依次控制两个飞机起飞,如果都能起飞说明配置正确。
  5. 确保数传连线正确,且能收到飞机数据,并与飞机通信。
  6. 确认数传的波特率是否为57600 Windows电脑**1**操作阶段
  7. Windows电脑1关闭所有RflySim相关软件(CopterSimQGCRflySim3D等),确认网络硬件连线正确上。
  8. Windows电脑1下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。.注:这里远程连接Linux电脑1和Linux电脑2,对应IP地址为192.168.3.81192.168.3.82
  9. 7-CrossRingFour\HITLSerialDemo下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows电脑1放WindowsPC1文件夹、Linux电脑1放LinuxNXX1文件夹,Linux电脑2放LinuxNXX2文件夹。特别注意:一定不要拷贝错了。
  10. 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地址。
  11. 注:另一种启动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窗口)

  12. 经过上述步骤,我们已经开启了两个飞机的硬件在环仿真闭环,耐心等待两个CopterSim显示初始化完毕,显示3D Fixed
  13. VSCode打开“HITLSerialDemo\WindowsPC1\client_ue4.py”文件,将IP列表改成两台机载计算机的IP地址,同时修改端口号为999910000。例如,我的是192.168.3.81192.168.3.82;注意,IP地址和端口号顺序不要错。
  14. VSCode中,运行client_ue4.py文件,等待显示图像开始传输。

    Windows电脑2操作阶段
  15. Windows电脑2关闭所有RflySim相关软件(CopterSimQGCRflySim3D等),确认网络硬件连线正确上。
  16. Windows电脑2下,通过远程桌面,输入两台机载计算机的IP地址,连接上他们的图形界面。注:这里远程连接Linux电脑3和Linux电脑4,对应IP地址为192.168.3.83192.168.3.84
  17. 7-CrossRingFour\HITLSerialDemo下的三个文件夹,分别拷贝到三台电脑的桌面(或其他地方,拷贝方式可以用U盘或文件共享),其中Windows电脑2放WindowsPC2文件夹、Linux电脑3放LinuxNXX3文件夹,Linux电脑4放LinuxNXX4文件夹。特别注意:一定不要拷贝错了。
  18. 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地址。
  19. 注: 另一种启动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窗口)

  20. 经过上述步骤,我们已经开启了3号和4号飞机的软件在环仿真闭环,耐心等待两个CopterSim显示初始化完毕,显示3D Fixed
  21. VSCode打开“HITLSerialDemo\WindowsPC2\client_ue4.py”文件,将IP列表改成两台机载计算机的IP地址,同时根据前面序列,修改端口号为1000110002。例如,我的是192.168.3.82192.168.3.83;注意,IP地址和端口号顺序不要错。
  22. 此外,还需要对下面位置进行更改,将Windows电脑2的RflySim3D窗口,分别切换到3号飞机和4号飞机的机体视角。
    mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 3',0) mav.sendUE4Cmd(b'RflyChangeViewKeyCmd B 4',1)
  23. 在VSCode中,运行client_ue4.py文件,等待显示图像开始传输。

    Linux机载**电脑操作阶段**
  24. 在所有Linux电脑中,如果是第一次运行本例子(之后不用运行),请安装必要的Python依赖包,输入如下指令 pip3 install pymavlink serial pyserial rospkg
  25. Windows电脑1中,从Windows远程桌面访问Linux电脑1电脑,用文件管理器进入LinuxNXX1文件夹,打开“server_ue4_Serial.py”文件,确认下接收图像的端口号(1号电脑刚才设置的是9999

    以及MAVLink的串口接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')

    注意:这里我使用Pixhawk默认的波特率为57600,请确认并修改为自己设置的波特率。
  26. 同样的道理,进入机载Linux电脑2的LinuxNXX2文件夹,打开“server_ue4_Serial.py”文件,进行配置确认。注意,电脑2的收图端口应该是10000

    以及MAVLink的串口接口连接为下: mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
  27. 然后,在Windows电脑2中,从Windows远程桌面访问Linux电脑3电脑,用文件管理器进入LinuxNXX3文件夹,打开“server_ue4_Serial.py”文件,确认下接收图像的端口号(Linux电脑3刚才设置的是10001

    以及MAVLink的串口接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
  28. 同样的道理,进入机载Linux电脑4的LinuxNXX4文件夹,打开“server_ue4_Serial.py”文件,进行配置确认。注意,Linux电脑4的收图端口应该是10002。 以及MAVLink的串口接口连接为下:
    mav = PX4MavCtrl.PX4MavCtrler('/dev/ttyUSB0:57600')
  29. 机载电脑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”,先不要按回车。
  30. 现在机载电脑4中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑3中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑2中,按下回车键,开启视觉闭环控制;过几秒钟后,在机载电脑1中,按下回车键,开启视觉闭环控制。可以在画面中看到各个飞机依次起飞。
  31. 飞机1能看到前面三个飞机,同时,四飞机都能顺利穿越三个环并降落,说明控制正常。

6.6.6任意多电脑和飞机视觉在环仿真验证(仅支持完整版,单目视觉例程)

本实验连线图:每台电脑根据性能可以挂1~3个飞机,需要交换机3~5口,按上面拓扑结构组网,并记录下每台Windows电脑和NX机载计算机的IP地址。
我们编写了一个脚本,根据输入的Excel版本集群配置文件,直接生成所有电脑的执行文件夹,这样可以大大简化适配流程。

  1. 打开RflySimAPIs\PythonVisionAPI\RflyVisionTransV5\8-CrossRingAny文件夹,找到Config.xlsx文件,在其中配置需要仿真的参数和飞机数量
  2. 在上面的Excel表格中,可以配置每个飞机的位置和偏航角,设定HIL或者SIL仿真,设定是否用数传串口,以及串口的波特率;还可以设置飞机模型、地图名字等。
  3. 默认的“Config.xlsx”文件是一个2台电脑4个飞机的例程,用MATLAB运行“ConfigWrite.m”脚本,会自动生成如下文件夹本例程功能与前面的例子完全相同,请按类似的步骤进行实验验证。
  4. “Config5.xlsx”展示了一个5个飞机的例子,三台电脑2 2 1构型,即分别跑2个飞机、2个飞机和1个飞机。运行脚本后生成如图所示
  5. 将上述文件夹,拷贝到对应的电脑中,直接运行即可。需要注意,在HIL仿真时,飞控USB应该按顺序插入电脑。

results matching ""

    No results matching ""