mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
243 lines
6.1 KiB
Bash
243 lines
6.1 KiB
Bash
#!/usr/bin/bash
|
|
|
|
# PX4 commands need the 'px4-' prefix in bash.
|
|
# (px4-alias.sh is expected to be in the PATH)
|
|
source px4-alias.sh
|
|
|
|
#
|
|
# Main SITL startup script
|
|
#
|
|
|
|
# check for ekf2 replay
|
|
if [ "$replay_mode" == "ekf2" ]
|
|
then
|
|
sh etc/init.d-posix/rc.replay
|
|
exit 0
|
|
fi
|
|
|
|
# initialize script variables
|
|
set AUX_MODE none
|
|
set IO_PRESENT no
|
|
set LOG_FILE bootlog.txt
|
|
set MAV_TYPE none
|
|
set MIXER none
|
|
set MIXER_AUX none
|
|
set MIXER_FILE none
|
|
set OUTPUT_MODE sim
|
|
set PWM_OUT none
|
|
set SDCARD_MIXERS_PATH etc/mixers
|
|
set USE_IO no
|
|
set VEHICLE_TYPE none
|
|
|
|
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 RUN_MINIMAL_SHELL yes
|
|
elif [ "$PX4_SIM_MODEL" == "iris" ]; then
|
|
set REQUESTED_AUTOSTART 10016
|
|
elif [ "$PX4_SIM_MODEL" == "iris_opt_flow" ]; then
|
|
set REQUESTED_AUTOSTART 1010
|
|
elif [ "$PX4_SIM_MODEL" == "iris_irlock" ]; then
|
|
set REQUESTED_AUTOSTART 1011
|
|
elif [ "$PX4_SIM_MODEL" == "iris_rplidar" ]; then
|
|
set REQUESTED_AUTOSTART 1012
|
|
elif [ "$PX4_SIM_MODEL" == "iris_vision" ]; then
|
|
set REQUESTED_AUTOSTART 1013
|
|
elif [ "$PX4_SIM_MODEL" == "solo" ]; then
|
|
set REQUESTED_AUTOSTART 1014
|
|
elif [ "$PX4_SIM_MODEL" == "hippocampus" ]; then
|
|
set REQUESTED_AUTOSTART 1020
|
|
elif [ "$PX4_SIM_MODEL" == "plane" ]; then
|
|
set REQUESTED_AUTOSTART 1030
|
|
elif [ "$PX4_SIM_MODEL" == "standard_vtol" ]; then
|
|
set REQUESTED_AUTOSTART 1040
|
|
elif [ "$PX4_SIM_MODEL" == "tailsitter" ]; then
|
|
set REQUESTED_AUTOSTART 1041
|
|
elif [ "$PX4_SIM_MODEL" == "tiltrotor" ]; then
|
|
set REQUESTED_AUTOSTART 1042
|
|
elif [ "$PX4_SIM_MODEL" == "rover" ]; then
|
|
set REQUESTED_AUTOSTART 1060
|
|
elif [ "$PX4_SIM_MODEL" == "typhoon_h480" ]; then
|
|
set REQUESTED_AUTOSTART 6011
|
|
else
|
|
echo "Unknown model"
|
|
exit -1
|
|
fi
|
|
|
|
# clear bootlog
|
|
[ -f $LOG_FILE ] && rm $LOG_FILE
|
|
|
|
|
|
uorb start
|
|
if [ -f eeprom/parameters ]
|
|
then
|
|
param load
|
|
fi
|
|
|
|
# exit early when the minimal shell is requested
|
|
[ $RUN_MINIMAL_SHELL == yes ] && exit 0
|
|
|
|
|
|
# Use environment variable PX4_ESTIMATOR to choose estimator.
|
|
if [ "$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
|
|
then
|
|
set AUTOCNF no
|
|
else
|
|
set AUTOCNF yes
|
|
fi
|
|
|
|
# multi-instance setup
|
|
param set MAV_SYS_ID $((1+$px4_instance))
|
|
simulator_udp_port=$((14560+$px4_instance))
|
|
udp_offboard_port_local=$((14557+$px4_instance))
|
|
udp_offboard_port_remote=$((14540+$px4_instance))
|
|
udp_gcs_port_local=$((14556+$px4_instance))
|
|
|
|
if [ $AUTOCNF == yes ]
|
|
then
|
|
param set SYS_AUTOSTART $REQUESTED_AUTOSTART
|
|
|
|
param set BAT_N_CELLS 3
|
|
param set CAL_ACC0_ID 1376264
|
|
param set CAL_ACC0_XOFF 0.01
|
|
param set CAL_ACC0_XSCALE 1.01
|
|
param set CAL_ACC0_YOFF -0.01
|
|
param set CAL_ACC0_YSCALE 1.01
|
|
param set CAL_ACC0_ZOFF 0.01
|
|
param set CAL_ACC0_ZSCALE 1.01
|
|
param set CAL_ACC1_ID 1310728
|
|
param set CAL_ACC1_XOFF 0.01
|
|
param set CAL_GYRO0_ID 2293768
|
|
param set CAL_GYRO0_XOFF 0.01
|
|
param set CAL_MAG0_ID 196616
|
|
param set CAL_MAG0_XOFF 0.01
|
|
param set SENS_DPRES_OFF 0.001
|
|
param set CBRK_AIRSPD_CHK 0
|
|
|
|
param set COM_DISARM_LAND 3
|
|
param set COM_OBL_ACT 2
|
|
param set COM_OBL_RC_ACT 0
|
|
param set COM_OF_LOSS_T 5
|
|
param set COM_RC_IN_MODE 1
|
|
|
|
param set EKF2_AID_MASK 1
|
|
param set EKF2_ANGERR_INIT 0.01
|
|
param set EKF2_GBIAS_INIT 0.01
|
|
param set EKF2_HGT_MODE 0
|
|
param set EKF2_MAG_TYPE 1
|
|
|
|
param set MC_PITCH_P 6
|
|
param set MC_PITCHRATE_P 0.2
|
|
param set MC_ROLL_P 6
|
|
param set MC_ROLLRATE_P 0.2
|
|
param set MIS_TAKEOFF_ALT 2.5
|
|
param set MPC_ALT_MODE 0
|
|
param set MPC_HOLD_MAX_Z 2.0
|
|
param set MPC_Z_VEL_I 0.15
|
|
param set MPC_Z_VEL_P 0.6
|
|
param set NAV_ACC_RAD 2.0
|
|
param set NAV_DLL_ACT 2
|
|
param set RTL_DESCEND_ALT 5.0
|
|
param set RTL_LAND_DELAY 5
|
|
param set RTL_RETURN_ALT 30.0
|
|
|
|
param set SDLOG_DIRS_MAX 7
|
|
param set SENS_BOARD_ROT 0
|
|
param set SENS_BOARD_X_OFF 0.000001
|
|
param set SYS_RESTART_TYPE 2
|
|
|
|
# LPE: GPS only mode
|
|
param set LPE_FUSION 145
|
|
|
|
param set WEST_EN 0
|
|
fi
|
|
|
|
# Autostart ID
|
|
autostart_file_match="etc/init.d-posix/$(param show -q SYS_AUTOSTART)_*"
|
|
autostart_files=( $autostart_file_match )
|
|
autostart_file="${autostart_files[0]}" # use first match, but there should really only be one
|
|
if [ ! -e "$autostart_file" ]; then
|
|
echo "Error: no autostart file found"
|
|
exit -1
|
|
fi
|
|
|
|
sh "$autostart_file"
|
|
|
|
|
|
dataman start
|
|
replay tryapplyparams
|
|
simulator start -s -u $simulator_udp_port
|
|
tone_alarm start
|
|
gyrosim start
|
|
accelsim start
|
|
barosim start
|
|
gpssim start
|
|
sensors start
|
|
commander start
|
|
navigator start
|
|
|
|
if param compare WEST_EN 1
|
|
then
|
|
wind_estimator start
|
|
fi
|
|
|
|
if ! param compare MNT_MODE_IN -1
|
|
then
|
|
vmount start
|
|
fi
|
|
|
|
if param greater TRIG_MODE 0
|
|
then
|
|
camera_trigger start
|
|
param set CAM_FBACK_MODE 1
|
|
camera_feedback start
|
|
fi
|
|
|
|
|
|
if [ ${VEHICLE_TYPE} == fw -o ${VEHICLE_TYPE} == vtol ]
|
|
then
|
|
if param compare CBRK_AIRSPD_CHK 0
|
|
then
|
|
measairspeedsim start
|
|
fi
|
|
fi
|
|
|
|
# Configure vehicle type specific parameters.
|
|
# Note: rc.vehicle_setup is the entry point for rc.interface,
|
|
# rc.fw_apps, rc.mc_apps, rc.ugv_apps, and rc.vtol_apps.
|
|
#
|
|
sh etc/init.d/rc.vehicle_setup
|
|
|
|
# GCS link
|
|
mavlink start -x -u $udp_gcs_port_local -r 4000000
|
|
mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u $udp_gcs_port_local
|
|
mavlink stream -r 50 -s LOCAL_POSITION_NED -u $udp_gcs_port_local
|
|
mavlink stream -r 50 -s GLOBAL_POSITION_INT -u $udp_gcs_port_local
|
|
mavlink stream -r 50 -s ATTITUDE -u $udp_gcs_port_local
|
|
mavlink stream -r 50 -s ATTITUDE_QUATERNION -u $udp_gcs_port_local
|
|
mavlink stream -r 50 -s ATTITUDE_TARGET -u $udp_gcs_port_local
|
|
mavlink stream -r 50 -s SERVO_OUTPUT_RAW_0 -u $udp_gcs_port_local
|
|
mavlink stream -r 20 -s RC_CHANNELS -u $udp_gcs_port_local
|
|
mavlink stream -r 10 -s OPTICAL_FLOW_RAD -u $udp_gcs_port_local
|
|
|
|
# API/Offboard link
|
|
mavlink start -x -u $udp_offboard_port_local -r 4000000 -m onboard -o $udp_offboard_port_remote
|
|
|
|
# execute autostart post script if any
|
|
[ -e "$autostart_file".post ] && sh "$autostart_file".post
|
|
|
|
|
|
logger start -e -t -b 1000
|
|
|
|
mavlink boot_complete
|
|
replay trystart
|