rover_control: migrate params from .yaml to .c file (#24445)

* rover_control: migrate params from .yaml to .c file

* Update src/lib/rover_control/rovercontrol_params.c

---------

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
This commit is contained in:
chfriedrich98
2025-03-04 17:28:09 +01:00
committed by GitHub
co-authored by Silvan Fuhrer
parent a127a8293a
commit d1e4198864
3 changed files with 255 additions and 209 deletions
-207
View File
@@ -1,207 +0,0 @@
module_name: Rover Control
parameters:
- group: Rover Control
definitions:
RO_MAX_THR_SPEED:
description:
short: Speed the rover drives at maximum throttle
long: Used to linearly map speeds [m/s] to throttle values [-1. 1].
type: float
unit: m/s
min: 0
max: 100
increment: 0.01
decimal: 2
default: 0
RO_ACCEL_LIM:
description:
short: Acceleration limit
long: |
Set to -1 to disable.
For mecanum rovers this limit is used for longitudinal and lateral acceleration.
type: float
unit: m/s^2
min: -1
max: 100
increment: 0.01
decimal: 2
default: -1
RO_DECEL_LIM:
description:
short: Deceleration limit
long: |
Set to -1 to disable.
Note that if it is disabled the rover will not slow down when approaching waypoints in auto modes.
For mecanum rovers this limit is used for longitudinal and lateral deceleration.
type: float
unit: m/s^2
min: -1
max: 100
increment: 0.01
decimal: 2
default: -1
RO_JERK_LIM:
description:
short: Jerk limit
long: |
Set to -1 to disable.
Note that if it is disabled the rover will not slow down when approaching waypoints in auto modes.
For mecanum rovers this limit is used for longitudinal and lateral jerk.
type: float
unit: m/s^3
min: -1
max: 100
increment: 0.01
decimal: 2
default: -1
RO_YAW_RATE_TH:
description:
short: Yaw rate measurement threshold
long: The minimum threshold for the yaw rate measurement not to be interpreted as zero.
type: float
unit: deg/s
min: 0
max: 100
increment: 0.01
decimal: 2
default: 3
RO_SPEED_TH:
description:
short: Speed measurement threshold
long: The minimum threshold for the speed measurement not to be interpreted as zero.
type: float
unit: m/s
min: 0
max: 100
increment: 0.01
decimal: 2
default: 0.1
RO_YAW_STICK_DZ:
description:
short: Yaw stick deadzone
long: Percentage of stick input range that will be interpreted as zero around the stick centered value.
type: float
min: 0
max: 1
increment: 0.01
decimal: 2
default: 0.1
- group: Rover Rate Control
definitions:
RO_YAW_RATE_P:
description:
short: Proportional gain for closed loop yaw rate controller
type: float
min: 0
max: 100
increment: 0.01
decimal: 3
default: 0
RO_YAW_RATE_I:
description:
short: Integral gain for closed loop yaw rate controller
type: float
min: 0
max: 100
increment: 0.01
decimal: 3
default: 0
RO_YAW_RATE_LIM:
description:
short: Yaw rate limit
long: |
Used to cap yaw rate setpoints and map controller inputs to yaw rate setpoints
in Acro, Stabilized and Position mode.
type: float
unit: deg/s
min: 0
max: 10000
increment: 0.01
decimal: 2
default: 0
RO_YAW_ACCEL_LIM:
description:
short: Yaw acceleration limit
long: |
Used to cap how quickly the magnitude of yaw rate setpoints can increase.
Set to -1 to disable.
type: float
unit: deg/s^2
min: -1
max: 10000
increment: 0.01
decimal: 2
default: -1
RO_YAW_DECEL_LIM:
description:
short: Yaw deceleration limit
long: |
Used to cap how quickly the magnitude of yaw rate setpoints can decrease.
Set to -1 to disable.
type: float
unit: deg/s^2
min: -1
max: 10000
increment: 0.01
decimal: 2
default: -1
- group: Rover Attitude Control
definitions:
RO_YAW_P:
description:
short: Proportional gain for closed loop yaw controller
type: float
min: 0
max: 100
increment: 0.01
decimal: 3
default: 0
- group: Rover Velocity Control
definitions:
RO_SPEED_P:
description:
short: Proportional gain for ground speed controller
type: float
min: 0
max: 100
increment: 0.01
decimal: 2
default: 0
RO_SPEED_I:
description:
short: Integral gain for ground speed controller
type: float
min: 0
max: 100
increment: 0.001
decimal: 3
default: 0
RO_SPEED_LIM:
description:
short: Speed limit
long: |
Used to cap speed setpoints and map controller inputs to speed setpoints
in Position mode.
type: float
unit: m/s
min: -1
max: 100
increment: 0.01
decimal: 2
default: -1
+255
View File
@@ -0,0 +1,255 @@
/****************************************************************************
*
* Copyright (c) 2025 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 rovercontrol_params.c
*
* Parameters defined by the rover control lib.
*/
/**
* Yaw stick deadzone
*
* Percentage of stick input range that will be interpreted as zero around the stick centered value.
*
* @min 0
* @max 1
* @increment 0.01
* @decimal 2
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_STICK_DZ, 0.1f);
/**
* Yaw rate measurement threshold
*
* The minimum threshold for the yaw rate measurement not to be interpreted as zero.
*
* @unit deg/s
* @min 0
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_RATE_TH, 3.f);
/**
* Proportional gain for closed loop yaw rate controller
*
* @min 0
* @max 100
* @increment 0.01
* @decimal 3
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_RATE_P, 0.f);
/**
* Integral gain for closed loop yaw rate controller
*
* @min 0
* @max 100
* @increment 0.01
* @decimal 3
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_RATE_I, 0.f);
/**
* Yaw rate limit
*
* Used to cap yaw rate setpoints and map controller inputs to yaw rate setpoints
* in Acro, Stabilized and Position mode.
*
* @unit deg/s
* @min 0
* @max 10000
* @increment 0.01
* @decimal 2
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_RATE_LIM, 0.f);
/**
* Yaw acceleration limit
*
* Used to cap how quickly the magnitude of yaw rate setpoints can increase.
* Set to -1 to disable.
*
* @unit deg/s^2
* @min -1
* @max 10000
* @increment 0.01
* @decimal 2
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_ACCEL_LIM, -1.f);
/**
* Yaw deceleration limit
*
* Used to cap how quickly the magnitude of yaw rate setpoints can decrease.
* Set to -1 to disable.
*
* @unit deg/s^2
* @min -1
* @max 10000
* @increment 0.01
* @decimal 2
* @group Rover Rate Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_DECEL_LIM, -1.f);
/**
* Proportional gain for closed loop yaw controller
*
* @min 0
* @max 100
* @increment 0.01
* @decimal 3
* @group Rover Attitude Control
*/
PARAM_DEFINE_FLOAT(RO_YAW_P, 0.f);
/**
* Speed the rover drives at maximum throttle
*
* Used to linearly map speeds [m/s] to throttle values [-1. 1].
*
* @min 0
* @max 100
* @unit m/s
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_MAX_THR_SPEED, 0.f);
/**
* Proportional gain for ground speed controller
*
* @min 0
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_SPEED_P, 0.f);
/**
* Integral gain for ground speed controller
*
* @min 0
* @max 100
* @increment 0.001
* @decimal 3
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_SPEED_I, 0.f);
/**
* Speed limit
*
* Used to cap speed setpoints and map controller inputs to speed setpoints in Position mode.
*
* @unit m/s
* @min -1
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_SPEED_LIM, -1.f);
/**
* Acceleration limit
*
* Set to -1 to disable.
* For mecanum rovers this limit is used for longitudinal and lateral acceleration.
*
* @unit m/s^2
* @min -1
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_ACCEL_LIM, -1.f);
/**
* Deceleration limit
*
* Set to -1 to disable.
* Note that if it is disabled the rover will not slow down when approaching waypoints in auto modes.
* For mecanum rovers this limit is used for longitudinal and lateral deceleration.
*
* @unit m/s^2
* @min -1
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_DECEL_LIM, -1.f);
/**
* Jerk limit
*
* Set to -1 to disable.
* Note that if it is disabled the rover will not slow down when approaching waypoints in auto modes.
* For mecanum rovers this limit is used for longitudinal and lateral jerk.
*
* @unit m/s^3
* @min -1
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_JERK_LIM, -1.f);
/**
* Speed measurement threshold
*
* Set to -1 to disable.
* The minimum threshold for the speed measurement not to be interpreted as zero.
*
* @unit m/s
* @min 0
* @max 100
* @increment 0.01
* @decimal 2
* @group Rover Velocity Control
*/
PARAM_DEFINE_FLOAT(RO_SPEED_TH, 0.1f);
@@ -50,5 +50,3 @@ px4_add_module(
MODULE_CONFIG
module.yaml
)
set_property(GLOBAL APPEND PROPERTY PX4_MODULE_CONFIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/rover_control/module.yaml)