コード例 #1
0
    def createPVForLine(self, length):
        line1 = pyodrx.Line(length)

        # create planviews
        pv = extensions.ExtendedPlanview()
        pv.add_geometry(line1)
        return pv
コード例 #2
0
def test_line_calc(data, expdata):
    line = pyodrx.Line(data[0])
    x, y, h, l = line.get_end_data(data[1], data[2], data[3])
    assert pytest.approx(x, 0.000001) == expdata[0]
    assert pytest.approx(y, 0.000001) == expdata[1]
    assert pytest.approx(h, 0.000001) == expdata[2]
    assert pytest.approx(l, 0.000001) == data[0]
コード例 #3
0
def test_inverted_Line(data):
    line = pyodrx.Line(data[0])

    end_x, end_y, end_h, end_l = line.get_end_data(data[1], data[2], data[3])

    end_h += np.pi

    start_x, start_y, start_h, start_l = line.get_start_data(
        end_x, end_y, end_h)

    start_h -= np.pi

    assert pytest.approx(start_x, 0.000001) == data[1]
    assert pytest.approx(start_y, 0.000001) == data[2]
    assert pytest.approx(start_h, 0.1) == data[3]
コード例 #4
0
import pyodrx

import os

# 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,
                           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)
コード例 #5
0
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)
    planviews.append(pv)
コード例 #6
0
import pyodrx 
import numpy as np
import os



planview = pyodrx.PlanView()

# create some geometries and add to the planview
line1 = pyodrx.Line(100)
planview.add_geometry(line1)



arc1 = pyodrx.Arc(0.05,angle=np.pi/2)
planview.add_geometry(arc1)


line2 = pyodrx.Line(100)
planview.add_geometry(line2)

arc2 = pyodrx.Arc(-0.05,angle=np.pi/2)
planview.add_geometry(arc2)



# create a solid roadmark
rm = pyodrx.RoadMark(pyodrx.RoadMarkType.solid,0.2,rule=pyodrx.MarkRule.no_passing)

# create centerlane
centerlane = pyodrx.Lane(a=2)
コード例 #7
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
コード例 #8
0
ファイル: highway_example.py プロジェクト: tlever/pyodrx
import pyodrx 
import os

# create some simple roads
roads= []
# start road
roads.append(pyodrx.create_road([pyodrx.Spiral(-0.004,0.00001,100), pyodrx.Spiral(0.00001,0.005,50), pyodrx.Arc(0.005,50)],id =0,left_lanes=3,right_lanes=4))
# intermittent road
roads.append(pyodrx.create_road([pyodrx.Spiral(0.0001,0.003,65), pyodrx.Spiral(0.003,0.00001,50) ],id =1,left_lanes=3,right_lanes=3))


#exit road
roads.append(pyodrx.create_road(pyodrx.Line(50),id =2,left_lanes=0,right_lanes=1))
# junctions for exit
roads.append(pyodrx.create_road(pyodrx.Spiral(0.005,0.0001,50),id =3,left_lanes=3,right_lanes=3,road_type=1)) # continue
roads.append(pyodrx.create_road(pyodrx.Spiral(0.005,-0.02,100),id =4,left_lanes=0,right_lanes=1,road_type=1)) # exit

# final road
roads.append(pyodrx.create_road([pyodrx.Spiral(-0.00001,-0.003,45),pyodrx.Arc(-0.003,60)],id =5,left_lanes=2,right_lanes=3))

# entry junction
roads.append(pyodrx.create_road([pyodrx.Line(30) ],id =6,left_lanes=2,right_lanes=3,road_type=2)) # continue
roads.append(pyodrx.create_road([pyodrx.Spiral(0.004,0.000001,50) ],id =7,left_lanes=1,right_lanes=0,road_type=2)) # entry

# entry road
roads.append(pyodrx.create_road(pyodrx.Arc(0.004,60),id =8,left_lanes=1,right_lanes=0))


# add predecessors and succesors to the non junction roads
roads[0].add_successor(pyodrx.ElementType.junction,1)
roads[1].add_predecessor(pyodrx.ElementType.junction,1)
コード例 #9
0
ファイル: two_roads.py プロジェクト: pyoscx/pyodrx
import pyodrx
import numpy as np
import os

odr = pyodrx.OpenDrive('myroad')

#---------------- Road 1
planview = pyodrx.PlanView(0, 0, 0)

# create some geometries and add to the planview
planview.add_geometry(pyodrx.Line(100))

# create a solid roadmark
rm = pyodrx.RoadMark(pyodrx.RoadMarkType.solid, 0.2)

# create centerlane
centerlane_1 = pyodrx.Lane(a=2)
centerlane_1.add_roadmark(rm)
lanesec_1 = pyodrx.LaneSection(0, centerlane_1)

# add a driving lane
lane2_1 = pyodrx.Lane(a=3.1)
lane2_1.add_roadmark(rm)
lanesec_1.add_left_lane(lane2_1)

lane3_1 = pyodrx.Lane(a=3.1)
lane3_1.add_roadmark(rm)
lanesec_1.add_right_lane(lane3_1)

## finalize the road
lanes_1 = pyodrx.Lanes()
コード例 #10
0
ファイル: road_merge.py プロジェクト: tlever/pyodrx
import pyodrx

import os

# create some roads
roads = []
roads.append(
    pyodrx.create_road(pyodrx.Line(100), id=0, left_lanes=1, right_lanes=2))
roads.append(
    pyodrx.create_road(pyodrx.Line(100), id=1, left_lanes=0, right_lanes=1))
roads.append(
    pyodrx.create_road(pyodrx.Line(100), id=2, left_lanes=1, right_lanes=3))
roads.append(
    pyodrx.create_road(pyodrx.Spiral(0.001, 0.02, 30),
                       id=3,
                       left_lanes=1,
                       right_lanes=2,
                       road_type=1))
roads.append(
    pyodrx.create_road(pyodrx.Spiral(-0.001, -0.02, 30),
                       id=4,
                       left_lanes=0,
                       right_lanes=1,
                       road_type=1))

# add some connections to non junction roads
roads[0].add_successor(pyodrx.ElementType.junction, 1)
roads[1].add_successor(pyodrx.ElementType.junction, 1)
roads[2].add_predecessor(pyodrx.ElementType.junction, 1)

# add connections to the first connecting road
コード例 #11
0
ファイル: road_split.py プロジェクト: tlever/pyodrx
import pyodrx 
import os

# create some simple roads
roads= []
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))
roads.append(pyodrx.create_road(pyodrx.Line(100),id =2,left_lanes=0,right_lanes=1))
roads.append(pyodrx.create_road(pyodrx.Spiral(0.001,0.02,30),id =3,left_lanes=0,right_lanes=1,road_type=1))
roads.append(pyodrx.create_road(pyodrx.Spiral(-0.001,-0.02,30),id =4,left_lanes=0,right_lanes=1,road_type=1))

# add predecessors and succesors to the non junction roads
roads[0].add_successor(pyodrx.ElementType.junction,1)
roads[1].add_predecessor(pyodrx.ElementType.junction,1)
roads[2].add_predecessor(pyodrx.ElementType.junction,1)

# add connections to the first junction road
roads[3].add_predecessor(pyodrx.ElementType.road,0,pyodrx.ContactPoint.end)
roads[3].add_successor(pyodrx.ElementType.road,1,pyodrx.ContactPoint.start)

# add connections to the second junction road, together with an offset
roads[4].add_predecessor(pyodrx.ElementType.road,0,pyodrx.ContactPoint.end,lane_offset=-1)
roads[4].add_successor(pyodrx.ElementType.road,2,pyodrx.ContactPoint.start)

# create the junction struct 
junction = pyodrx.create_junction(roads[3:],1,roads[0:3])

# create the opendrive
odr = pyodrx.OpenDrive('myroad')
for r in roads:
    odr.add_road(r)
コード例 #12
0
import pyodrx
import os

# create the planview and the geometry
planview = pyodrx.PlanView()

planview.add_geometry(pyodrx.Line(500))

# 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 two 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_solid)

lanesec1.add_right_lane(lane1)
lanesec1.add_right_lane(lane2)
コード例 #13
0
def test_line():
    line = pyodrx.Line(1)

    p = line.get_element()
    pyodrx.prettyprint(p)
コード例 #14
0
def test_geometry():
    geom = pyodrx.geometry._Geometry(1, 2, 3, 4, pyodrx.Line(1))
    p = geom.get_element()
    pyodrx.prettyprint(p)
コード例 #15
0
ファイル: highway_example.py プロジェクト: pyoscx/pyodrx
    ],
                       id=0,
                       left_lanes=3,
                       right_lanes=4))
# intermittent road
roads.append(
    pyodrx.create_road(
        [pyodrx.Spiral(0.0001, 0.003, 65),
         pyodrx.Spiral(0.003, 0.00001, 50)],
        id=1,
        left_lanes=3,
        right_lanes=3))

#exit road
roads.append(
    pyodrx.create_road(pyodrx.Line(50), id=2, left_lanes=0, right_lanes=1))
# junctions for exit
roads.append(
    pyodrx.create_road(pyodrx.Spiral(0.005, 0.0001, 50),
                       id=3,
                       left_lanes=3,
                       right_lanes=3,
                       road_type=1))  # continue
roads.append(
    pyodrx.create_road(pyodrx.Spiral(0.005, -0.02, 100),
                       id=4,
                       left_lanes=0,
                       right_lanes=1,
                       road_type=1))  # exit

# final road