DUNE: Uniform Navigational Environment  2019.02.0
Plan::Generator::Task Struct Reference

Public Member Functions

 Task (const std::string &name, Tasks::Context &ctx)
 
void onResourceRelease (void)
 
void consume (const IMC::Announce *msg)
 
void consume (const IMC::EstimatedState *msg)
 
void consume (const IMC::LblConfig *msg)
 
void consume (const IMC::PlanGeneration *msg)
 
void onMain (void)
 
bool getCurrentPosition (double *lat, double *lon, double *depth)
 
void sequentialPlan (std::string plan_id, const IMC::MessageList< IMC::Maneuver > *maneuvers, IMC::PlanSpecification &result)
 
void updatePositionFromBeacon (const std::string &match, const IMC::LblBeacon *msg, double *lat, double *lon)
 
bool generate (const std::string &plan_id, TupleList &params, IMC::PlanSpecification &result)
 
- 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
 
DebugLevel getDebugLevel (void) 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
 
const char * getEntityLabel (void) const
 
void setEntityLabel (const std::string &label)
 
- 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)
 
unsigned getPriority (void)
 
State getState (void)
 
bool isCreated (void)
 
bool isStopping (void)
 
bool isRunning (void)
 
bool isStarting (void)
 
bool isDead (void)
 

Public Attributes

Arguments m_args
 
IMC::EstimatedState * m_estate
 
IMC::LblConfig * m_last_lbl_config
 
std::map< unsigned int,
IMC::Announce > 
m_last_announces
 

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
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)
 
template<typename E >
E * reserveEntity (const std::string &label)
 
Entities::BasicEntitygetLocalEntity (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 bool onWriteParamsXML (std::ostream &os) const
 
virtual void onEntityReservation (void)
 
virtual void onEntityResolution (void)
 
virtual void onReportEntityState (void)
 
virtual void onResourceAcquisition (void)
 
virtual void onResourceInitialization (void)
 
virtual void onUpdateParameters (void)
 
virtual void onRequestActivation (void)
 
virtual void onRequestDeactivation (void)
 
virtual void onActivation (void)
 
virtual void onDeactivation (void)
 
virtual void onQueryEntityParameters (const IMC::QueryEntityParameters *msg)
 
virtual void onSetEntityParameters (const IMC::SetEntityParameters *msg)
 
virtual void onPushEntityParameters (const IMC::PushEntityParameters *msg)
 
virtual void onPopEntityParameters (const IMC::PopEntityParameters *msg)
 
- Protected Member Functions inherited from DUNE::Concurrency::Thread
void startImpl (void)
 
void stopImpl (void)
 
void joinImpl (void)
 
void setPriorityImpl (Scheduler::Policy policy, unsigned priority)
 
unsigned getPriorityImpl (void)
 
- Protected Attributes inherited from DUNE::Tasks::Task
Contextm_ctx
 
std::vector
< Entities::BasicEntity * > 
m_entities
 

Constructor & Destructor Documentation

Member Function Documentation

void Plan::Generator::Task::consume ( const IMC::Announce *  msg)
inline

Stores the announce in the map (one announce per system id).

References m_last_announces.

void Plan::Generator::Task::consume ( const IMC::EstimatedState *  msg)
inline

Stores the last received EstimatedState message.

References DUNE::Tasks::Task::getSystemId(), m_estate, and DUNE::Tasks::Task::setEntityState().

void Plan::Generator::Task::consume ( const IMC::LblConfig *  msg)
inline

Stores the last received LblConfig message.

References m_last_lbl_config.

void Plan::Generator::Task::consume ( const IMC::PlanGeneration *  msg)
inline

Handles a PlanGeneration message.

According to the 'plan_id' may result in the generation of different plans: go_home:

  • Goto maneuver 50 meters from EstimatedState reference location, followed by a StationKeeping on top of the current location (derived from EstimatedState).

surface:

  • Elevator at the current position, followed by a StationKeeping at the surface

dive:

  • Loiter at the current position (radius, time, depth and speed are configuration parameters)

go:

  • This template looks in the 'params' tuplelist for the arguments loc, lat and lon. If loc is set, then it will look for a beacon with same name (in which cases uses its location), a an announced system with the same name (in which case uses its location) or the string "home" (in which case uses the EstimatedState reference location). If lat / lon arguments are set, uses those as the coordinates of the location where to go. The resulting plan is a Goto maneuver to the target location, followed by a station keeping in the same location.

sk:

  • This template is similar to 'go' but generates only the maneuver StationKeeping at the desired location.

dislodge:

  • Attempt to unstuck the vehicle from an entangled condition.

References DUNE::Tasks::Task::dispatch(), generate(), and DUNE::Tasks::Task::inf().

bool Plan::Generator::Task::generate ( const std::string &  plan_id,
TupleList &  params,
IMC::PlanSpecification &  result 
)
inline

This method parses a string and a list of parameters and eventually generates a corresponding plan.

Parameters
[in]plan_idthe string to be parsed (command).
[in]paramsa tuple list with parameters to be used in the generation.
[out]resultwhere to store the resulting plan specification.
Returns
true if a plan was actually generated or false if result wasn't touched.

References Plan::Generator::Arguments::dive_depth, Plan::Generator::Arguments::dive_time, getCurrentPosition(), DUNE::Tasks::Task::inf(), m_args, m_estate, m_last_announces, m_last_lbl_config, Plan::Generator::Arguments::max_rpms, Plan::Generator::Arguments::radius, Plan::Generator::Arguments::recovery_plan, sequentialPlan(), Plan::Generator::Arguments::speed_rpms, Plan::Generator::Arguments::travel_depth, and updatePositionFromBeacon().

Referenced by consume().

bool Plan::Generator::Task::getCurrentPosition ( double *  lat,
double *  lon,
double *  depth 
)
inline

This (utilitary) method calculates the current position using the last received state.

Parameters
[out]latwhere the current latitude will be stored
[out]lonwhere the current longitude will be stored
[out]depthwhere the current depth will be stored
Returns
true if it was possible to get position or false otherwise.

References m_estate.

Referenced by generate().

void Plan::Generator::Task::onResourceRelease ( void  )
inlinevirtual

Frees memory associated with stored messages.

Reimplemented from DUNE::Tasks::Task.

References m_estate, and m_last_lbl_config.

void Plan::Generator::Task::sequentialPlan ( std::string  plan_id,
const IMC::MessageList< IMC::Maneuver > *  maneuvers,
IMC::PlanSpecification &  result 
)
inline

This (utility) method generates a PlanSpecification consisting in the given maneuver sequence.

Parameters
[in]plan_idThe name of the plan to be generated
[in]maneuversA vector with maneuvers (order of the resulting plan will correspond to the order of this vector).
[out]resultThe resulting PlanSpecification will be stored here.

Referenced by generate().

void Plan::Generator::Task::updatePositionFromBeacon ( const std::string &  match,
const IMC::LblBeacon *  msg,
double *  lat,
double *  lon 
)
inline

This (utility) method updates a position if the name of the beacon found in the given message matches the string we are looking for (match parameter).

Parameters
[in]matchthe string we are looking for.
[in]msginline message with beacon position.
[out]latwhere the latitude will be updated
[out]lonwhere the longitude will be updated

Referenced by generate().

Member Data Documentation

Arguments Plan::Generator::Task::m_args

Task arguments.

Referenced by generate(), onMain(), and Task().

IMC::EstimatedState* Plan::Generator::Task::m_estate

Stores the last estimated state;.

Referenced by consume(), generate(), getCurrentPosition(), and onResourceRelease().

std::map<unsigned int, IMC::Announce> Plan::Generator::Task::m_last_announces

map for storing last received announces

Referenced by consume(), and generate().

IMC::LblConfig* Plan::Generator::Task::m_last_lbl_config

Stores the last LblConfig message.

Referenced by consume(), generate(), and onResourceRelease().

Collaboration diagram for Plan::Generator::Task:
Collaboration graph