uwv_dynamic_model
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
uwv_dynamic_model::VelocityEstimator Class Reference

The task context provides and requires services. It uses an ExecutionEngine to perform its functions. Essential interfaces are operations, data flow ports and properties. These interfaces have been defined using the oroGen specification. In order to modify the interfaces you should (re)use oroGen and rely on the associated workflow. More...

#include <VelocityEstimator.hpp>

Inheritance diagram for uwv_dynamic_model::VelocityEstimator:

Public Member Functions

 VelocityEstimator (std::string const &name="uwv_dynamic_model::VelocityEstimator", ModelSimulator simulator=DYNAMIC)
 
 VelocityEstimator (std::string const &name, RTT::ExecutionEngine *engine, ModelSimulator simulator=DYNAMIC)
 
 ~VelocityEstimator ()
 
bool configureHook ()
 The following lines are template definitions for the various state machine. More...
 
bool startHook ()
 
void updateHook ()
 
void errorHook ()
 
void stopHook ()
 
void cleanupHook ()
 

Protected Member Functions

bool getTransformation (const transformer::Transformation &transformer, Eigen::Affine3d &transformationMatrix)
 
void handleStates (const base::samples::RigidBodyState &state, const base::LinearAngular6DCommand &control_input)
 
void setRuntimeState ()
 
base::samples::RigidBodyState updatePoseWithXYVelocity (const base::samples::RigidBodyState &pose, const base::samples::RigidBodyState &dvl_sample)
 
double verticalVelocityEstimation (const base::samples::RigidBodyState &depth_sample)
 
base::samples::RigidBodyState replayModel (const base::samples::RigidBodyState &dvl_sample)
 

Protected Attributes

ModelSimulation * model_simulation2
 
std::vector< double > filter_coeff
 
std::deque< base::samples::RigidBodyState > queueOfDepthData
 
std::queue< std::pair< base::LinearAngular6DCommand, base::samples::RigidBodyState > > queueOfStates
 

Friends

class VelocityEstimatorBase
 

Detailed Description

The task context provides and requires services. It uses an ExecutionEngine to perform its functions. Essential interfaces are operations, data flow ports and properties. These interfaces have been defined using the oroGen specification. In order to modify the interfaces you should (re)use oroGen and rely on the associated workflow.

The name of a TaskContext is primarily defined via:

deployment 'deployment_name'
    task('custom_task_name','uwv_dynamic_model::VelocityEstimator')
end

It can be dynamically adapted when the deployment is called with a prefix argument.

Constructor & Destructor Documentation

VelocityEstimator::VelocityEstimator ( std::string const &  name = "uwv_dynamic_model::VelocityEstimator",
ModelSimulator  simulator = DYNAMIC 
)

TaskContext constructor for VelocityEstimator

Parameters
nameName of the task. This name needs to be unique to make it identifiable via nameservices.
initial_stateThe initial TaskState of the TaskContext. Default is Stopped state.
VelocityEstimator::VelocityEstimator ( std::string const &  name,
RTT::ExecutionEngine *  engine,
ModelSimulator  simulator = DYNAMIC 
)

TaskContext constructor for VelocityEstimator

Parameters
nameName of the task. This name needs to be unique to make it identifiable for nameservices.
engineThe RTT Execution engine to be used for this task, which serialises the execution of all commands, programs, state machines and incoming events for a task.
VelocityEstimator::~VelocityEstimator ( )

Default deconstructor of VelocityEstimator

Member Function Documentation

void VelocityEstimator::cleanupHook ( )

This hook is called by Orocos when the state machine transitions from Stopped to PreOperational, requiring the call to configureHook() before calling start() again.

bool VelocityEstimator::configureHook ( )

The following lines are template definitions for the various state machine.

This hook is called by Orocos when the state machine transitions from PreOperational to Stopped. If it returns false, then the component will stay in PreOperational. Otherwise, it goes into Stopped.

It is meaningful only if the #needs_configuration has been specified in the task context definition with (for example):

task_context "TaskName" do
  needs_configuration
  ...
end
void VelocityEstimator::errorHook ( )

This hook is called by Orocos when the component is in the RunTimeError state, at each activity step. See the discussion in updateHook() about triggering options.

Call recover() to go back in the Runtime state.

bool VelocityEstimator::getTransformation ( const transformer::Transformation &  transformer,
Eigen::Affine3d &  transformationMatrix 
)
protected
void VelocityEstimator::handleStates ( const base::samples::RigidBodyState &  state,
const base::LinearAngular6DCommand &  control_input 
)
protected

Enqueue pose&effort states

Parameters
posestate
effortcontrol_input
base::samples::RigidBodyState VelocityEstimator::replayModel ( const base::samples::RigidBodyState &  dvl_sample)
protected

Replay model simulation.

Replay simulation from dvl_sample.time until last control_input data. The aim is to update the X-Y linear velocity.

Parameters
dvl_sample.Use X-Y velocities
Returns
updated state
void VelocityEstimator::setRuntimeState ( void  )
protected

Set RunTime component state idepently

bool VelocityEstimator::startHook ( )

This hook is called by Orocos when the state machine transitions from Stopped to Running. If it returns false, then the component will stay in Stopped. Otherwise, it goes into Running and updateHook() will be called.

void VelocityEstimator::stopHook ( )

This hook is called by Orocos when the state machine transitions from Running to Stopped after stop() has been called.

void VelocityEstimator::updateHook ( )

This hook is called by Orocos when the component is in the Running state, at each activity step. Here, the activity gives the "ticks" when the hook should be called.

The error(), exception() and fatal() calls, when called in this hook, allow to get into the associated RunTimeError, Exception and FatalError states.

In the first case, updateHook() is still called, and recover() allows you to go back into the Running state. In the second case, the errorHook() will be called instead of updateHook(). In Exception, the component is stopped and recover() needs to be called before starting it again. Finally, FatalError cannot be recovered.

base::samples::RigidBodyState VelocityEstimator::updatePoseWithXYVelocity ( const base::samples::RigidBodyState &  pose,
const base::samples::RigidBodyState &  dvl_sample 
)
protected

Update X-Y dvl velocity in pose.

Parameters
poseto be updated
dvl_samplenew velocity data
Returns
updated pose
double VelocityEstimator::verticalVelocityEstimation ( const base::samples::RigidBodyState &  depth_sample)
protected

Estimate Z velocity, based on depth derivative.

Parameters
depth_sample
Returns
estiamted z velocity

Friends And Related Function Documentation

friend class VelocityEstimatorBase
friend

Member Data Documentation

std::vector<double> uwv_dynamic_model::VelocityEstimator::filter_coeff
protected
ModelSimulation* uwv_dynamic_model::VelocityEstimator::model_simulation2
protected
std::deque<base::samples::RigidBodyState> uwv_dynamic_model::VelocityEstimator::queueOfDepthData
protected
std::queue<std::pair<base::LinearAngular6DCommand, base::samples::RigidBodyState> > uwv_dynamic_model::VelocityEstimator::queueOfStates
protected

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