Example #1
0
alpha7 = pi / 2

while not rospy.is_shutdown():
    for k in range(K):

        # parametros de DH variáveis
        theta1 = pi / 2 + q[0]
        theta2 = q[1]
        theta3 = q[2]
        theta4 = q[3]
        theta5 = q[4]
        theta6 = pi / 2 + q[5]
        theta7 = pi / 2 + q[6]

        #Encontrando as matrizes homogêneas atuais
        A1 = matriz_homogenea(d1, a1, alpha1, theta1)
        A2 = matriz_homogenea(d2, a2, alpha2, theta2)
        A3 = matriz_homogenea(d3, a3, alpha3, theta3)
        A4 = matriz_homogenea(d4, a4, alpha4, theta4)
        A5 = matriz_homogenea(d5, a5, alpha5, theta5)
        A6 = matriz_homogenea(d6, a6, alpha6, theta6)
        A7 = matriz_homogenea(d7, a7, alpha7, theta7)

        #Definindo os pontos de interesse em seus sistemas locais
        o1_1 = o  #origem do SC 1
        o2_2 = o  #origem do SC 2
        o3_3 = o  #origem do SC 3
        o4_4 = o  #origem do SC 4
        o5_5 = o  #origem do SC 5
        o6_6 = o  #origem do SC 6
        o7_7 = o  #origem do SC 7
Example #2
0
    def update_fuction(self, o,
                       o2):  #Calcula a função de custo/fitness da particula
        #(posição,orientacao) da pose desejada
        #Parâmetros Físicos do manipulador [m]
        base = 0.05  #5 cm
        L = 0.075  #distância da ultima junta a extremidade do efetuador

        #centro do efetuador em relação ao ultimo sistema de coordenada
        p = np.array([0, 0, L, 1]).T

        #Parâmetros de Denavit-Hartenberg do manipulado
        d1 = 0.075 + base
        d2 = 0
        d3 = 0.15
        d4 = 0
        d5 = 0.145
        d6 = 0
        d7 = 0
        a1 = 0
        a2 = 0
        a3 = 0
        a4 = 0
        a5 = 0
        a6 = 0.075
        a7 = 0
        alpha1 = pi / 2
        alpha2 = -pi / 2
        alpha3 = pi / 2
        alpha4 = -pi / 2
        alpha5 = pi / 2
        alpha6 = pi / 2
        alpha7 = pi / 2
        theta1 = pi / 2 + self.p[0]
        theta2 = self.p[1]
        theta3 = self.p[2]
        theta4 = self.p[3]
        theta5 = self.p[4]
        theta6 = pi / 2 + self.p[5]
        theta7 = pi / 2 + self.p[6]

        #Calculo das matrizes homogeneas
        A1 = matriz_homogenea(d1, a1, alpha1, theta1)
        A2 = matriz_homogenea(d2, a2, alpha2, theta2)
        A3 = matriz_homogenea(d3, a3, alpha3, theta3)
        A4 = matriz_homogenea(d4, a4, alpha4, theta4)
        A5 = matriz_homogenea(d5, a5, alpha5, theta5)
        A6 = matriz_homogenea(d6, a6, alpha6, theta6)
        A7 = matriz_homogenea(d7, a7, alpha7, theta7)
        A = A1 @ (A2 @ (A3 @ (A4 @ (A5 @ (A6 @ A7)))))

        #posição do efetuador em relação ao sistema de coordenadas global
        p = A @ p

        #calculo do erro em módulo da orientacao desejada e da particula
        self.o = distancia(orientacao(A), o2, 3)

        #calculo da distancia euclidiana da posição do efetuador em relação ao objetivo
        self.d = distancia(p.T, o, 3)

        #Calculo da função de custo
        k1 = 0.1  #orientacao
        k2 = 0.9  #posição
        self.f = (k1 * self.o) + (k2 * self.d)
        if (self.f < self.bf):
            self.bf = self.f
            self.bp = self.p.copy()