From c74372983b2e7db7c7771f2ceaf0009d60f98fe0 Mon Sep 17 00:00:00 2001 From: yue qi <391311qy@gmail.com> Date: Thu, 13 Aug 2020 01:13:36 -0700 Subject: [PATCH] 'env' --- Sampling_based_Planning/rrt_3D/BIT_star3D.py | 10 +- Sampling_based_Planning/rrt_3D/FMT_star3D.py | 10 +- .../rrt_3D/__pycache__/env3D.cpython-37.pyc | Bin 5161 -> 5064 bytes .../__pycache__/plot_util3D.cpython-37.pyc | Bin 6025 -> 5425 bytes .../rrt_3D/__pycache__/queue.cpython-37.pyc | Bin 3032 -> 3036 bytes .../rrt_3D/__pycache__/utils3D.cpython-37.pyc | Bin 12303 -> 12307 bytes .../rrt_3D/dynamic_rrt3D.py | 10 +- Sampling_based_Planning/rrt_3D/env3D.py | 99 +++++++----------- .../rrt_3D/informed_rrt_star3D.py | 10 +- Sampling_based_Planning/rrt_3D/plot_util3D.py | 82 +++++---------- Sampling_based_Planning/rrt_3D/rrt3D.py | 4 +- .../rrt_3D/rrt_connect3D.py | 10 +- 12 files changed, 79 insertions(+), 156 deletions(-) diff --git a/Sampling_based_Planning/rrt_3D/BIT_star3D.py b/Sampling_based_Planning/rrt_3D/BIT_star3D.py index 9c8c022..17dec01 100644 --- a/Sampling_based_Planning/rrt_3D/BIT_star3D.py +++ b/Sampling_based_Planning/rrt_3D/BIT_star3D.py @@ -26,7 +26,7 @@ import sys sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../Sampling_based_Planning/") from rrt_3D.env3D import env from rrt_3D.utils3D import getDist, sampleFree, nearest, steer, isCollide, isinside, isinbound -from rrt_3D.plot_util3D import make_get_proj, draw_block_list, draw_Spheres, draw_obb, draw_line, make_transparent +from rrt_3D.plot_util3D import set_axes_equal, draw_block_list, draw_Spheres, draw_obb, draw_line, make_transparent from rrt_3D.queue import MinheapPQ #---------methods to draw ellipse during sampling @@ -313,7 +313,7 @@ class BIT_star: # ax.view_init(elev=0.+ 0.03*self.ind/(2*np.pi), azim=90 + 0.03*self.ind/(2*np.pi)) # ax.view_init(elev=0., azim=90.) - ax.view_init(elev=8., azim=90.) + ax.view_init(elev=90., azim=0.) # ax.view_init(elev=-8., azim=180) ax.clear() # drawing objects @@ -333,11 +333,7 @@ class BIT_star: ax.plot(start[0:1], start[1:2], start[2:], 'go', markersize=7, markeredgecolor='k') ax.plot(goal[0:1], goal[1:2], goal[2:], 'ro', markersize=7, markeredgecolor='k') # adjust the aspect ratio - xmin, xmax = self.env.boundary[0], self.env.boundary[3] - ymin, ymax = self.env.boundary[1], self.env.boundary[4] - zmin, zmax = self.env.boundary[2], self.env.boundary[5] - dx, dy, dz = xmax - xmin, ymax - ymin, zmax - zmin - ax.get_proj = make_get_proj(ax, 1 * dx, 1 * dy, 2 * dy) + set_axes_equal(ax) make_transparent(ax) #plt.xlabel('s') #plt.ylabel('y') diff --git a/Sampling_based_Planning/rrt_3D/FMT_star3D.py b/Sampling_based_Planning/rrt_3D/FMT_star3D.py index d0885f5..6bcb361 100644 --- a/Sampling_based_Planning/rrt_3D/FMT_star3D.py +++ b/Sampling_based_Planning/rrt_3D/FMT_star3D.py @@ -17,7 +17,7 @@ import sys sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../Sampling_based_Planning/") from rrt_3D.env3D import env from rrt_3D.utils3D import getDist, sampleFree, nearest, steer, isCollide -from rrt_3D.plot_util3D import make_get_proj, draw_block_list, draw_Spheres, draw_obb, draw_line, make_transparent +from rrt_3D.plot_util3D import set_axes_equal, draw_block_list, draw_Spheres, draw_obb, draw_line, make_transparent from rrt_3D.queue import MinheapPQ class FMT_star: @@ -160,7 +160,7 @@ class FMT_star: # ax.view_init(elev=0.+ 0.03*initparams.ind/(2*np.pi), azim=90 + 0.03*initparams.ind/(2*np.pi)) # ax.view_init(elev=0., azim=90.) - ax.view_init(elev=8., azim=90.) + ax.view_init(elev=90., azim=0.) # ax.view_init(elev=-8., azim=180) ax.clear() # drawing objects @@ -176,11 +176,7 @@ class FMT_star: ax.plot(start[0:1], start[1:2], start[2:], 'go', markersize=7, markeredgecolor='k') ax.plot(goal[0:1], goal[1:2], goal[2:], 'ro', markersize=7, markeredgecolor='k') # adjust the aspect ratio - xmin, xmax = self.env.boundary[0], self.env.boundary[3] - ymin, ymax = self.env.boundary[1], self.env.boundary[4] - zmin, zmax = self.env.boundary[2], self.env.boundary[5] - dx, dy, dz = xmax - xmin, ymax - ymin, zmax - zmin - ax.get_proj = make_get_proj(ax, 1 * dx, 1 * dy, 2 * dy) + set_axes_equal(ax) make_transparent(ax) #plt.xlabel('x') #plt.ylabel('y') diff --git a/Sampling_based_Planning/rrt_3D/__pycache__/env3D.cpython-37.pyc b/Sampling_based_Planning/rrt_3D/__pycache__/env3D.cpython-37.pyc index c05c8824fe141e40647949389dd3b8309995ae37..980d40c4570a322e041d982e0b103dc0050cf1e7 100644 GIT binary patch delta 2434 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 B@Ztaf diff --git a/Sampling_based_Planning/rrt_3D/__pycache__/plot_util3D.cpython-37.pyc b/Sampling_based_Planning/rrt_3D/__pycache__/plot_util3D.cpython-37.pyc index 093e322dd4f0d6eabdd95dea79c62fa5fb59e1a7..2ea05e73d29004bc1a6d998358cf77e090b45456 100644 GIT binary patch delta 1310 zcmYjQJ#5=X6y}kVMM;qyw23S`26{yUSSm~@t{NltkQB93w1a~HX%~Twaw5+ZVgC8< zWXl2t1#p+l+zWZ>)*&#^u|U@@-8B_mJ9p~RcW24TiSN6|?>)Wu?(yE6_S;XZUsWn4 z4c5uOpZA`wzpY~Z`5R}?{+?6D?amiFogMpt@?#Mvw&#n%ux}?s46Gy|QRGLSMFKBo zUS^HuAx*4b?`dJSajC(3d3MjOU4q5cUTDp=?6*qe?(46=^dN#-O}(3=0X^+z|5f%- zH`}c~D0|la=0AV$ZaisjX0NNyfc>-jbhXN<=#dfSJ$f=ELAJfx_{^M_{KyvxVI<_t zhKTG32|Wp~0Oon>dX%$|CGinJ_Uq~==s`ALwWcOA4HK~lSO)>fRR+m}s1yDHN~+DY zOKpN+N3iR#>#!TbNRf-yH9&n`t7{i%k`uXEK1G*kk_W4!z;F5K7 z(EU953C?*)jwyydPC1T`aOVIgK`iiqoKmbBi@8Grig}F1fC$W!0cDh9k|dNcO!$)7 zE@4>CurH1LTG_@_IIR}O-wk|@;fW)PlbCbAuR;bx;l~jcF+L=>>sK8hKfqNQRCgh=>ayUhi0j^k6xj)M5C z<-}q8WJtNp&D%Sj-A4~Qk9Mc+kSt5ER5oh}cgYH9-4%4t2d5bbzXhP_w-EgF+vql8e&*Nq Zk(2#Wo0R3)s>r}TTstgS=B8OP(f_RXY%Tx* delta 1899 zcmZ8i&2Jk;6rY)0uQ&d7vPqnzg%wn7ZPB=D5h@Y1g$8b}P%DaLA-QYs+V$72nVqDz zHCuxMO3H_XWQhYO`-ZqdIdbC9SP4{d0&##tB{=flI#e_}e!uy>nYVA=%)WX4uJo{+ zc{80(5P0fmUatLi`n!zDwmvD}^ZHKN>N&&muH$!wHz>E-;@)1pJgu<8M)|hYAN1O8 zt5&ys$F9B8vs@R{^7H{aqn9}swadHZN8hsa(z!gi)Ft`VDcnZE`a z{gU!0kA6vBr4!J!&Z^Be&IEW` zG69&DsRB{ZTPDZ`IZ=>tJ1a8=0n7sC0MC&FRmN)@VpGNsC?zsJ+nN(fL~?e@-k8IP zO>UFo=5#lGewCQlTd*fWKD=|i$U@cWIs4)Cqx239r$44IZt_i-<0XV5KFM9;n_%>I=B+}yZ*`qo%MrB!_d22eADe!iIsaTfOtjs$7+Bou`@Dvp?jqC? z8q>!a<6@`|`)wD|8iwj9;-iRyhuX0% z(pBN2--@=N&FLh_xr_b8!6CkuOhyqS!^q)K^T9Hl%d*VELbLF4c_$?H4@SX3fq0b3^r(73qD zF%LM_NPY+5J%H(-`7;xaSEOp(_ju2)32wQ5)8lZYyI}TO6OB^o`FCg>*z5?;D01)~DOHpW0Z&V7x zGBiOmN{*eSXQ2+|mzZ%g}5Fj*lxx{;q{#w@P rmJ7o_JvCVDgym?Ca(9|HZqVlRT?7A)z#;mA(VvY<{F45vp3v#PvP9Yr diff --git a/Sampling_based_Planning/rrt_3D/__pycache__/queue.cpython-37.pyc b/Sampling_based_Planning/rrt_3D/__pycache__/queue.cpython-37.pyc index 5a37d2f4d622f5727e4f8e40d2767e6d605fd0f6..d7f5ebed9b59f4164962970a7603d50cad350be8 100644 GIT binary patch delta 104 zcmca1en*_oiI&Nwlp+0jB!aV&MwI>h)K^Z z$tX>VDM&2I&@ISG%*)HnOV>@zNzX3=O5_&DOrF3b&KNVfnMs8srl_bS-q#l5 delta 100 zcmca3enXtkiI&`-}S$tX?I zFGwuO&@ISG%*)HnOV>@zNzX3=O5_&nPtIo&XVjnE&ZNSjUsO~QZ|tJKc{7tHCjb-0 BALRf5 diff --git a/Sampling_based_Planning/rrt_3D/__pycache__/utils3D.cpython-37.pyc b/Sampling_based_Planning/rrt_3D/__pycache__/utils3D.cpython-37.pyc index 70b69f36b319d67adcc7b9098bb0e76287ab6630..ec095f0b58e4ff96f005c033a7d38ab8645c065f 100644 GIT binary patch delta 107 zcmeBAn4G}v#LLUY00gIJ8gJy@$7Io(Y!wq)oLW>IV{ByUl5a?S&~tj z6jP8`lA&9WlbDy6nU}7cn3JAg1eC}vj+y+INt`{VsHh~~*kv*=lN<+>9kbby`J4^_ Dhz}&n delta 97 zcmbQ7(4WBV#LLUY00c=YCL6i;F_|>#XXNLm>L=!;R_ME=7H5~_7wD&FmSmJB=@%rH yWat*;B np.pi / 2: - # upside down - V = np.array((0, 0, -1)) - else: - V = np.array((0, 0, 1)) - zfront, zback = -self.dist * ratio, self.dist * ratio - - viewM = proj3d.view_transformation(E, R, V) - perspM = proj3d.persp_transformation(zfront, zback) - M0 = np.dot(viewM, np.dot(aspectM, worldM)) ## - M = np.dot(perspM, M0) - return M - - return get_proj + ax.set_xlim3d([x_middle - plot_radius, x_middle + plot_radius]) + ax.set_ylim3d([y_middle - plot_radius, y_middle + plot_radius]) + ax.set_zlim3d([z_middle - plot_radius, z_middle + plot_radius]) def make_transparent(ax): # make the panes transparent diff --git a/Sampling_based_Planning/rrt_3D/rrt3D.py b/Sampling_based_Planning/rrt_3D/rrt3D.py index f2ee776..096ea74 100644 --- a/Sampling_based_Planning/rrt_3D/rrt3D.py +++ b/Sampling_based_Planning/rrt_3D/rrt3D.py @@ -44,8 +44,8 @@ class rrt(): while self.ind < self.maxiter: xrand = sampleFree(self) xnearest = nearest(self, xrand) - xnew = steer(self, xnearest, xrand) - collide, _ = isCollide(self, xnearest, xnew) + xnew, dist = steer(self, xnearest, xrand) + collide, _ = isCollide(self, xnearest, xnew, dist=dist) if not collide: self.V.append(xnew) # add point self.wireup(xnew, xnearest) diff --git a/Sampling_based_Planning/rrt_3D/rrt_connect3D.py b/Sampling_based_Planning/rrt_3D/rrt_connect3D.py index 08d9be6..dad3176 100644 --- a/Sampling_based_Planning/rrt_3D/rrt_connect3D.py +++ b/Sampling_based_Planning/rrt_3D/rrt_connect3D.py @@ -16,7 +16,7 @@ sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../Sampling_ba from rrt_3D.env3D import env from rrt_3D.utils3D import getDist, sampleFree, nearest, steer, isCollide, near, visualization, cost, path, edgeset -from rrt_3D.plot_util3D import make_get_proj, draw_block_list, draw_Spheres, draw_obb, draw_line, make_transparent +from rrt_3D.plot_util3D import set_axes_equal, draw_block_list, draw_Spheres, draw_obb, draw_line, make_transparent class Tree(): @@ -161,7 +161,7 @@ class rrt_connect(): for i in tree_b.Parent: b_edges.append([i,tree_b.Parent[i]]) ax = plt.subplot(111, projection='3d') - ax.view_init(elev=8., azim=90.) + ax.view_init(elev=90., azim=0.) ax.clear() draw_Spheres(ax, self.env.balls) draw_block_list(ax, self.env.blocks) @@ -173,11 +173,7 @@ class rrt_connect(): draw_line(ax, Path, color='r') ax.plot(start[0:1], start[1:2], start[2:], 'go', markersize=7, markeredgecolor='k') ax.plot(goal[0:1], goal[1:2], goal[2:], 'ro', markersize=7, markeredgecolor='k') - xmin, xmax = self.env.boundary[0], self.env.boundary[3] - ymin, ymax = self.env.boundary[1], self.env.boundary[4] - zmin, zmax = self.env.boundary[2], self.env.boundary[5] - dx, dy, _ = xmax - xmin, ymax - ymin, zmax - zmin - ax.get_proj = make_get_proj(ax, 1 * dx, 1 * dy, 2 * dy) + set_axes_equal(ax) make_transparent(ax) ax.set_axis_off() plt.pause(0.0001)