withopen(filename, 'w') as f: //打开文件 for fbag in fbags: //遍历多个包 reader = RecordReader(fbag) //创建一个RecordReader()对象来读取每个包 for msg in reader.read_messages(): //遍历包中的消息 if msg.topic == "/apollo/localization/pose": //如果是定位数据就把x和y信息写入文件 localization = localization_pb2.LocalizationEstimate() localization.ParseFromString(msg.message) x = localization.pose.position.x y = localization.pose.position.y f.write(str(x) + "," + str(y) + "\n")
plot_path
主要读取extract_path解析出来的轨迹信息,然后用matplot这个库来显示这条轨迹。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
f = open(sys.argv[1], 'r') //轨迹文件 xs = [] //存放x的列表 ys = [] for line in f: //读取每一行 line = line.replace("\n", '') //替换掉每行末尾的换行符 data = line.split(',') //通过逗号提取x跟y x = float(data[0]) y = float(data[1]) xs.append(x) ys.append(y) f.close()
// 读取轨迹点至points列表里 fpath = sys.argv[1] f = open(fpath, 'r') points = [] for line in f: line = line.replace("\n", '') data = line.split(',') x = float(data[0]) y = float(data[1]) points.append((x, y))
// 从之前生成的map中读取所有的lane lanes = {} lanes_map = {} for lane inmap.lane: lane_points = [] lanes_map[lane.id.id] = lane for segment in lane.central_curve.segment: for point in segment.line_segment.point: lane_points.append((point.x, point.y)) lane_string = LineString(lane_points) lanes[lane.id.id] = lane_string
lines = {} for stop_line in signal.stop_line:
// 从signal文件中读取所有stop_line的点 stop_line_points = [] for segment in stop_line.segment: for point in segment.line_segment.point: stop_line_points.append((point.x, point.y)) stop_line_string = LineString(stop_line_points)
// 遍历所有的lane for lane_id, lane_string in lanes.items(): p = stop_line_string.intersection(lane_string) iftype(p) == Point: // 如果与stop line重合就为overlap赋值 s = lane_string.project(p) overlap = map.overlap.add() overlap.id.id = str(lane_id) + "_" + str(signal.id.id) obj = overlap.object.add() obj.id.id = signal.id.id obj.signal_overlap_info.CopyFrom( map_overlap_pb2.SignalOverlapInfo()) obj = overlap.object.add() obj.id.id = lane_id obj.lane_overlap_info.start_s = s obj.lane_overlap_info.end_s = s + 0.1 obj.lane_overlap_info.is_merge = False