mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 16:58:54 +08:00
simulation organization and cleanup
- new modules/simulation directory to collect all simulators and related modules - new Tools/simulation directory to collect and organize scattered simulation submodules, scripts, etc - simulation module renamed to simulator_mavlink - sih renamed to simulator_sih (not a great name, but I wanted to be clear it was a simulator) - ignition_simulator renamed to simulator_ignition_bridge - large sitl_target.cmake split by simulation option and in some cases pushed to appropriate modules - sitl targets broken down to what's actually available (eg jmavsim only has 1 model and 1 world) - new Gazebo consistently referred to as Ignition for now (probably the least confusing thing until we fully drop Gazebo classic support someday)
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
|
||||
. ${R}etc/init.d/rc.mc_defaults
|
||||
|
||||
PX4_SIMULATOR=${PX4_SIMULATOR:=sihsim}
|
||||
PX4_SIM_MODEL=${PX4_SIM_MODEL:=quadx}
|
||||
|
||||
# disable some checks to allow to fly:
|
||||
# - with usb
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
. ${R}etc/init.d/rc.fw_defaults
|
||||
|
||||
PX4_SIMULATOR=${PX4_SIMULATOR:=sihsim}
|
||||
PX4_SIM_MODEL=${PX4_SIM_MODEL:=airplane}
|
||||
|
||||
# disable some checks to allow to fly:
|
||||
# - with usb
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
|
||||
. ${R}etc/init.d/rc.vtol_defaults
|
||||
|
||||
PX4_SIMULATOR=${PX4_SIMULATOR:=sihsim}
|
||||
PX4_SIM_MODEL=${PX4_SIM_MODEL:=xvert}
|
||||
|
||||
param set-default VT_ELEV_MC_LOCK 0
|
||||
param set-default VT_TYPE 0
|
||||
param set-default VT_FW_DIFTHR_EN 1
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
. ${R}etc/init.d/rc.mc_defaults
|
||||
|
||||
PX4_SIMULATOR=${PX4_SIMULATOR:=ignition}
|
||||
PX4_SIM_MODEL=${PX4_SIM_MODEL:=x3}
|
||||
PX4_SIM_WORLD=${PX4_SIM_WORLD:=default}
|
||||
|
||||
param set-default SYS_CTRL_ALLOC 1
|
||||
|
||||
param set-default CA_AIRFRAME 0
|
||||
@@ -28,19 +32,19 @@ param set-default CA_ROTOR3_PX -0.13
|
||||
param set-default CA_ROTOR3_PY 0.20
|
||||
param set-default CA_ROTOR3_KM -0.05
|
||||
|
||||
param set-default SIM_GZ_FUNC1 101
|
||||
param set-default SIM_GZ_FUNC2 102
|
||||
param set-default SIM_GZ_FUNC3 103
|
||||
param set-default SIM_GZ_FUNC4 104
|
||||
param set-default SIM_IGN_FUNC1 101
|
||||
param set-default SIM_IGN_FUNC2 102
|
||||
param set-default SIM_IGN_FUNC3 103
|
||||
param set-default SIM_IGN_FUNC4 104
|
||||
|
||||
param set-default SIM_GZ_MIN1 150
|
||||
param set-default SIM_GZ_MIN2 150
|
||||
param set-default SIM_GZ_MIN3 150
|
||||
param set-default SIM_GZ_MIN4 150
|
||||
param set-default SIM_IGN_MIN1 150
|
||||
param set-default SIM_IGN_MIN2 150
|
||||
param set-default SIM_IGN_MIN3 150
|
||||
param set-default SIM_IGN_MIN4 150
|
||||
|
||||
param set-default SIM_GZ_MAX1 1000
|
||||
param set-default SIM_GZ_MAX2 1000
|
||||
param set-default SIM_GZ_MAX3 1000
|
||||
param set-default SIM_GZ_MAX4 1000
|
||||
param set-default SIM_IGN_MAX1 1000
|
||||
param set-default SIM_IGN_MAX2 1000
|
||||
param set-default SIM_IGN_MAX3 1000
|
||||
param set-default SIM_IGN_MAX4 1000
|
||||
|
||||
param set-default MPC_THR_HOVER 0.60
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
. ${R}etc/init.d/rc.mc_defaults
|
||||
|
||||
PX4_SIMULATOR=${PX4_SIMULATOR:=ignition}
|
||||
PX4_SIM_MODEL=${PX4_SIM_MODEL:=x4}
|
||||
PX4_SIM_WORLD=${PX4_SIM_WORLD:=default}
|
||||
|
||||
param set-default SYS_CTRL_ALLOC 1
|
||||
|
||||
param set-default CA_AIRFRAME 0
|
||||
@@ -36,26 +40,26 @@ param set-default CA_ROTOR5_PX 0.25
|
||||
param set-default CA_ROTOR5_PY 0.15
|
||||
param set-default CA_ROTOR5_KM -0.05
|
||||
|
||||
param set-default SIM_GZ_FUNC1 101
|
||||
param set-default SIM_GZ_FUNC2 102
|
||||
param set-default SIM_GZ_FUNC3 103
|
||||
param set-default SIM_GZ_FUNC4 104
|
||||
param set-default SIM_GZ_FUNC5 105
|
||||
param set-default SIM_GZ_FUNC6 106
|
||||
param set-default SIM_IGN_FUNC1 101
|
||||
param set-default SIM_IGN_FUNC2 102
|
||||
param set-default SIM_IGN_FUNC3 103
|
||||
param set-default SIM_IGN_FUNC4 104
|
||||
param set-default SIM_IGN_FUNC5 105
|
||||
param set-default SIM_IGN_FUNC6 106
|
||||
|
||||
param set-default SIM_GZ_MIN1 150
|
||||
param set-default SIM_GZ_MIN2 150
|
||||
param set-default SIM_GZ_MIN3 150
|
||||
param set-default SIM_GZ_MIN4 150
|
||||
param set-default SIM_GZ_MIN5 150
|
||||
param set-default SIM_GZ_MIN6 150
|
||||
param set-default SIM_IGN_MIN1 150
|
||||
param set-default SIM_IGN_MIN2 150
|
||||
param set-default SIM_IGN_MIN3 150
|
||||
param set-default SIM_IGN_MIN4 150
|
||||
param set-default SIM_IGN_MIN5 150
|
||||
param set-default SIM_IGN_MIN6 150
|
||||
|
||||
param set-default SIM_GZ_MAX1 1000
|
||||
param set-default SIM_GZ_MAX2 1000
|
||||
param set-default SIM_GZ_MAX3 1000
|
||||
param set-default SIM_GZ_MAX4 1000
|
||||
param set-default SIM_GZ_MAX5 1000
|
||||
param set-default SIM_GZ_MAX6 1000
|
||||
param set-default SIM_IGN_MAX1 1000
|
||||
param set-default SIM_IGN_MAX2 1000
|
||||
param set-default SIM_IGN_MAX3 1000
|
||||
param set-default SIM_IGN_MAX4 1000
|
||||
param set-default SIM_IGN_MAX5 1000
|
||||
param set-default SIM_IGN_MAX6 1000
|
||||
|
||||
|
||||
param set-default MC_PITCHRATE_D 0.0016
|
||||
|
||||
@@ -32,7 +32,7 @@ mavlink start -x -u $udp_onboard_payload_port_local -r 4000 -f -m onboard -o $ud
|
||||
mavlink start -x -u $udp_onboard_gimbal_port_local -r 400000 -m gimbal -o $udp_onboard_gimbal_port_remote
|
||||
|
||||
# To display for SIH sitl
|
||||
if [ "$SIM_MODE" = "sihsim" ]; then
|
||||
if [ "$PX4_SIMULATOR" = "sihsim" ]; then
|
||||
udp_sihsim_port_local=$((19450+px4_instance))
|
||||
udp_sihsim_port_remote=$((19410+px4_instance))
|
||||
mavlink start -x -u $udp_sihsim_port_local -r 400000 -m custom -o $udp_sihsim_port_remote
|
||||
|
||||
@@ -1,25 +1,50 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC2154
|
||||
|
||||
PX4_SIM_WORLD="${PX4_SIM_WORLD:="empty"}" # default to empty world?
|
||||
# Simulator IMU data provided at 250 Hz
|
||||
param set-default IMU_INTEG_RATE 250
|
||||
|
||||
echo "PX4_SIM_MODEL: ${PX4_SIM_MODEL}"
|
||||
echo "PX4_SIM_WORLD: ${PX4_SIM_WORLD}"
|
||||
if [ "$PX4_SIMULATOR" = "sihsim" ] || [ "$(param show -q SYS_AUTOSTART)" -eq "0" ]; then
|
||||
|
||||
# TODO: verify if world exists
|
||||
ign service --info --service /world/${PX4_SIM_WORLD}/create
|
||||
echo $?
|
||||
if ! simulator_sih start; then
|
||||
echo "ERROR [init] simulator_sih failed to start"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ign service -s /world/${PX4_SIM_WORLD}/create --reqtype ignition.msgs.EntityFactory --reptype ignition.msgs.Boolean --timeout 1000 --req "sdf_filename: \"${PX4_SIM_MODEL}/model.sdf\""
|
||||
elif [ "$PX4_SIMULATOR" = "ignition" ]; then
|
||||
|
||||
if ignition_simulator start -m "${PX4_SIM_MODEL}" -w "${PX4_SIM_WORLD}"
|
||||
then
|
||||
# source generated gazebo_env.sh for IGN_GAZEBO_RESOURCE_PATH
|
||||
if [ -f gazebo_env.sh ]; then
|
||||
. ./gazebo_env.sh
|
||||
elif [ -f ../gazebo_env.sh ]; then
|
||||
. ../gazebo_env.sh
|
||||
fi
|
||||
|
||||
sensor_baro_sim start
|
||||
sensor_gps_sim start
|
||||
sensor_mag_sim start
|
||||
if ! ign service --info --service /world/${PX4_SIM_WORLD}/create | grep "ignition.msgs.EntityFactory"; then
|
||||
# starting ign gazebo with ${PX4_SIM_WORLD} world
|
||||
echo "INFO [init] starting ign gazebo"
|
||||
|
||||
if [ -z $HEADLESS ]; then
|
||||
ign gazebo --verbose=1 -r "${PX4_IGN_GAZEBO_WORLDS}/${PX4_SIM_WORLD}.sdf" &
|
||||
else
|
||||
# starting ign gazebo headless
|
||||
ign gazebo --verbose=1 -r -s "${PX4_IGN_GAZEBO_WORLDS}/${PX4_SIM_WORLD}.sdf" &
|
||||
fi
|
||||
else
|
||||
echo "INFO [init] ign gazebo already running"
|
||||
fi
|
||||
|
||||
if simulator_ignition_bridge start -m "${PX4_SIM_MODEL}" -w "${PX4_SIM_WORLD}"; then
|
||||
sensor_baro_sim start
|
||||
sensor_gps_sim start
|
||||
sensor_mag_sim start
|
||||
else
|
||||
echo "ERROR [init] ign gazebo failed to start"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
else
|
||||
# otherwise start simulator (mavlink) module
|
||||
simulator_tcp_port=$((4560+px4_instance))
|
||||
|
||||
# Check if PX4_SIM_HOSTNAME environment variable is empty
|
||||
@@ -29,15 +54,15 @@ else
|
||||
|
||||
if [ -z "${PX4_SIM_HOST_ADDR}" ]; then
|
||||
echo "PX4 SIM HOST: localhost"
|
||||
simulator start -c $simulator_tcp_port
|
||||
simulator_mavlink start -c $simulator_tcp_port
|
||||
else
|
||||
echo "PX4 SIM HOST: $PX4_SIM_HOST_ADDR"
|
||||
simulator start -t $PX4_SIM_HOST_ADDR $simulator_tcp_port
|
||||
simulator_mavlink start -t $PX4_SIM_HOST_ADDR $simulator_tcp_port
|
||||
fi
|
||||
|
||||
else
|
||||
echo "PX4 SIM HOST: $PX4_SIM_HOSTNAME"
|
||||
simulator start -h $PX4_SIM_HOSTNAME $simulator_tcp_port
|
||||
simulator_mavlink start -h $PX4_SIM_HOSTNAME $simulator_tcp_port
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
@@ -38,10 +38,24 @@ set LOGGER_BUF 1000
|
||||
|
||||
set RUN_MINIMAL_SHELL no
|
||||
|
||||
# Use the variable set by sitl_run.sh to choose the model settings.
|
||||
if [ "$PX4_SIM_MODEL" = "shell" ]; then
|
||||
set SYS_AUTOSTART=0
|
||||
|
||||
if [ "$PX4_SIM_MODEL" = "shell" ]
|
||||
then
|
||||
set RUN_MINIMAL_SHELL yes
|
||||
else
|
||||
|
||||
elif [ -n "$PX4_SYS_AUTOSTART" ]
|
||||
then
|
||||
echo "env SYS_AUTOSTART: ${PX4_SYS_AUTOSTART}"
|
||||
SYS_AUTOSTART=${PX4_SYS_AUTOSTART}
|
||||
|
||||
elif [ "$PX4_SIM_MODEL" = "none" ] || [ -z $PX4_SIM_MODEL ]
|
||||
then
|
||||
# no airframe selected
|
||||
SYS_AUTOSTART=0
|
||||
|
||||
elif [ -n "$PX4_SIM_MODEL" ]
|
||||
then
|
||||
# Find the matching Autostart ID (file name has the form: [0-9]+_${PX4_SIM_MODEL})
|
||||
# TODO: unify with rc.autostart generation
|
||||
# shellcheck disable=SC2012
|
||||
@@ -50,12 +64,13 @@ else
|
||||
echo "ERROR [init] Unknown model $PX4_SIM_MODEL (not found by name on ${R}etc/init.d-posix/airframes)"
|
||||
exit 1
|
||||
else
|
||||
SYS_AUTOSTART=$REQUESTED_AUTOSTART
|
||||
echo "INFO [init] found model autostart file as SYS_AUTOSTART=$REQUESTED_AUTOSTART"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Load parameters
|
||||
set PARAM_FILE eeprom/parameters_"$REQUESTED_AUTOSTART"
|
||||
set PARAM_FILE parameters.bson
|
||||
param select $PARAM_FILE
|
||||
|
||||
if [ -f $PARAM_FILE ]
|
||||
@@ -66,26 +81,16 @@ then
|
||||
else
|
||||
echo "[param] FAILED loading $PARAM_FILE"
|
||||
fi
|
||||
else
|
||||
echo "[param] parameter file not found, creating $PARAM_FILE"
|
||||
fi
|
||||
|
||||
# exit early when the minimal shell is requested
|
||||
[ $RUN_MINIMAL_SHELL = yes ] && exit 0
|
||||
|
||||
if param compare SYS_AUTOSTART $SYS_AUTOSTART
|
||||
then
|
||||
set AUTOCNF no
|
||||
|
||||
# Use environment variable PX4_ESTIMATOR to choose estimator.
|
||||
if [ "$PX4_ESTIMATOR" = "q" ]; then
|
||||
param set SYS_MC_EST_GROUP 3
|
||||
elif [ "$PX4_ESTIMATOR" = "ekf2" ]; then
|
||||
param set SYS_MC_EST_GROUP 2
|
||||
elif [ "$PX4_ESTIMATOR" = "lpe" ]; then
|
||||
param set SYS_MC_EST_GROUP 1
|
||||
elif [ "$PX4_ESTIMATOR" = "inav" ]; then
|
||||
param set SYS_MC_EST_GROUP 0
|
||||
fi
|
||||
|
||||
if param compare SYS_AUTOSTART $REQUESTED_AUTOSTART
|
||||
elif [ "$SYS_AUTOSTART" -eq 0 ]
|
||||
then
|
||||
set AUTOCNF no
|
||||
else
|
||||
@@ -106,7 +111,7 @@ param set MAV_SYS_ID $((px4_instance+1))
|
||||
|
||||
if [ $AUTOCNF = yes ]
|
||||
then
|
||||
param set SYS_AUTOSTART $REQUESTED_AUTOSTART
|
||||
param set SYS_AUTOSTART $SYS_AUTOSTART
|
||||
|
||||
param set CAL_ACC0_ID 1310988 # 1310988: DRV_IMU_DEVTYPE_SIM, BUS: 1, ADDR: 1, TYPE: SIMULATION
|
||||
param set CAL_GYRO0_ID 1310988 # 1310988: DRV_IMU_DEVTYPE_SIM, BUS: 1, ADDR: 1, TYPE: SIMULATION
|
||||
@@ -190,27 +195,26 @@ do
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ ! -e "$autostart_file" ]; then
|
||||
|
||||
if [ -e "$autostart_file" ]
|
||||
then
|
||||
. "$autostart_file"
|
||||
|
||||
elif [ ! -e "$autostart_file" ] && [ "$SYS_AUTOSTART" -ne "0" ]
|
||||
then
|
||||
echo "Error: no autostart file found ($autostart_file)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. "$autostart_file"
|
||||
|
||||
# Simulator IMU data provided at 250 Hz
|
||||
param set IMU_INTEG_RATE 250
|
||||
|
||||
#user defined params for instances can be in PATH
|
||||
. px4-rc.params
|
||||
|
||||
dataman start
|
||||
# start sih in sih_sim mode, otherwise simulator module
|
||||
if [ "$SIM_MODE" = "sihsim" ]; then
|
||||
sih start
|
||||
|
||||
# only start the simulator if not in replay mode, as both control the lockstep time
|
||||
elif ! replay tryapplyparams
|
||||
if ! replay tryapplyparams
|
||||
then
|
||||
. px4-rc.simulator
|
||||
. px4-rc.simulator
|
||||
fi
|
||||
|
||||
load_mon start
|
||||
|
||||
@@ -368,7 +368,7 @@ else
|
||||
# start the simulator in hardware if needed
|
||||
if param compare SYS_HITL 2
|
||||
then
|
||||
sih start
|
||||
simulator_sih start
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user