4.4 自定义模型
本讲的例程源码路径:
RflySimAPIs\OtherVehicleTypes\AircraftMathworks
4.4.1 其他现有模型的导入
- 例程文件夹
“RflySimAPIs\OtherVehicleTypes\AircraftMathworks”
中的模型文件“AircraftMathworks.slx”
是修改自Mathworks
官方发布的一个小型固定翼的模型,将其机身、动力、气动等模型导入到“MulticopterNoCtrl.slx”
模版中实现。 *Mathworks
官方的模型链接如下:https://github.com/mathworks/simulinkDroneReferenceApp - 在上述链接中还包含了姿态控制、轨迹控制等控制器,可以将其按照高级课程第2讲的内容,导入到
Simulink
控制器开发平台中,生成代码并导入Pixhawk
后即可用于控制固定翼的飞行。 - 请自行测试上述功能。注:可以直接运行`“HITLRun.bat”
和
“SITLRun.bat”来开启硬件/软件在环仿真,并利用
QGC`规划航路实现自动起降。 - 本模型的软件在环仿真流程见下页的视频
RflySim: 如何进行固定翼的软件在环仿真,并用QGC
实现自动起降航路飞行本视频观看地址:
优酷:https://v.youku.com/v_show/id_XNTA4Njg3NzU0NA==.html
YouTube:https://youtu.be/riEVvwZBE4Y
4.4.2 外部程序如何与DLL模型通信
- 例程见:
RflySimAPIs\OtherVehicleTypes\ExternalCtrlAPI\DllModelExtCtrlAPI.slx
- 可以通过UDP端口
30101
接收来自CopterSim
转发的DLL模型的真实状态输出(数据和发送给RflySim3D
的相同) - 可以向UDP端口
30100
发送数据结构体,将inSILFloats
和inSILInts
两个数据发送到DLL
模型中。 - 可以向UDP端口
30100
直接发送MAVLink
消息,实现其他传感器的模拟,例如光流、电池、高度计、ADC等 - 上述接口可以实现将
CopterSim
变成通信接口,例如,其他外部仿真程序中运行飞机模型,将模型状态通过inSILFloats
和inSILInts
发送给DLL
模型,然后DLL
模型中再将模型状态发送给传感器模块,进而转发给Pixhawk
;同时,外部仿真程序可以通过30101
接口来接收Pixhawk
的电机输出,形成闭环。
补充:
最新版本的平台中CopterSim
地图支持更改GPS
坐标的功能,在地形txt文件末尾加上维度、经度和高度的数据即可(逗号分隔),QGC/Pixhawk
会切换到所选GPS坐标。
具体操作为:
进入到C:\PX4PSP\CopterSim\external\map
文件夹,其中
- *.txt文件中存储用于校准地图用的三个坐标数据(取
Unreal
的世界坐标,左手坐标系,x
朝前,y
朝右,z
朝上,单位是cm
,取的点要刚好落在地形表面) - 三个点分别是:右上顶点(
x
,y
应该都大于0),左下顶点(x
,y
应该都小于0),再加上任意一个与两顶点有较大高度差的地形点(通常取地形中心点或最高点) - 数据格式:右上顶点坐标
x
, 右上顶点坐标y
, 右上顶点坐标z
, 左下顶点坐标x
,左下顶点坐标y
,左下顶点坐标z
,第三点坐标x
,第三点坐标y
,第三点坐标z
更多例子在持续开发中。。。