diff --git a/.ci/Jenkinsfile-hardware b/.ci/Jenkinsfile-hardware index 3aade46658..adc2570937 100644 --- a/.ci/Jenkinsfile-hardware +++ b/.ci/Jenkinsfile-hardware @@ -17,6 +17,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -24,7 +25,7 @@ pipeline { sh 'make cubepilot_cubeorange_console' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/cubepilot_cubeorange_console/cubepilot_cubeorange_console.elf', name: 'cubepilot_cubeorange_console' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'cubepilot_cubeorange_console' } post { always { @@ -93,6 +94,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -100,7 +102,7 @@ pipeline { sh 'make cuav_x7pro_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/cuav_x7pro_default/cuav_x7pro_default.elf', name: 'cuav_x7pro_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'cuav_x7pro_default' } post { always { @@ -220,6 +222,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -227,7 +230,7 @@ pipeline { sh 'make px4_fmu-v3_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v3_default/px4_fmu-v3_default.elf', name: 'px4_fmu-v3_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v3_default' } post { always { @@ -294,6 +297,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -301,7 +305,7 @@ pipeline { sh 'make px4_fmu-v4_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v4_default/px4_fmu-v4_default.elf', name: 'px4_fmu-v4_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v4_default' } post { always { @@ -367,6 +371,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -374,7 +379,7 @@ pipeline { sh 'make px4_fmu-v4pro_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v4pro_default/px4_fmu-v4pro_default.elf', name: 'px4_fmu-v4pro_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v4pro_default' } post { always { @@ -441,6 +446,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -448,7 +454,7 @@ pipeline { sh 'make px4_fmu-v5_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v5_default/px4_fmu-v5_default.elf', name: 'px4_fmu-v5_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v5_default' } post { always { @@ -516,6 +522,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -523,7 +530,7 @@ pipeline { sh 'make px4_fmu-v5_debug' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v5_debug/px4_fmu-v5_debug.elf', name: 'px4_fmu-v5_debug' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v5_debug' } post { always { @@ -593,6 +600,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -600,7 +608,7 @@ pipeline { sh 'make px4_fmu-v5_optimized' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v5_optimized/px4_fmu-v5_optimized.elf', name: 'px4_fmu-v5_optimized' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v5_optimized' } post { always { @@ -666,6 +674,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -673,7 +682,7 @@ pipeline { sh 'make px4_fmu-v5_stackcheck' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/px4_fmu-v5_stackcheck/px4_fmu-v5_stackcheck.elf', name: 'px4_fmu-v5_stackcheck' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'px4_fmu-v5_stackcheck' } post { always { @@ -743,6 +752,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -750,7 +760,7 @@ pipeline { sh 'make modalai_fc-v1_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/modalai_fc-v1_default/modalai_fc-v1_default.elf', name: 'modalai_fc-v1_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'modalai_fc-v1_default' } post { always { @@ -816,6 +826,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -823,7 +834,7 @@ pipeline { sh 'make holybro_durandal-v1_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/holybro_durandal-v1_default/holybro_durandal-v1_default.elf', name: 'holybro_durandal-v1_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'holybro_durandal-v1_default' } post { always { @@ -895,6 +906,7 @@ pipeline { } } steps { + checkout scm sh 'export' sh 'make distclean' sh 'ccache -s' @@ -902,7 +914,7 @@ pipeline { sh 'make nxp_fmuk66-v3_default' sh 'make sizes' sh 'ccache -s' - stash includes: 'build/nxp_fmuk66-v3_default/nxp_fmuk66-v3_default.elf', name: 'nxp_fmuk66-v3_default' + stash includes: 'build/*/*.elf, platforms/nuttx/Debug/upload_jlink_gdb.sh, Tools/HIL/*.py', name: 'nxp_fmuk66-v3_default' } post { always { @@ -968,6 +980,7 @@ pipeline { options { buildDiscarder(logRotator(numToKeepStr: '20', artifactDaysToKeepStr: '40')) timeout(time: 90, unit: 'MINUTES') + skipDefaultCheckout() } } @@ -998,6 +1011,8 @@ void statusFTDI() { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener estimator_status"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener estimator_status_flags"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener logger_status"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener parameter_update"' + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener px4io_status"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener sensor_accel"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener sensor_accel_fifo"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener sensor_baro"' @@ -1006,7 +1021,6 @@ void statusFTDI() { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener sensor_gyro_fifo"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener sensor_mag"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener sensors_status_imu"' - sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener px4io_status"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener system_power"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener telemetry_status"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "listener vehicle_air_data"' diff --git a/.gitignore b/.gitignore index e760bc6580..2e467da624 100644 --- a/.gitignore +++ b/.gitignore @@ -101,9 +101,6 @@ msg/tmp/ msg/topics_sources/ platforms/posix/apps.cpp platforms/posix/apps.h -src/lib/parameters/px4_parameters.c -src/lib/parameters/px4_parameters.h -src/lib/parameters/px4_parameters_public.h src/lib/version/build_git_version.h src/modules/simulator/simulator_config.h src/systemcmds/topic_listener/listener_generated.cpp diff --git a/ROMFS/px4fmu_common/init.d/airframes/1000_rc_fw_easystar.hil b/ROMFS/px4fmu_common/init.d/airframes/1000_rc_fw_easystar.hil index e12d04091b..94f8389c63 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/1000_rc_fw_easystar.hil +++ b/ROMFS/px4fmu_common/init.d/airframes/1000_rc_fw_easystar.hil @@ -17,34 +17,33 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 3 - param set FW_AIRSPD_MAX 20 - param set FW_AIRSPD_MIN 12 - param set FW_AIRSPD_TRIM 14 - param set FW_R_TC 0.3 - param set FW_P_TC 0.3 - param set FW_L1_DAMPING 0.74 - param set FW_L1_PERIOD 16 - param set FW_LND_ANG 15 - param set FW_LND_FLALT 5 - param set FW_LND_HHDIST 15 - param set FW_LND_HVIRT 13 - param set FW_LND_TLALT 5 - param set FW_THR_LND_MAX 0 - param set FW_PR_FF 0.35 - param set FW_PR_I 0.1 - param set FW_PR_IMAX 0.4 - param set FW_PR_P 0.2 - param set FW_RR_FF 0.6 - param set FW_RR_I 0.1 - param set FW_RR_IMAX 0.2 - param set FW_RR_P 0.3 +param set-default BAT_N_CELLS 3 + +param set-default FW_AIRSPD_MAX 20 +param set-default FW_AIRSPD_MIN 12 +param set-default FW_AIRSPD_TRIM 14 +param set-default FW_R_TC 0.3 +param set-default FW_P_TC 0.3 +param set-default FW_L1_DAMPING 0.74 +param set-default FW_L1_PERIOD 16 +param set-default FW_LND_ANG 15 +param set-default FW_LND_FLALT 5 +param set-default FW_LND_HHDIST 15 +param set-default FW_LND_HVIRT 13 +param set-default FW_LND_TLALT 5 +param set-default FW_THR_LND_MAX 0 +param set-default FW_PR_FF 0.35 +param set-default FW_PR_I 0.1 +param set-default FW_PR_IMAX 0.4 +param set-default FW_PR_P 0.2 +param set-default FW_RR_FF 0.6 +param set-default FW_RR_I 0.1 +param set-default FW_RR_IMAX 0.2 +param set-default FW_RR_P 0.3 + +param set-default RWTO_TKOFF 1 - param set RWTO_TKOFF 1 -fi param set SYS_HITL 1 diff --git a/ROMFS/px4fmu_common/init.d/airframes/10015_tbs_discovery b/ROMFS/px4fmu_common/init.d/airframes/10015_tbs_discovery index 39e5eef8c1..73ba807362 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/10015_tbs_discovery +++ b/ROMFS/px4fmu_common/init.d/airframes/10015_tbs_discovery @@ -26,22 +26,19 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.1 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.0017 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.14 - param set MC_PITCHRATE_I 0.1 - param set MC_PITCHRATE_D 0.0025 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.28 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 -fi +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.1 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.0017 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.14 +param set-default MC_PITCHRATE_I 0.1 +param set-default MC_PITCHRATE_D 0.0025 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.28 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 set MIXER quad_w set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/10016_3dr_iris b/ROMFS/px4fmu_common/init.d/airframes/10016_3dr_iris index 8148c01be9..3ea6fa74d9 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/10016_3dr_iris +++ b/ROMFS/px4fmu_common/init.d/airframes/10016_3dr_iris @@ -24,26 +24,23 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - # TODO tune roll/pitch separately - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.004 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.004 - param set MC_YAW_P 2.5 - param set MC_YAWRATE_P 0.25 - param set MC_YAWRATE_I 0.25 - param set MC_YAWRATE_D 0 - param set BAT_V_DIV 12.27559 - param set BAT_A_PER_V 15.39103 -fi +# TODO tune roll/pitch separately +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_YAW_P 2.5 +param set-default MC_YAWRATE_P 0.25 +param set-default MC_YAWRATE_I 0.25 +param set-default MC_YAWRATE_D 0 +param set-default BAT_V_DIV 12.27559 +param set-default BAT_A_PER_V 15.39103 set MIXER quad_w set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/10017_steadidrone_qu4d b/ROMFS/px4fmu_common/init.d/airframes/10017_steadidrone_qu4d index b2ba5a1d2c..26378a7321 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/10017_steadidrone_qu4d +++ b/ROMFS/px4fmu_common/init.d/airframes/10017_steadidrone_qu4d @@ -26,24 +26,21 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 4 - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.13 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.004 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.19 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.004 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 -fi +param set-default BAT_N_CELLS 4 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.13 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.19 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 set MIXER quad_w set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/10018_tbs_endurance b/ROMFS/px4fmu_common/init.d/airframes/10018_tbs_endurance index e0a56b753e..f586eb8600 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/10018_tbs_endurance +++ b/ROMFS/px4fmu_common/init.d/airframes/10018_tbs_endurance @@ -26,29 +26,26 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 6 - param set BAT_V_EMPTY 3.5 - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.08 - param set MC_ROLLRATE_I 0.02 - param set MC_ROLLRATE_D 0.003 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.13 - param set MC_PITCHRATE_I 0.02 - param set MC_PITCHRATE_D 0.005 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 +param set-default BAT_N_CELLS 6 +param set-default BAT_V_EMPTY 3.5 - param set MPC_XY_VEL_MAX 2 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.08 +param set-default MC_ROLLRATE_I 0.02 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.13 +param set-default MC_PITCHRATE_I 0.02 +param set-default MC_PITCHRATE_D 0.005 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 - param set PWM_MAIN_MIN 1080 -fi +param set-default MPC_XY_VEL_MAX 2 +param set-default PWM_MAIN_MIN 1080 set MIXER quad_w set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/1002_standard_vtol.hil b/ROMFS/px4fmu_common/init.d/airframes/1002_standard_vtol.hil index 2c515ef6ff..3eef8aa909 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/1002_standard_vtol.hil +++ b/ROMFS/px4fmu_common/init.d/airframes/1002_standard_vtol.hil @@ -14,57 +14,56 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 3 - param set COM_RC_IN_MODE 1 +param set-default BAT_N_CELLS 3 - 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-default COM_RC_IN_MODE 1 - param set FW_AIRSPD_MAX 25 - param set FW_AIRSPD_MIN 14 - param set FW_AIRSPD_TRIM 16 +param set-default EKF2_AID_MASK 1 +param set-default EKF2_ANGERR_INIT 0.01 +param set-default EKF2_GBIAS_INIT 0.01 +param set-default EKF2_HGT_MODE 0 +param set-default 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.3 - param set MIS_LTRMIN_ALT 10 - param set MIS_TAKEOFF_ALT 10 - param set MIS_YAW_TMT 10 +param set-default FW_AIRSPD_MAX 25 +param set-default FW_AIRSPD_MIN 14 +param set-default FW_AIRSPD_TRIM 16 - param set MPC_ACC_HOR_MAX 2 - param set MPC_ACC_HOR_MAX 2 - param set MPC_THR_MIN 0.1 - param set MPC_TKO_SPEED 1 - param set MPC_XY_P 0.8 - param set MPC_XY_VEL_D_ACC 0.1 - param set MPC_XY_VEL_I_ACC 4 - param set MPC_XY_VEL_P_ACC 3 - param set MPC_Z_VEL_P_ACC 12 - param set MPC_Z_VEL_I_ACC 3 - param set MPC_Z_VEL_MAX_DN 1.5 +param set-default MC_PITCH_P 6 +param set-default MC_PITCHRATE_P 0.2 +param set-default MC_ROLL_P 6 +param set-default MC_ROLLRATE_P 0.3 +param set-default MIS_LTRMIN_ALT 10 +param set-default MIS_TAKEOFF_ALT 10 +param set-default MIS_YAW_TMT 10 - param set NAV_ACC_RAD 5 - param set NAV_DLL_ACT 2 - param set NAV_LOITER_RAD 80 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_THR_MIN 0.1 +param set-default MPC_TKO_SPEED 1 +param set-default MPC_XY_P 0.8 +param set-default MPC_XY_VEL_D_ACC 0.1 +param set-default MPC_XY_VEL_I_ACC 4 +param set-default MPC_XY_VEL_P_ACC 3 +param set-default MPC_Z_VEL_P_ACC 12 +param set-default MPC_Z_VEL_I_ACC 3 +param set-default MPC_Z_VEL_MAX_DN 1.5 - param set RTL_DESCEND_ALT 10 - param set RTL_RETURN_ALT 30 +param set-default NAV_ACC_RAD 5 +param set-default NAV_DLL_ACT 2 +param set-default NAV_LOITER_RAD 80 - param set SDLOG_DIRS_MAX 7 - param set SYS_RESTART_TYPE 2 +param set-default RTL_DESCEND_ALT 10 +param set-default RTL_RETURN_ALT 30 + +param set-default SDLOG_DIRS_MAX 7 +param set-default SYS_RESTART_TYPE 2 + +param set-default VT_F_TRANS_THR 0.75 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_TYPE 2 - param set VT_F_TRANS_THR 0.75 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_TYPE 2 -fi param set SYS_HITL 1 diff --git a/ROMFS/px4fmu_common/init.d/airframes/12002_steadidrone_mavrik b/ROMFS/px4fmu_common/init.d/airframes/12002_steadidrone_mavrik index c9eeeb926c..1fc7adc9bd 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/12002_steadidrone_mavrik +++ b/ROMFS/px4fmu_common/init.d/airframes/12002_steadidrone_mavrik @@ -23,32 +23,29 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - param set MC_PITCH_P 4 - param set MC_PITCHRATE_P 0.24 - param set MC_PITCHRATE_I 0.09 - param set MC_PITCHRATE_D 0.013 - param set MC_PITCHRATE_MAX 180 - param set MC_ROLL_P 4 - param set MC_ROLLRATE_P 0.16 - param set MC_ROLLRATE_I 0.07 - param set MC_ROLLRATE_D 0.009 - param set MC_ROLLRATE_MAX 180 +param set-default MC_PITCH_P 4 +param set-default MC_PITCHRATE_P 0.24 +param set-default MC_PITCHRATE_I 0.09 +param set-default MC_PITCHRATE_D 0.013 +param set-default MC_PITCHRATE_MAX 180 - param set MC_YAW_P 3 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 +param set-default MC_ROLL_P 4 +param set-default MC_ROLLRATE_P 0.16 +param set-default MC_ROLLRATE_I 0.07 +param set-default MC_ROLLRATE_D 0.009 +param set-default MC_ROLLRATE_MAX 180 - param set MPC_HOLD_MAX_XY 0.25 - param set MPC_THR_MIN 0.15 - param set MPC_Z_VEL_MAX_DN 2 +param set-default MC_YAW_P 3 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 - param set BAT_N_CELLS 4 -fi +param set-default MPC_HOLD_MAX_XY 0.25 +param set-default MPC_THR_MIN 0.15 +param set-default MPC_Z_VEL_MAX_DN 2 +param set-default BAT_N_CELLS 4 set MIXER octo_cox_w set PWM_OUT 12345678 diff --git a/ROMFS/px4fmu_common/init.d/airframes/13000_generic_vtol_standard b/ROMFS/px4fmu_common/init.d/airframes/13000_generic_vtol_standard index 5ed66b32ad..f86e82d6d5 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13000_generic_vtol_standard +++ b/ROMFS/px4fmu_common/init.d/airframes/13000_generic_vtol_standard @@ -24,16 +24,13 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_AUX_DIS5 950 - param set PWM_MAIN_RATE 400 - param set VT_TYPE 2 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 -fi +param set-default PWM_AUX_DIS5 950 +param set-default PWM_MAIN_RATE 400 +param set-default VT_TYPE 2 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 set MAV_TYPE 22 set MIXER quad_x diff --git a/ROMFS/px4fmu_common/init.d/airframes/13001_caipirinha_vtol b/ROMFS/px4fmu_common/init.d/airframes/13001_caipirinha_vtol index 0350a7ce56..14c5371ec9 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13001_caipirinha_vtol +++ b/ROMFS/px4fmu_common/init.d/airframes/13001_caipirinha_vtol @@ -19,34 +19,31 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set MAV_TYPE 19 - param set MC_ROLL_P 6 - param set MC_ROLLRATE_P 0.12 - param set MC_ROLLRATE_I 0.002 - param set MC_ROLLRATE_D 0.003 - param set MC_ROLLRATE_FF 0 +param set-default MAV_TYPE 19 - param set MC_PITCH_P 4.5 - param set MC_PITCHRATE_P 0.3 - param set MC_PITCHRATE_I 0.002 - param set MC_PITCHRATE_D 0.003 - param set MC_PITCHRATE_FF 0 +param set-default MC_ROLL_P 6 +param set-default MC_ROLLRATE_P 0.12 +param set-default MC_ROLLRATE_I 0.002 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_ROLLRATE_FF 0 - param set MC_YAW_P 3.8 - param set MC_YAWRATE_P 0.22 - param set MC_YAWRATE_I 0.02 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 +param set-default MC_PITCH_P 4.5 +param set-default MC_PITCHRATE_P 0.3 +param set-default MC_PITCHRATE_I 0.002 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_PITCHRATE_FF 0 - param set VT_IDLE_PWM_MC 1080 - param set VT_ELEV_MC_LOCK 0 - param set VT_MOT_ID 12 - param set VT_TYPE 0 -fi +param set-default MC_YAW_P 3.8 +param set-default MC_YAWRATE_P 0.22 +param set-default MC_YAWRATE_I 0.02 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_ELEV_MC_LOCK 0 +param set-default VT_MOT_ID 12 +param set-default VT_TYPE 0 set MAV_TYPE 19 set MIXER vtol_tailsitter_duo diff --git a/ROMFS/px4fmu_common/init.d/airframes/13002_firefly6 b/ROMFS/px4fmu_common/init.d/airframes/13002_firefly6 index ef17798b67..d382ee5f03 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13002_firefly6 +++ b/ROMFS/px4fmu_common/init.d/airframes/13002_firefly6 @@ -24,37 +24,34 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.19 - param set MC_ROLLRATE_I 0.002 - param set MC_ROLLRATE_D 0.005 - param set MC_ROLLRATE_FF 0 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.14 - param set MC_PITCHRATE_I 0.002 - param set MC_PITCHRATE_D 0.004 - param set MC_PITCHRATE_FF 0 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.22 - param set MC_YAWRATE_I 0.02 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set PWM_MAIN_RATE 400 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.19 +param set-default MC_ROLLRATE_I 0.002 +param set-default MC_ROLLRATE_D 0.005 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.14 +param set-default MC_PITCHRATE_I 0.002 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.22 +param set-default MC_YAWRATE_I 0.02 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 - param set VT_FW_MOT_OFFID 34 - param set VT_IDLE_PWM_MC 1080 - param set VT_MOT_ID 123456 - param set VT_FW_MOT_OFFID 56 - param set VT_TILT_MC 0.08 - param set VT_TILT_TRANS 0.5 - param set VT_TILT_FW 0.9 - param set VT_ELEV_MC_LOCK 0 - param set VT_TYPE 1 -fi +param set-default PWM_MAIN_RATE 400 +param set-default VT_FW_MOT_OFFID 34 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_MOT_ID 123456 +param set-default VT_FW_MOT_OFFID 56 +param set-default VT_TILT_MC 0.08 +param set-default VT_TILT_TRANS 0.5 +param set-default VT_TILT_FW 0.9 +param set-default VT_ELEV_MC_LOCK 0 +param set-default VT_TYPE 1 set MAV_TYPE 21 set MIXER firefly6 diff --git a/ROMFS/px4fmu_common/init.d/airframes/13003_quad_tailsitter b/ROMFS/px4fmu_common/init.d/airframes/13003_quad_tailsitter index 4c92111fc9..0b8630b70e 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13003_quad_tailsitter +++ b/ROMFS/px4fmu_common/init.d/airframes/13003_quad_tailsitter @@ -14,17 +14,14 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_MAIN_MAX 2000 - param set PWM_MAIN_RATE 400 - param set VT_MOT_ID 1234 - param set VT_IDLE_PWM_MC 1080 - param set VT_TYPE 0 - param set VT_ELEV_MC_LOCK 1 -fi +param set-default PWM_MAIN_MAX 2000 +param set-default PWM_MAIN_RATE 400 +param set-default VT_MOT_ID 1234 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_TYPE 0 +param set-default VT_ELEV_MC_LOCK 1 set MAV_TYPE 20 set MIXER quad_x_vtol diff --git a/ROMFS/px4fmu_common/init.d/airframes/13004_quad+_tailsitter b/ROMFS/px4fmu_common/init.d/airframes/13004_quad+_tailsitter index 8a77cf0d17..7b2adfc439 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13004_quad+_tailsitter +++ b/ROMFS/px4fmu_common/init.d/airframes/13004_quad+_tailsitter @@ -23,16 +23,13 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_MAIN_MAX 2000 - param set PWM_MAIN_RATE 400 - param set VT_IDLE_PWM_MC 1080 - param set VT_TYPE 0 - param set VT_ELEV_MC_LOCK 1 -fi +param set-default PWM_MAIN_MAX 2000 +param set-default PWM_MAIN_RATE 400 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_TYPE 0 +param set-default VT_ELEV_MC_LOCK 1 set MAV_TYPE 20 set MIXER quad_+_vtol diff --git a/ROMFS/px4fmu_common/init.d/airframes/13005_vtol_AAERT_quad b/ROMFS/px4fmu_common/init.d/airframes/13005_vtol_AAERT_quad index 112b539f9e..99c3cfcf09 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13005_vtol_AAERT_quad +++ b/ROMFS/px4fmu_common/init.d/airframes/13005_vtol_AAERT_quad @@ -24,50 +24,47 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_AUX_DIS5 950 - param set PWM_MAIN_RATE 400 +param set-default PWM_AUX_DIS5 950 - param set MC_ROLL_P 6 - param set MC_ROLLRATE_P 0.17 - param set MC_ROLLRATE_I 0.002 - param set MC_ROLLRATE_D 0.004 - param set MC_ROLLRATE_FF 0 - param set MC_PITCH_P 6 - param set MC_PITCHRATE_P 0.19 - param set MC_PITCHRATE_I 0.002 - param set MC_PITCHRATE_D 0.004 - param set MC_PITCHRATE_FF 0 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.22 - param set MC_YAWRATE_I 0.02 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set MC_YAWRATE_MAX 40 +param set-default PWM_MAIN_RATE 400 - param set MPC_YAWRAUTO_MAX 40 +param set-default MC_ROLL_P 6 +param set-default MC_ROLLRATE_P 0.17 +param set-default MC_ROLLRATE_I 0.002 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_PITCH_P 6 +param set-default MC_PITCHRATE_P 0.19 +param set-default MC_PITCHRATE_I 0.002 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.22 +param set-default MC_YAWRATE_I 0.02 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 +param set-default MC_YAWRATE_MAX 40 - param set FW_PR_FF 0.5 - param set FW_PR_I 0.02 - param set FW_PR_IMAX 0.4 - param set FW_PR_P 0.08 - param set FW_RR_FF 0.6 - param set FW_RR_I 0.01 - param set FW_RR_IMAX 0.2 - param set FW_RR_P 0.05 - param set FW_THR_CRUISE 0.75 +param set-default MPC_YAWRAUTO_MAX 40 - param set VT_ARSP_BLEND 6 - param set VT_ARSP_TRANS 12 - param set VT_F_TRANS_THR 0.75 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_IDLE_PWM_MC 1080 - param set VT_TYPE 2 -fi +param set-default FW_PR_FF 0.5 +param set-default FW_PR_I 0.02 +param set-default FW_PR_IMAX 0.4 +param set-default FW_PR_P 0.08 +param set-default FW_RR_FF 0.6 +param set-default FW_RR_I 0.01 +param set-default FW_RR_IMAX 0.2 +param set-default FW_RR_P 0.05 +param set-default FW_THR_CRUISE 0.75 +param set-default VT_ARSP_BLEND 6 +param set-default VT_ARSP_TRANS 12 +param set-default VT_F_TRANS_THR 0.75 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_TYPE 2 set MAV_TYPE 22 set MIXER quad_x diff --git a/ROMFS/px4fmu_common/init.d/airframes/13006_vtol_standard_delta b/ROMFS/px4fmu_common/init.d/airframes/13006_vtol_standard_delta index 30933013fa..26989b44db 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13006_vtol_standard_delta +++ b/ROMFS/px4fmu_common/init.d/airframes/13006_vtol_standard_delta @@ -22,40 +22,37 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.01 - param set MC_ROLLRATE_D 0.003 - param set MC_ROLLRATE_FF 0 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.01 - param set MC_PITCHRATE_D 0.003 - param set MC_PITCHRATE_FF 0 - param set MC_YAW_P 3.5 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set MC_YAWRATE_MAX 50 - param set MPC_XY_P 0.8 - param set MPC_XY_VEL_P_ACC 2 - param set MPC_ACC_HOR_MAX 2 - param set MPC_YAWRAUTO_MAX 20 +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.01 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.01 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_YAW_P 3.5 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 +param set-default MC_YAWRATE_MAX 50 - param set PWM_AUX_DIS3 950 - param set PWM_MAIN_RATE 400 +param set-default MPC_XY_P 0.8 +param set-default MPC_XY_VEL_P_ACC 2 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_YAWRAUTO_MAX 20 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_F_TRANS_THR 0.75 - param set VT_IDLE_PWM_MC 1080 - param set VT_TYPE 2 -fi +param set-default PWM_AUX_DIS3 950 +param set-default PWM_MAIN_RATE 400 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_F_TRANS_THR 0.75 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_TYPE 2 set MAV_TYPE 22 set MIXER quad_x diff --git a/ROMFS/px4fmu_common/init.d/airframes/13007_vtol_AAVVT_quad b/ROMFS/px4fmu_common/init.d/airframes/13007_vtol_AAVVT_quad index 778bd798c6..98e0f6e7a9 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13007_vtol_AAVVT_quad +++ b/ROMFS/px4fmu_common/init.d/airframes/13007_vtol_AAVVT_quad @@ -14,37 +14,34 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.002 - param set MC_ROLLRATE_D 0.003 - param set MC_ROLLRATE_FF 0 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.12 - param set MC_PITCHRATE_I 0.002 - param set MC_PITCHRATE_D 0.003 - param set MC_PITCHRATE_FF 0 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.22 - param set MC_YAWRATE_I 0.02 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set MC_YAWRATE_MAX 40 - param set MPC_YAWRAUTO_MAX 40 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.002 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.12 +param set-default MC_PITCHRATE_I 0.002 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.22 +param set-default MC_YAWRATE_I 0.02 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 +param set-default MC_YAWRATE_MAX 40 - param set PWM_AUX_DIS5 950 - param set PWM_MAIN_RATE 400 +param set-default MPC_YAWRAUTO_MAX 40 - param set VT_F_TRANS_THR 0.75 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_IDLE_PWM_MC 1080 - param set VT_TYPE 2 -fi +param set-default PWM_AUX_DIS5 950 +param set-default PWM_MAIN_RATE 400 +param set-default VT_F_TRANS_THR 0.75 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_TYPE 2 set MAV_TYPE 22 set MIXER quad_x diff --git a/ROMFS/px4fmu_common/init.d/airframes/13008_QuadRanger b/ROMFS/px4fmu_common/init.d/airframes/13008_QuadRanger index ed33d7cc7d..560fca0126 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13008_QuadRanger +++ b/ROMFS/px4fmu_common/init.d/airframes/13008_QuadRanger @@ -14,54 +14,51 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set FW_THR_CRUISE 65 - param set FW_PR_P 0.08 - param set FW_PR_FF 0.5 - param set FW_RR_P 0.05 - param set FW_RR_FF 0.6 - param set MIS_YAW_TMT 10 +param set-default FW_THR_CRUISE 65 +param set-default FW_PR_P 0.08 +param set-default FW_PR_FF 0.5 +param set-default FW_RR_P 0.05 +param set-default FW_RR_FF 0.6 - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.1 - param set MC_ROLLRATE_D 0.004 - param set MC_ROLLRATE_FF 0 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.1 - param set MC_PITCHRATE_D 0.004 - param set MC_PITCHRATE_FF 0 - param set MC_YAW_P 3.5 - param set MC_YAWRATE_P 0.6 - param set MC_YAWRATE_I 0.04 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set MC_YAWRATE_MAX 40 +param set-default MIS_YAW_TMT 10 - param set MPC_ACC_HOR_MAX 2 - param set MPC_Z_VEL_MAX_DN 1.5 - param set MPC_TKO_SPEED 1.5 - param set MPC_LAND_SPEED 0.8 - param set MPC_YAWRAUTO_MAX 40 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.1 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.1 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_YAW_P 3.5 +param set-default MC_YAWRATE_P 0.6 +param set-default MC_YAWRATE_I 0.04 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 +param set-default MC_YAWRATE_MAX 40 - param set PWM_AUX_DIS5 950 - param set PWM_AUX_REV1 1 - param set PWM_AUX_REV2 1 - param set PWM_MAIN_RATE 400 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_Z_VEL_MAX_DN 1.5 +param set-default MPC_TKO_SPEED 1.5 +param set-default MPC_LAND_SPEED 0.8 +param set-default MPC_YAWRAUTO_MAX 40 - param set VT_ARSP_TRANS 15 - param set VT_ARSP_BLEND 8 - param set VT_B_TRANS_DUR 4 - param set VT_F_TRANS_THR 0.75 - param set VT_IDLE_PWM_MC 1080 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_TYPE 2 -fi +param set-default PWM_AUX_DIS5 950 +param set-default PWM_AUX_REV1 1 +param set-default PWM_AUX_REV2 1 +param set-default PWM_MAIN_RATE 400 +param set-default VT_ARSP_TRANS 15 +param set-default VT_ARSP_BLEND 8 +param set-default VT_B_TRANS_DUR 4 +param set-default VT_F_TRANS_THR 0.75 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_TYPE 2 set MAV_TYPE 22 set MIXER quad_x diff --git a/ROMFS/px4fmu_common/init.d/airframes/13009_vtol_spt_ranger b/ROMFS/px4fmu_common/init.d/airframes/13009_vtol_spt_ranger index 4892c292f9..e90c3d5af0 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13009_vtol_spt_ranger +++ b/ROMFS/px4fmu_common/init.d/airframes/13009_vtol_spt_ranger @@ -14,75 +14,72 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MAX 22 - param set FW_AIRSPD_MIN 14 - param set FW_AIRSPD_TRIM 16 - param set FW_L1_PERIOD 25 - param set FW_PR_P 0.060 - param set FW_P_RMAX_NEG 40 - param set FW_P_RMAX_POS 40 - param set FW_RR_FF 0.4 - param set FW_RR_P 0.04 - param set FW_R_RMAX 40 - param set MC_PITCHRATE_D 0.004 - param set MC_PITCHRATE_I 0 - param set MC_PITCHRATE_MAX 60 - param set MC_PITCHRATE_P 0.21 - param set MC_PITCH_P 4 - param set MC_ROLLRATE_D 0.004 - param set MC_ROLLRATE_I 0.002 - param set MC_ROLLRATE_MAX 60 - param set MC_ROLLRATE_P 0.24 - param set MC_ROLL_P 4 - param set MC_YAWRATE_I 0.02 - param set MC_YAWRATE_MAX 40 - param set MC_YAWRATE_P 0.18 +param set-default FW_AIRSPD_MAX 22 +param set-default FW_AIRSPD_MIN 14 +param set-default FW_AIRSPD_TRIM 16 +param set-default FW_L1_PERIOD 25 +param set-default FW_PR_P 0.060 +param set-default FW_P_RMAX_NEG 40 +param set-default FW_P_RMAX_POS 40 +param set-default FW_RR_FF 0.4 +param set-default FW_RR_P 0.04 +param set-default FW_R_RMAX 40 - param set MIS_TAKEOFF_ALT 2.5 - param set MIS_YAW_TMT 20 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_PITCHRATE_I 0 +param set-default MC_PITCHRATE_MAX 60 +param set-default MC_PITCHRATE_P 0.21 +param set-default MC_PITCH_P 4 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_ROLLRATE_I 0.002 +param set-default MC_ROLLRATE_MAX 60 +param set-default MC_ROLLRATE_P 0.24 +param set-default MC_ROLL_P 4 +param set-default MC_YAWRATE_I 0.02 +param set-default MC_YAWRATE_MAX 40 +param set-default MC_YAWRATE_P 0.18 - param set MPC_ACC_HOR_MAX 1 - param set MPC_HOLD_MAX_XY 0.5 - param set MPC_HOLD_MAX_Z 0.5 - param set MPC_LAND_SPEED 1 - param set MPC_MANTHR_MIN 0.05 - param set MPC_MAN_Y_MAX 120 - param set MPC_THR_MIN 0.07 - param set MPC_TILTMAX_AIR 35 - param set MPC_TILTMAX_LND 20 - param set MPC_TKO_SPEED 1 - param set MPC_XY_P 0.3 - param set MPC_XY_VEL_MAX 3 - param set MPC_XY_VEL_P_ACC 1 - param set MPC_Z_P 0.5 - param set MPC_Z_VEL_P_ACC 2 - param set MPC_YAWRAUTO_MAX 40 +param set-default MIS_TAKEOFF_ALT 2.5 +param set-default MIS_YAW_TMT 20 - param set NAV_ACC_RAD 3 +param set-default MPC_ACC_HOR_MAX 1 +param set-default MPC_HOLD_MAX_XY 0.5 +param set-default MPC_HOLD_MAX_Z 0.5 +param set-default MPC_LAND_SPEED 1 +param set-default MPC_MANTHR_MIN 0.05 +param set-default MPC_MAN_Y_MAX 120 +param set-default MPC_THR_MIN 0.07 +param set-default MPC_TILTMAX_AIR 35 +param set-default MPC_TILTMAX_LND 20 +param set-default MPC_TKO_SPEED 1 +param set-default MPC_XY_P 0.3 +param set-default MPC_XY_VEL_MAX 3 +param set-default MPC_XY_VEL_P_ACC 1 +param set-default MPC_Z_P 0.5 +param set-default MPC_Z_VEL_P_ACC 2 +param set-default MPC_YAWRAUTO_MAX 40 - param set PWM_AUX_REV1 1 - param set PWM_AUX_REV2 1 - param set PWM_AUX_REV3 1 - param set PWM_AUX_REV4 1 +param set-default NAV_ACC_RAD 3 - param set PWM_AUX_DIS5 950 +param set-default PWM_AUX_REV1 1 +param set-default PWM_AUX_REV2 1 +param set-default PWM_AUX_REV3 1 +param set-default PWM_AUX_REV4 1 - param set PWM_MAIN_RATE 400 +param set-default PWM_AUX_DIS5 950 - param set VT_ARSP_TRANS 15 - param set VT_B_TRANS_DUR 4 - param set VT_F_TRANS_THR 0.6 - param set VT_IDLE_PWM_MC 1180 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_TRANS_MIN_TM 5 - param set VT_TRANS_TIMEOUT 30 - param set VT_TYPE 2 +param set-default PWM_MAIN_RATE 400 -fi +param set-default VT_ARSP_TRANS 15 +param set-default VT_B_TRANS_DUR 4 +param set-default VT_F_TRANS_THR 0.6 +param set-default VT_IDLE_PWM_MC 1180 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_TRANS_MIN_TM 5 +param set-default VT_TRANS_TIMEOUT 30 +param set-default VT_TYPE 2 set MAV_TYPE 22 diff --git a/ROMFS/px4fmu_common/init.d/airframes/13010_claire b/ROMFS/px4fmu_common/init.d/airframes/13010_claire index 0b8eaf0245..0af795d0a1 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13010_claire +++ b/ROMFS/px4fmu_common/init.d/airframes/13010_claire @@ -14,26 +14,23 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_AUX_DISARMED 1000 - param set PWM_AUX_MAX 2000 - param set PWM_AUX_MIN 1000 - param set PWM_AUX_RATE 50 - param set PWM_MAIN_MAX 2000 - param set PWM_MAIN_RATE 400 +param set-default PWM_AUX_DISARMED 1000 +param set-default PWM_AUX_MAX 2000 +param set-default PWM_AUX_MIN 1000 +param set-default PWM_AUX_RATE 50 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 13 - param set VT_IDLE_PWM_MC 1080 - param set VT_TILT_FW 0.9 - param set VT_TILT_MC 0.08 - param set VT_TILT_TRANS 0.5 - param set VT_ELEV_MC_LOCK 0 - param set VT_TYPE 1 -fi +param set-default PWM_MAIN_MAX 2000 +param set-default PWM_MAIN_RATE 400 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 13 +param set-default VT_IDLE_PWM_MC 1080 +param set-default VT_TILT_FW 0.9 +param set-default VT_TILT_MC 0.08 +param set-default VT_TILT_TRANS 0.5 +param set-default VT_ELEV_MC_LOCK 0 +param set-default VT_TYPE 1 set MAV_TYPE 21 set MIXER claire diff --git a/ROMFS/px4fmu_common/init.d/airframes/13012_convergence b/ROMFS/px4fmu_common/init.d/airframes/13012_convergence index b3a26c1b56..f05c37c9ac 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13012_convergence +++ b/ROMFS/px4fmu_common/init.d/airframes/13012_convergence @@ -23,66 +23,63 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set CBRK_AIRSPD_CHK 162128 - param set FW_ARSP_MODE 1 +param set-default CBRK_AIRSPD_CHK 162128 - param set FW_L1_PERIOD 17 - param set FW_MAN_R_MAX 50 - param set FW_ACRO_X_MAX 270 - param set FW_ACRO_Y_MAX 270 - param set FW_ACRO_Z_MAX 180 - param set FW_PR_FF 0.5 - param set FW_PR_P 0.08 - param set FW_PSP_OFF 5 - param set FW_P_LIM_MAX 30 - param set FW_P_LIM_MIN -30 - param set FW_P_RMAX_NEG 60 - param set FW_P_RMAX_POS 60 - param set FW_RR_FF 0.33 - param set FW_RR_P 0.11 - param set FW_YR_FF 0.3 - param set FW_YR_P 0.05 +param set-default FW_ARSP_MODE 1 - param set MC_PITCHRATE_D 0.003 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCH_P 6 - param set MC_ROLLRATE_D 0.003 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLL_P 6 - param set MC_YAWRATE_MAX 120 - param set MC_YAWRATE_P 0.27 - param set MC_YAW_P 2.5 +param set-default FW_L1_PERIOD 17 +param set-default FW_MAN_R_MAX 50 +param set-default FW_ACRO_X_MAX 270 +param set-default FW_ACRO_Y_MAX 270 +param set-default FW_ACRO_Z_MAX 180 +param set-default FW_PR_FF 0.5 +param set-default FW_PR_P 0.08 +param set-default FW_PSP_OFF 5 +param set-default FW_P_LIM_MAX 30 +param set-default FW_P_LIM_MIN -30 +param set-default FW_P_RMAX_NEG 60 +param set-default FW_P_RMAX_POS 60 +param set-default FW_RR_FF 0.33 +param set-default FW_RR_P 0.11 +param set-default FW_YR_FF 0.3 +param set-default FW_YR_P 0.05 - param set MC_YAWRATE_P 0.3 - param set MPC_LAND_SPEED 1.2 - param set MPC_TKO_SPEED 2.5 - param set MPC_Z_VEL_MAX_UP 3 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCH_P 6 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLL_P 6 +param set-default MC_YAWRATE_MAX 120 +param set-default MC_YAWRATE_P 0.27 +param set-default MC_YAW_P 2.5 - param set PWM_MAIN_RATE 400 +param set-default MC_YAWRATE_P 0.3 +param set-default MPC_LAND_SPEED 1.2 +param set-default MPC_TKO_SPEED 2.5 +param set-default MPC_Z_VEL_MAX_UP 3 - param set SENS_BOARD_ROT 8 +param set-default PWM_MAIN_RATE 400 - param set VT_B_TRANS_DUR 1 - param set VT_F_TRANS_DUR 1.2 - param set VT_F_TR_OL_TM 4 - param set VT_FW_DIFTHR_EN 1 - param set VT_FW_DIFTHR_SC 0.17 - param set VT_FW_MOT_OFFID 3 - param set VT_FW_PERM_STAB 0 - param set VT_IDLE_PWM_MC 1200 - param set VT_MOT_ID 123 - param set VT_TILT_FW 1 - param set VT_TILT_MC 0 - param set VT_TILT_TRANS 0.45 - param set VT_TRANS_MIN_TM 1.2 - param set VT_TRANS_P2_DUR 1.3 - param set VT_ELEV_MC_LOCK 0 - param set VT_TYPE 1 -fi +param set-default SENS_BOARD_ROT 8 +param set-default VT_B_TRANS_DUR 1 +param set-default VT_F_TRANS_DUR 1.2 +param set-default VT_F_TR_OL_TM 4 +param set-default VT_FW_DIFTHR_EN 1 +param set-default VT_FW_DIFTHR_SC 0.17 +param set-default VT_FW_MOT_OFFID 3 +param set-default VT_FW_PERM_STAB 0 +param set-default VT_IDLE_PWM_MC 1200 +param set-default VT_MOT_ID 123 +param set-default VT_TILT_FW 1 +param set-default VT_TILT_MC 0 +param set-default VT_TILT_TRANS 0.45 +param set-default VT_TRANS_MIN_TM 1.2 +param set-default VT_TRANS_P2_DUR 1.3 +param set-default VT_ELEV_MC_LOCK 0 +param set-default VT_TYPE 1 set MAV_TYPE 21 set MIXER vtol_convergence diff --git a/ROMFS/px4fmu_common/init.d/airframes/13013_deltaquad b/ROMFS/px4fmu_common/init.d/airframes/13013_deltaquad index 5e8306a4cd..6128f71c38 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13013_deltaquad +++ b/ROMFS/px4fmu_common/init.d/airframes/13013_deltaquad @@ -23,137 +23,134 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_CAPACITY 23000 - param set BAT_N_CELLS 4 - param set BAT_R_INTERNAL 0.0025 - param set CBRK_AIRSPD_CHK 162128 - param set CBRK_IO_SAFETY 22027 +param set-default BAT_CAPACITY 23000 +param set-default BAT_N_CELLS 4 +param set-default BAT_R_INTERNAL 0.0025 - param set EKF2_GPS_POS_X -0.12 - param set EKF2_IMU_POS_X -0.12 - param set EKF2_TAU_VEL 0.5 - param set EKF2_GPS_P_GATE 10 - param set EKF2_GPS_V_GATE 10 +param set-default CBRK_AIRSPD_CHK 162128 +param set-default CBRK_IO_SAFETY 22027 - param set FW_ARSP_MODE 1 - param set FW_L1_PERIOD 25 - param set FW_PR_FF 0.7 - param set FW_PR_I 0.18 - param set FW_PR_P 0.15 - param set FW_P_TC 0.5 - param set FW_PSP_OFF 5 - param set FW_R_LIM 35 - param set FW_RR_FF 0.9 - param set FW_RR_I 0.08 - param set FW_RR_P 0.18 - param set FW_T_HRATE_FF 0.5 - param set FW_T_CLMB_MAX 3 - param set FW_T_SINK_MAX 3 - param set FW_T_SINK_MIN 1 - param set FW_T_VERT_ACC 6 - param set FW_THR_CRUISE 0.70 - param set FW_THR_SLEW_MAX 1 - param set FW_MAN_P_MAX 30 - param set FW_P_LIM_MAX 15 - param set FW_P_LIM_MIN -25 - param set FW_P_RMAX_NEG 45 - param set FW_P_RMAX_POS 45 - param set FW_R_RMAX 50 - param set FW_THR_MIN 0.55 - param set FW_BAT_SCALE_EN 1 - param set FW_THR_ALT_SCL 2.7 - param set FW_T_RLL2THR 20 +param set-default EKF2_GPS_POS_X -0.12 +param set-default EKF2_IMU_POS_X -0.12 +param set-default EKF2_TAU_VEL 0.5 +param set-default EKF2_GPS_P_GATE 10 +param set-default EKF2_GPS_V_GATE 10 - param set LNDMC_ALT_MAX 9999 - param set LNDMC_XY_VEL_MAX 1 - param set LNDMC_Z_VEL_MAX 0.7 +param set-default FW_ARSP_MODE 1 +param set-default FW_L1_PERIOD 25 +param set-default FW_PR_FF 0.7 +param set-default FW_PR_I 0.18 +param set-default FW_PR_P 0.15 +param set-default FW_P_TC 0.5 +param set-default FW_PSP_OFF 5 +param set-default FW_R_LIM 35 +param set-default FW_RR_FF 0.9 +param set-default FW_RR_I 0.08 +param set-default FW_RR_P 0.18 +param set-default FW_T_HRATE_FF 0.5 +param set-default FW_T_CLMB_MAX 3 +param set-default FW_T_SINK_MAX 3 +param set-default FW_T_SINK_MIN 1 +param set-default FW_T_VERT_ACC 6 +param set-default FW_THR_CRUISE 0.70 +param set-default FW_THR_SLEW_MAX 1 +param set-default FW_MAN_P_MAX 30 +param set-default FW_P_LIM_MAX 15 +param set-default FW_P_LIM_MIN -25 +param set-default FW_P_RMAX_NEG 45 +param set-default FW_P_RMAX_POS 45 +param set-default FW_R_RMAX 50 +param set-default FW_THR_MIN 0.55 +param set-default FW_BAT_SCALE_EN 1 +param set-default FW_THR_ALT_SCL 2.7 +param set-default FW_T_RLL2THR 20 - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.16 - param set MC_ROLLRATE_I 0.01 - param set MC_ROLLRATE_D 0.003 - param set MC_ROLLRATE_FF 0 - param set MC_ROLLRATE_MAX 80 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.003 - param set MC_PITCHRATE_FF 0 - param set MC_PITCHRATE_MAX 80 - param set MC_YAW_P 3.5 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set MC_YAWRATE_MAX 20 - param set MC_AIRMODE 1 +param set-default LNDMC_ALT_MAX 9999 +param set-default LNDMC_XY_VEL_MAX 1 +param set-default LNDMC_Z_VEL_MAX 0.7 - param set MIS_DIST_1WP 100 - param set MIS_DIST_WPS 100000 - param set MIS_TAKEOFF_ALT 15 +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.16 +param set-default MC_ROLLRATE_I 0.01 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_ROLLRATE_MAX 80 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_PITCHRATE_MAX 80 +param set-default MC_YAW_P 3.5 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 +param set-default MC_YAWRATE_MAX 20 +param set-default MC_AIRMODE 1 - param set MPC_XY_P 0.8 - param set MPC_XY_VEL_P_ACC 2 - param set MPC_XY_VEL_MAX 5 - param set MPC_ACC_HOR_MAX 2 - param set MPC_LAND_SPEED 1.2 - param set MPC_TILTMAX_LND 35 - param set MPC_Z_VEL_MAX_UP 1.5 - param set MPC_Z_VEL_MAX_DN 1.5 - param set MPC_HOLD_MAX_XY 0.5 - param set MPC_HOLD_MAX_Z 0.5 - param set MPC_TKO_RAMP_T 0.8 - param set MPC_XY_CRUISE 5 - param set MPC_TILTMAX_AIR 25 - param set MPC_TILTMAX_LND 25 - param set MPC_YAWRAUTO_MAX 20 +param set-default MIS_DIST_1WP 100 +param set-default MIS_DIST_WPS 100000 +param set-default MIS_TAKEOFF_ALT 15 - param set NAV_DLL_ACT 0 - param set NAV_LOITER_RAD 100 +param set-default MPC_XY_P 0.8 +param set-default MPC_XY_VEL_P_ACC 2 +param set-default MPC_XY_VEL_MAX 5 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_LAND_SPEED 1.2 +param set-default MPC_TILTMAX_LND 35 +param set-default MPC_Z_VEL_MAX_UP 1.5 +param set-default MPC_Z_VEL_MAX_DN 1.5 +param set-default MPC_HOLD_MAX_XY 0.5 +param set-default MPC_HOLD_MAX_Z 0.5 +param set-default MPC_TKO_RAMP_T 0.8 +param set-default MPC_XY_CRUISE 5 +param set-default MPC_TILTMAX_AIR 25 +param set-default MPC_TILTMAX_LND 25 +param set-default MPC_YAWRAUTO_MAX 20 - param set PWM_AUX_DISARMED 950 +param set-default NAV_DLL_ACT 0 +param set-default NAV_LOITER_RAD 100 - param set PWM_MAIN_DIS5 1500 - param set PWM_MAIN_DIS6 1500 - param set PWM_MAIN_DIS7 900 - param set PWM_MAIN_DIS8 900 +param set-default PWM_AUX_DISARMED 950 - param set PWM_MAIN_RATE 400 +param set-default PWM_MAIN_DIS5 1500 +param set-default PWM_MAIN_DIS6 1500 +param set-default PWM_MAIN_DIS7 900 +param set-default PWM_MAIN_DIS8 900 - param set SENS_BOARD_ROT 18 +param set-default PWM_MAIN_RATE 400 - # TELEM2 config - param set MAV_1_CONFIG 102 - param set MAV_1_RATE 5000 - param set MAV_1_FORWARD 1 - param set SER_TEL2_BAUD 57600 +param set-default SENS_BOARD_ROT 18 - param set VT_TYPE 2 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 - param set VT_F_TRANS_THR 1 - param set VT_DWN_PITCH_MAX 8 - param set VT_FW_QC_P 55 - param set VT_FW_QC_R 55 - param set VT_TRANS_MIN_TM 15 - param set VT_B_TRANS_DUR 8 - param set VT_WV_LND_EN 1 - param set VT_WV_LTR_EN 1 - param set VT_FWD_THRUST_SC 4 - param set VT_F_TRANS_DUR 1 - param set VT_IDLE_PWM_MC 1025 - param set VT_B_REV_OUT 0.5 - param set VT_B_TRANS_THR 0.7 - param set VT_FW_PERM_STAB 1 - param set VT_TRANS_TIMEOUT 22 - param set VT_F_TRANS_RAMP 4 +# TELEM2 config +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_RATE 5000 +param set-default MAV_1_FORWARD 1 +param set-default SER_TEL2_BAUD 57600 - param set COM_RC_OVERRIDE 0 -fi +param set-default VT_TYPE 2 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 +param set-default VT_F_TRANS_THR 1 +param set-default VT_DWN_PITCH_MAX 8 +param set-default VT_FW_QC_P 55 +param set-default VT_FW_QC_R 55 +param set-default VT_TRANS_MIN_TM 15 +param set-default VT_B_TRANS_DUR 8 +param set-default VT_WV_LND_EN 1 +param set-default VT_WV_LTR_EN 1 +param set-default VT_FWD_THRUST_SC 4 +param set-default VT_F_TRANS_DUR 1 +param set-default VT_IDLE_PWM_MC 1025 +param set-default VT_B_REV_OUT 0.5 +param set-default VT_B_TRANS_THR 0.7 +param set-default VT_FW_PERM_STAB 1 +param set-default VT_TRANS_TIMEOUT 22 +param set-default VT_F_TRANS_RAMP 4 +param set-default COM_RC_OVERRIDE 0 set MAV_TYPE 22 set MIXER deltaquad diff --git a/ROMFS/px4fmu_common/init.d/airframes/13014_vtol_babyshark b/ROMFS/px4fmu_common/init.d/airframes/13014_vtol_babyshark index 224994c462..0ce948f52d 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13014_vtol_babyshark +++ b/ROMFS/px4fmu_common/init.d/airframes/13014_vtol_babyshark @@ -23,92 +23,89 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 6 - param set FW_AIRSPD_MAX 30 - param set FW_AIRSPD_MIN 19 - param set FW_AIRSPD_TRIM 23 - param set FW_L1_R_SLEW_MAX 40 - param set FW_LND_EARLYCFG 1 - param set FW_MAN_P_MAX 30 - param set FW_PR_I 0.1 - param set FW_PSP_OFF 3 - param set FW_P_LIM_MAX 18 - param set FW_P_LIM_MIN -25 - param set FW_RLL_TO_YAW_FF 0.1 - param set FW_RR_I 0.1 - param set FW_RR_P 0.08 - param set FW_R_LIM 45 - param set FW_R_RMAX 50 - param set FW_THR_CRUISE 0.65 - param set FW_THR_MIN 0.3 - param set FW_THR_SLEW_MAX 0.6 - param set FW_T_HRATE_FF 0 - param set FW_T_SINK_MAX 15 - param set FW_T_SINK_MIN 3 - param set FW_YR_I 0.1 - param set FW_YR_P 0.15 +param set-default BAT_N_CELLS 6 - param set IMU_GYRO_CUTOFF 40 +param set-default FW_AIRSPD_MAX 30 +param set-default FW_AIRSPD_MIN 19 +param set-default FW_AIRSPD_TRIM 23 +param set-default FW_L1_R_SLEW_MAX 40 +param set-default FW_LND_EARLYCFG 1 +param set-default FW_MAN_P_MAX 30 +param set-default FW_PR_I 0.1 +param set-default FW_PSP_OFF 3 +param set-default FW_P_LIM_MAX 18 +param set-default FW_P_LIM_MIN -25 +param set-default FW_RLL_TO_YAW_FF 0.1 +param set-default FW_RR_I 0.1 +param set-default FW_RR_P 0.08 +param set-default FW_R_LIM 45 +param set-default FW_R_RMAX 50 +param set-default FW_THR_CRUISE 0.65 +param set-default FW_THR_MIN 0.3 +param set-default FW_THR_SLEW_MAX 0.6 +param set-default FW_T_HRATE_FF 0 +param set-default FW_T_SINK_MAX 15 +param set-default FW_T_SINK_MIN 3 +param set-default FW_YR_I 0.1 +param set-default FW_YR_P 0.15 - param set IMU_DGYRO_CUTOFF 15 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_MAX 60 - param set MC_ROLLRATE_I 0.2 - param set MC_ROLLRATE_MAX 60 - param set MC_YAWRATE_I 0.15 - param set MC_YAWRATE_MAX 40 - param set MC_YAWRATE_P 0.3 +param set-default IMU_GYRO_CUTOFF 40 - param set MIS_TAKEOFF_ALT 30 +param set-default IMU_DGYRO_CUTOFF 15 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_MAX 60 +param set-default MC_ROLLRATE_I 0.2 +param set-default MC_ROLLRATE_MAX 60 +param set-default MC_YAWRATE_I 0.15 +param set-default MC_YAWRATE_MAX 40 +param set-default MC_YAWRATE_P 0.3 - param set MPC_ACC_DOWN_MAX 2 - param set MPC_ACC_HOR_MAX 2 - param set MPC_ACC_UP_MAX 3 - param set MC_AIRMODE 1 - param set MPC_JERK_AUTO 4 - param set MPC_LAND_SPEED 1 - param set MPC_MAN_TILT_MAX 25 - param set MPC_MAN_Y_MAX 40 - param set MPC_POS_MODE 3 - param set MPC_SPOOLUP_TIME 1.5 - param set MPC_THR_HOVER 0.45 - param set MPC_TILTMAX_AIR 25 - param set MPC_TKO_RAMP_T 1.8 - param set MPC_TKO_SPEED 1 - param set MPC_VEL_MANUAL 3 - param set MPC_XY_CRUISE 3 - param set MPC_XY_VEL_MAX 3.5 - param set MPC_YAWRAUTO_MAX 40 - param set MPC_Z_VEL_MAX_DN 1.5 - param set MPC_Z_VEL_MAX_UP 2 +param set-default MIS_TAKEOFF_ALT 30 - param set NAV_ACC_RAD 3 +param set-default MPC_ACC_DOWN_MAX 2 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_ACC_UP_MAX 3 +param set-default MC_AIRMODE 1 +param set-default MPC_JERK_AUTO 4 +param set-default MPC_LAND_SPEED 1 +param set-default MPC_MAN_TILT_MAX 25 +param set-default MPC_MAN_Y_MAX 40 +param set-default MPC_POS_MODE 3 +param set-default MPC_SPOOLUP_TIME 1.5 +param set-default MPC_THR_HOVER 0.45 +param set-default MPC_TILTMAX_AIR 25 +param set-default MPC_TKO_RAMP_T 1.8 +param set-default MPC_TKO_SPEED 1 +param set-default MPC_VEL_MANUAL 3 +param set-default MPC_XY_CRUISE 3 +param set-default MPC_XY_VEL_MAX 3.5 +param set-default MPC_YAWRAUTO_MAX 40 +param set-default MPC_Z_VEL_MAX_DN 1.5 +param set-default MPC_Z_VEL_MAX_UP 2 - param set PWM_MAIN_DIS3 1000 - param set PWM_MAIN_MIN3 1120 - param set PWM_MAIN_MIN 950 +param set-default NAV_ACC_RAD 3 - param set SENS_BOARD_ROT 4 +param set-default PWM_MAIN_DIS3 1000 +param set-default PWM_MAIN_MIN3 1120 +param set-default PWM_MAIN_MIN 950 - param set VT_ARSP_BLEND 10 - param set VT_ARSP_TRANS 21 - param set VT_B_DEC_MSS 1.5 - param set VT_B_TRANS_DUR 12 - param set VT_ELEV_MC_LOCK 0 - param set VT_FWD_THRUST_SC 1.2 - param set VT_FW_MOT_OFFID 5678 - param set VT_F_TR_OL_TM 8 - param set VT_IDLE_PWM_MC 1000 - param set VT_MOT_ID 5678 - param set VT_PSHER_RMP_DT 2 - param set VT_TRANS_MIN_TM 4 - param set VT_TYPE 2 +param set-default SENS_BOARD_ROT 4 -fi +param set-default VT_ARSP_BLEND 10 +param set-default VT_ARSP_TRANS 21 +param set-default VT_B_DEC_MSS 1.5 +param set-default VT_B_TRANS_DUR 12 +param set-default VT_ELEV_MC_LOCK 0 +param set-default VT_FWD_THRUST_SC 1.2 +param set-default VT_FW_MOT_OFFID 5678 +param set-default VT_F_TR_OL_TM 8 +param set-default VT_IDLE_PWM_MC 1000 +param set-default VT_MOT_ID 5678 +param set-default VT_PSHER_RMP_DT 2 +param set-default VT_TRANS_MIN_TM 4 +param set-default VT_TYPE 2 set MAV_TYPE 22 diff --git a/ROMFS/px4fmu_common/init.d/airframes/13015_generic_vtol_standard b/ROMFS/px4fmu_common/init.d/airframes/13015_generic_vtol_standard index a10a580bb6..63fe83aee6 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13015_generic_vtol_standard +++ b/ROMFS/px4fmu_common/init.d/airframes/13015_generic_vtol_standard @@ -24,35 +24,32 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_MAIN_RATE 400 - param set PWM_MAIN_MIN1 1100 - param set PWM_MAIN_MIN2 1100 - param set PWM_MAIN_MIN3 1100 - param set PWM_MAIN_MIN4 1100 +param set-default PWM_MAIN_RATE 400 - param set PWM_MAIN_MAX1 1900 - param set PWM_MAIN_MAX2 1900 - param set PWM_MAIN_MAX3 1900 - param set PWM_MAIN_MAX4 1900 +param set-default PWM_MAIN_MIN1 1100 +param set-default PWM_MAIN_MIN2 1100 +param set-default PWM_MAIN_MIN3 1100 +param set-default PWM_MAIN_MIN4 1100 - param set PWM_MAIN_DIS1 900 - param set PWM_MAIN_DIS2 900 - param set PWM_MAIN_DIS3 900 - param set PWM_MAIN_DIS4 900 - param set PWM_MAIN_DIS5 1500 - param set PWM_MAIN_DIS6 1500 - param set PWM_MAIN_DIS7 1500 - param set PWM_MAIN_DIS8 1500 - param set PWM_MAIN_DIS9 900 +param set-default PWM_MAIN_MAX1 1900 +param set-default PWM_MAIN_MAX2 1900 +param set-default PWM_MAIN_MAX3 1900 +param set-default PWM_MAIN_MAX4 1900 - param set VT_TYPE 2 - param set VT_MOT_ID 1234 - param set VT_FW_MOT_OFFID 1234 -fi +param set-default PWM_MAIN_DIS1 900 +param set-default PWM_MAIN_DIS2 900 +param set-default PWM_MAIN_DIS3 900 +param set-default PWM_MAIN_DIS4 900 +param set-default PWM_MAIN_DIS5 1500 +param set-default PWM_MAIN_DIS6 1500 +param set-default PWM_MAIN_DIS7 1500 +param set-default PWM_MAIN_DIS8 1500 +param set-default PWM_MAIN_DIS9 900 +param set-default VT_TYPE 2 +param set-default VT_MOT_ID 1234 +param set-default VT_FW_MOT_OFFID 1234 set MAV_TYPE 22 set MIXER quad_x_vtol_AAERT diff --git a/ROMFS/px4fmu_common/init.d/airframes/13050_generic_vtol_octo b/ROMFS/px4fmu_common/init.d/airframes/13050_generic_vtol_octo index 497936162c..ab2308d820 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13050_generic_vtol_octo +++ b/ROMFS/px4fmu_common/init.d/airframes/13050_generic_vtol_octo @@ -26,16 +26,13 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_AUX_DIS5 950 - param set PWM_MAIN_RATE 400 - param set VT_TYPE 2 - param set VT_MOT_ID 12345678 - param set VT_FW_MOT_OFFID 12345678 -fi +param set-default PWM_AUX_DIS5 950 +param set-default PWM_MAIN_RATE 400 +param set-default VT_TYPE 2 +param set-default VT_MOT_ID 12345678 +param set-default VT_FW_MOT_OFFID 12345678 set MAV_TYPE 22 set MIXER octo_cox diff --git a/ROMFS/px4fmu_common/init.d/airframes/13200_generic_vtol_tailsitter b/ROMFS/px4fmu_common/init.d/airframes/13200_generic_vtol_tailsitter index 80a679c5f3..aa9c0fec6b 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/13200_generic_vtol_tailsitter +++ b/ROMFS/px4fmu_common/init.d/airframes/13200_generic_vtol_tailsitter @@ -19,15 +19,12 @@ . ${R}etc/init.d/rc.vtol_defaults -if [ $AUTOCNF = yes ] -then - param set VT_ELEV_MC_LOCK 0 - param set VT_MOT_COUNT 2 - param set VT_TYPE 0 - param set MAV_TYPE 19 -fi +param set-default VT_ELEV_MC_LOCK 0 +param set-default VT_MOT_COUNT 2 +param set-default VT_TYPE 0 +param set-default MAV_TYPE 19 set MAV_TYPE 19 set MIXER vtol_tailsitter_duo diff --git a/ROMFS/px4fmu_common/init.d/airframes/15001_coax_heli b/ROMFS/px4fmu_common/init.d/airframes/15001_coax_heli index 7b05fbf986..a4e556c142 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/15001_coax_heli +++ b/ROMFS/px4fmu_common/init.d/airframes/15001_coax_heli @@ -20,36 +20,33 @@ . ${R}etc/init.d/rc.mc_defaults set MIXER coax -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.17 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.005 - param set MC_ROLLRATE_FF 0 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.17 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.005 - param set MC_PITCHRATE_FF 0 - param set MC_YAW_P 2 - param set MC_YAWRATE_P 0.1 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_FF 0 - param set NAV_ACC_RAD 2 +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.17 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.005 +param set-default MC_ROLLRATE_FF 0 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.17 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.005 +param set-default MC_PITCHRATE_FF 0 +param set-default MC_YAW_P 2 +param set-default MC_YAWRATE_P 0.1 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_FF 0 - param set PWM_AUX_RATE 50 - param set PWM_MAIN_DISARM 900 - param set PWM_MAIN_MIN 1075 - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_RATE 400 +param set-default NAV_ACC_RAD 2 - param set RTL_RETURN_ALT 30 - param set RTL_DESCEND_ALT 10 -fi +param set-default PWM_AUX_RATE 50 +param set-default PWM_MAIN_DISARM 900 +param set-default PWM_MAIN_MIN 1075 +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_RATE 400 +param set-default RTL_RETURN_ALT 30 +param set-default RTL_DESCEND_ALT 10 # This is the gimbal pass mixer set MIXER_AUX pass diff --git a/ROMFS/px4fmu_common/init.d/airframes/16001_helicopter b/ROMFS/px4fmu_common/init.d/airframes/16001_helicopter index d22d4d21bf..c1207b2435 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/16001_helicopter +++ b/ROMFS/px4fmu_common/init.d/airframes/16001_helicopter @@ -27,34 +27,32 @@ set MIXER blade130 #set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set ATT_BIAS_MAX 0 - param set CBRK_IO_SAFETY 22027 +param set-default ATT_BIAS_MAX 0 - param set MC_ROLL_P 5 - param set MC_ROLLRATE_P 0 - param set MC_ROLLRATE_I 0 - param set MC_ROLLRATE_D 0 - param set MC_ROLLRATE_FF 0.15 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0 - param set MC_PITCHRATE_I 0 - param set MC_PITCHRATE_D 0 - param set MC_PITCHRATE_FF 0.15 - param set MC_YAW_P 3 - param set MC_YAWRATE_P 0.1 - param set MC_YAWRATE_I 0 - param set MC_YAWRATE_D 0 - param set MC_ROLLRATE_MAX 720 - param set MC_PITCHRATE_MAX 720 - param set MC_YAWRATE_MAX 400 - param set MC_ACRO_R_MAX 360 - param set MC_ACRO_P_MAX 360 +param set-default CBRK_IO_SAFETY 22027 - param set MPC_THR_MIN 0.06 - param set MPC_MANTHR_MIN 0.06 +param set-default MC_ROLL_P 5 +param set-default MC_ROLLRATE_P 0 +param set-default MC_ROLLRATE_I 0 +param set-default MC_ROLLRATE_D 0 +param set-default MC_ROLLRATE_FF 0.15 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0 +param set-default MC_PITCHRATE_I 0 +param set-default MC_PITCHRATE_D 0 +param set-default MC_PITCHRATE_FF 0.15 +param set-default MC_YAW_P 3 +param set-default MC_YAWRATE_P 0.1 +param set-default MC_YAWRATE_I 0 +param set-default MC_YAWRATE_D 0 +param set-default MC_ROLLRATE_MAX 720 +param set-default MC_PITCHRATE_MAX 720 +param set-default MC_YAWRATE_MAX 400 +param set-default MC_ACRO_R_MAX 360 +param set-default MC_ACRO_P_MAX 360 - param set PWM_MAIN_MIN 1075 -fi +param set-default MPC_THR_MIN 0.06 +param set-default MPC_MANTHR_MIN 0.06 + +param set-default PWM_MAIN_MIN 1075 diff --git a/ROMFS/px4fmu_common/init.d/airframes/17002_TF-AutoG2 b/ROMFS/px4fmu_common/init.d/airframes/17002_TF-AutoG2 index 3887d288b2..d9549b664e 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/17002_TF-AutoG2 +++ b/ROMFS/px4fmu_common/init.d/airframes/17002_TF-AutoG2 @@ -26,29 +26,26 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_CAPACITY 2500 - param set BAT_N_CELLS 3 - param set PWM_AUX_RATE 50 - param set PWM_MAIN_RATE 50 +param set-default BAT_CAPACITY 2500 +param set-default BAT_N_CELLS 3 - param set SENS_BOARD_ROT 8 +param set-default PWM_AUX_RATE 50 +param set-default PWM_MAIN_RATE 50 - param set FW_AIRSPD_MAX 20 - param set FW_AIRSPD_MIN 7 - param set FW_AIRSPD_TRIM 13 - param set FW_THR_CRUISE 0.8 +param set-default SENS_BOARD_ROT 8 - param set FW_MAN_P_MAX 25 - param set FW_MAN_R_MAX 25 - param set FW_PR_I 0.02 - param set FW_R_LIM 40 - param set FW_P_LIM_MAX 25 - param set FW_P_LIM_MIN -5 - param set FW_P_RMAX_NEG 20 -fi +param set-default FW_AIRSPD_MAX 20 +param set-default FW_AIRSPD_MIN 7 +param set-default FW_AIRSPD_TRIM 13 +param set-default FW_THR_CRUISE 0.8 +param set-default FW_MAN_P_MAX 25 +param set-default FW_MAN_R_MAX 25 +param set-default FW_PR_I 0.02 +param set-default FW_R_LIM 40 +param set-default FW_P_LIM_MAX 25 +param set-default FW_P_LIM_MIN -5 +param set-default FW_P_RMAX_NEG 20 set MIXER TF-AutoG2 set MIXER_AUX pass diff --git a/ROMFS/px4fmu_common/init.d/airframes/17003_TF-G2 b/ROMFS/px4fmu_common/init.d/airframes/17003_TF-G2 index 0b9a95ab8f..2056f7b74a 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/17003_TF-G2 +++ b/ROMFS/px4fmu_common/init.d/airframes/17003_TF-G2 @@ -21,29 +21,26 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_CAPACITY 3300 - param set BAT_N_CELLS 3 - param set PWM_AUX_RATE 50 - param set PWM_MAIN_RATE 50 +param set-default BAT_CAPACITY 3300 +param set-default BAT_N_CELLS 3 - param set SENS_BOARD_ROT 4 +param set-default PWM_AUX_RATE 50 +param set-default PWM_MAIN_RATE 50 - param set FW_AIRSPD_MAX 20 - param set FW_AIRSPD_MIN 7 - param set FW_AIRSPD_TRIM 13 - param set FW_THR_CRUISE 0.8 +param set-default SENS_BOARD_ROT 4 - param set FW_MAN_P_MAX 25 - param set FW_MAN_R_MAX 25 - param set FW_PR_I 0.02 - param set FW_R_LIM 40 - param set FW_P_LIM_MAX 25 - param set FW_P_LIM_MIN -5 - param set FW_P_RMAX_NEG 20 -fi +param set-default FW_AIRSPD_MAX 20 +param set-default FW_AIRSPD_MIN 7 +param set-default FW_AIRSPD_TRIM 13 +param set-default FW_THR_CRUISE 0.8 +param set-default FW_MAN_P_MAX 25 +param set-default FW_MAN_R_MAX 25 +param set-default FW_PR_I 0.02 +param set-default FW_R_LIM 40 +param set-default FW_P_LIM_MAX 25 +param set-default FW_P_LIM_MIN -5 +param set-default FW_P_RMAX_NEG 20 set MIXER TF-G2 set MIXER_AUX pass diff --git a/ROMFS/px4fmu_common/init.d/airframes/18001_TF-B1 b/ROMFS/px4fmu_common/init.d/airframes/18001_TF-B1 index a800bc525a..de417958c7 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/18001_TF-B1 +++ b/ROMFS/px4fmu_common/init.d/airframes/18001_TF-B1 @@ -16,22 +16,19 @@ . ${R}etc/init.d/rc.balloon_defaults -if [ $AUTOCNF = yes ] -then - param set COM_PREARM_MODE 2 # always in prearm state - param set CBRK_IO_SAFETY 22027 - param set SDLOG_PROFILE 17 - param set SDLOG_MODE 2 - param set MAV_0_MODE 1 - param set MAV_0_CONFIG 102 - param set GPS_UBX_DYNMODEL 8 - param set SER_TEL2_BAUD 9600 - param set SENS_BOARD_ROT 0 +param set-default COM_PREARM_MODE 2 # always in prearm state +param set-default CBRK_IO_SAFETY 22027 +param set-default SDLOG_PROFILE 17 +param set-default SDLOG_MODE 2 +param set-default MAV_0_MODE 1 +param set-default MAV_0_CONFIG 102 +param set-default GPS_UBX_DYNMODEL 8 +param set-default SER_TEL2_BAUD 9600 + +param set-default SENS_BOARD_ROT 0 param set MAV_TYPE 8 # MAV_TYPE_FREE_BALLOON -fi - set MIXER IO_pass set MIXER_AUX pass diff --git a/ROMFS/px4fmu_common/init.d/airframes/2100_standard_plane b/ROMFS/px4fmu_common/init.d/airframes/2100_standard_plane index a30883c1e0..1a2ad26d52 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/2100_standard_plane +++ b/ROMFS/px4fmu_common/init.d/airframes/2100_standard_plane @@ -24,11 +24,8 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set PWM_AUX_RATE 50 - param set PWM_MAIN_RATE 50 -fi +param set-default PWM_AUX_RATE 50 +param set-default PWM_MAIN_RATE 50 set MIXER AETRFG diff --git a/ROMFS/px4fmu_common/init.d/airframes/2105_maja b/ROMFS/px4fmu_common/init.d/airframes/2105_maja index 24458feac8..43a666c5ff 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/2105_maja +++ b/ROMFS/px4fmu_common/init.d/airframes/2105_maja @@ -26,25 +26,23 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MIN 10 - param set FW_AIRSPD_TRIM 15 - param set FW_AIRSPD_MAX 20 +param set-default FW_AIRSPD_MIN 10 +param set-default FW_AIRSPD_TRIM 15 +param set-default FW_AIRSPD_MAX 20 - param set FW_MAN_P_MAX 55 - param set FW_MAN_R_MAX 55 - param set FW_R_LIM 55 +param set-default FW_MAN_P_MAX 55 +param set-default FW_MAN_R_MAX 55 +param set-default FW_R_LIM 55 - param set FW_WR_FF 0.2 - param set FW_WR_I 0.2 - param set FW_WR_IMAX 0.8 - param set FW_WR_P 1 - param set FW_W_RMAX 0 +param set-default FW_WR_FF 0.2 +param set-default FW_WR_I 0.2 +param set-default FW_WR_IMAX 0.8 +param set-default FW_WR_P 1 +param set-default FW_W_RMAX 0 + +# set disarmed value for the ESC +param set-default PWM_MAIN_DISARM 1000 - # set disarmed value for the ESC - param set PWM_MAIN_DISARM 1000 -fi set MIXER AAERTWF diff --git a/ROMFS/px4fmu_common/init.d/airframes/2106_albatross b/ROMFS/px4fmu_common/init.d/airframes/2106_albatross index 19c8bab4e2..cf25f2fe5d 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/2106_albatross +++ b/ROMFS/px4fmu_common/init.d/airframes/2106_albatross @@ -26,25 +26,23 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MIN 10 - param set FW_AIRSPD_TRIM 15 - param set FW_AIRSPD_MAX 20 +param set-default FW_AIRSPD_MIN 10 +param set-default FW_AIRSPD_TRIM 15 +param set-default FW_AIRSPD_MAX 20 - param set FW_MAN_P_MAX 55 - param set FW_MAN_R_MAX 55 - param set FW_R_LIM 55 +param set-default FW_MAN_P_MAX 55 +param set-default FW_MAN_R_MAX 55 +param set-default FW_R_LIM 55 - param set FW_WR_FF 0.2 - param set FW_WR_I 0.2 - param set FW_WR_IMAX 0.8 - param set FW_WR_P 1 - param set FW_W_RMAX 0 +param set-default FW_WR_FF 0.2 +param set-default FW_WR_I 0.2 +param set-default FW_WR_IMAX 0.8 +param set-default FW_WR_P 1 +param set-default FW_W_RMAX 0 + +# set disarmed value for the ESC +param set-default PWM_MAIN_DISARM 1000 - # set disarmed value for the ESC - param set PWM_MAIN_DISARM 1000 -fi set MIXER AAVVTWFF diff --git a/ROMFS/px4fmu_common/init.d/airframes/2200_mini_talon b/ROMFS/px4fmu_common/init.d/airframes/2200_mini_talon index b02c794583..6bdf132ccb 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/2200_mini_talon +++ b/ROMFS/px4fmu_common/init.d/airframes/2200_mini_talon @@ -27,25 +27,22 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MIN 10 - param set FW_AIRSPD_TRIM 15 - param set FW_AIRSPD_MAX 20 +param set-default FW_AIRSPD_MIN 10 +param set-default FW_AIRSPD_TRIM 15 +param set-default FW_AIRSPD_MAX 20 - param set FW_MAN_P_MAX 55 - param set FW_MAN_R_MAX 55 - param set FW_R_LIM 55 +param set-default FW_MAN_P_MAX 55 +param set-default FW_MAN_R_MAX 55 +param set-default FW_R_LIM 55 - param set FW_WR_FF 0.2 - param set FW_WR_I 0.2 - param set FW_WR_IMAX 0.8 - param set FW_WR_P 1 - param set FW_W_RMAX 0 +param set-default FW_WR_FF 0.2 +param set-default FW_WR_I 0.2 +param set-default FW_WR_IMAX 0.8 +param set-default FW_WR_P 1 +param set-default FW_W_RMAX 0 - # set disarmed value for the ESC - param set PWM_MAIN_DISARM 1000 -fi +# set disarmed value for the ESC +param set-default PWM_MAIN_DISARM 1000 # The Mini Talon does not have a wheel and # no flaps. I leave them here because the mixer diff --git a/ROMFS/px4fmu_common/init.d/airframes/24001_dodeca_cox b/ROMFS/px4fmu_common/init.d/airframes/24001_dodeca_cox index c7e71a7ce4..f4a5b53d36 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/24001_dodeca_cox +++ b/ROMFS/px4fmu_common/init.d/airframes/24001_dodeca_cox @@ -28,23 +28,20 @@ set VEHICLE_TYPE mc -if [ $AUTOCNF = yes ] -then - param set NAV_ACC_RAD 2 - param set PWM_AUX_RATE 400 - param set PWM_AUX_DISARMED 900 - param set PWM_AUX_MIN 1075 - param set PWM_AUX_MAX 1950 +param set-default NAV_ACC_RAD 2 - param set PWM_MAIN_MIN 1075 - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_RATE 400 +param set-default PWM_AUX_RATE 400 +param set-default PWM_AUX_DISARMED 900 +param set-default PWM_AUX_MIN 1075 +param set-default PWM_AUX_MAX 1950 - param set RTL_DESCEND_ALT 10 - param set RTL_RETURN_ALT 30 -fi +param set-default PWM_MAIN_MIN 1075 +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_RATE 400 +param set-default RTL_DESCEND_ALT 10 +param set-default RTL_RETURN_ALT 30 set MIXER dodeca_top_cox set MIXER_AUX dodeca_bottom_cox diff --git a/ROMFS/px4fmu_common/init.d/airframes/2507_cloudship b/ROMFS/px4fmu_common/init.d/airframes/2507_cloudship index 4c294319d9..9326c9c0db 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/2507_cloudship +++ b/ROMFS/px4fmu_common/init.d/airframes/2507_cloudship @@ -16,11 +16,9 @@ . ${R}etc/init.d/rc.airship_defaults -if [ $AUTOCNF = yes ] -then - param set COM_PREARM_MODE 2 - param set CBRK_IO_SAFETY 22027 -fi +param set-default COM_PREARM_MODE 2 +param set-default CBRK_IO_SAFETY 22027 + set MIXER cloudship set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/3030_io_camflyer b/ROMFS/px4fmu_common/init.d/airframes/3030_io_camflyer index bc38a74319..571783c9b6 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3030_io_camflyer +++ b/ROMFS/px4fmu_common/init.d/airframes/3030_io_camflyer @@ -22,30 +22,28 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MAX 15 - param set FW_AIRSPD_MIN 10 - param set FW_AIRSPD_TRIM 13 - param set FW_R_TC 0.3 - param set FW_P_TC 0.3 - param set FW_L1_DAMPING 0.74 - param set FW_L1_PERIOD 16 - param set FW_LND_ANG 15 - param set FW_LND_FLALT 5 - param set FW_LND_HHDIST 15 - param set FW_LND_HVIRT 13 - param set FW_LND_TLALT 5 - param set FW_THR_LND_MAX 0 - param set FW_PR_FF 0.35 - param set FW_PR_IMAX 0.4 - param set FW_PR_P 0.08 - param set FW_RR_FF 0.6 - param set FW_RR_IMAX 0.2 - param set FW_RR_P 0.04 +param set-default FW_AIRSPD_MAX 15 +param set-default FW_AIRSPD_MIN 10 +param set-default FW_AIRSPD_TRIM 13 +param set-default FW_R_TC 0.3 +param set-default FW_P_TC 0.3 +param set-default FW_L1_DAMPING 0.74 +param set-default FW_L1_PERIOD 16 +param set-default FW_LND_ANG 15 +param set-default FW_LND_FLALT 5 +param set-default FW_LND_HHDIST 15 +param set-default FW_LND_HVIRT 13 +param set-default FW_LND_TLALT 5 +param set-default FW_THR_LND_MAX 0 +param set-default FW_PR_FF 0.35 +param set-default FW_PR_IMAX 0.4 +param set-default FW_PR_P 0.08 +param set-default FW_RR_FF 0.6 +param set-default FW_RR_IMAX 0.2 +param set-default FW_RR_P 0.04 + +param set-default PWM_MAIN_DISARM 1000 - param set PWM_MAIN_DISARM 1000 -fi set MIXER fw_generic_wing diff --git a/ROMFS/px4fmu_common/init.d/airframes/3031_phantom b/ROMFS/px4fmu_common/init.d/airframes/3031_phantom index 38907b090b..87b4504d99 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3031_phantom +++ b/ROMFS/px4fmu_common/init.d/airframes/3031_phantom @@ -24,33 +24,31 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MIN 13 - param set FW_AIRSPD_TRIM 15 - param set FW_AIRSPD_MAX 25 - param set FW_R_TC 0.3 - param set FW_P_TC 0.3 - param set FW_L1_DAMPING 0.75 - param set FW_L1_PERIOD 15 - param set FW_PR_FF 0.2 - param set FW_PR_IMAX 0.2 - param set FW_PR_P 0.03 - param set FW_P_LIM_MAX 50 - param set FW_P_LIM_MIN -50 - param set FW_P_ROLLFF 1 - param set FW_RR_FF 0.5 - param set FW_RR_IMAX 0.2 - param set FW_RR_P 0.08 - param set FW_R_LIM 50 - param set FW_R_RMAX 50 +param set-default FW_AIRSPD_MIN 13 +param set-default FW_AIRSPD_TRIM 15 +param set-default FW_AIRSPD_MAX 25 +param set-default FW_R_TC 0.3 +param set-default FW_P_TC 0.3 +param set-default FW_L1_DAMPING 0.75 +param set-default FW_L1_PERIOD 15 +param set-default FW_PR_FF 0.2 +param set-default FW_PR_IMAX 0.2 +param set-default FW_PR_P 0.03 +param set-default FW_P_LIM_MAX 50 +param set-default FW_P_LIM_MIN -50 +param set-default FW_P_ROLLFF 1 +param set-default FW_RR_FF 0.5 +param set-default FW_RR_IMAX 0.2 +param set-default FW_RR_P 0.08 +param set-default FW_R_LIM 50 +param set-default FW_R_RMAX 50 - param set PWM_MAIN_DISARM 1000 +param set-default PWM_MAIN_DISARM 1000 + +# Bottom of bay and nominal zero-pitch attitude differ +# the payload bay is pitched up about 7 degrees +param set-default SENS_BOARD_Y_OFF 7 - # Bottom of bay and nominal zero-pitch attitude differ - # the payload bay is pitched up about 7 degrees - param set SENS_BOARD_Y_OFF 7 -fi set MIXER phantom diff --git a/ROMFS/px4fmu_common/init.d/airframes/3032_skywalker_x5 b/ROMFS/px4fmu_common/init.d/airframes/3032_skywalker_x5 index 254c6257fc..577710bded 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3032_skywalker_x5 +++ b/ROMFS/px4fmu_common/init.d/airframes/3032_skywalker_x5 @@ -22,24 +22,22 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MIN 15 - param set FW_AIRSPD_TRIM 20 - param set FW_AIRSPD_MAX 40 - param set FW_R_TC 0.3 - param set FW_P_TC 0.3 - param set FW_L1_DAMPING 0.74 - param set FW_L1_PERIOD 16 - param set FW_LND_ANG 15 - param set FW_LND_FLALT 5 - param set FW_LND_HHDIST 15 - param set FW_LND_HVIRT 13 - param set FW_LND_TLALT 5 - param set FW_THR_LND_MAX 0 - param set FW_PR_FF 0.35 - param set FW_RR_FF 0.6 - param set FW_RR_P 0.04 -fi +param set-default FW_AIRSPD_MIN 15 +param set-default FW_AIRSPD_TRIM 20 +param set-default FW_AIRSPD_MAX 40 +param set-default FW_R_TC 0.3 +param set-default FW_P_TC 0.3 +param set-default FW_L1_DAMPING 0.74 +param set-default FW_L1_PERIOD 16 +param set-default FW_LND_ANG 15 +param set-default FW_LND_FLALT 5 +param set-default FW_LND_HHDIST 15 +param set-default FW_LND_HVIRT 13 +param set-default FW_LND_TLALT 5 +param set-default FW_THR_LND_MAX 0 +param set-default FW_PR_FF 0.35 +param set-default FW_RR_FF 0.6 +param set-default FW_RR_P 0.04 + set MIXER fw_generic_wing diff --git a/ROMFS/px4fmu_common/init.d/airframes/3033_wingwing b/ROMFS/px4fmu_common/init.d/airframes/3033_wingwing index a7c71e0e62..2e4a7f58ef 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3033_wingwing +++ b/ROMFS/px4fmu_common/init.d/airframes/3033_wingwing @@ -24,28 +24,26 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 2 - param set FW_AIRSPD_MAX 15 - param set FW_AIRSPD_MIN 10 - param set FW_AIRSPD_TRIM 13 - param set FW_R_TC 0.3 - param set FW_P_TC 0.3 - param set FW_L1_DAMPING 0.74 - param set FW_L1_PERIOD 16 - param set FW_LND_ANG 15 - param set FW_LND_FLALT 5 - param set FW_LND_HHDIST 15 - param set FW_LND_HVIRT 13 - param set FW_LND_TLALT 5 - param set FW_THR_LND_MAX 0 - param set FW_PR_FF 0.35 - param set FW_RR_FF 0.6 - param set FW_RR_P 0.04 +param set-default BAT_N_CELLS 2 +param set-default FW_AIRSPD_MAX 15 +param set-default FW_AIRSPD_MIN 10 +param set-default FW_AIRSPD_TRIM 13 +param set-default FW_R_TC 0.3 +param set-default FW_P_TC 0.3 +param set-default FW_L1_DAMPING 0.74 +param set-default FW_L1_PERIOD 16 +param set-default FW_LND_ANG 15 +param set-default FW_LND_FLALT 5 +param set-default FW_LND_HHDIST 15 +param set-default FW_LND_HVIRT 13 +param set-default FW_LND_TLALT 5 +param set-default FW_THR_LND_MAX 0 +param set-default FW_PR_FF 0.35 +param set-default FW_RR_FF 0.6 +param set-default FW_RR_P 0.04 + +param set-default PWM_MAIN_DISARM 1000 - param set PWM_MAIN_DISARM 1000 -fi # Configure this as plane. set MAV_TYPE 1 diff --git a/ROMFS/px4fmu_common/init.d/airframes/3034_fx79 b/ROMFS/px4fmu_common/init.d/airframes/3034_fx79 index a363de1d63..192b53a6ca 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3034_fx79 +++ b/ROMFS/px4fmu_common/init.d/airframes/3034_fx79 @@ -21,13 +21,11 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MAX 30 - param set FW_AIRSPD_MIN 13 - param set FW_AIRSPD_TRIM 15 +param set-default FW_AIRSPD_MAX 30 +param set-default FW_AIRSPD_MIN 13 +param set-default FW_AIRSPD_TRIM 15 + +param set-default NAV_LOITER_RAD 150 - param set NAV_LOITER_RAD 150 -fi set MIXER FX79 diff --git a/ROMFS/px4fmu_common/init.d/airframes/3036_pigeon b/ROMFS/px4fmu_common/init.d/airframes/3036_pigeon index ddd75b6882..0c8f8fdd44 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3036_pigeon +++ b/ROMFS/px4fmu_common/init.d/airframes/3036_pigeon @@ -23,34 +23,32 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MIN 15 - param set FW_AIRSPD_TRIM 20 - param set FW_AIRSPD_MAX 27 - param set FW_ATT_TC 0.3 - param set FW_L1_DAMPING 0.75 - param set FW_L1_PERIOD 20 - param set FW_PR_FF 0.35 - param set FW_PR_IMAX 0.2 - param set FW_PR_P 0.05 - param set FW_P_LIM_MAX 45 - param set FW_P_LIM_MIN -45 - param set FW_P_ROLLFF 1 - param set FW_P_TC 0.3 - param set FW_RR_FF 0.3 - param set FW_RR_IMAX 0.2 - param set FW_RR_P 0.03 - param set FW_R_LIM 40 - param set FW_R_RMAX 50 - param set FW_R_TC 0.3 +param set-default FW_AIRSPD_MIN 15 +param set-default FW_AIRSPD_TRIM 20 +param set-default FW_AIRSPD_MAX 27 +param set-default FW_ATT_TC 0.3 +param set-default FW_L1_DAMPING 0.75 +param set-default FW_L1_PERIOD 20 +param set-default FW_PR_FF 0.35 +param set-default FW_PR_IMAX 0.2 +param set-default FW_PR_P 0.05 +param set-default FW_P_LIM_MAX 45 +param set-default FW_P_LIM_MIN -45 +param set-default FW_P_ROLLFF 1 +param set-default FW_P_TC 0.3 +param set-default FW_RR_FF 0.3 +param set-default FW_RR_IMAX 0.2 +param set-default FW_RR_P 0.03 +param set-default FW_R_LIM 40 +param set-default FW_R_RMAX 50 +param set-default FW_R_TC 0.3 - param set PWM_MAIN_DISARM 1000 +param set-default PWM_MAIN_DISARM 1000 + +# Bottom of bay and nominal zero-pitch attitude differ +# the payload bay is pitched up about 7 degrees +param set-default SENS_BOARD_Y_OFF 11.9 - # Bottom of bay and nominal zero-pitch attitude differ - # the payload bay is pitched up about 7 degrees - param set SENS_BOARD_Y_OFF 11.9 -fi set MIXER phantom diff --git a/ROMFS/px4fmu_common/init.d/airframes/3037_parrot_disco_mod b/ROMFS/px4fmu_common/init.d/airframes/3037_parrot_disco_mod index 26f9c22fe8..648b4db5ca 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3037_parrot_disco_mod +++ b/ROMFS/px4fmu_common/init.d/airframes/3037_parrot_disco_mod @@ -23,70 +23,65 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then +#################################### +# Airspeed +#################################### +param set-default FW_AIRSPD_MIN 15 # = 29 knots +param set-default FW_AIRSPD_TRIM 20 # = 39 knots +param set-default FW_AIRSPD_MAX 27 # = 52 knots - #################################### - # Airspeed - #################################### +#################################### +# The Main L1 Controller +#################################### +param set-default FW_L1_PERIOD 20 #units of meters - param set FW_AIRSPD_MIN 15 # = 29 knots - param set FW_AIRSPD_TRIM 20 # = 39 knots - param set FW_AIRSPD_MAX 27 # = 52 knots +# Damping factor for L1 control (def = 0.75) +param set-default FW_L1_DAMPING 0.75 - #################################### - # The Main L1 Controller - #################################### +#################################### +# Pitch +#################################### - param set FW_L1_PERIOD 20 #units of meters +# Basic limits (def = +/- 45 deg) +param set-default FW_P_LIM_MAX 45 +param set-default FW_P_LIM_MIN -45 - # Damping factor for L1 control (def = 0.75) - param set FW_L1_DAMPING 0.75 +# Time Constant (def = 0.4s) +param set-default FW_P_TC 0.4 - #################################### - # Pitch - #################################### +# Pitch rate feed forward (def = 0.5 %/rad/sec) +param set-default FW_PR_FF 0.35 - # Basic limits (def = +/- 45 deg) - param set FW_P_LIM_MAX 45 - param set FW_P_LIM_MIN -45 +# Pitch rate integrator limit (def = 0.4) +param set-default FW_PR_IMAX 0.4 - # Time Constant (def = 0.4s) - param set FW_P_TC 0.4 +# Pitch rate proportional gain (def = 0.08 %/rad/sec) +param set-default FW_PR_P 0.08 - # Pitch rate feed forward (def = 0.5 %/rad/sec) - param set FW_PR_FF 0.35 +#################################### +# Roll +#################################### - # Pitch rate integrator limit (def = 0.4) - param set FW_PR_IMAX 0.4 +# Basic limits (def = 50 deg) +param set-default FW_R_LIM 40 - # Pitch rate proportional gain (def = 0.08 %/rad/sec) - param set FW_PR_P 0.08 +# Roll rate upper limit (def = 70 deg/s) +param set-default FW_R_RMAX 50 - #################################### - # Roll - #################################### +# Roll Time Constant (def = 0.4 s) +param set-default FW_R_TC 0.4 - # Basic limits (def = 50 deg) - param set FW_R_LIM 40 +# Roll rate feed forward (def = 0.5 %/rad/sec) +param set-default FW_RR_FF 0.5 - # Roll rate upper limit (def = 70 deg/s) - param set FW_R_RMAX 50 +# Roll rate proportional Gain (def = 0.05 %/rad/sec) +param set-default FW_RR_P 0.05 - # Roll Time Constant (def = 0.4 s) - param set FW_R_TC 0.4 +# Roll Integrator Anti-Windup +param set-default FW_RR_IMAX 0.2 - # Roll rate feed forward (def = 0.5 %/rad/sec) - param set FW_RR_FF 0.5 +param set-default PWM_MAIN_DISARM 1000 - # Roll rate proportional Gain (def = 0.05 %/rad/sec) - param set FW_RR_P 0.05 - - # Roll Integrator Anti-Windup - param set FW_RR_IMAX 0.2 - - param set PWM_MAIN_DISARM 1000 -fi set MIXER fw_generic_wing.main.mix diff --git a/ROMFS/px4fmu_common/init.d/airframes/3100_tbs_caipirinha b/ROMFS/px4fmu_common/init.d/airframes/3100_tbs_caipirinha index 7482a9c015..d0cbc03682 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/3100_tbs_caipirinha +++ b/ROMFS/px4fmu_common/init.d/airframes/3100_tbs_caipirinha @@ -21,49 +21,48 @@ . ${R}etc/init.d/rc.fw_defaults -if [ $AUTOCNF = yes ] -then - param set FW_AIRSPD_MAX 25 - param set FW_AIRSPD_MIN 12.5 - param set FW_AIRSPD_TRIM 16.5 - param set FW_L1_DAMPING 0.75 - param set FW_L1_PERIOD 15 - param set FW_LND_ANG 15 - param set FW_LND_FLALT 8 - param set FW_LND_HHDIST 15 - param set FW_LND_HVIRT 13 - param set FW_LND_TLALT 10 - param set FW_THR_LND_MAX 0 - param set FW_P_LIM_MAX 20 - param set FW_P_LIM_MIN -30 - param set FW_R_LIM 45 - param set FW_R_TC 0.4 - param set FW_P_TC 0.4 - param set FW_PR_FF 0.45 - param set FW_PR_IMAX 0.4 - param set FW_PR_P 0.005 - param set FW_RR_FF 0.45 - param set FW_RR_IMAX 0.2 - param set FW_RR_P 0.013 - param set FW_P_RMAX_NEG 70 - param set FW_P_RMAX_POS 70 - param set FW_R_RMAX 70 - param set FW_THR_CRUISE 0.55 - param set LNDFW_AIRSPD_MAX 6 - param set LNDFW_XYACC_MAX 4 - param set LNDFW_VEL_XY_MAX 3 - param set LNDFW_VEL_Z_MAX 5 +param set-default FW_AIRSPD_MAX 25 +param set-default FW_AIRSPD_MIN 12.5 +param set-default FW_AIRSPD_TRIM 16.5 +param set-default FW_L1_DAMPING 0.75 +param set-default FW_L1_PERIOD 15 +param set-default FW_LND_ANG 15 +param set-default FW_LND_FLALT 8 +param set-default FW_LND_HHDIST 15 +param set-default FW_LND_HVIRT 13 +param set-default FW_LND_TLALT 10 +param set-default FW_THR_LND_MAX 0 +param set-default FW_P_LIM_MAX 20 +param set-default FW_P_LIM_MIN -30 +param set-default FW_R_LIM 45 +param set-default FW_R_TC 0.4 +param set-default FW_P_TC 0.4 +param set-default FW_PR_FF 0.45 +param set-default FW_PR_IMAX 0.4 +param set-default FW_PR_P 0.005 +param set-default FW_RR_FF 0.45 +param set-default FW_RR_IMAX 0.2 +param set-default FW_RR_P 0.013 +param set-default FW_P_RMAX_NEG 70 +param set-default FW_P_RMAX_POS 70 +param set-default FW_R_RMAX 70 +param set-default FW_THR_CRUISE 0.55 - param set MIS_TAKEOFF_ALT 50 +param set-default LNDFW_AIRSPD_MAX 6 +param set-default LNDFW_XYACC_MAX 4 +param set-default LNDFW_VEL_XY_MAX 3 +param set-default LNDFW_VEL_Z_MAX 5 - param set NAV_LOITER_RAD 30 +param set-default MIS_TAKEOFF_ALT 50 + +param set-default NAV_LOITER_RAD 30 + +param set-default PWM_MAIN_REV1 1 +param set-default PWM_MAIN_REV2 1 +param set-default PWM_MAIN_MIN 900 +param set-default PWM_MAIN_MAX 2100 - param set PWM_MAIN_REV1 1 - param set PWM_MAIN_REV2 1 - param set PWM_MAIN_MIN 900 - param set PWM_MAIN_MAX 2100 -fi set MIXER caipi set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4003_qavr5 b/ROMFS/px4fmu_common/init.d/airframes/4003_qavr5 index c4c2ccc9cf..ef87133ba2 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4003_qavr5 +++ b/ROMFS/px4fmu_common/init.d/airframes/4003_qavr5 @@ -16,23 +16,21 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 8 - param set MC_ROLLRATE_P 0.08 - param set MC_ROLLRATE_I 0.16 - param set MC_ROLLRATE_D 0.003 - param set MC_PITCH_P 8 - param set MC_PITCHRATE_P 0.1 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_D 0.003 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.15 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MPC_THR_MIN 0.06 - param set MPC_MANTHR_MIN 0.06 +param set-default MC_ROLL_P 8 +param set-default MC_ROLLRATE_P 0.08 +param set-default MC_ROLLRATE_I 0.16 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_PITCH_P 8 +param set-default MC_PITCHRATE_P 0.1 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.15 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 - param set PWM_MAIN_MIN 1075 -fi +param set-default MPC_THR_MIN 0.06 +param set-default MPC_MANTHR_MIN 0.06 + +param set-default PWM_MAIN_MIN 1075 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4009_qav250 b/ROMFS/px4fmu_common/init.d/airframes/4009_qav250 index 66a9c56fe8..588d735c36 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4009_qav250 +++ b/ROMFS/px4fmu_common/init.d/airframes/4009_qav250 @@ -16,26 +16,24 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set ATT_BIAS_MAX 0 - param set CBRK_IO_SAFETY 22027 +param set-default ATT_BIAS_MAX 0 - param set MPC_MANTHR_MIN 0.06 - param set MC_ROLL_P 6 - param set MC_ROLLRATE_P 0.14 - param set MC_ROLLRATE_I 0.23 - param set MC_ROLLRATE_D 0.0025 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.235 - param set MC_PITCHRATE_I 0.17 - param set MC_PITCHRATE_D 0.004 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.3 - param set MC_YAWRATE_I 0.2 - param set MC_YAWRATE_D 0 - param set MPC_THR_MIN 0.06 +param set-default CBRK_IO_SAFETY 22027 - param set PWM_MAIN_MIN 1075 -fi +param set-default MPC_MANTHR_MIN 0.06 +param set-default MC_ROLL_P 6 +param set-default MC_ROLLRATE_P 0.14 +param set-default MC_ROLLRATE_I 0.23 +param set-default MC_ROLLRATE_D 0.0025 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.235 +param set-default MC_PITCHRATE_I 0.17 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.3 +param set-default MC_YAWRATE_I 0.2 +param set-default MC_YAWRATE_D 0 +param set-default MPC_THR_MIN 0.06 + +param set-default PWM_MAIN_MIN 1075 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4010_dji_f330 b/ROMFS/px4fmu_common/init.d/airframes/4010_dji_f330 index e82faa6b5c..2245ac8d19 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4010_dji_f330 +++ b/ROMFS/px4fmu_common/init.d/airframes/4010_dji_f330 @@ -13,21 +13,18 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.003 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.003 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 - # DJI ESCs do not support calibration and need a higher min - param set PWM_MAIN_MIN 1230 -fi +# DJI ESCs do not support calibration and need a higher min +param set-default PWM_MAIN_MIN 1230 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4011_dji_f450 b/ROMFS/px4fmu_common/init.d/airframes/4011_dji_f450 index 5e8d318a45..9aa4c79eb2 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4011_dji_f450 +++ b/ROMFS/px4fmu_common/init.d/airframes/4011_dji_f450 @@ -13,21 +13,18 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.003 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.003 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.3 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.3 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 - # DJI ESCs do not support calibration and need a higher min - param set PWM_MAIN_MIN 1230 -fi +# DJI ESCs do not support calibration and need a higher min +param set-default PWM_MAIN_MIN 1230 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4014_s500 b/ROMFS/px4fmu_common/init.d/airframes/4014_s500 index 6bb03e83c6..72629b75e6 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4014_s500 +++ b/ROMFS/px4fmu_common/init.d/airframes/4014_s500 @@ -16,12 +16,10 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLLRATE_P 0.18 - param set MC_PITCHRATE_P 0.18 - param set MC_ROLLRATE_I 0.15 - param set MC_PITCHRATE_I 0.15 - param set MC_ROLLRATE_D 0.003 - param set MC_PITCHRATE_D 0.003 -fi + +param set-default MC_ROLLRATE_P 0.18 +param set-default MC_PITCHRATE_P 0.18 +param set-default MC_ROLLRATE_I 0.15 +param set-default MC_PITCHRATE_I 0.15 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_PITCHRATE_D 0.003 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4015_holybro_s500 b/ROMFS/px4fmu_common/init.d/airframes/4015_holybro_s500 index 6c0dcae023..62d2fe9c98 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4015_holybro_s500 +++ b/ROMFS/px4fmu_common/init.d/airframes/4015_holybro_s500 @@ -16,14 +16,13 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set IMU_GYRO_CUTOFF 60 - param set IMU_DGYRO_CUTOFF 30 - param set MC_ROLLRATE_P 0.14 - param set MC_PITCHRATE_P 0.14 - param set MC_ROLLRATE_I 0.3 - param set MC_PITCHRATE_I 0.3 - param set MC_ROLLRATE_D 0.004 - param set MC_PITCHRATE_D 0.004 -fi + +param set-default IMU_GYRO_CUTOFF 30 +param set-default IMU_DGYRO_CUTOFF 30 + +param set-default MC_ROLLRATE_P 0.14 +param set-default MC_PITCHRATE_P 0.14 +param set-default MC_ROLLRATE_I 0.3 +param set-default MC_PITCHRATE_I 0.3 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_PITCHRATE_D 0.004 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4016_holybro_px4vision b/ROMFS/px4fmu_common/init.d/airframes/4016_holybro_px4vision index 7e5ddeb2c3..da92a11043 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4016_holybro_px4vision +++ b/ROMFS/px4fmu_common/init.d/airframes/4016_holybro_px4vision @@ -19,121 +19,119 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - # System parameters - # use FMU motor outputs for less delay in the rate control loop - param set SYS_USE_IO 0 - # Commander Parameters - param set COM_OBS_AVOID 1 - param set COM_DISARM_LAND 0.5 +# System parameters +# use FMU motor outputs for less delay in the rate control loop +param set-default SYS_USE_IO 0 - # EKF2 parameters - param set EKF2_AID_MASK 35 - param set EKF2_IMU_POS_X 0.02 - param set EKF2_GPS_POS_X 0.055 - param set EKF2_GPS_POS_Z -0.15 - param set EKF2_HGT_MODE 0 - param set EKF2_MIN_RNG 0.03 - param set EKF2_OF_POS_X 0.055 - param set EKF2_OF_POS_Y 0.02 - param set EKF2_OF_POS_Z 0.065 - param set EKF2_REQ_HDRIFT 0.3 - param set EKF2_REQ_SACC 1 - param set EKF2_REQ_VDRIFT 0.3 - param set EKF2_RNG_AID 1 - param set EKF2_RNG_A_HMAX 8 - param set EKF2_RNG_A_VMAX 2 - param set EKF2_RNG_POS_X 0.055 - param set EKF2_RNG_POS_Y -0.01 - param set EKF2_RNG_POS_Z 0.065 - param set EKF2_PCOEF_XP -0.25 - param set EKF2_PCOEF_YN -0.55 - param set EKF2_PCOEF_YP -0.55 +# Commander Parameters +param set-default COM_OBS_AVOID 1 +param set-default COM_DISARM_LAND 0.5 - # MAVLink parameters - param set MAV_0_CONFIG 101 - param set MAV_1_CONFIG 102 - param set MAV_1_RATE 80000 - param set MAV_1_MODE 9 - param set SER_TEL1_BAUD 921600 +# EKF2 parameters +param set-default EKF2_AID_MASK 35 +param set-default EKF2_IMU_POS_X 0.02 +param set-default EKF2_GPS_POS_X 0.055 +param set-default EKF2_GPS_POS_Z -0.15 +param set-default EKF2_HGT_MODE 0 +param set-default EKF2_MIN_RNG 0.03 +param set-default EKF2_OF_POS_X 0.055 +param set-default EKF2_OF_POS_Y 0.02 +param set-default EKF2_OF_POS_Z 0.065 +param set-default EKF2_REQ_HDRIFT 0.3 +param set-default EKF2_REQ_SACC 1 +param set-default EKF2_REQ_VDRIFT 0.3 +param set-default EKF2_RNG_AID 1 +param set-default EKF2_RNG_A_HMAX 8 +param set-default EKF2_RNG_A_VMAX 2 +param set-default EKF2_RNG_POS_X 0.055 +param set-default EKF2_RNG_POS_Y -0.01 +param set-default EKF2_RNG_POS_Z 0.065 +param set-default EKF2_PCOEF_XP -0.25 +param set-default EKF2_PCOEF_YN -0.55 +param set-default EKF2_PCOEF_YP -0.55 - # Vehicle attitude PID tuning - param set MC_ACRO_EXPO 0 - param set MC_ACRO_EXPO_Y 0 - param set MC_ACRO_P_MAX 200 - param set MC_ACRO_R_MAX 200 - param set MC_ACRO_SUPEXPO 0 - param set MC_ACRO_SUPEXPOY 0 - param set MC_ACRO_Y_MAX 150 - param set IMU_DGYRO_CUTOFF 30 - param set MC_PITCHRATE_D 0.0015 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_K 1 - param set MC_PITCHRATE_P 0.15 - param set MC_ROLLRATE_D 0.0015 - param set MC_ROLLRATE_I 0.2 - param set MC_ROLLRATE_K 1 - param set MC_ROLLRATE_P 0.15 - param set MC_YAWRATE_P 0.3 +# MAVLink parameters +param set-default MAV_0_CONFIG 101 +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_RATE 80000 +param set-default MAV_1_MODE 9 +param set-default SER_TEL1_BAUD 921600 - # Position Control Tuning - param set CP_DIST 6 - param set MPC_ACC_DOWN_MAX 5 - param set MPC_ACC_HOR_MAX 10 - param set MPC_ACC_UP_MAX 4 - param set MPC_MANTHR_MIN 0 - param set MPC_MAN_Y_MAX 120 - param set MPC_TILTMAX_AIR 45 - param set MPC_THR_HOVER 0.3 - param set MPC_THR_MIN 0.12 - param set MPC_TKO_SPEED 1 - param set MPC_VEL_MANUAL 5 - param set MPC_XY_CRUISE 5 - param set MPC_XY_VEL_MAX 5 - param set MPC_XY_VEL_P_ACC 1.58 - param set MPC_XY_TRAJ_P 0.3 - param set MPC_Z_TRAJ_P 0.3 - param set MPC_Z_VEL_P_ACC 5 - param set MPC_Z_VEL_I_ACC 3 - param set MPC_LAND_ALT1 3 - param set MPC_LAND_ALT2 1 +# Vehicle attitude PID tuning +param set-default MC_ACRO_EXPO 0 +param set-default MC_ACRO_EXPO_Y 0 +param set-default MC_ACRO_P_MAX 200 +param set-default MC_ACRO_R_MAX 200 +param set-default MC_ACRO_SUPEXPO 0 +param set-default MC_ACRO_SUPEXPOY 0 +param set-default MC_ACRO_Y_MAX 150 +param set-default IMU_DGYRO_CUTOFF 30 +param set-default MC_PITCHRATE_D 0.0015 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_K 1 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_ROLLRATE_D 0.0015 +param set-default MC_ROLLRATE_I 0.2 +param set-default MC_ROLLRATE_K 1 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_YAWRATE_P 0.3 - # Navigator Parameters - param set NAV_ACC_RAD 2 +# Position Control Tuning +param set-default CP_DIST 6 +param set-default MPC_ACC_DOWN_MAX 5 +param set-default MPC_ACC_HOR_MAX 10 +param set-default MPC_ACC_UP_MAX 4 +param set-default MPC_MANTHR_MIN 0 +param set-default MPC_MAN_Y_MAX 120 +param set-default MPC_TILTMAX_AIR 45 +param set-default MPC_THR_HOVER 0.3 +param set-default MPC_THR_MIN 0.12 +param set-default MPC_TKO_SPEED 1 +param set-default MPC_VEL_MANUAL 5 +param set-default MPC_XY_CRUISE 5 +param set-default MPC_XY_VEL_MAX 5 +param set-default MPC_XY_VEL_P_ACC 1.58 +param set-default MPC_XY_TRAJ_P 0.3 +param set-default MPC_Z_TRAJ_P 0.3 +param set-default MPC_Z_VEL_P_ACC 5 +param set-default MPC_Z_VEL_I_ACC 3 +param set-default MPC_LAND_ALT1 3 +param set-default MPC_LAND_ALT2 1 - # PWM and RC Parameters - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1075 +# Navigator Parameters +param set-default NAV_ACC_RAD 2 - # use oneshot motor output protocol - param set PWM_MAIN_RATE 0 +# PWM and RC Parameters +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1075 - # RTL Parameters - param set RTL_DESCEND_ALT 5 - param set RTL_RETURN_ALT 5 - param set RTL_CONE_ANG 45 +# use oneshot motor output protocol +param set-default PWM_MAIN_RATE 0 - # Logging Parameters - param set SDLOG_PROFILE 131 +# RTL Parameters +param set-default RTL_DESCEND_ALT 5 +param set-default RTL_RETURN_ALT 5 +param set-default RTL_CONE_ANG 45 - # Sensors Parameters - param set SENS_BOARD_ROT 0 - param set SENS_CM8JL65_CFG 104 - param set SENS_FLOW_MAXHGT 25 - param set SENS_FLOW_MINHGT 0.5 - param set SENS_FLOW_ROT 0 - param set IMU_GYRO_CUTOFF 100 - param set SENS_EN_PMW3901 1 +# Logging Parameters +param set-default SDLOG_PROFILE 131 - # Power Parameters - param set BAT_N_CELLS 4 - param set BAT_A_PER_V 36.364 - param set BAT_V_DIV 18.182 +# Sensors Parameters +param set-default SENS_BOARD_ROT 0 +param set-default SENS_CM8JL65_CFG 104 +param set-default SENS_FLOW_MAXHGT 25 +param set-default SENS_FLOW_MINHGT 0.5 +param set-default SENS_FLOW_ROT 0 +param set-default IMU_GYRO_CUTOFF 100 +param set-default SENS_EN_PMW3901 1 - # Circuit breakers - param set CBRK_IO_SAFETY 22027 +# Power Parameters +param set-default BAT_N_CELLS 4 +param set-default BAT_A_PER_V 36.364 +param set-default BAT_V_DIV 18.182 - param set THR_MDL_FAC 0.3 -fi +# Circuit breakers +param set-default CBRK_IO_SAFETY 22027 + +param set-default THR_MDL_FAC 0.3 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames b/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames index d3dae3901e..ab9a1caa88 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames +++ b/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames @@ -21,19 +21,16 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set IMU_GYRO_CUTOFF 40 - param set IMU_DGYRO_CUTOFF 20 - param set IMU_GYRO_RATEMAX 400 - param set MC_ROLLRATE_P 0.18 - param set MC_ROLLRATE_I 0.15 - param set MC_ROLLRATE_D 0.003 +param set-default IMU_GYRO_CUTOFF 40 +param set-default IMU_DGYRO_CUTOFF 20 +param set-default IMU_GYRO_RATEMAX 400 - param set MC_PITCHRATE_P 0.18 - param set MC_PITCHRATE_I 0.15 - param set MC_PITCHRATE_D 0.003 +param set-default MC_ROLLRATE_P 0.18 +param set-default MC_ROLLRATE_I 0.15 +param set-default MC_ROLLRATE_D 0.003 -fi +param set-default MC_PITCHRATE_P 0.18 +param set-default MC_PITCHRATE_I 0.15 +param set-default MC_PITCHRATE_D 0.003 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4018_s500_ctrlalloc b/ROMFS/px4fmu_common/init.d/airframes/4018_s500_ctrlalloc index be4f2a7808..99dbec4609 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4018_s500_ctrlalloc +++ b/ROMFS/px4fmu_common/init.d/airframes/4018_s500_ctrlalloc @@ -13,44 +13,41 @@ . ${R}etc/init.d/rc.mc_defaults . ${R}etc/init.d/rc.ctrlalloc -if [ $AUTOCNF = yes ] -then - param set MPC_USE_HTE 0 - param set VM_MASS 1.5 - param set VM_INERTIA_XX 0.03 - param set VM_INERTIA_YY 0.03 - param set VM_INERTIA_ZZ 0.05 +param set-default MPC_USE_HTE 0 - param set CA_AIRFRAME 0 - param set CA_METHOD 1 - param set CA_ACT0_MIN 0.0 - param set CA_ACT1_MIN 0.0 - param set CA_ACT2_MIN 0.0 - param set CA_ACT3_MIN 0.0 - param set CA_ACT0_MAX 1.0 - param set CA_ACT1_MAX 1.0 - param set CA_ACT2_MAX 1.0 - param set CA_ACT3_MAX 1.0 +param set-default VM_MASS 1.5 +param set-default VM_INERTIA_XX 0.03 +param set-default VM_INERTIA_YY 0.03 +param set-default VM_INERTIA_ZZ 0.05 - param set CA_MC_R0_PX 0.177 - param set CA_MC_R0_PY 0.177 - param set CA_MC_R0_CT 6.5 - param set CA_MC_R0_KM 0.05 - param set CA_MC_R1_PX -0.177 - param set CA_MC_R1_PY -0.177 - param set CA_MC_R1_CT 6.5 - param set CA_MC_R1_KM 0.05 - param set CA_MC_R2_PX 0.177 - param set CA_MC_R2_PY -0.177 - param set CA_MC_R2_CT 6.5 - param set CA_MC_R2_KM -0.05 - param set CA_MC_R3_PX -0.177 - param set CA_MC_R3_PY 0.177 - param set CA_MC_R3_CT 6.5 - param set CA_MC_R3_KM -0.05 +param set-default CA_AIRFRAME 0 +param set-default CA_METHOD 1 +param set-default CA_ACT0_MIN 0.0 +param set-default CA_ACT1_MIN 0.0 +param set-default CA_ACT2_MIN 0.0 +param set-default CA_ACT3_MIN 0.0 +param set-default CA_ACT0_MAX 1.0 +param set-default CA_ACT1_MAX 1.0 +param set-default CA_ACT2_MAX 1.0 +param set-default CA_ACT3_MAX 1.0 -fi +param set-default CA_MC_R0_PX 0.177 +param set-default CA_MC_R0_PY 0.177 +param set-default CA_MC_R0_CT 6.5 +param set-default CA_MC_R0_KM 0.05 +param set-default CA_MC_R1_PX -0.177 +param set-default CA_MC_R1_PY -0.177 +param set-default CA_MC_R1_CT 6.5 +param set-default CA_MC_R1_KM 0.05 +param set-default CA_MC_R2_PX 0.177 +param set-default CA_MC_R2_PY -0.177 +param set-default CA_MC_R2_CT 6.5 +param set-default CA_MC_R2_KM -0.05 +param set-default CA_MC_R3_PX -0.177 +param set-default CA_MC_R3_PY 0.177 +param set-default CA_MC_R3_CT 6.5 +param set-default CA_MC_R3_KM -0.05 set MIXER direct set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4020_hk_micro_pcb b/ROMFS/px4fmu_common/init.d/airframes/4020_hk_micro_pcb index 46d0fffa85..69f834c6a6 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4020_hk_micro_pcb +++ b/ROMFS/px4fmu_common/init.d/airframes/4020_hk_micro_pcb @@ -22,20 +22,18 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.1 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.003 - param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.1 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.003 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set PWM_MAIN_MIN 1200 -fi +param set-default MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.1 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.003 +param set-default MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.1 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.003 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 + +param set-default PWM_MAIN_MIN 1200 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4030_3dr_solo b/ROMFS/px4fmu_common/init.d/airframes/4030_3dr_solo index 2d1df6d609..55af8d5485 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4030_3dr_solo +++ b/ROMFS/px4fmu_common/init.d/airframes/4030_3dr_solo @@ -19,77 +19,73 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - # tuning - param set MC_PITCHRATE_P 0.11 - param set MC_ROLLRATE_P 0.11 - param set MPC_MANTHR_MIN 0.08 - param set MPC_XY_VEL_MAX 3 - param set MPC_Z_VEL_MAX_DN 2 - # takeoff, land and RTL settings - param set MIS_TAKEOFF_ALT 4 - param set RTL_LAND_DELAY 1 - param set RTL_DESCEND_ALT 5 - param set RTL_RETURN_ALT 15 - param set MPC_TILTMAX_LND 8 - param set MPC_LAND_SPEED 0.4 - param set MPC_HOLD_MAX_Z 1.5 - param set MPC_TKO_JMPSPD 2 - param set MPC_TKO_SPEED 1.5 +# tuning +param set-default MC_PITCHRATE_P 0.11 +param set-default MC_ROLLRATE_P 0.11 +param set-default MPC_MANTHR_MIN 0.08 +param set-default MPC_XY_VEL_MAX 3 +param set-default MPC_Z_VEL_MAX_DN 2 - # setup - # main board rotation: pitch 180 - param set SENS_BOARD_ROT 12 - # solo external mag rotation - param set CAL_MAG0_ROT 38 - # no safety switch - param set CBRK_IO_SAFETY 22027 - # battery voltage not available yet - param set CBRK_SUPPLY_CHK 894281 +# takeoff, land and RTL settings +param set-default MIS_TAKEOFF_ALT 4 +param set-default RTL_LAND_DELAY 1 +param set-default RTL_DESCEND_ALT 5 +param set-default RTL_RETURN_ALT 15 +param set-default MPC_TILTMAX_LND 8 +param set-default MPC_LAND_SPEED 0.4 +param set-default MPC_HOLD_MAX_Z 1.5 +param set-default MPC_TKO_JMPSPD 2 +param set-default MPC_TKO_SPEED 1.5 - # RC configuration - param set RC_MAP_MODE_SW 5 - param set RC_MAP_PITCH 2 - param set RC_MAP_ROLL 1 - param set RC_MAP_THROTTLE 3 - param set RC_MAP_YAW 4 +# setup +# main board rotation: pitch 180 +param set-default SENS_BOARD_ROT 12 +# solo external mag rotation +param set-default CAL_MAG0_ROT 38 +# no safety switch +param set-default CBRK_IO_SAFETY 22027 +# battery voltage not available yet +param set-default CBRK_SUPPLY_CHK 894281 - param set RC1_DZ 10 - param set RC1_MAX 1988 - param set RC1_MIN 1003 - param set RC1_REV 1 - param set RC1_TRIM 1499 - param set RC2_DZ 10 - param set RC2_MAX 1987 - param set RC2_MIN 1023 - param set RC2_REV -1 - param set RC2_TRIM 1499 - param set RC3_DZ 10 - param set RC3_MAX 1877 - param set RC3_MIN 1023 - param set RC3_REV 1 - param set RC3_TRIM 1023 - param set RC4_DZ 10 - param set RC4_MAX 1998 - param set RC4_MIN 1012 - param set RC4_REV 1 - param set RC4_TRIM 1500 - param set RC5_DZ 10 - param set RC5_MAX 2000 - param set RC5_MIN 1000 - param set RC5_REV 1 - param set RC5_TRIM 1500 +# RC configuration +param set-default RC_MAP_MODE_SW 5 +param set-default RC_MAP_PITCH 2 +param set-default RC_MAP_ROLL 1 +param set-default RC_MAP_THROTTLE 3 +param set-default RC_MAP_YAW 4 - # enable high-speed link on telem 1 - param set MAV_0_RATE 80000 - param set MAV_0_MODE 2 - param set SER_TEL1_BAUD 921600 -fi +param set-default RC1_DZ 10 +param set-default RC1_MAX 1988 +param set-default RC1_MIN 1003 +param set-default RC1_REV 1 +param set-default RC1_TRIM 1499 +param set-default RC2_DZ 10 +param set-default RC2_MAX 1987 +param set-default RC2_MIN 1023 +param set-default RC2_REV -1 +param set-default RC2_TRIM 1499 +param set-default RC3_DZ 10 +param set-default RC3_MAX 1877 +param set-default RC3_MIN 1023 +param set-default RC3_REV 1 +param set-default RC3_TRIM 1023 +param set-default RC4_DZ 10 +param set-default RC4_MAX 1998 +param set-default RC4_MIN 1012 +param set-default RC4_REV 1 +param set-default RC4_TRIM 1500 +param set-default RC5_DZ 10 +param set-default RC5_MAX 2000 +param set-default RC5_MIN 1000 +param set-default RC5_REV 1 +param set-default RC5_TRIM 1500 +# enable high-speed link on telem 1 +param set-default MAV_0_RATE 80000 +param set-default MAV_0_MODE 2 +param set-default SER_TEL1_BAUD 921600 set MIXER quad_x set PWM_OUT 1234 set MIXER_AUX none - diff --git a/ROMFS/px4fmu_common/init.d/airframes/4031_3dr_quad b/ROMFS/px4fmu_common/init.d/airframes/4031_3dr_quad index 995e3491dc..e7e76f024d 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4031_3dr_quad +++ b/ROMFS/px4fmu_common/init.d/airframes/4031_3dr_quad @@ -17,15 +17,13 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.14 - param set MC_ROLLRATE_I 0.1 - param set MC_ROLLRATE_D 0.004 - param set MC_PITCH_P 6 - param set MC_PITCHRATE_P 0.14 - param set MC_PITCHRATE_I 0.09 - param set MC_PITCHRATE_D 0.004 - param set MC_YAW_P 4 -fi + +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.14 +param set-default MC_ROLLRATE_I 0.1 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_PITCH_P 6 +param set-default MC_PITCHRATE_P 0.14 +param set-default MC_PITCHRATE_I 0.09 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_YAW_P 4 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4040_reaper b/ROMFS/px4fmu_common/init.d/airframes/4040_reaper index e8cd64dfb1..058c338a55 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4040_reaper +++ b/ROMFS/px4fmu_common/init.d/airframes/4040_reaper @@ -21,29 +21,27 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.14 - param set MC_ROLLRATE_I 0.1 - param set MC_ROLLRATE_D 0.004 - param set MC_PITCH_P 6 - param set MC_PITCHRATE_P 0.14 - param set MC_PITCHRATE_I 0.09 - param set MC_PITCHRATE_D 0.004 - param set MC_YAW_P 4 - param set NAV_ACC_RAD 2 +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.14 +param set-default MC_ROLLRATE_I 0.1 +param set-default MC_ROLLRATE_D 0.004 +param set-default MC_PITCH_P 6 +param set-default MC_PITCHRATE_P 0.14 +param set-default MC_PITCHRATE_I 0.09 +param set-default MC_PITCHRATE_D 0.004 +param set-default MC_YAW_P 4 - param set PWM_AUX_DISARMED 950 - param set PWM_AUX_RATE 50 - param set PWM_MAIN_MIN 1100 - param set PWM_MAIN_MAX 1900 - param set PWM_MAIN_RATE 50 +param set-default NAV_ACC_RAD 2 - param set RTL_RETURN_ALT 30 - param set RTL_DESCEND_ALT 10 -fi +param set-default PWM_AUX_DISARMED 950 +param set-default PWM_AUX_RATE 50 +param set-default PWM_MAIN_MIN 1100 +param set-default PWM_MAIN_MAX 1900 +param set-default PWM_MAIN_RATE 50 + +param set-default RTL_RETURN_ALT 30 +param set-default RTL_DESCEND_ALT 10 set MIXER quad_h diff --git a/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x b/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x index d07215d3cc..a971b9f468 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x +++ b/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x @@ -24,41 +24,38 @@ . ${R}etc/init.d/rc.mc_defaults -if [ $AUTOCNF = yes ] -then - param set CBRK_SUPPLY_CHK 894281 - param set CBRK_USB_CHK 197848 - param set IMU_GYRO_CUTOFF 100 - param set IMU_DGYRO_CUTOFF 60 +param set-default CBRK_SUPPLY_CHK 894281 +param set-default CBRK_USB_CHK 197848 - param set MC_AIRMODE 2 - param set MC_PITCHRATE_D 0.001 - param set MC_PITCHRATE_I 0.5 - param set MC_PITCHRATE_MAX 600 - param set MC_PITCHRATE_P 0.075 - param set MC_PITCH_P 6 - param set MC_ROLLRATE_D 0.001 - param set MC_ROLLRATE_I 0.4 - param set MC_ROLLRATE_MAX 600 - param set MC_ROLLRATE_P 0.075 - param set MC_YAWRATE_I 0.3 - param set MC_YAWRATE_MAX 400 - param set MC_YAWRATE_P 0.12 - param set MC_YAW_P 4 +param set-default IMU_GYRO_CUTOFF 100 +param set-default IMU_DGYRO_CUTOFF 60 - param set MPC_MANTHR_MIN 0 - param set MPC_MAN_TILT_MAX 60 +param set-default MC_AIRMODE 2 +param set-default MC_PITCHRATE_D 0.001 +param set-default MC_PITCHRATE_I 0.5 +param set-default MC_PITCHRATE_MAX 600 +param set-default MC_PITCHRATE_P 0.075 +param set-default MC_PITCH_P 6 +param set-default MC_ROLLRATE_D 0.001 +param set-default MC_ROLLRATE_I 0.4 +param set-default MC_ROLLRATE_MAX 600 +param set-default MC_ROLLRATE_P 0.075 +param set-default MC_YAWRATE_I 0.3 +param set-default MC_YAWRATE_MAX 400 +param set-default MC_YAWRATE_P 0.12 +param set-default MC_YAW_P 4 - param set MOT_ORDERING 1 - param set DSHOT_CONFIG 600 +param set-default MPC_MANTHR_MIN 0 +param set-default MPC_MAN_TILT_MAX 60 - param set SYS_HAS_BARO 0 - param set SYS_HAS_MAG 0 +param set-default MOT_ORDERING 1 +param set-default DSHOT_CONFIG 600 - param set BAT_N_CELLS 2 -fi +param set-default SYS_HAS_BARO 0 +param set-default SYS_HAS_MAG 0 +param set-default BAT_N_CELLS 2 # The Whoop uses reversed props set MIXER quad_h set PWM_OUT 1234 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4050_generic_250 b/ROMFS/px4fmu_common/init.d/airframes/4050_generic_250 index 0cfe7ae48f..05a729616e 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4050_generic_250 +++ b/ROMFS/px4fmu_common/init.d/airframes/4050_generic_250 @@ -16,40 +16,38 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_ROLL_P 8 - param set MC_ROLLRATE_P 0.08 - param set MC_ROLLRATE_I 0.25 - param set MC_ROLLRATE_D 0.001 - param set MC_PITCH_P 8 - param set MC_PITCHRATE_P 0.08 - param set MC_PITCHRATE_I 0.25 - param set MC_PITCHRATE_D 0.001 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MC_ROLLRATE_MAX 1600 - param set MC_PITCHRATE_MAX 1600 - param set MC_YAWRATE_MAX 1000 +param set-default MC_ROLL_P 8 +param set-default MC_ROLLRATE_P 0.08 +param set-default MC_ROLLRATE_I 0.25 +param set-default MC_ROLLRATE_D 0.001 +param set-default MC_PITCH_P 8 +param set-default MC_PITCHRATE_P 0.08 +param set-default MC_PITCHRATE_I 0.25 +param set-default MC_PITCHRATE_D 0.001 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 - param set MPC_MANTHR_MIN 0 - param set MPC_MAN_TILT_MAX 60 +param set-default MC_ROLLRATE_MAX 1600 +param set-default MC_PITCHRATE_MAX 1600 +param set-default MC_YAWRATE_MAX 1000 - # use thrust curve factor (instead of TPA) - param set THR_MDL_FAC 0.3 +param set-default MPC_MANTHR_MIN 0 +param set-default MPC_MAN_TILT_MAX 60 - param set PWM_MAIN_MIN 1075 - # enable one-shot - param set PWM_MAIN_RATE 0 +# use thrust curve factor (instead of TPA) +param set-default THR_MDL_FAC 0.3 - # enable high-rate logging profile (helps with tuning) - param set SDLOG_PROFILE 19 +param set-default PWM_MAIN_MIN 1075 +# enable one-shot +param set-default PWM_MAIN_RATE 0 - param set IMU_DGYRO_CUTOFF 50 - param set IMU_GYRO_CUTOFF 90 +# enable high-rate logging profile (helps with tuning) +param set-default SDLOG_PROFILE 19 - param set CBRK_IO_SAFETY 22027 -fi +param set-default IMU_DGYRO_CUTOFF 50 +param set-default IMU_GYRO_CUTOFF 90 + +param set-default CBRK_IO_SAFETY 22027 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4051_s250aq b/ROMFS/px4fmu_common/init.d/airframes/4051_s250aq index 5b648850ba..5361c80358 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4051_s250aq +++ b/ROMFS/px4fmu_common/init.d/airframes/4051_s250aq @@ -28,32 +28,30 @@ set MAV_TYPE 2 set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set ATT_BIAS_MAX 0 - param set CBRK_IO_SAFETY 22027 +param set-default ATT_BIAS_MAX 0 - param set MC_ROLL_P 8 - param set MC_ROLLRATE_P 0.19 - param set MC_ROLLRATE_I 0.1 - param set MC_ROLLRATE_D 0.0055 - param set MC_PITCH_P 8 - param set MC_PITCHRATE_P 0.19 - param set MC_PITCHRATE_I 0.1 - param set MC_PITCHRATE_D 0.0055 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MC_ROLLRATE_MAX 720 - param set MC_PITCHRATE_MAX 720 - param set MC_YAWRATE_MAX 400 - param set MC_ACRO_R_MAX 360 - param set MC_ACRO_P_MAX 360 +param set-default CBRK_IO_SAFETY 22027 - param set MPC_THR_MIN 0.06 - param set MPC_MANTHR_MIN 0.06 +param set-default MC_ROLL_P 8 +param set-default MC_ROLLRATE_P 0.19 +param set-default MC_ROLLRATE_I 0.1 +param set-default MC_ROLLRATE_D 0.0055 +param set-default MC_PITCH_P 8 +param set-default MC_PITCHRATE_P 0.19 +param set-default MC_PITCHRATE_I 0.1 +param set-default MC_PITCHRATE_D 0.0055 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 +param set-default MC_ROLLRATE_MAX 720 +param set-default MC_PITCHRATE_MAX 720 +param set-default MC_YAWRATE_MAX 400 +param set-default MC_ACRO_R_MAX 360 +param set-default MC_ACRO_P_MAX 360 - param set PWM_MAIN_MIN 1075 -fi +param set-default MPC_THR_MIN 0.06 +param set-default MPC_MANTHR_MIN 0.06 + +param set-default PWM_MAIN_MIN 1075 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4052_holybro_qav250 b/ROMFS/px4fmu_common/init.d/airframes/4052_holybro_qav250 index e2b033f9b0..92cecf6e35 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4052_holybro_qav250 +++ b/ROMFS/px4fmu_common/init.d/airframes/4052_holybro_qav250 @@ -19,41 +19,38 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - # The set does not include a battery, but most people will probably use 4S - param set BAT_N_CELLS 4 - param set IMU_GYRO_CUTOFF 120 - param set IMU_DGYRO_CUTOFF 45 +# The set does not include a battery, but most people will probably use 4S +param set-default BAT_N_CELLS 4 - param set MC_AIRMODE 1 - param set MC_PITCHRATE_D 0.0012 - param set MC_PITCHRATE_I 0.35 - param set MC_PITCHRATE_MAX 1200 - param set MC_PITCHRATE_P 0.082 - param set MC_PITCH_P 8 - param set MC_ROLLRATE_D 0.0012 - param set MC_ROLLRATE_I 0.3 - param set MC_ROLLRATE_MAX 1200 - param set MC_ROLLRATE_P 0.076 - param set MC_ROLL_P 8 - param set MC_YAWRATE_I 0.3 - param set MC_YAWRATE_MAX 600 - param set MC_YAWRATE_P 0.25 - param set MC_YAW_P 4 +param set-default IMU_GYRO_CUTOFF 120 +param set-default IMU_DGYRO_CUTOFF 45 - param set MPC_MANTHR_MIN 0 - param set MPC_MAN_TILT_MAX 60 - param set MPC_THR_CURVE 1 - param set MPC_THR_HOVER 0.25 - param set MPC_THR_MIN 0.05 - param set MPC_Z_VEL_I_ACC 1.7 +param set-default MC_AIRMODE 1 +param set-default MC_PITCHRATE_D 0.0012 +param set-default MC_PITCHRATE_I 0.35 +param set-default MC_PITCHRATE_MAX 1200 +param set-default MC_PITCHRATE_P 0.082 +param set-default MC_PITCH_P 8 +param set-default MC_ROLLRATE_D 0.0012 +param set-default MC_ROLLRATE_I 0.3 +param set-default MC_ROLLRATE_MAX 1200 +param set-default MC_ROLLRATE_P 0.076 +param set-default MC_ROLL_P 8 +param set-default MC_YAWRATE_I 0.3 +param set-default MC_YAWRATE_MAX 600 +param set-default MC_YAWRATE_P 0.25 +param set-default MC_YAW_P 4 - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1050 +param set-default MPC_MANTHR_MIN 0 +param set-default MPC_MAN_TILT_MAX 60 +param set-default MPC_THR_CURVE 1 +param set-default MPC_THR_HOVER 0.25 +param set-default MPC_THR_MIN 0.05 +param set-default MPC_Z_VEL_I_ACC 1.7 - param set PWM_MAIN_RATE 0 - param set THR_MDL_FAC 0.3 -fi +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1050 +param set-default PWM_MAIN_RATE 0 +param set-default THR_MDL_FAC 0.3 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4053_holybro_kopis2 b/ROMFS/px4fmu_common/init.d/airframes/4053_holybro_kopis2 index 24510a8ffc..5ab7497021 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4053_holybro_kopis2 +++ b/ROMFS/px4fmu_common/init.d/airframes/4053_holybro_kopis2 @@ -19,49 +19,46 @@ set PWM_OUT 1234 set PARAM_DEFAULTS_VER 2 -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 4 - param set GPS_1_CONFIG 0 - param set RC_PORT_CONFIG 201 +param set-default BAT_N_CELLS 4 - param set IMU_GYRO_CUTOFF 80 - param set IMU_DGYRO_CUTOFF 50 - param set IMU_GYRO_RATEMAX 2000 +param set-default GPS_1_CONFIG 0 +param set-default RC_PORT_CONFIG 201 - param set MC_ROLLRATE_P 0.085 - param set MC_ROLLRATE_I 0.25 - param set MC_ROLLRATE_D 0.0008 - param set MC_ROLLRATE_MAX 1600 - param set MC_ROLL_P 10 +param set-default IMU_GYRO_CUTOFF 80 +param set-default IMU_DGYRO_CUTOFF 50 +param set-default IMU_GYRO_RATEMAX 2000 - param set MC_PITCHRATE_P 0.085 - param set MC_PITCHRATE_I 0.32 - param set MC_PITCHRATE_D 0.0008 - param set MC_PITCHRATE_MAX 1600 - param set MC_PITCH_P 10 +param set-default MC_ROLLRATE_P 0.085 +param set-default MC_ROLLRATE_I 0.25 +param set-default MC_ROLLRATE_D 0.0008 +param set-default MC_ROLLRATE_MAX 1600 +param set-default MC_ROLL_P 10 - param set MC_YAWRATE_MAX 1000 - param set MC_YAWRATE_P 0.15 - param set MC_YAW_P 4 +param set-default MC_PITCHRATE_P 0.085 +param set-default MC_PITCHRATE_I 0.32 +param set-default MC_PITCHRATE_D 0.0008 +param set-default MC_PITCHRATE_MAX 1600 +param set-default MC_PITCH_P 10 - param set MOT_ORDERING 1 - param set MPC_MANTHR_MIN 0 - param set MPC_MAN_TILT_MAX 60 +param set-default MC_YAWRATE_MAX 1000 +param set-default MC_YAWRATE_P 0.15 +param set-default MC_YAW_P 4 - param set DSHOT_CONFIG 1200 +param set-default MOT_ORDERING 1 +param set-default MPC_MANTHR_MIN 0 +param set-default MPC_MAN_TILT_MAX 60 - param set OSD_ATXXXX_CFG 1 - param set TEL_FRSKY_CONFIG 300 +param set-default DSHOT_CONFIG 1200 - param set THR_MDL_FAC 0.35 +param set-default OSD_ATXXXX_CFG 1 +param set-default TEL_FRSKY_CONFIG 300 - param set MPC_THR_CURVE 1 - param set MPC_THR_HOVER 0.12 +param set-default THR_MDL_FAC 0.35 - param set MC_AIRMODE 1 +param set-default MPC_THR_CURVE 1 +param set-default MPC_THR_HOVER 0.12 - param set EV_TSK_RC_LOSS 1 -fi +param set-default MC_AIRMODE 1 +param set-default EV_TSK_RC_LOSS 1 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4060_dji_matrice_100 b/ROMFS/px4fmu_common/init.d/airframes/4060_dji_matrice_100 index f240de6b8c..9e426e3010 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4060_dji_matrice_100 +++ b/ROMFS/px4fmu_common/init.d/airframes/4060_dji_matrice_100 @@ -17,21 +17,19 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 6 - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.05 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.001 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.05 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.001 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0 - param set MC_YAWRATE_D 0 +param set-default BAT_N_CELLS 6 - param set PWM_MAIN_MIN 1200 -fi +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.05 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.001 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.05 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.001 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0 +param set-default MC_YAWRATE_D 0 + +param set-default PWM_MAIN_MIN 1200 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4070_aerofc b/ROMFS/px4fmu_common/init.d/airframes/4070_aerofc index 9f3d4dbc85..ca2ec641c1 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4070_aerofc +++ b/ROMFS/px4fmu_common/init.d/airframes/4070_aerofc @@ -21,61 +21,59 @@ # # Load default params for this platform # -if [ $AUTOCNF = yes ] -then - # Set all params here, then disable autoconfig - param set EKF2_GPS_POS_X -0.06 - param set EKF2_GPS_POS_Z -0.1 - param set EKF2_MIN_OBS_DT 50 - param set EKF2_BARO_GATE 10 - param set EKF2_BARO_NOISE 5 - param set EKF2_ACC_NOISE 0.7 +# Set all params here, then disable autoconfig +param set-default EKF2_GPS_POS_X -0.06 +param set-default EKF2_GPS_POS_Z -0.1 +param set-default EKF2_MIN_OBS_DT 50 - param set LNDMC_Z_VEL_MAX 2 +param set-default EKF2_BARO_GATE 10 +param set-default EKF2_BARO_NOISE 5 +param set-default EKF2_ACC_NOISE 0.7 - param set MC_ROLL_P 8 - param set MC_ROLLRATE_P 0.13 - param set MC_ROLLRATE_I 0.07 - param set MC_ROLLRATE_D 0.0012 - param set MC_ROLLRATE_MAX 360 - param set MC_PITCH_P 8 - param set MC_PITCHRATE_P 0.13 - param set MC_PITCHRATE_I 0.07 - param set MC_PITCHRATE_D 0.0012 - param set MC_PITCHRATE_MAX 360 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.12 - param set MC_YAWRATE_I 0.05 - param set MC_YAWRATE_D 0 +param set-default LNDMC_Z_VEL_MAX 2 - param set MPC_LAND_SPEED 0.7 - param set MPC_MANTHR_MIN 0.04 - param set MPC_THR_HOVER 0.5 - param set MPC_THR_MAX 0.94 - param set MPC_THR_MIN 0.1 - param set MPC_XY_CRUISE 8 - param set MPC_XY_P 1.5 - param set MPC_XY_VEL_P_ACC 3 - param set MPC_Z_P 1.5 - param set MPC_Z_VEL_P_ACC 16 - param set MPC_Z_VEL_I_ACC 3 - param set MPC_Z_VEL_MAX_DN 4 - param set MPC_Z_VEL_MAX_UP 5 +param set-default MC_ROLL_P 8 +param set-default MC_ROLLRATE_P 0.13 +param set-default MC_ROLLRATE_I 0.07 +param set-default MC_ROLLRATE_D 0.0012 +param set-default MC_ROLLRATE_MAX 360 +param set-default MC_PITCH_P 8 +param set-default MC_PITCHRATE_P 0.13 +param set-default MC_PITCHRATE_I 0.07 +param set-default MC_PITCHRATE_D 0.0012 +param set-default MC_PITCHRATE_MAX 360 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.12 +param set-default MC_YAWRATE_I 0.05 +param set-default MC_YAWRATE_D 0 - # TELEM2 config - param set MAV_1_CONFIG 102 - param set MAV_1_RATE 80000 - param set MAV_1_FORWARD 1 - param set SER_TEL2_BAUD 921600 -fi +param set-default MPC_LAND_SPEED 0.7 +param set-default MPC_MANTHR_MIN 0.04 +param set-default MPC_THR_HOVER 0.5 +param set-default MPC_THR_MAX 0.94 +param set-default MPC_THR_MIN 0.1 +param set-default MPC_XY_CRUISE 8 +param set-default MPC_XY_P 1.5 +param set-default MPC_XY_VEL_P_ACC 3 +param set-default MPC_Z_P 1.5 +param set-default MPC_Z_VEL_P_ACC 16 +param set-default MPC_Z_VEL_I_ACC 3 +param set-default MPC_Z_VEL_MAX_DN 4 +param set-default MPC_Z_VEL_MAX_UP 5 + +# TELEM2 config +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_RATE 80000 +param set-default MAV_1_FORWARD 1 +param set-default SER_TEL2_BAUD 921600 if ! param greater SYS_HITL 0 then - tap_esc start -d /dev/ttyS0 -n 4 - usleep 300000 + tap_esc start -d /dev/ttyS0 -n 4 + usleep 300000 - set OUTPUT_MODE tap_esc + set OUTPUT_MODE tap_esc fi set MIXER quad_x diff --git a/ROMFS/px4fmu_common/init.d/airframes/4071_ifo b/ROMFS/px4fmu_common/init.d/airframes/4071_ifo index f6356d7d0f..ae7c1ea5ca 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4071_ifo +++ b/ROMFS/px4fmu_common/init.d/airframes/4071_ifo @@ -25,99 +25,97 @@ set VEHICLE_TYPE mc set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - # Attitude & rate gains - #param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - #param set MC_ROLLRATE_I 0.9 - param set MC_ROLLRATE_D 0.0013 - #param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.15 - #param set MC_PITCHRATE_I 1.1 - param set MC_PITCHRATE_D 0.0016 +# Attitude & rate gains +#param set MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +#param set MC_ROLLRATE_I 0.9 +param set-default MC_ROLLRATE_D 0.0013 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.2 - #param set MC_YAWRATE_I 0.15 - param set MC_YAWRATE_D 0 - param set MC_YAW_FF 0.5 +#param set MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.15 +#param set MC_PITCHRATE_I 1.1 +param set-default MC_PITCHRATE_D 0.0016 - #param set MC_ROLL_TC 0.19 - #param set MC_PITCH_TC 0.16 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.2 +#param set MC_YAWRATE_I 0.15 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAW_FF 0.5 - # Manual mode settings: Unleash Draco R's power :) - #param set MPC_MAN_TILT_MAX 70 - #param set MC_PITCHRATE_MAX 1600 - #param set MC_ROLLRATE_MAX 1600 - #param set MC_YAWRATE_MAX 700 - param set MPC_MANTHR_MAX 0.9 - param set MPC_MANTHR_MIN 0.08 - #param set MPC_MAN_TILT_MAX 35 - #param set MPC_TILTMAX_AIR 20 +#param set MC_ROLL_TC 0.19 +#param set MC_PITCH_TC 0.16 - # Filter settings - param set IMU_DGYRO_CUTOFF 90 - param set IMU_GYRO_CUTOFF 100 +# Manual mode settings: Unleash Draco R's power :) +#param set MPC_MAN_TILT_MAX 70 +#param set MC_PITCHRATE_MAX 1600 +#param set MC_ROLLRATE_MAX 1600 +#param set MC_YAWRATE_MAX 700 +param set-default MPC_MANTHR_MAX 0.9 +param set-default MPC_MANTHR_MIN 0.08 +#param set MPC_MAN_TILT_MAX 35 +#param set MPC_TILTMAX_AIR 20 - # Thrust curve (avoids the need for TPA) - #param set THR_MDL_FAC 0.25 +# Filter settings +param set-default IMU_DGYRO_CUTOFF 90 +param set-default IMU_GYRO_CUTOFF 100 - # System - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1100 - param set PWM_MAIN_RATE 0 +# Thrust curve (avoids the need for TPA) +#param set THR_MDL_FAC 0.25 - #param set SYS_FMU_TASK 1 - param set SENS_BOARD_ROT 10 +# System +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1100 +param set-default PWM_MAIN_RATE 0 - # EKF2 - param set EKF2_GND_EFF_DZ 6 - param set EKF2_HGT_MODE 1 +#param set SYS_FMU_TASK 1 +param set-default SENS_BOARD_ROT 10 - # Position control - param set MPC_Z_P 1 - param set MPC_Z_VEL_P_ACC 4 - param set MPC_Z_VEL_I_ACC 0.4 +# EKF2 +param set-default EKF2_GND_EFF_DZ 6 +param set-default EKF2_HGT_MODE 1 - param set MPC_THR_MIN 0.06 - param set MPC_THR_HOVER 0.3 +# Position control +param set-default MPC_Z_P 1 +param set-default MPC_Z_VEL_P_ACC 4 +param set-default MPC_Z_VEL_I_ACC 0.4 - param set MIS_TAKEOFF_ALT 1.1 - param set MPC_XY_P 1.7 - param set MPC_XY_VEL_P_ACC 2.6 - param set MPC_XY_VEL_I_ACC 1.2 - param set MPC_XY_VEL_D_ACC 0.2 - param set MPC_TKO_RAMP_T 1 - param set MPC_TKO_SPEED 1.1 - param set MPC_VEL_MANUAL 3 +param set-default MPC_THR_MIN 0.06 +param set-default MPC_THR_HOVER 0.3 - param set BAT_SOURCE 0 - param set BAT_N_CELLS 4 - param set BAT_V_DIV 10.14 - param set BAT_A_PER_V 18.18 - #param set CBRK_IO_SAFETY 22027 - param set COM_DISARM_LAND 2 +param set-default MIS_TAKEOFF_ALT 1.1 +param set-default MPC_XY_P 1.7 +param set-default MPC_XY_VEL_P_ACC 2.6 +param set-default MPC_XY_VEL_I_ACC 1.2 +param set-default MPC_XY_VEL_D_ACC 0.2 +param set-default MPC_TKO_RAMP_T 1 +param set-default MPC_TKO_SPEED 1.1 +param set-default MPC_VEL_MANUAL 3 - # Filter settings - param set IMU_GYRO_CUTOFF 90 - param set IMU_DGYRO_CUTOFF 70 +param set-default BAT_SOURCE 0 +param set-default BAT_N_CELLS 4 +param set-default BAT_V_DIV 10.14 +param set-default BAT_A_PER_V 18.18 +#param set CBRK_IO_SAFETY 22027 +param set-default COM_DISARM_LAND 2 - # Don't try to be intelligent on RC loss: just cut the motors - param set NAV_RCL_ACT 6 +# Filter settings +param set-default IMU_GYRO_CUTOFF 90 +param set-default IMU_DGYRO_CUTOFF 70 - # enable to use high-rate logging for better rate tracking analysis - # param set SDLOG_PROFILE 19 +# Don't try to be intelligent on RC loss: just cut the motors +param set-default NAV_RCL_ACT 6 - # TELEM1 ttyS1 - Wifi module - param set MAV_0_CONFIG 101 - param set MAV_0_RATE 0 - param set MAV_0_MODE 2 # onboard - param set SER_TEL1_BAUD 921600 +# enable to use high-rate logging for better rate tracking analysis +# param set SDLOG_PROFILE 19 - # TELEM2 ttyS2 - Sub 1-Ghz - param set MAV_1_CONFIG 102 - param set MAV_1_MODE 0 # normal - param set SER_TEL2_BAUD 57600 -fi +# TELEM1 ttyS1 - Wifi module +param set-default MAV_0_CONFIG 101 +param set-default MAV_0_RATE 0 +param set-default MAV_0_MODE 2 # onboard +param set-default SER_TEL1_BAUD 921600 + +# TELEM2 ttyS2 - Sub 1-Ghz +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_MODE 0 # normal +param set-default SER_TEL2_BAUD 57600 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4072_draco b/ROMFS/px4fmu_common/init.d/airframes/4072_draco index 8a8def2c0b..975d0c545c 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4072_draco +++ b/ROMFS/px4fmu_common/init.d/airframes/4072_draco @@ -26,75 +26,73 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - # use the Q attitude estimator, it works w/o mag or GPS. - param set SYS_MC_EST_GROUP 3 - param set ATT_ACC_COMP 0 - param set ATT_W_ACC 0.4 - param set ATT_W_GYRO_BIAS 0 - param set SYS_HAS_MAG 0 - # Attitude & rate gains - param set MC_ROLL_P 8.0 - param set MC_ROLLRATE_P 0.11 - param set MC_ROLLRATE_I 0.3 - param set MC_ROLLRATE_D 0.0015 - param set MC_ROLLRATE_MAX 1600 +# use the Q attitude estimator, it works w/o mag or GPS. +param set-default SYS_MC_EST_GROUP 3 +param set-default ATT_ACC_COMP 0 +param set-default ATT_W_ACC 0.4 +param set-default ATT_W_GYRO_BIAS 0 +param set-default SYS_HAS_MAG 0 - param set MC_PITCH_P 8 - param set MC_PITCHRATE_P 0.13 - param set MC_PITCHRATE_I 0.35 - param set MC_PITCHRATE_D 0.0015 - param set MC_PITCHRATE_MAX 1600 +# Attitude & rate gains +param set-default MC_ROLL_P 8.0 +param set-default MC_ROLLRATE_P 0.11 +param set-default MC_ROLLRATE_I 0.3 +param set-default MC_ROLLRATE_D 0.0015 +param set-default MC_ROLLRATE_MAX 1600 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.21 - param set MC_YAWRATE_I 0.3 - param set MC_YAWRATE_D 0.0 - param set MC_YAW_FF 0.5 - param set MC_YAWRATE_MAX 600 +param set-default MC_PITCH_P 8 +param set-default MC_PITCHRATE_P 0.13 +param set-default MC_PITCHRATE_I 0.35 +param set-default MC_PITCHRATE_D 0.0015 +param set-default MC_PITCHRATE_MAX 1600 - param set MC_ROLL_TC 0.19 - param set MC_PITCH_TC 0.16 - param set MC_AIRMODE 1 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.21 +param set-default MC_YAWRATE_I 0.3 +param set-default MC_YAWRATE_D 0.0 +param set-default MC_YAW_FF 0.5 +param set-default MC_YAWRATE_MAX 600 - param set MPC_MAN_TILT_MAX 60 - param set MPC_THR_CURVE 1 - param set MPC_THR_HOVER 0.25 +param set-default MC_ROLL_TC 0.19 +param set-default MC_PITCH_TC 0.16 +param set-default MC_AIRMODE 1 - # Thrust curve (avoids the need for TPA) - param set THR_MDL_FAC 0.3 +param set-default MPC_MAN_TILT_MAX 60 +param set-default MPC_THR_CURVE 1 +param set-default MPC_THR_HOVER 0.25 - # System - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1180 +# Thrust curve (avoids the need for TPA) +param set-default THR_MDL_FAC 0.3 - # enable one-shot - param set PWM_MAIN_RATE 0 +# System +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1180 - param set SENS_BOARD_ROT 2 +# enable one-shot +param set-default PWM_MAIN_RATE 0 - param set BAT_SOURCE 0 - param set CBRK_IO_SAFETY 22027 - #param set COM_DISARM_LAND 3 +param set-default SENS_BOARD_ROT 2 - # Filter settings - param set IMU_GYRO_CUTOFF 90 - param set IMU_DGYRO_CUTOFF 100 +param set-default BAT_SOURCE 0 +param set-default CBRK_IO_SAFETY 22027 +#param set COM_DISARM_LAND 3 - # Don't try to be intelligent on RC loss: just cut the motors - #param set NAV_RCL_ACT 6 +# Filter settings +param set-default IMU_GYRO_CUTOFF 90 +param set-default IMU_DGYRO_CUTOFF 100 - # enable to use high-rate logging for better rate tracking analysis - param set SDLOG_PROFILE 27 +# Don't try to be intelligent on RC loss: just cut the motors +#param set NAV_RCL_ACT 6 - # TELEM1 ttyS1 - #param set MAV_0_CONFIG 101 - #param set MAV_0_MODE 2 # onboard - #param set MAV_0_RATE 20000 - #param set SER_TEL1_BAUD 921600 +# enable to use high-rate logging for better rate tracking analysis +param set-default SDLOG_PROFILE 27 - # TELEM2 ttyS2 - #param set MAV_1_CONFIG 0 -fi +# TELEM1 ttyS1 +#param set MAV_0_CONFIG 101 +#param set MAV_0_MODE 2 # onboard +#param set MAV_0_RATE 20000 +#param set SER_TEL1_BAUD 921600 + +# TELEM2 ttyS2 +#param set MAV_1_CONFIG 0 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s b/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s index e2f4ce70b7..56f9d390c1 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s +++ b/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s @@ -24,119 +24,117 @@ set VEHICLE_TYPE mc set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - # Attitude & rate gains - #param set MC_ROLL_P 7 - param set MC_ROLLRATE_P 0.15 - #param set MC_ROLLRATE_I 0.9 - param set MC_ROLLRATE_D 0.0013 - #param set MC_PITCH_P 7 - param set MC_PITCHRATE_P 0.15 - #param set MC_PITCHRATE_I 1.1 - param set MC_PITCHRATE_D 0.0016 +# Attitude & rate gains +#param set MC_ROLL_P 7 +param set-default MC_ROLLRATE_P 0.15 +#param set MC_ROLLRATE_I 0.9 +param set-default MC_ROLLRATE_D 0.0013 - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.2 - #param set MC_YAWRATE_I 0.15 - param set MC_YAWRATE_D 0 +#param set MC_PITCH_P 7 +param set-default MC_PITCHRATE_P 0.15 +#param set MC_PITCHRATE_I 1.1 +param set-default MC_PITCHRATE_D 0.0016 - #param set MC_ROLL_TC 0.19 - #param set MC_PITCH_TC 0.16 +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.2 +#param set MC_YAWRATE_I 0.15 +param set-default MC_YAWRATE_D 0 - # Manual mode settings: Unleash Draco R's power :) - #param set MPC_MAN_TILT_MAX 70 - #param set MC_PITCHRATE_MAX 1600 - #param set MC_ROLLRATE_MAX 1600 - #param set MC_YAWRATE_MAX 700 - param set MPC_MANTHR_MIN 0.08 - #param set MPC_MAN_TILT_MAX 35 - #param set MPC_TILTMAX_AIR 20 +#param set MC_ROLL_TC 0.19 +#param set MC_PITCH_TC 0.16 - # Filter settings - param set IMU_GYRO_CUTOFF 100 +# Manual mode settings: Unleash Draco R's power :) +#param set MPC_MAN_TILT_MAX 70 +#param set MC_PITCHRATE_MAX 1600 +#param set MC_ROLLRATE_MAX 1600 +#param set MC_YAWRATE_MAX 700 +param set-default MPC_MANTHR_MIN 0.08 +#param set MPC_MAN_TILT_MAX 35 +#param set MPC_TILTMAX_AIR 20 - # Thrust curve (avoids the need for TPA) - #param set THR_MDL_FAC 0.25 +# Filter settings +param set-default IMU_GYRO_CUTOFF 100 - # Obsolete - #param set PWM_MAIN_MAX 1950 - #param set PWM_MAIN_MIN 1100 - #param set PWM_MAIN_RATE 0 +# Thrust curve (avoids the need for TPA) +#param set THR_MDL_FAC 0.25 - # Sensors - param set SENS_BOARD_ROT 10 - # Yaw 180 - param set SENS_FLOW_ROT 4 - # TFMini on TELEM3 - param set SENS_TFMINI_CFG 103 +# Obsolete +#param set PWM_MAIN_MAX 1950 +#param set PWM_MAIN_MIN 1100 +#param set PWM_MAIN_RATE 0 - # Smart Battery - param set SENS_EN_BATT 1 +# Sensors +param set-default SENS_BOARD_ROT 10 +# Yaw 180 +param set-default SENS_FLOW_ROT 4 +# TFMini on TELEM3 +param set-default SENS_TFMINI_CFG 103 - # EKF2 - param set EKF2_AID_MASK 3 - param set EKF2_GND_EFF_DZ 6 - param set EKF2_HGT_MODE 1 - param set EKF2_MIN_RNG 0.3 - param set EKF2_RNG_AID 1 +# Smart Battery +param set-default SENS_EN_BATT 1 - # Flow - param set EKF2_OF_QMIN 70 +# EKF2 +param set-default EKF2_AID_MASK 3 +param set-default EKF2_GND_EFF_DZ 6 +param set-default EKF2_HGT_MODE 1 +param set-default EKF2_MIN_RNG 0.3 +param set-default EKF2_RNG_AID 1 - # Position control - param set MPC_Z_P 1.1 - param set MPC_Z_VEL_P_ACC 6 - param set MPC_Z_VEL_I_ACC 1 +# Flow +param set-default EKF2_OF_QMIN 70 - param set MPC_THR_MIN 0.06 - param set MPC_THR_HOVER 0.44 +# Position control +param set-default MPC_Z_P 1.1 +param set-default MPC_Z_VEL_P_ACC 6 +param set-default MPC_Z_VEL_I_ACC 1 - param set MIS_TAKEOFF_ALT 1.1 - param set MPC_XY_P 1.7 - param set MPC_XY_VEL_P_ACC 2.6 - param set MPC_XY_VEL_I_ACC 1.2 - param set MPC_XY_VEL_D_ACC 0.2 - param set MPC_TKO_RAMP_T 1 - param set MPC_TKO_SPEED 1.1 - param set MPC_VEL_MANUAL 3 +param set-default MPC_THR_MIN 0.06 +param set-default MPC_THR_HOVER 0.44 - param set BAT_SOURCE 0 - param set BAT_N_CELLS 4 - param set BAT_V_DIV 10.14 - param set BAT_A_PER_V 18.18 - #param set CBRK_IO_SAFETY 22027 - param set COM_DISARM_LAND 2 +param set-default MIS_TAKEOFF_ALT 1.1 +param set-default MPC_XY_P 1.7 +param set-default MPC_XY_VEL_P_ACC 2.6 +param set-default MPC_XY_VEL_I_ACC 1.2 +param set-default MPC_XY_VEL_D_ACC 0.2 +param set-default MPC_TKO_RAMP_T 1 +param set-default MPC_TKO_SPEED 1.1 +param set-default MPC_VEL_MANUAL 3 - # Filter settings - param set IMU_GYRO_CUTOFF 90 +param set-default BAT_SOURCE 0 +param set-default BAT_N_CELLS 4 +param set-default BAT_V_DIV 10.14 +param set-default BAT_A_PER_V 18.18 +#param set CBRK_IO_SAFETY 22027 +param set-default COM_DISARM_LAND 2 - # Don't try to be intelligent on RC loss: just cut the motors - param set NAV_RCL_ACT 6 +# Filter settings +param set-default IMU_GYRO_CUTOFF 90 - # enable to use high-rate logging for better rate tracking analysis - # param set SDLOG_PROFILE 19 +# Don't try to be intelligent on RC loss: just cut the motors +param set-default NAV_RCL_ACT 6 - # TELEM1 ttyS1 - Wifi module - param set MAV_0_CONFIG 101 - param set MAV_0_RATE 0 - param set MAV_0_MODE 2 # onboard - param set SER_TEL1_BAUD 921600 +# enable to use high-rate logging for better rate tracking analysis +# param set SDLOG_PROFILE 19 - # TELEM2 ttyS2 - Sub 1-Ghz - param set MAV_1_CONFIG 102 - param set MAV_1_MODE 0 # normal - param set SER_TEL2_BAUD 57600 +# TELEM1 ttyS1 - Wifi module +param set-default MAV_0_CONFIG 101 +param set-default MAV_0_RATE 0 +param set-default MAV_0_MODE 2 # onboard +param set-default SER_TEL1_BAUD 921600 - # DSHOT - param set DSHOT_CONFIG 600 +# TELEM2 ttyS2 - Sub 1-Ghz +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_MODE 0 # normal +param set-default SER_TEL2_BAUD 57600 - # EKF OF POSITION - param set EKF2_OF_POS_X 0.06 - param set EKF2_OF_POS_Y 0.03 - param set EKF2_OF_POS_Z -0.07 +# DSHOT +param set-default DSHOT_CONFIG 600 - # Failsafe - param set COM_LOW_BAT_ACT 3 -fi +# EKF OF POSITION +param set-default EKF2_OF_POS_X 0.06 +param set-default EKF2_OF_POS_Y 0.03 +param set-default EKF2_OF_POS_Z -0.07 + +# Failsafe +param set-default COM_LOW_BAT_ACT 3 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4080_zmr250 b/ROMFS/px4fmu_common/init.d/airframes/4080_zmr250 index 771f0489d1..70f970b294 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4080_zmr250 +++ b/ROMFS/px4fmu_common/init.d/airframes/4080_zmr250 @@ -17,32 +17,30 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set CBRK_IO_SAFETY 22027 - param set MC_ROLL_P 2.2 - param set MC_ROLLRATE_P 0.06 - param set MC_ROLLRATE_I 0.2 - param set MC_ROLLRATE_D 0.0017 +param set-default CBRK_IO_SAFETY 22027 - param set MC_PITCH_P 2.2 - param set MC_PITCHRATE_P 0.06 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_D 0.0017 +param set-default MC_ROLL_P 2.2 +param set-default MC_ROLLRATE_P 0.06 +param set-default MC_ROLLRATE_I 0.2 +param set-default MC_ROLLRATE_D 0.0017 - param set MC_YAW_P 1 - param set MC_YAWRATE_P 0.15 - param set MC_YAWRATE_I 0.2 - param set MC_YAWRATE_D 0 +param set-default MC_PITCH_P 2.2 +param set-default MC_PITCHRATE_P 0.06 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_D 0.0017 - param set MC_ACRO_R_MAX 1000 - param set MC_ACRO_P_MAX 1000 - param set MC_ACRO_Y_MAX 1000 +param set-default MC_YAW_P 1 +param set-default MC_YAWRATE_P 0.15 +param set-default MC_YAWRATE_I 0.2 +param set-default MC_YAWRATE_D 0 - # param set NAV_RCL_ACT 6 # Lockdown +param set-default MC_ACRO_R_MAX 1000 +param set-default MC_ACRO_P_MAX 1000 +param set-default MC_ACRO_Y_MAX 1000 - param set PWM_MAIN_MIN 1075 - param set PWM_MAIN_RATE 400 - param set PWM_MAIN_DISARM 900 -fi +# param set NAV_RCL_ACT 6 # Lockdown + +param set-default PWM_MAIN_MIN 1075 +param set-default PWM_MAIN_RATE 400 +param set-default PWM_MAIN_DISARM 900 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4090_nanomind b/ROMFS/px4fmu_common/init.d/airframes/4090_nanomind index e5947e78cc..4448cf6cab 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4090_nanomind +++ b/ROMFS/px4fmu_common/init.d/airframes/4090_nanomind @@ -21,24 +21,22 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 1 - param set MC_ROLL_P 8 - param set MC_ROLLRATE_P 0.19 - param set MC_ROLLRATE_I 0.1 - param set MC_ROLLRATE_D 0.0055 - param set MC_PITCH_P 8 - param set MC_PITCHRATE_P 0.19 - param set MC_PITCHRATE_I 0.1 - param set MC_PITCHRATE_D 0.0055 - param set MC_YAW_P 4 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 +param set-default BAT_N_CELLS 1 - param set PWM_MAIN_DISARM 0 - param set PWM_MAIN_MIN 500 - param set PWM_MAIN_MAX 2200 -fi +param set-default MC_ROLL_P 8 +param set-default MC_ROLLRATE_P 0.19 +param set-default MC_ROLLRATE_I 0.1 +param set-default MC_ROLLRATE_D 0.0055 +param set-default MC_PITCH_P 8 +param set-default MC_PITCHRATE_P 0.19 +param set-default MC_PITCHRATE_I 0.1 +param set-default MC_PITCHRATE_D 0.0055 +param set-default MC_YAW_P 4 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 + +param set-default PWM_MAIN_DISARM 0 +param set-default PWM_MAIN_MIN 500 +param set-default PWM_MAIN_MAX 2200 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4250_teal b/ROMFS/px4fmu_common/init.d/airframes/4250_teal index a84d950a84..efe879ff2e 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4250_teal +++ b/ROMFS/px4fmu_common/init.d/airframes/4250_teal @@ -28,169 +28,166 @@ echo "Executing 4250_teal script." set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - # First thing, reset all params to default... EXCEPT THIS LIST - param reset_all SYS_AUTOSTART SYS_AUTOCONFIG RC* COM_FLTMODE* LND_FLIGHT_T_* TC_* CAL_ACC* CAL_GYRO* CAL_MAG* SENS_BOARD* EKF2_MAGBIAS* - # battery - param set BAT_CAPACITY 2750 - param set BAT_CRIT_THR 0.15 - param set BAT_EMERGEN_THR 0.075 - param set BAT_LOW_THR 0.20 - param set BAT_N_CELLS 4 - param set BAT_R_INTERNAL 0.06 - param set BAT_SOURCE 1 - param set BAT_V_CHARGED 4.15 - param set BAT_V_DIV 11.1625 - param set BAT_V_EMPTY 3.65 - param set BAT_V_OFFS_CURR -0.0045 +# First thing, reset all params to default... EXCEPT THIS LIST +param reset_all SYS_AUTOSTART SYS_AUTOCONFIG RC* COM_FLTMODE* LND_FLIGHT_T_* TC_* CAL_ACC* CAL_GYRO* CAL_MAG* SENS_BOARD* EKF2_MAGBIAS* - # sensor calibration - param set CAL_MAG_SIDES 63 - param set SENS_BOARD_ROT 0 +# battery +param set-default BAT_CAPACITY 2750 +param set-default BAT_CRIT_THR 0.15 +param set-default BAT_EMERGEN_THR 0.075 +param set-default BAT_LOW_THR 0.20 +param set-default BAT_N_CELLS 4 +param set-default BAT_R_INTERNAL 0.06 +param set-default BAT_SOURCE 1 +param set-default BAT_V_CHARGED 4.15 +param set-default BAT_V_DIV 11.1625 +param set-default BAT_V_EMPTY 3.65 +param set-default BAT_V_OFFS_CURR -0.0045 - # circuit breakers - param set CBRK_IO_SAFETY 22027 - param set CBRK_USB_CHK 197848 +# sensor calibration +param set-default CAL_MAG_SIDES 63 +param set-default SENS_BOARD_ROT 0 - # commander - param set COM_DISARM_LAND 0.1 - # Return mode at critically low level, Land mode at current position if reaching dangerously low levels. - param set COM_LOW_BAT_ACT 3 +# circuit breakers +param set-default CBRK_IO_SAFETY 22027 +param set-default CBRK_USB_CHK 197848 - # ekf2 - param set EKF2_AID_MASK 1 - param set EKF2_MAG_TYPE 1 - param set EKF2_GPS_CHECK 511 - param set EKF2_GPS_POS_X -0.04 - param set EKF2_IMU_POS_X -0.06 - param set EKF2_PCOEF_XN 0.1 - param set EKF2_PCOEF_XP -0.5 - param set EKF2_RNG_AID 1 - param set EKF2_RNG_A_VMAX 20 - param set EKF2_RNG_NOISE 0.2 - param set EKF2_MIN_RNG 0.07 +# commander +param set-default COM_DISARM_LAND 0.1 +# Return mode at critically low level, Land mode at current position if reaching dangerously low levels. +param set-default COM_LOW_BAT_ACT 3 - # gps - param set GPS_UBX_DYNMODEL 7 +# ekf2 +param set-default EKF2_AID_MASK 1 +param set-default EKF2_MAG_TYPE 1 +param set-default EKF2_GPS_CHECK 511 +param set-default EKF2_GPS_POS_X -0.04 +param set-default EKF2_IMU_POS_X -0.06 +param set-default EKF2_PCOEF_XN 0.1 +param set-default EKF2_PCOEF_XP -0.5 +param set-default EKF2_RNG_AID 1 +param set-default EKF2_RNG_A_VMAX 20 +param set-default EKF2_RNG_NOISE 0.2 +param set-default EKF2_MIN_RNG 0.07 - # geofence - # Geofence violation action -- Warning. - param set GF_ACTION 1 +# gps +param set-default GPS_UBX_DYNMODEL 7 - # land detector - param set LNDMC_XY_VEL_MAX 1 - # This is set high because we have lots of vibrations while in contact with ground. - param set LNDMC_ROT_MAX 50 +# geofence +# Geofence violation action -- Warning. +param set-default GF_ACTION 1 - # serial comms - param set SER_TEL1_BAUD 921600 - param set SER_TEL2_BAUD 921600 +# land detector +param set-default LNDMC_XY_VEL_MAX 1 +# This is set high because we have lots of vibrations while in contact with ground. +param set-default LNDMC_ROT_MAX 50 - # mavlink stream configuration - # TEL1 ttyS1 -- disabled. TX1 FTDI UART has issues. - param set MAV_0_CONFIG 0 - param set MAV_0_RATE 800000 +# serial comms +param set-default SER_TEL1_BAUD 921600 +param set-default SER_TEL2_BAUD 921600 - # TEL2 ttyS2 -- Primary MAVLINK stream to companion computer. - param set MAV_1_CONFIG 102 - param set MAV_1_RATE 800000 +# mavlink stream configuration +# TEL1 ttyS1 -- disabled. TX1 FTDI UART has issues. +param set-default MAV_0_CONFIG 0 +param set-default MAV_0_RATE 800000 - # mc_att_control - param set MC_ACRO_P_MAX 360 - param set MC_ACRO_R_MAX 360 - param set MC_ACRO_Y_MAX 360 +# TEL2 ttyS2 -- Primary MAVLINK stream to companion computer. +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_RATE 800000 - param set MC_ROLL_P 6 - param set MC_ROLLRATE_P 0.055 - param set MC_ROLLRATE_I 0.2 - param set MC_ROLLRATE_D 0.0012 - param set MC_ROLLRATE_MAX 180 +# mc_att_control +param set-default MC_ACRO_P_MAX 360 +param set-default MC_ACRO_R_MAX 360 +param set-default MC_ACRO_Y_MAX 360 - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.06 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_D 0.0012 - param set MC_PITCHRATE_MAX 180 +param set-default MC_ROLL_P 6 +param set-default MC_ROLLRATE_P 0.055 +param set-default MC_ROLLRATE_I 0.2 +param set-default MC_ROLLRATE_D 0.0012 +param set-default MC_ROLLRATE_MAX 180 - param set MC_YAW_P 1 - param set MC_YAWRATE_P 0.08 - param set MC_YAWRATE_I 0.08 - param set MC_YAWRATE_D 0 - param set MC_YAWRATE_MAX 180 +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.06 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_D 0.0012 +param set-default MC_PITCHRATE_MAX 180 - # Set to reduce voltage transients as seen by battery management system. - param set MOT_SLEW_MAX 0.15 +param set-default MC_YAW_P 1 +param set-default MC_YAWRATE_P 0.08 +param set-default MC_YAWRATE_I 0.08 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAWRATE_MAX 180 - #### CONTROLLER ### - param set MPC_LAND_ALT1 8 - param set MPC_LAND_ALT2 5 - param set MPC_TKO_RAMP_T 0.75 - param set MPC_TKO_SPEED 0.75 - param set MPC_TILTMAX_LND 18 - param set MPC_TILTMAX_AIR 45 - param set MPC_MAN_TILT_MAX 45 +# Set to reduce voltage transients as seen by battery management system. +param set-default MOT_SLEW_MAX 0.15 - param set MPC_MANTHR_MAX 0.85 - param set MPC_MANTHR_MIN 0.15 - # Full throttle can trip over current protection on BMS. - param set MPC_THR_MAX 0.85 - param set MPC_THR_MIN 0.15 +#### CONTROLLER ### +param set-default MPC_LAND_ALT1 8 +param set-default MPC_LAND_ALT2 5 +param set-default MPC_TKO_RAMP_T 0.75 +param set-default MPC_TKO_SPEED 0.75 +param set-default MPC_TILTMAX_LND 18 +param set-default MPC_TILTMAX_AIR 45 +param set-default MPC_MAN_TILT_MAX 45 - param set MPC_VEL_MANUAL 26.5 - # RTL speed, it was too fast and scaring people. - param set MPC_XY_CRUISE 15 +param set-default MPC_MANTHR_MAX 0.85 +param set-default MPC_MANTHR_MIN 0.15 +# Full throttle can trip over current protection on BMS. +param set-default MPC_THR_MAX 0.85 +param set-default MPC_THR_MIN 0.15 - param set MPC_MAN_Y_MAX 200 +param set-default MPC_VEL_MANUAL 26.5 +# RTL speed, it was too fast and scaring people. +param set-default MPC_XY_CRUISE 15 - param set MPC_JERK_MAX 5 - param set MPC_ACC_UP_MAX 10 - param set MPC_ACC_DOWN_MAX 10 - param set MPC_ACC_HOR 10 - param set MPC_ACC_HOR_MAX 15 +param set-default MPC_MAN_Y_MAX 200 - param set MPC_XY_P 1.15 - param set MPC_XY_VEL_P_ACC 2.8 - param set MPC_XY_VEL_I_ACC 0.28 - param set MPC_XY_VEL_D_ACC 0.28 - param set MPC_XY_VEL_MAX 26.5 +param set-default MPC_JERK_MAX 5 +param set-default MPC_ACC_UP_MAX 10 +param set-default MPC_ACC_DOWN_MAX 10 +param set-default MPC_ACC_HOR 10 +param set-default MPC_ACC_HOR_MAX 15 - param set MPC_Z_P 0.85 - param set MPC_Z_VEL_P_ACC 5 - param set MPC_Z_VEL_I_ACC 1.7 - param set MPC_Z_VEL_D_ACC 0.4 - # Documentation says limit is 8.0, but does not seem to be enforced in code. - param set MPC_Z_VEL_MAX_UP 20 - param set MPC_Z_VEL_MAX_DN 2.5 - #### CONTROLLER ### +param set-default MPC_XY_P 1.15 +param set-default MPC_XY_VEL_P_ACC 2.8 +param set-default MPC_XY_VEL_I_ACC 0.28 +param set-default MPC_XY_VEL_D_ACC 0.28 +param set-default MPC_XY_VEL_MAX 26.5 - # navigator - param set NAV_ACC_RAD 2.5 - # RC loss failsafe behavior -- hold mode. - param set NAV_RCL_ACT 1 +param set-default MPC_Z_P 0.85 +param set-default MPC_Z_VEL_P_ACC 5 +param set-default MPC_Z_VEL_I_ACC 1.7 +param set-default MPC_Z_VEL_D_ACC 0.4 +# Documentation says limit is 8.0, but does not seem to be enforced in code. +param set-default MPC_Z_VEL_MAX_UP 20 +param set-default MPC_Z_VEL_MAX_DN 2.5 +#### CONTROLLER ### - # pwm control - param set PWM_MAIN_DISARM 900 - param set PWM_MAIN_MAX 1850 - param set PWM_MAIN_MIN 1075 - # Oneshot125 - param set PWM_MAIN_RATE 0 +# navigator +param set-default NAV_ACC_RAD 2.5 +# RC loss failsafe behavior -- hold mode. +param set-default NAV_RCL_ACT 1 - # rtl - param set RTL_DESCEND_ALT 5 - param set RTL_LAND_DELAY 5 - param set RTL_MIN_DIST 7.5 - param set RTL_RETURN_ALT 25 +# pwm control +param set-default PWM_MAIN_DISARM 900 +param set-default PWM_MAIN_MAX 1850 +param set-default PWM_MAIN_MIN 1075 +# Oneshot125 +param set-default PWM_MAIN_RATE 0 - # calibration - param set CAL_ACC0_PRIO 255 - param set CAL_ACC1_PRIO 0 +# rtl +param set-default RTL_DESCEND_ALT 5 +param set-default RTL_LAND_DELAY 5 +param set-default RTL_MIN_DIST 7.5 +param set-default RTL_RETURN_ALT 25 - param set CAL_GYRO0_PRIO 255 - param set CAL_GYRO1_PRIO 0 -fi +# calibration +param set-default CAL_ACC0_PRIO 255 +param set-default CAL_ACC1_PRIO 0 +param set-default CAL_GYRO0_PRIO 255 +param set-default CAL_GYRO1_PRIO 0 # Logger mode. Default(1) + estimator replay(2) + thermal calibration(4) param set SDLOG_PROFILE 6 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4500_clover4 b/ROMFS/px4fmu_common/init.d/airframes/4500_clover4 index 3afaafdfac..1e9d6273e8 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4500_clover4 +++ b/ROMFS/px4fmu_common/init.d/airframes/4500_clover4 @@ -17,19 +17,17 @@ set MIXER quad_x set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set MC_PITCHRATE_P 0.087 - param set MC_PITCHRATE_I 0.037 - param set MC_PITCHRATE_D 0.0044 - param set MC_PITCH_P 8.5 - param set MC_ROLLRATE_P 0.087 - param set MC_ROLLRATE_I 0.037 - param set MC_ROLLRATE_D 0.0044 - param set MC_ROLL_P 8.5 - param set MPC_XY_VEL_P_ACC 2.2 - param set MPC_XY_VEL_D_ACC 0.26 - param set MPC_XY_P 1.1 - param set MPC_Z_VEL_P_ACC 4.8 - param set MPC_Z_P 1.2 -fi + +param set-default MC_PITCHRATE_P 0.087 +param set-default MC_PITCHRATE_I 0.037 +param set-default MC_PITCHRATE_D 0.0044 +param set-default MC_PITCH_P 8.5 +param set-default MC_ROLLRATE_P 0.087 +param set-default MC_ROLLRATE_I 0.037 +param set-default MC_ROLLRATE_D 0.0044 +param set-default MC_ROLL_P 8.5 +param set-default MPC_XY_VEL_P_ACC 2.2 +param set-default MPC_XY_VEL_D_ACC 0.26 +param set-default MPC_XY_P 1.1 +param set-default MPC_Z_VEL_P_ACC 4.8 +param set-default MPC_Z_P 1.2 diff --git a/ROMFS/px4fmu_common/init.d/airframes/4900_crazyflie b/ROMFS/px4fmu_common/init.d/airframes/4900_crazyflie index 57dc6d7848..b912c8ded3 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4900_crazyflie +++ b/ROMFS/px4fmu_common/init.d/airframes/4900_crazyflie @@ -19,59 +19,56 @@ set MIXER quad_x_cw set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 1 - param set BAT_CAPACITY 240 - param set BAT_SOURCE 1 - param set CBRK_SUPPLY_CHK 894281 - param set CBRK_USB_CHK 197848 - param set COM_RC_IN_MODE 1 +param set-default BAT_N_CELLS 1 +param set-default BAT_CAPACITY 240 +param set-default BAT_SOURCE 1 - param set EKF2_ABL_LIM 2 - param set EKF2_AID_MASK 3 - param set EKF2_HGT_MODE 2 - param set EKF2_MAG_TYPE 1 - param set EKF2_OF_DELAY 10 +param set-default CBRK_SUPPLY_CHK 894281 +param set-default CBRK_USB_CHK 197848 +param set-default COM_RC_IN_MODE 1 - param set IMU_GYRO_CUTOFF 100 - param set IMU_ACCEL_CUTOFF 30 +param set-default EKF2_ABL_LIM 2 +param set-default EKF2_AID_MASK 3 +param set-default EKF2_HGT_MODE 2 +param set-default EKF2_MAG_TYPE 1 +param set-default EKF2_OF_DELAY 10 - param set MC_AIRMODE 1 - param set IMU_DGYRO_CUTOFF 70 - param set MC_PITCHRATE_D 0.002 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_P 0.07 - param set MC_PITCH_P 6.5 - param set MC_ROLLRATE_D 0.002 - param set MC_ROLLRATE_I 0.2 - param set MC_ROLLRATE_P 0.07 - param set MC_ROLL_P 6.5 - param set MC_YAW_P 3 +param set-default IMU_GYRO_CUTOFF 100 +param set-default IMU_ACCEL_CUTOFF 30 - param set MPC_THR_HOVER 0.7 - param set MPC_THR_MAX 1 - param set MPC_Z_P 1.5 - param set MPC_Z_VEL_P_ACC 8 - param set MPC_Z_VEL_I_ACC 6 - param set MPC_HOLD_MAX_XY 0.1 - param set MPC_MAX_FLOW_HGT 3 +param set-default MC_AIRMODE 1 +param set-default IMU_DGYRO_CUTOFF 70 +param set-default MC_PITCHRATE_D 0.002 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_P 0.07 +param set-default MC_PITCH_P 6.5 +param set-default MC_ROLLRATE_D 0.002 +param set-default MC_ROLLRATE_I 0.2 +param set-default MC_ROLLRATE_P 0.07 +param set-default MC_ROLL_P 6.5 +param set-default MC_YAW_P 3 - param set NAV_RCL_ACT 3 +param set-default MPC_THR_HOVER 0.7 +param set-default MPC_THR_MAX 1 +param set-default MPC_Z_P 1.5 +param set-default MPC_Z_VEL_P_ACC 8 +param set-default MPC_Z_VEL_I_ACC 6 +param set-default MPC_HOLD_MAX_XY 0.1 +param set-default MPC_MAX_FLOW_HGT 3 - param set PWM_MAIN_DISARM 0 - param set PWM_MAIN_MIN 0 - param set PWM_MAIN_MAX 255 +param set-default NAV_RCL_ACT 3 - # Run the motors at 328.125 kHz (recommended) - param set PWM_MAIN_RATE 3921 +param set-default PWM_MAIN_DISARM 0 +param set-default PWM_MAIN_MIN 0 +param set-default PWM_MAIN_MAX 255 - param set SDLOG_PROFILE 1 +# Run the motors at 328.125 kHz (recommended) +param set-default PWM_MAIN_RATE 3921 - param set SENS_FLOW_MINRNG 0.05 +param set-default SDLOG_PROFILE 1 -fi +param set-default SENS_FLOW_MINRNG 0.05 set PWM_MAIN_DISARM none set PWM_MAIN_MAX none diff --git a/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 b/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 index 2435312c19..fa1b748195 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 +++ b/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 @@ -19,59 +19,56 @@ set MIXER quad_x_cw set PWM_OUT 1234 -if [ $AUTOCNF = yes ] -then - param set SYS_MC_EST_GROUP 3 - param set SYS_HAS_MAG 0 - param set BAT_N_CELLS 1 - param set BAT1_N_CELLS 1 - param set BAT1_SOURCE 1 +param set-default SYS_MC_EST_GROUP 3 +param set-default SYS_HAS_MAG 0 - param set CBRK_SUPPLY_CHK 894281 - param set CBRK_USB_CHK 197848 - param set COM_RC_IN_MODE 1 +param set-default BAT_N_CELLS 1 +param set-default BAT1_N_CELLS 1 +param set-default BAT1_SOURCE 1 - param set IMU_GYRO_CUTOFF 100 - param set IMU_ACCEL_CUTOFF 30 +param set-default CBRK_SUPPLY_CHK 894281 +param set-default CBRK_USB_CHK 197848 +param set-default COM_RC_IN_MODE 1 - param set MC_AIRMODE 1 - param set IMU_DGYRO_CUTOFF 70 - param set MC_PITCHRATE_D 0.002 - param set MC_PITCHRATE_I 0.2 - param set MC_PITCHRATE_P 0.07 - param set MC_PITCH_P 6.5 - param set MC_ROLLRATE_D 0.002 - param set MC_ROLLRATE_I 0.2 - param set MC_ROLLRATE_P 0.07 - param set MC_ROLL_P 6.5 - param set MC_YAW_P 3 +param set-default IMU_GYRO_CUTOFF 100 +param set-default IMU_ACCEL_CUTOFF 30 - param set MPC_THR_HOVER 0.7 - param set MPC_THR_MAX 1 - param set MPC_Z_P 1.5 - param set MPC_Z_VEL_P_ACC 8 - param set MPC_Z_VEL_I_ACC 6 - param set MPC_HOLD_MAX_XY 0.1 - param set MPC_MAX_FLOW_HGT 3 - #param set IMU_GYRO_NF_FREQ 10 - #param set IMU_GYRO_NF_BW 20 +param set-default MC_AIRMODE 1 +param set-default IMU_DGYRO_CUTOFF 70 +param set-default MC_PITCHRATE_D 0.002 +param set-default MC_PITCHRATE_I 0.2 +param set-default MC_PITCHRATE_P 0.07 +param set-default MC_PITCH_P 6.5 +param set-default MC_ROLLRATE_D 0.002 +param set-default MC_ROLLRATE_I 0.2 +param set-default MC_ROLLRATE_P 0.07 +param set-default MC_ROLL_P 6.5 +param set-default MC_YAW_P 3 - param set NAV_RCL_ACT 3 +param set-default MPC_THR_HOVER 0.7 +param set-default MPC_THR_MAX 1 +param set-default MPC_Z_P 1.5 +param set-default MPC_Z_VEL_P_ACC 8 +param set-default MPC_Z_VEL_I_ACC 6 +param set-default MPC_HOLD_MAX_XY 0.1 +param set-default MPC_MAX_FLOW_HGT 3 +#param set IMU_GYRO_NF_FREQ 10 +#param set IMU_GYRO_NF_BW 20 - param set PWM_MAIN_DISARM 0 - param set PWM_MAIN_MIN 0 - param set PWM_MAIN_MAX 255 +param set-default NAV_RCL_ACT 3 - # Run the motors at 328.125 kHz (recommended) - param set PWM_MAIN_RATE 3921 +param set-default PWM_MAIN_DISARM 0 +param set-default PWM_MAIN_MIN 0 +param set-default PWM_MAIN_MAX 255 - param set SDLOG_PROFILE 1 +# Run the motors at 328.125 kHz (recommended) +param set-default PWM_MAIN_RATE 3921 - param set SENS_FLOW_MINRNG 0.05 +param set-default SDLOG_PROFILE 1 +param set-default SENS_FLOW_MINRNG 0.05 -fi set PWM_MAIN_DISARM none set PWM_MAIN_MAX none diff --git a/ROMFS/px4fmu_common/init.d/airframes/50000_generic_ground_vehicle b/ROMFS/px4fmu_common/init.d/airframes/50000_generic_ground_vehicle index bfe62ea222..f21f131435 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/50000_generic_ground_vehicle +++ b/ROMFS/px4fmu_common/init.d/airframes/50000_generic_ground_vehicle @@ -16,45 +16,42 @@ . ${R}etc/init.d/rc.rover_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 2 - param set EKF2_ANGERR_INIT 0.01 - param set EKF2_GBIAS_INIT 0.01 - param set EKF2_MAG_TYPE 1 +param set-default BAT_N_CELLS 2 - param set FW_AIRSPD_MAX 3 - param set FW_AIRSPD_MIN 0 - param set FW_AIRSPD_TRIM 1 +param set-default EKF2_ANGERR_INIT 0.01 +param set-default EKF2_GBIAS_INIT 0.01 +param set-default EKF2_MAG_TYPE 1 - param set GND_L1_DIST 10 - param set GND_SP_CTRL_MODE 1 - param set GND_SPEED_P 0.25 - param set GND_SPEED_I 3 - param set GND_SPEED_D 0.001 - param set GND_SPEED_IMAX 0.125 - param set GND_SPEED_THR_SC 1 - param set GND_THR_IDLE 0 - param set GND_THR_CRUISE 0.3 - param set GND_THR_MAX 0.5 - param set GND_THR_MIN 0 - param set GND_WR_P 2 - param set GND_WR_I 0.9674 - param set GND_WR_IMAX 0.1 - param set GND_WR_D 1.2 +param set-default FW_AIRSPD_MAX 3 +param set-default FW_AIRSPD_MIN 0 +param set-default FW_AIRSPD_TRIM 1 - param set MIS_LTRMIN_ALT 0.01 - param set MIS_TAKEOFF_ALT 0.01 +param set-default GND_L1_DIST 10 +param set-default GND_SP_CTRL_MODE 1 +param set-default GND_SPEED_P 0.25 +param set-default GND_SPEED_I 3 +param set-default GND_SPEED_D 0.001 +param set-default GND_SPEED_IMAX 0.125 +param set-default GND_SPEED_THR_SC 1 +param set-default GND_THR_IDLE 0 +param set-default GND_THR_CRUISE 0.3 +param set-default GND_THR_MAX 0.5 +param set-default GND_THR_MIN 0 +param set-default GND_WR_P 2 +param set-default GND_WR_I 0.9674 +param set-default GND_WR_IMAX 0.1 +param set-default GND_WR_D 1.2 - param set NAV_ACC_RAD 0.5 +param set-default MIS_LTRMIN_ALT 0.01 +param set-default MIS_TAKEOFF_ALT 0.01 - # Provide ESC a constant 1500 us pulse - param set PWM_MAIN_DISARM 1500 - param set PWM_MAIN_MAX 2000 - param set PWM_MAIN_MIN 1000 -fi +param set-default NAV_ACC_RAD 0.5 +# Provide ESC a constant 1500 us pulse +param set-default PWM_MAIN_DISARM 1500 +param set-default PWM_MAIN_MAX 2000 +param set-default PWM_MAIN_MIN 1000 # Configure this as rover set MAV_TYPE 10 diff --git a/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover b/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover index 7ab3d3df6a..3000f92354 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover +++ b/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover @@ -21,67 +21,64 @@ . ${R}etc/init.d/rc.rover_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 4 - param set EKF2_GBIAS_INIT 0.01 - param set EKF2_ANGERR_INIT 0.01 - param set EKF2_MAG_TYPE 1 +param set-default BAT_N_CELLS 4 - param set FW_AIRSPD_MIN 0 - param set FW_AIRSPD_TRIM 1 - param set FW_AIRSPD_MAX 3 +param set-default EKF2_GBIAS_INIT 0.01 +param set-default EKF2_ANGERR_INIT 0.01 +param set-default EKF2_MAG_TYPE 1 - param set GND_SP_CTRL_MODE 1 - param set GND_L1_DIST 5 - param set GND_L1_PERIOD 3 - param set GND_THR_IDLE 0 - param set GND_THR_CRUISE 0.7 - param set GND_THR_MAX 0.5 +param set-default FW_AIRSPD_MIN 0 +param set-default FW_AIRSPD_TRIM 1 +param set-default FW_AIRSPD_MAX 3 - # Because this is differential drive, it can make a turn with radius 0. - # This corresponds to a turn angle of pi radians. - # If a special case is made for differential-drive, this will need to change. - param set GND_MAX_ANG 3.142 - param set GND_WHEEL_BASE 0.3 +param set-default GND_SP_CTRL_MODE 1 +param set-default GND_L1_DIST 5 +param set-default GND_L1_PERIOD 3 +param set-default GND_THR_IDLE 0 +param set-default GND_THR_CRUISE 0.7 +param set-default GND_THR_MAX 0.5 - # TODO: Set to -1.0, to allow reversing. This will require many changes in the codebase - # to support negative throttle. - param set GND_THR_MIN 0 - param set GND_SPEED_P 0.25 - param set GND_SPEED_I 3 - param set GND_SPEED_D 0.001 - param set GND_SPEED_IMAX 0.125 - param set GND_SPEED_THR_SC 1 +# Because this is differential drive, it can make a turn with radius 0. +# This corresponds to a turn angle of pi radians. +# If a special case is made for differential-drive, this will need to change. +param set-default GND_MAX_ANG 3.142 +param set-default GND_WHEEL_BASE 0.3 - param set MIS_LTRMIN_ALT 0.01 - param set MIS_TAKEOFF_ALT 0.01 +# TODO: Set to -1.0, to allow reversing. This will require many changes in the codebase +# to support negative throttle. +param set-default GND_THR_MIN 0 +param set-default GND_SPEED_P 0.25 +param set-default GND_SPEED_I 3 +param set-default GND_SPEED_D 0.001 +param set-default GND_SPEED_IMAX 0.125 +param set-default GND_SPEED_THR_SC 1 - param set NAV_ACC_RAD 0.5 +param set-default MIS_LTRMIN_ALT 0.01 +param set-default MIS_TAKEOFF_ALT 0.01 - # Provide ESC a constant 1500 us pulse, which corresponds to - # idle on the Roboclaw motor controller on the Aion R1 - param set PWM_MAIN_DISARM 1500 - param set PWM_MAIN_DIS0 1500 - param set PWM_MAIN_DIS1 1500 - param set PWM_MAIN_MAX 2000 - param set PWM_MAIN_MIN 1000 +param set-default NAV_ACC_RAD 0.5 - # Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor - param set CBRK_AIRSPD_CHK 162128 +# Provide ESC a constant 1500 us pulse, which corresponds to +# idle on the Roboclaw motor controller on the Aion R1 +param set-default PWM_MAIN_DISARM 1500 +param set-default PWM_MAIN_DIS0 1500 +param set-default PWM_MAIN_DIS1 1500 +param set-default PWM_MAIN_MAX 2000 +param set-default PWM_MAIN_MIN 1000 - # Differential drive acts like ackermann steering with a maximum turn angle of 180 degrees, or pi radians - param set GND_MAX_ANG 3.1415 +# Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor +param set-default CBRK_AIRSPD_CHK 162128 - param set RBCLW_BAUD 8 - param set RBCLW_COUNTS_REV 1200 - param set RBCLW_ADDRESS 128 - # param set SER_TEL4_BAUD 115200 - # 104 corresponds to Telem 4 - param set RBCLW_SER_CFG 104 -fi +# Differential drive acts like ackermann steering with a maximum turn angle of 180 degrees, or pi radians +param set-default GND_MAX_ANG 3.1415 +param set-default RBCLW_BAUD 8 +param set-default RBCLW_COUNTS_REV 1200 +param set-default RBCLW_ADDRESS 128 +# param set SER_TEL4_BAUD 115200 +# 104 corresponds to Telem 4 +param set-default RBCLW_SER_CFG 104 # Start this driver after setting parameters, because the driver uses some of those parameters. # roboclaw start /dev/ttyS3 diff --git a/ROMFS/px4fmu_common/init.d/airframes/50004_nxpcup_car_dfrobot_gpx b/ROMFS/px4fmu_common/init.d/airframes/50004_nxpcup_car_dfrobot_gpx index 1b5a8bc9bc..85c4b9dfd7 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/50004_nxpcup_car_dfrobot_gpx +++ b/ROMFS/px4fmu_common/init.d/airframes/50004_nxpcup_car_dfrobot_gpx @@ -21,55 +21,52 @@ . ${R}etc/init.d/rc.rover_defaults -if [ $AUTOCNF = yes ] -then - param set BAT_N_CELLS 2 - param set EKF2_GBIAS_INIT 0.01 - param set EKF2_ANGERR_INIT 0.01 - param set EKF2_MAG_TYPE 1 +param set-default BAT_N_CELLS 2 - param set FW_AIRSPD_MIN 0 - param set FW_AIRSPD_TRIM 1 - param set FW_AIRSPD_MAX 3 +param set-default EKF2_GBIAS_INIT 0.01 +param set-default EKF2_ANGERR_INIT 0.01 +param set-default EKF2_MAG_TYPE 1 - param set GND_THR_IDLE 0 - param set GND_THR_CRUISE 0.3 - param set GND_THR_MAX 0.5 +param set-default FW_AIRSPD_MIN 0 +param set-default FW_AIRSPD_TRIM 1 +param set-default FW_AIRSPD_MAX 3 - # Differential drive acts like ackermann steering with a maximum turn angle of 60 degrees, or pi/3 radians - param set GND_MAX_ANG 1.042 - param set GND_WHEEL_BASE 0.17 +param set-default GND_THR_IDLE 0 +param set-default GND_THR_CRUISE 0.3 +param set-default GND_THR_MAX 0.5 - # TODO: Set to -1.0, to allow reversing. This will require many changes in the codebase - # to support negative throttle. - param set GND_THR_MIN 0.0 - param set GND_SPEED_P 0.25 - param set GND_SPEED_I 3 - param set GND_SPEED_D 0.001 - param set GND_SPEED_IMAX 0.125 - param set GND_SPEED_THR_SC 1 +# Differential drive acts like ackermann steering with a maximum turn angle of 60 degrees, or pi/3 radians +param set-default GND_MAX_ANG 1.042 +param set-default GND_WHEEL_BASE 0.17 - param set MIS_LTRMIN_ALT 0.01 - param set MIS_TAKEOFF_ALT 0.01 +# TODO: Set to -1.0, to allow reversing. This will require many changes in the codebase +# to support negative throttle. +param set-default GND_THR_MIN 0.0 +param set-default GND_SPEED_P 0.25 +param set-default GND_SPEED_I 3 +param set-default GND_SPEED_D 0.001 +param set-default GND_SPEED_IMAX 0.125 +param set-default GND_SPEED_THR_SC 1 - param set NAV_ACC_RAD 0.5 +param set-default MIS_LTRMIN_ALT 0.01 +param set-default MIS_TAKEOFF_ALT 0.01 - # Provide ESC a constant 1500 us pulse to idle - param set PWM_MAIN_DISARM 1500 - param set PWM_MAIN_DIS3 1485 - param set PWM_MAIN_DIS4 1485 - param set PWM_MAIN_FAIL3 1485 - param set PWM_MAIN_FAIL4 1485 - param set PWM_MAIN_MAX 2000 - param set PWM_MAIN_MIN 1000 - param set PWM_MAIN_MIN3 970 - param set PWM_MAIN_MIN4 970 +param set-default NAV_ACC_RAD 0.5 - # Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor - param set CBRK_AIRSPD_CHK 162128 +# Provide ESC a constant 1500 us pulse to idle +param set-default PWM_MAIN_DISARM 1500 +param set-default PWM_MAIN_DIS3 1485 +param set-default PWM_MAIN_DIS4 1485 +param set-default PWM_MAIN_FAIL3 1485 +param set-default PWM_MAIN_FAIL4 1485 +param set-default PWM_MAIN_MAX 2000 +param set-default PWM_MAIN_MIN 1000 +param set-default PWM_MAIN_MIN3 970 +param set-default PWM_MAIN_MIN4 970 -fi +# Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor +param set-default CBRK_AIRSPD_CHK 162128 # Configure this as rover set MAV_TYPE 10 diff --git a/ROMFS/px4fmu_common/init.d/airframes/60000_uuv_generic b/ROMFS/px4fmu_common/init.d/airframes/60000_uuv_generic index 312aa1c7b7..33ec6cb100 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/60000_uuv_generic +++ b/ROMFS/px4fmu_common/init.d/airframes/60000_uuv_generic @@ -14,17 +14,14 @@ . ${R}etc/init.d/rc.uuv_defaults -if [ $AUTOCNF = yes ] -then - #Set data link loss failsafe mode (0: disabled) - param set NAV_DLL_ACT 0 - # disable circuit breaker for airspeed sensor - param set CBRK_AIRSPD_CHK 162128 +#Set data link loss failsafe mode (0: disabled) +param set-default NAV_DLL_ACT 0 - #param set CBRK_GPSFAIL 240024 -fi +# disable circuit breaker for airspeed sensor +param set-default CBRK_AIRSPD_CHK 162128 +#param set CBRK_GPSFAIL 240024 set MAV_TYPE 12 param set MAV_TYPE ${MAV_TYPE} diff --git a/ROMFS/px4fmu_common/init.d/airframes/60001_uuv_hippocampus b/ROMFS/px4fmu_common/init.d/airframes/60001_uuv_hippocampus index 0265c2a6e2..13ec47f8f4 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/60001_uuv_hippocampus +++ b/ROMFS/px4fmu_common/init.d/airframes/60001_uuv_hippocampus @@ -14,17 +14,14 @@ . ${R}etc/init.d/rc.uuv_defaults -if [ $AUTOCNF = yes ] -then - #Set data link loss failsafe mode (0: disabled) - param set NAV_DLL_ACT 0 - # disable circuit breaker for airspeed sensor - param set CBRK_AIRSPD_CHK 162128 +#Set data link loss failsafe mode (0: disabled) +param set-default NAV_DLL_ACT 0 - #param set CBRK_GPSFAIL 240024 -fi +# disable circuit breaker for airspeed sensor +param set-default CBRK_AIRSPD_CHK 162128 +#param set CBRK_GPSFAIL 240024 set MAV_TYPE 12 param set MAV_TYPE ${MAV_TYPE} diff --git a/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy b/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy index 57e0f12f4e..5b2509de47 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy +++ b/ROMFS/px4fmu_common/init.d/airframes/60002_uuv_bluerov2_heavy @@ -23,28 +23,25 @@ . ${R}etc/init.d/rc.uuv_defaults -if [ $AUTOCNF = yes ] -then - #Set data link loss failsafe mode (0: disabled) - param set NAV_DLL_ACT 0 - # disable circuit breaker for airspeed sensor - param set CBRK_AIRSPD_CHK 162128 - # companion computer is connected via USB permanently - param set CBRK_USB_CHK 197848 - param set CBRK_IO_SAFETY 22027 +#Set data link loss failsafe mode (0: disabled) +param set-default NAV_DLL_ACT 0 - param set COM_PREARM_MODE 0 +# disable circuit breaker for airspeed sensor +param set-default CBRK_AIRSPD_CHK 162128 +# companion computer is connected via USB permanently +param set-default CBRK_USB_CHK 197848 +param set-default CBRK_IO_SAFETY 22027 - param set MAV_1_CONFIG 102 +param set-default COM_PREARM_MODE 0 - param set BAT1_A_PER_V 37.8798 - param set BAT1_CAPACITY 18000 - param set BAT1_V_DIV 11.0 - param set BAT1_N_CELLS 4 - param set BAT_V_OFFS_CURR 0.33 -fi +param set-default MAV_1_CONFIG 102 +param set-default BAT1_A_PER_V 37.8798 +param set-default BAT1_CAPACITY 18000 +param set-default BAT1_V_DIV 11.0 +param set-default BAT1_N_CELLS 4 +param set-default BAT_V_OFFS_CURR 0.33 set PWM_OUT 12345678 # set MIXER IO_pass set MIXER vectored6dof diff --git a/ROMFS/px4fmu_common/init.d/airframes/6002_draco_r b/ROMFS/px4fmu_common/init.d/airframes/6002_draco_r index e4e2eae66d..f36c9fcef1 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/6002_draco_r +++ b/ROMFS/px4fmu_common/init.d/airframes/6002_draco_r @@ -30,109 +30,106 @@ set MIXER hexa_x set PWM_OUT 12345678 -if [ $AUTOCNF = yes ] -then - ############################################### - # Attitude & rate gains - ############################################### - # Roll - param set MC_ROLL_P 6.5 - param set MC_ROLLRATE_P 0.15 - param set MC_ROLLRATE_I 0.05 - param set MC_ROLLRATE_D 0.0013 - param set MC_ROLLRATE_MAX 800 - # Pitch - param set MC_PITCH_P 6.5 - param set MC_PITCHRATE_P 0.15 - param set MC_PITCHRATE_I 0.05 - param set MC_PITCHRATE_D 0.0016 - param set MC_PITCHRATE_MAX 800 - # Yaw - param set MC_YAW_P 2.8 - param set MC_YAWRATE_P 0.2 - param set MC_YAWRATE_I 0.1 - param set MC_YAWRATE_D 0 - param set MC_YAW_FF 0 - param set MC_YAWRATE_MAX 700 - ############################################### - # Multirotor Position Gains - ############################################### - param set MPC_ACC_HOR 8 - param set MPC_THR_MIN 0.06 - param set MPC_THR_HOVER 0.3 - # altitude control gains - param set MPC_Z_P 1 - param set MPC_Z_VEL_P_ACC 4 - param set MPC_Z_VEL_I_ACC 0.4 - # position control gains - param set MPC_XY_P 0.9500 - param set MPC_XY_VEL_P_ACC 1.8 - param set MPC_XY_VEL_I_ACC 0.4 - param set MPC_XY_VEL_D_ACC 0.2 - # etc gains - param set MPC_TKO_RAMP_T 0.4 - param set MPC_TKO_SPEED 1.5 - param set MPC_VEL_MANUAL 5 +############################################### +# Attitude & rate gains +############################################### +# Roll +param set-default MC_ROLL_P 6.5 +param set-default MC_ROLLRATE_P 0.15 +param set-default MC_ROLLRATE_I 0.05 +param set-default MC_ROLLRATE_D 0.0013 +param set-default MC_ROLLRATE_MAX 800 +# Pitch +param set-default MC_PITCH_P 6.5 +param set-default MC_PITCHRATE_P 0.15 +param set-default MC_PITCHRATE_I 0.05 +param set-default MC_PITCHRATE_D 0.0016 +param set-default MC_PITCHRATE_MAX 800 +# Yaw +param set-default MC_YAW_P 2.8 +param set-default MC_YAWRATE_P 0.2 +param set-default MC_YAWRATE_I 0.1 +param set-default MC_YAWRATE_D 0 +param set-default MC_YAW_FF 0 +param set-default MC_YAWRATE_MAX 700 - # Filter settings - param set IMU_DGYRO_CUTOFF 90 - param set IMU_GYRO_CUTOFF 100 +############################################### +# Multirotor Position Gains +############################################### +param set-default MPC_ACC_HOR 8 +param set-default MPC_THR_MIN 0.06 +param set-default MPC_THR_HOVER 0.3 +# altitude control gains +param set-default MPC_Z_P 1 +param set-default MPC_Z_VEL_P_ACC 4 +param set-default MPC_Z_VEL_I_ACC 0.4 +# position control gains +param set-default MPC_XY_P 0.9500 +param set-default MPC_XY_VEL_P_ACC 1.8 +param set-default MPC_XY_VEL_I_ACC 0.4 +param set-default MPC_XY_VEL_D_ACC 0.2 +# etc gains +param set-default MPC_TKO_RAMP_T 0.4 +param set-default MPC_TKO_SPEED 1.5 +param set-default MPC_VEL_MANUAL 5 - # Thrust curve (avoids the need for TPA) - param set THR_MDL_FAC 0.25 +# Filter settings +param set-default IMU_DGYRO_CUTOFF 90 +param set-default IMU_GYRO_CUTOFF 100 - # System - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1100 - param set PWM_MAIN_DIS5 980 - param set PWM_MAIN_DIS6 980 +# Thrust curve (avoids the need for TPA) +param set-default THR_MDL_FAC 0.25 - # DSHOT - param set DSHOT_CONFIG 600 +# System +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1100 +param set-default PWM_MAIN_DIS5 980 +param set-default PWM_MAIN_DIS6 980 - param set MIS_TAKEOFF_ALT 1.1 +# DSHOT +param set-default DSHOT_CONFIG 600 - ##################################### - # EKF - ##################################### - # Height mode as GPS - param set EKF2_HGT_MODE 1 - # Enable optical flow and GPS - param set EKF2_AID_MASK 1 - param set EKF2_RNG_AID 1 - param set EKF2_MAG_TYPE 1 - param set EKF2_OF_QMIN 80 +param set-default MIS_TAKEOFF_ALT 1.1 - # default horizontal stablization sensors - param set SENS_EN_PMW3901 1 - param set SENS_EN_PX4FLOW 1 - param set SENS_EN_LL40LS 2 - param set SENS_FLOW_ROT 2 +##################################### +# EKF +##################################### +# Height mode as GPS +param set-default EKF2_HGT_MODE 1 +# Enable optical flow and GPS +param set-default EKF2_AID_MASK 1 +param set-default EKF2_RNG_AID 1 +param set-default EKF2_MAG_TYPE 1 +param set-default EKF2_OF_QMIN 80 - # - param set CBRK_IO_SAFETY 22027 - param set COM_DISARM_LAND 3 +# default horizontal stablization sensors +param set-default SENS_EN_PMW3901 1 +param set-default SENS_EN_PX4FLOW 1 +param set-default SENS_EN_LL40LS 2 +param set-default SENS_FLOW_ROT 2 - # PWM ONESHOT - param set PWM_MAIN_RATE 0 +# +param set-default CBRK_IO_SAFETY 22027 +param set-default COM_DISARM_LAND 3 - # Battery - param set BAT_SOURCE 0 - param set BAT_N_CELLS 4 - param set BAT_V_DIV 10.133 +# PWM ONESHOT +param set-default PWM_MAIN_RATE 0 - # TELEM1 ttyS1 - param set MAV_0_CONFIG 101 - param set MAV_0_MODE 0 # onboard - param set MAV_0_FORWARD 1 - param set SER_TEL1_BAUD 57600 +# Battery +param set-default BAT_SOURCE 0 +param set-default BAT_N_CELLS 4 +param set-default BAT_V_DIV 10.133 - # TELEM2 ttyS2 - param set MAV_1_CONFIG 102 - param set MAV_1_MODE 2 - param set MAV_1_FORWARD 1 - param set MAV_1_RATE 800000 - param set SER_TEL2_BAUD 921600 -fi +# TELEM1 ttyS1 +param set-default MAV_0_CONFIG 101 +param set-default MAV_0_MODE 0 # onboard +param set-default MAV_0_FORWARD 1 +param set-default SER_TEL1_BAUD 57600 +# TELEM2 ttyS2 +param set-default MAV_1_CONFIG 102 +param set-default MAV_1_MODE 2 +param set-default MAV_1_FORWARD 1 +param set-default MAV_1_RATE 800000 +param set-default SER_TEL2_BAUD 921600 diff --git a/ROMFS/px4fmu_common/init.d/airframes/6003_hexa_x_ctrlalloc b/ROMFS/px4fmu_common/init.d/airframes/6003_hexa_x_ctrlalloc index c113cc10c8..00c31ab2ec 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/6003_hexa_x_ctrlalloc +++ b/ROMFS/px4fmu_common/init.d/airframes/6003_hexa_x_ctrlalloc @@ -13,62 +13,59 @@ . ${R}etc/init.d/rc.mc_defaults . ${R}etc/init.d/rc.ctrlalloc -if [ $AUTOCNF = yes ] -then - param set MPC_USE_HTE 0 - param set VM_MASS 1.5 - param set VM_INERTIA_XX 0.03 - param set VM_INERTIA_YY 0.03 - param set VM_INERTIA_ZZ 0.05 +param set-default MPC_USE_HTE 0 - param set CA_AIRFRAME 0 - param set CA_METHOD 1 - param set CA_ACT0_MIN 0.0 - param set CA_ACT1_MIN 0.0 - param set CA_ACT2_MIN 0.0 - param set CA_ACT3_MIN 0.0 - param set CA_ACT4_MIN 0.0 - param set CA_ACT5_MIN 0.0 +param set-default VM_MASS 1.5 +param set-default VM_INERTIA_XX 0.03 +param set-default VM_INERTIA_YY 0.03 +param set-default VM_INERTIA_ZZ 0.05 - param set CA_ACT0_MAX 1.0 - param set CA_ACT1_MAX 1.0 - param set CA_ACT2_MAX 1.0 - param set CA_ACT3_MAX 1.0 - param set CA_ACT4_MAX 1.0 - param set CA_ACT5_MAX 1.0 +param set-default CA_AIRFRAME 0 +param set-default CA_METHOD 1 +param set-default CA_ACT0_MIN 0.0 +param set-default CA_ACT1_MIN 0.0 +param set-default CA_ACT2_MIN 0.0 +param set-default CA_ACT3_MIN 0.0 +param set-default CA_ACT4_MIN 0.0 +param set-default CA_ACT5_MIN 0.0 - param set CA_MC_R0_PX 0.0 - param set CA_MC_R0_PY 0.275 - param set CA_MC_R0_CT 6.5 - param set CA_MC_R0_KM -0.05 +param set-default CA_ACT0_MAX 1.0 +param set-default CA_ACT1_MAX 1.0 +param set-default CA_ACT2_MAX 1.0 +param set-default CA_ACT3_MAX 1.0 +param set-default CA_ACT4_MAX 1.0 +param set-default CA_ACT5_MAX 1.0 - param set CA_MC_R1_PX 0.0 - param set CA_MC_R1_PY -0.275 - param set CA_MC_R1_CT 6.5 - param set CA_MC_R1_KM 0.05 +param set-default CA_MC_R0_PX 0.0 +param set-default CA_MC_R0_PY 0.275 +param set-default CA_MC_R0_CT 6.5 +param set-default CA_MC_R0_KM -0.05 - param set CA_MC_R2_PX 0.238 - param set CA_MC_R2_PY -0.1375 - param set CA_MC_R2_CT 6.5 - param set CA_MC_R2_KM -0.05 +param set-default CA_MC_R1_PX 0.0 +param set-default CA_MC_R1_PY -0.275 +param set-default CA_MC_R1_CT 6.5 +param set-default CA_MC_R1_KM 0.05 - param set CA_MC_R3_PX -0.238 - param set CA_MC_R3_PY 0.1375 - param set CA_MC_R3_CT 6.5 - param set CA_MC_R3_KM 0.05 +param set-default CA_MC_R2_PX 0.238 +param set-default CA_MC_R2_PY -0.1375 +param set-default CA_MC_R2_CT 6.5 +param set-default CA_MC_R2_KM -0.05 - param set CA_MC_R4_PX 0.238 - param set CA_MC_R4_PY 0.1375 - param set CA_MC_R4_CT 6.5 - param set CA_MC_R4_KM 0.05 +param set-default CA_MC_R3_PX -0.238 +param set-default CA_MC_R3_PY 0.1375 +param set-default CA_MC_R3_CT 6.5 +param set-default CA_MC_R3_KM 0.05 - param set CA_MC_R5_PX -0.238 - param set CA_MC_R5_PY -0.1375 - param set CA_MC_R5_CT 6.5 - param set CA_MC_R5_KM -0.05 +param set-default CA_MC_R4_PX 0.238 +param set-default CA_MC_R4_PY 0.1375 +param set-default CA_MC_R4_CT 6.5 +param set-default CA_MC_R4_KM 0.05 -fi +param set-default CA_MC_R5_PX -0.238 +param set-default CA_MC_R5_PY -0.1375 +param set-default CA_MC_R5_CT 6.5 +param set-default CA_MC_R5_KM -0.05 set MIXER direct set PWM_OUT 123456 diff --git a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt index 4d433ec771..384c167605 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt +++ b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt @@ -157,7 +157,8 @@ px4_add_romfs_files( # [18000, 18999] High-altitude balloons 18001_TF-B1 - # [22000, 22999] ETHZ ASL Vehicles + # [22000, 22999] Reserve for custom models + # ETHZ ASL Vehicles 22000_asl_easyglider 22001_asl_techpod 22002_asl_sensesoar2 diff --git a/ROMFS/px4fmu_common/init.d/rc.balloon_defaults b/ROMFS/px4fmu_common/init.d/rc.balloon_defaults index 83d4d3851c..302d81ae90 100644 --- a/ROMFS/px4fmu_common/init.d/rc.balloon_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.balloon_defaults @@ -7,14 +7,7 @@ set VEHICLE_TYPE fw -if [ $AUTOCNF = yes ] -then - # - # Default parameters for balloon UAVs. - # - # - # FW takeoff acceleration can easily exceed ublox GPS 2G default. - # - param set GPS_UBX_DYNMODEL 8 - param set SYS_MC_EST_GROUP 1 -fi +# +# Default parameters for balloon UAVs. +# +param set-default SYS_MC_EST_GROUP 1 diff --git a/ROMFS/px4fmu_common/init.d/rc.boat_defaults b/ROMFS/px4fmu_common/init.d/rc.boat_defaults index 237aac9546..54bb4d0ccd 100644 --- a/ROMFS/px4fmu_common/init.d/rc.boat_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.boat_defaults @@ -7,20 +7,17 @@ set VEHICLE_TYPE rover -if [ $AUTOCNF = yes ] -then # # Default parameters for UGVs. # - param set MIS_LTRMIN_ALT 0.01 - param set MIS_TAKEOFF_ALT 0.01 +param set-default MIS_LTRMIN_ALT 0.01 +param set-default MIS_TAKEOFF_ALT 0.01 - param set NAV_DLL_ACT 0 - param set NAV_ACC_RAD 2 +param set-default NAV_DLL_ACT 0 +param set-default NAV_ACC_RAD 2 - # Temporary. - param set NAV_FW_ALT_RAD 1000 -fi +# Temporary. +param set-default NAV_FW_ALT_RAD 1000 # # Enable servo output on pins 3 and 4 (steering and thrust) diff --git a/ROMFS/px4fmu_common/init.d/rc.fw_defaults b/ROMFS/px4fmu_common/init.d/rc.fw_defaults index 8e12dbb61d..ca4f0f7905 100644 --- a/ROMFS/px4fmu_common/init.d/rc.fw_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.fw_defaults @@ -7,51 +7,48 @@ set VEHICLE_TYPE fw -if [ $AUTOCNF = yes ] -then - # - # Default parameters for fixed wing UAVs. - # - param set COM_POS_FS_DELAY 5 - param set COM_POS_FS_EPH 15 - param set COM_POS_FS_EPV 30 - param set COM_POS_FS_GAIN 0 - param set COM_POS_FS_PROB 1 - param set COM_VEL_FS_EVH 5 +# +# Default parameters for fixed wing UAVs. +# +param set-default COM_POS_FS_DELAY 5 +param set-default COM_POS_FS_EPH 15 +param set-default COM_POS_FS_EPV 30 +param set-default COM_POS_FS_GAIN 0 +param set-default COM_POS_FS_PROB 1 +param set-default COM_VEL_FS_EVH 5 - param set EKF2_ARSP_THR 8 - param set EKF2_FUSE_BETA 1 - param set EKF2_GPS_CHECK 21 - param set EKF2_MAG_ACCLIM 0 - param set EKF2_MAG_YAWLIM 0 - param set EKF2_REQ_EPH 10 - param set EKF2_REQ_EPV 10 - param set EKF2_REQ_HDRIFT 0.5 - param set EKF2_REQ_SACC 1 - param set EKF2_REQ_VDRIFT 1.0 +param set-default EKF2_ARSP_THR 8 +param set-default EKF2_FUSE_BETA 1 +param set-default EKF2_GPS_CHECK 21 +param set-default EKF2_MAG_ACCLIM 0 +param set-default EKF2_MAG_YAWLIM 0 +param set-default EKF2_REQ_EPH 10 +param set-default EKF2_REQ_EPV 10 +param set-default EKF2_REQ_HDRIFT 0.5 +param set-default EKF2_REQ_SACC 1 +param set-default EKF2_REQ_VDRIFT 1.0 - param set RTL_TYPE 1 - param set RTL_RETURN_ALT 100 - param set RTL_DESCEND_ALT 100 - param set RTL_LAND_DELAY -1 +param set-default RTL_TYPE 1 +param set-default RTL_RETURN_ALT 100 +param set-default RTL_DESCEND_ALT 100 +param set-default RTL_LAND_DELAY -1 - # - # FW uses L1 distance for acceptance radius. - # Set a smaller NAV_ACC_RAD for vertical acceptance distance. - # - param set NAV_ACC_RAD 10 +# +# FW uses L1 distance for acceptance radius. +# Set a smaller NAV_ACC_RAD for vertical acceptance distance. +# +param set-default NAV_ACC_RAD 10 - param set MIS_DIST_WPS 5000 - param set MIS_LTRMIN_ALT 25 - param set MIS_TAKEOFF_ALT 25 +param set-default MIS_DIST_WPS 5000 +param set-default MIS_LTRMIN_ALT 25 +param set-default MIS_TAKEOFF_ALT 25 - param set PWM_MAIN_RATE 50 +param set-default PWM_MAIN_RATE 50 - # - # FW takeoff acceleration can easily exceed ublox GPS 2G default. - # - param set GPS_UBX_DYNMODEL 8 -fi +# +# FW takeoff acceleration can easily exceed ublox GPS 2G default. +# +param set-default GPS_UBX_DYNMODEL 8 # # This is the gimbal pass mixer. diff --git a/ROMFS/px4fmu_common/init.d/rc.mc_defaults b/ROMFS/px4fmu_common/init.d/rc.mc_defaults index 7baf262862..06ba384f6d 100644 --- a/ROMFS/px4fmu_common/init.d/rc.mc_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.mc_defaults @@ -7,19 +7,16 @@ set VEHICLE_TYPE mc -if [ $AUTOCNF = yes ] -then - param set NAV_ACC_RAD 2 +param set-default NAV_ACC_RAD 2 - param set RTL_RETURN_ALT 30 - param set RTL_DESCEND_ALT 10 +param set-default RTL_RETURN_ALT 30 +param set-default RTL_DESCEND_ALT 10 - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1075 - param set PWM_MAIN_RATE 400 +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1075 +param set-default PWM_MAIN_RATE 400 - param set GPS_UBX_DYNMODEL 6 -fi +param set-default GPS_UBX_DYNMODEL 6 # # This is the gimbal pass mixer. diff --git a/ROMFS/px4fmu_common/init.d/rc.rover_defaults b/ROMFS/px4fmu_common/init.d/rc.rover_defaults index 237aac9546..26db6d098c 100644 --- a/ROMFS/px4fmu_common/init.d/rc.rover_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.rover_defaults @@ -7,20 +7,18 @@ set VEHICLE_TYPE rover -if [ $AUTOCNF = yes ] -then # # Default parameters for UGVs. # - param set MIS_LTRMIN_ALT 0.01 - param set MIS_TAKEOFF_ALT 0.01 +param set-default MIS_LTRMIN_ALT 0.01 +param set-default MIS_TAKEOFF_ALT 0.01 - param set NAV_DLL_ACT 0 - param set NAV_ACC_RAD 2 +param set-default NAV_DLL_ACT 0 +param set-default NAV_ACC_RAD 2 +param set-default NAV_LOITER_RAD 2 - # Temporary. - param set NAV_FW_ALT_RAD 1000 -fi +# Temporary. +param set-default NAV_FW_ALT_RAD 1000 # # Enable servo output on pins 3 and 4 (steering and thrust) diff --git a/ROMFS/px4fmu_common/init.d/rc.uuv_defaults b/ROMFS/px4fmu_common/init.d/rc.uuv_defaults index 600eabef49..6d525fd0e1 100644 --- a/ROMFS/px4fmu_common/init.d/rc.uuv_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.uuv_defaults @@ -7,13 +7,9 @@ set VEHICLE_TYPE uuv -if [ $AUTOCNF = yes ] -then - param set PWM_MAIN_MAX 1950 - param set PWM_MAIN_MIN 1050 - param set PWM_MAIN_DISARM 1500 - -fi +param set-default PWM_MAIN_MAX 1950 +param set-default PWM_MAIN_MIN 1050 +param set-default PWM_MAIN_DISARM 1500 # # PWM Hz - 50 Hz is the normal rate in RC cars, boats etc, diff --git a/ROMFS/px4fmu_common/init.d/rc.vtol_defaults b/ROMFS/px4fmu_common/init.d/rc.vtol_defaults index 01a2210775..2830440e79 100644 --- a/ROMFS/px4fmu_common/init.d/rc.vtol_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.vtol_defaults @@ -7,34 +7,31 @@ set VEHICLE_TYPE vtol -if [ $AUTOCNF = yes ] -then - # to minimize cpu usage on older boards limit inner loop to 400 Hz - param set IMU_GYRO_RATEMAX 400 +# to minimize cpu usage on older boards limit inner loop to 400 Hz +param set-default IMU_GYRO_RATEMAX 400 - param set MIS_TAKEOFF_ALT 20 - param set MIS_YAW_TMT 10 +param set-default MIS_TAKEOFF_ALT 20 +param set-default MIS_YAW_TMT 10 - param set EKF2_ARSP_THR 10 - param set EKF2_FUSE_BETA 1 +param set-default EKF2_ARSP_THR 10 +param set-default EKF2_FUSE_BETA 1 - param set MIS_DIST_WPS 5000 +param set-default MIS_DIST_WPS 5000 - param set MPC_ACC_HOR_MAX 2 - param set MPC_TKO_SPEED 1 - param set MPC_VEL_MANUAL 3 - param set MPC_XY_CRUISE 3 - param set MPC_XY_ERR_MAX 5 - param set MPC_XY_VEL_MAX 4 - param set MPC_Z_VEL_MAX_DN 1.5 - param set MPC_JERK_MAX 4.5 +param set-default MPC_ACC_HOR_MAX 2 +param set-default MPC_TKO_SPEED 1 +param set-default MPC_VEL_MANUAL 3 +param set-default MPC_XY_CRUISE 3 +param set-default MPC_XY_ERR_MAX 5 +param set-default MPC_XY_VEL_MAX 4 +param set-default MPC_Z_VEL_MAX_DN 1.5 +param set-default MPC_JERK_MAX 4.5 - param set NAV_ACC_RAD 3 +param set-default NAV_ACC_RAD 3 - param set PWM_AUX_RATE 50 - param set PWM_MAIN_RATE 400 +param set-default PWM_AUX_RATE 50 +param set-default PWM_MAIN_RATE 400 - param set RTL_TYPE 1 +param set-default RTL_TYPE 1 - param set WV_EN 1 -fi +param set-default WV_EN 1 diff --git a/Tools/astyle/files_to_check_code_style.sh b/Tools/astyle/files_to_check_code_style.sh index 9032d8495a..2501a2a62f 100755 --- a/Tools/astyle/files_to_check_code_style.sh +++ b/Tools/astyle/files_to_check_code_style.sh @@ -13,6 +13,7 @@ exec find boards msg src platforms test \ -path platforms/qurt/dspal -prune -o \ -path src/drivers/uavcan/libuavcan -prune -o \ -path src/drivers/uavcan_v1/libcanard -prune -o \ + -path src/drivers/uavcannode_gps_demo/libcanard -prune -o \ -path src/drivers/uavcan/uavcan_drivers/kinetis/driver/include/uavcan_kinetis -prune -o \ -path src/lib/ecl -prune -o \ -path src/lib/matrix -prune -o \ diff --git a/boards/airmind/mindpx-v2/init/rc.board_defaults b/boards/airmind/mindpx-v2/init/rc.board_defaults index 77a1dfb795..82e1fb82a5 100644 --- a/boards/airmind/mindpx-v2/init/rc.board_defaults +++ b/boards/airmind/mindpx-v2/init/rc.board_defaults @@ -3,11 +3,5 @@ # Airmind Mindpx-v2 specific board defaults #------------------------------------------------------------------------------ - -if [ $AUTOCNF = yes ] -then - # Disable safety switch by default - param set CBRK_IO_SAFETY 22027 - -fi - +# Disable safety switch by default +param set-default CBRK_IO_SAFETY 22027 diff --git a/boards/av/x-v1/init/rc.board_defaults b/boards/av/x-v1/init/rc.board_defaults index 1192c2f93e..1fdf1ecb34 100644 --- a/boards/av/x-v1/init/rc.board_defaults +++ b/boards/av/x-v1/init/rc.board_defaults @@ -4,13 +4,10 @@ #------------------------------------------------------------------------------ # system_power unavailable -param set CBRK_SUPPLY_CHK 894281 +param set-default CBRK_SUPPLY_CHK 894281 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 -fi +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 set LOGGER_BUF 64 diff --git a/boards/bitcraze/crazyflie/default.cmake b/boards/bitcraze/crazyflie/default.cmake index 3192198f07..0cfe49246b 100644 --- a/boards/bitcraze/crazyflie/default.cmake +++ b/boards/bitcraze/crazyflie/default.cmake @@ -1,3 +1,5 @@ +# workaround for syslink parameter PARAM_DEFINE_INT32(SLNK_RADIO_ADDR2, 3890735079); // 0xE7E7E7E7 +add_compile_options(-Wno-narrowing) px4_add_board( PLATFORM nuttx diff --git a/boards/bitcraze/crazyflie/init/rc.board_defaults b/boards/bitcraze/crazyflie/init/rc.board_defaults index fdf37adf70..a6e185fce0 100644 --- a/boards/bitcraze/crazyflie/init/rc.board_defaults +++ b/boards/bitcraze/crazyflie/init/rc.board_defaults @@ -4,16 +4,8 @@ #------------------------------------------------------------------------------ # system_power unavailable -param set CBRK_SUPPLY_CHK 894281 +param set-default CBRK_SUPPLY_CHK 894281 +param set-default SYS_AUTOSTART 4900 -if param compare SYS_AUTOSTART 0 -then - param set SYS_AUTOSTART 4900 - set AUTOCNF yes -fi - -if [ $AUTOCNF = yes ] -then - # don't probe external I2C - param set SENS_EXT_I2C_PRB 0 -fi +# don't probe external I2C +param set-default SENS_EXT_I2C_PRB 0 diff --git a/boards/bitcraze/crazyflie21/default.cmake b/boards/bitcraze/crazyflie21/default.cmake index e1cce5892d..7761ac7203 100644 --- a/boards/bitcraze/crazyflie21/default.cmake +++ b/boards/bitcraze/crazyflie21/default.cmake @@ -1,3 +1,5 @@ +# workaround for syslink parameter PARAM_DEFINE_INT32(SLNK_RADIO_ADDR2, 3890735079); // 0xE7E7E7E7 +add_compile_options(-Wno-narrowing) px4_add_board( PLATFORM nuttx diff --git a/boards/bitcraze/crazyflie21/init/rc.board_defaults b/boards/bitcraze/crazyflie21/init/rc.board_defaults index 38e6641756..a3db1fcefb 100644 --- a/boards/bitcraze/crazyflie21/init/rc.board_defaults +++ b/boards/bitcraze/crazyflie21/init/rc.board_defaults @@ -4,16 +4,9 @@ #------------------------------------------------------------------------------ # system_power unavailable -param set CBRK_SUPPLY_CHK 894281 +param set-default CBRK_SUPPLY_CHK 894281 -if param compare SYS_AUTOSTART 0 -then - param set SYS_AUTOSTART 4901 - set AUTOCNF yes -fi +param set-default SYS_AUTOSTART 4901 -if [ $AUTOCNF = yes ] -then - # don't probe external I2C - param set SENS_EXT_I2C_PRB 0 -fi +# don't probe external I2C +param set-default SENS_EXT_I2C_PRB 0 diff --git a/boards/cuav/nora/init/rc.board_defaults b/boards/cuav/nora/init/rc.board_defaults index 874baaa4f6..41fd9c03eb 100644 --- a/boards/cuav/nora/init/rc.board_defaults +++ b/boards/cuav/nora/init/rc.board_defaults @@ -21,27 +21,26 @@ then fi unset BL_FILE -if [ $AUTOCNF = yes ] -then - param set BAT_V_DIV 18 - param set BAT1_V_DIV 18 - param set BAT2_V_DIV 18 - param set BAT_A_PER_V 24 - param set BAT1_A_PER_V 24 - param set BAT2_A_PER_V 24 +param set-default BAT_V_DIV 18 +param set-default BAT1_V_DIV 18 +param set-default BAT2_V_DIV 18 - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 +param set-default BAT_A_PER_V 24 +param set-default BAT1_A_PER_V 24 +param set-default BAT2_A_PER_V 24 - # Enable IMU thermal control - param set SENS_EN_THERMAL 1 +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 + +# Enable IMU thermal control +param set-default SENS_EN_THERMAL 1 + +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/cuav/x7pro/init/rc.board_defaults b/boards/cuav/x7pro/init/rc.board_defaults index 263c45531f..855fb150f4 100644 --- a/boards/cuav/x7pro/init/rc.board_defaults +++ b/boards/cuav/x7pro/init/rc.board_defaults @@ -21,27 +21,26 @@ then fi unset BL_FILE -if [ $AUTOCNF = yes ] -then - param set BAT_V_DIV 18 - param set BAT1_V_DIV 18 - param set BAT2_V_DIV 18 - param set BAT_A_PER_V 24 - param set BAT1_A_PER_V 24 - param set BAT2_A_PER_V 24 +param set-default BAT_V_DIV 18 +param set-default BAT1_V_DIV 18 +param set-default BAT2_V_DIV 18 - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 +param set-default BAT_A_PER_V 24 +param set-default BAT1_A_PER_V 24 +param set-default BAT2_A_PER_V 24 - # Enable IMU thermal control - param set SENS_EN_THERMAL 1 +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 + +# Enable IMU thermal control +param set-default SENS_EN_THERMAL 1 + +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/cuav/x7pro/init/rc.board_sensors b/boards/cuav/x7pro/init/rc.board_sensors index d7071ff79f..8248a1ad8c 100644 --- a/boards/cuav/x7pro/init/rc.board_sensors +++ b/boards/cuav/x7pro/init/rc.board_sensors @@ -1,20 +1,22 @@ #!/bin/sh # -# CUAV X7Pro specific board sensors init +# board specific sensors init #------------------------------------------------------------------------------ board_adc start -# SPI1 (internal) +# SPI1 #adis16470 -s start -rm3100 -s start -icm20689 -s -R 2 start +icm20689 -s -b 1 -R 2 start -# SPI4 (internal) -bmi088 -A -s -R 10 start -bmi088 -G -s -R 10 start +# SPI2 +rm3100 -s -b 2 start + +# SPI4 +bmi088 -s -b 4 -A -R 2 start +bmi088 -s -b 4 -G -R 2 start ms5611 -s -b 4 start -# SPI6 (internal) +# SPI6 icm20649 -s -b 6 -R 2 start ms5611 -s -b 6 start diff --git a/boards/cubepilot/cubeorange/init/rc.board_defaults b/boards/cubepilot/cubeorange/init/rc.board_defaults index 39012e2794..f697cafd89 100644 --- a/boards/cubepilot/cubeorange/init/rc.board_defaults +++ b/boards/cubepilot/cubeorange/init/rc.board_defaults @@ -21,27 +21,26 @@ then fi unset BL_FILE -if [ $AUTOCNF = yes ] -then - param set BAT_V_DIV 10.1 - param set BAT1_V_DIV 10.1 - param set BAT2_V_DIV 10.1 - param set BAT_A_PER_V 17 - param set BAT1_A_PER_V 17 - param set BAT2_A_PER_V 17 +param set-default BAT_V_DIV 10.1 +param set-default BAT1_V_DIV 10.1 +param set-default BAT2_V_DIV 10.1 - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 +param set-default BAT_A_PER_V 17 +param set-default BAT1_A_PER_V 17 +param set-default BAT2_A_PER_V 17 - # Disable IMU thermal control - param set SENS_EN_THERMAL 0 +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 + +# Disable IMU thermal control +param set-default SENS_EN_THERMAL 0 + +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 set IOFW "/etc/extras/cubepilot_io-v2_default.bin" diff --git a/boards/cubepilot/cubeyellow/init/rc.board_defaults b/boards/cubepilot/cubeyellow/init/rc.board_defaults index 4ced42e12a..e5cf535699 100644 --- a/boards/cubepilot/cubeyellow/init/rc.board_defaults +++ b/boards/cubepilot/cubeyellow/init/rc.board_defaults @@ -4,25 +4,23 @@ #------------------------------------------------------------------------------ -if [ $AUTOCNF = yes ] -then - param set BAT_V_DIV 10.1 - param set BAT1_V_DIV 10.1 - param set BAT2_V_DIV 10.1 +param set-default BAT_V_DIV 10.1 +param set-default BAT1_V_DIV 10.1 +param set-default BAT2_V_DIV 10.1 - param set BAT_A_PER_V 17 - param set BAT1_A_PER_V 17 - param set BAT2_A_PER_V 17 +param set-default BAT_A_PER_V 17 +param set-default BAT1_A_PER_V 17 +param set-default BAT2_A_PER_V 17 - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 - # Disable IMU thermal control - param set SENS_EN_THERMAL 0 +# Disable IMU thermal control +param set-default SENS_EN_THERMAL 0 + +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 set IOFW "/etc/extras/cubepilot_io-v2_default.bin" diff --git a/boards/holybro/durandal-v1/init/rc.board_defaults b/boards/holybro/durandal-v1/init/rc.board_defaults index cbd3a50b4d..7dddf07bf4 100644 --- a/boards/holybro/durandal-v1/init/rc.board_defaults +++ b/boards/holybro/durandal-v1/init/rc.board_defaults @@ -22,18 +22,17 @@ then fi unset BL_FILE -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 - # Enable IMU thermal control - param set SENS_EN_THERMAL 1 +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 + +# Enable IMU thermal control +param set-default SENS_EN_THERMAL 1 + +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/holybro/kakutef7/init/rc.board_defaults b/boards/holybro/kakutef7/init/rc.board_defaults index 6463b408c7..3fc24b2e0a 100644 --- a/boards/holybro/kakutef7/init/rc.board_defaults +++ b/boards/holybro/kakutef7/init/rc.board_defaults @@ -4,27 +4,21 @@ #------------------------------------------------------------------------------ # system_power unavailable -param set CBRK_SUPPLY_CHK 894281 +param set-default CBRK_SUPPLY_CHK 894281 -if param compare SYS_AUTOSTART 0 -then - # Select the Generic 250 Racer by default - param set SYS_AUTOSTART 4050 - set AUTOCNF yes -fi +# Select the Generic 250 Racer by default +param set-default SYS_AUTOSTART 4050 -if [ $AUTOCNF = yes ] -then - # use the Q attitude estimator, it works w/o mag or GPS. - param set SYS_MC_EST_GROUP 3 - param set ATT_ACC_COMP 0 - param set ATT_W_ACC 0.4000 - param set ATT_W_GYRO_BIAS 0.0000 +# use the Q attitude estimator, it works w/o mag or GPS. +param set-default SYS_MC_EST_GROUP 3 +param set-default ATT_ACC_COMP 0 +param set-default ATT_W_ACC 0.4000 +param set-default ATT_W_GYRO_BIAS 0.0000 - param set SYS_HAS_MAG 0 +param set-default SYS_HAS_MAG 0 + +# the startup tune is not great on a binary output buzzer, so disable it +param set-default CBRK_BUZZER 782090 - # the startup tune is not great on a binary output buzzer, so disable it - param set CBRK_BUZZER 782090 -fi set LOGGER_BUF 30 diff --git a/boards/holybro/pix32v5/init/rc.board_defaults b/boards/holybro/pix32v5/init/rc.board_defaults index c6a14b7b37..47fd0057ba 100644 --- a/boards/holybro/pix32v5/init/rc.board_defaults +++ b/boards/holybro/pix32v5/init/rc.board_defaults @@ -3,17 +3,14 @@ # PX4 FMUv5 specific board defaults #------------------------------------------------------------------------------ +# Multi-EKF +param set-default EKF2_MULTI_IMU 2 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 2 +param set-default SENS_MAG_MODE 0 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 2 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 2 - param set SENS_MAG_MODE 0 +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/intel/aerofc-v1/init/rc.board_defaults b/boards/intel/aerofc-v1/init/rc.board_defaults index 4c5302ef2e..ba3caec54f 100644 --- a/boards/intel/aerofc-v1/init/rc.board_defaults +++ b/boards/intel/aerofc-v1/init/rc.board_defaults @@ -4,16 +4,9 @@ #------------------------------------------------------------------------------ # system_power unavailable -param set CBRK_SUPPLY_CHK 894281 +param set-default CBRK_SUPPLY_CHK 894281 -if param compare SYS_AUTOSTART 0 -then - set AUTOCNF yes -fi - -# We don't allow changing AUTOSTART as it doesn't work in -# other configurations. -param set SYS_AUTOSTART 4070 +param set-default SYS_AUTOSTART 4070 set DATAMAN_OPT -i set LOGGER_ARGS "-m mavlink" diff --git a/boards/modalai/fc-v1/init/rc.board_defaults b/boards/modalai/fc-v1/init/rc.board_defaults index 575c03ec00..22338fde80 100644 --- a/boards/modalai/fc-v1/init/rc.board_defaults +++ b/boards/modalai/fc-v1/init/rc.board_defaults @@ -18,21 +18,17 @@ # # Common settings across Flight Core configurations # -if [ $AUTOCNF = yes ] -then - # - # Disable safety switch by default (pull high to 3.3V to enable) - # V106 - J13 pin 5 - # V110 - J1011 pin 5 - # - param set CBRK_IO_SAFETY 22027 - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 +# Disable safety switch by default (pull high to 3.3V to enable) +# V106 - J13 pin 5 +# V110 - J1011 pin 5 +param set-default CBRK_IO_SAFETY 22027 - param set UAVCAN_ENABLE 2 -fi +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 + +param set-default UAVCAN_ENABLE 2 # # Stand Alone configuration @@ -52,9 +48,9 @@ then if param compare MAV_1_CONFIG 0 then echo "V106 - Defualt configuration TELEM2 on /dev/ttyS4 at 921600 in Normal Mode" - param set MAV_1_CONFIG 102 # TELEM2 - param set MAV_1_MODE 2 # Onboard - param set SER_TEL2_BAUD 921600 # VIO data + param set-default MAV_1_CONFIG 102 # TELEM2 + param set-default MAV_1_MODE 2 # Onboard + param set-default SER_TEL2_BAUD 921600 # VIO data fi fi @@ -62,9 +58,9 @@ then if [ $AUTOCNF = yes ] then echo "V106 - Auto Configuring TELEM2 on /dev/ttyS4 at 921600 in Normal Mode" - param set MAV_1_CONFIG 102 # TELEM2 - param set MAV_1_MODE 2 # Onboard - param set SER_TEL2_BAUD 921600 # VIO data + param set-default MAV_1_CONFIG 102 # TELEM2 + param set-default MAV_1_MODE 2 # Onboard + param set-default SER_TEL2_BAUD 921600 # VIO data fi fi @@ -86,9 +82,9 @@ then if ! param compare MAV_1_CONFIG 102 then echo "V110 - Defualt configuration TELEM2 on /dev/ttyS4 at 921600 in Normal Mode" - param set MAV_1_CONFIG 102 # TELEM2 - param set MAV_1_MODE 2 # Onboard - param set SER_TEL2_BAUD 921600 + param set-default MAV_1_CONFIG 102 # TELEM2 + param set-default MAV_1_MODE 2 # Onboard + param set-default SER_TEL2_BAUD 921600 fi fi @@ -96,9 +92,9 @@ then if [ $AUTOCNF = yes ] then echo "V110 - Auto Configuring TELEM2 on /dev/ttyS4 at 921600 in Normal Mode" - param set MAV_1_CONFIG 102 # TELEM2 - param set MAV_1_MODE 2 # Onboard - param set SER_TEL2_BAUD 921600 + param set-default MAV_1_CONFIG 102 # TELEM2 + param set-default MAV_1_MODE 2 # Onboard + param set-default SER_TEL2_BAUD 921600 fi fi diff --git a/boards/mro/ctrl-zero-f7-oem/default.cmake b/boards/mro/ctrl-zero-f7-oem/default.cmake new file mode 100644 index 0000000000..a3bcb9c124 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/default.cmake @@ -0,0 +1,126 @@ + +px4_add_board( + PLATFORM nuttx + VENDOR mro + MODEL ctrl-zero-f7-oem + LABEL default + TOOLCHAIN arm-none-eabi + ARCHITECTURE cortex-m7 + ROMFSROOT px4fmu_common + TESTING + UAVCAN_INTERFACES 2 + SERIAL_PORTS + TEL1:/dev/ttyS0 + TEL2:/dev/ttyS1 + GPS1:/dev/ttyS2 + #RC:/dev/ttyS3 + #CONSOLE:/dev/ttyS4 + #FRSKY:/dev/ttyS5 + DRIVERS + adc/board_adc + #barometer # all available barometer drivers + barometer/dps310 + batt_smbus + camera_capture + camera_trigger + differential_pressure # all available differential pressure drivers + distance_sensor # all available distance sensor drivers + #dshot + gps + #heater + #imu # all available imu drivers + imu/bosch/bmi088 + imu/invensense/icm20602 + imu/invensense/icm20948 + irlock + lights/blinkm + lights/rgbled + lights/rgbled_ncp5623c + magnetometer # all available magnetometer drivers + mkblctrl + #optical_flow # all available optical flow drivers + #osd + pca9685 + power_monitor/ina226 + #protocol_splitter + #pwm_input + pwm_out_sim + pwm_out + rc_input + roboclaw + safety_button + tap_esc + telemetry # all available telemetry drivers + test_ppm + tone_alarm + uavcan + MODULES + airspeed_selector + attitude_estimator_q + battery_status + camera_feedback + commander + dataman + ekf2 + events + flight_mode_manager + fw_att_control + fw_pos_control_l1 + land_detector + landing_target_estimator + load_mon + local_position_estimator + logger + mavlink + mc_att_control + mc_hover_thrust_estimator + mc_pos_control + mc_rate_control + #micrortps_bridge + navigator + rc_update + rover_pos_control + sensors + sih + temperature_compensation + vmount + vtol_att_control + SYSTEMCMDS + bl_update + dmesg + dumpfile + esc_calib + hardfault_log + i2cdetect + led_control + mft + mixer + motor_ramp + motor_test + mtd + nshterm + param + perf + pwm + reboot + reflect + sd_bench + system_time + tests # tests and test runner + top + topic_listener + tune_control + usb_connected + ver + work_queue + EXAMPLES + fixedwing_control # Tutorial code from https://px4.io/dev/example_fixedwing_control + hello + hwtest # Hardware test + #matlab_csv_serial + px4_mavlink_debug # Tutorial code from http://dev.px4.io/en/debug/debug_values.html + px4_simple_app # Tutorial code from http://dev.px4.io/en/apps/hello_sky.html + rover_steering_control # Rover example app + uuv_example_app + work_item + ) diff --git a/boards/mro/ctrl-zero-f7-oem/firmware.prototype b/boards/mro/ctrl-zero-f7-oem/firmware.prototype new file mode 100644 index 0000000000..eb7d32c3b4 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/firmware.prototype @@ -0,0 +1,13 @@ +{ + "board_id": 141, + "magic": "mRo-ctrl-zero-f7-oem", + "description": "Firmware for the mRo-ctrl-zero-f7-oem board", + "image": "", + "build_time": 0, + "summary": "mRo-ctrl-zero-f7-oem", + "version": "0.1", + "image_size": 0, + "image_maxsize": 2064384, + "git_identity": "", + "board_revision": 0 +} diff --git a/boards/mro/ctrl-zero-f7-oem/init/rc.board_defaults b/boards/mro/ctrl-zero-f7-oem/init/rc.board_defaults new file mode 100644 index 0000000000..73371f9d92 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/init/rc.board_defaults @@ -0,0 +1,19 @@ +#!/bin/sh +# +# mRo Control Zero specific board defaults +#------------------------------------------------------------------------------ + + +if [ $AUTOCNF = yes ] +then + # Multi-EKF + param set EKF2_MULTI_IMU 3 + param set SENS_IMU_MODE 0 + + param set UAVCAN_ENABLE 2 +fi + +set LOGGER_BUF 64 +set MIXER_AUX none + +safety_button start diff --git a/boards/mro/ctrl-zero-f7-oem/init/rc.board_mavlink b/boards/mro/ctrl-zero-f7-oem/init/rc.board_mavlink new file mode 100644 index 0000000000..9a4a80a6d3 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/init/rc.board_mavlink @@ -0,0 +1,7 @@ +#!/bin/sh +# +# mRo Control Zero specific board MAVLink startup script. +#------------------------------------------------------------------------------ + +# Start MAVLink on the USB port +mavlink start -d /dev/ttyACM0 diff --git a/boards/mro/ctrl-zero-f7-oem/init/rc.board_sensors b/boards/mro/ctrl-zero-f7-oem/init/rc.board_sensors new file mode 100644 index 0000000000..88205f4ec8 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/init/rc.board_sensors @@ -0,0 +1,19 @@ +#!/bin/sh +# +# mRo Control Zero specific board sensors init +#------------------------------------------------------------------------------ + +board_adc start + +# Internal ICM-20602 +icm20602 -s -b 1 -R 8 start + +# Internal SPI bus BMI088 accel & gyro +bmi088 -A -s -b 5 -R 8 start +bmi088 -G -s -b 5 -R 8 start + +# Internal ICM-20948 (with magnetometer) +icm20948 -s -b 1 -R 8 -M start + +# Interal DPS310 (barometer) +dps310 -s -b 2 start diff --git a/boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board.h b/boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board.h new file mode 100644 index 0000000000..51260395e5 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board.h @@ -0,0 +1,300 @@ +/************************************************************************************ + * board.h + * + * Copyright (C) 2016-2018 Gregory Nutt. All rights reserved. + * Authors: David Sidrane + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +#pragma once + +/************************************************************************************ + * Included Files + ************************************************************************************/ +#include "board_dma_map.h" + +#include + +#ifndef __ASSEMBLY__ +# include +#endif + +#include "stm32_rcc.h" +#include "stm32_sdmmc.h" + +/************************************************************************************ + * Pre-processor Definitions + ************************************************************************************/ + +/* Clocking *************************************************************************/ +/* The mRo Control Zero F7 OEM board provides the following clock sources: + * + * 24 MHz crystal for HSE + * + * So we have these clock source available within the STM32 + * + * HSI: 16 MHz RC factory-trimmed + * HSE: 24 MHz crystal for HSE + */ +#define STM32_BOARD_XTAL 24000000ul + +#define STM32_HSI_FREQUENCY 16000000ul +#define STM32_LSI_FREQUENCY 32000 +#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL +#define STM32_LSE_FREQUENCY 0 + +/* Main PLL Configuration. + * + * PLL source is HSE = 24,000,000 + * + * PLL_VCO = (STM32_HSE_FREQUENCY / PLLM) * PLLN + * Subject to: + * + * 2 <= PLLM <= 63 + * 192 <= PLLN <= 432 + * 192 MHz <= PLL_VCO <= 432MHz + * + * SYSCLK = PLL_VCO / PLLP + * Subject to + * + * PLLP = {2, 4, 6, 8} + * SYSCLK <= 216 MHz + * + * SDMMC and RNG Clock = PLL_VCO / PLLQ + * Subject to + * The SDMMC and the random number generator need a frequency lower than or equal + * to 48 MHz to work correctly. + * + * 2 <= PLLQ <= 15 + */ + +/* SDMMCCLK (= USB OTG FS clock = RNGCLK) should be <= 48MHz + * + * PLL_VCO = (16,000,000 / 24) * 432 = 432 MHz + * SYSCLK = 432 MHz / 2 = 216 MHz + * SDMMC and RNG Clock = 432 MHz / 9 = 48 MHz + */ +#define STM32_PLLCFG_PLLM RCC_PLLCFG_PLLM(24) +#define STM32_PLLCFG_PLLN RCC_PLLCFG_PLLN(432) +#define STM32_PLLCFG_PLLP RCC_PLLCFG_PLLP_2 +#define STM32_PLLCFG_PLLQ RCC_PLLCFG_PLLQ(9) + +#define STM32_VCO_FREQUENCY ((STM32_HSE_FREQUENCY / 24) * 432) +#define STM32_SYSCLK_FREQUENCY (STM32_VCO_FREQUENCY / 2) +#define STM32_OTGFS_FREQUENCY (STM32_VCO_FREQUENCY / 9) + +/* Configure factors for PLLSAI clock */ +#define CONFIG_STM32F7_PLLSAI 1 +#define STM32_RCC_PLLSAICFGR_PLLSAIN RCC_PLLSAICFGR_PLLSAIN(192) +#define STM32_RCC_PLLSAICFGR_PLLSAIP RCC_PLLSAICFGR_PLLSAIP(8) +#define STM32_RCC_PLLSAICFGR_PLLSAIQ RCC_PLLSAICFGR_PLLSAIQ(4) +#define STM32_RCC_PLLSAICFGR_PLLSAIR RCC_PLLSAICFGR_PLLSAIR(2) + +/* Configure Dedicated Clock Configuration Register */ +#define STM32_RCC_DCKCFGR1_PLLI2SDIVQ RCC_DCKCFGR1_PLLI2SDIVQ(1) +#define STM32_RCC_DCKCFGR1_PLLSAIDIVQ RCC_DCKCFGR1_PLLSAIDIVQ(1) +#define STM32_RCC_DCKCFGR1_PLLSAIDIVR RCC_DCKCFGR1_PLLSAIDIVR(0) +#define STM32_RCC_DCKCFGR1_SAI1SRC RCC_DCKCFGR1_SAI1SEL(0) +#define STM32_RCC_DCKCFGR1_SAI2SRC RCC_DCKCFGR1_SAI2SEL(0) +#define STM32_RCC_DCKCFGR1_TIMPRESRC 0 +#define STM32_RCC_DCKCFGR1_DFSDM1SRC 0 +#define STM32_RCC_DCKCFGR1_ADFSDM1SRC 0 + +/* Configure factors for PLLI2S clock */ +#define CONFIG_STM32F7_PLLI2S 1 +#define STM32_RCC_PLLI2SCFGR_PLLI2SN RCC_PLLI2SCFGR_PLLI2SN(192) +#define STM32_RCC_PLLI2SCFGR_PLLI2SP RCC_PLLI2SCFGR_PLLI2SP(2) +#define STM32_RCC_PLLI2SCFGR_PLLI2SQ RCC_PLLI2SCFGR_PLLI2SQ(2) +#define STM32_RCC_PLLI2SCFGR_PLLI2SR RCC_PLLI2SCFGR_PLLI2SR(2) + +/* Configure Dedicated Clock Configuration Register 2 */ +#define STM32_RCC_DCKCFGR2_USART1SRC RCC_DCKCFGR2_USART1SEL_APB +#define STM32_RCC_DCKCFGR2_USART2SRC RCC_DCKCFGR2_USART2SEL_APB +#define STM32_RCC_DCKCFGR2_UART4SRC RCC_DCKCFGR2_UART4SEL_APB +#define STM32_RCC_DCKCFGR2_UART5SRC RCC_DCKCFGR2_UART5SEL_APB +#define STM32_RCC_DCKCFGR2_USART6SRC RCC_DCKCFGR2_USART6SEL_APB +#define STM32_RCC_DCKCFGR2_UART7SRC RCC_DCKCFGR2_UART7SEL_APB +#define STM32_RCC_DCKCFGR2_UART8SRC RCC_DCKCFGR2_UART8SEL_APB +#define STM32_RCC_DCKCFGR2_I2C1SRC RCC_DCKCFGR2_I2C1SEL_HSI +#define STM32_RCC_DCKCFGR2_I2C2SRC RCC_DCKCFGR2_I2C2SEL_HSI +#define STM32_RCC_DCKCFGR2_I2C3SRC RCC_DCKCFGR2_I2C3SEL_HSI +#define STM32_RCC_DCKCFGR2_I2C4SRC RCC_DCKCFGR2_I2C4SEL_HSI +#define STM32_RCC_DCKCFGR2_LPTIM1SRC RCC_DCKCFGR2_LPTIM1SEL_APB +#define STM32_RCC_DCKCFGR2_CECSRC RCC_DCKCFGR2_CECSEL_HSI +#define STM32_RCC_DCKCFGR2_CK48MSRC RCC_DCKCFGR2_CK48MSEL_PLL +#define STM32_RCC_DCKCFGR2_SDMMCSRC RCC_DCKCFGR2_SDMMCSEL_48MHZ +#define STM32_RCC_DCKCFGR2_SDMMC2SRC RCC_DCKCFGR2_SDMMC2SEL_48MHZ +#define STM32_RCC_DCKCFGR2_DSISRC RCC_DCKCFGR2_DSISEL_PHY + + +/* Several prescalers allow the configuration of the two AHB buses, the + * high-speed APB (APB2) and the low-speed APB (APB1) domains. The maximum + * frequency of the two AHB buses is 216 MHz while the maximum frequency of + * the high-speed APB domains is 108 MHz. The maximum allowed frequency of + * the low-speed APB domain is 54 MHz. + */ + +/* AHB clock (HCLK) is SYSCLK (216 MHz) */ +#define STM32_RCC_CFGR_HPRE RCC_CFGR_HPRE_SYSCLK /* HCLK = SYSCLK / 1 */ +#define STM32_HCLK_FREQUENCY STM32_SYSCLK_FREQUENCY +#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ + +/* APB1 clock (PCLK1) is HCLK/4 (54 MHz) */ +#define STM32_RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_HCLKd4 /* PCLK1 = HCLK / 4 */ +#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/4) + +/* Timers driven from APB1 will be twice PCLK1 */ +#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) + +/* APB2 clock (PCLK2) is HCLK/2 (108MHz) */ +#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ +#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* Timers driven from APB2 will be twice PCLK2 */ +#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM9_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM10_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM11_CLKIN (2*STM32_PCLK2_FREQUENCY) + +/* SDMMC dividers. Note that slower clocking is required when DMA is disabled + * in order to avoid RX overrun/TX underrun errors due to delayed responses + * to service FIFOs in interrupt driven mode. These values have not been + * tuned!!! + * + * SDMMCCLK=48MHz, SDMMC_CK=SDMMCCLK/(118+2)=400 KHz + */ + +/* Use the Falling edge of the SDIO_CLK clock to change the edge the + * data and commands are change on + */ +#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE + +#define STM32_SDMMC_INIT_CLKDIV (118 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) + +/* DMA ON: SDMMCCLK=48MHz, SDMMC_CK=SDMMCCLK/(1+2)=16 MHz + * DMA OFF: SDMMCCLK=48MHz, SDMMC_CK=SDMMCCLK/(2+2)=12 MHz + */ + +#ifdef CONFIG_STM32F7_SDMMC_DMA +# define STM32_SDMMC_MMCXFR_CLKDIV (1 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#else +# define STM32_SDMMC_MMCXFR_CLKDIV (2 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#endif + +/* DMA ON: SDMMCCLK=48MHz, SDMMC_CK=SDMMCCLK/(1+2)=16 MHz + * DMA OFF: SDMMCCLK=48MHz, SDMMC_CK=SDMMCCLK/(2+2)=12 MHz + */ +#ifdef CONFIG_STM32F7_SDMMC_DMA +# define STM32_SDMMC_SDXFR_CLKDIV (1 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#else +# define STM32_SDMMC_SDXFR_CLKDIV (2 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#endif + +/* FLASH wait states + * + * --------- ---------- ----------- + * VDD MAX SYSCLK WAIT STATES + * --------- ---------- ----------- + * 1.7-2.1 V 180 MHz 8 + * 2.1-2.4 V 216 MHz 9 + * 2.4-2.7 V 216 MHz 8 + * 2.7-3.6 V 216 MHz 7 + * --------- ---------- ----------- + */ + +#define BOARD_FLASH_WAITSTATES 7 + + +/* UART/USART */ +#define GPIO_USART2_RX GPIO_USART2_RX_2 /* PD6 */ +#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */ +#define GPIO_USART2_RTS GPIO_USART2_RTS_2 /* PD4 */ +#define GPIO_USART2_CTS GPIO_USART2_CTS_2 /* PD3 */ + +#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ +#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ +#define GPIO_USART3_RTS GPIO_USART3_RTS_2 /* PD12 */ +#define GPIO_USART3_CTS GPIO_USART3_CTS_2 /* PD11 */ + +#define GPIO_UART4_RX GPIO_UART4_RX_1 /* PA1 */ +#define GPIO_UART4_TX GPIO_UART4_TX_1 /* PA0 */ + +#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */ +#define GPIO_USART6_TX GPIO_USART6_TX_2 /* PG14 */ + +#define GPIO_UART7_RX GPIO_UART7_RX_1 /* PE7 */ +#define GPIO_UART7_TX GPIO_UART7_TX_1 /* PE8 */ + +/* USART8: has no remap + * + * GPIO_UART8_RX PE0 + * GPIO_UART8_TX PE1 + */ + + +/* CAN */ +#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ +#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ +#define GPIO_CAN2_RX GPIO_CAN2_RX_1 /* PB12 */ +#define GPIO_CAN2_TX GPIO_CAN2_TX_1 /* PB13 */ + + +/* SPI */ +#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1 /* PA5 */ +#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ +#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1 /* PA7 */ + +#define GPIO_SPI2_SCK GPIO_SPI2_SCK_2 /* PB10 */ +#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1 /* PB14 */ +#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_1 /* PB15 */ + +#define GPIO_SPI5_SCK GPIO_SPI5_SCK_1 /* PF7 */ +#define GPIO_SPI5_MISO GPIO_SPI5_MISO_1 /* PF8 */ +#define GPIO_SPI5_MOSI GPIO_SPI5_MOSI_1 /* PF9 */ + + +/* I2C */ +#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2 /* PB8 */ +#define GPIO_I2C1_SDA GPIO_I2C1_SDA_2 /* PB9 */ + +#define GPIO_I2C3_SCL GPIO_I2C3_SCL_2 /* PH7 */ +#define GPIO_I2C3_SDA GPIO_I2C3_SDA_2 /* PH8 */ + +#define GPIO_I2C4_SCL GPIO_I2C4_SCL_2 /* PF14 */ +#define GPIO_I2C4_SDA GPIO_I2C4_SDA_2 /* PF15 */ diff --git a/boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board_dma_map.h b/boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board_dma_map.h new file mode 100644 index 0000000000..c3df4fe607 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board_dma_map.h @@ -0,0 +1,98 @@ +/**************************************************************************** + * + * Copyright (c) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#pragma once + +/* +| DMA1 | Stream 0 | Stream 1 | Stream 2 | Stream 3 | Stream 4 | Stream 5 | Stream 6 | Stream 7 | +|------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------| +| Channel 0 | SPI3_RX_1 | SPDIFRX_DT | SPI3_RX_2 | SPI2_RX | SPI2_TX | SPI3_TX_1 | SPDIFRX_CS | SPI3_TX_2 | +| Channel 1 | I2C1_RX | I2C3_RX | TIM7_UP_1 | - | TIM7_UP_2 | I2C1_RX_1 | I2C1_TX | I2C1_TX_1 | +| Channel 2 | TIM4_CH1 | - | I2C4_RX | TIM4_CH2 | - | I2C4_RX | TIM4_UP | TIM4_CH3 | +| Channel 3 | - | TIM2_UP_1 | I2C3_RX_1 | - | I2C3_TX | TIM2_CH1 | TIM2_CH2 | TIM2_UP_2 | +| | | TIM2_CH3 | | | | | TIM2_CH4_1 | TIM2_CH4_2 | +| Channel 4 | UART5_RX | USART3_RX | UART4_RX | USART3_TX_1 | UART4_TX | USART2_RX | USART2_TX | UART5_TX | +| Channel 5 | UART8_TX | UART7_TX | TIM3_CH4 | UART7_RX | TIM3_CH1 | TIM3_CH2 | UART8_RX | TIM3_CH3 | +| | | | TIM3_UP | | TIM3_TRIG | | | | +| Channel 6 | TIM5_CH3 | TIM5_CH4_1 | TIM5_CH1 | TIM5_CH4_2 | TIM5_CH2 | - | TIM5_UP_2 | - | +| | TIM5_UP_1 | TIM5_TRIG_1 | | TIM5_TRIG_2 | | | | | +| Channel 7 | - | TIM6_UP | I2C2_RX | I2C2_RX_1 | USART3_TX_2 | DAC1 | DAC2 | I2C2_TX | +| Channel 8 | I2C3_TX | I2C4_RX | - | - | I2C2_TX | - | I2C4_TX | - | +| Channel 9 | - | SPI2_RX | - | - | - | - | SPI2_TX | - | +| | | | | | | | | | +| Usage | | USART3_RX | UART4_RX | USART3_TX_1 | | USART2_RX | | | + + +| DMA2 | Stream 0 | Stream 1 | Stream 2 | Stream 3 | Stream 4 | Stream 5 | Stream 6 | Stream 7 | +|------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------| +| Channel 0 | ADC1_1 | SAI1_A | TIM8_CH1_1 | SAI1_A_1 | ADC1_2 | SAI1_B_1 | TIM1_CH1_1 | SAI2_B_2 | +| | | | TIM8_CH2_1 | | | | TIM1_CH2_1 | | +| | | | TIM8_CH3_1 | | | | TIM1_CH3_1 | | +| Channel 1 | - | DCMI_1 | ADC2_1 | ADC2_2 | SAI1_B | SPI6_TX | SPI6_RX | DCMI_2 | +| Channel 2 | ADC3_1 | ADC3_2 | - | SPI5_RX_1 | SPI5_TX_1 | CRYP_OUT | CRYP_IN | HASH_IN | +| Channel 3 | SPI1_RX_1 | - | SPI1_RX_2 | SPI1_TX_1 | SAI2_A | SPI1_TX_2 | SAI2_B | QUADSPI | +| Channel 4 | SPI4_RX_1 | SPI4_TX_1 | USART1_RX_1 | SDMMC1_1 | - | USART1_RX_2 | SDMMC1_2 | USART1_TX | +| Channel 5 | - | USART6_RX_1 | USART6_RX_2 | SPI4_RX_2 | SPI4_TX_2 | - | USART6_TX_1 | USART6_TX_2 | +| Channel 6 | TIM1_TRIG_1 | TIM1_CH1_2 | TIM1_CH2_2 | TIM1_CH1 | TIM1_CH4 | TIM1_UP | TIM1_CH3_2 | - | +| | | | | | TIM1_TRIG_2 | | | | +| | | | | | TIM1_COM | | | | +| Channel 7 | - | TIM8_UP | TIM8_CH1_2 | TIM8_CH2_2 | TIM8_CH3_2 | SPI5_RX_2 | SPI5_TX_2 | TIM8_CH4 | +| | | | | | | | | TIM8_TRIG | +| | | | | | | | | TIM8_COM | +| Channel 8 | DSFDM1_FLT0 | DSFDM1_FLT1 | DSFDM1_FLT2 | DSFDM1_FLT3 | DSFDM1_FLT0 | DSFDM1_FLT1 | DSFDM1_FLT2 | DSFDM1_FLT3 | +| Channel 9 | JPEG_IN | JPEG_OUT | SPI4_TX | JPEG_IN | JPEG_OUT | SPI5_RX | - | - | +| Channel 10 | SAI1_B | SAI2_B | SAI2_A | - | - | - | SAI1_A | - | +| Channel 11 | SDMMC2 | - | QUADSPI | - | - | SDMMC2 | - | - | +| | | | | | | | | | +| Usage | SPI1_RX_1 | USART6_RX_2 | | SPI1_TX_1 | SPI5_TX_1 | SPI5_RX_2 | SDMMC1_2 | | + */ + +// DMA1 Channel/Stream Selections +//--------------------------------------------//---------------------------//---------------- +// DMAMAP_USART3_RX // DMA1, Stream 1, Channel 4 +// DMAMAP_UART4_RX // DMA1, Stream 2, Channel 4 +#define DMAMAP_USART3_TX DMAMAP_USART3_TX_1 // DMA1, Stream 3, Channel 4 +// AVAILABLE // DMA2, Stream 4 +// DMAMAP_USART2_RX // DMA1, Stream 5, Channel 4 + + +// DMA2 Channel/Stream Selections +//--------------------------------------------//---------------------------//---------------- +#define DMAMAP_SPI1_RX DMAMAP_SPI1_RX_1 // DMA2, Stream 0, Channel 3 (SPI1 sensors RX) +#define DMAMAP_USART6_RX DMAMAP_USART6_RX_1 // DMA2, Stream 1, Channel 5 +// AVAILABLE // DMA2, Stream 2 +#define DMAMAP_SPI1_TX DMAMAP_SPI1_TX_1 // DMA2, Stream 3, Channel 3 (SPI1 sensors TX) +#define DMAMAP_SPI5_TX DMAMAP_SPI5_TX_1 // DMA2, Stream 4, Channel 3 (SPI5 sensors TX) +#define DMAMAP_SPI5_RX DMAMAP_SPI5_RX_2 // DMA2, Stream 5, Channel 3 (SPI5 sensors RX) +#define DMAMAP_SDMMC1 DMAMAP_SDMMC1_2 // DMA2, Stream 6, Channel 4 +// AVAILABLE // DMA2, Stream 7, Channel 5 diff --git a/boards/mro/ctrl-zero-f7-oem/nuttx-config/nsh/defconfig b/boards/mro/ctrl-zero-f7-oem/nuttx-config/nsh/defconfig new file mode 100644 index 0000000000..fdad0fa052 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/nuttx-config/nsh/defconfig @@ -0,0 +1,237 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DISABLE_ENVIRON is not set +# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set +# CONFIG_MMCSD_HAVE_CARDDETECT is not set +# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set +# CONFIG_MMCSD_MMCSUPPORT is not set +# CONFIG_MMCSD_SPI is not set +# CONFIG_NSH_DISABLEBG is not set +# CONFIG_NSH_DISABLESCRIPT is not set +# CONFIG_NSH_DISABLE_DF is not set +# CONFIG_NSH_DISABLE_EXEC is not set +# CONFIG_NSH_DISABLE_EXIT is not set +# CONFIG_NSH_DISABLE_GET is not set +# CONFIG_NSH_DISABLE_ITEF is not set +# CONFIG_NSH_DISABLE_LOOPS is not set +# CONFIG_NSH_DISABLE_SEMICOLON is not set +# CONFIG_NSH_DISABLE_TIME is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD_CUSTOM=y +CONFIG_ARCH_BOARD_CUSTOM_DIR="../nuttx-config" +CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y +CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" +CONFIG_ARCH_CHIP="stm32f7" +CONFIG_ARCH_CHIP_STM32F777II=y +CONFIG_ARCH_CHIP_STM32F7=y +CONFIG_ARCH_INTERRUPTSTACK=512 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_BASEPRI_WAR=y +CONFIG_ARMV7M_DCACHE=y +CONFIG_ARMV7M_DTCM=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_ARMV7M_MEMCPY=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_CRASHDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=22114 +CONFIG_BOARD_RESET_ON_ASSERT=2 +CONFIG_BUILTIN=y +CONFIG_C99_BOOL8=y +CONFIG_CDCACM=y +CONFIG_CDCACM_PRODUCTID=0x008D +CONFIG_CDCACM_PRODUCTSTR="mRoControlZeroF7" +CONFIG_CDCACM_RXBUFSIZE=600 +CONFIG_CDCACM_TXBUFSIZE=12000 +CONFIG_CDCACM_VENDORID=0x26ac +CONFIG_CDCACM_VENDORSTR="mRo" +CONFIG_CLOCK_MONOTONIC=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_HARDFAULT_ALERT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_SMALL=y +CONFIG_DEV_FIFO_SIZE=0 +CONFIG_DEV_PIPE_MAXSIZE=1024 +CONFIG_DEV_PIPE_SIZE=70 +CONFIG_DISABLE_MQUEUE=y +CONFIG_FAT_DMAMEMORY=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FAT_LFN_ALIAS_HASH=y +CONFIG_FDCLONE_STDIO=y +CONFIG_FS_BINFS=y +CONFIG_FS_CROMFS=y +CONFIG_FS_FAT=y +CONFIG_FS_FATTIME=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_FS_ROMFS=y +CONFIG_GRAN=y +CONFIG_GRAN_INTR=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_I2C=y +CONFIG_I2C_RESET=y +CONFIG_IDLETHREAD_STACKSIZE=750 +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_LIBC_LONG_LONG=y +CONFIG_LIBC_STRERROR=y +CONFIG_MAX_TASKS=64 +CONFIG_MEMSET_64BIT=y +CONFIG_MEMSET_OPTSPEED=y +CONFIG_MMCSD=y +CONFIG_MMCSD_SDIO=y +CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y +CONFIG_MM_REGIONS=3 +CONFIG_MTD=y +CONFIG_MTD_BYTE_WRITE=y +CONFIG_MTD_PARTITION=y +CONFIG_MTD_RAMTRON=y +CONFIG_NAME_MAX=40 +CONFIG_NFILE_DESCRIPTORS=12 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_ARCHROMFS=y +CONFIG_NSH_ARGCAT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_CMDPARMS=y +CONFIG_NSH_CROMFSETC=y +CONFIG_NSH_DISABLE_IFCONFIG=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_DISABLE_MB=y +CONFIG_NSH_DISABLE_MH=y +CONFIG_NSH_DISABLE_TELNETD=y +CONFIG_NSH_LINELEN=128 +CONFIG_NSH_MAXARGUMENTS=15 +CONFIG_NSH_NESTDEPTH=8 +CONFIG_NSH_QUOTE=y +CONFIG_NSH_ROMFSETC=y +CONFIG_NSH_ROMFSSECTSIZE=128 +CONFIG_NSH_STRERROR=y +CONFIG_NSH_VARS=y +CONFIG_PIPES=y +CONFIG_PREALLOC_TIMERS=50 +CONFIG_PRIORITY_INHERITANCE=y +CONFIG_PTHREAD_MUTEX_ROBUST=y +CONFIG_PTHREAD_STACK_MIN=512 +CONFIG_RAMTRON_SETSPEED=y +CONFIG_RAMTRON_WRITEWAIT=y +CONFIG_RAM_SIZE=245760 +CONFIG_RAM_START=0x20010000 +CONFIG_RAW_BINARY=y +CONFIG_RTC_DATETIME=y +CONFIG_SCHED_ATEXIT=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_HPWORKPRIORITY=249 +CONFIG_SCHED_HPWORKSTACKSIZE=1280 +CONFIG_SCHED_INSTRUMENTATION=y +CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_LPWORKPRIORITY=50 +CONFIG_SCHED_LPWORKSTACKSIZE=1632 +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SDMMC1_SDIO_MODE=y +CONFIG_SDMMC1_SDIO_PULLUP=y +CONFIG_SEM_NNESTPRIO=8 +CONFIG_SEM_PREALLOCHOLDERS=0 +CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y +CONFIG_SERIAL_TERMIOS=y +CONFIG_SIG_DEFAULT=y +CONFIG_SIG_SIGALRM_ACTION=y +CONFIG_SIG_SIGUSR1_ACTION=y +CONFIG_SIG_SIGUSR2_ACTION=y +CONFIG_SIG_SIGWORK=4 +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=30 +CONFIG_START_MONTH=11 +CONFIG_STDIO_BUFFER_SIZE=256 +CONFIG_STM32F7_ADC1=y +CONFIG_STM32F7_BBSRAM=y +CONFIG_STM32F7_BBSRAM_FILES=5 +CONFIG_STM32F7_BKPSRAM=y +CONFIG_STM32F7_DMA1=y +CONFIG_STM32F7_DMA2=y +CONFIG_STM32F7_DMACAPABLE=y +CONFIG_STM32F7_FLOWCONTROL_BROKEN=y +CONFIG_STM32F7_I2C1=y +CONFIG_STM32H7_I2C3=y +CONFIG_STM32H7_I2C4=y +CONFIG_STM32F7_I2C_DYNTIMEO=y +CONFIG_STM32F7_I2C_DYNTIMEO_STARTSTOP=10 +CONFIG_STM32F7_OTGFS=y +CONFIG_STM32F7_PROGMEM=y +CONFIG_STM32F7_PWR=y +CONFIG_STM32F7_RTC=y +CONFIG_STM32F7_RTC_HSECLOCK=y +CONFIG_STM32F7_RTC_MAGIC_REG=1 +CONFIG_STM32F7_SAVE_CRASHDUMP=y +CONFIG_STM32F7_SDMMC1=y +CONFIG_STM32F7_SDMMC_DMA=y +CONFIG_STM32F7_SERIALBRK_BSDCOMPAT=y +CONFIG_STM32F7_SERIAL_DISABLE_REORDERING=y +CONFIG_STM32F7_SPI1=y +CONFIG_STM32F7_SPI1_DMA=y +CONFIG_STM32F7_SPI1_DMA_BUFFER=1024 +CONFIG_STM32F7_SPI2=y +CONFIG_STM32F7_SPI5=y +CONFIG_STM32F7_SPI5_DMA=y +CONFIG_STM32F7_SPI5_DMA_BUFFER=1024 +CONFIG_STM32F7_SPI_DMA=y +CONFIG_STM32F7_SPI_DMATHRESHOLD=8 +CONFIG_STM32F7_TIM10=y +CONFIG_STM32F7_TIM11=y +CONFIG_STM32F7_TIM3=y +CONFIG_STM32F7_TIM9=y +CONFIG_STM32F7_UART4=y +CONFIG_STM32F7_UART7=y +CONFIG_STM32F7_UART8=y +CONFIG_STM32F7_USART2=y +CONFIG_STM32F7_USART3=y +CONFIG_STM32F7_USART6=y +CONFIG_STM32F7_USART_BREAKS=y +CONFIG_STM32F7_USART_INVERT=y +CONFIG_STM32F7_USART_SINGLEWIRE=y +CONFIG_STM32F7_USART_SWAP=y +CONFIG_STM32F7_WWDG=y +CONFIG_SYSTEM_CDCACM=y +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=24 +CONFIG_UART4_BAUD=57600 +CONFIG_UART4_RXBUFSIZE=600 +CONFIG_UART4_RXDMA=y +CONFIG_UART4_TXBUFSIZE=1500 +CONFIG_UART7_BAUD=57600 +CONFIG_UART7_RXBUFSIZE=600 +CONFIG_UART7_SERIAL_CONSOLE=y +CONFIG_UART7_TXBUFSIZE=1500 +CONFIG_UART8_BAUD=57600 +CONFIG_UART8_RXBUFSIZE=600 +CONFIG_UART8_TXBUFSIZE=1500 +CONFIG_USART2_BAUD=57600 +CONFIG_USART2_IFLOWCONTROL=y +CONFIG_USART2_OFLOWCONTROL=y +CONFIG_USART2_RXBUFSIZE=600 +CONFIG_USART2_RXDMA=y +CONFIG_USART2_TXBUFSIZE=1500 +CONFIG_USART3_BAUD=57600 +CONFIG_USART3_IFLOWCONTROL=y +CONFIG_USART3_OFLOWCONTROL=y +CONFIG_USART3_RXBUFSIZE=600 +CONFIG_USART3_RXDMA=y +CONFIG_USART3_TXBUFSIZE=3000 +CONFIG_USART6_BAUD=57600 +CONFIG_USART6_RXBUFSIZE=600 +CONFIG_USART6_RXDMA=y +CONFIG_USART6_TXBUFSIZE=1500 +CONFIG_USBDEV=y +CONFIG_USBDEV_BUSPOWERED=y +CONFIG_USBDEV_MAXPOWER=500 +CONFIG_USEC_PER_TICK=1000 +CONFIG_USERMAIN_STACKSIZE=2944 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/mro/ctrl-zero-f7-oem/nuttx-config/scripts/script.ld b/boards/mro/ctrl-zero-f7-oem/nuttx-config/scripts/script.ld new file mode 100644 index 0000000000..47b29d3493 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/nuttx-config/scripts/script.ld @@ -0,0 +1,181 @@ +/**************************************************************************** + * scripts/script.ld + * + * Copyright (C) 2019-2020 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* The STM32F765IIT6 has 2048 KiB of main FLASH memory. This FLASH memory + * can be accessed from either the AXIM interface at address 0x0800:0000 or + * from the ITCM interface at address 0x0020:0000. + * + * Additional information, including the option bytes, is available at at + * FLASH at address 0x1ff0:0000 (AXIM) or 0x0010:0000 (ITCM). + * + * In the STM32F765IIT6, two different boot spaces can be selected through + * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and + * BOOT_ADD1 option bytes: + * + * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. + * ST programmed value: Flash on ITCM at 0x0020:0000 + * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. + * ST programmed value: System bootloader at 0x0010:0000 + * + * NuttX does not modify these option byes. On the unmodified NUCLEO-144 + * board, the BOOT0 pin is at ground so by default, the STM32F765IIT6 will + * boot from address 0x0020:0000 in ITCM FLASH. + * + * The STM32F765IIT6 also has 512 KiB of data SRAM (in addition to ITCM SRAM). + * SRAM is split up into three blocks: + * + * 1) 128 KiB of DTCM SRM beginning at address 0x2000:0000 + * 2) 368 KiB of SRAM1 beginning at address 0x2002:0000 + * 3) 16 KiB of SRAM2 beginning at address 0x2007:c000 + * + * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 + * where the code expects to begin execution by jumping to the entry point in + * the 0x0800:0000 address range. + * + * Bootloader reserves three 32K banks (2 Mbytes Flash memory single bank) + * organization (256 bits read width) + */ + +MEMORY +{ + FLASH_ITCM (rx) : ORIGIN = 0x00218000, LENGTH = 1952K + FLASH_AXIM (rx) : ORIGIN = 0x08018000, LENGTH = 1952K /* start on 4th sector (1st sector for bootloader, 2 for extra storage) */ + + ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 16K + DTCM_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K + SRAM1 (rwx) : ORIGIN = 0x20020000, LENGTH = 368K + SRAM2 (rwx) : ORIGIN = 0x2007c000, LENGTH = 16K +} + +OUTPUT_ARCH(arm) +EXTERN(_vectors) +ENTRY(_stext) + +/* + * Ensure that abort() is present in the final object. The exception handling + * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). + */ +EXTERN(abort) +EXTERN(_bootdelay_signature) + +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + . = ALIGN(32); + /* + This signature provides the bootloader with a way to delay booting + */ + _bootdelay_signature = ABSOLUTE(.); + FILL(0xffecc2925d7d05c5) + . += 8; + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + + } > FLASH_AXIM + + /* + * Init functions (static constructors and the like) + */ + .init_section : { + _sinit = ABSOLUTE(.); + KEEP(*(.init_array .init_array.*)) + _einit = ABSOLUTE(.); + } > FLASH_AXIM + + + .ARM.extab : { + *(.ARM.extab*) + } > FLASH_AXIM + + __exidx_start = ABSOLUTE(.); + .ARM.exidx : { + *(.ARM.exidx*) + } > FLASH_AXIM + __exidx_end = ABSOLUTE(.); + + _eronly = ABSOLUTE(.); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + _edata = ABSOLUTE(.); + } > SRAM1 AT > FLASH_AXIM + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > SRAM1 + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } + + .ramfunc : { + _sramfuncs = .; + *(.ramfunc .ramfunc.*) + . = ALIGN(4); + _eramfuncs = .; + } > ITCM_RAM AT > FLASH_AXIM + + _framfuncs = LOADADDR(.ramfunc); +} diff --git a/boards/mro/ctrl-zero-f7-oem/src/CMakeLists.txt b/boards/mro/ctrl-zero-f7-oem/src/CMakeLists.txt new file mode 100644 index 0000000000..a533df7c69 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/CMakeLists.txt @@ -0,0 +1,51 @@ +############################################################################ +# +# Copyright (c) 2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(drivers_board + init.c + i2c.cpp + led.c + sdio.c + spi.cpp + timer_config.cpp + usb.c +) + +target_link_libraries(drivers_board + PRIVATE + arch_spi + drivers__led # drv_led_start + nuttx_arch # sdio + nuttx_drivers # sdio + px4_layer +) diff --git a/boards/mro/ctrl-zero-f7-oem/src/board_config.h b/boards/mro/ctrl-zero-f7-oem/src/board_config.h new file mode 100644 index 0000000000..a98f9c40e4 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/board_config.h @@ -0,0 +1,241 @@ +/**************************************************************************** + * + * Copyright (c) 2019-2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file board_config.h + * + * mro_ctrl-zero-f7 internal definitions + */ + +#pragma once + +/**************************************************************************************************** + * Included Files + ****************************************************************************************************/ + +#include +#include +#include + +#include + +/**************************************************************************************************** + * Definitions + ****************************************************************************************************/ + +/* GPIOs ***********************************************************************************/ + +/* LEDs are driven with push open drain to support Anode to 5V or 3.3V */ + +#define GPIO_nLED_RED /* PB11 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN11) +#define GPIO_nLED_GREEN /* PB1 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN1) +#define GPIO_nLED_BLUE /* PB3 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN3) + +#define BOARD_HAS_CONTROL_STATUS_LEDS 1 +#define BOARD_OVERLOAD_LED LED_RED +#define BOARD_ARMED_STATE_LED LED_BLUE + +/* + * ADC channels + * + * These are the channel numbers of the ADCs of the microcontroller that + * can be used by the Px4 Firmware in the adc driver + */ + +/* ADC defines to be used in sensors.cpp to read from a particular channel */ +#define ADC1_CH(n) (n) +#define ADC1_GPIO(n) GPIO_ADC1_IN##n + +/* Define GPIO pins used as ADC N.B. Channel numbers must match below */ +#define PX4_ADC_GPIO \ + /* PA2 */ ADC1_GPIO(2), \ + /* PA3 */ ADC1_GPIO(3), \ + /* PA4 */ ADC1_GPIO(4), \ + /* PC1 */ ADC1_GPIO(11) + +/* Define Channel numbers must match above GPIO pin IN(n)*/ +#define ADC_BATTERY_VOLTAGE_CHANNEL /* PA2 */ ADC1_CH(2) +#define ADC_BATTERY_CURRENT_CHANNEL /* PA3 */ ADC1_CH(3) +#define ADC_SCALED_V5_CHANNEL /* PA4 */ ADC1_CH(4) +#define ADC_RC_RSSI_CHANNEL /* PC1 */ ADC1_CH(11) + +#define ADC_CHANNELS \ + ((1 << ADC_BATTERY_VOLTAGE_CHANNEL) | \ + (1 << ADC_BATTERY_CURRENT_CHANNEL) | \ + (1 << ADC_SCALED_V5_CHANNEL) | \ + (1 << ADC_RC_RSSI_CHANNEL)) + +/* Define Battery 1 Voltage Divider and A per V */ +#define BOARD_BATTERY1_V_DIV (18.1f) /* measured with the provided PM board */ +#define BOARD_BATTERY1_A_PER_V (36.367515152f) + +/* HW has to large of R termination on ADC todo:change when HW value is chosen */ +#define BOARD_ADC_OPEN_CIRCUIT_V (5.6f) + +/* CAN Silence: Silent mode control \ ESC Mux select */ +#define GPIO_CAN1_SILENT_S0 /* PF5 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTF|GPIO_PIN5) + +/* PWM */ +#define DIRECT_PWM_OUTPUT_CHANNELS 8 +#define DIRECT_INPUT_TIMER_CHANNELS 8 + +/* Power supply control and monitoring GPIOs */ +#define GPIO_nPOWER_IN_A /* PB5 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN5) + +#define GPIO_VDD_BRICK1_VALID GPIO_nPOWER_IN_A /* Brick 1 Is Chosen */ +#define BOARD_NUMBER_BRICKS 1 + +#define GPIO_VDD_3V3_SPEKTRUM_POWER_EN /* PE4 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN4) + +/* Define True logic Power Control in arch agnostic form */ +#define VDD_3V3_SPEKTRUM_POWER_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SPEKTRUM_POWER_EN, (!on_true)) +#define READ_VDD_3V3_SPEKTRUM_POWER_EN() (px4_arch_gpioread(GPIO_VDD_3V3_SPEKTRUM_POWER_EN) == 0) + +/* Tone alarm output */ +#define TONE_ALARM_TIMER 2 /* timer 2 */ +#define TONE_ALARM_CHANNEL 1 /* PA15 TIM2_CH1 */ + +#define GPIO_BUZZER_1 /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) + +#define GPIO_TONE_ALARM_IDLE GPIO_BUZZER_1 +#define GPIO_TONE_ALARM GPIO_TIM2_CH1OUT_2 + +/* USB OTG FS */ +#define GPIO_OTGFS_VBUS /* PA9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTA|GPIO_PIN9) + +/* High-resolution timer */ +#define HRT_TIMER 3 /* use timer3 for the HRT */ +#define HRT_TIMER_CHANNEL 2 /* use capture/compare channel 2 */ + +#define HRT_PPM_CHANNEL /* T3C3 */ 3 /* use capture/compare channel 3 */ +#define GPIO_PPM_IN /* PB0 T3C3 */ GPIO_TIM3_CH3IN_1 + +/* RC Serial port */ +#define RC_SERIAL_PORT "/dev/ttyS3" + +#define GPIO_RSSI_IN /* PC1 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN1) + +/* Safety Switch: Enable the FMU to control it if there is no px4io fixme:This should be BOARD_SAFETY_LED(__ontrue) */ +#define GPIO_SAFETY_SWITCH_IN /* PC4 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN4) +/* Enable the FMU to use the switch it if there is no px4io fixme:This should be BOARD_SAFTY_BUTTON() */ +#define GPIO_BTN_SAFETY GPIO_SAFETY_SWITCH_IN /* Enable the FMU to control it if there is no px4io */ + +/* Power switch controls ******************************************************/ +#define SPEKTRUM_POWER(_on_true) VDD_3V3_SPEKTRUM_POWER_EN(_on_true) + +/* + * Board has a separate RC_IN + * + * GPIO PPM_IN on PB0 T3CH3 + * SPEKTRUM_RX (it's TX or RX in Bind) on UART6 PC7 + * Inversion is possible in the UART and can drive GPIO_PPM_IN as an output + */ +#define GPIO_PPM_IN_AS_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN0) +#define SPEKTRUM_RX_AS_GPIO_OUTPUT() px4_arch_configgpio(GPIO_PPM_IN_AS_OUT) +#define SPEKTRUM_RX_AS_UART() /* Can be left as uart */ +#define SPEKTRUM_OUT(_one_true) px4_arch_gpiowrite(GPIO_PPM_IN_AS_OUT, (_one_true)) + +#define SDIO_SLOTNO 0 /* Only one slot */ +#define SDIO_MINOR 0 + +/* By Providing BOARD_ADC_USB_CONNECTED (using the px4_arch abstraction) + * this board support the ADC system_power interface, and therefore + * provides the true logic GPIO BOARD_ADC_xxxx macros. + */ +#define BOARD_ADC_USB_CONNECTED (px4_arch_gpioread(GPIO_OTGFS_VBUS)) +#define BOARD_ADC_USB_VALID BOARD_ADC_USB_CONNECTED +#define BOARD_ADC_SERVO_VALID (1) /* never powers off the Servo rail */ +#define BOARD_ADC_BRICK_VALID (px4_arch_gpioread(GPIO_VDD_BRICK1_VALID)) + +#define BOARD_HAS_PWM DIRECT_PWM_OUTPUT_CHANNELS + +/* This board provides a DMA pool and APIs */ +#define BOARD_DMA_ALLOC_POOL_SIZE 5120 + +/* This board provides the board_on_reset interface */ +#define BOARD_HAS_ON_RESET 1 + +#define PX4_GPIO_INIT_LIST { \ + PX4_ADC_GPIO, \ + GPIO_CAN1_TX, \ + GPIO_CAN1_RX, \ + GPIO_CAN2_TX, \ + GPIO_CAN2_RX, \ + GPIO_CAN1_SILENT_S0, \ + GPIO_nPOWER_IN_A, \ + GPIO_VDD_3V3_SPEKTRUM_POWER_EN, \ + GPIO_TONE_ALARM_IDLE, \ + GPIO_SAFETY_SWITCH_IN, \ + } + +#define BOARD_ENABLE_CONSOLE_BUFFER + +#define BOARD_NUM_IO_TIMERS 3 + +__BEGIN_DECLS + +#ifndef __ASSEMBLY__ + +/**************************************************************************************************** + * Public Functions + ****************************************************************************************************/ + +/**************************************************************************** + * Name: stm32_sdio_initialize + * + * Description: + * Initialize SDIO-based MMC/SD card support + * + ****************************************************************************/ + +int stm32_sdio_initialize(void); + +/**************************************************************************************************** + * Name: stm32_spiinitialize + * + * Description: + * Called to configure SPI chip select GPIO pins for the PX4FMU board. + * + ****************************************************************************************************/ + +extern void stm32_spiinitialize(void); + +extern void stm32_usbinitialize(void); + +extern void board_peripheral_reset(int ms); + +#include + +#endif /* __ASSEMBLY__ */ + +__END_DECLS diff --git a/boards/mro/ctrl-zero-f7-oem/src/i2c.cpp b/boards/mro/ctrl-zero-f7-oem/src/i2c.cpp new file mode 100644 index 0000000000..de6742ac58 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/i2c.cpp @@ -0,0 +1,40 @@ +/**************************************************************************** + * + * Copyright (C) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { + initI2CBusExternal(1), + initI2CBusInternal(3), + initI2CBusExternal(4), +}; diff --git a/boards/mro/ctrl-zero-f7-oem/src/init.c b/boards/mro/ctrl-zero-f7-oem/src/init.c new file mode 100644 index 0000000000..4d8e58d159 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/init.c @@ -0,0 +1,250 @@ +/**************************************************************************** + * + * Copyright (c) 2019-2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file init.c + * + * Board-specific early startup code. This file implements the + * board_app_initializ() function that is called early by nsh during startup. + * + * Code here is run before the rcS script is invoked; it should start required + * subsystems and perform board-specific initialisation. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "board_config.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "arm_internal.h" + +#include +#include +#include +#include +#include +#include +#include + +/**************************************************************************** + * Pre-Processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +/* + * Ideally we'd be able to get these from arm_internal.h, + * but since we want to be able to disable the NuttX use + * of leds for system indication at will and there is no + * separate switch, we need to build independent of the + * CONFIG_ARCH_LEDS configuration switch. + */ +__BEGIN_DECLS +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +__END_DECLS + +/************************************************************************************ + * Name: board_peripheral_reset + * + * Description: + * + ************************************************************************************/ +__EXPORT void board_peripheral_reset(int ms) +{ + bool last = READ_VDD_3V3_SPEKTRUM_POWER_EN(); + /* Keep Spektum on to discharge rail*/ + VDD_3V3_SPEKTRUM_POWER_EN(false); + + /* wait for the peripheral rail to reach GND */ + usleep(ms * 1000); + syslog(LOG_DEBUG, "reset done, %d ms\n", ms); + + /* re-enable power */ + + /* switch the peripheral rail back on */ + VDD_3V3_SPEKTRUM_POWER_EN(last); +} + +/************************************************************************************ + * Name: board_on_reset + * + * Description: + * Optionally provided function called on entry to board_system_reset + * It should perform any house keeping prior to the rest. + * + * status - 1 if resetting to boot loader + * 0 if just resetting + * + ************************************************************************************/ +__EXPORT void board_on_reset(int status) +{ + for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { + px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i))); + } + + if (status >= 0) { + up_mdelay(6); + } +} + +/************************************************************************************ + * Name: stm32_boardinitialize + * + * Description: + * All STM32 architectures must provide the following entry point. This entry point + * is called early in the initialization -- after all memory has been configured + * and mapped but before any devices have been initialized. + * + ************************************************************************************/ + +__EXPORT void +stm32_boardinitialize(void) +{ + board_on_reset(-1); /* Reset PWM first thing */ + + /* configure LEDs */ + board_autoled_initialize(); + + /* configure pins */ + const uint32_t gpio[] = PX4_GPIO_INIT_LIST; + px4_gpio_init(gpio, arraySize(gpio)); + board_control_spi_sensors_power_configgpio(); + + /* configure USB interfaces */ + stm32_usbinitialize(); +} + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform application specific initialization. This function is never + * called directly from application code, but only indirectly via the + * (non-standard) boardctl() interface using the command BOARDIOC_INIT. + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initialization logic and the the + * matching application logic. The value cold be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + + +__EXPORT int board_app_initialize(uintptr_t arg) +{ + /* Power on Interfaces */ + board_control_spi_sensors_power(true, 0xffff); + VDD_3V3_SPEKTRUM_POWER_EN(true); + + px4_platform_init(); + + stm32_spiinitialize(); + + /* configure the DMA allocator */ + if (board_dma_alloc_init() < 0) { + syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); + } + + /* set up the serial DMA polling */ + static struct hrt_call serial_dma_call; + + /* + * Poll at 1ms intervals for received bytes that have not triggered + * a DMA event. + */ + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 1000000; + + hrt_call_every(&serial_dma_call, + ts_to_abstime(&ts), + ts_to_abstime(&ts), + (hrt_callout)stm32_serial_dma_poll, + NULL); + + + /* initial LED state */ + drv_led_start(); + led_off(LED_RED); + led_on(LED_GREEN); // Indicate Power. + led_off(LED_BLUE); + + if (board_hardfault_init(2, true) != 0) { + led_on(LED_RED); + } + +#ifdef CONFIG_MMCSD + int ret = stm32_sdio_initialize(); + + if (ret != OK) { + led_on(LED_RED); + return ret; + } + +#endif /* CONFIG_MMCSD */ + + /* Configure the HW based on the manifest */ + + px4_platform_configure(); + + return OK; +} diff --git a/boards/mro/ctrl-zero-f7-oem/src/led.c b/boards/mro/ctrl-zero-f7-oem/src/led.c new file mode 100644 index 0000000000..e88d37c0dd --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/led.c @@ -0,0 +1,103 @@ +/**************************************************************************** + * + * Copyright (c) 2019 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file led.c + * + * LED backend. + */ + +#include + +#include + +#include "chip.h" +#include "stm32_gpio.h" +#include "board_config.h" + +#include +#include + +/* + * Ideally we'd be able to get these from arm_internal.h, + * but since we want to be able to disable the NuttX use + * of leds for system indication at will and there is no + * separate switch, we need to build independent of the + * CONFIG_ARCH_LEDS configuration switch. + */ +__BEGIN_DECLS +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +extern void led_toggle(int led); +__END_DECLS + +static uint32_t g_ledmap[] = { + GPIO_nLED_BLUE, // Indexed by LED_BLUE + GPIO_nLED_RED, // Indexed by LED_RED + GPIO_nLED_GREEN, // Indexed by LED_GREEN +}; + +__EXPORT void led_init(void) +{ + for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { + stm32_configgpio(g_ledmap[l]); + } +} + +static void phy_set_led(int led, bool state) +{ + /* Drive Low to switch on */ + stm32_gpiowrite(g_ledmap[led], !state); +} + +static bool phy_get_led(int led) +{ + /* If Low it is on */ + return !stm32_gpioread(g_ledmap[led]); +} + +__EXPORT void led_on(int led) +{ + phy_set_led(led, true); +} + +__EXPORT void led_off(int led) +{ + phy_set_led(led, false); +} + +__EXPORT void led_toggle(int led) +{ + phy_set_led(led, !phy_get_led(led)); +} diff --git a/boards/mro/ctrl-zero-f7-oem/src/sdio.c b/boards/mro/ctrl-zero-f7-oem/src/sdio.c new file mode 100644 index 0000000000..bb56cc8a8b --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/sdio.c @@ -0,0 +1,171 @@ +/**************************************************************************** + * + * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "chip.h" +#include "board_config.h" +#include "stm32_gpio.h" +#include "stm32_sdmmc.h" + +#ifdef CONFIG_MMCSD + + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Card detections requires card support and a card detection GPIO */ + +#define HAVE_NCD 1 +#if !defined(GPIO_SDMMC1_NCD) +# undef HAVE_NCD +#endif + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static FAR struct sdio_dev_s *sdio_dev; +#ifdef HAVE_NCD +static bool g_sd_inserted = 0xff; /* Impossible value */ +#endif + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: stm32_ncd_interrupt + * + * Description: + * Card detect interrupt handler. + * + ****************************************************************************/ + +#ifdef HAVE_NCD +static int stm32_ncd_interrupt(int irq, FAR void *context) +{ + bool present = !stm32_gpioread(GPIO_SDMMC1_NCD); + + if (sdio_dev && present != g_sd_inserted) { + sdio_mediachange(sdio_dev, present); + g_sd_inserted = present; + } + + return OK; +} +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: stm32_sdio_initialize + * + * Description: + * Initialize SDIO-based MMC/SD card support + * + ****************************************************************************/ + +int stm32_sdio_initialize(void) +{ + int ret; + +#ifdef HAVE_NCD + /* Card detect */ + bool cd_status; + + /* Configure the card detect GPIO */ + stm32_configgpio(GPIO_SDMMC1_NCD); + + /* Register an interrupt handler for the card detect pin */ + stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt); +#endif + + /* Mount the SDIO-based MMC/SD block driver */ + /* First, get an instance of the SDIO interface */ + finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO); + + sdio_dev = sdio_initialize(SDIO_SLOTNO); + + if (!sdio_dev) { + syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO); + return -ENODEV; + } + + /* Now bind the SDIO interface to the MMC/SD driver */ + + finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR); + + ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev); + + if (ret != OK) { + syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret); + return ret; + } + + finfo("Successfully bound SDIO to the MMC/SD driver\n"); + +#ifdef HAVE_NCD + /* Use SD card detect pin to check if a card is g_sd_inserted */ + + cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD); + finfo("Card detect : %d\n", cd_status); + + sdio_mediachange(sdio_dev, cd_status); +#else + /* Assume that the SD card is inserted. What choice do we have? */ + + sdio_mediachange(sdio_dev, true); +#endif + + return OK; +} + +#endif /* CONFIG_MMCSD */ diff --git a/boards/mro/ctrl-zero-f7-oem/src/spi.cpp b/boards/mro/ctrl-zero-f7-oem/src/spi.cpp new file mode 100644 index 0000000000..c64c0d5a63 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/spi.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** + * + * Copyright (C) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include + +constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { + initSPIBus(SPI::Bus::SPI1, { + initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortC, GPIO::Pin2}, SPI::DRDY{GPIO::PortD, GPIO::Pin15}), + initSPIDevice(DRV_IMU_DEVTYPE_ICM20948, SPI::CS{GPIO::PortE, GPIO::Pin15}, SPI::DRDY{GPIO::PortE, GPIO::Pin12}), + }, {GPIO::PortE, GPIO::Pin3}), + initSPIBus(SPI::Bus::SPI2, { + initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortD, GPIO::Pin10}), + initSPIDevice(DRV_BARO_DEVTYPE_DPS310, SPI::CS{GPIO::PortD, GPIO::Pin7}), + }), + initSPIBus(SPI::Bus::SPI5, { + initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin10}, SPI::DRDY{GPIO::PortF, GPIO::Pin3}), + initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin6}, SPI::DRDY{GPIO::PortF, GPIO::Pin1}), + }), +}; + +static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/mro/ctrl-zero-f7-oem/src/timer_config.cpp b/boards/mro/ctrl-zero-f7-oem/src/timer_config.cpp new file mode 100644 index 0000000000..52109c4f06 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/timer_config.cpp @@ -0,0 +1,54 @@ +/**************************************************************************** + * + * Copyright (C) 2019 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { + initIOTimer(Timer::Timer1), + initIOTimer(Timer::Timer4), + initIOTimer(Timer::Timer8), +}; + +constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { + initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel4}, {GPIO::PortE, GPIO::Pin14}), + initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel3}, {GPIO::PortE, GPIO::Pin13}), + initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel2}, {GPIO::PortE, GPIO::Pin11}), + initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortE, GPIO::Pin9}), + initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel2}, {GPIO::PortD, GPIO::Pin13}), + initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {GPIO::PortD, GPIO::Pin14}), + initIOTimerChannel(io_timers, {Timer::Timer8, Timer::Channel1}, {GPIO::PortI, GPIO::Pin5}), + initIOTimerChannel(io_timers, {Timer::Timer8, Timer::Channel2}, {GPIO::PortI, GPIO::Pin6}), +}; + +constexpr io_timers_channel_mapping_t io_timers_channel_mapping = + initIOTimerChannelMapping(io_timers, timer_io_channels); diff --git a/boards/mro/ctrl-zero-f7-oem/src/usb.c b/boards/mro/ctrl-zero-f7-oem/src/usb.c new file mode 100644 index 0000000000..0ea22da849 --- /dev/null +++ b/boards/mro/ctrl-zero-f7-oem/src/usb.c @@ -0,0 +1,105 @@ +/**************************************************************************** + * + * Copyright (C) 2019 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file usb.c + * + * Board-specific USB functions. + */ + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include "board_config.h" + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +/************************************************************************************ + * Name: stm32_usbinitialize + * + * Description: + * Called to setup USB-related GPIO pins for the board. + * + ************************************************************************************/ + +__EXPORT void stm32_usbinitialize(void) +{ + /* The OTG FS has an internal soft pull-up */ + + /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ + +#ifdef CONFIG_STM32F7_OTGFS + stm32_configgpio(GPIO_OTGFS_VBUS); +#endif +} + +/************************************************************************************ + * Name: stm32_usbsuspend + * + * Description: + * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is + * used. This function is called whenever the USB enters or leaves suspend mode. + * This is an opportunity for the board logic to shutdown clocks, power, etc. + * while the USB is suspended. + * + ************************************************************************************/ + +__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) +{ + uinfo("resume: %d\n", resume); +} diff --git a/boards/mro/ctrl-zero-f7/init/rc.board_defaults b/boards/mro/ctrl-zero-f7/init/rc.board_defaults index 73371f9d92..1bf534d976 100644 --- a/boards/mro/ctrl-zero-f7/init/rc.board_defaults +++ b/boards/mro/ctrl-zero-f7/init/rc.board_defaults @@ -3,15 +3,12 @@ # mRo Control Zero specific board defaults #------------------------------------------------------------------------------ +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 set MIXER_AUX none diff --git a/boards/mro/pixracerpro/init/rc.board_defaults b/boards/mro/pixracerpro/init/rc.board_defaults index 43fdb46c71..71f4c01d76 100644 --- a/boards/mro/pixracerpro/init/rc.board_defaults +++ b/boards/mro/pixracerpro/init/rc.board_defaults @@ -21,23 +21,21 @@ then fi unset BL_FILE -if [ $AUTOCNF = yes ] -then - param set BAT_V_DIV 10.1 - param set BAT1_V_DIV 10.1 - param set BAT_A_PER_V 17 - param set BAT1_A_PER_V 17 +param set-default BAT_V_DIV 10.1 +param set-default BAT1_V_DIV 10.1 - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 +param set-default BAT_A_PER_V 17 +param set-default BAT1_A_PER_V 17 - param set UAVCAN_ENABLE 2 +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 + +param set-default UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 set MIXER_AUX none diff --git a/boards/mro/x21-777/init/rc.board_defaults b/boards/mro/x21-777/init/rc.board_defaults index 940c54f4e2..f13e765146 100644 --- a/boards/mro/x21-777/init/rc.board_defaults +++ b/boards/mro/x21-777/init/rc.board_defaults @@ -4,15 +4,13 @@ #------------------------------------------------------------------------------ -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 2 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 2 - param set SENS_MAG_MODE 0 +# Multi-EKF +param set-default EKF2_MULTI_IMU 2 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 2 +param set-default SENS_MAG_MODE 0 + +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/mro/x21/init/rc.board_defaults b/boards/mro/x21/init/rc.board_defaults index d2d3276bcd..7643610b24 100644 --- a/boards/mro/x21/init/rc.board_defaults +++ b/boards/mro/x21/init/rc.board_defaults @@ -4,12 +4,4 @@ #------------------------------------------------------------------------------ # to minimize cpu usage on older boards limit inner loop to 400 Hz by default -if param compare IMU_GYRO_RATEMAX 0 -then - param set IMU_GYRO_RATEMAX 400 -fi - -if [ $AUTOCNF = yes ] -then - -fi +param set-default IMU_GYRO_RATEMAX 400 diff --git a/boards/nxp/fmuk66-e/init/rc.board_defaults b/boards/nxp/fmuk66-e/init/rc.board_defaults index 531e7fde58..b304023452 100644 --- a/boards/nxp/fmuk66-e/init/rc.board_defaults +++ b/boards/nxp/fmuk66-e/init/rc.board_defaults @@ -1,4 +1,4 @@ - +#!/bin/sh # # NXP fmuk66-e specific board defaults #------------------------------------------------------------------------------ diff --git a/boards/nxp/fmuk66-e/init/rc.board_sensors b/boards/nxp/fmuk66-e/init/rc.board_sensors index 492c942f68..518c5a35e9 100644 --- a/boards/nxp/fmuk66-e/init/rc.board_sensors +++ b/boards/nxp/fmuk66-e/init/rc.board_sensors @@ -12,8 +12,8 @@ bmm150 -I -R 10 start bmp280 -I start # Internal SPI (accel + mag) -bmi088 -A -R 4 -s start -bmi088 -G -R 4 -s start +bmi088 -A -R 8 -s start +bmi088 -G -R 8 -s start # Internal SPI bus ICM-42688 -icm42688p -R 12 -s start +#icm42688p -R 12 -s start diff --git a/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig b/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig index 1bff942451..f6f9859ade 100644 --- a/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig +++ b/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig @@ -29,7 +29,7 @@ CONFIG_C99_BOOL8=y CONFIG_CDCACM=y CONFIG_CDCACM_BULKIN_REQLEN=96 CONFIG_CDCACM_PRODUCTID=0x001c -CONFIG_CDCACM_PRODUCTSTR="PX4 FMUK66 v3.x" +CONFIG_CDCACM_PRODUCTSTR="PX4 FMUK66 E" CONFIG_CDCACM_RXBUFSIZE=600 CONFIG_CDCACM_TXBUFSIZE=8000 CONFIG_CDCACM_VENDORID=0x1FC9 @@ -39,6 +39,8 @@ CONFIG_DEBUG_HARDFAULT_ALERT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEV_FIFO_SIZE=0 CONFIG_DEV_PIPE_SIZE=70 +CONFIG_DISABLE_MQUEUE=y +CONFIG_DISABLE_POSIX_TIMERS=y CONFIG_ETH0_PHY_TJA1100=y CONFIG_FAT_DMAMEMORY=y CONFIG_FAT_LCNAMES=y @@ -114,8 +116,6 @@ CONFIG_MTD=y CONFIG_MTD_BYTE_WRITE=y CONFIG_MTD_PARTITION=y CONFIG_MTD_RAMTRON=y -CONFIG_NETDB_DNSCLIENT=y -CONFIG_NETDB_DNSSERVER_NOADDR=y CONFIG_NETDEV_PHY_IOCTL=y CONFIG_NETINIT_THREAD=y CONFIG_NETINIT_THREAD_PRIORITY=49 @@ -153,6 +153,7 @@ CONFIG_NSH_DISABLE_UNAME=y CONFIG_NSH_DISABLE_WGET=y CONFIG_NSH_DISABLE_XD=y CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_IOBUFFER_SIZE=256 CONFIG_NSH_LINELEN=128 CONFIG_NSH_MAXARGUMENTS=15 CONFIG_NSH_NESTDEPTH=8 @@ -160,6 +161,8 @@ CONFIG_NSH_READLINE=y CONFIG_NSH_ROMFSETC=y CONFIG_NSH_ROMFSSECTSIZE=128 CONFIG_NSH_STRERROR=y +CONFIG_NSH_TELNETD_CLIENTSTACKSIZE=1280 +CONFIG_NSH_TELNETD_DAEMONSTACKSIZE=1024 CONFIG_NSH_VARS=y CONFIG_PIPES=y CONFIG_PREALLOC_TIMERS=50 @@ -199,6 +202,10 @@ CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD=57600 CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_PING=y CONFIG_TASK_NAME_SIZE=24 +CONFIG_TELNET_IOTHREAD_STACKSIZE=512 +CONFIG_TELNET_MAXLCLIENTS=1 +CONFIG_TELNET_RXBUFFER_SIZE=128 +CONFIG_TELNET_TXBUFFER_SIZE=128 CONFIG_UART0_IFLOWCONTROL=y CONFIG_UART0_OFLOWCONTROL=y CONFIG_UART1_RXBUFSIZE=600 diff --git a/boards/nxp/fmuk66-e/nuttx-config/socketcan/defconfig b/boards/nxp/fmuk66-e/nuttx-config/socketcan/defconfig index 13f25a0b4a..d7aebf3d92 100644 --- a/boards/nxp/fmuk66-e/nuttx-config/socketcan/defconfig +++ b/boards/nxp/fmuk66-e/nuttx-config/socketcan/defconfig @@ -40,6 +40,8 @@ CONFIG_DEBUG_HARDFAULT_ALERT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEV_FIFO_SIZE=0 CONFIG_DEV_PIPE_SIZE=70 +CONFIG_DISABLE_MQUEUE=y +CONFIG_DISABLE_POSIX_TIMERS=y CONFIG_ETH0_PHY_TJA1100=y CONFIG_FAT_DMAMEMORY=y CONFIG_FAT_LCNAMES=y @@ -150,6 +152,7 @@ CONFIG_NSH_DISABLE_UNAME=y CONFIG_NSH_DISABLE_WGET=y CONFIG_NSH_DISABLE_XD=y CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_IOBUFFER_SIZE=256 CONFIG_NSH_LINELEN=128 CONFIG_NSH_MAXARGUMENTS=15 CONFIG_NSH_NESTDEPTH=8 @@ -157,6 +160,8 @@ CONFIG_NSH_READLINE=y CONFIG_NSH_ROMFSETC=y CONFIG_NSH_ROMFSSECTSIZE=128 CONFIG_NSH_STRERROR=y +CONFIG_NSH_TELNETD_CLIENTSTACKSIZE=1280 +CONFIG_NSH_TELNETD_DAEMONSTACKSIZE=1024 CONFIG_NSH_VARS=y CONFIG_PIPES=y CONFIG_PREALLOC_TIMERS=50 @@ -196,6 +201,10 @@ CONFIG_SYSTEM_CUTERM_DEFAULT_BAUD=57600 CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_PING=y CONFIG_TASK_NAME_SIZE=24 +CONFIG_TELNET_IOTHREAD_STACKSIZE=512 +CONFIG_TELNET_MAXLCLIENTS=1 +CONFIG_TELNET_RXBUFFER_SIZE=128 +CONFIG_TELNET_TXBUFFER_SIZE=128 CONFIG_UART0_IFLOWCONTROL=y CONFIG_UART0_OFLOWCONTROL=y CONFIG_UART1_RXBUFSIZE=600 diff --git a/boards/nxp/fmuk66-v3/nuttx-config/nsh/defconfig b/boards/nxp/fmuk66-v3/nuttx-config/nsh/defconfig index 9361e9b1b9..43f1679122 100644 --- a/boards/nxp/fmuk66-v3/nuttx-config/nsh/defconfig +++ b/boards/nxp/fmuk66-v3/nuttx-config/nsh/defconfig @@ -110,7 +110,6 @@ CONFIG_LPUART0_SERIAL_CONSOLE=y CONFIG_MEMSET_64BIT=y CONFIG_MEMSET_OPTSPEED=y CONFIG_MMCSD=y -CONFIG_MMCSD_MULTIBLOCK_DISABLE=y CONFIG_MMCSD_SDIO=y CONFIG_MTD=y CONFIG_MTD_BYTE_WRITE=y diff --git a/boards/omnibus/f4sd/init/rc.board_defaults b/boards/omnibus/f4sd/init/rc.board_defaults index c177626978..ca88eae463 100644 --- a/boards/omnibus/f4sd/init/rc.board_defaults +++ b/boards/omnibus/f4sd/init/rc.board_defaults @@ -4,7 +4,7 @@ #------------------------------------------------------------------------------ # system_power unavailable -param set CBRK_SUPPLY_CHK 894281 +param set-default CBRK_SUPPLY_CHK 894281 # transition from LPE+Q to Q estimator (2019-06-05) if param compare SYS_MC_EST_GROUP 1 @@ -13,17 +13,13 @@ then fi -if [ $AUTOCNF = yes ] -then - # Disable safety switch by default - param set CBRK_IO_SAFETY 22027 +# Disable safety switch by default +param set-default CBRK_IO_SAFETY 22027 - # use the Q attitude estimator, it works w/o mag or GPS. - param set SYS_MC_EST_GROUP 3 - param set ATT_ACC_COMP 0 - param set ATT_W_ACC 0.4000 - param set ATT_W_GYRO_BIAS 0.0000 - - param set SYS_HAS_MAG 0 -fi +# use the Q attitude estimator, it works w/o mag or GPS. +param set-default SYS_MC_EST_GROUP 3 +param set-default ATT_ACC_COMP 0 +param set-default ATT_W_ACC 0.4000 +param set-default ATT_W_GYRO_BIAS 0.0000 +param set-default SYS_HAS_MAG 0 diff --git a/boards/px4/fmu-v2/init/rc.board_defaults b/boards/px4/fmu-v2/init/rc.board_defaults index ea5530a5cd..ab4deb04cf 100644 --- a/boards/px4/fmu-v2/init/rc.board_defaults +++ b/boards/px4/fmu-v2/init/rc.board_defaults @@ -23,12 +23,4 @@ fi unset BL_FILE # to minimize cpu usage on older boards limit inner loop to 400 Hz by default -if param compare IMU_GYRO_RATEMAX 0 -then - param set IMU_GYRO_RATEMAX 400 -fi - -if [ $AUTOCNF = yes ] -then - -fi +param set-default IMU_GYRO_RATEMAX 400 diff --git a/boards/px4/fmu-v2/init/rc.board_sensors b/boards/px4/fmu-v2/init/rc.board_sensors index 022d996539..8aecc96c34 100644 --- a/boards/px4/fmu-v2/init/rc.board_sensors +++ b/boards/px4/fmu-v2/init/rc.board_sensors @@ -63,7 +63,7 @@ fi if [ $BOARD_FMUV3 != 0 ] then # sensor heating is available, but we disable it for now - param set SENS_EN_THERMAL 0 + param set-default SENS_EN_THERMAL 0 # l3gd20 (external/isolated SPI4) l3gd20 -s -b 4 -R 4 start diff --git a/boards/px4/fmu-v3/init/rc.board_defaults b/boards/px4/fmu-v3/init/rc.board_defaults index afea2e2bb7..d683544d53 100644 --- a/boards/px4/fmu-v3/init/rc.board_defaults +++ b/boards/px4/fmu-v3/init/rc.board_defaults @@ -23,12 +23,4 @@ fi unset BL_FILE # to minimize cpu usage on older boards limit inner loop to 400 Hz by default -if param compare IMU_GYRO_RATEMAX 0 -then - param set IMU_GYRO_RATEMAX 400 -fi - -if [ $AUTOCNF = yes ] -then - -fi +param set-default IMU_GYRO_RATEMAX 400 diff --git a/boards/px4/fmu-v3/init/rc.board_sensors b/boards/px4/fmu-v3/init/rc.board_sensors index dc9fe7e5c3..33e5698d76 100644 --- a/boards/px4/fmu-v3/init/rc.board_sensors +++ b/boards/px4/fmu-v3/init/rc.board_sensors @@ -63,7 +63,7 @@ fi if [ $BOARD_FMUV3 != 0 ] then # sensor heating is available, but we disable it for now - param set SENS_EN_THERMAL 0 + param set-default SENS_EN_THERMAL 0 # l3gd20 (external/isolated SPI4) l3gd20 -s -b 4 -R 4 start diff --git a/boards/px4/fmu-v4/init/rc.board_defaults b/boards/px4/fmu-v4/init/rc.board_defaults index bfcaef4b25..b11850f4f9 100644 --- a/boards/px4/fmu-v4/init/rc.board_defaults +++ b/boards/px4/fmu-v4/init/rc.board_defaults @@ -7,14 +7,14 @@ if [ $AUTOCNF = yes ] then # Disable safety switch by default - param set CBRK_IO_SAFETY 22027 + param set-default CBRK_IO_SAFETY 22027 # start MAVLink on Wifi (ESP8266 port). Except for the TealOne airframe. if ! param compare SYS_AUTOSTART 4250 then - param set MAV_2_CONFIG 301 - param set MAV_2_RATE 20000 - param set SER_WIFI_BAUD 921600 + param set-default MAV_2_CONFIG 301 + param set-default MAV_2_RATE 20000 + param set-default SER_WIFI_BAUD 921600 fi fi @@ -24,9 +24,9 @@ then # configure it for MAVLink via the ESP8266 Wifi module. Except for the TealOne airframe. if ! param compare SYS_AUTOSTART 4250 then - param set MAV_2_CONFIG 301 - param set MAV_2_RATE 20000 - param set SER_WIFI_BAUD 921600 + param set-default MAV_2_CONFIG 301 + param set-default MAV_2_RATE 20000 + param set-default SER_WIFI_BAUD 921600 fi fi diff --git a/boards/px4/fmu-v4pro/init/rc.board_defaults b/boards/px4/fmu-v4pro/init/rc.board_defaults index 59cc1971f2..2771f37326 100644 --- a/boards/px4/fmu-v4pro/init/rc.board_defaults +++ b/boards/px4/fmu-v4pro/init/rc.board_defaults @@ -3,14 +3,11 @@ # PX4 FMUv4pro specific board defaults #------------------------------------------------------------------------------ +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/px4/fmu-v5/init/rc.board_defaults b/boards/px4/fmu-v5/init/rc.board_defaults index dee1e8dd02..5d24859549 100644 --- a/boards/px4/fmu-v5/init/rc.board_defaults +++ b/boards/px4/fmu-v5/init/rc.board_defaults @@ -4,25 +4,23 @@ #------------------------------------------------------------------------------ -if [ $AUTOCNF = yes ] +if ver hwtypecmp V550 V560 then - if ver hwtypecmp V550 V560 - then - # CUAV V5+ (V550) and V5nano (V560) have 3 IMUs - # Multi-EKF (IMUs only) - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - else - # Multi-EKF - param set EKF2_MULTI_IMU 2 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 2 - param set SENS_MAG_MODE 0 - fi - - param set UAVCAN_ENABLE 2 + # CUAV V5+ (V550) and V5nano (V560) have 3 IMUs + # Multi-EKF (IMUs only) + param set-default EKF2_MULTI_IMU 3 + param set-default SENS_IMU_MODE 0 +else + # Multi-EKF + param set-default EKF2_MULTI_IMU 2 + param set-default SENS_IMU_MODE 0 + param set-default EKF2_MULTI_MAG 2 + param set-default SENS_MAG_MODE 0 fi +param set-default UAVCAN_ENABLE 2 + + set LOGGER_BUF 64 rgbled_pwm start diff --git a/boards/px4/fmu-v5x/init/rc.board_defaults b/boards/px4/fmu-v5x/init/rc.board_defaults index fdf4758886..88e273b039 100644 --- a/boards/px4/fmu-v5x/init/rc.board_defaults +++ b/boards/px4/fmu-v5x/init/rc.board_defaults @@ -3,15 +3,12 @@ # PX4 FMUv5X specific board defaults #------------------------------------------------------------------------------ +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/px4/fmu-v5x/src/manifest.c b/boards/px4/fmu-v5x/src/manifest.c index 5d6343e940..f86793a3fd 100644 --- a/boards/px4/fmu-v5x/src/manifest.c +++ b/boards/px4/fmu-v5x/src/manifest.c @@ -115,6 +115,9 @@ static px4_hw_mft_list_entry_t mft_lists[] = { {0x0001, hw_mft_list_v0500, arraySize(hw_mft_list_v0500)}, {0x0100, hw_mft_list_v0510, arraySize(hw_mft_list_v0510)}, {0x0900, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, + {0x0901, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, + {0x0a00, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, + {0x0a01, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, }; diff --git a/boards/px4/fmu-v6u/init/rc.board_defaults b/boards/px4/fmu-v6u/init/rc.board_defaults index 31053d9572..055a18f9b1 100644 --- a/boards/px4/fmu-v6u/init/rc.board_defaults +++ b/boards/px4/fmu-v6u/init/rc.board_defaults @@ -3,17 +3,14 @@ # PX4 FMUv6U specific board defaults #------------------------------------------------------------------------------ +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/px4/fmu-v6x/init/rc.board_defaults b/boards/px4/fmu-v6x/init/rc.board_defaults index 9835622635..f5e857c2f3 100644 --- a/boards/px4/fmu-v6x/init/rc.board_defaults +++ b/boards/px4/fmu-v6x/init/rc.board_defaults @@ -3,17 +3,14 @@ # PX4 FMUv6X specific board defaults #------------------------------------------------------------------------------ +# Multi-EKF +param set-default EKF2_MULTI_IMU 3 +param set-default SENS_IMU_MODE 0 +param set-default EKF2_MULTI_MAG 3 +param set-default SENS_MAG_MODE 0 -if [ $AUTOCNF = yes ] -then - # Multi-EKF - param set EKF2_MULTI_IMU 3 - param set SENS_IMU_MODE 0 - param set EKF2_MULTI_MAG 3 - param set SENS_MAG_MODE 0 +param set-default UAVCAN_ENABLE 2 - param set UAVCAN_ENABLE 2 -fi set LOGGER_BUF 64 diff --git a/boards/spracing/h7extreme/init/rc.board_defaults b/boards/spracing/h7extreme/init/rc.board_defaults index 7d78b87958..b3a7308d44 100644 --- a/boards/spracing/h7extreme/init/rc.board_defaults +++ b/boards/spracing/h7extreme/init/rc.board_defaults @@ -2,31 +2,25 @@ # # SP Racing H7 EXTREME specific board defaults #------------------------------------------------------------------------------ -# system_power unavailable -param set CBRK_SUPPLY_CHK 894281 -if param compare SYS_AUTOSTART 0 -then - # Select the Generic 250 Racer by default - param set SYS_AUTOSTART 4050 - set AUTOCNF yes -fi +# system_power unavailable +param set-default CBRK_SUPPLY_CHK 894281 + +# Select the Generic 250 Racer by default +param set-default SYS_AUTOSTART 4050 + +# Disable safety switch by default +param set-default CBRK_IO_SAFETY 22027 + +# use the Q attitude estimator, it works w/o mag or GPS. +param set-default SYS_MC_EST_GROUP 3 +param set-default ATT_ACC_COMP 0 +param set-default ATT_W_ACC 0.4000 +param set-default ATT_W_GYRO_BIAS 0.0000 + +param set-default SYS_HAS_MAG 0 + +param set-default DSHOT_CONFIG 600 + set LOGGER_BUF 64 - -if [ $AUTOCNF = yes ] -then - # Disable safety switch by default - param set CBRK_IO_SAFETY 22027 - - # use the Q attitude estimator, it works w/o mag or GPS. - param set SYS_MC_EST_GROUP 3 - param set ATT_ACC_COMP 0 - param set ATT_W_ACC 0.4000 - param set ATT_W_GYRO_BIAS 0.0000 - - param set SYS_HAS_MAG 0 - - param set DSHOT_CONFIG 600 -fi - diff --git a/boards/uvify/core/init/rc.board_defaults b/boards/uvify/core/init/rc.board_defaults index fb4eddba94..61ca5a1272 100644 --- a/boards/uvify/core/init/rc.board_defaults +++ b/boards/uvify/core/init/rc.board_defaults @@ -3,12 +3,8 @@ # UVify Core specific board defaults #------------------------------------------------------------------------------ +# Disable safety switch by default +param set-default CBRK_IO_SAFETY 22027 -if [ $AUTOCNF = yes ] -then - # Disable safety switch by default - param set CBRK_IO_SAFETY 22027 - - # don't probe external I2C - param set SENS_EXT_I2C_PRB 0 -fi +# don't probe external I2C +param set-default SENS_EXT_I2C_PRB 0 diff --git a/integrationtests/python_src/px4_it/mavros/missions/FW_mission_1.plan b/integrationtests/python_src/px4_it/mavros/missions/FW_mission_1.plan index e8dd595993..03986f692e 100644 --- a/integrationtests/python_src/px4_it/mavros/missions/FW_mission_1.plan +++ b/integrationtests/python_src/px4_it/mavros/missions/FW_mission_1.plan @@ -22,7 +22,7 @@ "doJumpId": 1, "frame": 3, "params": [ - 15, + 0, 0, 0, null, diff --git a/integrationtests/python_src/px4_it/mavros/missions/MC_mission_box.plan b/integrationtests/python_src/px4_it/mavros/missions/MC_mission_box.plan index 8e2b37540b..f1b04ffd63 100644 --- a/integrationtests/python_src/px4_it/mavros/missions/MC_mission_box.plan +++ b/integrationtests/python_src/px4_it/mavros/missions/MC_mission_box.plan @@ -22,7 +22,7 @@ "doJumpId": 1, "frame": 3, "params": [ - 15, + 0, 0, 0, null, diff --git a/integrationtests/python_src/px4_it/mavros/missions/VTOL_mission_1.plan b/integrationtests/python_src/px4_it/mavros/missions/VTOL_mission_1.plan index fc0f17560b..8068b43127 100644 --- a/integrationtests/python_src/px4_it/mavros/missions/VTOL_mission_1.plan +++ b/integrationtests/python_src/px4_it/mavros/missions/VTOL_mission_1.plan @@ -22,7 +22,7 @@ "doJumpId": 1, "frame": 3, "params": [ - 15, + 0, 0, 0, null, diff --git a/integrationtests/python_src/px4_it/mavros/missions/avoidance.plan b/integrationtests/python_src/px4_it/mavros/missions/avoidance.plan index 88c9d0f4d5..1698c6b2bc 100644 --- a/integrationtests/python_src/px4_it/mavros/missions/avoidance.plan +++ b/integrationtests/python_src/px4_it/mavros/missions/avoidance.plan @@ -22,7 +22,7 @@ "doJumpId": 1, "frame": 3, "params": [ - 15, + 0, 0, 0, null, diff --git a/mavlink/include/mavlink/v2.0 b/mavlink/include/mavlink/v2.0 index 076158a975..4e25dfa47b 160000 --- a/mavlink/include/mavlink/v2.0 +++ b/mavlink/include/mavlink/v2.0 @@ -1 +1 @@ -Subproject commit 076158a9756064c78817a425f67991acba95b8ec +Subproject commit 4e25dfa47b28adc177ea7badad837d8b84173712 diff --git a/msg/parameter_update.msg b/msg/parameter_update.msg index 3a9deca4d6..bfb4993749 100644 --- a/msg/parameter_update.msg +++ b/msg/parameter_update.msg @@ -3,3 +3,12 @@ uint64 timestamp # time since system start (microseconds) uint32 instance # Instance count - constantly incrementing + +uint32 get_count +uint32 set_count +uint32 find_count +uint32 export_count + +uint16 active +uint16 changed +uint16 custom_default diff --git a/msg/position_setpoint.msg b/msg/position_setpoint.msg index b7857f2640..403ece57b0 100644 --- a/msg/position_setpoint.msg +++ b/msg/position_setpoint.msg @@ -42,7 +42,6 @@ int8 landing_gear # landing gear: see definition of the states in landing_gear. float32 loiter_radius # loiter radius (only for fixed wing), in m int8 loiter_direction # loiter direction: 1 = CW, -1 = CCW -float32 pitch_min # minimal pitch angle for fixed wing takeoff waypoints float32 a_x # acceleration x setpoint float32 a_y # acceleration y setpoint diff --git a/platforms/common/include/px4_platform_common/param.h b/platforms/common/include/px4_platform_common/param.h index d669601fa9..21de1c8f3a 100644 --- a/platforms/common/include/px4_platform_common/param.h +++ b/platforms/common/include/px4_platform_common/param.h @@ -41,7 +41,7 @@ #include "param_macros.h" -#include +#include /** * get the parameter handle from a parameter enum @@ -112,7 +112,7 @@ class Param { public: // static type-check - static_assert(px4::param_types_array[(int)p] == PARAM_TYPE_FLOAT, "parameter type must be float"); + static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_FLOAT, "parameter type must be float"); Param() { @@ -151,7 +151,7 @@ class Param { public: // static type-check - static_assert(px4::param_types_array[(int)p] == PARAM_TYPE_FLOAT, "parameter type must be float"); + static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_FLOAT, "parameter type must be float"); Param(float &external_val) : _val(external_val) @@ -190,7 +190,7 @@ class Param { public: // static type-check - static_assert(px4::param_types_array[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t"); + static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t"); Param() { @@ -229,7 +229,7 @@ class Param { public: // static type-check - static_assert(px4::param_types_array[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t"); + static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t"); Param(int32_t &external_val) : _val(external_val) @@ -268,7 +268,7 @@ class Param { public: // static type-check - static_assert(px4::param_types_array[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t"); + static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t"); Param() { diff --git a/src/drivers/drv_pwm_output.h b/src/drivers/drv_pwm_output.h index 7bb3df1727..821390e435 100644 --- a/src/drivers/drv_pwm_output.h +++ b/src/drivers/drv_pwm_output.h @@ -232,12 +232,13 @@ typedef uint16_t servo_position_t; #define PWM_SERVO_MODE_5PWM1CAP 10 #define PWM_SERVO_MODE_6PWM 11 #define PWM_SERVO_MODE_8PWM 12 -#define PWM_SERVO_MODE_14PWM 13 -#define PWM_SERVO_MODE_4CAP 14 -#define PWM_SERVO_MODE_5CAP 15 -#define PWM_SERVO_MODE_6CAP 16 -#define PWM_SERVO_ENTER_TEST_MODE 17 -#define PWM_SERVO_EXIT_TEST_MODE 18 +#define PWM_SERVO_MODE_12PWM 13 +#define PWM_SERVO_MODE_14PWM 14 +#define PWM_SERVO_MODE_4CAP 15 +#define PWM_SERVO_MODE_5CAP 16 +#define PWM_SERVO_MODE_6CAP 17 +#define PWM_SERVO_ENTER_TEST_MODE 18 +#define PWM_SERVO_EXIT_TEST_MODE 19 #define PWM_SERVO_SET_MODE _PX4_IOC(_PWM_SERVO_BASE, 34) /* diff --git a/src/drivers/dshot/DShot.cpp b/src/drivers/dshot/DShot.cpp index dde41ee043..42449567ac 100644 --- a/src/drivers/dshot/DShot.cpp +++ b/src/drivers/dshot/DShot.cpp @@ -221,6 +221,18 @@ int DShot::set_mode(const Mode mode) break; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + case MODE_12PWM: + PX4_DEBUG("MODE_12PWM"); + // default output rates + _output_mask = 0xfff; + _outputs_initialized = false; + _num_outputs = 12; + + break; +#endif + #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 case MODE_14PWM: @@ -642,6 +654,9 @@ int DShot::ioctl(file *filp, int cmd, unsigned long arg) #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 case MODE_8PWM: #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + case MODE_12PWM: +#endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 case MODE_14PWM: #endif @@ -680,6 +695,13 @@ int DShot::pwm_ioctl(file *filp, const int cmd, const unsigned long arg) break; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + case MODE_12PWM: + *(unsigned *)arg = 12; + break; +#endif + #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 case MODE_8PWM: @@ -1003,6 +1025,9 @@ int DShot::module_new_mode(const PortMode new_mode) #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 8 mode = DShot::MODE_8PWM; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 12 + mode = DShot::MODE_12PWM; +#endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 14 mode = DShot::MODE_14PWM; #endif @@ -1268,6 +1293,16 @@ int DShot::custom_command(int argc, char *argv[]) } else if (!strcmp(verb, "mode_pwm8")) { new_mode = PORT_PWM8; +#endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + } else if (!strcmp(verb, "mode_pwm12")) { + new_mode = PORT_PWM12; +#endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 + + } else if (!strcmp(verb, "mode_pwm14")) { + new_mode = PORT_PWM14; #endif } @@ -1371,23 +1406,29 @@ After saving, the reversed direction will be regarded as the normal one. So to r PRINT_MODULE_USAGE_COMMAND("mode_gpio"); PRINT_MODULE_USAGE_COMMAND_DESCR("mode_pwm", "Select all available pins as PWM"); +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 + PRINT_MODULE_USAGE_COMMAND("mode_pwm14"); +#endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + PRINT_MODULE_USAGE_COMMAND("mode_pwm12"); +#endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 - PRINT_MODULE_USAGE_COMMAND("mode_pwm8"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm8"); #endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6 - PRINT_MODULE_USAGE_COMMAND("mode_pwm6"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm5"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm5cap1"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm6"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm5"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm5cap1"); PRINT_MODULE_USAGE_COMMAND("mode_pwm4"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap1"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap2"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm3"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm3cap1"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap1"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap2"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm3"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm3cap1"); PRINT_MODULE_USAGE_COMMAND("mode_pwm2"); - PRINT_MODULE_USAGE_COMMAND("mode_pwm2cap2"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm2cap2"); #endif #if defined(BOARD_HAS_PWM) - PRINT_MODULE_USAGE_COMMAND("mode_pwm1"); + PRINT_MODULE_USAGE_COMMAND("mode_pwm1"); #endif PRINT_MODULE_USAGE_COMMAND_DESCR("telemetry", "Enable Telemetry on a UART"); diff --git a/src/drivers/dshot/DShot.h b/src/drivers/dshot/DShot.h index 332dfd3615..31f009a21c 100644 --- a/src/drivers/dshot/DShot.h +++ b/src/drivers/dshot/DShot.h @@ -78,6 +78,7 @@ public: MODE_5PWM1CAP, MODE_6PWM, MODE_8PWM, + MODE_12PWM, MODE_14PWM, MODE_4CAP, MODE_5CAP, @@ -90,6 +91,7 @@ public: PORT_FULL_GPIO, PORT_FULL_PWM, PORT_PWM14, + PORT_PWM12, PORT_PWM8, PORT_PWM6, PORT_PWM5, diff --git a/src/drivers/magnetometer/isentek/ist8310/IST8310.hpp b/src/drivers/magnetometer/isentek/ist8310/IST8310.hpp index 5d85e08d17..90921ec043 100644 --- a/src/drivers/magnetometer/isentek/ist8310/IST8310.hpp +++ b/src/drivers/magnetometer/isentek/ist8310/IST8310.hpp @@ -109,7 +109,7 @@ private: // Register | Set bits, Clear bits { Register::CNTL2, 0, CNTL2_BIT::SRST }, { Register::CNTL3, CNTL3_BIT::Z_16BIT | CNTL3_BIT::Y_16BIT | CNTL3_BIT::X_16BIT, 0 }, - { Register::AVGCNTL, AVGCNTL_BIT::Y_16TIMES | AVGCNTL_BIT::XZ_16TIMES, 0 }, + { Register::AVGCNTL, AVGCNTL_BIT::Y_16TIMES_SET | AVGCNTL_BIT::XZ_16TIMES_SET, AVGCNTL_BIT::Y_16TIMES_CLEAR | AVGCNTL_BIT::XZ_16TIMES_CLEAR }, { Register::PDCNTL, PDCNTL_BIT::PULSE_NORMAL, 0 }, }; }; diff --git a/src/drivers/magnetometer/isentek/ist8310/iSentek_IST8310_registers.hpp b/src/drivers/magnetometer/isentek/ist8310/iSentek_IST8310_registers.hpp index 845bfd270b..2a49ee03e9 100644 --- a/src/drivers/magnetometer/isentek/ist8310/iSentek_IST8310_registers.hpp +++ b/src/drivers/magnetometer/isentek/ist8310/iSentek_IST8310_registers.hpp @@ -134,10 +134,12 @@ enum CNTL3_BIT : uint8_t { // AVGCNTL enum AVGCNTL_BIT : uint8_t { // 5:3 Average times for y sensor data. Times of average will be done before switch to next channel - Y_16TIMES = Bit5, // 3’b100 average by 16 times (ODRmax=166Hz) + Y_16TIMES_SET = Bit5, // 3’b100 average by 16 times (ODRmax=166Hz) + Y_16TIMES_CLEAR = Bit4 | Bit3, // 2:0 Average times for x & z sensor data. Times of average will be done before switch to next channel - XZ_16TIMES = Bit2, // average by 16 times (ODRmax=166Hz) + XZ_16TIMES_SET = Bit2, // average by 16 times (ODRmax=166Hz) + XZ_16TIMES_CLEAR = Bit1 | Bit0, }; // PDCNTL diff --git a/src/drivers/pwm_out/PWMOut.cpp b/src/drivers/pwm_out/PWMOut.cpp index 45f07466ae..b2faca0851 100644 --- a/src/drivers/pwm_out/PWMOut.cpp +++ b/src/drivers/pwm_out/PWMOut.cpp @@ -256,6 +256,22 @@ int PWMOut::set_mode(Mode mode) break; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + case MODE_12PWM: + PX4_DEBUG("MODE_12PWM"); + /* default output rates */ + _pwm_default_rate = 50; + _pwm_alt_rate = 50; + _pwm_alt_rate_channels = 0; + _pwm_mask = 0xFFF; + _pwm_initialized = false; + _num_outputs = 12; + update_params(); + + break; +#endif + #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 case MODE_14PWM: @@ -751,6 +767,9 @@ int PWMOut::ioctl(file *filp, int cmd, unsigned long arg) #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 case MODE_8PWM: #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + case MODE_12PWM: +#endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 case MODE_14PWM: #endif @@ -1192,6 +1211,13 @@ int PWMOut::pwm_ioctl(file *filp, int cmd, unsigned long arg) break; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + case MODE_12PWM: + *(unsigned *)arg = 12; + break; +#endif + #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 case MODE_8PWM: @@ -1292,6 +1318,10 @@ int PWMOut::pwm_ioctl(file *filp, int cmd, unsigned long arg) ret = set_mode(MODE_8PWM); break; + case PWM_SERVO_MODE_12PWM: + ret = set_mode(MODE_12PWM); + break; + case PWM_SERVO_MODE_14PWM: ret = set_mode(MODE_14PWM); break; @@ -1546,6 +1576,9 @@ int PWMOut::fmu_new_mode(PortMode new_mode) #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 8 servo_mode = PWMOut::MODE_8PWM; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 12 + servo_mode = PWMOut::MODE_12PWM; +#endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 14 servo_mode = PWMOut::MODE_14PWM; #endif @@ -1563,6 +1596,13 @@ int PWMOut::fmu_new_mode(PortMode new_mode) servo_mode = PWMOut::MODE_14PWM; break; #endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + case PORT_PWM12: + /* select 12-pin PWM mode */ + servo_mode = PWMOut::MODE_12PWM; + break; +#endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 case PORT_PWM8: @@ -1986,7 +2026,12 @@ int PWMOut::custom_command(int argc, char *argv[]) #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8 } else if (!strcmp(verb, "mode_pwm8")) { - new_mode = PORT_PWM14; + new_mode = PORT_PWM8; +#endif +#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12 + + } else if (!strcmp(verb, "mode_pwm12")) { + new_mode = PORT_PWM12; #endif #if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14 @@ -2042,6 +2087,8 @@ int PWMOut::print_status() case MODE_8PWM: mode_str = "pwm8"; break; + case MODE_12PWM: mode_str = "pwm12"; break; + case MODE_14PWM: mode_str = "pwm14"; break; case MODE_4CAP: mode_str = "cap4"; break; @@ -2113,6 +2160,9 @@ mixer files. # if BOARD_HAS_PWM >= 14 PRINT_MODULE_USAGE_COMMAND("mode_pwm14"); # endif +# if BOARD_HAS_PWM >= 12 + PRINT_MODULE_USAGE_COMMAND("mode_pwm12"); +# endif # if BOARD_HAS_PWM >= 8 PRINT_MODULE_USAGE_COMMAND("mode_pwm8"); # endif diff --git a/src/drivers/pwm_out/PWMOut.hpp b/src/drivers/pwm_out/PWMOut.hpp index bb12fbee44..020369a523 100644 --- a/src/drivers/pwm_out/PWMOut.hpp +++ b/src/drivers/pwm_out/PWMOut.hpp @@ -70,6 +70,7 @@ enum PortMode { PORT_FULL_GPIO, PORT_FULL_PWM, PORT_PWM14, + PORT_PWM12, PORT_PWM8, PORT_PWM6, PORT_PWM5, @@ -109,6 +110,7 @@ public: MODE_5PWM1CAP, MODE_6PWM, MODE_8PWM, + MODE_12PWM, MODE_14PWM, MODE_4CAP, MODE_5CAP, diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index 370c0755f8..01439fc45e 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -1329,7 +1329,7 @@ void PX4IO::update_params() if (param_get(param_find(str), &pwm_rev) == PX4_OK) { if (pwm_rev >= 1) { - reverse_pwm_mask |= (2 << i); + reverse_pwm_mask |= (1 << i); } } diff --git a/src/drivers/uavcan/uavcan_drivers/stm32h7/driver/src/internal.hpp b/src/drivers/uavcan/uavcan_drivers/stm32h7/driver/src/internal.hpp index b73f50f4b4..1c17066e3f 100644 --- a/src/drivers/uavcan/uavcan_drivers/stm32h7/driver/src/internal.hpp +++ b/src/drivers/uavcan/uavcan_drivers/stm32h7/driver/src/internal.hpp @@ -22,7 +22,7 @@ #ifndef UAVCAN_STM32H7_LOG // syslog() crashes the system in this context // # if UAVCAN_STM32H7_NUTTX && CONFIG_ARCH_LOWPUTC -# if 1 +# if 0 # define UAVCAN_STM32H7_LOG(fmt, ...) printf("uavcan_stm32: \n" fmt "\n", ##__VA_ARGS__) # else # define UAVCAN_STM32H7_LOG(...) ((void)0) diff --git a/src/lib/ecl b/src/lib/ecl index cd38621dd6..ffab483504 160000 --- a/src/lib/ecl +++ b/src/lib/ecl @@ -1 +1 @@ -Subproject commit cd38621dd6a4ef0f42eb29a2b4145f58023e7910 +Subproject commit ffab483504a6c2eb3b61ae10d612cb35c8fbc550 diff --git a/src/lib/l1/ECL_L1_Pos_Controller.cpp b/src/lib/l1/ECL_L1_Pos_Controller.cpp index e46c7bac62..c5e81c4f85 100644 --- a/src/lib/l1/ECL_L1_Pos_Controller.cpp +++ b/src/lib/l1/ECL_L1_Pos_Controller.cpp @@ -46,6 +46,7 @@ #include +using matrix::Vector2d; using matrix::Vector2f; using matrix::wrap_pi; @@ -72,17 +73,15 @@ float ECL_L1_Pos_Controller::switch_distance(float wp_radius) } void -ECL_L1_Pos_Controller::navigate_waypoints(const Vector2f &vector_A, const Vector2f &vector_B, - const Vector2f &vector_curr_position, const Vector2f &ground_speed_vector) +ECL_L1_Pos_Controller::navigate_waypoints(const Vector2d &vector_A, const Vector2d &vector_B, + const Vector2d &vector_curr_position, const Vector2f &ground_speed_vector) { /* this follows the logic presented in [1] */ float eta = 0.0f; - float xtrack_vel = 0.0f; - float ltrack_vel = 0.0f; /* get the direction between the last (visited) and next waypoint */ - _target_bearing = get_bearing_to_next_waypoint((double)vector_curr_position(0), (double)vector_curr_position(1), - (double)vector_B(0), (double)vector_B(1)); + _target_bearing = get_bearing_to_next_waypoint(vector_curr_position(0), vector_curr_position(1), vector_B(0), + vector_B(1)); /* enforce a minimum ground speed of 0.1 m/s to avoid singularities */ float ground_speed = math::max(ground_speed_vector.length(), 0.1f); @@ -132,11 +131,14 @@ ECL_L1_Pos_Controller::navigate_waypoints(const Vector2f &vector_A, const Vector /* unit vector from waypoint A to current position */ Vector2f vector_A_to_airplane_unit = vector_A_to_airplane.normalized(); + /* velocity across / orthogonal to line */ - xtrack_vel = ground_speed_vector % (-vector_A_to_airplane_unit); + float xtrack_vel = ground_speed_vector % (-vector_A_to_airplane_unit); + /* velocity along line */ - ltrack_vel = ground_speed_vector * (-vector_A_to_airplane_unit); + float ltrack_vel = ground_speed_vector * (-vector_A_to_airplane_unit); eta = atan2f(xtrack_vel, ltrack_vel); + /* bearing from current position to L1 point */ _nav_bearing = atan2f(-vector_A_to_airplane_unit(1), -vector_A_to_airplane_unit(0)); @@ -158,33 +160,38 @@ ECL_L1_Pos_Controller::navigate_waypoints(const Vector2f &vector_A, const Vector /* calculate eta to fly to waypoint B */ /* velocity across / orthogonal to line */ - xtrack_vel = ground_speed_vector % (-vector_B_to_P_unit); + float xtrack_vel = ground_speed_vector % (-vector_B_to_P_unit); + /* velocity along line */ - ltrack_vel = ground_speed_vector * (-vector_B_to_P_unit); + float ltrack_vel = ground_speed_vector * (-vector_B_to_P_unit); eta = atan2f(xtrack_vel, ltrack_vel); + /* bearing from current position to L1 point */ _nav_bearing = atan2f(-vector_B_to_P_unit(1), -vector_B_to_P_unit(0)); } else { - /* calculate eta to fly along the line between A and B */ /* velocity across / orthogonal to line */ - xtrack_vel = ground_speed_vector % vector_AB; + float xtrack_vel = ground_speed_vector % vector_AB; + /* velocity along line */ - ltrack_vel = ground_speed_vector * vector_AB; + float ltrack_vel = ground_speed_vector * vector_AB; + /* calculate eta2 (angle of velocity vector relative to line) */ float eta2 = atan2f(xtrack_vel, ltrack_vel); + /* calculate eta1 (angle to L1 point) */ float xtrackErr = vector_A_to_airplane % vector_AB; float sine_eta1 = xtrackErr / math::max(_L1_distance, 0.1f); + /* limit output to 45 degrees */ sine_eta1 = math::constrain(sine_eta1, -0.7071f, 0.7071f); //sin(pi/4) = 0.7071 float eta1 = asinf(sine_eta1); eta = eta1 + eta2; + /* bearing from current position to L1 point */ _nav_bearing = atan2f(vector_AB(1), vector_AB(0)) + eta1; - } /* limit angle to +-90 degrees */ @@ -201,7 +208,7 @@ ECL_L1_Pos_Controller::navigate_waypoints(const Vector2f &vector_A, const Vector } void -ECL_L1_Pos_Controller::navigate_loiter(const Vector2f &vector_A, const Vector2f &vector_curr_position, float radius, +ECL_L1_Pos_Controller::navigate_loiter(const Vector2d &vector_A, const Vector2d &vector_curr_position, float radius, int8_t loiter_direction, const Vector2f &ground_speed_vector) { /* the complete guidance logic in this section was proposed by [2] */ @@ -212,8 +219,8 @@ ECL_L1_Pos_Controller::navigate_loiter(const Vector2f &vector_A, const Vector2f float K_velocity = 2.0f * _L1_damping * omega; /* update bearing to next waypoint */ - _target_bearing = get_bearing_to_next_waypoint((double)vector_curr_position(0), (double)vector_curr_position(1), - (double)vector_A(0), (double)vector_A(1)); + _target_bearing = get_bearing_to_next_waypoint(vector_curr_position(0), vector_curr_position(1), vector_A(0), + vector_A(1)); /* ground speed, enforce minimum of 0.1 m/s to avoid singularities */ float ground_speed = math::max(ground_speed_vector.length(), 0.1f); @@ -356,13 +363,17 @@ void ECL_L1_Pos_Controller::navigate_level_flight(float current_heading) update_roll_setpoint(); } -Vector2f ECL_L1_Pos_Controller::get_local_planar_vector(const Vector2f &origin, const Vector2f &target) const +Vector2f ECL_L1_Pos_Controller::get_local_planar_vector(const Vector2d &origin, const Vector2d &target) const { /* this is an approximation for small angles, proposed by [2] */ - Vector2f out(math::radians((target(0) - origin(0))), - math::radians((target(1) - origin(1))*cosf(math::radians(origin(0))))); + const double x_angle = math::radians(target(0) - origin(0)); + const double y_angle = math::radians(target(1) - origin(1)); + const double x_origin_cos = cos(math::radians(origin(0))); - return out * static_cast(CONSTANTS_RADIUS_OF_EARTH); + return Vector2f{ + static_cast(x_angle * CONSTANTS_RADIUS_OF_EARTH), + static_cast(y_angle *x_origin_cos * CONSTANTS_RADIUS_OF_EARTH), + }; } void ECL_L1_Pos_Controller::set_l1_period(float period) diff --git a/src/lib/l1/ECL_L1_Pos_Controller.hpp b/src/lib/l1/ECL_L1_Pos_Controller.hpp index 1cdaa3f06c..4c56239cc0 100644 --- a/src/lib/l1/ECL_L1_Pos_Controller.hpp +++ b/src/lib/l1/ECL_L1_Pos_Controller.hpp @@ -143,8 +143,8 @@ public: * * @return sets _lateral_accel setpoint */ - void navigate_waypoints(const matrix::Vector2f &vector_A, const matrix::Vector2f &vector_B, - const matrix::Vector2f &vector_curr_position, const matrix::Vector2f &ground_speed); + void navigate_waypoints(const matrix::Vector2d &vector_A, const matrix::Vector2d &vector_B, + const matrix::Vector2d &vector_curr_position, const matrix::Vector2f &ground_speed); /** * Navigate on an orbit around a loiter waypoint. @@ -154,7 +154,7 @@ public: * * @return sets _lateral_accel setpoint */ - void navigate_loiter(const matrix::Vector2f &vector_A, const matrix::Vector2f &vector_curr_position, float radius, + void navigate_loiter(const matrix::Vector2d &vector_A, const matrix::Vector2d &vector_curr_position, float radius, int8_t loiter_direction, const matrix::Vector2f &ground_speed_vector); /** @@ -235,7 +235,7 @@ private: * @param wp The point to convert to into the local coordinates, in WGS84 coordinates * @return The vector in meters pointing from the reference position to the coordinates */ - matrix::Vector2f get_local_planar_vector(const matrix::Vector2f &origin, const matrix::Vector2f &target) const; + matrix::Vector2f get_local_planar_vector(const matrix::Vector2d &origin, const matrix::Vector2d &target) const; /** * Update roll angle setpoint. This will also apply slew rate limits if set. diff --git a/src/lib/matrix b/src/lib/matrix index 977cf52322..3679f7fd51 160000 --- a/src/lib/matrix +++ b/src/lib/matrix @@ -1 +1 @@ -Subproject commit 977cf52322ab3ca93125423a0f9e9b3eca0516d7 +Subproject commit 3679f7fd5160c7d2a8271b1134ca1e601f1a4254 diff --git a/src/lib/parameters/CMakeLists.txt b/src/lib/parameters/CMakeLists.txt index c68e1dbc18..3964ade448 100644 --- a/src/lib/parameters/CMakeLists.txt +++ b/src/lib/parameters/CMakeLists.txt @@ -31,6 +31,8 @@ # ############################################################################ +add_compile_options(${MAX_CUSTOM_OPT_LEVEL}) + add_subdirectory(tinybson) if (NOT PARAM_DEFAULT_OVERRIDES) @@ -113,16 +115,14 @@ add_custom_command(OUTPUT ${parameters_xml} ${parameters_json} ${parameters_json ) add_custom_target(parameters_xml DEPENDS ${parameters_xml}) -# generate px4_parameters.c and px4_parameters{,_public}.h -add_custom_command(OUTPUT px4_parameters.c px4_parameters.h px4_parameters_public.h +# generate px4_parameters.hpp +add_custom_command(OUTPUT px4_parameters.hpp COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/px_generate_params.py --xml ${parameters_xml} --dest ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${PX4_BINARY_DIR}/parameters.xml px_generate_params.py - templates/px4_parameters.c.jinja - templates/px4_parameters.h.jinja - templates/px4_parameters_public.h.jinja + templates/px4_parameters.hpp.jinja ) set(SRCS) @@ -147,10 +147,8 @@ endif() if (NOT "${PX4_BOARD}" MATCHES "px4_io") add_library(parameters ${SRCS} - px4_parameters.c - px4_parameters.h - px4_parameters_public.h - ) + px4_parameters.hpp + ) if ("${CONFIG_SHMEM}" STREQUAL "1") target_link_libraries(parameters PRIVATE px4_layer) diff --git a/src/lib/parameters/param.h b/src/lib/parameters/param.h index fce0ade507..177cf17b2d 100644 --- a/src/lib/parameters/param.h +++ b/src/lib/parameters/param.h @@ -210,7 +210,6 @@ __EXPORT size_t param_size(param_t param); * * @param param A handle returned by param_find or passed by param_foreach. * @param val Where to return the value, assumed to point to suitable storage for the parameter type. - * For structures, a bitwise copy of the structure is performed to this address. * @return Zero if the parameter's value could be returned, nonzero otherwise. */ __EXPORT int param_get(param_t param, void *val); @@ -220,7 +219,6 @@ __EXPORT int param_get(param_t param, void *val); * * @param param A handle returned by param_find or passed by param_foreach. * @param val Where to return the value, assumed to point to suitable storage for the parameter type. - * For structures, a bitwise copy of the structure is performed to this address. * @return Zero if the parameter's deafult value could be returned, nonzero otherwise. */ __EXPORT int param_get_default_value(param_t param, void *val); @@ -230,11 +228,19 @@ __EXPORT int param_get_default_value(param_t param, void *val); * * @param param A handle returned by param_find or passed by param_foreach. * @param val The value to set; assumed to point to a variable of the parameter type. - * For structures, the pointer is assumed to point to a structure to be copied. * @return Zero if the parameter's value could be set from a scalar, nonzero otherwise. */ __EXPORT int param_set(param_t param, const void *val); +/** + * Set the default value of a parameter. + * + * @param param A handle returned by param_find or passed by param_foreach. + * @param val The default value to set; assumed to point to a variable of the parameter type. + * @return Zero if the parameter's default value could be set from a scalar, nonzero otherwise. + */ +__EXPORT int param_set_default_value(param_t param, const void *val); + /** * Mark a parameter as used. Only marked parameters will be sent to a GCS. * A call to param_find() will mark a param as used as well. @@ -248,7 +254,6 @@ __EXPORT void param_set_used(param_t param); * * @param param A handle returned by param_find or passed by param_foreach. * @param val The value to set; assumed to point to a variable of the parameter type. - * For structures, the pointer is assumed to point to a structure to be copied. * @return Zero if the parameter's value could be set from a scalar, nonzero otherwise. */ __EXPORT int param_set_no_notification(param_t param, const void *val); @@ -262,9 +267,6 @@ __EXPORT void param_notify_changes(void); /** * Reset a parameter to its default value. * - * This function frees any storage used by struct parameters, and returns the parameter - * to its default value. - * * @param param A handle returned by param_find or passed by param_foreach. * @return Zero on success, nonzero on failure */ @@ -273,9 +275,6 @@ __EXPORT int param_reset(param_t param); /** * Reset a parameter to its default value, but do not notify the system about the change. * - * This function frees any storage used by struct parameters, and returns the parameter - * to its default value. - * * @param param A handle returned by param_find or passed by param_foreach. * @return Zero on success, nonzero on failure */ @@ -283,16 +282,12 @@ __EXPORT int param_reset_no_notification(param_t param); /** * Reset all parameters to their default values. - * - * This function also releases the storage used by struct parameters. */ __EXPORT void param_reset_all(void); /** * Reset all parameters to their default values except for excluded parameters. * - * This function also releases the storage used by struct parameters. - * * @param excludes Array of param names to exclude from resetting. Use a wildcard * at the end to exclude parameters with a certain prefix. * @param num_excludes The number of excludes provided. @@ -304,8 +299,6 @@ typedef bool(*param_filter_func)(param_t handle); /** * Reset only specific parameters to their default values. * - * This function also releases the storage used by struct parameters. - * * @param resets Array of param names to reset. Use a wildcard at the end to reset parameters with a certain prefix. * @param num_resets The number of passed reset conditions in the resets array. */ @@ -435,25 +428,7 @@ union param_value_u { * instead. */ struct param_info_s { - const char *name - -// GCC 4.8 and higher don't implement proper alignment of static data on -// 64-bit. This means that the 24-byte param_info_s variables are -// 16 byte aligned by GCC and that messes up the assumption that -// sequential items in the __param segment can be addressed as an array. -// The assumption is that the address of the second parameter is at -// ¶m[0]+sizeof(param[0]). When compiled with clang it is -// true, with gcc is is not true. -// See https://llvm.org/bugs/show_bug.cgi?format=multiple&id=18006 -// The following hack is for GCC >=4.8 only. Clang works fine without -// this. -#ifdef __PX4_POSIX - __attribute__((aligned(16))); -#else - ; -#endif - param_type_t type; - uint16_t volatile_param: 1; + const char *name; union param_value_u val; }; diff --git a/src/lib/parameters/parameters.cpp b/src/lib/parameters/parameters.cpp index 9b1d393b31..e393bc54ea 100644 --- a/src/lib/parameters/parameters.cpp +++ b/src/lib/parameters/parameters.cpp @@ -44,16 +44,18 @@ #define PARAM_IMPLEMENTATION #include "param.h" #include "param_translation.h" -#include +#include #include "tinybson/tinybson.h" #include #include #include +#include #include #include #include +#include #include #include #include @@ -91,64 +93,31 @@ static char *param_user_file = nullptr; /* autosaving variables */ static hrt_abstime last_autosave_timestamp = 0; static struct work_s autosave_work {}; -static volatile bool autosave_scheduled = false; +static px4::atomic autosave_scheduled{false}; static bool autosave_disabled = false; -/** - * Array of static parameter info. - */ -static const param_info_s *param_info_base = (const param_info_s *) &px4_parameters; -#define param_info_count px4_parameters.param_count +static constexpr uint16_t param_info_count = sizeof(px4::parameters) / sizeof(param_info_s); +static px4::AtomicBitset params_active; // params found +static px4::AtomicBitset params_changed; // params non-default +static px4::Bitset params_custom_default; // params with runtime default value -/** - * Storage for modified parameters. - */ +// Storage for modified parameters. struct param_wbuf_s { - union param_value_u val; - param_t param; - bool unsaved; + union param_value_u val; + param_t param; + bool unsaved; }; - -uint8_t *param_changed_storage = nullptr; -int size_param_changed_storage_bytes = 0; -const int bits_per_allocation_unit = (sizeof(*param_changed_storage) * 8); - - -static unsigned -get_param_info_count() -{ - /* Singleton creation of and array of bits to track changed values */ - if (!param_changed_storage) { - /* Note that we have a (highly unlikely) race condition here: in the worst case the allocation is done twice */ - size_param_changed_storage_bytes = (param_info_count / bits_per_allocation_unit) + 1; - param_changed_storage = (uint8_t *)calloc(size_param_changed_storage_bytes, 1); - - /* If the allocation fails we need to indicate failure in the - * API by returning PARAM_INVALID - */ - if (param_changed_storage == nullptr) { - return 0; - } - } - - return param_info_count; -} - /** flexible array holding modified parameter values */ UT_array *param_values{nullptr}; +UT_array *param_custom_default_values{nullptr}; -/** array info for the modified parameters array */ const UT_icd param_icd = {sizeof(param_wbuf_s), nullptr, nullptr, nullptr}; /** parameter update topic handle */ static orb_advert_t param_topic = nullptr; static unsigned int param_instance = 0; -static void param_set_used_internal(param_t param); - -static param_t param_find_internal(const char *name, bool notification); - // the following implements an RW-lock using 2 semaphores (used as mutexes). It gives // priority to readers, meaning a writer could suffer from starvation, but in our use-case // we only have short periods of reads and writes are rare. @@ -226,10 +195,10 @@ param_init() px4_sem_init(¶m_sem_save, 0, 1); px4_sem_init(&reader_lock_holders_lock, 0, 1); - param_export_perf = perf_alloc(PC_ELAPSED, "param_export"); - param_find_perf = perf_alloc(PC_COUNT, "param_find"); - param_get_perf = perf_alloc(PC_COUNT, "param_get"); - param_set_perf = perf_alloc(PC_ELAPSED, "param_set"); + param_export_perf = perf_alloc(PC_ELAPSED, "param: export"); + param_find_perf = perf_alloc(PC_COUNT, "param: find"); + param_get_perf = perf_alloc(PC_COUNT, "param: get"); + param_set_perf = perf_alloc(PC_ELAPSED, "param: set"); } /** @@ -238,15 +207,10 @@ param_init() * @param param The parameter handle to test. * @return True if the handle is valid. */ -static bool -handle_in_range(param_t param) -{ - unsigned count = get_param_info_count(); - return (count && param < count); -} +static constexpr bool handle_in_range(param_t param) { return (param < param_info_count); } /** - * Compare two modifid parameter structures to determine ordering. + * Compare two modified parameter structures to determine ordering. * * This function is suitable for passing to qsort or bsearch. */ @@ -277,30 +241,31 @@ param_compare_values(const void *a, const void *b) static param_wbuf_s * param_find_changed(param_t param) { - param_wbuf_s *s = nullptr; - param_assert_locked(); - if (param_values != nullptr) { + if (params_changed[param] && (param_values != nullptr)) { param_wbuf_s key{}; key.param = param; - s = (param_wbuf_s *)utarray_find(param_values, &key, param_compare_values); + return (param_wbuf_s *)utarray_find(param_values, &key, param_compare_values); } - return s; + return nullptr; } -static void -_param_notify_changes() +void +param_notify_changes() { - parameter_update_s pup = {}; - pup.timestamp = hrt_absolute_time(); + parameter_update_s pup{}; pup.instance = param_instance++; + pup.get_count = perf_event_count(param_get_perf); + pup.set_count = perf_event_count(param_set_perf); + pup.find_count = perf_event_count(param_find_perf); + pup.export_count = perf_event_count(param_export_perf); + pup.active = params_active.count(); + pup.changed = params_changed.count(); + pup.custom_default = params_custom_default.count(); + pup.timestamp = hrt_absolute_time(); - /* - * If we don't have a handle to our topic, create one now; otherwise - * just publish. - */ if (param_topic == nullptr) { param_topic = orb_advertise(ORB_ID(parameter_update), &pup); @@ -309,30 +274,23 @@ _param_notify_changes() } } -void -param_notify_changes() -{ - _param_notify_changes(); -} - -param_t -param_find_internal(const char *name, bool notification) +static param_t param_find_internal(const char *name, bool notification) { perf_count(param_find_perf); param_t middle; param_t front = 0; - param_t last = get_param_info_count(); + param_t last = param_info_count; /* perform a binary search of the known parameters */ while (front <= last) { middle = front + (last - front) / 2; - int ret = strcmp(name, param_info_base[middle].name); + int ret = strcmp(name, param_name(middle)); if (ret == 0) { if (notification) { - param_set_used_internal(middle); + param_set_used(middle); } perf_end(param_find_perf); @@ -354,78 +312,50 @@ param_find_internal(const char *name, bool notification) return PARAM_INVALID; } -param_t -param_find(const char *name) +param_t param_find(const char *name) { return param_find_internal(name, true); } -param_t -param_find_no_notification(const char *name) +param_t param_find_no_notification(const char *name) { return param_find_internal(name, false); } -unsigned -param_count() +unsigned param_count() { - return get_param_info_count(); + return param_info_count; } -unsigned -param_count_used() +unsigned param_count_used() { - unsigned count = 0; - - // ensure the allocation has been done - if (get_param_info_count()) { - - for (int i = 0; i < size_param_changed_storage_bytes; i++) { - for (int j = 0; j < bits_per_allocation_unit; j++) { - if (param_changed_storage[i] & (1 << j)) { - count++; - } - } - } - } - - return count; + return params_active.count(); } -param_t -param_for_index(unsigned index) +param_t param_for_index(unsigned index) { - unsigned count = get_param_info_count(); - - if (count && index < count) { + if (index < param_info_count) { return (param_t)index; } return PARAM_INVALID; } -param_t -param_for_used_index(unsigned index) +param_t param_for_used_index(unsigned index) { - int count = get_param_info_count(); - - if (count && (int)index < count) { - /* walk all params and count used params */ + // walk all params and count used params + if (index < param_info_count) { unsigned used_count = 0; - for (int i = 0; i < size_param_changed_storage_bytes; i++) { - for (int j = 0; j < bits_per_allocation_unit; j++) { - if (param_changed_storage[i] & (1 << j)) { - - /* we found the right used count, - * return the param value - */ - if (index == used_count) { - return (param_t)(i * bits_per_allocation_unit + j); - } - - used_count++; + for (int i = 0; i < params_active.size(); i++) { + if (params_active[i]) { + // we found the right used count, + // return the param value + if (index == used_count) { + return static_cast(i); } + + used_count++; } } } @@ -433,8 +363,7 @@ param_for_used_index(unsigned index) return PARAM_INVALID; } -int -param_get_index(param_t param) +int param_get_index(param_t param) { if (handle_in_range(param)) { return (unsigned)param; @@ -443,8 +372,7 @@ param_get_index(param_t param) return -1; } -int -param_get_used_index(param_t param) +int param_get_used_index(param_t param) { /* this tests for out of bounds and does a constant time lookup */ if (!param_used(param)) { @@ -454,42 +382,46 @@ param_get_used_index(param_t param) /* walk all params and count, now knowing that it has a valid index */ int used_count = 0; - for (int i = 0; i < size_param_changed_storage_bytes; i++) { - for (int j = 0; j < bits_per_allocation_unit; j++) { - if (param_changed_storage[i] & (1 << j)) { + for (int i = 0; i < params_active.size(); i++) { + if (params_active[i]) { - if ((int)param == i * bits_per_allocation_unit + j) { - return used_count; - } - - used_count++; + if (param == i) { + return used_count; } + + used_count++; } } return -1; } -const char * -param_name(param_t param) +const char *param_name(param_t param) { - return handle_in_range(param) ? param_info_base[param].name : nullptr; + return handle_in_range(param) ? px4::parameters[param].name : nullptr; } -bool -param_is_volatile(param_t param) +param_type_t param_type(param_t param) { - return handle_in_range(param) ? param_info_base[param].volatile_param : false; + return handle_in_range(param) ? px4::parameters_type[param] : PARAM_TYPE_UNKNOWN; } -bool -param_value_is_default(param_t param) +bool param_is_volatile(param_t param) { - struct param_wbuf_s *s; - param_lock_reader(); - s = param_find_changed(param); - param_unlock_reader(); - return s == nullptr; + if (handle_in_range(param)) { + for (const auto &p : px4::parameters_volatile) { + if (static_cast(param) == p) { + return true; + } + } + } + + return false; +} + +bool param_value_is_default(param_t param) +{ + return handle_in_range(param) && !params_changed[param]; } bool @@ -503,14 +435,7 @@ param_value_unsaved(param_t param) return ret; } -param_type_t -param_type(param_t param) -{ - return handle_in_range(param) ? param_info_base[param].type : PARAM_TYPE_UNKNOWN; -} - -size_t -param_size(param_t param) +size_t param_size(param_t param) { if (handle_in_range(param)) { switch (param_type(param)) { @@ -536,43 +461,65 @@ param_size(param_t param) static const void * param_get_value_ptr(param_t param) { - const void *result = nullptr; - param_assert_locked(); if (handle_in_range(param)) { - - const union param_value_u *v; - /* work out whether we're fetching the default or a written value */ struct param_wbuf_s *s = param_find_changed(param); if (s != nullptr) { - v = &s->val; + return &s->val; } else { - v = ¶m_info_base[param].val; - } + if (params_custom_default[param] && param_custom_default_values) { + // get default from custom default storage + param_wbuf_s key{}; + key.param = param; + param_wbuf_s *pbuf = (param_wbuf_s *)utarray_find(param_custom_default_values, &key, param_compare_values); - result = v; + if (pbuf != nullptr) { + return &pbuf->val; + } + } + + // otherwise return static default value + switch (param_type(param)) { + case PARAM_TYPE_INT32: + return &px4::parameters[param].val.i; + + case PARAM_TYPE_FLOAT: + return &px4::parameters[param].val.f; + } + } } - return result; + return nullptr; } int param_get(param_t param, void *val) { perf_count(param_get_perf); - int result = -1; + + if (!handle_in_range(param)) { + PX4_ERR("get: param %d invalid", param); + return PX4_ERROR; + } + + if (!params_active[param]) { + PX4_WARN("get: param %d (%s) not active", param, param_name(param)); + } + + int result = PX4_ERROR; if (val) { param_lock_reader(); + const void *v = param_get_value_ptr(param); if (v) { memcpy(val, v, param_size(param)); - result = 0; + result = PX4_OK; } param_unlock_reader(); @@ -582,21 +529,48 @@ param_get(param_t param, void *val) } int -param_get_default_value(param_t param, void *default_val) +param_get_default_value_internal(param_t param, void *default_val) { - if (default_val && handle_in_range(param)) { + if (!handle_in_range(param)) { + PX4_ERR("get default value: param %d invalid", param); + return PX4_ERROR; + } + + if (default_val) { + if (params_custom_default[param] && param_custom_default_values) { + // get default from custom default storage + param_wbuf_s key{}; + key.param = param; + param_wbuf_s *pbuf = (param_wbuf_s *)utarray_find(param_custom_default_values, &key, param_compare_values); + + if (pbuf != nullptr) { + memcpy(default_val, &pbuf->val, param_size(param)); + return PX4_OK; + } + } + + // otherwise return static default value switch (param_type(param)) { case PARAM_TYPE_INT32: - memcpy(default_val, ¶m_info_base[param].val.i, param_size(param)); - return 0; + memcpy(default_val, &px4::parameters[param].val.i, param_size(param)); + return PX4_OK; case PARAM_TYPE_FLOAT: - memcpy(default_val, ¶m_info_base[param].val.f, param_size(param)); - return 0; + memcpy(default_val, &px4::parameters[param].val.f, param_size(param)); + return PX4_OK; } } - return -1; + return PX4_ERROR; +} + +int +param_get_default_value(param_t param, void *default_val) +{ + param_lock_reader(); + int ret = param_get_default_value_internal(param, default_val); + param_unlock_reader(); + return ret; } /** @@ -621,7 +595,7 @@ autosave_worker(void *arg) param_lock_writer(); last_autosave_timestamp = hrt_absolute_time(); - autosave_scheduled = false; + autosave_scheduled.store(false); disabled = autosave_disabled; param_unlock_writer(); @@ -646,7 +620,7 @@ autosave_worker(void *arg) static void param_autosave() { - if (autosave_scheduled || autosave_disabled) { + if (autosave_scheduled.load() || autosave_disabled) { return; } @@ -663,7 +637,7 @@ param_autosave() delay = rate_limit - last_save_elapsed; } - autosave_scheduled = true; + autosave_scheduled.store(true); work_queue(LPWORK, &autosave_work, (worker_t)&autosave_worker, nullptr, USEC2TICK(delay)); } @@ -672,9 +646,9 @@ param_control_autosave(bool enable) { param_lock_writer(); - if (!enable && autosave_scheduled) { + if (!enable && autosave_scheduled.load()) { work_cancel(LPWORK, &autosave_work); - autosave_scheduled = false; + autosave_scheduled.store(false); } autosave_disabled = !enable; @@ -684,32 +658,57 @@ param_control_autosave(bool enable) static int param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_changes) { + if (!handle_in_range(param)) { + PX4_ERR("set invalid param %d", param); + return PX4_ERROR; + } + + if (val == nullptr) { + PX4_ERR("set invalid value"); + return PX4_ERROR; + } + int result = -1; - bool params_changed = false; + bool param_changed = false; param_lock_writer(); perf_begin(param_set_perf); + // create the parameter store if it doesn't exist if (param_values == nullptr) { utarray_new(param_values, ¶m_icd); + + // mark all parameters unchanged (default) + for (int i = 0; i < params_changed.size(); i++) { + params_changed.set(i, false); + } } if (param_values == nullptr) { PX4_ERR("failed to allocate modified values array"); goto out; - } - if (handle_in_range(param)) { + } else { // check if param being set to default value bool set_to_default = false; switch (param_type(param)) { - case PARAM_TYPE_INT32: - set_to_default = (param_info_base[param].val.i == *(int32_t *)val); + case PARAM_TYPE_INT32: { + int32_t default_val = 0; + + if (param_get_default_value_internal(param, &default_val) == PX4_OK) { + set_to_default = (default_val == *(int32_t *)val); + } + } break; - case PARAM_TYPE_FLOAT: - set_to_default = (fabsf(param_info_base[param].val.f - * (float *)val) < FLT_EPSILON); + case PARAM_TYPE_FLOAT: { + float default_val = 0; + + if (param_get_default_value_internal(param, &default_val) == PX4_OK) { + set_to_default = (fabsf(default_val - * (float *)val) < FLT_EPSILON); + } + } break; } @@ -717,52 +716,61 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ if (set_to_default) { if (s != nullptr) { - // param in memory and set to non-default value, clear + // param is being set non-default -> default, simply clear storage int pos = utarray_eltidx(param_values, s); utarray_erase(param_values, pos, 1); - params_changed = true; + param_changed = true; + + } else { + // do nothing if param not already set and being set to default } - // do nothing if param not already set and being set to default + params_changed.set(param, false); + result = PX4_OK; } else { if (s == nullptr) { /* construct a new parameter */ - param_wbuf_s buf = {}; + param_wbuf_s buf{}; buf.param = param; - params_changed = true; + param_changed = true; /* add it to the array and sort */ utarray_push_back(param_values, &buf); utarray_sort(param_values, param_compare_values); + params_changed.set(param, true); /* find it after sorting */ s = param_find_changed(param); } - /* update the changed value */ - switch (param_type(param)) { - case PARAM_TYPE_INT32: - params_changed = params_changed || s->val.i != *(int32_t *)val; - s->val.i = *(int32_t *)val; - break; + if (s != nullptr) { + /* update the changed value */ + switch (param_type(param)) { + case PARAM_TYPE_INT32: + param_changed = param_changed || s->val.i != *(int32_t *)val; + s->val.i = *(int32_t *)val; + s->unsaved = !mark_saved; + params_changed.set(param, true); + result = PX4_OK; + break; - case PARAM_TYPE_FLOAT: - params_changed = params_changed || fabsf(s->val.f - * (float *)val) > FLT_EPSILON; - s->val.f = *(float *)val; - break; + case PARAM_TYPE_FLOAT: + param_changed = param_changed || fabsf(s->val.f - * (float *)val) > FLT_EPSILON; + s->val.f = *(float *)val; + s->unsaved = !mark_saved; + params_changed.set(param, true); + result = PX4_OK; + break; - default: - goto out; + default: + break; + } } - - s->unsaved = !mark_saved; } - result = 0; - - if (!mark_saved) { // this is false when importing parameters + if ((result == PX4_OK) && !mark_saved) { // this is false when importing parameters param_autosave(); } } @@ -775,8 +783,8 @@ out: * If we set something, now that we have unlocked, go ahead and advertise that * a thing has been set. */ - if (params_changed && notify_changes) { - _param_notify_changes(); + if ((result == PX4_OK) && param_changed && notify_changes) { + param_notify_changes(); } return result; @@ -794,49 +802,142 @@ const void *param_get_value_ptr_external(param_t param) } #endif -int -param_set(param_t param, const void *val) +int param_set(param_t param, const void *val) { return param_set_internal(param, val, false, true); } -int -param_set_no_notification(param_t param, const void *val) +int param_set_no_notification(param_t param, const void *val) { return param_set_internal(param, val, false, false); } -bool -param_used(param_t param) +bool param_used(param_t param) { - int param_index = param_get_index(param); - - if (param_index < 0) { - return false; + if (handle_in_range(param)) { + return params_active[param]; } - return param_changed_storage[param_index / bits_per_allocation_unit] & - (1 << param_index % bits_per_allocation_unit); + return false; } void param_set_used(param_t param) { - param_set_used_internal(param); + if (handle_in_range(param)) { + params_active.set(param, true); + } } -void param_set_used_internal(param_t param) +int param_set_default_value(param_t param, const void *val) { - int param_index = param_get_index(param); - - if (param_index < 0) { - return; + if (!handle_in_range(param)) { + PX4_ERR("set default value invalid param %d", param); + return PX4_ERROR; } - // FIXME: this needs locking too - param_changed_storage[param_index / bits_per_allocation_unit] |= - (1 << param_index % bits_per_allocation_unit); + if (val == nullptr) { + PX4_ERR("set default value invalid value"); + return PX4_ERROR; + } + + int result = PX4_ERROR; + + param_lock_writer(); + + if (param_custom_default_values == nullptr) { + utarray_new(param_custom_default_values, ¶m_icd); + + // mark all parameters unchanged (default) + for (int i = 0; i < params_custom_default.size(); i++) { + params_custom_default.set(i, false); + } + } + + if (param_custom_default_values == nullptr) { + PX4_ERR("failed to allocate custom default values array"); + param_unlock_writer(); + return PX4_ERROR; + } + + // check if param being set to default value + bool setting_to_static_default = false; + + switch (param_type(param)) { + case PARAM_TYPE_INT32: + setting_to_static_default = (px4::parameters[param].val.i == *(int32_t *)val); + break; + + case PARAM_TYPE_FLOAT: + setting_to_static_default = (fabsf(px4::parameters[param].val.f - * (float *)val) < FLT_EPSILON); + break; + } + + // find if custom default value is already set + param_wbuf_s *s = nullptr; + + { + param_wbuf_s key{}; + key.param = param; + s = (param_wbuf_s *)utarray_find(param_custom_default_values, &key, param_compare_values); + } + + if (setting_to_static_default) { + if (s != nullptr) { + // param in memory and set to non-default value, clear + int pos = utarray_eltidx(param_custom_default_values, s); + utarray_erase(param_custom_default_values, pos, 1); + } + + // do nothing if param not already set and being set to default + params_custom_default.set(param, false); + result = PX4_OK; + + } else { + if (s == nullptr) { + // construct a new parameter default value + param_wbuf_s buf{}; + buf.param = param; + + // add it to the array and sort + utarray_push_back(param_custom_default_values, &buf); + utarray_sort(param_custom_default_values, param_compare_values); + + // find it after sorting + s = (param_wbuf_s *)utarray_find(param_custom_default_values, &buf, param_compare_values); + } + + if (s != nullptr) { + // update the default value + switch (param_type(param)) { + case PARAM_TYPE_INT32: + s->val.i = *(int32_t *)val; + params_custom_default.set(param, true); + result = PX4_OK; + break; + + case PARAM_TYPE_FLOAT: + s->val.f = *(float *)val; + params_custom_default.set(param, true); + result = PX4_OK; + break; + + default: + break; + } + } + } + + param_unlock_writer(); + + if ((result == PX4_OK) && param_used(param)) { + // send notification if param is already in use + param_notify_changes(); + } + + return result; } + static int param_reset_internal(param_t param, bool notify = true) { param_wbuf_s *s = nullptr; @@ -855,6 +956,8 @@ static int param_reset_internal(param_t param, bool notify = true) utarray_erase(param_values, pos, 1); } + params_changed.set(param, false); + param_found = true; } @@ -863,7 +966,7 @@ static int param_reset_internal(param_t param, bool notify = true) param_unlock_writer(); if (s != nullptr && notify) { - _param_notify_changes(); + param_notify_changes(); } return (!param_found); @@ -879,6 +982,10 @@ param_reset_all_internal(bool auto_save) if (param_values != nullptr) { utarray_free(param_values); + + for (int i = 0; i < params_changed.size(); i++) { + params_changed.set(i, false); + } } /* mark as reset / deleted */ @@ -890,7 +997,7 @@ param_reset_all_internal(bool auto_save) param_unlock_writer(); - _param_notify_changes(); + param_notify_changes(); } void @@ -902,9 +1009,7 @@ param_reset_all() void param_reset_excludes(const char *excludes[], int num_excludes) { - param_t param; - - for (param = 0; handle_in_range(param); param++) { + for (param_t param = 0; handle_in_range(param); param++) { const char *name = param_name(param); bool exclude = false; @@ -929,9 +1034,7 @@ param_reset_excludes(const char *excludes[], int num_excludes) void param_reset_specific(const char *resets[], int num_resets) { - param_t param; - - for (param = 0; handle_in_range(param); param++) { + for (param_t param = 0; handle_in_range(param); param++) { const char *name = param_name(param); bool reset = false; @@ -1114,6 +1217,11 @@ param_export(int fd, bool only_unsaved, param_filter_func filter) continue; } + // don't export default values + if (param_value_is_default(s->param)) { + continue; + } + s->unsaved = false; const char *name = param_name(s->param); @@ -1410,6 +1518,12 @@ void param_print_status() utarray_len(param_values), param_values->n, param_values->n * sizeof(UT_icd)); } + if (param_custom_default_values != nullptr) { + PX4_INFO("storage array (custom defaults): %d/%d elements (%zu bytes total)", + utarray_len(param_custom_default_values), param_custom_default_values->n, + param_custom_default_values->n * sizeof(UT_icd)); + } + PX4_INFO("auto save: %s", autosave_disabled ? "off" : "on"); if (!autosave_disabled && (last_autosave_timestamp > 0)) { diff --git a/src/lib/parameters/px_generate_params.py b/src/lib/parameters/px_generate_params.py index 64440a0e94..559b08e4d2 100755 --- a/src/lib/parameters/px_generate_params.py +++ b/src/lib/parameters/px_generate_params.py @@ -50,9 +50,7 @@ def generate(xml_file, dest='.'): os.path.mkdir(dest) template_files = [ - 'px4_parameters.h.jinja', - 'px4_parameters_public.h.jinja', - 'px4_parameters.c.jinja', + 'px4_parameters.hpp.jinja', ] for template_file in template_files: template = env.get_template(template_file) diff --git a/src/lib/parameters/templates/px4_parameters.c.jinja b/src/lib/parameters/templates/px4_parameters.c.jinja deleted file mode 100644 index fabedaed31..0000000000 --- a/src/lib/parameters/templates/px4_parameters.c.jinja +++ /dev/null @@ -1,35 +0,0 @@ -{# jinja syntax: http://jinja.pocoo.org/docs/2.9/templates/ #} -#include "px4_parameters.h" - -// DO NOT EDIT -// This file is autogenerated from paramaters.xml - -__BEGIN_DECLS - -const - -struct px4_parameters_t px4_parameters = { -{% for param in params %} - { - "{{ param.attrib["name"] }}", - PARAM_TYPE_{{ param.attrib["type"] }}, - {%- if param.attrib["volatile"] == "true" %} - .volatile_param = 1, - {%- else %} - .volatile_param = 0, - {%- endif %} - {%- if param.attrib["type"] == "FLOAT" %} - .val.f = {{ param.attrib["default"] }} - {%- elif param.attrib["type"] == "INT32" %} - .val.i = {{ param.attrib["default"] }} - {%- endif %} - }, -{% endfor %} - {{ params | length }} -}; - -//extern const struct px4_parameters_t px4_parameters; - -__END_DECLS - -{# vim: set noet ft=jinja fenc=utf-8 ff=unix sts=4 sw=4 ts=4 : #} diff --git a/src/lib/parameters/templates/px4_parameters.h.jinja b/src/lib/parameters/templates/px4_parameters.h.jinja deleted file mode 100644 index 807aa21c82..0000000000 --- a/src/lib/parameters/templates/px4_parameters.h.jinja +++ /dev/null @@ -1,21 +0,0 @@ -{# jinja syntax: http://jinja.pocoo.org/docs/2.9/templates/ #} -#include -#include - -// DO NOT EDIT -// This file is autogenerated from parameters.xml - -__BEGIN_DECLS - -struct px4_parameters_t { -{%- for param in params %} - const struct param_info_s __param__{{ param.attrib["name"] }}; -{%- endfor %} - const unsigned int param_count; -}; - -extern const struct px4_parameters_t px4_parameters; - -__END_DECLS - -{# vim: set noet ft=jinja fenc=utf-8 ff=unix sts=4 sw=4 ts=4 : #} diff --git a/src/lib/parameters/templates/px4_parameters.hpp.jinja b/src/lib/parameters/templates/px4_parameters.hpp.jinja new file mode 100644 index 0000000000..04ea82991a --- /dev/null +++ b/src/lib/parameters/templates/px4_parameters.hpp.jinja @@ -0,0 +1,49 @@ +{# jinja syntax: http://jinja.pocoo.org/docs/2.9/templates/ #} + +#include +#include + +// DO NOT EDIT +// This file is autogenerated from parameters.xml + +namespace px4 { {# wrap the enum in a namespace, otherwise we get shadowing errors for MAV_TYPE #} + +/// Enum with all parameters +enum class params : uint16_t { + {# enums are guaranteed to start with 0 (if the value for the first is not + specified), and then incremented by 1 (the implementation depends on that!) #} +{%- for param in params %} + {{ param.attrib["name"] }}, +{%- endfor %} + +}; + +static constexpr param_info_s parameters[] = { +{% for param in params %} + { + "{{ param.attrib["name"] }}", + {%- if param.attrib["type"] == "FLOAT" %} + .val = {{ "{" }} .f = {{ param.attrib["default"] }} {{ "}" }}, + {%- elif param.attrib["type"] == "INT32" %} + .val = {{ "{" }} .i = {{ param.attrib["default"] }}{{ "}" }}, + {%- endif %} + }, +{% endfor %} +}; + +static constexpr param_type_t parameters_type[] = { +{% for param in params %} + PARAM_TYPE_{{ param.attrib["type"] }}, +{%- endfor -%} +}; + +static constexpr params parameters_volatile[] = { +{% for param in params %} + {%- if param.attrib["volatile"] == "true" %} + params::{{ param.attrib["name"] }}, + {%- endif -%} +{% endfor %} +}; + + +} // namespace px4 diff --git a/src/lib/parameters/templates/px4_parameters_public.h.jinja b/src/lib/parameters/templates/px4_parameters_public.h.jinja deleted file mode 100644 index f3f22cd013..0000000000 --- a/src/lib/parameters/templates/px4_parameters_public.h.jinja +++ /dev/null @@ -1,37 +0,0 @@ -{# jinja syntax: http://jinja.pocoo.org/docs/2.9/templates/ #} -#include -#include - -// DO NOT EDIT -// This file is autogenerated from parameters.xml - - -#ifdef __cplusplus - -namespace px4 { {# wrap the enum in a namespace, otherwise we get shadowing errors for MAV_TYPE #} - -/// Enum with all parameters -enum class params { - {# enums are guaranteed to start with 0 (if the value for the first is not - specified), and then incremented by 1 (the implementation depends on that!) #} -{%- for param in params %} - {{ param.attrib["name"] }}, -{%- endfor %} - - _COUNT -}; - -// All parameter types -{# (px4_parameters is marked as extern, so we cannot use it as constexpr) #} -static const constexpr int param_types_array[] = { -{%- for param in params %} - PARAM_TYPE_{{ param.attrib["type"] }}, // {{ param.attrib["name"] }} -{%- endfor %} -}; - - -} // namespace px4 - - -#endif /* __cplusplus */ - diff --git a/src/lib/tecs/TECS.cpp b/src/lib/tecs/TECS.cpp index d470e8d675..2c444cf191 100644 --- a/src/lib/tecs/TECS.cpp +++ b/src/lib/tecs/TECS.cpp @@ -56,9 +56,7 @@ static constexpr float DT_MAX = 1.0f; ///< max value of _dt allowed before a fil * which is used by the airspeed complimentary filter. */ void TECS::update_vehicle_state_estimates(float equivalent_airspeed, const float speed_deriv_forward, - bool altitude_lock, - bool in_air, - float altitude, float vz) + bool altitude_lock, bool in_air, float altitude, float vz) { // calculate the time lapsed since the last update uint64_t now = hrt_absolute_time(); @@ -265,7 +263,7 @@ void TECS::_update_energy_estimates() _SKE_rate = _tas_state * _speed_derivative;// kinetic energy rate of change } -void TECS::_update_throttle_setpoint(const float throttle_cruise, const matrix::Dcmf &rotMat) +void TECS::_update_throttle_setpoint(const float throttle_cruise) { // Calculate demanded rate of change of total energy, respecting vehicle limits. // We will constrain the value below. @@ -287,8 +285,7 @@ void TECS::_update_throttle_setpoint(const float throttle_cruise, const matrix:: // Adjust the demanded total energy rate to compensate for induced drag rise in turns. // Assume induced drag scales linearly with normal load factor. // The additional normal load factor is given by (1/cos(bank angle) - 1) - const float cosPhi = constrain(sqrtf((rotMat(0, 1) * rotMat(0, 1)) + (rotMat(1, 1) * rotMat(1, 1))), 0.1f, 1.0f); - STE_rate_setpoint = STE_rate_setpoint + _load_factor_correction * (1.0f / cosPhi - 1.0f); + STE_rate_setpoint = STE_rate_setpoint + _load_factor_correction * (_load_factor - 1.f); STE_rate_setpoint = constrain(STE_rate_setpoint, _STE_rate_min, _STE_rate_max); @@ -533,7 +530,7 @@ void TECS::_update_STE_rate_lim() _STE_rate_min = - _min_sink_rate * CONSTANTS_ONE_G; } -void TECS::update_pitch_throttle(const matrix::Dcmf &rotMat, float pitch, float baro_altitude, float hgt_setpoint, +void TECS::update_pitch_throttle(float pitch, float baro_altitude, float hgt_setpoint, float EAS_setpoint, float equivalent_airspeed, float eas_to_tas, bool climb_out_setpoint, float pitch_min_climbout, float throttle_min, float throttle_max, float throttle_cruise, float pitch_limit_min, float pitch_limit_max) { @@ -580,7 +577,7 @@ void TECS::update_pitch_throttle(const matrix::Dcmf &rotMat, float pitch, float _update_energy_estimates(); // Calculate the throttle demand - _update_throttle_setpoint(throttle_cruise, rotMat); + _update_throttle_setpoint(throttle_cruise); // Calculate the pitch demand _update_pitch_setpoint(); diff --git a/src/lib/tecs/TECS.hpp b/src/lib/tecs/TECS.hpp index 3e47406630..2c39d931ce 100644 --- a/src/lib/tecs/TECS.hpp +++ b/src/lib/tecs/TECS.hpp @@ -81,7 +81,7 @@ public: /** * Update the control loop calculations */ - void update_pitch_throttle(const matrix::Dcmf &rotMat, float pitch, float baro_altitude, float hgt_setpoint, + void update_pitch_throttle(float pitch, float baro_altitude, float hgt_setpoint, float EAS_setpoint, float equivalent_airspeed, float eas_to_tas, bool climb_out_setpoint, float pitch_min_climbout, float throttle_min, float throttle_setpoint_max, float throttle_cruise, float pitch_limit_min, float pitch_limit_max); @@ -126,6 +126,7 @@ public: void set_throttle_slewrate(float slewrate) { _throttle_slewrate = slewrate; } void set_roll_throttle_compensation(float compensation) { _load_factor_correction = compensation; } + void set_load_factor(float load_factor) { _load_factor = load_factor; } void set_ste_rate_time_const(float time_const) { _STE_rate_time_const = time_const; } void set_speed_derivative_time_constant(float time_const) { _speed_derivative_time_const = time_const; } @@ -212,6 +213,7 @@ private: float _integrator_gain_throttle{0.0f}; ///< integrator gain used by the throttle demand calculation float _integrator_gain_pitch{0.0f}; ///< integrator gain used by the pitch demand calculation float _vert_accel_limit{0.0f}; ///< magnitude of the maximum vertical acceleration allowed (m/sec**2) + float _load_factor{0.0f}; ///< additional normal load factor float _load_factor_correction{0.0f}; ///< gain from normal load factor increase to total energy rate demand (m**2/sec**3) float _pitch_speed_weight{1.0f}; ///< speed control weighting used by pitch demand calculation float _height_error_gain{0.2f}; ///< height error inverse time constant [1/s] @@ -324,7 +326,7 @@ private: /** * Update throttle setpoint */ - void _update_throttle_setpoint(float throttle_cruise, const matrix::Dcmf &rotMat); + void _update_throttle_setpoint(float throttle_cruise); /** * Detect an uncommanded descent diff --git a/src/modules/airspeed_selector/airspeed_selector_main.cpp b/src/modules/airspeed_selector/airspeed_selector_main.cpp index 042ff20eb2..981fce9033 100644 --- a/src/modules/airspeed_selector/airspeed_selector_main.cpp +++ b/src/modules/airspeed_selector/airspeed_selector_main.cpp @@ -357,7 +357,7 @@ AirspeedModule::Run() _time_last_airspeed_update[i] = _time_now_usec; - } else if (_time_last_airspeed_update[i] - _time_now_usec > 1_s) { + } else if (_time_now_usec - _time_last_airspeed_update[i] > 1_s) { // declare airspeed invalid if more then 1s since last raw airspeed update _airspeed_validator[i].reset_airspeed_to_invalid(_time_now_usec); diff --git a/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp b/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp index 7ff3097099..14ae7805c9 100644 --- a/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp +++ b/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp @@ -34,6 +34,7 @@ #include "../PreFlightCheck.hpp" #include #include + #ifdef __PX4_DARWIN #include #include @@ -43,30 +44,29 @@ bool PreFlightCheck::sdcardCheck(orb_advert_t *mavlink_log_pub, const bool report_fail) { - const char *microsd_dir = PX4_STORAGEDIR; bool success = true; - struct statfs statfs_buf; - uint64_t total_bytes = 0; - int32_t reporting_enabled = 0; - param_get(param_find("COM_ARM_SDCARD"), &reporting_enabled); + int32_t param_com_arm_sdcard{0}; + param_get(param_find("COM_ARM_SDCARD"), ¶m_com_arm_sdcard); - if (reporting_enabled == 0) { - return success; - } + if (param_com_arm_sdcard > 0) { + bool sdcard_present{false}; + struct statfs statfs_buf; - if (statfs(microsd_dir, &statfs_buf) == 0) { - total_bytes = (uint64_t)statfs_buf.f_blocks * statfs_buf.f_bsize; - } - - if (total_bytes == 0) { // on NuttX we get 0 total bytes if no SD card is inserted - - if (reporting_enabled == 2) { - success = false; + if (statfs(PX4_STORAGEDIR, &statfs_buf) == 0) { + // on NuttX we get a data block count f_blocks and byte count per block f_bsize if an SD card is inserted + sdcard_present = (statfs_buf.f_blocks > 0) && (statfs_buf.f_bsize > 0); } - if (report_fail && reporting_enabled > 0) { - mavlink_log_critical(mavlink_log_pub, "Warning! Missing FMU SD Card."); + if (!sdcard_present) { + if (report_fail) { + mavlink_log_critical(mavlink_log_pub, "Warning! Missing FMU SD Card."); + } + + if (param_com_arm_sdcard == 2) { + // disallow arming without sd card + success = false; + } } } diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index a5c35b5c48..6c65d9113c 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -4001,39 +4001,47 @@ void Commander::estimator_check() } /* Check estimator status for signs of bad yaw induced post takeoff navigation failure - * for a short time interval after takeoff. Fixed wing vehicles can recover using GPS heading, - * but rotary wing vehicles cannot so the position and velocity validity needs to be latched - * to false after failure to prevent flyaway crashes */ + * for a short time interval after takeoff. + * Most of the time, the drone can recover from a bad initial yaw using GPS-inertial + * heading estimation (yaw emergency estimator) or GPS heading (fixed wings only), but + * if this does not fix the issue we need to stop using a position controlled + * mode to prevent flyaway crashes. + */ + if (run_quality_checks && _status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING) { if (_status.arming_state == vehicle_status_s::ARMING_STATE_STANDBY) { - // reset flags _nav_test_failed = false; _nav_test_passed = false; } else { - // if nav status is unconfirmed, confirm yaw angle as passed after 30 seconds or achieving 5 m/s of speed - const bool sufficient_time = (_status.takeoff_time != 0) && (hrt_elapsed_time(&_status.takeoff_time) > 30_s); - const bool sufficient_speed = (lpos.vx * lpos.vx + lpos.vy * lpos.vy > 25.0f); + if (!_nav_test_passed) { + // Both test ratios need to pass/fail together to change the nav test status + const bool innovation_pass = (estimator_status.vel_test_ratio < 1.0f) && (estimator_status.pos_test_ratio < 1.0f) + && (estimator_status.vel_test_ratio > FLT_EPSILON) && (estimator_status.pos_test_ratio > FLT_EPSILON); + const bool innovation_fail = (estimator_status.vel_test_ratio >= 1.0f) && (estimator_status.pos_test_ratio >= 1.0f); - bool innovation_pass = estimator_status.vel_test_ratio < 1.0f && estimator_status.pos_test_ratio < 1.0f; + if (innovation_pass) { + _time_last_innov_pass = hrt_absolute_time(); - if (!_nav_test_failed) { - if (!_nav_test_passed) { - // pass if sufficient time or speed - if (sufficient_time || sufficient_speed) { + // if nav status is unconfirmed, confirm yaw angle as passed after 30 seconds or achieving 5 m/s of speed + const bool sufficient_time = (_status.takeoff_time != 0) && (hrt_elapsed_time(&_status.takeoff_time) > 30_s); + const bool sufficient_speed = matrix::Vector2f(lpos.vx, lpos.vy).longerThan(5.f); + + // Even if the test already failed, allow it to pass if it did not fail during the last 10 seconds + if (hrt_elapsed_time(&_time_last_innov_fail) > 10_s + && (sufficient_time || sufficient_speed)) { _nav_test_passed = true; + _nav_test_failed = false; } - // record the last time the innovation check passed - if (innovation_pass) { - _time_last_innov_pass = hrt_absolute_time(); - } + } else if (innovation_fail) { + _time_last_innov_fail = hrt_absolute_time(); - // if the innovation test has failed continuously, declare the nav as failed - if (hrt_elapsed_time(&_time_last_innov_pass) > 1_s) { + if (!_nav_test_failed && hrt_elapsed_time(&_time_last_innov_pass) > 1_s) { + // if the innovation test has failed continuously, declare the nav as failed _nav_test_failed = true; - mavlink_log_emergency(&_mavlink_log_pub, "Critical navigation failure! Check sensor calibration"); + mavlink_log_emergency(&_mavlink_log_pub, "Navigation failure! Land and recalibrate sensors"); } } } diff --git a/src/modules/commander/Commander.hpp b/src/modules/commander/Commander.hpp index 65d2ae24f2..9c08bf5485 100644 --- a/src/modules/commander/Commander.hpp +++ b/src/modules/commander/Commander.hpp @@ -319,7 +319,8 @@ private: hrt_abstime _lvel_probation_time_us = POSVEL_PROBATION_MIN; /* class variables used to check for navigation failure after takeoff */ - hrt_abstime _time_last_innov_pass{0}; /**< last time velocity or position innovations passed */ + hrt_abstime _time_last_innov_pass{0}; /**< last time velocity and position innovations passed */ + hrt_abstime _time_last_innov_fail{0}; /**< last time velocity and position innovations failed */ bool _nav_test_passed{false}; /**< true if the post takeoff navigation test has passed */ bool _nav_test_failed{false}; /**< true if the post takeoff navigation test has failed */ diff --git a/src/modules/ekf2/EKF2.cpp b/src/modules/ekf2/EKF2.cpp index 85989e83ba..9d34954b20 100644 --- a/src/modules/ekf2/EKF2.cpp +++ b/src/modules/ekf2/EKF2.cpp @@ -1477,9 +1477,11 @@ void EKF2::UpdateRangeSample(ekf2_timestamps_s &ekf2_timestamps) if (distance_sensor_subs[i].copy(&distance_sensor)) { // only use the first instace which has the correct orientation - if ((distance_sensor.timestamp != 0) && (distance_sensor.orientation == distance_sensor_s::ROTATION_DOWNWARD_FACING)) { + if ((hrt_elapsed_time(&distance_sensor.timestamp) < 100_ms) + && (distance_sensor.orientation == distance_sensor_s::ROTATION_DOWNWARD_FACING)) { + if (_distance_sensor_sub.ChangeInstance(i)) { - PX4_INFO("%d - found range finder with instance %d", _instance, i); + PX4_INFO("%d - selected distance_sensor:%d", _instance, i); _distance_sensor_selected = true; } } @@ -1498,6 +1500,9 @@ void EKF2::UpdateRangeSample(ekf2_timestamps_s &ekf2_timestamps) _distance_sensor_sub.get_last_generation()); } + ekf2_timestamps.distance_sensor_timestamp_rel = (int16_t)((int64_t)distance_sensor.timestamp / 100 - + (int64_t)ekf2_timestamps.timestamp / 100); + if (distance_sensor.orientation == distance_sensor_s::ROTATION_DOWNWARD_FACING) { rangeSample range_sample { .time_us = distance_sensor.timestamp, @@ -1508,10 +1513,14 @@ void EKF2::UpdateRangeSample(ekf2_timestamps_s &ekf2_timestamps) // Save sensor limits reported by the rangefinder _ekf.set_rangefinder_limits(distance_sensor.min_distance, distance_sensor.max_distance); - } - ekf2_timestamps.distance_sensor_timestamp_rel = (int16_t)((int64_t)distance_sensor.timestamp / 100 - - (int64_t)ekf2_timestamps.timestamp / 100); + _last_range_sensor_update = distance_sensor.timestamp; + return; + } + } + + if (hrt_elapsed_time(&_last_range_sensor_update) > 1_s) { + _distance_sensor_selected = false; } } diff --git a/src/modules/ekf2/EKF2.hpp b/src/modules/ekf2/EKF2.hpp index 49b1cf5d35..42a88e4590 100644 --- a/src/modules/ekf2/EKF2.hpp +++ b/src/modules/ekf2/EKF2.hpp @@ -232,6 +232,7 @@ private: bool _standby{false}; // standby arming state hrt_abstime _last_status_flag_update{0}; + hrt_abstime _last_range_sensor_update{0}; uint32_t _filter_control_status{0}; uint32_t _filter_fault_status{0}; diff --git a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp index 9f0e09d004..546fc64d99 100644 --- a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp +++ b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp @@ -51,7 +51,7 @@ bool FlightTaskManualAcceleration::activate(const vehicle_local_position_setpoin _velocity_setpoint.xy() = Vector2f(last_setpoint.vx, last_setpoint.vy); } else { - _velocity_setpoint.xy() = Vector2f(_velocity); + _velocity_setpoint.xy() = _velocity.xy(); } _stick_acceleration_xy.resetPosition(); @@ -70,7 +70,7 @@ bool FlightTaskManualAcceleration::update() _stick_yaw.generateYawSetpoint(_yawspeed_setpoint, _yaw_setpoint, _sticks.getPositionExpo()(3) * math::radians(_param_mpc_man_y_max.get()), _yaw, _deltatime); _stick_acceleration_xy.generateSetpoints(_sticks.getPositionExpo().slice<2, 1>(0, 0), _yaw, _yaw_setpoint, _position, - Vector2f(_velocity_setpoint_feedback), _deltatime); + _velocity_setpoint_feedback.xy(), _deltatime); _stick_acceleration_xy.getSetpoints(_position_setpoint, _velocity_setpoint, _acceleration_setpoint); _constraints.want_takeoff = _checkTakeoff(); @@ -79,37 +79,10 @@ bool FlightTaskManualAcceleration::update() void FlightTaskManualAcceleration::_ekfResetHandlerPositionXY() { - if (PX4_ISFINITE(_position_setpoint(0))) { - _position_setpoint(0) = _position(0); - _position_setpoint(1) = _position(1); - } + _stick_acceleration_xy.resetPosition(); } void FlightTaskManualAcceleration::_ekfResetHandlerVelocityXY() { - if (PX4_ISFINITE(_velocity_setpoint(0))) { - _velocity_setpoint(0) = _velocity(0); - _velocity_setpoint(1) = _velocity(1); - } -} - -void FlightTaskManualAcceleration::_ekfResetHandlerPositionZ() -{ - if (PX4_ISFINITE(_position_setpoint(2))) { - _position_setpoint(2) = _position(2); - } -} - -void FlightTaskManualAcceleration::_ekfResetHandlerVelocityZ() -{ - if (PX4_ISFINITE(_velocity_setpoint(2))) { - _velocity_setpoint(2) = _velocity(2); - } -} - -void FlightTaskManualAcceleration::_ekfResetHandlerHeading(float delta_psi) -{ - if (PX4_ISFINITE(_yaw_setpoint)) { - _yaw_setpoint += delta_psi; - } + _stick_acceleration_xy.resetVelocity(_velocity.xy()); } diff --git a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp index 2073de6593..36d360ca81 100644 --- a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp +++ b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.hpp @@ -58,7 +58,4 @@ private: void _ekfResetHandlerPositionXY() override; void _ekfResetHandlerVelocityXY() override; - void _ekfResetHandlerPositionZ() override; - void _ekfResetHandlerVelocityZ() override; - void _ekfResetHandlerHeading(float delta_psi) override; }; diff --git a/src/modules/flight_mode_manager/tasks/ManualPosition/FlightTaskManualPosition.cpp b/src/modules/flight_mode_manager/tasks/ManualPosition/FlightTaskManualPosition.cpp index 3944cc126b..9454f8cedd 100644 --- a/src/modules/flight_mode_manager/tasks/ManualPosition/FlightTaskManualPosition.cpp +++ b/src/modules/flight_mode_manager/tasks/ManualPosition/FlightTaskManualPosition.cpp @@ -112,8 +112,7 @@ void FlightTaskManualPosition::_scaleSticks() // collision prevention if (_collision_prevention.is_active()) { - _collision_prevention.modifySetpoint(vel_sp_xy, _velocity_scale, Vector2f(_position), - Vector2f(_velocity)); + _collision_prevention.modifySetpoint(vel_sp_xy, _velocity_scale, _position.xy(), _velocity.xy()); } _velocity_setpoint.xy() = vel_sp_xy; diff --git a/src/modules/flight_mode_manager/tasks/ManualPositionSmoothVel/FlightTaskManualPositionSmoothVel.cpp b/src/modules/flight_mode_manager/tasks/ManualPositionSmoothVel/FlightTaskManualPositionSmoothVel.cpp index ba2e75d9ce..964cf0af91 100644 --- a/src/modules/flight_mode_manager/tasks/ManualPositionSmoothVel/FlightTaskManualPositionSmoothVel.cpp +++ b/src/modules/flight_mode_manager/tasks/ManualPositionSmoothVel/FlightTaskManualPositionSmoothVel.cpp @@ -69,7 +69,7 @@ void FlightTaskManualPositionSmoothVel::reActivate() FlightTaskManualPosition::reActivate(); // The task is reacivated while the vehicle is on the ground. To detect takeoff in mc_pos_control_main properly // using the generated jerk, reset the z derivatives to zero - _smoothing_xy.reset(Vector2f(), Vector2f(_velocity), Vector2f(_position)); + _smoothing_xy.reset(Vector2f(), _velocity.xy(), _position.xy()); _smoothing_z.reset(0.f, 0.f, _position(2)); } @@ -136,19 +136,19 @@ void FlightTaskManualPositionSmoothVel::_updateTrajConstraintsZ() void FlightTaskManualPositionSmoothVel::_updateTrajVelFeedback() { - _smoothing_xy.setVelSpFeedback(Vector2f(_velocity_setpoint_feedback)); + _smoothing_xy.setVelSpFeedback(_velocity_setpoint_feedback.xy()); _smoothing_z.setVelSpFeedback(_velocity_setpoint_feedback(2)); } void FlightTaskManualPositionSmoothVel::_updateTrajCurrentPositionEstimate() { - _smoothing_xy.setCurrentPositionEstimate(Vector2f(_position)); + _smoothing_xy.setCurrentPositionEstimate(_position.xy()); _smoothing_z.setCurrentPositionEstimate(_position(2)); } void FlightTaskManualPositionSmoothVel::_updateTrajectories(Vector3f vel_target) { - _smoothing_xy.update(_deltatime, Vector2f(vel_target)); + _smoothing_xy.update(_deltatime, vel_target.xy()); _smoothing_z.update(_deltatime, vel_target(2)); } diff --git a/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp b/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp index 004704d2c4..6c20a85b26 100644 --- a/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp +++ b/src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp @@ -159,7 +159,7 @@ bool FlightTaskOrbit::activate(const vehicle_local_position_setpoint_s &last_set bool ret = FlightTaskManualAltitudeSmoothVel::activate(last_setpoint); _r = _radius_min; _v = 1.f; - _center = Vector2f(_position); + _center = _position.xy(); _center(0) -= _r; _initial_heading = _yaw; _slew_rate_yaw.setForcedValue(_yaw); diff --git a/src/modules/flight_mode_manager/tasks/Utility/StickAccelerationXY.cpp b/src/modules/flight_mode_manager/tasks/Utility/StickAccelerationXY.cpp index 1e8c379cb6..6f79d1d1a8 100644 --- a/src/modules/flight_mode_manager/tasks/Utility/StickAccelerationXY.cpp +++ b/src/modules/flight_mode_manager/tasks/Utility/StickAccelerationXY.cpp @@ -151,7 +151,7 @@ void StickAccelerationXY::lockPosition(const Vector3f &pos, const matrix::Vector { if (_velocity_setpoint.norm_squared() < FLT_EPSILON) { if (!PX4_ISFINITE(_position_setpoint(0))) { - _position_setpoint = Vector2f(pos); + _position_setpoint = pos.xy(); } } else { diff --git a/src/modules/fw_att_control/FixedwingAttitudeControl.cpp b/src/modules/fw_att_control/FixedwingAttitudeControl.cpp index dac00f755f..ce72df0583 100644 --- a/src/modules/fw_att_control/FixedwingAttitudeControl.cpp +++ b/src/modules/fw_att_control/FixedwingAttitudeControl.cpp @@ -157,9 +157,7 @@ FixedwingAttitudeControl::vehicle_manual_poll() if (_vcontrol_mode.flag_control_attitude_enabled) { // STABILIZED mode generate the attitude setpoint from manual user inputs - _att_sp.roll_body = _manual_control_setpoint.y * radians(_param_fw_man_r_max.get()) + radians(_param_fw_rsp_off.get()); - _att_sp.roll_body = constrain(_att_sp.roll_body, - -radians(_param_fw_man_r_max.get()), radians(_param_fw_man_r_max.get())); + _att_sp.roll_body = _manual_control_setpoint.y * radians(_param_fw_man_r_max.get()); _att_sp.pitch_body = -_manual_control_setpoint.x * radians(_param_fw_man_p_max.get()) + radians(_param_fw_psp_off.get()); diff --git a/src/modules/fw_att_control/FixedwingAttitudeControl.hpp b/src/modules/fw_att_control/FixedwingAttitudeControl.hpp index 3a22a0bc58..35b9341a07 100644 --- a/src/modules/fw_att_control/FixedwingAttitudeControl.hpp +++ b/src/modules/fw_att_control/FixedwingAttitudeControl.hpp @@ -193,7 +193,6 @@ private: (ParamFloat) _param_fw_rr_i, (ParamFloat) _param_fw_rr_imax, (ParamFloat) _param_fw_rr_p, - (ParamFloat) _param_fw_rsp_off, (ParamBool) _param_fw_w_en, (ParamFloat) _param_fw_w_rmax, diff --git a/src/modules/fw_att_control/fw_att_control_params.c b/src/modules/fw_att_control/fw_att_control_params.c index 9646d63d9a..927a7e9c03 100644 --- a/src/modules/fw_att_control/fw_att_control_params.c +++ b/src/modules/fw_att_control/fw_att_control_params.c @@ -414,27 +414,11 @@ PARAM_DEFINE_FLOAT(FW_YR_FF, 0.3f); PARAM_DEFINE_FLOAT(FW_WR_FF, 0.2f); /** - * Roll setpoint offset - * - * An airframe specific offset of the roll setpoint in degrees, the value is - * added to the roll setpoint and should correspond to the typical cruise speed - * of the airframe. - * - * @unit deg - * @min -90.0 - * @max 90.0 - * @decimal 1 - * @increment 0.5 - * @group FW Attitude Control - */ -PARAM_DEFINE_FLOAT(FW_RSP_OFF, 0.0f); - -/** - * Pitch setpoint offset + * Pitch setpoint offset (pitch at level flight) * * An airframe specific offset of the pitch setpoint in degrees, the value is - * added to the pitch setpoint and should correspond to the typical cruise - * speed of the airframe. + * added to the pitch setpoint and should correspond to the pitch at + * typical cruise speed of the airframe. * * @unit deg * @min -90.0 diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index d75603d8fc..2eed783cbc 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -35,6 +35,19 @@ #include +using math::constrain; +using math::max; +using math::min; +using math::radians; + +using matrix::Dcmf; +using matrix::Eulerf; +using matrix::Quatf; +using matrix::Vector2f; +using matrix::Vector2d; +using matrix::Vector3f; +using matrix::wrap_pi; + FixedwingPositionControl::FixedwingPositionControl(bool vtol) : ModuleParams(nullptr), WorkItem(MODULE_NAME, px4::wq_configurations::nav_and_controllers), @@ -182,10 +195,10 @@ void FixedwingPositionControl::airspeed_poll() { bool airspeed_valid = _airspeed_valid; + airspeed_validated_s airspeed_validated; - if ((_param_fw_arsp_mode.get() == 0) && _airspeed_validated_sub.update()) { + if ((_param_fw_arsp_mode.get() == 0) && _airspeed_validated_sub.update(&airspeed_validated)) { - const airspeed_validated_s &airspeed_validated = _airspeed_validated_sub.get(); _eas2tas = 1.0f; //this is the default value, taken in case of invalid airspeed if (PX4_ISFINITE(airspeed_validated.calibrated_airspeed_m_s) @@ -235,21 +248,37 @@ FixedwingPositionControl::manual_control_setpoint_poll() void FixedwingPositionControl::vehicle_attitude_poll() { - if (_vehicle_attitude_sub.update(&_att)) { - /* set rotation matrix and euler angles */ - _R_nb = Quatf(_att.q); + vehicle_attitude_s att; + + if (_vehicle_attitude_sub.update(&att)) { + vehicle_angular_velocity_s angular_velocity{}; + _vehicle_angular_velocity_sub.copy(&angular_velocity); + const Vector3f rates{angular_velocity.xyz}; + + Dcmf R{Quatf(att.q)}; // if the vehicle is a tailsitter we have to rotate the attitude by the pitch offset // between multirotor and fixed wing flight if (_vtol_tailsitter) { - Dcmf R_offset = Eulerf(0, M_PI_2_F, 0); - _R_nb = _R_nb * R_offset; + const Dcmf R_offset{Eulerf{0.f, M_PI_2_F, 0.f}}; + R = R * R_offset; + + _yawrate = rates(0); + + } else { + _yawrate = rates(2); } - const Eulerf euler_angles(_R_nb); - _roll = euler_angles(0); - _pitch = euler_angles(1); - _yaw = euler_angles(2); + const Eulerf euler_angles(R); + _pitch = euler_angles(1); + _yaw = euler_angles(2); + + _body_acceleration = R.transpose() * Vector3f{_local_pos.ax, _local_pos.ay, _local_pos.az}; + _body_velocity = R.transpose() * Vector3f{_local_pos.vx, _local_pos.vy, _local_pos.vz}; + + // update TECS load factor + const float load_factor = 1.f / cosf(euler_angles(0)); + _tecs.set_load_factor(load_factor); } } @@ -303,18 +332,13 @@ FixedwingPositionControl::calculate_target_airspeed(float airspeed_demand, const // groundspeed undershoot if (!_l1_control.circle_mode()) { - - // rotate ground speed vector with current attitude - Vector2f yaw_vector(_R_nb(0, 0), _R_nb(1, 0)); - yaw_vector.normalize(); - - const float ground_speed_body = yaw_vector * ground_speed; - /* * This error value ensures that a plane (as long as its throttle capability is * not exceeded) travels towards a waypoint (and is not pushed more and more away * by wind). Not countering this would lead to a fly-away. */ + const float ground_speed_body = _body_velocity(0); + if (ground_speed_body < _param_fw_gnd_spd_min.get()) { airspeed_demand += max(_param_fw_gnd_spd_min.get() - ground_speed_body, 0.0f); } @@ -328,7 +352,7 @@ FixedwingPositionControl::calculate_target_airspeed(float airspeed_demand, const void FixedwingPositionControl::tecs_status_publish() { - tecs_status_s t = {}; + tecs_status_s t{}; switch (_tecs.tecs_mode()) { case TECS::ECL_TECS_MODE_NORMAL: @@ -576,7 +600,7 @@ FixedwingPositionControl::do_takeoff_help(float *hold_altitude, float *pitch_lim } bool -FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2f &curr_pos, +FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2d &curr_pos, const Vector2f &ground_speed, const position_setpoint_s &pos_sp_prev, const position_setpoint_s &pos_sp_curr, const position_setpoint_s &pos_sp_next) { @@ -616,14 +640,14 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 float throttle_max = 1.0f; /* save time when airplane is in air */ - if (!_was_in_air && !_vehicle_land_detected.landed) { + if (!_was_in_air && !_landed) { _was_in_air = true; _time_went_in_air = now; _takeoff_ground_alt = _current_altitude; } /* reset flag when airplane landed */ - if (_vehicle_land_detected.landed) { + if (_landed) { _was_in_air = false; } @@ -651,8 +675,8 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 _tecs.set_speed_weight(_param_fw_t_spdweight.get()); _tecs.set_height_error_time_constant(_param_fw_t_h_error_tc.get()); - Vector2f curr_wp{0.0f, 0.0f}; - Vector2f prev_wp{0.0f, 0.0f}; + Vector2d curr_wp{0, 0}; + Vector2d prev_wp{0, 0}; if (_vehicle_status.in_transition_to_fw) { @@ -663,8 +687,8 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 waypoint_from_heading_and_distance(_current_latitude, _current_longitude, _yaw, HDG_HOLD_DIST_NEXT, &lat_transition, &lon_transition); - _transition_waypoint(0) = (float)lat_transition; - _transition_waypoint(1) = (float)lon_transition; + _transition_waypoint(0) = lat_transition; + _transition_waypoint(1) = lon_transition; } @@ -672,24 +696,25 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 } else { /* current waypoint (the one currently heading for) */ - curr_wp = Vector2f((float)pos_sp_curr.lat, (float)pos_sp_curr.lon); + curr_wp = Vector2d(pos_sp_curr.lat, pos_sp_curr.lon); if (pos_sp_prev.valid) { - prev_wp(0) = (float)pos_sp_prev.lat; - prev_wp(1) = (float)pos_sp_prev.lon; + prev_wp(0) = pos_sp_prev.lat; + prev_wp(1) = pos_sp_prev.lon; } else { /* * No valid previous waypoint, go for the current wp. * This is automatically handled by the L1 library. */ - prev_wp(0) = (float)pos_sp_curr.lat; - prev_wp(1) = (float)pos_sp_curr.lon; + prev_wp(0) = pos_sp_curr.lat; + prev_wp(1) = pos_sp_curr.lon; } /* reset transition waypoint, will be set upon entering front transition */ - _transition_waypoint.setNaN(); + _transition_waypoint(0) = static_cast(NAN); + _transition_waypoint(1) = static_cast(NAN); } /* Initialize attitude controller integrator reset flags to 0 */ @@ -778,7 +803,7 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 if (position_sp_type == position_setpoint_s::SETPOINT_TYPE_IDLE) { _att_sp.thrust_body[0] = 0.0f; _att_sp.roll_body = 0.0f; - _att_sp.pitch_body = 0.0f; + _att_sp.pitch_body = radians(_param_fw_psp_off.get()); } else if (position_sp_type == position_setpoint_s::SETPOINT_TYPE_POSITION) { // waypoint is a plain navigation waypoint @@ -823,8 +848,8 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 tecs_update_pitch_throttle(now, position_sp_alt, calculate_target_airspeed(mission_airspeed, ground_speed), - radians(_param_fw_p_lim_min.get()) - radians(_param_fw_psp_off.get()), - radians(_param_fw_p_lim_max.get()) - radians(_param_fw_psp_off.get()), + radians(_param_fw_p_lim_min.get()), + radians(_param_fw_p_lim_max.get()), tecs_fw_thr_min, tecs_fw_thr_max, tecs_fw_mission_throttle, @@ -880,8 +905,8 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 tecs_update_pitch_throttle(now, alt_sp, calculate_target_airspeed(mission_airspeed, ground_speed), - radians(_param_fw_p_lim_min.get()) - radians(_param_fw_psp_off.get()), - radians(_param_fw_p_lim_max.get()) - radians(_param_fw_psp_off.get()), + radians(_param_fw_p_lim_min.get()), + radians(_param_fw_p_lim_max.get()), tecs_fw_thr_min, tecs_fw_thr_max, tecs_fw_mission_throttle, @@ -944,7 +969,7 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 /* throttle limiting */ throttle_max = _param_fw_thr_max.get(); - if (_vehicle_land_detected.landed && (fabsf(_manual_control_setpoint_airspeed) < THROTTLE_THRESH)) { + if (_landed && (fabsf(_manual_control_setpoint_airspeed) < THROTTLE_THRESH)) { throttle_max = 0.0f; } @@ -964,7 +989,7 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 fabsf(_manual_control_setpoint.r) < HDG_HOLD_MAN_INPUT_THRESH) { /* heading / roll is zero, lock onto current heading */ - if (fabsf(_vehicle_rates_sub.get().xyz[2]) < HDG_HOLD_YAWRATE_THRESH && !_yaw_lock_engaged) { + if (fabsf(_yawrate) < HDG_HOLD_YAWRATE_THRESH && !_yaw_lock_engaged) { // little yaw movement, lock to current heading _yaw_lock_engaged = true; @@ -996,8 +1021,8 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 get_waypoint_heading_distance(_hdg_hold_yaw, _hdg_hold_prev_wp, _hdg_hold_curr_wp, false); } - Vector2f prev_wp{(float)_hdg_hold_prev_wp.lat, (float)_hdg_hold_prev_wp.lon}; - Vector2f curr_wp{(float)_hdg_hold_curr_wp.lat, (float)_hdg_hold_curr_wp.lon}; + Vector2d prev_wp{_hdg_hold_prev_wp.lat, _hdg_hold_prev_wp.lon}; + Vector2d curr_wp{_hdg_hold_curr_wp.lat, _hdg_hold_curr_wp.lon}; /* populate l1 control setpoint */ _l1_control.navigate_waypoints(prev_wp, curr_wp, curr_pos, ground_speed); @@ -1046,7 +1071,7 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 /* throttle limiting */ throttle_max = _param_fw_thr_max.get(); - if (_vehicle_land_detected.landed && (fabsf(_manual_control_setpoint_airspeed) < THROTTLE_THRESH)) { + if (_landed && (fabsf(_manual_control_setpoint_airspeed) < THROTTLE_THRESH)) { throttle_max = 0.0f; } @@ -1107,7 +1132,7 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 } else { /* Copy thrust and pitch values from tecs */ - if (_vehicle_land_detected.landed) { + if (_landed) { // when we are landed state we want the motor to spin at idle speed _att_sp.thrust_body[0] = min(_param_fw_thr_idle.get(), throttle_max); @@ -1146,24 +1171,24 @@ FixedwingPositionControl::control_position(const hrt_abstime &now, const Vector2 } void -FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f &curr_pos, +FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2d &curr_pos, const Vector2f &ground_speed, const position_setpoint_s &pos_sp_prev, const position_setpoint_s &pos_sp_curr) { /* current waypoint (the one currently heading for) */ - Vector2f curr_wp((float)pos_sp_curr.lat, (float)pos_sp_curr.lon); - Vector2f prev_wp{0.0f, 0.0f}; /* previous waypoint */ + Vector2d curr_wp(pos_sp_curr.lat, pos_sp_curr.lon); + Vector2d prev_wp{0, 0}; /* previous waypoint */ if (pos_sp_prev.valid) { - prev_wp(0) = (float)pos_sp_prev.lat; - prev_wp(1) = (float)pos_sp_prev.lon; + prev_wp(0) = pos_sp_prev.lat; + prev_wp(1) = pos_sp_prev.lon; } else { /* * No valid previous waypoint, go for the current wp. * This is automatically handled by the L1 library. */ - prev_wp(0) = (float)pos_sp_curr.lat; - prev_wp(1) = (float)pos_sp_curr.lon; + prev_wp(0) = pos_sp_curr.lat; + prev_wp(1) = pos_sp_curr.lon; } // apply flaps for takeoff according to the corresponding scale factor set @@ -1179,8 +1204,7 @@ FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f if (_runway_takeoff.runwayTakeoffEnabled()) { if (!_runway_takeoff.isInitialized()) { - Eulerf euler(Quatf(_att.q)); - _runway_takeoff.init(now, euler.psi(), _current_latitude, _current_longitude); + _runway_takeoff.init(now, _yaw, _current_latitude, _current_longitude); /* need this already before takeoff is detected * doesn't matter if it gets reset when takeoff is detected eventually */ @@ -1212,7 +1236,7 @@ FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f _param_fw_thr_max.get(), // XXX should we also set runway_takeoff_throttle here? _param_fw_thr_cruise.get(), _runway_takeoff.climbout(), - radians(_runway_takeoff.getMinPitch(pos_sp_curr.pitch_min, 10.0f, _param_fw_p_lim_min.get())), + radians(_runway_takeoff.getMinPitch(_takeoff_pitch_min.get(), _param_fw_p_lim_min.get())), tecs_status_s::TECS_MODE_TAKEOFF); // assign values @@ -1240,7 +1264,7 @@ FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f } /* Detect launch using body X (forward) acceleration */ - _launchDetector.update(now, _vehicle_acceleration_sub.get().xyz[0]); + _launchDetector.update(now, _body_acceleration(0)); /* update our copy of the launch detection state */ _launch_detection_state = _launchDetector.getLaunchDetected(); @@ -1283,7 +1307,7 @@ FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f takeoff_throttle, _param_fw_thr_cruise.get(), true, - max(radians(pos_sp_curr.pitch_min), radians(10.0f)), + radians(_takeoff_pitch_min.get()), tecs_status_s::TECS_MODE_TAKEOFF); /* limit roll motion to ensure enough lift */ @@ -1310,30 +1334,30 @@ FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f /* Set default roll and pitch setpoints during detection phase */ _att_sp.roll_body = 0.0f; - _att_sp.pitch_body = max(radians(pos_sp_curr.pitch_min), radians(10.0f)); + _att_sp.pitch_body = radians(_takeoff_pitch_min.get()); } } } void -FixedwingPositionControl::control_landing(const hrt_abstime &now, const Vector2f &curr_pos, +FixedwingPositionControl::control_landing(const hrt_abstime &now, const Vector2d &curr_pos, const Vector2f &ground_speed, const position_setpoint_s &pos_sp_prev, const position_setpoint_s &pos_sp_curr) { /* current waypoint (the one currently heading for) */ - Vector2f curr_wp((float)pos_sp_curr.lat, (float)pos_sp_curr.lon); - Vector2f prev_wp{0.0f, 0.0f}; /* previous waypoint */ + Vector2d curr_wp(pos_sp_curr.lat, pos_sp_curr.lon); + Vector2d prev_wp{0, 0}; /* previous waypoint */ if (pos_sp_prev.valid) { - prev_wp(0) = (float)pos_sp_prev.lat; - prev_wp(1) = (float)pos_sp_prev.lon; + prev_wp(0) = pos_sp_prev.lat; + prev_wp(1) = pos_sp_prev.lon; } else { /* * No valid previous waypoint, go for the current wp. * This is automatically handled by the L1 library. */ - prev_wp(0) = (float)pos_sp_curr.lat; - prev_wp(1) = (float)pos_sp_curr.lon; + prev_wp(0) = pos_sp_curr.lat; + prev_wp(1) = pos_sp_curr.lon; } // apply full flaps for landings. this flag will also trigger the use of flaperons @@ -1382,8 +1406,8 @@ FixedwingPositionControl::control_landing(const hrt_abstime &now, const Vector2f create_waypoint_from_line_and_dist(pos_sp_curr.lat, pos_sp_curr.lon, pos_sp_prev.lat, pos_sp_prev.lon, -1000.0f, &lat, &lon); - curr_wp(0) = (float)lat; - curr_wp(1) = (float)lon; + curr_wp(0) = lat; + curr_wp(1) = lon; } // we want the plane to keep tracking the desired flight path until we start flaring @@ -1518,7 +1542,7 @@ FixedwingPositionControl::control_landing(const hrt_abstime &now, const Vector2f if (!_land_noreturn_vertical) { // just started with the flaring phase - _flare_pitch_sp = 0.0f; + _flare_pitch_sp = radians(_param_fw_psp_off.get()); _flare_height = _current_altitude - terrain_alt; mavlink_log_info(&_mavlink_log_pub, "Landing, flaring"); _land_noreturn_vertical = true; @@ -1589,11 +1613,11 @@ float FixedwingPositionControl::get_tecs_pitch() { if (_is_tecs_running) { - return _tecs.get_pitch_setpoint(); + return _tecs.get_pitch_setpoint() + radians(_param_fw_psp_off.get()); } - // return 0 to prevent stale tecs state when it's not running - return 0.0f; + // return level flight pitch offset to prevent stale tecs state when it's not running + return radians(_param_fw_psp_off.get()); } float @@ -1672,12 +1696,18 @@ FixedwingPositionControl::Run() vehicle_attitude_poll(); vehicle_command_poll(); vehicle_control_mode_poll(); - _vehicle_land_detected_sub.update(&_vehicle_land_detected); - _vehicle_status_sub.update(&_vehicle_status); - _vehicle_acceleration_sub.update(); - _vehicle_rates_sub.update(); - Vector2f curr_pos((float)_current_latitude, (float)_current_longitude); + if (_vehicle_land_detected_sub.updated()) { + vehicle_land_detected_s vehicle_land_detected; + + if (_vehicle_land_detected_sub.update(&vehicle_land_detected)) { + _landed = vehicle_land_detected.landed; + } + } + + _vehicle_status_sub.update(&_vehicle_status); + + Vector2d curr_pos(_current_latitude, _current_longitude); Vector2f ground_speed(_local_pos.vx, _local_pos.vy); //Convert Local setpoints to global setpoints @@ -1699,11 +1729,6 @@ FixedwingPositionControl::Run() if (control_position(_local_pos.timestamp, curr_pos, ground_speed, _pos_sp_triplet.previous, _pos_sp_triplet.current, _pos_sp_triplet.next)) { - - // add attitude setpoint offsets - _att_sp.roll_body += radians(_param_fw_rsp_off.get()); - _att_sp.pitch_body += radians(_param_fw_psp_off.get()); - if (_control_mode.flag_control_manual_enabled) { _att_sp.roll_body = constrain(_att_sp.roll_body, -radians(_param_fw_man_r_max.get()), radians(_param_fw_man_r_max.get())); @@ -1740,7 +1765,7 @@ void FixedwingPositionControl::reset_takeoff_state(bool force) { // only reset takeoff if !armed or just landed - if (!_control_mode.flag_armed || (_was_in_air && _vehicle_land_detected.landed) || force) { + if (!_control_mode.flag_armed || (_was_in_air && _landed) || force) { _runway_takeoff.reset(); @@ -1785,7 +1810,7 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo _last_tecs_update = now; // do not run TECS if we are not in air - bool run_tecs = !_vehicle_land_detected.landed; + bool run_tecs = !_landed; // do not run TECS if vehicle is a VTOL and we are in rotary wing mode or in transition // (it should also not run during VTOL blending because airspeed is too low still) @@ -1811,14 +1836,14 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo } else if (_was_in_transition) { // after transition we ramp up desired airspeed from the speed we had coming out of the transition - _asp_after_transition += dt * 2; // increase 2m/s + _asp_after_transition += dt * 2.0f; // increase 2m/s if (_asp_after_transition < airspeed_sp && _airspeed < airspeed_sp) { airspeed_sp = max(_asp_after_transition, _airspeed); } else { _was_in_transition = false; - _asp_after_transition = 0; + _asp_after_transition = 0.0f; } } } @@ -1838,39 +1863,23 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo if (_vehicle_status.engine_failure) { /* Force the slow downwards spiral */ - pitch_min_rad = M_DEG_TO_RAD_F * -1.0f; - pitch_max_rad = M_DEG_TO_RAD_F * 5.0f; + pitch_min_rad = radians(-1.0f); + pitch_max_rad = radians(5.0f); } /* No underspeed protection in landing mode */ _tecs.set_detect_underspeed_enabled(!(mode == tecs_status_s::TECS_MODE_LAND || mode == tecs_status_s::TECS_MODE_LAND_THROTTLELIM)); - /* Using tecs library */ - float pitch_for_tecs = _pitch - radians(_param_fw_psp_off.get()); - - // calculate speed derivative in forward direction, which is used by complimentary filter to calculate filtered airspeed - Vector3f speed_deriv_body = _R_nb.transpose() * Vector3f(_local_pos.ax, _local_pos.ay, _local_pos.az); - float speed_deriv_forward; - - // tailsitters use the multicopter frame as reference, in fixed wing - // we need to use the fixed wing frame - if (_vtol_tailsitter) { - speed_deriv_forward = -speed_deriv_body(2); - - } else { - speed_deriv_forward = speed_deriv_body(0); - } - /* tell TECS to update its state, but let it know when it cannot actually control the plane */ - bool in_air_alt_control = (!_vehicle_land_detected.landed && + bool in_air_alt_control = (!_landed && (_control_mode.flag_control_auto_enabled || _control_mode.flag_control_offboard_enabled || _control_mode.flag_control_velocity_enabled || _control_mode.flag_control_altitude_enabled)); /* update TECS vehicle state estimates */ - _tecs.update_vehicle_state_estimates(_airspeed, speed_deriv_forward, (_local_pos.timestamp > 0), in_air_alt_control, + _tecs.update_vehicle_state_estimates(_airspeed, _body_acceleration(0), (_local_pos.timestamp > 0), in_air_alt_control, _current_altitude, _local_pos.vz); /* scale throttle cruise by baro pressure */ @@ -1889,12 +1898,14 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo } } - _tecs.update_pitch_throttle(_R_nb, pitch_for_tecs, + _tecs.update_pitch_throttle(_pitch - radians(_param_fw_psp_off.get()), _current_altitude, alt_sp, airspeed_sp, _airspeed, _eas2tas, - climbout_mode, climbout_pitch_min_rad, + climbout_mode, + climbout_pitch_min_rad - radians(_param_fw_psp_off.get()), throttle_min, throttle_max, throttle_cruise, - pitch_min_rad, pitch_max_rad); + pitch_min_rad - radians(_param_fw_psp_off.get()), + pitch_max_rad - radians(_param_fw_psp_off.get())); tecs_status_publish(); } diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index 9c2271490e..7eaf88776b 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp @@ -76,7 +76,6 @@ #include #include #include -#include #include #include #include @@ -90,24 +89,13 @@ #include #include -using math::constrain; -using math::max; -using math::min; -using math::radians; - -using matrix::Dcmf; -using matrix::Eulerf; -using matrix::Quatf; -using matrix::Vector2f; -using matrix::Vector3f; -using matrix::wrap_pi; - -using uORB::SubscriptionData; - using namespace launchdetection; using namespace runwaytakeoff; using namespace time_literals; +using matrix::Vector2d; +using matrix::Vector2f; + static constexpr float HDG_HOLD_DIST_NEXT = 3000.0f; // initial distance of waypoint in front of plane in heading hold mode static constexpr float HDG_HOLD_REACHED_DIST = @@ -150,16 +138,17 @@ private: uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s}; - uORB::Subscription _control_mode_sub{ORB_ID(vehicle_control_mode)}; ///< control mode subscription + uORB::Subscription _airspeed_validated_sub{ORB_ID(airspeed_validated)}; + uORB::Subscription _control_mode_sub{ORB_ID(vehicle_control_mode)}; uORB::Subscription _global_pos_sub{ORB_ID(vehicle_global_position)}; - uORB::Subscription _manual_control_setpoint_sub{ORB_ID(manual_control_setpoint)}; ///< notification of manual control updates + uORB::Subscription _manual_control_setpoint_sub{ORB_ID(manual_control_setpoint)}; uORB::Subscription _pos_sp_triplet_sub{ORB_ID(position_setpoint_triplet)}; uORB::Subscription _vehicle_air_data_sub{ORB_ID(vehicle_air_data)}; - uORB::Subscription _vehicle_attitude_sub{ORB_ID(vehicle_attitude)}; ///< vehicle attitude subscription - uORB::Subscription _vehicle_command_sub{ORB_ID(vehicle_command)}; ///< vehicle command subscription - uORB::Subscription _vehicle_land_detected_sub{ORB_ID(vehicle_land_detected)}; ///< vehicle land detected subscription - uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)}; ///< vehicle status subscription - uORB::SubscriptionData _vehicle_rates_sub{ORB_ID(vehicle_angular_velocity)}; + uORB::Subscription _vehicle_angular_velocity_sub{ORB_ID(vehicle_angular_velocity)}; + uORB::Subscription _vehicle_attitude_sub{ORB_ID(vehicle_attitude)}; + uORB::Subscription _vehicle_command_sub{ORB_ID(vehicle_command)}; + uORB::Subscription _vehicle_land_detected_sub{ORB_ID(vehicle_land_detected)}; + uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)}; uORB::Publication _attitude_sp_pub; uORB::Publication _pos_ctrl_status_pub{ORB_ID(position_controller_status)}; ///< navigation capabilities publication @@ -168,16 +157,11 @@ private: manual_control_setpoint_s _manual_control_setpoint {}; ///< r/c channel data position_setpoint_triplet_s _pos_sp_triplet {}; ///< triplet of mission items - vehicle_attitude_s _att {}; ///< vehicle attitude setpoint vehicle_attitude_setpoint_s _att_sp {}; ///< vehicle attitude setpoint vehicle_control_mode_s _control_mode {}; ///< control mode vehicle_local_position_s _local_pos {}; ///< vehicle local position - vehicle_land_detected_s _vehicle_land_detected {}; ///< vehicle land detected vehicle_status_s _vehicle_status {}; ///< vehicle status - SubscriptionData _airspeed_validated_sub{ORB_ID(airspeed_validated)}; - SubscriptionData _vehicle_acceleration_sub{ORB_ID(vehicle_acceleration)}; - double _current_latitude{0}; double _current_longitude{0}; float _current_altitude{0.f}; @@ -199,6 +183,8 @@ private: hrt_abstime _control_position_last_called{0}; ///< last call of control_position + bool _landed{true}; + /* Landing */ bool _land_noreturn_horizontal{false}; bool _land_noreturn_vertical{false}; @@ -237,12 +223,12 @@ private: float _airspeed{0.0f}; float _eas2tas{1.0f}; - float _groundspeed_undershoot{0.0f}; ///< ground speed error to min. speed in m/s - - Dcmf _R_nb; ///< current attitude - float _roll{0.0f}; float _pitch{0.0f}; float _yaw{0.0f}; + float _yawrate{0.0f}; + + matrix::Vector3f _body_acceleration{}; + matrix::Vector3f _body_velocity{}; bool _reinitialize_tecs{true}; ///< indicates if the TECS states should be reinitialized (used for VTOL) bool _is_tecs_running{false}; @@ -253,7 +239,7 @@ private: bool _vtol_tailsitter{false}; - Vector2f _transition_waypoint{NAN, NAN}; + matrix::Vector2d _transition_waypoint{(double)NAN, (double)NAN}; // estimator reset counters uint8_t _pos_reset_counter{0}; ///< captures the number of times the estimator has reset the horizontal position @@ -329,13 +315,13 @@ private: */ void update_desired_altitude(float dt); - bool control_position(const hrt_abstime &now, const Vector2f &curr_pos, const Vector2f &ground_speed, + bool control_position(const hrt_abstime &now, const Vector2d &curr_pos, const Vector2f &ground_speed, const position_setpoint_s &pos_sp_prev, const position_setpoint_s &pos_sp_curr, const position_setpoint_s &pos_sp_next); - void control_takeoff(const hrt_abstime &now, const Vector2f &curr_pos, const Vector2f &ground_speed, + void control_takeoff(const hrt_abstime &now, const Vector2d &curr_pos, const Vector2f &ground_speed, const position_setpoint_s &pos_sp_prev, const position_setpoint_s &pos_sp_curr); - void control_landing(const hrt_abstime &now, const Vector2f &curr_pos, const Vector2f &ground_speed, + void control_landing(const hrt_abstime &now, const Vector2d &curr_pos, const Vector2f &ground_speed, const position_setpoint_s &pos_sp_prev, const position_setpoint_s &pos_sp_curr); @@ -418,11 +404,12 @@ private: (ParamInt) _param_fw_arsp_mode, (ParamFloat) _param_fw_psp_off, - (ParamFloat) _param_fw_rsp_off, (ParamFloat) _param_fw_man_p_max, (ParamFloat) _param_fw_man_r_max, - (ParamFloat) _param_nav_loiter_rad + (ParamFloat) _param_nav_loiter_rad, + + (ParamFloat) _takeoff_pitch_min ) diff --git a/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c b/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c index 6d988bc9be..229b60b33b 100644 --- a/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c +++ b/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c @@ -268,6 +268,18 @@ PARAM_DEFINE_FLOAT(FW_CLMBOUT_DIFF, 10.0f); */ PARAM_DEFINE_FLOAT(FW_LND_ANG, 5.0f); +/** + * Minimum pitch during takeoff. + * + * @unit deg + * @min -5.0 + * @max 30.0 + * @decimal 1 + * @increment 0.5 + * @group FW L1 Control + */ +PARAM_DEFINE_FLOAT(FW_TKO_PITCH_MIN, 10.0f); + /** * * diff --git a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.cpp b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.cpp index 4e33bd82a5..c9b9bfd437 100644 --- a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.cpp +++ b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.cpp @@ -46,7 +46,6 @@ #include #include -using matrix::Vector2f; using namespace time_literals; namespace runwaytakeoff @@ -69,8 +68,8 @@ void RunwayTakeoff::init(const hrt_abstime &now, float yaw, double current_lat, _state = RunwayTakeoffState::THROTTLE_RAMP; _initialized_time = now; _climbout = true; // this is true until climbout is finished - _start_wp(0) = (float)current_lat; - _start_wp(1) = (float)current_lon; + _start_wp(0) = current_lat; + _start_wp(1) = current_lon; } void RunwayTakeoff::update(const hrt_abstime &now, float airspeed, float alt_agl, @@ -103,8 +102,8 @@ void RunwayTakeoff::update(const hrt_abstime &now, float airspeed, float alt_agl * The navigator will take this as starting point to navigate towards the takeoff WP. */ if (_param_rwto_hdg.get() == 0) { - _start_wp(0) = (float)current_lat; - _start_wp(1) = (float)current_lon; + _start_wp(0) = current_lat; + _start_wp(1) = current_lon; } mavlink_log_info(mavlink_log_pub, "#Climbout"); @@ -221,13 +220,12 @@ bool RunwayTakeoff::resetIntegrators() * the climbtout minimum pitch (parameter). * Otherwise use the minimum that is enforced generally (parameter). */ -float RunwayTakeoff::getMinPitch(float sp_min, float climbout_min, float min) +float RunwayTakeoff::getMinPitch(float climbout_min, float min) { if (_state < RunwayTakeoffState::FLY) { - return math::max(sp_min, climbout_min); - } + return climbout_min; - else { + } else { return min; } } @@ -249,14 +247,6 @@ float RunwayTakeoff::getMaxPitch(float max) } } -/* - * Returns the "previous" (start) WP for navigation. - */ -Vector2f RunwayTakeoff::getStartWP() -{ - return _start_wp; -} - void RunwayTakeoff::reset() { _initialized = false; diff --git a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h index b619f8b384..796967d682 100644 --- a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h +++ b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h @@ -86,9 +86,9 @@ public: float getYaw(float navigatorYaw); float getThrottle(const hrt_abstime &now, float tecsThrottle); bool resetIntegrators(); - float getMinPitch(float sp_min, float climbout_min, float min); + float getMinPitch(float climbout_min, float min); float getMaxPitch(float max); - matrix::Vector2f getStartWP(); + const matrix::Vector2d &getStartWP() const { return _start_wp; }; void reset(); @@ -99,7 +99,7 @@ private: hrt_abstime _initialized_time{0}; float _init_yaw{0.f}; bool _climbout{false}; - matrix::Vector2f _start_wp; + matrix::Vector2d _start_wp; DEFINE_PARAMETERS( (ParamBool) _param_rwto_tkoff, diff --git a/src/modules/logger/logged_topics.cpp b/src/modules/logger/logged_topics.cpp index 38ccef0e75..a0a6fa4118 100644 --- a/src/modules/logger/logged_topics.cpp +++ b/src/modules/logger/logged_topics.cpp @@ -73,6 +73,7 @@ void LoggedTopics::add_default_topics() add_topic("navigator_mission_item"); add_topic("offboard_control_mode", 100); add_topic("onboard_computer_status", 10); + add_topic("parameter_update"); add_topic("position_controller_status", 500); add_topic("position_setpoint_triplet", 200); add_topic("px4io_status"); diff --git a/src/modules/mavlink/mavlink_mission.cpp b/src/modules/mavlink/mavlink_mission.cpp index 7de65addc3..5d50dc2c29 100644 --- a/src/modules/mavlink/mavlink_mission.cpp +++ b/src/modules/mavlink/mavlink_mission.cpp @@ -1305,13 +1305,6 @@ MavlinkMissionManager::parse_mavlink_mission_item(const mavlink_mission_item_t * mission_item->altitude_is_relative = true; } - /* this field is shared with pitch_min (and circle_radius for geofence) in memory and - * exclusive in the MAVLink spec. Set it to 0 first - * and then set minimum pitch later only for the - * corresponding item - */ - mission_item->time_inside = 0.0f; - switch (mavlink_mission_item->command) { case MAV_CMD_NAV_WAYPOINT: mission_item->nav_cmd = NAV_CMD_WAYPOINT; @@ -1345,9 +1338,17 @@ MavlinkMissionManager::parse_mavlink_mission_item(const mavlink_mission_item_t * break; case MAV_CMD_NAV_TAKEOFF: - mission_item->nav_cmd = NAV_CMD_TAKEOFF; - mission_item->pitch_min = mavlink_mission_item->param1; - mission_item->yaw = wrap_2pi(math::radians(mavlink_mission_item->param4)); + + // reject takeoff item if minimum pitch (parameter 1) is set + if (PX4_ISFINITE(mavlink_mission_item->param1) && (fabsf(mavlink_mission_item->param1) > FLT_EPSILON)) { + _mavlink->send_statustext_critical("Takeoff rejected, remove deprecated minimum pitch"); + return MAV_MISSION_INVALID_PARAM1; + + } else { + mission_item->nav_cmd = NAV_CMD_TAKEOFF; + mission_item->yaw = wrap_2pi(math::radians(mavlink_mission_item->param4)); + } + break; case MAV_CMD_NAV_LOITER_TO_ALT: @@ -1652,7 +1653,6 @@ MavlinkMissionManager::format_mavlink_mission_item(const struct mission_item_s * break; case NAV_CMD_TAKEOFF: - mavlink_mission_item->param1 = mission_item->pitch_min; mavlink_mission_item->param4 = math::degrees(mission_item->yaw); break; diff --git a/src/modules/navigator/mission.cpp b/src/modules/navigator/mission.cpp index d563644e3e..d436e740fe 100644 --- a/src/modules/navigator/mission.cpp +++ b/src/modules/navigator/mission.cpp @@ -752,11 +752,6 @@ Mission::set_mission_items() _mission_item.nav_cmd = NAV_CMD_WAYPOINT; /* ignore yaw here, otherwise it might yaw before heading_sp_update takes over */ _mission_item.yaw = NAN; - /* since _mission_item.time_inside and and _mission_item.pitch_min build a union, we need to set time_inside to zero - * since in NAV_CMD_TAKEOFF mode there is currently no time_inside. - * Note also that resetting time_inside to zero will cause pitch_min to be zero as well. - */ - _mission_item.time_inside = 0.0f; } else if (_mission_item.nav_cmd == NAV_CMD_VTOL_TAKEOFF && _work_item_type == WORK_ITEM_TYPE_DEFAULT @@ -783,10 +778,6 @@ Mission::set_mission_items() _mission_item.nav_cmd = NAV_CMD_WAYPOINT; /* ignore yaw here, otherwise it might yaw before heading_sp_update takes over */ _mission_item.yaw = NAN; - /* since _mission_item.time_inside and and _mission_item.pitch_min build a union, we need to set time_inside to zero - * since in NAV_CMD_TAKEOFF mode there is currently no time_inside. - */ - _mission_item.time_inside = 0.0f; } /* if we just did a VTOL takeoff, prepare transition */ @@ -1864,7 +1855,6 @@ bool Mission::position_setpoint_equal(const position_setpoint_s *p1, const posit (p1->yawspeed_valid == p2->yawspeed_valid) && (fabsf(p1->loiter_radius - p2->loiter_radius) < FLT_EPSILON) && (p1->loiter_direction == p2->loiter_direction) && - (fabsf(p1->pitch_min - p2->pitch_min) < FLT_EPSILON) && (fabsf(p1->a_x - p2->a_x) < FLT_EPSILON) && (fabsf(p1->a_y - p2->a_y) < FLT_EPSILON) && (fabsf(p1->a_z - p2->a_z) < FLT_EPSILON) && diff --git a/src/modules/navigator/mission_block.cpp b/src/modules/navigator/mission_block.cpp index 1d4163dd9e..a37c2226c1 100644 --- a/src/modules/navigator/mission_block.cpp +++ b/src/modules/navigator/mission_block.cpp @@ -582,9 +582,6 @@ MissionBlock::mission_item_to_position_setpoint(const mission_item_s &item, posi } else { sp->type = position_setpoint_s::SETPOINT_TYPE_TAKEOFF; - - // set pitch and ensure that the hold time is zero - sp->pitch_min = item.pitch_min; } break; @@ -667,7 +664,7 @@ MissionBlock::set_loiter_item(struct mission_item_s *item, float min_clearance) } void -MissionBlock::set_takeoff_item(struct mission_item_s *item, float abs_altitude, float min_pitch) +MissionBlock::set_takeoff_item(struct mission_item_s *item, float abs_altitude) { item->nav_cmd = NAV_CMD_TAKEOFF; @@ -680,7 +677,6 @@ MissionBlock::set_takeoff_item(struct mission_item_s *item, float abs_altitude, item->altitude_is_relative = false; item->loiter_radius = _navigator->get_loiter_radius(); - item->pitch_min = min_pitch; item->autocontinue = false; item->origin = ORIGIN_ONBOARD; } diff --git a/src/modules/navigator/mission_block.h b/src/modules/navigator/mission_block.h index b432e9f2cd..be87ea307a 100644 --- a/src/modules/navigator/mission_block.h +++ b/src/modules/navigator/mission_block.h @@ -116,7 +116,7 @@ protected: /** * Set a takeoff mission item */ - void set_takeoff_item(struct mission_item_s *item, float abs_altitude, float min_pitch = 0.0f); + void set_takeoff_item(struct mission_item_s *item, float abs_altitude); /** * Set a land mission item diff --git a/src/modules/navigator/navigation.h b/src/modules/navigator/navigation.h index deef0b5827..50cd362f26 100644 --- a/src/modules/navigator/navigation.h +++ b/src/modules/navigator/navigation.h @@ -153,7 +153,6 @@ struct mission_item_s { struct { union { float time_inside; /**< time that the MAV should stay inside the radius before advancing in seconds */ - float pitch_min; /**< minimal pitch angle for fixed wing takeoff waypoints */ float circle_radius; /**< geofence circle radius in meters (only used for NAV_CMD_NAV_FENCE_CIRCLE*) */ }; float acceptance_radius; /**< default radius in which the mission is accepted as reached in meters */ diff --git a/src/modules/navigator/rtl.cpp b/src/modules/navigator/rtl.cpp index 0ebddbe77e..62b339a627 100644 --- a/src/modules/navigator/rtl.cpp +++ b/src/modules/navigator/rtl.cpp @@ -642,27 +642,27 @@ void RTL::get_rtl_xy_z_speed(float &xy, float &z) switch (vehicle_type) { case vehicle_status_s::VEHICLE_TYPE_ROTARY_WING: - _rtl_xy_speed = param_find("MPC_XY_CRUISE"); - _rtl_descent_speed = param_find("MPC_Z_VEL_MAX_DN"); + _param_rtl_xy_speed = param_find("MPC_XY_CRUISE"); + _param_rtl_descent_speed = param_find("MPC_Z_VEL_MAX_DN"); break; case vehicle_status_s::VEHICLE_TYPE_FIXED_WING: - _rtl_xy_speed = param_find("FW_AIRSPD_TRIM"); - _rtl_descent_speed = param_find("FW_T_SINK_MIN"); + _param_rtl_xy_speed = param_find("FW_AIRSPD_TRIM"); + _param_rtl_descent_speed = param_find("FW_T_SINK_MIN"); break; case vehicle_status_s::VEHICLE_TYPE_ROVER: - _rtl_xy_speed = param_find("GND_SPEED_THR_SC"); - _rtl_descent_speed = 65535; + _param_rtl_xy_speed = param_find("GND_SPEED_THR_SC"); + _param_rtl_descent_speed = PARAM_INVALID; break; } } - if (param_get(_rtl_xy_speed, &xy) != 0) { + if ((_param_rtl_xy_speed == PARAM_INVALID) || param_get(_param_rtl_xy_speed, &xy) != PX4_OK) { xy = 1e6f; } - if (param_get(_rtl_descent_speed, &z) != 0) { + if ((_param_rtl_descent_speed == PARAM_INVALID) || param_get(_param_rtl_descent_speed, &z) != PX4_OK) { z = 1e6f; } diff --git a/src/modules/navigator/rtl.h b/src/modules/navigator/rtl.h index 57cd49b2da..6b5cd4118d 100644 --- a/src/modules/navigator/rtl.h +++ b/src/modules/navigator/rtl.h @@ -165,8 +165,9 @@ private: // These need to point at different parameters depending on vehicle type. // Can't hard-code them because we have non-MC/FW/Rover builds uint8_t _rtl_vehicle_type{vehicle_status_s::VEHICLE_TYPE_UNKNOWN}; - param_t _rtl_xy_speed{PARAM_INVALID}; - param_t _rtl_descent_speed{PARAM_INVALID}; + + param_t _param_rtl_xy_speed{PARAM_INVALID}; + param_t _param_rtl_descent_speed{PARAM_INVALID}; uORB::SubscriptionData _wind_estimate_sub{ORB_ID(wind_estimate)}; uORB::Publication _rtl_flight_time_pub{ORB_ID(rtl_flight_time)}; diff --git a/src/modules/rover_pos_control/RoverPositionControl.cpp b/src/modules/rover_pos_control/RoverPositionControl.cpp index a19d9b1989..2b592da5fc 100644 --- a/src/modules/rover_pos_control/RoverPositionControl.cpp +++ b/src/modules/rover_pos_control/RoverPositionControl.cpp @@ -149,7 +149,7 @@ RoverPositionControl::vehicle_attitude_poll() } bool -RoverPositionControl::control_position(const matrix::Vector2f ¤t_position, +RoverPositionControl::control_position(const matrix::Vector2d ¤t_position, const matrix::Vector3f &ground_speed, const position_setpoint_triplet_s &pos_sp_triplet) { float dt = 0.01; // Using non zero value to a avoid division by zero @@ -172,14 +172,14 @@ RoverPositionControl::control_position(const matrix::Vector2f ¤t_position, //bool was_circle_mode = _gnd_control.circle_mode(); /* current waypoint (the one currently heading for) */ - matrix::Vector2f curr_wp((float)pos_sp_triplet.current.lat, (float)pos_sp_triplet.current.lon); + matrix::Vector2d curr_wp(pos_sp_triplet.current.lat, pos_sp_triplet.current.lon); /* previous waypoint */ - matrix::Vector2f prev_wp = curr_wp; + matrix::Vector2d prev_wp = curr_wp; if (pos_sp_triplet.previous.valid) { - prev_wp(0) = (float)pos_sp_triplet.previous.lat; - prev_wp(1) = (float)pos_sp_triplet.previous.lon; + prev_wp(0) = pos_sp_triplet.previous.lat; + prev_wp(1) = pos_sp_triplet.previous.lon; } matrix::Vector2f ground_speed_2d(ground_speed); @@ -433,7 +433,7 @@ RoverPositionControl::run() _pos_reset_counter = _global_pos.lat_lon_reset_counter; matrix::Vector3f ground_speed(_local_pos.vx, _local_pos.vy, _local_pos.vz); - matrix::Vector2f current_position((float)_global_pos.lat, (float)_global_pos.lon); + matrix::Vector2d current_position(_global_pos.lat, _global_pos.lon); matrix::Vector3f current_velocity(_local_pos.vx, _local_pos.vy, _local_pos.vz); if (!manual_mode && _control_mode.flag_control_position_enabled) { diff --git a/src/modules/rover_pos_control/RoverPositionControl.hpp b/src/modules/rover_pos_control/RoverPositionControl.hpp index 2795205bee..f503d367f2 100644 --- a/src/modules/rover_pos_control/RoverPositionControl.hpp +++ b/src/modules/rover_pos_control/RoverPositionControl.hpp @@ -150,7 +150,7 @@ private: } _pos_ctrl_state {STOPPING}; /// Position control state machine /* previous waypoint */ - matrix::Vector2f _prev_wp{0.0f, 0.0f}; + matrix::Vector2d _prev_wp{0, 0}; DEFINE_PARAMETERS( (ParamFloat) _param_l1_period, @@ -190,7 +190,7 @@ private: /** * Control position. */ - bool control_position(const matrix::Vector2f &global_pos, const matrix::Vector3f &ground_speed, + bool control_position(const matrix::Vector2d &global_pos, const matrix::Vector3f &ground_speed, const position_setpoint_triplet_s &_pos_sp_triplet); void control_velocity(const matrix::Vector3f ¤t_velocity, const position_setpoint_triplet_s &pos_sp_triplet); void control_attitude(const vehicle_attitude_s &att, const vehicle_attitude_setpoint_s &att_sp); diff --git a/src/modules/sensors/sensor_params.c b/src/modules/sensors/sensor_params.c index c3f74056db..843cd6e5c4 100644 --- a/src/modules/sensors/sensor_params.c +++ b/src/modules/sensors/sensor_params.c @@ -83,6 +83,7 @@ PARAM_DEFINE_FLOAT(CAL_AIR_TUBED_MM, 1.5f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(SENS_DPRES_OFF, 0.0f); diff --git a/src/modules/sensors/sensor_params_acc0.c b/src/modules/sensors/sensor_params_acc0.c index 7618731e9e..992b8d0121 100644 --- a/src/modules/sensors/sensor_params_acc0.c +++ b/src/modules/sensors/sensor_params_acc0.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_ACC0_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC0_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC0_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC0_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC0_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC0_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC0_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC0_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC0_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC0_YSCALE, 1.0f); @@ -158,5 +163,6 @@ PARAM_DEFINE_FLOAT(CAL_ACC0_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC0_ZSCALE, 1.0f); diff --git a/src/modules/sensors/sensor_params_acc1.c b/src/modules/sensors/sensor_params_acc1.c index beba38db58..c8d17f4321 100644 --- a/src/modules/sensors/sensor_params_acc1.c +++ b/src/modules/sensors/sensor_params_acc1.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_ACC1_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC1_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC1_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC1_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC1_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC1_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC1_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC1_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC1_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC1_YSCALE, 1.0f); @@ -158,5 +163,6 @@ PARAM_DEFINE_FLOAT(CAL_ACC1_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC1_ZSCALE, 1.0f); diff --git a/src/modules/sensors/sensor_params_acc2.c b/src/modules/sensors/sensor_params_acc2.c index 6e19c52ce5..b97d6719ae 100644 --- a/src/modules/sensors/sensor_params_acc2.c +++ b/src/modules/sensors/sensor_params_acc2.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_ACC2_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC2_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC2_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC2_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC2_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC2_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC2_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC2_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC2_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC2_YSCALE, 1.0f); @@ -158,5 +163,6 @@ PARAM_DEFINE_FLOAT(CAL_ACC2_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC2_ZSCALE, 1.0f); diff --git a/src/modules/sensors/sensor_params_acc3.c b/src/modules/sensors/sensor_params_acc3.c index 5217691285..807b624d60 100644 --- a/src/modules/sensors/sensor_params_acc3.c +++ b/src/modules/sensors/sensor_params_acc3.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_ACC3_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC3_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC3_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC3_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC3_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC3_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC3_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC3_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_ACC3_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC3_YSCALE, 1.0f); @@ -158,5 +163,6 @@ PARAM_DEFINE_FLOAT(CAL_ACC3_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_ACC3_ZSCALE, 1.0f); diff --git a/src/modules/sensors/sensor_params_flow.c b/src/modules/sensors/sensor_params_flow.c index c5c91694b1..618f536408 100644 --- a/src/modules/sensors/sensor_params_flow.c +++ b/src/modules/sensors/sensor_params_flow.c @@ -96,4 +96,4 @@ PARAM_DEFINE_FLOAT(SENS_FLOW_MAXHGT, 3.0f); * @decimal 2 * @group Sensor Calibration */ -PARAM_DEFINE_FLOAT(SENS_FLOW_MAXR, 2.5f); \ No newline at end of file +PARAM_DEFINE_FLOAT(SENS_FLOW_MAXR, 2.5f); diff --git a/src/modules/sensors/sensor_params_gyro0.c b/src/modules/sensors/sensor_params_gyro0.c index 8c3bce8a67..3b6693484f 100644 --- a/src/modules/sensors/sensor_params_gyro0.c +++ b/src/modules/sensors/sensor_params_gyro0.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_GYRO0_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO0_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_GYRO0_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO0_YOFF, 0.0f); @@ -134,5 +136,6 @@ PARAM_DEFINE_FLOAT(CAL_GYRO0_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO0_ZOFF, 0.0f); diff --git a/src/modules/sensors/sensor_params_gyro1.c b/src/modules/sensors/sensor_params_gyro1.c index 1964821316..4545984191 100644 --- a/src/modules/sensors/sensor_params_gyro1.c +++ b/src/modules/sensors/sensor_params_gyro1.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_GYRO1_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO1_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_GYRO1_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO1_YOFF, 0.0f); @@ -134,5 +136,6 @@ PARAM_DEFINE_FLOAT(CAL_GYRO1_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO1_ZOFF, 0.0f); diff --git a/src/modules/sensors/sensor_params_gyro2.c b/src/modules/sensors/sensor_params_gyro2.c index ee5f7b8073..5f5ae348de 100644 --- a/src/modules/sensors/sensor_params_gyro2.c +++ b/src/modules/sensors/sensor_params_gyro2.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_GYRO2_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO2_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_GYRO2_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO2_YOFF, 0.0f); @@ -134,5 +136,6 @@ PARAM_DEFINE_FLOAT(CAL_GYRO2_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO2_ZOFF, 0.0f); diff --git a/src/modules/sensors/sensor_params_gyro3.c b/src/modules/sensors/sensor_params_gyro3.c index ea3a993158..bfa1210e69 100644 --- a/src/modules/sensors/sensor_params_gyro3.c +++ b/src/modules/sensors/sensor_params_gyro3.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_GYRO3_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO3_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_GYRO3_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO3_YOFF, 0.0f); @@ -134,5 +136,6 @@ PARAM_DEFINE_FLOAT(CAL_GYRO3_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_GYRO3_ZOFF, 0.0f); diff --git a/src/modules/sensors/sensor_params_mag0.c b/src/modules/sensors/sensor_params_mag0.c index a279185050..63bad16b22 100644 --- a/src/modules/sensors/sensor_params_mag0.c +++ b/src/modules/sensors/sensor_params_mag0.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_MAG0_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_YSCALE, 1.0f); @@ -158,6 +163,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_ZSCALE, 1.0f); @@ -166,6 +172,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_ZSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_XODIAG, 0.0f); @@ -174,6 +181,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_XODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_YODIAG, 0.0f); @@ -182,6 +190,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_YODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG0_ZODIAG, 0.0f); diff --git a/src/modules/sensors/sensor_params_mag1.c b/src/modules/sensors/sensor_params_mag1.c index cd002c182f..64c8dc95b9 100644 --- a/src/modules/sensors/sensor_params_mag1.c +++ b/src/modules/sensors/sensor_params_mag1.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_MAG1_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_YSCALE, 1.0f); @@ -158,6 +163,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_ZSCALE, 1.0f); @@ -166,6 +172,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_ZSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_XODIAG, 0.0f); @@ -174,6 +181,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_XODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_YODIAG, 0.0f); @@ -182,6 +190,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_YODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG1_ZODIAG, 0.0f); diff --git a/src/modules/sensors/sensor_params_mag2.c b/src/modules/sensors/sensor_params_mag2.c index 2253066f70..12297a48f3 100644 --- a/src/modules/sensors/sensor_params_mag2.c +++ b/src/modules/sensors/sensor_params_mag2.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_MAG2_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_YSCALE, 1.0f); @@ -158,6 +163,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_ZSCALE, 1.0f); @@ -166,6 +172,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_ZSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_XODIAG, 0.0f); @@ -174,6 +181,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_XODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_YODIAG, 0.0f); @@ -182,6 +190,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_YODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG2_ZODIAG, 0.0f); diff --git a/src/modules/sensors/sensor_params_mag3.c b/src/modules/sensors/sensor_params_mag3.c index 7e80627c9a..9930ac0260 100644 --- a/src/modules/sensors/sensor_params_mag3.c +++ b/src/modules/sensors/sensor_params_mag3.c @@ -118,6 +118,7 @@ PARAM_DEFINE_INT32(CAL_MAG3_ROT, -1); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_XOFF, 0.0f); @@ -126,6 +127,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_XOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_YOFF, 0.0f); @@ -134,6 +136,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_YOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_ZOFF, 0.0f); @@ -142,6 +145,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_ZOFF, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_XSCALE, 1.0f); @@ -150,6 +154,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_XSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_YSCALE, 1.0f); @@ -158,6 +163,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_YSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_ZSCALE, 1.0f); @@ -166,6 +172,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_ZSCALE, 1.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_XODIAG, 0.0f); @@ -174,6 +181,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_XODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_YODIAG, 0.0f); @@ -182,6 +190,7 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_YODIAG, 0.0f); * * @category system * @group Sensor Calibration + * @volatile */ PARAM_DEFINE_FLOAT(CAL_MAG3_ZODIAG, 0.0f); diff --git a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp index e57bd0a984..1eb1c5c736 100644 --- a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp +++ b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp @@ -146,7 +146,7 @@ int uORBTest::UnitTest::pubsublatency_main() pubsubtest_passed = true; - if (static_cast(latency_integral / MAX_RUNS) > 100.0f) { + if (mean > 150.0f) { pubsubtest_res = PX4_ERROR; } else { @@ -461,7 +461,7 @@ int uORBTest::UnitTest::test_multi2() char *const args[1] = { nullptr }; int pubsub_task = px4_task_spawn_cmd("uorb_test_multi", SCHED_DEFAULT, - SCHED_PRIORITY_MAX - 5, + SCHED_PRIORITY_MAX - 2, 2000, (px4_main_t)&uORBTest::UnitTest::pub_test_multi2_entry, args); @@ -986,7 +986,7 @@ int uORBTest::UnitTest::test_queue_poll_notify() char *const args[1] = { nullptr }; int pubsub_task = px4_task_spawn_cmd("uorb_test_queue", SCHED_DEFAULT, - SCHED_PRIORITY_MIN + 5, + SCHED_PRIORITY_DEFAULT, 2000, (px4_main_t)&uORBTest::UnitTest::pub_test_queue_entry, args); diff --git a/src/systemcmds/param/param.cpp b/src/systemcmds/param/param.cpp index 80adb32c27..6baef0ab26 100644 --- a/src/systemcmds/param/param.cpp +++ b/src/systemcmds/param/param.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include #include @@ -92,6 +93,7 @@ static int do_show_index(const char *index, bool used_index); static void do_show_print(void *arg, param_t param); static void do_show_print_for_airframe(void *arg, param_t param); static int do_set(const char *name, const char *val, bool fail_on_not_found); +static int do_set_custom_default(const char *name, const char *val); static int do_compare(const char *name, char *vals[], unsigned comparisons, enum COMPARE_OPERATOR cmd_op, enum COMPARE_ERROR_LEVEL err_level); static int do_reset_all(const char *excludes[], int num_excludes); @@ -151,6 +153,10 @@ $ reboot PRINT_MODULE_USAGE_ARG(" ", "Parameter name and value to set", false); PRINT_MODULE_USAGE_ARG("fail", "If provided, let the command fail if param is not found", true); + PRINT_MODULE_USAGE_COMMAND_DESCR("set-default", "Set parameter default to a value"); + PRINT_MODULE_USAGE_ARG(" ", "Parameter name and value to set", false); + PRINT_MODULE_USAGE_ARG("fail", "If provided, let the command fail if param is not found", true); + PRINT_MODULE_USAGE_COMMAND_DESCR("compare", "Compare a param with a value. Command will succeed if equal"); PRINT_MODULE_USAGE_PARAM_FLAG('s', "If provided, silent errors if parameter doesn't exists", true); PRINT_MODULE_USAGE_ARG(" ", "Parameter name and value to compare", false); @@ -226,9 +232,11 @@ param_main(int argc, char *argv[]) } const char *default_file = param_get_default_file(); + if (default_file) { PX4_INFO("selected parameter default file %s", default_file); } + return 0; } @@ -250,6 +258,7 @@ param_main(int argc, char *argv[]) if (argc >= 4) { return do_show_quiet(argv[3]); } + } else { return do_show(argv[2], false); } @@ -285,11 +294,23 @@ param_main(int argc, char *argv[]) } } + if (!strcmp(argv[1], "set-default")) { + if (argc == 4) { + return do_set_custom_default(argv[2], argv[3]); + + } else { + PX4_ERR("not enough arguments.\nTry 'param set-default PARAM_NAME 3'"); + return 1; + } + } + if (!strcmp(argv[1], "compare")) { - if(argc >= 5 && !strcmp(argv[2], "-s")) { + if (argc >= 5 && !strcmp(argv[2], "-s")) { return do_compare(argv[3], &argv[4], argc - 4, COMPARE_OPERATOR::EQUAL, COMPARE_ERROR_LEVEL::SILENT); + } else if (argc >= 4) { return do_compare(argv[2], &argv[3], argc - 3, COMPARE_OPERATOR::EQUAL, COMPARE_ERROR_LEVEL::DO_ERROR); + } else { PX4_ERR("not enough arguments.\nTry 'param compare PARAM_NAME 3'"); return 1; @@ -297,10 +318,12 @@ param_main(int argc, char *argv[]) } if (!strcmp(argv[1], "greater")) { - if(argc >= 5 && !strcmp(argv[2], "-s")) { + if (argc >= 5 && !strcmp(argv[2], "-s")) { return do_compare(argv[3], &argv[4], argc - 4, COMPARE_OPERATOR::GREATER, COMPARE_ERROR_LEVEL::SILENT); + } else if (argc >= 4) { return do_compare(argv[2], &argv[3], argc - 3, COMPARE_OPERATOR::GREATER, COMPARE_ERROR_LEVEL::DO_ERROR); + } else { PX4_ERR("not enough arguments.\nTry 'param greater PARAM_NAME 3'"); return 1; @@ -329,6 +352,7 @@ param_main(int argc, char *argv[]) if (!strcmp(argv[1], "touch")) { if (argc >= 3) { return do_touch((const char **) &argv[2], argc - 2); + } else { PX4_ERR("not enough arguments."); return 1; @@ -399,6 +423,7 @@ static int do_load(const char *param_file_name) { int fd = -1; + if (param_file_name) { // passing NULL means to select the flash storage fd = open(param_file_name, O_RDONLY); @@ -409,6 +434,7 @@ do_load(const char *param_file_name) } int result = param_load(fd); + if (fd >= 0) { close(fd); } @@ -416,9 +442,11 @@ do_load(const char *param_file_name) if (result < 0) { if (param_file_name) { PX4_ERR("importing from '%s' failed (%i)", param_file_name, result); + } else { PX4_ERR("importing failed (%i)", result); } + return 1; } @@ -429,12 +457,14 @@ static int do_import(const char *param_file_name) { bool mark_saved = false; + if (param_file_name == nullptr) { param_file_name = param_get_default_file(); mark_saved = true; // if imported from default storage, mark as saved } int fd = -1; + if (param_file_name) { // passing NULL means to select the flash storage fd = open(param_file_name, O_RDONLY); @@ -445,6 +475,7 @@ do_import(const char *param_file_name) } int result = param_import(fd, mark_saved); + if (fd >= 0) { close(fd); } @@ -452,9 +483,11 @@ do_import(const char *param_file_name) if (result < 0) { if (param_file_name) { PX4_ERR("importing from '%s' failed (%i)", param_file_name, result); + } else { PX4_ERR("importing failed (%i)", result); } + return 1; } @@ -674,16 +707,19 @@ static void do_show_print_for_airframe(void *arg, param_t param) { // exceptions - const char* p_name = param_name(param); + const char *p_name = param_name(param); + if (!p_name || param_is_volatile(param)) { return; } + if (!strcmp(p_name, "SYS_AUTOSTART") || !strcmp(p_name, "SYS_AUTOCONFIG")) { return; } + if (!strncmp(p_name, "RC", 2) || !strncmp(p_name, "TC_", 3) || !strncmp(p_name, "CAL_", 4) || - !strncmp(p_name, "SENS_BOARD_", 11) || !strcmp(p_name, "SENS_DPRES_OFF") || - !strcmp(p_name, "MAV_TYPE")) { + !strncmp(p_name, "SENS_BOARD_", 11) || !strcmp(p_name, "SENS_DPRES_OFF") || + !strcmp(p_name, "MAV_TYPE")) { return; } @@ -697,6 +733,7 @@ do_show_print_for_airframe(void *arg, param_t param) PARAM_PRINT("%ld\n", (long)i); return; } + break; case PARAM_TYPE_FLOAT: @@ -704,6 +741,7 @@ do_show_print_for_airframe(void *arg, param_t param) PARAM_PRINT("%4.4f\n", (double)f); return; } + break; default: @@ -783,7 +821,62 @@ do_set(const char *name, const char *val, bool fail_on_not_found) } static int -do_compare(const char *name, char *vals[], unsigned comparisons, enum COMPARE_OPERATOR cmp_op, enum COMPARE_ERROR_LEVEL err_level) +do_set_custom_default(const char *name, const char *val) +{ + param_t param = param_find_no_notification(name); + + /* set nothing if parameter cannot be found */ + if (param == PARAM_INVALID) { + /* param not found - fail silenty in scripts as it prevents booting */ + PX4_ERR("Parameter %s not found.", name); + return PX4_ERROR; + } + + // Set parameter if type is known and conversion from string to value turns out fine + switch (param_type(param)) { + case PARAM_TYPE_INT32: { + int32_t i; + + if (param_get_default_value(param, &i) == PX4_OK) { + /* convert string */ + char *end; + int32_t newval = strtol(val, &end, 10); + + if ((i != newval) && (param_set_default_value(param, &newval) == PX4_OK)) { + PARAM_PRINT(" parameter default: %s %d -> %d\n", param_name(param), i, newval); + } + } + } + + break; + + case PARAM_TYPE_FLOAT: { + float f; + + if (param_get_default_value(param, &f) == PX4_OK) { + /* convert string */ + char *end; + float newval = strtod(val, &end); + + if ((fabsf(f - newval) > FLT_EPSILON) && (param_set_default_value(param, &newval) == PX4_OK)) { + PARAM_PRINT(" parameter default: %s %4.2f -> %4.2f\n", param_name(param), (double)f, (double)newval); + } + } + } + + break; + + default: + PX4_ERR("\n", 0 + param_type(param)); + return 1; + } + + return 0; +} + +static int +do_compare(const char *name, char *vals[], unsigned comparisons, enum COMPARE_OPERATOR cmp_op, + enum COMPARE_ERROR_LEVEL err_level) { int32_t i; float f; @@ -792,10 +885,10 @@ do_compare(const char *name, char *vals[], unsigned comparisons, enum COMPARE_OP /* set nothing if parameter cannot be found */ if (param == PARAM_INVALID) { /* param not found */ - if(err_level == COMPARE_ERROR_LEVEL::DO_ERROR) - { + if (err_level == COMPARE_ERROR_LEVEL::DO_ERROR) { PX4_ERR("Parameter %s not found", name); } + return 1; } @@ -888,5 +981,6 @@ do_touch(const char *params[], int num_params) PX4_ERR("param %s not found", params[i]); } } + return 0; } diff --git a/src/systemcmds/tests/test_parameters.cpp b/src/systemcmds/tests/test_parameters.cpp index 27eb71775d..63cffd1532 100644 --- a/src/systemcmds/tests/test_parameters.cpp +++ b/src/systemcmds/tests/test_parameters.cpp @@ -80,6 +80,7 @@ private: bool ResetAllExcludesTwo(); bool ResetAllExcludesBoundaryCheck(); bool ResetAllExcludesWildcard(); + bool CustomDefaults(); bool exportImport(); // tests on system parameters @@ -223,6 +224,50 @@ bool ParameterTest::ResetAllExcludesWildcard() return ret; } +bool ParameterTest::CustomDefaults() +{ + int32_t value = 0; + param_t param_test_1 = param_find("TEST_1"); + param_reset(param_test_1); + param_get(param_test_1, &value); + ut_compare("value for param doesn't match default value", value, 2); // TEST_1 default value 2 + + // verify underlying default value + int32_t default_value = 0; + param_get_default_value(param_test_1, &default_value); + ut_compare("value for param default doesn't match default value", default_value, 2); + + // change default value + int32_t new_default_value = 123456789; + param_set_default_value(param_test_1, &new_default_value); + ut_compare("value for param default doesn't match default value", new_default_value, 123456789); + + // verify new default value + default_value = 0; + param_get_default_value(param_test_1, &default_value); + ut_compare("value for param default doesn't match custom default value", default_value, 123456789); + + // verify new value + value = 0; + param_get(param_test_1, &value); + ut_compare("param value not custom default", value, 123456789); + + // set to new value and verify + value = 987654321; + param_set(param_test_1, &value); + value = 0; + param_get(param_test_1, &value); + ut_compare("param value not saved", value, 987654321); + + // reset (to custom default) + param_reset(param_test_1); + value = 0; + param_get(param_test_1, &value); + ut_compare("param value not reset to custom default", value, 123456789); + + return true; +} + bool ParameterTest::exportImport() { static constexpr float MAGIC_FLOAT_VAL = 0.314159f; @@ -544,6 +589,7 @@ bool ParameterTest::run_tests() ut_run_test(ResetAllExcludesTwo); ut_run_test(ResetAllExcludesBoundaryCheck); ut_run_test(ResetAllExcludesWildcard); + ut_run_test(CustomDefaults); ut_run_test(exportImport); // WARNING, can potentially trash your system diff --git a/test/mavsdk_tests/autopilot_tester.cpp b/test/mavsdk_tests/autopilot_tester.cpp index 57636515d8..693f49af26 100644 --- a/test/mavsdk_tests/autopilot_tester.cpp +++ b/test/mavsdk_tests/autopilot_tester.cpp @@ -164,8 +164,7 @@ void AutopilotTester::wait_until_disarmed(std::chrono::seconds timeout_duration) void AutopilotTester::wait_until_hovering() { - REQUIRE(poll_condition_with_timeout( - [this]() { return _telemetry->landed_state() == Telemetry::LandedState::InAir; }, std::chrono::seconds(30))); + wait_for_landed_state(Telemetry::LandedState::InAir, std::chrono::seconds(30)); } void AutopilotTester::prepare_square_mission(MissionOptions mission_options) @@ -227,68 +226,28 @@ void AutopilotTester::execute_mission() // TODO: Adapt time limit based on mission size, flight speed, sim speed factor, etc. - REQUIRE(poll_condition_with_timeout( - [this]() { - auto result = _mission->is_mission_finished(); - return result.first == Mission::Result::Success && result.second; - }, std::chrono::seconds(60))); - - REQUIRE(fut.wait_for(std::chrono::seconds(1)) == std::future_status::ready); + wait_for_mission_finished(std::chrono::seconds(60)); } void AutopilotTester::execute_mission_and_lose_gps() { CHECK(_param->set_param_int("SYS_FAILURE_EN", 1) == Param::Result::Success); - _mission->subscribe_mission_progress([this](Mission::MissionProgress progress) { - std::cout << time_str() << "Progress: " << progress.current << "/" << progress.total << std::endl; + start_and_wait_for_first_mission_item(); - if (progress.current == 1) { - std::thread([this]() { - CHECK(_failure->inject(Failure::FailureUnit::SensorGps, Failure::FailureType::Off, 0) - == Failure::Result::Success); - }).detach(); - } - }); - - std::promise prom; - auto fut = prom.get_future(); - _mission->start_mission_async([&prom](Mission::Result result) { - REQUIRE(Mission::Result::Success == result); - prom.set_value(); - }); - REQUIRE(fut.wait_for(std::chrono::seconds(1)) == std::future_status::ready); + CHECK(_failure->inject(Failure::FailureUnit::SensorGps, Failure::FailureType::Off, 0) == Failure::Result::Success); // We expect that a blind land is performed. - REQUIRE(poll_condition_with_timeout( - [this]() { - auto flight_mode = _telemetry->flight_mode(); - return flight_mode == Telemetry::FlightMode::Land; - }, std::chrono::seconds(90))); + wait_for_flight_mode(Telemetry::FlightMode::Land, std::chrono::seconds(30)); } void AutopilotTester::execute_mission_and_lose_mag() { CHECK(_param->set_param_int("SYS_FAILURE_EN", 1) == Param::Result::Success); - _mission->subscribe_mission_progress([this](Mission::MissionProgress progress) { - std::cout << time_str() << "Progress: " << progress.current << "/" << progress.total << std::endl; + start_and_wait_for_first_mission_item(); - if (progress.current == 1) { - std::thread([this]() { - CHECK(_failure->inject(Failure::FailureUnit::SensorMag, Failure::FailureType::Off, 0) - == Failure::Result::Success); - }).detach(); - } - }); - - std::promise prom; - auto fut = prom.get_future(); - _mission->start_mission_async([&prom](Mission::Result result) { - REQUIRE(Mission::Result::Success == result); - prom.set_value(); - }); - REQUIRE(fut.wait_for(std::chrono::seconds(1)) == std::future_status::ready); + CHECK(_failure->inject(Failure::FailureUnit::SensorMag, Failure::FailureType::Off, 0) == Failure::Result::Success); // We except the mission to continue without mag just fine. REQUIRE(poll_condition_with_timeout( @@ -296,31 +255,15 @@ void AutopilotTester::execute_mission_and_lose_mag() auto progress = _mission->mission_progress(); return progress.current == progress.total; }, std::chrono::seconds(90))); - } void AutopilotTester::execute_mission_and_lose_baro() { CHECK(_param->set_param_int("SYS_FAILURE_EN", 1) == Param::Result::Success); - _mission->subscribe_mission_progress([this](Mission::MissionProgress progress) { - std::cout << time_str() << "Progress: " << progress.current << "/" << progress.total << std::endl; + start_and_wait_for_first_mission_item(); - if (progress.current == 1) { - std::thread([this]() { - CHECK(_failure->inject(Failure::FailureUnit::SensorBaro, Failure::FailureType::Off, 0) - == Failure::Result::Success); - }).detach(); - } - }); - - std::promise prom; - auto fut = prom.get_future(); - _mission->start_mission_async([&prom](Mission::Result result) { - REQUIRE(Mission::Result::Success == result); - prom.set_value(); - }); - REQUIRE(fut.wait_for(std::chrono::seconds(1)) == std::future_status::ready); + CHECK(_failure->inject(Failure::FailureUnit::SensorBaro, Failure::FailureType::Off, 0) == Failure::Result::Success); // We except the mission to continue without baro just fine. REQUIRE(poll_condition_with_timeout( @@ -334,24 +277,9 @@ void AutopilotTester::execute_mission_and_get_baro_stuck() { CHECK(_param->set_param_int("SYS_FAILURE_EN", 1) == Param::Result::Success); - _mission->subscribe_mission_progress([this](Mission::MissionProgress progress) { - std::cout << time_str() << "Progress: " << progress.current << "/" << progress.total << std::endl; + start_and_wait_for_first_mission_item(); - if (progress.current == 1) { - std::thread([this]() { - CHECK(_failure->inject(Failure::FailureUnit::SensorBaro, Failure::FailureType::Stuck, 0) - == Failure::Result::Success); - }).detach(); - } - }); - - std::promise prom; - auto fut = prom.get_future(); - _mission->start_mission_async([&prom](Mission::Result result) { - REQUIRE(Mission::Result::Success == result); - prom.set_value(); - }); - REQUIRE(fut.wait_for(std::chrono::seconds(1)) == std::future_status::ready); + CHECK(_failure->inject(Failure::FailureUnit::SensorBaro, Failure::FailureType::Stuck, 0) == Failure::Result::Success); // We except the mission to continue with a stuck baro just fine. REQUIRE(poll_condition_with_timeout( @@ -365,24 +293,9 @@ void AutopilotTester::execute_mission_and_get_mag_stuck() { CHECK(_param->set_param_int("SYS_FAILURE_EN", 1) == Param::Result::Success); - _mission->subscribe_mission_progress([this](Mission::MissionProgress progress) { - std::cout << time_str() << "Progress: " << progress.current << "/" << progress.total << std::endl; + start_and_wait_for_first_mission_item(); - if (progress.current == 1) { - std::thread([this]() { - CHECK(_failure->inject(Failure::FailureUnit::SensorMag, Failure::FailureType::Stuck, 0) - == Failure::Result::Success); - }).detach(); - } - }); - - std::promise prom; - auto fut = prom.get_future(); - _mission->start_mission_async([&prom](Mission::Result result) { - REQUIRE(Mission::Result::Success == result); - prom.set_value(); - }); - REQUIRE(fut.wait_for(std::chrono::seconds(1)) == std::future_status::ready); + CHECK(_failure->inject(Failure::FailureUnit::SensorMag, Failure::FailureType::Stuck, 0) == Failure::Result::Success); // We except the mission to continue with a stuck mag just fine. REQUIRE(poll_condition_with_timeout( @@ -643,6 +556,70 @@ bool AutopilotTester::ground_truth_horizontal_position_far_from(const Telemetry: return pass; } +void AutopilotTester::start_and_wait_for_first_mission_item() +{ + auto prom = std::promise {}; + auto fut = prom.get_future(); + + _mission->subscribe_mission_progress([&prom, this](Mission::MissionProgress progress) { + std::cout << time_str() << "Progress: " << progress.current << "/" << progress.total << std::endl; + + if (progress.current >= 1) { + _mission->subscribe_mission_progress(nullptr); + prom.set_value(); + } + }); + + REQUIRE(_mission->start_mission() == Mission::Result::Success); + + REQUIRE(fut.wait_for(std::chrono::seconds(60)) == std::future_status::ready); +} + +void AutopilotTester::wait_for_flight_mode(Telemetry::FlightMode flight_mode, std::chrono::seconds timeout) +{ + auto prom = std::promise {}; + auto fut = prom.get_future(); + + _telemetry->subscribe_flight_mode([&prom, flight_mode, this](Telemetry::FlightMode new_flight_mode) { + if (new_flight_mode == flight_mode) { + _telemetry->subscribe_flight_mode(nullptr); + prom.set_value(); + } + }); + + REQUIRE(fut.wait_for(timeout) == std::future_status::ready); +} + +void AutopilotTester::wait_for_landed_state(Telemetry::LandedState landed_state, std::chrono::seconds timeout) +{ + auto prom = std::promise {}; + auto fut = prom.get_future(); + + _telemetry->subscribe_landed_state([&prom, landed_state, this](Telemetry::LandedState new_landed_state) { + if (new_landed_state == landed_state) { + _telemetry->subscribe_landed_state(nullptr); + prom.set_value(); + } + }); + + REQUIRE(fut.wait_for(timeout) == std::future_status::ready); +} + +void AutopilotTester::wait_for_mission_finished(std::chrono::seconds timeout) +{ + auto prom = std::promise {}; + auto fut = prom.get_future(); + + _mission->subscribe_mission_progress([&prom, this](Mission::MissionProgress progress) { + if (progress.current == progress.total) { + _mission->subscribe_mission_progress(nullptr); + prom.set_value(); + } + }); + + REQUIRE(fut.wait_for(timeout) == std::future_status::ready); +} + std::chrono::milliseconds AutopilotTester::adjust_to_lockstep_speed(std::chrono::milliseconds duration_ms) { if (_info == nullptr) { diff --git a/test/mavsdk_tests/autopilot_tester.h b/test/mavsdk_tests/autopilot_tester.h index 2f22733fe4..55003f33f7 100644 --- a/test/mavsdk_tests/autopilot_tester.h +++ b/test/mavsdk_tests/autopilot_tester.h @@ -126,6 +126,10 @@ private: bool ground_truth_horizontal_position_far_from(const Telemetry::GroundTruth &target_pos, float min_distance_m); bool estimated_position_close_to(const Offboard::PositionNedYaw &target_pos, float acceptance_radius_m); bool estimated_horizontal_position_close_to(const Offboard::PositionNedYaw &target_pos, float acceptance_radius_m); + void start_and_wait_for_first_mission_item(); + void wait_for_flight_mode(Telemetry::FlightMode flight_mode, std::chrono::seconds timeout); + void wait_for_landed_state(Telemetry::LandedState landed_state, std::chrono::seconds timeout); + void wait_for_mission_finished(std::chrono::seconds timeout); std::chrono::milliseconds adjust_to_lockstep_speed(std::chrono::milliseconds duration_ms); diff --git a/test/mavsdk_tests/process_helper.py b/test/mavsdk_tests/process_helper.py index 587cc7f9ec..5723177f81 100644 --- a/test/mavsdk_tests/process_helper.py +++ b/test/mavsdk_tests/process_helper.py @@ -176,15 +176,25 @@ class Px4Runner(Runner): def clear_rootfs(self) -> None: rootfs_path = self.cwd if self.verbose: - print("Deleting rootfs: {}".format(rootfs_path)) + print("Clearing rootfs (except logs): {}".format(rootfs_path)) if os.path.isdir(rootfs_path): - shutil.rmtree(rootfs_path) + for item in os.listdir(rootfs_path): + if item == 'log': + continue + path = os.path.join(rootfs_path, item) + if os.path.isfile(path) or os.path.islink(path): + os.remove(path) + else: + shutil.rmtree(path) def create_rootfs(self) -> None: rootfs_path = self.cwd if self.verbose: print("Creating rootfs: {}".format(rootfs_path)) - os.makedirs(rootfs_path) + try: + os.makedirs(rootfs_path) + except FileExistsError: + pass class GzserverRunner(Runner):