戴训华 副教授
中南大学 计算机学院
dai.xh@csu.edu.cn
http://faculty.csu.edu.cn/daixunhua/zh_CN


7.1 平台构架与使用

本节导航


本讲的例程源码路径:  
RflySimAPIs\SimulinkSwarmAPI  
RflySimAPIs\PythonSwarmAPI  
本讲PPT公益课视频B站地址:https://www.bilibili.com/video/BV1mu411k7Tw

7.1.1 集群例程文件夹介绍

  • 本讲课程的集群控制例程都存放在“RflySimAPIs\SimulinkSwarmAPI”“PythonSwarmAPI”路径下,里面的集群控制算法主要通过Simulink实现,同时也提供了Python接口
  • 例程中包含了多机碰撞CollisionDemo、数据分析DataAnalysisPython集群控制、自动飞控重启、Simulink集群控制、集群编队等例子

7.1.2 集群通信构架介绍

  • RflySim通信构架如右图所示,其中集群控制模块主要使用了CopterSim进行压缩中转机制
  • 真机使用的MAVLink通信的数据量过于庞大,不适合在大规模集群时在通信网络中直接传输,因此需要对MAVLink数据进行压缩中转
  • Python或Simulink集群控制器接收飞控状态数据并发送Offboard指令(速度、位置、加速度等顶层控制)来控制飞机完成指定飞行任务
  • 多个CopterSim+飞控组合会同时向局域网内的三维引擎、集群控制、视觉控制模块发送数据,从而实现集群通信仿真。

7.1.3 RflySim集群系统分布式构架(仅支持高级完整版)

  • 每个APP都是独立进程,可在局域网电脑中多开
  • 插入多个飞控可以进行多机的集群仿真
  • 内部组网模拟实际硬件数传组网



7.1.4 集群控制通信优化

  • 随着飞机数量的增加,网络通信负载越来越大,为了在有限带宽下实现更多数量的无人机集群仿真,需要对通信进行优化
  • 目前平台的数据协议主要有两种:MAVLink数据(包含大量无关数据,且数据包非常大,不适合集群)和UDP压缩结构体(仅包含需要信息,且数据包小,适合集群)
  • 目前平台的通信优化方式也有两种:Full模式,包含尽量多的数据、以尽量高频率发送来保证完整性(适合飞机≤8);Simple模式,仅包含必需数据、降低发送频率来保证大规模集群下的通信实时性和流畅性(适合飞机数量>4)
  • 两者组合起来有:UDP_FullUDP_SimpleMAVLink_FullMAVLink_Simple四种模式;此外,MAVLink通信针对多电脑视觉硬件在环仿真优化,还增加一种MAVLink_NoSend协议
  • CopterSimUDP数据模式配置框
  • Simulink集群控制接口中UDP数据模式配置框
  • bat集群控制启动脚本中UDP数据模式配置框(对应CopterSim选项)
  • Python集群控制器中UDP数据模式配置框

7.1.5 集群软件在环仿真测试

  • 双击运行“RflySimAPIs\SITLRun.bat”(或桌面同名快捷方式),在弹出命令提示符中输入“4”,点击回车键,就能快速开启4个飞机的集群仿真系统
  • 自动打开的软件包括4个CopterSim(每个飞机对应一个)、1个RflySim3D(会同时显示所有飞机)、1个QGC地面站(同时显示并控制所有飞机)和1个命令提示符窗口(调用Win10WSL编译器开启4个PX4 SITL控制器,每个控制器的log和参数可以访问Firmware\build\px4_sitl_default\\instance_*

    注:在此页面按下回车(或任意键)即可关闭所有打开的仿真程序窗口

7.1.6 集群软件在环仿真结果

  • 如下图显示,Windows任务栏上可以看到所有打开的程序
  • 如下图所示,依次切换各个飞机(Vehicle 1~4),并依次点击“起飞”按钮,然后点“滑动来确认”,即可控制4个飞机依次起飞
  • 起飞后再在RflySim3D中按下“S”键可显示各飞机ID(按“T”键显示轨迹),效果如下


    RflySim: 如何快速启动多无人机集群的软件在环仿真
    本视频观看地址:
    优酷:https://v.youku.com/v\_show/id\_XNDcwNjA4MzA0NA==.html
    YouTube:https://youtu.be/88dGpErxPJ8

7.1.7 集群硬件在环仿真

  • 如下图所示,将所有Pixhawk飞控插入电脑(请提前配置还原好Pixhawk固件,并设置进入HITL模式)
  • 双击运行“RflySimAPIs\HITLRun.bat”(或桌面同名快捷方式),在下图所示弹出窗口中根据提示输入飞控串口号(英文逗号隔开),点击回车键,就能快速开启多个飞机的集群仿真系统
  • 以上两个图对应了连接5个飞控进行硬件在环仿真的情形,运行结果和SITL相同

  • RflySim: 如何快速启动多机的硬件在环编队仿真,本视频观看地址:
    优酷:https://v.youku.com/v\_show/id\_XNDcwNjA3OTQ0MA==.html
    YouTube:https://youtu.be/oZ\_-yhEgebA


7.1.8 集群bat一键脚本修改

  • START_INDEX:起始飞机序号,如果这里设为1,同时SITL输入飞机数量4(或HITL输入4个串口号),那么创建飞机序号为1到4;如果START_INDEX设为5,那么就是5到8号飞机
  • TOTOAL_COPTER:非必需参数,多电脑分布式组网仿真才时需要用到,描述局域网内所有飞机数量(限高级完整版);用于根据给定初始位置和间隔,以矩形方式自动排列飞机
  • UE4_MAPRflySim3D地图名称,请去目录PX4PSP\CopterSim\external\map选择地图名字
  • ORIGIN_***:飞机在地图上的初始位置和偏航
  • VEHICLE_INTERVAL:多机时排列间隔(米)
  • IS_BROADCAST:是否启用多台电脑联机仿真,或指定联机电脑IP地址列表(限高级完整版)
  • UDPSIMMODE:通信数据收发模式


    :复制一个bat脚本(例如RflySimAPIs\SITLRun.bat),然后在此基础上修改上述参数,使满足仿真需求。

7.1.9 集群bat脚本修改示例

  • 需求1:SITLRun脚本自动设置飞机数量(例如4),不用手动输入。删除从“:Top”到“:StartSim”代码,并添加行“SET VehicleNum=4”即可。请参考RflySimAPIs\SimulinkSwarmAPI\SimulinkDemo\RflyUdpFullFour.bat
  • 需求2:两台电脑仿真20个飞机(限完整版)。需要两个bat脚本,IS_BROADCAST设为1,启用联机功能;第一个bat脚本START_INDEX=1TOTOAL_COPTER=20,运行SITL脚本时输入10,第二个bat脚本START_INDEX=11TOTOAL_COPTER=20,输入10。再选择合适的地图、起始位置和飞机间隔即可。
  • 需求3:改变地图名称。直接修改UE4_MAP为需要地图即可。
  • 需求4:手动指定每个飞机位置。请参考RflySimAPIs目录下的HITLRunPos.batSITLRunPos.bat快捷方式,支持手动指定每个飞机的x坐标序列、y坐标序列和偏航角序列,飞机数量根据输入序列自动确定。
  • 需求5:其他机型的集群仿真。请结合第4讲内容,修改DLLModel(飞机DLL模型名称)和PX4SitlFrameSITL时的飞机机架,如果是HITL仿真没有本变量,需要通过QGC去手动修改机架)
  • 需求6:大规模集群需选择合适的数据通信模式。直接修改UDPSIMMODE即可,对应CopterSim界面的“UDP_Mode”选项,具体协议将在后文介绍。
    :请自行搜索bat批处理语言编程方法,并自行查看/运行RflySimAPIs文件夹中所有bat文件来熟悉bat脚本的配置规则。

7.1.10 RflySim3D集群快捷方式使用

  • F1:弹出帮助菜单提示;
  • ESC:清除所有飞机
  • S:显示/隐藏飞机ID;
  • B:在不同飞机间切换视角焦点;
  • B+数字*:切换到第*号飞机
  • T:开启或关闭飞机轨迹记录功能
  • T+数字*:开启/更改轨迹粗细为*号
  • P:开启物理碰撞引擎(不同飞机会碰撞坠机,仅限高级完整版)
  • CTRL+鼠标滚轮:缩放所有飞机尺寸(多机时便于观察);
  • CTRL + C:切换全部飞机三维样式

    :可以同时打开多个CopterSim和一个RflySim3D,然后尝试下列快捷方式
    :更多RflySim3D的快捷方式请参考第一讲教程https://doc.rflysim.com/2511825#131_RflySim_4

7.1.11 集群仿真难点与RflySim平台解决方式

  • 问题一:启动N个飞机进行仿真太麻烦?
    解决方案:一键脚本启动所有程序并完成参数配置
  • 问题二:多个飞机同时在同一场景显示?
    解决方案: UDP广播方式,RflySim3D根据接收飞机数据自动新建飞机,理论上可以扩展任意多个飞机,也支持新建障碍物、行人等辅助对象
  • 问题三:飞机太多网络拥堵?
    解决方案:提供多种数据协议,大规模集群时可选用最精简数据模式,确保网络通畅
  • 问题四:多机集群使用硬件在环的话成本高操作复杂?
    解决方案:支持PX4 SITL软件在环仿真,直接在电脑上新建并运行N个完整PX4控制器,且可访问每个控制器的log日志、飞行参数等
  • 问题五:仿真平台性能如何?
    回答:主要是QGCRflySim3D占用计算资源,模型和控制器占用资源较小。初步测试:配置较好的电脑软件在环仿真能稳定15架次以上,不运行QGCRflySim3D数量增加,使用Pixhawk硬件在环仿真可再翻倍
  • 问题六Simulink随着控制飞机的增加速度变慢,无法实时控制?
    解决方案:支持Simulink自动代码生成exe可执行文件,电脑性能占用趋近于0
  • 问题七:单电脑性能有限,只能仿真特定数量的飞机?
    解决方案:支持局域网内集群联机仿真,确保大规模集群顺利进行,支持局域网广播与指定IP方式,减小通信延迟
  • 问题八:集群仿真如何与实际飞行尽量接近?
    解决方案1: Simulink集群接口接收的是Pixhawk通过MAVLink发送的内部估计状态而非仿真理想值,且发送控制指令也是MAVLink控制格式,因此集群控制器可直接用于真机实飞。
    解决方案2: Simulink控制器支持生成C/C++代码嵌入到原有集群系统中,也支持实飞时直接用Simulink接收局域网Pixhawk内发送的MAVLink消息进行集群控制。即:仿真完不需要修改可直接用于实飞

results matching ""

    No results matching ""