apollo
apollo copied to clipboard
如何使apollo的地图在commonroad中可视化
apollo的路口定义中,对于路口信息是否可以捕捉到更加丰富的信息,使其可以更好的可视化
我希望可以捕捉到更多的路口信息,使我可以在commonroad中利用地图数据做规划
用Overlap id可以找到哪些路是connecting road, 然后每个路有successor predecessor可以找到incoming和successor。这些信息都在hdmap文件里,您有其他需要的信息吗?
但我目前只有base_map.bin文件,但是路口具体的车道的前后左右是没有的
主要找不到路口每个车道的位置关系
commonroad的路口前继,后继没有具体位置关系
您需要的是类似这样的吗,蓝色的是junction,然后画出了junction里的lane,以及junction lane的pred/succ
但是目前应该是抓不到这些信息的,从base_map文件中
我需要以lane的位置信息表示junction
但是目前应该是抓不到这些信息的,从base_map文件中
那个图就是从base map文件画出来的。要不您举个例子什么是“以lane的位置信息表示junction”
就是左边这个,他数字对应的是lane_id,其他是对应的位置关系,在路口的左右还是前后,这在apollo的地图中似乎找不到
可以通过base_map.bin知道通过lane A(红色)进入路口内的lane B(黄色)然后出路口后到达lane C(蓝色)。您需要的是这个关系吗
对
map_relation.zip 这是分析HD Map并画出上面那幅图的代码,您看看。
from baidu_apollo_proto.proto_v8.modules.common_msgs.map_msgs.map_pb2 import Map,这个接口在哪里了
这是中心线,我处理的是车道线
from baidu_apollo_proto.proto_v8.modules.common_msgs.map_msgs.map_pb2 import Map,这个接口在哪里了
这是中心线,我处理的是车道线
from baidu_apollo_proto.proto_v8.modules.common_msgs.map_msgs.map_pb2 import Map
from matplotlib import pyplot as plt
map = Map()
map.ParseFromString(open("borregas_ave.bin", "rb").read())
plotted_lanes = set()
def get_overlap_ids(obj):
return [overlap.id for overlap in obj.overlap_id]
def get_left_lane_boundary(lane):
points = []
for p in lane.left_boundary.curve.segment[0].line_segment.point:
points.append((p.x, p.y))
return points
def get_right_lane_boundary(lane):
points = []
for p in lane.right_boundary.curve.segment[0].line_segment.point:
points.append((p.x, p.y))
return points
def label_lane(lane):
points = lane.central_curve.segment[0].line_segment.point
plt.text(points[0].x, points[0].y, lane.id.id)
def plot_lane_boundary(lane, color):
lhs = get_left_lane_boundary(lane)
rhs = get_right_lane_boundary(lane)
lane_points = lhs + rhs[::-1]
lane_points.append(lane_points[0])
plt.fill(
[p[0] for p in lane_points],
[p[1] for p in lane_points],
alpha=0.5,
color=color,
)
lane_objs = dict()
for lane in map.lane:
lane_objs[lane.id.id] = lane
for junc in map.junction:
junc_ids = get_overlap_ids(junc)
points = junc.polygon.point
x = [point.x for point in points]
y = [point.y for point in points]
x.append(x[0])
y.append(y[0])
plt.fill(x, y, alpha=0.5)
for lane in map.lane:
if lane.id.id in plotted_lanes:
continue
lane_ids = get_overlap_ids(lane)
if any(junc_id in lane_ids for junc_id in junc_ids):
label_lane(lane)
plot_lane_boundary(lane, "black")
plotted_lanes.add(lane.id.id)
# predecessor
for pred in lane.predecessor_id:
pred_lane = lane_objs[pred.id]
label_lane(pred_lane)
plot_lane_boundary(pred_lane, "red")
plotted_lanes.add(pred_lane.id.id)
# successor
for succ in lane.successor_id:
succ_lane = lane_objs[succ.id]
label_lane(succ_lane)
plot_lane_boundary(succ_lane, "blue")
plt.text(x[0], y[0], succ.id)
plotted_lanes.add(succ_lane.id.id)
break
plt.show()
ok,thanks
borregas_ave.zip 我需要的是将这个地图文件转为xml格式的示例文件,他在路口目前是只能手动输入 https://gitlab.lrz.de/tum-cps/commonroad-apollo-interface 这个里面的commonroad_connect.py有很大的参考意义,但目前还没有太好的进展, https://gitlab.lrz.de/tum-cps/commonroad-scenarios/-/tree/2020a_scenarios/scenarios/interactive/SUMO/CHN_Cho-2_5_I-1-1?ref_type=heads 最终需要的是这种文件
https://github.com/ApolloAuto/apollo/issues/15384#issuecomment-2072474059 这个每个lanelet在xml中都可以提取出来;主要还是路口需要做具体的标注
Uploading example——xml.zip…
我看了看您发的python代码,里面这部分
def parse_lane(scenario, lane):
step = 10.
for lane_id_, data in lane.items():
lanelet_ = Lanelet(
np.array(data['left_boundary']),
np.array(data['central_boundary']),
np.array(data['right_boundary']),
lane_id_,
data['pred_ids'],
data['succ_ids'],
data['l_ids'][0],
data['l_ids'][1],
data['r_ids'][0],
data['r_ids'][1],
data['speed_limit']
)
# add one lanelet to the scenario.
scenario.add_objects(lanelet_)
就可以把Apollo的lane变成Common Road里的lanelet了吧?Left boundary, central, right boundary都可以通过上面代码读到。
对