LoOpenPath.C File Reference

This file defines the non-inline member functions of the lobot::OpenPath class. More...

#include "Robots/LoBot/control/LoOpenPath.H"
#include "Robots/LoBot/control/LoSpinArbiter.H"
#include "Robots/LoBot/LoApp.H"
#include "Robots/LoBot/ui/LoLaserViz.H"
#include "Robots/LoBot/config/LoConfigHelpers.H"
#include "Robots/LoBot/thread/LoUpdateLock.H"
#include "Robots/LoBot/misc/LoExcept.H"
#include "Robots/LoBot/misc/LoRegistry.H"
#include "Robots/LoBot/misc/singleton.hh"
#include "Robots/LoBot/util/LoGL.H"
#include "Robots/LoBot/util/LoMath.H"
#include "Robots/LoBot/util/range.hh"
#include <GL/glu.h>
#include <GL/gl.h>
#include <algorithm>
#include <map>
#include <functional>
#include <utility>
#include <math.h>
Include dependency graph for LoOpenPath.C:

Go to the source code of this file.


Detailed Description

This file defines the non-inline member functions of the lobot::OpenPath class.

Definition in file LoOpenPath.C.


Variable Documentation

int m_alpha

A derived parameter that keeps track of the angular range about a given direction that must be searched for candidate open paths.

Definition at line 115 of file LoOpenPath.C.

range<int> m_dead_zone

To ensure that the robot doesn't keep turning unnecessarily, we mark some angular range in front of the robot as a dead zone. When the most open path lies in this angular range, the open path behaviour will simply keep driving straight and not affect the steering.

To disable this policy, simply specify a range that lies outside the laser range finder's FOV (e.g., 260 to 280). That way, all open paths will lie outside of the dead zone and the robot will always steer towards the most open path in every iteration of this behaviour.

To have the robot never turn towards the most open path, simply use the entire FOV of the laser range finder. Then, since all open paths will lie in the dead zone, the robot will never turn towards the mostopen path. (Note, however, that an easier way to do this is to simply disable the open path behaviour.)

This setting expects two integers. The first specifies the minimum of the dead zone's angular range (usually a negative number indicating an angle on the robot's right). The second number is the dead zone's maximum (usually a positive number for a direction on the left of the robot).

Definition at line 151 of file LoOpenPath.C.

int m_fov

Instead of looking for open paths across the laser range finder's entire FOV, we can restrict this behaviour to search only some subportion of it. This setting specifies the angular range to search for open paths. It is a single number specifying the angular range for each side of zero degrees.

Definition at line 122 of file LoOpenPath.C.

We will only consider open paths that are at least the length (in mm) specified by this setting.

Definition at line 110 of file LoOpenPath.C.

float m_path_width

The width of the robot. This setting specifies the minimum width (in mm) that each open path must be.

Definition at line 106 of file LoOpenPath.C.

Usually, steering control is effected using the turn arbiter, which veers the robot in different directions while it moves, i.e., smooth car-like turns. However, the lgmd_extricate_tti behaviour also supports spin-style steering, i.e., momentarily stopping the robot and then turning it cw/ccw in-place. This flag turns on spin-style steering. By default, the behaviour uses the normal car-like steering mode.

Definition at line 160 of file LoOpenPath.C.

int m_step

Instead of looking for open paths at each angle, we can use this parameter to skip some angles.

Definition at line 126 of file LoOpenPath.C.

The number of milliseconds between successive iterations of this behaviour.

WARNING: The ability to change a behaviour's update frequency is a very powerful feature whose misuse or abuse can wreak havoc! Be sure to use reasonable values for this setting.

Definition at line 168 of file LoOpenPath.C.

Generated on Sun May 8 08:42:49 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3