1111import matplotlib .pyplot as plt
1212from scipy .stats import norm
1313
14- AREA_WIDTH = 30.0
14+ AREA_WIDTH = 10.0
15+
16+ STD = 10.0 # standard diviation
1517
1618
1719def generate_gaussian_grid_map (ox , oy , xyreso ):
1820
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 )
2522
2623 # calc each potential
2724 pmap = [[0.0 for i in range (yw )] for i in range (xw )]
2825
29- STD = 10.0 # standard diviation
30-
3126 for ix in range (xw ):
3227 for iy in range (yw ):
3328
@@ -46,7 +41,18 @@ def generate_gaussian_grid_map(ox, oy, xyreso):
4641
4742 draw_heatmap (pmap , minx , maxx , miny , maxy , xyreso )
4843 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
5056
5157
5258class precastDB :
@@ -95,12 +101,7 @@ def precasting(minx, miny, xw, yw, xyreso, yawreso):
95101
96102def generate_ray_casting_grid_map (ox , oy , xyreso ):
97103
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 )
104105
105106 pmap = [[0.0 for i in range (yw )] for i in range (xw )]
106107
@@ -119,39 +120,42 @@ def generate_ray_casting_grid_map(ox, oy, xyreso):
119120
120121 gridlist = precast [angleid ]
121122
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 ))
126125
127126 for grid in gridlist :
128-
129127 if grid .d > (d ):
130128 pmap [grid .ix ][grid .iy ] = 0.5
131129
130+ pmap [ix ][iy ] = 1.0
131+
132132 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" )
134135
135136
136137def 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 )
142141 plt .axis ("equal" )
143142
144143
145144def main ():
146145 print (__file__ + " start!!" )
147146
148- # obstacle positions
149- ox = [- 5.0 , 5.0 , 0.0 , 10.0 ]
150- oy = [0.0 , 5.0 , 10.0 , - 5.0 ]
151147 xyreso = 0.5
152148
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 )
155159
156160
157161if __name__ == '__main__' :
0 commit comments