路径优化:去除路径冗余点/路径拉伸/路径剪枝

最近在学习路径规划,想尝试优化路径。通过阅读文献,发现对于优化路径这件事,有许多人用过一种去冗余点的方法,但优快云上没有人写过。所以写在这里,一来记录,二来分享。

提出问题:如下图,原始路径包含许多弯曲很小的地方,有些地方完全可以改为直线。那么如何改进呢?
在这里插入图片描述

思路:将第一个点和第二个点连接起来,如果二者之间没有障碍物,那么就不管第二个点了。再将第一个点和第三个点连接起来,如果二者之间没有障碍物,就不管第三个点了。再把第一个点和第四个点连接起来。。。。直到第一个点和与他连接的点之间出现障碍物为止。

在这里插入图片描述

举例解释:在上图中,将第一个点依次尝试和后边的点连接,当连接到第六个点的时候,发现①和⑥之间出现了障碍物,那就不要再连了,退回去,把①⑤之间的线段作为剪枝成功的一段路径。
下一步:把⑤再依次和后边的点连起来,重复上述步骤。

MATLAB代码

function [directcost,beacon_coo]=PathOptimization(trace_coo,map,row,col,safe_dis)
beacon_coo=trace_coo(end,:);%
S_coo=beacon_coo(1,:);%
k=size(trace_coo,1);%
while k~=1
    E_coo=trace_coo(k-1,:);
    node1=S_coo;
    node2=E_coo;
    if checkConstraint(node1,node2,map,row,col,safe_dis)==1%不在障碍上
        beacon_coo=[trace_coo(k,:);beacon_coo];
        S_coo=beacon_coo(1,:);
        k=k+1;
    end
    k=k-1;
end
beacon_coo=[trace_coo(1,:);beacon_coo];

其中,trace_coo是保存了n个坐标的n行2列矩阵。beacon_coo亦是如此。

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值