def test_lane(): lane = pyodrx.Lane() lane._set_lane_id(1) prettyprint(lane.get_element()) lane = pyodrx.Lane(pyodrx.LaneType.driving,1,1,1,1,2) lane._set_lane_id(1) prettyprint(lane.get_element())
def test_lanesection(): centerlane = pyodrx.Lane() ls = pyodrx.LaneSection(0,centerlane) prettyprint(ls.get_element()) right_lane = pyodrx.Lane() ls.add_right_lane(right_lane) prettyprint(ls.get_element()) left_lane = pyodrx.Lane(a=2) ls.add_left_lane(left_lane) prettyprint(ls.get_element())
def test_lanelinker(): lane = pyodrx.Lane(a=3) lane._set_lane_id(1) lane.add_link('successor', '2') prettyprint(lane.get_element())
def test_lanes(): centerlane = pyodrx.Lane() ls = pyodrx.LaneSection(0,centerlane) lanes = pyodrx.Lanes() lanes.add_lanesection(ls) lo = pyodrx.LaneOffset(0,1,2,3,4) lanes.add_laneoffset(lo) prettyprint(lanes.get_element())
def test_simple_road(): line1 = pyodrx.Line(100) planview = pyodrx.PlanView() planview.add_geometry(line1) rm = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) lane1 = pyodrx.Lane(a=2) lane1.add_roadmark(rm) lanesec = pyodrx.LaneSection(0, lane1) lanes = pyodrx.Lanes() lanes.add_lanesection(lanesec) road = pyodrx.Road(1, planview, lanes) prettyprint(road.get_element())
def test_link_road(): line1 = pyodrx.Line(100) planview = pyodrx.PlanView() planview.add_geometry(line1) rm = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) lane1 = pyodrx.Lane(a=2) lane1.add_roadmark(rm) lanesec = pyodrx.LaneSection(0, lane1) lanes = pyodrx.Lanes() lanes.add_lanesection(lanesec) road = pyodrx.Road(1, planview, lanes) road.add_predecessor(pyodrx.ElementType.road, '1', pyodrx.ContactPoint.start) prettyprint(road.get_element())
import os odr = xodr.OpenDrive('myroad') #---------------- Road 1 planview = xodr.PlanView(0,0,0) # create some geometries and add to the planview planview.add_geometry(xodr.Line(100)) # create a solid roadmark rm = xodr.RoadMark(xodr.RoadMarkType.solid, 0.2) # create centerlane centerlane_1 = xodr.Lane(a=2) centerlane_1.add_roadmark(rm) lanesec_1 = xodr.LaneSection(0,centerlane_1) # add a driving lane lane2_1 = xodr.Lane(a=3.1) lane2_1.add_roadmark(rm) lanesec_1.add_left_lane(lane2_1) lane3_1 = xodr.Lane(a=3.1) lane3_1.add_roadmark(rm) lanesec_1.add_right_lane(lane3_1) ## finalize the road lanes_1 = xodr.Lanes() lanes_1.add_lanesection(lanesec_1)
def test_create_lane_links_normalroad1(): planview = [] lanec = [] lanel = [] laner = [] lanesec = [] lanes = [] rm = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) geom = [] geom.append(pyodrx.Line(50)) geom.append(pyodrx.Arc(0.01, angle=np.pi / 2)) geom.append(pyodrx.Line(50)) # create planviews for i in range(len(geom)): planview.append(pyodrx.PlanView()) planview[i].add_geometry(geom[i]) # create centerlanes for i in range(len(geom)): lanec.append(pyodrx.Lane(a=3)) lanel.append(pyodrx.Lane(a=3)) laner.append(pyodrx.Lane(a=3)) #add roadmarks for i in range(len(geom)): lanec[i].add_roadmark(rm) lanel[i].add_roadmark(rm) laner[i].add_roadmark(rm) # create lanesections for i in range(len(geom)): lanesec.append(pyodrx.LaneSection(0, lanec[i])) lanesec[i].add_right_lane(lanel[i]) lanesec[i].add_left_lane(laner[i]) #create lanes for i in range(len(geom)): lanes.append(pyodrx.Lanes()) lanes[i].add_lanesection(lanesec[i]) #create roads road1 = pyodrx.Road(1, planview[0], lanes[0]) road1.add_successor(pyodrx.ElementType.road, 2, pyodrx.ContactPoint.start) road2 = pyodrx.Road(2, planview[1], lanes[1]) road2.add_predecessor(pyodrx.ElementType.road, 1, pyodrx.ContactPoint.end) road2.add_successor(pyodrx.ElementType.road, 3, pyodrx.ContactPoint.start) road3 = pyodrx.Road(3, planview[2], lanes[2]) road3.add_predecessor(pyodrx.ElementType.road, 2, pyodrx.ContactPoint.end) # create the opendrive and add roads odr = pyodrx.OpenDrive('myroad') odr.add_road(road1) odr.add_road(road2) odr.add_road(road3) odr.adjust_roads_and_lanes() assert road1.lanes.lanesections[0].rightlanes[0].links.get_predecessor_id( ) == None assert int(road1.lanes.lanesections[0].rightlanes[0].links. get_successor_id()) == -1 assert road1.lanes.lanesections[0].leftlanes[0].links.get_predecessor_id( ) == None assert int( road1.lanes.lanesections[0].leftlanes[0].links.get_successor_id()) == 1 assert int(road2.lanes.lanesections[0].rightlanes[0].links. get_predecessor_id()) == -1 assert int(road2.lanes.lanesections[0].rightlanes[0].links. get_successor_id()) == -1 assert int(road2.lanes.lanesections[0].leftlanes[0].links. get_predecessor_id()) == 1 assert int( road2.lanes.lanesections[0].leftlanes[0].links.get_successor_id()) == 1 assert int(road3.lanes.lanesections[0].rightlanes[0].links. get_predecessor_id()) == -1 assert road3.lanes.lanesections[0].rightlanes[0].links.get_successor_id( ) == None assert int(road3.lanes.lanesections[0].leftlanes[0].links. get_predecessor_id()) == 1 assert road3.lanes.lanesections[0].leftlanes[0].links.get_successor_id( ) == None
def test_lane_with_height(): lane = pyodrx.Lane(pyodrx.LaneType.sidewalk,1,1,1,1,2) lane._set_lane_id(1) lane.add_height(0.15) prettyprint(lane.get_element())
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) ##3. Create a solid roadmark rm = xodr.RoadMark(xodr.RoadMarkType.solid, 0.2) ##4. Create centerlane centerlane = xodr.Lane(a=2) centerlane.add_roadmark(rm) ##5. Create lane section form the centerlane lanesec = xodr.LaneSection(0, centerlane) ##6. Create left and right lanes lane2 = xodr.Lane(a=3) lane2.add_roadmark(rm) lane3 = xodr.Lane(a=3) lane3.add_roadmark(rm) ##7. Add lanes to lane section lanesec.add_left_lane(lane2) lanesec.add_right_lane(lane3)
# create some simple roads roads= [] # create the planview and the geometry planview = xodr.PlanView() planview.add_geometry(xodr.Line(200)) # create two different roadmarkings rm_solid = xodr.RoadMark(xodr.RoadMarkType.solid,0.2) rm_dashed = xodr.RoadMark(xodr.RoadMarkType.broken,0.2) # create a centerlane (same centerlane can be used since no linking is needed for this) centerlane = xodr.Lane(a=2) centerlane.add_roadmark(rm_solid) # create first lanesection with two lanes lanesec1 = xodr.LaneSection(0,centerlane) lane0 = xodr.Lane(a=3) lane0.add_roadmark(rm_dashed) lane1 = xodr.Lane(a=3) lane1.add_roadmark(rm_solid) lanesec1.add_right_lane(lane0) lanesec1.add_right_lane(lane1) # create the second lanesection with a third lane emerging lanesec2 = xodr.LaneSection(100,centerlane) lane2 = xodr.Lane(a=3)
def test_lanes(): centerlane = pyodrx.Lane() ls = pyodrx.LaneSection(0, centerlane) lanes = pyodrx.Lanes() lanes.add_lanesection(ls) prettyprint(lanes.get_element())
geoms.append(xodr.Line(100)) geoms.append(xodr.Line(20)) geoms.append(xodr.Line(100)) numberofroads = len(geoms) # create planviews planviews = [] for g in geoms: pv = xodr.PlanView() pv.add_geometry(g) planviews.append(pv) # create centerlanes lanecenters = [] for i in range(numberofroads): lc = xodr.Lane(a=3) lc.add_roadmark(rm) lanecenters.append(lc) # create lanes rightlanes = [] leftlanes = [] for i in range(numberofroads): right = xodr.Lane(a=3) right.add_roadmark(rm) rightlanes.append(right) left = xodr.Lane(a=3) left.add_roadmark(rm) leftlanes.append(left) # create lanesections
from scenariogeneration import xodr import os # create the planview and the geometry planview = xodr.PlanView() planview.add_geometry(xodr.Line(500)) # create two different roadmarkings rm_solid = xodr.RoadMark(xodr.RoadMarkType.solid, 0.2) rm_dashed = xodr.RoadMark(xodr.RoadMarkType.broken, 0.2) # create a centerlane (same centerlane can be used since no linking is needed for this) centerlane = xodr.Lane(a=2) centerlane.add_roadmark(rm_solid) # create the first lanesection with two lanes lanesec1 = xodr.LaneSection(0, centerlane) lane1 = xodr.Lane(a=3) lane1.add_roadmark(rm_dashed) lane2 = xodr.Lane(a=3) lane2.add_roadmark(rm_solid) lanesec1.add_right_lane(lane1) lanesec1.add_right_lane(lane2) # create the second lanesection with one lane merging lanesec2 = xodr.LaneSection(250, centerlane) lane3 = xodr.Lane(a=3) lane3.add_roadmark(rm_dashed)