Skip to content

AC_AttitudeControl: ATC_ACC_R/P/Y_MAX renamed and scaled to deg/s/s#32192

Merged
rmackay9 merged 28 commits intoArduPilot:masterfrom
rmackay9:copter47-atc-param-conv
Mar 4, 2026
Merged

AC_AttitudeControl: ATC_ACC_R/P/Y_MAX renamed and scaled to deg/s/s#32192
rmackay9 merged 28 commits intoArduPilot:masterfrom
rmackay9:copter47-atc-param-conv

Conversation

@rmackay9
Copy link
Copy Markdown
Contributor

@rmackay9 rmackay9 commented Feb 14, 2026

This is a continuation of PR #32186 and helps to address issue #31562

This PR renames and converts four ATC_xxx parameters so they are in deg instead of centi-degrees:

  • ATC_ACCEL_P_MAX (cdeg/s/s) -> - ATC_ACC_P_MAX (deg/s/s)
  • ATC_ACCEL_R_MAX (cdeg/s/s) -> - ATC_ACC_R_MAX (deg/s/s)
  • ATC_ACCEL_Y_MAX (cdeg/s/s) -> - ATC_ACC_Y_MAX (deg/s/s)
  • ATC_SLEW_YAW (cdeg/s) -> - ATC_RATE_WPY_MAX (deg/s)

On quadplane the change appears like this:

  • Q_A_ACCEL_P_MAX (cdeg/s/s) -> - Q_A_ACC_P_MAX (deg/s/s)
  • Q_A_ACCEL_R_MAX (cdeg/s/s) -> - Q_A_ACC_R_MAX (deg/s/s)
  • Q_A_ACCEL_Y_MAX (cdeg/s/s) -> - Q_A_ACC_Y_MAX (deg/s/s)
  • Q_A_SLEW_YAW (cdeg/s) -> - Q_A_RATE_WPY_MAX (deg/s)

This has been lightly tested in SITL but only to confirm that the parameter conversion works as expected

copter-before-vs-after quadplane-before-vs-after sub-before-vs-after

@rmackay9 rmackay9 changed the title AC_AttitudeControl: four ATC_ACC_R/P/Y_MAX renamed and scaled to deg/s/s AC_AttitudeControl: ATC_ACC_R/P/Y_MAX renamed and scaled to deg/s/s Feb 14, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Renames four attitude-control acceleration/slew parameters and converts their units from centi-degrees to degrees (including QuadPlane and ArduSub variants), updating defaults and parameter conversion logic accordingly.

Changes:

  • Introduces new *_ACC_* and *_SLEW_YAW_MAX parameters using deg/s/s and deg/s, deprecating the older *_ACCEL_* and *_SLEW_YAW (cdeg-based) params.
  • Adds scaled parameter migration entries to convert existing saved params to the new names/units.
  • Updates SITL examples, hardware defaults, frame params, and autotest model/default param sets to use the new parameter names/units.

Reviewed changes

Copilot reviewed 54 out of 54 changed files in this pull request and generated no comments.

Show a summary per file
File Description
libraries/SITL/examples/Morse/quadcopter.parm Updates example params to new ATC_ACC_* names and deg-based scaling
libraries/SITL/examples/Morse/quad_scanner.parm Updates example params to new ATC_ACC_* names and deg-based scaling
libraries/AP_Scripting/examples/config_profiles.lua Renames scripted profile parameter to ATC_ACC_P_MAX with deg-based value
libraries/AP_HAL_ESP32/hwdef/esp32s3m5stampfly/defaults.parm Converts board defaults to new ATC_ACC_* names (deg/s/s)
libraries/AP_HAL_ChibiOS/hwdef/skyviper-v2450/defaults.parm Converts defaults to ATC_ACC_* and ATC_SLEW_YAW_MAX (deg units)
libraries/AP_HAL_ChibiOS/hwdef/skyviper-journey/defaults.parm Converts defaults to ATC_ACC_* and ATC_SLEW_YAW_MAX (deg units)
libraries/AP_HAL_ChibiOS/hwdef/luminousbee5/defaults.parm Converts defaults to new ATC_ACC_* names
libraries/AP_HAL_ChibiOS/hwdef/crazyflie2/defaults.parm Converts defaults to new ATC_ACC_* names
libraries/AP_HAL_ChibiOS/hwdef/Swan-K1/defaults.parm Converts QuadPlane defaults to Q_A_ACC_* names (deg/s/s)
libraries/AP_HAL_ChibiOS/hwdef/CubeSolo/defaults.parm Converts defaults to new ATC_ACC_* names
libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-joey/defaults.parm Converts readonly defaults to new ATC_ACC_* names
libraries/AP_HAL_ChibiOS/hwdef/CubeGreen-solo/defaults.parm Converts defaults to new ATC_ACC_* names
libraries/AC_AttitudeControl/AC_AttitudeControl_Sub.h Renames Sub yaw-accel default macro to reflect deg-based unit
libraries/AC_AttitudeControl/AC_AttitudeControl_Sub.cpp Applies new Sub yaw-accel default to renamed param member
libraries/AC_AttitudeControl/AC_AttitudeControl.h Switches internal storage to deg-based _degss/_degs members and updates defaults
libraries/AC_AttitudeControl/AC_AttitudeControl.cpp Adds new params, removes old ones, and migrates old param values with scaling
Tools/autotest/quadplane.py Updates autotest parameter references to Q_A_ACC_* names
Tools/autotest/models/freestyle.param Converts model params to new ATC_ACC_* and ATC_SLEW_YAW_MAX
Tools/autotest/models/Callisto.param Converts model params to new ATC_ACC_* and ATC_SLEW_YAW_MAX
Tools/autotest/default_params/quadplane-copter_tailsitter.parm Converts default params to Q_A_ACC_* names (deg/s/s)
Tools/autotest/default_params/copter-octaquad.parm Converts default params to ATC_ACC_* names
Tools/autotest/default_params/copter-octaquad-cw-cor.parm Converts default params to ATC_ACC_* names
Tools/autotest/default_params/copter-octaquad-cor.parm Converts default params to ATC_ACC_* names
Tools/autotest/default_params/copter-heli.parm Converts default params to ATC_ACC_* names
Tools/Frame_params/iflight-chimera7-4.2.param Converts frame params to ATC_ACC_* names (deg/s/s)
Tools/Frame_params/WLToys_V383_HeliQuad.param Converts frame params to ATC_ACC_* names (deg/s/s)
Tools/Frame_params/Solo-Copter-GreenCube.param Converts frame params to ATC_ACC_* and ATC_SLEW_YAW_MAX
Tools/Frame_params/QuadPlanes/XPlane-Alia.parm Converts QuadPlane frame params to Q_A_ACC_* and Q_A_SLEW_YAW_MAX
Tools/Frame_params/QuadPlanes/SparkleTech-EagleHero.param Converts QuadPlane frame params to Q_A_ACC_*
Tools/Frame_params/QuadPlanes/Mugin_EV350.param Converts QuadPlane frame params to Q_A_ACC_*
Tools/Frame_params/QuadPlanes/MFE_StriverMini.param Converts QuadPlane frame params to Q_A_ACC_*
Tools/Frame_params/QuadPlanes/Foxtech_GreatShark.param Converts QuadPlane frame params to Q_A_ACC_* and Q_A_SLEW_YAW_MAX
Tools/Frame_params/QuadPlanes/Foxtech_Altair370.parm Converts QuadPlane frame params to Q_A_ACC_*
Tools/Frame_params/QuadPlanes/Aerofox_AYK320.param Converts QuadPlane frame params to Q_A_ACC_* and Q_A_SLEW_YAW_MAX
Tools/Frame_params/Parrot_Bebop2.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Parrot_Bebop.param Converts frame params to ATC_ACC_*
Tools/Frame_params/ModalAI/D0013.parm Converts frame params to ATC_ACC_* using deg-based values
Tools/Frame_params/ModalAI/AutonomyDevKit.parm Converts frame params to ATC_ACC_* using deg-based values
Tools/Frame_params/Holybro-kospi1.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Holybro-X500v2-bdshot.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Holybro-S500.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Holybro-QAV250.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Holybro-QAV250-bdshot.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Hexsoon-td860.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Hexsoon-edu650.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Hexsoon-edu450.param Converts frame params to ATC_ACC_*
Tools/Frame_params/EFlight_Convergence.param Converts QuadPlane yaw slew param to Q_A_SLEW_YAW_MAX
Tools/Frame_params/EAMS_445.param Converts frame params to ATC_ACC_*
Tools/Frame_params/DJI_AGRAS_MG-1.param Converts frame params to ATC_ACC_*
Tools/Frame_params/Amovlab-p200.param Converts frame param to ATC_ACC_Y_MAX
Tools/Frame_params/3DR_Iris+.param Converts frame param to ATC_ACC_Y_MAX
ArduSub/Parameters.h Updates ArduSub defaults table to ATC_ACC_Y_MAX with deg/s/s value
ArduPlane/tailsitter.cpp Updates tailsitter defaults table to Q_A_ACC_{P,R}_MAX in deg/s/s
ArduPlane/quadplane.cpp Updates quadplane defaults table to Q_A_ACC_* in deg/s/s
Comments suppressed due to low confidence (4)

libraries/AC_AttitudeControl/AC_AttitudeControl.cpp:1

  • The PR adds non-trivial parameter migration (rename + unit scaling) across vehicle types. Please add an autotest that boots with legacy params set (*_ACCEL_* + *_SLEW_YAW), triggers parameter conversion, and asserts the new params exist with correctly scaled values (×0.01) for Copter, ArduSub, and QuadPlane.
    libraries/AC_AttitudeControl/AC_AttitudeControl.cpp:1
  • The new SLEW_YAW_MAX documentation says it applies to 'RTL and Auto' only, but the in-code member comment in AC_AttitudeControl.h describes it as applying to 'Loiter, RTL, Auto'. Please align the parameter description with the actual modes where the limit is used to avoid user confusion.
    Tools/autotest/default_params/quadplane-copter_tailsitter.parm:1
  • Several converted .parm values appear truncated rather than rounded when scaling by 0.01 (e.g., 207069.531250 cdeg/s/s becomes 2070.69 instead of rounding to 2070.70). To preserve the original tuning as closely as possible, please round to a consistent precision (typically 2 decimals for a ×0.01 conversion) instead of truncating.
    libraries/AC_AttitudeControl/AC_AttitudeControl_Sub.h:1
  • The macro name mixes the old ACCEL_* terminology with the new unit-based suffix (_DEGSS). Consider renaming this constant to match the updated parameter naming (e.g., AC_ATC_SUB_ACC_Y_MAX_DEFAULT_DEGSS) so it's clearer that it corresponds to ACC_Y_MAX in deg/s/s.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread libraries/AC_AttitudeControl/AC_AttitudeControl.cpp Outdated
Copy link
Copy Markdown
Contributor

@lthall lthall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line by line looks good. Couple little fixes for the autotests.

Like Peter I have reservations about "SLEW", I think AUTO_Y_RATE would be an improvement but I am not going to delay anything over it.

I am happy to approve.

Comment thread Tools/autotest/quadplane.py Outdated
Comment thread Tools/autotest/quadplane.py Outdated
@rmackay9 rmackay9 force-pushed the copter47-atc-param-conv branch from 603ced4 to c770b65 Compare February 14, 2026 04:17
@Hwurzburg Hwurzburg added the WikiNeeded needs wiki update label Feb 14, 2026
@rmackay9 rmackay9 force-pushed the copter47-atc-param-conv branch from c770b65 to 20acd5a Compare February 17, 2026 06:53
Copy link
Copy Markdown
Member

@IamPete1 IamPete1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Comment thread libraries/AC_AttitudeControl/AC_AttitudeControl.h Outdated
@rmackay9 rmackay9 force-pushed the copter47-atc-param-conv branch from 20acd5a to 692f53c Compare March 4, 2026 03:07
@rmackay9
Copy link
Copy Markdown
Contributor Author

rmackay9 commented Mar 4, 2026

I've tested this in SITL and while I found an issue with the yaw slew, the issue also exists in master and Leonard has a PR to fix it here: #32359

@rmackay9 rmackay9 merged commit 527c6bc into ArduPilot:master Mar 4, 2026
108 checks passed
@rmackay9 rmackay9 deleted the copter47-atc-param-conv branch March 4, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants