fix
This commit is contained in:
parent
06b0f0caf1
commit
a8b3647ddd
25
Car.py
25
Car.py
@ -91,14 +91,16 @@ class Car():
|
|||||||
carsHere = self.controller.getCarsOnLane(self.route[edgeInd].getID(), laneId)
|
carsHere = self.controller.getCarsOnLane(self.route[edgeInd].getID(), laneId)
|
||||||
while(l<maxDist):
|
while(l<maxDist):
|
||||||
endPos = laneShape[shapeInd+1]
|
endPos = laneShape[shapeInd+1]
|
||||||
carsHere = filter(lambda c: c.laneInd == shapeInd, carsHere)
|
#carsHere = filter(lambda c: c.laneInd == shapeInd, carsHere)
|
||||||
if(shapeInd == self.laneInd and edgeInd == self.index):
|
|
||||||
|
if l == 0:
|
||||||
carsHere = filter(lambda c: dist(c.pos,endPos) < dist(self.pos,endPos),carsHere)
|
carsHere = filter(lambda c: dist(c.pos,endPos) < dist(self.pos,endPos),carsHere)
|
||||||
closest = None
|
closest = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
closest = min(carsHere, key=lambda c: dist(c.pos,laneShape[shapeInd]))
|
closest = min(carsHere, key=lambda c: dist(c.pos,laneShape[shapeInd]))
|
||||||
except ValueError:
|
except ValueError as e:
|
||||||
if(shapeInd == self.laneInd and edgeInd == self.index):
|
if l == 0:
|
||||||
l+=dist(self.pos,endPos)
|
l+=dist(self.pos,endPos)
|
||||||
else:
|
else:
|
||||||
l+=dist(laneShape[shapeInd],endPos)
|
l+=dist(laneShape[shapeInd],endPos)
|
||||||
@ -113,12 +115,21 @@ class Car():
|
|||||||
laneShape = newLane[0]
|
laneShape = newLane[0]
|
||||||
laneId = newLane[2]
|
laneId = newLane[2]
|
||||||
else:
|
else:
|
||||||
return closest
|
if l == 0:
|
||||||
|
l+=dist(self.pos, closest.pos)
|
||||||
|
else:
|
||||||
|
l+=dist(laneShape[shapeInd], closest.pos)
|
||||||
|
if l <= maxDist:
|
||||||
|
self.leaderDist = l
|
||||||
|
return closest
|
||||||
|
else:
|
||||||
|
return
|
||||||
return
|
return
|
||||||
|
|
||||||
def draw(self,painter):
|
def draw(self,painter):
|
||||||
pt = QPointF(*self.pos)
|
pt = QPointF(*self.pos)
|
||||||
painter.drawEllipse(pt,3,3)
|
painter.drawEllipse(pt,3,3)
|
||||||
|
#painter.drawEllipse(pt,100,100)
|
||||||
|
|
||||||
def conduite(self,vmax,leader,dt):
|
def conduite(self,vmax,leader,dt):
|
||||||
if(leader is None):
|
if(leader is None):
|
||||||
@ -140,7 +151,7 @@ class Car():
|
|||||||
self.signals.addGraphPt.emit((1,self.controller.t,vsec))
|
self.signals.addGraphPt.emit((1,self.controller.t,vsec))
|
||||||
|
|
||||||
def update(self,dt):
|
def update(self,dt):
|
||||||
self.leader=self.getLeader(50)
|
self.leader=self.getLeader(100)
|
||||||
|
|
||||||
self.conduite(self.vmax,self.leader,dt)
|
self.conduite(self.vmax,self.leader,dt)
|
||||||
|
|
||||||
@ -169,4 +180,4 @@ class Car():
|
|||||||
|
|
||||||
self.signals.updateDisp.emit(("Position", self.pos))
|
self.signals.updateDisp.emit(("Position", self.pos))
|
||||||
self.signals.updateDisp.emit(("Vitesse", self.v))
|
self.signals.updateDisp.emit(("Vitesse", self.v))
|
||||||
self.signals.updateDisp.emit(("Leader", self.leader if self.leader is None else self.leader.id))
|
self.signals.updateDisp.emit(("Leader", self.leader if self.leader is None else f"{self.leader.id} @ {self.leaderDist:.2f}m"))
|
||||||
|
@ -95,7 +95,7 @@ class CarController:
|
|||||||
|
|
||||||
def getCarsOnLane(self,edgeID,laneID):
|
def getCarsOnLane(self,edgeID,laneID):
|
||||||
cars = self.getCarsOnEdge(edgeID)
|
cars = self.getCarsOnEdge(edgeID)
|
||||||
return cars #filter(lambda c: c.laneId == laneID,cars)
|
return filter(lambda c: c.laneId == laneID,cars)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if self.map.net is None:
|
if self.map.net is None:
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
from Map import Map
|
from Map import Map
|
||||||
from CarController import CarController
|
from CarController import CarController
|
||||||
|
|
||||||
@ -32,7 +34,11 @@ class mainLoop(QObject):
|
|||||||
self.fpsTimer.start()
|
self.fpsTimer.start()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
self.controller.update()
|
try:
|
||||||
|
self.controller.update()
|
||||||
|
except:
|
||||||
|
(type, value, traceback) = sys.exc_info()
|
||||||
|
print(type, value, traceback)
|
||||||
|
|
||||||
def openNetwork(self, filename):
|
def openNetwork(self, filename):
|
||||||
if filename == '':
|
if filename == '':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user