APM:Libraries
Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | List of all members
AP_MotorsMulticopter Class Referenceabstract

#include <AP_MotorsMulticopter.h>

Inheritance diagram for AP_MotorsMulticopter:
[legend]
Collaboration diagram for AP_MotorsMulticopter:
[legend]

Public Types

enum  spool_up_down_mode {
  SHUT_DOWN = 0, SPIN_WHEN_ARMED = 1, SPOOL_UP = 2, THROTTLE_UNLIMITED = 3,
  SPOOL_DOWN = 4
}
 
- Public Types inherited from AP_Motors
enum  motor_frame_class {
  MOTOR_FRAME_UNDEFINED = 0, MOTOR_FRAME_QUAD = 1, MOTOR_FRAME_HEXA = 2, MOTOR_FRAME_OCTA = 3,
  MOTOR_FRAME_OCTAQUAD = 4, MOTOR_FRAME_Y6 = 5, MOTOR_FRAME_HELI = 6, MOTOR_FRAME_TRI = 7,
  MOTOR_FRAME_SINGLE = 8, MOTOR_FRAME_COAX = 9, MOTOR_FRAME_TAILSITTER = 10, MOTOR_FRAME_HELI_DUAL = 11,
  MOTOR_FRAME_DODECAHEXA = 12, MOTOR_FRAME_HELI_QUAD = 13
}
 
enum  motor_frame_type {
  MOTOR_FRAME_TYPE_PLUS = 0, MOTOR_FRAME_TYPE_X = 1, MOTOR_FRAME_TYPE_V = 2, MOTOR_FRAME_TYPE_H = 3,
  MOTOR_FRAME_TYPE_VTAIL = 4, MOTOR_FRAME_TYPE_ATAIL = 5, MOTOR_FRAME_TYPE_Y6B = 10, MOTOR_FRAME_TYPE_Y6F = 11
}
 
enum  spool_up_down_desired { DESIRED_SHUT_DOWN = 0, DESIRED_SPIN_WHEN_ARMED = 1, DESIRED_THROTTLE_UNLIMITED = 2 }
 
enum  pwm_type {
  PWM_TYPE_NORMAL = 0, PWM_TYPE_ONESHOT = 1, PWM_TYPE_ONESHOT125 = 2, PWM_TYPE_BRUSHED = 3,
  PWM_TYPE_DSHOT150 = 4, PWM_TYPE_DSHOT300 = 5, PWM_TYPE_DSHOT600 = 6, PWM_TYPE_DSHOT1200 = 7
}
 

Public Member Functions

 AP_MotorsMulticopter (uint16_t loop_rate, uint16_t speed_hz=AP_MOTORS_SPEED_DEFAULT)
 
virtual void output ()
 
void output_min ()
 
void set_yaw_headroom (int16_t pwm)
 
void set_throttle_range (int16_t radio_min, int16_t radio_max)
 
void update_throttle_hover (float dt)
 
virtual float get_throttle_hover () const
 
void set_throttle_passthrough_for_esc_calibration (float throttle_input)
 
float get_lift_max ()
 
float get_batt_voltage_filt () const
 
float get_throttle_limit () const
 
float get_throttle_thrust_max () const
 
bool spool_up_complete () const
 
virtual void output_motor_mask (float thrust, uint8_t mask)
 
int16_t get_pwm_output_min () const
 
int16_t get_pwm_output_max () const
 
 FUNCTOR_TYPEDEF (thrust_compensation_fn_t, void, float *, uint8_t)
 
void set_thrust_compensation_callback (thrust_compensation_fn_t callback)
 
- Public Member Functions inherited from AP_Motors
 AP_Motors (uint16_t loop_rate, uint16_t speed_hz=AP_MOTORS_SPEED_DEFAULT)
 
bool initialised_ok () const
 
bool armed () const
 
void armed (bool arm)
 
void set_interlock (bool set)
 
bool get_interlock () const
 
void set_roll (float roll_in)
 
void set_pitch (float pitch_in)
 
void set_yaw (float yaw_in)
 
void set_throttle (float throttle_in)
 
void set_throttle_avg_max (float throttle_avg_max)
 
void set_throttle_filter_cutoff (float filt_hz)
 
void set_forward (float forward_in)
 
void set_lateral (float lateral_in)
 
float get_roll () const
 
float get_pitch () const
 
float get_yaw () const
 
float get_throttle () const
 
float get_throttle_bidirectional () const
 
float get_forward () const
 
float get_lateral () const
 
virtual void set_desired_spool_state (enum spool_up_down_desired spool)
 
enum spool_up_down_desired get_desired_spool_state (void) const
 
void set_air_density_ratio (float ratio)
 
virtual void set_update_rate (uint16_t speed_hz)
 
virtual void init (motor_frame_class frame_class, motor_frame_type frame_type)=0
 
virtual void set_frame_class_and_type (motor_frame_class frame_class, motor_frame_type frame_type)=0
 
virtual void output_test (uint8_t motor_seq, int16_t pwm)=0
 
virtual uint16_t get_motor_mask ()=0
 
void set_radio_passthrough (float roll_input, float pitch_input, float throttle_input, float yaw_input)
 
void set_loop_rate (uint16_t loop_rate)
 
pwm_type get_pwm_type (void) const
 

Static Public Attributes

static const struct AP_Param::GroupInfo var_info []
 

Protected Types

enum  HoverLearn { HOVER_LEARN_DISABLED = 0, HOVER_LEARN_ONLY = 1, HOVER_LEARN_AND_SAVE = 2 }
 

Protected Member Functions

void output_logic ()
 
virtual void output_to_motors ()=0
 
virtual void update_throttle_filter ()
 
virtual float get_current_limit_max_throttle ()
 
float apply_thrust_curve_and_volt_scaling (float thrust) const
 
void update_lift_max_from_batt_voltage ()
 
float get_compensation_gain () const
 
int16_t calc_thrust_to_pwm (float thrust_in) const
 
int16_t calc_spin_up_to_pwm () const
 
virtual void thrust_compensation (void)
 
virtual void output_boost_throttle (void)
 
void save_params_on_disarm ()
 
- Protected Member Functions inherited from AP_Motors
virtual void output_armed_stabilizing ()=0
 
virtual void rc_write (uint8_t chan, uint16_t pwm)
 
virtual void rc_write_angle (uint8_t chan, int16_t angle_cd)
 
virtual void rc_set_freq (uint32_t mask, uint16_t freq_hz)
 
virtual uint32_t rc_map_mask (uint32_t mask) const
 
void add_motor_num (int8_t motor_num)
 
int16_t calc_pwm_output_1to1 (float input, const SRV_Channel *servo)
 
int16_t calc_pwm_output_0to1 (float input, const SRV_Channel *servo)
 

Protected Attributes

AP_Int16 _yaw_headroom
 
AP_Float _thrust_curve_expo
 
AP_Float _spin_min
 
AP_Float _spin_max
 
AP_Float _spin_arm
 
AP_Float _batt_voltage_max
 
AP_Float _batt_voltage_min
 
AP_Float _batt_current_max
 
AP_Float _batt_current_time_constant
 
AP_Int8 _batt_idx
 
AP_Int16 _pwm_min
 
AP_Int16 _pwm_max
 
AP_Float _throttle_hover
 
AP_Int8 _throttle_hover_learn
 
AP_Int8 _disarm_disable_pwm
 
AP_Float _yaw_servo_angle_max_deg
 
AP_Float _spool_up_time
 
AP_Float _boost_scale
 
bool motor_enabled [AP_MOTORS_MAX_NUM_MOTORS]
 
int16_t _throttle_radio_min
 
int16_t _throttle_radio_max
 
spool_up_down_mode _spool_mode
 
float _spin_up_ratio
 
LowPassFilterFloat _batt_voltage_filt
 
float _lift_max
 
float _throttle_limit
 
float _throttle_thrust_max
 
uint16_t _disarm_safety_timer
 
thrust_compensation_fn_t _thrust_compensation_callback
 
- Protected Attributes inherited from AP_Motors
struct AP_Motors::AP_Motors_flags _flags
 
uint16_t _loop_rate
 
uint16_t _speed_hz
 
float _roll_in
 
float _pitch_in
 
float _yaw_in
 
float _throttle_in
 
float _forward_in
 
float _lateral_in
 
float _throttle_avg_max
 
LowPassFilterFloat _throttle_filter
 
spool_up_down_desired _spool_desired
 
float _air_density_ratio
 
uint16_t _motor_fast_mask
 
float _roll_radio_passthrough
 
float _pitch_radio_passthrough
 
float _throttle_radio_passthrough
 
float _yaw_radio_passthrough
 
AP_Int8 _pwm_type
 

Additional Inherited Members

- Static Public Member Functions inherited from AP_Motors
static AP_Motorsget_instance (void)
 
- Public Attributes inherited from AP_Motors
struct AP_Motors::AP_Motors_limit limit
 

Detailed Description

Definition at line 33 of file AP_MotorsMulticopter.h.

Member Enumeration Documentation

◆ HoverLearn

Enumerator
HOVER_LEARN_DISABLED 
HOVER_LEARN_ONLY 
HOVER_LEARN_AND_SAVE 

Definition at line 141 of file AP_MotorsMulticopter.h.

◆ spool_up_down_mode

Enumerator
SHUT_DOWN 
SPIN_WHEN_ARMED 
SPOOL_UP 
THROTTLE_UNLIMITED 
SPOOL_DOWN 

Definition at line 57 of file AP_MotorsMulticopter.h.

Constructor & Destructor Documentation

◆ AP_MotorsMulticopter()

AP_MotorsMulticopter::AP_MotorsMulticopter ( uint16_t  loop_rate,
uint16_t  speed_hz = AP_MOTORS_SPEED_DEFAULT 
)

Definition at line 190 of file AP_MotorsMulticopter.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ apply_thrust_curve_and_volt_scaling()

float AP_MotorsMulticopter::apply_thrust_curve_and_volt_scaling ( float  thrust) const
protected

Definition at line 310 of file AP_MotorsMulticopter.cpp.

Referenced by calc_thrust_to_pwm().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_spin_up_to_pwm()

int16_t AP_MotorsMulticopter::calc_spin_up_to_pwm ( ) const
protected

Definition at line 377 of file AP_MotorsMulticopter.cpp.

Referenced by AP_MotorsMatrix::output_to_motors(), AP_MotorsTri::output_to_motors(), AP_MotorsSingle::output_to_motors(), and AP_MotorsCoax::output_to_motors().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_thrust_to_pwm()

int16_t AP_MotorsMulticopter::calc_thrust_to_pwm ( float  thrust_in) const
protected

Definition at line 371 of file AP_MotorsMulticopter.cpp.

Referenced by output_motor_mask(), AP_MotorsMatrix::output_to_motors(), AP_MotorsTri::output_to_motors(), AP_MotorsCoax::output_to_motors(), and AP_MotorsSingle::output_to_motors().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FUNCTOR_TYPEDEF()

AP_MotorsMulticopter::FUNCTOR_TYPEDEF ( thrust_compensation_fn_t  ,
void  ,
float *  ,
uint8_t   
)

Referenced by spool_up_complete().

Here is the caller graph for this function:

◆ get_batt_voltage_filt()

float AP_MotorsMulticopter::get_batt_voltage_filt ( ) const
inline

Definition at line 73 of file AP_MotorsMulticopter.h.

Here is the call graph for this function:

◆ get_compensation_gain()

float AP_MotorsMulticopter::get_compensation_gain ( ) const
protected

Definition at line 353 of file AP_MotorsMulticopter.cpp.

Referenced by AP_MotorsMatrix::output_armed_stabilizing(), AP_MotorsTri::output_armed_stabilizing(), AP_MotorsSingle::output_armed_stabilizing(), and AP_MotorsCoax::output_armed_stabilizing().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_current_limit_max_throttle()

float AP_MotorsMulticopter::get_current_limit_max_throttle ( )
protectedvirtual

Reimplemented in AP_Motors6DOF.

Definition at line 274 of file AP_MotorsMulticopter.cpp.

Referenced by output_logic().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_lift_max()

float AP_MotorsMulticopter::get_lift_max ( )
inline

Definition at line 70 of file AP_MotorsMulticopter.h.

◆ get_pwm_output_max()

int16_t AP_MotorsMulticopter::get_pwm_output_max ( ) const

Definition at line 392 of file AP_MotorsMulticopter.cpp.

Referenced by calc_spin_up_to_pwm(), calc_thrust_to_pwm(), set_throttle_passthrough_for_esc_calibration(), set_throttle_range(), and spool_up_complete().

Here is the caller graph for this function:

◆ get_pwm_output_min()

int16_t AP_MotorsMulticopter::get_pwm_output_min ( ) const

Definition at line 382 of file AP_MotorsMulticopter.cpp.

Referenced by calc_spin_up_to_pwm(), calc_thrust_to_pwm(), output_motor_mask(), AP_MotorsMatrix::output_to_motors(), AP_MotorsTri::output_to_motors(), AP_MotorsCoax::output_to_motors(), AP_MotorsSingle::output_to_motors(), set_throttle_passthrough_for_esc_calibration(), set_throttle_range(), and spool_up_complete().

Here is the caller graph for this function:

◆ get_throttle_hover()

virtual float AP_MotorsMulticopter::get_throttle_hover ( ) const
inlinevirtual

Implements AP_Motors.

Definition at line 54 of file AP_MotorsMulticopter.h.

Referenced by get_current_limit_max_throttle().

Here is the caller graph for this function:

◆ get_throttle_limit()

float AP_MotorsMulticopter::get_throttle_limit ( ) const
inline

Definition at line 76 of file AP_MotorsMulticopter.h.

◆ get_throttle_thrust_max()

float AP_MotorsMulticopter::get_throttle_thrust_max ( ) const
inline

Definition at line 79 of file AP_MotorsMulticopter.h.

Referenced by AC_AttitudeControl_Sub::update_althold_lean_angle_max(), and AC_AttitudeControl_Multi::update_althold_lean_angle_max().

Here is the caller graph for this function:

◆ output()

void AP_MotorsMulticopter::output ( )
virtual

Implements AP_Motors.

Definition at line 214 of file AP_MotorsMulticopter.cpp.

Referenced by output_min(), and update_motors().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ output_boost_throttle()

void AP_MotorsMulticopter::output_boost_throttle ( void  )
protectedvirtual

Definition at line 239 of file AP_MotorsMulticopter.cpp.

Referenced by output(), and thrust_compensation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ output_logic()

void AP_MotorsMulticopter::output_logic ( )
protected

Definition at line 426 of file AP_MotorsMulticopter.cpp.

Referenced by output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ output_min()

void AP_MotorsMulticopter::output_min ( )
virtual

Implements AP_Motors.

Definition at line 249 of file AP_MotorsMulticopter.cpp.

Referenced by setup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ output_motor_mask()

void AP_MotorsMulticopter::output_motor_mask ( float  thrust,
uint8_t  mask 
)
virtual

Reimplemented in AP_MotorsTri.

Definition at line 604 of file AP_MotorsMulticopter.cpp.

Referenced by AP_MotorsTri::output_motor_mask(), and spool_up_complete().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ output_to_motors()

virtual void AP_MotorsMulticopter::output_to_motors ( )
protectedpure virtual

Implemented in AP_MotorsCoax, AP_MotorsSingle, AP_Motors6DOF, AP_MotorsTri, AP_MotorsMatrix, and AP_MotorsTailsitter.

Referenced by output().

Here is the caller graph for this function:

◆ save_params_on_disarm()

void AP_MotorsMulticopter::save_params_on_disarm ( )
protectedvirtual

Reimplemented from AP_Motors.

Definition at line 620 of file AP_MotorsMulticopter.cpp.

Referenced by thrust_compensation().

Here is the caller graph for this function:

◆ set_throttle_passthrough_for_esc_calibration()

void AP_MotorsMulticopter::set_throttle_passthrough_for_esc_calibration ( float  throttle_input)

Definition at line 588 of file AP_MotorsMulticopter.cpp.

Here is the call graph for this function:

◆ set_throttle_range()

void AP_MotorsMulticopter::set_throttle_range ( int16_t  radio_min,
int16_t  radio_max 
)

Definition at line 403 of file AP_MotorsMulticopter.cpp.

Referenced by set_yaw_headroom(), and setup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_thrust_compensation_callback()

void AP_MotorsMulticopter::set_thrust_compensation_callback ( thrust_compensation_fn_t  callback)
inline

Definition at line 95 of file AP_MotorsMulticopter.h.

◆ set_yaw_headroom()

void AP_MotorsMulticopter::set_yaw_headroom ( int16_t  pwm)
inline

Definition at line 46 of file AP_MotorsMulticopter.h.

Here is the call graph for this function:

◆ spool_up_complete()

bool AP_MotorsMulticopter::spool_up_complete ( ) const
inline

Definition at line 82 of file AP_MotorsMulticopter.h.

Here is the call graph for this function:

◆ thrust_compensation()

virtual void AP_MotorsMulticopter::thrust_compensation ( void  )
inlineprotectedvirtual

Reimplemented in AP_MotorsMatrix, and AP_MotorsTri.

Definition at line 132 of file AP_MotorsMulticopter.h.

Referenced by output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_lift_max_from_batt_voltage()

void AP_MotorsMulticopter::update_lift_max_from_batt_voltage ( )
protected

Definition at line 329 of file AP_MotorsMulticopter.cpp.

Referenced by output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_throttle_filter()

void AP_MotorsMulticopter::update_throttle_filter ( )
protectedvirtual

Implements AP_Motors.

Definition at line 257 of file AP_MotorsMulticopter.cpp.

Referenced by output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_throttle_hover()

void AP_MotorsMulticopter::update_throttle_hover ( float  dt)

Definition at line 417 of file AP_MotorsMulticopter.cpp.

Referenced by set_yaw_headroom().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ _batt_current_max

AP_Float AP_MotorsMulticopter::_batt_current_max
protected

◆ _batt_current_time_constant

AP_Float AP_MotorsMulticopter::_batt_current_time_constant
protected

◆ _batt_idx

AP_Int8 AP_MotorsMulticopter::_batt_idx
protected

◆ _batt_voltage_filt

LowPassFilterFloat AP_MotorsMulticopter::_batt_voltage_filt
protected

◆ _batt_voltage_max

AP_Float AP_MotorsMulticopter::_batt_voltage_max
protected

Definition at line 153 of file AP_MotorsMulticopter.h.

Referenced by update_lift_max_from_batt_voltage().

◆ _batt_voltage_min

AP_Float AP_MotorsMulticopter::_batt_voltage_min
protected

◆ _boost_scale

AP_Float AP_MotorsMulticopter::_boost_scale
protected

Definition at line 171 of file AP_MotorsMulticopter.h.

Referenced by output_boost_throttle().

◆ _disarm_disable_pwm

AP_Int8 AP_MotorsMulticopter::_disarm_disable_pwm
protected

Definition at line 162 of file AP_MotorsMulticopter.h.

Referenced by AP_MotorsMatrix::output_to_motors().

◆ _disarm_safety_timer

uint16_t AP_MotorsMulticopter::_disarm_safety_timer
protected

Definition at line 187 of file AP_MotorsMulticopter.h.

Referenced by output_logic(), and AP_MotorsMatrix::output_to_motors().

◆ _lift_max

float AP_MotorsMulticopter::_lift_max
protected

◆ _pwm_max

AP_Int16 AP_MotorsMulticopter::_pwm_max
protected

Definition at line 159 of file AP_MotorsMulticopter.h.

Referenced by get_pwm_output_max(), and get_pwm_output_min().

◆ _pwm_min

AP_Int16 AP_MotorsMulticopter::_pwm_min
protected

Definition at line 158 of file AP_MotorsMulticopter.h.

Referenced by get_pwm_output_max(), and get_pwm_output_min().

◆ _spin_arm

AP_Float AP_MotorsMulticopter::_spin_arm
protected

Definition at line 152 of file AP_MotorsMulticopter.h.

Referenced by output_logic().

◆ _spin_max

AP_Float AP_MotorsMulticopter::_spin_max
protected

Definition at line 151 of file AP_MotorsMulticopter.h.

Referenced by calc_thrust_to_pwm().

◆ _spin_min

AP_Float AP_MotorsMulticopter::_spin_min
protected

◆ _spin_up_ratio

float AP_MotorsMulticopter::_spin_up_ratio
protected

◆ _spool_mode

spool_up_down_mode AP_MotorsMulticopter::_spool_mode
protected

◆ _spool_up_time

AP_Float AP_MotorsMulticopter::_spool_up_time
protected

Definition at line 168 of file AP_MotorsMulticopter.h.

Referenced by output_logic().

◆ _throttle_hover

AP_Float AP_MotorsMulticopter::_throttle_hover
protected

◆ _throttle_hover_learn

AP_Int8 AP_MotorsMulticopter::_throttle_hover_learn
protected

Definition at line 161 of file AP_MotorsMulticopter.h.

Referenced by save_params_on_disarm(), and update_throttle_hover().

◆ _throttle_limit

float AP_MotorsMulticopter::_throttle_limit
protected

Definition at line 185 of file AP_MotorsMulticopter.h.

Referenced by get_current_limit_max_throttle(), and get_throttle_limit().

◆ _throttle_radio_max

int16_t AP_MotorsMulticopter::_throttle_radio_max
protected

◆ _throttle_radio_min

int16_t AP_MotorsMulticopter::_throttle_radio_min
protected

◆ _throttle_thrust_max

float AP_MotorsMulticopter::_throttle_thrust_max
protected

◆ _thrust_compensation_callback

thrust_compensation_fn_t AP_MotorsMulticopter::_thrust_compensation_callback
protected

◆ _thrust_curve_expo

AP_Float AP_MotorsMulticopter::_thrust_curve_expo
protected

◆ _yaw_headroom

AP_Int16 AP_MotorsMulticopter::_yaw_headroom
protected

◆ _yaw_servo_angle_max_deg

AP_Float AP_MotorsMulticopter::_yaw_servo_angle_max_deg
protected

◆ motor_enabled

bool AP_MotorsMulticopter::motor_enabled[AP_MOTORS_MAX_NUM_MOTORS]
protected

◆ var_info

const AP_Param::GroupInfo AP_MotorsMulticopter::var_info
static

Definition at line 100 of file AP_MotorsMulticopter.h.

Referenced by AP_MotorsMulticopter().


The documentation for this class was generated from the following files: