refactor(mc_rate_control): convert params.c to module.yaml

Convert 2 parameter file(s) from legacy C format to YAML
module configuration.
This commit is contained in:
Jacob Dahl 2026-03-17 21:55:35 -08:00 committed by Jacob Dahl
parent 22e700b6d7
commit ffa361185c
5 changed files with 326 additions and 449 deletions

View File

@ -39,6 +39,9 @@ px4_add_module(
SRCS
MulticopterRateControl.cpp
MulticopterRateControl.hpp
MODULE_CONFIG
mc_acro_params.yaml
mc_rate_control_params.yaml
DEPENDS
circuit_breaker
mathlib

View File

@ -1,142 +0,0 @@
/****************************************************************************
*
* Copyright (c) 2023 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file mc_acro_params.c
*
* Parameters for Acro mode behavior
*/
/**
* Acro mode maximum roll rate
*
* Full stick deflection leads to this rate.
*
* @unit deg/s
* @min 0.0
* @max 1800.0
* @decimal 1
* @increment 5
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_R_MAX, 100.f);
/**
* Acro mode maximum pitch rate
*
* Full stick deflection leads to this rate.
*
* @unit deg/s
* @min 0.0
* @max 1800.0
* @decimal 1
* @increment 5
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_P_MAX, 100.f);
/**
* Acro mode maximum yaw rate
*
* Full stick deflection leads to this rate.
*
* @unit deg/s
* @min 0.0
* @max 1800.0
* @decimal 1
* @increment 5
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_Y_MAX, 100.f);
/**
* Acro mode roll, pitch expo factor
*
* Exponential factor for tuning the input curve shape.
*
* 0 Purely linear input curve
* 1 Purely cubic input curve
*
* @min 0
* @max 1
* @decimal 2
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_EXPO, 0.f);
/**
* Acro mode yaw expo factor
*
* Exponential factor for tuning the input curve shape.
*
* 0 Purely linear input curve
* 1 Purely cubic input curve
*
* @min 0
* @max 1
* @decimal 2
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_EXPO_Y, 0.f);
/**
* Acro mode roll, pitch super expo factor
*
* "Superexponential" factor for refining the input curve shape tuned using MC_ACRO_EXPO.
*
* 0 Pure Expo function
* 0.7 reasonable shape enhancement for intuitive stick feel
* 0.95 very strong bent input curve only near maxima have effect
*
* @min 0
* @max 0.95
* @decimal 2
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_SUPEXPO, 0.f);
/**
* Acro mode yaw super expo factor
*
* "Superexponential" factor for refining the input curve shape tuned using MC_ACRO_EXPO_Y.
*
* 0 Pure Expo function
* 0.7 reasonable shape enhancement for intuitive stick feel
* 0.95 very strong bent input curve only near maxima have effect
*
* @min 0
* @max 0.95
* @decimal 2
* @group Multicopter Acro Mode
*/
PARAM_DEFINE_FLOAT(MC_ACRO_SUPEXPOY, 0.f);

View File

@ -0,0 +1,91 @@
module_name: mc_rate_control
parameters:
- group: Multicopter Acro Mode
definitions:
MC_ACRO_R_MAX:
description:
short: Acro mode maximum roll rate
long: Full stick deflection leads to this rate.
type: float
default: 100.0
unit: deg/s
min: 0.0
max: 1800.0
decimal: 1
increment: 5
MC_ACRO_P_MAX:
description:
short: Acro mode maximum pitch rate
long: Full stick deflection leads to this rate.
type: float
default: 100.0
unit: deg/s
min: 0.0
max: 1800.0
decimal: 1
increment: 5
MC_ACRO_Y_MAX:
description:
short: Acro mode maximum yaw rate
long: Full stick deflection leads to this rate.
type: float
default: 100.0
unit: deg/s
min: 0.0
max: 1800.0
decimal: 1
increment: 5
MC_ACRO_EXPO:
description:
short: Acro mode roll, pitch expo factor
long: |-
Exponential factor for tuning the input curve shape.
0 Purely linear input curve
1 Purely cubic input curve
type: float
default: 0.0
min: 0
max: 1
decimal: 2
MC_ACRO_EXPO_Y:
description:
short: Acro mode yaw expo factor
long: |-
Exponential factor for tuning the input curve shape.
0 Purely linear input curve
1 Purely cubic input curve
type: float
default: 0.0
min: 0
max: 1
decimal: 2
MC_ACRO_SUPEXPO:
description:
short: Acro mode roll, pitch super expo factor
long: |-
"Superexponential" factor for refining the input curve shape tuned using MC_ACRO_EXPO.
0 Pure Expo function
0.7 reasonable shape enhancement for intuitive stick feel
0.95 very strong bent input curve only near maxima have effect
type: float
default: 0.0
min: 0
max: 0.95
decimal: 2
MC_ACRO_SUPEXPOY:
description:
short: Acro mode yaw super expo factor
long: |-
"Superexponential" factor for refining the input curve shape tuned using MC_ACRO_EXPO_Y.
0 Pure Expo function
0.7 reasonable shape enhancement for intuitive stick feel
0.95 very strong bent input curve only near maxima have effect
type: float
default: 0.0
min: 0
max: 0.95
decimal: 2

View File

@ -1,307 +0,0 @@
/****************************************************************************
*
* Copyright (c) 2013-2019 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file mc_rate_control_params.c
*
* Parameters for multicopter rate controller
*/
/**
* Roll rate P gain
*
* Roll rate proportional gain, i.e. control output for angular speed error 1 rad/s.
*
* @min 0.01
* @max 0.5
* @decimal 3
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_ROLLRATE_P, 0.15f);
/**
* Roll rate I gain
*
* Roll rate integral gain. Can be set to compensate static thrust difference or gravity center offset.
*
* @min 0.0
* @decimal 3
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_ROLLRATE_I, 0.2f);
/**
* Roll rate integrator limit
*
* Roll rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large roll moment trim changes.
*
* @min 0.0
* @decimal 2
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_RR_INT_LIM, 0.30f);
/**
* Roll rate D gain
*
* Roll rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.
*
* @min 0.0
* @max 0.01
* @decimal 4
* @increment 0.0005
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_ROLLRATE_D, 0.003f);
/**
* Roll rate feedforward
*
* Improves tracking performance.
*
* @min 0.0
* @decimal 4
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_ROLLRATE_FF, 0.0f);
/**
* Roll rate controller gain
*
* Global gain of the controller.
*
* This gain scales the P, I and D terms of the controller:
* output = MC_ROLLRATE_K * (MC_ROLLRATE_P * error
* + MC_ROLLRATE_I * error_integral
* + MC_ROLLRATE_D * error_derivative)
* Set MC_ROLLRATE_P=1 to implement a PID in the ideal form.
* Set MC_ROLLRATE_K=1 to implement a PID in the parallel form.
*
* @min 0.01
* @max 5.0
* @decimal 4
* @increment 0.0005
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_ROLLRATE_K, 1.0f);
/**
* Pitch rate P gain
*
* Pitch rate proportional gain, i.e. control output for angular speed error 1 rad/s.
*
* @min 0.01
* @max 0.6
* @decimal 3
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_PITCHRATE_P, 0.15f);
/**
* Pitch rate I gain
*
* Pitch rate integral gain. Can be set to compensate static thrust difference or gravity center offset.
*
* @min 0.0
* @decimal 3
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_PITCHRATE_I, 0.2f);
/**
* Pitch rate integrator limit
*
* Pitch rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large pitch moment trim changes.
*
* @min 0.0
* @decimal 2
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_PR_INT_LIM, 0.30f);
/**
* Pitch rate D gain
*
* Pitch rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.
*
* @min 0.0
* @decimal 4
* @increment 0.0005
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_PITCHRATE_D, 0.003f);
/**
* Pitch rate feedforward
*
* Improves tracking performance.
*
* @min 0.0
* @decimal 4
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_PITCHRATE_FF, 0.0f);
/**
* Pitch rate controller gain
*
* Global gain of the controller.
*
* This gain scales the P, I and D terms of the controller:
* output = MC_PITCHRATE_K * (MC_PITCHRATE_P * error
* + MC_PITCHRATE_I * error_integral
* + MC_PITCHRATE_D * error_derivative)
* Set MC_PITCHRATE_P=1 to implement a PID in the ideal form.
* Set MC_PITCHRATE_K=1 to implement a PID in the parallel form.
*
* @min 0.01
* @max 5.0
* @decimal 4
* @increment 0.0005
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_PITCHRATE_K, 1.0f);
/**
* Yaw rate P gain
*
* Yaw rate proportional gain, i.e. control output for angular speed error 1 rad/s.
*
* @min 0.0
* @max 0.6
* @decimal 3
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YAWRATE_P, 0.2f);
/**
* Yaw rate I gain
*
* Yaw rate integral gain. Can be set to compensate static thrust difference or gravity center offset.
*
* @min 0.0
* @decimal 3
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YAWRATE_I, 0.1f);
/**
* Yaw rate integrator limit
*
* Yaw rate integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large yaw moment trim changes.
*
* @min 0.0
* @decimal 2
* @increment 0.01
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YR_INT_LIM, 0.30f);
/**
* Yaw rate D gain
*
* Yaw rate differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again.
*
* @min 0.0
* @decimal 4
* @increment 0.0005
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YAWRATE_D, 0.0f);
/**
* Yaw rate feedforward
*
* Improves tracking performance.
*
* @min 0.0
* @decimal 4
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YAWRATE_FF, 0.0f);
/**
* Yaw rate controller gain
*
* Global gain of the controller.
*
* This gain scales the P, I and D terms of the controller:
* output = MC_YAWRATE_K * (MC_YAWRATE_P * error
* + MC_YAWRATE_I * error_integral
* + MC_YAWRATE_D * error_derivative)
* Set MC_YAWRATE_P=1 to implement a PID in the ideal form.
* Set MC_YAWRATE_K=1 to implement a PID in the parallel form.
*
* @min 0.01
* @max 5.0
* @decimal 4
* @increment 0.0005
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YAWRATE_K, 1.0f);
/**
* Battery power level scaler
*
* This compensates for voltage drop of the battery over time by attempting to
* normalize performance across the operating range of the battery. The copter
* should constantly behave as if it was fully charged with reduced max acceleration
* at lower battery percentages. i.e. if hover is at 0.5 throttle at 100% battery,
* it will still be 0.5 at 60% battery.
*
* @boolean
* @group Multicopter Rate Control
*/
PARAM_DEFINE_INT32(MC_BAT_SCALE_EN, 0);
/**
* Low pass filter cutoff frequency for yaw torque setpoint
*
* Reduces vibrations by lowering high frequency torque caused by rotor acceleration.
* 0 disables the filter
*
* @min 0
* @max 10
* @unit Hz
* @decimal 3
* @group Multicopter Rate Control
*/
PARAM_DEFINE_FLOAT(MC_YAW_TQ_CUTOFF, 2.f);

View File

@ -0,0 +1,232 @@
module_name: mc_rate_control
parameters:
- group: Multicopter Rate Control
definitions:
MC_ROLLRATE_P:
description:
short: Roll rate P gain
long: Roll rate proportional gain, i.e. control output for angular speed error
1 rad/s.
type: float
default: 0.15
min: 0.01
max: 0.5
decimal: 3
increment: 0.01
MC_ROLLRATE_I:
description:
short: Roll rate I gain
long: Roll rate integral gain. Can be set to compensate static thrust difference
or gravity center offset.
type: float
default: 0.2
min: 0.0
decimal: 3
increment: 0.01
MC_RR_INT_LIM:
description:
short: Roll rate integrator limit
long: Roll rate integrator limit. Can be set to increase the amount of integrator
available to counteract disturbances or reduced to improve settling time
after large roll moment trim changes.
type: float
default: 0.3
min: 0.0
decimal: 2
increment: 0.01
MC_ROLLRATE_D:
description:
short: Roll rate D gain
long: Roll rate differential gain. Small values help reduce fast oscillations.
If value is too big oscillations will appear again.
type: float
default: 0.003
min: 0.0
max: 0.01
decimal: 4
increment: 0.0005
MC_ROLLRATE_FF:
description:
short: Roll rate feedforward
long: Improves tracking performance.
type: float
default: 0.0
min: 0.0
decimal: 4
MC_ROLLRATE_K:
description:
short: Roll rate controller gain
long: |-
Global gain of the controller.
This gain scales the P, I and D terms of the controller:
output = MC_ROLLRATE_K * (MC_ROLLRATE_P * error
+ MC_ROLLRATE_I * error_integral
+ MC_ROLLRATE_D * error_derivative)
Set MC_ROLLRATE_P=1 to implement a PID in the ideal form.
Set MC_ROLLRATE_K=1 to implement a PID in the parallel form.
type: float
default: 1.0
min: 0.01
max: 5.0
decimal: 4
increment: 0.0005
MC_PITCHRATE_P:
description:
short: Pitch rate P gain
long: Pitch rate proportional gain, i.e. control output for angular speed
error 1 rad/s.
type: float
default: 0.15
min: 0.01
max: 0.6
decimal: 3
increment: 0.01
MC_PITCHRATE_I:
description:
short: Pitch rate I gain
long: Pitch rate integral gain. Can be set to compensate static thrust difference
or gravity center offset.
type: float
default: 0.2
min: 0.0
decimal: 3
increment: 0.01
MC_PR_INT_LIM:
description:
short: Pitch rate integrator limit
long: Pitch rate integrator limit. Can be set to increase the amount of integrator
available to counteract disturbances or reduced to improve settling time
after large pitch moment trim changes.
type: float
default: 0.3
min: 0.0
decimal: 2
increment: 0.01
MC_PITCHRATE_D:
description:
short: Pitch rate D gain
long: Pitch rate differential gain. Small values help reduce fast oscillations.
If value is too big oscillations will appear again.
type: float
default: 0.003
min: 0.0
decimal: 4
increment: 0.0005
MC_PITCHRATE_FF:
description:
short: Pitch rate feedforward
long: Improves tracking performance.
type: float
default: 0.0
min: 0.0
decimal: 4
MC_PITCHRATE_K:
description:
short: Pitch rate controller gain
long: |-
Global gain of the controller.
This gain scales the P, I and D terms of the controller:
output = MC_PITCHRATE_K * (MC_PITCHRATE_P * error
+ MC_PITCHRATE_I * error_integral
+ MC_PITCHRATE_D * error_derivative)
Set MC_PITCHRATE_P=1 to implement a PID in the ideal form.
Set MC_PITCHRATE_K=1 to implement a PID in the parallel form.
type: float
default: 1.0
min: 0.01
max: 5.0
decimal: 4
increment: 0.0005
MC_YAWRATE_P:
description:
short: Yaw rate P gain
long: Yaw rate proportional gain, i.e. control output for angular speed error
1 rad/s.
type: float
default: 0.2
min: 0.0
max: 0.6
decimal: 3
increment: 0.01
MC_YAWRATE_I:
description:
short: Yaw rate I gain
long: Yaw rate integral gain. Can be set to compensate static thrust difference
or gravity center offset.
type: float
default: 0.1
min: 0.0
decimal: 3
increment: 0.01
MC_YR_INT_LIM:
description:
short: Yaw rate integrator limit
long: Yaw rate integrator limit. Can be set to increase the amount of integrator
available to counteract disturbances or reduced to improve settling time
after large yaw moment trim changes.
type: float
default: 0.3
min: 0.0
decimal: 2
increment: 0.01
MC_YAWRATE_D:
description:
short: Yaw rate D gain
long: Yaw rate differential gain. Small values help reduce fast oscillations.
If value is too big oscillations will appear again.
type: float
default: 0.0
min: 0.0
decimal: 4
increment: 0.0005
MC_YAWRATE_FF:
description:
short: Yaw rate feedforward
long: Improves tracking performance.
type: float
default: 0.0
min: 0.0
decimal: 4
MC_YAWRATE_K:
description:
short: Yaw rate controller gain
long: |-
Global gain of the controller.
This gain scales the P, I and D terms of the controller:
output = MC_YAWRATE_K * (MC_YAWRATE_P * error
+ MC_YAWRATE_I * error_integral
+ MC_YAWRATE_D * error_derivative)
Set MC_YAWRATE_P=1 to implement a PID in the ideal form.
Set MC_YAWRATE_K=1 to implement a PID in the parallel form.
type: float
default: 1.0
min: 0.01
max: 5.0
decimal: 4
increment: 0.0005
MC_BAT_SCALE_EN:
description:
short: Battery power level scaler
long: |-
This compensates for voltage drop of the battery over time by attempting to
normalize performance across the operating range of the battery. The copter
should constantly behave as if it was fully charged with reduced max acceleration
at lower battery percentages. i.e. if hover is at 0.5 throttle at 100% battery,
it will still be 0.5 at 60% battery.
type: boolean
default: 0
MC_YAW_TQ_CUTOFF:
description:
short: Low pass filter cutoff frequency for yaw torque setpoint
long: |-
Reduces vibrations by lowering high frequency torque caused by rotor acceleration.
0 disables the filter
type: float
default: 2.0
min: 0
max: 10
unit: Hz
decimal: 3