本篇文章基于MATLAB导航工具箱的官方文档,详情参考Motion Planning - MATLAB & Simulink - MathWorks 中国
目录
1 dubinsConnection
该对象是连接两个状态的路径的类型
dubConnObj = dubinsConnection
dubConnObj = dubinsConnection(Name,Value)
MinTurningRadius:默认为1
DisabledPathTypes:默认不禁用任何特定运动序列
AllPathTypes:所有特定运动序列包含 {"LSL"} {"LSR"} {"RSL"} {"RSR"} {"RLR"} {"LRL"}
若要使用此连接类型在姿势之间生成路径段,请调用connect函数
2 reedsSheppConnection
reedsConnObj = reedsSheppConnection
reedsConnObj = reedsSheppConnection(Name,Value)
reedsSheppConnection比dubinsConnection多了对前进与反向运动的惩罚,ForwardCost、ReverseCost 默认值均为1,这是为了防止运动中反向运动过于频繁。同时它的AllPathTypes包含44中特定运动序列,不清楚的读者可以参考【自动驾驶轨迹规划之dubins曲线与reeds-shepp曲线】_无意2121的博客-CSDN博客_杜宾斯路径规划
若要使用此连接类型在姿势之间生成路径段,请调用connect函数
3 connect
[pathSegments,pathCosts] = connect(connectionObj,start,goal)
[pathSegments,pathCosts] = connect(connectionObj,start,goal,'PathSegments','all')
第一种方式使用指定连接类型返回该连接类型的最短路径
第二种方式使用指定连接类型返回所有可能的路径及其代价
connectionObj:指定连接类型
start、goal:始末状态
pathSegment:返回最短路径的路径
pathCosts:返回最短路径的成本
interpolate:插值
4 dubinsPathSegment
dubPathSeg = dubinsPathSegment(connectionObj,start,goal,motionLengths,motionTypes)
这是定义特定的路径段,相当于只能对两个点之间定义路径段,而dubinsConnection与connect可以将多个点进行连接,得到的pathSegment相当于是多个dubinsPathSegment组成的矩阵。dubinsPathSegment与reedsSheppPathSegment大致用法相同
poses = interpolate(pathSeg)
poses = interpolate(pathSeg,lengths)
[poses,directions] = interpolate(___)
pathSeg:类型为特定路径段
lengths:沿指定长度进行插值,如0:0.1:1
poses:插值姿势
directions:方向,有1和-1
5 navPath
path = navPath
path = navPath(space)
path = navPath(space,states)
StateSpace:状态空间对象,可以参考【MATLAB 状态空间】_无意2121的博客-CSDN博客
States:状态矩阵
NumStates:状态数
对象函数:
append:将状态添加到路径末尾
pathLength:路径长度
6 navPathControl
pathObj = navPathControl(propagator)
pathObj = navPathControl(propagator,states,controls,targets,durations)
使用一系列指定的状态,控件,目标和持续时间初始化路径
StatePropagator:状态传播器
States:路径的一系列状态
Controls:每个状态的控制输入
TargetStates:每个状态的目标状态
Durations:每个控制输入的持续时间
NumStates、Numsegments:状态数、状态之间的路径段数,默认为零
对象函数:
pathDuration:控制路径的总运行时间
DWA算法就是基于控制空间采样的策略