【MATLAB Navigation Toolbox之轨迹优化】

欢迎大家关注我的B站:

偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com)

本篇文章基于MATLAB导航工具箱的官方文档,详情参考Create optimization options for optimizePath function - MATLAB - MathWorks 中国

目录

1 optimizePathOptions

1.1 轨迹参数

1.2 障碍物参数

1.3 求解器参数

1.4 权重

2 举例

3 optimizePath


1 optimizePathOptions

这是为优化路径函数创建优化选项

options = optimizePathOptions

上面的代码是创建默认优化选项,下面将详细介绍具体的参数调整

1.1 轨迹参数

很多参数有最大值限制,因为受到实际车辆或机器人运动学的限制

MaxPathStates:路径中允许的最大姿势数,默认是200

ReferenceDeltaTime:两个连续姿势之间的行程时间,默认0.3

MinTurningRadius:最小转弯半径,默认是1

MaxVelocity:最大速度,默认是0.4

MaxAngularVelocity:最大角速度,默认是0.3

MaxAcceleration:最大加速度,默认是0.5

MaxAngularAcceleration:最大角加速度,默认是05

1.2 障碍物参数

ObstacleSafetyMargin:与障碍物的安全距离,这是一个软约束,默认是0.5,计算代价时用到的,离0.5越远且越小,代价越大

ObstacleCutoffDistance:障碍物截断距离,超过此距离的障碍物视为冗余避障约束,忽略这些障碍物,默认是2.5

ObstacleInclusionDistance:障碍物包含距离,一般来说路径优化器考虑最近的障碍物,但在障碍物包含距离内的障碍物超过一个时会考虑包含距离内的所有障碍物,默认为0.75

1.3 求解器参数

NumIteration:求解器调用次数,默认是4

MaxSolverIteration:每个求解器调用的最大次数,默认是15

1.4 权重

WeightTime:时间的成本函数权重。要缩短行程时间,请增大,默认为10

WeightSmoothness:非完整约束运动的成本函数权重,要获得更平滑的路径,请增大,默认是1000

WeightMinturningRadius:要确保转弯半径高于最小转弯半径,请增大,默认是10

WeightObstacles:用于保持与障碍物的安全距离的成本函数权重,要保持与障碍物的安全距离,请增大,默认是50

WeightVelocity、WeightAngularVelocity、WeightAcceleration、WeightAngularAcceleration:都类似,保持在最大值一下,默认值为100、10、10、10

2 举例

map = load("exampleMaps.mat").complexMap;
map = binaryOccupancyMap(map);
stateValidator = validatorOccupancyMap;
stateValidator.Map = map;
stateValidator.ValidationDistance = 0.01;
planner = plannerHybridAStar(stateValidator,MinTurningRadius=2);
start = [6 3 pi/2];
goal = [32 32 0];
path = plan(planner,start,goal);
inpath = path.States;
options = optimizePathOptions
options.MinTurningRadius = 2;
options.MaxPathStates = size(inpath,1) * 3;
options.ObstacleSafetyMargin = 0.75;
optpath = optimizePath(inpath,map,options);
show(map)
hold on
quiver(inpath(:,1),inpath(:,2),cos(inpath(:,3)),sin(inpath(:,3)),0.1);
quiver(optpath(:,1),optpath(:,2),cos(optpath(:,3)),sin(optpath(:,3)),0.1);
legend("Input Path","Optimized Path")

3 optimizePath

optPath = optimizePath(path)
optPath = optimizePath(path,map)
optPath = optimizePath(path,options)
optPath = optimizePath(path,map,options)
[optPath,kineticInfo] = optimizePath(___)
[optPath,kineticInfo,solutionInfo] = optimizePath(___)

path:以矩阵的形式返回路径中的状态

map:地图

options:指定为optimizePathOptions

optpath:返回优化后的路径中的状态,以矩阵的形式返回

kineticInfo:动力学信息,返回一个结构体

TimeStamps与优化路径中的姿势相对应的时间
Velocity在两个连续姿势之间行进的速度
AngularVelocity两个连续姿势之间的角速度

solutionInfo:解决方案,返回一个结构体

NumIterations执行的迭代次数
Cost路径的最终成本
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Matlab Navigation是指在Matlab环境下进行路径规划和导航的相关功能。其中,路径长度(pathLength)是指路径的总长度,可以通过navPathControl函数来控制路径的生成和控制。该函数可以接受不同的参数,如传播器(propagator)、状态(states)、控制(controls)、目标(targets)和持续时间(durations)等。\[1\] 在Matlab中,使用A*路径规划器(plannerAStarGrid)可以进行路径规划。该路径规划器需要一个地图作为输入,可以通过指定不同的参数来创建。需要注意的是,大多数涉及到的Matlab代码需要R2019以上的版本才能运行。\[2\] 在路径规划中,可以使用dubinsConnection和connect函数来定义特定的路径段。dubinsConnection函数可以将两个点之间的路径段连接起来,得到一个由多个dubinsPathSegment组成的矩阵。而interpolate函数可以对路径段进行插值,得到路径上的一系列位姿(poses)。此外,还可以通过指定长度(lengths)来控制插值的步长,同时还可以获取路径上的方向(directions)。\[3\] 综上所述,Matlab Navigation提供了一系列功能和函数,可以在Matlab环境下进行路径规划和导航的相关操作。 #### 引用[.reference_title] - *1* *3* [【MATLAB Navigation Toolbox路径类型】](https://blog.csdn.net/weixin_65089713/article/details/124809413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【MATLAB Navigation Toolbox之A* 路径规划器】](https://blog.csdn.net/weixin_65089713/article/details/124303615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无意2121

创作不易,多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值