Example #1
0
 def simulateMovement(self, x, y, nextAngle, direction):
     ligne = Ligne("", self.x, self.y, x, y, "purple")
     # simulate movement
     movingAngle = self.normalizeAngle(ligne.getAngle() +
                                       (180 if direction < 0 else 0))
     x = 0
     y = 0
     for p in range(0, (int)(ligne.getlongeur())):
         ratio = (1.0 / ligne.getlongeur()) * p
         ratioDest = 1 - ratio
         x = ligne.x1 * ratioDest + ligne.x2 * ratio
         y = ligne.y1 * ratioDest + ligne.y2 * ratio
         self.setPosition(x, y, movingAngle, direction)
         if webInterface.instance and webInterface.instance.runningState == RunningState.STOP:
             return False
         if type(self.collisionDetected) != bool:
             collisionX, collisionY = self.collisionDetected
             print "\t \t Obstacle, stopping robot"
             errorObstacle = True
             break
         elif self.collisionDetected:
             print "\t \t Obstacle, stopping robot"
             errorObstacle = True
             break
         time.sleep(self.simulationSpeed)
     self.setPosition(x, y, nextAngle, 0)
Example #2
0
 def simulateMovement(self, x, y, nextAngle, direction):
     ligne = Ligne("", self.x, self.y, x, y, "purple")
     # simulate movement
     movingAngle = self.normalizeAngle(ligne.getAngle() +
                                       (180 if direction < 0 else 0))
     for p in range(0, (int)(ligne.getlongeur())):
         ratio = (1.0 / ligne.getlongeur()) * p
         ratioDest = 1 - ratio
         self.setPosition(ligne.x1 * ratioDest + ligne.x2 * ratio,
                          ligne.y1 * ratioDest + ligne.y2 * ratio,
                          movingAngle)
         if webInterface.instance and webInterface.instance.runningState == RunningState.STOP:
             return False
         time.sleep(self.simulationSpeed)
     self.setPosition(ligne.x2, ligne.y2, nextAngle)
Example #3
0
 def eviterObstacle(self, absoluteObstacleAngle, direction=1):
     print("\t \tEscape from A=" + str(absoluteObstacleAngle))
     #Get opposed angle
     if absoluteObstacleAngle > 0:
         newAngle = absoluteObstacleAngle - 180
     else:
         newAngle = absoluteObstacleAngle + 180
     #newAngle = absoluteObstacleAngle
     xprev = self.x
     yprev = self.y
     newx = xprev + 300 * math.cos(newAngle * 0.0174532925)  #rad
     newy = yprev + 300 * math.sin(newAngle * 0.0174532925)  #rad
     ligne = Ligne("", xprev, yprev, newx, newy, "purple")
     distance = -1 * direction * ligne.getlongeur()
     #self.aveugler()
     time.sleep(0.2)
     self.seDeplacerDistanceAngle(distance, 0, 0.4, 0)
     time.sleep(0.2)
     #self.rendreVue()
     time.sleep(0.2)
     return True
     #search for a free opposed movment
     """escapePointInteretList = list(self.listPointInteret)
     escapeObstacles = self.chercher.pointContenuListe(xprev, yprev, escapePointInteretList)
     for elem in escapeObstacles:
         escapePointInteretList.remove(elem)
     for size in [400, 300, 250]:
         for a in range(0, 41, 10):
             for side in [-1, 1]:
                 lineTest = Ligne("", xprev, yprev, newx, newy, "purple")
                 lineTest.resize(size)
                 testAngle = lineTest.getAngle()+a*side
                 lineTest.rotate(lineTest.getAngle()+a*side)
                 if not self.chercher.enCollisionCarte(lineTest, escapePointInteretList):
                     print("\t \tFound collision escape")
                     print("\t \tEscape angle=" + str(lineTest.getAngle()))
                     distance = -1*direction*lineTest.getlongeur()
                     angleToDo = self.getAngleToDo(lineTest.getAngle())
                     if angleToDo>0:
                         angleToDo-=180
                     else:
                         angleToDo+=180
                     self.seDeplacerDistanceAngle(distance, angleToDo, 0.2, 0)
                     return True
                 elif (self.fenetre):
                     lineTest.dessiner(self.fenetre)
                     self.fenetre.win.redraw()"""
     return False
Example #4
0
 def extendLinePoint(self, forme, x, y):
     ligne = Ligne("", forme.x, forme.y, x, y)
     ligne.resize(ligne.getlongeur() + 30)
     point = {"x": ligne.x2, "y": ligne.y2}
     return point