硬件仿真

ArduPilot 的 "硬件仿真 "与有时被称为 "环路硬件 "的功能类似。不过,与许多此类系统不同的是,仿真并不是在外部运行(将生成的环境数据传递给飞行器),而是由飞行器自身的(飞行)控制器同时运行飞行控制软件和仿真。ArduPilot 的本地 SITL 仿真环境就是为此目的而重新使用的。

硬件仿真可以检查这一点:

  • 任务结构正确

  • 控制面在整个模拟任务中适当移动

  • 物理故障保险装置(如降落伞)功能适当,不会给载具带来危险

  • 通信基础设施在实际交通情况下的运作

备注

硬件仿真一直在不断改进。建议您运行主分支("最新 "固件),以便利用任何新增功能。

在(飞行)控制器上加载固件并连接 GCS。全球定位系统的初始位置数据由模拟器提供,可通过以下方式更改 SIM_OPOS_LAT, SIM_OPOS_LNG, SIM_OPOS_ALTSIM_OPOS_HDG 参数。仿真的设置、上膛和飞行就像使用 sim_vehicle.py 以及载具和车架的相关物理模型一样。

局限性

  • 真实飞机和模拟飞机共享参数空间。由于真实飞机和虚拟飞机的传感器套件不同,这会导致传感器校准问题。因此,在真实固件和模拟固件之间移动时,必须擦除参数并重新写入飞行器。

  • 目前,固件服务器上仅提供用于 Cube Orange QuadCopter (飞行)控制器的预编译固件。根据以下说明,可以为其他板卡和飞行器类型编译固件

保存参数!

如果您一直在使用(飞行)控制器,请务必将参数、任务项目、栅栏和集结点保存到文件中,以便以后重新加载。

保存这些参数以便在模拟后替换它们后,通过设置 格式版本 参数为零并重启载具。这样就可以在模拟中使用新的默认值。

备注

使用 MAVProxy 时,一旦重启,您需要 "FETCH "参数来刷新参数,以查看参数是否已更改为默认值,或者断开连接并重新连接到(飞行)控制器。

预编译固件

用于 Cube Orange 的预编译二进制文件位于 我们的固件服务器.仅在 旋翼飞行器 版本。

请注意,该固件已删除了一些功能,包括挂载支持。

编译自己的固件并加载到 AutoPilot 中

硬件仿真默认不编译到 ArduPilot 固件中。

如果您设置了 ArduPilot 开发环境 您可以将其添加到任何 ChibiOS hwdef 文件中,方法是添加一行 环境 SIM_ENABLED 1.使用 CubeOrange-SimOnHardware hwdef 文件(和默认参数文件!)作为参考。

灵活的固件构建脚本位于 这里它使用现有电路板的 hwdef,并通过模拟器构建固件。

  • 首先配置构建(示例所示为 CubeOrange,用于垂直起降倾斜三旋翼飞行器)并上传至电路板

./Tools/scripts/sitl-on-hardware/sitl-on-hw.py --板 CubeOrange-SimOnHardWare --载具 飞机 -模拟类 垂直起降 --框架 垂直起降倾斜仪 --默认值 ./Tools/autotest/default_params/quadplane-tilttri.parm --上传
  • 板:固件的目标板

  • 载具:飞机/漫游车/旋翼飞行器/飞艇,与 sim_vehicle.py 使用的相同

  • simclass:飞机/多旋翼旋翼飞行器/旋翼飞行器/模拟漫游车/帆船/四旋翼飞机

  • frame:与 sim_vehicle.py 中使用的相同,它会根据使用的车架类型修改物理模型,但与基于软件的 SITL 不同,它不会同时加载该车架的默认参数集(如 Q_TILT_ENABLE = 1 等)。因此必须在加载固件后手动添加。

  • defaults:额外的默认文件(可选)。如图所示,它将加载 sim_vehicle.py 为示例框架加载的默认参数文件。如果省略,则将加载最小的 defaults.parm 文件,以便模拟大多数载具。您可能需要创建一个文件来设置这些必要的模拟参数(见下文)、车架默认参数或您在载具上使用的参数,包括您可能希望在模拟过程中激活的特定硬件设备的其他参数(请确保不要更改下面的必要参数)。

为了在(飞行)控制器保持静止的情况下模拟飞行,它将使用模拟的 IMU、GPS 和指南针。

模拟所需参数

连接 GCS。

为了使模拟工作正常进行,必须模拟 IMU、GPS 和指南针传感器。上面的脚本设置了这些传感器,因此您无需进行设置,同时还禁用了安全开关和 IMU 加热器限制:

如上所述,您可能还需要为您的特定车架准备正确的参数。

从主场开始

您可以通过设置以下参数设置模拟的起始位置,否则将使用正常的堪培拉位置:

重新启动并重新连接 GCS。模拟将开始运行。

使用模拟器

模拟器的运行方式与 PC 上的 SITL 模拟几乎完全相同。(飞行)控制器现在运行的是模拟物理模型和模拟传感器。您必须为输出加载参数,并为特定载具加载任何其他非默认参数,如继电器、所需的故障安全动作等。您可以在上述脚本中指定默认文件,也可以在加载固件后手动加载默认文件。

为了上膛飞行器,请向(飞行)控制器提供正常的遥控输入,或使用 MAVLink 遥控重载来提供遥控输入。只需在 MAVProxy 中设置 "rc 3 1000",即可清除遥控装置不存在的预上膛检查,您可以使用 rc x pwm 值>; 或使用遥控接收器。

备注

为了让偏航控制器正常工作,旋翼飞行器需要发送方向舵输入或将其设置为中性(即 RC 4 1500)。

等待飞行器准备好启动。尝试在模拟器中飞行,就像软件模拟一样,监控 GCS,包括绘制致动器输出等。

这里有一段视频,展示了构建和操作过程:

允许执行器移动

警告

在继续飞行之前,请拆除/停用所有螺旋桨或其他危险的传动装置。如果控制面明显吃力,应做好切断舵机电源的准备。远离夹带或其他危险。

伺服/电机输出可通过设置 SIM_OH_MASK 参数。这些位与伺服输出通道相对应,因此要使前 4 个通道移动,需要设置 SIM_OH_MASK 至 15。

继电器输出可通过设置 sim_oh_relay_msk 参数。这些位与继电器相对应,因此要使前 2 个继电器动作,请设置 sim_oh_relay_msk 至 3。