def road(self, **kwargs): road = xodr.create_road([ xodr.Spiral(0.0000000001, kwargs['road_curvature'], 100), xodr.Arc(kwargs['road_curvature'], 50), xodr.Spiral(kwargs['road_curvature'], 0.0000000001, 100), xodr.Line(100) ], id=0, left_lanes=2, right_lanes=2) odr = xodr.OpenDrive('myroad') odr.add_road(road) odr.adjust_roads_and_lanes() return odr
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]
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() prettyprint(p)
from scenariogeneration import xodr, prettyprint import numpy as np import os ## EXAMPLE 1 ## Multiple geometries in one only road. ##1. Create the planview planview = xodr.PlanView() ##2. Create some geometries and add them to the planview line1 = xodr.Line(100) 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
lanelinker.add_link(predlane=lane4,succlane=lane7) # create the lanes with the correct links lanes = xodr.Lanes() lanes.add_lanesection(lanesec1,lanelinker) lanes.add_lanesection(lanesec2,lanelinker) lanes.add_lanesection(lanesec3,lanelinker) # create the road roads.append(xodr.Road(0,planview,lanes)) # create the other roads roads.append(xodr.create_road(xodr.Line(100),id =1,left_lanes=0,right_lanes=2)) roads.append(xodr.create_road(xodr.Line(100),id =2,left_lanes=0,right_lanes=1)) # create the junction roads roads.append(xodr.create_road(xodr.Spiral(0.001,0.02,30),id =3,left_lanes=0,right_lanes=2,road_type=1)) roads.append(xodr.create_road(xodr.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(xodr.ElementType.junction,1) roads[1].add_predecessor(xodr.ElementType.junction,1) roads[2].add_predecessor(xodr.ElementType.junction,1) # add connections to the first junction road roads[3].add_predecessor(xodr.ElementType.road,0,xodr.ContactPoint.end) roads[3].add_successor(xodr.ElementType.road,1,xodr.ContactPoint.start) # add connections to the second junction road, together with an offset roads[4].add_predecessor(xodr.ElementType.road,0,xodr.ContactPoint.end,lane_offset=-2) roads[4].add_successor(xodr.ElementType.road,2,xodr.ContactPoint.start)
from scenariogeneration import xodr import os # create some roads roads = [] roads.append( xodr.create_road(xodr.Line(100), id=0, left_lanes=1, right_lanes=2)) roads.append( xodr.create_road(xodr.Line(100), id=1, left_lanes=0, right_lanes=1)) roads.append( xodr.create_road(xodr.Line(100), id=2, left_lanes=1, right_lanes=3)) roads.append( xodr.create_road(xodr.Spiral(0.001, 0.02, 30), id=3, left_lanes=1, right_lanes=2, road_type=1)) roads.append( xodr.create_road(xodr.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(xodr.ElementType.junction, 1) roads[1].add_successor(xodr.ElementType.junction, 1) roads[2].add_predecessor(xodr.ElementType.junction, 1) # add connections to the first connecting road
from scenariogeneration import xodr import numpy as np import os rm = xodr.RoadMark(xodr.RoadMarkType.solid, 0.2) # create geometries geoms = [] geoms.append(xodr.Line(100)) geoms.append(xodr.Spiral(0.001, 0.019, 30)) geoms.append(xodr.Line(100)) geoms.append(xodr.Spiral(-0.001, -0.1, 30)) 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)
from scenariogeneration import xodr import os # create some simple roads roads = [] # start road roads.append( xodr.create_road([ xodr.Spiral(-0.004, 0.00001, 100), xodr.Spiral(0.00001, 0.005, 50), xodr.Arc(0.005, 50) ], id=0, left_lanes=3, right_lanes=4)) # intermittent road roads.append( xodr.create_road( [xodr.Spiral(0.0001, 0.003, 65), xodr.Spiral(0.003, 0.00001, 50)], id=1, left_lanes=3, right_lanes=3)) #exit road roads.append(xodr.create_road(xodr.Line(50), id=2, left_lanes=0, right_lanes=1)) # junctions for exit roads.append( xodr.create_road(xodr.Spiral(0.005, 0.0001, 50), id=3,