Reactive navigation
These planners work with an occupancy grid representation of the world. Start and goal are specified by 2D \((x, y)\) coordinates in the plane.
- class roboticstoolbox.mobile.Bug2(**kwargs)[source]
Bases:
PlannerBase
Construct a Bug2 reactive navigator
- Parameters
occgrid (
OccGrid
instance or ndarray(N,M)) – occupancy gridkwargs – common arguments for
PlannerBase
superclass
- Returns
Bug2 reactive navigator
- Return type
Bug2 instance
Creates an object which simulates an automaton, capable of omnidirectional motion, finding a path across an occupancy grid using only a bump sensor.
- Reference
“Path-Planning Strategies for a Point Mobile Automaton Moving Amidst Unknown Obstacles of Arbitrary Shape”, Lumelsky and Stepanov, Algorithmica (1987)2, pp.403-430
Note
This class is not a planner, even though it subclasses
PlannerBase
. It can produce very inefficient paths.- Author
Kristian Gibson and Peter Corke, based on MATLAB version by Peter Corke
- Seealso
- property m_line
Get m-line
- Returns
m-line in homogeneous form
- Return type
ndarray(3)
This is the m-line computed for the last
run()
.
- run(start=None, goal=None, animate=False, pause=0.001, trail=True, movie=None, **kwargs)[source]
Find a path using Bug2 reactive navigation algorithm
- Parameters
start (array_like(2)) – starting position
goal (array_like(2)) – goal position
animate (bool, optional) – show animation of robot moving over the map, defaults to False
movie (str or tuple(str, float), optional) – save animation as a movie, defaults to None. Is either name of movie or a tuple (filename, frame interval)
trail – show the path followed by the robot, defaults to True
- Returns
path from
start
togoal
- Return type
ndarray(2,N)
Compute the path from
start
togoal
assuming the robot is capable of 8-way motion from its current cell to the next.Note
start
andgoal
are given as (x,y) coordinates in the occupancy grid map, not as matrix row and column coordinates.- Seealso
- plot_m_line(ls=None)[source]
Plot m-line
- Parameters
ls (str, optional) – linestyle, defaults to
"k--"
Plots the m-line on the current axes.
- property goal
Set/get goal point or configuration (superclass)
- Getter
Return goal pointor configuration
- Return type
ndarray(2) or ndarray(3)
- Setter
Set goal point or configuration
- Param
array_like(2) or array_like(3)
The goal is either a point \((x, y)\) or a configuration \((x, y, \theta)\).
- Seealso
- isoccupied(p)
Test if point is occupied (superclass)
- Parameters
p (array_like(2)) – world coordinate (x, y)
- Returns
occupancy status of corresponding grid cell
- Return type
bool
The world coordinate is transformed and the status of the occupancy grid cell is returned. If the point lies outside the bounds of the occupancy grid return True (obstacle)
If there is no occupancy grid this function always returns False (free).
- Seealso
occgrid()
validate_endpoint()
BinaryOccGrid.isoccupied()
- message(s, color=None)
Print message to message channel
- Parameters
s (str) – message to print
color (str, optional) – color to print it, defaults to color specified at constructor time.
- property occgrid
Occupancy grid
- Returns
occupancy grid used for planning
- Return type
OccGrid
or subclass or None
Returns the occupancy grid that was optionally inflated at constructor time.
- Seealso
- plot(path=None, line=None, line_r=None, configspace=False, unwrap=True, direction=None, background=True, path_marker=None, path_marker_reverse=None, start_marker=None, goal_marker=None, start_vehicle=None, goal_vehicle=None, start=None, goal=None, ax=None, block=False, bgargs={}, **unused)
Plot vehicle path (superclass)
- Parameters
path ((N, 2) or ndarray(N, 3)) – path, defaults to None
direction (array_like(N), optional) – travel direction associated with each point on path, is either >0 or <0, defaults to None
line (sequence of dict of arguments for
plot
) – line style for forward motion, default is striped yellow on blackline_r (sequence of dict of arguments for
plot
) – line style for reverse motion, default is striped red on blackconfigspace (bool, optional) – plot the path in 3D configuration space, input must be 3xN. Start and goal style will be given by
qstart_marker
andqgoal_marker
, defaults to Falseunwrap (bool, optional) – for configuration space plot unwrap \(\theta\) so there are no discontinuities at \(\pm \pi\), defaults to True
background (bool, optional) – plot occupancy grid if present, default True
start_marker (dict, optional) – style for marking start point
goal_marker (dict, optional) – style for marking goal point
start_vehicle (dict) – style for vehicle animation object at start configuration
goal_vehicle (dict) – style for vehicle animation object at goal configuration
start (array_like(2) or array_like(3), optional) – start position \((x, y)\) or configuration \((x, y, \theta)\), defaults to value previously set
goal (array_like(2) or array_like(3), optional) – goal position \((x, y)\) or configuration \((x, y, \theta)\), defaults to value previously set
bgargs (dict, optional) – arguments passed to
plot_bg()
, defaults to Noneax (matplotlib axes) – axes to plot into
block (bool, optional) – block after displaying the plot
Plots the start and goal location/pose if they are specified by
start
orgoal
or were set by the object constructor orplan
orquery
method.If the
start
andgoal
have length 2, planning in \(\mathbb{R}^2\), then markers are drawn using styles specified bystart_marker
andend_marker
which are dicts using Matplotlib keywords, for example:planner.plot(path, start=dict(marker='s', color='b'))
If the
start
andgoal
have length 3, planning in \(\SE{2}\), andconfigspace
is False, then direction-indicating markers are used to display start and goal configuration. These are also given as dicts but have two items:'shape'
which is the shape of the polygonal marker and is either'triangle'
or'car'
. The second item'args'
is passed tobase.plot_poly()
and Matplotlib and could have values such asfilled=True
orcolor
.If
configspace
is False then a 3D plot is created and the start and goal are indicated by Matplotlib markers specified by the dictsstart_marker
andend_marker
Default values are provided for all markers:
the start point is a circle
the goal point is a star
the start vehicle style is a
VehiclePolygon(shape='car')
as an unfilled outlinethe goal vehicle style is a
VehiclePolygon(shape='car')
as a transparent filled shape
If
background
is True then the background of the plot is either or both of:the occupancy grid
the distance field of the planner
Additional arguments
bgargs
can be passed through toplot_bg()
If
path
is specified it has one column per point and either 2 or 3 rows:2 rows describes motion in the \(xy\)-plane and a 2D plot is created
3 rows describes motion in the \(xy\theta\)-configuration space. By default only the \(xy\)-plane is plotted unless
configspace
is True in which case motion in \(xy\theta\)-configuration space is shown as a 3D plot.
If the planner supports bi-directional motion then the
direction
option gives the direction for each point on the path.Forward motion segments are drawn using style information from
line
while reverse motion segments are drawn using style information fromline_r
. These are each a sequence of dicts of Matplotlib plot options which can draw an arbitrary number of lines on top of each other. The default:line = ( {color:'black', linewidth:4}, {color:'yellow', linewidth:3, dashes:(5,5)} )
will draw a blackline of width 4 with a dashed yellow line of width 3 plotted on top, giving a line of alternating black and yellow dashes.
- Seealso
plot_bg()
base.plot_poly()
- plot_bg(distance=None, cmap='gray', ax=None, inflated=True, colorbar=True, **unused)
Plot background (superclass)
- Parameters
distance (ndarray(N,M), optional) – override distance field, defaults to None
cmap (str or Colormap, optional) – Specify a colormap for the distance field, defaults to ‘gray’
Displays the background which is either the occupancy grid or a distance field. The distance field encodes the distance of a point from the goal, small distance is dark, a large distance is bright.
- If the planner has an occupancy grid then that will be displayed with:
free cells in white
occupied cells in red
inflated occupied cells in pink
If distance is provided, or the planner has a distancemap attribute the the distance field will be used as the background and obstacle cells (actual or inflated) will be shown in red. A colorbar is added.
- progress_end()
Finalize a progress bar (superclass)
Remove/cleanip a progress bar, for example:
planner.progress_start(100) for i in range(100): # ... planner.progress_next() planner.progress_end()
- Seealso
- progress_next()
Increment a progress bar (superclass)
Create a progress bar for an operation that has
n
steps, for example:planner.progress_start(100) for i in range(100): # ... planner.progress_next() planner.progress_end()
- Seealso
- progress_start(n)
Initialize a progress bar (superclass)
- Parameters
n (int) – Number of iterations in the operation
Create a progress bar for an operation that has
n
steps, for example:planner.progress_start(100) for i in range(100): # ... planner.progress_next() planner.progress_end()
- Seealso
- property random
Get private random number generator
- Returns
NumPy random number generator
- Return type
Has methods including:
The generator is initialized with the seed provided at constructor time.
- Seealso
- random_init(seed=None)
Initialize private random number generator
- Parameters
seed (int) – random number seed, defaults to value given to constructor
The private random number generator is initialized. The seed is
seed
or the value given to the constructor. If None, the generator will be randomly seeded using a seed from the operating system.
- property start
Set/get start point or configuration (superclass)
- Getter
Return start point or configuration
- Return type
ndarray(2) or ndarray(3)
- Setter
Set start point or configuration
- Param
array_like(2) or array_like(3)
The start is either a point \((x, y)\) or a configuration \((x, y, \theta)\).
- Seealso
- validate_endpoint(p, dtype=None)
Validate start or goal point
- Parameters
p (array_like(2)) – the point
dtype (str, optional) – data type for point coordinates, defaults to None
- Raises
ValueError – point is inside obstacle
- Returns
point as a NumPy array of specified dtype
- Return type
ndarray(2)
The coordinate is tested to be a free cell in the occupancy grid.
- Seealso
- property verbose
Get verbosity
- Returns
verbosity
- Return type
bool
If
verbosity
print more diagnostic messages to the planner’s message channel.