37
37
import matplotlib .pyplot as plt
38
38
import numpy as np
39
39
import shapely .geometry as shp
40
+ from f1tenth_gym .envs .track import Track
40
41
41
42
42
43
def main (args ):
@@ -52,8 +53,9 @@ def main(args):
52
53
while True :
53
54
try :
54
55
print (f"[info] creating track { i } " )
55
- track , track_int , track_ext = create_track ()
56
- convert_track (track , track_int , track_ext , i , outdir )
56
+ WIDTH = 10.0
57
+ track , track_int , track_ext = create_track (WIDTH )
58
+ convert_track (track , track_int , track_ext , WIDTH , i , outdir )
57
59
print (f"[info] saved track { i } in { outdir } /" )
58
60
break
59
61
except Exception as _ : # noqa: F841
@@ -62,13 +64,12 @@ def main(args):
62
64
print ()
63
65
64
66
65
- def create_track ():
67
+ def create_track (track_width ):
66
68
CHECKPOINTS = 16
67
69
SCALE = 6.0
68
70
TRACK_RAD = 900 / SCALE
69
71
TRACK_DETAIL_STEP = 21 / SCALE
70
72
TRACK_TURN_RATE = 0.31
71
- WIDTH = 10.0
72
73
73
74
start_alpha = 0.0
74
75
@@ -183,15 +184,15 @@ def create_track():
183
184
track_poly = shp .Polygon (track_xy )
184
185
185
186
# Finding interior and exterior walls
186
- track_xy_offset_in = track_poly .buffer (WIDTH )
187
- track_xy_offset_out = track_poly .buffer (- WIDTH )
187
+ track_xy_offset_in = track_poly .buffer (track_width )
188
+ track_xy_offset_out = track_poly .buffer (- track_width )
188
189
track_xy_offset_in_np = np .array (track_xy_offset_in .exterior .xy ).T
189
190
track_xy_offset_out_np = np .array (track_xy_offset_out .exterior .xy ).T
190
191
191
192
return track_xy , track_xy_offset_in_np , track_xy_offset_out_np
192
193
193
194
194
- def convert_track (track , track_int , track_ext , track_id , outdir ):
195
+ def convert_track (track , track_int , track_ext , track_width , track_id , outdir ):
195
196
# converts track to image and saves the centerline as waypoints
196
197
fig , ax = plt .subplots ()
197
198
fig .set_size_inches (20 , 20 )
@@ -238,11 +239,16 @@ def convert_track(track, track_int, track_ext, track_id, outdir):
238
239
239
240
# Saving centerline as a csv
240
241
centerline_filepath = outdir / f"map{ track_id } _centerline.csv"
242
+ x_m , y_m = xy_pixels [:, 0 ] * 0.05 , xy_pixels [:, 1 ] * 0.05
241
243
with open (centerline_filepath , "w" ) as waypoints_csv :
242
- waypoints_csv .write ("#x,y \n " )
244
+ waypoints_csv .write ("# x_m, y_m, w_tr_right_m, w_tr_left_m \n " )
243
245
for row in xy_pixels :
244
- waypoints_csv .write (f"{ 0.05 * row [0 ]} , { 0.05 * row [1 ]} \n " )
246
+ waypoints_csv .write (f"{ 0.05 * row [0 ]} , { 0.05 * row [1 ]} , { track_width } , { track_width } \n " )
245
247
248
+ raceline_format = Track .from_refline (x = x_m , y = y_m , velx = np .ones_like (x_m ) * 4.0 )
249
+ raceline_format .spec .name = f"map{ track_id } "
250
+ raceline_format .save_raceline (outdir )
251
+ print (f"[info] saved centerline in { centerline_filepath } " )
246
252
247
253
if __name__ == "__main__" :
248
254
import argparse
0 commit comments