DUNE: Uniform Navigational Environment  2.6.0-rc1
Control::AUV::Speed::Task Struct Reference

Public Member Functions

 Task (const std::string &name, Tasks::Context &ctx)
 
void onActivation (void)
 
void onDeactivation (void)
 
void onResourceInitialization (void)
 
void onUpdateParameters (void)
 
void initializePIDs (void)
 
void reset (void)
 
void consume (const IMC::Abort *msg)
 
void consume (const IMC::Brake *msg)
 
void consume (const IMC::DesiredSpeed *msg)
 
void consume (const IMC::EstimatedState *msg)
 
void consume (const IMC::ControlLoops *msg)
 
void consume (const IMC::Rpm *msg)
 
void rpmToThrust (float rpmvalue, float desired_rpm, double timestep)
 
void mpsToRpm (float abs_gvel, double timestep)
 
void dispatchThrust (float value, double timestep)
 
void onMain (void)
 
- Public Member Functions inherited from DUNE::Tasks::Task
 Task (const std::string &name, Context &context)
 
virtual ~Task (void)
 
const char * getName (void) const
 
const char * getSystemName (void) const
 
unsigned int getSystemId (void) const
 
unsigned int getEntityId (void) const
 
unsigned int resolveEntity (const std::string &label) const
 
std::string resolveEntity (unsigned int id) const
 
uint16_t getActivationTime (void) const
 
uint16_t getDeactivationTime (void) const
 
unsigned int resolveSystemName (const std::string &name) const
 
const char * resolveSystemId (unsigned int id) const
 
void loadConfig (void)
 
void setPriority (unsigned int value)
 
unsigned int getPriority (void) const
 
void inf (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void war (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void void err (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void void void cri (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void void void void debug (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void void void void void trace (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void void void void void void spew (const char *format,...) DUNE_PRINTF_FORMAT(2
 
void void void void void void
void void 
dispatch (IMC::Message *msg, unsigned int flags=0)
 
void dispatch (IMC::Message &msg, unsigned int flags=0)
 
void dispatchReply (const IMC::Message &original, IMC::Message &msg, unsigned int flags=0)
 
void receive (const IMC::Message *msg)
 
void reserveEntities (void)
 
void resolveEntities (void)
 
void acquireResources (void)
 
void releaseResources (void)
 
void initializeResources (void)
 
void updateParameters (bool act_deact=true)
 
void writeParamsXML (std::ostream &os) const
 
- Public Member Functions inherited from DUNE::Tasks::AbstractTask
 AbstractTask (void)
 
virtual ~AbstractTask (void)
 
- Public Member Functions inherited from DUNE::Concurrency::Thread
 Thread (void)
 
virtual ~Thread (void)
 
int getProcessorUsage (void)
 
- Public Member Functions inherited from DUNE::Concurrency::Runnable
 Runnable (void)
 
virtual ~Runnable (void)
 
void start (void)
 
void stop (void)
 
void join (void)
 
void stopAndJoin (void)
 
void setPriority (Scheduler::Policy policy, unsigned priority)
 
State getState (void)
 
bool isCreated (void)
 
bool isStopping (void)
 
bool isRunning (void)
 
bool isStarting (void)
 
bool isDead (void)
 

Public Attributes

float m_desired_speed
 
uint8_t m_speed_units
 
Delta m_last_rpm
 
Delta m_last_mps
 
DiscretePID m_rpm_pid
 
DiscretePID m_mps_pid
 
IMC::SetThrusterActuation m_act
 
IMC::SetThrusterActuation m_last_act
 
float m_desired_rpm
 
float m_desired_gvel
 
bool m_u_active
 
float m_previous_rpm
 
bool m_braking
 
IMC::ControlParcel m_parcel_mps
 
IMC::ControlParcel m_parcel_rpm
 
uint32_t m_scope_ref
 
Arguments m_args
 

Additional Inherited Members

- Public Types inherited from DUNE::Concurrency::Runnable
enum  State {
  StateStarting, StateRunning, StateStopping, StateDead,
  StateUnknown
}
 
- Protected Member Functions inherited from DUNE::Tasks::Task
const char * getEntityLabel (void) const
 
void setEntityLabel (const std::string &label)
 
void setEntityState (IMC::EntityState::StateEnum state, Status::Code code)
 
void setEntityState (IMC::EntityState::StateEnum state, const std::string &description)
 
IMC::EntityState::StateEnum getEntityState (void) const
 
unsigned int reserveEntity (const std::string &label)
 
bool stopping (void)
 
bool isActive (void) const
 
bool isActivating (void) const
 
bool isDeactivating (void) const
 
void waitForMessages (double timeout)
 
void consumeMessages (void)
 
template<typename T >
Parameterparam (const std::string &name, T &var)
 
template<typename Y , typename T >
Parameterparam (const std::string &name, T &var)
 
template<typename T >
bool paramChanged (T &var)
 
void paramActive (Parameter::Scope def_scope, Parameter::Visibility def_visibility, bool def_value=false)
 
void setParamSectionEditor (const std::string &name)
 
template<typename M , typename T >
void bind (T *task_obj, void(T::*consumer)(const M *)=&T::consume)
 
template<typename T >
void bind (T *task_obj, const std::vector< uint32_t > &list)
 
template<typename T , typename M >
void bind (T *task_obj, const std::vector< uint32_t > &list, void(T::*consumer)(const M *)=&T::consume)
 
template<typename T >
void bind (T *task_obj, const std::vector< std::string > &list)
 
void requestActivation (void)
 
void requestDeactivation (void)
 
void activate (void)
 
void activationFailed (const std::string &reason)
 
void deactivate (void)
 
void deactivationFailed (const std::string &reason)
 
virtual void onEntityReservation (void)
 
virtual void onEntityResolution (void)
 
virtual void onReportEntityState (void)
 
virtual void onResourceAcquisition (void)
 
virtual void onResourceRelease (void)
 
virtual void onRequestActivation (void)
 
virtual void onRequestDeactivation (void)
 
- Protected Member Functions inherited from DUNE::Concurrency::Thread
void startImpl (void)
 
void stopImpl (void)
 
void joinImpl (void)
 
void setPriorityImpl (Scheduler::Policy policy, unsigned priority)
 
- Protected Attributes inherited from DUNE::Tasks::Task
Contextm_ctx
 

Constructor & Destructor Documentation

Member Function Documentation

void Control::AUV::Speed::Task::consume ( const IMC::Abort *  msg)
inline
void Control::AUV::Speed::Task::consume ( const IMC::Brake *  msg)
inline

References m_braking.

void Control::AUV::Speed::Task::consume ( const IMC::DesiredSpeed *  msg)
inline
void Control::AUV::Speed::Task::consume ( const IMC::EstimatedState *  msg)
inline
void Control::AUV::Speed::Task::consume ( const IMC::ControlLoops *  msg)
inline
void Control::AUV::Speed::Task::consume ( const IMC::Rpm *  msg)
inline
void Control::AUV::Speed::Task::dispatchThrust ( float  value,
double  timestep 
)
inline

Dispatch to bus SetThrusterActuation message.

Parameters
[in]valueset thrust actuation value
[in]timestepamount of time since last control step

References DUNE::Tasks::Task::dispatch(), m_act, m_args, m_braking, m_last_act, Control::AUV::Speed::Arguments::ramp_act, and DUNE::Math::trimValue().

Referenced by consume(), and rpmToThrust().

void Control::AUV::Speed::Task::mpsToRpm ( float  abs_gvel,
double  timestep 
)
inline

Convert meters per second to a desired rpm value.

Parameters
[in]abs_gvelabsolute ground velocity
[in]timestepamount of time since last control step

References m_args, m_desired_gvel, m_desired_rpm, m_desired_speed, m_mps_pid, m_parcel_mps, m_previous_rpm, m_speed_units, Control::AUV::Speed::Arguments::max_accel, Control::AUV::Speed::Arguments::max_rpm, Control::AUV::Speed::Arguments::min_rpm, and Control::AUV::Speed::Arguments::mps_ffgain.

Referenced by consume().

void Control::AUV::Speed::Task::onActivation ( void  )
inlinevirtual

Called when the task starts/resumes normal execution.

Reimplemented from DUNE::Tasks::Task.

References DUNE::Tasks::Task::setEntityState().

void Control::AUV::Speed::Task::onDeactivation ( void  )
inlinevirtual

Called when the task stops normal execution and enters an idleness state.

Reimplemented from DUNE::Tasks::Task.

References DUNE::Tasks::Task::setEntityState().

void Control::AUV::Speed::Task::onMain ( void  )
inlinevirtual
void Control::AUV::Speed::Task::onResourceInitialization ( void  )
inlinevirtual

Called when the task is instructed to initialize resources acquired previously or whose initialization depends on run-time parameters.

Reimplemented from DUNE::Tasks::Task.

References m_act, DUNE::Tasks::Task::requestDeactivation(), and reset().

void Control::AUV::Speed::Task::onUpdateParameters ( void  )
inlinevirtual
void Control::AUV::Speed::Task::rpmToThrust ( float  rpmvalue,
float  desired_rpm,
double  timestep 
)
inline

Convert rpm value to thrust actuation.

Parameters
[in]rpmvaluevalue of rpms currently in the motor
[in]desired_rpmdesired rpms for the motor
[in]timestepamount of time since last control step

References dispatchThrust(), Control::AUV::Speed::Arguments::hardrpms, m_args, m_parcel_rpm, m_rpm_pid, Control::AUV::Speed::Arguments::rpm_ffgain, and Control::AUV::Speed::Arguments::rpms_eos.

Referenced by consume().

Member Data Documentation

IMC::SetThrusterActuation Control::AUV::Speed::Task::m_act

Thruster actuaction.

Referenced by dispatchThrust(), onResourceInitialization(), and reset().

Arguments Control::AUV::Speed::Task::m_args
bool Control::AUV::Speed::Task::m_braking

True if braking.

Referenced by consume(), dispatchThrust(), and reset().

float Control::AUV::Speed::Task::m_desired_gvel

Last desired ground velocity.

Referenced by mpsToRpm().

float Control::AUV::Speed::Task::m_desired_rpm

Desired Rpms from ground velocity controller.

Referenced by consume(), and mpsToRpm().

float Control::AUV::Speed::Task::m_desired_speed

Desired speed.

Referenced by consume(), mpsToRpm(), and reset().

IMC::SetThrusterActuation Control::AUV::Speed::Task::m_last_act

Last thruster actuaction.

Referenced by dispatchThrust(), and reset().

Delta Control::AUV::Speed::Task::m_last_mps

Time of last MPS message.

Referenced by consume().

Delta Control::AUV::Speed::Task::m_last_rpm

Time of last RPM message.

Referenced by consume().

DiscretePID Control::AUV::Speed::Task::m_mps_pid

MPS PID controller.

Referenced by initializePIDs(), mpsToRpm(), and reset().

IMC::ControlParcel Control::AUV::Speed::Task::m_parcel_mps

Control Parcels for meters per second controller.

Referenced by initializePIDs(), and mpsToRpm().

IMC::ControlParcel Control::AUV::Speed::Task::m_parcel_rpm

Control Parcels for rpm controller.

Referenced by initializePIDs(), and rpmToThrust().

float Control::AUV::Speed::Task::m_previous_rpm

previous value of the desired rpm speed

Referenced by consume(), mpsToRpm(), and reset().

DiscretePID Control::AUV::Speed::Task::m_rpm_pid

RPM PID controller.

Referenced by initializePIDs(), reset(), and rpmToThrust().

uint32_t Control::AUV::Speed::Task::m_scope_ref

Control loops last reference.

Referenced by consume().

uint8_t Control::AUV::Speed::Task::m_speed_units

Desired speed units.

Referenced by consume(), mpsToRpm(), and reset().

bool Control::AUV::Speed::Task::m_u_active

Boolean to enable or disable the speed controller using estimated state.

Referenced by consume(), and reset().

Collaboration diagram for Control::AUV::Speed::Task:
Collaboration graph