1. 安装方法

1.1. 安装包获取

RflySim平台目前分为了三个版本:基础版(免费)、高级体验版(免费)和高级完整版(付费);版本区别详见 http://rflysim.com/doc/RflySimVersions.xlsx

  • 基础版作为实验平台对应了《多旋翼飞行器设计与控制实践》一书,安装包体积较小,只包含了PX4底层算法Simulink开发的功能。
  • 高级体验版在基础版上增加了飞机动力学模型开发、UE4三维场景开发、视觉控制开发和集群算法开发等功能,但是限制了集群数量和分布式仿真等功能。
  • 高级完整版在体验版上增加了最新的UE4引擎、全球大场景仿真、分布式局域网集群视觉仿真等功能。
  • 基础版和体验版的下载链接为:https://rflysim.com/download ,请输入邮箱后申请获取云盘链接。高级完整版请咨询 service@rflysim.com 购买来获取安装包和序列号。

1.2. 产品报价

高级功能版的基本特性可以查看文档: 《第13讲_RflySim平台高级功能介绍》 产品报价请发邮件到 rflysim@163.com, 平台安装与使用教程如下表:

内容 PDF
第01讲:总体介绍 [pdf]
第02讲:飞行控制算法开发 [pdf]
第03讲:单机控制接口实现 [pdf]
第04讲:其他机型的开发 [pdf]
第05讲:UE4三维场景开发 [pdf]
第06讲:视觉控制算法开发 [pdf]
第07讲:集群控制算法开发 [pdf]

1.3. 安装后效果

安装完成后,你可以在桌面上得到下图所示的一系列快捷方式,其中Python38Env是一个配置好的用于视觉OpenCV等开发的Python环境,可以直接用于无人机飞行控制; RflySim3D 是我们最新开发的基于UE4引擎的高逼真三维环境模拟程序; HITLRun是一个快速启动多机硬件在环仿真的启动脚本; SITLRun 是一个快速启动多个软件在环仿真的启动脚本,它可以在电脑上模拟PX4控制软件的运行来控制CopterSim内的飞机模型,因此这该模式下可以不插入Pixhawk硬件就进行闭环控制仿真。

../_images/5-1.png

上述的软件工具在加速无人机控制系统设计方面发挥了巨大的作用。他们之间的关系与使用阶段可以参见下图:

../_images/5-2.png

整个RflySim仿真平台的核心软件是CopterSim,它注册完成界面如下,主要分为五大部分。 下图方框(a)是多旋翼模型与飞行环境界面,主要用于选择动力系统组件组成不同类型的多旋翼,用于后续仿真。 方框(b)是模型参数计算与数据库管理界面,主要用于计算所组装多旋翼的模型参数,并将结果存入数据库方便后续使用,这里也提供了方便的数据库管理功能。 方框(c)是高级功能区,包括集群多机仿真、UE4 场景选择等功能,将在后文详细介绍。 方框(d)主要用于连接 Pixhawk 自驾仪,并控制仿真的开始与停止。 方框(e)用于实时显示 Pixhawk自驾仪返回提示消息,并显示仿真模型的位置、姿态等信息。

../_images/5-3.png

CopterSim 注册完成界面

1.4. 自定义多旋翼仿真模型

在模型配置界面,可以输入的数据包括整机质量、机架轴距和飞行海拔等飞行器基本信息,以及用于组件多旋翼的动力系统组件或参数,例如电机、螺旋桨、电调和电池等。CopterSim 提供两种选择动力系统组件的方法,第一种是直接从动力系统品牌型号数据库中,选择市面上常见的动力系统组件产品来组装多旋翼。 由于动力系统的品牌型号产品数据库难以把世界上的产品全都包含进去,对于更高自由度设置多旋翼的需求,CopterSim 也提供了自定义动力系统组件参数功能。

../_images/A-3.jpg

自定义模型参数输入界面

单击第一行最后的“自定义”选项,即可进入组件自定义参数界面。在该界面中,读者可以自定义地输入电机(KV 值、空载电压、内阻)、电调、电池和螺旋桨的详细参数信息。理论上通过“自定义”设计功能,可以模拟任意动力系统组件,甚至是市面上不存在的产品。 在配置完一个多旋翼后,单击“计算”按钮程序就会自动分析读者选择的配置的合理性。不合理的多旋翼配置会导致仿真失败,例如,出现拉力不足无法起飞、电池电压超限烧坏电调和电机,或者螺旋桨尺寸超过机身可容纳尺寸等错误。CopterSim 在检测输入的多旋翼配置后,如果配置不合理就会给出错误提示,用户需要重新选择合理配置。

../_images/A-4.jpg

模型配置合理性检测提示界面

对于初学者或者对多旋翼设计不够了解的读者来说,配置一架可以正常飞行的多旋翼都较为困难。因此 CopterSim 还提供了通过模型数据库直接选择飞机配置的功能。

../_images/A-5.jpg

机型数据库直接选取飞机模型

在“机型数据库”的下拉列表中,读者可以选择预先配置好的多旋翼配置(或者在此基础上修改配置参数)来快速得到可用的多旋翼模型。

1.5. 设定仿真时飞机初始状态

CopterSim 提供了多旋翼初始状态设置功能。

../_images/5-26.png

设置仿真初始位置

可以在初试位置设置栏输入多旋翼的 x 和 y 坐标(单位:m)和偏航角 yaw 的值(单位:度),其中 x和y 的方向分别指向多旋翼的前和右,机头向右转则偏航角为正。

2. 基本功能

2.1. 单机硬件在环仿真

你可以通过传统的方法,依次打开CopterSim和RflySim3D软件来进行硬件在环仿真,也可以直接使用HITLRun一键启动脚本来快速启动硬件在环仿真。本平台的基本特性与使用方法可以参考如下视频:

../_images/5-4.png

RflySim: 平台简介+如何启动单无人机的硬件在环仿真

2.2. 多机硬件在环仿真

连接多个Pixhawk进行多机硬件在环仿真的方法可以参见如下视频

../_images/5-5.png

RflySim: 如何快速启动多机的硬件在环编队仿真

2.3. 单机软件在环仿真

也可以不使用Pixhawk硬件,直接在电脑上运行PX4飞控软件系统,与CopterSim进行网络通信实现控制闭环。使用单机软件在环仿真的方法见如下视频:

../_images/5-6.png

RflySim: 如何快速启动单无人机的软件在环仿真模式

2.4. 多机软件在环仿真

你也可以按照下面视频所示步骤,快速启动多个软件在环子系统来模拟多机的飞行控制

../_images/5-7.png

RflySim: 如何快速启动多无人机集群的软件在环仿真

3. 其他机型

3.1. 其他多旋翼类型,例如六旋翼

本平台也支持仿真其他的多旋翼机型,只需要在CopterSim软件中输入合适的多旋翼配置,然后通过QGC设置Pixhawk运行在对应的控制模式下。

如下视频以六旋翼为例,展示了用RflySim平台仿真六旋翼飞行器的方法:

../_images/5-8.png

RflySim高级功能:如何仿真其他的多旋翼机型

更为详细的其他多旋翼硬件在环仿真设置方法如下:

  • 其他类型多旋翼的硬件在环仿真

之前的实验需要通过QGC 地面站设置Pixhawk 自驾仪进入“HIL Quadcopter X”机架模式,这个模式只支持四旋翼 X 字型的硬件在环仿真,因此在实用性方面具有一定的局限性。实际上,CopterSim 不仅支持四旋翼的硬件在环仿真,还可以用于所有 PX4 自驾仪支持的多旋翼类型。具体步骤如下: (1)在 QGC 地面站中选择多旋翼机架

1)确保 QGC 地面站正确连接 Pixhawk 自驾仪;
2)在 QGC 地面站的“Airframe”标签页选择需要的多旋翼机架(如六旋翼、八旋翼、共轴双桨等);
../_images/A-12.jpg

QGC 中选择需要的多旋翼机架

3)在该机架的下拉列表中选择对应的机架尺寸(如 F450、3DR DIY Quad 等),并应用该机架;
4)Pixhawk 自驾仪重启之后,确认已经处于选定的机架模式下。

通过上述步骤就可以设置一个可用于实际飞行的机架类型,而且配置了针对该机架尺寸的配套控制器参数。

(2)在 QGC 地面站中选择进入硬件在环仿真模式

QGC 地面站正确连接Pixhawk 自驾仪后,在 QGC 地面站的“Safety”标签页中,将“HITL Enabled”选项设置为“Enabled”,然后重新插拔 Pixhawk 自驾仪。经过上面的步骤,可以将任意的机架设置进入硬件在环仿真模式。

../_images/A-13.jpg

将“HITL Enabled”选项设置为“Enabled”

(3)CopterSim 中选择对应的多旋翼机架

在 CopterSim 中有两种方式可以设置多旋翼的机架类型。第一种是在主界面的“机架类型”下拉菜单中选择;另一种是打开“模型参数”对话框,直接在其中设置机臂数、旋翼数和机头朝向。

../_images/A-14.jpg

CopterSim 中设置多旋翼机架

(4)开始硬件在环仿真

以六旋翼为例,通过 QGC 地面站将 Pixhawk 自驾仪的机架类型设置为六旋翼,并在 QGC 地面站中开启硬件在环模式,再在CopterSim 中配置一个六旋翼参数。然后,将 Pixhawk 自驾仪插入计算机,在 CopterSim中选中 Pixhawk 自驾仪的串口,并单击“开始仿真”,即可开始六旋翼的硬件在环仿真。

3.2. 其他载具类型,例如固定翼等

RflySim平台也支持将其他载具系统的Simulink运动模型转化为DLL文件导入到CopterSim内进行仿真。如下视频展示了导入一个固定翼飞行器模型进行硬件在环仿真的例子。

../_images/5-9.png

RflySim: 如何仿真其他机型,例如固定翼飞行器

更为详细的其他载具模型的硬件在环仿真设置方法如下:

  • 其他机型的硬件在环仿真

Pixhawk/PX4 自驾仪除了支持多旋翼,还支持固定翼、垂直起降飞行器、小车、船等机型。为了保证对上述 PX4 官方支持的机型的硬件在环仿真,甚至使读者能自行设置机架类型,CopterSim 还提供了通过 Simulink 生成DLL 模型文件,并进行硬件在环仿真的功能。

(1)CopterSim 中使用 DLL 模型文件

将 Simulink 生成的DLL 模型文件复制到文件夹“CopterSimexternalmodel”中。重新打开 CopterSim 之后,就可以在 “使用 DLL 模型文件”下拉菜单中看到可用的 DLL 模型文件。这些 DLL 模型文件可以仿真任意飞行器或车辆。选中一个 DLL 模型,用 QGC 地面站配置 Pixhawk/PX4 自驾仪之后,就可以在 CopterSim中对特定的机型进行硬件在环的仿真。也可以在UE4 编辑器中加入对应的机体三维模型,形成完整的硬件在环仿真闭环。

../_images/A-15.jpg

选择 DLL 模型进行仿真

(2)Simulink 中生成DLL 模型文件的方法

打开 Simulink 生成DLL 模型文件例程文件夹(和安装包一起获取),打开需要的 Simulink 模型(多旋翼、固定翼、小车等)的.slx 文件。然后在 Simulink 中修改模型参数或者替换部分模块使之满足仿真需求,再单击 Simulink 的“编译”按钮生成 C/C++ 代码。最后,在 MATLAB 中运行“GenerateModelDLLFile”命令,即可生成.dll 格式的DLL 模型文件,然后将该 DLL 文件复制到“CopterSimexternalmodel”文件夹中即可。

../_images/A-16.jpg

Simulink 生成 DLL 模型文件例程

由于 Simulink 采用模块化编程方法,在提供的.slx 文件中,可以非常轻松地通过更改参数或部分模块获取不同的飞行器布局。例如,将“Init.m”模型参数初始化脚本中的机架类型参数ModelParam uavType 修改为特定值,可以很方便地得到多旋翼机型。之前的实验课程默认使用多旋翼布局对应 uavType=3,也就是常规的 X 字型四旋翼飞行器。

这些配置与PX4 自驾仪支持的多旋翼机型一一对应,可以参考官网:http://dev.px4.io/master/en/airframes/airframe_reference.html

../_images/A-17.jpg

Simulink 模型中 uavType 参数对应的机型

4. 自定义三维场景

4.1. 自行设计并导入三维地图场景

RflySim支持自行设计并导入三维场景,基本原理如下

  • 支持导入所有UE4场景 RflySim3D会自动识别并导入UE4的场景地图文件
  • 三维场景制作3Ds Max UE4 RlfySim3D
  • 其他现成三维场景导入(AutoCAD, SketchUp等) fbx模型文件 UE4 RlfySim3D
  • 基本步骤:UE4生成场景打包文件拷贝到RflySim3D文件夹地形文件拷贝CopterSim

下面这个视频展示了

../_images/5-10.png

RflySim: 如何将你自己在UE4中搭建的三维场景导入到RflySim3D程序中用于视景仿真

下面几个图片展示了目前RflySim3D平台内置的一些高逼真三维场景效果

../_images/5-11.png
../_images/5-12.png

下面的视频展示了用Python发送飞机位置给RflySim3D,来预览夜空灯光秀场景效果的方法

../_images/5-13.png

RflySim: 如何利用RflySim3D来仿真夜空都市下的灯光秀场景

4.2. 自行设计并导入载具三维模型

RflySim3D也支持设计并导入自己的飞机/载具/障碍物/靶标三维模型,基本思路如下:

  • 飞机三维模型制作3Ds Max UE4 RlfySim3D
  • 其他现成飞机三维模型导入(AutoCAD, SketchUp等) fbx模型文件 UE4 编写XML文件 RlfySim3D
  • 基本方法:UE4导出模型文件+XML配置文件拷贝到RflySim3D安装目录打开RflySim3D按下C键切换模型

下列的视频展示了从3Ds Max软件中导入一个设计好的四旋翼三维模型的方法:

../_images/5-14.png

RflySim: 如何将你的飞机三维模型导入到基于UE4的RflySim3D程序中并用于视景仿真

下面的图片展示了目前RflySim3D程序内置的一些飞机/角色/车辆样式:

../_images/5-15.png
../_images/5-16.png
../_images/5-17.png

5. 集群控制

5.1. 分布式仿真框架

RflySim平台采用了完全分布式框架,可扩展任意电脑、任意多机、任意视角、任意集群控制节点。其基本软件构架如下:

../_images/5-18.png

基本硬件构架如下

../_images/5-19.png

5.2. 关键问题与解决方案

RflySim集群控制平台开发过程中遇到的关键问题,与我们的解决方案如下:

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

5.4. 多电脑上Simulink分布式集群控制

../_images/5-21.png

RflySim: 如何在局域网多台电脑上快速启动分布式的无人机集群软件在环仿真

5.5. 从虚拟仿真到实际集群系统

../_images/5-22.png

RflySim: 如何快速将集群仿真算法部署到室内真机集群平台上

6. 视觉/AI控制

6.1. 关键问题与解决方案

问题一: 启动N个飞机进行仿真太麻烦?
解决方案: 一键脚本启动所有程序并完成参数配置
问题二: 多个飞机同时在同一场景显示?
解决方案: UDP广播方式,RflySim3D根据接收飞机数据自动新建飞机,理论上可以扩展任意多个飞机,也支持新建障碍物、行人等辅助对象
问题三: 飞机太多网络拥堵?
解决方案: 提供多种数据协议,大规模集群时可选用最精简数据模式,确保网络通畅
问题四: 多机集群使用硬件在环的话成本高操作复杂?
解决方案: 支持PX4 SITL软件在环仿真,直接在电脑上新建并运行N个完整PX4控制器,且可访问每个控制器的log日志、飞行参数等
问题五: 仿真平台性能如何?
回答: 主要是QGC和RflySim3D占用计算资源,模型和控制器占用资源较小。初步测试:配置较好的电脑软件在环仿真能稳定15架次以上,不运行QGC和RflySim3D数量增加,使用Pixhawk硬件在环仿真可再翻倍。

6.2. 单目视觉反馈控制

../_images/5-23.png

RflySim: 如何利用Python/OpenCV来对多旋翼无人机进行视觉导航控制

6.3. 双目视觉控制与标定

../_images/5-24.png

RflySim: 如何获取双目图像并用于无人机控制,并将算法部署到真机上

6.4. 视觉硬件平台

我们也提供了一系列不同尺寸、挂载不同传感器和机载处理器的飞行平台来保证视觉算法的顺利应用。

../_images/5-25.png

7. 未来计划

RflySim为无人控制系统开发、测试与评估提供了一整套的解决方案,后续也会不断更新。

  1. 更多的定制化的三维场景和demo可在官网下载
  2. 更多视觉传感器的支持(激光雷达、点云等)
  3. Simulink的视觉与机器学习接口的打通,让AI算法快速应用于真机
  4. 更多机型模型的支持,无人车、固定翼、VTOL、无人船等
  5. 标准化的模型库,使得模型可信度大大提高
  6. 商业版的自动化安全测试、评估功能逐步上线
  7. 在此平台上开发更多的课程,让AI无人系统入门与实验更简单