该仿真测试系统为PX4提供软件在环(SITL)仿真功能,无需物理硬件即可开发、测试和验证飞行控制算法。该系统支持多种仿真后端,包括Gazebo、Gazebo Classic、jMAVSim、FlightGear以及内置的硬件仿真(SIH)模拟器。
有关编译模拟目标的构建系统的信息,请参阅“构建系统”部分。
仿真架构概述
该仿真系统包括仿真器后端选择、传感器数据桥接、执行器输出处理和真实数据生成:

模拟器选择和启动
该仿真系统使用分层启动脚本,根据环境变量和参数选择合适的仿真器后端:
| 环境变量 | 范围 | 模拟器后端 | 桥接模块 |
|---|---|---|---|
|
|
现代凉亭 | |
|
|
SIH内部 | |
|
|
jMAVSim | – |
| 默认 | – | 凉亭经典款 | |
启动过程由脚本处理,该脚本包含基于检测到的模拟器的特定 RC 文件:
px4-rc.simulator
px4-rc.gzsim现代凉亭px4-rc.sihsimSIH模拟器px4-rc.jmavsim用于 jMAVSimpx4-rc.mavlinksim适用于 Gazebo Classic
Gazebo 实施
该类提供 PX4 和现代 Gazebo 模拟器之间的主要接口,处理双向数据交换:
GZBridge

桥梁关键部件
初始化过程会根据参数配置订阅必需和可选的传感器主题:
GZBridge
必需订阅:
通过时钟同步通过姿态信息
subscribeClock()通过IMU数据
subscribePoseInfo()通过磁力计
subscribeImu()
subscribeMag()
可选订阅(参数控制):
GPS通过
subscribeNavsat()通过
SIM_GZ_EN_GPS=1晴雨表
subscribeAirPressure()通过
SIM_GZ_EN_BARO=1激光雷达
subscribeDistanceSensor()光流
SIM_GZ_EN_LIDAR=1通过
subscribeOpticalFlow()
SIM_GZ_EN_FLOW=1
坐标系变换
该桥接器执行 Gazebo 的 FLU(前左上)坐标系和 PX4 的 FRD(前右下)坐标系之间的坐标变换:
// FLU -> FRD transformation
static const auto q_FLU_to_FRD = gz::math::Quaterniond(0, 1, 0, 0);
gz::math::Vector3d accel_b = q_FLU_to_FRD.RotateVector(gz::math::Vector3d(
msg.linear_acceleration().x(),
msg.linear_acceleration().y(),
msg.linear_acceleration().z()));
模拟传感器
空速传感器模拟
该模块在以下情况下提供合成空速测量值
SensorAirspeedSim:
SENS_EN_ARSPDSIM=1

空速计算包括大气建模和高度补偿:
const float temperature_local = TEMPERATURE_MSL - LAPSE_RATE * alt_amsl;
const float density_ratio = powf(TEMPERATURE_MSL / temperature_local, 4.256f);
const float air_density = AIR_DENSITY_MSL / density_ratio;
机身配置
模拟机身在目录中按照特定的编号方案进行定义:
ROMFS/px4fmu_common/init.d-posix/airframes/
| 范围 | 模拟器 | 示例 |
|---|---|---|
| 1000-1999 | 经典款 |
, |
| 4000-4999 | (gz) |
,, |
| 10000-10999 | 多合一 | , |
| 17000-17999 | FlightGear | |
Gazebo X500 配置示例
该机身展示了典型的仿真参数设置:
4001_gz_x500
PX4_SIMULATOR=${PX4_SIMULATOR:=gz}
PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}
PX4_SIM_MODEL=${PX4_SIM_MODEL:=x500}
param set-default SIM_GZ_EN 1
# Control allocation for quadrotor
param set-default CA_AIRFRAME 0
param set-default CA_ROTOR_COUNT 4
# Motor positions and characteristics
param set-default CA_ROTOR0_PX 0.13
param set-default CA_ROTOR0_PY 0.22
param set-default CA_ROTOR0_KM 0.05
真实数据生成
该仿真系统提供用于算法验证和测试的真实数据。它通过处理仿真器姿态信息来发布真实数据主题:
GZBridge

基于参数的传感器控制
Gazebo桥接器使用参数来启用/禁用特定传感器,从而实现灵活的仿真配置:
| 范围 | 默认 | 描述 |
|---|---|---|
|
1 | 启用 GPS/NavSat 传感器 |
|
1 | 启用气压计/气压 |
|
1 | 启用激光雷达/距离传感器 |
|
1 | 启用光流传感器 |
|
1 | 启用空速传感器 |
|
1 | 启用视觉里程计 |
这些参数允许开发人员在不修改车辆配置的情况下,模拟传感器故障或使用不同的传感器套件测试算法。















暂无评论内容