예제 #1
0
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())
예제 #2
0
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())
예제 #3
0
def test_lanelinker():

    lane = pyodrx.Lane(a=3)
    lane._set_lane_id(1)
    lane.add_link('successor', '2')

    prettyprint(lane.get_element())
예제 #4
0
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())
예제 #5
0
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())
예제 #6
0
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())
예제 #7
0
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)
예제 #8
0
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
예제 #9
0
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)
예제 #11
0
# 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)
예제 #12
0
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)