Files
PathPlanning/Search-based Planning/Search_3D/__pycache__/utils3D.cpython-37.pyc
T

90 lines
5.4 KiB
Plaintext
Raw Normal View History

2020-06-27 09:58:58 -07:00
B
2020-07-09 03:01:40 -07:00
_,ã@ddlZddlZddlmZddZddZddZd d
Zd d Z d
dZ
ddZ ddZ ddZ
ddZd)ddZddZddZddZdd „Zd*d!d"„Zd#d$„Zed%krÔd&d'd(d(gZedddgd(d(d(geƒdS)+éN)Ú defaultdictcCs<|d|d|d|d|d|dg}t ||g¡S)Nréé)ÚnpÚarray)Údirec©r
ú‡c:\Users\39131\Desktop\github\path-planning-algorithms\Search-based Planning\Search_3D/../../Search-based Planning\Search_3D\utils3D.pyÚgetRays.r cCsDt t|d|dd|d|dd|d|ddgƒ¡S)Nrrr)rÚsqrtÚsum)Úpos1Úpos2r
r
r ÚgetDist srcCs>tt|d|dƒt|d|dƒt|d|dƒgƒS)Nrrr)rÚabs)rrr
r
r Ú
getManDist srcCs6d\}}x(|D] }t||ƒ}||kr||}}qW|S)z!get the nearest point on the grid)N)r)ÚSpaceÚptZmindisZminptÚptsÚdisr
r
2020-07-09 00:46:50 -07:00
r Ú
2020-07-09 03:01:40 -07:00
getNearests 

rc
CsZi}xP| ¡D]D}ttt |d|d|d|d|d|dg¡ƒƒ||<qW|S)zMax norm distancerrr)ÚkeysÚmaxrrr)rÚkr
r
r Ú HeuristicsDrcCs,t|dƒdt|dƒdt|dƒS)Nrú rr)Ústr)rr
r
r Úhash3Dsr!cCst dd| d¡Dƒ¡S)NcSsg|] }t|ƒqSr
)Úfloat)Ú.0Úir
r
r ú
<listcomp>#szdehash.<locals>.<listcomp>r)rrÚsplit)rr
r
r Údehash"sr'cCst|d|dkr |dkrpnnL|d|dkrD|dkrpnn(|d|dkrh|dkrpnndSdS) NréréréTFr
)r$rr
r
r Ú isinbound%slr+cCs"t|dd|ƒ|dkrdSdS)Nrr(TF)r)r$rr
r
r Úisinball*sr,c Cs`|dd|d}}|d|d|d|d|d|dg}|d|d|d|d|d|dg}d|d|d|d|d|d|d|d|d|d|d|d|d}|dkr"|d|d|d|d|d|d|dkr\dSn:|dkrš|d|d|d|d|d|dg}|d|d|d|d|d|d|dkr\dSnÂd|kr²dkr\nn¦|d||d|d||d|d||dg} |d| d|d| d|d| dg}
|
d|
d|
d|
d|
d|
d|dkr\dSdS)Nrr(éÿÿÿÿrrTFr
) Úp0Úp1ZballÚlineÚd1rÚd2rrr
r
r Ú
lineSphere/s"..d
2020-07-08 23:53:27 -07:00
:
2020-07-09 03:01:40 -07:00
.::.:r5cC|j}|j}|d|||d||}}|d|||d||}}|d|||d||}} t |||¡ t¡}
t |||¡ t¡} t || |¡ t¡} tƒ}
x8|
D]0}x*| D]"}x| D]}|
 |||f¡qÎWqÄWqºW|
2020-07-08 23:53:27 -07:00
S)Nrr(rr)rr*)ÚboundaryÚ
resolutionrÚarangeÚastyper"ÚsetÚadd)ÚenvÚfactorr6r7ÚxminÚxmaxÚyminÚymaxÚzminÚzmaxÚxarrZyarrZzarrrrrÚzr
2020-07-09 03:01:40 -07:00
r
r Ú
StateSpaceAs"""


2020-07-08 23:53:27 -07:00
rFcCs*i}t|jƒ}x|D]}tj||<qW|S)z|This function is used to get nodes and discretize the space.
State space is by x*y*z,3 where each 3 is a point in 3D.)rFr<rÚinf)Ú
2020-07-09 03:01:40 -07:00
initparamsÚgrÚvr
r
r Úg_SpaceQs

2020-06-27 22:16:12 -07:00

2020-07-09 03:01:40 -07:00
rKcCt||ƒt||ƒ}}t|jj|ƒs,d|fSx@|jjD]4}tj ||¡}|dk r6t||ƒ}||kr6d|fSq6Wx6|jj D]*}t
||ƒrŽd|fSt |||ƒrxd|fSqxWd|fS)zsee if line intersects obstacleTNF) r rr+r<r6ÚAABBÚpyrrZgeometric_testsZray_intersect_aabbÚballsr,r5)rHrÚchildZrayÚdistr$ZshotZ dist_wallr
r
r Ú isCollideZs
2020-06-29 20:46:59 -07:00
 
2020-07-09 03:01:40 -07:00
 rQc CsRg}|jj}x@|jD]6}tttj|t ||¡ƒƒ}t|jj |ƒr| 
|¡qW|S)N) r<r7ÚAlldirecÚtupleÚmaprr;Úmultiplyr+r6Úappend)rHrÚallchildr7r rOr
r
2020-06-29 20:46:59 -07:00
r Úchildrenps rXcCsDx|jjD]}t||ƒr
2020-07-09 03:01:40 -07:00
dSq
Wx|jjD]}t||ƒr*dSq*WdS)NFT)r<Úblocksr+rNr,)rHrr$r
r
r Ú obstacleFreezs

rZcCsFt|||ƒ\}}|dkr&|r"tjS|S|dkrB|r8tjSt||ƒSdS)Nrr)rQrrGr)rHr$ÚjZsettingsZcolliderPr
r
r Úcostƒsr\cCsLtddƒ}x:|jD]0}t||ƒ}x |D]}t|||ƒ|||<q(WqW|S)NcSsttƒS)N)rÚdictr
r
r
r Ú<lambda>Žózinitcost.<locals>.<lambda>)rÚXrXr\)rHr0ÚxiZcdrenrOr
r
r ÚinitcostŒs   

rbÚ__main__é
g@r)r)r)ÚnumpyrrMÚ collectionsrr rrrrr!r'r+r,r5rFrKrQrXrZr\rbÚ__name__Úar
r