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>
Go to the source code of this file.
This file defines the non-inline member functions of the lobot::OpenPath class.
Definition in file LoOpenPath.C.
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.
float m_min_path_length |
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.
int m_update_delay |
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.