11
11
import matplotlib .pyplot as plt
12
12
from scipy .stats import norm
13
13
14
- AREA_WIDTH = 30.0
14
+ AREA_WIDTH = 10.0
15
+
16
+ STD = 10.0 # standard diviation
15
17
16
18
17
19
def generate_gaussian_grid_map (ox , oy , xyreso ):
18
20
19
- minx = min (ox ) - AREA_WIDTH / 2.0
20
- miny = min (oy ) - AREA_WIDTH / 2.0
21
- maxx = max (ox ) + AREA_WIDTH / 2.0
22
- maxy = max (oy ) + AREA_WIDTH / 2.0
23
- xw = round ((maxx - minx ) / xyreso )
24
- yw = round ((maxy - miny ) / xyreso )
21
+ minx , miny , maxx , maxy , xw , yw = calc_grid_map_config (ox , oy , xyreso )
25
22
26
23
# calc each potential
27
24
pmap = [[0.0 for i in range (yw )] for i in range (xw )]
28
25
29
- STD = 10.0 # standard diviation
30
-
31
26
for ix in range (xw ):
32
27
for iy in range (yw ):
33
28
@@ -46,7 +41,18 @@ def generate_gaussian_grid_map(ox, oy, xyreso):
46
41
47
42
draw_heatmap (pmap , minx , maxx , miny , maxy , xyreso )
48
43
plt .plot (ox , oy , "xr" )
49
- plt .show ()
44
+ plt .plot (0.0 , 0.0 , "ob" )
45
+
46
+
47
+ def calc_grid_map_config (ox , oy , xyreso ):
48
+ minx = round (min (ox ) - AREA_WIDTH / 2.0 )
49
+ miny = round (min (oy ) - AREA_WIDTH / 2.0 )
50
+ maxx = round (max (ox ) + AREA_WIDTH / 2.0 )
51
+ maxy = round (max (oy ) + AREA_WIDTH / 2.0 )
52
+ xw = int (round ((maxx - minx ) / xyreso ))
53
+ yw = int (round ((maxy - miny ) / xyreso ))
54
+
55
+ return minx , miny , maxx , maxy , xw , yw
50
56
51
57
52
58
class precastDB :
@@ -95,12 +101,7 @@ def precasting(minx, miny, xw, yw, xyreso, yawreso):
95
101
96
102
def generate_ray_casting_grid_map (ox , oy , xyreso ):
97
103
98
- minx = min (ox ) - AREA_WIDTH / 2.0
99
- miny = min (oy ) - AREA_WIDTH / 2.0
100
- maxx = max (ox ) + AREA_WIDTH / 2.0
101
- maxy = max (oy ) + AREA_WIDTH / 2.0
102
- xw = round ((maxx - minx ) / xyreso )
103
- yw = round ((maxy - miny ) / xyreso )
104
+ minx , miny , maxx , maxy , xw , yw = calc_grid_map_config (ox , oy , xyreso )
104
105
105
106
pmap = [[0.0 for i in range (yw )] for i in range (xw )]
106
107
@@ -119,39 +120,42 @@ def generate_ray_casting_grid_map(ox, oy, xyreso):
119
120
120
121
gridlist = precast [angleid ]
121
122
122
- ix = round ((x - minx ) / xyreso )
123
- iy = round ((y - miny ) / xyreso )
124
-
125
- pmap [ix ][iy ] = 1.0
123
+ ix = int (round ((x - minx ) / xyreso ))
124
+ iy = int (round ((y - miny ) / xyreso ))
126
125
127
126
for grid in gridlist :
128
-
129
127
if grid .d > (d ):
130
128
pmap [grid .ix ][grid .iy ] = 0.5
131
129
130
+ pmap [ix ][iy ] = 1.0
131
+
132
132
draw_heatmap (pmap , minx , maxx , miny , maxy , xyreso )
133
- plt .show ()
133
+ plt .plot (ox , oy , "xr" )
134
+ plt .plot (0.0 , 0.0 , "ob" )
134
135
135
136
136
137
def draw_heatmap (data , minx , maxx , miny , maxy , xyreso ):
137
- y , x = np .mgrid [slice (minx , maxx + xyreso , xyreso ),
138
- slice (miny , maxy + xyreso , xyreso )]
139
- # print(y)
140
- # data = np.array(data).T
141
- plt .pcolor (data , vmax = 1.0 , cmap = plt .cm .Blues )
138
+ x , y = np .mgrid [slice (minx - xyreso / 2.0 , maxx + xyreso / 2.0 , xyreso ),
139
+ slice (miny - xyreso / 2.0 , maxy + xyreso / 2.0 , xyreso )]
140
+ plt .pcolor (x , y , data , vmax = 1.0 , cmap = plt .cm .Blues )
142
141
plt .axis ("equal" )
143
142
144
143
145
144
def main ():
146
145
print (__file__ + " start!!" )
147
146
148
- # obstacle positions
149
- ox = [- 5.0 , 5.0 , 0.0 , 10.0 ]
150
- oy = [0.0 , 5.0 , 10.0 , - 5.0 ]
151
147
xyreso = 0.5
152
148
153
- # generate_gaussian_grid_map(ox, oy, xyreso)
154
- generate_ray_casting_grid_map (ox , oy , xyreso )
149
+ for i in range (5 ):
150
+ ox = (np .random .rand (4 ) - 0.5 ) * 10.0
151
+ oy = (np .random .rand (4 ) - 0.5 ) * 10.0
152
+ plt .cla ()
153
+ generate_gaussian_grid_map (ox , oy , xyreso )
154
+ plt .pause (1.0 )
155
+
156
+ plt .cla ()
157
+ generate_ray_casting_grid_map (ox , oy , xyreso )
158
+ plt .pause (1.0 )
155
159
156
160
157
161
if __name__ == '__main__' :
0 commit comments