Пример #1
0
    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
Пример #2
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]
Пример #3
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] 
Пример #4
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
Пример #5
0
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
Пример #7
0
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)
Пример #8
0
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)
Пример #10
0
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,