Compare commits

..

22 Commits

Author SHA1 Message Date
Hamish Willee 46a415836b Doh 2026-03-23 07:53:12 +11:00
Hamish Willee 7ed78aba6f Update msg/versioned/ManualControlSetpoint.msg 2026-03-23 07:53:12 +11:00
Hamish Willee 56f24ba406 Apply suggestions from code review 2026-03-23 07:53:12 +11:00
Hamish Willee eaa554fa95 Apply suggestion from @hamishwillee 2026-03-23 07:53:12 +11:00
Hamish Willee 2f9efcedae Apply suggestion from @hamishwillee 2026-03-23 07:53:12 +11:00
Hamish Willee 01984efe7f Apply suggestion from @hamishwillee 2026-03-23 07:53:12 +11:00
Hamish Willee cbc17d942e Move Positive values are generally used for: 2026-03-23 07:53:12 +11:00
Hamish Willee 2d1a5f1762 docs:ManualControlSetpoint uORB topic 2026-03-23 07:53:12 +11:00
PX4BuildBot 53bec94205 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-21 06:01:54 +00:00
Konstantin Lelkov 552262f14f feat(dronecan): increase outputs from 8 to 12 (#25837)
* [feat] allowed to assign up to 16 ESC CAN

* Update EscStatus.msg

lowered down to 12 motors, hardware tested

* Update module.yaml

lowered down to 12 motors, hardware tested

---------

Co-authored-by: klelkov <kon.lelkov@yandex.ru>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2026-03-20 21:55:04 -08:00
Eric Katzfey 17bf9ccb5d feat(voxl2): add ina226 and ina228 driver support for voxl2
Add INA226 and INA228 power monitor drivers to the voxl2 SLPI board
config and add startup options in voxl-px4-start to select them via
the POWER_MANAGER environment variable.
2026-03-20 13:42:40 -07:00
PX4BuildBot 782e9b8b04 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-20 20:07:08 +00:00
Eric Katzfey 02a31d0293 fix(qurt): Added i2c uninitialize on probe failure to prevent zombie ports 2026-03-20 13:00:16 -07:00
PX4BuildBot 36006b6d70 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-20 17:02:19 +00:00
Silvan ffd670b54c chore(navigator): move return to point of last link from RTL to Hold
Give the operator the optiont to configure a "Hold at position where
the data link was still coming through" by setting NAV_DLL_ACT to Hold
and the new param NAV_LTR_LAST_DL to 1.

Signed-off-by: Silvan <silvan@auterion.com>
2026-03-20 17:55:42 +01:00
Silvan 7922ecbed2 feat(Commander): add preflight check for containing rally point for RTL_TYPE 5
Signed-off-by: Silvan <silvan@auterion.com>
2026-03-20 17:55:42 +01:00
PX4BuildBot e9a04ed755 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-20 13:15:38 +00:00
Pernilla 424f544c6d feat(gimbal): reduce poll time in aux mode 2026-03-20 14:08:55 +01:00
PX4BuildBot 962db50ce7 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-20 08:53:42 +00:00
Jacob Dahl 882bee610d feat(logger): add sensor_baro to high rate sensors logging profile (#26834) 2026-03-20 00:46:43 -08:00
PX4BuildBot abdde3e206 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-03-20 08:26:58 +00:00
ttechnick c333688700 feat(commander): prevent termination on arm after gcs loss 2026-03-20 09:19:59 +01:00
33 changed files with 949 additions and 291 deletions
+1 -1
View File
@@ -249,7 +249,7 @@ fi
load_mon start
if param greater SIM_BAT_DRAIN 0
if param compare SIM_BAT_ENABLE 1
then
battery_simulator start
fi
+1 -1
View File
@@ -47,7 +47,7 @@ set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_INSTALL_PREFIX "/usr")
set(CPACK_SET_DESTDIR true)
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libfc-sensor (>=1.0.10), voxl-px4-params (>=0.3.10), voxl3-system-image(>=0.0.2) | voxl2-system-image(>=1.5.4) | rb5-system-image(>=1.6.2), modalai-slpi(>=1.1.16) | modalai-adsp(>=1.0.2)")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libfc-sensor (>=1.0.10), voxl-px4-params (>=0.3.10), voxl3-system-image(>=0.0.2) | voxl2-system-image(>=1.5.4) | rb5-system-image(>=1.6.2), modalai-slpi(>=1.2.2) | modalai-adsp(>=1.0.5)")
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "px4-rb5-flight")
set(CPACK_DEBIAN_PACKAGE_REPLACES "px4-rb5-flight")
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "PX4 Autopilot for ModalAI VOXL2")
+2
View File
@@ -37,6 +37,8 @@ CONFIG_DRIVERS_MAGNETOMETER_ISENTEK_IST8310=y
CONFIG_DRIVERS_MAGNETOMETER_QMC5883L=y
CONFIG_DRIVERS_MAGNETOMETER_ST_IIS2MDC=y
CONFIG_DRIVERS_POWER_MONITOR_VOXLPM=y
CONFIG_DRIVERS_POWER_MONITOR_INA226=y
CONFIG_DRIVERS_POWER_MONITOR_INA228=y
CONFIG_DRIVERS_QSHELL_QURT=y
CONFIG_DRIVERS_RC_CRSF_RC=y
CONFIG_DRIVERS_VOXL2_IO=y
@@ -215,6 +215,12 @@ fi
if [ "$POWER_MANAGER" == "VOXLPM" ]; then
# APM power monitor
qshell voxlpm start -X -b 2
elif [ "$POWER_MANAGER" == "INA226" ]; then
/bin/echo "Starting INA226 power monitor"
qshell ina226 start -X -b 2
elif [ "$POWER_MANAGER" == "INA228" ]; then
/bin/echo "Starting INA228 power monitor"
qshell ina228 start -X -b 2
fi
if [ "$AIRSPEED_SENSOR" == "MS4525DO" ]; then
+466 -1
View File
@@ -9994,6 +9994,48 @@ When set to -1 (default), the value depends on the function (see UAVCAN_EC_FUNC1
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -1 | 8191 | | -1 | |
### UAVCAN_EC_FAIL10 (`INT32`) {#UAVCAN_EC_FAIL10}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 10 Failsafe Value.
This is the output value that is set when in failsafe mode.
When set to -1 (default), the value depends on the function (see UAVCAN_EC_FUNC10).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -1 | 8191 | | -1 | |
### UAVCAN_EC_FAIL11 (`INT32`) {#UAVCAN_EC_FAIL11}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 11 Failsafe Value.
This is the output value that is set when in failsafe mode.
When set to -1 (default), the value depends on the function (see UAVCAN_EC_FUNC11).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -1 | 8191 | | -1 | |
### UAVCAN_EC_FAIL12 (`INT32`) {#UAVCAN_EC_FAIL12}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 12 Failsafe Value.
This is the output value that is set when in failsafe mode.
When set to -1 (default), the value depends on the function (see UAVCAN_EC_FUNC12).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -1 | 8191 | | -1 | |
### UAVCAN_EC_FAIL2 (`INT32`) {#UAVCAN_EC_FAIL2}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10092,6 +10134,20 @@ When set to -1 (default), the value depends on the function (see UAVCAN_EC_FUNC8
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -1 | 8191 | | -1 | |
### UAVCAN_EC_FAIL9 (`INT32`) {#UAVCAN_EC_FAIL9}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 9 Failsafe Value.
This is the output value that is set when in failsafe mode.
When set to -1 (default), the value depends on the function (see UAVCAN_EC_FUNC9).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -1 | 8191 | | -1 | |
### UAVCAN_EC_FUNC1 (`INT32`) {#UAVCAN_EC_FUNC1}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10166,6 +10222,228 @@ The default failsafe value is set according to the selected function:
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### UAVCAN_EC_FUNC10 (`INT32`) {#UAVCAN_EC_FUNC10}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 10 Output Function.
Select what should be output on UAVCAN ESC 10.
The default failsafe value is set according to the selected function:
- 'Min' for ConstantMin
- 'Max' for ConstantMax
- 'Max' for Parachute
- ('Max'+'Min')/2 for Servos
- 'Disarmed' for the rest
**Values:**
- `0`: Disabled
- `1`: Constant Min
- `2`: Constant Max
- `101`: Motor 1
- `102`: Motor 2
- `103`: Motor 3
- `104`: Motor 4
- `105`: Motor 5
- `106`: Motor 6
- `107`: Motor 7
- `108`: Motor 8
- `109`: Motor 9
- `110`: Motor 10
- `111`: Motor 11
- `112`: Motor 12
- `201`: Servo 1
- `202`: Servo 2
- `203`: Servo 3
- `204`: Servo 4
- `205`: Servo 5
- `206`: Servo 6
- `207`: Servo 7
- `208`: Servo 8
- `301`: Peripheral via Actuator Set 1
- `302`: Peripheral via Actuator Set 2
- `303`: Peripheral via Actuator Set 3
- `304`: Peripheral via Actuator Set 4
- `305`: Peripheral via Actuator Set 5
- `306`: Peripheral via Actuator Set 6
- `400`: Landing Gear
- `401`: Parachute
- `402`: RC Roll
- `403`: RC Pitch
- `404`: RC Throttle
- `405`: RC Yaw
- `406`: RC Flaps
- `407`: RC AUX 1
- `408`: RC AUX 2
- `409`: RC AUX 3
- `410`: RC AUX 4
- `411`: RC AUX 5
- `412`: RC AUX 6
- `420`: Gimbal Roll
- `421`: Gimbal Pitch
- `422`: Gimbal Yaw
- `430`: Gripper
- `440`: Landing Gear Wheel
- `450`: IC Engine Ignition
- `451`: IC Engine Throttle
- `452`: IC Engine Choke
- `453`: IC Engine Starter
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### UAVCAN_EC_FUNC11 (`INT32`) {#UAVCAN_EC_FUNC11}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 11 Output Function.
Select what should be output on UAVCAN ESC 11.
The default failsafe value is set according to the selected function:
- 'Min' for ConstantMin
- 'Max' for ConstantMax
- 'Max' for Parachute
- ('Max'+'Min')/2 for Servos
- 'Disarmed' for the rest
**Values:**
- `0`: Disabled
- `1`: Constant Min
- `2`: Constant Max
- `101`: Motor 1
- `102`: Motor 2
- `103`: Motor 3
- `104`: Motor 4
- `105`: Motor 5
- `106`: Motor 6
- `107`: Motor 7
- `108`: Motor 8
- `109`: Motor 9
- `110`: Motor 10
- `111`: Motor 11
- `112`: Motor 12
- `201`: Servo 1
- `202`: Servo 2
- `203`: Servo 3
- `204`: Servo 4
- `205`: Servo 5
- `206`: Servo 6
- `207`: Servo 7
- `208`: Servo 8
- `301`: Peripheral via Actuator Set 1
- `302`: Peripheral via Actuator Set 2
- `303`: Peripheral via Actuator Set 3
- `304`: Peripheral via Actuator Set 4
- `305`: Peripheral via Actuator Set 5
- `306`: Peripheral via Actuator Set 6
- `400`: Landing Gear
- `401`: Parachute
- `402`: RC Roll
- `403`: RC Pitch
- `404`: RC Throttle
- `405`: RC Yaw
- `406`: RC Flaps
- `407`: RC AUX 1
- `408`: RC AUX 2
- `409`: RC AUX 3
- `410`: RC AUX 4
- `411`: RC AUX 5
- `412`: RC AUX 6
- `420`: Gimbal Roll
- `421`: Gimbal Pitch
- `422`: Gimbal Yaw
- `430`: Gripper
- `440`: Landing Gear Wheel
- `450`: IC Engine Ignition
- `451`: IC Engine Throttle
- `452`: IC Engine Choke
- `453`: IC Engine Starter
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### UAVCAN_EC_FUNC12 (`INT32`) {#UAVCAN_EC_FUNC12}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 12 Output Function.
Select what should be output on UAVCAN ESC 12.
The default failsafe value is set according to the selected function:
- 'Min' for ConstantMin
- 'Max' for ConstantMax
- 'Max' for Parachute
- ('Max'+'Min')/2 for Servos
- 'Disarmed' for the rest
**Values:**
- `0`: Disabled
- `1`: Constant Min
- `2`: Constant Max
- `101`: Motor 1
- `102`: Motor 2
- `103`: Motor 3
- `104`: Motor 4
- `105`: Motor 5
- `106`: Motor 6
- `107`: Motor 7
- `108`: Motor 8
- `109`: Motor 9
- `110`: Motor 10
- `111`: Motor 11
- `112`: Motor 12
- `201`: Servo 1
- `202`: Servo 2
- `203`: Servo 3
- `204`: Servo 4
- `205`: Servo 5
- `206`: Servo 6
- `207`: Servo 7
- `208`: Servo 8
- `301`: Peripheral via Actuator Set 1
- `302`: Peripheral via Actuator Set 2
- `303`: Peripheral via Actuator Set 3
- `304`: Peripheral via Actuator Set 4
- `305`: Peripheral via Actuator Set 5
- `306`: Peripheral via Actuator Set 6
- `400`: Landing Gear
- `401`: Parachute
- `402`: RC Roll
- `403`: RC Pitch
- `404`: RC Throttle
- `405`: RC Yaw
- `406`: RC Flaps
- `407`: RC AUX 1
- `408`: RC AUX 2
- `409`: RC AUX 3
- `410`: RC AUX 4
- `411`: RC AUX 5
- `412`: RC AUX 6
- `420`: Gimbal Roll
- `421`: Gimbal Pitch
- `422`: Gimbal Yaw
- `430`: Gripper
- `440`: Landing Gear Wheel
- `450`: IC Engine Ignition
- `451`: IC Engine Throttle
- `452`: IC Engine Choke
- `453`: IC Engine Starter
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### UAVCAN_EC_FUNC2 (`INT32`) {#UAVCAN_EC_FUNC2}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10684,6 +10962,80 @@ The default failsafe value is set according to the selected function:
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### UAVCAN_EC_FUNC9 (`INT32`) {#UAVCAN_EC_FUNC9}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 9 Output Function.
Select what should be output on UAVCAN ESC 9.
The default failsafe value is set according to the selected function:
- 'Min' for ConstantMin
- 'Max' for ConstantMax
- 'Max' for Parachute
- ('Max'+'Min')/2 for Servos
- 'Disarmed' for the rest
**Values:**
- `0`: Disabled
- `1`: Constant Min
- `2`: Constant Max
- `101`: Motor 1
- `102`: Motor 2
- `103`: Motor 3
- `104`: Motor 4
- `105`: Motor 5
- `106`: Motor 6
- `107`: Motor 7
- `108`: Motor 8
- `109`: Motor 9
- `110`: Motor 10
- `111`: Motor 11
- `112`: Motor 12
- `201`: Servo 1
- `202`: Servo 2
- `203`: Servo 3
- `204`: Servo 4
- `205`: Servo 5
- `206`: Servo 6
- `207`: Servo 7
- `208`: Servo 8
- `301`: Peripheral via Actuator Set 1
- `302`: Peripheral via Actuator Set 2
- `303`: Peripheral via Actuator Set 3
- `304`: Peripheral via Actuator Set 4
- `305`: Peripheral via Actuator Set 5
- `306`: Peripheral via Actuator Set 6
- `400`: Landing Gear
- `401`: Parachute
- `402`: RC Roll
- `403`: RC Pitch
- `404`: RC Throttle
- `405`: RC Yaw
- `406`: RC Flaps
- `407`: RC AUX 1
- `408`: RC AUX 2
- `409`: RC AUX 3
- `410`: RC AUX 4
- `411`: RC AUX 5
- `412`: RC AUX 6
- `420`: Gimbal Roll
- `421`: Gimbal Pitch
- `422`: Gimbal Yaw
- `430`: Gripper
- `440`: Landing Gear Wheel
- `450`: IC Engine Ignition
- `451`: IC Engine Throttle
- `452`: IC Engine Choke
- `453`: IC Engine Starter
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | | | | 0 | |
### UAVCAN_EC_MAX1 (`INT32`) {#UAVCAN_EC_MAX1}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10696,6 +11048,42 @@ Maxmimum output value (when not disarmed).
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 8191 | |
### UAVCAN_EC_MAX10 (`INT32`) {#UAVCAN_EC_MAX10}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 10 Maximum Value.
Maxmimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 8191 | |
### UAVCAN_EC_MAX11 (`INT32`) {#UAVCAN_EC_MAX11}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 11 Maximum Value.
Maxmimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 8191 | |
### UAVCAN_EC_MAX12 (`INT32`) {#UAVCAN_EC_MAX12}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 12 Maximum Value.
Maxmimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 8191 | |
### UAVCAN_EC_MAX2 (`INT32`) {#UAVCAN_EC_MAX2}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10780,6 +11168,18 @@ Maxmimum output value (when not disarmed).
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 8191 | |
### UAVCAN_EC_MAX9 (`INT32`) {#UAVCAN_EC_MAX9}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 9 Maximum Value.
Maxmimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 8191 | |
### UAVCAN_EC_MIN1 (`INT32`) {#UAVCAN_EC_MIN1}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10792,6 +11192,42 @@ Minimum output value (when not disarmed).
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 1 | |
### UAVCAN_EC_MIN10 (`INT32`) {#UAVCAN_EC_MIN10}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 10 Minimum Value.
Minimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 1 | |
### UAVCAN_EC_MIN11 (`INT32`) {#UAVCAN_EC_MIN11}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 11 Minimum Value.
Minimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 1 | |
### UAVCAN_EC_MIN12 (`INT32`) {#UAVCAN_EC_MIN12}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 12 Minimum Value.
Minimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 1 | |
### UAVCAN_EC_MIN2 (`INT32`) {#UAVCAN_EC_MIN2}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10876,6 +11312,18 @@ Minimum output value (when not disarmed).
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 1 | |
### UAVCAN_EC_MIN9 (`INT32`) {#UAVCAN_EC_MIN9}
<Badge type="warning" text="This parameter is only present on some boards." />
UAVCAN ESC 9 Minimum Value.
Minimum output value (when not disarmed).
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 8191 | | 1 | |
### UAVCAN_EC_REV (`INT32`) {#UAVCAN_EC_REV}
<Badge type="warning" text="This parameter is only present on some boards." />
@@ -10895,10 +11343,14 @@ Note: this is only useful for servos.
- `5`: UAVCAN ESC 6
- `6`: UAVCAN ESC 7
- `7`: UAVCAN ESC 8
- `8`: UAVCAN ESC 9
- `9`: UAVCAN ESC 10
- `10`: UAVCAN ESC 11
- `11`: UAVCAN ESC 12
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | 0 | 255 | | 0 | |
| &nbsp; | 0 | 4095 | | 0 | |
### UAVCAN_SV_DIS1 (`INT32`) {#UAVCAN_SV_DIS1}
@@ -28310,6 +28762,19 @@ clockwise, negative for counter-clockwise.
| ------ | -------- | -------- | --------- | ------- | ---- |
| &nbsp; | -10000 | 10000 | 0.5 | 80.0 | m |
### NAV_LTR_LAST_DL (`INT32`) {#NAV_LTR_LAST_DL}
Loiter at last GCS heartbeat position on data link loss.
When the data link is lost and this setting is enabled,
the vehicle will loiter at the position where the last GCS
heartbeat was received rather than at its current position.
Only applies to Hold mode during failsafe actions.
| Reboot | minValue | maxValue | increment | default | unit |
| ------ | -------- | -------- | --------- | ------------ | ---- |
| &nbsp; | | | | Disabled (0) | |
### NAV_MC_ALT_RAD (`FLOAT`) {#NAV_MC_ALT_RAD}
MC Altitude Acceptance Radius.
+197 -197
View File
@@ -95,205 +95,205 @@ They are not build into the module, and hence are neither published or subscribe
::: details See messages
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [Rpm](../msg_docs/Rpm.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [EventV0](../msg_docs/EventV0.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [Vtx](../msg_docs/Vtx.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
- [Gripper](../msg_docs/Gripper.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [InputRc](../msg_docs/InputRc.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [Event](../msg_docs/Event.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [LedControl](../msg_docs/LedControl.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [EscReport](../msg_docs/EscReport.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [Mission](../msg_docs/Mission.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [GpioOut](../msg_docs/GpioOut.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [Ping](../msg_docs/Ping.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
- [GpsDump](../msg_docs/GpsDump.md)
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
- [EventV0](../msg_docs/EventV0.md)
- [ActuatorTest](../msg_docs/ActuatorTest.md)
- [Airspeed](../msg_docs/Airspeed.md)
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
- [EstimatorBias](../msg_docs/EstimatorBias.md)
- [Ping](../msg_docs/Ping.md)
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
- [HeaterStatus](../msg_docs/HeaterStatus.md)
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
- [QshellReq](../msg_docs/QshellReq.md)
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
- [SensorTemp](../msg_docs/SensorTemp.md)
- [GpioIn](../msg_docs/GpioIn.md)
- [Cpuload](../msg_docs/Cpuload.md)
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
- [SensorsStatus](../msg_docs/SensorsStatus.md)
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
- [RcChannels](../msg_docs/RcChannels.md)
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
- [DebugValue](../msg_docs/DebugValue.md)
- [DatamanResponse](../msg_docs/DatamanResponse.md)
- [SensorSelection](../msg_docs/SensorSelection.md)
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
- [LedControl](../msg_docs/LedControl.md)
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
- [PowerMonitor](../msg_docs/PowerMonitor.md)
- [SensorMag](../msg_docs/SensorMag.md)
- [SensorUwb](../msg_docs/SensorUwb.md)
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
- [TecsStatus](../msg_docs/TecsStatus.md)
- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
- [QshellRetval](../msg_docs/QshellRetval.md)
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
- [CameraStatus](../msg_docs/CameraStatus.md)
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
- [BatteryInfo](../msg_docs/BatteryInfo.md)
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
- [DebugArray](../msg_docs/DebugArray.md)
- [GeofenceResult](../msg_docs/GeofenceResult.md)
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
- [EscStatus](../msg_docs/EscStatus.md)
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
- [SensorBaro](../msg_docs/SensorBaro.md)
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
- [LoggerStatus](../msg_docs/LoggerStatus.md)
- [SensorAirflow](../msg_docs/SensorAirflow.md)
- [SensorGyro](../msg_docs/SensorGyro.md)
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
- [EstimatorStates](../msg_docs/EstimatorStates.md)
- [DatamanRequest](../msg_docs/DatamanRequest.md)
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
- [SensorCorrection](../msg_docs/SensorCorrection.md)
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
- [OrbTest](../msg_docs/OrbTest.md)
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
- [GpsInjectData](../msg_docs/GpsInjectData.md)
- [GainCompression](../msg_docs/GainCompression.md)
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
- [Mission](../msg_docs/Mission.md)
- [FollowTarget](../msg_docs/FollowTarget.md)
- [PpsCapture](../msg_docs/PpsCapture.md)
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
- [NeuralControl](../msg_docs/NeuralControl.md)
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
- [PowerButtonState](../msg_docs/PowerButtonState.md)
- [VelocityLimits](../msg_docs/VelocityLimits.md)
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
- [UlogStream](../msg_docs/UlogStream.md)
- [MavlinkLog](../msg_docs/MavlinkLog.md)
- [Vtx](../msg_docs/Vtx.md)
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
- [SystemPower](../msg_docs/SystemPower.md)
- [VehicleAirData](../msg_docs/VehicleAirData.md)
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
- [VehicleRoi](../msg_docs/VehicleRoi.md)
- [HomePositionV0](../msg_docs/HomePositionV0.md)
- [DeviceInformation](../msg_docs/DeviceInformation.md)
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
- [CameraTrigger](../msg_docs/CameraTrigger.md)
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
- [LogMessage](../msg_docs/LogMessage.md)
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
- [OrbitStatus](../msg_docs/OrbitStatus.md)
- [AdcReport](../msg_docs/AdcReport.md)
- [Gripper](../msg_docs/Gripper.md)
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
- [PwmInput](../msg_docs/PwmInput.md)
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
- [VehicleImu](../msg_docs/VehicleImu.md)
- [MissionResult](../msg_docs/MissionResult.md)
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
- [CellularStatus](../msg_docs/CellularStatus.md)
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
- [GimbalControls](../msg_docs/GimbalControls.md)
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
- [AirspeedWind](../msg_docs/AirspeedWind.md)
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
- [ActionRequest](../msg_docs/ActionRequest.md)
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
- [ButtonEvent](../msg_docs/ButtonEvent.md)
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
- [EscEepromRead](../msg_docs/EscEepromRead.md)
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
- [RadioStatus](../msg_docs/RadioStatus.md)
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
- [CameraCapture](../msg_docs/CameraCapture.md)
- [SensorAccel](../msg_docs/SensorAccel.md)
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
- [WheelEncoders](../msg_docs/WheelEncoders.md)
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
- [GpioRequest](../msg_docs/GpioRequest.md)
- [RaptorInput](../msg_docs/RaptorInput.md)
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
- [RcParameterMap](../msg_docs/RcParameterMap.md)
- [GpioConfig](../msg_docs/GpioConfig.md)
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
- [HealthReport](../msg_docs/HealthReport.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
- [EscReport](../msg_docs/EscReport.md)
- [InputRc](../msg_docs/InputRc.md)
- [TuneControl](../msg_docs/TuneControl.md)
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
- [RaptorStatus](../msg_docs/RaptorStatus.md)
- [Event](../msg_docs/Event.md)
- [DebugVect](../msg_docs/DebugVect.md)
- [Rpm](../msg_docs/Rpm.md)
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
- [MagWorkerData](../msg_docs/MagWorkerData.md)
:::
+2 -2
View File
@@ -15,7 +15,7 @@ pageClass: is-wide-page
| is_evaluation_pending | `bool` | | | flag if the RTL point needs reevaluation (e.g. new safe points available, but need loading). |
| has_vtol_approach | `bool` | | | flag if approaches are defined for current RTL_TYPE parameter setting |
| rtl_type | `uint8` | | | Type of RTL chosen |
| safe_point_index | `uint8` | | | index of the chosen safe point, if in RTL_STATUS_TYPE_DIRECT_SAFE_POINT mode |
| safe_point_index | `uint8` | | | index of the chosen safe point, UINT8_MAX if no rally point was chosen |
## Constants
@@ -42,7 +42,7 @@ bool is_evaluation_pending # flag if the RTL point needs reevaluation (e.
bool has_vtol_approach # flag if approaches are defined for current RTL_TYPE parameter setting
uint8 rtl_type # Type of RTL chosen
uint8 safe_point_index # index of the chosen safe point, if in RTL_STATUS_TYPE_DIRECT_SAFE_POINT mode
uint8 safe_point_index # index of the chosen safe point, UINT8_MAX if no rally point was chosen
uint8 RTL_STATUS_TYPE_NONE=0 # pending if evaluation can't pe performed currently e.g. when it is still loading the safe points
uint8 RTL_STATUS_TYPE_DIRECT_SAFE_POINT=1 # chosen to directly go to a safe point or home position
+1 -1
View File
@@ -47,7 +47,7 @@ To control how fast the battery depletes to the minimal value use the parameter
By changing [SIM_BAT_MIN_PCT](../advanced_config/parameter_reference.md#SIM_BAT_MIN_PCT) in flight, you can also test regaining capacity to simulate inaccurate battery state estimation or in-air charging technology.
:::
The simulated battery can be completely disabled by setting [SIM_BAT_DRAIN](../advanced_config/parameter_reference.md#SIM_BAT_DRAIN) to 0. This is useful, for example, if you provide an external battery simulation via MAVLink.
It is also possible to disable the simulated battery using [SIM_BAT_ENABLE](../advanced_config/parameter_reference.md#SIM_BAT_ENABLE) in order to, for example, provide an external battery simulation via MAVLink.
## Sensor/System Failure
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,7 +6,7 @@ bool is_evaluation_pending # flag if the RTL point needs reevaluation (e.
bool has_vtol_approach # flag if approaches are defined for current RTL_TYPE parameter setting
uint8 rtl_type # Type of RTL chosen
uint8 safe_point_index # index of the chosen safe point, if in RTL_STATUS_TYPE_DIRECT_SAFE_POINT mode
uint8 safe_point_index # index of the chosen safe point, UINT8_MAX if no rally point was chosen
uint8 RTL_STATUS_TYPE_NONE=0 # pending if evaluation can't pe performed currently e.g. when it is still loading the safe points
uint8 RTL_STATUS_TYPE_DIRECT_SAFE_POINT=1 # chosen to directly go to a safe point or home position
+34 -32
View File
@@ -1,45 +1,47 @@
# Manual control setpoint message
#
# This message provides a representation of a manual control input, such as an RC controller or MAVLink controller (Joystick).
# It defines the manual_control_input topic to represent configured inputs, and the manual_control_setpoint topic ot represent the selected input.
# The message includes fields for the roll, pitch, yaw, throttle and flaps, along with auxiliary channels and button states.
#
# Note: On a common RC mode 1/2/3/4 remote/joystick the stick deflection: -1 is down/left, 1 is up/right.
# Note: QGC sends throttle/z in range [0,1000] - [0,1]. The MAVLink input conversion [0,1] to [-1,1] is at the moment kept backwards compatible.
uint32 MESSAGE_VERSION = 0
uint64 timestamp # time since system start (microseconds)
uint64 timestamp_sample # the timestamp of the raw data (microseconds)
uint64 timestamp # [us] Time since system start
uint64 timestamp_sample # [us] Timestamp of the raw data
bool valid
bool valid # True if the current data is valid.
uint8 SOURCE_UNKNOWN = 0
uint8 SOURCE_RC = 1 # radio control (input_rc)
uint8 SOURCE_MAVLINK_0 = 2 # mavlink instance 0
uint8 SOURCE_MAVLINK_1 = 3 # mavlink instance 1
uint8 SOURCE_MAVLINK_2 = 4 # mavlink instance 2
uint8 SOURCE_MAVLINK_3 = 5 # mavlink instance 3
uint8 SOURCE_MAVLINK_4 = 6 # mavlink instance 4
uint8 SOURCE_MAVLINK_5 = 7 # mavlink instance 5
uint8 data_source # [@enum SOURCE] Source of the manual control setpoint
uint8 SOURCE_UNKNOWN = 0 # Unknown source
uint8 SOURCE_RC = 1 # Radio control (input_rc)
uint8 SOURCE_MAVLINK_0 = 2 # MAVLink instance 0
uint8 SOURCE_MAVLINK_1 = 3 # MAVLink instance 1
uint8 SOURCE_MAVLINK_2 = 4 # MAVLink instance 2
uint8 SOURCE_MAVLINK_3 = 5 # MAVLink instance 3
uint8 SOURCE_MAVLINK_4 = 6 # MAVLink instance 4
uint8 SOURCE_MAVLINK_5 = 7 # MAVLink instance 5
uint8 data_source
# Any of the channels may not be available and be set to NaN
# to indicate that it does not contain valid data.
float32 roll # [@range -1,1] [@invalid NaN] Positive values are generally used for: move right, positive roll rotation, right side down
float32 pitch # [@range -1,1] [@invalid NaN] Positive values are generally used for: move forward, negative pitch rotation, nose down
float32 yaw # [@range -1,1] [@invalid NaN] Positive values are generally used for: positive yaw rotation, clockwise when seen top down
float32 throttle # [@range -1,1] [@invalid NaN] Positive values are generally used for: move up, positive thrust, -1 is minimum available 0% or -100% +1 is 100% thrust
# Stick positions [-1,1]
# on a common RC mode 1/2/3/4 remote/joystick the stick deflection: -1 is down/left, 1 is up/right
# Note: QGC sends throttle/z in range [0,1000] - [0,1]. The MAVLink input conversion [0,1] to [-1,1] is at the moment kept backwards compatible.
# Positive values are generally used for:
float32 roll # move right, positive roll rotation, right side down
float32 pitch # move forward, negative pitch rotation, nose down
float32 yaw # positive yaw rotation, clockwise when seen top down
float32 throttle # move up, positive thrust, -1 is minimum available 0% or -100% +1 is 100% thrust
float32 flaps # [@range -1, 1] [@invalid NaN] Position of flaps switch/knob/lever
float32 flaps # position of flaps switch/knob/lever [-1, 1]
float32 aux1 # [@range -1,1] [@invalid NaN] Auxiliary channel 1
float32 aux2 # [@range -1,1] [@invalid NaN] Auxiliary channel 2
float32 aux3 # [@range -1,1] [@invalid NaN] Auxiliary channel 3
float32 aux4 # [@range -1,1] [@invalid NaN] Auxiliary channel 4
float32 aux5 # [@range -1,1] [@invalid NaN] Auxiliary channel 5
float32 aux6 # [@range -1,1] [@invalid NaN] Auxiliary channel 6
float32 aux1
float32 aux2
float32 aux3
float32 aux4
float32 aux5
float32 aux6
bool sticks_moving # True if any of the values are changing.
bool sticks_moving
uint16 buttons # From uint16 buttons field of Mavlink manual_control message
uint16 buttons # From uint16 buttons field of MAVLink MANUAL_CONTROL message
# TOPICS manual_control_setpoint manual_control_input
# DEPRECATED: float32 x
+1 -1
View File
@@ -88,7 +88,7 @@ actuator_output:
min: { min: 0, max: 8191, default: 1 }
max: { min: 0, max: 8191, default: 8191 }
failsafe: { min: 0, max: 8191 }
num_channels: 8
num_channels: 12
- param_prefix: UAVCAN_SV
group_label: 'Servos'
channel_label: 'Servo'
+7 -1
View File
@@ -48,6 +48,10 @@
#include <px4_platform_common/px4_config.h>
#include <px4_platform_common/i2c_spi_buses.h>
extern "C" {
__EXPORT void fc_uninitialize_i2c_bus(int fd);
}
namespace device
{
@@ -122,7 +126,7 @@ I2C::init()
_i2c_fd = _config_i2c_bus(get_device_bus(), get_device_address(), _frequency);
pthread_mutex_unlock(_mutex);
if (_i2c_fd == PX4_ERROR) {
if (_i2c_fd == -1) {
PX4_ERR("i2c init failed");
goto out;
}
@@ -132,6 +136,8 @@ I2C::init()
if (ret != OK) {
PX4_ERR("i2c probe failed");
fc_uninitialize_i2c_bus(_i2c_fd);
_i2c_fd = -1;
goto out;
}
@@ -56,6 +56,7 @@ px4_add_library(health_and_arming_checks
checks/manualControlCheck.cpp
checks/missionCheck.cpp
checks/modeCheck.cpp
checks/rallyPointCheck.cpp
checks/navigatorCheck.cpp
checks/offboardCheck.cpp
checks/openDroneIDCheck.cpp
@@ -68,6 +68,7 @@
#include "checks/geofenceCheck.hpp"
#include "checks/flightTimeCheck.hpp"
#include "checks/missionCheck.hpp"
#include "checks/rallyPointCheck.hpp"
#include "checks/rcAndDataLinkCheck.hpp"
#include "checks/vtolCheck.hpp"
#include "checks/offboardCheck.hpp"
@@ -158,6 +159,7 @@ private:
GeofenceChecks _geofence_checks;
FlightTimeChecks _flight_time_checks;
MissionChecks _mission_checks;
RallyPointChecks _rally_point_checks;
RcAndDataLinkChecks _rc_and_data_link_checks;
VtolChecks _vtol_checks;
OffboardChecks _offboard_checks;
@@ -166,7 +168,7 @@ private:
ExternalChecks _external_checks;
#endif
HealthAndArmingCheckBase *_checks[40] = {
HealthAndArmingCheckBase *_checks[41] = {
#ifndef CONSTRAINED_FLASH
&_external_checks,
#endif
@@ -188,6 +190,7 @@ private:
&_manual_control_checks,
&_home_position_checks,
&_mission_checks,
&_rally_point_checks,
&_offboard_checks, // must be after _estimator_checks
&_mode_checks, // must be after _estimator_checks, _home_position_checks, _mission_checks, _offboard_checks, _external_checks
&_open_drone_id_checks,
@@ -0,0 +1,68 @@
/****************************************************************************
*
* Copyright (c) 2026 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 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 "rallyPointCheck.hpp"
RallyPointChecks::RallyPointChecks()
: _param_rtl_type_handle(param_find("RTL_TYPE"))
{
}
void RallyPointChecks::checkAndReport(const Context &context, Report &reporter)
{
int32_t rtl_type = 0;
if (param_get(_param_rtl_type_handle, &rtl_type) != 0 || rtl_type != 5) {
// Only enforce rally point requirement when RTL_TYPE == 5 (safe points only)
return;
}
rtl_status_s rtl_status;
if (!_rtl_status_sub.copy(&rtl_status) || rtl_status.safe_point_index == UINT8_MAX) {
/* EVENT
* @description
* Upload at least one rally point before arming, or change <param>RTL_TYPE</param>.
*
* <profile name="dev">
* This check is active when RTL_TYPE is set to 5 (safe points only).
* </profile>
*/
reporter.armingCheckFailure(NavModes::All, health_component_t::system,
events::ID("check_rally_point_missing"),
events::Log::Error, "No rally point available");
if (reporter.mavlink_log_pub()) {
mavlink_log_critical(reporter.mavlink_log_pub(), "Preflight Fail: No rally point available\t");
}
}
}
@@ -0,0 +1,53 @@
/****************************************************************************
*
* Copyright (c) 2026 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 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
#include "../Common.hpp"
#include <uORB/Subscription.hpp>
#include <uORB/topics/rtl_status.h>
#include <parameters/param.h>
class RallyPointChecks : public HealthAndArmingCheckBase
{
public:
RallyPointChecks();
~RallyPointChecks() = default;
void checkAndReport(const Context &context, Report &reporter) override;
private:
uORB::Subscription _rtl_status_sub{ORB_ID(rtl_status)};
const param_t _param_rtl_type_handle;
};
+1 -1
View File
@@ -510,7 +510,7 @@ void Failsafe::checkStateAndMode(const hrt_abstime &time_us, const State &state,
|| state.user_intended_mode == vehicle_status_s::NAVIGATION_STATE_AUTO_PRECLAND;
const bool dll_loss_ignored = isFailsafeIgnored(state.user_intended_mode, _param_com_dll_except.get())
|| ignore_any_link_loss_vtol_takeoff_fixedwing || dll_loss_ignored_land;
|| ignore_any_link_loss_vtol_takeoff_fixedwing || dll_loss_ignored_land || !state.armed;
if (_param_nav_dll_act.get() != int32_t(gcs_connection_loss_failsafe_mode::Disabled) && !dll_loss_ignored) {
CHECK_FAILSAFE(status_flags, gcs_connection_lost, fromNavDllOrRclActParam(_param_nav_dll_act.get()).causedBy(Cause::GCSConnectionLoss));
+3 -1
View File
@@ -197,6 +197,8 @@ static int gimbal_thread_main(int argc, char *argv[])
thread_should_exit.store(true);
}
const unsigned int poll_timeout_ms = params.mnt_mode_out == MNT_MODE_OUT_AUX ? 10 : 20;
while (!thread_should_exit.load()) {
const bool updated = parameter_update_sub.updated();
@@ -219,7 +221,7 @@ static int gimbal_thread_main(int argc, char *argv[])
const bool already_active = (thread_data.last_input_active == i);
// poll only on active input to reduce latency, or on all if none is active
const unsigned int poll_timeout =
(already_active || thread_data.last_input_active == -1) ? 20 : 0;
(already_active || thread_data.last_input_active == -1) ? poll_timeout_ms : 0;
update_result = thread_data.input_objs[i]->update(poll_timeout, thread_data.control_data, already_active);
+1
View File
@@ -372,6 +372,7 @@ void LoggedTopics::add_system_identification_topics()
void LoggedTopics::add_high_rate_sensors_topics()
{
add_topic_multi("distance_sensor", 0, 4);
add_topic_multi("sensor_baro", 0, 4);
add_topic_multi("sensor_optical_flow", 0, 2);
add_topic_multi("sensor_gps", 0, 4);
add_topic_multi("sensor_gnss_relative", 0, 1);
+21 -4
View File
@@ -73,6 +73,22 @@ Loiter::on_active()
&& hrt_elapsed_time(&_navigator->get_reposition_triplet()->current.timestamp) < 500_ms) {
reposition();
}
if (_param_nav_ltr_last_dl.get() && _navigator->get_vstatus()->failsafe && _navigator->get_vstatus()->gcs_connection_lost) {
if (!_loiter_at_last_link_position_executed) {
set_loiter_position(); // if we already were in hold (e.g. GoTo), we need to reset the position setpoint
_loiter_at_last_link_position_executed = true;
}
} else {
_loiter_at_last_link_position_executed = false;
}
}
void
Loiter::on_inactive()
{
_loiter_at_last_link_position_executed = false;
}
void
@@ -87,7 +103,6 @@ Loiter::set_loiter_position()
_navigator->get_position_setpoint_triplet()->current.type = position_setpoint_s::SETPOINT_TYPE_IDLE;
_navigator->set_position_setpoint_triplet_updated();
return;
}
position_setpoint_triplet_s *pos_sp_triplet = _navigator->get_position_setpoint_triplet();
@@ -104,10 +119,13 @@ Loiter::set_loiter_position()
const float d_current = get_distance_to_next_waypoint(pos_sp_triplet->current.lat, pos_sp_triplet->current.lon,
_navigator->get_global_position()->lat, _navigator->get_global_position()->lon);
on_loiter = d_current <= (_navigator->get_acceptance_radius() + pos_sp_triplet->current.loiter_radius);
}
if (on_loiter) {
if (_navigator->get_vstatus()->failsafe && _navigator->get_vstatus()->gcs_connection_lost && _param_nav_ltr_last_dl.get()) {
setLoiterFromLastLink(&_mission_item);
} else if (on_loiter) {
setLoiterItemFromCurrentPositionSetpoint(&_mission_item);
} else if (_navigator->get_vstatus()->vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING) {
@@ -116,7 +134,6 @@ Loiter::set_loiter_position()
} else {
setLoiterItemFromCurrentPosition(&_mission_item);
}
}
// convert mission item to current setpoint
+6
View File
@@ -53,6 +53,7 @@ public:
void on_activation() override;
void on_active() override;
void on_inactive() override;
private:
/**
@@ -66,4 +67,9 @@ private:
*/
void set_loiter_position();
bool _loiter_at_last_link_position_executed{false};
DEFINE_PARAMETERS(
(ParamInt<px4::params::NAV_LTR_LAST_DL>) _param_nav_ltr_last_dl
)
};
+13
View File
@@ -760,6 +760,19 @@ MissionBlock::setLoiterItemCommonFields(struct mission_item_s *item)
item->origin = ORIGIN_ONBOARD;
}
void
MissionBlock::setLoiterFromLastLink(struct mission_item_s *item)
{
setLoiterItemCommonFields(item);
const PositionYawSetpoint &last_heartbeat_pos = _navigator->get_last_pos_with_gcs_heartbeat();
item->lat = PX4_ISFINITE(last_heartbeat_pos.lat) ? last_heartbeat_pos.lat : _navigator->get_global_position()->lat;
item->lon = PX4_ISFINITE(last_heartbeat_pos.lon) ? last_heartbeat_pos.lon : _navigator->get_global_position()->lon;
item->altitude = PX4_ISFINITE(last_heartbeat_pos.alt) ? last_heartbeat_pos.alt : _navigator->get_global_position()->alt;
item->yaw = PX4_ISFINITE(last_heartbeat_pos.yaw) ? last_heartbeat_pos.yaw : NAN;
}
void
MissionBlock::set_takeoff_item(struct mission_item_s *item, float abs_altitude)
{
+1
View File
@@ -165,6 +165,7 @@ protected:
void setLoiterItemFromCurrentPosition(struct mission_item_s *item);
void setLoiterItemFromCurrentPositionWithBraking(struct mission_item_s *item);
void setLoiterFromLastLink(struct mission_item_s *item);
void setLoiterItemCommonFields(struct mission_item_s *item);
+8
View File
@@ -57,6 +57,9 @@
#include "GeofenceBreachAvoidance/geofence_breach_avoidance.h"
#include <uORB/SubscriptionMultiArray.hpp>
#include <uORB/topics/telemetry_status.h>
#if CONFIG_NAVIGATOR_ADSB
#include <lib/adsb/AdsbConflict.h>
#endif // CONFIG_NAVIGATOR_ADSB
@@ -174,6 +177,8 @@ public:
PrecLand *get_precland() { return &_precland; } /**< allow others, e.g. Mission, to use the precision land block */
const PositionYawSetpoint &get_last_pos_with_gcs_heartbeat() const { return _last_pos_with_gcs_heartbeat; }
const vehicle_roi_s &get_vroi() { return _vroi; }
void reset_vroi() { _vroi = {}; }
@@ -402,6 +407,9 @@ private:
bool _is_capturing_images{false}; // keep track if we need to stop capturing images
uORB::SubscriptionMultiArray<telemetry_status_s> _telemetry_status_subs{ORB_ID::telemetry_status};
PositionYawSetpoint _last_pos_with_gcs_heartbeat{(double)NAN, (double)NAN, NAN, NAN};
// timer to trigger a delayed set gimbal neutral command
hrt_abstime _gimbal_neutral_activation_time{UINT64_MAX};
+13
View File
@@ -225,6 +225,19 @@ void Navigator::run()
_global_pos_sub.copy(&_global_pos);
}
/* update last known position with GCS heartbeat */
for (auto &telemetry_sub : _telemetry_status_subs) {
telemetry_status_s telemetry;
if (telemetry_sub.update(&telemetry) && telemetry.heartbeat_type_gcs) {
_last_pos_with_gcs_heartbeat.lat = _global_pos.lat;
_last_pos_with_gcs_heartbeat.lon = _global_pos.lon;
_last_pos_with_gcs_heartbeat.alt = _global_pos.alt;
_last_pos_with_gcs_heartbeat.yaw = _local_pos.heading;
break;
}
}
/* check for parameter updates */
if (_parameter_update_sub.updated()) {
// clear update
@@ -140,3 +140,13 @@ parameters:
min: -1
decimal: 1
increment: 1
NAV_LTR_LAST_DL:
description:
short: Loiter at last GCS heartbeat position on data link loss
long: |-
When the data link is lost and this setting is enabled,
the vehicle will loiter at the position where the last GCS
heartbeat was received rather than at its current position.
Only applies to Hold mode during failsafe actions.
type: boolean
default: 0
+11 -32
View File
@@ -441,11 +441,16 @@ PositionYawSetpoint RTL::findClosestSafePoint(float min_dist, uint8_t &safe_poin
continue;
}
// Only look at rally points
if (mission_safe_point.nav_cmd != NAV_CMD_RALLY_POINT) {
continue;
}
// Ignore safepoints which are too close to the homepoint (only if home is an option to return to)
const bool far_from_home = get_distance_to_next_waypoint(_home_pos_sub.get().lat, _home_pos_sub.get().lon,
mission_safe_point.lat, mission_safe_point.lon) > MAX_DIST_FROM_HOME_FOR_LAND_APPROACHES;
if (mission_safe_point.nav_cmd == NAV_CMD_RALLY_POINT && (far_from_home || (_param_rtl_type.get() == 5))) {
if (far_from_home || (_param_rtl_type.get() == 5)) {
const float dist{get_distance_to_next_waypoint(_global_pos_sub.get().lat, _global_pos_sub.get().lon, mission_safe_point.lat, mission_safe_point.lon)};
PositionYawSetpoint safepoint_position;
@@ -531,32 +536,11 @@ void RTL::findRtlDestination(DestinationType &destination_type, PositionYawSetpo
destination_type = DestinationType::DESTINATION_TYPE_SAFE_POINT;
} else if (_param_rtl_type.get() == 5) {
// Safe points only but no valid safe point, fallback to last position with valid data link
for (auto &telemetry_status : _telemetry_status_subs) {
telemetry_status_s telemetry;
if (telemetry_status.update(&telemetry)) {
if (telemetry.heartbeat_type_gcs) {
_last_position_before_link_loss.alt = _global_pos_sub.get().alt;
_last_position_before_link_loss.lat = _global_pos_sub.get().lat;
_last_position_before_link_loss.lon = _global_pos_sub.get().lon;
break;
}
}
}
if (PX4_ISFINITE(_last_position_before_link_loss.lat) && PX4_ISFINITE(_last_position_before_link_loss.lon)) {
destination = _last_position_before_link_loss;
} else {
// If no valid data link position, fallback to current position
destination.alt = _global_pos_sub.get().alt;
destination.lat = _global_pos_sub.get().lat;
destination.lon = _global_pos_sub.get().lon;
}
destination_type = DestinationType::DESTINATION_TYPE_LAST_LINK_POSITION;
// for RTL_TYPE=5: if no rally point is found fallback to current position
destination.alt = _global_pos_sub.get().alt;
destination.lat = _global_pos_sub.get().lat;
destination.lon = _global_pos_sub.get().lon;
destination_type = DestinationType::DESTINATION_TYPE_SAFE_POINT;
}
}
@@ -595,11 +579,6 @@ void RTL::setSafepointAsDestination(PositionYawSetpoint &rtl_position, const mis
float RTL::computeReturnAltitude(const PositionYawSetpoint &rtl_position, DestinationType destination_type, float cone_half_angle_deg) const
{
if (destination_type == DestinationType::DESTINATION_TYPE_LAST_LINK_POSITION) {
// when returning to last known link position, do not modify altitude
return rtl_position.alt;
}
if (_param_rtl_cone_ang.get() > 0 && _vehicle_status_sub.get().vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING) {
// horizontal distance to destination
const float destination_dist =
+1 -6
View File
@@ -55,13 +55,11 @@
#include <uORB/Publication.hpp>
#include <uORB/Subscription.hpp>
#include <uORB/SubscriptionInterval.hpp>
#include <uORB/SubscriptionMultiArray.hpp>
#include <uORB/topics/home_position.h>
#include <uORB/topics/mission.h>
#include <uORB/topics/parameter_update.h>
#include <uORB/topics/rtl_status.h>
#include <uORB/topics/rtl_time_estimate.h>
#include <uORB/topics/telemetry_status.h>
class Navigator;
@@ -96,8 +94,7 @@ private:
enum class DestinationType {
DESTINATION_TYPE_HOME,
DESTINATION_TYPE_MISSION_LAND,
DESTINATION_TYPE_SAFE_POINT,
DESTINATION_TYPE_LAST_LINK_POSITION
DESTINATION_TYPE_SAFE_POINT
};
private:
@@ -229,7 +226,6 @@ private:
mutable DatamanCache _dataman_cache_landItem{"rtl_dm_cache_miss_land", 2};
uint32_t _mission_id = 0u;
uint32_t _safe_points_id = 0u;
PositionYawSetpoint _last_position_before_link_loss{(double)NAN, (double)NAN, NAN, NAN};
mission_stats_entry_s _stats;
@@ -253,7 +249,6 @@ private:
uORB::SubscriptionData<mission_s> _mission_sub{ORB_ID(mission)};
uORB::SubscriptionData<home_position_s> _home_pos_sub{ORB_ID(home_position)};
uORB::SubscriptionData<wind_s> _wind_sub{ORB_ID(wind)};
uORB::SubscriptionMultiArray<telemetry_status_s> _telemetry_status_subs{ORB_ID::telemetry_status};
uORB::Publication<rtl_time_estimate_s> _rtl_time_estimate_pub{ORB_ID(rtl_time_estimate)};
uORB::Publication<rtl_status_s> _rtl_status_pub{ORB_ID(rtl_status)};
@@ -85,8 +85,7 @@ void BatterySimulator::Run()
const hrt_abstime now_us = hrt_absolute_time();
// Limit to +1.0 s to guard against division by 0
const float discharge_interval_us = math::max(_param_sim_bat_drain.get(), 1.0f) * 1000 * 1000;
const float discharge_interval_us = _param_sim_bat_drain.get() * 1000 * 1000;
if (_armed) {
if (_last_integration_us != 0) {
@@ -2,14 +2,22 @@ module_name: battery_simulator
parameters:
- group: SITL
definitions:
SIM_BAT_ENABLE:
description:
short: Simulator Battery enabled
long: |-
Enable or disable the internal battery simulation. This is useful
when the battery is simulated externally and interfaced with PX4
through MAVLink for example.
type: boolean
default: 1
SIM_BAT_DRAIN:
description:
short: Simulated battery full-discharge time
long: |-
Time in seconds for the simulated battery to drain from 100% to 0% while armed. Set to 0 to disable the battery simulator entirely (useful when battery state is provided externally, e.g. via MAVLink).
short: Simulator Battery drain interval
type: float
default: 60
min: 0
min: 1
max: 86400
increment: 1
unit: s
SIM_BAT_MIN_PCT: