Exemple #1
0
    def cloneRoadWithGeoLanesAndType(self, road, newId):
        """These items are referenced from the original road
        planview, lanes
        These items are not referenced (needs to be rebuilt)
        name, rule, links, successors, predecessors, adjusted

        Args:
            road ([type]): [description]
            newId ([type]): [description]
        """
        newRoad = pyodrx.Road(newId, road.planview, road.lanes, road.road_type)
        return newRoad
Exemple #2
0
lanelinker = pyodrx.LaneLinker()
lanelinker.add_link(predlane=lane1, succlane=lane4)
lanelinker.add_link(predlane=lane2, succlane=lane5)
lanelinker.add_link(predlane=lane3, succlane=lane6)

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))
Exemple #3
0
    lsec.add_left_lane(leftlanes[i])
    lanesections.append(lsec)

## create lanes
lanes = []
for l in lanesections:
    lanes1 = pyodrx.Lanes()
    lanes1.add_lanesection(l)
    lanes.append(lanes1)


# finally create the roads 
roads = []
roadtypes = [-1,1,-1,1,-1,1,-1]
for i in range(numberofroads):
    roads.append(pyodrx.Road(i,planviews[i],lanes[i],road_type=roadtypes[i]))

roads[0].add_successor(pyodrx.ElementType.junction,1)

roads[1].add_predecessor(pyodrx.ElementType.road,0,pyodrx.ContactPoint.end)
roads[1].add_successor(pyodrx.ElementType.road,2,pyodrx.ContactPoint.start)

roads[2].add_predecessor(pyodrx.ElementType.junction,1)

roads[3].add_predecessor(pyodrx.ElementType.road,0,pyodrx.ContactPoint.end)
roads[3].add_successor(pyodrx.ElementType.road,4,pyodrx.ContactPoint.start)

roads[4].add_predecessor(pyodrx.ElementType.junction,1)

roads[5].add_predecessor(pyodrx.ElementType.road,0,pyodrx.ContactPoint.end)
roads[5].add_successor(pyodrx.ElementType.road,6,pyodrx.ContactPoint.start)

# add a driving lane
lane2 = pyodrx.Lane(a=3)
lane2.add_roadmark(rm)

lanesec.add_left_lane(lane2)

lane3 = pyodrx.Lane(a=3)
lane3.add_roadmark(rm)

lanesec.add_right_lane(lane3)

## finalize the road
lanes = pyodrx.Lanes()
lanes.add_lanesection(lanesec)




road = pyodrx.Road(1,planview,lanes)

odr = pyodrx.OpenDrive('myroad')

odr.add_road(road)
odr.adjust_roads_and_lanes()
pyodrx.prettyprint(odr.get_element())

pyodrx.run_road(odr,os.path.join('..','pyoscx','esmini'))

Exemple #5
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
Exemple #6
0
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()
lanes_1.add_lanesection(lanesec_1)

road = pyodrx.Road(1, planview, lanes_1)

odr.add_road(road)

#---------------- Road 2

planview2 = pyodrx.PlanView(x_start=0, y_start=10, h_start=np.pi / 2)
# planview2 = pyodrx.PlanView()

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

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

# create centerlane
Exemple #7
0
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)
lane5.add_roadmark(rm)

lanesec.add_left_lane(lane2)
lanesec.add_left_lane(lane3)
lanesec.add_right_lane(lane4)
lanesec.add_right_lane(lane5)

laneSections = LaneSections()
laneSections.add_lanesection(lanesec)

road = pyodrx.Road(1, planview, laneSections)

odr = pyodrx.OpenDrive('myroad')

odr.add_road(road)

odr.adjust_roads_and_lanes()

extensions.view_road(
    odr,
    os.path.join('..', 'C:\\Users\\ishaa\\Downloads\\roadGen\\esmini-master'))
extensions.simulate_road(
    odr,
    os.path.join('..', 'C:\\Users\\ishaa\\Downloads\\roadGen\\esmini-master'))