def test_roadmark(): mark = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2) pyodrx.prettyprint(mark.get_element()) mark = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, 1, 1, 1, pyodrx.MarkRule.no_passing, pyodrx.RoadMarkColor.standard) pyodrx.prettyprint(mark.get_element())
def __init__(self, country=CountryCodes.US): self.STD_ROADMARK = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) self.STD_START_CLOTH = 1 / 1000000000 self.country = country self.laneBuilder = LaneBuilder() pass
def __init__(self, country=CountryCodes.US): self.STD_ROADMARK = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) self.STD_START_CLOTH = 1 / 1000000000 self.country = country self.laneBuilder = LaneBuilder() self.configuration = Configuration() self.name = 'StraightRoadBuilder' pass
# create two simple roads to merge roads.append( pyodrx.create_road(pyodrx.Line(100), id=0, left_lanes=0, right_lanes=2)) roads.append( pyodrx.create_road(pyodrx.Line(100), id=1, left_lanes=0, right_lanes=1)) # manually create the final road # create the planview and the geometry planview = pyodrx.PlanView() planview.add_geometry(pyodrx.Line(200)) # create two different roadmarkings rm_solid = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) rm_dashed = pyodrx.RoadMark(pyodrx.RoadMarkType.broken, 0.2, rule=pyodrx.MarkRule.no_passing) # create a centerlane (same centerlane can be used since no linking is needed for this) centerlane = pyodrx.Lane(a=2) centerlane.add_roadmark(rm_solid) # create the first lanesection with three lanes lanesec1 = pyodrx.LaneSection(0, centerlane) lane1 = pyodrx.Lane(a=3) lane1.add_roadmark(rm_dashed) lane2 = pyodrx.Lane(a=3)
import os, sys print( f"current working dir: {os.getcwd()}") # exec(open("./fixCWD.py").read()) sys.path.append(os.path.abspath('../pyodrx')) import pyodrx import numpy as np import extensions rm = pyodrx.RoadMark(pyodrx.RoadMarkType.solid,0.2,rule=pyodrx.MarkRule.no_passing) # create geometries geoms = [] geoms.append(pyodrx.Line(100)) geoms.append(pyodrx.Spiral(0.001,0.019,30)) geoms.append(pyodrx.Line(100)) geoms.append(pyodrx.Spiral(-0.001,-0.1,30)) geoms.append(pyodrx.Line(100)) geoms.append(pyodrx.Line(20)) geoms.append(pyodrx.Line(100)) numberofroads = len(geoms) # create planviews planviews = [] for g in geoms: pv = pyodrx.PlanView() pv.add_geometry(g)
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
# create some roads roads= [] # create two simple roads to merge roads.append(pyodrx.create_road(pyodrx.Line(100),id = 0, left_lanes=0,right_lanes=2)) roads.append(pyodrx.create_road(pyodrx.Line(100),id =1,left_lanes=0,right_lanes=1)) # manually create the final road # create the planview and the geometry planview = pyodrx.PlanView() planview.add_geometry(pyodrx.Line(200)) # create two different roadmarkings rm_solid = pyodrx.RoadMark(pyodrx.RoadMarkType.solid,0.2) rm_dashed = pyodrx.RoadMark(pyodrx.RoadMarkType.broken,0.2) # create a centerlane (same centerlane can be used since no linking is needed for this) centerlane = pyodrx.Lane(a=2) centerlane.add_roadmark(rm_solid) # create the first lanesection with three lanes lanesec1 = pyodrx.LaneSection(0,centerlane) lane1 = pyodrx.Lane(a=3) lane1.add_roadmark(rm_dashed) lane2 = pyodrx.Lane(a=3) lane2.add_roadmark(rm_dashed) lane3 = pyodrx.Lane(a=3)
import pyodrx import junctions import extensions import math from junctions.LaneSides import LaneSides from extensions.LaneOffset import LaneOffset from junctions.TurnTypes import TurnTypes from extensions.ExtendedLane import ExtendedLane from junctions.LaneConfiguration import LaneConfigurationStrategies, LaneConfiguration from extensions.ExtendedRoad import ExtendedRoad from junctions.RoadLinker import RoadLinker from library.Configuration import Configuration STD_ROADMARK = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) class LaneBuilder: def __init__(self): self.config = Configuration() self.defaultLaneWidth = self.config.get("default_lane_width") self.name = 'LaneBuilder' def getStandardLanes(self, n_lanes, lane_offset, laneSides=LaneSides.BOTH, roadLength = None, isLeftTurnLane=False, isRightTurnLane=False, isLeftMergeLane=False, isRightMergeLane=False): """[summary] Don't allow both merge lanes and turn lanes in a road. Better split to two roads
##2. Create some geometries and add them to the planview line1 = pyodrx.Line(100) arc1 = pyodrx.Arc(0.05,angle=np.pi/2) line2 = pyodrx.Line(100) cloth1 = pyodrx.Spiral(0.05,-0.1,30) line3 = pyodrx.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 = pyodrx.RoadMark(pyodrx.RoadMarkType.solid,0.2) ##4. Create centerlane centerlane = pyodrx.Lane(a=2) centerlane.add_roadmark(rm) ##5. Create lane section form the centerlane lanesec = pyodrx.LaneSection(0,centerlane) ##6. Create left and right lanes lane2 = pyodrx.Lane(a=3) lane2.add_roadmark(rm) lane3 = pyodrx.Lane(a=3) lane3.add_roadmark(rm) ##7. Add lanes to lane section
def __init__(self): self.STD_ROADMARK = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2, rule=pyodrx.MarkRule.no_passing) self.STD_START_CLOTH = 1 / 1000000000 pass