auv_control
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
auv_control::BasePIDController 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. Base implementation of all the tasks that use one PID controller per axis to generate commands. More...

#include <BasePIDController.hpp>

Inheritance diagram for auv_control::BasePIDController:

Classes

struct  currentCov
 
struct  currentState
 

Public Member Functions

 BasePIDController (std::string const &name="auv_control::BasePIDController")
 
 BasePIDController (std::string const &name, RTT::ExecutionEngine *engine)
 
 ~BasePIDController ()
 
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 calcOutput (const LinearAngular6DCommandStatus &merged_command)
 
void keepPosition ()
 
virtual bool setParallel_pid_settings (::base::LinearAngular6DParallelPIDSettings const &value)
 
virtual bool setPid_settings (::base::LinearAngular6DPIDSettings const &value)
 
std::pair< base::LinearAngular6DCommand, LinearAngular6DPIDStatecalcPIDStateCommand (const base::LinearAngular6DCommand &reference, const currentState &current_state, LinearAngular6DPID &pid)
 

Protected Attributes

currentState mCurrentState
 
currentCov mCurrentCov
 
LinearAngular6DPID mPIDs
 

Friends

class BasePIDControllerBase
 

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. Base implementation of all the tasks that use one PID controller per axis to generate commands.

The name of a TaskContext is primarily defined via:

     deployment 'deployment_name'
         task('custom_task_name','auv_control::BasePIDController')
     end

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

Constructor & Destructor Documentation

BasePIDController::BasePIDController ( std::string const &  name = "auv_control::BasePIDController")

TaskContext constructor for BasePIDController

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.
BasePIDController::BasePIDController ( std::string const &  name,
RTT::ExecutionEngine *  engine 
)

TaskContext constructor for BasePIDController

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.
BasePIDController::~BasePIDController ( )

Default deconstructor of BasePIDController

Member Function Documentation

bool BasePIDController::calcOutput ( const LinearAngular6DCommandStatus merged_command)
protected
std::pair< base::LinearAngular6DCommand, LinearAngular6DPIDState > BasePIDController::calcPIDStateCommand ( const base::LinearAngular6DCommand &  reference,
const currentState current_state,
LinearAngular6DPID pid 
)
protected

Compute PID control and it status for 6 DOF (linear and angular)

Parameters
reference,thedisered state
current_state,measuredstate
pid,thecontroller used and be updated
Returns
pair of LinearAngular6D Command and PIDStates
void BasePIDController::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 BasePIDController::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 BasePIDController::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.

void BasePIDController::keepPosition ( )
protected
bool BasePIDController::setParallel_pid_settings ( ::base::LinearAngular6DParallelPIDSettings const &  value)
protectedvirtual
bool BasePIDController::setPid_settings ( ::base::LinearAngular6DPIDSettings const &  value)
protectedvirtual
bool BasePIDController::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 BasePIDController::stopHook ( )

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

void BasePIDController::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.

Friends And Related Function Documentation

friend class BasePIDControllerBase
friend

Member Data Documentation

currentCov auv_control::BasePIDController::mCurrentCov
protected

The current system state's covariance, including the linear and angular part It must be updated by subclasses before calling their base updateHook class

currentState auv_control::BasePIDController::mCurrentState
protected

The current system's state, including the linear and angular part It must be updated by subclasses before calling their base updateHook class

LinearAngular6DPID auv_control::BasePIDController::mPIDs
protected

The PIDs, including the linear and angular part It need to have it states updated


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