Copter: add parameter table for flip mode

This commit is contained in:
bnsgeyer
2026-08-20 17:59:29 -04:00
committed by Bill Geyer
parent 539eb71cd7
commit 4fe7ad4fab
4 changed files with 39 additions and 12 deletions
+8 -8
View File
@@ -1186,14 +1186,9 @@ const AP_Param::GroupInfo ParametersG2::var_info2[] = {
#endif
#if MODE_FLIP_ENABLED
// @Param: FLIP_RATE
// @DisplayName: Flip Mode Rotational Rate
// @Description: Rotational Rate for Flip Mode in Deg/s. Be sure to set a rotational rate that the aircraft can achieve.
// @Units: deg/s
// @Range: 60 1000
// @Increment: 1
// @User: Standard
AP_GROUPINFO("FLIP_RATE", 23, ParametersG2, flip_rate_dps, 400),
// @Group: FLIP_
// @Path: mode_flip.cpp
AP_SUBGROUPPTR(mode_flip_ptr, "FLIP_", 23, ParametersG2, ModeFlip),
#endif
// ID 62 is reserved for the AP_SUBGROUPEXTENSION
@@ -1262,6 +1257,11 @@ ParametersG2::ParametersG2(void) :
#if MODE_POSHOLD_ENABLED
,mode_poshold_ptr(&copter.mode_poshold)
#endif
#if MODE_FLIP_ENABLED
,mode_flip_ptr(&copter.mode_flip)
#endif
{
AP_Param::setup_object_defaults(this, var_info);
AP_Param::setup_object_defaults(this, var_info2);
+2 -1
View File
@@ -737,8 +737,9 @@ public:
#endif
#if MODE_FLIP_ENABLED
AP_Int16 flip_rate_dps;
void *mode_flip_ptr;
#endif
};
extern const AP_Param::Info var_info[];
+5 -2
View File
@@ -958,8 +958,8 @@ private:
class ModeFlip : public Mode {
public:
// inherit constructor
using Mode::Mode;
// need a constructor
ModeFlip(void);
Number mode_number() const override { return Number::FLIP; }
bool init(bool ignore_checks) override;
@@ -973,6 +973,8 @@ public:
void abandon_flip();
static const struct AP_Param::GroupInfo var_info[];
protected:
const char *name() const override { return "Flip"; }
@@ -996,6 +998,7 @@ private:
uint32_t start_time_ms;
int8_t roll_dir; // roll direction (-1 = roll left, 1 = roll right)
int8_t pitch_dir; // pitch direction (-1 = pitch forward, 1 = pitch back)
AP_Float flip_rate_dps; // rotational rate during flip
bool input_is_high_magnitude(RC_Channel &input) const;
};
+24 -1
View File
@@ -28,6 +28,29 @@
#define FLIP_PITCH_BACK 1 // used to set flip_dir
#define FLIP_PITCH_FORWARD -1 // used to set flip_dir
#define FLIP_RATE_DEFAULT_DPS 400.0f // default flip rate in deg/s
const AP_Param::GroupInfo ModeFlip::var_info[] = {
// @Param: RATE
// @DisplayName: Flip Mode Rotational Rate
// @Description: Rotational Rate for Flip Mode in Deg/s. Be sure to set a rotational rate that the aircraft can achieve.
// @Units: deg/s
// @Range: 60 1000
// @Increment: 1
// @User: Standard
AP_GROUPINFO("RATE", 1, ModeFlip, flip_rate_dps, FLIP_RATE_DEFAULT_DPS),
AP_GROUPEND
};
// constructor
ModeFlip::ModeFlip(void) : Mode()
{
// load parameter defaults
AP_Param::setup_object_defaults(this, var_info);
}
// flip_init - initialise flip controller
bool ModeFlip::init(bool ignore_checks)
{
@@ -88,7 +111,7 @@ bool ModeFlip::init(bool ignore_checks)
void ModeFlip::run()
{
// get flip rotation rate parameter and constrain to range from 60 to 1000 deg/s.
const float flip_rate_rads = radians(constrain_float(g2.flip_rate_dps.get(), 60.0f, 1000.0f));
const float flip_rate_rads = radians(constrain_float(flip_rate_dps.get(), 60.0f, 1000.0f));
// determine timeout for flip based on rotation rate. Time is doubled to allow for poorly tuned vehicles.
const float flip_time_out_ms = 1000.0f * (2.0f * radians(360.0f) / flip_rate_rads);