CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
Ardupilot

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: Ardupilot/ardupilot
Path: blob/master/libraries/AC_InputManager/AC_InputManager_Heli.h
Views: 1798
1
#pragma once
2
3
/// @file AC_InputManager_Heli.h
4
/// @brief Pilot manual control input library for Conventional Helicopter
5
6
#include <AP_Param/AP_Param.h>
7
#include <AP_Common/AP_Common.h>
8
#include "AC_InputManager.h"
9
10
# define AC_ATTITUDE_HELI_STAB_COLLECTIVE_MIN_DEFAULT 0
11
# define AC_ATTITUDE_HELI_STAB_COLLECTIVE_LOW_DEFAULT 40
12
# define AC_ATTITUDE_HELI_STAB_COLLECTIVE_HIGH_DEFAULT 60
13
# define AC_ATTITUDE_HELI_STAB_COLLECTIVE_MAX_DEFAULT 100
14
15
/// @class AP_InputManager_Heli
16
/// @brief Class managing the pilot's control inputs for Conventional Helicopter
17
class AC_InputManager_Heli : public AC_InputManager {
18
public:
19
// Constructor
20
AC_InputManager_Heli()
21
: AC_InputManager()
22
{
23
// setup parameter defaults
24
AP_Param::setup_object_defaults(this, var_info);
25
}
26
27
/* Do not allow copies */
28
CLASS_NO_COPY(AC_InputManager_Heli);
29
30
// get_pilot_desired_collective - rescale's pilot collective pitch input in Stabilize and Acro modes
31
float get_pilot_desired_collective(int16_t control_in);
32
33
// set_use_stab_col - setter function
34
void set_use_stab_col(bool use) { _im_flags_heli.use_stab_col = use; }
35
36
// set_heli_stab_col_ramp - setter function
37
void set_stab_col_ramp(float ramp) { _stab_col_ramp = constrain_float(ramp, 0.0, 1.0); }
38
39
// parameter_check - returns true if input manager specific parameters are sensible, used for pre-arm check
40
bool parameter_check(char* fail_msg, uint8_t fail_msg_len) const;
41
42
static const struct AP_Param::GroupInfo var_info[];
43
44
private:
45
struct InputManagerHeliFlags {
46
uint8_t use_stab_col : 1; // 1 if we should use Stabilise mode collective range, 0 for Acro range
47
} _im_flags_heli;
48
49
// factor used to smoothly ramp collective from Acro value to Stab-Col value
50
float _stab_col_ramp = 0;
51
52
AP_Int16 _heli_stab_col_min; // minimum collective pitch setting at zero throttle input in Stabilize mode
53
AP_Int16 _heli_stab_col_low; // collective pitch setting at mid-low throttle input in Stabilize mode
54
AP_Int16 _heli_stab_col_high; // collective pitch setting at mid-high throttle input in Stabilize mode
55
AP_Int16 _heli_stab_col_max; // maximum collective pitch setting at full throttle input in Stabilize mode
56
AP_Float _acro_col_expo; // used to soften collective pitch inputs near center point in Acro mode
57
58
};
59
60