无人机路径规划的 动态窗口法 (DWA)

Drone DWA

本项目实现了无人机路径规划的 动态窗口法 (DWA)。以下是一些关键资源:

理论

动态窗口法(DWA)在三维路径规划中的改进与实现


引言

动态窗口法(Dynamic Window Approach, DWA)是一种经典的机器人运动规划算法,广泛应用于实时避障与目标导航问题。其核心思想是在动态约束下,对速度空间内的可能值进行采样,通过轨迹预测和评价选择最优运动指令。然而,传统DWA算法主要面向二维平面场景,对于三维复杂环境(如无人机路径规划)存在一定的局限性。为此,本文基于DWA的核心思想,结合速度、加速度限制以及障碍物限制,设计了一种改进的三维动态窗口法,并通过优化轨迹评价函数实现高效、安全的路径规划。


DWA算法的核心步骤

动态窗口法的基本步骤包括动态窗口定义、轨迹预测、轨迹评价和最优轨迹选择。这些步骤为无人机的三维路径规划提供了系统化的解决方案。


1. 定义动态窗口

动态窗口是速度、加速度和障碍物限制下的速度取值范围。具体定义如下:

  1. 速度限制
    无人机的速度范围由物理性能决定:
    v x , v y , v z ∈ [ v min , v max ] v_x, v_y, v_z \in [v_{\text{min}}, v_{\text{max}}] vx,vy,vz[vmin,vmax]

  2. 加速度限制
    动态窗口进一步受加速度约束,定义为:
    v x , v y , v z ∈ [ v current − a max ⋅ Δ T , v current + a max ⋅ Δ T ] v_x, v_y, v_z \in [v_{\text{current}} - a_{\text{max}} \cdot \Delta T, v_{\text{current}} + a_{\text{max}} \cdot \Delta T] vx,vy,vz[vcurrentamaxΔT,vcurrent+amaxΔT]

  3. 障碍物限制
    为保证安全性,动态窗口中的速度组合需满足障碍物安全距离的限制:
    d min ( v x , v y , v z ) ≥ d safe d_{\text{min}}(v_x, v_y, v_z) \geq d_{\text{safe}} dmin(vx,vy,vz)dsafe


2. 轨迹预测

根据动态窗口内的速度组合,采用无人机的运动学模型预测其未来轨迹。轨迹的计算公式如下:
x k + 1 = x k + v k ⋅ Δ T , y k + 1 = y k + v k ⋅ Δ T , z k + 1 = z k + v z ⋅ Δ T . \begin{aligned} x_{k+1} &= x_k + v_k \cdot \Delta T, \\ y_{k+1} &= y_k + v_k \cdot \Delta T, \\ z_{k+1} &= z_k + v_z \cdot \Delta T. \end{aligned} xk+1yk+1zk+1=xk+vkΔT,=yk+vkΔT,=zk+vzΔT.


3. 轨迹评价

轨迹评价是DWA算法的核心环节,衡量每条轨迹的优劣。本文改进后的评价函数综合考虑了目标距离、障碍物距离和时间效率,具体定义如下:
G ( trajectory ) = α ⋅ goal_score + β ⋅ obstacle_score + γ ⋅ speed_score G(\text{trajectory}) = \alpha \cdot \text{goal\_score} + \beta \cdot \text{obstacle\_score} + \gamma \cdot \text{speed\_score} G(trajectory)=αgoal_score+βobstacle_score+γspeed_score
其中, α , β , γ \alpha, \beta, \gamma α,β,γ 为评价权重,分别反映目标距离、障碍物安全性和速度偏好的重要性。

以下详细介绍三个评分的计算方法。


目标得分(Goal Score)

目标得分衡量轨迹终点与目标点的距离,同时引入理论最优路径以提高评价的物理意义。

  1. 理论最优路径的最远点
    根据无人机的最大速度和时间步长,计算无人机在目标方向上理论上能够达到的最远点:
    reachable_point = start_point + d ⃗ goal ⋅ ( robot.v_max ⋅ robot.dt ) \text{reachable\_point} = \text{start\_point} + \vec{d}_{\text{goal}} \cdot (\text{robot.v\_max} \cdot \text{robot.dt}) reachable_point=start_point+d goal(robot.v_maxrobot.dt)
    其中:

    • start_point \text{start\_point} start_point 为轨迹的起点;
    • d ⃗ goal \vec{d}_{\text{goal}} d goal 是起点到目标点的单位方向向量。
  2. 轨迹终点与目标点的距离
    计算轨迹终点与目标点的欧几里得距离:
    goal_distance = ∥ trajectory [ − 1 ] − goal ∥ \text{goal\_distance} = \|\text{trajectory}[-1] - \text{goal}\| goal_distance=trajectory[1]goal

  3. 最小目标距离
    理论最优路径的最小目标距离为最远点与目标点的距离:
    min_goal_distance = ∥ reachable_point − goal ∥ \text{min\_goal\_distance} = \|\text{reachable\_point} - \text{goal}\| min_goal_distance=reachable_pointgoal

  4. 归一化目标得分
    根据实际目标距离与理论最优距离计算得分:
    goal_score = min_goal_distance goal_distance + ϵ \text{goal\_score} = \frac{\text{min\_goal\_distance}}{\text{goal\_distance} + \epsilon} goal_score=goal_distance+ϵmin_goal_distance


障碍物得分(Obstacle Score)

障碍物得分反映轨迹点与障碍物之间的距离,定义为:

  1. 遍历轨迹点和障碍物
    对轨迹中每个点,计算其到所有障碍物的最小距离:
    d t i = { ∥ p t − o i ∥ − r , 球形障碍物 max ⁡ ( 0 , ∥ p t x y − o i x y ∥ − r ) , 圆柱形障碍物(满足高度条件) ∞ , 未知类型或超出高度范围 d_t^i = \begin{cases} \|\mathbf{p}_t - \mathbf{o}_i\| - r, & \text{球形障碍物} \\ \max\left(0, \|\mathbf{p}_t^{xy} - \mathbf{o}_i^{xy}\| - r \right), & \text{圆柱形障碍物(满足高度条件)} \\ \infty, & \text{未知类型或超出高度范围} \end{cases} dti= ptoir,max(0,ptxyoixyr),,球形障碍物圆柱形障碍物(满足高度条件)未知类型或超出高度范围

  2. 根据距离定义得分
    根据最小距离与安全距离的关系,障碍物得分定义为:
    obstacle_score = { min_obstacle_distance , 若min_obstacle_distance < 0 min_obstacle_distance safe_distance , 若 0 ≤ min_obstacle_distance < safe_distance 1.0 , 若min_obstacle_distance ≥ safe_distance \text{obstacle\_score} = \begin{cases} \text{min\_obstacle\_distance}, & \text{若} \text{min\_obstacle\_distance} < 0 \\ \frac{\text{min\_obstacle\_distance}}{\text{safe\_distance}}, & \text{若} 0 \leq \text{min\_obstacle\_distance} < \text{safe\_distance} \\ 1.0, & \text{若} \text{min\_obstacle\_distance} \geq \text{safe\_distance} \end{cases} obstacle_score= min_obstacle_distance,safe_distancemin_obstacle_distance,1.0,min_obstacle_distance<00min_obstacle_distance<safe_distancemin_obstacle_distancesafe_distance


速度得分(Speed Score)

速度得分衡量轨迹的时间效率,定义如下:

  1. 计算平均速度
    平均速度为轨迹总距离与总时间的比值:
    average_speed = total_distance total_time \text{average\_speed} = \frac{\text{total\_distance}}{\text{total\_time}} average_speed=total_timetotal_distance

  2. 归一化速度得分
    将平均速度裁剪到无人机的速度范围 [ v_min , v_max ] [\text{v\_min}, \text{v\_max}] [v_min,v_max],并归一化:
    speed_score = average_speed − v_min v_max − v_min \text{speed\_score} = \frac{\text{average\_speed} - \text{v\_min}}{\text{v\_max} - \text{v\_min}} speed_score=v_maxv_minaverage_speedv_min


4. 选择最优轨迹

通过计算所有轨迹的综合得分,选择得分最高的轨迹作为下一步的运动指令。


改进优势

  1. 目标导向性增强
    引入理论最优路径,使轨迹评价更符合物理实际,激励无人机选择最短时间路径。

  2. 障碍物规避优化
    精确考虑障碍物的三维结构和安全距离要求,有效提高避障能力。

  3. 时间效率提升
    通过速度评分综合考虑轨迹的时间效率,确保无人机的运动规划高效可靠。


总结

本文提出了一种改进的动态窗口法算法,适用于三维复杂环境中的无人机实时路径规划。该算法通过目标得分、障碍物得分和速度得分的综合评价,显著提升了路径规划的可靠性和安全性。未来,可结合机器学习技术进一步优化轨迹评价函数,提高算法的鲁棒性和自适应能力,为无人机和机器人路径规划提供更广泛的应用支持。

一般障碍物的距离公式推导

在三维路径规划中,无人机可能面临多种类型的障碍物,如球形、圆柱形、或其他复杂形状。为了统一对这些障碍物的距离计算,这里推导一种通用形式的障碍物距离公式,将特定类型的障碍物转化为统一的数学表达。


1. 定义与假设

假设:

  • 无人机当前轨迹点 p t = ( x t , y t , z t ) \mathbf{p}_t = (x_t, y_t, z_t) pt=(xt,yt,zt)
  • 障碍物的中心或基点为 o i = ( x i , y i , z i ) \mathbf{o}_i = (x_i, y_i, z_i) oi=(xi,yi,zi)
  • 障碍物的形状由其类型(如球体、圆柱体等)和参数(如半径 r r r 和高度 h h h)描述。

目标:

  • 计算任意轨迹点 p t \mathbf{p}_t pt 到障碍物的最小安全距离 d t i d_t^i dti

2. 一般公式定义

设障碍物的表面满足隐函数 f ( p t , o i ) = 0 f(\mathbf{p}_t, \mathbf{o}_i) = 0 f(pt,oi)=0,则轨迹点 p t \mathbf{p}_t pt 到障碍物的距离 d t i d_t^i dti 定义为:
d t i = min ⁡ q ∈ S ∥ p t − q ∥ d_t^i = \min_{\mathbf{q} \in S} \|\mathbf{p}_t - \mathbf{q}\| dti=qSminptq
其中:

  • S S S 是障碍物的表面,由 f ( q , o i ) = 0 f(\mathbf{q}, \mathbf{o}_i) = 0 f(q,oi)=0 描述;
  • q \mathbf{q} q 是障碍物表面上的点。

该公式的几何意义是轨迹点 p t \mathbf{p}_t pt 到障碍物表面 S S S 的最小距离。


3. 特定类型障碍物的距离公式
(1) 球形障碍物

球形障碍物的中心为 o i \mathbf{o}_i oi,半径为 r r r。其表面方程为:
f ( q , o i ) = ∥ q − o i ∥ − r = 0 f(\mathbf{q}, \mathbf{o}_i) = \|\mathbf{q} - \mathbf{o}_i\| - r = 0 f(q,oi)=qoir=0
因此,轨迹点 p t \mathbf{p}_t pt 到球形障碍物的最小距离为:
d t i = ∥ p t − o i ∥ − r d_t^i = \|\mathbf{p}_t - \mathbf{o}_i\| - r dti=ptoir


(2) 圆柱形障碍物

圆柱形障碍物以 o i = ( x i , y i , z i ) \mathbf{o}_i = (x_i, y_i, z_i) oi=(xi,yi,zi) 为底面中心,半径为 r r r,高度为 h h h。其表面包括以下部分:

  1. 侧面:满足水平距离为 r r r
    f side ( q , o i ) = ∥ q x y − o i x y ∥ − r = 0 f_{\text{side}}(\mathbf{q}, \mathbf{o}_i) = \|\mathbf{q}^{xy} - \mathbf{o}_i^{xy}\| - r = 0 fside(q,oi)=qxyoixyr=0
    其中 q x y = ( x q , y q ) \mathbf{q}^{xy} = (x_q, y_q) qxy=(xq,yq) 表示点在水平面的投影。

  2. 底面顶面:满足高度范围约束 z i ≤ z q ≤ z i + h z_i \leq z_q \leq z_i + h zizqzi+h

轨迹点 p t \mathbf{p}_t pt 到圆柱形障碍物的最小距离分以下几种情况:

  • 若点在圆柱高度范围内,则距离为:
    d t i = ∥ p t x y − o i x y ∥ − r d_t^i = \|\mathbf{p}_t^{xy} - \mathbf{o}_i^{xy}\| - r dti=ptxyoixyr
  • 若点高于或低于圆柱范围,则需计算到顶面或底面的最短距离:
    d t i = ( ∥ p t x y − o i x y ∥ − r ) 2 + Δ z 2 d_t^i = \sqrt{(\|\mathbf{p}_t^{xy} - \mathbf{o}_i^{xy}\| - r)^2 + \Delta z^2} dti=(ptxyoixyr)2+Δz2
    其中 Δ z = min ⁡ ( ∣ z t − z i ∣ , ∣ z t − ( z i + h ) ∣ ) \Delta z = \min(|z_t - z_i|, |z_t - (z_i + h)|) Δz=min(ztzi,zt(zi+h))

(3) 其他复杂障碍物

对于复杂障碍物,其表面通常由隐式函数 f ( q , o i ) = 0 f(\mathbf{q}, \mathbf{o}_i) = 0 f(q,oi)=0 描述。轨迹点到障碍物的距离可以通过最小化求解问题计算:
d t i = min ⁡ q ∈ S ∥ p t − q ∥ d_t^i = \min_{\mathbf{q} \in S} \|\mathbf{p}_t - \mathbf{q}\| dti=qSminptq
这里可以采用数值优化方法(如梯度下降法或基于凸优化的方法)来求解。


4. 通用距离公式

将以上特例整合,通用障碍物距离公式可表达为:
d t i = { ∥ p t − o i ∥ − r , 球形障碍物 max ⁡ ( 0 , ∥ p t x y − o i x y ∥ − r ) + Δ z , 圆柱形障碍物 min ⁡ q ∈ S ∥ p t − q ∥ , 其他障碍物 d_t^i = \begin{cases} \|\mathbf{p}_t - \mathbf{o}_i\| - r, & \text{球形障碍物} \\ \max\left(0, \|\mathbf{p}_t^{xy} - \mathbf{o}_i^{xy}\| - r \right) + \Delta z, & \text{圆柱形障碍物} \\ \min_{\mathbf{q} \in S} \|\mathbf{p}_t - \mathbf{q}\|, & \text{其他障碍物} \end{cases} dti= ptoir,max(0,ptxyoixyr)+Δz,minqSptq,球形障碍物圆柱形障碍物其他障碍物
其中, Δ z \Delta z Δz 表示轨迹点到圆柱体底面或顶面的高度差,具体为:
Δ z = { 0 , z i ≤ z t ≤ z i + h min ⁡ ( ∣ z t − z i ∣ , ∣ z t − ( z i + h ) ∣ ) , 否则 \Delta z = \begin{cases} 0, & z_i \leq z_t \leq z_i + h \\ \min(|z_t - z_i|, |z_t - (z_i + h)|), & \text{否则} \end{cases} Δz={0,min(ztzi,zt(zi+h)),ziztzi+h否则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值