rc_update: cleanup parameter usage

This commit is contained in:
Daniel Agar
2019-12-23 23:47:34 +01:00
committed by Lorenz Meier
parent acd18adc18
commit 57fc98812d
6 changed files with 227 additions and 615 deletions
+87 -9
View File
@@ -39,8 +39,6 @@
* @author Beat Kueng <beat-kueng@gmx.net>
*/
#include "parameters.h"
#include <px4_platform_common/px4_config.h>
#include <px4_platform_common/defines.h>
#include <px4_platform_common/module.h>
@@ -57,6 +55,7 @@
#include <uORB/SubscriptionCallback.hpp>
#include <uORB/topics/actuator_controls.h>
#include <uORB/topics/manual_control_setpoint.h>
#include <uORB/topics/input_rc.h>
#include <uORB/topics/rc_channels.h>
#include <uORB/topics/rc_parameter_map.h>
#include <uORB/topics/parameter_update.h>
@@ -123,10 +122,31 @@ private:
*/
void set_params_from_rc();
perf_counter_t _loop_perf; /**< loop performance counter */
static constexpr unsigned RC_MAX_CHAN_COUNT{input_rc_s::RC_INPUT_MAX_CHANNELS}; /**< maximum number of r/c channels we handle */
Parameters _parameters{}; /**< local copies of interesting parameters */
ParameterHandles _parameter_handles{}; /**< handles for interesting parameters */
struct Parameters {
uint16_t min[RC_MAX_CHAN_COUNT];
uint16_t trim[RC_MAX_CHAN_COUNT];
uint16_t max[RC_MAX_CHAN_COUNT];
uint16_t dz[RC_MAX_CHAN_COUNT];
bool rev[RC_MAX_CHAN_COUNT];
int32_t rc_map_param[rc_parameter_map_s::RC_PARAM_MAP_NCHAN];
} _parameters{};
struct ParameterHandles {
param_t min[RC_MAX_CHAN_COUNT];
param_t trim[RC_MAX_CHAN_COUNT];
param_t max[RC_MAX_CHAN_COUNT];
param_t rev[RC_MAX_CHAN_COUNT];
param_t dz[RC_MAX_CHAN_COUNT];
param_t rc_map_param[rc_parameter_map_s::RC_PARAM_MAP_NCHAN];
param_t rc_param[rc_parameter_map_s::RC_PARAM_MAP_NCHAN]; /**< param handles for the parameters which are bound
to a RC channel, equivalent float values in the
_parameters struct are not existing
because these parameters are never read. */
} _parameter_handles{};
uORB::SubscriptionCallbackWorkItem _input_rc_sub{this, ORB_ID(input_rc)};
@@ -145,10 +165,68 @@ private:
hrt_abstime _last_rc_to_param_map_time = 0;
math::LowPassFilter2p _filter_roll; /**< filters for the main 4 stick inputs */
math::LowPassFilter2p _filter_pitch; /** we want smooth setpoints as inputs to the controllers */
math::LowPassFilter2p _filter_yaw;
math::LowPassFilter2p _filter_throttle;
math::LowPassFilter2p _filter_roll{50.0f, 10.f}; /**< filters for the main 4 stick inputs */
math::LowPassFilter2p _filter_pitch{50.0f, 10.f}; /** we want smooth setpoints as inputs to the controllers */
math::LowPassFilter2p _filter_yaw{50.0f, 10.f};
math::LowPassFilter2p _filter_throttle{50.0f, 10.f};
perf_counter_t _loop_perf; /**< loop performance counter */
DEFINE_PARAMETERS(
(ParamInt<px4::params::RC_MAP_ROLL>) _param_rc_map_roll,
(ParamInt<px4::params::RC_MAP_PITCH>) _param_rc_map_pitch,
(ParamInt<px4::params::RC_MAP_YAW>) _param_rc_map_yaw,
(ParamInt<px4::params::RC_MAP_THROTTLE>) _param_rc_map_throttle,
(ParamInt<px4::params::RC_MAP_FAILSAFE>) _param_rc_map_failsafe,
(ParamInt<px4::params::RC_MAP_FLTMODE>) _param_rc_map_fltmode,
(ParamInt<px4::params::RC_MAP_MODE_SW>) _param_rc_map_mode_sw,
(ParamInt<px4::params::RC_MAP_FLAPS>) _param_rc_map_flaps,
(ParamInt<px4::params::RC_MAP_RETURN_SW>) _param_rc_map_return_sw,
(ParamInt<px4::params::RC_MAP_RATT_SW>) _param_rc_map_ratt_sw,
(ParamInt<px4::params::RC_MAP_POSCTL_SW>) _param_rc_map_posctl_sw,
(ParamInt<px4::params::RC_MAP_LOITER_SW>) _param_rc_map_loiter_sw,
(ParamInt<px4::params::RC_MAP_ACRO_SW>) _param_rc_map_acro_sw,
(ParamInt<px4::params::RC_MAP_OFFB_SW>) _param_rc_map_offb_sw,
(ParamInt<px4::params::RC_MAP_KILL_SW>) _param_rc_map_kill_sw,
(ParamInt<px4::params::RC_MAP_ARM_SW>) _param_rc_map_arm_sw,
(ParamInt<px4::params::RC_MAP_TRANS_SW>) _param_rc_map_trans_sw,
(ParamInt<px4::params::RC_MAP_GEAR_SW>) _param_rc_map_gear_sw,
(ParamInt<px4::params::RC_MAP_STAB_SW>) _param_rc_map_stab_sw,
(ParamInt<px4::params::RC_MAP_MAN_SW>) _param_rc_map_man_sw,
(ParamInt<px4::params::RC_MAP_AUX1>) _param_rc_map_aux1,
(ParamInt<px4::params::RC_MAP_AUX2>) _param_rc_map_aux2,
(ParamInt<px4::params::RC_MAP_AUX3>) _param_rc_map_aux3,
(ParamInt<px4::params::RC_MAP_AUX4>) _param_rc_map_aux4,
(ParamInt<px4::params::RC_MAP_AUX5>) _param_rc_map_aux5,
(ParamInt<px4::params::RC_MAP_AUX6>) _param_rc_map_aux6,
(ParamInt<px4::params::RC_FAILS_THR>) _param_rc_fails_thr,
(ParamFloat<px4::params::RC_ASSIST_TH>) _param_rc_assist_th,
(ParamFloat<px4::params::RC_AUTO_TH>) _param_rc_auto_th,
(ParamFloat<px4::params::RC_RATT_TH>) _param_rc_ratt_th,
(ParamFloat<px4::params::RC_POSCTL_TH>) _param_rc_posctl_th,
(ParamFloat<px4::params::RC_LOITER_TH>) _param_rc_loiter_th,
(ParamFloat<px4::params::RC_ACRO_TH>) _param_rc_acro_th,
(ParamFloat<px4::params::RC_OFFB_TH>) _param_rc_offb_th,
(ParamFloat<px4::params::RC_KILLSWITCH_TH>) _param_rc_killswitch_th,
(ParamFloat<px4::params::RC_ARMSWITCH_TH>) _param_rc_armswitch_th,
(ParamFloat<px4::params::RC_TRANS_TH>) _param_rc_trans_th,
(ParamFloat<px4::params::RC_GEAR_TH>) _param_rc_gear_th,
(ParamFloat<px4::params::RC_STAB_TH>) _param_rc_stab_th,
(ParamFloat<px4::params::RC_MAN_TH>) _param_rc_man_th,
(ParamFloat<px4::params::RC_RETURN_TH>) _param_rc_return_th,
(ParamFloat<px4::params::RC_FLT_SMP_RATE>) _param_rc_flt_smp_rate,
(ParamFloat<px4::params::RC_FLT_CUTOFF>) _param_rc_flt_cutoff,
(ParamInt<px4::params::RC_CHAN_CNT>) _param_rc_chan_cnt
)
};