From 264efde0c944bbe34e76c9637846068c2004012d Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 9 Feb 2021 07:12:17 -0800 Subject: [PATCH 01/49] nxp_fmuk66-v3:SD enable Multi block --- boards/nxp/fmuk66-v3/nuttx-config/nsh/defconfig | 1 - 1 file changed, 1 deletion(-) 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 From 8c8f48530e9c95284d7e003a011a44ffd6b81910 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Mon, 8 Feb 2021 13:42:26 -0800 Subject: [PATCH 02/49] nxp_fmuk66-e:Fix missing line rc.board_defaults --- boards/nxp/fmuk66-e/init/rc.board_defaults | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 #------------------------------------------------------------------------------ From b4c17cc8e73a6833f75c3132e011ea4a9bcb0a4e Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Mon, 8 Feb 2021 13:43:07 -0800 Subject: [PATCH 03/49] nxp_fmuk66-e:Set Rotation of bmi88 --- boards/nxp/fmuk66-e/init/rc.board_sensors | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/nxp/fmuk66-e/init/rc.board_sensors b/boards/nxp/fmuk66-e/init/rc.board_sensors index 492c942f68..d47d01ced7 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 From 461069281311d60c8be36a74588f8604e848f680 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Mon, 8 Feb 2021 13:43:47 -0800 Subject: [PATCH 04/49] nxp_fmuk66-e:Set CONFIG_CDCACM_PRODUCTSTR --- boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig b/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig index 1bff942451..f0a4c3fab7 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 From df3e94bcff6693cc1e892ebea8e5ff341b216a5b Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 9 Feb 2021 06:01:07 -0800 Subject: [PATCH 05/49] nxp_fmuk66-e:Disabled icm42688p until load issue is resolved --- boards/nxp/fmuk66-e/init/rc.board_sensors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/nxp/fmuk66-e/init/rc.board_sensors b/boards/nxp/fmuk66-e/init/rc.board_sensors index d47d01ced7..518c5a35e9 100644 --- a/boards/nxp/fmuk66-e/init/rc.board_sensors +++ b/boards/nxp/fmuk66-e/init/rc.board_sensors @@ -16,4 +16,4 @@ 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 From 3570e1b4da739de50fe972550614151e5c0f4f27 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 9 Feb 2021 07:10:22 -0800 Subject: [PATCH 06/49] nxp_fmuk66-e: Sync defconfig with latest V3 changes --- boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig | 11 +++++++++-- boards/nxp/fmuk66-e/nuttx-config/socketcan/defconfig | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig b/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig index f0a4c3fab7..f6f9859ade 100644 --- a/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig +++ b/boards/nxp/fmuk66-e/nuttx-config/nsh/defconfig @@ -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 From bf29ec2da2fa43d570c678bd413883243786ac50 Mon Sep 17 00:00:00 2001 From: PX4 BuildBot Date: Wed, 10 Feb 2021 00:39:35 +0000 Subject: [PATCH 07/49] Update submodule ecl to latest Wed Feb 10 00:39:35 UTC 2021 - ecl in PX4/Firmware (afb692ecffccc3ba7ade39c5906c8c5660066121): https://github.com/PX4/PX4-ECL/commit/cd38621dd6a4ef0f42eb29a2b4145f58023e7910 - ecl current upstream: https://github.com/PX4/PX4-ECL/commit/602e65146c975c12482560fafab7e05bf43b0029 - Changes: https://github.com/PX4/PX4-ECL/compare/cd38621dd6a4ef0f42eb29a2b4145f58023e7910...602e65146c975c12482560fafab7e05bf43b0029 602e651 2021-02-05 Paul Riseborough - EKF: Remove unnecessary initialisation 6f664ab 2020-07-20 Paul Riseborough - EKF: Non functional changes arising from review b87778e 2020-06-30 Paul Riseborough - EKF: Make clip detection logic easier to follow 9aa8d93 2020-06-30 Paul Riseborough - EKF: Use isRecent function e948b35 2020-06-29 Paul Riseborough - EKF: Don't reject vertical aiding data if inertial solution is bad c566318 2020-06-23 Paul Riseborough - EKF: misc improvements to handling of accel clipping 9c89fa3 2020-06-02 Paul Riseborough - EKF: Use IMU clipping to adjudicate bad accel data check --- src/lib/ecl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ecl b/src/lib/ecl index cd38621dd6..602e65146c 160000 --- a/src/lib/ecl +++ b/src/lib/ecl @@ -1 +1 @@ -Subproject commit cd38621dd6a4ef0f42eb29a2b4145f58023e7910 +Subproject commit 602e65146c975c12482560fafab7e05bf43b0029 From a76e429b1a8ecfbadae44c869be8b6ce73d2925e Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Tue, 9 Feb 2021 11:06:27 -0500 Subject: [PATCH 08/49] calibration parameters volatile (offsets and scale factors) - anything set vehicle side should be volatile and excluded from the param hash --- src/modules/sensors/sensor_params.c | 1 + src/modules/sensors/sensor_params_acc0.c | 6 ++++++ src/modules/sensors/sensor_params_acc1.c | 6 ++++++ src/modules/sensors/sensor_params_acc2.c | 6 ++++++ src/modules/sensors/sensor_params_acc3.c | 6 ++++++ src/modules/sensors/sensor_params_flow.c | 2 +- src/modules/sensors/sensor_params_gyro0.c | 3 +++ src/modules/sensors/sensor_params_gyro1.c | 3 +++ src/modules/sensors/sensor_params_gyro2.c | 3 +++ src/modules/sensors/sensor_params_gyro3.c | 3 +++ src/modules/sensors/sensor_params_mag0.c | 9 +++++++++ src/modules/sensors/sensor_params_mag1.c | 9 +++++++++ src/modules/sensors/sensor_params_mag2.c | 9 +++++++++ src/modules/sensors/sensor_params_mag3.c | 9 +++++++++ 14 files changed, 74 insertions(+), 1 deletion(-) 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); From 236975c56c16554a126e8e037ed8ec7cadec74a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Mi=C5=A1i=C4=87?= Date: Wed, 10 Feb 2021 11:45:20 +0100 Subject: [PATCH 09/49] astyle: excluded libcanard for uavcannode_gps_demo --- Tools/astyle/files_to_check_code_style.sh | 1 + 1 file changed, 1 insertion(+) 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 \ From c524e61b973f6de96fe93edb2a3aee90c5db488f Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 10 Feb 2021 11:51:19 +0100 Subject: [PATCH 10/49] airspeed_selector: fix timeout check I think this check was the wrong way round which meant that we would end up with an unsigned int overflow and trigger a reset. --- src/modules/airspeed_selector/airspeed_selector_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); From 7686533abbdae7168248ddfeccf503c5ced4ba15 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 9 Feb 2021 18:23:42 +0100 Subject: [PATCH 11/49] FlightTaskManualAcceleration: adapt position reset to new structure The mapping itself was seprated out into a calls because it was reused for the experimental nudging implementation. The position resets which were handled correctly before now change the wrong setpoints and I adjusted. The nudging has to be before any filtering, then these member setpoints which are essentially copies are not needed anymore. --- .../FlightTaskManualAcceleration.cpp | 31 ++----------------- .../FlightTaskManualAcceleration.hpp | 3 -- 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp index 9f0e09d004..fe6230620a 100644 --- a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp +++ b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp @@ -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(Vector2f(_velocity)); } 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; }; From 82d6cc3dba3bbc8d6fbd0a3449e7d67560d4a67d Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 10 Feb 2021 12:03:42 +0100 Subject: [PATCH 12/49] FlightTasks: use .xy() where possible to take the first two elements of a Vector3f. --- .../ManualAcceleration/FlightTaskManualAcceleration.cpp | 6 +++--- .../tasks/ManualPosition/FlightTaskManualPosition.cpp | 3 +-- .../FlightTaskManualPositionSmoothVel.cpp | 8 ++++---- .../flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp | 2 +- .../tasks/Utility/StickAccelerationXY.cpp | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp b/src/modules/flight_mode_manager/tasks/ManualAcceleration/FlightTaskManualAcceleration.cpp index fe6230620a..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(); @@ -84,5 +84,5 @@ void FlightTaskManualAcceleration::_ekfResetHandlerPositionXY() void FlightTaskManualAcceleration::_ekfResetHandlerVelocityXY() { - _stick_acceleration_xy.resetVelocity(Vector2f(_velocity)); + _stick_acceleration_xy.resetVelocity(_velocity.xy()); } 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 { From 3d9cde885d446b705cb28942c95c93a07f4d0122 Mon Sep 17 00:00:00 2001 From: Jaeyoung-Lim Date: Wed, 10 Feb 2021 19:52:19 +0100 Subject: [PATCH 13/49] Add comment for reserve autostartIDs This commit adds a comment where the autostart IDs 22000-22999 should be reserved for custom models --- ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt index 80bd3b6e3b..b87a0b23e0 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt +++ b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt @@ -157,6 +157,8 @@ px4_add_romfs_files( # [18000, 18999] High-altitude balloons 18001_TF-B1 + # [22000, 22999] Reserve for custom models + 24001_dodeca_cox 50000_generic_ground_vehicle From 176d932f23ac9e8909bfe5711cd65dae2d20119e Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 10 Feb 2021 13:33:28 +0100 Subject: [PATCH 14/49] mavsdk_tests: prevent missing updates It seems like we are often missing updates from topics like flight mode or in air state, both topics that are sent out infrequenctly e.g. at 1 Hz. Therefore, instead of polling for that data we should probably subscribe to the updates and that way get notified of each an every update. For instance this should prevent the case where we miss the mode change from mission to descend and back to mission once landed and disarmed. --- test/mavsdk_tests/autopilot_tester.cpp | 154 ++++++++++--------------- test/mavsdk_tests/autopilot_tester.h | 3 + 2 files changed, 64 insertions(+), 93 deletions(-) diff --git a/test/mavsdk_tests/autopilot_tester.cpp b/test/mavsdk_tests/autopilot_tester.cpp index 57636515d8..599a1a879f 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) @@ -240,55 +239,21 @@ 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 +261,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 +283,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 +299,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 +562,55 @@ 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); +} + 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..a798479dc5 100644 --- a/test/mavsdk_tests/autopilot_tester.h +++ b/test/mavsdk_tests/autopilot_tester.h @@ -126,6 +126,9 @@ 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); std::chrono::milliseconds adjust_to_lockstep_speed(std::chrono::milliseconds duration_ms); From 7e18cffc5f42788eef1cf08e7d3a34a096d8665a Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 12:51:22 -0500 Subject: [PATCH 15/49] Update submodule mavlink v2.0 to latest Thu Feb 11 12:41:13 UTC 2021 --- mavlink/include/mavlink/v2.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mavlink/include/mavlink/v2.0 b/mavlink/include/mavlink/v2.0 index 076158a975..6e50193c68 160000 --- a/mavlink/include/mavlink/v2.0 +++ b/mavlink/include/mavlink/v2.0 @@ -1 +1 @@ -Subproject commit 076158a9756064c78817a425f67991acba95b8ec +Subproject commit 6e50193c68c47bdfebca4f3385d5e661d342b767 From 5b44bd67bb37c91c0b15ceee70c873b8c0e28cfa Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 09:12:19 -0500 Subject: [PATCH 16/49] ist8310: fix 16 times average configuration --- src/drivers/magnetometer/isentek/ist8310/IST8310.hpp | 2 +- .../isentek/ist8310/iSentek_IST8310_registers.hpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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 From 80b8e6a48f8471ef64a7a6a67816cffacc192189 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 9 Feb 2021 22:40:21 +0100 Subject: [PATCH 17/49] v5X: Register board variants This is needed to properly identify new variants. --- boards/px4/fmu-v5x/src/manifest.c | 3 +++ 1 file changed, 3 insertions(+) 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)}, }; From b1b032d6e1894df23334bd2e51aedbccd8aa7e02 Mon Sep 17 00:00:00 2001 From: bresch Date: Tue, 9 Feb 2021 14:02:10 +0100 Subject: [PATCH 18/49] commander: rework nav failure check Allows to recover from a failed test with a stricter test --- src/modules/commander/Commander.cpp | 43 ++++++++++++++++------------- src/modules/commander/Commander.hpp | 3 +- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index a5c35b5c48..d3b504b91b 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -4001,39 +4001,44 @@ 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) { + const bool innovation_pass = (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 { + _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! 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 */ From 5726e8e0a3b4f166ca2f0dd54914f80af6efab37 Mon Sep 17 00:00:00 2001 From: bresch Date: Wed, 10 Feb 2021 13:48:12 +0100 Subject: [PATCH 19/49] commander: do not fail nav check on GPS position glitch In case of a diverge of the nav filter, both position and velocity test ratios are large. If only one of them is too large, the nav filter is most likely not diverging but is encountering a GNSS position reset and it is still safe to fly in position mode. --- src/modules/commander/Commander.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index d3b504b91b..3313e50bd4 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -4016,7 +4016,10 @@ void Commander::estimator_check() } else { if (!_nav_test_passed) { - const bool innovation_pass = (estimator_status.vel_test_ratio < 1.0f) && (estimator_status.pos_test_ratio < 1.0f); + // 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); if (innovation_pass) { _time_last_innov_pass = hrt_absolute_time(); @@ -4032,7 +4035,7 @@ void Commander::estimator_check() _nav_test_failed = false; } - } else { + } else if (innovation_fail) { _time_last_innov_fail = hrt_absolute_time(); if (!_nav_test_failed && hrt_elapsed_time(&_time_last_innov_pass) > 1_s) { From 9d3ff12a94a6686698cc913f11ec1f0b6b9c86de Mon Sep 17 00:00:00 2001 From: bresch Date: Thu, 11 Feb 2021 13:13:35 +0100 Subject: [PATCH 20/49] commander: reword nav failure message --- src/modules/commander/Commander.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index 3313e50bd4..6c65d9113c 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -4041,7 +4041,7 @@ void Commander::estimator_check() 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, "Navigation failure! Recalibrate sensors"); + mavlink_log_emergency(&_mavlink_log_pub, "Navigation failure! Land and recalibrate sensors"); } } } From 2971ce866442be899e84c5a059cbbd9aada48b8e Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Thu, 11 Feb 2021 09:59:04 +0100 Subject: [PATCH 21/49] mavsdk_tests: don't clear logs --- test/mavsdk_tests/process_helper.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/test/mavsdk_tests/process_helper.py b/test/mavsdk_tests/process_helper.py index 587cc7f9ec..513abbb726 100644 --- a/test/mavsdk_tests/process_helper.py +++ b/test/mavsdk_tests/process_helper.py @@ -176,15 +176,24 @@ class Px4Runner(Runner): def clear_rootfs(self) -> None: rootfs_path = self.cwd if self.verbose: - print("Deleting rootfs: {}".format(rootfs_path)) - if os.path.isdir(rootfs_path): - shutil.rmtree(rootfs_path) + print("Clearing rootfs (except logs): {}".format(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): From 4184c204c460247f84eef6b00d21120c529e0afc Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Thu, 11 Feb 2021 10:00:09 +0100 Subject: [PATCH 22/49] autopilot_tester: don't poll mission progress Instead use subscription here as well in order not to miss an update. --- test/mavsdk_tests/autopilot_tester.cpp | 23 ++++++++++++++++------- test/mavsdk_tests/autopilot_tester.h | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/test/mavsdk_tests/autopilot_tester.cpp b/test/mavsdk_tests/autopilot_tester.cpp index 599a1a879f..693f49af26 100644 --- a/test/mavsdk_tests/autopilot_tester.cpp +++ b/test/mavsdk_tests/autopilot_tester.cpp @@ -226,13 +226,7 @@ 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() @@ -611,6 +605,21 @@ void AutopilotTester::wait_for_landed_state(Telemetry::LandedState landed_state, 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 a798479dc5..55003f33f7 100644 --- a/test/mavsdk_tests/autopilot_tester.h +++ b/test/mavsdk_tests/autopilot_tester.h @@ -129,6 +129,7 @@ private: 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); From aca1e85da48971a9c567e13ba31a0355b2cee583 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Thu, 11 Feb 2021 11:18:14 +0100 Subject: [PATCH 23/49] mavsdk_tests: don't forget to check for rootfs dir --- test/mavsdk_tests/process_helper.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/test/mavsdk_tests/process_helper.py b/test/mavsdk_tests/process_helper.py index 513abbb726..5723177f81 100644 --- a/test/mavsdk_tests/process_helper.py +++ b/test/mavsdk_tests/process_helper.py @@ -177,14 +177,15 @@ class Px4Runner(Runner): rootfs_path = self.cwd if self.verbose: print("Clearing rootfs (except logs): {}".format(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) + if os.path.isdir(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 From 9ebf78321453d75947bd2c7c7f9b8bafc6e3c9c9 Mon Sep 17 00:00:00 2001 From: Jaeyoung-Lim Date: Thu, 11 Feb 2021 20:37:18 +0100 Subject: [PATCH 24/49] Use smaller loiter radius for rovers --- ROMFS/px4fmu_common/init.d/rc.rover_defaults | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ROMFS/px4fmu_common/init.d/rc.rover_defaults b/ROMFS/px4fmu_common/init.d/rc.rover_defaults index 237aac9546..b56559c29c 100644 --- a/ROMFS/px4fmu_common/init.d/rc.rover_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.rover_defaults @@ -17,11 +17,17 @@ then param set NAV_DLL_ACT 0 param set NAV_ACC_RAD 2 + param set NAV_LOITER_RAD 2 # Temporary. param set NAV_FW_ALT_RAD 1000 fi +if param greater -s NAV_LOITER_RAD 2.5 +then + param set NAV_LOITER_RAD 2 +fi + # # Enable servo output on pins 3 and 4 (steering and thrust) # but also include 1+2 as they form together one output group From cb7aabf93291ee90c5768c1b8b0680c57817ac87 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 6 Feb 2021 14:11:17 -0500 Subject: [PATCH 25/49] fw_pos_control_l1: cleanup body velocity and acceleration usage - minimize storing unnecessary state (msg copies) --- src/lib/tecs/TECS.cpp | 13 +-- src/lib/tecs/TECS.hpp | 6 +- .../FixedwingPositionControl.cpp | 101 +++++++++--------- .../FixedwingPositionControl.hpp | 33 +++--- 4 files changed, 75 insertions(+), 78 deletions(-) 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/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index d75603d8fc..49a1b3b4b4 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -182,10 +182,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 +235,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 +319,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 +339,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: @@ -616,14 +627,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; } @@ -944,7 +955,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 +975,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; @@ -1046,7 +1057,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 +1118,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); @@ -1179,8 +1190,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 */ @@ -1240,7 +1250,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(); @@ -1672,10 +1682,16 @@ FixedwingPositionControl::Run() vehicle_attitude_poll(); vehicle_command_poll(); vehicle_control_mode_poll(); - _vehicle_land_detected_sub.update(&_vehicle_land_detected); + + 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); - _vehicle_acceleration_sub.update(); - _vehicle_rates_sub.update(); Vector2f curr_pos((float)_current_latitude, (float)_current_longitude); Vector2f ground_speed(_local_pos.vx, _local_pos.vy); @@ -1740,7 +1756,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 +1801,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) @@ -1849,28 +1865,15 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo /* 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,7 +1892,7 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo } } - _tecs.update_pitch_throttle(_R_nb, pitch_for_tecs, + _tecs.update_pitch_throttle(pitch_for_tecs, _current_altitude, alt_sp, airspeed_sp, _airspeed, _eas2tas, climbout_mode, climbout_pitch_min_rad, diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index 9c2271490e..28ef26b1d7 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 @@ -102,8 +101,6 @@ using matrix::Vector2f; using matrix::Vector3f; using matrix::wrap_pi; -using uORB::SubscriptionData; - using namespace launchdetection; using namespace runwaytakeoff; using namespace time_literals; @@ -150,16 +147,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 +166,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 +192,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 +232,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}; From c63107bb5795b1a63ba320536c2fcc73fd144de1 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 22:58:57 -0500 Subject: [PATCH 26/49] uORB: tests increase priorities to minimize failures with stackcheck/debug enabled - also relax the maximum mean by 50% --- src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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); From 7f76666fe9b124fbe7a2bf39fdd07676fae64ad2 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 23:04:26 -0500 Subject: [PATCH 27/49] Jenkins: hardware avoid unnecessary checkout --- .ci/Jenkinsfile-hardware | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/.ci/Jenkinsfile-hardware b/.ci/Jenkinsfile-hardware index 3aade46658..a2fa97f79f 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() } } From 8a0bf15b9e8d3e6307e1a88ece2d932a4f174f40 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 20:27:04 -0500 Subject: [PATCH 28/49] boards: CUAV X7Pro fix BMI088 orientation --- boards/cuav/x7pro/init/rc.board_sensors | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) 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 From dcb35e9a8c4ecbdf8b99c2744e50e47c6b6c50ea Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 23:06:40 -0500 Subject: [PATCH 29/49] Update submodule mavlink v2.0 to latest Fri Feb 12 00:38:48 UTC 2021 --- mavlink/include/mavlink/v2.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mavlink/include/mavlink/v2.0 b/mavlink/include/mavlink/v2.0 index 6e50193c68..43f2f3180a 160000 --- a/mavlink/include/mavlink/v2.0 +++ b/mavlink/include/mavlink/v2.0 @@ -1 +1 @@ -Subproject commit 6e50193c68c47bdfebca4f3385d5e661d342b767 +Subproject commit 43f2f3180a49720804c5f006377889a164fabadb From 5db906314a45d62663b6d407188d7a622c73f990 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 23:08:17 -0500 Subject: [PATCH 30/49] uavcan: stm32h7 driver silence debug output --- .../uavcan/uavcan_drivers/stm32h7/driver/src/internal.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) From a002a07ed52897dfd1082100b0af24f9b247916e Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Mon, 8 Feb 2021 09:07:03 +0100 Subject: [PATCH 31/49] sdcardCheck: minor refactor I was late for the review. --- .../PreFlightCheck/checks/sdcardCheck.cpp | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) 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; + } } } From c3172a91d906a9e052944dc7d4206500b18fc499 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 8 Feb 2021 16:35:40 -0500 Subject: [PATCH 32/49] ekf2: try reselecting distance_sensor on timeout --- src/modules/ekf2/EKF2.cpp | 19 ++++++++++++++----- src/modules/ekf2/EKF2.hpp | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) 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}; From 71c7c69c9d9aa95eaaf4136257ab665347483125 Mon Sep 17 00:00:00 2001 From: PX4 BuildBot Date: Fri, 12 Feb 2021 12:42:24 +0000 Subject: [PATCH 33/49] Update submodule ecl to latest Fri Feb 12 12:42:24 UTC 2021 - ecl in PX4/Firmware (2292cf3ed4f8c4391131870936881331bc870260): https://github.com/PX4/PX4-ECL/commit/602e65146c975c12482560fafab7e05bf43b0029 - ecl current upstream: https://github.com/PX4/PX4-ECL/commit/ffab483504a6c2eb3b61ae10d612cb35c8fbc550 - Changes: https://github.com/PX4/PX4-ECL/compare/602e65146c975c12482560fafab7e05bf43b0029...ffab483504a6c2eb3b61ae10d612cb35c8fbc550 ffab483 2021-02-11 Loic Dubois - Waiting for the filter to be initialized to set global origin --- src/lib/ecl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ecl b/src/lib/ecl index 602e65146c..ffab483504 160000 --- a/src/lib/ecl +++ b/src/lib/ecl @@ -1 +1 @@ -Subproject commit 602e65146c975c12482560fafab7e05bf43b0029 +Subproject commit ffab483504a6c2eb3b61ae10d612cb35c8fbc550 From da1a38b44ebcd1b9ff5ebdf7c18ea0952beca8b5 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 8 Feb 2021 11:32:13 -0500 Subject: [PATCH 34/49] parameters: merge generated files ito single static constexpr header - store parameter type and if volatile separately (saves kilobytes of flash) - use Bitset for tracking active and changed parameters - use atomic for autosave_enabled flag - compile at ${MAX_CUSTOM_OPT_LEVEL} (-O2 on non flash constrained boards) --- .gitignore | 3 - boards/bitcraze/crazyflie/default.cmake | 2 + boards/bitcraze/crazyflie21/default.cmake | 2 + .../include/px4_platform_common/param.h | 12 +- src/lib/parameters/CMakeLists.txt | 16 +- src/lib/parameters/param.h | 20 +- src/lib/parameters/parameters.cpp | 328 +++++++----------- src/lib/parameters/px_generate_params.py | 4 +- .../templates/px4_parameters.c.jinja | 35 -- .../templates/px4_parameters.h.jinja | 21 -- .../templates/px4_parameters.hpp.jinja | 49 +++ .../templates/px4_parameters_public.h.jinja | 37 -- 12 files changed, 194 insertions(+), 335 deletions(-) delete mode 100644 src/lib/parameters/templates/px4_parameters.c.jinja delete mode 100644 src/lib/parameters/templates/px4_parameters.h.jinja create mode 100644 src/lib/parameters/templates/px4_parameters.hpp.jinja delete mode 100644 src/lib/parameters/templates/px4_parameters_public.h.jinja 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/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/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/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/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..02a59cc184 100644 --- a/src/lib/parameters/param.h +++ b/src/lib/parameters/param.h @@ -435,25 +435,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..cdd0fd6971 100644 --- a/src/lib/parameters/parameters.cpp +++ b/src/lib/parameters/parameters.cpp @@ -44,13 +44,14 @@ #define PARAM_IMPLEMENTATION #include "param.h" #include "param_translation.h" -#include +#include #include "tinybson/tinybson.h" #include #include #include +#include #include #include #include @@ -91,50 +92,20 @@ 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::Bitset params_active; // params found +static px4::Bitset params_changed; // params non-default -/** - * Storage for modified parameters. - */ +// Storage for modified parameters. struct param_wbuf_s { union param_value_u val; - param_t param; + 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}; @@ -145,10 +116,6 @@ const UT_icd param_icd = {sizeof(param_wbuf_s), nullptr, nullptr, nullptr}; 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 +193,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 +205,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,23 +239,21 @@ 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 = {}; + parameter_update_s pup{}; pup.timestamp = hrt_absolute_time(); pup.instance = param_instance++; @@ -309,30 +269,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 +307,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 +358,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 +367,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 +377,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 +430,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)) { @@ -551,7 +471,7 @@ param_get_value_ptr(param_t param) v = &s->val; } else { - v = ¶m_info_base[param].val; + v = &px4::parameters[param].val; } result = v; @@ -564,10 +484,21 @@ int param_get(param_t param, void *val) { perf_count(param_get_perf); + + if (!handle_in_range(param)) { + PX4_ERR("get: param %d invalid", param); + return -1; + } + + if (!params_active[param]) { + PX4_WARN("get: param %d (%s) not active", param, param_name(param)); + } + int result = -1; if (val) { param_lock_reader(); + const void *v = param_get_value_ptr(param); if (v) { @@ -587,11 +518,11 @@ param_get_default_value(param_t param, void *default_val) if (default_val && handle_in_range(param)) { switch (param_type(param)) { case PARAM_TYPE_INT32: - memcpy(default_val, ¶m_info_base[param].val.i, param_size(param)); + memcpy(default_val, &px4::parameters[param].val.i, param_size(param)); return 0; case PARAM_TYPE_FLOAT: - memcpy(default_val, ¶m_info_base[param].val.f, param_size(param)); + memcpy(default_val, &px4::parameters[param].val.f, param_size(param)); return 0; } } @@ -621,7 +552,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 +577,7 @@ autosave_worker(void *arg) static void param_autosave() { - if (autosave_scheduled || autosave_disabled) { + if (autosave_scheduled.load() || autosave_disabled) { return; } @@ -663,7 +594,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 +603,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; @@ -685,13 +616,19 @@ static int param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_changes) { 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) { @@ -705,11 +642,11 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ switch (param_type(param)) { case PARAM_TYPE_INT32: - set_to_default = (param_info_base[param].val.i == *(int32_t *)val); + set_to_default = (px4::parameters[param].val.i == *(int32_t *)val); break; case PARAM_TYPE_FLOAT: - set_to_default = (fabsf(param_info_base[param].val.f - * (float *)val) < FLT_EPSILON); + set_to_default = (fabsf(px4::parameters[param].val.f - * (float *)val) < FLT_EPSILON); break; } @@ -720,7 +657,8 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ // param in memory and set to non-default value, clear int pos = utarray_eltidx(param_values, s); utarray_erase(param_values, pos, 1); - params_changed = true; + params_changed.set(param, false); + param_changed = true; } // do nothing if param not already set and being set to default @@ -728,14 +666,15 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ } 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); @@ -744,12 +683,12 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ /* update the changed value */ switch (param_type(param)) { case PARAM_TYPE_INT32: - params_changed = params_changed || s->val.i != *(int32_t *)val; + param_changed = param_changed || s->val.i != *(int32_t *)val; s->val.i = *(int32_t *)val; break; case PARAM_TYPE_FLOAT: - params_changed = params_changed || fabsf(s->val.f - * (float *)val) > FLT_EPSILON; + param_changed = param_changed || fabsf(s->val.f - * (float *)val) > FLT_EPSILON; s->val.f = *(float *)val; break; @@ -775,8 +714,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 (param_changed && notify_changes) { + param_notify_changes(); } return result; @@ -794,47 +733,30 @@ 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); -} - -void param_set_used_internal(param_t param) -{ - int param_index = param_get_index(param); - - if (param_index < 0) { - return; + if (handle_in_range(param)) { + params_active.set(param, true); } - - // FIXME: this needs locking too - param_changed_storage[param_index / bits_per_allocation_unit] |= - (1 << param_index % bits_per_allocation_unit); } static int param_reset_internal(param_t param, bool notify = true) @@ -855,6 +777,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 +787,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 +803,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 +818,7 @@ param_reset_all_internal(bool auto_save) param_unlock_writer(); - _param_notify_changes(); + param_notify_changes(); } void @@ -902,9 +830,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 +855,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; 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 */ - From b8b13bb882cbeed672addfd3140114d699b0b566 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 8 Feb 2021 14:15:01 -0500 Subject: [PATCH 35/49] parameters runtime defaults --- src/lib/parameters/param.h | 25 +-- src/lib/parameters/parameters.cpp | 289 ++++++++++++++++++++++++------ src/systemcmds/param/param.cpp | 110 +++++++++++- 3 files changed, 349 insertions(+), 75 deletions(-) diff --git a/src/lib/parameters/param.h b/src/lib/parameters/param.h index 02a59cc184..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. */ diff --git a/src/lib/parameters/parameters.cpp b/src/lib/parameters/parameters.cpp index cdd0fd6971..582d24c4b2 100644 --- a/src/lib/parameters/parameters.cpp +++ b/src/lib/parameters/parameters.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -96,20 +97,21 @@ static px4::atomic autosave_scheduled{false}; static bool autosave_disabled = false; static constexpr uint16_t param_info_count = sizeof(px4::parameters) / sizeof(param_info_s); -static px4::Bitset params_active; // params found -static px4::Bitset params_changed; // params non-default +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. struct param_wbuf_s { - union param_value_u val; - param_t param; - bool unsaved; + union param_value_u val; + param_t param; + bool unsaved; }; /** 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 */ @@ -456,28 +458,39 @@ size_t 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 = &px4::parameters[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 @@ -487,14 +500,14 @@ param_get(param_t param, void *val) if (!handle_in_range(param)) { PX4_ERR("get: param %d invalid", param); - return -1; + return PX4_ERROR; } if (!params_active[param]) { PX4_WARN("get: param %d (%s) not active", param, param_name(param)); } - int result = -1; + int result = PX4_ERROR; if (val) { param_lock_reader(); @@ -503,7 +516,7 @@ param_get(param_t param, void *val) if (v) { memcpy(val, v, param_size(param)); - result = 0; + result = PX4_OK; } param_unlock_reader(); @@ -513,21 +526,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, &px4::parameters[param].val.i, param_size(param)); - return 0; + return PX4_OK; case PARAM_TYPE_FLOAT: memcpy(default_val, &px4::parameters[param].val.f, param_size(param)); - return 0; + 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; } /** @@ -615,6 +655,16 @@ 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 param_changed = false; @@ -634,19 +684,28 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ 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 = (px4::parameters[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(px4::parameters[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; } @@ -654,14 +713,17 @@ 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.set(param, false); 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) { @@ -680,28 +742,32 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ s = param_find_changed(param); } - /* 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; - 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: - param_changed = param_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(); } } @@ -714,7 +780,7 @@ out: * If we set something, now that we have unlocked, go ahead and advertise that * a thing has been set. */ - if (param_changed && notify_changes) { + if ((result == PX4_OK) && param_changed && notify_changes) { param_notify_changes(); } @@ -759,6 +825,116 @@ void param_set_used(param_t param) } } +int param_set_default_value(param_t param, const void *val) +{ + if (!handle_in_range(param)) { + PX4_ERR("set default value invalid param %d", param); + return PX4_ERROR; + } + + 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; @@ -1038,6 +1214,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); @@ -1334,6 +1515,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/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; } From ce64951578055654ff3345f06951f4ca984b96fa Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 8 Feb 2021 20:50:13 -0500 Subject: [PATCH 36/49] parameter_update.msg: add basic status info --- .ci/Jenkinsfile-hardware | 3 ++- msg/parameter_update.msg | 9 +++++++++ src/lib/parameters/parameters.cpp | 13 ++++++++----- src/modules/logger/logged_topics.cpp | 1 + 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.ci/Jenkinsfile-hardware b/.ci/Jenkinsfile-hardware index a2fa97f79f..adc2570937 100644 --- a/.ci/Jenkinsfile-hardware +++ b/.ci/Jenkinsfile-hardware @@ -1011,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"' @@ -1019,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/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/src/lib/parameters/parameters.cpp b/src/lib/parameters/parameters.cpp index 582d24c4b2..e393bc54ea 100644 --- a/src/lib/parameters/parameters.cpp +++ b/src/lib/parameters/parameters.cpp @@ -256,13 +256,16 @@ void param_notify_changes() { parameter_update_s pup{}; - pup.timestamp = hrt_absolute_time(); 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); 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"); From a257120e8df1486a175f4adbe35d05b78c0fc405 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 8 Feb 2021 21:03:49 -0500 Subject: [PATCH 37/49] boards: use new param default mechanism --- .../airmind/mindpx-v2/init/rc.board_defaults | 10 +--- boards/av/x-v1/init/rc.board_defaults | 11 ++--- .../bitcraze/crazyflie/init/rc.board_defaults | 16 ++----- .../crazyflie21/init/rc.board_defaults | 15 ++---- boards/cuav/nora/init/rc.board_defaults | 33 +++++++------ boards/cuav/x7pro/init/rc.board_defaults | 33 +++++++------ .../cubeorange/init/rc.board_defaults | 33 +++++++------ .../cubeyellow/init/rc.board_defaults | 28 ++++++----- .../durandal-v1/init/rc.board_defaults | 21 ++++----- .../holybro/kakutef7/init/rc.board_defaults | 30 +++++------- boards/holybro/pix32v5/init/rc.board_defaults | 15 +++--- boards/intel/aerofc-v1/init/rc.board_defaults | 11 +---- boards/modalai/fc-v1/init/rc.board_defaults | 46 +++++++++---------- .../mro/ctrl-zero-f7/init/rc.board_defaults | 11 ++--- boards/mro/pixracerpro/init/rc.board_defaults | 24 +++++----- boards/mro/x21-777/init/rc.board_defaults | 16 +++---- boards/mro/x21/init/rc.board_defaults | 10 +--- boards/omnibus/f4sd/init/rc.board_defaults | 22 ++++----- boards/px4/fmu-v2/init/rc.board_defaults | 10 +--- boards/px4/fmu-v2/init/rc.board_sensors | 2 +- boards/px4/fmu-v3/init/rc.board_defaults | 10 +--- boards/px4/fmu-v3/init/rc.board_sensors | 2 +- boards/px4/fmu-v4/init/rc.board_defaults | 14 +++--- boards/px4/fmu-v4pro/init/rc.board_defaults | 11 ++--- boards/px4/fmu-v5/init/rc.board_defaults | 30 ++++++------ boards/px4/fmu-v5x/init/rc.board_defaults | 11 ++--- boards/px4/fmu-v6u/init/rc.board_defaults | 15 +++--- boards/px4/fmu-v6x/init/rc.board_defaults | 15 +++--- .../spracing/h7extreme/init/rc.board_defaults | 44 ++++++++---------- boards/uvify/core/init/rc.board_defaults | 12 ++--- 30 files changed, 226 insertions(+), 335 deletions(-) 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/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/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/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/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/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-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 From b67aa77d29533b01e20a17ca7da559f9e3fd4f46 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 8 Feb 2021 23:56:23 -0500 Subject: [PATCH 38/49] ROMFS: use new param default mechanism --- .../px4fmu_common/init.d/rc.balloon_defaults | 15 +--- ROMFS/px4fmu_common/init.d/rc.boat_defaults | 15 ++-- ROMFS/px4fmu_common/init.d/rc.fw_defaults | 75 +++++++++---------- ROMFS/px4fmu_common/init.d/rc.mc_defaults | 17 ++--- ROMFS/px4fmu_common/init.d/rc.rover_defaults | 22 ++---- ROMFS/px4fmu_common/init.d/rc.uuv_defaults | 10 +-- ROMFS/px4fmu_common/init.d/rc.vtol_defaults | 43 +++++------ 7 files changed, 83 insertions(+), 114 deletions(-) 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 b56559c29c..26db6d098c 100644 --- a/ROMFS/px4fmu_common/init.d/rc.rover_defaults +++ b/ROMFS/px4fmu_common/init.d/rc.rover_defaults @@ -7,26 +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 NAV_LOITER_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 - -if param greater -s NAV_LOITER_RAD 2.5 -then - param set NAV_LOITER_RAD 2 -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 From e6bc6438e8500c502c2d07276b8084951a1317f7 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Tue, 9 Feb 2021 00:34:43 -0500 Subject: [PATCH 39/49] ROMFS: airframes use new param default mechanism --- .../init.d/airframes/1000_rc_fw_easystar.hil | 51 ++-- .../init.d/airframes/10015_tbs_discovery | 27 +- .../init.d/airframes/10016_3dr_iris | 33 +-- .../init.d/airframes/10017_steadidrone_qu4d | 29 +- .../init.d/airframes/10018_tbs_endurance | 35 ++- .../init.d/airframes/1002_standard_vtol.hil | 83 +++--- .../init.d/airframes/12002_steadidrone_mavrik | 39 ++- .../airframes/13000_generic_vtol_standard | 13 +- .../init.d/airframes/13001_caipirinha_vtol | 43 ++- .../init.d/airframes/13002_firefly6 | 53 ++-- .../init.d/airframes/13003_quad_tailsitter | 15 +- .../init.d/airframes/13004_quad+_tailsitter | 13 +- .../init.d/airframes/13005_vtol_AAERT_quad | 73 +++-- .../airframes/13006_vtol_standard_delta | 57 ++-- .../init.d/airframes/13007_vtol_AAVVT_quad | 51 ++-- .../init.d/airframes/13008_QuadRanger | 81 +++--- .../init.d/airframes/13009_vtol_spt_ranger | 117 ++++---- .../init.d/airframes/13010_claire | 31 +- .../init.d/airframes/13012_convergence | 101 ++++--- .../init.d/airframes/13013_deltaquad | 227 ++++++++------- .../init.d/airframes/13014_vtol_babyshark | 147 +++++----- .../airframes/13015_generic_vtol_standard | 45 ++- .../init.d/airframes/13050_generic_vtol_octo | 13 +- .../airframes/13200_generic_vtol_tailsitter | 11 +- .../init.d/airframes/15001_coax_heli | 49 ++-- .../init.d/airframes/16001_helicopter | 52 ++-- .../init.d/airframes/17002_TF-AutoG2 | 35 ++- .../init.d/airframes/17003_TF-G2 | 35 ++- .../init.d/airframes/18001_TF-B1 | 23 +- .../init.d/airframes/2100_standard_plane | 7 +- .../px4fmu_common/init.d/airframes/2105_maja | 30 +- .../init.d/airframes/2106_albatross | 30 +- .../init.d/airframes/2200_mini_talon | 29 +- .../init.d/airframes/24001_dodeca_cox | 23 +- .../init.d/airframes/2507_cloudship | 8 +- .../init.d/airframes/3030_io_camflyer | 44 ++- .../init.d/airframes/3031_phantom | 48 ++-- .../init.d/airframes/3032_skywalker_x5 | 36 ++- .../init.d/airframes/3033_wingwing | 40 ++- .../px4fmu_common/init.d/airframes/3034_fx79 | 12 +- .../init.d/airframes/3036_pigeon | 50 ++-- .../init.d/airframes/3037_parrot_disco_mod | 89 +++--- .../init.d/airframes/3100_tbs_caipirinha | 77 +++-- .../px4fmu_common/init.d/airframes/4003_qavr5 | 34 ++- .../init.d/airframes/4009_qav250 | 38 ++- .../init.d/airframes/4010_dji_f330 | 31 +- .../init.d/airframes/4011_dji_f450 | 31 +- .../px4fmu_common/init.d/airframes/4014_s500 | 16 +- .../init.d/airframes/4015_holybro_s500 | 21 +- .../init.d/airframes/4016_holybro_px4vision | 206 +++++++------- .../init.d/airframes/4017_nxp_hovergames | 21 +- .../init.d/airframes/4018_s500_ctrlalloc | 65 ++--- .../init.d/airframes/4020_hk_micro_pcb | 30 +- .../init.d/airframes/4030_3dr_solo | 124 ++++---- .../init.d/airframes/4031_3dr_quad | 22 +- .../init.d/airframes/4040_reaper | 38 ++- .../init.d/airframes/4041_beta75x | 53 ++-- .../init.d/airframes/4050_generic_250 | 58 ++-- .../init.d/airframes/4051_s250aq | 48 ++-- .../init.d/airframes/4052_holybro_qav250 | 61 ++-- .../init.d/airframes/4053_holybro_kopis2 | 63 ++--- .../init.d/airframes/4060_dji_matrice_100 | 30 +- .../init.d/airframes/4070_aerofc | 90 +++--- ROMFS/px4fmu_common/init.d/airframes/4071_ifo | 154 +++++----- .../px4fmu_common/init.d/airframes/4072_draco | 112 ++++---- .../px4fmu_common/init.d/airframes/4073_ifo-s | 184 ++++++------ .../init.d/airframes/4080_zmr250 | 44 ++- .../init.d/airframes/4090_nanomind | 36 ++- .../px4fmu_common/init.d/airframes/4250_teal | 265 +++++++++--------- .../init.d/airframes/4500_clover4 | 30 +- .../init.d/airframes/4900_crazyflie | 81 +++--- .../init.d/airframes/4901_crazyflie21 | 79 +++--- .../airframes/50000_generic_ground_vehicle | 61 ++-- .../airframes/50003_aion_robotics_r1_rover | 95 +++---- .../airframes/50004_nxpcup_car_dfrobot_gpx | 75 +++-- .../init.d/airframes/60000_uuv_generic | 13 +- .../init.d/airframes/60001_uuv_hippocampus | 13 +- .../init.d/airframes/60002_uuv_bluerov2_heavy | 31 +- .../init.d/airframes/6002_draco_r | 181 ++++++------ .../init.d/airframes/6003_hexa_x_ctrlalloc | 89 +++--- 80 files changed, 2260 insertions(+), 2468 deletions(-) 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 From 0614789db3b5c9f9f5f5f886044489c7233a7d05 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 10 Feb 2021 21:56:49 -0500 Subject: [PATCH 40/49] tests: add simple parameter custom default testing --- src/systemcmds/tests/test_parameters.cpp | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) 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 From 15e76ad993df77bc70f45691e3aeda1438ba30d0 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 28 Jan 2021 10:02:40 -0500 Subject: [PATCH 41/49] PWM12 mode for pwm_out and dshot --- src/drivers/drv_pwm_output.h | 13 ++++---- src/drivers/dshot/DShot.cpp | 61 ++++++++++++++++++++++++++++------ src/drivers/dshot/DShot.h | 2 ++ src/drivers/pwm_out/PWMOut.cpp | 52 ++++++++++++++++++++++++++++- src/drivers/pwm_out/PWMOut.hpp | 2 ++ 5 files changed, 113 insertions(+), 17 deletions(-) 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/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, From 89f19fd65711fb1d96006dafc984889b9d8c72d3 Mon Sep 17 00:00:00 2001 From: PX4 BuildBot Date: Fri, 12 Feb 2021 12:42:15 +0000 Subject: [PATCH 42/49] Update submodule v2.0 to latest Fri Feb 12 12:42:14 UTC 2021 - v2.0 in PX4/Firmware (c76477963097ac72b7bd2f165a845a493ffb724e): https://github.com/mavlink/c_library_v2/commit/43f2f3180a49720804c5f006377889a164fabadb - v2.0 current upstream: https://github.com/mavlink/c_library_v2/commit/4e25dfa47b28adc177ea7badad837d8b84173712 - Changes: https://github.com/mavlink/c_library_v2/compare/43f2f3180a49720804c5f006377889a164fabadb...4e25dfa47b28adc177ea7badad837d8b84173712 4e25dfa4 2021-02-12 PX4BuildBot - autogenerated headers for rev https://github.com/mavlink/mavlink/tree/e4269aaf680b0797ba594b130d4e92dda889100c 82dcec27 2021-02-12 PX4BuildBot - autogenerated headers for rev https://github.com/mavlink/mavlink/tree/08e57d08ad17f1218334b74fa3766a0177783ea6 --- mavlink/include/mavlink/v2.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mavlink/include/mavlink/v2.0 b/mavlink/include/mavlink/v2.0 index 43f2f3180a..4e25dfa47b 160000 --- a/mavlink/include/mavlink/v2.0 +++ b/mavlink/include/mavlink/v2.0 @@ -1 +1 @@ -Subproject commit 43f2f3180a49720804c5f006377889a164fabadb +Subproject commit 4e25dfa47b28adc177ea7badad837d8b84173712 From f61d8539cbbc8a2c5b0b5a5b6db9f286d767e1af Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 4 Apr 2018 18:47:24 -0400 Subject: [PATCH 43/49] fw_pos_control_l1: add takeoff minimum pitch parameter - remove mavlink mechanism for setting minimum pitch --- .../px4_it/mavros/missions/FW_mission_1.plan | 2 +- .../mavros/missions/MC_mission_box.plan | 2 +- .../mavros/missions/VTOL_mission_1.plan | 2 +- .../px4_it/mavros/missions/avoidance.plan | 2 +- msg/position_setpoint.msg | 1 - .../FixedwingPositionControl.cpp | 6 ++--- .../FixedwingPositionControl.hpp | 4 +++- .../fw_pos_control_l1_params.c | 12 ++++++++++ .../runway_takeoff/RunwayTakeoff.cpp | 7 +++--- .../runway_takeoff/RunwayTakeoff.h | 2 +- src/modules/mavlink/mavlink_mission.cpp | 22 +++++++++---------- src/modules/navigator/mission.cpp | 10 --------- src/modules/navigator/mission_block.cpp | 6 +---- src/modules/navigator/mission_block.h | 2 +- src/modules/navigator/navigation.h | 1 - 15 files changed, 39 insertions(+), 42 deletions(-) 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/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/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index 49a1b3b4b4..5de4f3d56d 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -1222,7 +1222,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 @@ -1293,7 +1293,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 */ @@ -1320,7 +1320,7 @@ 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()); } } } diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index 28ef26b1d7..ade6314bf6 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp @@ -417,7 +417,9 @@ private: (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..fc85cc2f90 100644 --- a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.cpp +++ b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.cpp @@ -221,13 +221,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; } } 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..b42ced184b 100644 --- a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h +++ b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h @@ -86,7 +86,7 @@ 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(); 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 */ From a70cf950f46a25f6844fe34950f14e1c9e616b0b Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Mon, 8 Feb 2021 17:10:27 +0100 Subject: [PATCH 44/49] fw_pos_control_l1: apply pitch setpoint offset centrally Signed-off-by: Silvan Fuhrer --- .../fw_att_control/fw_att_control_params.c | 6 +-- .../FixedwingPositionControl.cpp | 41 +++++++++---------- 2 files changed, 22 insertions(+), 25 deletions(-) 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..e2be303861 100644 --- a/src/modules/fw_att_control/fw_att_control_params.c +++ b/src/modules/fw_att_control/fw_att_control_params.c @@ -430,11 +430,11 @@ PARAM_DEFINE_FLOAT(FW_WR_FF, 0.2f); 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 5de4f3d56d..dc0557acc3 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -789,7 +789,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 @@ -834,8 +834,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, @@ -891,8 +891,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, @@ -1528,7 +1528,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; @@ -1599,11 +1599,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 @@ -1715,10 +1715,8 @@ 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 + // add attitude roll setpoint offset (pitch is handled earlier) _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()), @@ -1827,14 +1825,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; } } } @@ -1854,17 +1852,14 @@ 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()); - /* tell TECS to update its state, but let it know when it cannot actually control the plane */ bool in_air_alt_control = (!_landed && (_control_mode.flag_control_auto_enabled || @@ -1892,12 +1887,14 @@ FixedwingPositionControl::tecs_update_pitch_throttle(const hrt_abstime &now, flo } } - _tecs.update_pitch_throttle(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(); } From 31a6edff078aa4c4e954bf19b151d3990f20eda0 Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Thu, 11 Feb 2021 19:02:29 +0100 Subject: [PATCH 45/49] Fixed-wing: remove roll offset param (FW_RSP_OFF) Signed-off-by: Silvan Fuhrer --- .../fw_att_control/FixedwingAttitudeControl.cpp | 4 +--- .../fw_att_control/FixedwingAttitudeControl.hpp | 1 - .../fw_att_control/fw_att_control_params.c | 16 ---------------- .../FixedwingPositionControl.cpp | 3 --- .../FixedwingPositionControl.hpp | 1 - 5 files changed, 1 insertion(+), 24 deletions(-) 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 e2be303861..927a7e9c03 100644 --- a/src/modules/fw_att_control/fw_att_control_params.c +++ b/src/modules/fw_att_control/fw_att_control_params.c @@ -413,22 +413,6 @@ 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 at level flight) * diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index dc0557acc3..6a78a4cc65 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -1715,9 +1715,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 roll setpoint offset (pitch is handled earlier) - _att_sp.roll_body += radians(_param_fw_rsp_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())); diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index ade6314bf6..1c17fe1c3c 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp @@ -413,7 +413,6 @@ 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, From 1981519aad6c342ff1e869b1bcf356c131bf46dd Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 11 Feb 2021 19:57:31 -0500 Subject: [PATCH 46/49] L1 position controller: use double precision floating point for all lat/lon --- src/lib/l1/ECL_L1_Pos_Controller.cpp | 53 +++++++------ src/lib/l1/ECL_L1_Pos_Controller.hpp | 8 +- src/lib/matrix | 2 +- .../FixedwingPositionControl.cpp | 74 +++++++++++-------- .../FixedwingPositionControl.hpp | 23 ++---- .../runway_takeoff/RunwayTakeoff.cpp | 17 +---- .../runway_takeoff/RunwayTakeoff.h | 4 +- .../RoverPositionControl.cpp | 12 +-- .../RoverPositionControl.hpp | 4 +- 9 files changed, 102 insertions(+), 95 deletions(-) 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/modules/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index 6a78a4cc65..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), @@ -587,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) { @@ -662,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) { @@ -674,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; } @@ -683,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 */ @@ -1007,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); @@ -1157,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 @@ -1326,24 +1340,24 @@ FixedwingPositionControl::control_takeoff(const hrt_abstime &now, const Vector2f } 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 @@ -1392,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 @@ -1693,7 +1707,7 @@ FixedwingPositionControl::Run() _vehicle_status_sub.update(&_vehicle_status); - Vector2f curr_pos((float)_current_latitude, (float)_current_longitude); + Vector2d curr_pos(_current_latitude, _current_longitude); Vector2f ground_speed(_local_pos.vx, _local_pos.vy); //Convert Local setpoints to global setpoints diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index 1c17fe1c3c..7eaf88776b 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp @@ -89,22 +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 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 = @@ -248,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 @@ -324,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); 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 fc85cc2f90..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"); @@ -248,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 b42ced184b..796967d682 100644 --- a/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h +++ b/src/modules/fw_pos_control_l1/runway_takeoff/RunwayTakeoff.h @@ -88,7 +88,7 @@ public: bool resetIntegrators(); 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/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); From ce552a33647daf83a21c2fd7313df7b3589e84b5 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 12 Feb 2021 16:29:26 -0500 Subject: [PATCH 47/49] navigator: RTL don't get invalid params --- src/modules/navigator/rtl.cpp | 16 ++++++++-------- src/modules/navigator/rtl.h | 5 +++-- 2 files changed, 11 insertions(+), 10 deletions(-) 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)}; From 5a58f25d6a1fd253a8d9792443a0fe97880d6a01 Mon Sep 17 00:00:00 2001 From: Ryan Johnston <31726584+ryanjAA@users.noreply.github.com> Date: Sat, 13 Feb 2021 10:16:55 -0600 Subject: [PATCH 48/49] boards: MRO Control Zero F7 OEM Support --- boards/mro/ctrl-zero-f7-oem/default.cmake | 126 ++++++++ .../mro/ctrl-zero-f7-oem/firmware.prototype | 13 + .../ctrl-zero-f7-oem/init/rc.board_defaults | 19 ++ .../ctrl-zero-f7-oem/init/rc.board_mavlink | 7 + .../ctrl-zero-f7-oem/init/rc.board_sensors | 19 ++ .../nuttx-config/include/board.h | 300 ++++++++++++++++++ .../nuttx-config/include/board_dma_map.h | 98 ++++++ .../nuttx-config/nsh/defconfig | 237 ++++++++++++++ .../nuttx-config/scripts/script.ld | 181 +++++++++++ .../mro/ctrl-zero-f7-oem/src/CMakeLists.txt | 51 +++ .../mro/ctrl-zero-f7-oem/src/board_config.h | 241 ++++++++++++++ boards/mro/ctrl-zero-f7-oem/src/i2c.cpp | 40 +++ boards/mro/ctrl-zero-f7-oem/src/init.c | 250 +++++++++++++++ boards/mro/ctrl-zero-f7-oem/src/led.c | 103 ++++++ boards/mro/ctrl-zero-f7-oem/src/sdio.c | 171 ++++++++++ boards/mro/ctrl-zero-f7-oem/src/spi.cpp | 53 ++++ .../mro/ctrl-zero-f7-oem/src/timer_config.cpp | 54 ++++ boards/mro/ctrl-zero-f7-oem/src/usb.c | 105 ++++++ 18 files changed, 2068 insertions(+) create mode 100644 boards/mro/ctrl-zero-f7-oem/default.cmake create mode 100644 boards/mro/ctrl-zero-f7-oem/firmware.prototype create mode 100644 boards/mro/ctrl-zero-f7-oem/init/rc.board_defaults create mode 100644 boards/mro/ctrl-zero-f7-oem/init/rc.board_mavlink create mode 100644 boards/mro/ctrl-zero-f7-oem/init/rc.board_sensors create mode 100644 boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board.h create mode 100644 boards/mro/ctrl-zero-f7-oem/nuttx-config/include/board_dma_map.h create mode 100644 boards/mro/ctrl-zero-f7-oem/nuttx-config/nsh/defconfig create mode 100644 boards/mro/ctrl-zero-f7-oem/nuttx-config/scripts/script.ld create mode 100644 boards/mro/ctrl-zero-f7-oem/src/CMakeLists.txt create mode 100644 boards/mro/ctrl-zero-f7-oem/src/board_config.h create mode 100644 boards/mro/ctrl-zero-f7-oem/src/i2c.cpp create mode 100644 boards/mro/ctrl-zero-f7-oem/src/init.c create mode 100644 boards/mro/ctrl-zero-f7-oem/src/led.c create mode 100644 boards/mro/ctrl-zero-f7-oem/src/sdio.c create mode 100644 boards/mro/ctrl-zero-f7-oem/src/spi.cpp create mode 100644 boards/mro/ctrl-zero-f7-oem/src/timer_config.cpp create mode 100644 boards/mro/ctrl-zero-f7-oem/src/usb.c 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); +} From c04d23645c60ffbe959ead6460c3bca2d0077224 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 13 Feb 2021 19:01:58 +0100 Subject: [PATCH 49/49] IO: Fix reverse mapping The reverse mapping was off-by-one in the IO driver. --- src/drivers/px4io/px4io.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } }