function iscol = iscollision1(Qnear,Qnew,Pvec,map) iscol = false; step = 1; for n = 0:step p = Qnear + n*Pvec; if unfeasible(p,map) iscol = true; break; end end if unfeasible(Qnew,map) iscol = true; end end
时间: 2024-02-14 17:08:28 浏览: 52
这段代码也是RRT算法的一部分,作用是检测从新节点Qnew到树中已有节点的路径上是否与障碍物相交。具体来说,iscollision1函数输入参数包括:Qnear表示已有节点,Qnew表示新节点,Pvec表示从已有节点到新节点的向量,map表示地图信息。首先将iscol变量初始化为false,表示当前路径不与障碍物相交。然后,从Qnear到Qnew的路径上按照固定步长(step)逐个计算线段端点p,判断线段是否与障碍物相交。具体来说,unfeasible函数用于检测当前点p是否在障碍物内部,如果在,则说明当前路径与障碍物相交,将iscol变量置为true,并跳出循环。最后,再检测新节点Qnew是否在障碍物内部,如果是,则同样将iscol变量置为true。
相关问题
function iscol = iscollision2(this_p,Qnew,dist,map) iscol = false; Pvec = [Qnew(1) - this_p(1), Qnew(2) - this_p(2)]; Pvec = Pvec/norm(Pvec); for n = 0:dist p = this_p + n*Pvec; if unfeasible(p,map) iscol = true; end end end
这段代码也是RRT算法的一部分,作用是检测从新节点Qnew到当前节点this_p的路径上是否与障碍物相交。具体来说,输入参数包括:this_p表示当前节点,Qnew表示新节点,dist表示当前节点到新节点的距离,map表示地图信息。首先将iscol变量初始化为false,表示当前路径不与障碍物相交。然后,计算从当前节点this_p到新节点Qnew的方向向量Pvec,并将其归一化。接着,从当前节点this_p到新节点Qnew的路径上按照固定步长(dist)逐个计算线段端点p,判断线段是否与障碍物相交。具体来说,unfeasible函数用于检测当前点p是否在障碍物内部,如果在,则说明当前路径与障碍物相交,将iscol变量置为true。最后,返回iscol变量表示是否与障碍物相交。
Pvec = [Prand(1) - Qnear(1),Prand(2) - Qnear(2)]; Pvec = Pvec/norm(Pvec); Qnew = Qnear+step*Pvec; tmp_cost = T.v(minInd).cost + step;
这段代码也是RRT算法的一部分,它的作用是生成新节点。具体来说,先计算从树中已有节点Qnear到随机生成的点Prand的向量Pvec,并将其归一化,得到一个单位向量。然后,以Qnear为起点,沿着Pvec方向前进一定距离step,得到新的节点Qnew。最后,计算从起点到Qnew的路径代价tmp_cost,用于之后的路径选择。
阅读全文