Skip to content

Commit bfe270d

Browse files
committed
Merge branch 'roundabouts' of https://github.com/AugmentedDesignLab/junction-art into roundabouts
2 parents 6a92003 + 64f062b commit bfe270d

File tree

6 files changed

+281
-390
lines changed

6 files changed

+281
-390
lines changed

junctionart/extensions/ExtendedOpenDrive.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ def adjust_startpointsByPredecessor(self):
183183
if curAsSuc is None:
184184
raise Exception(f"current road {currRoad.id} is not an extended successor of its predecessor. Cannot adjust start point")
185185

186-
if curAsSuc.cp != pyodrx.ContactPoint.start:
187-
raise Exception(f"current road {currRoad.id}'s cp is not start. Cannot adjust start point")
186+
# if curAsSuc.cp != pyodrx.ContactPoint.start:
187+
# raise Exception(f"current road {currRoad.id}'s cp is not start. Cannot adjust start point")
188188

189189
if self.getPredecessorRoad(currRoad).planViewAdjusted():
190190
self.adjust_road_wrt_neightbour(roadIdStr, currRoad.predecessor.element_id, currRoad.predecessor.contact_point, 'predecessor')

junctionart/junctions/ConnectionBuilder.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,47 @@ def createRoadsForLinkConfig(self, nextRoadId, roadDic, firstRoadId, incomingRoa
245245

246246
logging.debug(f"{self.name}: created connection for link {link}")
247247

248+
return newConnectionRoads
249+
250+
def createRoadsForRoundaboutLinkConfig(self, nextRoadId, roadDic, cp1, cp2, linkConfig):
251+
"""[summary]
252+
253+
Args:
254+
nextRoadId ([type]): [description]
255+
roadDic ([type]): Instead of a list of current roads, supply a dictionary where each road is keyed with its id as a string.
256+
firstRoadId ([type]): [description]
257+
incomingRoad ([type]): [description]
258+
cp1 ([type]): cp of the first road that is connected to the intersection.
259+
linkConfig ([type]): a list of tuples where each tuple defines a unique connection between two lanes. A link is a tuple ('incoming-road-id:lane-id', 'outgoing-road-id:lane-id')
260+
261+
Returns:
262+
[type]: [description]
263+
"""
264+
newConnectionRoads = []
265+
for i in range(len(linkConfig)):
266+
link = linkConfig[i]
267+
268+
fromUniqueLaneId = link[0]
269+
incomingRoadId = int(fromUniqueLaneId.split(':')[0])
270+
incomingLaneId = int(fromUniqueLaneId.split(':')[1])
271+
272+
toUniqueLaneId = link[1]
273+
outgoingRoadId = int(toUniqueLaneId.split(':')[0])
274+
outgoingLaneId = int(toUniqueLaneId.split(':')[1])
275+
276+
incomingRoad = roadDic[incomingRoadId]
277+
outgoingRoad = roadDic[outgoingRoadId]
278+
279+
280+
newConnection = self.createSingleLaneConnectionRoad(nextRoadId, incomingRoad, outgoingRoad, incomingLaneId, outgoingLaneId, cp1, cp2)
281+
282+
# newConnection.updatePredecessorOffset(-1 if i % 2 != 0 else 1)
283+
# if i % 2 != 0:
284+
# newConnection.updatePredecessorOffset(-1)
285+
newConnectionRoads.append(newConnection)
286+
287+
nextRoadId += 1
288+
289+
logging.debug(f"{self.name}: created connection for link {link}")
290+
248291
return newConnectionRoads

0 commit comments

Comments
 (0)