4.2 其他多旋翼
本讲的例程源码路径:
RflySimAPIs\OtherVehicleTypes\ DLLModelTemp、 ExternalCtrlAPI、 HexarotorModelCTRL、 MulticopterModelCTRL、 OctoCoxRotor
4.2.1 六旋翼的Pixhawk机架选择
- 启动
QGC
,然后将Pixhawk
插入电脑,QGC
会自动识别并连接到Pixhawk
自驾仪。 - 进入
“Firmware”
(机架)标签页,选择机架类型为“Hexarotor x”
-“GenericHexarotor x geometry”
,然后点击右上角的“Apply andRestart”
(应用并重启)按钮,此时自驾仪会自动重启; - 重启后
QGC
会自动寻找串口并连接到Pixhawk
,此时可以查看各个配置页。
4.2.2 Pixhawk进入硬件在环仿真模式
- 进入
“Safety”
(安全)标签页,在其“Hardware in the LoopSimulation”
(硬件在环仿真)下拉菜单下,选择“HITLenabled”
来启用六旋翼的硬件在环仿真。 - 上述步骤完成后,拔掉
Pixhawk
飞控,再重新插入电脑,QGC
重连之后,在Pixhawk
上插上接收机并打开遥控器,检查遥控器校准、模态设置等选项是否正确。
4.2.3 飞行模式设置进入自稳模式
- 确保遥控器校准完成后,点击地面站进入
“Flight Modes”
(飞行模式)设置页面,选择“Mode Channel”
(模式通道)为前面试过的CH6通道(步骤见高级课程第2讲)。由于CH6通道是一个三段开关,开关的前部(远离人)、中部、后部(靠近人)档位分别对应了“Flight Mode
(飞行模式) 1、4、6”三个标签。 - 将这三标签分别设置为
“Stabilized”
(自稳模式,只有姿态控制)、“Altitude”
(定高模式,姿态和高度控制)和“Position”
(定点模式,有姿态、定高和水平位置控制)。 - 拨动遥控器CH6开关,确保飞控进入第一个模式
Stabilized
自稳模式。
4.2.4 CopterSim上设置六旋翼模型
方法一:自行组装搭建六旋翼
- 打开
CopterSim
软件,在“机架类型”下拉菜单中选择“六旋翼”。- 在主界面中选择合适的“整机质量”,“机架轴距”,和电机、螺旋桨等动力系统组件选型,即可自行组装搭建六旋翼。(注意:方便起见,这里也可以直接沿用四旋翼的默认参数)
- 点击“计算”按钮,即可估算得到六旋翼的模型参数,并弹出右下图所示参数管理界面。
- 点击“存储并使用参数”按钮,即可将参数保持,供后续仿真使用。
- 注意:如果后续要做四旋翼仿真,记得在此页面点“还原默认参数”按钮。
![]()
方法二:直接输入六旋翼模型参数
- 打开
CopterSim
软件,直接点击“模型参数”按钮,弹出右下图所示参数管理界面。- 在参数管理页面手动输入 旋翼数、机臂数和构型可以设置不同类型多旋翼机架。
- 在右侧的模型参数框中输入质量、转动惯量、螺旋桨拉力系数等参数,可以设置六旋翼动态模型。
- 配置完六旋翼参数后,点击“存储并使用参数”按钮,即可将参数保持,供后续仿真使用。
- 注意:如果后续要做四旋翼仿真,记得在此页面点“还原默认参数”按钮。
![]()
4.2.5 六旋翼硬件在环仿真
- 打开
CopterSim
软件,连上Pixhawk
自驾仪到电脑,等Pixhawk
启动完毕(一般8秒钟左右)后,在“飞控选择”下拉菜单中选择Pixhawk
串口号,确认所有的QGC
地面站程序已经关闭(避免串口占用),再点击“开始仿真”按钮,即可开始六旋翼的硬件在环仿真。 - 打开
RflySim3D
,此时可以看到三维引擎中显示六旋翼;打开QGC
地面站,可以观察到Pixhawk
的状态参数。 - 等待
CopterSim
左下角显示“GPS 3Dfixed & …”
字样说明滤波器初始化完毕,可以用遥控器解锁飞行,并切换模态。注:这里请自行测试。
RflySim:如何仿真其他的多旋翼机型,例如六旋翼本视频观看地址:
优酷:https://v.youku.com/v_show/id_XNDcwNjA4MDY2MA==.html
YouTube:https://youtu.be/bryZXxaJE5M
4.2.5-2 六旋翼软件在环仿真
- 按上小节流程在
CopterSim
中设置模型为六旋翼X布局 - 从
“Firmware\ROMFS\px4fmu_common\init.d\airframes”
文件夹中拷贝“6001_hexa_x”
文件到“Firmware\ROMFS\px4fmu_common\init.d-posix”
文件夹。 - 另存一个
SITLRun.bat
脚本,用编辑器将SIL
机架设置部分代码修改为“set PX4SitlFrame=hexa_x”
- 运行
bat
脚本,输入飞机数量(支持多机),开始仿真
4.2.6 Simulink开发其他多旋翼模型
- 打开MATLAB,并进到入
“RflySimAPIs\OtherVehicleTypes\MulticopterModelCTRL”
文件夹,打开“MulticopterNoCtrl.slx”
即可得到本平台使用的多旋翼模型。 - 点击
Simulink
的编译按钮,即可生成C/C++代码,方法如下 - 对于
MATLAB 2019a
及之前版本,工具栏样式见下图,直接点击它的编译按钮即可。 - 对于对于2019b及之后版本,如右图所示,点击
APPS - CODE GENERATION – EmbeddedCoder
才能弹出代码生成工具栏,在其中如下图所示点击“C++ CODE”-“GenerateCode”-“Build”
按钮就能编译生成代码。
4.2.7 生成得到DLL文件
- 如右图所示,在
MATLAB
中,鼠标右键点击“GenerateModelDLLFile.p”
文件,在右键菜单中点击“运行”按钮,即可自动将C++模型代码生成为DLL
动态链接库,以供CopterSim
使用。本例子生成得到和slx
文件同名的“MulticopterNoCtrl.dll”
文件。
4.2.8 得到不同类型多旋翼
- 本例程默认是四旋翼模型,可以通过修改
init.m
中的ModelParam_uavType
参数得到不同的多旋翼类型,具体支持类型见“MulticopterModelCTRL\readme.docx”
文档,部分机型如下。
4.2.9 扩展到任意无人载具系统的模版
“MulticopterNoCtrl.slx”
可以看做一个自定义模型的接口模版,用户可以将自己的模型贴到其中,输入输出满足下列格式,即可用于DLL模型生成。- 四个必需输入:
1)
inPWMs
输入,十六维PWM
信号,范围0~1; 2)TerrainZ
输入,一维地形高度信号; 3)inSILFloats
输入,二十维float型的自定义数据; 4)inSILInts
输入,八维int型自定义数据。其中,inSILFloats
和inSILInts
的主要作用是使得CopterSim
能够在实时软/硬件在环时,模型能通过UDP
接收其他程序(Simulink
、Python
等)传入数据,可用于故障实时注入、其他传感器数据生成、外部控制等。 - 四个必需的结构体输出:
1)
MavHILSensor
结构体输出,传感器数据,结构体定义见注释; 2)MavVehile3DInfo
结构体输出,给三维引擎的真值数据; 3)MavHILGPS
结构体输出,GPS
的原始数据; 4)MavHILStateQuat
结构体输出,状态四元数。 - 三个必需参数(见
init.m
文件):1)
ModelInit_PosE
,三维位置向量,定义飞机初始位置,见“6DOF
”子模块中; 2)ModelInit_AngEuler
,三维姿态向量,定义飞机初始姿态,见“6DOF
”子模块中; 3)ModelInit_Inputs
,八维输入向量,定义电机PWM
初始值,默认全0,见“Motor Model”
模块中。
4.2.10 CopterSim调用DLL模型进行仿真
注:也可以用bat一键启动脚本来启动软/硬件在环仿真,需要修改代码为`“setDLLModel=MulticopterNoCtrl”`
- 在前面的步骤中我们得到了一个
“MulticopterNoCtrl.dll”
模型文件,默认对应四旋翼模型,因此Pixhawk
需要在QGC
中,采用类似第2.1节步骤将机架设置成“HILQuadcopter X”
四旋翼。 - 将
“MulticopterNoCtrl.dll”
文件拷贝到“C:\PX4PSP\CopterSim\external\model”
目录(C:\PX4PSP
需要改成实际安装目录)下,打开CopterSim
后,在“使用DLL模型文件”下拉菜单中可以看到新增的“MulticopterNoCtrl”
条目,选中它,插上Pixhawk
飞控,即可开始硬件在环仿真。