Esempio n. 1
0
def test_spiral_to_zero_curv(data, expdata):
    cloth = pyodrx.Spiral(data[0], data[1], data[2])
    x, y, h, l = cloth.get_end_data(data[3], data[4], data[5])

    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[2]
Esempio n. 2
0
def test_inverted_Spiral(data):
    cloth = pyodrx.Spiral(data[0], data[1], data[2])

    end_x, end_y, end_h, end_l = cloth.get_end_data(data[3], data[4], data[5])

    end_h += np.pi

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

    start_h -= np.pi

    assert pytest.approx(start_x, 0.000001) == data[3]
    assert pytest.approx(start_y, 0.000001) == data[4]
    assert pytest.approx(start_h, 0.000001) == data[5]
Esempio n. 3
0
lanelinker.add_link(predlane=lane5, succlane=lane7)
lanelinker.add_link(predlane=lane6, succlane=lane8)

# create the lanes with the correct links
lanes = pyodrx.Lanes()
lanes.add_lanesection(lanesec1, lanelinker)
lanes.add_lanesection(lanesec2, lanelinker)
lanes.add_lanesection(lanesec3, lanelinker)

# create the road
roads.append(pyodrx.Road(2, planview, lanes))

# create junction roads
roads.append(
    pyodrx.create_road(pyodrx.Spiral(0.001, 0.02, 30),
                       id=3,
                       left_lanes=0,
                       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)
Esempio n. 4
0
# 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)

Esempio n. 5
0
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)
Esempio n. 6
0
lanelinker.add_link(predlane=lane5,succlane=lane7)
lanelinker.add_link(predlane=lane6,succlane=lane8)

# create the lanes with the correct links
lanes = pyodrx.Lanes()
lanes.add_lanesection(lanesec1,lanelinker)
lanes.add_lanesection(lanesec2,lanelinker)
lanes.add_lanesection(lanesec3,lanelinker)

# create the road
roads.append(pyodrx.Road(2,planview,lanes))


# create junction roads
roads.append(pyodrx.create_road(pyodrx.Spiral(0.001,0.02,30),id =3,left_lanes=0,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
roads[3].add_predecessor(pyodrx.ElementType.road,0,pyodrx.ContactPoint.end)
roads[3].add_successor(pyodrx.ElementType.road,2,pyodrx.ContactPoint.start)

# add connections to the second connecting road with an offset
roads[4].add_predecessor(pyodrx.ElementType.road,1,pyodrx.ContactPoint.end)
roads[4].add_successor(pyodrx.ElementType.road,2,pyodrx.ContactPoint.start,lane_offset=-2)
import pyodrx 
import numpy as np
import os

## EXAMPLE 1 
## Multiple geometries in one only road. 

##1. Create the planview 
planview = pyodrx.PlanView()

##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)
Esempio n. 8
0
import pyodrx
import numpy as np
import os

line1 = pyodrx.Line(100)

arc1 = pyodrx.Arc(0.05, angle=np.pi / 2)
line2 = pyodrx.Line(100)
arc2 = pyodrx.Arc(-0.05, angle=3 * np.pi / 4)

cloth = pyodrx.Spiral(0.001, 0.009, 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)

lane2 = pyodrx.Lane(a=4)
lane2.add_roadmark(rm)
lane3 = pyodrx.Lane(a=3)
lane3.add_roadmark(rm)
lane4 = pyodrx.Lane(a=3)
lane4.add_roadmark(rm)
lane5 = pyodrx.Lane(a=3)
Esempio n. 9
0
def test_spiral_inputs():
    cloth = pyodrx.Spiral(0.0, 0.05, 10.0)
    assert cloth.curvstart == 0
    assert cloth.curvend == 0.05
    assert cloth.length == 10
Esempio n. 10
0
def test_spiral():
    spiral = pyodrx.Spiral(0, 1, 10)

    p = spiral.get_element()
    pyodrx.prettyprint(p)
Esempio n. 11
0
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,