Files
PathPlanning/Sampling-based Planning/rrt_3D/__pycache__/utils3D.cpython-37.pyc
T

66 lines
7.0 KiB
Plaintext
Raw Normal View History

2020-06-23 19:37:10 -07:00
B
2020-06-24 13:58:07 -07:00
¨°ó^.ã@s2ddlZddlmZddlZddlmZddlm Z ddl
2020-06-23 19:37:10 -07:00
m Z ddlm Z
2020-06-24 13:58:07 -07:00
ddZddZd d
2020-06-23 19:37:10 -07:00
Zd d Zd
dZddZddZddZddZddZddZddZgdfddZGdd „d eƒZed!kr.e d"d#d$g¡Ze d%d&d'g¡Z eƒZ!e! "ee g¡e#e! ƒe! %ee g¡e#e! ƒdS)(éN)Úrepmat)ÚAxes3D)ÚPoly3DCollectioncCs<|d|d|d|d|d|dg}t ||g¡S)Nréé)ÚnpÚarray)Údirec©r úš/home/alex/Desktop/Github/path-planning-algorithms/path-planning-algorithms/Sampling-based Planning/rrt_3D/../../Sampling-based Planning/rrt_3D/utils3D.pyÚgetRay s.rc CsJg}x@|D]8}| t t |ddd¡t |ddd¡g¡¡q
W|S)Nréé)ÚappendrrÚadd)ÚblocksZAABBÚir r r
ÚgetAABBs
8rcCsDt t|d|dd|d|dd|d|ddgƒ¡S)Nrrr)rÚsqrtÚsum)Zpos1Zpos2r r r
ÚgetDistsrc Ctjdddgdddgdddgdddgdddgdddgdddgdddggdd}t ddddgddddgdd d
dgd ddd
gdddd gdddd
gg¡}|jd}|d d d df|d d d d …f}t d |d f¡}tjd|dfd
d}xpt|ƒD]d}|||||d d …f||d |dd d d f<||d ||d|ddd d f<qøWt|ƒtkr~| ||¡n"t||dddd} | | ¡}
|
Sd S)zI
2020-06-24 13:58:07 -07:00
Subroutine used by draw_map() to display the environment blocks
rrÚfloat)ÚdtypeéérrréÚint64g333333Ã?Úk)ÚalphaZ
linewidthsZ
edgecolors) rrÚshapeÚzerosÚrangeÚtyperZ set_vertsZadd_collection3d) ÚaxrÚdZvlZflr ZpcÚhr r r
Údraw_block_listsFF
2020-06-23 19:37:10 -07:00
(8,
r,cCs`tj |jjdd|jjdd¡}tj ¡}t||ƒrBt|ƒS|dkrR|jjSt |¡SdS)zbiased samplingrrrgš™™™™™©?N) rÚrandomÚuniformÚenvÚboundaryÚisinsideÚ
sampleFreeÚgoalr)Ú
initparamsr rr r r
r2Bs&

2020-06-24 13:58:07 -07:00
r2cCs†x€|jjD]t}|d|dkr.|dkr
nq
2020-06-23 19:37:10 -07:00
|d|dkrR|dkr
nq
2020-06-24 13:58:07 -07:00
|d|dkrv|dkr
2020-06-23 19:37:10 -07:00
nq
2020-06-24 13:58:07 -07:00
dSq
WdS) zsee if inside obstaclerrrrrrTF)r/r)r4r rr r r
r1Nslr1cCsZt||ƒ}t||ƒ}x@t|jjƒD]0}tj ||¡}|dk r"t||ƒ}||kr"dSq"WdS)zsee if line intersects obstacleNTF)rrrr/rÚpyrrÚgeometric_testsÚray_intersect_aabb)r4r r
2020-06-23 19:37:10 -07:00
ÚrayÚdistrZshotZ dist_wallr r r
2020-06-24 13:58:07 -07:00
Ú isCollideVs


r:cCsTt |j¡}|jdkr |jdSt|t|ƒdƒ}tjj||dd}|jt |¡S)Nrr)Úaxis) rrÚVrrÚlenÚlinalgÚnormÚargmin)r4r r<ÚxrZdistsr r r
Únearestcs  

rBcCs*||tj ||¡}||j|}|S)N)rr>r?Ústepsize)r4r r
r Úxnewr r r
2020-06-23 19:37:10 -07:00
ÚsteerlsrEcCs`|j}t |j¡}|jdkr&|jdSt|t|ƒdƒ}tjj||dd|k}||}t |¡S)Nrr)r;) rCrrr<rrr=r>r?)r4r Úrr<rAZinsideZ
2020-06-24 13:58:07 -07:00
nearpointsr r r
2020-06-23 19:37:10 -07:00
Únearrs 

rGcCsRt||jjkƒrdS|jt|dƒt|dƒt|dƒ}t||ƒt||ƒS)z-here use the additive recursive cost functionrrr)Úallr/ÚstartÚParentÚstrÚcostr)r4r Zxparentr r r
rL~s*rLc
Csvt |j¡}|j}t |j¡}|jj}|jj}tj ddd}|j
2020-06-24 13:58:07 -07:00
ddd|  ¡t ||jj
2020-06-23 19:37:10 -07:00
ƒ| ¡}|gkràxn|D]f}|dd|ddf} |dd|ddf}
2020-06-24 13:58:07 -07:00
|dd |dd f} tj | |
| ¡} | | ¡qvW|gkr^xr|D]j}|dd|ddf} |dd|ddf}
|dd |dd f} tjj| |
| d
d } | | ¡qðW|j|dd|dd …|d dd d
dd|j|dd|dd …|d ddd
dd| |dddf|dddf|ddd f¡t |jjd|jjd¡t |jjd|jjd¡| |jjd |jjd¡t d¡t d¡|gksjt d¡nt ¡dS)NéoZ3d)Z
projectiongéZ)ZelevZazimrrrrF)ZcolorZgorr )Z
markersizeZmarkeredgecolorZrorrrr r
gü©ñÒMbP?)rrr<ÚPathr/rIr3ÚpltZsubplotZ view_initÚclearr,rÚget_edgeÚplt3dZart3dZLine3DZadd_lineZplotZ scatter3DZxlimr0ZylimZset_zlimZxlabelZylabelÚpauseÚshow)
r4r<rOrPrIr3r&ÚedgesrÚxsZysÚzsÚliner r r
Ú