Skip to content

Commit d72ea0b

Browse files
committed
added animation function
1 parent 9e3dc08 commit d72ea0b

File tree

1 file changed

+36
-32
lines changed

1 file changed

+36
-32
lines changed

Mapping/grid_map/grid_map.py

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,18 @@
1111
import matplotlib.pyplot as plt
1212
from scipy.stats import norm
1313

14-
AREA_WIDTH = 30.0
14+
AREA_WIDTH = 10.0
15+
16+
STD = 10.0 # standard diviation
1517

1618

1719
def 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

5258
class precastDB:
@@ -95,12 +101,7 @@ def precasting(minx, miny, xw, yw, xyreso, yawreso):
95101

96102
def 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

136137
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)
142141
plt.axis("equal")
143142

144143

145144
def 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

157161
if __name__ == '__main__':

0 commit comments

Comments
 (0)