基于时间的碰撞检测,(速度再快都能检测得到)

什么是基于时间的碰撞检测?

   首先,了解一下,什么是基于帧的碰撞检测。基于帧的碰撞检测,就是说检测只在每一帧执行。但是不检测相邻帧之间的情况。因此,适合与,运动速度不快的物体的碰撞检测。

   而基于时间的碰撞检测,考虑就要全面些。不管速度再大,也能检测得到。

   以圆与圆的碰撞检测为例。

    
  1. 圆1:

    x1 = xl1+xmov1*t
    y1 = yl1+ymov1*t
    

    圆2:

    x2 = xl2+xmov2*t
    y2 = yl2+ymov2*t
    

    变量 xl1, yl1, xl2,  yl2 表示两个圆在上一帧的位置情况。 t表示,从上一帧开始计时的时间,以帧为单位。

  2. 两圆之间的距离:

     

  1. 如果发生碰撞的话,那么就有一下等式:

 

将x1,y1,x2,y2,带入上面的式子。就可以解出t。
如果解出t,  有0<t<=1。那就说明,在上一帧与下一帧之间发生了碰撞。因为t的单位是帧。
t=2,说明要经过两帧才发生碰撞。就是这个意思。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、概述 在机器人导航领域,路径规划是一个非常重要的问题。局部路径规划是其中的一个重要环节。在机器人运动过程中,由于各种原因,如传感器误差、环境变化等,导致机器人原有的路径不再可行或者不再最优,需要重新规划一条新的路径。局部路径规划就是在机器人当前位置和目标点之间的相对短距离范围内,通过合适的算法寻找一条安全、高效的路径。 局部路径规划算法有很多种,本文将介绍一种基于梯度下降的DWA局部路径规划算法。 二、DWA算法的基本思想 DWA(Dynamic Window Approach)算法是一种常用的局部路径规划算法。其基本思想是通过机器人的运动模型和环境信息,计算出机器人在当前位置可以采取的一组速度指令,并对这组速度指令进行评估和选择,最终得到最优的速度指令,从而实现机器人的局部路径规划。 DWA算法主要分为以下几个步骤: 1. 获取机器人在当前位置的状态信息,包括机器人的位置、朝向、速度等信息; 2. 计算机器人可以采取的一组速度指令,称为速度窗口(Velocity Window)。速度窗口是一个速度空间的子集,包括所有符合机器人运动模型和动力学限制的速度指令。速度窗口的大小和位置会随着机器人的运动状态而变化; 3. 根据速度窗口中的速度指令,计算每个速度指令对应的代价函数,并选择代价函数最小的速度指令作为机器人的下一步运动指令; 4. 根据选择的速度指令,计算机器人的运动轨迹,并将其与环境信息进行碰撞检测,确定是否存在碰撞风险; 5. 如果存在碰撞风险,则重新计算速度窗口并返回步骤3;否则,机器人按照选择的速度指令进行运动。 下面将详细介绍DWA算法中各个步骤的具体实现。 三、DWA算法的实现过程 1. 获取机器人在当前位置的状态信息 机器人在运动过程中的状态信息包括位置(x,y),方向(θ),速度(v)和角速度(ω)等,可以通过机器人的传感器获取到。在DWA算法中,我们需要将机器人的状态信息转换为一个状态向量。 状态向量的定义如下: x = [x, y, θ, v, ω] 其中,x和y表示机器人在地图上的坐标,θ表示机器人当前的朝向,v表示机器人的线速度,ω表示机器人的角速度。 2. 计算速度窗口 速度窗口是机器人可以采取的一组速度指令。在DWA算法中,速度窗口的大小和位置会随着机器人的运动状态而变化。具体地,速度窗口的大小取决于机器人当前的速度和角速度速度窗口的位置取决于机器人当前的位置和朝向。 速度窗口的计算过程如下: a. 根据机器人当前的速度和角速度,计算机器人下一时刻的位置和朝向; b. 根据机器人的运动模型和动力学限制,计算机器人可以采取的所有速度指令; c. 对所有速度指令进行评估,筛选出符合条件的速度指令,并将它们放到速度窗口中。 在计算速度窗口时,我们需要考虑机器人的速度和加速度的限制。具体地,对于每个速度指令,我们需要计算机器人在下一时刻的位置和朝向,并判断这个位置和朝向是否符合机器人的运动模型和动力学限制。 对于机器人的运动模型,我们可以采用如下的运动方程: x' = x + v * cos(θ) * Δt y' = y + v * sin(θ) * Δt θ' = θ + ω * Δt 其中,x'和y'表示机器人在下一时刻的位置,θ'表示机器人在下一时刻的朝向,v表示机器人的线速度,ω表示机器人的角速度,Δt表示时间间隔。 对于机器人的动力学限制,我们可以采用如下的约束条件: v_min <= v <= v_max -ω_max <= ω <= ω_max 其中,v_min和v_max分别表示机器人的最小和最大线速度,ω_max表示机器人的最大角速度。 在实际计算中,我们可以将速度空间离散化,然后对每个速度指令计算它在下一时刻的位置和朝向,并判断是否符合运动模型和动力学限制。符合条件的速度指令就可以放到速度窗口中。 3. 计算代价函数 在DWA算法中,代价函数用于评估速度窗口中每个速度指令的优劣。代价函数通常包括两个部分:目标函数和碰撞函数。 目标函数用于评估机器人运动的优劣,具体地,它衡量机器人运动到目标点的距离和朝向误差。目标函数的定义如下: J_goal = α * dist + β * angle 其中,dist表示机器人当前位置到目标点的距离,angle表示机器人当前朝向与目标点之间的夹角。α和β是权重系数,用于平衡距离和朝向误差的影响。 碰撞函数用于评估机器人运动过程中是否存在碰撞风险。具体地,它衡量机器人在速度指令下行驶的路径是否与障碍物相交。碰撞函数的定义如下: J_collision = γ * max(0, min(d_min - d_obs, d_max)) 其中,d_min表示机器人的安全距离,d_obs表示机器人运动路径上的最近障碍物距离,d_max表示机器人可以接受的最小安全距离。γ是权重系数,用于平衡目标函数和碰撞函数的影响。 4. 选择速度指令 根据代价函数的评估结果,我们可以选择一个最优的速度指令作为机器人的下一步运动指令。具体地,我们可以采用梯度下降法对代价函数进行优化,从而得到代价函数最小的速度指令。 梯度下降法是一种常用的优化方法,它通过迭代更新参数来最小化代价函数。具体地,对于代价函数J(x),我们可以通过如下的迭代公式更新速度指令x: x = x - η * ∇J(x) 其中,η是学习率,∇J(x)是代价函数J(x)关于x的梯度。 在DWA算法中,我们可以将速度指令x看作状态变量,将代价函数J(x)看作目标函数,然后应用梯度下降法来选择速度指令。 5. 碰撞检测 当机器人选择了一个速度指令后,我们需要计算机器人的运动轨迹,并将其与环境信息进行碰撞检测,确定是否存在碰撞风险。如果存在碰撞风险,则重新计算速度窗口并返回步骤3;否则,机器人按照选择的速度指令进行运动。 在碰撞检测过程中,我们需要考虑机器人的形状和障碍物的形状。具体地,我们可以将机器人和障碍物都看作是一些几何图形,如圆形、矩形等,然后计算机器人的运动轨迹是否与障碍物相交。如果存在相交,则说明机器人的运动路径存在碰撞风险。 四、DWA算法的优缺点 DWA算法是一种常用的局部路径规划算法,具有以下优点: 1. 算法实现简单,易于理解和调试。 2. 能够考虑机器人的运动模型和动力学限制,使得机器人的运动更加平滑和稳定。 3. 能够根据环境信息动态调整速度窗口,适应不同的环境。 4. 能够通过梯度下降法选择最优的速度指令,提高机器人的运动效率。 然而,DWA算法也存在一些缺点: 1. 由于DWA算法是一种基于局部搜索的算法,它的搜索空间受限于速度窗口的大小和位置,无法保证找到全局最优解。 2. DWA算法的速度窗口大小和位置对算法的性能有很大的影响。一些参数的选择可能会导致算法的效果不佳。 3. DWA算法无法处理复杂的环境或者目标点在障碍物后方的情况。 五、总结 本文介绍了一种基于梯度下降的DWA局部路径规划算法。DWA算法通过机器人的运动模型和环境信息计算出机器人可以采取的一组速度指令,并根据代价函数评估这些速度指令的优劣,从而选择最优的速度指令,实现机器人的局部路径规划。虽然DWA算法存在一些缺点,但它仍然是一种常用的路径规划算法,值得进一步研究和改进。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值