kinect
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
kinect::Task 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 <Task.hpp>

Inheritance diagram for kinect::Task:

Public Member Functions

 Task (std::string const &name="kinect::Task", RTT::base::TaskCore::TaskState state=Stopped)
 
 Task (std::string const &name, RTT::ExecutionEngine *engine, RTT::base::TaskCore::TaskState state=Stopped)
 
 ~Task ()
 
bool startHook ()
 The following lines are template definitions for the various state machine. More...
 
void updateHook ()
 
void errorHook ()
 
void stopHook ()
 

Protected Member Functions

bool initialize_freenect (void)
 
bool initialize_frames (void)
 

Static Protected Member Functions

static void log_freenect_driver_informations (void)
 
static void redirect_freenect_logs_to_rock (freenect_context *context, freenect_loglevel level, const char *msg)
 

Protected Attributes

freenect_context * context
 
freenect_device * device
 
freenect_frame_mode video_mode
 
freenect_frame_mode depth_mode
 
uint8_t * internal_video_buffer
 
uint8_t * internal_depth_buffer
 
RTT::extras::ReadOnlyPointer< base::samples::frame::Frame > video_frame
 
RTT::extras::ReadOnlyPointer< base::samples::DistanceImage > depth_frame
 
pthread_t freenect_thread
 

Friends

class TaskBase
 
void video_capturing_callback (freenect_device *device, void *video, uint32_t timestamp)
 
void depth_capturing_callback (freenect_device *device, void *depth, uint32_t timestamp)
 
void * processing_loop (void *self)
 

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','kinect::Task')
end

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

Constructor & Destructor Documentation

Task::Task ( std::string const &  name = "kinect::Task",
RTT::base::TaskCore::TaskState  state = Stopped 
)

TaskContext constructor for Task

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.
Task::Task ( std::string const &  name,
RTT::ExecutionEngine *  engine,
RTT::base::TaskCore::TaskState  state = Stopped 
)

TaskContext constructor for Task

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

Default deconstructor of Task

Member Function Documentation

void Task::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 Task::initialize_frames ( void  )
protected

check properties and set current frame mode configurations for video- and depth capturing

bool Task::initialize_freenect ( void  )
protected

freenect initialization routines for start hook

void Task::log_freenect_driver_informations ( void  )
staticprotected

Output general driver freenect driver informations to rock's base logger

void Task::redirect_freenect_logs_to_rock ( freenect_context *  context,
freenect_loglevel  level,
const char *  msg 
)
staticprotected

redirect freenects log outputs to rock's base logger

bool Task::startHook ( )

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

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 Task::stopHook ( )

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

void Task::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

void depth_capturing_callback ( freenect_device *  device,
void *  depth,
uint32_t  timestamp 
)
friend

necessary capturing callback for depth images

void* processing_loop ( void *  self)
friend

usb processor for calling all callbacks

friend class TaskBase
friend
void video_capturing_callback ( freenect_device *  device,
void *  video,
uint32_t  timestamp 
)
friend

necessary capturing callback for video images

Member Data Documentation

freenect_context* kinect::Task::context
protected
RTT::extras::ReadOnlyPointer<base::samples::DistanceImage> kinect::Task::depth_frame
protected
freenect_frame_mode kinect::Task::depth_mode
protected
freenect_device* kinect::Task::device
protected
pthread_t kinect::Task::freenect_thread
protected
uint8_t* kinect::Task::internal_depth_buffer
protected
uint8_t* kinect::Task::internal_video_buffer
protected
RTT::extras::ReadOnlyPointer<base::samples::frame::Frame> kinect::Task::video_frame
protected
freenect_frame_mode kinect::Task::video_mode
protected

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