Exemple #1
0
    def accUpdate(self):
        """vérifie la position du robot toute les dt secondes
        et en déduit la vitesse et l'acceleration du robot selon les 3 axes X Y Z"""

        self.start()
        while (self.state):
            if (not self.state):
                break

            a = self.position
            va = self.vitesseVectorielle

            time.sleep(self.dt)

            b = self.position
            vb = self.vitesseVectorielle

            dx = fabs(b.x - a.x)
            dy = fabs(b.y - a.y)
            dz = fabs(b.z - a.z)
            self.vitesseVectorielle = Vecteur(dx / self.dt, dy / self.dt,
                                              dz / self.dt)

            vx = vb.x - va.x
            vy = vb.y - va.y
            vz = vb.z - va.z
            self.accelerationVectorielle = Vecteur(vx / self.dt, vy / self.dt,
                                                   vz / self.dt)
Exemple #2
0
 def __init__(self, position, direction):
     """position doit etre initialisé a la position du robot !
      (qui est constament mise a jour lors du déplacement)
     type est un string pour distinguer l'accelero des autres capteurs
        state est un booleen qui represente l'etat du capteur on/off"""
     Capteur.__init__(position, direction)
     self.state = True
     self.dt = 0.1
     self.vitesseVectorielle = Vecteur(0, 0, 0)
     self.accelerationVectorielle = Vecteur(0, 0, 0)
Exemple #3
0
 def devant(self, point):
     """cette méthode retroune True si la projection sur OXY d'un point est devant le capteur
     retroune False sinon
     """
     vecttemp = Vecteur(point.x - self.position.x,
                        point.y - self.position.y, 0)
     return self.direction * vecttemp > 0
Exemple #4
0
    def __init__(self,
                 pave,
                 rg=Objet3D(),
                 rd=Objet3D(),
                 direction=Vecteur(1, 0, 0),
                 vitesserot=0.01,
                 vitesse=5.0):
        """
        Constructeur du robot
        
        direction: Vecteur norme montrant la direction initiale du robot
        forme: Pave attendu (correspond aux methodes de deplacement)
        rd: Objet3D, roue droite
        rg: Objet3D, roue gauche
        """
        Objet3D.__init__(self)
        self.direction = direction
        self.vitesse = vitesse
        self.vitesseRot = vitesserot
        self.forme = pave
        self.centre = pave.centre.clone(
        )  # initalise le centre au centre du pave
        self.rd = rd
        self.rg = rg

        # initialisation des centres des roues
        self.rd.centre = pave.sommets[1] / 2
        self.rg.centre = pave.sommets[0] / 2
Exemple #5
0
def creerArene():
    """
    renvoi une arene avec quelques objets: ici juste un pave
    """
    arene = Arene()
    global pave
    pave = Pave(50, 50, 0)
    pave.deplacer(Vecteur(50, 50, 0))  # Le robot doit avoir une position nulle au depart pour etre a (50,50)
    arene.add(pave)
    return arene
Exemple #6
0
def clavier(event):
    """
    q, d : tourner
    z, s : avancer/reculer
    """
    effacer()
    pasRotation = pi / 100
    global pave
    global vueArene
    global Canevas
    touche = event.keysym
    if touche == 'z':
        pave.deplacer(Vecteur(0, -1, 0))
    if touche == 's':
        pave.deplacer(Vecteur(0, 1, 0))
    if touche == 'q':
        pave.tourner(-pasRotation)
    if touche == 'd':
        pave.tourner(pasRotation)
    vueArene.afficher(Canevas)
Exemple #7
0
 def __init__(self,
              pave,
              rg=Objet3D(),
              rd=Objet3D(),
              direction=Vecteur(1, 0, 0)):
     """
     :param pave: forme du robot, a priori Pave
     :param rg: roue droite
     :param rd: roue gauche
     :param direction: direction du robot
     """
     RobotAutonome.__init__(self, pave, rg, rd, direction)
     self.tete = Tete(
         self
     )  # la tete est exactement au centre du robot, elle est oriente comme le vecteur direction
Exemple #8
0
 def setUp(self):
     self.r = Robot(Pave(50, 50, 0), Objet3D(), Objet3D(), Vecteur(0, -1, 0))