This file defines the non-inline member functions of the lobot::Goal class. More...
#include "Robots/LoBot/control/LoGoal.H"
#include "Robots/LoBot/control/LoMetrics.H"
#include "Robots/LoBot/control/LoTurnArbiter.H"
#include "Robots/LoBot/control/LoSpinArbiter.H"
#include "Robots/LoBot/LoApp.H"
#include "Robots/LoBot/slam/LoMap.H"
#include "Robots/LoBot/slam/LoSlamParams.H"
#include "Robots/LoBot/config/LoConfigHelpers.H"
#include "Robots/LoBot/thread/LoShutdown.H"
#include "Robots/LoBot/thread/LoUpdateLock.H"
#include "Robots/LoBot/thread/LoPause.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 <GL/glu.h>
#include <GL/gl.h>
#include <iomanip>
#include <sstream>
#include <numeric>
#include <algorithm>
#include <functional>
#include <iterator>
#include <utility>
Go to the source code of this file.
Functions | |
static std::string | lobot::mag (char label, const Vector &v) |
This file defines the non-inline member functions of the lobot::Goal class.
Definition in file LoGoal.C.
bool m_backtrack |
bool m_loop |
By default, when the final goal in the goal list is reached, the goal behaviour will maintain that goal. Thus, if another behaviour causes the robot to move away from the final goal in the goal list, the goal behaviour will redirect the robot back to that goal.
However, by setting this flag, we can have the goal behaviour loop back to the first goal in the list and start over.
bool m_pause |
What should we do when we reach a goal? The options are:
This setting specifies which of the above two actions to use. By default, the goal behaviour implements the "continue" action, i.e., when the robot reaches a goal, it simply carries on to the next one. However, by setting this flag, the behaviour will pause the robot and wait for the user to explicitly signal resumption of normal operations.
bool m_render_goals |
bool m_seek_mode |
This behaviour can be configured to actively steer the robot to each goal or to simply monitor the robot's current location to check if the robot is at a goal or not. When set, this flag will make the goal behaviour actively seek each goal in its list. By default, this flag is off, i.e., the behaviour only monitors the robot's location without affecting its steering in any way.
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.
int m_update_delay |
std::pair<float, float> m_vff_forces |
The VFF method mentioned above computes a repulsive force vector for each cell within the active window and an attractive force vector for the goal. The sum of all the repulsive forces and the single attractive force result in a final steering vector.
This setting specifies the force constants to use for the individual force vectors. It should be a pair of numbers. The first number is the repulsive force constant and the second one is the attractive force constant.
When configured to actively steer the robot towards goals, the goal behaviour directs the robot towards the current goal by implementing the VFF method described by Borenstein and Koren (see "Real-time Obstacle Avoidance for Fast Mobile Robots," IEEE Transactions on Systems, Man, and Cybernetics 19(5):1179--1187, Sep/Oct 1989).
The following setting specifies the size of the active window within the certainty grid (i.e., occupancy map). This size is specified in terms of the number of cells occupied by the active window.
NOTE: Actually, this setting specifies half of the active window's size. That is, internally, this number is doubled.