|
Algorithm 1. DV-RRT Algorithm |
Get near point qNG and far point qFG from perception module.
Ta .init (qstart), Tb .init (qNG);
Repeat
qrand1 ← Get Random Sample 1 (Ta); qrand2 ← Get Random Sample 2 (Tb).
qnear1 ← Effective_Nearest (Ta, qrand1); qnear2 ← Effective_Nearest (Tb, qrand2);
qnew1 ← Extend (Ta, qrand1, qnear1); xnew2← Extend (Tb, qrand2, qnear2);
if Collision Free (qnew1, qnear1) then
Ta .Add_Node (qnew1); Ta .Add_Edge (qnew1, qnear1);
end if
if Collision Free (qnew2, qnear2) then
Tb .Add_Node (qnew2); Tb .Add_Edge (qnew2, qnear2);
end if
Until find a collision-free path from qstart to qNG, and from qNG to qFG;
T ← Connect (Ta, Tb);
Return
S ← Post-processing (T);
Fuction Effective_Nearest (T, qrand)
Cmax ← −∞
for all qi in T
C ← C (qi, qrand) = w1 · dis (qi , qrand) + w2 · head (qi, qrand);
if
C > Cmax
Cmax ← C; qnear ← qi;
end if
end for
Return qnear
|