start airspeed sensor sim according to param

AFAIK this is not done anywhere else for SIH-as-SITL. Just below for
gazebo it is already present.

the corresponding check for SIH-on-FC happens at
ROMFS/px4fmu_common/init.d/rcS:388 - also no airspeed is enabled
anywhere. is that intended?

also, handle airspeed failure correctly in SensorAirspeedSim.cpp
This commit is contained in:
Balduin
2025-11-24 09:09:00 -08:00
committed by Ramon Roche
parent 5c08b11442
commit b3c1d91408
2 changed files with 48 additions and 5 deletions
@@ -8,8 +8,48 @@ param set-default IMU_INTEG_RATE 250
param set-default COM_MODE_ARM_CHK 1
if [ "$PX4_SIMULATOR" = "sihsim" ] || [ "$(param show -q SYS_AUTOSTART)" -eq "0" ]; then
# Run SIH
. px4-rc.sihsim
echo "INFO [init] SIH simulator"
if [ -n "${PX4_HOME_LAT}" ]; then
param set SIH_LOC_LAT0 ${PX4_HOME_LAT}
fi
if [ -n "${PX4_HOME_LON}" ]; then
param set SIH_LOC_LON0 ${PX4_HOME_LON}
fi
if [ -n "${PX4_HOME_ALT}" ]; then
param set SIH_LOC_H0 ${PX4_HOME_ALT}
fi
if simulator_sih start; then
if param compare -s SENS_EN_BAROSIM 1
then
sensor_baro_sim start
fi
if param compare -s SENS_EN_GPSSIM 1
then
sensor_gps_sim start
fi
if param compare -s SENS_EN_MAGSIM 1
then
sensor_mag_sim start
fi
if param compare -s SENS_EN_ARSPDSIM 1
then
sensor_airspeed_sim start
fi
if param compare -s SENS_EN_AGPSIM 1
then
sensor_agp_sim start
fi
else
echo "ERROR [init] simulator_sih failed to start"
exit 1
fi
elif [ "$PX4_SIMULATOR" = "gz" ] || [ "$(param show -q SIM_GZ_EN)" = "1" ]; then
# Run Gazebo (gz)
@@ -106,9 +106,12 @@ void SensorAirspeedSim::Run()
updateParams();
}
if (_sim_failure.get() == 0) {
if (_vehicle_local_position_sub.updated() && _vehicle_global_position_sub.updated()
&& _vehicle_attitude_sub.updated()) {
if (_vehicle_local_position_sub.updated() && _vehicle_global_position_sub.updated()
&& _vehicle_attitude_sub.updated()) {
check_failure_injection();
if (_sim_failure.get() == 0 && !_arsp_blocked) {
vehicle_local_position_s lpos{};
_vehicle_local_position_sub.copy(&lpos);