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

50 lines
4.2 KiB
Plaintext
Raw Normal View History

2020-06-27 09:58:58 -07:00
B
2020-06-30 15:49:14 -07:00
L¹û^ë
2020-06-27 09:58:58 -07:00
ã@ddlZddlZddZddZddZdd „Zd
2020-06-30 15:49:14 -07:00
d Zd d
2020-06-27 17:16:40 -07:00
ZddZ ddZ
2020-06-27 09:58:58 -07:00
ddZ ddZ d ddZ
2020-06-29 20:46:59 -07:00
ddZddZd!ddZedkr˜ddlmZdS)"éNcCs<|d|d|d|d|d|dg}t ||g¡S)Nréé)ÚnpÚarray)Údirec©r úƒ/home/alex/Desktop/github/path-planning-algorithms/Search-based Planning/Search_3D/../../Search-based Planning/Search_3D/utils3D.pyÚgetRays.r c CsJg}x@|D]8}| t t |ddd¡t |ddd¡g¡¡q
W|S)Nréé)ÚappendrrÚadd)ÚblocksÚAABBÚir r r
2020-06-27 09:58:58 -07:00
ÚgetAABBs
2020-06-29 20:46:59 -07:00
8rcCsDt t|d|dd|d|dd|d|ddgƒ¡S)Nrrr)rÚsqrtÚsum)Úpos1Úpos2r r r
ÚgetDistsrcCs>tt|d|dƒt|d|dƒt|d|dƒgƒS)Nrrr)rÚabs)rrr r r
Ú
getManDistsrcCsBd\}}x4| ¡D](}t|ƒ}t||ƒ}||kr||}}qW|S)z!get the nearest point on the grid)N)ÚkeysÚdehashr)ÚSpaceÚptZmindisZminptZstrptsÚptsÚdisr r r
Ú
getNearests
2020-06-27 09:58:58 -07:00
r!cCs2i}x(| ¡D]}tt|t|ƒƒƒ||<qW|S)zMax norm distance)rÚmaxrr)rÚkr r r
2020-06-29 20:46:59 -07:00
Ú Heuristicsr&cCs,t|dƒdt|dƒdt|dƒS)Nrú rr)Ústr)rr r r
Úhash3D%sr)cCst dd| d¡Dƒ¡S)NcSsg|] }t|ƒqSr )Úfloat)Ú.0rr r r
ú
<listcomp>)szdehash.<locals>.<listcomp>r')rrÚsplit)rr r r
2020-06-27 09:58:58 -07:00
r(srcCst|d|dkr |dkrpnnL|d|dkrD|dkrpnn(|d|dkrh|dkrpnndSdS) Nrr réréTFr )rrr r r
Ú isinbound+slr0cCs"t|dd|ƒ|dkrdSdS)Nrr TF)r)rrr r r
Úisinball0sr1cCs
|jj}|jj}|d|||d||}}|d|||d||}}|d|||d||}} t |||¡ t¡}
t |||¡ t¡} t || |¡ t¡} t |
2020-06-29 20:46:59 -07:00
| | ¡}
t |
dt |
2020-06-27 09:58:58 -07:00
ƒt | ƒt | ƒg¡}i}x|j
2020-06-29 20:46:59 -07:00
D]}tj |t |ƒ<qðW|S)z|This function is used to get nodes and discretize the space.
2020-06-27 22:16:12 -07:00
State space is by x*y*z,3 where each 3 is a point in 3D.rr rr.rr/)
ÚenvÚboundaryÚ
resolutionrÚarangeÚastyper*ÚmeshgridÚreshapeÚlenÚinfr))Ú
2020-06-29 20:46:59 -07:00
initparamsÚfactorr3r4ÚxminÚxmaxÚyminÚymaxÚzminÚzmaxÚxarrZyarrZzarrÚVZVVrÚvr r r
Ú
2020-06-27 09:58:58 -07:00
StateSpace5s"""$ rGc
2020-06-29 20:46:59 -07:00
|jj}t tttjˆt ||¡ƒƒ¡}tˆ|ƒt ˆ|ƒ}}t
2020-06-27 22:16:12 -07:00
|jj |ƒsTd|fSx>|j D]4}t
2020-06-29 20:46:59 -07:00
j ||¡}|dk r\t ˆ|ƒ} | |kr\d|fSq\Wx^|jjD]R}t||ƒr´d|fSt
j ||¡}|gkrž‡fdd|Dƒ}
t|
|kƒržd|fSqžWd|fS)zsee if line intersects obstacleTNcsg|]}tˆ|ƒqSr )r)r+Új)rr r
r,YszisCollide.<locals>.<listcomp>F)r2r4rrÚlistÚmaprÚmultiplyr rr0r3rÚpyrrZgeometric_testsZray_intersect_aabbÚballsr1Zray_intersect_sphereÚall) r<rrr4ÚchildZrayÚdistrZshotZ dist_wallZ
dists_ballr )rr
Ú isCollideGs(  
 
  rQcCsDx|jjD]}t||ƒr
2020-06-27 22:16:12 -07:00
dSq
2020-06-29 20:46:59 -07:00
Wx|jjD]}t||ƒr*dSq*WdS)NFT)r2rr0rMr1)r<rrr r r
Ú obstacleFree^s