firevision::CornerHorizon Class Reference

Cut of arbitrary scanline models at an artificial horizon. More...

#include <models/scanlines/cornerhorizon.h>

Inheritance diagram for firevision::CornerHorizon:

[legend]
List of all members.

Public Member Functions

 CornerHorizon (ScanlineModel *model, float field_length, float field_width, float field_border, unsigned int image_width, unsigned int image_height, float camera_height, float camera_ori, float horizontal_angle, float vertical_angle)
 Constructor.
virtual ~CornerHorizon ()
 Destructor.
fawkes::point_t operator * ()
 Get the current coordinate.
fawkes::point_toperator-> ()
 Get pointer to current point.
fawkes::point_toperator++ ()
 Postfix ++ operator.
fawkes::point_toperator++ (int)
 Prefix ++ operator.
bool finished ()
 Check if all desired points have been processed.
void reset ()
 Reset model.
const char * get_name ()
 Get name of scanline model.
unsigned int get_margin ()
 Get margin around points.
void set_robot_pose (float x, float y, float ori)
 Set the robot's pose.
void set_pan_tilt (float pan, float tilt)
 Set camera's pan/tilt values.
unsigned int getHorizon ()
 Get the horizon point.

Protected Member Functions

void calculate ()
 Calculate horizon point.

Detailed Description

Cut of arbitrary scanline models at an artificial horizon.

The artificial horizon is calculated by the highest corner that is visible in the image. From that the Y coordinate in the image is used and everything above that point is ignored from the scanline grid.

This class was written in a one-night hacking sensation at RoboLudens 2006 in Eindhoven. For that time it is pretty readable code and we are using it since then. Cool!

Author:
Tim Niemueller

Stefan Schiffer

Christoph Mies

Definition at line 40 of file cornerhorizon.h.


Constructor & Destructor Documentation

firevision::CornerHorizon::CornerHorizon ( ScanlineModel model,
float  field_length,
float  field_width,
float  field_border,
unsigned int  image_width,
unsigned int  image_height,
float  camera_height,
float  camera_ori,
float  horizontal_angle,
float  vertical_angle 
)

Constructor.

Parameters:
model Model to apply the artificial horizon on. This model is deleted on the destruction of the CornerHorizon instance so you can forget about it in the using application.
field_length length of soccer field
field_width width of soccer field
field_border size of border around the field (i.e. distance between the outer white line and the physical field end)
image_width image width in pixels
image_height image height in pixels
camera_height height of camera above ground
camera_ori orientation of camera on the robot in degrees
horizontal_angle horizontal viewing angle in degrees
vertical_angle vertical viewing angle in degrees

Definition at line 70 of file cornerhorizon.cpp.

References fawkes::deg2rad(), fawkes::point_t::x, and fawkes::point_t::y.

firevision::CornerHorizon::~CornerHorizon (  )  [virtual]

Destructor.

Not that this deletes the supplied model!

Definition at line 102 of file cornerhorizon.cpp.


Member Function Documentation

void firevision::CornerHorizon::calculate (  )  [protected]

Calculate horizon point.

Definition at line 124 of file cornerhorizon.cpp.

References fawkes::normalize_mirror_rad().

Referenced by operator++().

bool firevision::CornerHorizon::finished (  )  [virtual]

Check if all desired points have been processed.

Returns:
true if all pixels that the model defines have been iterated.

Implements firevision::ScanlineModel.

Definition at line 236 of file cornerhorizon.cpp.

References firevision::ScanlineModel::finished().

unsigned int firevision::CornerHorizon::get_margin (  )  [virtual]

Get margin around points.

Models that do not use margins shall return zero. It shall be guaranteed that in this margin region around a point there is no other point that has been or will be returned in a full iteration.

Returns:
margin around a point.

Implements firevision::ScanlineModel.

Definition at line 259 of file cornerhorizon.cpp.

References firevision::ScanlineModel::get_margin().

const char * firevision::CornerHorizon::get_name (  )  [virtual]

Get name of scanline model.

Returns:
name of scanline model.

Implements firevision::ScanlineModel.

Definition at line 252 of file cornerhorizon.cpp.

unsigned int firevision::CornerHorizon::getHorizon (  ) 

Get the horizon point.

Returns:
y coordinate of the horizon point.

Definition at line 269 of file cornerhorizon.cpp.

point_t firevision::CornerHorizon::operator * (  )  [virtual]

Get the current coordinate.

Returns:
current point in image that is shall be processed.

Implements firevision::ScanlineModel.

Definition at line 109 of file cornerhorizon.cpp.

point_t * firevision::CornerHorizon::operator++ ( int   )  [virtual]

Prefix ++ operator.

Advances to the next point but returns the old point.

Returns:
pointer to next point

Implements firevision::ScanlineModel.

Definition at line 213 of file cornerhorizon.cpp.

References calculate(), firevision::ScanlineModel::finished(), fawkes::point_t::x, and fawkes::point_t::y.

point_t * firevision::CornerHorizon::operator++ (  )  [virtual]

Postfix ++ operator.

Advances to the next point and returns the new point.

Returns:
pointer to new point

Implements firevision::ScanlineModel.

Definition at line 185 of file cornerhorizon.cpp.

References calculate(), firevision::ScanlineModel::finished(), fawkes::point_t::x, and fawkes::point_t::y.

point_t * firevision::CornerHorizon::operator-> (  )  [virtual]

Get pointer to current point.

Returns:
pointer to current point
See also:
operator*()

Implements firevision::ScanlineModel.

Definition at line 116 of file cornerhorizon.cpp.

void firevision::CornerHorizon::reset (  )  [virtual]

Reset model.

Resets the set of processed points.

Implements firevision::ScanlineModel.

Definition at line 243 of file cornerhorizon.cpp.

References firevision::ScanlineModel::reset(), fawkes::point_t::x, and fawkes::point_t::y.

void firevision::CornerHorizon::set_pan_tilt ( float  pan,
float  tilt 
) [virtual]

Set camera's pan/tilt values.

Parameters:
pan camera's current pan
tilt camera's current tilt

Implements firevision::ScanlineModel.

Definition at line 285 of file cornerhorizon.cpp.

void firevision::CornerHorizon::set_robot_pose ( float  x,
float  y,
float  ori 
) [virtual]

Set the robot's pose.

Parameters:
x robot's x coordinate on field in meters
y robot's y coordinate on field in meters
ori robot's orientation. Looking towards the opponent goal is zero rad, with positive values pointing to the right, negative to the left.

Implements firevision::ScanlineModel.

Definition at line 276 of file cornerhorizon.cpp.


The documentation for this class was generated from the following files:
Generated on Tue Feb 22 13:33:03 2011 for Fawkes API by  doxygen 1.4.7