navPath object stores paths that are typically created by
geometric path planners. Path points are stored as states in an associated state space.
creates a path object,
path = navPath
path, using the SE2 state space with default settings.
creates a path object with state space specified by
path = navPath(
space input also sets the value of the StateSpace
allows you to initialize the path with state samples given by
path = navPath(
states as a matrix of state samples. States that are outside
StateBounds of the state
space object are
reduced to the bounds. The
states input also sets the value of the
StateSpace — State space for path
stateSpaceSE2 (default) | state space object
State space for the path, specified as a state space object. Each state in the path
is a sample from the specified state space. You can use objects such as
stateSpaceReedsShepp as a state space object. You can also customize a state
space object using the
States — States of path
zeros(0,StateSpace.NumStateVariables) (default) | real-valued M-by-N matrix
States of the path, specified as a real-valued
M-by-N matrix. M is the
number of states in the path, and N is the dimension of each state.
You can only set this property during object creation or using the
NumStates — Number of state samples in path
0 (default) | nonnegative integer
Number of state samples in the path, specified as a nonnegative integer. The number
is the same as the number of rows of the state matrix specified in the
Create navPath Based on Multiple Waypoints
Create a navPath object based on multiple waypoints in a Dubins space.
dubinsSpace = stateSpaceDubins([0 25; 0 25; -pi pi])
dubinsSpace = stateSpaceDubins with properties: SE2 Properties Name: 'SE2 Dubins' StateBounds: [3×2 double] NumStateVariables: 3 Dubins Vehicle Properties MinTurningRadius: 1
pathobj = navPath(dubinsSpace)
pathobj = navPath with properties: StateSpace: [1×1 stateSpaceDubins] States: [0×3 double] NumStates: 0
waypoints = [... 8 10 pi/2; 10 12 pi/4; 12 17 pi/2; 11 10 -pi]; append(pathobj, waypoints);
Interpolate that path so that it contains exactly 250 points.
Visualize the interpolated path and the original waypoints.
figure; grid on; axis equal; hold on; plot(pathobj.States(:,1), pathobj.States(:,2), ".b"); plot(waypoints(:,1), waypoints(:,2), "*r", "MarkerSize", 10)
Calculate length of path.
len = pathLength(pathobj); disp("Path length = " + num2str(len))
Path length = 19.37