硬件仿真¶
ArduPilot 的 "硬件仿真 "与有时被称为 "环路硬件 "的功能类似。不过,与许多此类系统不同的是,仿真并不是在外部运行(将生成的环境数据传递给飞行器),而是由飞行器自身的(飞行)控制器同时运行飞行控制软件和仿真。ArduPilot 的本地 SITL 仿真环境就是为此目的而重新使用的。
硬件仿真可以检查这一点:
任务结构正确
控制面在整个模拟任务中适当移动
物理故障保险装置(如降落伞)功能适当,不会给载具带来危险
通信基础设施在实际交通情况下的运作
备注
硬件仿真一直在不断改进。建议您运行主分支("最新 "固件),以便利用任何新增功能。
在(飞行)控制器上加载固件并连接 GCS。全球定位系统的初始位置数据由模拟器提供,可通过以下方式更改 SIM_OPOS_LAT, SIM_OPOS_LNG, SIM_OPOS_ALT 和 SIM_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 加热器限制:
AHRS_EKF_TYPE = 10
GPS1_TYPE = 100
SIM_MAG1_DEVID = 97539
如上所述,您可能还需要为您的特定车架准备正确的参数。
从主场开始¶
您可以通过设置以下参数设置模拟的起始位置,否则将使用正常的堪培拉位置:
SIM_OPOS_LAT 以 -/+ X.xxx 的形式出现
SIM_OPOS_ALT 米海拔高度
SIM_OPOS_HDG 0-360 度为初始航向
重新启动并重新连接 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。