Compare commits
74 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3328e80722 | |||
| fa109297a6 | |||
| 456a4b905e | |||
| cdcdc7c441 | |||
| eba51fffb4 | |||
| 4fbff2cdd9 | |||
| 3646032296 | |||
| f6de211a27 | |||
| 85916b8946 | |||
| 8e8fd485b9 | |||
| 78ff7469ec | |||
| 7d034d6087 | |||
| ad38dba167 | |||
| 8874d533bb | |||
| f29aa182a8 | |||
| c8286d4bba | |||
| 575fa0850b | |||
| 6caf4f0942 | |||
| 0ce60fd528 | |||
| 93d767ab51 | |||
| d97a8d7d3b | |||
| a2299b02c8 | |||
| 276cab8d3c | |||
| a6d5c78d10 | |||
| 7bb12b15b5 | |||
| 526c64aab7 | |||
| 6eb2251ee5 | |||
| d9a66b11ac | |||
| a8c5df90ce | |||
| 8dd88e036d | |||
| c4a459838e | |||
| 932abfd558 | |||
| bd3b3d647f | |||
| 14b38f2eba | |||
| bb72088ff6 | |||
| 1904838043 | |||
| 7a9b04c67c | |||
| a514560169 | |||
| 6901bc6a01 | |||
| a6d9e114be | |||
| 5f7e395609 | |||
| 921e91863a | |||
| 585a615e64 | |||
| 45e8712d60 | |||
| 0cefd74fee | |||
| 7d8e79c49d | |||
| faedf252b3 | |||
| 7f8d2b5067 | |||
| 4498475515 | |||
| b8974cb77b | |||
| 042a251542 | |||
| ff06a206d1 | |||
| 46ed71fa5b | |||
| 2ef2580388 | |||
| c89667d911 | |||
| fa7ffa423c | |||
| 8f3442b358 | |||
| 17f3db9231 | |||
| 25138d0a12 | |||
| 70f32f4631 | |||
| e74e1bb32a | |||
| 5c469a36b8 | |||
| efbc9e64a4 | |||
| 229b53d25d | |||
| e0137fe7a7 | |||
| 072eeb4617 | |||
| 9c850b1594 | |||
| ad2279adb5 | |||
| e54d1fd114 | |||
| d0009c2af8 | |||
| 06d73b3758 | |||
| 8fe24d8884 | |||
| ffc184fcf7 | |||
| 8a2239f3e8 |
@@ -1,22 +1,9 @@
|
||||
<!--
|
||||
|
||||
Thank you for your contribution!
|
||||
|
||||
Get early feedback through
|
||||
- Dronecode Discord: https://discord.gg/dronecode
|
||||
- PX4 Discuss: http://discuss.px4.io/
|
||||
- opening a draft pr and sharing the link
|
||||
|
||||
-->
|
||||
|
||||
### Solved Problem
|
||||
When ... I found that ...
|
||||
|
||||
Fixes #{Github issue ID}
|
||||
|
||||
### Solution
|
||||
- Add ... for ...
|
||||
- Refactor ...
|
||||
|
||||
### Changelog Entry
|
||||
For release notes:
|
||||
@@ -27,11 +14,10 @@ Documentation: Need to clarify page ... / done, read docs.px4.io/...
|
||||
```
|
||||
|
||||
### Alternatives
|
||||
We could also ...
|
||||
|
||||
### Test coverage
|
||||
- Unit/integration test: ...
|
||||
- Simulation/hardware testing logs: https://review.px4.io/
|
||||
|
||||
### Context
|
||||
Related links, screenshot before/after, video
|
||||
|
||||
-->
|
||||
|
||||
@@ -231,6 +231,12 @@ then
|
||||
ads7953 start -S
|
||||
fi
|
||||
|
||||
# ADC sensor tla2528 external I2C
|
||||
if param compare -s ADC_TLA2528_EN 1
|
||||
then
|
||||
tla2528 start -X
|
||||
fi
|
||||
|
||||
# probe for optional external I2C devices
|
||||
if param compare SENS_EXT_I2C_PRB 1
|
||||
then
|
||||
|
||||
@@ -238,6 +238,7 @@ def get_actuator_output(yaml_config, output_functions, timer_config_file, verbos
|
||||
( 'disarmed', 'Disarmed', 'DIS', False ),
|
||||
( 'min', 'Minimum', 'MIN', False ),
|
||||
( 'max', 'Maximum', 'MAX', False ),
|
||||
( 'center', 'Center\n(for Servos)', 'CENT', False ),
|
||||
( 'failsafe', 'Failsafe', 'FAIL', True ),
|
||||
]
|
||||
for key, label, param_suffix, advanced in standard_params_array:
|
||||
|
||||
@@ -284,6 +284,9 @@ Note that non-motor outputs might already be active in prearm state if COM_PREAR
|
||||
'''
|
||||
minimum_description = \
|
||||
'''Minimum output value (when not disarmed).
|
||||
'''
|
||||
center_description = \
|
||||
'''Servo Center output value (when not disarmed).
|
||||
'''
|
||||
maximum_description = \
|
||||
'''Maxmimum output value (when not disarmed).
|
||||
@@ -296,6 +299,7 @@ When set to -1 (default), the value depends on the function (see {:}).
|
||||
standard_params_array = [
|
||||
( 'disarmed', 'Disarmed', 'DIS', disarmed_description ),
|
||||
( 'min', 'Minimum', 'MIN', minimum_description ),
|
||||
( 'center', 'Center', 'CENT', center_description ),
|
||||
( 'max', 'Maximum', 'MAX', maximum_description ),
|
||||
( 'failsafe', 'Failsafe', 'FAIL', failsafe_description ),
|
||||
]
|
||||
@@ -312,6 +316,10 @@ When set to -1 (default), the value depends on the function (see {:}).
|
||||
standard_params[key]['default'] = -1
|
||||
standard_params[key]['min'] = -1
|
||||
|
||||
if key == 'center':
|
||||
standard_params[key]['default'] = -1
|
||||
standard_params[key]['min'] = -1
|
||||
|
||||
param = {
|
||||
'description': {
|
||||
'short': channel_label+' ${i} '+label+' Value',
|
||||
|
||||
@@ -132,7 +132,6 @@ ENTRY(_stext)
|
||||
*/
|
||||
EXTERN(abort)
|
||||
EXTERN(_bootdelay_signature)
|
||||
EXTERN(board_get_manifest)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
|
||||
@@ -48,7 +48,6 @@ else()
|
||||
i2c.cpp
|
||||
init.c
|
||||
led.c
|
||||
mtd.cpp
|
||||
spi.cpp
|
||||
timer_config.cpp
|
||||
usb.c
|
||||
|
||||
@@ -67,7 +67,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -3,19 +3,13 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set - default SENS_EN_INA238 0
|
||||
param set - default SENS_EN_INA228 0
|
||||
param set - default SENS_EN_INA226 0
|
||||
|
||||
# Mavlink ethernet (CFG 1000)
|
||||
param set - default MAV_2_CONFIG 1000
|
||||
param set - default MAV_2_BROADCAST 1
|
||||
param set - default MAV_2_MODE 0
|
||||
param set - default MAV_2_RADIO_CTL 0
|
||||
param set - default MAV_2_RATE 100000
|
||||
param set - default MAV_2_REMOTE_PRT 14550
|
||||
param set - default MAV_2_UDP_PRT 14550
|
||||
param set-default MAV_2_CONFIG 1000
|
||||
param set-default MAV_2_BROADCAST 1
|
||||
param set-default MAV_2_MODE 0
|
||||
param set-default MAV_2_RADIO_CTL 0
|
||||
param set-default MAV_2_RATE 100000
|
||||
param set-default MAV_2_REMOTE_PRT 14550
|
||||
param set-default MAV_2_UDP_PRT 14550
|
||||
|
||||
safety_button start
|
||||
|
||||
@@ -72,7 +72,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -14,10 +14,7 @@ param set-default MAV_2_RATE 100000
|
||||
param set-default MAV_2_REMOTE_PRT 14550
|
||||
param set-default MAV_2_UDP_PRT 14550
|
||||
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 1
|
||||
|
||||
param set-default SENS_EN_THERMAL 1
|
||||
param set-default SENS_IMU_MODE 1
|
||||
param set-default SENS_IMU_TEMP 10.0
|
||||
|
||||
@@ -50,7 +50,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -41,7 +41,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -58,7 +58,6 @@ CONFIG_LOGGER_STACK_SIZE=4100
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
@@ -78,9 +77,7 @@ CONFIG_MODULES_VTOL_ATT_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y
|
||||
CONFIG_SYSTEMCMDS_BSONDUMP=y
|
||||
CONFIG_SYSTEMCMDS_DMESG=y
|
||||
CONFIG_SYSTEMCMDS_GPIO=y
|
||||
CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y
|
||||
CONFIG_SYSTEMCMDS_I2C_LAUNCHER=y
|
||||
CONFIG_SYSTEMCMDS_I2CDETECT=y
|
||||
CONFIG_SYSTEMCMDS_LED_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_MFT=y
|
||||
@@ -92,7 +89,6 @@ CONFIG_SYSTEMCMDS_PARAM=y
|
||||
CONFIG_SYSTEMCMDS_PERF=y
|
||||
CONFIG_SYSTEMCMDS_REBOOT=y
|
||||
CONFIG_SYSTEMCMDS_SD_BENCH=y
|
||||
CONFIG_SYSTEMCMDS_SD_STRESS=y
|
||||
CONFIG_SYSTEMCMDS_SERIAL_TEST=y
|
||||
CONFIG_SYSTEMCMDS_SYSTEM_TIME=y
|
||||
CONFIG_SYSTEMCMDS_TOP=y
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA226 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA238 0
|
||||
|
||||
# Set the backend of the dataman to SRAM
|
||||
param set-default SYS_DM_BACKEND 1
|
||||
# Set TELEM1 as default mavlink connection
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
# Skynode: use the "custom participant", IP=10.41.10.1 config for uxrce_dds_client
|
||||
param set-default UXRCE_DDS_PTCFG 2
|
||||
param set-default UXRCE_DDS_AG_IP 170461697
|
||||
|
||||
@@ -14,6 +14,7 @@ CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_IMU_ANALOG_DEVICES_ADIS16448=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_MPU9250=y
|
||||
CONFIG_DRIVERS_LINUX_PWM_OUT=y
|
||||
CONFIG_DRIVERS_MAGNETOMETER_HMC5883=y
|
||||
CONFIG_DRIVERS_RC_INPUT=y
|
||||
CONFIG_DRIVERS_SMART_BATTERY_BATMON=y
|
||||
@@ -30,8 +31,8 @@ CONFIG_MODULES_EVENTS=y
|
||||
CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
|
||||
CONFIG_MODULES_FW_ATT_CONTROL=y
|
||||
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_FW_MODE_MANAGER=y
|
||||
CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=y
|
||||
CONFIG_MODULES_FW_MODE_MANAGER=y
|
||||
CONFIG_MODULES_FW_RATE_CONTROL=y
|
||||
CONFIG_MODULES_GIMBAL=y
|
||||
CONFIG_MODULES_GYRO_CALIBRATION=y
|
||||
|
||||
@@ -61,7 +61,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -3,13 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
|
||||
# Mavlink ethernet (CFG 1000)
|
||||
param set-default MAV_2_CONFIG 1000
|
||||
param set-default MAV_2_BROADCAST 1
|
||||
|
||||
@@ -15,10 +15,6 @@ param set-default MAV_2_UDP_PRT 14550
|
||||
param set-default BAT1_V_DIV 18
|
||||
param set-default BAT1_A_PER_V 24
|
||||
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
param set-default USB_MAV_MODE 5
|
||||
|
||||
param set-default UAVCAN_SUB_GPS 1
|
||||
|
||||
@@ -12,10 +12,6 @@ param set-default MAV_2_RATE 100000
|
||||
param set-default MAV_2_REMOTE_PRT 14550
|
||||
param set-default MAV_2_UDP_PRT 14550
|
||||
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
param set-default RC_CRSF_PRT_CFG 300
|
||||
param set-default RC_CRSF_TEL_EN 1
|
||||
param set-default RC_SBUS_PRT_CFG 0
|
||||
|
||||
@@ -12,10 +12,6 @@ param set-default MAV_2_RATE 100000
|
||||
param set-default MAV_2_REMOTE_PRT 14550
|
||||
param set-default MAV_2_UDP_PRT 14550
|
||||
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
param set-default BAT1_V_DIV 18.000000000
|
||||
param set-default BAT1_A_PER_V 38.462030303
|
||||
|
||||
|
||||
@@ -74,7 +74,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
if ver hwbasecmp 008 009 00a 010 011
|
||||
then
|
||||
# Skynode: use the "custom participant", IP=10.41.10.1 config for uxrce_dds_client
|
||||
|
||||
@@ -71,7 +71,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
# Mavlink ethernet (CFG 1000)
|
||||
param set-default MAV_2_CONFIG 1000
|
||||
param set-default MAV_2_BROADCAST 1
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
@@ -1,4 +1,5 @@
|
||||
# CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE is not set
|
||||
CONFIG_DRIVERS_UAVCAN=n
|
||||
CONFIG_MODULES_UXRCE_DDS_CLIENT=n
|
||||
CONFIG_BOARD_CONSTRAINED_FLASH=y
|
||||
CONFIG_MODULES_ZENOH=y
|
||||
|
||||
@@ -12,12 +12,6 @@ param set-default MAV_2_RATE 100000
|
||||
param set-default MAV_2_REMOTE_PRT 14550
|
||||
param set-default MAV_2_UDP_PRT 14550
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
safety_button start
|
||||
|
||||
if param greater -s UAVCAN_ENABLE 0
|
||||
|
||||
@@ -35,7 +35,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
@@ -34,7 +34,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -63,7 +63,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
# Mavlink ethernet (CFG 1000)
|
||||
param set-default MAV_2_CONFIG 1000
|
||||
param set-default MAV_2_BROADCAST 1
|
||||
|
||||
@@ -61,7 +61,6 @@ CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MAVLINK_DIALECT="development"
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# By disabling all 3 INA modules, we use the
|
||||
# i2c_launcher instead.
|
||||
param set-default SENS_EN_INA238 0
|
||||
param set-default SENS_EN_INA228 0
|
||||
param set-default SENS_EN_INA226 0
|
||||
|
||||
if ver hwbasecmp 009 010 011
|
||||
then
|
||||
# Skynode: use the "custom participant", IP=10.41.10.1 config for uxrce_dds_client
|
||||
|
||||
@@ -325,7 +325,6 @@
|
||||
1 1 COM_PREARM_MODE 0 6
|
||||
1 1 COM_QC_ACT 0 6
|
||||
1 1 COM_RCL_EXCEPT 0 6
|
||||
1 1 COM_RC_ARM_HYST 1000 6
|
||||
1 1 COM_RC_IN_MODE 3 6
|
||||
1 1 COM_RC_LOSS_T 0.500000000000000000 9
|
||||
1 1 COM_RC_OVERRIDE 1 6
|
||||
|
||||
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 55 KiB |
@@ -56,11 +56,14 @@
|
||||
- [DJI F450 (CUAV v5 nano)](frames_multicopter/dji_f450_cuav_5nano.md)
|
||||
|
||||
- [Planes (Fixed-Wing)](frames_plane/index.md)
|
||||
- [Features](features_fw/index.md)
|
||||
- [Gain compression](features_fw/gain_compression.md)
|
||||
- [Assembly](assembly/assembly_fw.md)
|
||||
- [Config/Tuning](config_fw/index.md)
|
||||
- [Auto-tune](config/autotune_fw.md)
|
||||
- [Rate/Attitude Controller Tuning Guide](config_fw/pid_tuning_guide_fixedwing.md)
|
||||
- [Altitude/Position Controller Tuning Guide](config_fw/position_tuning_guide_fixedwing.md)
|
||||
- [Airspeed Scale Estimate Handling](config_fw/airspeed_scale_handling.md)
|
||||
- [Weight & Altitude Tuning](config_fw/weight_and_altitude_tuning.md)
|
||||
- [Trimming Guide](config_fw/trimming_guide_fixedwing.md)
|
||||
- [Flying (Basics)](flying/basic_flying_fw.md)
|
||||
@@ -225,6 +228,7 @@
|
||||
- [Bootloader Update](advanced_config/bootloader_update.md)
|
||||
- [Bootloader Update FMUv6X-RT via USB](advanced_config/bootloader_update_v6xrt.md)
|
||||
- [Bootloader Flashing onto Betaflight Systems](advanced_config/bootloader_update_from_betaflight.md)
|
||||
- [Secure Boot and Firmware Signature Verification](advanced_config/bootloader_secure_boot.md)
|
||||
- [Airframe Selection](config/airframe.md)
|
||||
- [Sensors](sensor/index.md)
|
||||
- [Accelerometer](sensor/accelerometer.md)
|
||||
@@ -672,8 +676,6 @@
|
||||
- [RoverSpeedStatus](msg_docs/RoverSpeedStatus.md)
|
||||
- [RoverSteeringSetpoint](msg_docs/RoverSteeringSetpoint.md)
|
||||
- [RoverThrottleSetpoint](msg_docs/RoverThrottleSetpoint.md)
|
||||
- [RoverVelocitySetpoint](msg_docs/RoverVelocitySetpoint.md)
|
||||
- [RoverVelocityStatus](msg_docs/RoverVelocityStatus.md)
|
||||
- [Rpm](msg_docs/Rpm.md)
|
||||
- [RtlStatus](msg_docs/RtlStatus.md)
|
||||
- [RtlTimeEstimate](msg_docs/RtlTimeEstimate.md)
|
||||
@@ -695,6 +697,7 @@
|
||||
- [SensorOpticalFlow](msg_docs/SensorOpticalFlow.md)
|
||||
- [SensorPreflightMag](msg_docs/SensorPreflightMag.md)
|
||||
- [SensorSelection](msg_docs/SensorSelection.md)
|
||||
- [SensorTemp](msg_docs/SensorTemp.md)
|
||||
- [SensorUwb](msg_docs/SensorUwb.md)
|
||||
- [SensorsStatus](msg_docs/SensorsStatus.md)
|
||||
- [SensorsStatusImu](msg_docs/SensorsStatusImu.md)
|
||||
@@ -765,6 +768,7 @@
|
||||
- [Rpm Sensor](modules/modules_driver_rpm_sensor.md)
|
||||
- [Radio Control](modules/modules_driver_radio_control.md)
|
||||
- [Transponder](modules/modules_driver_transponder.md)
|
||||
- [adc](modules/modules_driver_adc.md)
|
||||
- [Estimators](modules/modules_estimator.md)
|
||||
- [Simulations](modules/modules_simulation.md)
|
||||
- [System](modules/modules_system.md)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<!-- GENERATED CONTENT: DO NOT EDIT -->
|
||||
|
||||
- [Introduction](/index.md)
|
||||
- [Basic Concepts](/getting_started/px4_basic_concepts.md)
|
||||
|
||||
|
||||
@@ -10,36 +10,13 @@ By default, the [Missing Data](#missing-data-check), [Data Stuck](#data-stuck-ch
|
||||
You can configure which checks are active using the [ASPD_DO_CHECKS](#aspd_do_checks_table) parameter.
|
||||
:::
|
||||
|
||||
## Airspeed in PX4
|
||||
|
||||
PX4 handles multiple types of airspeed:
|
||||
|
||||
- **IAS (Indicated Airspeed):** The raw measurement from the airspeed sensor, directly influenced by sensor characteristics and installation effects (e.g., pitot-static errors).
|
||||
|
||||
- **CAS (Calibrated Airspeed):** IAS corrected for sensor-specific and installation-related errors.
|
||||
|
||||
- **EAS (Equivalent Airspeed):** _Not explicitly handled by PX4_ - Calibrated airspeed corrected for compressibility effects.
|
||||
While PX4 does not currently model EAS separately, this correction is negligible at low speeds and altitudes, so EAS is treated as equivalent to CAS for simplicity.
|
||||
|
||||
- **TAS (True Airspeed):** CAS adjusted for atmospheric effects such as air pressure and temperature (i.e., altitude and atmospheric conditions).
|
||||
|
||||
The standard conversion chain used in PX4 is: `IAS → CAS (= EAS) → TAS`.
|
||||
|
||||
## CAS Scale Estimation
|
||||
|
||||
PX4 estimates the IAS to CAS scale (referred to as the CAS scale) during flight using GNSS ground speed and wind estimation.
|
||||
To compute the final TAS, standard environment conversions are applied (CAS → TAS).
|
||||
|
||||
This CAS scaling plays an important role in keeping the [innovation check](#innovation-check) reliable, since a well-estimated CAS is key to spotting inconsistencies between measured and predicted airspeed.
|
||||
Calibrated Airspeed (CAS) is the measured Indicated Airspeed (IAS) scaled to correct for sensor-specific and installation-related errors.
|
||||
CAS scaling plays an important role in keeping the [innovation check](#innovation-check) reliable, since a well-estimated CAS is key to spotting inconsistencies between measured and predicted airspeed.
|
||||
If the estimated CAS scale is inaccurate, it can mask real airspeed faults or trigger false positives.
|
||||
|
||||
If you observe that the CAS scale estimate is consistently off, or if it is converging too slowly, you can manually set it using [ASPD_SCALE_n](#aspd_scale_n_table) (where `n` is the sensor number).
|
||||
[ASPD_SCALE_APPLY](#aspd_scale_apply_table) can be used to configure when/if the estimated scale is applied.
|
||||
|
||||
::: info
|
||||
For a quick manual CAS scale estimate, compare groundspeed minus windspeed (from the [VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) and [Wind](../msg_docs/Wind.md) messages, respectively) to indicated airspeed values (in the [Airspeed](../msg_docs/Airspeed.md) message).
|
||||
The ratio of indicated airspeed to groundspeed minus windspeed can provide a reasonable starting estimate for [ASPD_SCALE_n](#aspd_scale_n_table).
|
||||
:::
|
||||
If you observe that the CAS scale estimate is consistently off, or if it is converging too slowly, follow the steps outlined in [Airspeed Scale Handling](../config_fw/airspeed_scale_handling.md#recommended-first-flight-process).
|
||||
|
||||
## Validation Checks
|
||||
|
||||
|
||||
@@ -0,0 +1,323 @@
|
||||
# Secure Boot and Firmware Signature Verification
|
||||
|
||||
PX4 includes support for secure boot, which prevents unauthorized or tampered firmware from running on the flight controller.
|
||||
This feature uses cryptographic signature verification to ensure only trusted firmware can be executed.
|
||||
|
||||
::: warning
|
||||
Secure boot is an advanced feature primarily intended for commercial applications and OEM manufacturers who need to protect their firmware from tampering.
|
||||
Improper configuration can brick your device.
|
||||
:::
|
||||
|
||||
## Overview
|
||||
|
||||
The PX4 secure boot implementation provides:
|
||||
|
||||
- **Firmware signature verification**: The bootloader verifies cryptographic signatures before executing firmware.
|
||||
- **Tamper protection**: Unsigned or improperly signed firmware will not be executed.
|
||||
- **Key-based authentication**: Uses cryptographic keys stored in the device.
|
||||
- **Table of Contents (TOC)**: A structured format for organizing firmware components with security metadata.
|
||||
|
||||
The secure boot feature is available on NuttX-based flight controllers.
|
||||
|
||||
## Enabling Secure Boot
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Before enabling secure boot, you need:
|
||||
|
||||
1. A board configuration that supports secure boot (NuttX-based flight controllers)
|
||||
2. Understanding of the build system and firmware signing process
|
||||
3. Secure storage for your private keys
|
||||
4. A workflow for signing firmware images
|
||||
|
||||
### Board Configuration
|
||||
|
||||
To enable secure boot on your board:
|
||||
|
||||
1. **Enable security in bootloader**: Add to your board's bootloader configuration file (e.g., `boards/[vendor]/[board]/nuttx-config/bootloader/defconfig`):
|
||||
|
||||
```sh
|
||||
CONFIG_BOOTLOADER_USE_SECURITY=y
|
||||
```
|
||||
|
||||
2. **Set crypto algorithm**: Define the signing algorithm in your board's `hw_config.h`:
|
||||
|
||||
```c
|
||||
#define BOOTLOADER_SIGNING_ALGORITHM CRYPTO_ED25519
|
||||
```
|
||||
|
||||
3. **Configure key storage**: Implement or configure the keystore backend for your board
|
||||
4. **Build bootloader with crypto support**: Ensure `PX4_CRYPTO` is defined in your board's CMake configuration
|
||||
|
||||
### Key Management
|
||||
|
||||
::: warning CRITICAL
|
||||
Keep your private keys secure! If private keys are lost, you cannot sign new firmware. If private keys are compromised, unauthorized firmware can be created.
|
||||
:::
|
||||
|
||||
Key management involves:
|
||||
|
||||
1. **Key generation**: Generate cryptographic key pairs (public and private keys)
|
||||
2. **Key storage**:
|
||||
- Private keys: Store securely on your build/signing server (never on the device)
|
||||
- Public keys: Store in the device's keystore (accessible to bootloader)
|
||||
3. **Key indices**: Each key has an index (0-15) used to reference it in the TOC
|
||||
|
||||
#### Generating ED25519 Keys
|
||||
|
||||
You can use various tools to generate ED25519 keys.
|
||||
Example using Python with the `cryptography` library:
|
||||
|
||||
```python
|
||||
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
|
||||
from cryptography.hazmat.primitives import serialization
|
||||
|
||||
# Generate private key
|
||||
private_key = Ed25519PrivateKey.generate()
|
||||
|
||||
# Get public key
|
||||
public_key = private_key.public_key()
|
||||
|
||||
# Serialize private key
|
||||
private_bytes = private_key.private_bytes(
|
||||
encoding=serialization.Encoding.Raw,
|
||||
format=serialization.PrivateFormat.Raw,
|
||||
encryption_algorithm=serialization.NoEncryption()
|
||||
)
|
||||
|
||||
# Serialize public key
|
||||
public_bytes = public_key.public_bytes(
|
||||
encoding=serialization.Encoding.Raw,
|
||||
format=serialization.PublicFormat.Raw
|
||||
)
|
||||
|
||||
# Save keys to files
|
||||
with open('private_key.bin', 'wb') as f:
|
||||
f.write(private_bytes)
|
||||
|
||||
with open('public_key.bin', 'wb') as f:
|
||||
f.write(public_bytes)
|
||||
```
|
||||
|
||||
#### Installing Public Keys on Device
|
||||
|
||||
Public keys must be installed in the device's keystore. The exact method depends on your board's keystore implementation:
|
||||
|
||||
- Some boards use One-Time Programmable (OTP) memory
|
||||
- Some boards use secure flash storage
|
||||
- Some implementations use a stub keystore for development/testing
|
||||
|
||||
Refer to your board's keystore implementation in `src/drivers/stub_keystore/` or board-specific keystore drivers.
|
||||
|
||||
### Firmware Signing Process
|
||||
|
||||
The firmware signing process involves:
|
||||
|
||||
1. **Build firmware**: Build your PX4 firmware as usual
|
||||
2. **Create TOC**: Generate the Table of Contents structure
|
||||
3. **Sign firmware**: Sign the firmware image with your private key
|
||||
4. **Append signature**: Add the signature to the firmware image according to TOC structure
|
||||
5. **Flash to device**: Upload the signed firmware to the device
|
||||
|
||||
::: info
|
||||
The exact tooling for firmware signing depends on your board and security requirements. Custom scripts are typically needed for production use.
|
||||
:::
|
||||
|
||||
### TOC Creation Example
|
||||
|
||||
The TOC structure typically looks like this:
|
||||
|
||||
```
|
||||
[TOC Start Magic]
|
||||
[TOC Version]
|
||||
[TOC Entry 0: Firmware]
|
||||
- Name: "APP"
|
||||
- Start: <firmware start address>
|
||||
- End: <firmware end address>
|
||||
- Signature Index: 1
|
||||
- Key Index: 0
|
||||
- Flags: TOC_FLAG1_BOOT | TOC_FLAG1_CHECK_SIGNATURE
|
||||
[TOC Entry 1: Signature]
|
||||
- Name: "SIG"
|
||||
- Start: <signature start address>
|
||||
- End: <signature end address>
|
||||
- Flags: 0
|
||||
[TOC End Magic]
|
||||
[Firmware Binary Data]
|
||||
[Signature Data]
|
||||
```
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Best Practices
|
||||
|
||||
1. **Key Management**:
|
||||
- Use hardware security modules (HSM) for key storage when possible
|
||||
- Never commit private keys to version control
|
||||
- Use separate keys for development and production
|
||||
- Implement key rotation policies
|
||||
|
||||
2. **Build Security**:
|
||||
- Sign firmware in a secure, controlled environment
|
||||
- Verify signatures before distribution
|
||||
- Use checksums for firmware integrity verification
|
||||
- Maintain an audit log of signed firmware versions
|
||||
|
||||
3. **Device Security**:
|
||||
- Use OTP or secure flash for storing public keys
|
||||
- Consider using R&D certificates for development devices (allows unsigned boot)
|
||||
- Implement secure firmware update mechanisms
|
||||
- Monitor for signature verification failures
|
||||
|
||||
### Development vs Production
|
||||
|
||||
For development, you can use the R&D Certificate feature:
|
||||
|
||||
```c
|
||||
// In TOC, mark entry with RDCT flag
|
||||
toc_entry.flags1 |= TOC_FLAG1_RDCT;
|
||||
|
||||
// R&D certificate capabilities
|
||||
#define RDCT_CAPS0_ALLOW_UNSIGNED_BOOT 0x1
|
||||
```
|
||||
|
||||
R&D certificates allow specific devices (identified by UUID) to boot unsigned firmware, useful during development without compromising production security.
|
||||
|
||||
::: warning
|
||||
Never deploy R&D certificates to production devices!
|
||||
:::
|
||||
|
||||
## Firmware Updates
|
||||
|
||||
### Updating Signed Firmware
|
||||
|
||||
When using secure boot, firmware updates must:
|
||||
|
||||
1. Be properly signed with the correct private key
|
||||
2. Include a valid TOC structure
|
||||
3. Use the same key index that matches the public key in the device
|
||||
|
||||
The update process through QGroundControl or other tools works the same way, but the firmware file must be properly signed before upload.
|
||||
|
||||
### Signature Verification Failures
|
||||
|
||||
If signature verification fails:
|
||||
|
||||
- The bootloader will not execute the firmware.
|
||||
- The bootloader remains active and accepts new firmware uploads.
|
||||
- The device will not be bricked (bootloader always runs).
|
||||
- You can upload a correctly signed firmware to recover.
|
||||
|
||||
Check bootloader logs (if available) to diagnose signature failures.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### Firmware won't boot after enabling secure boot
|
||||
|
||||
- Ensure the firmware is properly signed
|
||||
- Verify the TOC structure is correct
|
||||
- Check that the key index in TOC matches the keystore
|
||||
|
||||
#### Signature verification always fails
|
||||
|
||||
- Confirm public key is correctly installed in keystore
|
||||
- Verify the signature was created with the matching private key
|
||||
- Check that the signature algorithm matches (e.g., ED25519)
|
||||
- Ensure the signature covers the correct data range
|
||||
|
||||
#### Device appears bricked
|
||||
|
||||
- The bootloader should always be accessible
|
||||
- Use a debug probe to reprogram the bootloader if needed
|
||||
- Check that BOOTLOADER_USE_SECURITY is defined correctly
|
||||
|
||||
### Debug Information
|
||||
|
||||
To debug secure boot issues:
|
||||
|
||||
1. Enable bootloader debug output (if supported by your board)
|
||||
2. Use a debug probe to examine memory and execution flow
|
||||
3. Verify TOC parsing with debug tools
|
||||
4. Check return values from `verify_app()` function
|
||||
|
||||
## How It Works
|
||||
|
||||
### Boot Process
|
||||
|
||||
1. **Bootloader starts**: The secure bootloader runs first after power-on or reset.
|
||||
2. **TOC validation**: Locates and validates the Firmware Table of Contents (TOC) structure in flash.
|
||||
3. **Signature verification**: Verifies the cryptographic signature of the firmware using stored keys.
|
||||
4. **Boot decision**:
|
||||
- If verification succeeds, the firmware is executed.
|
||||
- If verification fails, the bootloader remains active and waits for a valid firmware upload.
|
||||
|
||||
### Firmware Table of Contents (TOC)
|
||||
|
||||
The firmware TOC is a data structure embedded in the firmware that describes:
|
||||
|
||||
- Firmware components and their locations in flash memory
|
||||
- Signature information for each component
|
||||
- Encryption settings (if used)
|
||||
- Boot flags indicating which component should be executed
|
||||
|
||||
The TOC format is defined in `src/include/image_toc.h`:
|
||||
|
||||
```c
|
||||
typedef struct image_toc_entry {
|
||||
unsigned char name[4]; // Name of the section
|
||||
const void *start; // Start address in flash
|
||||
const void *end; // End address in flash
|
||||
void *target; // Copy target address (for RAM execution)
|
||||
uint8_t signature_idx; // Index to signature in TOC
|
||||
uint8_t signature_key; // Key index for signature verification
|
||||
uint8_t encryption_key; // Key index for encryption (future)
|
||||
uint8_t flags1; // Control flags
|
||||
uint32_t reserved; // Reserved for future use
|
||||
} image_toc_entry_t;
|
||||
```
|
||||
|
||||
### Supported Cryptographic Algorithms
|
||||
|
||||
PX4's crypto backend supports multiple algorithms (defined in `platforms/common/include/px4_platform_common/crypto_algorithms.h`):
|
||||
|
||||
- **ED25519**: EdDSA signatures using Curve25519 (recommended for signatures)
|
||||
- **RSA-OAEP**: RSA with Optimal Asymmetric Encryption Padding
|
||||
- **XCHACHA20**: Stream cipher for encryption (future use)
|
||||
- **AES**: Block cipher for encryption (future use)
|
||||
|
||||
The bootloader uses ED25519 by default for signature verification due to its security, performance, and small signature size.
|
||||
|
||||
## Implementation Details
|
||||
|
||||
The secure boot implementation consists of:
|
||||
|
||||
- **Bootloader**: `platforms/nuttx/src/bootloader/common/`
|
||||
- `bl.c`: Main bootloader logic
|
||||
- `image_toc.c`: TOC parsing and validation
|
||||
- `crypto.c`: Cryptographic operation wrappers
|
||||
|
||||
- **Crypto Backend**: `src/drivers/sw_crypto/`
|
||||
- `crypto.c`: Software crypto implementation using monocypher and libtomcrypt
|
||||
|
||||
- **Keystore**: `src/drivers/stub_keystore/` (or board-specific implementations)
|
||||
- Key storage and retrieval
|
||||
|
||||
- **Headers**:
|
||||
- `src/include/image_toc.h`: TOC structure definitions
|
||||
- `platforms/common/include/px4_platform_common/crypto_backend.h`: Crypto API
|
||||
- `platforms/common/include/px4_platform_common/crypto_algorithms.h`: Algorithm definitions
|
||||
|
||||
## Related Topics
|
||||
|
||||
- [Bootloader Update](bootloader_update.md) - Updating the bootloader itself
|
||||
- [Building PX4 Software](../dev_setup/building_px4.md) - Build system information
|
||||
- [Board Support Guide](../hardware/board_support_guide.md) - Creating custom boards
|
||||
|
||||
## References
|
||||
|
||||
- Original implementation: [PR #17672](https://github.com/PX4/PX4-Autopilot/pull/17672)
|
||||
- Contributor: Technology Innovation Institute
|
||||
- Monocypher library: https://monocypher.org/
|
||||
- LibTomCrypt library: https://www.libtom.net/LibTomCrypt/
|
||||
@@ -32,6 +32,7 @@ This topic lists configuration topics that are not particularly vehicle specific
|
||||
|
||||
- [Bootloader Update](../advanced_config/bootloader_update.md)
|
||||
- [Bootloader Update FMUv6X-RT via USB](../advanced_config/bootloader_update_v6xrt.md)
|
||||
- [Secure Boot and Firmware Signature Verification](../advanced_config/bootloader_secure_boot.md)
|
||||
|
||||
## See Also
|
||||
|
||||
|
||||
@@ -10,6 +10,48 @@ If a listed parameter is missing from the Firmware see: [Finding/Updating Parame
|
||||
|
||||
<!-- markdown generator: src/lib/parameters/px4params/markdownout.py -->
|
||||
|
||||
## ADC
|
||||
|
||||
### ADC_ADS7953_EN (`INT32`) {#ADC_ADS7953_EN}
|
||||
|
||||
Enable ADS7953.
|
||||
|
||||
Enable the driver for the ADS7953 board
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------------ | ---- |
|
||||
| ✓ | | | | Disabled (0) |
|
||||
|
||||
### ADC_ADS7953_REFV (`FLOAT`) {#ADC_ADS7953_REFV}
|
||||
|
||||
Applied reference Voltage.
|
||||
|
||||
The voltage applied to the ADS7953 board as reference
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 2.0 | 3.0 | 0.01 | 2.5 | V |
|
||||
|
||||
### ADC_TLA2528_EN (`INT32`) {#ADC_TLA2528_EN}
|
||||
|
||||
Enable TLA2528.
|
||||
|
||||
Enable the driver for the TLA2528
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------------ | ---- |
|
||||
| ✓ | | | | Disabled (0) |
|
||||
|
||||
### ADC_TLA2528_REFV (`FLOAT`) {#ADC_TLA2528_REFV}
|
||||
|
||||
Applied reference Voltage.
|
||||
|
||||
The voltage applied to the TLA2528 board as reference
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 2.0 | 3.0 | 0.01 | 2.5 | V |
|
||||
|
||||
## ADSB
|
||||
|
||||
### ADSB_CALLSIGN_1 (`INT32`) {#ADSB_CALLSIGN_1}
|
||||
@@ -13955,9 +13997,9 @@ Scale of airspeed sensor 1.
|
||||
|
||||
This is the scale IAS --> CAS of the first airspeed sensor instance
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0.5 | 2.0 | | 1.0 |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.5 | 2.0 | | 1.0 |
|
||||
|
||||
### ASPD_SCALE_2 (`FLOAT`) {#ASPD_SCALE_2}
|
||||
|
||||
@@ -13965,9 +14007,9 @@ Scale of airspeed sensor 2.
|
||||
|
||||
This is the scale IAS --> CAS of the second airspeed sensor instance
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0.5 | 2.0 | | 1.0 |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.5 | 2.0 | | 1.0 |
|
||||
|
||||
### ASPD_SCALE_3 (`FLOAT`) {#ASPD_SCALE_3}
|
||||
|
||||
@@ -13975,9 +14017,9 @@ Scale of airspeed sensor 3.
|
||||
|
||||
This is the scale IAS --> CAS of the third airspeed sensor instance
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
| ✓ | 0.5 | 2.0 | | 1.0 |
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0.5 | 2.0 | | 1.0 |
|
||||
|
||||
### ASPD_SCALE_APPLY (`INT32`) {#ASPD_SCALE_APPLY}
|
||||
|
||||
@@ -17165,7 +17207,9 @@ Set bits in the following positions to enable: 0 : Longitude and latitude fusion
|
||||
|
||||
### EKF2_GPS_DELAY (`FLOAT`) {#EKF2_GPS_DELAY}
|
||||
|
||||
GPS measurement delay relative to IMU measurements.
|
||||
GPS measurement delay relative to IMU measurement.
|
||||
|
||||
GPS measurement delay relative to IMU measurement if PPS time correction is not available/enabled (PPS_CAP_ENABLE).
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------- | ---- |
|
||||
@@ -17175,7 +17219,7 @@ GPS measurement delay relative to IMU measurements.
|
||||
|
||||
Fusion reset mode.
|
||||
|
||||
Automatic: reset on fusion timeout if no other source of position is available Dead-reckoning: reset on fusion timeout if no source of velocity is available
|
||||
Automatic: reset on fusion timeout if no other source of position is available. Dead-reckoning: reset on fusion timeout if no source of velocity is available.
|
||||
|
||||
**Values:**
|
||||
|
||||
@@ -33105,6 +33149,14 @@ Maxbotix Sonar (mb12xx).
|
||||
| ------- | -------- | -------- | --------- | ------------ | ---- |
|
||||
| ✓ | | | | Disabled (0) |
|
||||
|
||||
### SENS_EN_MCP9808 (`INT32`) {#SENS_EN_MCP9808}
|
||||
|
||||
Enable MCP9808 temperature sensor (external I2C).
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------- | -------- | -------- | --------- | ------------ | ---- |
|
||||
| ✓ | | | | Disabled (0) |
|
||||
|
||||
### SENS_EN_MPDT (`INT32`) {#SENS_EN_MPDT}
|
||||
|
||||
Enable Mappydot rangefinder (i2c).
|
||||
@@ -39432,6 +39484,14 @@ Maximum time (in seconds) before resetting setpoint.
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | | | | 2.0 |
|
||||
|
||||
### UUV_STICK_MODE (`INT32`) {#UUV_STICK_MODE}
|
||||
|
||||
Stick mode selector (0=Heave/sway control, roll/pitch leveled; 1=Pitch/roll control).
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | 0 | 1 | | 0 |
|
||||
|
||||
### UUV_THRUST_SAT (`FLOAT`) {#UUV_THRUST_SAT}
|
||||
|
||||
UUV Thrust setpoint Saturation.
|
||||
@@ -40135,7 +40195,7 @@ Time in seconds it takes to tilt form VT_TILT_FW to VT_TILT_MC.
|
||||
|
||||
### VT_B_DEC_I (`FLOAT`) {#VT_B_DEC_I}
|
||||
|
||||
Backtransition deceleration setpoint to pitch I gain.
|
||||
Backtransition deceleration setpoint to tilt I gain.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ------- |
|
||||
@@ -40353,7 +40413,7 @@ During landing it can be beneficial to reduce the pitch angle to reduce the gene
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | -10.0 | 45.0 | 0.1 | -5.0 | deg |
|
||||
| | -10.0 | 45.0 | 0.1 | 0.0 | deg |
|
||||
|
||||
### VT_PITCH_MIN (`FLOAT`) {#VT_PITCH_MIN}
|
||||
|
||||
@@ -40364,7 +40424,7 @@ VT_FWD_TRHUST_EN is set.
|
||||
|
||||
| Reboot | minValue | maxValue | increment | default | unit |
|
||||
| ------ | -------- | -------- | --------- | ------- | ---- |
|
||||
| | -10.0 | 45.0 | 0.1 | -5.0 | deg |
|
||||
| | -10.0 | 45.0 | 0.1 | 0.0 | deg |
|
||||
|
||||
### VT_PSHER_SLEW (`FLOAT`) {#VT_PSHER_SLEW}
|
||||
|
||||
|
||||
@@ -52,19 +52,17 @@ RC controllers will use different sticks for throttle and yaw [based on their mo
|
||||
- _Arm:_ Left-stick to right, right-stick to bottom.
|
||||
- _Disarm:_ Left-stick to left, right-stick to the bottom.
|
||||
|
||||
The required hold time can be configured using [COM_RC_ARM_HYST](#COM_RC_ARM_HYST).
|
||||
Note that by default ([COM_DISARM_MAN](#COM_DISARM_MAN)) you can also disarm in flight using gestures/buttons: you may choose to disable this to avoid accidental disarming.
|
||||
|
||||
| Parameter | Description |
|
||||
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="MAN_ARM_GESTURE"></a>[MAN_ARM_GESTURE](../advanced_config/parameter_reference.md#MAN_ARM_GESTURE) | Enable arm/disarm stick guesture. `0`: Disabled, `1`: Enabled (default). |
|
||||
| <a id="COM_DISARM_MAN"></a>[COM_DISARM_MAN](../advanced_config/parameter_reference.md#COM_DISARM_MAN) | Enable disarming in flight via switch/stick/button in MC manual thrust modes. `0`: Disabled, `1`: Enabled (default). |
|
||||
| <a id="COM_RC_ARM_HYST"></a>[COM_RC_ARM_HYST](../advanced_config/parameter_reference.md#COM_RC_ARM_HYST) | Time that RC stick must be held in arm/disarm position before arming/disarming occurs (default: `1` second). |
|
||||
|
||||
## Arming Button/Switch {#arm_disarm_switch}
|
||||
|
||||
An _arming button_ or "momentary switch" can be configured to trigger arm/disarm _instead_ of [gesture-based arming](#arm_disarm_gestures) (setting an arming switch disables arming gestures).
|
||||
The button should be held down for ([nominally](#COM_RC_ARM_HYST)) one second to arm (when disarmed) or disarm (when armed).
|
||||
The button should be held down for one second to arm (when disarmed) or disarm (when armed).
|
||||
|
||||
A two-position switch can also be used for arming/disarming, where the respective arm/disarm commands are sent on switch _transitions_.
|
||||
|
||||
@@ -77,7 +75,7 @@ The switch or button is assigned (and enabled) using [RC_MAP_ARM_SW](#RC_MAP_ARM
|
||||
| Parameter | Description |
|
||||
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <a id="RC_MAP_ARM_SW"></a>[RC_MAP_ARM_SW](../advanced_config/parameter_reference.md#RC_MAP_ARM_SW) | RC arm switch channel (default: 0 - unassigned). If defined, the specified RC channel (button/switch) is used for arming instead of a stick gesture. <br>**Note:**<br>- This setting _disables the stick gesture_!<br>- This setting applies to RC controllers. It does not apply to Joystick controllers that are connected via _QGroundControl_. |
|
||||
| <a id="COM_ARM_SWISBTN"></a>[COM_ARM_SWISBTN](../advanced_config/parameter_reference.md#COM_ARM_SWISBTN) | Arm switch is a momentary button. <br>- `0`: Arm switch is a 2-position switch where arm/disarm commands are sent on switch transitions.<br>-`1`: Arm switch is a button or momentary button where the arm/disarm command ae sent after holding down button for set time ([COM_RC_ARM_HYST](#COM_RC_ARM_HYST)). |
|
||||
| <a id="COM_ARM_SWISBTN"></a>[COM_ARM_SWISBTN](../advanced_config/parameter_reference.md#COM_ARM_SWISBTN) | Arm switch is a momentary button. <br>- `0`: Arm switch is a 2-position switch where arm/disarm commands are sent on switch transitions.<br>-`1`: Arm switch is a momentary button where the arm/disarm command is sent after holding down the button for one second. |
|
||||
|
||||
::: info
|
||||
The switch can also be set as part of _QGroundControl_ [Flight Mode](../config/flight_mode.md) configuration.
|
||||
|
||||
@@ -348,6 +348,60 @@ The `hpos_drift_rate`, `vpos_drift_rate` and `hspd` are calculated over a period
|
||||
Note that `ekf2_gps_drift` is not logged!
|
||||
:::
|
||||
|
||||
#### GNSS Fault Detection
|
||||
|
||||
PX4's GNSS fault detection protects against malicious or erroneous GNSS signals using selective fusion control based on measurement validation.
|
||||
|
||||
The fault detection logic depends on the GPS mode, and also operates differently for horizontal position and altitude measurements.
|
||||
The mode is set using the [EKF2_GPS_MODE](../advanced_config/parameter_reference.md#EKF2_GPS_MODE) parameter:
|
||||
|
||||
- **Automatic (`0`)** (Default): Assumes that GNSS is generally reliable and is likely to be recovered.
|
||||
EKF2 resets on fusion timeouts if no other source of position is available.
|
||||
- **Dead-reckoning (`1`)**: Assumes that GNSS might be lost indefinitely, so resets should be avoided while we have other estimates of position data.
|
||||
EKF2 may reset if no other sources of position or velocity are available.
|
||||
If GNSS altitude OR horizontal position data drifts, the system disables fusion of both measurements simultaneously (even if one would still pass validation) and avoids performing resets.
|
||||
|
||||
##### Detection Logic
|
||||
|
||||
Horizontal Position:
|
||||
|
||||
- **Automatic mode**: Horizontal position resets to GNSS data if no other horizontal position source is currently being fused (e.g., Auxiliary Global Position - AGP).
|
||||
- **Dead-reckoning mode**: Horizontal position resets to GNSS data only if no other horizontal position OR velocity source is currently being fused (e.g., AGP, airspeed, optical flow).
|
||||
|
||||
Altitude:
|
||||
|
||||
- The altitude logic is more complex due to the height reference sensor ([EKF2_HGT_REF](../advanced_config/parameter_reference.md#EKF2_HGT_REF)) parameter, which is typically set to GNSS or baro in GNSS-denied scenarios.
|
||||
- If height reference is set to baro, GNSS-based height resets are prevented (except when baro fusion fails completely and height reference automatically switches to GNSS).
|
||||
- When height reference is set to GNSS:
|
||||
- **Automatic mode**: Resets occur on drifting GNSS altitude measurements.
|
||||
- **Dead-reckoning mode**: When validation starts failing, the system prevents GNSS altitude resets and labels the GNSS data as faulty.
|
||||
|
||||
##### Faulty GNSS Data During Boot
|
||||
|
||||
The system cannot automatically detect faulty GNSS data during vehicle boot as no baseline comparison exists.
|
||||
|
||||
If GNSS fusion is enabled ([EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL)), operators will observe incorrect positions on maps and should disable GNSS fusion, then manually set the correct position via ground control station.
|
||||
The global position gets corrected, and if [SENS_BAR_AUTOCAL](../advanced_config/parameter_reference.md#SENS_BAR_AUTOCAL) was enabled, baro offsets are automatically adjusted (through bias correction, not parameter changes).
|
||||
|
||||
##### Enabling GNSS Fusion Mid-Flight
|
||||
|
||||
With Faulty GNSS Data:
|
||||
|
||||
- **Automatic mode**: Vehicle will reset to faulty position - potentially dangerous.
|
||||
- **Dead-reckoning mode**: Large measurement differences cause GNSS rejection and fault detection activation.
|
||||
|
||||
With Valid GNSS Data:
|
||||
|
||||
- **Automatic mode**: Vehicle will reset to GNSS measurements.
|
||||
- **Dead-reckoning mode**: If estimated position/altitude is close enough to measurements, fusion resumes; if too far apart, data gets labeled as faulty.
|
||||
|
||||
##### Notes
|
||||
|
||||
- **Dual Detection**: Horizontal and altitude checks run completely separately but both lead to the same result when triggered - all GNSS fusion gets disabled.
|
||||
- **Recovery**: Only the specific check that labeled data as invalid can re-enable fusion.
|
||||
- **Alternative Sources**: Dead-reckoning mode provides enhanced protection by requiring absence of alternative navigation sources before allowing resets.
|
||||
- **Boot Vulnerability**: Initial faulty GNSS data cannot be detected automatically; requires operator intervention and manual position correction.
|
||||
|
||||
### Range Finder
|
||||
|
||||
[Range finder](../sensor/rangefinders.md) distance to ground is used by a single state filter to estimate the vertical position of the terrain relative to the height datum.
|
||||
|
||||
@@ -160,6 +160,7 @@ The fields are:
|
||||
[Generally you should use the default actuator value](#actuator-roll-pitch-and-yaw-scaling).
|
||||
- `Trim`: An offset added to the actuator so that it is centered without input.
|
||||
This might be determined by trial and error.
|
||||
Prefer using the improved `PWM_CENT` instead: [PWM control surfaces](actuators.md#pwm-control-surfaces-that-move-both-directions-about-a-neutral-point).
|
||||
- <a id="slew_rate"></a>(Advanced) `Slew Rate`: Limits the minimum time in which the motor/servo signal is allowed to pass through its full output range, in seconds.
|
||||
- The setting limits the rate of change of an actuator (if not specified then no rate limit is applied).
|
||||
It is intended for actuators that may be damaged or cause flight disturbance if they move too fast — such as the tilting actuators on a tiltrotor VTOL vehicle, or fast moving flaps, respectively.
|
||||
@@ -535,12 +536,41 @@ If you're using PWM servos, PWM50 is far more common.
|
||||
If a high rate servo is _really_ needed, DShot offers better value.
|
||||
:::
|
||||
|
||||
#### Control surfaces that move both directions about a neutral point
|
||||
##### PWM: Control surfaces that move both directions about a neutral point
|
||||
|
||||
To facilitate setting the neutral point of the servos, a bilinear curve function can be defined using the following parameters `PWM_MAIN_CENTx` / `PWM_AUX_CENTx` for each servo. This allows for unequal deflections in the positive and negative direction:
|
||||
|
||||

|
||||
|
||||
To set this up:
|
||||
|
||||
1. Set all surface `Trim` to `0.00` for all surfaces:
|
||||
|
||||

|
||||
|
||||
2. Set the `PWM_MAIN_CENTx` / `PWM_AUX_CENTx` value so that the surface will stay at the neutral (aligned with airfoil) position.
|
||||
This is usually around `1500` for PWM servos (near the center of the servo range).
|
||||
|
||||

|
||||
|
||||
3. Gradually increase the `Maximum` for each servo until the desired deflection is reached. Check the deflection with a remote manual mode while [`COM_PREARM_MODE`](../advanced_config/parameter_reference.md#COM_PREARM_MODE) is set to `Always` or use the sliders.
|
||||
4. Gradually decrease the `Minimum` for each servo, until the desired deflection is reached.
|
||||
5. Set `Disarmed` value to the desired value. It is usually desirable to have it the same as the `Center` value.
|
||||
|
||||
::: info
|
||||
If you want to retain the linear behaviour of the servo after setting the `Center`, make sure to adjust the `Minimum` or `Maximum`, such that both intervals (`min` to `cent` & `cent` to `max`) are equally large.
|
||||
|
||||

|
||||
:::
|
||||
|
||||
#### Non-PWM: Control surfaces that move both directions about a neutral point
|
||||
|
||||
Control surfaces that move either direction around a neutral point include: ailerons, elevons, V-tails, A-tails, and rudders.
|
||||
|
||||
To set these up:
|
||||
|
||||
0. Set all `PWM_MAIN_CENTx` and `PWM_AUX_CENTx` to default (-1), or trimming will not be possible.
|
||||
|
||||
1. Set the `Disarmed` value so that the surfaces will stay at neutral position when disarmed.
|
||||
This is usually around `1500` for PWM servos (near the centre of the servo range).
|
||||
|
||||
@@ -559,14 +589,17 @@ To set these up:
|
||||
3. Move the slider again to the middle and check if the Control Surfaces are aligned in the neutral position of the wing.
|
||||
- If it is not aligned, you can set the **Trim** value for the control surface.
|
||||
|
||||
::: info
|
||||
This is done in the `Trim` setting of the Geometry panel, usually by "trial and error".
|
||||

|
||||
:::
|
||||
|
||||
::: info
|
||||
This is done in the `Trim` setting of the Geometry panel, usually by "trial and error".
|
||||

|
||||
:::
|
||||
- After setting the trim for a control surface, move its slider away from the centre, release, and then back into disarmed (middle) position.
|
||||
Confirm that surface is in the neutral position.
|
||||
|
||||
::: tip
|
||||
If any servo has a `PWM_MAIN_CENTx` or `PWM_AUX_CENTx` not set to default (-1), the system will automatically remove `Trim` from all surfaces. This is done to prevent mixing of old and new trimming tools.
|
||||
:::
|
||||
|
||||
::: info
|
||||
Another way to test without using the sliders would be to set the [`COM_PREARM_MODE`](../advanced_config/parameter_reference.md#COM_PREARM_MODE) parameter to `Always`:
|
||||
|
||||
@@ -585,6 +618,7 @@ For a flap, that is when the flap is fully retracted and flush with the wing.
|
||||
|
||||
One approach for setting these up is:
|
||||
|
||||
0. Set all `PWM_MAIN_CENTx` and `PWM_AUX_CENTx` to default (-1), or trimming will not be possible.
|
||||
1. Set values `Disarmed` to `1500`, `Min` to `1200`, `Max` to `1700` so that the values are around the centre of the servo range.
|
||||
2. Move the corresponding slider up and check the control moves and that it is extending (moving away from the disarmed position).
|
||||
If not, click on the `Rev Range` checkbox to reverse the range.
|
||||
@@ -594,6 +628,7 @@ One approach for setting these up is:
|
||||
- If the value was increased towards `Max`, then set `Max` to match `Disarmed`.
|
||||
4. The value that you did _not_ set to match `Disarmed` controls the maximum amount that the control surface can extend.
|
||||
Set the slider to the top of the control, then change the value (`Max` or `Min`) so that the control surface is fully extended when the slider is at top.
|
||||
5. (Only PWM servos) Set the `Center` value to the middle between `Min` and `Max`.
|
||||
|
||||
::: info Special note for flaps
|
||||
In some vehicle builds, flaps may be configured such that both flaps are controlled from a single output.
|
||||
@@ -631,6 +666,11 @@ For each of the tilt servos:
|
||||
- Standard VTOL : Motors defined as multicopter motors will be turned off
|
||||
- Tiltrotors : Motors that have no associated tilt servo will turn off
|
||||
- Tailsitters do not turn off any motors in fixed-wing flight
|
||||
- The following formula can be used to migrate from surface trim to PWM trim:
|
||||
|
||||
```plain
|
||||
PWM_MAIN_CENTx = ((PWM_MAX - PWM_MIN) / 2) * CA_SV_CSx_TRIM + PWM_MIN + ((PWM_MAX - PWM_MIN) / 2)
|
||||
```
|
||||
|
||||
### Reversing Motors
|
||||
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
# Airspeed Scale Handling
|
||||
|
||||
::: info
|
||||
This section complements the existing [Airspeed Validation](../advanced_config/airspeed_validation.md) documentation.
|
||||
:::
|
||||
|
||||
The airspeed scale is used by PX4 to convert the measured airspeed (indicated airspeed) to the calibrated airspeed.
|
||||
This scale can be set by [ASPD_SCALE_n](../advanced_config/parameter_reference.md#ASPD_SCALE_1) (where `n` is the sensor number), and logged in [AirspeedWind.msg](../msg_docs/AirspeedWind.md).
|
||||
|
||||
Note that the airspeed scale is different from the airspeed sensor offset calibration done on the ground at 0 m/s. The airspeed scale accounts for errors in the airspeed measurement during flight, such as those caused by sensor placement or installation effects.
|
||||
|
||||
This topic describes how to set an initial airspeed scale for a new fixed-wing vehicle during its first flight. Correct scale calibration ensures reliable airspeed data, accurate TAS calculation, robust PX4 airspeed validation, and consistent controller performance.
|
||||
|
||||
## Airspeed in PX4
|
||||
|
||||
PX4 handles multiple types of airspeed:
|
||||
|
||||
- **IAS (Indicated Airspeed):** The raw measurement from the airspeed sensor, directly influenced by sensor characteristics and installation effects (e.g., pitot-static errors).
|
||||
- **CAS (Calibrated Airspeed):** IAS corrected for sensor-specific and installation-related errors.
|
||||
- **EAS (Equivalent Airspeed):** _Not explicitly handled by PX4_ - Calibrated airspeed corrected for compressibility effects.
|
||||
While PX4 does not currently model EAS separately, this correction is negligible at low speeds and altitudes, so EAS is treated as equivalent to CAS for simplicity.
|
||||
- **TAS (True Airspeed):** CAS adjusted for atmospheric effects such as air pressure and temperature (i.e., altitude and atmospheric conditions).
|
||||
|
||||
The standard conversion chain used in PX4 is: `IAS → CAS (= EAS) → TAS`.
|
||||
|
||||
## CAS Scale Estimation
|
||||
|
||||
PX4 estimates the IAS to CAS scale (referred to as the CAS scale) during flight using GNSS ground speed and wind estimation.
|
||||
To compute the final TAS, standard environment conversions are applied (CAS → TAS).
|
||||
|
||||
:::warning Important
|
||||
A GNSS is required for scale estimation.
|
||||
:::
|
||||
|
||||
PX4 uses a two-stage approach to robustly estimate the scale:
|
||||
|
||||
1. **Continuous EKF Estimation**: A wind estimator constantly compares your measured airspeed against what it expects based on ground velocity (from GNSS) and estimated wind.
|
||||
If there's a consistent bias, it adjusts the scale estimate.
|
||||
The estimated scale is logged in the `AirspeedWind.msg` as the `tas_scale_raw`.
|
||||
2. **Validation**: To ensure robustness, PX4 collects airspeed and ground speed data across 12 different heading segments (every 30°).
|
||||
This averages out wind estimation errors.
|
||||
The validated scale is only updated when the new estimate demonstrably reduces the error between predicted and actual ground speeds across all headings.
|
||||
The validated scale is logged in the `AirspeedWind.msg` as the `tas_scale_validated`.
|
||||
|
||||
### Understanding the Scale: Physical Intuition
|
||||
|
||||
The CAS scale is essentially a correction factor that accounts for systematic errors in your airspeed sensor installation.
|
||||
|
||||
- A scale of 1.0 means your sensor reads perfectly (no correction needed)
|
||||
- A scale > 1.0 (e.g., 1.1) means your sensor _under-reads_ by 10%, so measured airspeed (IAS) must be multiplied by 1.1
|
||||
- A scale < 1.0 (e.g., 0.9) means your sensor _over-reads_ by ~11%, so measured airspeed (IAS) must be multiplied by 0.9
|
||||
|
||||
### What Affects the Airspeed Scale
|
||||
|
||||
The primary factor influencing the airspeed scale is **sensor placement**.
|
||||
|
||||
Biased readings can be reflected in the scale estimate for pitot tubes installed:
|
||||
|
||||
- In regions experiencing disturbed flow (commonly near blunt aircraft noses)
|
||||
- Near propellers
|
||||
- Under aerodynamic surfaces
|
||||
- At an angle with respect to the airflow
|
||||
|
||||
### Symptoms of Incorrect Scale
|
||||
|
||||
Symptoms of an incorrectly scaled airspeed measurement include:
|
||||
|
||||
- Stalling or overspeeding
|
||||
- Persistent under- or overestimation of the TAS relative to wind-corrected groundspeed
|
||||
- False positives or missed detections in [airspeed innovation checks](../advanced_config/airspeed_validation.md#innovation-check)
|
||||
- Degraded tracking of the rate controllers
|
||||
|
||||
## Recommended First Flight Process
|
||||
|
||||
During the first flight of a new fixed-wing vehicle, allocate time for the CAS scale to converge to a reasonable initial estimate.
|
||||
Follow these steps:
|
||||
|
||||
1. **Set an Initial Scale**
|
||||
|
||||
Use a conservative starting point: set the CAS scale (`ASPD_SCALE_n`) slightly under 1.0 (for example 0.95).
|
||||
This biases the system toward over-speed rather than under-speed, reducing stall risk.
|
||||
|
||||
2. **Perform a Flight**
|
||||
|
||||
After takeoff, place the vehicle in loiter for about 15 minutes to allow the scale estimation to converge.
|
||||
|
||||
3. **Check Scale Convergence**
|
||||
|
||||
After the flight, review the estimated scale in logs.
|
||||
Verify that:
|
||||
- `tas_scale_validated` in `AirspeedWind.msg` converged during flight.
|
||||
- `true_airspeed_m_s` (TAS) in [AirspeedValidated.msg](../msg_docs/AirspeedValidated.md) is consistent with groundspeed corrected for wind.
|
||||
|
||||
4. **Update the Airframe Configuration**
|
||||
|
||||
If using an [airframe configuration file](../dev_airframes/adding_a_new_frame.md): update `ASPD_SCALE_n`with the estimated CAS scale for future flights.
|
||||
For similar vehicles with similarly mounted sensors, this value is typically a reliable starting point.
|
||||
|
||||
::: info
|
||||
If you are not able to perform the steps outlined above ...
|
||||
|
||||
For a quick manual CAS scale estimate, compare groundspeed minus windspeed (from the [VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) and [Wind](../msg_docs/Wind.md) messages, respectively) to indicated airspeed values (in the [Airspeed](../msg_docs/Airspeed.md) message).
|
||||
The ratio of indicated airspeed to groundspeed minus windspeed can provide a reasonable starting estimate for `ASPD_SCALE_n`.
|
||||
:::
|
||||
@@ -3,7 +3,7 @@
|
||||
Fixed-wing configuration and calibration follows the same high level steps as other frames: selection of firmware, configuration of the frame including actuator/motor geometry and output mappings, sensor configuration and calibration, configuration of safety and other features, and finally tuning.
|
||||
|
||||
::: info
|
||||
This topic is the recommended entry point when performing first-time configuration and calibration of a new multicopter frame.
|
||||
This topic is the recommended entry point when performing first-time configuration and calibration of a new fixed-wing frame.
|
||||
:::
|
||||
|
||||
The main steps are:
|
||||
@@ -17,3 +17,4 @@ The main steps are:
|
||||
|
||||
- [Fixed-wing Altitude/Position Controller Tuning Guide](../config_fw/position_tuning_guide_fixedwing.md)
|
||||
- [Fixed-wing Trimming Guide](../config_fw/trimming_guide_fixedwing.md)
|
||||
- [Fixed-Wing Airspeed Scale Handling](../config_fw/airspeed_scale_handling.md)
|
||||
|
||||
@@ -17,6 +17,8 @@ Manual tuning is recommended for frames where autotuning does not work, or where
|
||||
- Excessive gains (and rapid servo motion) can violate the maximum forces of your airframe - increase gains carefully.
|
||||
- Roll and pitch tuning follow the same sequence.
|
||||
The only difference is that pitch is more sensitive to trim offsets, so [trimming](../config_fw/trimming_guide_fixedwing.md) has to be done carefully and integrator gains need more attention to compensate this.
|
||||
- Disable automatic [gain compression](../features_fw/gain_compression.md) ([FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN)) to avoid over-tuning.
|
||||
Remember to re-enable it when tuning is done.
|
||||
|
||||
## Establishing the Airframe Baseline
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ Navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and
|
||||
|
||||
One approach to determine an appropriate value is:
|
||||
1. From a standstill, give the rover full throttle until it reaches the maximum speed.
|
||||
2. Disarm the rover and plot the `measured_speed_body_x` from [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md).
|
||||
2. Disarm the rover and plot the `measured_speed_body_x` from [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md).
|
||||
3. Divide the maximum speed by the time it took to reach it and set this as the value for [RO_ACCEL_LIM](#RO_ACCEL_LIM).
|
||||
|
||||
Some RC rovers have enough torque to lift up if the maximum acceleration is not limited.
|
||||
|
||||
@@ -19,7 +19,6 @@ To tune the position controller configure the [parameters](../advanced_config/pa
|
||||
$v*{max} = v*{full throttle} \cdot (1 - \theta\_{normalized} \cdot k) $
|
||||
|
||||
with
|
||||
|
||||
- $v_{max}:$ Maximum speed
|
||||
- $v_{full throttle}:$ Speed at maximum throttle [RO_MAX_THR_SPEED](../advanced_config/parameter_reference.md#RO_MAX_THR_SPEED).
|
||||
- $\theta_{normalized}:$ Course error (Course - bearing setpoint) normalized from $[0\degree, 180\degree]$ to $[0, 1]$
|
||||
@@ -34,14 +33,13 @@ To tune the position controller configure the [parameters](../advanced_config/pa
|
||||
|
||||
::: tip
|
||||
Plan a mission for the rover to drive a square and observe how it slows down when approaching a waypoint:
|
||||
|
||||
- If the rover decelerates too quickly decrease the [RO_DECEL_LIM](../advanced_config/parameter_reference.md#RO_DECEL_LIM) parameter, if it starts slowing down too early increase the parameter.
|
||||
- If you observe a jerking motion as the rover slows down, decrease the [RO_JERK_LIM](../advanced_config/parameter_reference.md#RO_JERK_LIM) parameter otherwise increase it as much as possible as it can interfere with the tuning of [RO_DECEL_LIM](../advanced_config/parameter_reference.md#RO_DECEL_LIM).
|
||||
|
||||
These two parameters have to be tuned as a pair, repeat until you are satisfied with the behaviour.
|
||||
:::
|
||||
|
||||
3. Plot the `adjusted_speed_body_x_setpoint` and `measured_speed_body_x` from the [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) message over each other.
|
||||
3. Plot the `adjusted_speed_body_x_setpoint` and `measured_speed_body_x` from the [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) message over each other.
|
||||
If the tracking of these setpoints is not satisfactory adjust the values for [RO_SPEED_P](../advanced_config/parameter_reference.md#RO_SPEED_P) and [RO_SPEED_I](../advanced_config/parameter_reference.md#RO_SPEED_I).
|
||||
|
||||
## Path Following
|
||||
@@ -57,7 +55,6 @@ The following parameters are used to tune the algorithm:
|
||||
Decreasing the parameter makes it more aggressive but can lead to oscillations.
|
||||
|
||||
To tune this:
|
||||
|
||||
1. Start with a value of 1 for [PP_LOOKAHD_GAIN](#PP_LOOKAHD_GAIN)
|
||||
2. Put the rover in [Position mode](../flight_modes_rover/manual.md#position-mode) and while driving a straight line at approximately half the maximum speed observe its behaviour.
|
||||
3. If the rover does not drive in a straight line, reduce the value of the parameter, if it oscillates around the path increase the value.
|
||||
|
||||
@@ -23,11 +23,10 @@ To tune the velocity controller configure the following [parameters](../advanced
|
||||
|
||||
::: tip
|
||||
To further tune this parameter:
|
||||
|
||||
1. Set [RO_SPEED_P](#RO_SPEED_P) and [RO_SPEED_I](#RO_SPEED_I) to zero.
|
||||
This way the speed is only controlled by the feed-forward term, which makes it easier to tune.
|
||||
2. Put the rover in [Position mode](../flight_modes_rover/manual.md#position-mode) and then move the left stick of your controller up and/or down and hold it at a few different levels for a couple of seconds each.
|
||||
3. Disarm the rover and from the flight log plot the `adjusted_speed_body_x_setpoint` and the `measured_speed_body_x` from the [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md) message over each other.
|
||||
3. Disarm the rover and from the flight log plot the `adjusted_speed_body_x_setpoint` and the `measured_speed_body_x` from the [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md) message over each other.
|
||||
4. If the actual speed of the rover is higher than the speed setpoint, increase [RO_MAX_THR_SPEED](#RO_MAX_THR_SPEED).
|
||||
If it is the other way around decrease the parameter and repeat until you are satisfied with the setpoint tracking.
|
||||
|
||||
@@ -64,7 +63,6 @@ These steps are only necessary if you are tuning/want to unlock the manual [Posi
|
||||
Decreasing the parameter makes it more aggressive but can lead to oscillations.
|
||||
|
||||
To tune this:
|
||||
|
||||
1. Start with a value of 1 for [PP_LOOKAHD_GAIN](#PP_LOOKAHD_GAIN)
|
||||
2. Put the rover in [Position mode](../flight_modes_rover/manual.md#position-mode) and while driving a straight line at approximately half the maximum speed observe its behaviour.
|
||||
3. If the rover does not drive in a straight line, reduce the value of the parameter, if it oscillates around the path increase the value.
|
||||
|
||||
@@ -215,7 +215,7 @@ Predefined information messages are:
|
||||
| `char[value_len] ver_sw_branch` | git branch | "master" |
|
||||
| `uint32_t ver_sw_release` | Software version (see below) | 0x010401ff |
|
||||
| `char[value_len] sys_os_name` | Operating System Name | "Linux" |
|
||||
| `char[value_len] sys_os_ve`r | OS version (git tag) | "9f82919" |
|
||||
| `char[value_len] sys_os_ver` | OS version (git tag) | "9f82919" |
|
||||
| `uint32_t ver_os_release` | OS version (see below) | 0x010401ff |
|
||||
| `char[value_len] sys_toolchain` | Toolchain Name | "GNU GCC" |
|
||||
| `char[value_len] sys_toolchain_ver` | Toolchain Version | "6.2.1" |
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Gain compression
|
||||
|
||||
<Badge type="tip" text="main (planned for: PX4 v1.17)" />
|
||||
|
||||
Automatic gain compression reduces the gains of the angular-rate PID whenever oscillations are detected.
|
||||
It monitors the angular-rate controller output through a band-pass filter to identify these oscillations.
|
||||
|
||||
This approach is a safe adaptive mechanism for stable aircraft: the PID gains remain unchanged when no oscillations are present, they are never increased beyond their nominal values, and they are bounded by a minimum limit.
|
||||
|
||||
Gain compression can help prevent actuator damage and even loss of the vehicle in cases such as airspeed-sensor failure (loss of airspeed scaling) or in-flight changes in dynamics (e.g.: CG shifts, inertia changes), or other failures that could cause the angular-rate loop to become oscillatory.
|
||||
|
||||

|
||||
|
||||
## Usage
|
||||
|
||||
Gain compression is enabled by default ([FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN)).
|
||||
|
||||
It should be disabled during fixed wing [manual tuning](../config_fw/pid_tuning_guide_fixedwing.md) to avoid over-tuning.
|
||||
It does not need to be disabled when autotuning.
|
||||
|
||||
## Parameters
|
||||
|
||||
- [FW_GC_EN](../advanced_config/parameter_reference.md#FW_GC_EN)
|
||||
- [FW_GC_GAIN_MIN](../advanced_config/parameter_reference.md#FW_GC_GAIN_MIN)
|
||||
@@ -0,0 +1,5 @@
|
||||
# Fixedwing-Specific Features
|
||||
|
||||
This section lists features that are specific to (or customised for) fixed-wings:
|
||||
|
||||
- [Gain Compression](../features_fw/gain_compression.md)
|
||||
@@ -100,6 +100,24 @@ At very high level, the main differences are:
|
||||
|
||||
<a id="licensing-and-trademarks"></a>
|
||||
|
||||
### FMUv6 Comparison
|
||||
|
||||
| Feature | **FMUv6X-RT** | **FMUv6X** | **FMUv6C** |
|
||||
| ------------------ | --------------------- | ----------------- | ------------------ |
|
||||
| **FMU MCU** | NXP i.MX RT1176 | STM32H753 | STM32H743V |
|
||||
| **RAM** | 2 MB | 1 MB | 1 MB |
|
||||
| **Flash** | 64 MB Octal SPI | 2 MB internal | 2 MB internal |
|
||||
| **IO MCU** | STM32F103 | STM32F103 | STM32F103 |
|
||||
| **Secure Element** | NXP SE051 | NXP SE051 | Not supported |
|
||||
| **PAB Standard** | Supported | Supported | Not supported |
|
||||
| **Ethernet** | Supported | Supported | Not supported |
|
||||
| **IMUs** | 3× | 3× | 2× |
|
||||
| **Barometers** | 2× | 2× | 1× |
|
||||
| **Magnetometer** | 1× | 1× | 1× |
|
||||
| **FMU PWM** | 12× | 8× | 8× |
|
||||
| **IO PWM** | 8× | 8× | 8× |
|
||||
| **CAN Bus** | 3× | 2× | 2× |
|
||||
|
||||
### Licensing and Trademarks
|
||||
|
||||
Pixhawk project schematics and reference designs are licensed under [CC BY-SA 3](https://creativecommons.org/licenses/by-sa/3.0/legalcode).
|
||||
|
||||
@@ -196,6 +196,14 @@ It is possible to have low DOP (good satellite geometry) but still have high EPH
|
||||
|
||||
EPH/EPV values therefore provide a more immediate and practical estimate of the actual GPS accuracy you can expect under current conditions.
|
||||
|
||||
### GNSS Position Fusion
|
||||
|
||||
GNSS position fusion will not begin until yaw alignment is established.
|
||||
If a magnetometer is available, the EKF aligns yaw using the magnetic heading, allowing GPS position fusion to start soon after boot.
|
||||
If no magnetometer is present, the system must rely on GPS yaw (from a dual-antenna setup) or movement-based yaw estimation.
|
||||
Until one of these provides a valid heading, the EKF will not start GPS position fusion, and the vehicle will remain in a “no position” state even though attitude data is valid.
|
||||
This behavior prevents large position errors that could occur when the yaw reference is uncertain.
|
||||
|
||||
## Developer Information
|
||||
|
||||
- GPS/RTK-GPS
|
||||
|
||||
@@ -41,6 +41,23 @@ Key features:
|
||||
|
||||
See [Log Analysis using Flight Review](../log/flight_review.md) for an introduction.
|
||||
|
||||
### Foxglove
|
||||
|
||||
[Foxglove](https://foxglove.dev/) is a purpose-built robotics observation platform that works natively with ULog.
|
||||
It allows you to replay your flights and seek through the timeline to find data of interest.
|
||||
|
||||
Key features:
|
||||
|
||||
- Native support for ULog files — open files by dragging and dropping or using the file dialog.
|
||||
- Multiple visualization panels, including Raw Messages, Plot, 3D, and Map panels.
|
||||
- [PX4 Converter extension](https://github.com/foxglove/px4_converter) that translates selected uORB messages and creates Foxglove schemas for enhanced visualizations.
|
||||
- Save and share custom layouts with panels and their settings.
|
||||
- Cross-platform desktop application (Windows, macOS, Linux).
|
||||
|
||||
See [Foxglove PX4 Docs](https://docs.foxglove.dev/docs/getting-started/frameworks/px4) for more detailed information and instructions.
|
||||
|
||||

|
||||
|
||||
### PlotJuggler
|
||||
|
||||
[PlotJuggler](https://github.com/facontidavide/PlotJuggler) is a desktop application that allows users to easily visualize and analyze data expressed in the form of time series.
|
||||
|
||||
@@ -4,75 +4,84 @@
|
||||
This document is [auto-generated](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/msg/generate_msg_docs.py) from the source code.
|
||||
:::
|
||||
|
||||
|
||||
The [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) file specifies which uORB message definitions are compiled into the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) and/or [zenoh](../modules/modules_driver.md#zenoh) module when [PX4 is built](../middleware/uxrce_dds.md#code-generation), and hence which topics are available for ROS 2 applications to subscribe or publish (by default).
|
||||
The [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) file specifies which uORB message definitions are compiled into the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) module when [PX4 is built](../middleware/uxrce_dds.md#code-generation), and hence which topics are available for ROS 2 applications to subscribe or publish (by default).
|
||||
|
||||
This document shows a markdown-rendered version of [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), listing the publications, subscriptions, and so on.
|
||||
|
||||
## Publications
|
||||
|
||||
Topic | Type| Rate Limit
|
||||
--- | --- | ---
|
||||
`/fmu/out/register_ext_component_reply` | [px4_msgs::msg::RegisterExtComponentReply](../msg_docs/RegisterExtComponentReply.md) |
|
||||
`/fmu/out/arming_check_request` | [px4_msgs::msg::ArmingCheckRequest](../msg_docs/ArmingCheckRequest.md) | 5.0
|
||||
`/fmu/out/mode_completed` | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) | 50.0
|
||||
`/fmu/out/battery_status` | [px4_msgs::msg::BatteryStatus](../msg_docs/BatteryStatus.md) | 1.0
|
||||
`/fmu/out/collision_constraints` | [px4_msgs::msg::CollisionConstraints](../msg_docs/CollisionConstraints.md) | 50.0
|
||||
`/fmu/out/estimator_status_flags` | [px4_msgs::msg::EstimatorStatusFlags](../msg_docs/EstimatorStatusFlags.md) | 5.0
|
||||
`/fmu/out/failsafe_flags` | [px4_msgs::msg::FailsafeFlags](../msg_docs/FailsafeFlags.md) | 5.0
|
||||
`/fmu/out/manual_control_setpoint` | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) | 25.0
|
||||
`/fmu/out/message_format_response` | [px4_msgs::msg::MessageFormatResponse](../msg_docs/MessageFormatResponse.md) |
|
||||
`/fmu/out/position_setpoint_triplet` | [px4_msgs::msg::PositionSetpointTriplet](../msg_docs/PositionSetpointTriplet.md) | 5.0
|
||||
`/fmu/out/sensor_combined` | [px4_msgs::msg::SensorCombined](../msg_docs/SensorCombined.md) |
|
||||
`/fmu/out/timesync_status` | [px4_msgs::msg::TimesyncStatus](../msg_docs/TimesyncStatus.md) | 10.0
|
||||
`/fmu/out/vehicle_land_detected` | [px4_msgs::msg::VehicleLandDetected](../msg_docs/VehicleLandDetected.md) | 5.0
|
||||
`/fmu/out/vehicle_attitude` | [px4_msgs::msg::VehicleAttitude](../msg_docs/VehicleAttitude.md) |
|
||||
`/fmu/out/vehicle_control_mode` | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) | 50.0
|
||||
`/fmu/out/vehicle_command_ack` | [px4_msgs::msg::VehicleCommandAck](../msg_docs/VehicleCommandAck.md) |
|
||||
`/fmu/out/vehicle_global_position` | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) | 50.0
|
||||
`/fmu/out/vehicle_gps_position` | [px4_msgs::msg::SensorGps](../msg_docs/SensorGps.md) | 50.0
|
||||
`/fmu/out/vehicle_local_position` | [px4_msgs::msg::VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) | 50.0
|
||||
`/fmu/out/vehicle_odometry` | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) |
|
||||
`/fmu/out/vehicle_status` | [px4_msgs::msg::VehicleStatus](../msg_docs/VehicleStatus.md) | 5.0
|
||||
`/fmu/out/airspeed_validated` | [px4_msgs::msg::AirspeedValidated](../msg_docs/AirspeedValidated.md) | 50.0
|
||||
`/fmu/out/vtol_vehicle_status` | [px4_msgs::msg::VtolVehicleStatus](../msg_docs/VtolVehicleStatus.md) |
|
||||
`/fmu/out/home_position` | [px4_msgs::msg::HomePosition](../msg_docs/HomePosition.md) | 5.0
|
||||
| Topic | Type | Rate Limit |
|
||||
| ---------------------------------------- | -------------------------------------------------------------------------------------- | ---------- |
|
||||
| `/fmu/out/register_ext_component_reply` | [px4_msgs::msg::RegisterExtComponentReply](../msg_docs/RegisterExtComponentReply.md) |
|
||||
| `/fmu/out/arming_check_request` | [px4_msgs::msg::ArmingCheckRequest](../msg_docs/ArmingCheckRequest.md) | 5.0 |
|
||||
| `/fmu/out/mode_completed` | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) | 50.0 |
|
||||
| `/fmu/out/battery_status` | [px4_msgs::msg::BatteryStatus](../msg_docs/BatteryStatus.md) | 1.0 |
|
||||
| `/fmu/out/collision_constraints` | [px4_msgs::msg::CollisionConstraints](../msg_docs/CollisionConstraints.md) | 50.0 |
|
||||
| `/fmu/out/estimator_status_flags` | [px4_msgs::msg::EstimatorStatusFlags](../msg_docs/EstimatorStatusFlags.md) | 5.0 |
|
||||
| `/fmu/out/failsafe_flags` | [px4_msgs::msg::FailsafeFlags](../msg_docs/FailsafeFlags.md) | 5.0 |
|
||||
| `/fmu/out/manual_control_setpoint` | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) | 25.0 |
|
||||
| `/fmu/out/message_format_response` | [px4_msgs::msg::MessageFormatResponse](../msg_docs/MessageFormatResponse.md) |
|
||||
| `/fmu/out/position_setpoint_triplet` | [px4_msgs::msg::PositionSetpointTriplet](../msg_docs/PositionSetpointTriplet.md) | 5.0 |
|
||||
| `/fmu/out/sensor_combined` | [px4_msgs::msg::SensorCombined](../msg_docs/SensorCombined.md) |
|
||||
| `/fmu/out/timesync_status` | [px4_msgs::msg::TimesyncStatus](../msg_docs/TimesyncStatus.md) | 10.0 |
|
||||
| `/fmu/out/transponder_report` | [px4_msgs::msg::TransponderReport](../msg_docs/TransponderReport.md) |
|
||||
| `/fmu/out/vehicle_land_detected` | [px4_msgs::msg::VehicleLandDetected](../msg_docs/VehicleLandDetected.md) | 5.0 |
|
||||
| `/fmu/out/vehicle_attitude` | [px4_msgs::msg::VehicleAttitude](../msg_docs/VehicleAttitude.md) | 50.0 |
|
||||
| `/fmu/out/vehicle_control_mode` | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) | 50.0 |
|
||||
| `/fmu/out/vehicle_command_ack` | [px4_msgs::msg::VehicleCommandAck](../msg_docs/VehicleCommandAck.md) |
|
||||
| `/fmu/out/vehicle_global_position` | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) | 50.0 |
|
||||
| `/fmu/out/vehicle_gps_position` | [px4_msgs::msg::SensorGps](../msg_docs/SensorGps.md) | 50.0 |
|
||||
| `/fmu/out/vehicle_local_position` | [px4_msgs::msg::VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) | 50.0 |
|
||||
| `/fmu/out/vehicle_odometry` | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) | 100.0 |
|
||||
| `/fmu/out/vehicle_status` | [px4_msgs::msg::VehicleStatus](../msg_docs/VehicleStatus.md) | 5.0 |
|
||||
| `/fmu/out/airspeed_validated` | [px4_msgs::msg::AirspeedValidated](../msg_docs/AirspeedValidated.md) | 50.0 |
|
||||
| `/fmu/out/vtol_vehicle_status` | [px4_msgs::msg::VtolVehicleStatus](../msg_docs/VtolVehicleStatus.md) |
|
||||
| `/fmu/out/home_position` | [px4_msgs::msg::HomePosition](../msg_docs/HomePosition.md) | 5.0 |
|
||||
| `/fmu/out/wind` | [px4_msgs::msg::Wind](../msg_docs/Wind.md) | 1.0 |
|
||||
| `/fmu/out/gimbal_device_attitude_status` | [px4_msgs::msg::GimbalDeviceAttitudeStatus](../msg_docs/GimbalDeviceAttitudeStatus.md) | 20.0 |
|
||||
|
||||
## Subscriptions
|
||||
|
||||
Topic | Type
|
||||
--- | ---
|
||||
/fmu/in/register_ext_component_request | [px4_msgs::msg::RegisterExtComponentRequest](../msg_docs/RegisterExtComponentRequest.md)
|
||||
/fmu/in/unregister_ext_component | [px4_msgs::msg::UnregisterExtComponent](../msg_docs/UnregisterExtComponent.md)
|
||||
/fmu/in/config_overrides_request | [px4_msgs::msg::ConfigOverrides](../msg_docs/ConfigOverrides.md)
|
||||
/fmu/in/arming_check_reply | [px4_msgs::msg::ArmingCheckReply](../msg_docs/ArmingCheckReply.md)
|
||||
/fmu/in/message_format_request | [px4_msgs::msg::MessageFormatRequest](../msg_docs/MessageFormatRequest.md)
|
||||
/fmu/in/mode_completed | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md)
|
||||
/fmu/in/config_control_setpoints | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md)
|
||||
/fmu/in/distance_sensor | [px4_msgs::msg::DistanceSensor](../msg_docs/DistanceSensor.md)
|
||||
/fmu/in/manual_control_input | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md)
|
||||
/fmu/in/offboard_control_mode | [px4_msgs::msg::OffboardControlMode](../msg_docs/OffboardControlMode.md)
|
||||
/fmu/in/onboard_computer_status | [px4_msgs::msg::OnboardComputerStatus](../msg_docs/OnboardComputerStatus.md)
|
||||
/fmu/in/obstacle_distance | [px4_msgs::msg::ObstacleDistance](../msg_docs/ObstacleDistance.md)
|
||||
/fmu/in/sensor_optical_flow | [px4_msgs::msg::SensorOpticalFlow](../msg_docs/SensorOpticalFlow.md)
|
||||
/fmu/in/goto_setpoint | [px4_msgs::msg::GotoSetpoint](../msg_docs/GotoSetpoint.md)
|
||||
/fmu/in/telemetry_status | [px4_msgs::msg::TelemetryStatus](../msg_docs/TelemetryStatus.md)
|
||||
/fmu/in/trajectory_setpoint | [px4_msgs::msg::TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md)
|
||||
/fmu/in/vehicle_attitude_setpoint | [px4_msgs::msg::VehicleAttitudeSetpoint](../msg_docs/VehicleAttitudeSetpoint.md)
|
||||
/fmu/in/vehicle_mocap_odometry | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md)
|
||||
/fmu/in/vehicle_rates_setpoint | [px4_msgs::msg::VehicleRatesSetpoint](../msg_docs/VehicleRatesSetpoint.md)
|
||||
/fmu/in/vehicle_visual_odometry | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md)
|
||||
/fmu/in/vehicle_command | [px4_msgs::msg::VehicleCommand](../msg_docs/VehicleCommand.md)
|
||||
/fmu/in/vehicle_command_mode_executor | [px4_msgs::msg::VehicleCommand](../msg_docs/VehicleCommand.md)
|
||||
/fmu/in/vehicle_thrust_setpoint | [px4_msgs::msg::VehicleThrustSetpoint](../msg_docs/VehicleThrustSetpoint.md)
|
||||
/fmu/in/vehicle_torque_setpoint | [px4_msgs::msg::VehicleTorqueSetpoint](../msg_docs/VehicleTorqueSetpoint.md)
|
||||
/fmu/in/actuator_motors | [px4_msgs::msg::ActuatorMotors](../msg_docs/ActuatorMotors.md)
|
||||
/fmu/in/actuator_servos | [px4_msgs::msg::ActuatorServos](../msg_docs/ActuatorServos.md)
|
||||
/fmu/in/aux_global_position | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md)
|
||||
/fmu/in/fixed_wing_longitudinal_setpoint | [px4_msgs::msg::FixedWingLongitudinalSetpoint](../msg_docs/FixedWingLongitudinalSetpoint.md)
|
||||
/fmu/in/fixed_wing_lateral_setpoint | [px4_msgs::msg::FixedWingLateralSetpoint](../msg_docs/FixedWingLateralSetpoint.md)
|
||||
/fmu/in/longitudinal_control_configuration | [px4_msgs::msg::LongitudinalControlConfiguration](../msg_docs/LongitudinalControlConfiguration.md)
|
||||
/fmu/in/lateral_control_configuration | [px4_msgs::msg::LateralControlConfiguration](../msg_docs/LateralControlConfiguration.md)
|
||||
| Topic | Type |
|
||||
| ------------------------------------------ | -------------------------------------------------------------------------------------------------- |
|
||||
| /fmu/in/register_ext_component_request | [px4_msgs::msg::RegisterExtComponentRequest](../msg_docs/RegisterExtComponentRequest.md) |
|
||||
| /fmu/in/unregister_ext_component | [px4_msgs::msg::UnregisterExtComponent](../msg_docs/UnregisterExtComponent.md) |
|
||||
| /fmu/in/config_overrides_request | [px4_msgs::msg::ConfigOverrides](../msg_docs/ConfigOverrides.md) |
|
||||
| /fmu/in/arming_check_reply | [px4_msgs::msg::ArmingCheckReply](../msg_docs/ArmingCheckReply.md) |
|
||||
| /fmu/in/message_format_request | [px4_msgs::msg::MessageFormatRequest](../msg_docs/MessageFormatRequest.md) |
|
||||
| /fmu/in/mode_completed | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) |
|
||||
| /fmu/in/config_control_setpoints | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) |
|
||||
| /fmu/in/distance_sensor | [px4_msgs::msg::DistanceSensor](../msg_docs/DistanceSensor.md) |
|
||||
| /fmu/in/manual_control_input | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) |
|
||||
| /fmu/in/offboard_control_mode | [px4_msgs::msg::OffboardControlMode](../msg_docs/OffboardControlMode.md) |
|
||||
| /fmu/in/onboard_computer_status | [px4_msgs::msg::OnboardComputerStatus](../msg_docs/OnboardComputerStatus.md) |
|
||||
| /fmu/in/obstacle_distance | [px4_msgs::msg::ObstacleDistance](../msg_docs/ObstacleDistance.md) |
|
||||
| /fmu/in/sensor_optical_flow | [px4_msgs::msg::SensorOpticalFlow](../msg_docs/SensorOpticalFlow.md) |
|
||||
| /fmu/in/goto_setpoint | [px4_msgs::msg::GotoSetpoint](../msg_docs/GotoSetpoint.md) |
|
||||
| /fmu/in/telemetry_status | [px4_msgs::msg::TelemetryStatus](../msg_docs/TelemetryStatus.md) |
|
||||
| /fmu/in/trajectory_setpoint | [px4_msgs::msg::TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) |
|
||||
| /fmu/in/vehicle_attitude_setpoint | [px4_msgs::msg::VehicleAttitudeSetpoint](../msg_docs/VehicleAttitudeSetpoint.md) |
|
||||
| /fmu/in/vehicle_mocap_odometry | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) |
|
||||
| /fmu/in/vehicle_rates_setpoint | [px4_msgs::msg::VehicleRatesSetpoint](../msg_docs/VehicleRatesSetpoint.md) |
|
||||
| /fmu/in/vehicle_visual_odometry | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) |
|
||||
| /fmu/in/vehicle_command | [px4_msgs::msg::VehicleCommand](../msg_docs/VehicleCommand.md) |
|
||||
| /fmu/in/vehicle_command_mode_executor | [px4_msgs::msg::VehicleCommand](../msg_docs/VehicleCommand.md) |
|
||||
| /fmu/in/vehicle_thrust_setpoint | [px4_msgs::msg::VehicleThrustSetpoint](../msg_docs/VehicleThrustSetpoint.md) |
|
||||
| /fmu/in/vehicle_torque_setpoint | [px4_msgs::msg::VehicleTorqueSetpoint](../msg_docs/VehicleTorqueSetpoint.md) |
|
||||
| /fmu/in/actuator_motors | [px4_msgs::msg::ActuatorMotors](../msg_docs/ActuatorMotors.md) |
|
||||
| /fmu/in/actuator_servos | [px4_msgs::msg::ActuatorServos](../msg_docs/ActuatorServos.md) |
|
||||
| /fmu/in/aux_global_position | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) |
|
||||
| /fmu/in/fixed_wing_longitudinal_setpoint | [px4_msgs::msg::FixedWingLongitudinalSetpoint](../msg_docs/FixedWingLongitudinalSetpoint.md) |
|
||||
| /fmu/in/fixed_wing_lateral_setpoint | [px4_msgs::msg::FixedWingLateralSetpoint](../msg_docs/FixedWingLateralSetpoint.md) |
|
||||
| /fmu/in/longitudinal_control_configuration | [px4_msgs::msg::LongitudinalControlConfiguration](../msg_docs/LongitudinalControlConfiguration.md) |
|
||||
| /fmu/in/lateral_control_configuration | [px4_msgs::msg::LateralControlConfiguration](../msg_docs/LateralControlConfiguration.md) |
|
||||
| /fmu/in/rover_position_setpoint | [px4_msgs::msg::RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md) |
|
||||
| /fmu/in/rover_speed_setpoint | [px4_msgs::msg::RoverSpeedSetpoint](../msg_docs/RoverSpeedSetpoint.md) |
|
||||
| /fmu/in/rover_attitude_setpoint | [px4_msgs::msg::RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md) |
|
||||
| /fmu/in/rover_rate_setpoint | [px4_msgs::msg::RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md) |
|
||||
| /fmu/in/rover_throttle_setpoint | [px4_msgs::msg::RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) |
|
||||
| /fmu/in/rover_steering_setpoint | [px4_msgs::msg::RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) |
|
||||
| /fmu/in/landing_gear | [px4_msgs::msg::LandingGear](../msg_docs/LandingGear.md) |
|
||||
|
||||
## Subscriptions Multi
|
||||
|
||||
@@ -85,192 +94,191 @@ They are not build into the module, and hence are neither published or subscribe
|
||||
|
||||
::: details See messages
|
||||
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [GimbalDeviceAttitudeStatus](../msg_docs/GimbalDeviceAttitudeStatus.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [BatteryInfo](../msg_docs/BatteryInfo.md)
|
||||
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md)
|
||||
- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [Wind](../msg_docs/Wind.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [LandingGear](../msg_docs/LandingGear.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [RoverVelocitySetpoint](../msg_docs/RoverVelocitySetpoint.md)
|
||||
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||
- [OrbTest](../msg_docs/OrbTest.md)
|
||||
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||
- [GpioOut](../msg_docs/GpioOut.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||
- [Gripper](../msg_docs/Gripper.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [HomePositionV0](../msg_docs/HomePositionV0.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [EscStatus](../msg_docs/EscStatus.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||
- [Ping](../msg_docs/Ping.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [SensorMag](../msg_docs/SensorMag.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||
- [UlogStream](../msg_docs/UlogStream.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
|
||||
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||
- [LedControl](../msg_docs/LedControl.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
|
||||
- [Event](../msg_docs/Event.md)
|
||||
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||
- [GpioIn](../msg_docs/GpioIn.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [Rpm](../msg_docs/Rpm.md)
|
||||
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [Cpuload](../msg_docs/Cpuload.md)
|
||||
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [QshellReq](../msg_docs/QshellReq.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||
- [TransponderReport](../msg_docs/TransponderReport.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||
- [Mission](../msg_docs/Mission.md)
|
||||
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||
- [MissionResult](../msg_docs/MissionResult.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md)
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [SensorTemp](../msg_docs/SensorTemp.md)
|
||||
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [HealthReport](../msg_docs/HealthReport.md)
|
||||
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||
- [DebugVect](../msg_docs/DebugVect.md)
|
||||
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [SystemPower](../msg_docs/SystemPower.md)
|
||||
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [Airspeed](../msg_docs/Airspeed.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [AdcReport](../msg_docs/AdcReport.md)
|
||||
- [PwmInput](../msg_docs/PwmInput.md)
|
||||
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||
- [TuneControl](../msg_docs/TuneControl.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||
- [LogMessage](../msg_docs/LogMessage.md)
|
||||
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||
- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
|
||||
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||
- [NeuralControl](../msg_docs/NeuralControl.md)
|
||||
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||
:::
|
||||
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||
- [DebugArray](../msg_docs/DebugArray.md)
|
||||
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||
- [GpsDump](../msg_docs/GpsDump.md)
|
||||
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||
- [DebugValue](../msg_docs/DebugValue.md)
|
||||
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||
- [RcChannels](../msg_docs/RcChannels.md)
|
||||
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||
- [InputRc](../msg_docs/InputRc.md)
|
||||
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||
- [EscReport](../msg_docs/EscReport.md)
|
||||
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||
- [EventV0](../msg_docs/EventV0.md)
|
||||
- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
|
||||
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||
:::
|
||||
|
||||
@@ -503,6 +503,11 @@ publications:
|
||||
- topic: /fmu/out/vehicle_trajectory_waypoint_desired
|
||||
type: px4_msgs::msg::VehicleTrajectoryWaypoint
|
||||
|
||||
- topic: /fmu/out/vehicle_imu
|
||||
type: px4_msgs::msg::VehicleImu
|
||||
rate_limit: 50.
|
||||
instance: 1 # OPTIONAL
|
||||
|
||||
subscriptions:
|
||||
|
||||
- topic: /fmu/in/offboard_control_mode
|
||||
@@ -535,6 +540,9 @@ Each (`topic`,`type`) pairs defines:
|
||||
4. The message type (`VehicleOdometry`, `VehicleStatus`, `OffboardControlMode`, etc.) and the ROS 2 package (`px4_msgs`) that is expected to provide the message definition.
|
||||
5. **(Optional)**: An additional `rate_limit` field (only for publication entries), which specifies the maximum rate (Hz) at which messages will be published on this topic by PX4 to ROS 2.
|
||||
If left unspecified, the maximum publication rate limit is set to 100 Hz.
|
||||
6. **(Optional)**: An additional `instance` field (only for publication entries), which lets you select which instance of a [multi-instance topic](./uorb.md#multi-instance) you want to be published to ROS 2.
|
||||
If provided, this option changes the ROS 2 topic name of the advertised uORB topic appending the instance number: `fmu/out/[uorb topic name][instance]` (plus eventual namespace and message version).
|
||||
In the example above the final topic name would be `/fmu/out/vehicle_imu1`.
|
||||
|
||||
`subscriptions` and `subscriptions_multi` allow us to choose the uORB topic instance that ROS 2 topics are routed to: either a shared instance that may also be getting updates from internal PX4 uORB publishers, or a separate instance that is reserved for ROS2 publications, respectively.
|
||||
Without this mechanism all ROS 2 messages would be routed to the _same_ uORB topic instance (because ROS 2 does not have the concept of [multiple topic instances](../middleware/uorb.md#multi-instance)), and it would not be possible for PX4 subscribers to differentiate between streams from ROS 2 or PX4 publishers.
|
||||
|
||||
@@ -434,6 +434,7 @@ The [complete example code](https://github.com/PX4/PX4-Autopilot/blob/main/src/e
|
||||
*/
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
#include <px4_platform_common/log.h>
|
||||
#include <px4_platform_common/tasks.h>
|
||||
#include <px4_platform_common/posix.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
Subcategories:
|
||||
|
||||
- [Adc](modules_driver_adc.md)
|
||||
- [Airspeed Sensor](modules_driver_airspeed_sensor.md)
|
||||
- [Baro](modules_driver_baro.md)
|
||||
- [Camera](modules_driver_camera.md)
|
||||
@@ -46,66 +47,6 @@ MCP23009 <command> [arguments...]
|
||||
status print status info
|
||||
```
|
||||
|
||||
## adc
|
||||
|
||||
Source: [drivers/adc/board_adc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/board_adc)
|
||||
|
||||
### Description
|
||||
|
||||
ADC driver.
|
||||
|
||||
### Usage {#adc_usage}
|
||||
|
||||
```
|
||||
adc <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
|
||||
test
|
||||
[-n] Do not publish ADC report, only system power
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
|
||||
## ads1115
|
||||
|
||||
Source: [drivers/adc/ads1115](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/ads1115)
|
||||
|
||||
### Description
|
||||
|
||||
Driver to enable an external [ADS1115](https://www.adafruit.com/product/1085) ADC connected via I2C.
|
||||
|
||||
The driver is included by default in firmware for boards that do not have an internal analog to digital converter,
|
||||
such as [PilotPi](../flight_controller/raspberry_pi_pilotpi.md) or [CUAV Nora](../flight_controller/cuav_nora.md)
|
||||
(search for `CONFIG_DRIVERS_ADC_ADS1115` in board configuration files).
|
||||
|
||||
It is enabled/disabled using the
|
||||
[ADC_ADS1115_EN](../advanced_config/parameter_reference.md#ADC_ADS1115_EN)
|
||||
parameter, and is disabled by default.
|
||||
If enabled, internal ADCs are not used.
|
||||
|
||||
### Usage {#ads1115_usage}
|
||||
|
||||
```
|
||||
ads1115 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-I] Internal I2C bus(es)
|
||||
[-X] External I2C bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-a <val>] I2C address
|
||||
default: 72
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
|
||||
## atxxxx
|
||||
|
||||
Source: [drivers/osd/atxxxx](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/osd/atxxxx)
|
||||
@@ -808,6 +749,30 @@ lsm303agr <command> [arguments...]
|
||||
status print status info
|
||||
```
|
||||
|
||||
## mcp9808
|
||||
|
||||
Source: [drivers/temperature_sensor/mcp9808](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/temperature_sensor/mcp9808)
|
||||
|
||||
### Usage {#mcp9808_usage}
|
||||
|
||||
```
|
||||
mcp9808 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-I] Internal I2C bus(es)
|
||||
[-X] External I2C bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-a <val>] I2C address
|
||||
default: 24
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
|
||||
## msp_osd
|
||||
|
||||
Source: [drivers/osd/msp_osd](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/osd/msp_osd)
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Modules Reference: Adc (Driver)
|
||||
|
||||
## TLA2528
|
||||
|
||||
Source: [drivers/adc/tla2528](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/tla2528)
|
||||
|
||||
### Usage {#TLA2528_usage}
|
||||
|
||||
```
|
||||
TLA2528 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-I] Internal I2C bus(es)
|
||||
[-X] External I2C bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
|
||||
## adc
|
||||
|
||||
Source: [drivers/adc/board_adc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/board_adc)
|
||||
|
||||
### Description
|
||||
|
||||
ADC driver.
|
||||
|
||||
### Usage {#adc_usage}
|
||||
|
||||
```
|
||||
adc <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
|
||||
test
|
||||
[-n] Do not publish ADC report, only system power
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
|
||||
## ads1115
|
||||
|
||||
Source: [drivers/adc/ads1115](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/ads1115)
|
||||
|
||||
### Description
|
||||
|
||||
Driver to enable an external [ADS1115](https://www.adafruit.com/product/1085) ADC connected via I2C.
|
||||
|
||||
The driver is included by default in firmware for boards that do not have an internal analog to digital converter,
|
||||
such as [PilotPi](../flight_controller/raspberry_pi_pilotpi.md) or [CUAV Nora](../flight_controller/cuav_nora.md)
|
||||
(search for `CONFIG_DRIVERS_ADC_ADS1115` in board configuration files).
|
||||
|
||||
It is enabled/disabled using the
|
||||
[ADC_ADS1115_EN](../advanced_config/parameter_reference.md#ADC_ADS1115_EN)
|
||||
parameter, and is disabled by default.
|
||||
If enabled, internal ADCs are not used.
|
||||
|
||||
### Usage {#ads1115_usage}
|
||||
|
||||
```
|
||||
ads1115 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-I] Internal I2C bus(es)
|
||||
[-X] External I2C bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
[-a <val>] I2C address
|
||||
default: 72
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
|
||||
## ads7953
|
||||
|
||||
Source: [drivers/adc/ads7953](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/adc/ads7953)
|
||||
|
||||
### Usage {#ads7953_usage}
|
||||
|
||||
```
|
||||
ads7953 <command> [arguments...]
|
||||
Commands:
|
||||
start
|
||||
[-s] Internal SPI bus(es)
|
||||
[-S] External SPI bus(es)
|
||||
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
|
||||
(default=1))
|
||||
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
|
||||
[-m <val>] SPI mode
|
||||
[-f <val>] bus frequency in kHz
|
||||
[-q] quiet startup (no message if no device found)
|
||||
|
||||
stop
|
||||
|
||||
status print status info
|
||||
```
|
||||
@@ -4,10 +4,9 @@
|
||||
|
||||
Source: [drivers/rc/crsf_rc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/rc/crsf_rc)
|
||||
|
||||
|
||||
### Description
|
||||
This module parses the CRSF RC uplink protocol and generates CRSF downlink telemetry data
|
||||
|
||||
This module parses the CRSF RC uplink protocol and generates CRSF downlink telemetry data
|
||||
|
||||
### Usage {#crsf_rc_usage}
|
||||
|
||||
@@ -17,6 +16,10 @@ crsf_rc <command> [arguments...]
|
||||
start
|
||||
[-d <val>] RC device
|
||||
values: <file:dev>, default: /dev/ttyS3
|
||||
[-b <val>] RC baudrate
|
||||
default: 420000
|
||||
|
||||
inject Inject frame data bytes (for testing)
|
||||
|
||||
stop
|
||||
|
||||
@@ -27,10 +30,9 @@ crsf_rc <command> [arguments...]
|
||||
|
||||
Source: [drivers/rc/dsm_rc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/rc/dsm_rc)
|
||||
|
||||
|
||||
### Description
|
||||
This module does Spektrum DSM RC input parsing.
|
||||
|
||||
This module does Spektrum DSM RC input parsing.
|
||||
|
||||
### Usage {#dsm_rc_usage}
|
||||
|
||||
@@ -52,10 +54,9 @@ dsm_rc <command> [arguments...]
|
||||
|
||||
Source: [drivers/rc/ghst_rc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/rc/ghst_rc)
|
||||
|
||||
|
||||
### Description
|
||||
This module does Ghost (GHST) RC input parsing.
|
||||
|
||||
This module does Ghost (GHST) RC input parsing.
|
||||
|
||||
### Usage {#ghst_rc_usage}
|
||||
|
||||
@@ -75,9 +76,10 @@ ghst_rc <command> [arguments...]
|
||||
|
||||
Source: [drivers/rc_input](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/rc_input)
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
This module does the RC input parsing and auto-selecting the method. Supported methods are:
|
||||
|
||||
- PPM
|
||||
- SBUS
|
||||
- DSM
|
||||
@@ -85,7 +87,6 @@ This module does the RC input parsing and auto-selecting the method. Supported m
|
||||
- ST24
|
||||
- TBS Crossfire (CRSF)
|
||||
|
||||
|
||||
### Usage {#rc_input_usage}
|
||||
|
||||
```
|
||||
@@ -106,10 +107,9 @@ rc_input <command> [arguments...]
|
||||
|
||||
Source: [drivers/rc/sbus_rc](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/rc/sbus_rc)
|
||||
|
||||
|
||||
### Description
|
||||
This module does SBUS RC input parsing.
|
||||
|
||||
This module does SBUS RC input parsing.
|
||||
|
||||
### Usage {#sbus_rc_usage}
|
||||
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
# AdcReport (UORB message)
|
||||
|
||||
ADC raw data.
|
||||
|
||||
Communicates raw data from an analog-to-digital converter (ADC) to other modules, such as battery status.
|
||||
|
||||
[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/AdcReport.msg)
|
||||
|
||||
```c
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
uint32 device_id # unique device ID for the sensor that does not change between power cycles
|
||||
int16[12] channel_id # ADC channel IDs, negative for non-existent, TODO: should be kept same as array index
|
||||
int32[12] raw_data # ADC channel raw value, accept negative value, valid if channel ID is positive
|
||||
uint32 resolution # ADC channel resolution
|
||||
float32 v_ref # ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution)
|
||||
# ADC raw data.
|
||||
#
|
||||
# Communicates raw data from an analog-to-digital converter (ADC) to other modules, such as battery status.
|
||||
|
||||
uint64 timestamp # [us] Time since system start
|
||||
uint32 device_id # [-] unique device ID for the sensor that does not change between power cycles
|
||||
int16[16] channel_id # [-] ADC channel IDs, negative for non-existent, TODO: should be kept same as array index
|
||||
int32[16] raw_data # [-] ADC channel raw value, accept negative value, valid if channel ID is positive
|
||||
uint32 resolution # [-] ADC channel resolution
|
||||
float32 v_ref # [V] ADC channel voltage reference, use to calculate LSB voltage(lsb=scale/resolution)
|
||||
|
||||
```
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# EscReport (UORB message)
|
||||
|
||||
|
||||
|
||||
[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EscReport.msg)
|
||||
|
||||
```c
|
||||
@@ -18,6 +16,19 @@ uint8 esc_state # State of ESC - depend on Vendor
|
||||
|
||||
uint8 actuator_function # actuator output function (one of Motor1...MotorN)
|
||||
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR1 = 101
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR2 = 102
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR3 = 103
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR4 = 104
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR5 = 105
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR6 = 106
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR7 = 107
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR8 = 108
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR9 = 109
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR10 = 110
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR11 = 111
|
||||
uint8 ACTUATOR_FUNCTION_MOTOR12 = 112
|
||||
|
||||
uint16 failures # Bitmask to indicate the internal ESC faults
|
||||
int8 esc_power # Applied power 0-100 in % (negative values reserved)
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# InputRc (UORB message)
|
||||
|
||||
|
||||
|
||||
[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/InputRc.msg)
|
||||
|
||||
```c
|
||||
@@ -39,11 +37,13 @@ bool rc_lost # RC receiver connection status: True,if no frame has arrived in
|
||||
uint16 rc_lost_frame_count # Number of lost RC frames. Note: intended purpose: observe the radio link quality if RSSI is not available. This value must not be used to trigger any failsafe-alike functionality.
|
||||
uint16 rc_total_frame_count # Number of total RC frames. Note: intended purpose: observe the radio link quality if RSSI is not available. This value must not be used to trigger any failsafe-alike functionality.
|
||||
uint16 rc_ppm_frame_length # Length of a single PPM frame. Zero for non-PPM systems
|
||||
uint16 rc_frame_rate # RC frame rate in msg/second. 0 = invalid
|
||||
|
||||
uint8 input_source # Input source
|
||||
uint16[18] values # measured pulse widths for each of the supported channels
|
||||
|
||||
int8 link_quality # link quality. Percentage 0-100%. -1 = invalid
|
||||
float32 rssi_dbm # Actual rssi in units of dBm. NaN = invalid
|
||||
int8 link_snr # link signal to noise ratio in units of dB. -1 = invalid
|
||||
|
||||
```
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# RoverVelocitySetpoint (UORB message)
|
||||
|
||||
Rover Velocity Setpoint
|
||||
|
||||
[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverVelocitySetpoint.msg)
|
||||
|
||||
```c
|
||||
# Rover Velocity Setpoint
|
||||
|
||||
uint64 timestamp # [us] Time since system start
|
||||
float32 speed # [m/s] [@range -inf (Backwards), inf (Forwards)] Speed setpoint
|
||||
float32 bearing # [rad] [@range -pi,pi] [@frame NED] [@invalid: NaN, speed is defined in body x direction] Bearing setpoint
|
||||
float32 yaw # [rad] [@range -pi, pi] [@frame NED] [@invalid NaN, Defaults to vehicle yaw] Mecanum only: Yaw setpoint
|
||||
|
||||
```
|
||||
@@ -1,18 +0,0 @@
|
||||
# RoverVelocityStatus (UORB message)
|
||||
|
||||
Rover Velocity Status
|
||||
|
||||
[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/RoverVelocityStatus.msg)
|
||||
|
||||
```c
|
||||
# Rover Velocity Status
|
||||
|
||||
uint64 timestamp # [us] Time since system start
|
||||
float32 measured_speed_body_x # [m/s] [@range -inf (Backwards), inf (Forwards)] [@frame Body] Measured speed in body x direction
|
||||
float32 adjusted_speed_body_x_setpoint # [m/s] [@range -inf (Backwards), inf (Forwards)] [@frame Body] Speed setpoint in body x direction that is being tracked (Applied slew rates)
|
||||
float32 pid_throttle_body_x_integral # [] [@range -1, 1] Integral of the PID for the closed loop controller of the speed in body x direction
|
||||
float32 measured_speed_body_y # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Measured speed in body y direction
|
||||
float32 adjusted_speed_body_y_setpoint # [m/s] [@range -inf (Left), inf (Right)] [@frame Body] [@invalid NaN If not mecanum] Mecanum only: Speed setpoint in body y direction that is being tracked (Applied slew rates)
|
||||
float32 pid_throttle_body_y_integral # [] [@range -1, 1] [@invalid NaN If not mecanum] Mecanum only: Integral of the PID for the closed loop controller of the speed in body y direction
|
||||
|
||||
```
|
||||
@@ -0,0 +1,11 @@
|
||||
# SensorTemp (UORB message)
|
||||
|
||||
[source file](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorTemp.msg)
|
||||
|
||||
```c
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
|
||||
uint32 device_id # unique device ID for the sensor that does not change between power cycles
|
||||
float32 temperature # Temperature provided by sensor (Celsius)
|
||||
|
||||
```
|
||||
@@ -28,7 +28,7 @@ uint16 VEHICLE_CMD_DO_ORBIT = 34 # Start orbiting on the circumference of a circ
|
||||
uint16 VEHICLE_CMD_DO_FIGUREEIGHT = 35 # Start flying on the outline of a figure eight defined by the parameters. |[m] Major radius|[m] Minor radius|[m/s] Velocity|Orientation|Latitude/X|Longitude/Y|Altitude/Z|
|
||||
uint16 VEHICLE_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras. |[@enum VEHICLE_ROI] Region of interest mode.|MISSION index/ target ID.|ROI index (allows a vehicle to manage multiple ROI's)|Unused|x the location of the fixed ROI (see MAV_FRAME)|y|z|
|
||||
uint16 VEHICLE_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV. |0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning|0: Disable full path planning (without resetting map), 1: Enable, 2: Enable and reset map/occupancy grid, 3: Enable and reset planned route, but not occupancy grid|Unused|[deg] [@range 0, 360] Yaw angle at goal, in compass degrees|Latitude/X of goal|Longitude/Y of goal|Altitude/Z of goal|
|
||||
uint16 VEHICLE_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground / hand and transition to fixed wing. |Minimum pitch (if airspeed sensor present), desired pitch without sensor|Unused|Unused|Yaw angle (if magnetometer present), ignored without magnetometer|Latitude|Longitude|Altitude|
|
||||
uint16 VEHICLE_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground / hand and transition to fixed wing. |Minimum pitch (if airspeed sensor present), desired pitch without sensor|Transition heading, 0: Default, 3: Use specified transition heading|Unused|Yaw angle (if magnetometer present), ignored without magnetometer|Latitude|Longitude|Altitude|
|
||||
uint16 VEHICLE_CMD_NAV_VTOL_LAND = 85 # Transition to MC and land at location. |Unused|Unused|Unused|Desired yaw angle.|Latitude|Longitude|Altitude|
|
||||
uint16 VEHICLE_CMD_NAV_GUIDED_LIMITS = 90 # Set limits for external control. |[s] Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout|[m] Absolute altitude min AMSL - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit|[m] Absolute altitude max - if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit|[m] Horizontal move limit (AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit|Unused|Unused|Unused|
|
||||
uint16 VEHICLE_CMD_NAV_GUIDED_MASTER = 91 # Set id of master controller. |System ID|Component ID|Unused|Unused|Unused|Unused|Unused|
|
||||
|
||||
@@ -84,7 +84,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
|
||||
- [ActuatorOutputs](ActuatorOutputs.md)
|
||||
- [ActuatorServosTrim](ActuatorServosTrim.md) — Servo trims, added as offset to servo outputs
|
||||
- [ActuatorTest](ActuatorTest.md)
|
||||
- [AdcReport](AdcReport.md)
|
||||
- [AdcReport](AdcReport.md) — ADC raw data.
|
||||
- [Airspeed](Airspeed.md) — Airspeed data from sensors
|
||||
- [AirspeedWind](AirspeedWind.md) — Wind estimate (from airspeed_selector)
|
||||
- [AutotuneAttitudeControlStatus](AutotuneAttitudeControlStatus.md) — Autotune attitude control status
|
||||
@@ -259,6 +259,7 @@ Graphs showing how these are used [can be found here](../middleware/uorb_graph.m
|
||||
The topic will not be updated when the vehicle is armed
|
||||
- [SensorSelection](SensorSelection.md) — Sensor ID's for the voted sensors output on the sensor_combined topic.
|
||||
Will be updated on startup of the sensor module and when sensor selection changes
|
||||
- [SensorTemp](SensorTemp.md)
|
||||
- [SensorUwb](SensorUwb.md) — UWB distance contains the distance information measured by an ultra-wideband positioning system,
|
||||
such as Pozyx or NXP Rddrone.
|
||||
- [SensorsStatus](SensorsStatus.md) — Sensor check metrics. This will be zero for a sensor that's primary or unpopulated.
|
||||
|
||||
@@ -76,6 +76,10 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
|
||||
|
||||
- TBD
|
||||
|
||||
### RC
|
||||
|
||||
- Parse ELRS Status and Link Statistics TX messages in the CRSF parser.
|
||||
|
||||
### Multi-Rotor
|
||||
|
||||
- Removed parameters `MPC_{XY/Z/YAW}_MAN_EXPO` and use default value instead, as they were not deemed necessary anymore. ([PX4-Autopilot#25435: Add new flight mode: Altitude Cruise](https://github.com/PX4/PX4-Autopilot/pull/25435)).
|
||||
@@ -89,6 +93,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
|
||||
|
||||
- [Fixed Wing Takeoff mode](../flight_modes_fw/takeoff.md) will now keep climbing with level wings on position loss.
|
||||
A target takeoff waypoint can be set to control takeoff course and loiter altitude. ([PX4-Autopilot#25083](https://github.com/PX4/PX4-Autopilot/pull/25083)).
|
||||
- Automatically suppress angular rate oscillations using [Gain compression](../features_fw/gain_compression.md). ([PX4-Autopilot#25840: FW rate control: add gain compression algorithm](https://github.com/PX4/PX4-Autopilot/pull/25840))
|
||||
|
||||
### Rover
|
||||
|
||||
|
||||
@@ -30,17 +30,51 @@ If needed, you can:
|
||||
- Change the selection order of barometers using the [CAL_BAROx_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO) parameters for each barometer.
|
||||
- Disable a barometer by setting its [CAL_BAROx_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO) value to `0`.
|
||||
|
||||
## Calibration
|
||||
## Baro Auto-Calibration (Developers)
|
||||
|
||||
Barometers don't require calibration.
|
||||
::: tip
|
||||
This section documents the automated calibration mechanisms that ensure accurate altitude measurements throughout flight operations.
|
||||
It is intended primarily for a developer audience who want to understand the underlying mechanisms.
|
||||
:::
|
||||
|
||||
<!-- Notes:
|
||||
- Absolute value isn't important since we just use the difference in altitude between "now" and the value when initializing EKF2
|
||||
- There is usually a scale factor error but it's compensated by the GNSS altitude using a bias estimator in EKF2 (we don't provide a way to calibrate that). This method is fine as long as the height change of the drone isn't too fast (below 200-300km/h probably; don't have real data on that).
|
||||
- The baro readings can be corrected using a param SENS_BARO_QNH (https://en.wikipedia.org/wiki/Altimeter_setting) parameter, but again, it is only necessary to adjust it if the absolute barometric altitude is required by the pilot.
|
||||
-->
|
||||
The system implements two complementary calibration approaches that work together to maintain altitude measurement precision.
|
||||
Both calibrations are initiated at the beginning after a system boot.
|
||||
Relative calibration is performed first, followed by GNSS-barometric calibration.
|
||||
|
||||
## Developer Information
|
||||
### Relative Calibration
|
||||
|
||||
Relative baro calibration is **always enabled** and operates automatically during system initialization.
|
||||
This calibration establishes offset corrections for all secondary baro sensors relative to the primary (selected) sensor.
|
||||
|
||||
This calibration:
|
||||
|
||||
- Eliminates altitude jumps when switching between baro sensors during flight.
|
||||
- Ensures consistent altitude readings across all available baro sensors.
|
||||
- Maintains seamless sensor redundancy and failover capability.
|
||||
|
||||
### GNSS-Baro Calibration
|
||||
|
||||
::: info
|
||||
GNSS-baro calibration requires an operational GNSS receiver with vertical accuracy (EPV) ≤ 8 meters.
|
||||
Relative calibration must already have completed.
|
||||
:::
|
||||
|
||||
GNSS-baro calibration adjusts baro sensor offsets to align with absolute altitude measurements from the GNSS receiver.
|
||||
This calibration is controlled by the [SENS_BAR_AUTOCAL](../advanced_config/parameter_reference.md#SENS_BAR_AUTOCAL) parameter (enabled by default).
|
||||
|
||||
The algorithm monitors GNSS quality, collects altitude differences over a 2-second filtered window, and verifies stability within 4m tolerance.
|
||||
Once stable, it uses binary search to calculate pressure offsets that align baro altitude with GNSS altitude (0.1m precision), then applies the offset to all sensors and saves the parameters.
|
||||
|
||||
Notes:
|
||||
|
||||
- **EKF Independence**: GNSS-baro calibration operates independently of EKF2 altitude fusion settings.
|
||||
- **Execution Timing**: Calibration runs even when [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL) altitude fusion is disabled.
|
||||
- **One-Time Process**: Each calibration session completes once per system startup.
|
||||
- **Persistence**: Calibration offsets are saved to parameters and persist across reboots.
|
||||
- **Faulty GNSS Vulnerability**: If GNSS data is faulty during boot, the calibration will use incorrect altitude reference.
|
||||
See [Faulty GNSS Data During Boot](../advanced_config/tuning_the_ecl_ekf.md#faulty-gnss-data-during-boot) for mitigation strategies.
|
||||
|
||||
## See Also
|
||||
|
||||
- [Baro driver source code](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/barometer)
|
||||
- [Modules Reference: Baro (Driver)](../modules/modules_driver_baro.md) documentation.
|
||||
|
||||
@@ -182,6 +182,7 @@
|
||||
- [Wiring Quickstart](assembly/quick_start_durandal.md)
|
||||
- [Holybro Pix32 v5](flight_controller/holybro_pix32_v5.md)
|
||||
- [Wiring Quickstart](assembly/quick_start_holybro_pix32_v5.md)
|
||||
- [MicoAir H743 Lite](flight_controller/micoair743-lite.md)
|
||||
- [ModalAI VOXL 2](flight_controller/modalai_voxl_2.md)
|
||||
- [mRo Control Zero F7](flight_controller/mro_control_zero_f7.md)
|
||||
- [Radiolink PIX6](flight_controller/radiolink_pix6.md)
|
||||
@@ -504,6 +505,7 @@
|
||||
- [UART/Serial 포트](uart/index.md)
|
||||
- [포트 설정 가능 시리얼 드라이버](uart/user_configurable_serial_driver.md)
|
||||
- [RTK GPS (통합)](advanced/rtk_gps.md)
|
||||
- [PPS Time Synchronization](advanced/pps_time_sync.md)
|
||||
- [미들웨어](middleware/index.md)
|
||||
- [uORB 메시지 전송](middleware/uorb.md)
|
||||
- [uORB 그라프](middleware/uorb_graph.md)
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
# PPS Time Synchronization (PX4 Integration)
|
||||
|
||||
[Pulse Per Second](https://en.wikipedia.org/wiki/Pulse-per-second_signal) (PPS) time synchronization provides high-precision timing for GNSS receivers.
|
||||
This page explains how PPS is integrated into PX4 and how to configure it.
|
||||
|
||||
## 개요
|
||||
|
||||
PPS (Pulse Per Second) is a timing signal provided by GNSS receivers that outputs an electrical pulse once per second, synchronized to UTC time.
|
||||
The PPS signal provides a highly accurate timing reference that PX4 can use to:
|
||||
|
||||
- Refine GNSS time measurements and compensate for clock drift
|
||||
- Provide precise UTC timestamps for camera capture events (for photogrammetry and mapping applications)
|
||||
- Enable offline position refinement through accurate time correlation
|
||||
|
||||
## 지원 하드웨어
|
||||
|
||||
PPS time synchronization can be supported on flight controllers that have a hardware timer input pin that can be configured for PPS capture, by [enabling the PPS capture driver](#enable-pps-driver-in-board-configuration) in the board configuration.
|
||||
|
||||
Supported boards include (at time of writing):
|
||||
|
||||
- [Ark FMUv6x](../flight_controller/ark_v6x.md)
|
||||
- Auterion FMUv6x
|
||||
- Auterion FMUv6s
|
||||
|
||||
## 설정
|
||||
|
||||
### Enable PPS Driver in Board Configuration
|
||||
|
||||
The [PPS capture driver](../modules/modules_driver.md#pps-capture) must be enabled in the board configuration.
|
||||
This is done by adding the following to your board's configuration:
|
||||
|
||||
```ini
|
||||
CONFIG_DRIVERS_PPS_CAPTURE=y
|
||||
```
|
||||
|
||||
### Configure PPS Parameters
|
||||
|
||||
The configuration varies depending on your flight controller hardware.
|
||||
|
||||
#### FMUv6X
|
||||
|
||||
For FMUv6X-based flight controllers, configure PWM AUX Timer 3 and Function 9:
|
||||
|
||||
```sh
|
||||
param set PWM_AUX_TIM3 -2
|
||||
param set PWM_AUX_FUNC9 2064
|
||||
param set PPS_CAP_ENABLE 1
|
||||
```
|
||||
|
||||
#### FMUv6S
|
||||
|
||||
For FMUv6S-based flight controllers, configure PWM MAIN Timer 3 and Function 10:
|
||||
|
||||
```sh
|
||||
param set PWM_MAIN_TIM3 -2
|
||||
param set PWM_MAIN_FUNC10 2064
|
||||
param set PPS_CAP_ENABLE 1
|
||||
```
|
||||
|
||||
### 배선
|
||||
|
||||
The wiring configuration depends on your specific flight controller.
|
||||
|
||||
#### Skynode X (FMUv6x)
|
||||
|
||||
Connect the PPS signal from your GNSS module to the flight controller using the 11-pin or 6-pin GPS connector:
|
||||
|
||||
For detailed pinout information, refer to:
|
||||
|
||||
- [Skynode GPS Peripherals - Pinouts](https://docs.auterion.com/hardware-integration/skynode/peripherals/gps#pinouts)
|
||||
|
||||
#### Skynode S (FMUv6S)
|
||||
|
||||
For FMUv6S, you need to route the PPS signal separately:
|
||||
|
||||
1. Connect your GNSS module using the standard 6-pin GPS connector: [Skynode S GPS Interface](https://docs.auterion.com/hardware-integration/skynode-s/interfaces#gps)
|
||||
2. Connect the PPS signal from your GNSS module to the **PPM_IN** pin: [Skynode S Extras 1 Interface](https://docs.auterion.com/hardware-integration/skynode-s/interfaces#extras-1)
|
||||
|
||||
#### ARK Jetson Carrier Board (FMUv6x)
|
||||
|
||||
For ARK FMUv6X on the Jetson carrier board:
|
||||
|
||||
1. Connect your GNSS module using either the 10-pin or 6-pin GPS connector: [ARK PAB GPS1 Interface](../flight_controller/ark_pab#gps1)
|
||||
2. Connect the PPS signal to the **FMU_CAP** pin: [ARK PAB ADIO Interface](../flight_controller/ark_pab.md#adio)
|
||||
|
||||
## 검증
|
||||
|
||||
After configuring PPS, you can verify that it is working correctly:
|
||||
|
||||
1. Connect to the [PX4 System Console](../debug/system_console.md) (via MAVLink shell or serial console).
|
||||
|
||||
2. Wait for GNSS fix.
|
||||
|
||||
3. Check the PPS capture status to confirm it is up and running:
|
||||
|
||||
```sh
|
||||
pps_capture status
|
||||
```
|
||||
|
||||
4. You can also check the [PpsCapture](../msg_docs/PpsCapture.md) uORB topic
|
||||
|
||||
```sh
|
||||
listener pps_capture
|
||||
```
|
||||
|
||||
Where you should see: `timestamp`, `rtc_timestamp`, and `pps_rate_exceeded_counter`.
|
||||
|
||||
### PPS Capture Driver
|
||||
|
||||
The PPS capture driver is located in `src/drivers/pps_capture` and uses hardware timer input capture to precisely measure the arrival time of each PPS pulse.
|
||||
|
||||
주요 기능:
|
||||
|
||||
- Sub-microsecond pulse capture precision (hardware-dependent)
|
||||
- Automatic drift calculation and compensation
|
||||
- Integration with the GNSS driver for refined time stamping
|
||||
|
||||
See also:
|
||||
|
||||
- [PPS Capture Driver Documentation](../modules/modules_driver.md#pps-capture)
|
||||
- [PpsCapture Message](../msg_docs/PpsCapture.md)
|
||||
|
||||
### Time Synchronization Flow
|
||||
|
||||
1. GNSS module sends position/time data at ~1-20 Hz.
|
||||
2. GNSS module outputs PPS pulse at 1 Hz, precisely aligned to UTC second boundary.
|
||||
3. PPS capture driver measures the exact time of the PPS pulse arrival using hardware timer.
|
||||
4. Driver calculates the offset between GNSS time (from UART data) and autopilot clock (from PPS measurement).
|
||||
5. This offset is used to correct GNSS timestamps and improve sensor fusion accuracy.
|
||||
|
||||
The PPS signal provides much higher temporal precision than the transmitted time data, which has latency and jitter from serial communication.
|
||||
|
||||
:::warning
|
||||
If the PPS driver does not sending any data for 5 seconds (despite having `PPS_CAP_ENABLE` set to 1), the `EKF2_GPS_DELAY` will be used instead for estimating the latency.
|
||||
:::
|
||||
@@ -89,7 +89,7 @@ Flight controllers that have bootloader PX4-Autopilot `make` targets, can build
|
||||
The list of controllers for which this applies can be obtained by running the following `make` command, and noting the `make` targets that end in `_bootloader`
|
||||
|
||||
```
|
||||
$make list_config_targets
|
||||
$ make list_config_targets
|
||||
|
||||
...
|
||||
cuav_nora_bootloader
|
||||
|
||||
@@ -30,6 +30,7 @@ This category includes boards that are not fully compliant with the pixhawk stan
|
||||
- [Holybro Kakute H7](../flight_controller/kakuteh7.md)
|
||||
- [Holybro Durandal](../flight_controller/durandal.md)
|
||||
- [Holybro Pix32 v5](../flight_controller/holybro_pix32_v5.md)
|
||||
- [MicoAir H743 Lite](../flight_controller/micoair743-lite.md)
|
||||
- [ModalAI VOXL 2](../flight_controller/modalai_voxl_2.md)
|
||||
- [mRo Control Zero](../flight_controller/mro_control_zero_f7.md)
|
||||
- [Radiolink PIX6](../flight_controller/radiolink_pix6.md)
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
# MicoAir743-Lite
|
||||
|
||||
<Badge type="tip" text="main (planned for: PX4 v1.17)" />
|
||||
|
||||
:::warning
|
||||
PX4 does not manufacture this (or any) autopilot.
|
||||
Contact the [manufacturer](https://micoair.com/) for hardware support or compliance issues.
|
||||
:::
|
||||
|
||||
MicoAir743-Lite is an ultra-high performance H743 flight controller with an unbeatable price, featuring the ICM45686 IMU sensor and integrated Bluetooth telemetry.
|
||||
|
||||

|
||||
|
||||
Equipped with a high-performance H7 processor, the MicoAir743-Lite features a compact form factor with SH1.0 connectors (which are more suitable than Pixhawk-standard GH1.25 for this board size).
|
||||
When paired with with Bluetooth telemetry, the board can be debugged with a phone or PC.
|
||||
|
||||
:::info
|
||||
This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md).
|
||||
:::
|
||||
|
||||
## MicoAir743-Lite (v1.1)
|
||||
|
||||

|
||||
|
||||
## 요약
|
||||
|
||||
### Processors & Sensors
|
||||
|
||||
- FMU Processor: STM32H743
|
||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB flash memory, 1MB RAM
|
||||
- 내장 센서 :
|
||||
- Accel/Gyro: ICM-45686 (with BalancedGyro™ Technology)
|
||||
- Barometer: SPA06
|
||||
- On-board Bluetooth Telemetry
|
||||
- Connected to UART8 internally, baudrate 115200
|
||||
- Connecting to QGC (PC or Android phone) via Bluetooth
|
||||
- 기타 특성:
|
||||
- Operating & storage temperature: -20 ~ 85°c
|
||||
|
||||
### 인터페이스
|
||||
|
||||
- 8 UART (TELEM / GPS / RC)
|
||||
- 14 PWM outputs (10 supports DShot)
|
||||
- Support multiple RC inputs (SBUS / CRSF / DSM)
|
||||
- 1 GPS port
|
||||
- 1 I2C port
|
||||
- 2 ADC port2 (VBAT, Current)
|
||||
- 1 DJI O3/O4 VTX connector
|
||||
- 1 MicroSD Card Slot
|
||||
- 1 USB Type-C
|
||||
|
||||
### Electrical data
|
||||
|
||||
- VBAT Input:
|
||||
- 2\~6S (6\~27V)
|
||||
- USB Power Input:
|
||||
- 4.75\~5.25V
|
||||
- BEC Output:
|
||||
- 5V 2A (for controller, receiver, GPS, optical flow or other devices)
|
||||
- 9V 2A (for video transmitter, camera)
|
||||
|
||||
### Mechanical data
|
||||
|
||||
- Mounting: 30.5 x 30.5mm, Φ4mm
|
||||
- Dimensions: 36 x 36 x 8 mm
|
||||
- Weight: 10g
|
||||
|
||||

|
||||
|
||||
## 구매처
|
||||
|
||||
Order from [MicoAir Tech Store](https://store.micoair.com/product/micoair743-lite/).
|
||||
|
||||
## 핀배열
|
||||
|
||||
Pinouts definition can be found in the [MicoAir743-Lite_pinout.xlsx](https://raw.githubusercontent.com/PX4/PX4-Autopilot/refs/heads/main/docs/assets/flight_controller/micoair743_lite/micoair743_lite_pinout.xlsx) file.
|
||||
|
||||
## 시리얼 포트 매핑
|
||||
|
||||
| UART | 장치 | 포트 |
|
||||
| ------ | ---------- | ------ |
|
||||
| USART1 | /dev/ttyS0 | TELEM1 |
|
||||
| USART2 | /dev/ttyS1 | GPS2 |
|
||||
| USART3 | /dev/ttyS2 | GPS1 |
|
||||
| UART4 | /dev/ttyS3 | TELEM2 |
|
||||
| UART5 | /dev/ttyS4 | TELEM3 |
|
||||
| USART6 | /dev/ttyS5 | RC |
|
||||
| UART7 | /dev/ttyS6 | URT6 |
|
||||
| UART8 | /dev/ttyS7 | TELEM4 |
|
||||
|
||||
## Interfaces Diagram
|
||||
|
||||
:::note
|
||||
All the connectors used on the board are SH1.0
|
||||
:::
|
||||
|
||||

|
||||
|
||||
## Sample Wiring Diagram
|
||||
|
||||

|
||||
|
||||
## 펌웨어 빌드
|
||||
|
||||
To [build PX4](../dev_setup/building_px4.md) for this target:
|
||||
|
||||
```sh
|
||||
make micoair_h743-lite_default
|
||||
```
|
||||
|
||||
## 펌웨어 설치
|
||||
|
||||
펌웨어는 일반적인 방법으로 설치할 수 있습니다.
|
||||
|
||||
- 소스 빌드 및 업로드
|
||||
|
||||
```sh
|
||||
make micoair_h743-lite_default upload
|
||||
```
|
||||
|
||||
- [Load the firmware](../config/firmware.md) using _QGroundControl_.
|
||||
미리 빌드된 펌웨어나 사용자 지정 펌웨어를 사용할 수 있습니다.
|
||||
|
||||
::: info
|
||||
At time of writing the only pre-built software is `PX4 main` (see [Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)).
|
||||
Release builds will be supported for PX4 v1.17 and later.
|
||||
|
||||
:::
|
||||
|
||||
## 무선 조종
|
||||
|
||||
A [Radio Control (RC) system](../getting_started/rc_transmitter_receiver.md) is required if you want to manually control your vehicle (PX4 does not require a radio system for autonomous flight modes).
|
||||
|
||||
The RC port is connected to the FMU and you can attach a receiver that uses the protocols `DSM`, `SBUS`, `CSRF`, `GHST`, or other protocol listed in [Radio Control modules](../modules/modules_driver_radio_control.md).
|
||||
You will need to enable the protocol by setting the corresponding parameter `RC_xxxx_PRT_CFG`, such as [RC_CRSF_PRT_CFG](../advanced_config/parameter_reference.md#RC_CRSF_PRT_CFG) for a [CRSF receiver](../telemetry/crsf_telemetry.md).
|
||||
|
||||
## 지원 플랫폼 및 기체
|
||||
|
||||
일반 RC 서보 또는 Futaba S-Bus 서보로 제어 가능한 모든 멀티콥터/비행기/로버 또는 보트.
|
||||
The complete set of supported configurations can be seen in the [Airframes Reference](../airframes/airframe_reference.md).
|
||||
|
||||
## 주변 장치
|
||||
|
||||
- [MicoAir Telemetry Radio Modules](https://micoair.com/radio_telemetry/)
|
||||
- [MicoAir Optical & Range Sensor](https://micoair.com/optical_range_sensor/)
|
||||
- [MicoAir GPS](https://micoair.com/gps/)
|
||||
- [MicoAir ESC Modules](https://micoair.com/esc/)
|
||||
|
||||
## 추가 정보
|
||||
|
||||
- [MicoAir Tech.](https://micoair.com/)
|
||||
- [Details about MicoAir743-Lite](https://micoair.com/flightcontroller_micoair743lite/)
|
||||
- [QGroundControl Download and Install](https://docs.qgroundcontrol.com/Stable_V5.0/en/qgc-user-guide/getting_started/download_and_install.html)
|
||||
@@ -100,6 +100,24 @@ PX4 _developers_ need to know the FMU version of their board, as this is require
|
||||
|
||||
<a id="licensing-and-trademarks"></a>
|
||||
|
||||
### FMUv6 Comparison
|
||||
|
||||
| 기능 | **FMUv6X-RT** | **FMUv6X** | **FMUv6C** |
|
||||
| ------------------ | ------------------------------- | ------------- | ------------- |
|
||||
| **FMU MCU** | NXP i.MX RT1176 | STM32H753 | STM32H743V |
|
||||
| **RAM** | 2 MB | 1 MB | 1 MB |
|
||||
| **Flash** | 64 MB Octal SPI | 2 MB internal | 2 MB internal |
|
||||
| **IO MCU** | STM32F103 | STM32F103 | STM32F103 |
|
||||
| **Secure Element** | NXP SE051 | NXP SE051 | Not supported |
|
||||
| **PAB Standard** | Supported | Supported | Not supported |
|
||||
| **Ethernet** | Supported | Supported | Not supported |
|
||||
| **IMUs** | 3× | 3× | 2× |
|
||||
| **Barometers** | 2× | 2× | 1× |
|
||||
| **Magnetometer** | 1× | 1× | 1× |
|
||||
| **FMU PWM** | 12× | 8× | 8× |
|
||||
| **IO PWM** | 8× | 8× | 8× |
|
||||
| **CAN Bus** | 3× | 2× | 2× |
|
||||
|
||||
### 라이선스와 상표
|
||||
|
||||
Pixhawk project schematics and reference designs are licensed under [CC BY-SA 3](https://creativecommons.org/licenses/by-sa/3.0/legalcode).
|
||||
|
||||
@@ -25,11 +25,6 @@ The default type is recommended.
|
||||
|
||||
:::
|
||||
|
||||
:::warning
|
||||
There is a known issue ([PX4-Autopilot#25436](https://github.com/PX4/PX4-Autopilot/issues/25436)) with fixed-wing approaches and landings while in RTL mode.
|
||||
Please review the issue and verify in simulation that the behavior you get is safe in an RTL landing scenario (if not, consider using rally points).
|
||||
:::
|
||||
|
||||
## Technical Summary
|
||||
|
||||
Fixed-wing vehicles use the _mission landing/rally point_ return type by default.
|
||||
|
||||
@@ -145,21 +145,21 @@ To ensure the port is set up correctly perform a [Serial Port Configuration](../
|
||||
The following steps show how to configure a secondary GPS on the `GPS 2` port in _QGroundControl_:
|
||||
|
||||
1. [Find and set](../advanced_config/parameters.md) the parameter [GPS_2_CONFIG](../advanced_config/parameter_reference.md#GPS_2_CONFIG) to **GPS 2**.
|
||||
- Open _QGroundControl_ and navigate to the **Vehicle Setup > Parameters** section.
|
||||
- Select the **GPS** tab, then open the [GPS_2_CONFIG](../advanced_config/parameter_reference.md#GPS_2_CONFIG) parameter and select `GPS 2` from the dropdown list.
|
||||
- Open _QGroundControl_ and navigate to the **Vehicle Setup > Parameters** section.
|
||||
- Select the **GPS** tab, then open the [GPS_2_CONFIG](../advanced_config/parameter_reference.md#GPS_2_CONFIG) parameter and select `GPS 2` from the dropdown list.
|
||||
|
||||

|
||||

|
||||
|
||||
2. 다른 매개변수를 표시하려면 기체를 재부팅하십시오.
|
||||
|
||||
3. Select the **Serial** tab, and open the [SER_GPS2_BAUD](../advanced_config/parameter_reference.md#SER_GPS2_BAUD) parameter (`GPS 2` port baud rate): set it to _Auto_ (or 115200 for the Trimble).
|
||||
|
||||

|
||||

|
||||
|
||||
보조 GPS 포트를 설정 후 :
|
||||
|
||||
1. 두 GPS 시스템의 데이터를 혼합하도록 ECL/EKF2 추정기를 설정합니다.
|
||||
For detailed instructions see: [Using the ECL EKF > Dual Receivers](../advanced_config/tuning_the_ecl_ekf.md#dual-receivers).
|
||||
For detailed instructions see: [Using the ECL EKF > Dual Receivers](../advanced_config/tuning_the_ecl_ekf.md#dual-receivers).
|
||||
|
||||
### DroneCAN GNSS Configuration
|
||||
|
||||
@@ -197,11 +197,21 @@ It is possible to have low DOP (good satellite geometry) but still have high EPH
|
||||
|
||||
EPH/EPV values therefore provide a more immediate and practical estimate of the actual GPS accuracy you can expect under current conditions.
|
||||
|
||||
### GNSS Position Fusion
|
||||
|
||||
GNSS position fusion will not begin until yaw alignment is established.
|
||||
If a magnetometer is available, the EKF aligns yaw using the magnetic heading, allowing GPS position fusion to start soon after boot.
|
||||
If no magnetometer is present, the system must rely on GPS yaw (from a dual-antenna setup) or movement-based yaw estimation.
|
||||
Until one of these provides a valid heading, the EKF will not start GPS position fusion, and the vehicle will remain in a “no position” state even though attitude data is valid.
|
||||
This behavior prevents large position errors that could occur when the yaw reference is uncertain.
|
||||
|
||||
## 개발자 정보
|
||||
|
||||
- GPS/RTK-GPS
|
||||
- [RTK-GPS](../advanced/rtk_gps.md)
|
||||
- [PPS Time Synchronization](../advanced/pps_time_sync.md)
|
||||
- [GPS driver](../modules/modules_driver.md#gps)
|
||||
- [PPS driver](../modules/modules_driver.md#pps-capture)
|
||||
- [DroneCAN Example](../dronecan/index.md)
|
||||
- 나침반
|
||||
- [Driver source code](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/magnetometer) (Compasses)
|
||||
|
||||
@@ -40,6 +40,7 @@ This list contains stand-alone magnetometer modules (without GNSS).
|
||||
|
||||
| 장치 | 나침반 | DroneCan |
|
||||
| :--------------------------------------------------------------------------------------------------------------- | :----: | :------: |
|
||||
| [ARK MAG](https://arkelectron.com/product/ark-mag/) | RM3100 | ✓ |
|
||||
| [Avionics Anonymous UAVCAN Magnetometer](https://www.tindie.com/products/avionicsanonymous/uavcan-magnetometer/) | ? | |
|
||||
| [Holybro DroneCAN RM3100 Compass/Magnetometer](https://holybro.com/products/dronecan-rm3100-compass) | RM3100 | ✓ |
|
||||
| [RaccoonLab DroneCAN/Cyphal Magnetometer RM3100](https://holybro.com/products/dronecan-rm3100-compass) | RM3100 | ✓ |
|
||||
|
||||
@@ -454,6 +454,7 @@ uxrce_dds_client start -n fancy_uav
|
||||
```
|
||||
|
||||
This can be included in `etc/extras.txt` as part of a custom [System Startup](../concept/system_startup.md).
|
||||
:::
|
||||
|
||||
## PX4 ROS 2 QoS Settings
|
||||
|
||||
@@ -515,6 +516,11 @@ publications:
|
||||
- topic: /fmu/out/vehicle_trajectory_waypoint_desired
|
||||
type: px4_msgs::msg::VehicleTrajectoryWaypoint
|
||||
|
||||
- topic: /fmu/out/vehicle_imu
|
||||
type: px4_msgs::msg::VehicleImu
|
||||
rate_limit: 50.
|
||||
instance: 1 # OPTIONAL
|
||||
|
||||
subscriptions:
|
||||
|
||||
- topic: /fmu/in/offboard_control_mode
|
||||
@@ -547,6 +553,9 @@ Each (`topic`,`type`) pairs defines:
|
||||
4. The message type (`VehicleOdometry`, `VehicleStatus`, `OffboardControlMode`, etc.) and the ROS 2 package (`px4_msgs`) that is expected to provide the message definition.
|
||||
5. **(Optional)**: An additional `rate_limit` field (only for publication entries), which specifies the maximum rate (Hz) at which messages will be published on this topic by PX4 to ROS 2.
|
||||
If left unspecified, the maximum publication rate limit is set to 100 Hz.
|
||||
6. **(Optional)**: An additional `instance` field (only for publication entries), which lets you select which instance of a [multi-instance topic](./uorb.md#multi-instance) you want to be published to ROS 2.
|
||||
If provided, this option changes the ROS 2 topic name of the advertised uORB topic appending the instance number: `fmu/out/[uorb topic name][instance]` (plus eventual namespace and message version).
|
||||
In the example above the final topic name would be `/fmu/out/vehicle_imu1`.
|
||||
|
||||
`subscriptions` and `subscriptions_multi` allow us to choose the uORB topic instance that ROS 2 topics are routed to: either a shared instance that may also be getting updates from internal PX4 uORB publishers, or a separate instance that is reserved for ROS2 publications, respectively.
|
||||
Without this mechanism all ROS 2 messages would be routed to the _same_ uORB topic instance (because ROS 2 does not have the concept of [multiple topic instances](../middleware/uorb.md#multi-instance)), and it would not be possible for PX4 subscribers to differentiate between streams from ROS 2 or PX4 publishers.
|
||||
@@ -588,7 +597,7 @@ For a list of services, details and examples see the [service documentation](../
|
||||
These guidelines explain how to migrate from using PX4 v1.13 [Fast-RTPS](../middleware/micrortps.md) middleware to PX4 v1.14 `uXRCE-DDS` middleware.
|
||||
These are useful if you have [ROS 2 applications written for PX4 v1.13](https://docs.px4.io/v1.13/en/ros/ros2_comm.html), or you have used Fast-RTPS to interface your applications to PX4 [directly](https://docs.px4.io/v1.13/en/middleware/micrortps.html#agent-in-an-offboard-fast-dds-interface-ros-independent).
|
||||
|
||||
::: info
|
||||
:::info
|
||||
This section contains migration-specific information.
|
||||
You should also read the rest of this page to properly understand uXRCE-DDS.
|
||||
:::
|
||||
|
||||
@@ -28,151 +28,151 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too
|
||||
1. Create a new directory **PX4-Autopilot/src/examples/px4_simple_app**.
|
||||
|
||||
2. Create a new C file in that directory named **px4_simple_app.c**:
|
||||
- 기본 헤더를 페이지 상단에 복사합니다.
|
||||
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
||||
- 기본 헤더를 페이지 상단에 복사합니다.
|
||||
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
||||
|
||||
```c
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2012-2022 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
```
|
||||
```c
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2012-2022 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
```
|
||||
|
||||
- 기본 헤더 아래에 다음 코드를 복사합니다.
|
||||
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
||||
- 기본 헤더 아래에 다음 코드를 복사합니다.
|
||||
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
||||
|
||||
```c
|
||||
/**
|
||||
* @file px4_simple_app.c
|
||||
* Minimal application example for PX4 autopilot
|
||||
*
|
||||
* @author Example User <mail@example.com>
|
||||
*/
|
||||
```c
|
||||
/**
|
||||
* @file px4_simple_app.c
|
||||
* Minimal application example for PX4 autopilot
|
||||
*
|
||||
* @author Example User <mail@example.com>
|
||||
*/
|
||||
|
||||
#include <px4_platform_common/log.h>
|
||||
#include <px4_platform_common/log.h>
|
||||
|
||||
__EXPORT int px4_simple_app_main(int argc, char *argv[]);
|
||||
__EXPORT int px4_simple_app_main(int argc, char *argv[]);
|
||||
|
||||
int px4_simple_app_main(int argc, char *argv[])
|
||||
{
|
||||
PX4_INFO("Hello Sky!");
|
||||
return OK;
|
||||
}
|
||||
```
|
||||
int px4_simple_app_main(int argc, char *argv[])
|
||||
{
|
||||
PX4_INFO("Hello Sky!");
|
||||
return OK;
|
||||
}
|
||||
```
|
||||
|
||||
:::tip
|
||||
The main function must be named `<module_name>_main` and exported from the module as shown.
|
||||
:::tip
|
||||
The main function must be named `<module_name>_main` and exported from the module as shown.
|
||||
|
||||
:::
|
||||
|
||||
:::tip
|
||||
`PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**).
|
||||
There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`.
|
||||
Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/).
|
||||
:::tip
|
||||
`PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**).
|
||||
There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`.
|
||||
Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/).
|
||||
|
||||
:::
|
||||
|
||||
3. Create and open a new _cmake_ definition file named **CMakeLists.txt**.
|
||||
아래 텍스트를 복사하십시오.
|
||||
아래 텍스트를 복사하십시오.
|
||||
|
||||
```cmake
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (c) 2015 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.
|
||||
#
|
||||
############################################################################
|
||||
px4_add_module(
|
||||
MODULE examples__px4_simple_app
|
||||
MAIN px4_simple_app
|
||||
STACK_MAIN 2000
|
||||
SRCS
|
||||
px4_simple_app.c
|
||||
DEPENDS
|
||||
)
|
||||
```
|
||||
```cmake
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (c) 2015 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.
|
||||
#
|
||||
############################################################################
|
||||
px4_add_module(
|
||||
MODULE examples__px4_simple_app
|
||||
MAIN px4_simple_app
|
||||
STACK_MAIN 2000
|
||||
SRCS
|
||||
px4_simple_app.c
|
||||
DEPENDS
|
||||
)
|
||||
```
|
||||
|
||||
The `px4_add_module()` method builds a static library from a module description.
|
||||
The `px4_add_module()` method builds a static library from a module description.
|
||||
|
||||
- The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`).
|
||||
- The `MAIN` block lists the entry point of the module, which registers the command with NuttX so that it can be called from the PX4 shell or SITL console.
|
||||
- The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`).
|
||||
- The `MAIN` block lists the entry point of the module, which registers the command with NuttX so that it can be called from the PX4 shell or SITL console.
|
||||
|
||||
:::tip
|
||||
The `px4_add_module()` format is documented in [PX4-Autopilot/cmake/px4_add_module.cmake](https://github.com/PX4/PX4-Autopilot/blob/main/cmake/px4_add_module.cmake). <!-- NEED px4_version -->
|
||||
:::tip
|
||||
The `px4_add_module()` format is documented in [PX4-Autopilot/cmake/px4_add_module.cmake](https://github.com/PX4/PX4-Autopilot/blob/main/cmake/px4_add_module.cmake). <!-- NEED px4_version -->
|
||||
|
||||
:::
|
||||
|
||||
::: info
|
||||
If you specify `DYNAMIC` as an option to `px4_add_module`, a _shared library_ is created instead of a static library on POSIX platforms (these can be loaded without having to recompile PX4, and shared to others as binaries rather than source code).
|
||||
Your app will not become a builtin command, but ends up in a separate file called `examples__px4_simple_app.px4mod`.
|
||||
You can then run your command by loading the file at runtime using the `dyn` command: `dyn ./examples__px4_simple_app.px4mod`
|
||||
::: info
|
||||
If you specify `DYNAMIC` as an option to `px4_add_module`, a _shared library_ is created instead of a static library on POSIX platforms (these can be loaded without having to recompile PX4, and shared to others as binaries rather than source code).
|
||||
Your app will not become a builtin command, but ends up in a separate file called `examples__px4_simple_app.px4mod`.
|
||||
You can then run your command by loading the file at runtime using the `dyn` command: `dyn ./examples__px4_simple_app.px4mod`
|
||||
|
||||
:::
|
||||
|
||||
4. Create and open a new _Kconfig_ definition file named **Kconfig** and define your symbol for naming (see [Kconfig naming convention](../hardware/porting_guide_config.md#px4-kconfig-symbol-naming-convention)).
|
||||
아래 텍스트를 복사하십시오.
|
||||
아래 텍스트를 복사하십시오.
|
||||
|
||||
```
|
||||
menuconfig EXAMPLES_PX4_SIMPLE_APP
|
||||
bool "px4_simple_app"
|
||||
default n
|
||||
---help---
|
||||
Enable support for px4_simple_app
|
||||
```
|
||||
```
|
||||
menuconfig EXAMPLES_PX4_SIMPLE_APP
|
||||
bool "px4_simple_app"
|
||||
default n
|
||||
---help---
|
||||
Enable support for px4_simple_app
|
||||
```
|
||||
|
||||
## 애플리케이션/펌웨어 빌드
|
||||
|
||||
@@ -440,6 +440,7 @@ The [complete example code](https://github.com/PX4/PX4-Autopilot/blob/main/src/e
|
||||
*/
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
#include <px4_platform_common/log.h>
|
||||
#include <px4_platform_common/tasks.h>
|
||||
#include <px4_platform_common/posix.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -182,6 +182,7 @@
|
||||
- [Wiring Quickstart](assembly/quick_start_durandal.md)
|
||||
- [Holybro Pix32 v5](flight_controller/holybro_pix32_v5.md)
|
||||
- [Wiring Quickstart](assembly/quick_start_holybro_pix32_v5.md)
|
||||
- [MicoAir H743 Lite](flight_controller/micoair743-lite.md)
|
||||
- [ModalAI VOXL 2](flight_controller/modalai_voxl_2.md)
|
||||
- [mRo Control Zero F7](flight_controller/mro_control_zero_f7.md)
|
||||
- [Radiolink PIX6](flight_controller/radiolink_pix6.md)
|
||||
@@ -504,6 +505,7 @@
|
||||
- [UART/Послідовний порт](uart/index.md)
|
||||
- [Драйвери послідовного порту і їх налаштування](uart/user_configurable_serial_driver.md)
|
||||
- [RTK GPS (Інтеграція)](advanced/rtk_gps.md)
|
||||
- [PPS Time Synchronization](advanced/pps_time_sync.md)
|
||||
- [Проміжне програмне забезпечення](middleware/index.md)
|
||||
- [Повідомлення uORB](middleware/uorb.md)
|
||||
- [Граф uORB](middleware/uorb_graph.md)
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
# PPS Time Synchronization (PX4 Integration)
|
||||
|
||||
[Pulse Per Second](https://en.wikipedia.org/wiki/Pulse-per-second_signal) (PPS) time synchronization provides high-precision timing for GNSS receivers.
|
||||
This page explains how PPS is integrated into PX4 and how to configure it.
|
||||
|
||||
## Загальний огляд
|
||||
|
||||
PPS (Pulse Per Second) is a timing signal provided by GNSS receivers that outputs an electrical pulse once per second, synchronized to UTC time.
|
||||
The PPS signal provides a highly accurate timing reference that PX4 can use to:
|
||||
|
||||
- Refine GNSS time measurements and compensate for clock drift
|
||||
- Provide precise UTC timestamps for camera capture events (for photogrammetry and mapping applications)
|
||||
- Enable offline position refinement through accurate time correlation
|
||||
|
||||
## Підтримуване обладнання
|
||||
|
||||
PPS time synchronization can be supported on flight controllers that have a hardware timer input pin that can be configured for PPS capture, by [enabling the PPS capture driver](#enable-pps-driver-in-board-configuration) in the board configuration.
|
||||
|
||||
Supported boards include (at time of writing):
|
||||
|
||||
- [Ark FMUv6x](../flight_controller/ark_v6x.md)
|
||||
- Auterion FMUv6x
|
||||
- Auterion FMUv6s
|
||||
|
||||
## Установка
|
||||
|
||||
### Enable PPS Driver in Board Configuration
|
||||
|
||||
The [PPS capture driver](../modules/modules_driver.md#pps-capture) must be enabled in the board configuration.
|
||||
This is done by adding the following to your board's configuration:
|
||||
|
||||
```ini
|
||||
CONFIG_DRIVERS_PPS_CAPTURE=y
|
||||
```
|
||||
|
||||
### Configure PPS Parameters
|
||||
|
||||
The configuration varies depending on your flight controller hardware.
|
||||
|
||||
#### FMUv6X
|
||||
|
||||
For FMUv6X-based flight controllers, configure PWM AUX Timer 3 and Function 9:
|
||||
|
||||
```sh
|
||||
param set PWM_AUX_TIM3 -2
|
||||
param set PWM_AUX_FUNC9 2064
|
||||
param set PPS_CAP_ENABLE 1
|
||||
```
|
||||
|
||||
#### FMUv6S
|
||||
|
||||
For FMUv6S-based flight controllers, configure PWM MAIN Timer 3 and Function 10:
|
||||
|
||||
```sh
|
||||
param set PWM_MAIN_TIM3 -2
|
||||
param set PWM_MAIN_FUNC10 2064
|
||||
param set PPS_CAP_ENABLE 1
|
||||
```
|
||||
|
||||
### Підключення
|
||||
|
||||
The wiring configuration depends on your specific flight controller.
|
||||
|
||||
#### Skynode X (FMUv6x)
|
||||
|
||||
Connect the PPS signal from your GNSS module to the flight controller using the 11-pin or 6-pin GPS connector:
|
||||
|
||||
For detailed pinout information, refer to:
|
||||
|
||||
- [Skynode GPS Peripherals - Pinouts](https://docs.auterion.com/hardware-integration/skynode/peripherals/gps#pinouts)
|
||||
|
||||
#### Skynode S (FMUv6S)
|
||||
|
||||
For FMUv6S, you need to route the PPS signal separately:
|
||||
|
||||
1. Connect your GNSS module using the standard 6-pin GPS connector: [Skynode S GPS Interface](https://docs.auterion.com/hardware-integration/skynode-s/interfaces#gps)
|
||||
2. Connect the PPS signal from your GNSS module to the **PPM_IN** pin: [Skynode S Extras 1 Interface](https://docs.auterion.com/hardware-integration/skynode-s/interfaces#extras-1)
|
||||
|
||||
#### ARK Jetson Carrier Board (FMUv6x)
|
||||
|
||||
For ARK FMUv6X on the Jetson carrier board:
|
||||
|
||||
1. Connect your GNSS module using either the 10-pin or 6-pin GPS connector: [ARK PAB GPS1 Interface](../flight_controller/ark_pab#gps1)
|
||||
2. Connect the PPS signal to the **FMU_CAP** pin: [ARK PAB ADIO Interface](../flight_controller/ark_pab.md#adio)
|
||||
|
||||
## Перевірка
|
||||
|
||||
After configuring PPS, you can verify that it is working correctly:
|
||||
|
||||
1. Connect to the [PX4 System Console](../debug/system_console.md) (via MAVLink shell or serial console).
|
||||
|
||||
2. Wait for GNSS fix.
|
||||
|
||||
3. Check the PPS capture status to confirm it is up and running:
|
||||
|
||||
```sh
|
||||
pps_capture status
|
||||
```
|
||||
|
||||
4. You can also check the [PpsCapture](../msg_docs/PpsCapture.md) uORB topic
|
||||
|
||||
```sh
|
||||
listener pps_capture
|
||||
```
|
||||
|
||||
Where you should see: `timestamp`, `rtc_timestamp`, and `pps_rate_exceeded_counter`.
|
||||
|
||||
### PPS Capture Driver
|
||||
|
||||
The PPS capture driver is located in `src/drivers/pps_capture` and uses hardware timer input capture to precisely measure the arrival time of each PPS pulse.
|
||||
|
||||
Основні функції:
|
||||
|
||||
- Sub-microsecond pulse capture precision (hardware-dependent)
|
||||
- Automatic drift calculation and compensation
|
||||
- Integration with the GNSS driver for refined time stamping
|
||||
|
||||
See also:
|
||||
|
||||
- [PPS Capture Driver Documentation](../modules/modules_driver.md#pps-capture)
|
||||
- [PpsCapture Message](../msg_docs/PpsCapture.md)
|
||||
|
||||
### Time Synchronization Flow
|
||||
|
||||
1. GNSS module sends position/time data at ~1-20 Hz.
|
||||
2. GNSS module outputs PPS pulse at 1 Hz, precisely aligned to UTC second boundary.
|
||||
3. PPS capture driver measures the exact time of the PPS pulse arrival using hardware timer.
|
||||
4. Driver calculates the offset between GNSS time (from UART data) and autopilot clock (from PPS measurement).
|
||||
5. This offset is used to correct GNSS timestamps and improve sensor fusion accuracy.
|
||||
|
||||
The PPS signal provides much higher temporal precision than the transmitted time data, which has latency and jitter from serial communication.
|
||||
|
||||
:::warning
|
||||
If the PPS driver does not sending any data for 5 seconds (despite having `PPS_CAP_ENABLE` set to 1), the `EKF2_GPS_DELAY` will be used instead for estimating the latency.
|
||||
:::
|
||||
@@ -89,7 +89,7 @@ dfu-util -a 0 --dfuse-address 0x08000000 -D build/<target>/<target>.bin
|
||||
Список контролерів, яких це стосується, можна отримати, виконавши наступну команду `make` і зазначивши цілі `make`, які закінчуються на `_bootloader`
|
||||
|
||||
```
|
||||
$make list_config_targets
|
||||
$ make list_config_targets
|
||||
|
||||
...
|
||||
cuav_nora_bootloader
|
||||
|
||||
@@ -30,6 +30,7 @@ This category includes boards that are not fully compliant with the pixhawk stan
|
||||
- [Holybro Kakute H7](../flight_controller/kakuteh7.md)
|
||||
- [Holybro Durandal](../flight_controller/durandal.md)
|
||||
- [Holybro Pix32 v5](../flight_controller/holybro_pix32_v5.md)
|
||||
- [MicoAir H743 Lite](../flight_controller/micoair743-lite.md)
|
||||
- [ModalAI VOXL 2](../flight_controller/modalai_voxl_2.md)
|
||||
- [mRo Control Zero](../flight_controller/mro_control_zero_f7.md)
|
||||
- [Radiolink PIX6](../flight_controller/radiolink_pix6.md)
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
# MicoAir743-Lite
|
||||
|
||||
<Badge type="tip" text="main (planned for: PX4 v1.17)" />
|
||||
|
||||
:::warning
|
||||
PX4 не розробляє цей (або будь-який інший) автопілот.
|
||||
Contact the [manufacturer](https://micoair.com/) for hardware support or compliance issues.
|
||||
:::
|
||||
|
||||
MicoAir743-Lite is an ultra-high performance H743 flight controller with an unbeatable price, featuring the ICM45686 IMU sensor and integrated Bluetooth telemetry.
|
||||
|
||||

|
||||
|
||||
Equipped with a high-performance H7 processor, the MicoAir743-Lite features a compact form factor with SH1.0 connectors (which are more suitable than Pixhawk-standard GH1.25 for this board size).
|
||||
When paired with with Bluetooth telemetry, the board can be debugged with a phone or PC.
|
||||
|
||||
:::info
|
||||
This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md).
|
||||
:::
|
||||
|
||||
## MicoAir743-Lite (v1.1)
|
||||
|
||||

|
||||
|
||||
## Короткий опис
|
||||
|
||||
### Processors & Sensors
|
||||
|
||||
- FMU Processor: STM32H743
|
||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB flash memory, 1MB RAM
|
||||
- Сенсори на платі
|
||||
- Accel/Gyro: ICM-45686 (with BalancedGyro™ Technology)
|
||||
- Barometer: SPA06
|
||||
- On-board Bluetooth Telemetry
|
||||
- Connected to UART8 internally, baudrate 115200
|
||||
- Connecting to QGC (PC or Android phone) via Bluetooth
|
||||
- Інші характеристики:
|
||||
- Operating & storage temperature: -20 ~ 85°c
|
||||
|
||||
### Інтерфейси
|
||||
|
||||
- 8 UART (TELEM / GPS / RC)
|
||||
- 14 PWM outputs (10 supports DShot)
|
||||
- Support multiple RC inputs (SBUS / CRSF / DSM)
|
||||
- 1 GPS port
|
||||
- 1 I2C порт
|
||||
- 2 ADC port2 (VBAT, Current)
|
||||
- 1 DJI O3/O4 VTX connector
|
||||
- 1 MicroSD Card Slot
|
||||
- 1 USB Type-C
|
||||
|
||||
### Електричні дані
|
||||
|
||||
- VBAT Input:
|
||||
- 2\~6S (6\~27V)
|
||||
- USB Power Input:
|
||||
- 4.75\~5.25V
|
||||
- BEC Output:
|
||||
- 5V 2A (for controller, receiver, GPS, optical flow or other devices)
|
||||
- 9V 2A (for video transmitter, camera)
|
||||
|
||||
### Механічні характеристики
|
||||
|
||||
- Mounting: 30.5 x 30.5mm, Φ4mm
|
||||
- Dimensions: 36 x 36 x 8 mm
|
||||
- Weight: 10g
|
||||
|
||||

|
||||
|
||||
## Де купити
|
||||
|
||||
Order from [MicoAir Tech Store](https://store.micoair.com/product/micoair743-lite/).
|
||||
|
||||
## Схема розташування виводів
|
||||
|
||||
Pinouts definition can be found in the [MicoAir743-Lite_pinout.xlsx](https://raw.githubusercontent.com/PX4/PX4-Autopilot/refs/heads/main/docs/assets/flight_controller/micoair743_lite/micoair743_lite_pinout.xlsx) file.
|
||||
|
||||
## Налаштування послідовного порту
|
||||
|
||||
| UART | Пристрій | Порт |
|
||||
| ------ | ---------- | ------ |
|
||||
| USART1 | /dev/ttyS0 | TELEM1 |
|
||||
| USART2 | /dev/ttyS1 | GPS2 |
|
||||
| USART3 | /dev/ttyS2 | GPS1 |
|
||||
| UART4 | /dev/ttyS3 | TELEM2 |
|
||||
| UART5 | /dev/ttyS4 | TELEM3 |
|
||||
| USART6 | /dev/ttyS5 | RC |
|
||||
| UART7 | /dev/ttyS6 | URT6 |
|
||||
| UART8 | /dev/ttyS7 | TELEM4 |
|
||||
|
||||
## Interfaces Diagram
|
||||
|
||||
:::note
|
||||
All the connectors used on the board are SH1.0
|
||||
:::
|
||||
|
||||

|
||||
|
||||
## Зразок схеми з'єднань
|
||||
|
||||

|
||||
|
||||
## Збірка прошивки
|
||||
|
||||
To [build PX4](../dev_setup/building_px4.md) for this target:
|
||||
|
||||
```sh
|
||||
make micoair_h743-lite_default
|
||||
```
|
||||
|
||||
## Встановлення прошивки PX4
|
||||
|
||||
Прошивку можна встановити будь-якими звичайними способами:
|
||||
|
||||
- Збудуйте та завантажте джерело
|
||||
|
||||
```sh
|
||||
make micoair_h743-lite_default upload
|
||||
```
|
||||
|
||||
- [Load the firmware](../config/firmware.md) using _QGroundControl_.
|
||||
Ви можете використовувати або готове вбудоване програмне забезпечення, або власне користувацьке програмне забезпечення.
|
||||
|
||||
::: info
|
||||
At time of writing the only pre-built software is `PX4 main` (see [Installing PX4 Main, Beta or Custom Firmware](../config/firmware.md#installing-px4-main-beta-or-custom-firmware)).
|
||||
Release builds will be supported for PX4 v1.17 and later.
|
||||
|
||||
:::
|
||||
|
||||
## Радіоуправління
|
||||
|
||||
A [Radio Control (RC) system](../getting_started/rc_transmitter_receiver.md) is required if you want to manually control your vehicle (PX4 does not require a radio system for autonomous flight modes).
|
||||
|
||||
The RC port is connected to the FMU and you can attach a receiver that uses the protocols `DSM`, `SBUS`, `CSRF`, `GHST`, or other protocol listed in [Radio Control modules](../modules/modules_driver_radio_control.md).
|
||||
You will need to enable the protocol by setting the corresponding parameter `RC_xxxx_PRT_CFG`, such as [RC_CRSF_PRT_CFG](../advanced_config/parameter_reference.md#RC_CRSF_PRT_CFG) for a [CRSF receiver](../telemetry/crsf_telemetry.md).
|
||||
|
||||
## Підтримувані платформи / Конструкції
|
||||
|
||||
Будь-який мультикоптер / літак / наземна платформа / човен, який може керуватися звичайними RC сервоприводами або сервоприводами Futaba S-Bus.
|
||||
The complete set of supported configurations can be seen in the [Airframes Reference](../airframes/airframe_reference.md).
|
||||
|
||||
## Периферійні пристрої
|
||||
|
||||
- [MicoAir Telemetry Radio Modules](https://micoair.com/radio_telemetry/)
|
||||
- [MicoAir Optical & Range Sensor](https://micoair.com/optical_range_sensor/)
|
||||
- [MicoAir GPS](https://micoair.com/gps/)
|
||||
- [MicoAir ESC Modules](https://micoair.com/esc/)
|
||||
|
||||
## Подальша інформація
|
||||
|
||||
- [MicoAir Tech.](https://micoair.com/)
|
||||
- [Details about MicoAir743-Lite](https://micoair.com/flightcontroller_micoair743lite/)
|
||||
- [QGroundControl Download and Install](https://docs.qgroundcontrol.com/Stable_V5.0/en/qgc-user-guide/getting_started/download_and_install.html)
|
||||
@@ -100,6 +100,24 @@ PX4 _developers_ need to know the FMU version of their board, as this is require
|
||||
|
||||
<a id="licensing-and-trademarks"></a>
|
||||
|
||||
### FMUv6 Comparison
|
||||
|
||||
| Характеристика | **FMUv6X-RT** | **FMUv6X** | **FMUv6C** |
|
||||
| ------------------ | ------------------------------- | ------------- | ------------- |
|
||||
| **FMU MCU** | NXP i.MX RT1176 | STM32H753 | STM32H743V |
|
||||
| **RAM** | 2 MB | 1 MB | 1 MB |
|
||||
| **Flash** | 64 MB Octal SPI | 2 MB internal | 2 MB internal |
|
||||
| **IO MCU** | STM32F103 | STM32F103 | STM32F103 |
|
||||
| **Secure Element** | NXP SE051 | NXP SE051 | Not supported |
|
||||
| **PAB Standard** | Supported | Supported | Not supported |
|
||||
| **Ethernet** | Supported | Supported | Not supported |
|
||||
| **IMUs** | 3× | 3× | 2× |
|
||||
| **Barometers** | 2× | 2× | 1× |
|
||||
| **Magnetometer** | 1× | 1× | 1× |
|
||||
| **FMU PWM** | 12× | 8× | 8× |
|
||||
| **IO PWM** | 8× | 8× | 8× |
|
||||
| **CAN Bus** | 3× | 2× | 2× |
|
||||
|
||||
### Ліцензування та товарні знаки
|
||||
|
||||
Pixhawk project schematics and reference designs are licensed under [CC BY-SA 3](https://creativecommons.org/licenses/by-sa/3.0/legalcode).
|
||||
|
||||
@@ -25,11 +25,6 @@
|
||||
|
||||
:::
|
||||
|
||||
:::warning
|
||||
There is a known issue ([PX4-Autopilot#25436](https://github.com/PX4/PX4-Autopilot/issues/25436)) with fixed-wing approaches and landings while in RTL mode.
|
||||
Please review the issue and verify in simulation that the behavior you get is safe in an RTL landing scenario (if not, consider using rally points).
|
||||
:::
|
||||
|
||||
## Технічний підсумок
|
||||
|
||||
Літальні апарати з фіксованим крилом за замовчуванням використовують тип повернення до призначення _місії посадки/точка збору_.
|
||||
|
||||
@@ -197,11 +197,21 @@ It is possible to have low DOP (good satellite geometry) but still have high EPH
|
||||
|
||||
EPH/EPV values therefore provide a more immediate and practical estimate of the actual GPS accuracy you can expect under current conditions.
|
||||
|
||||
### GNSS Position Fusion
|
||||
|
||||
GNSS position fusion will not begin until yaw alignment is established.
|
||||
If a magnetometer is available, the EKF aligns yaw using the magnetic heading, allowing GPS position fusion to start soon after boot.
|
||||
If no magnetometer is present, the system must rely on GPS yaw (from a dual-antenna setup) or movement-based yaw estimation.
|
||||
Until one of these provides a valid heading, the EKF will not start GPS position fusion, and the vehicle will remain in a “no position” state even though attitude data is valid.
|
||||
This behavior prevents large position errors that could occur when the yaw reference is uncertain.
|
||||
|
||||
## Інформація для розробників
|
||||
|
||||
- GPS/RTK-GPS
|
||||
- [RTK-GPS](../advanced/rtk_gps.md)
|
||||
- [PPS Time Synchronization](../advanced/pps_time_sync.md)
|
||||
- [GPS driver](../modules/modules_driver.md#gps)
|
||||
- [PPS driver](../modules/modules_driver.md#pps-capture)
|
||||
- [DroneCAN Example](../dronecan/index.md)
|
||||
- Компас
|
||||
- [Driver source code](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/magnetometer) (Compasses)
|
||||
|
||||