scenariogeneration笔记

一、介绍

 scenariogeneration可以用来生成ASAM标准的地图文件,包括xosc (OpenSCENARIO)和xodr (OpenDRIVE)两种格式。

github地址:

carla可视化信号灯效果

GitHub - pyoscx/scenariogeneration: Python library to generate linked OpenDRIVE and OpenSCENARIO filesPython library to generate linked OpenDRIVE and OpenSCENARIO files - GitHub - pyoscx/scenariogeneration: Python library to generate linked OpenDRIVE and OpenSCENARIO filesicon-default.png?t=N7T8https://github.com/pyoscx/scenariogenerationAPI文档:scenariogeneration API documentation

二、使用笔记

本文主要用来记录通过scenariogeneration来生成opendrive地图的过程。

1.创建道路

from scenariogeneration import xodr, prettyprint
from scenariogeneration.xodr import LaneType

#创建planview
x_start = 234.234
y_strat = 555.343
h_start = 98
planview = xodr.PlanView(x_start, y_strat, h_start)

#描述参考线并将其添加到planview上
line1 = xodr.Line(100)
arc1 = xodr.Arc(0.05, angle=np.pi / 2)
line2 = xodr.Line(100)
cloth1 = xodr.Spiral(0.05, -0.1, 30)
line3 = xodr.Line(100)

planview.add_geometry(line1)
planview.add_geometry(arc1)
planview.add_geometry(line2)
planview.add_geometry(cloth1)
planview.add_geometry(line3)


##创建中心车道
rm = xodr.RoadMark(xodr.RoadMarkType.solid, 0.2)  ##设置车道中心线路标属性
centerlane = xodr.Lane(a=2)
centerlane.add_roadmark(rm)

##创建车道组
lanesec = xodr.LaneSection(0, centerlane)

##添加左右车道
lane2 = xodr.Lane(LaneType.parking,a=3)
lane2.add_roadmark(rm)
lane3 = xodr.Lane(LaneType.shoulder,a=3)
lane3.add_roadmark(rm)

lanesec.add_left_lane(lane2)
lanesec.add_right_lane(lane3)

##将车道段添加到车道中
lanes = xodr.Lanes()
lanes.add_lanesection(lanesec)

##创建道路
road = xodr.Road(1, planview, lanes)
odr = xodr.OpenDrive("road1")
odr.add_road(road)

##根据前驱后继(如果有配置)调整道路的初始位置
odr.adjust_roads_and_lanes()

##打印地图文件
prettyprint(odr.get_element())

##保存地图文件
odr.write_xml("test.xodr")

2.添加object

生成object对象

def get_road_object(self, crosswalk, hdg, point0, s):
    outlines = xodr.Outline(True)

    for point in crosswalk:
        crosswalk_u, crosswalk_v = self.covt_uv(
            point, point0[0], point0[1], hdg)
        outlines.add_corner(xodr.CornerLocal(
            crosswalk_u, crosswalk_v, 0, 0))
    road_object = xodr.Object(
        s, 0, Type=xodr.ObjectType.crosswalk, name="crosswalk", hdg=0)
    road_object.add_outline(outlines)
    return road_object

添加到road上:

road.add_object(road_object)

3.生成signal

def get_road_signals(self, s, t, width, height, zoffset=5):
    signal = xodr.Signal(s=s, t=t, country="", Type="1000001",
                            subtype="1", width=width, height=height, zOffset=zoffset)
    return signal

标志

Signal_3Light_Post01(红绿灯)

Sign_Stop(停车让行)

Sign_Yield(减速让行)

type

1000001

206

205

图示

三. 问题汇总

1.road生成方式不同导致无法通过xodr.create_lane_links()自动连接两条道路的车道--scenariogeneration 0.13.2版本已修复

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值