【基于全局路径生成最优路径】基于D* Lite和横向避障算法无人驾驶地面车辆的路径规划(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

基于D* Lite和横向避障算法的无人驾驶地面车辆路径规划研究

摘要:本文研究了无人驾驶地面车辆的路径规划,基于全局路径生成最优路径。提出的算法使用了D* Lite和横向避障算法。该算法用于全局地图和障碍物搜索。通过自主车辆的速度提出了安全避障路径规划思路。根据速度进行安全障碍物避让。当前的自动驾驶车辆在驾驶研究中是安全可靠的。本文中,自动驾驶车辆作为一种逃避横向避障D* Lite算法的方式被使用。根据车辆速度进行光学横向避障控制,以便生成路径。该研究是UGV驾驶研究中的一部分,旨在探索并避开无限路径上的未知障碍物。

关键词:D* Lite  无人驾驶车辆  路径规划  全局路径  横向避让

一、D* Lite算法的核心原理与优化

D* Lite是一种增量式启发式搜索算法,专为动态环境设计,具有以下核心特点:

  1. 增量更新与反向搜索
    D* Lite从目标点(终点)向起点反向搜索,维护每个节点的实际代价g(n)g(n)和右侧值rhs(n)rhs(n)。当环境变化(如新增障碍物)时,仅需更新受影响节点的rhsrhs值,避免全局重规划,显著提升效率。例如,若某节点因障碍物出现导致其rhsrhs值增大,算法会将其标记为“局部过一致”,并通过优先级队列重新调整路径。

  2. 局部一致性判断
    节点状态通过g(n)与rhs(n)的关系判定:

    • 局部一致:g(n)=rhs(n),节点无需处理;
    • 局部过一致:g(n)>rhs(n),通常因障碍物删除或首次规划触发;
    • 局部欠一致:g(n)<rhs(n),多由新增障碍物引起。
      这种机制使得算法能够快速响应动态变化,仅需处理不一致的节点。
  3. 启发式函数优化
    结合启发式函数h(n)h(n)(当前点到起点的估计代价)和实际代价g(n)g(n),生成键值key(n)=[min⁡(g(n),rhs(n))+h(n),min⁡(g(n),rhs(n))]以确定节点优先级。反向搜索结合启发式,确保路径最优性。

  4. 应用改进
    针对路径安全性与平滑性问题,研究者通过引入安全距离约束、动力学模型(如转向角限制)和三阶贝塞尔曲线优化路径,解决传统D* Lite路径冗余和靠近障碍物的缺陷。例如,设置安全距离可避免车辆与障碍物碰撞风险,而贝塞尔曲线生成连续曲率路径,提升车辆操控稳定性。


二、横向避障算法的实现策略

横向避障算法关注车辆在动态环境中的实时避障与运动控制,主要方法包括:

  1. 基于模型预测控制(MPC)与多项式拟合
    通过构建横向动力学模型,结合多项式轨迹生成(如五次多项式),在预瞄距离内生成多条候选路径,并基于避障安全距离、平顺性等指标选择最优路径。例如,南金瑞等提出的纵横向协同规划算法,利用多项式拟合生成平滑转向轨迹,并通过PID/LQR控制实现跟踪。

  2. 模糊逻辑与神经网络融合
    以障碍物位置、车辆速度等为输入,转向角和目标速度为输出,构建模糊神经网络控制器。通过实时训练调整隶属度函数参数,实现动态避障决策。例如,激光雷达数据输入模糊化层,解模糊化层输出转向指令,适应复杂路况。

  3. 改进人工势场法
    传统势场法易陷入局部最优,改进方案通过引入斥力因子、道路边界约束和车速自适应机制,解决目标不可达问题。黄林雄的研究显示,改进后算法在横向误差控制上提升30%以上,适应多障碍物场景。

  4. 动态窗口法(DWA)与滚动时域优化
    DWA算法在速度-转向角空间中生成动态窗口,结合滚动时域方法实时评估轨迹可行性。优化后的评价函数可同时考虑避障距离、路径跟踪误差和动力学约束。例如,张方虎等融合改进A*与DWA,全局路径引导局部避障,减少计算冗余。

     


三、D* Lite与横向避障的协同工作机制
  1. 分层规划架构

    • 全局层:D* Lite生成全局最优路径,并实时更新以应对动态障碍物。例如,当检测到新障碍物时,D* Lite更新受影响的节点代价,调整全局路径。
    • 局部层:横向避障算法根据实时传感器数据(如激光雷达、视觉)调整车辆转向和速度。例如,利用DWA在动态窗口内生成局部避障轨迹,确保实时性。
  2. 信息交互机制

    • 代价图共享:D* Lite维护的代价图(包含节点gg和rhsrhs值)与横向避障的局部代价图(如障碍物距离场)融合,提升路径安全性。
    • 事件触发更新:当横向避障检测到无法绕行的障碍物时,触发D* Lite的全局重规划。例如,局部路径偏离阈值超过设定值,则调用D* Lite更新全局路径。
  3. 时间同步与优化

    • 滚动时域协调:D* Lite以较低频率更新全局路径(如每秒1次),而横向避障以高频(如10Hz)调整局部轨迹,平衡计算负载。
    • 路径平滑过渡:通过贝塞尔曲线或样条插值,将D* Lite的离散路径点转化为连续轨迹,供横向控制器跟踪。

四、研究案例与性能分析
  1. 改进D Lite与动态窗口法的融合*
    李雪梅等提出将改进D* Lite(引入安全距离和动力学约束)与动态窗口法结合。实验显示,在动态障碍物场景下,路径长度减少15%,计算效率提升20%,且无碰撞风险。

  2. 纵横向协同规划
    姜岩等设计的算法在40km/h速度下,横向加速度控制在0.4g以内,路径跟踪误差小于0.3m,适应城市复杂交通环境。

  3. 模糊神经网络与D Lite集成*
    某研究中,模糊控制器实时输出转向指令,同时D* Lite每0.5秒更新全局路径。测试表明,横向误差降低40%,动态避障响应时间小于0.1秒。


五、挑战与未来方向
  1. 计算复杂度
    D* Lite在大规模地图中维护节点代价的复杂度较高,需结合分层地图或稀疏化处理。横向避障的实时性依赖硬件算力,边缘计算与FPGA加速是潜在方案。

  2. 多传感器融合
    激光雷达与视觉数据的时空同步问题可能影响避障精度,需优化标定与数据融合算法。

  3. 仿生算法结合
    未来研究可探索D* Lite与强化学习的结合,例如利用Q-learning优化启发式函数,提升动态环境适应性。


六、结论

D* Lite与横向避障算法的协同机制通过分层规划与动态更新,实现了全局最优性与局部实时性的平衡。改进的D* Lite提升路径安全性与平滑性,而横向避障算法(如DWA、模糊控制)确保动态障碍物响应能力。两者结合在仿真与实车测试中表现优异,为无人驾驶的复杂环境适应性提供了有效解决方案。未来需进一步优化计算效率与多模态传感器融合,以应对更极端的交通场景。

📚2 运行结果

....... 

部分代码:

%% parameters for Adaptive waypoints repair method
n_Oper= 3; % number of moving directions
win_size=3*win; % the window size before probabilities are updated
n_win=2;  % none of the strategies improved the solutions in the m previous W windows, reinitialise
n_Ants=SwarmSize; % number of new solutions
Experience_Oper=ones(1, n_Oper);

ConvergenceData = ones(1, MaximumFEs+1)*10^5;    % best fitness found

TrialIndex=1;
current_eval=1; %%% fitness function evaluations counter
%previous_eval=0;
iter=0;

%% Start initialization in the archive (PopSize, Dimension)
xant=InitPos';
fitx=SingleCostFunction(xant', TModelInfor, AgentIndex);

%% Sort the population based on fitx
[fitx, indecies ] = sort( fitx );
xant = xant( indecies, : );
ConvergenceData(1)=fitx(1);

%StandardDeviation=zeros(PopSize, Dimension);
NewAnt= zeros(n_Ants, Dimension);

NoImprove=0;
SolutionWeights=1/(q*SwarmSize*sqrt(2*pi))*exp(-0.5*(((1:SwarmSize)-1)/(q*SwarmSize)).^2);
Probability=SolutionWeights./sum(SolutionWeights);

t=SwarmSize:-1:1;                                                    
Pci=0.5+0.4*(exp(10*(t-1)/(SwarmSize-1))-1)/(exp(10)-1);

while current_eval<MaximumFEs
    if flag_agent==1
        xant(SwarmSize/2+1:end,:)=xmin'+rand(SwarmSize/2, Dimension).*(xmax'-xmin');

        pp=repair1(xant(SwarmSize/2+1:end,:)',TModelInfor,AgentIndex, pRepair, flag_uniform);
        xant(SwarmSize/2+1:end,:)=pp';
        fitx=SingleCostFunction(xant', TModelInfor,AgentIndex);
        [fitx, indecies ] = sort( fitx );
        xant = xant( indecies, : );
        eval_agent(AgentIndex)=current_eval+1;
        current_eval=current_eval+n_Ants;

        ConvergenceData(current_eval-n_Ants+1:current_eval)=fitx(1); 

        flag_agent=0;
    else
        iter=iter+1;

%% ---------------------Update individuals------------------------------
        if mod(iter,win_size)==1
            Prob_Oper=Experience_Oper/(sum(Experience_Oper)+realmin);
            Experience_Oper=ones(1, n_Oper);
        end

        % generate new population
        % Prob_Oper
        flag_moving=RouletteWheelSelection(Prob_Oper);
        flag_uniform=[0 flag_moving];
        old_fitx=fitx(1);
        ttemp=rand(SwarmSize,Dimension);
        flag=(ttemp>Pci')*1;

        for i=1:n_Ants

            [NewAnt(i,:), Nfitx(i)]= NewSolConst(TModelInfor, xant, SwarmSize,Dimension, Probability, flag,zeta, AgentIndex, pRepair, flag_uniform);

        end
%% ---------------------Evaluation----------------------------------------      

        allSwarm=[xant; NewAnt];
        allFitnessValue= [fitx Nfitx];

        % sort
        [allFitnessValue, SortIndex]=sort(allFitnessValue);
        allSwarm=allSwarm(SortIndex,:);

        current_eval=current_eval+n_Ants;
        ConvergenceData(current_eval-n_Ants+1:current_eval)=allFitnessValue(1); 

        % record the number without impovement
        if fitx(1)<=allFitnessValue(1)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]董少洋,居鹤华.基于SD*lite的月球车任务规划算法[J].计算机测量与控制, 2012, 20(9):4.

[2]高涛,黄睿杰.基于改进D*Lite算法的无人车避障路径规划研究[J].江苏工程职业技术学院学报, 2022, 22(3):6-10.

[3]代允.基于避障系统的无人机航迹规划算法[J].电子技术与软件工程, 2021, 000(009):P.76-77.

🌈4 Matlab代码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值