Ejemplo n.º 1
0
 def __init__(self):
     self.parent = 0
     self.position = Vector2(0,0)
     self.rotation = Vector2(0,0)
     self.rotateArc = 0
     self.forward = 1
     self.f = 0
     self.h = 0
     self.hash = ""
Ejemplo n.º 2
0
    def superGOGO(self,transformInfomation,obstacle_list):
        self.position = Vector2(transformInfomation[0], transformInfomation[1])
        self.rotation = Vector2(transformInfomation[2], transformInfomation[3])
        shoes_position = Vector2(transformInfomation[4], transformInfomation[5])
        shoes_rotation = Vector2(transformInfomation[6], transformInfomation[7])
        goal_position = Vector2(transformInfomation[8], transformInfomation[9])
        goal_rotation = Vector2(transformInfomation[10], transformInfomation[11])

        goal1_pos = 0
        goal1_rot = 0
        goal2_pos = 0
        goal2_rot = 0
        if True : #not self.GETSTEP[0] :
            goal1_pos = shoes_position + Vector2(-1*(SHOES_WIDTH /2 + ZUMO_LENGTH /2),0)
            goal1_rot = shoes_rotation
            r1 = Astar.FindRoute(self.position, self.rotation, goal1_pos, goal1_rot, obstacle_list)
            #if self.position == goal1_pos and self.rotation == goal1_rot :
                #self.GETSTEP[0] == True

        if True : #self.GETSTEP[0] and not self.GETSTEP[1] :
            goal2_pos = goal_position + Vector2(0, -1*(SHOES_LENGTH + ZUMO_LENGTH))
            goal2_rot = goal_rotation
            r2 = Astar.FindRoute(goal1_pos, goal1_rot, goal2_pos, goal2_rot, obstacle_list)
            #if self.position == goal1_pos and self.rotation == goal1_rot :
            #    self.GETSTEP[1] == True
        r1.extend(r2)
        return r1
Ejemplo n.º 3
0
def bezier(t, points):
    """Calculate coordinate of a point in the bezier curve"""
    n = len(points) - 1
    x = y = 0
    for i, pos in enumerate(points):
        bern = bernstein(t, i, n)
        x += pos.x * bern
        y += pos.y * bern
    return Vector2(x, y)
Ejemplo n.º 4
0
    def gogoBezier(self,transformInfomation,):
        self.position = Vector2(transformInfomation[0], transformInfomation[1])
        self.rotation = Vector2(transformInfomation[2], transformInfomation[3])
        shoes_position = Vector2(transformInfomation[4], transformInfomation[5])
        shoes_rotation = Vector2(transformInfomation[6], transformInfomation[7])
        target_position = Vector2(transformInfomation[8], transformInfomation[9])
        target_rotation = Vector2(transformInfomation[10], transformInfomation[11])

        goal1_pos = shoes_position + Vector2(-1 * (SHOES_WIDTH / 2 + ZUMO_LENGTH / 2), 0)
        goal1_rot = shoes_rotation

        goal2_pos = target_position + Vector2(0, -1 * (SHOES_LENGTH + ZUMO_LENGTH))
        goal2_rot = target_rotation

        r1 = Bezier.findRoute(self.position, self.rotation, goal1_pos, goal1_rot)
        r2 = Bezier.findRoute(goal1_pos, goal1_rot, goal2_pos, goal2_rot)
        r1.extend(r2)
        return r1
Ejemplo n.º 5
0
    def gogoSimple(self,transformInfomation):
        #it always go forward first once and rotate once secondly
        self.position = Vector2(transformInfomation[0], transformInfomation[1])
        self.rotation = Vector2(transformInfomation[2], transformInfomation[3])
        shoes_position = Vector2(transformInfomation[4], transformInfomation[5])
        shoes_rotation = Vector2(transformInfomation[6], transformInfomation[7])
        target_position = Vector2(transformInfomation[8], transformInfomation[9])
        target_rotation = Vector2(transformInfomation[10], transformInfomation[11])

        goal1_pos = shoes_position + Vector2(-1*(SHOES_WIDTH /2 + ZUMO_LENGTH /2),0)
        goal1_rot = shoes_rotation

        goal2_pos = target_position + Vector2(0, -1*(SHOES_LENGTH + ZUMO_LENGTH))
        goal2_rot = target_rotation

        self.route.append(self.position)

        inter1 = Vector2(self.position.x, goal1_pos.y)
        self.route.append(inter1)
        distance = (inter1 - self.position).magnitude()
        left = SPEED * 5
        right = SPEED * 5
        time = makeFour(int(distance / SPEED *1000))
        self.action.append(["+100","+100",time])
        self.action.append(rotateAction(-PI/2))

        inter2 = Vector2 (goal2_pos.x - 0.5 * ZUMO_LENGTH, goal1_pos.y)
        self.route.append(inter2)
        distance = (inter2 - inter1 ).magnitude()
        time = makeFour(int(distance / SPEED * 1000))
        self.action.append(["+100","+100",time])

        inter3 = inter2 + Vector2(-0.3 * ZUMO_LENGTH,0)
        self.route.append(inter3)
        distance = (inter3 - inter2).magnitude()
        self.action.append(["-100","-100", makeFour(int (distance / SPEED * 1000 ))])

        self.action.append(rotateAction(-PI/2))

        inter4 = inter3 + Vector2(0, -1*(0.5 * SHOES_LENGTH + 0.8 * SHOES_WIDTH))
        self.route.append(inter4)
        distance = (inter4 - inter3).magnitude()
        self.action.append(["+100","+100",makeFour( int (distance / SPEED * 1000 ))])

        self.action.append(rotateAction(PI/2))

        inter5 = Vector2(goal2_pos.x, inter4.y)
        self.route.append(inter5)
        distance = (inter5 - inter4).magnitude()
        self.action.append(["+100","+100",makeFour(int (distance / SPEED * 1000 ))])

        self.action.append(rotateAction(PI/2))

        self.route.append(goal2_pos)
        distance = (goal2_pos - inter5).magnitude()
        self.action.append(["+100","+100",makeFour( int (distance / SPEED * 1000 ))])
Ejemplo n.º 6
0
 def __init__(self):
     self.position = Vector2(0,0)
     self.rotation = Vector2(0,0)
     self.route = list() #[target points ,target rotation]
     self.action = list()
     self.GETSTEP = [False, False, False] #arrive shoes ,
Ejemplo n.º 7
0
from Route import ZumoExtension
from Route.Vector2 import *

import matplotlib.pyplot as plt

zumo = ZumoExtension.ZumoExtension()

#zumo.gogoSimple([0,0, 0,1, 5,4, 0,1, 10,10, 0,1])

#zumo.printRoute()

#print(zumo.actionb
oo = [[Vector2(3, 5),
       Vector2(4, 5),
       Vector2(4, 8),
       Vector2(3, 8)],
      [
          Vector2(1.5, 1.5),
          Vector2(2.5, 1.5),
          Vector2(2.5, 2.5),
          Vector2(1.5, 2.5)
      ]]
ooo = [[Vector2(3, 2), Vector2(3, 3), Vector2(4, 1)]]
#res = zumo.superGOGO([0,0, 0,1, 60,40 ,1,0 , 80 ,100,1,0],[])

res = zumo.gogoBezier([0, 0, 0, 1, 60, 40, 1, 0, 80, 100, 0, 1])
x = []
y = []
#zumo.printRoute(res)
timer = 0
#zumo.gogoSimple([0,0, 0,1, 60,40 ,1,0 , 80 ,100,1,0])