模型在环仿真

  • 模型在环是在基于模型设计早期开发阶段对模型的仿真。 MIL 是一种廉价的算法测试方式。 为了算法能正常运行,必须在部署到真实硬件之前对其进行仿真,以检测任何可能导致灾难性后果的严重错误。

    模型在环仿真是一种在仿真环境(如 Simulink)中开发和运行仿真模型的方法。 一个典型的自驾仪系统模型结构如图所示。该结构不光针对无人机系统,对于其它类型的无人控制系统,也可以采用类似的模型结构。

    当我们在Simulink环境中搭建了如图所示的算法模型后,就可以在MATLAB中运行模型从而对模型进行仿真。通过仿真,我们可以获取模型的运行数据从而对其进行调优。通过可视化模块,我们可以观察被控对象的3D视图,获得与真实世界中相似的控制体验。

    FMT-Model中已经提供了一套完整且功能强大的针对多旋翼的算法模型:

  • MC-Plant: 多旋翼被控对象模型

  • Base-INS: 通用惯性导航系统模型

  • Base-FMS: 通用飞行管理系统模型

  • Base-Controller: 多旋翼控制器模型

    基于这套模型,我们可以很方便的对多旋翼进行模型在环仿真。当然,也可以通过开发新的算法模型来对更多的被控对象,如小车,无人船,机器人等,进行模型在环仿真。在这里也欢迎大家为FMT-Model贡献更多的算法模型!

MIL仿真步骤

  • MIL仿真的的具体步骤如下:
  1. 在MATLAB (版本2018b或以上) 中打开 FMT-Model目录

  2. 双击 FMT_Model.prj 初始化工程

  3. 双击打开仿真模型 simulation/MILSIM.slx,如下图所示

  4. 双击打开可视化模块 MILSIM/Virtualization/3D_Visualization/Matlab_3D/Visualization/VR Sink。将 viewpoint 设置为 Isometric - No Rotation

  5. 点击模型上方 Run 按钮开始仿真

  6. 进入子模块MILSIM/FCS/GCS,将mode改为PilotMode.Positioncmd_1改为FMS_Cmd.Takeoff,飞机将自动解锁起飞,并悬停在高度为1.5m的位置

  7. cmd_1改为FMS_Cmd.Land,飞机将原地降落,触地后自动上锁

  8. 点击上方的Stop按钮结束仿真,并打开上方的Simulation Data Inspector查看仿真数据

    对于更多的控制模式和指令定义,可以查看FMS-Model/bus/enum下的定义:

    当前支持的模式和指令如下:

    classdef PilotMode < Simulink.IntEnumType
     enumeration
         None(0)
         Manual(1)
         Acro(2)
         Stabilize(3)
         Altitude(4)
         Position(5)
         Mission(6)
         Offboard(7)
     end
    
    classdef FMS_Cmd < Simulink.IntEnumType
     enumeration
         None(0)
         PreArm(1000)
         Arm(1001)
         Disarm(1002)
         Takeoff(1003)
         Land(1004)
         Return(1005)
         Pause(1006)
         Continue(1007)
      end
    

    比如若要进行Mission航点模式飞行,只需将mode设置为PilotMode.Mission,然后把cmd_1设置为FMS_Cmd.PreArmFMS_Cmd.Takeoff即可。