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]
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]
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)
# 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)
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)
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)
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)
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
def test_spiral(): spiral = pyodrx.Spiral(0, 1, 10) p = spiral.get_element() pyodrx.prettyprint(p)
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,